정보

현대 암호화 기법과 활용

열쇠를 안전하게 건네려면
열쇠를 안전하게 건네야 합니다. 어떻게 풀까요?

학습 목표

  1. 대칭 키 암호와 비대칭 키 암호를 「암호화 키와 복호화 키가 같은가」로 구별하고, 각각의 장단을 말할 수 있다.
  2. 둘을 함께 쓰는 까닭을 「키를 어떻게 건네는가」와 「속도」로 설명할 수 있다.
  3. 일상에서 암호화가 쓰이는 곳을 찾아 무엇을 지키고 있는지 말하고, 데이터를 다루는 사람으로서 지킬 것을 정할 수 있다.

컴퓨터가 바꾼 것

고전 암호가 뚫리는 길은 둘입니다. 키의 후보가 적어 다 해 보면 되거나, 평문의 모양이 암호문에 그대로 비쳐 빈도를 세면 되거나입니다. 컴퓨터를 쓰면 두 약점을 모두 막을 수 있습니다.

키를 사람이 셀 수 없을 만큼 늘린다

사람이 손으로 다루는 키는 「3칸 밀기」처럼 작을 수밖에 없습니다. 컴퓨터는 0과 1이 백 칸 넘게 늘어선 값도 아무렇지 않게 씁니다. 칸이 하나 늘 때마다 후보는 두 배가 되니, 다 해 보기는 사실상 불가능해집니다.

평문의 모양이 남지 않게 뒤섞는다

고전 암호는 글자를 하나씩 따로 다뤄서 빈도의 모양이 그대로 남았습니다. 현대 암호는 여러 값을 한 덩어리로 묶어 섞고, 그 결과를 다시 섞기를 여러 번 반복합니다. 그러면 평문에서 같은 글자였던 자리도 암호문에서는 제각각이 됩니다.

현대 암호화 기법

컴퓨터의 계산 능력을 써서 만든 암호화 방식을 통틀어 이렇게 부릅니다. 나누는 기준은 하나, 암호화 키와 복호화 키가 같은가, 다른가입니다. 같으면 대칭 키 암호, 다르면 비대칭 키 암호입니다.

규칙이 바뀐 것이지 원리가 바뀐 것은 아닙니다

현대 암호도 고전 암호와 같은 뼈대 위에 그대로 서 있습니다. 평문을 암호문으로 바꾸고, 키가 있어야 되돌릴 수 있고, 규칙은 공개하고 키만 숨깁니다. 실제로 널리 쓰이는 현대 암호는 방식이 전부 공개되어 있고, 세계의 연구자들이 오랫동안 두드려 보고도 뚫지 못했다는 것이 그 방식을 믿는 근거입니다.

스스로 확인

「여러 값을 한 덩어리로 묶어 섞는다」가 왜 빈도 세기를 막을까요? 단일 치환 암호가 빈도 세기로 뚫리는 까닭과 비교해 설명해 보세요.

대칭 키 암호

잠글 때와 열 때 같은 키를 쓰는 방식입니다. 집 현관 열쇠를 떠올리면 됩니다. 나갈 때 잠근 그 열쇠로 들어올 때 엽니다. 카이사르 암호 같은 고전 암호는 모두 이쪽입니다. 카이사르 암호에서 3칸 밀어 잠갔으면 3칸 되밀어 엽니다.

잠글 때와 열 때 — 같은 키 보내는 사람 받는 사람 암호문 잠근다 연다 비밀 키 비밀 키 잠그는 키와 여는 키가 같다 두 사람이 미리 나눠 가져야 한다

좋은 점 — 빠르다

키가 하나뿐이라 계산이 단순하고 빠릅니다. 큰 파일이나 끊임없이 흘러가는 영상처럼 양이 많은 데이터는 주로 이쪽이 맡습니다.

어려운 점 — 키를 어떻게 건네나

주고받는 두 사람이 미리 같은 키를 나눠 가져야 합니다. 그런데 그 키를 어떻게 건넬까요? 네트워크로 그냥 보내면 중간에서 볼 수 있고, 그러면 암호화한 보람이 없습니다.

제자리를 도는 문제

「키를 안전하게 보내려면 키를 암호화해서 보내면 되지 않을까?」 그러면 그 암호화에 쓸 키를 또 안전하게 보내야 합니다. 이렇게 끝없이 제자리를 돕니다. 만나서 직접 건네면 되지만, 처음 보는 상대와 인터넷으로 물건을 사는 상황에서는 만날 수가 없습니다.

문제가 하나 더 있습니다. 사람이 늘어나면 키가 폭발합니다. 셋이 서로 따로 이야기하려면 키가 셋, 넷이면 여섯, 열이면 마흔다섯 개가 필요합니다. 「비대칭 키 암호」 절의 방식은 이 두 문제를 함께 풉니다.

스스로 확인

내 컴퓨터에 있는 파일을 암호화해 나만 쓰려고 합니다. 이때는 「키를 어떻게 건네나」라는 어려운 점이 문제가 될까요? 왜 그런지 말해 보세요.

비대칭 키 암호

잠글 때와 열 때 다른 키를 쓰는 방식입니다. 처음 들으면 이상합니다. 잠근 것을 다른 열쇠로 연다니요. 그런데 손잡이를 누르면 그냥 잠기지만 열려면 열쇠가 있어야 하는 자물쇠를 떠올려 보세요. 잠그는 데 필요한 것과 여는 데 필요한 것이 서로 다릅니다.

공개 키 — 잠그는 쪽

누구에게나 알려 줍니다. 이름 그대로 공개합니다. 이 키로는 잠글 수만 있고 열 수는 없으므로, 남이 가져가도 잃을 것이 없습니다.

개인 키 — 여는 쪽

주인만 가지고 있으며 누구에게도 주지 않습니다. 공개 키로 잠근 것은 오직 이 키로만 열립니다.

잠글 때와 열 때 — 다른 키 보내는 사람 받는 사람 암호문 잠근다 연다 공개 키 개인 키 잠그는 키와 여는 키가 다르다 둘 다 「받는 사람」의 키다

비밀 메시지를 보낼 때 키 두 개는 다 받는 사람의 것입니다

자주 헷갈리는 지점입니다. 그림의 두 열쇠는 보내는 사람과 받는 사람이 하나씩 나눠 가진 것이 아닙니다. 둘 다 받는 사람의 열쇠입니다. 받는 사람이 자기 공개 키를 세상에 뿌려 두면, 누구든 그것으로 잠가서 보낼 수 있습니다. 그리고 그것을 열 수 있는 사람은 개인 키를 가진 받는 사람 하나뿐입니다. 다만 이것은 비밀 메시지를 보낼 때의 이야기이고, 전자 서명에서는 보내는 사람이 자기 개인 키를 씁니다.

그래서 「대칭 키 암호」 절의 두 문제가 풀립니다. 미리 만나서 키를 건넬 필요가 없고, 사람이 늘어도 각자 자기 키 한 쌍만 가지면 됩니다. 열 명이 서로 이야기해도 마흔다섯 개가 아니라 열 쌍이면 충분합니다.

그렇다고 대칭 키를 대신하지는 못합니다

문제를 다 푼 것처럼 보이니 「그럼 비대칭 키만 쓰면 되겠다」고 여기기 쉽습니다. 그러나 비대칭 키 암호는 계산이 훨씬 무겁고 느립니다. 영상 한 편이나 큰 파일 전체를 이 방식으로 암호화하면 기다리기 어려울 만큼 오래 걸립니다.

둘 중 어느 쪽이 더 우수한 방식이 아닙니다. 대칭 키는 빠르지만 키를 건네기 어렵고, 비대칭 키는 키를 건네기 쉽지만 느립니다. 서로가 못 하는 것을 상대가 합니다.

스스로 확인

내가 친구에게 비밀 메시지를 보내려고 합니다. 누구의 어떤 키로 잠가야 할까요? 내 공개 키로 잠그면 어떻게 될지도 함께 생각해 보세요.

함께 쓰기

실제 인터넷에서는 두 방식을 이어서 씁니다. 생각해 보면 답은 뻔합니다. 비대칭 키는 느리지만 키를 건네는 데는 문제가 없고, 대칭 키는 키만 건네받으면 빠릅니다. 그러니 비대칭 키로 대칭 키를 건네고, 그 뒤로는 대칭 키로 주고받으면 됩니다.

누리집에 안전하게 접속할 때 벌어지는 일 (실제로는 단계가 더 많고 방식도 여러 가지이며, 여기서는 뼈대만 보인다)
차례 하는 일 쓰는 방식
1 내 기기가 누리집에 접속하면, 누리집이 자기 공개 키를 보내 준다 —
2 내 기기가 이번에만 쓸 대칭 키를 하나 새로 만든다 —
3 그 대칭 키를 누리집의 공개 키로 잠가서 보낸다 비대칭 키
4 누리집이 자기 개인 키로 열어 대칭 키를 꺼낸다. 이제 둘만 같은 키를 가졌다 비대칭 키
5 그 뒤로 오가는 모든 데이터를 그 대칭 키로 잠그고 연다 대칭 키

비대칭 키는 3·4단계에서 딱 한 번 쓰입니다. 건네는 것이 대칭 키 하나뿐이라 느려도 티가 나지 않습니다. 그 뒤로 오가는 수많은 데이터는 전부 빠른 대칭 키로 처리합니다.

주소창의 자물쇠가 이것입니다

누리집 주소가 https로 시작하고 주소창에 자물쇠 모양이 보인다면(브라우저에 따라 다른 모양으로 보이기도 합니다), 지금 표의 차례를 마치고 대칭 키로 주고받는 중이라는 뜻입니다. http라면 그 과정이 없어 오가는 내용이 그대로 지나갑니다.

다만 자물쇠 표시는 「오가는 길이 암호화되어 있다」는 뜻일 뿐입니다. 그 누리집이 믿을 만한 곳인지, 내가 넘긴 정보를 잘 지켜 줄지는 알려 주지 않습니다. 이 암호화는 오가는 길만 지킬 뿐, 양 끝인 내 기기와 누리집 안까지 지켜 주지는 않습니다.

스스로 확인

2단계에서 대칭 키를 접속할 때마다 새로 만드는 까닭은 무엇일까요? 한 번 만들어 계속 쓰면 무엇이 위험해질지 생각해 보세요.

우리 곁의 암호

암호화는 옛날에 전쟁터에서 쓰던 기술로 여겨지기 쉽지만, 지금은 하루에도 여러 번 우리 곁에서 돌아가고 있습니다. 다만 잘 돌아갈 때는 아무것도 보이지 않기 때문에 알아채기 어려울 뿐입니다.

일상에서 암호화가 일하고 있는 곳
쓰이는 곳 무엇을 지키는가
누리집 접속 주소창의 자물쇠. 내가 입력한 검색어와 로그인 정보가 오가는 길에서 읽히지 않게 한다
메신저 대화 주고받는 메시지가 오가는 길에서 읽히지 않게 한다. 메신저에 따라서는 중간을 맡은 회사의 컴퓨터도 읽지 못하게 한다
스마트폰 잠금 기기를 잃어버려도 저장된 사진과 기록을 남이 꺼내 볼 수 없게 한다
무선 네트워크 접속 공기 중으로 퍼지는 전파를 옆에서 받아도 내용을 알 수 없게 한다
전자 서명 이 문서를 정말 그 사람이 보냈는지, 중간에 고쳐지지 않았는지 확인하게 한다

「전자 서명」 줄을 눈여겨보세요. 지금까지 암호화를 감추는 일로만 보았는데, 확인하는 일에도 쓰입니다. 개인 키는 주인만 가지고 있으므로, 그 키가 새지 않았다면 그 키로 처리한 흔적이 남아 있을 때 「주인이 한 일이 맞다」는 근거가 됩니다. 무선 네트워크는 전파가 사방으로 퍼진다는 약점이 있는데, 「무선 네트워크 접속」 줄의 암호화가 그 약점을 막습니다.


그러면 우리가 할 수 있는 일은 무엇일까요. 암호를 직접 만드는 일은 전문가의 몫이지만, 암호가 기대고 있는 것을 무너뜨리지 않는 일은 우리 몫입니다.

키를 지킨다

우리가 쓰는 비밀번호가 키 역할을 합니다. 짐작하기 쉬운 값으로 정하거나 여러 곳에 같은 것을 쓰면, 아무리 튼튼한 암호를 써도 소용이 없습니다.

양 끝을 살핀다

주고받는 길의 암호화는 가운데 구간만 지켜 줍니다. 내 기기에 이상한 프로그램이 깔려 있거나 화면을 남이 몰래 볼 수 있으면 그 앞에서 무너집니다.

자물쇠를 확인한다

중요한 정보를 넣기 전에 주소가 https인지 봅니다. 다만 자물쇠가 있다고 그 누리집을 믿어도 된다는 뜻은 아닙니다.

암호화에는 다른 쪽 이야기도 있습니다

암호화가 강해질수록 개인의 사생활은 잘 지켜집니다. 그런데 같은 기술이 범죄에 쓰일 때도 똑같이 강합니다. 그래서 수사가 필요할 때 정해진 절차를 밟으면 열어 볼 수 있게 해야 한다는 주장과, 그런 길을 한 번 만들면 결국 누구든 쓸 수 있는 구멍이 된다는 주장이 오랫동안 맞서 왔습니다.

두 원칙이 부딪히는 딜레마입니다. 부딪히는 것은 옳은 것과 그른 것이 아니라 지켜야 할 원칙 둘입니다. 어느 쪽을 고르든 내려놓는 것이 있고, 정해진 답은 없습니다. 여러분이 할 일은 각 선택이 무엇을 지키고 무엇을 내려놓는지 아는 채로 자기 판단을 세우는 것입니다.

스스로 확인

「정해진 절차를 밟으면 열어 볼 수 있는 길을 만들자」는 주장에 반대하는 쪽은 무엇을 걱정하는 것일까요? 그 걱정이 타당한지 자기 생각을 적어 보세요.

핵심 정리

현대 암호화 기법

  • 키를 사람이 셀 수 없을 만큼 늘려 다 해 보기를 막는다.
  • 여러 값을 묶어 여러 번 섞어 평문의 모양이 남지 않게 한다.
  • 나누는 기준은 「암호화 키와 복호화 키가 같은가」다.

대칭 키 암호

  • 잠글 때와 열 때 같은 키를 쓴다. 계산이 단순해 빠르다.
  • 미리 같은 키를 나눠 가져야 하는데, 그 키를 안전하게 건네기가 어렵다.
  • 사람이 늘어나면 필요한 키의 수가 크게 늘어난다.

비대칭 키 암호

  • 비밀 메시지를 보낼 때는 공개 키로 잠그고 개인 키로 연다. 이때 두 키 다 받는 사람의 것이다.
  • 미리 만나 키를 건넬 필요가 없고, 각자 한 쌍만 가지면 된다.
  • 계산이 무거워 느리다. 대칭 키보다 우수한 방식이 아니다.

함께 쓰기와 활용

  • 비대칭 키로 대칭 키를 한 번 건네고, 그 뒤로는 대칭 키로 빠르게 주고받는다.
  • 주소창의 자물쇠가 그 결과다. 다만 그 누리집을 믿어도 된다는 뜻은 아니다.
  • 암호화는 감추는 일뿐 아니라 「그 사람이 맞다」를 확인하는 일에도 쓰인다.

확인 퀴즈

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

Q1

대칭 키 암호와 비대칭 키 암호를 나누는 기준은?

Q2

친구에게 비밀 메시지를 보내려고 합니다. 무엇으로 잠가야 할까요?

Q3

누리집에 안전하게 접속할 때 비대칭 키 암호가 쓰이는 단계는?

Q4

주소창에 자물쇠 표시가 있는 누리집에 대한 설명으로 알맞은 것은?