5) One-time pad
Perfect secrecy를 목표로 고안
hello
additive cipher의 문제 동일한 key의 사용으로 취약한 보안
P | 7 | 4 | 11 | 11 | 14 |
k | 15 | 15 | 15 | 15 | 15 |
C | 22 | 19 | 0 | 0 | 3 |
k를 random sequence로 채택할때
P | 7 | 4 | 11 | 11 | 14 |
k(random sequence) | 15 | 7 | 3 | 22 | 19 |
C | 22 | 11 | 14 | 7 | 23 |
이론적으로 additive cipher에 key가 random sequence로 생성하면 perfect security가 달성될 것이라는게 증명되어 있다.
이론과의 차이
- computer는 완벽한 random이 불가능하다. puedo random
조건
동일한 난수 생성기를 송수신자가 가지고 있어야 한다.
3. Transposition Cipher
글자자체가 대체되어 바뀌는 subsitution cipher와 달리 문자를 섞는 암호화 방식
1) Keyless transposition cipher
P = meet me at the park
C = MEMATEAK ETETHPR
사전에 표를 만드는 기준을 정해놓고 암호화 (key가 별도로 없다)
(*사실 표의 크기를 key라고 생각할 수도 있다.)
2) Keyed transposition cipher
P = enemy attacks tonight
key
k = (3 1 4 5 2)
(1,2,3,4,5의 permutation)
Encrpytion
enemy -> EEMYN
attac -> TAACT
kston -> TKONS
...
사전에 정해둔 k의 permutaion 크기를 기준으로 각 블럭을 transposition
Decryption
(2 5 1 3 4)로 복호화 해야함 -> 역 permutation
3) Combining Two Approaches
keyless + keyed의 조합한
key = (3 1 4 5 2)
enemy attacks tonight
e | n | e | m | y |
a | t | t | a | c |
k | s | t | o | n |
i | g | h | t | z(garbage data) |
C : ETTHEAKIMAOTYCNZNTSG
해당 C를 다시 평문으로 취급하여 다시 암호화하면 double encrypt 시도도 가능할 수 있다.
일반적인 현대 암호화 방식 패턴
Substitution + Transposition
다른 복잡한 방식없이 큰 두 줄기를 잘 조합해서 보안성 높은 암호화가 가능하다.
4. Stream Cipher & Block Cipher
1)Block Cipher
group of m symbols에 대해 하나의 key사용
ex) Hill cipher, plainfair cipher, ...
2)Stream Cipher
한 글자 -> 컴퓨터 관점에선 1bit단위
P = (P₁ P₂ P₃ ... ) : plaintext stream
k = (k₁ k₂ k₃ ... ) : key stream
C = (C₁ C₂ C₃ ... ) : ciphertext stream
C_i = (P_i, k_i) 결합
ex) Additive cipher, Auto key cipher, ...
명확한 구분이 필요한건 아니지만 줄기를 개념적으로 나누는 편이다