관리 메뉴

심리이모저모

암호 공부하자 - 02 치환암호 본문

IT 공부하자!/암호 공부하자!

암호 공부하자 - 02 치환암호

교육심리학자 2018. 1. 9. 20:46
728x90

1. 암호 공부하자 : 카이사르 암호(Caesar Cipher)

 

지난 글에서 암호에 대해 공부하신 것이 기억에 남으시나요?^^ 이번에는 고전 암호에서 치환 암호에 대해 좀 더 자세히 공부해 봅시다! 카이사르 암호(Caesar Cipher 또는 시저 암호)는 아주 간단하고 기본적인 치혼암호들입니다. 알파벳들을 각각 일정 거리만큼 떨어진 알파벳으로 치환하는 방법입니다. (▽) 알파벳을 왼쪽으로 3칸 밀면 위에 그림처럼 되겠죠? 시저 암호에서 암호키는 얼마나 이동할 것인지가 될 것이고, 복호키는 그 반대가 되겠죠?

 

 

 

2. 암호 공부하자 : 암호화 해봅시다!

 

위에 무장을 암호화 하면 어떻게 될까요?

오른쪽으로 6칸을 움직여 보았습니다!!! 알아보실 수 있겠나요? 반대로 복호화를 생각해볼까요? 알파벳이 총 26개이기 때문에 자신을 제외하고 25가지의 경우의 수를 가집니다. 큰 수는 아니지만 직접 손으로 하기엔 힘이 듭니다. 다음 사이트에서 CIPHERTEXT에 암호문을 넣고 이동하는 숫자를 바꿔가며 Decipher를 해봅시다.

https://www.braingle.com/brainteasers/codes/caesar.php#form

 

 

 

3. 암호 공부하자 : 단일 치환

 

카이사르 암호가 간단한 치환 암호라고 말씀 드렸죠? 그렇다면 다른 치환암호에는 어떤 것들이 있을까요? 카이사르 암호는 알파벳을 순서대로 옮긴 것이기 때문에 하나의 알파벳이 어떻게 바뀌는지 알면 다른 알파벳도 예상이 가능하죠. 그렇다면 순서에 상관없이 무작위로 1대 1로 대응시킨다면 이 문제를 해결할 수 있겠네요! 이렇게 1대 1 대응을 이루는 치환 방식을 단일 치환이라고 부릅니다(카이사르 암호는 단일 치환의 일종이라 볼 수도 있습니다). 암호화와복호호의 키는 대응시켜 놓은 표가 되겠네요.

 

무작위로 대응시킨 단일 치환의 복호화는 결코 쉽지 않습니다. 그렇다면 생각과 문제풀이를 통해서 어떤 과정으로 흘러가는지 정도를 볼까요? ^^

 

4. 암호 공부하자: 암호문 문제 풀기

 

무작위 대응 단일 치환 암호의 경우에는 문자열의 특징을 생각하는 것이 좋습니다. 문자가 사용될 때는 어떤 글자가 가장 많이 사용되는지, 어떤 단어가 가자 자주 등장하는 지 등 빈도 정보가 있다는 것인데요.

 

 

5. 암호 공부하자 : 문자열

 

영어 문자열에서 가장 맣이 나타나는 알파베은 'e'입니다. 즉 주어진 암호문에서 가장 높은 빈도의 알파벳이 'e'로 치환되었다고 생각할 수 있는 것이죠.

 

'N'이 가장 많이 나왔네요.

 

6. 암호 공부하자 : 단어의 빈도수

 

위를 보시면 단어의 빈도수를 알 수 있습니다. 눈에 들만크 자주 등장하는 단어는 잘 없지만 "OGJH"와 "MQH"가 2번 씩 등장했네요.자주 쓰이면서 3-4글자의 단어는 'THE'와 'THIS' 정도겠네요. "OGJH"를 "THIS"로 치환해 봅시다.

 

7. 암호 공부하자 : 치환

 

THIS와 THS와 IS라는 단어가 추가로 나타났어요. 이제부터는 단어를 추측해야 됩니다. 암호문 문제의 경우에는 SOLUTION이라는 단어가 자주 등장하는데 "S___TI__"(HASBOJAL)와 일치하지 않나요? 이런 식으로 단어 패턴을 추측하다보면,

(SOLUTION -> CHALLENGE -> WAS -> AM -> IMPRESSED -> ALMIGHTY -> VERY -> FRIEND -> BY -> KEY) 순으로 알아낼 수 있을 겁니다. 완전한 문장은 다음과 같게 도겠네요.

 

 

 

8. 암호 공부하자 : 빈도 정보

 

혹시 이 과정을 따라오시면서 빈도 정보를 이용한 암호의 특징을 눈치 채셨나요? 문제를 풀면서 난감했던 것은 빈도 정보가 비슷해서 특정할 수 없었던 것이었습니다. 따라서 문장이길어지면 길어질수록 빈도 정보가 확실해지기에 암호문을 푸는 것이 수월해진다는 것이죠. 이렇게 단일치환은문자의 특성이 그대로 반영되기 때문에 빈ㄷ 정보를 이용한다면 해독이 불가능한 것은 아니죠. 이는 암호학에서는 문제로 작용하는 점이고 이를 해결하기 위해 빈도정보를 무력화하는 다중 치환 방식이 등장합니다.

 

9. 암호 공부하자 : 비즈네르 암호(Vigenere Cipher)

 

다중 치환 방식을 사용하면 같은 알파벳이더라도 다른 알파벳으로 치환이 됩니다. 대표적으로 비즈네르 암호가 있습니다. 이를 통해 다중치환을 알아봅시다. 비즈네르 암호는 행렬 표를 이용해 평문 문자 x와 암호화 키 문자 y를, 표에서 x행 y열의 문자로 치환합니다. 비즈네르 암호의 암호화와 복호화는 두 과정 모두 손으로 직접하기에는 복잡합니다. 따라서 다음 사이트를 참고해 암호화와 복호화를 해 보십시오.

 

https://www.dcode.fr/vigenere-cipher

Comments