1064. ESNI (TLS 1.3 평문 노출 보안) 및 ECH - Encrypted Client Hello HTTPS SNI 필터링 우회 방통위 차단 무력화 인터넷 프라이버시 기술
핵심 인사이트: (1063번 DoH 심화) 1063번에서 DoH 흑마법으로 주소 묻는 과정(DNS)을 다 암호화했다 치자. 그래서 폰이
www.porn.com의 진짜 IP 주소를 몰래 받아왔다. 이제 그 야동 서버(IP)에 진짜로 통신을 연결하려고 HTTPS(TLS 1.2) 터널을 뚫는 찰나! "저기요! 문 좀 열어주세요, 저www.porn.com손님이에요!"라고 서버한테 폰이 첫 인사를 건넬 때(Client Hello), 암호화 키를 교환하기도 전이라 이 '인사말 문자열(도메인 이름)'이 허공에 쌩얼(평문)로 떡하니 노출되어 날아간다. 방통위 검열 장비가 이걸 보고 "잡았다 요놈!" 하고 차단 때린 게 한국의 SNI 차단 사태다. "야! 암호 터널 뚫기 전 첫인사말(SNI)마저도 서버의 공개키로 미리 암호화해서 쏴버려! 밖에서 까보면 그냥 쓰레기 문자로 보이게!" 1%의 빈틈마저 지워버린 완벽한 밀실, ECH(ESNI)다.
Ⅰ. HTTPS 암호화 통신의 마지막 구멍: SNI 평문 노출
- 488번에서 배운 TLS(HTTPS) 연결 시, 내 브라우저(클라이언트)는 서버와 암호화 비밀번호를 정하기 위해 첫 번째 악수 패킷인 Client Hello를 쏩니다.
- SNI (Server Name Indication)의 존재 이유: 클라우드 시대엔 IP 1대짜리 서버 안에 수천 개의 웹사이트(가상 호스팅)가 동시에 돌아갑니다. 내 브라우저는 서버에게 "나 IP 접속하긴 했는데, 네 안의 수천 개 사이트 중
www.porn.com사이트랑 대화하고 싶어"라고 방문 목적지(SNI 확장 필드)를 꼭 짚어줘야 합니다. - 치명적 결함: 암호 터널이 뚫리기 전 첫인사 단계이므로, 이 **SNI 문자열은 암호화되지 않은 평문(Plaintext)**으로 그냥 날아갑니다.
Ⅱ. 국가 검열의 칼날: SNI 필터링 (한국 방통위 차단 사태)
- 2019년, 한국 정부는 이 빈틈을 노렸습니다.
- 유저가 아무리 HTTPS로 암호화 통신을 하려 해도, 통신사(KT, SKT) 길목에 거대한 심층 패킷 감시(DPI) 장비를 세워두고, 지나가는 패킷의 첫인사(Client Hello) 껍데기만 쏙쏙 까봅니다.
- "어? SNI 필드에 적힌 글자가
warning.com이네? 방통위 불법 블랙리스트다!" 하고 TCP 연결(RST 패킷 주입)을 그 자리에서 콱 끊어버려 접속을 100% 막아버린 전설적인 인터넷 검열망입니다.
Ⅲ. 창과 방패의 대결: ESNI에서 ECH로의 진화 🌟 핵심 🌟
이 검열을 부수기 위해 IETF(인터넷 표준 기구)와 클라우드플레어가 반격에 나섰습니다.
1단계: ESNI (Encrypted SNI)의 시도와 실패
- 시도: 1063번 DoH로 안전하게 빼내 온 서버의 공개키를 이용해, 그 쌩얼 문자열(SNI)만 암호화해서 쏘자!
- 실패: "에이, SNI만 숨기면 뭐 해? Client Hello 패킷의 다른 찌꺼기 정보(암호화 스위트 등)를 보면 대충 어떤 사이트 가는지 유추할 수 있잖아!" 완벽하지 않아서 표준화에 실패합니다.
2단계: ECH (Encrypted Client Hello, TLS 1.3 핵심) 🌟 완성판 🌟
ESNI의 실패를 딛고 나온 궁극의 방패입니다. (현재 크롬 브라우저 등에 도입 시작)
- 개념: 찌질하게 SNI(이름표) 1개만 암호화하는 게 아니라, 첫인사 패킷(Client Hello)에 담긴 보안에 민감한 모든 정보 전체를 통째로 캡슐화하여 클라우드플레어 같은 앞단 서버의 공개키로 암호화(HPKE)해버리는 미친 스텔스 기술입니다.
- 작동 원리 (가짜 얼굴 내밀기):
- 폰이
www.porn.com(진짜 가고 싶은 곳, 숨김)에 가고 싶습니다. - 패킷 겉면 SNI에는 가짜로
www.cloudflare.com(합법적인 대형 CDN 얼굴마담)이라고 평문으로 적습니다. (Outer Client Hello) - 진짜 목적지인
www.porn.com은 암호화된 속껍데기(Inner Client Hello) 안에 꽁꽁 숨깁니다. - 통신사 검열기가 까보면 "아, 클라우드플레어(CDN) 서버 가는구나~ 정상!" 하고 무사통과시킵니다.
- 패킷이 클라우드플레어 서버에 도착하면, 서버가 암호를 풀고 속껍데기를 꺼내 진짜 목적지인 야동 서버로 연결을 꺾어줍니다. 방통위의 SNI 필터링 장비를 완벽하게 쓰레기통에 처박아버린 위대한 프라이버시 혁명입니다.
- 폰이
Ⅳ. 제로 트러스트(1043번) 환경에서의 위협
- 유저 입장에선 프라이버시 만세지만, 회사 보안팀은 오열합니다. 직원이 회사 망에서 ECH를 켜고 악성코드 명령 서버(C&C)에 접속해도, 회사 방화벽(DPI)은 이게 악성 서버인지 클라우드플레어 서버인지 구분할 수 없어 사내 망 보안 가시성이 완벽히 장님이 되는 역효과를 낳고 있습니다.
📢 섹션 요약 비유: 기존 HTTPS(TLS 1.2) 통신은 거대한 **'검은색 방탄 리무진(암호화 터널)'**을 타고 적진을 돌파하는 것과 같습니다. 그런데 차에 타기 전에 길거리에서 운전기사에게 **"아저씨, '야동 사이트' 빌딩으로 갑시다!(SNI 평문 노출)"**라고 첫인사를 크게 외치고 타는 멍청한 짓을 했습니다. 길목을 지키던 정부 검열관(방통위 SNI 필터링)이 이 소리를 엿듣고 출발도 하기 전에 타이어를 터뜨려 버렸습니다. 이를 뚫기 위한 **ECH (Encrypted Client Hello, TLS 1.3)**는 아예 택시를 부를 때부터 **'클라우드플레어 대형 쇼핑몰 가주세요(가짜 합법 SNI)'**라고 위장해서 크게 소리칩니다. 검열관은 "쇼핑 가네~" 하고 통과시켜 줍니다. 하지만 기사님 손에 쥐여준 암호화된 쪽지(Inner Client Hello) 안에는 진짜 목적지인 "쇼핑몰 도착하면 뒷문으로 빠져서 야동 빌딩으로 꺾어주세요"라고 적혀 있습니다. 터널 뚫기 전의 단 1%의 목소리 노출마저 완벽한 이중 암호화와 가짜 얼굴마담 꼼수로 숨겨내어 국가의 감시망을 영원히 장님으로 만들어버린 인터넷 최후의 밀실 아키텍처입니다.