본문 바로가기

Computer/0x07 암호학

파크야의 암호학개론 - 1. 기초이론

파크야의 암호학개론 - 1. 기초이론




호란 무엇일까요? 사전적 의미로는 어떤 내용을 남모르게 전달 하려고 쓰는 신호나 부호.

암구호의 준말 입니다.


암구호 라고 하니까 군생활때의 추억이 새록새록 떠오르는 군요 ㅎㅎ

암호는 고대부터 현재까지 인류의 역사와 함께 발전해 왔습니다.


특히나 요즘같은 유비쿼터스 세상 에서는 더욱 암호의 중요성이 부곽 됩니다.

필요불가결한 암호의 세계에 대해서 알아 보도록 하겠습니다.









클로드섀넌의 암호시스템


20세기의 영국의 수학자인 클로드섀넌 은 1948년에 '통신의 수학적 이론' 이라는 논문을

써서 정보이론의 아버지라고 불리게 되었습니다.






섀넌이 만든 암호시스템의 모델은 위에 그림과 같습니다.

송신자와 수신자는 비밀리에 메세지를 주고 받고자 하는데, 송신자와 수신자는 자신들이 직접 소유하고 

관리하는 컴퓨터를 이용하며 인터넷과 같은 공개된 공용 통신망을 통해 통신을 합니다.


송신자는 보내고자 하는 평문을 암호화 알고리즘을 이용해서 암호문으로 변환하고 이것을 공용

통신망을 통해 수신자에게 보냅니다.


수신자는 복호화 알고리즘을 이용해서 평문을 복구합니다. 이때 암호화키는 송신자에 의해 암호화 알고리즘에

사용되고 복호화키는 수신자에 의해 복호화 알고리즘에 사용 됩니다.


도청자(해커)는 정당한 참여자가 아닌 제3자로서 통신망 상에서 관찰되는 암호문으로 부터 암호해독 기술을

이용해서 평문을 해독하고 통신되는 메세지에 대한 정보를 획득하고자 하는 사람을 말합니다.


제3자는 메세지의 도청과 같은 수동적인 공격뿐만 아니라 메세지를 위조하거나 전달을 방해하는 등

능동적 공격을 가할 수 있는데요 이런 사람들을 통칭하여 공격자(attacker)라고 합니다.


새넌의 암호알고리즘: 평문 -> 암호화 -> 전달 -> 복호화 -> 평문 



[ 암호학의 기본 용어 ]


* 평문(Plain text) : 암호화되어 있지 않는 보통의 글을 말합니다.

* 암호문 (Cipher text): 암호화된 글을 말합니다.


* 암호화 ( Encryption / Encipherment ) : 평문을 암호문으로 바꾸는 것을 말합니다.

* 복호 ( Decryption / Decipherment ) : 암호문을 평문으로 되돌리는 것을 말합니다.


* 암호화키 ( Encryption Key ) : 암호에 사용되는 키를 말합니다.

* 복호키 ( Decryption Key ) : 복호에 사용되는 키를 말합니다.




[ 고전적 암호기술 ]


* 시저암호: 평문의 각 문자를 n문자 옮겨 암호화 하는 알고리즘 으로 만드는 암호를 '시저암호'

라고 합니다. (ex: n = 5 라고 하면 암호화할 평문의 알파벳이 A 일경우 여기서 5번째 알파벳인

E가 암호화 된것입니다.)


그리고 알파벳의 마지막 3문자인 X , Y , Z 는 맨앞의 문자로 순환 됩니다.

, X -> A  , Y -> B , Z -> C


여기서 왜 시저암호 인지 궁금해 하시는 분들이 계실 텐데요. '시저' 란 고대 로마의 군인이자

정치가인 율리우스 카이사르 의 영어이름 입니다. 카이사르가 이 암호문을 만든것은 갈리아

전쟁 때였다고 합니다. 이것에 의해서 적에게 알려지지 않고 아군끼리 통신 할 수 있었습니다.



* 환자식암호: 시저암호를 복잡하게 해서 각 문자마다 옮기는 숫자를 변화시킨 것을

환자식암호(또는 대입암호)라고 합니다.


가운데 평문과 암호문의 각 문자를 1:1로 다른 문자에 대응시키는 것을 '단일환자암호' 라고

합니다. 시저암호도 단일환자암호의 일종입니다.


즉, 각문자마다 옮기는 숫자를 변화 시키는 것입니다. 

이때  각문자를 치환하는 방법을 , 변환규칙을을 '시그마' 에 따라서 변환 합니다.


* 다표식암호 : n문자씩 블록으로 만들고 블록마다 문자의 순서를 바꾸는 것을 말합니다.

* 전치식암호: 평문을 n문자씩 블록으로 나누고, 각 블록 안에서 문자의 순서를 바꾸는 암호를 

말합니다.


* 버넌암호: 평문과 길이가 같은 난수를 덧붙여서 암호문을 만듭니다. 



[ 이론적으로 안전한 암호 ] 


: 1회만 사용하는 난수를 바탕으로 하는, 쓰고 버리는 키를 사용해서 해독 불가능한 암호를 만들 수

있는데요, 그런 암호문은 재현성이 없습니다. 


평문에 길이가 같은 난수의 줄을 덧붙여서 암호문을 만든다는 것인데요, 이것을 버넌 암호라고

합니다. 왜 버넌암호냐 하면, 길버트버넘이 1917년에 고안해서 특허를 받았기 떄문에

이렇게 쓴다고 합니다.


사용하고 버리는 키를 이용하고 있어서 해독이 불가능하다는 사실을 1949년에 섀넌에 의해서

수학적으로 증명 하였습니다.



[ 암호해독이 가능해지는 조건 3가지 ]


1. 암호화 알고리즘이 알려져 있는 경우

2. 문자 출현율의 치우침 등 평문에 대해 통계적 성질의 데이터가 있는 경우

3. 암호화의 예문을 많이 가지고 있는 경우