실세계 암호학을 접하려는 여러분을 환영한다!

여행자여, 안전띠를 동여맬지어다. 당신은 경이로움과 신비의 세계, 암호학의 세계로 들어가려 한다. 암호학(cryptography)은 악의적인 문자로 인해 문제가 발생하는 상황을 막기 위해 고대로부터 발달한 주술이다. 글에는 악의로부터 자신을 방어하는 데 필요한 주문이 적혀 있다. 많은 사람이 이 주술을 배우려 도전했지만 도중에 살아남은 사람은 거의 없다. 흥미진진한 모험이 여러분을 기다리고 있다!

이 글에서 암호학 알고리즘이 어떻게 편지를 보호하고, 당사자를 식별하고, 적으로부터 보물을 보호할 수 있는지 알아본다. 암호학은 세상의 모든 보안과 개인정보 보호의 기초이기에 암호학의 바다를 항해하는 여정은 순조롭지만은 않을 것이다. 사소한 실수조차 치명적일 수 있다.



🔐 암호학은 프로토콜을 보호한다.

우리의 여정은 암호학을 소개하며 시작된다. 암호학은 방해 행위로부터 프로토콜(protocol)을 방어하는 것을 목표로 하는 과학이다. 프로토콜이 뭘까? 간단히 말해서 프로토콜은 한 명 이상의 사람이 무언가를 달성하기 위해 따라야 하는 단계의 목록이다. 예를 들어 다음과 같은 전제를 상상해보자. 당신은 몇 시간 정도 마법검을 내려두고 낮잠을 좀 자고 싶다. 이를 위한 프로토콜을 한 가지 구성해보면 다음과 같다.

  1. 땅에 무기를 놓는다.
  2. 나무 아래서 낮잠을 잔다.
  3. 땅에서 무기를 들어 올린다.

물론 이는 좋은 프로토콜이 아니다. 낮잠을 자는 사이 누군가가 마법검을 훔칠 수 있기 때문이다. 여기서 암호학의 역할은 마법검을 훔쳐가려는 적의 존재를 고려하는 것이다.

고대에는 통치자와 장군 사이에 배신과 쿠데타가 빈번해서, 신뢰할 수 있는 사람과 기밀 정보를 공유할 방법을 찾는 것이 매우 중요했다. 여기에서 암호학의 개념이 탄생했다. 암호학이 오늘날과 같은 진지한 분야로 받아들여지기까지는 수 세기의 시간과 노력이 필요했다. 이제 암호학은 혼란스럽고 악의가 가득한 세계 속에서 가장 기본적인 서비스를 제공하기 위해 곳곳에서 쓰이고 있다.

이 글은 실용적 암호학을 다룬다. 오늘날 사용되는 암호학 프로토콜을 다루기 위해서 다양한 컴퓨터 과학을 다룰 것이다. 또한 암호학이 어떤 요소로 구성되어 있으며 모든 것이 어떻게 결합되어 있는지도 보여준다. 일반적인 암호학 책은 보통 암호의 발견으로 시작하여 암호의 역사를 안내하지만 이런 설명은 의미가 없다고 보기에 실무적인 내용을 다룰 것이다. 컨설턴트로서 대기업의 암호학 애플리케이션을 검토하거나 현장에서 엔지니어로 사용했던 암호학에 대해 직접 목격한 내용을 공유할 것이다.

무시무시한 수학 공식은 (거의) 없을 것이다. 이 글은 암호학의 신비를 풀고, 무엇이 쓸 만한지 소개하고, 실생활 속의 암호학이 어떻게 구성되어 있는지에 대한 직관을 제공한다. 대상 독자는 호기심 많은 사람들, 엔지니어, 모험심이 강한 개발자, 연구자다. 1장에서는 암호학의 세계에 대한 여행을 시작한다. 암호학의 다양한 종류와 그중 중요한 것, 그리고 어떻게 전 세계가 그것들을 사용하는 데 동의하게 되었는지 알아볼 것이다.


대칭 암호학: 대칭 암호화란?

암호학의 기본 개념 중 하나는 대칭 암호화(symmetric encryption)다. 글에 나오는 대부분의 암호학 알고리즘에서 사용되므로 매우 중요하다. 첫 번째 프로토콜 사례를 통해 이 새로운 개념을 알아보자.

앨리스 여왕이 멀리 있는 성에 사는 밥 경에게 편지를 보내야 하는 상황을 가정하자. 앨리스 여왕은 밥 경에게 귀중한 메시지를 전하기 위해 충성스러운 전령에게 믿음직한 말을 타고 위험한 땅을 가로질러 떠나도록 요청한다. 그러나 그녀는 전령을 완전히 믿지 못한다. 충성스러운 전령은 수년 동안 여왕을 섬겼지만 여왕은 전달 중인 메시지가 전령을 포함한 모든 사람에게 비밀로 유지되기를 원한다! 아마 그 편지에는 논란거리가 될 만한 왕국의 가십거리가 적혀 있을 것이다.

앨리스 여왕에게 필요한 것은, 중개인 없이 밥 경에게 메시지를 전달하는 행위를 모방한 프로토콜이다. 이는 암호학(또는 순간이동)을 도입하지 않는 한 실제 푸는 것이 불가능한 문제다. 이를 해결하기 위해 오래전에 발명된 암호학적 알고리즘이 바로 대칭 암호화 알고리즘[symmetric encryption algorithm(사이퍼cipher라고도 함)]이다.

Note. 글에서는 프리미티브(primitive)라는 단어를 암호화 알고리즘의 한 종류인 것처럼 사용한다. 프리미티브는 암호학에서 가장 작고 유용한 구성 요소로 볼 수 있으며, 프로토콜을 만들기 위해 다른 프리미티브와 함께 쓰이기도 한다. 전문용어는 아니지만 각종 문서에 자주 등장하므로 이런 의미로 사용된다는 점을 알아두면 좋다.

암호화 프리미티브를 사용하여 전령에게서 앨리스 여왕의 메시지를 숨기는 방법을 살펴보자. 프리미티브가 두 가지 함수를 제공하는 블랙박스(내부에 무엇이 있는지, 또는 내부에서 무엇을 하는지 알 수 없다)라 상상해보자. 두 가지 함수는 다음과 같다.

  • ENCRYPT
  • DECRYPT

첫 번째 함수 ENCRYPT는 비밀 키[secret key(보통 큰 숫자)]와 메시지(message)를 받아서 작동한다. 그런 다음 무작위로 보이는 일련의 숫자를 출력한다. 원하면 노이즈 데이터를 좀 넣을 수 있다. 이렇게 암호화된 메시지를 출력이라 부를 것이다(그림 1.1).

두 번째 함수인 DECRYPT는 첫 번째 함수의 역함수다. 동일한 비밀 키와 첫 번째 함수의 출력(암호화된 메시지)을 취한 다음 원본 메시지를 내놓는다(그림 1.2).

이 새로운 프리미티브를 사용하려면 먼저 앨리스 여왕과 밥 경이 현실에서 만나 어떤 비밀 키를 사용할지 정해야 한다. 나중에 앨리스 여왕은 ENCRYPT 함수를 사용하여 비밀 키의 도움으로 메시지를 보호할 수 있다. 그다음 그녀는 암호화된 메시지를 그녀의 전령에게 전달하고, 전령은 이를 밥 경에게 전달한다. 밥 경은 동일한 비밀 키를 사용하여 암호화된 메시지에 DECRYPT 함수를 사용하여 원본 메시지를 복구한다(그림 1.3).

이 과정에서 전령이 가진 메시지는 무작위로 보이고, 숨겨진 메시지의 내용에 대한 내용을 전혀 알 수 없었다. 암호화 덕분에 안전하지 않은 프로토콜을 안전한 프로토콜로 강화했다. 앨리스 여왕은 새로운 프로토콜 덕분에 밥 경에게 기밀 편지를 전달하면서도 밥 경 외에는 아무도 내용을 모르게 할 수 있었다.

비밀 키를 사용하여 대상을 노이즈로 만들어 무작위와 구별할 수 없도록 만드는 과정은 암호학에서 프로토콜을 보호하는 일반적인 방법이다. 다음 장에서 더 많은 암호화 알고리즘을 배우면 더 자세히 알게 될 것이다.

대칭 암호화는 대칭 암호학(symmetric cryptography) 또는 비밀 키 암호학(secret key cryptography)이라는 더 큰 범주의 암호학 알고리즘의 일부인데, 이러한 알고리즘에서는 암호학 프리미티브에 의해 노출된 서로 다른 함수에서 동일한 키를 사용한다. 나중에 다시 알아보겠지만 키가 둘 이상일 수도 있다.


profile
0과 1이 꿈꾸는 세상

0개의 댓글