본문 바로가기

보안/정보보호이론

고대 암호학

@ Skytale




@Enigma

 

 - 독일군에서 사용한 암호



@ Steganography


 - BC 494 암호문이 없는 것처럼 암호문을 전달 

 ex) 머리에 암호문을 작성하고 머리를 길러 암호문을 숨김




@ Classification (고전 사이퍼 분류)


1) Transposition Cipher 


 - 기본적인 아이디어 : 자리를 바꾸는 것



key에 따라 배치할 수 있는 개수는 5!(120)개 만큼 있다. 여기서 하나만 랜덤으로 선택을 한다. 평문을 작성할 때 마지막 남은 공간은 정해져있는 것으로 패딩한다. 여기서는 Z로 패딩했다.



2) Substitution Cipher


 - 이것은 알파벳 위치와는 상관이 없다. 하나의 법칙을 작성해두고 대칭되는 알파벳으로 바꾼다.

 ex) tree -> ackk


 - 똑같은 알파벳은 같은 알파벳으로 대칭된다.


 - Monoalphabetic Ciphers

- 평문 내의 하나의 심볼과 암호문의 하나의 심볼의 관계는 1 대1 이다.

ex) Additive, Multiplicative, Affin


 - Polyalphabetic Ciphers

- 평문 내의 하나의 심볼과 암호문의 하나의 심볼의 관계는 1 대 다 이다.

ex) Autokey, Playfair, Vigenere, Hill



 전수 조사하기에는 상당히 어려운 많은 키를 가지고 있으나 

 문자의 통계를 그대로 적용하기 때문에 통계적 암호 공격에 취약하다.



@ Additive Cipher


쉬프트 암호는 오직 26개의 키만이 존재하므로 암호문을 복호화하기 위해 최대 26회의 키를 쉬프트하면 된다.

따라서 암호 해독 중 exhaustive key search로 쉽게 해독할 수 있다.




@ 유클리드 확장 알고리즘


정수 m,n의 최대공약수를 gcd(m,n)과 같이 나타낼 때 확장된 유클리드 알고리즘을 이용하여 am+bn=gcd(m,n)의 해가 되는 정수 a,b의 짝을 찾아낼 수 있다.




@ Affin Cipher




취약점1 : 여기서 모든 경우의 수는 12 * 26 개이다. 따라서 brute force attack으로 해독할 수 있다.


증명은 아래와 같다.



이를 이해할려면 아래의 정리를 이해해야 한다.


 - 오일러 피함수


- 1부터 n까지의 양의 정수 중에서 n과 서로소인 것의 개수

- 일반적으로 아래와 같이 표기한다.



- 아래와 같은 정리가 존재한다.



위 그림 풀이에서 하단의 풀이가 잘 못 되었다. 

4 * 20 * 6이다.

따라서 총 480개이다.


 - K 곱셉에 대한 역원 구하기



K에 대한 덧셈에 대한 역원은 -K 였다. 곱셈에 대한 역원은 어떻게 구할 수 있을 까?



이를 이용하면 다음과 같이 암호화, 복호화를 할 수 있다.




취약점2 : known plaintext attack으로 해독이 가능하다.





@ Vigenere Cipher


 - 복잡한 표를 미리 만들고 이에 따라 암호를 조정하거나 푸는 방법이다.

 - 빈도수 공격을 가리기 위해 만들어졌다. (언어 통계학적인 문제)

 - 카지스키, 프리드만 암호 공격 방법에 의해 해독이 가능하다.



취약점 : 문장이 길어지면 반복되는 팬턴이 존재해 키의 길이를 추측할 수 있다.





@ Hill Cipher


 - 평문을 d개의 블록으로 나눈다.

 - 마지막이 d보다 모자랄 경우 Z로 채운다.



하지만 이는 암호문과 평문 일부분이 주어졌을 때 key를 알아낼 수 있다.


취약점 : Known plaintext attack으로 해독이 가능하다.


example 1)



example 2)