xchat.

XChat의 엔드투엔드 암호화는 어떻게 작동하는가

메시징 앱에서 엔드투엔드 암호화가 실제로 어떤 의미를 갖는지 쉬운 말로 풀어 설명합니다.

엔드투엔드 암호화는 제대로 된 설명 없이 여기저기 자주 등장하는 말 중 하나다. XChat 같은 앱에서 이 말이 실제로 무엇을 의미하는지 짚어보자.

XChat에서 메시지를 보내면, 휴대폰 속 앱이 메시지가 기기를 떠나기 전에 먼저 그것을 암호화한다. 암호를 풀 수 있는 키는 오직 발신자와 수신자의 휴대폰에만 존재한다. 메시지는 암호화된 상태로 X Corp의 서버를 거쳐 전달된다. 서버 입장에서는 누가 누구에게 메시지를 보냈다는 사실까지는 알 수 있다 — 메시지를 전달하려면 어쩔 수 없다 — 하지만 그 내용 자체는 들여다볼 수 없다.

이는 네트워크를 지나가는 동안에만 메시지를 보호하는 “전송 중 암호화(encryption in transit)“와는 다른 이야기다. 서버에 저장된 데이터를 보호하는 “저장 시 암호화(encryption at rest)“와도 다르다. 엔드투엔드 암호화가 이 둘보다 더 강한 이유는 단순하다. 서버가 키를 쥐지 않기 때문이다.

실제로는 이런 의미다. X Corp가 당신의 XChat 메시지를 읽고 싶어 한다고 해도 — 정부의 압력 때문이든, 소환장에 대한 대응이든, 그 밖의 어떤 이유에서든 — 읽을 수 없다. 암호 기술 자체가 그것을 가로막는다. 메시지를 들여다볼 수 있는 유일한 방법은 대화에 참여한 휴대폰 가운데 하나를 직접 손에 넣는 것뿐이다.

여기에 작은 단서가 하나 붙는다. 암호화가 보호하는 것은 메시지의 내용이지, 메타데이터가 아니다. 누구와, 언제, 얼마나 자주 대화했는지는 보호 대상에서 빠진다. 그런 정보는 서비스가 메시지를 전달하는 데 반드시 필요하고, 모든 암호화 메신저가 결국 어느 정도 흔적을 남기게 되는 지점이기도 하다.

Signal이나 WhatsApp을 써본 적이 있다면, 이 구조는 낯설지 않게 다가올 것이다. 바탕에 깔린 암호 기법도 크게 다르지 않다.