본문 바로가기
Study/암호학

고전 암호 기법 - 치환

by 슬픈 야옹이 2023. 1. 10.

현대에도 다양한 곳에서 암호를 이용하듯, 과거에도 중요한 내용을 안전하게 전달하기 위해 암호 기법이 사용되었다.

 

그 중 먼 과거부터 가까이는 1차 세계 대전까지 사용된 고전 암호 기법 몇 가지를 소개한다.

 

고전 암호 기법에는 주로 치환, 전치를 이용하였다.

 

치환을 이용한 암호화 기법으로는 카이사르 암호가 대표적이다.

 

 

설명하기 전에, 간단한 용어 정리를 하고 넘어가자.

평문 - 암호화 되기 전의 원문

암호문 - 암호화된 문장 혹은 데이터

키 - 암호화에 사용된 데이터 혹은 방식

 

암호화 - 평문을 암호문으로 변환하는 것

복호화 - 암호문을 다시 평문으로 변환하는 것

 

 

치환 기법 - 카이사르 암호 (단일 치환)

카이사르 암호 기법은 간단하다. 알파벳을 정해진 순서만큼 뒤로 밀어서 작성하면 된다.

 

다음은 평문을 카이사르 암호 기법으로 암호화하는 과정이다.

key = 3
평문:   hi this is jason nice to meet you
암호문: kl wklv lv mdvrq qlfh wr phhw brx

key가 3이므로 각 알파벳을 뒤로 3칸 떨어진 알파벳으로 치환하였다.

 

복호화 과정은 암호화의 반대과정이므로 다시 앞으로 3칸 떨어진 알파벳으로 치환하면 된다.

key = 3
암호문: kl wklv lv mdvrq qlfh wr phhw brx
평문:   hi this is jason nice to meet you

 

카이사르 암호 기법에서, 암호문을 다시 평문으로 복호화하려면 각 글자가 알파벳 순으로 3칸 뒤로 밀렸다는 사실을 알아야 한다.

즉 key 값(3)을 알아야 복호화가 가능하다.

 

당연하게도, 카이사르 암호 기법은 오래 전에 사용된 방법이기 때문에 명확한 단점이 있다.

1. 단순하기 때문에 평문의 구조를 쉽게 파악할 수 있다.

2. 가능한 키도 25개로 제한적이어서 모든 경우의 수를 계산해서 해독하는 Brute-force attack이 가능하다.

3. 자주 쓰이는 알파벳(t, e, a 등)이 그대로 같은 문자로 치환되므로 해당 글자들의 출현 빈도수를 이용해 평문을 유추할 수 있다.

 

 

이러한 카이사르 암호 기법의 단점을 보완한 기법으로 다중치환이 있다.

 

치환 기법 - 다중치환

다음과 같은 표를 이용하여 평문을 두 글자씩 암호화하는 기법이다.

 

평문에서 선택한 두 글자가 같은 행이면 오른쪽 한칸 옆의 문자로 치환하고,

같은 열이면 한칸 아래의 문자로,

같은 행도 열도 아니면 [자신의 행, 상대의 열]의 문자, 즉 대각선으로 로 치환한다.

 

글로 설명하면 와닿지 않는다. 예시와 함께 보자.

 

다음 평문을 다중치환을 이용해 암호화 해보자.

hello this is thomas have a nice day

 

암호화에는 다음 표를 사용할 것이다. 이러한 치환표는 임의로 정해서 사용한다.

즉 암호화, 복호화하는 양쪽 모두 이러한 표를 가지고 있어야 정보를 주고받을 수 있다.

먼저 평문의 띄어쓰기를 모두 지우고 두 글자씩 끊는다.

만약 같은 글자가 연속으로 나오면 사이에 아무 글자를 끼워 넣는다.

또한 끝에 한 글자가 남는다면 아무 글자로 채워 두 글자로 만든다.

아무렇게나 채운 글자는 복호화하는 쪽에서 맥락을 파악해 알아서 지워야 한다.

he la la ot hi si st ho ma sh av ea ni ce da ya

이제 표를 참고하여 글자를 암호화한다.

가령 ' he '를 암호화 하면 ' cf '가 된다.

또, ' si '를 암호화하면 ' xs '가 된다.

 

' st ' 를 암호화하면 ' tl '이 된다.

 

이러한 과정을 반복하면 암호문이 완성된다.

 

평문:     he la la ot hi si st ho ma sh av ea ni ce da ya
암호문:   cf sb sb rp bf xs tl fh or pb ox im ag el br bn

-> cfsbsbrpbfxstlfhorpboximagelbrbn

 

복호화 과정은 암호문에 대해 같은 과정을 수행할 뿐이므로 생략한다.

 

다중 치환 기법은 2차원 치환표를 이용하므로 가능한 키의 가짓수가 26 * 26 = 476가지로 늘어나고,

특정 문자가 빈출되는 현상을 줄여주기 때문에 기존 단일 치환 기법(카이사르 암호)보다 개선된 기법이지만,

평문 구조가 드러난다는 문제점과 특정 문자 빈출 현상 문제점이 여전히 존재한다.

 

 

치환 기법 - 다중 단일 문자 치환

앞서 소개한 단일 치환, 다중 치환은 치환 규칙을 평문에 그대로 적용하여 암호문을 생성한다.

이러한 방식을 단순 단일 문자 치환 기법이라 하는데, 설명했듯 평문 구조가 드러나거나 와 특정 글자가 빈출되는 등의

문제점이 있었다.

 

다중 단일 문자 치환은 이를 해결하기 위해 치환 규칙과 키를 조합하여 평문을 암호화한다.

 

다중 단일 문자 치환 기법으로 다음 평문을 암호화 해보자.

암호화에 사용할 키, 치환 규칙(표)도 함께 제공되어야 한다.

 

I saw him at the central park
key : subway

 

치환 규칙(표)

평문을 모두 소문자 혹은 대문자로 통일하고 띄어쓰기를 제거한 뒤, 그 아래에 평문 글자 수만큼 키워드를 배열한다.

isawhimatthecentralpark
subwaysubwaysubwaysubwa

 

그리고 치환 규칙을 참고해 평문 글자와 키워드 글자 한 쌍씩을 하나의 문자로 치환한다.

i s a w h i m a t t h e c e n t r a l p a r k
s u b w a y s u b w a y s u b w a y s u b w a

 

가령 첫 문자 쌍 (i ,s)의 경우 a로 치환된다.

같은 과정을 반복하면 결과적으로 다음과 같은 암호문이 생성된다.

평문   : isawhimatthecentralpark
키워드 : subwaysubwaysubwaysubwa

암호문 : ambshgeuuphcuyoprydjbnk

 

생성된 암호문과 키를 전달하면 암호화할때와 같은 치환 규칙을 알고있는 사람만이 해당 암호문을 복호할 수 있다.

 

다만, 복호 과정은 암호화 과정의 정확히 반대 과정이라는 점을 유의해야 한다.

 

가령, 해당 암호문을 복호할 때,

키워드 : s u b w a y s u b w a y s u b w a y s u b w a
암호문 : a m b s h g e u u p h c u y o p r y d j b n k

 

(s, a)와 치환되는 평문 글자 i는 다음과 같은 과정으로 복호된다.

 

정리하면, 오래 전부터 사용되어온 암호 기법은 대부분 치환, 전치 기법을 활용하였으며

그 중 치환 기법에는 치환 규칙만으로 평문을 변환하는 단일 문자 치환,

평문과 키를 조합해 하나의 문자로 치환하는 다중 단일 문자 치환 기법으로 나뉜다.

 

단일 문자 치환 기법은 평문 구조를 유추 가능하거나 특정 글자의 빈도수를 통해 평문 내용을 유추할 수 있다는 문제점이 있고, 이를 개선한 다중 단일 문자 치환 기법이 등장하였다.

 

하지만 어디까지나 고전 암호 기법일 뿐, 컴퓨터의 등장 이후로 현대 암호 체계에서 쓰이지 않는다.

 

 

다음 포스트에서는 고전 암호 기법 중 전치 기법의 몇가지 사례에 대해 소개하겠다.

'Study > 암호학' 카테고리의 다른 글

키 교환 체계 (비밀키, 공개키)  (0) 2023.01.25
인증서와 PKI  (0) 2023.01.23
공개키 암호  (0) 2023.01.16
비밀키 암호와 DES  (0) 2023.01.15
고전 암호 기법 - 전치  (0) 2023.01.11