암호 방식( 고전적 기법 )

Programming/Security 2009. 10. 23. 17:29
치환 기법

시이저( Caesar ) 암호 기법
: 각 알파벳 문자를 두 문자 건너의 세 번째 문자로 치환하는 방식
평문 :   meet me after the toga party
암호문: PHHW PH DIWHU WKH WRJD SDUWB

평문 :        a b c d e f g ~
암호문자 :  D E F G H I J ~
와 같이 1:1 대응이다. 각 문자에 0 ~ 25 까지 숫자를 배정하여
C = E(p) = (p+3) mod (26 ) 로 암호화를 한다.

암호화 식
C = E(p) = (p+k) mod (26 )
P = D(c) = (c-k) mod (26)

단일문자치환( Monoalphabetic Cipher ) 암호 기법
: 각 문자는 다른 문자와 1:1 로 매칭되는 맵이 존재 한다. 이 맵에 따라 암호화 수행
map
planin : abcde ~
Cipher :DKVQF ~

Plaintext : ifwew...
Ciphertext : WIRFR...

Playfair 암호 기법
: 가장 잘 알려진 다중문자 치환 암호기법( Multiple-Letter Encryption )
 M  O   N   A   R 
 C  H  Y  B  D
 E   F   G   I/J   K
 L  P  Q  S  T
 U  V  W  X  Z

Keyword : MONARCHY
먼저 5X5 매트리스에서 키워드 값을 중복되는 알파벳을 제외하고, 차례대로 체운다.( 붉은색 )
그리고 나서, 키워드에 없는 알파벳을 차례대로 적는다.
이 매트리스를 근거로 하여 암호화를 하게 된다.
암호화 방법은
1. plaintext의  각 알파벳 쌍( 두 문자 )이 같은 문자이면, X와 같은 plaintext에 없는 임의의 문자를 삽입한다. 그리고, 쌍이 맞지 않는 경우에도 같은 임의의 문자를 삽입하여 쌍을 맞춰준다.
2. 각 쌍의 알파벳 문자를 매트리스에서 찾아서, 같은 열에 있을 경우에는 그 문자를 각 문자의 우측에 있는 문자와 치환을 한다.
3. 같은 행에 있을 경우에는 그 문자를 각 문자의 아래의 문자와 치환을 한다.
4. 서로 다른 행과 열에 있을 경우에는, 한 문자의 같은 열과 다른 문자의 같은 행의 문자를 치환한다.

암호화 PlainText : ballon
-> ba lx lo nx -> I/JB SU PM AW
복호화 I/JB SU PM AW -> BA LX LO NX -> BALLON

One-Time Pad
: 메시지와 정확히 같은 길이이고 반복되지 않는 랜덤 키 사용을 하는 방법
평문과 통계적 관계를 갖지 않는 임의의 출력을 생성한다.


전치 기법( Transposition Techniques )

Rail Fence Cipher
: 평문을 대각선으로 써 놓고 횡으로 읽어내는 방식이다.
PlainText : meet me after the toga party
CipherText: mematrhtgpryetefeteoaat

Row Transposition Cipher
: 메시지를 사각형의 행순으로 써넣고 열 순으로 읽되 열의 순서를 바꾸는 것이다.
키    : 4 3 1 2 5 6 7
평문 : 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
암호문 : ttna aptm tsuo aodw coix knly petz

키 갯수에 따라 평문 한줄 길이를 설정하여 데이터를 채운다.

평문 뒤의 x y z 는 평문에 없는 문자중에 더미로 넣은 것이다. 복호화 할 때 이를 제거해 준다.

'Programming > Security' 카테고리의 다른 글

Diffie-Hellman Key Exchange  (0) 2009.12.10
RSA  (0) 2009.12.10
키 분배 시나리오  (0) 2009.10.23
RC4 알고리즘  (0) 2009.10.23
블록 암호의 운용 모드  (0) 2009.10.23

설정

트랙백

댓글