685. TLS 1.3 업그레이드 변화와 0-RTT / 1-RTT 성능 향상

핵심 인사이트: 스마트폰으로 네이버를 켤 때마다 하얀 화면이 1~2초씩 멈춰있는 이유는, 데이터를 받기 전에 서로 "안녕? 비밀번호 뭐로 할래?" 하며 인터넷 바다를 두세 번씩 왕복하는 무거운 '핸드셰이크(인사)' 과정 때문이었다. TLS 1.3은 이 구시대의 인사를 뜯어고쳐, 처음 본 사이트는 한 번 만에(1-RTT), 어제 본 사이트는 아예 인사도 생략하고 곧바로 데이터를 들이붓는(0-RTT) 기적의 다이어트 버전을 완성했다.

Ⅰ. TLS 1.3의 등장 배경 (10년 만의 대격변)

2008년에 나온 TLS 1.2는 10년 동안 너무 낡았습니다. 불필요하고 낡은 암호화 알고리즘이 덕지덕지 붙어있어 해킹 공격(DOWNGRADE, POODLE 공격 등)의 타겟이 되었고, 스마트폰 5G 시대에 맞지 않게 연결 속도(지연 시간)가 너무 느렸습니다. 이에 IETF는 2018년, 뼈대를 완전히 갈아엎은 **TLS 1.3 (RFC 8446)**을 발표했습니다.

Ⅱ. 핵심 변화 1: 군살 제거 (보안성 극대화)

해커들이 뚫고 들어올 만한 뒷문(낡은 알고리즘)을 자비 없이 모조리 삭제했습니다.

  • PFS(전방향 안전성) 강제: 684번 문서에서 배운 대로, 마스터키가 털려도 안전한 임시 키 교환 방식(DHE, ECDHE)만 남기고, 위험한 고정 RSA 키 교환 방식은 아예 퇴출했습니다.
  • AEAD 강제: 기밀성과 무결성을 동시에 해치우는 초고속 GCM, ChaCha20-Poly1305 모드만 남기고, 낡은 CBC 모드, RC4 스트림 암호, MD5, SHA-1 해시 함수는 100% 삭제해 버렸습니다.

Ⅲ. 핵심 변화 2: 폭발적인 성능 향상 (1-RTT와 0-RTT) 🌟

TLS 1.3이 현존 최고의 프로토콜이 된 이유입니다. 왕복 지연 시간(Round Trip Time)을 극단적으로 줄였습니다.

1. 1-RTT (처음 방문하는 사이트 접속 시)

  • 기존 TLS 1.2 (2-RTT): 클라이언트가 인사(1번) ➜ 서버가 인사 및 신분증 제시(2번) ➜ 클라이언트가 암호키 전달(3번) ➜ 서버가 확인(4번). 데이터를 받기 전까지 무려 2번을 왕복해야 했습니다.
  • TLS 1.3 (1-RTT): "어차피 요즘 다 ECDHE 키 교환 쓰는 거 아니까, 첫 인사(Client Hello) 할 때 암호키 만들 재료도 아예 같이 몽땅 싸서 한 방에 던질게!"
  • 클라이언트가 첫 패킷에 필요한 걸 다 담아 쏘면, 서버도 즉시 세션키를 뚝딱 만들어서 바로 "오케이, 이제 암호화 통신 시작!" 하며 응답합니다. 딱 **한 번의 왕복(1-RTT)**만으로 0.1초 만에 보안 터널이 뚫립니다.

2. 0-RTT (어제 갔던 사이트에 다시 접속 시) 🌟

  • 개념: 어제 접속했던 네이버(재방문)에 다시 접속할 때, 브라우저가 어제 발급받아 쟁여둔 '임시 티켓(PSK)'을 기억해 냅니다.
  • 동작: "어제 썼던 그 티켓으로 암호화할게!"라며, 아예 인사조차 생략하고 첫 번째 패킷(Client Hello)에다가 바로 네이버 검색어 데이터(HTTP Payload)를 암호화해서 함께 쑤셔 넣어 쏴버립니다.
  • 효과: 왕복 지연 시간 제로(0-RTT). 일반 HTTP 평문 접속과 완전히 똑같은 속도로 미친 듯이 렌더링 화면이 뜹니다.
  • (※ 단, 0-RTT 패킷을 훔친 해커가 다시 쏘는 재생 공격(Replay Attack)의 위험이 있어, 은행 계좌 이체 등 치명적인 요청에는 쓰지 않고 단순 웹페이지 조회용으로만 허용합니다.)

📢 섹션 요약 비유: TLS 1.2가 택배(데이터)를 시킬 때 "사장님 계세요? -> 네 -> 무슨 박스 쓰실래요? -> 우체국 5호 박스요 -> 자물쇠 비밀번호는 이걸로 하죠 -> 네 알겠습니다"라고 4번의 편지를 주고받아야(2-RTT) 비로소 택배가 출발하는 피곤한 방식이었다면, TLS 1.3(1-RTT)은 "사장님 5호 박스에 비밀번호 1234로 지금 당장 시작합시다!"라고 1번 만에 끝냅니다. 더 놀라운 0-RTT는 어제 샀던 단골집에 말도 안 걸고 "어제 그 비밀번호로 치킨 1마리 바로 쏴주세요!"라고 돈과 주문을 첫 마디에 바로 찔러넣는 궁극의 단골 패스(Fast-pass) 기술입니다.