백인감자

[컴퓨터보안/암호학] 고전암호기법 종류 본문

컴퓨터보안

[컴퓨터보안/암호학] 고전암호기법 종류

백인감자 2017. 3. 10. 16:55


Shift Cipher(Ceasar cipher)


Julius Caesar’s cryptosystem 이라서 caesar cipher  라고도 불린다.

key 값에 맞게 알파벳의 위치를 이동시켜 암호화 시키는 방식이다.

ex. key= 3 이면   a ->D , b->E, ... 와 같은 방식으로 된다.

*일반적으로 plaintext(평문) 는 소문자로 표기되고 ciphertext(암호문) 는 대문자로 표기된다.


plaintext 가 대문자로 구성되어있다면 아래와 같이 하면 된다. (65는 'A' 의 아스키코드이다.)

Enc: y=65 + (x -65 +κ) (mod 26)

Dec: x=65 + (y -65 -κ) (mod 26)


plaintext 가 소문자로 구성되어있다면 아래와 같이 하면 된다.(97은 'a' 의 아스키코드이다.)

Enc: y=65 + (x -97 +κ) (mod 26)

Dec: x=65 + (y -97 -κ) (mod 26)


ciphertext 는 대문자로 표기되기때문에 65를 더하는 것이다.




암호공격 종류


1. Ciphertext only - 공격자에게는 가장 불리한 방식. ciphertext 만을 통해서 key나 plaintext 를 찾아내는 방식이다.

ex.  Ciphertext :  ARLJEKN

       Plaintext  :  ??????? 


2. Known plaintext - ciphertext 와 그에 해당하는 일부 plaintext 를 통해서 key 와 전체 plaintext 를 찾아내는 방식이다.

이메일을 보낼 때의 양식 등을 통해서 일부 plaintext 를 얻을 수 있다.


ex.  Ciphertext :  ARLJEKN

       Plaintext  :  ??p????        


3. Chosen plaintext -  plaintext 를 선택하면 그에 해당하는 ciphertext 를 얻을 수 있는 상황에서의 공격방식이다.


ex.  hello 라는 plaintext 를 암호머신에 넣은 결과가 zxnna 이라 하면 송/수신 자 가 주고받는 암호화 된 메시지에 zxnna 가 발견되었다면

hello 라는 메시지를 전달했다는 것을 알 수 있다. 


4. Chosen ciphertext - ciphertext 를 선택하면 그에 해당하는 plaintext 를 얻을 수 있는 상황에서의 공격방식이다. 가장 강력하다.

3번의 예제와 반대라고 생각하면 된다.  송수신자가 주고받은 암호화 된 메시지에 zxnna 가 있는데 이것을 복호화 시키면 hello 가 나왔다.


강력함 순으로 나타내면 4-3-2-1 이다.



Monoalphabetic Substitution Ciphers(단일 대치 암호)


알파벳 하나를 다른 알파벳으로 치환하는 것

단점:  key space 가 매우 크다 . (26!)

key space 가 크다고 안전도가 증가하는 것은 아니다. 영어에서 알파벳 빈도 수가 균등한 것이 아니기 때문이다.

 빈도는 대략 아래 사진과 같다. 


아래 사진은 특정 ciphertext 에서의 알파벳 빈도 수이다. 



결과적으로 W라는 문자는 e 가 암호화 된 문자라는 것을 유추할 수 있기 때문에 안전도가 높다고 볼 순 없다. B -> t , R->a 등등으로 유추될 것이다.


Multiple-Letter Encryption(Playfair cipher)


monarchy 라는 keyword 를 사용하고 있고 keyword 기반으로 알파벳을 5*5 matrix 에 표현 시킨다.(보통 I/J는 같은 칸에 표현)
matrix 구성시 우선 keyword 문자를 다 넣고 그 다음부터 알파벳 순서대로 넣어주면 된다.


  넣어주면 된다.

  한 번에 두개의 문자씩 암호화를 시켜준다. 

예를 들어 1행에 있는 A, R 두 문자를 암호화시킬 때는 행을 좌측으로 한 칸씩 이동시킨다 생각하면 된다. 즉 AR --> RM 으로 암호화 된다.

같은 열에 있는 문자들의 경우 1열의 M, U 이면 위로 한칸씩 이동한다 생각하면 된다. 즉 MU --> CM 이 된다.

서로 다른 행, 열 에 존재하는 두 개의 문자 경우 H 와 S 라 하면 두 문자를 이어주는 사각형을 구성하는 같은 행의 문자들로 암호화된다.

H ,B, S, P 네 개의 문자가 사각형을 이루기 때문에 HS-->BP 가 되고 E 와 A 의 경우 IM 이나 JM 이 된다.(I/J 이므로).


특징 : 같은 문자(M) 이 있다 할지라도 행이 같은 문자와 암호화는지 열이 같은 문자와 암호화하는지, 행 열이 다른 문자와 함께 암호화 하느냐에 따라서 암호화 되는 문자가 달라진다.


Polyalphabetic cipher(Vigenere cipher)


vignere cipher(비즈네르 암호) : keyword 를 반복적으로 사용하여 암호화한다.

vigenere table 이 주어진 상태에서  plaintext 를 keyword 의 반복을 통해 암호화시킨다. vigenere table 의 한 예는 아래 그림과 같다.


행은 key 를 의미하고 열은 plaintext 를 의미한다. w라는 pliantext 를 d 라는 key 로 암호화 하면 Z 라는 ciphertext 가 된다.


ex. deceptive 라는 keyword 를 사용하여 we are discovered save yourself 라는 문장을 암호화시킨다고 하면 아래와 같다.

key :         deceptivedeceptivedeceptive
plaintext :  wearediscoveredsaveyourself
ciphertext: ZICVTWQNGRZGVTWAVZHCQYGLMGJ


Transposition Ciphers(Permutation ciphers) 

문자들의 위치를 바꿔서 암호화 하는 기법이다. 

Rail Fence cipher
ex. 원래 메시지 : meet me after the toga party 인데 이를 한 행씩 번갈아가면서 위,아래 로 쓰면 아래와 같은 모양이 나온다.
m e m a t r h t g p r y
 e t e f e t e o a a t

위와 같은 형태에서 한행씩 순서대로 작성하여 아래와 같은 ciphertext 를 만드는것이다.
MEMATRHTGPRYETEFETEOAAT

Row Transposition ciphers
위의 Rail Fence cipher 보다는 좀 더 복잡한 방식이다.
ex. 원래 메시지 : attack postponed until two am
주어진 key 의 숫자만큼의 열을 구성하여 문자들을 적는다.

Key:       4 3 1 2 5 6 7
Plaintext: a t t a c k p
                o s t p o n e
                d u n t i l t
                w o a m x y z

Key 에 적힌 번호 순서대로 해당 열의 문자들을 암호화하면 아래와 같이 나온다.
Ciphertext: TTNAAPTMTSUOAODWCOIXKNLYPETZ



 


'컴퓨터보안' 카테고리의 다른 글

[컴퓨터보안] X.509 인증서  (0) 2017.06.08
[컴퓨터보안] MAC_Hash  (0) 2017.05.23
[컴퓨터보안]Key management & Other PKC  (0) 2017.04.26
Sage 이용한 Euclidean 알고리즘  (0) 2017.03.09
Sage 환경구축 for Windows  (0) 2017.03.06
Comments