.
.
.
고성능 연산 장치 발견 전, 비교적 간단한 기계와 손 등으로 암복호화를 수행하던 암호
대부분 컴퓨터를 사용하면 쉽게 복호화되어 현대에는 사용되지 않음
일반적으로 치환(Substitution)과 전치(Transposition)의 방법으로 설계
치환 : 평문의 문자를 다른 문자로 바꿈 / 전치 : 평문 문자들의 위치를 바꿈
단순한 고전 암호는 한가지 원리만을 사용하는 치환암호(Substitution Cipher) 또는 전치암호(Transposition Cipher) 이고, 복잡한 고전암호는 두 원리를 모두 사용한다.
치환암호는 단일 문자 치환 암호(Monoalphabetic Substitution Cipher), 다중 문자 치환 암호(Polyalphabetic Substitution Cipher)로 나누어진다.
치환의 대응 관계가 일대일 대응이다.
평문의 ‘A’가 암호문의 ‘B’로 치환된다면, 평문의 다른 어떤 문자도 ‘B’로 치환되지 않는다.
카이사르 암호
- 평문의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 치환
- 알파벳을 밀어낸 횟수를 키(Key)라고 하면, 알파벳은 26자이므로 가능한
키의 갯수는 26개
- 암호학에서 가능한 모든 키의 집합을 키 공간(Key space) 라고 하는데,
카이사르 암호에서 키 공간의 크기는 26
코드북 암호
- 송신자가 책의 페이지 x와 단어의 인덱스 y를 보내면, 수신자는 책 x페이지의
y번째 단어를 확인하여 송신자의 메세지를 해독한다.
다중 문자 치환 암호(Polyalphabetic Substitution Cipher)
평문의 한 문자가 암호문에서 여러 종류의 문자로 치환될 수 있다.
비제네르 암호(Vigenere Cipher)
- 암호화와 복호화는 미리 정해진 키워드를 통해 이뤄진다.
- ‘SKY’ 라는 키워드로 ‘DREAMHACK’을 비제네르 암호화 하는 과정 예시
전치 암호(Trasposition Cipher)
- 평문을 구성하는 문자들의 순서를 재배열하여 암호문을 만든다.
- 평문을 정해진 길이의 블록들로 나누고, 규칙을 적용하여 블록 안의 문자 재배치
Ex) 블록의 길이가 3이고 키가 (3,1,2)일때 평문 DREAM HACK의 암호화
- 전수 키 탐색 공격 : 평문과 암호문을 알 때, 키 공간을 전부 탐색하며 주어진 암호
문과 같은 암호문을 생성하는 키를찾는 방법. 키 공간의 크기가 작으면 빠른 해독
- 빈도수 공격 : 단일 치환 암호는 일대일 대응이라서 평문의 통계적 특성 유지.
예를 들면 영어문장에서 알파벳이 사용되는 빈도를 보면 e가 가장 많이 사용되
므로 E를 A로 치환했다면, 암호문에서 가장 많이 등장하는 알파벳이 A이다.
안전한 암호 시스템은 혼돈(Confusion)과 확산(Diffusion)의 성질을 만족해야 한다.
혼돈 - 암호문에서 평문의 특성을 알아내기 힘든 성질. 단일 치환 암호는 혼돈 성질 만족
못함
확산 - 평문의 작은 변화가 암호문의 큰 변화로 이어지는 성질. 고전암호에 적용불가
- 평문을 정해진 크기의 블록 단위로 암호화.
- 예로 블록의 크기가 4바이트라면 평문을 4바이트의 블록으로 쪼개어 각 블록마
다 암호화 진행
- 송신자와 수신자가 공유하는 데이터 스트림을 생성하고 이를 평문에 XOR함
- 평문을 P, 암호문을 C, 스트림을 X라고 할 때, C = P ⊕ X
- X ⊕ X = 0 이므로 수신자를 C ⊕ X = P ⊕ X ⊕ X = P 로 암호문 복호화 가능
- 송신자와 수신자는 스트림을 공유하는 대신, 시드(Seed)라 불리는 작은 값을
공유하고, 이를 사전에 합의된 함수의 인자로 넣어 스트림을 각자 생성
송신자는 수신자의 공개키(Public Key)로 데이터를 암호화하여 수신자에게 전송하고, 수신자는 자신의 비밀키(Private Key)로 이를 복호화한다.
장점 : 키를 한번 생성하고 나면, 새로운 상대와 통신하더라도 키를 다시 만들필요 없음
단점 : 대칭키에 비해 다소 복잡한 연산이 필요하므로 속도가 느림. 또한, 대칭키 암호화 같은 안전성을 제공하려면 대칭키 암호보다 긴 키를 사용해야 함