모든 게 모이는 자물쇠, HTTPS
브라우저 주소창에 작은 자물쇠 그림을 본 적 있죠. 그게 HTTPS예요. 네트워크 영역에서는 그 자물쇠가 어떻게 작동하는지 흐름을 봤어요. 여기서는 한 걸음 더 들어가요. 그 자물쇠는 왜 안전한 걸까요? 사실 이 자물쇠 안에는 이 영역에서 배운 것들이 전부 모여 있어요. 인증서로 진짜 사이트인지 확인하고, 공개키로 빠른 열쇠를 안전하게 나누고, 그 열쇠로 내용을 잠가요. 세 고리가 하나로 닫히면서 안전해지는 거예요.
어떻게가 아니라 왜 안전한가
네트워크 영역에서도 HTTPS를 만났어요.
그때는 어떻게 작동하는지 흐름을 봤죠.
요청이 가고 응답이 오고
그 사이에 자물쇠가 걸린다고요.
여기서는 같은 자물쇠를 다르게 봐요.
흐름이 아니라 안전의 이유를 봐요.
그 작은 자물쇠가 왜 믿을 만한지
속을 열어 들여다보는 거예요.
사실 그 안에는
이 영역에서 배운 것들이 다 모여 있어요.
두 관점을 눌러 견줘봐요. 네트워크는 흐름(어떻게), 여기는 안전의 이유(왜)를 봐요.
두 관점이 나란히 보였죠.
흐름은 동작의 순서를 알려줘요.
이유는 그 동작을 믿어도 되는 근거를 알려줘요.
둘 다 필요하지만 오늘 주인공은 이유예요.
그 이유는 하나가 아니라 세 가지예요.
첫째, 상대가 진짜인지 확인하기.
둘째, 열쇠를 안전하게 나누기.
셋째, 그 열쇠로 내용을 잠그기.
이 세 가지가 차례로 닫혀야
자물쇠가 진짜로 잠겨요.
진짜 사이트인지 확인해요
첫 번째 고리는 확인이에요.
자물쇠를 걸기 전에 물어야 할 게 있어요.
나는 지금 진짜 그 사이트와 이야기하나?
혹시 진짜인 척하는 가짜는 아닐까?
여기서 인증서가 등장해요.
인증서 강에서 봤듯이
믿을 만한 기관이 사이트의 신분을 보증해요.
브라우저는 그 보증서를 확인하고
진짜라고 판단되면 다음 단계로 가요.
가짜라면 거기서 멈추고 경고를 띄워요.
사이트의 인증서를 눌러 확인해봐요. 보증이 맞으면 통과, 가짜면 멈추고 경고가 떠요.
보증이 맞을 때만 초록으로 통과했죠.
맞지 않을 때는 빨갛게 멈췄고요.
이게 위장을 막는 고리예요.
아무리 똑같이 생긴 가짜라도
믿을 만한 기관의 보증까지 흉내 낼 수는 없어요.
그래서 첫 단추가 진짜에게만 끼워져요.
하지만 진짜인 걸 확인했다고
대화가 곧바로 안전해지는 건 아니에요.
이제 둘만의 열쇠를 안전하게 나눠야 해요.
다음 고리로 가요.
열쇠를 안전하게 나눠요
두 번째 고리는 열쇠 나누기예요.
빠른 대칭키 하나를 둘이 똑같이 가져야 해요.
그래야 그걸로 빠르게 내용을 잠그니까요.
그런데 그 열쇠를 어떻게 안전하게 나눌까요?
여기서 공개키가 일을 해요.
키 교환 강에서 봤던 그 방법이에요.
상대의 공개키로 비밀 열쇠를 감싸 보내거나
둘이 함께 같은 비밀을 만들어 가져요.
엿보는 사람은 그 비밀을 못 만들어요.
그렇게 둘만 같은 대칭키를 갖게 돼요.
단계를 차례로 눌러 열쇠 나눔을 시연해봐요. 공개키로 감싸 보내면 엿보는 사람은 못 풀어요.
단계를 따라가니 둘만 같은 열쇠를 갖게 됐죠.
중간에서 엿보던 사람은 빈손이에요.
공개키로 감싼 걸 풀 개인키가 없으니까요.
이게 키를 몰래 배송하지 않고도
안전하게 나누는 방법이에요.
비밀 열쇠를 직접 부치지 않았는데
결과적으로 둘만 그 열쇠를 갖게 됐어요.
이제 둘 손에 같은 빠른 열쇠가 쥐어졌어요.
드디어 그 열쇠로 진짜 대화를 잠글 차례예요.
세 번째 고리로 가요.
세 고리가 닫혀요
세 번째 고리는 잠그기예요.
둘만 가진 대칭키로 내용을 암호화해요.
그러면 오가는 내용을 엿봐도 알아볼 수 없어요.
게다가 내용이 도중에 바뀌지 않았는지도 확인해요.
무결성이라고 부르는 그 확인이에요.
누가 한 글자라도 손대면 표시가 어긋나
받는 쪽이 바로 알아채요.
이제 세 고리를 한자리에 모아봐요.
확인, 키 나눔, 암호화.
이 셋이 함께 닫혀야 자물쇠가 잠겨요.
세 고리를 차례로 닫아봐요. 셋이 다 닫히면 엿보기, 위조, 위장이 모두 막혀요. 하나라도 비면 안 잠겨요.
세 고리가 다 닫히니 자물쇠가 잠겼죠.
엿보기는 암호화가 막고
위조는 무결성 확인이 막고
위장은 인증서 확인이 막아요.
세 위협마다 그걸 막는 고리가 짝지어 있어요.
하나라도 빠지면 자물쇠는 안 잠겨요.
인증만 하고 암호화를 안 하면 엿보기가 뚫리고
암호화만 하고 인증을 안 하면 가짜와 안전히 대화하는 셈이죠.
그래서 셋이 함께여야 의미가 있어요.
주소창의 작은 자물쇠는 바로 이 셋이 다 닫혔다는 신호예요.
정리해볼까요
한 줄로 모으면 이래요.
HTTPS는 이 영역의 모든 게 모이는 자물쇠예요.
네트워크에서는 흐름을 봤고, 여기서는 왜 안전한지를 봤어요.
안전은 세 고리가 닫혀서 와요.
인증서로 진짜 사이트를 확인하고,
공개키로 빠른 대칭키를 안전하게 나누고,
그 대칭키로 내용을 암호화하고 무결성을 확인해요.
위장, 엿보기, 위조를 고리마다 하나씩 막아요.
셋이 함께 닫혀야 자물쇠가 잠겨요.
주소창의 작은 자물쇠는 그 세 고리가 다 닫혔다는 신호예요.
핵심을 차례로 눌러 되짚어봐요. (왜 안전 -> 인증서 확인 -> 열쇠 안전 교환 -> 세 고리가 닫힘)
이제 그 작은 자물쇠가 다르게 보일 거예요.
그건 단순한 그림이 아니라
세 고리가 모두 닫혔다는 약속이에요.
인증서로 상대를 확인하고
공개키로 열쇠를 안전하게 나누고
대칭키로 내용을 잠근다는 약속이요.
이 영역에서 하나씩 배운 조각들이
바로 여기서 한 자물쇠로 맞물렸어요.
다음 강에서는 자물쇠 너머에 남는 위험,
사람을 노리는 속임수를 함께 살펴봐요.