Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

CIDY

[Cryptography] stage2_고전 암호 본문

Hack/DreamHack(로드맵)

[Cryptography] stage2_고전 암호

CIDY 2022. 7. 20. 00:08

*고전 암호

고성능 연산 장치 발명 이전, 간단한 기계와 손으로 암호화/복호화 하던 암호를 말한다. 고전 암호는 치환 & 전치의 방법으로 설계된다. 

 

치환: 평문 -> 다른 문자, 전치: 평문 문자 위치 바꿈

 

단순한 고전 암호는 둘 중 하나의 원리만을 사용하고(치환 암호, 전치 암호), 복잡한 고전 암호의 경우 두 원리를 모두 이용한다. 치환 암호는 다시 단일 문자 치환 암호/ 다중 문자 치환 암호로 나뉜다.

 

 

*단일 문자 치환 암호

평문의 각 문자를 약속된 다른 문자로 치환하는 암호. -> ex: 카이사르 암호

 

카이사르 암호는 평문의 각 알파벳을 일정 거리만큼 밀어서 다른 알파벳으로 치환하는 암호이다. 복호화 시에는 다시 원래 위치로 밀면 됨. -> 송수신자 간 몇 칸을 밀 것인지에 대한 사전 합의 필요

 

밀어낸 횟수 = 키 라고 하면, 가능한 키의 개수는 26개이다. (알파벳) -> 카이사르 암호에서의 키 공간의 크기는 26

 

알파벳 A ~ Z를 각각 0~ 25에 대응시키면, n글자씩 밀어내는 카이사르 암호를 다음과 같은 수식으로 표현할 수 있다. 

 

키 공간의 크기가 작은 암호의 경우 복호화가 쉬워 암호로서의 기능성이 떨어진다. -> 조금 더 복잡한 단일 치환암호로는 셜록 홈즈에 나오는 춤추는 인형 암호가 나온다. (셜록 홈즈_춤추는 사람에 나온다...)

 

이 경우 사람 한 명이 글자 하나에 대응된다. -> 카이사르 암호의 경우 순서가 보장되기에 키 공간의 크기가 작았지만, 이 암호의 경우 모든 알파벳을 서로 다른 기호와 무작위 일대일 대응 시키기 때문에 -> 키 공간의 크기는 26! 이 된다. -> 매우 큼

 

이처럼 꽤 복잡해보이는 단일 문자 치환 암호의 경우에도 언어의 통계적 특성이 그대로 유지된다는 허점(?)이 있다. ex: 영어에서 통계적으로 가장 많이 쓰이는 알파벳은 e. -> 이러한 특성을 이용하면 영문 단일 치환 암호문의 해독은 그리 어렵지 않다고..

 

 

*다중 문자 치환 암호

평문의 한 문자가 암호문에서 여러 문자로 치환될 수 있는 암호이다. 비제네르 암호에서 암호화와 복호화는 미리 정해진 키워드를 통해 이루어진다. 

 

 

위와 같은 비제네르 표가 있다고 할 때, ABCDEF를 암호화한다고 해 보자. 미리 정해진 키워드는 SKY이다.

 

S K Y S K Y

A B C D E F

 

이렇게 대응되는 상황인데,

A -> S

B -> L

C -> A

D -> V

E -> O

F -> D

 

이런 식으로 암호화되는 것이다.

 

Ci​ = Ek​(Mi​) = (Mi​+Ki​) mod26

Mi​= Dk​(Ci​) = (Ci​−Ki​) mod26

 

마찬가지로 A ~ Z를 0 ~ 25에 대응시키면 위와 같은 합동식으로 표현할 수 있다. (C는 암호문, M은 평문, K는 키워드)

 

 

*전치 암호

평문을 구성하는 문자들의 순서를 재배열하는 암호이다. 평문을 정해진 길이들의 블록으로 나눈 뒤, 지정된 규칙에 따라 블록 내 문자들을 재배치한다.

 

블록 길이가 3이고, 키가 (3, 1, 2)일 때, ABCD EFGHI는 다음과 같이 암호화된다.

 

ABC | D EF | GHI

CAB | F DE | IGH

 

전치 암호의 대표적인 예시로는 스키테일 암호가 있다. -> 나무 봉에 얇고 긴 종이를 감아 세로로 글을 쓴 뒤, 풀면 순서가 뒤섞임 -> 같은 굵기의 나무 막대가 있어야 해석 가능

 

 

*고전 암호 공격

전수 키 탐색 방법, 빈도수 분석 방법이 있다. 

 

전수 키 탐색 공격: 평문과 암호문을 알 때, 키 공간을 전부 탐색해 주어진 암호문과 같은 암호문을 생성하는 키를 찾는 방법이다. -> 키 공간의 크기가 작다면 빠르게 키를 찾을 수 있음

 

빈도수 분석 공격: 단일 치환 암호의 경우 평문 - 암호문의 각 문자가 일대일 대응 관계에 있기 때문에 평문의 통계적 특성이 암호문에서도 그대로 유지된다. -> 영문에서의 알파벳 사용 빈도 통계를 그대로 적용 가능. -> 이러한 추측을 기반으로 공격 가능

(* 다중 치환 암호의 경우 통계적 특성이 사라지기 때문에 위 공격으로부터 비교적 안전)