- Plain Text(평문)을 Cipher Text(암호문)으로 변환하는 'e' 과정은 'Encode(암호화)'
- Cipher Text(암호문)을 Plain Text(평문)으로 변환하는 'd' 과정은 'Decode(복호화)'
Image from ResearchaGate
암호체계
- 암호화 알고리즘 : 비밀이 없으며, 암호화 또는 복호화 할 때 알고리즘을 이해하고 기억해야 함.
- 암호화 키 : 약속한 규칙이 있음.
커코호프 원칙 암호화 알고리즘은 비밀이 아니고 오로지 'Key'만이 유일한 비밀이다. 왜냐하면, 알고리즘은 언젠가 공개되기 때문이다.
고전암호
- Transposition(전치법)
- 예) banana라는 평문이 있을 때, 앞에서 두 글자씩 바꾸면 abanan로 됨.
- Substitution(대치법)
- 예) 카이사르 암호가 있음. banana라는 평문이 있을 때, 각 단어에서 세 번 점프한 알파벳으로 대치하면 edqdqd로 됨.
키
Image from cheap SSL
대칭키
대칭키
- 암호화 하는 키와 복호화 하는 키가 같은 경우
- 암호화 키와 복호화 키는 절대 공개되어선 안됨.
대칭키 종류
- Stream Code
- 이진화된 평문 스트림과 이진 키 스트림을 XOR 연산을 하여 암호화
- 예) 평문 : 0 1 1 0 , Key : 1 0 1 0 을 XOR 연산하면 1 1 0 0이 되며 또 Key : 1 0 1 0을 XOR 연산을 하면 0 1 1 0이 됨
- Stream Code는 간단하고 신속하여 실시간 데이터 암호화에 적합함.
- Block Code
- 고정된 크기의 블록
- 예) DES, 3DES...
DES Block Code의 예인 DES를 이해하는 것은 중요하다. - 64비트 블록 길이 - 56비트 키 길이 (2의 56승) - 16회전 (Feistel 구조이며 복호화하는 것을 더욱 어렵게 함.) - DES에서의 안정성은 주로 'S-BOX'에 의존하게 됨. - S-BOX 과정을 보면 32 bit -> 48 bit -> 32 bit로 변환이 되는데 이 과정을 이해하는 것이 중요함. https://somuchthings.tistory.com/122