680. OCSP Stapling (TLS Handshake 캐시 개선 기법)
핵심 인사이트: 브라우저(나)가 경찰청(CA)에 "저 사이트 안전해?" 하고 물어보려니(OCSP) 통신이 버벅거리고, 경찰청이 내가 접속한 야한 사이트 기록을 다 훔쳐보는 최악의 부작용이 터졌다. 천재들이 아이디어를 냈다. "내가 물어볼 필요 없이, 웹서버(사이트 주인)가 알아서 아침마다 경찰청에 가서 '저 안 털렸습니다'라는 확인 도장을 받아와서 쟁여놓고 있다가, 내가 접속할 때 인증서랑 그 도장을 호치키스(Stapling)로 딱 찍어서 같이 주면 안 되나?" 이것이 사생활과 속도를 모두 구원한 스테이플링 마법이다.
Ⅰ. 기존 OCSP의 한계 요약 (왜 이걸 버려야 했나?)
앞선 문서에서 배운 일반적인 OCSP 통신은 클라이언트(내 폰)가 직접 CA(인증기관) 서버에 질의를 날렸습니다. 이로 인해 1) 클라이언트의 접속 대기 시간(Latency) 급증, 2) CA 서버의 어마어마한 트래픽 과부하(DDoS급 병목), 3) 클라이언트의 웹서핑 접속 기록(프라이버시)이 CA에 고스란히 노출되는 세 가지 치명타를 입었습니다.
Ⅱ. OCSP Stapling (스테이플링)의 개념과 동작 원리 🌟
-
개념: 클라이언트가 CA에 질의하는 귀찮은 과정을 생략시키기 위해, 웹 서버(네이버 등 사이트 주인)가 주기적으로 미리 CA 서버에 접속해 자신의 '무결성 증명서(OCSP 응답)'를 받아 서버 캐시(메모리)에 쟁여두었다가, 클라이언트가 최초 접속(TLS Handshake)할 때 인증서와 함께 호치키스(Staple)로 찍어서 한꺼번에 묶어 보내주는 획기적인 트래픽/성능 개선 프로토콜입니다. (표준명: TLS Certificate Status Request 확장)
-
동작 원리 시나리오:
- 사전 준비 (웹 서버 ➜ CA): 네이버 웹 서버가 1시간에 한 번씩 미리 CA 서버에 핑을 때려 "나 안 털렸지?" 하고 묻고, CA의 전자서명이 쾅 찍힌 싱싱한 'Good(정상)' 영수증(OCSP 응답)을 발급받아 캐시에 임시 저장해 둡니다.
- 클라이언트 접속 (클라이언트 ➜ 웹 서버): 내 컴퓨터가 네이버에 접속하며 헬로(ClientHello)를 날립니다.
- 스테이플링 전송 (웹 서버 ➜ 클라이언트): 네이버 서버는 굳이 클라이언트가 경찰청에 묻게 놔두지 않고, 자신의 인증서를 줄 때 아까 받아둔 'Good 영수증'을 호치키스(Stapling)로 딱 묶어서 한 덩어리로 내 컴퓨터에 던져줍니다.
- 검증 완료: 내 컴퓨터는 영수증에 찍힌 CA의 암호화 도장(전자서명)을 보고 조작되지 않은 진짜 영수증임을 1초 만에 확인하고 안심하고 접속합니다.
Ⅲ. Stapling이 가져온 3대 마법적 효과 🌟
기존 OCSP의 단점을 완벽하게 씹어 먹으며 최신 웹 브라우저 통신의 대세가 되었습니다.
- 성능 폭발 (Zero Latency): 내 브라우저가 외부의 CA 서버를 거칠 필요가 없어져 DNS 조회나 왕복 통신 시간이 사라집니다. 사이트 화면이 0.1초라도 빨리 팍팍 뜹니다.
- CA 서버 생존: 수십억 명의 네티즌이 쏘던 질의가 사라지고, 오직 웹 서버 1대가 1시간에 한 번씩만 점검하러 오므로 CA 서버 트래픽 비용이 99% 삭감됩니다.
- 프라이버시 철벽 방어: 내 컴퓨터가 CA 서버와 아예 연결을 맺지 않으므로, CA(미국 기업 등)는 내가 어느 동네에서 어떤 사이트를 보고 있는지 절대로 추적(감시)할 수 없게 되었습니다.
Ⅳ. Must-Staple 확장 (보안의 완성)
해커가 네이버 서버를 털어 가짜 사이트를 만들었습니다. 가짜 사이트는 'Good 영수증'을 발급받을 수 없으니, 아예 영수증을 호치키스로 안 찍어서(Stapling 생략) 폰에 던져줍니다. 그러면 폰 브라우저는 "어, 영수증 안 왔네. 걍 Soft-fail로 넘어가 주지 뭐" 하고 접속을 허용하는 버그가 있었습니다.
- 이를 막기 위해 인증서에 아예 **"나는 무조건 Stapling 영수증을 첨부하는 서버니까, 만약 내 인증서에 영수증이 안 붙어오면 절대 접속시켜주지 마! (Must-Staple)"**라는 문구를 하드코딩해 박아 넣는 확장 기능이 적용되고 있습니다.
📢 섹션 요약 비유: OCSP 스테이플링은 고급 식당의 '신선도 증명서'입니다. 예전엔 손님(브라우저)이 메뉴판(인증서)을 볼 때마다 밖으로 뛰어나가 구청 위생과(CA)에 전화해서 "이 식당 안 썩었나요?" 물어보고 들어오느라(일반 OCSP) 밥맛이 다 떨어졌습니다. 스테이플링 방식은 식당 주인이 아침 일찍 구청에 가서 '오늘 자 위생 통과 증명서'를 떼어온 뒤, 손님이 들어오면 메뉴판에 그 증명서를 호치키스로 딱 찍어서 같이 보여주는 것입니다. 손님은 전화할 필요 없이 그 자리에서 안심하고 가장 빠르게 밥을 먹을 수 있습니다.