암알못의 암호 핥기 - Prologue

By rls1004 | December 1, 2016

암알못의 암호 핥기 - Prologue





“대한민국에서 암알못 해커로 산다는 것”

대한민국에는 멋있는 해커들이 정말 많습니다.


해커들은 저마다 자신만의 필살기로 유명해지고 있고 각자의 개성도 너무 뚜렷합니다.

그리고 제 생각에 해커들의 공통점은 “멋”과 허세와 자존심인 것 같습니다.


저는 다이하드 4.0을 보고 약골이지만 강한 힘을 발휘할 수 있는 해커의 멋에 끌려 해킹에 입문하게 되었고,

“나는 굉장한 스킬을 가지고 있으면서도 굉장히 도덕적이고 애국심이 넘치는 사람이기에 이를 악용하지 않는다”라는

해커의 윤리의식에 다시 한 번 반했습니다.


선배 : 해커에게 제일 중요한게 뭔지 아니?

나 : 윤리의식이요!

선배 : 아니, 이야.


해커에게 제일 중요한 건 첫 째가 멋, 둘 째가 멋, 셋 째가 멋이라는 선배의 말도 귀담아 들었습니다.


이 얘기를 왜 하냐고요?


저는 시스템 해킹과 리버싱을 좋아하는 암알못(암호학을 알지도 못하는 놈)입니다.

시스템 해킹이 멋있어보여서 시작했고 리버싱이 멋있어보여서 시작했고, 재미있어서 계속 공부하고 있습니다.

대한민국에서 암알못 해커로 산다는 것은 사실 큰 문제가 없어보이기도 합니다.


하지만 어딜가나 빠지지 않는 것이 암호이며, 암호학은 보안에 있어서 중요한 역할을 수행하고 있습니다.

암호학이 영역을 점점 넓혀가는 세상 속에서, 계속 암알못으로 살아가기에는 조금 자존심이 상하기 시작했습니다.

(CTF의 암호학 문제를 건드릴 수 없다던가.. 암호학 얘기에 끼어들 수 없다던가.. 암호 강연이 머리에 들어오지 않는다던가.. )


또 하나의 큰 이유는, 암호학을 하면 좀 ..천재같아 보일것 같아요.


그래서 시작되었습니다.. :0


사람마다 다르겠지만 저는 ‘암호학’이라고 하면 자물쇠와 수많은 수식들, 그리고 천재 수학자가 떠오릅니다.

수많은 종이를 구겨가며 머리를 감싸쥐는 것이 제 머리속의 암호학에 대한 이미지입니다.


어쩐지 저와는 거리가 멀어보이는데요…


차차 알아보겠습니다.




1. 암호란?


암호를 공부하려면 암호가 무엇인지 먼저 알아야겠죠.


우리는 생각보다 암호를 일상 생활에서 자주 접하고 있습니다.

넓은 의미로서의 암호는 읽지 못하는 문자를 뜻합니다.

즉, 일반인들이 쉽게 의미를 파악할 수 없는 문자라는 것 입니다.

이렇게 넓은 의미로써는 어럽게 꼬아서 쓴 글이나 한자와 같은 어려운 단어를 써서 문장을 만든 경우도 암호에 속한다고 할 수 있습니다.

10대들끼리 쓰는 은어도 어른들에게는 암호가 될 수 있겠네요.


나 : 오빠! 무찢청 입으셨네요!

복학생 : 무찢청..? 그게 뭐야??

나 : 무릎이 찢어진 청바지요.


실제로, 암호의 기원을 통치자의 위엄을 나타내기 위해 어려운 단어를 섞어서 쓴글이라고 보는 학자들도 있습니다.


이렇게 암호는 다른 사람들이 본래의 내용을 쉽게 파악할 수 없도록 하기 위해 조금씩 발전하기 시작하였고,

중요 정보를 보호하기 위해 현재까지도 널리 쓰이고 있습니다.


초창기 암호는 그저 통치자의 위대함을 알리려 어렵게 글을 쓴 것이었지만

대부분의 사람들이 생각하는 좁은 의미의 암호는 군사적인 목적을 위해 처음 등장하였고,

전쟁시 아군끼리의 원활한 커뮤니케이션을 위하여 발전하게 되었습니다.


이러한 암호를 고전 암호라고 부릅니다.


조금씩 문명이 발전하면서, 문명들끼리의 충돌이나 교전이 잦게 되어 전쟁을 할 일이 많아졌고

전쟁을 하다보니 아군끼리의 안정하고 원활한 커뮤니케이션은 필수였던 것이죠.

이러한 고전암호는 종이나 연필을 이용하여 자신들끼리 정해놓은 규칙대로 암호화를 시켜

다른 지역의 아군에게 전달하는 방식이 대부분입니다.


세월이 지나 산업혁명이 일어나며 기계가 발전하게 되자, 암호도 기계화 되기 시작하였습니다.

즉, 전자기계식 암호의 시대가 온 것인데요.


고전 암호 시절에도 도구를 이용한 암호화 방법이 존재하긴 했지만 대부분 1대 1 치환 암호와 같은 원시적인 방법이었습니다.



예를 들어, 위의 1대 1 규칙을 사용하게 되면 potato 라는 문자열은 hgzqzg 라는 문자열로 변환 되겠지요.


하지만 전자기계식 암호는 좀 더 수학적이고 좀 더 복잡한 연산들을 거쳐 암호문을 만들게 되는데요,

이런 전자기계식 암호가 발전한 시기가 바로 제 1, 2차 세계대전 때 입니다.

암호는 전쟁에 의해서 눈부신 발전을 하게 됩니다.


그렇게 또 시간이 흘러, 컴퓨터가 등장하고 인터넷이 나타나며 정보의 바다 시대가 되었습니다.

정보가 중요한 재산이 되는 시대가 되자 정보에 대한 보호도 중요해지기 시작하였고 암호학은 또 다시 발전하고,

그렇게 현대 암호가 등장하였습니다.


인터넷으로 결제를 하는 등의 일에 쓰이는 정보를 안전하게 전달하기 위해

매우 복잡한 연산으로 구성된 DES, RSA 등이 요즘 쓰이는 현대 암호입니다.



암호의 전반적인 알고리즘을 간단히 이야기 하지면,

‘암호키’를 이용하여 암호화하고 ‘복호키’를 이용하여 복호화하는 과정입니다.

암호화 되기 전인 일반적인 문장을 ‘평문’이라고 부르고, 평문이 암호화되면 그것을 ‘암호문’이라고 부릅니다.

평문을 암호문으로 바꾸는 것을 ‘암호화’라고 하며, 암호문을 평문으로 바꾸는 것을 ‘복호화’라고 합니다.


그리고 평문을 암호화 시키는 데에는 당연히 일정한 규칙이 필요하겠죠?


이러한 규칙을 ‘암호키’라고 부르고 반대로 평문을 복호화시키는 데에 쓰이는 규칙을 ‘복호키’라고 합니다.


이제 암호가 어떤 식으로 발전해왔고 어떤 종류가 있는지 고전 암호와 전자기계식 암호를 중점으로 알아보겠습니다.




2. 고전 암호


최초의 암호장치라고 할 수 있는 스키탈리는 고대 그리스의 군사사령관끼리의 교신을 위해 쓰였습니다.


각 사령관에 일정한 길이와 굵기를 가진 나무 막대기를 두고, 이 막대기에 종이를 감아 그 위에 글씨를 쓰는 방식입니다.

이러한 봉을 스키탈리라고 부르게 되었고, 따라서 이러한 암호의 이름은 스키탈리 암호가 되었습니다.


스키탈리 암호에서는 나무막대기가 암호화 및 복호화에 쓰이므로, 암호키이자 복호키가 됩니다.


봉건 시대 이후에는 유럽에서 정치권력을 위하여 암호가 발전하였습니다.

이때 당시 나타난 암호들 중 현대 암호의 기본형이라 할 수 있는 암호가 두 가지 나타났는데,

하나는 코드(code)이고 또 다른 하나는 사이퍼(cipher)입니다.

보통, 암호라고 하면 사이퍼만을 생각한다고 하네요.


코드(code)란? - 어떤 단어를 다른 단어로 대체하여 뜻을 숨기는 방식.

(담배피는 걸 싫어하는 사람 앞에서)

“담배 피러 가자” -> “커피 마시러 가자”


사이퍼(cyper)란? - 여러가지 방법을 이용해 글자를 짜맞추는 방식.

(알파벳을 하나씩 이동하여)

“Hello World” -> “Ifmmp Xpsme”


이러한 두 가지 방법을 모두 섞어서 쓴 암호화 방식이 있었는데 그게 바로 노멘클레이터입니다.


#프랑스에서 사용된 노멘클레이터


노멘클레이터는 16세기 로마 교황청의 공문서에 사용되었던 암호입니다.

000~999까지의 세 자리 숫자를 이용하여 특정 단어나 알파벳 철자를 표현합니다.

단어나 문장에 맞는 숫자가 하나씩 정해져 있어 그 코드북을 이용하여 암호를 작성하고 해독하는 방법을 사용했습니다.


그리고 만약의 노출에 대비하여 맨 앞에 속임수용 숫자를 추가해 네 단위로 만들거나

세 단위 숫자 중에 5 또는 7을 의미 없이 집어넣어 코드북이 있더라도 다른 사람들이 해독하기 어렵도록 만들었습니다.


노멘클레이터에서는 암호화용 코드북이 암호키, 복호화용 코드북이 복호키가 됩니다.




3. 전자기계식 암호


산업 혁명이 일어나면서 암호화 및 복호화가 가능한 전자기계식 암호화 장치가 등장합니다.

대표적인 예로는 독일의 애니그마가 있죠!

작동 원리는 평문을 입력하면 톱니바퀴가 돌아가며 암호문을 만들어주는 것 입니다.

암호화 횟수에 따라 톱니바퀴가 돌아가기 때문에 같은 문자를 입력해도 다르게 암호화합니다.

아래는 애니그마 시뮬레이션을 사용한 결과입니다.



TOMATO -> OIKGXK

T에 대해 O와 X, O에 대해 I와 K라는 알파벳으로 암호화 되었다.


영화 ‘이미테이션 게임’을 보셨나요?

독일군의 애니그마 암호를 해독하기 위해 앨런 튜링이 새로운 기계를 개발해내는데,

2400개의 진공관을 사용하여 만든 높이 3M의 거대한 컴퓨터, 콜로서스 입니다.


# 실제 콜로서스와 영화 ‘이미테이션 게임’의 콜로서스


콜로서스는 거인이라는 뜻인데요, 왜 이런 이름이 붙었는지 짐작이 가는 비쥬얼입니다.




4. 현대 암호


현대 암호는 대칭키 암호와 비대칭키 암호로 분류할 수 있습니다.


대칭키 암호의 특징은 암호화와 복호화에 쓰이는 키가 동일하다는 것인데요,

송진자와 수신자 양측이 같은 비밀키를 가집니다.

상대적으로 암호화와 복호화 시간이 빨라 알고리즘이 복잡하지 않고, 효율적인 암호 시스템을 구축할 수 있습니다.

하지만 송신자가 수신자에게 키를 전달하는 과정에서 해커에 의해 키가 노출된다면 그 키를 이용해 해독이 가능합니다.



그에 비해 비대칭키 암호는 송신자와 수신자가 서로 다른 키를 가지게 됩니다.


송신자는 공개키를 이용해서 암호화를 하고, 공개키에 대응되는 비밀키를 가진 수신자만 복호화할 수 있습니다.

알고리즘은 수학적 난제를 기반으로 설계되기 때문에 비밀키 암호에 비해 효율성이 높지 않습니다.

대신, 키를 수신자에게 전달할 필요가 없기 때문에 키 노출에 관해서 좀 더 안전합니다.



키를 이용하지 않는 해쉬 함수도 있습니다.

해쉬 함수는 임의의 길이를 갖는 메세지를 입력 받아 고정된 길이의 해쉬값으로 출력해주는 함수입니다.

같은 입력에 대해서는 같은 출력을 갖는데, 메세지의 무결성을 탐지하는 목적으로 주로 사용됩니다.



# 파일의 해쉬값 확인


고전 암호부터 현대 암호까지 대강 살펴봤는데요, 다음엔 실전으로 좀 더 자세히 알아봅시다.


comments powered by Disqus