seegongsik
내 단어장
네트워크

엿보지 못하게 잠그기, HTTPS

엽서에 비밀번호를 적어 보낸다고 생각해봐요. 우체국을 거치는 누구든 슬쩍 읽을 수 있죠. 보통 HTTP가 딱 그래요. 주고받는 내용이 길 위에서 그대로 보여요. 그런데 어떻게 카드 번호를 인터넷으로 안심하고 보낼까요? 그 비밀이 HTTPS예요.

01

중간에서 엿봐요

지난 강에서 봤듯이
HTTP는 요청과 응답을 주고받는 약속이에요.
그런데 그 내용은
글자 그대로 길 위를 지나가요.
중간에 있는 누구든
슬쩍 들여다보면 다 읽혀요.
비밀번호도, 카드 번호도요.
엽서를 부치는 것과 같아요.
거치는 사람마다 읽을 수 있죠.

>
PW: 1234
#
사이트
길 위 '중간 사람'을 눌러 엿봐요

평문 HTTP로 보낸 메시지를 길 위 '중간 사람'을 눌러 엿봐요. 비밀이 그대로 읽혀요.

엿보였다는 걸 알았어요.
내용이 길 위에 그대로 드러나니까요.
그럼 어떻게 막을까요?
길을 막거나 중간 사람을 없앨 수는 없어요.
인터넷은 원래 여러 손을 거치거든요.
그래서 발상을 바꿔요.
보여도 못 읽게 만들면 돼요.
내용을 자물쇠로 잠그는 거예요.
그게 다음 이야기예요.

02

자물쇠로 잠가요

해결의 첫걸음은 잠그기예요.
보내기 전에 내용을 뒤섞어
알아볼 수 없게 만들어요.
이걸 암호화라고 불러요.
잠긴 내용은 글자가 뒤죽박죽이라
중간 사람이 봐도 뜻을 모르겠죠.
받는 쪽만 그걸 풀어 원래 글로 되돌려요.
엽서를 잠긴 상자에 넣어 보내는 셈이에요.
상자를 봐도 안은 못 보죠.

중간 사람읽힘
메시지를 눌러 자물쇠로 잠가요(암호화)

메시지를 눌러 자물쇠로 잠가요(암호화). 잠그면 글자가 뒤죽박죽이라 중간 사람이 봐도 못 읽어요.

잠그니 중간 사람이 봐도 못 읽어요.
안심이 되죠.
그런데 한 가지 어려운 점이 있어요.
잠근 걸 받는 쪽이 풀어야 하잖아요.
그러려면 푸는 열쇠를 건네야 해요.
그런데 그 열쇠를 길 위로 보내면
중간 사람이 열쇠까지 가져가버려요.
잠가놓고 열쇠를 같이 보내는 셈이죠.
이 딜레마를 어떻게 풀까요?

03

자물쇠는 나눠, 열쇠는 나만

기발한 해법이 있어요.
자물쇠와 여는 열쇠를 갈라놓는 거예요.
자물쇠는 누구나 가져가서
채울 수만 있어요. 이걸 공개키라 해요.
그걸로 잠근 건 오직 내 비밀키로만 열려요.
그래서 자물쇠는 길에 뿌려도 괜찮아요.
잠그기만 할 뿐 못 여니까요.
받는 사람이 보낸 자물쇠로 잠가 보내면
그 사람의 비밀키로만 풀려요.

[ ]PW: 1234
먼저 받는 쪽이 준 공개키(자물쇠)로 잠가요

받는 쪽이 공개키(자물쇠)를 줘요. 그 자물쇠로 잠가 보내면, 그 사람의 비밀키로만 열려요. 중간 사람의 열쇠로는 안 열려요.

이제 열쇠 딜레마가 풀렸어요.
자물쇠는 마음껏 나눠 줘도 되고,
여는 비밀키는 내 손에만 있으니까요.
중간 사람이 자물쇠를 주워도
잠그기만 할 뿐 풀지는 못해요.
그런데 아직 한 가지가 남았어요.
내게 자물쇠를 건넨 그 상대,
정말 내가 찾던 그 사이트가 맞을까요?
가짜가 자물쇠를 내밀었다면요?

04

진짜인지 확인해요

마지막 조각은 신원 확인이에요.
사이트는 자물쇠와 함께
인증서라는 신분증을 같이 내밀어요.
믿을 만한 곳이 발급한 증명서죠.
받는 쪽은 그 인증서를 보고
'아, 정말 그 사이트가 맞구나' 확인해요.
가짜 사이트는 그런 증명서를 못 내밀어요.
그래서 인증서가 안 맞으면
경고가 떠서 우리를 멈춰 세워요.

[?]
mybank.com
[?]
rnybank.com
각 사이트의 인증서를 눌러 진짜인지 확인해요

두 사이트가 인증서를 내밀어요. 각각을 눌러 진짜인지 확인해요. 진짜는 통과, 가짜는 경고가 떠요.

이제 다 갖췄어요.
내용은 자물쇠로 잠가 못 읽게 하고,
여는 비밀키는 나만 갖고,
상대가 진짜인지 인증서로 확인해요.
이 셋이 모이면
중간에 누가 있어도 안심이에요.
봐도 못 읽고, 가짜는 들통나니까요.
주소창의 자물쇠 표시가
바로 이 약속이 켜져 있다는 뜻이에요.

05

정리해볼까요

한 줄로 모으면 이래요.
보통 HTTP는 평문이라 중간에서 다 보여요.
HTTPS는 내용을 자물쇠로 잠가요(암호화).
자물쇠인 공개키는 누구에게나 나눠 주고,
잠근 건 오직 내 비밀키로만 열어요.
인증서로 상대가 진짜인지도 확인하고요.
그래서 카드 번호도 안심하고 보내죠.
HTTPS는 네트워크 여정의 마지막 잠금이에요.

핵심을 차례로 눌러 되짚어봐요

핵심을 차례로 눌러 되짚어봐요. (평문은 엿보임 → 자물쇠로 잠금 → 자물쇠는 나눠 비밀키는 나만 → 인증서로 진짜 확인)

여기까지가 네트워크 이야기예요.
무엇이 네트워크인지부터
패킷, 길 찾기, 주소, 믿음직한 전달,
그리고 엿보지 못하게 잠그기까지 왔어요.
작은 글자 하나가 인터넷을 건너
빠짐없이, 제대로, 안전하게 닿는
그 모든 약속을 함께 봤어요.
수고했어요. 이제 인터넷을 볼 때
그 뒤의 약속들이 보일 거예요.

한 줄 정리보통 HTTP는 내용이 평문이라 중간에서 누구나 엿볼 수 있어요. HTTPS는 내용을 자물쇠로 잠가(암호화) 중간에서 봐도 뒤죽박죽이라 못 읽게 해요. 핵심 아이디어는 두 가지예요. 하나, 공개키라는 자물쇠는 누구에게나 나눠 주되 그걸로 잠근 건 오직 내 비밀키로만 열려요. 둘, 인증서로 상대가 진짜 그 사이트인지 먼저 확인해요. 그래서 카드 번호도 인터넷으로 안심하고 보낼 수 있어요. 그게 HTTPS예요.
네트워크
이 페이지가 도움 됐다면 후원하기