정보

데이터 암호화란 무엇인가

보내는 길에 누가 있어도
읽지 못하게 할 수 있을까요?

학습 목표

  1. 평문 · 암호문 · 암호화 · 복호화를 구분해 설명하고, 각각이 어느 자리에서 일어나는지 그림으로 나타낼 수 있다.
  2. 「규칙」과 「키」의 차이를 말하고, 규칙은 알려져도 되지만 키는 알려지면 안 되는 까닭을 설명할 수 있다.
  3. 압축과 암호화가 둘 다 표현을 바꾸는 일인데도 목적이 다르다는 것을 구별할 수 있다.

왜 감추는가

내 기기에서 나온 데이터는 공유기를 거치고, 여러 라우터를 지나고, 통신 회사의 장비를 지나 목적지에 닿습니다. 그 사이에는 내가 알지 못하는 장비와 사람이 여럿 있습니다.

평소에는 아무 일도 일어나지 않습니다. 그러나 중간의 어느 지점에서 지나가는 데이터를 살펴보려 마음먹으면, 데이터가 있는 그대로 적혀 있는 한 막을 방법이 없습니다.

데이터 암호화(encryption)

데이터를 정해진 사람만 되돌릴 수 있는 형태로 바꿔 두는 것입니다. 중간에서 누군가 가로채더라도 무슨 내용인지 알 수 없게 만듭니다. 목적은 하나, 가진 사람이 아니면 읽을 수 없게 하는 것입니다.


여기서 압축과 헷갈리기 쉬운 지점이 나옵니다. 압축도 데이터를 알아보기 어려운 모양으로 바꿉니다. 실제로 압축된 파일을 그냥 열어 보면 뜻 모를 값 덩어리로 보입니다. 그러면 압축도 감추는 기술일까요? 아닙니다.

압축 — 차지하는 공간을 줄이려고 바꾼다

규칙만 알면 누구든 되돌릴 수 있어야 합니다. 오히려 그래야 쓸모가 있습니다. 파일 이름 끝에 어떤 규칙을 썼는지 대놓고 적어 두는 것도 그 때문입니다.

암호화 — 못 읽게 하려고 바꾼다

규칙을 알아도 정해진 사람이 아니면 되돌릴 수 없어야 합니다. 되돌릴 수 있는 사람이 많아지면 그만큼 실패한 암호화입니다.

구분하는 물음: 규칙을 아는 사람이 되돌릴 수 있는가

둘 다 「표현을 바꾸는 일」이라는 점은 같습니다. 구분하는 기준은 규칙을 아는 사람이 되돌릴 수 있어야 하는가입니다. 압축은 있어야 하고, 암호화는 없어야 합니다. 그래서 암호화에는 규칙 말고 하나가 더 필요합니다. 무엇인지는 「규칙과 키」 절에서 봅니다.

압축된 파일은 감춰진 것이 아닙니다. 압축했으니 안전하다고 여기면 곤란합니다.

스스로 확인

「중요한 파일을 압축해 두었으니 남이 봐도 못 읽을 것」이라고 생각한 친구가 있습니다. 「규칙을 아는 사람이 되돌릴 수 있는가」라는 물음으로 무엇이 잘못되었는지 설명해 보세요.

평문과 암호문

암호를 이야기하려면 이름 넷이 필요합니다. 둘은 데이터의 상태를 가리키고, 둘은 상태를 바꾸는 일을 가리킵니다.

평문(plaintext)

아직 감추지 않은, 누구든 읽을 수 있는 원래의 데이터입니다. 「평(平)」은 평범하다는 뜻입니다.

암호문(ciphertext)

평문을 바꿔 놓아 그대로는 읽을 수 없게 된 데이터입니다. 내용이 사라진 것이 아니라 알아볼 수 없게 되었을 뿐입니다.

암호화(encryption)

평문을 암호문으로 바꾸는 일입니다. 주고받을 때는 보내는 쪽에서 합니다.

복호화(decryption)

암호문을 평문으로 되돌리는 일입니다. 주고받을 때는 받는 쪽에서 합니다. 「복(復)」은 되돌린다는 뜻입니다.

양 끝은 평문, 가운데 구간만 암호문 암호화 복호화 평문 보내는 사람 암호문 읽을 수 없다 평문 받는 사람 남이 볼 수도 있는 구간

양 끝은 평문입니다

그림의 양 끝이 같은 색인 것에 주목하세요. 보내는 사람과 받는 사람의 손에서는 데이터가 평문입니다. 읽을 수 있어야 쓸모가 있으니 당연합니다. 암호화가 지키는 것은 가운데 구간뿐입니다.

그래서 암호화는 양 끝을 지켜 주지 않습니다. 내 기기가 이미 뚫려 있다면 아무리 튼튼하게 암호화해도 소용이 없습니다. 보내기 전의 평문을 그대로 읽어 가면 되기 때문입니다.

스스로 확인

누군가 내 어깨너머로 화면을 몰래 보고 있다면, 아무리 좋은 암호화를 써도 막지 못합니다. 그림의 어느 자리를 보고 있는 셈일까요?

규칙과 키

「왜 감추는가」 절에서 「암호화에는 규칙 말고 하나가 더 필요하다」고 했습니다. 그것이 키입니다. 둘의 차이를 자물쇠에 비유하면 쉽습니다.

규칙 — 자물쇠의 구조

어떤 방식으로 바꿀 것인가입니다. 「글자를 몇 칸 밀어 쓴다」, 「자리를 뒤섞는다」 같은 것입니다. 자물쇠가 어떻게 만들어졌는지에 해당합니다.

키 — 그 자물쇠에 맞는 열쇠

그 규칙을 이번에 어떻게 쓸 것인가입니다. 「몇 칸을 밀 것인가」, 「어떤 차례로 뒤섞을 것인가」 같은 값입니다. 같은 규칙이라도 키가 다르면 결과가 달라집니다.

암호화 키와 복호화 키

암호화할 때 쓰는 값을 암호화 키, 되돌릴 때 쓰는 값을 복호화 키라고 합니다. 암호 방식 가운데는 두 키가 같은 것도 있고 다른 것도 있습니다. 같아야 한다고 미리 정해져 있지 않습니다. 지금은 두 키를 따로 부르는 이름이 있다는 것까지만 잡아 둡니다.


규칙은 알려져도 되지만 키는 알려지면 안 됩니다

흔히 오해하는 지점입니다. 「어떻게 암호화했는지 아무도 모르게 해야 안전하다」고 생각하기 쉽지만, 실제 암호는 규칙을 아예 공개해 두고 씁니다.

까닭은 둘입니다. 첫째, 규칙은 오래 숨길 수 없습니다. 프로그램을 분석하거나 같은 방식을 쓰는 다른 사람에게 물으면 드러납니다. 숨겨야만 안전한 방식은 드러나는 순간 통째로 무너집니다. 둘째, 공개해야 여럿이 검사할 수 있습니다. 많은 사람이 오래 두드려 보고도 뚫리지 않은 규칙이라야 믿을 만합니다.

그래서 안전함은 「규칙을 모른다」가 아니라 「키를 모른다」에 기대야 합니다. 자물쇠의 구조가 알려져도 열쇠가 없으면 못 여는 것과 같습니다.

그러면 키가 갖추어야 할 조건은 무엇일까요. 가능한 키가 아주 많아야 합니다. 키의 후보가 스물다섯 개뿐이라면, 남이 스물다섯 번만 해 보면 됩니다. 이렇게 후보를 하나씩 다 해 보는 방법을 막으려면 후보가 많아야 합니다.

키의 후보 수와 다 해 보기 (수업에서 원리를 확인하려고 든 예)
키가 될 수 있는 값 후보의 수 다 해 보면
1부터 25까지의 수 하나 25가지 사람이 손으로도 금방 끝난다
네 자리 숫자 10,000가지 컴퓨터에게는 눈 깜짝할 사이다
0과 1이 128칸 2를 128번 곱한 수 온 세상의 컴퓨터를 모아도 현실적인 시간 안에는 끝낼 수 없다

「몇 비트인가」는 「0과 1을 담는 칸이 몇 개인가」라는 뜻입니다. 키의 길이도 이렇게 셉니다. 칸이 하나 늘 때마다 후보의 수는 두 배가 됩니다. 그래서 키의 길이를 조금만 늘려도 다 해 보기는 급격히 어려워집니다.

스스로 확인

「우리 반만 아는 방식으로 암호를 만들었으니 안전하다」는 말에는 무엇이 빠져 있을까요? 「규칙은 오래 숨길 수 없다」와 「공개해야 여럿이 검사할 수 있다」 가운데 하나로 답해 보세요.

해 주지 못하는 것

암호화는 강력한 도구지만 만능은 아닙니다. 무엇을 해 주는지만 알고 무엇을 해 주지 못하는지 모르면, 「암호화했으니 안전하다」고 믿다가 오히려 크게 당합니다. 지금까지 나온 이야기를 뒤집어 정리하면 이렇습니다.

양 끝은 지켜 주지 않는다

보내는 기기와 받는 기기 안에서는 데이터가 평문입니다. 내 기기가 뚫려 있거나 받는 사람이 내용을 남에게 보여 주면, 가운데 구간이 아무리 튼튼해도 소용이 없습니다.

키가 새면 전부 무너진다

암호화의 안전함은 오직 키를 남이 모른다는 데 기대고 있습니다. 키를 쪽지에 적어 두거나 쉽게 짐작할 수 있는 값으로 정하면, 규칙이 아무리 튼튼해도 소용이 없습니다. 그래서 암호를 지키려면 키부터 지켜야 합니다.

주고받았다는 사실 자체는 감춰지지 않는다

내용은 못 읽어도, 누가 누구와 언제 얼마나 주고받았는지는 중간에서 볼 수 있습니다. 데이터를 보내려면 받을 곳의 주소가 필요하고, 그 주소까지 읽을 수 없게 만들면 배달할 수가 없기 때문입니다. 내용을 몰라도 이런 것만 모으면 알아낼 수 있는 것이 적지 않습니다.

오늘 안전한 것이 내일도 안전하지는 않다

「다 해 보기」에 걸리는 시간은 컴퓨터가 빨라질수록 줄어듭니다. 예전에는 넉넉하다고 여기던 키 길이가 지금은 짧다고 여겨집니다. 한 번 정해 두고 영원히 두는 것이 아니라 때때로 바꿔 나가야 합니다.

그래도 쓰지 않을 이유는 되지 않습니다

한계가 넷이나 되니 「그럼 소용없는 것 아닌가」 싶을 수 있습니다. 그렇지 않습니다. 암호화는 가운데 구간에서 지나가는 데이터를 읽지 못하게 하는 일을 확실하게 해냅니다. 그것만으로도 막을 수 있는 일이 아주 많습니다.

암호화를 쓰는 사람은 암호화가 지켜 주는 범위를 정확히 알아야 합니다. 보안은 한 자리만 지켜서는 소용이 없습니다. 암호화는 여러 대비 가운데 하나이지 전부가 아닙니다.

스스로 확인

내용은 하나도 못 읽었지만 「누가 누구와 새벽 세 시에 오랫동안 주고받았다」는 것만 알아냈다고 합시다. 여기서 짐작할 수 있는 것이 있을까요? 넷 가운데 어느 한계에 해당하나요?

핵심 정리

암호화의 목적

  • 데이터를 정해진 사람만 되돌릴 수 있는 형태로 바꿔 두는 것이다.
  • 압축과 구분하는 기준은 「규칙을 아는 사람이 되돌릴 수 있어야 하는가」다.
  • 압축은 있어야 하고 암호화는 없어야 한다. 압축된 파일은 감춰진 것이 아니다.

네 가지 이름

  • 평문은 읽을 수 있는 원래 데이터, 암호문은 알아볼 수 없게 된 데이터다.
  • 평문을 암호문으로 바꾸는 일이 암호화, 되돌리는 일이 복호화다.
  • 주고받을 때 양 끝에서는 평문이다. 암호화가 지키는 것은 가운데 구간뿐이다.

규칙과 키

  • 규칙은 자물쇠의 구조, 키는 그 자물쇠에 맞는 열쇠다.
  • 규칙은 알려져도 되지만 키는 알려지면 안 된다. 숨겨야만 안전한 규칙은 드러나는 순간 무너진다.
  • 키가 될 수 있는 값이 많을수록 다 해 보기가 어려워진다. 칸이 하나 늘면 후보는 두 배가 된다.

해 주지 못하는 것

  • 양 끝을 지켜 주지 않고, 키가 새면 전부 무너진다.
  • 주고받았다는 사실 자체는 감춰지지 않는다.
  • 오늘 안전한 것이 내일도 안전하지는 않다. 때때로 바꿔 나가야 한다.

확인 퀴즈

배운 내용을 확인해 봅시다.

Q1

압축과 암호화를 구분하는 물음으로 가장 알맞은 것은?

Q2

실제 암호가 규칙을 공개해 두고 쓰는 까닭으로 알맞지 않은 것은?

Q3

「글자를 몇 칸 밀어 쓴다」가 규칙이라면, 키에 해당하는 것은?

Q4

메시지를 튼튼하게 암호화해 보냈는데도 내용이 새어 나갔습니다. 암호화 자체는 뚫리지 않았다면 어디를 의심해야 할까요?