본문바로가기

PR

신시웨이의 최신 소식과 다양한 IT/보안 정보를 제공합니다.




"암호화란 무엇인가"


"대칭키 및 비대칭키 빠르게 알고 가자"



암호화(Encryption)


IT 관련 업무를 하고 있다면 암호화(Encryption)라는 말을 수 없이 들었거나 앞으로 수 없이 들어야할 말이다. 암호화(Encryption)는 정보를 보호하기 위한 학문인 암호학(Cryptology)의 일부분으로 암호화(Encryption)는 비밀을 보장하기 위해 특정 알고리즘으로 평문(Plaintext)를 암호문(Ciphertext)으로 변환하는 것을 말한다. 반대로 복호화(Decryption)는 암호문(Ciphertext)을 평문(Plaintext)으로 변환하는 것을 말한다. 그렇다면 암호학(Cryptology)에서 말하는 암호화는 무엇을 목표로 하고 무엇을 제공(기능) 하고 있을까?


궁극적인 목표는 보안 강화 일 것이며, 암호학(Cryptology)에서는 기밀성(Confidentiality), 무결성(Integrity), 인증(Authentication), 부인방지(Non-repudiation)의 기능을 제공 한다.


기밀성(Confidentiality)

인가 되지 않은 자는 정보를 확인 하지 못하도록 하며, 정보가 유출 되더라도 평문으로 해독 할 수 없고,

변조 또는 위조 하지 못하도록 기밀을 유지

대칭키 / 비대칭
키 암호화

무결성(Integrity)

인가 되지 않는 자로부터 위조 또는 변조가 발생하지 않았는지 확인

전자 서명

인증(Authentication)

수신 받은 메시지가 송신자 본인이라는 것을 확인 하고 증명

비대칭키
암호화

부인방지
(Non-repudiation)

메시지를 보낸 사람이 보낸 사실을 부인(송신 부인방지)하거나, 받은 사람이 받은 사실을 부인(수신 부인방지)할 경우 증명하는 기술 말하며 그외 일반적으로 말하는 부인방지는 송신 부인방지를 이야기 한다.

전자 서명



대칭키 암호화(Symmetric-key Cryptography)


암호화 할 때 사용하는 키와 복호화할 때 사용하는 키가 동일한 암 · 복호화 방식을 말하며, 쉽게 말해 사전에 공유된 키에 대해서만 암호화와 복호화가 가능한 암호화 방식을 이야기한다. 대칭키 암호화는 블록과 스트림 방식으로 나뉘며 블록 암호화 방식은 혼돈(confusion)과 확산(diffusion)을 이용하여 평문을 블록 단위로 나누어 암호문을 생성한다. 혼돈은 치환(substation, S-box)을 통해 생성되고, 확산은 순열(permutation, P-box)에 의해 얻게 되는데, 순열(전치)과 치환 그리고 다른 구성 요소들을 결합하여 암호화하는 것을 합성 암호화(Product Cipher)라고 한다. 합성 암호화의 반복적인 사용을 라운드(Round) 또는 회전수라 이야기하며 이러한 라운드 수는 블록의 길이, 키의 길이와 같이 암호화 강도를 결정짓는 중요한 요소이다.



혼돈

암호문과 키 사이의 관계를 숨기는 성질로 혼돈은 암호문으로 원문을 유추하기 어렵게 만든다. (치환형 암호화 / 블록 및 스트림 암호화에 사용)

확산

암호문과 평문 사이의 관계를 숨기는 성질로 평문의 통계적 성질을 암호문 전반에 퍼뜨려 숨기는 것을 말한다. (전치형 암호화 / 블록 암호화에 사용)

합성 암호

암호화의 강도를 강화 하기 위해 치환(S-box), 순열(P-box) 및 산술을 결합

라운드

합성 암호화(Product Cipher)의 반복 횟수





대칭키 암호화(Symmetric-key Cryptography) 특징


비대칭키에 비해 키 길이가 짧고 알고리즘이 비교적 단순 하기 때문에 암 · 복호화 속도가 빠르다.


키 길이가 길수록 Key Space가 길기 때문에 brute-force attack(무차별공격)에 안전 하다


암 · 복호화 키가 같기 때문에 키가 오픈 될 확률이 비대칭키에 비해 높으며, 키를 자주 변경해 주어야 한다.


키 분배가 어렵고 관리할 키가 많다.


기밀성을 제공하며, 전자서명이 불가능 하고 부인 방지 기능이 없다.


* 무차별 공격 : 특정한 암호를 풀기 위해 가능한 모든 값을 대입



블록 암호화와 스트림 암호화의 특징



블록 암호화

1 Block 단위로 암호화
S-box, P-box, Round 사용
S/W구현에 적합
암/복호화 속도가 느리다
스트림 암호화에 비해 안정성이 높다

스트림 암호화

평문에 연속 되는Key Stream을 적용하여 1bit씩 암호화
XOR 연산
H/W 구현에 적합(무선 암호화에 많이 사용)
암/복호화 속도가 빠르다
블록 암호화에 비해 안정성이 떨어진다.



비대칭키 암호화(Asymmetric key Cryptography)


비대칭키 암호화는 대칭키 암호화와 달리 암호화 할 때의 키와 복호화 할 때의 키가 서로 다른 암호화 방식을 이야기 한다. 즉, 개인키로 암호화를 하면 공개키로 복호화를 해야 하고, 반대로 공개키로 암호화하면 개인키로 복호화를 해야 한다. 비대칭키 암호화는 공개키 암호화라고도 한다. 비대칭키 암호화는 대칭키 암호화의 키 관리와 키 배포 방식에 대한 단점을 보완하기 위한 암호화 방식이다.


그러나 키의 길이가 길어 암호화 속도가 느리기 때문에 현실적으로 비대칭키를 이용하여 데이터를 암호화하는 것은 어려운 일이다. 그렇기 때문에 대칭키를 이용하여 데이터를 암호화 하고 비대칭키 암호화 방식을 이용하여 키를 배포하는 방식을 많이 사용 하며, 전자 서명, 인증, 부인방지의 기능으로도 사용 된다.


공개키 (Public key)

CA(Certification Authority) 등에 공개되어 있어 누구나 사용 가능한 키

개인키 (Private key)

개인이 소유하고 관리하고 있는 키로 비밀키(Secret Key)라고도 함


* 대칭키가 비대칭키보다 빠른이유는


대칭키는 128 ~ 256bit 비대칭키는 1024 ~ 2048bit로 키 길이가 짧고 알고리즘이 비교적 단순하기 때문이다.