본문 바로가기

별걸다하는 IT/기타IT

[암호학] 비즈네르 암호법, 비제네르(Vigenere) 고전 암호화 방식과 카사스키 해독

반응형

안녕하세요~!

 

예전에~~~~~~

거의 암호 시초인, 카이사르 암호에 대해서 알아봤던적이 있는데요. 

오늘은 비즈네르 암호에 대해 작성해보려고 합니다.

 

▼카이사르 암호 포스팅이 궁금하신 분은 아래 링크를 참고해주세요.

2019.10.20 - [별걸다하는 IT/기타IT] - [암호학] 카이사르 암호법, 시저 암호법, 가장 오래된 고전 암호법

 

카이사르 암호법은 그냥 알파벳을 n칸만 뒤로 밀려서 작성하는 초 간단 암호법이였죠.

비즈네르 암호는 카이사르 암호와 엄청 비슷한대, 아주 살짝 발전한(?) 고전 암호 방법이예요.

 

비즈네르 암호 Vigenere Ciper 유래(?)

비즈네르 암호방법은 비즈네르라는 사람이 개발한건가? 라고 생각할 확률이 90프로겠지만,,

이 암호화 초창기 모델을 처음으로 언급한 사람은 지오반 바티스타벨라소(Giovan Battista Bellaso)예요 

지오반 바티스타 벨라소가 1553년에 'La cifra del Sig' 라는 책에 비제네르 암호라고 알려진 이 암호법을 기재했습니다.

사진출처: https://funeratic.com/celebrity-goo-game/goo/giovan-battista-bellaso

시간이 지나고 19년대에, David Kahn가 자신의 책에서 그 벨라소의 암호법을 소개했는데, 이를 비즈네로가 발명했다고 잘못 인용하게 된 것..

그리고 이게 그대로 굳혀져서 비즈네로 암호라고 불리게 된 사연(?)이 있습니다

 

비즈네르 암호법 이전에 있었던 카이사르 암호의 경우는~

key값 만큼 알파벳을 이동시켜서 암호화를 하는데요.

즉 키값이 3일 때 "ABC"단어를 암호화하면 각 알파벳이 3칸 뒤로 이동한, "DEF"가 됩니다.

카이사르 암호는 칸수가 밀리기만 하니까, 사실 알파벳 개수만큼 다 밀어서 변경해보면 키를 금방 찾을 수 있었어요.

 

이후 1500년 정도가 지나고... 비즈네르 암호 나오게 되는데요.

지금이야 풀이법이 나와 금방 해독이 되지만, 그 때 당시만 해도 비즈네르 암호는 "해독 불가능한 암호"라고 불렸어요ㅋㅋ 

 

비즈네르 암호 방법

아무래도 시저암호 이후에 나온거니까 방식은 매우 유사합니다.

시저암호가 알파벳을 키값 n칸만큼 이동한 후에 나오는 문자로 치환해서 암호화하듯이,

비즈네르 암호 또한 동일한 치환방법을 사용해요. 

 

다만 시저암호는 키 값이 3이라 하면, A도 3칸 옮기고, B도 3칸 옮기고, C도 3칸 옮겨서 문자를 치환하지만

비즈네르 암호는 키 값이 시저암호처렁 단일값이 아니라 "01" 이런식으로 문자열 형식을 취한다는 데 차이가 있습니다

즉 "ABCD"를 키값 "01"으로 비즈네르 암호화한다하면,

A는 0칸 옮기고, B는 한칸 옮기고 C는 다시 0칸으로 그대로 D는 한 칸 옮기는거죠.

요렇게 키 길이를 원문 길이만큼 반복해서 돌리는거!

 

설명하기 쉽게 하려고 숫자로 표현했는데 키 값도 문자로 써요

abcd..가 0123.. 요렇게 순서에 따라 매핑되는거죠

예를 들어 키가 ab이면 평문 첫글자를 0번 이동(a), 평문 두번째글자를 한번 이동(b)을 번갈아 사용한다 생각하면 됩니다.

 

[예시]

"HELLO WORLD"라는 문자를 키 값 "BAG"로 암호화한다고 가정해봅시다.

위 순서에 의해 키 문자열의 첫 번째 문자(B)는 1칸 이동을 의미, 두 번째 문자(A)는 0칸 이동, 세 번째 문자(G)는 6칸 이동을 해서 변환하라는 의미가 됩니다.

평문 길이만큼 키 값이 반복되는거니까 위처럼 암호문이 만들어질거예요.

 

키값이 3인 시저암호로 HELLOWORLD를 암호화했다하면 KHOORZRUOG가 되겠죠

시저암호의 특징은 같은 문자는 암호화해도 문자가 동일해요.

3번째 L도 O이고 4번째 L도 O로 변환되었어요. SHIFT가 고정값으로 이동됐으니.. 일대일 매핑인거죠 ㅋㅋ

하나의 문자가 하나의 문자로 치환되는 요런 방식을 단일문자 암호(Monoalphabetic Cipher)라고 합니다.

 

하지만 비즈네르 암호의 경우 세번째 L은 R인데 네 번째 L은 M이죠?

요렇듯 하나의 문자가 여러 개의 문자로 변경될 수 있는 방식의 암호화를 다중문자 암호(Polyalphabetic Cipher)라고해요.

시저암호처럼 단일문자 암호였으면 일대일 매핑이니까 N만큼만 시프트한 결과를

위처럼 적어두면 암호문 작성하기가 쉽겠죠?

근데 다중문자 암호인 비즈네르 같은 경우에는 같은 L이라도 몇번 이동되느냐에 따라 암호화된 문자가 달라지니까 좀 어려웠을거예요.

 

출처:https://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher#/media/File:Vigen%C3%A8re_square_shading.svg

요 비즈네르 스퀘어 (타뷸라 렉타)를 이용하면 쉽게 암호문을 작성할 수 있습니다.

보시다시피 타뷸라 렉타(Tabula recta)의 각 줄은 바로 이전 줄을 왼쪽으로 이동시켜서 만들어진 사각표입니다.

 

HELLO를 BAG로 암호화시켜볼게요

H와 B가 만나는 점이 I이죠? 

그리고 E와 A가 만나는 점은 E,

L와 G가 만나는 점은 R.

다시 L과 B가 만나는 점은 M.

IERM...이렇게 하나씩 치환시켜서 암호문을 작성하는데 사용하는 거예요.

 

비즈네르 암호법 수식

이를 수식으로 표현해보면

요렇게 될거예요

26은 알파벳 A-Z까지 총 개수입니다. 

K는 Key값을 의미하고 M은 평문을 의미해요.

저 수식이 의미하는 바는 평문 i번째 문자를 키값 i번째 문자만큼 이동시킨 후, 26으로 SHIFT시킨다는 것이겠죠!

 

HELLO가 평문 BAG가 키값이라 할 때

첫 번째 문자를 수식에 따라 암호화해봅시다

(H+B) 값을 26으로 나눈 나머지(mod)니까, (7+1) 을 26으로 나눈 나머지는 8이네요

즉 8번째 알파벳 I가 암호화 문자가 되는겁니다 

확인해보면 결과가 일치하는것을 알 수 있어요.

 

비즈네르 해독하는 원리 - 카시스키 테스트

비즈네르 암호는 카이사르 암호와 비교하면 훨씬 안전한 암호임이 틀림없죠

또한 해독하기 어려워서 그 서절에는 난공불략 암호로 떨쳤지만

현대 관점에서는 비즈네르 암호는 상당히 깨기 쉬운 암호화 방식이예요.

 

THEY DRINK THE ALCHOHOL라는 문장이 있다고 해볼게요.

보통 암호문에서는 단어 경계를 숨기기 위해 띄어쓰기를 하지 않죠

THEYDRINKTHEALCHOHOL 이 평문이 될거고 이를 ACE라는 키로 암호화를 했다고 가정해봅시다.

 

링크: https://cryptii.com/pipes/vigenere-cipher

일일이 찾아서 치환하기 귀찮은 분들은 위 사이트 들어가면 바로 암호문을 뽑을 수 있습니다 ㅋㅋ

암튼 암호문은 TJIYFVIPOTJIANGHQLON가 될거예요 

자 여기서 알 수 있는게 뭐냐~~

 

TJIYFVIPOTJIANGHQLON 여걸 보면 TJI가 두 번 반복된걸 알 수 있죠?

평문의 세 글자 단어가 같은 자리 이동값으로 shift되어 TJI가 두 번 나타난거다라고 추측할 수 있겠죠 

또 반복된 세글자 사이 간격이 9예요

여기서 예측할 수 있는건 키의 길이가 9이거나 9의 약수일거다를 먼저 뽑아낼 수 있습니다.

이렇게 반복되는 문자열을 여러 개 찾아서 간격으로, 키 길이를 추측하는 방법을 카시스키 분석법이라고 해요 ㅋ

 

출처: http://pi.math.cornell.edu/~morris/135/letfreq.html

이건 알파벳 빈도수 그래프인데요.

보면 E랑 T가 가장 많이 쓴다는 것을 알 수 있어요.

이는 실제 알파벳이 사용되는 빈도수는 균일하지 않다는 거고

이를 활용해 알파벳을 추론하는걸 도수분포를 이용한 추론이라고 합니다.

 

만약에 암호문에서 I라는 알파벳이 가장 많이 나왔다? 하면 I는 가장 빈도수가 높은 E가 아닐까? 생각한다음

단어가 세 글자이면서 E로 끝나는 가장 많이 쓰이는 단어를 유추해보면 THE라는것을 추론할 수 있겠죠?

이를 역이용하면 키가 ACE라는 것도 알 수 있을거예요.

 

 '암호문에서 임의로 두 문자를 선택했을 때 두 문자가 서로 같을 확률은 어떻게 되는가?' 여기에 포인트를 맞춘게 프라이드만이 고안한 프라이드만 테스트입니다.

 

위와 같은 특징으로  비즈네르 암호는 암호화하고자 하는 평문이 길면 길수록, 키가 짧을수록 반복되는 단어수가 많아질테니, 간파당하기 쉬워지는 특징이 있습니다.

한때 해독할 수 없는 암호법으로 불렸으나, 카사스키와 프라이드만 테스트가 발표되고나서는 비교적 쉽게 해독할 수 있는 암호법이 되었지요

 

오늘은 간단히 다중문자 암호 방법인 비즈네르 암호법에 대해 알아봤습니다~!
다음 포스팅에서 봐요!

반응형