← 목록으로
보안·개인정보
#TLS#TLS1.3#핸드셰이크#전방향비밀성#HTTPS
최종 업데이트 · 2026-10-03

TLS(전송계층 보안)와 TLS 1.3 핸드셰이크

1. 개요

가. 정의 및 등장 배경

TLS(Transport Layer Security, 전송계층 보안)는 TCP와 같은 신뢰성 있는 전송 계층 위에서 두 통신 주체 사이에 기밀성·무결성·인증을 제공하는 암호 프로토콜이며, 과거 넷스케이프가 만든 SSL(Secure Sockets Layer)을 IETF가 표준화하여 발전시킨 규격이다. 요약하면 TLS는 "상대가 진짜 그 서버가 맞는지(인증)를 공개키 인증서로 확인하고, 그 과정에서 안전하게 나눈 세션키로 이후 데이터를 암호화(기밀성)하며, 메시지 변조를 검출(무결성)"하게 해 주는 애플리케이션과 전송계층 사이의 보안 계층이다. 오늘날 HTTPS의 'S', 즉 웹·API·메일·VPN의 암호화는 사실상 모두 TLS 위에서 동작한다.

TLS가 등장한 근본 배경은 '인터넷의 기반 프로토콜인 TCP/IP가 평문(plaintext) 전송을 전제로 설계되었다'는 데 있다. 초기 웹에서는 로그인 비밀번호·신용카드 번호가 그대로 네트워크를 흘러 다녔고, 중간자(man-in-the-middle)가 패킷을 가로채면 그대로 노출되었다. 1994년 넷스케이프가 SSL 2.0을 내놓았으나 설계 결함이 많아 곧 SSL 3.0(1996)으로 교체되었고, 1999년 IETF가 이를 기반으로 TLS 1.0(RFC 2246)을 표준화하면서 상표·거버넌스가 중립화되었다. 이후 TLS 1.1(2006), TLS 1.2(2008, RFC 5246)를 거쳐 10년 만에 TLS 1.3(2018, RFC 8446)이 제정되었다. 1.3은 단순한 버전업이 아니라 그간 누적된 취약점(BEAST·POODLE·다운그레이드 등)과 느린 핸드셰이크를 근본적으로 걷어낸 재설계에 가깝다.

나. 필요성

TLS의 필요성은 보안의 세 축인 기밀성·무결성·인증(CIA 중 C·I와 인증)으로 설명된다. 첫째, 기밀성은 공개 네트워크에서 도청을 막는다. 공용 와이파이처럼 물리적으로 공유되는 매체에서는 TLS 없이는 세션 쿠키·인증 토큰이 그대로 탈취되어 계정이 장악된다. 둘째, 무결성은 중간자가 응답 본문이나 전송 중 금액을 조작하는 것을 검출한다. 셋째, 인증은 사용자가 접속한 상대가 '진짜 그 은행 서버'임을 인증서로 보증하여 피싱·사칭 서버로의 접속을 차단한다.

여기에 더해 TLS는 규제·컴플라이언스의 기반 통제로서도 필요하다. 개인정보보호법·[[isms-p]]·PCI-DSS는 전송 구간 암호화를 명시적으로 요구하며, 브라우저 업계는 HTTP 사이트에 '안전하지 않음' 경고를 띄우고 HTTP/2·HTTP/3를 TLS 위에서만 허용함으로써 사실상 전면 암호화(HTTPS Everywhere)를 강제해 왔다. 국내에서도 전자정부·금융 서비스가 TLS 1.2 이상만 허용하고 취약한 SSL 3.0/TLS 1.0을 비활성화하도록 가이드하고 있어, TLS는 선택이 아니라 기본 전제가 되었다.

다. 핵심 특징

TLS의 특징은 세 가지로 압축된다. 첫째는 하이브리드 암호 구조로, 느린 공개키 연산([[symmetric-asymmetric-encryption]]의 비대칭)은 세션키 합의·서버 인증에만 쓰고 실제 대량 데이터는 빠른 대칭키(AES 등)로 암호화하는 [[digital-envelope]]식 결합을 취한다. 둘째는 협상(negotiation) 기반 유연성으로, 핸드셰이크에서 양측이 공통으로 지원하는 버전·암호군(cipher suite)·키 교환 방식을 골라 맞추므로 알고리즘이 노후화되면 교체가 가능하다. 셋째는 계층 독립성으로, TLS는 HTTP·SMTP·IMAP 등 상위 프로토콜과 무관하게 동작하여 하나의 보안 계층으로 다양한 응용을 보호한다. 이 세 특징이 결합해 TLS는 '협상으로 유연하고, 하이브리드로 효율적이며, 계층 분리로 범용적인' 인터넷 보안의 사실상 표준으로 기능한다.

2. TLS의 전체 구조와 구성요소

TLS는 단일 절차가 아니라 하위의 Record Protocol(모든 데이터를 암호화·단편화해 실어 나르는 운반 계층)과 그 위에서 동작하는 상위 서브프로토콜(Handshake·Alert·ChangeCipherSpec·Application Data)로 이루어진 계층적 구조로 이해해야 한다. 아래는 TLS의 프로토콜 스택과 구성요소 간 관계를 나타낸 전체 구조도이다.

flowchart TB
  subgraph APP["응용 계층"]
    HTTP["HTTP/SMTP/IMAP 등"]
  end
  subgraph TLS["TLS 계층"]
    subgraph SUB["상위 서브프로토콜"]
      HS["Handshake(키합의·인증)"]
      AL["Alert(경보·종료)"]
      AD["Application Data(암호화 전송)"]
    end
    REC["Record Protocol(단편화·압축·MAC·암호화)"]
    SUB --> REC
  end
  subgraph NET["전송·네트워크 계층"]
    TCP["TCP(신뢰성 전송)"]
    IP["IP"]
  end
  HTTP --> HS
  HTTP --> AD
  REC --> TCP --> IP

이 구조의 핵심은 Record Protocol이 모든 상위 메시지를 레코드 단위로 쪼개어 순서번호·인증태그와 함께 암호화한다는 점이다. 핸드셰이크 메시지조차 키가 합의된 이후에는 레코드 계층에서 암호화되어 전달되며, 응용 데이터 역시 같은 레코드 포맷으로 보호된다. 즉 Handshake는 '어떤 키로 보호할지를 합의하는 제어 평면', Record는 '실제 보호를 집행하는 데이터 평면'으로 역할이 분리되어 있다.

가. Record Protocol — 데이터 평면

Record Protocol은 상위에서 내려온 바이트 스트림을 일정 크기(최대 2^14바이트) 레코드로 단편화하고, 각 레코드에 순서번호를 포함한 인증·암호화를 적용한 뒤 TCP로 내려보낸다. TLS 1.2까지는 'MAC 후 암호화' 또는 'MAC-then-Encrypt' 조합과 AEAD가 혼재했으나, TLS 1.3은 AEAD(Authenticated Encryption with Associated Data)만 허용하여 기밀성과 무결성을 한 연산으로 동시에 보장한다. AEAD는 암호화와 인증태그 생성을 하나의 알고리즘(AES-GCM, ChaCha20-Poly1305)으로 묶어, 과거 패딩·MAC 처리 순서의 미묘한 차이를 악용한 공격(POODLE·Lucky13)의 여지를 제거했다.

실무적으로 Record Protocol의 설계는 성능과 직결된다. 레코드가 너무 크면 첫 바이트 도착까지의 지연이 커지고, 너무 작으면 헤더·태그 오버헤드가 늘어난다. 그래서 CDN·웹서버는 초기에 작은 레코드로 빠르게 첫 화면을 띄우고 점차 레코드를 키우는 '레코드 크기 적응' 기법을 쓴다. 예컨대 넷플릭스·구글은 동적 레코드 사이징으로 영상 스트리밍의 체감 지연을 낮춘다.

또한 레코드마다 붙는 AEAD 인증태그(AES-GCM의 경우 16바이트)와 레코드 헤더는 작은 메시지가 많은 통신에서 상대적 오버헤드가 커진다. 예컨대 수십 바이트짜리 IoT 센서 데이터를 레코드마다 개별 전송하면 태그·헤더 비중이 본문을 넘어설 수 있어, 제약된 임베디드 환경에서는 메시지를 묶어 보내거나 경량 프로파일을 쓰는 등의 설계 고려가 필요하다. 이처럼 Record 계층의 파라미터 선택은 대역폭·지연·전력이라는 비기능 요구와 맞물려 결정된다.

나. Handshake Protocol — 제어 평면

Handshake Protocol은 버전·암호군 협상, 키 교환, 서버(필요시 클라이언트) 인증, 세션키 유도를 담당하는 TLS의 심장이다. TLS 1.3에서는 이 과정이 대폭 단순화되어 1-RTT(왕복 1회)만에 끝난다. 아래 세부도에서 단계별로 설명한다. 나머지 서브프로토콜인 Alert는 오류·세션 종료 통지(예: close_notify)를, ChangeCipherSpec은 TLS 1.2까지 암호 전환 신호를 담당했으나 TLS 1.3에서는 호환성 목적의 더미로만 남았다.

암호군(cipher suite)의 이름 표기는 두 버전에서 의미가 달라졌다는 점도 실무적으로 중요하다. TLS 1.2의 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256은 '키 교환(ECDHE)+인증(RSA)+대칭 암호(AES-128-GCM)+해시(SHA256)'를 한 문자열에 모두 담아, 조합의 경우의 수가 폭증하고 그중 취약한 조합이 섞여 들어갈 여지가 컸다. 반면 TLS 1.3은 키 교환·인증을 암호군에서 분리해 supported_groups·signature_algorithms 확장으로 따로 협상하고, 암호군 문자열에는 TLS_AES_128_GCM_SHA256처럼 AEAD 알고리즘과 해시만 남겼다. 이 분리 덕분에 협상 조합이 단순해지고 '안전한 기본값'을 벗어나기 어렵게 되었다.

3. TLS 1.3 핸드셰이크 절차

TLS 1.3 핸드셰이크의 가장 큰 혁신은 클라이언트가 첫 메시지에서 곧바로 키 교환 재료(key_share)를 함께 보냄으로써, TLS 1.2의 2-RTT를 1-RTT로 줄였다는 점이다. 아래는 전형적인 1-RTT 전체 핸드셰이크의 세부 흐름도이다.

sequenceDiagram
  participant C as "클라이언트"
  participant S as "서버"
  C->>S: ClientHello(지원버전·cipher suites·supported_groups·key_share)
  Note over S: 공통 파라미터 선택 + 자신의 key_share 생성
  S->>C: ServerHello(선택 cipher·key_share)
  Note over C,S: ECDHE 공유비밀 산출 → HKDF로 핸드셰이크 키 유도
  S->>C: {EncryptedExtensions · Certificate · CertificateVerify · Finished}
  Note over C: 인증서 체인 검증 + CertificateVerify 서명 확인
  C->>S: {Finished} (+ 선택적 클라이언트 인증서)
  Note over C,S: 애플리케이션 트래픽 키 유도 완료
  C->>S: Application Data(암호화)
  S->>C: Application Data(암호화)

가. ClientHello와 ServerHello — 협상의 시작

핸드셰이크는 클라이언트가 ClientHello를 보내며 시작된다. 여기에는 지원 가능한 TLS 버전 목록, 선호하는 암호군(cipher suite) 목록, 키 교환에 쓸 타원곡선 그룹(supported_groups, 예: X25519·secp256r1), 그리고 그 그룹들에 대한 공개 키 재료(key_share)가 담긴다. TLS 1.2에서는 서버 응답을 받은 뒤에야 키 재료를 교환했지만, 1.3에서는 클라이언트가 "이 곡선을 쓸 것이라 가정하고" 미리 재료를 던짐으로써 왕복을 하나 줄인다.

ClientHello에는 키 교환 재료 외에도 여러 확장(extension)이 실린다. 그중 SNI(Server Name Indication)는 하나의 IP·포트에서 여러 도메인을 호스팅하는 가상호스팅 환경에서 "어떤 도메인의 인증서를 달라"고 알리는 필수 확장이며, ALPN(Application-Layer Protocol Negotiation)은 HTTP/2·HTTP/3 같은 상위 프로토콜을 핸드셰이크 단계에서 미리 합의해 추가 왕복을 없앤다. 문제는 SNI가 평문으로 노출되어 '어떤 사이트에 접속하는지'가 도청자·검열 장비에 그대로 보인다는 점인데, 뒤에서 설명할 ECH가 바로 이 마지막 평문 메타데이터를 암호화하려는 시도다.

서버는 ServerHello로 응답하며, 받은 목록 중 공통으로 지원하는 버전·암호군을 하나씩 확정하고 자신의 key_share를 돌려준다. 만약 클라이언트가 보낸 그룹을 서버가 지원하지 않으면 HelloRetryRequest로 다른 그룹을 지정해 한 번 더 왕복하지만, 대부분의 현대 클라이언트는 X25519를 기본으로 보내므로 이 재협상은 드물다. 이 단계에서 버전 다운그레이드 방어가 중요한데, TLS 1.3은 ServerHello의 난수(random) 끝부분에 특정 상수를 심어 "나는 상위 버전을 지원하지만 하위로 끌어내려졌다"는 사실을 Finished 단계에서 검출하도록 설계되어, 과거 FREAK·Logjam 같은 강제 다운그레이드 공격을 차단한다.

나. 키 교환과 키 유도 — ECDHE와 HKDF

TLS 1.3은 키 교환 방식을 ECDHE(타원곡선 디피-헬만, Ephemeral) 같은 (EC)DHE 계열로 사실상 단일화하고, 과거의 정적 RSA 키 교환을 완전히 폐기했다. 이것이 1.3의 가장 중요한 보안 개선 중 하나다. 정적 RSA 방식에서는 서버의 개인키 하나만 유출되면 과거에 수집해 둔 모든 트래픽을 소급 복호화할 수 있었다. 반면 ECDHE는 세션마다 일회용 키쌍을 생성해 폐기하므로, 전방향 비밀성(PFS, Perfect Forward Secrecy)이 보장되어 서버 개인키가 미래에 유출되어도 과거 세션은 안전하다.

양측은 상대의 key_share와 자신의 비밀을 조합해 동일한 공유 비밀(shared secret)을 산출한 뒤, 이를 그대로 쓰지 않고 HKDF(HMAC 기반 키 유도 함수)에 통과시켜 용도별 키(핸드셰이크 키, 애플리케이션 트래픽 키, 재개용 PSK 등)를 단계적으로 파생시킨다. HKDF는 '추출(extract)'과 '확장(expand)' 두 단계로 엔트로피를 정규화하고 라벨별로 키를 분리하여, 하나의 키가 노출되어도 다른 용도 키로 번지지 않게 하는 키 분리(key separation) 원칙을 구현한다. 핸드셰이크의 상당 부분이 이 핸드셰이크 키로 조기에 암호화되는 것도 1.3의 특징으로, 서버 인증서까지 암호화되어 도청자에게 메타데이터 노출이 줄어든다.

다. 인증서 검증과 Finished — 신뢰 확정

서버는 Certificate(X.509 인증서 체인)와 CertificateVerify를 보낸다. CertificateVerify는 서버가 지금까지의 핸드셰이크 전체에 대해 자신의 개인키로 서명한 값으로, 클라이언트는 이 서명을 인증서의 공개키로 검증함으로써 "인증서를 제시한 상대가 그 개인키를 실제로 보유한 진짜 서버"임을 확인한다. 클라이언트는 인증서 체인을 신뢰 루트([[pki]]의 Root CA)까지 거슬러 검증하고, 도메인 이름(SAN) 일치·유효기간·폐기 여부(OCSP/CRL)를 확인한다. 이 검증이 실패하거나 느슨하면 중간자 공격이 성립하므로, 모바일 앱에서는 특정 인증서·공개키를 고정하는 인증서 피닝(certificate pinning)으로 방어를 강화하기도 한다.

인증서 검증의 실무적 함의는 결코 가볍지 않다. 2011년 인증기관 DigiNotar가 침해되어 구글 도메인에 대한 위조 인증서가 발급되었고, 이란에서 수십만 명의 지메일 트래픽이 중간자 공격에 노출된 사건은 'TLS의 신뢰가 결국 CA 생태계 전체의 건전성에 달려 있다'는 사실을 각인시켰다. 이 교훈에서 인증서 투명성(Certificate Transparency, CT) 로그가 도입되어, 발급된 모든 인증서를 공개 로그에 기록·감시함으로써 부정 발급을 조기에 탐지하게 되었다. 즉 TLS의 인증 신뢰는 프로토콜 한 지점이 아니라 CA·CT·브라우저 루트 저장소가 함께 떠받치는 생태계적 신뢰임을 이해해야 한다.

마지막으로 양측은 Finished 메시지를 교환한다. Finished는 지금까지 주고받은 모든 핸드셰이크 메시지의 해시에 대한 MAC으로, 협상 과정이 중간에 조작되지 않았음을 상호 확증한다. 이 시점 이후 애플리케이션 트래픽 키가 활성화되어 실제 데이터가 암호화되어 흐른다. 서버가 클라이언트도 인증해야 하는 상호 인증(mTLS) 환경에서는 서버가 CertificateRequest를 보내고 클라이언트가 자신의 인증서와 CertificateVerify를 추가로 제시하는데, 이는 [[zero-trust]] 아키텍처의 서비스 간 인증에서 핵심적으로 쓰인다.

라. 세션 재개와 0-RTT — 성능 최적화

TLS 1.3은 한 번 핸드셰이크한 상대와 재접속할 때 전체 과정을 반복하지 않도록 PSK(Pre-Shared Key) 기반 세션 재개를 제공한다. 첫 연결 후 서버가 발급한 재개용 티켓(NewSessionTicket)을 클라이언트가 보관했다가, 다음 접속 때 제시하면 비대칭 연산 없이 빠르게 세션을 복원한다. 더 나아가 0-RTT(Zero Round-Trip Time)는 클라이언트가 재접속 시 ClientHello에 실제 애플리케이션 데이터를 함께 실어 보내 왕복 지연을 사실상 0으로 만든다.

다만 0-RTT에는 본질적 위험이 있다. 0-RTT로 보낸 초기 데이터는 재전송(replay) 공격에 취약하여, 공격자가 같은 요청을 재생하면 서버가 중복 처리할 수 있다. 따라서 0-RTT는 조회(GET)처럼 멱등([[idempotency]])한 요청에만 허용하고, 결제·상태변경 같은 비멱등 요청에는 적용하지 않도록 서버가 통제해야 한다. 이는 '지연 단축'과 '재전송 안전성'이 상충하는 전형적 트레이드오프로, CDN·대형 서비스는 0-RTT를 선택적으로만 활성화한다.

4. TLS 1.2와 TLS 1.3 비교

두 버전의 차이를 '왜 그렇게 바뀌었는가'의 관점에서 보면, 1.3은 "안전하지 않은 선택지를 아예 제거"하는 방향으로 설계되었다. 1.2는 수십 종의 암호군과 RSA·DHE·ECDHE·정적/동적 키 교환을 모두 허용해 유연했지만, 그 유연성이 곧 '취약한 조합을 고를 수 있는 여지'가 되어 다운그레이드·약한 암호 공격의 온상이 되었다. 1.3은 암호군을 AEAD 5종 수준으로 대폭 축소하고 키 교환을 (EC)DHE로 한정하며 재협상·압축을 제거함으로써, 설정 실수 자체가 불가능하도록 '안전한 기본값'을 강제했다.

구분 TLS 1.2 TLS 1.3
핸드셰이크 왕복 2-RTT 1-RTT(재개 시 0-RTT)
키 교환 RSA·DHE·ECDHE(정적 RSA 허용) (EC)DHE만 — PFS 강제
대칭 암호 CBC(MAC-then-Encrypt)·AEAD 혼재 AEAD 전용(GCM·ChaCha20)
암호군 수 수십 종(취약 조합 다수) 5종 수준으로 축소
재협상/압축 허용(공격 표면) 제거
핸드셰이크 암호화 평문 다수(인증서 노출) 조기 암호화(인증서 보호)

성능 측면의 실무적 함의는 분명하다. 1-RTT로 줄어든 핸드셰이크는 모바일·고지연 환경에서 체감 응답속도를 크게 개선한다. 예컨대 왕복 지연이 100ms인 모바일 회선에서 한 번의 왕복을 줄이면 첫 연결마다 100ms가 절약되고, 수많은 리소스를 불러오는 웹페이지에서는 이 효과가 누적된다. 실제로 구글·클라우드플레어는 TLS 1.3 전환 후 핸드셰이크 지연이 절반 수준으로 줄었다고 보고했다. 보안 측면에서도 PFS 강제·약한 암호 제거로 사고 표면이 구조적으로 축소되었다.

다만 전환에는 현실적 제약도 따른다. 기업 환경에는 TLS를 종단·검사하는 중간 장비(미들박스)가 많은데, 이들이 1.3을 제대로 인식하지 못해 핸드셰이크를 깨뜨리는 '프로토콜 오시화(ossification)' 문제가 나타났다. TLS 1.3이 ChangeCipherSpec 더미 레코드를 남기고 버전 표기를 확장(supported_versions)으로 옮긴 것도, 구형 미들박스가 패킷을 '1.2처럼' 보이게 만들어 호환성을 확보하려는 설계였다. 또한 금융권처럼 정적 RSA 기반의 수동 복호화로 트래픽을 감사하던 조직은 PFS 강제로 그 방식이 불가능해져, 감사 아키텍처를 종단점 에이전트나 TLS 종단 프록시 기반으로 재설계해야 했다. 이는 보안 개선이 운영 관행의 변경을 강제한 대표적 사례다.

5. 심화 — 주요 공격과 최신 동향

TLS의 역사는 곧 공격과 방어의 역사다. 다운그레이드 공격(FREAK·Logjam)은 협상 과정을 조작해 약한 수출용 암호로 끌어내리는 기법이었고, POODLE는 SSL 3.0의 CBC 패딩 처리 결함을, BEAST는 TLS 1.0의 CBC IV 예측성을 악용했다. 2014년의 Heartbleed는 TLS 프로토콜 자체가 아니라 OpenSSL의 Heartbeat 확장 구현 버그(경계 검사 누락)로 서버 메모리가 유출된 사건으로, "프로토콜이 안전해도 구현이 틀리면 치명적"이라는 교훈을 남겼다. TLS 1.3은 이들 중 프로토콜 수준에서 막을 수 있는 것(CBC·재협상·압축·다운그레이드)을 설계로 제거했고, Heartbleed류 구현 결함은 라이브러리 패치·메모리 안전 언어(러스트 기반 rustls 등) 채택으로 대응하는 흐름이다.

한편 핸드셰이크의 평문 특성을 역이용한 TLS 핑거프린팅(JA3/JA3S)도 실무에서 활발히 쓰인다. ClientHello에 담기는 확장 목록·순서·암호군 조합은 클라이언트 구현체마다 고유한 패턴을 가지므로, 이를 해시화하면 트래픽이 암호화되어 있어도 "이 연결이 정상 브라우저인지, 알려진 멀웨어/봇인지"를 식별할 수 있다. 보안 관제·봇 차단에서는 이를 탐지 신호로 활용하고, 반대로 공격자는 정상 브라우저를 모방(fingerprint spoofing)해 탐지를 회피하려 한다. 이는 '암호화가 내용은 가려도 메타데이터 패턴은 남긴다'는 점을 보여 주는 대표적 사례이며, ECH가 지향하는 메타데이터 보호의 필요성을 역설적으로 뒷받침한다.

최신 동향으로 가장 주목할 것은 양자내성암호(PQC)로의 전환이다. 대규모 양자컴퓨터는 ECDHE가 의존하는 이산대수 문제를 깨뜨릴 수 있어, '지금 수집해 두고 나중에 복호화(Harvest Now, Decrypt Later)'하는 위협이 현실화되고 있다. 이에 구글·클라우드플레어는 2023~2024년부터 기존 X25519와 격자기반 알고리즘을 결합한 하이브리드 키 교환(X25519+ML-KEM, 구 Kyber)을 크롬·엣지 트래픽에 대규모 적용하기 시작했다([[post-quantum-crypto]] 참조). 또한 ClientHello의 SNI(접속 도메인)마저 암호화하는 ECH(Encrypted Client Hello)가 표준화·배포되어 접속 메타데이터 프라이버시를 강화하고 있으며, UDP 기반 [[quic-http3]]는 TLS 1.3 핸드셰이크를 전송 계층에 내재화하여 연결 수립을 더욱 단축했다. mTLS는 [[zero-trust]]·서비스 메시의 기본 통신 보안으로 자리 잡았다.

6. 고려사항 및 시사점

TLS를 기술사 관점에서 설계·운영할 때 고려할 사항은 다음과 같다.

  • 적용 전략(안전한 기본값 강제): 신규 시스템은 TLS 1.3을 기본으로 하되 1.2를 하위 호환으로만 남기고, SSL 3.0·TLS 1.0/1.1과 CBC·RC4 등 취약 암호군은 전면 비활성화한다. 서버 설정은 추측이 아니라 Mozilla SSL Configuration Generator·SSL Labs 같은 검증 도구로 'A 등급'을 목표 지표로 삼아 표준화하고, HSTS 헤더로 평문 접속 자체를 금지한다.

  • 트레이드오프(성능 대 안전성): 0-RTT는 지연을 극적으로 줄이지만 재전송 위험을 동반하므로, 멱등 요청에만 허용하고 비멱등 API에는 비활성화하는 선별 정책이 필요하다. 마찬가지로 세션 재개 티켓의 수명·키 회전 주기는 '재접속 성능'과 'PFS 약화 위험' 사이에서 균형을 잡아야 하며, 티켓 암호화 키(STEK)를 정기적으로 교체하지 않으면 재개 구간의 전방향 비밀성이 훼손된다.

  • 구현·운영 보안(인증서 수명주기): TLS 사고의 상당수는 프로토콜이 아니라 만료된 인증서, 약한 개인키 보관, 느슨한 체인 검증에서 비롯된다. 인증서는 ACME(Let's Encrypt)로 자동 발급·갱신하여 만료 사고를 원천 차단하고, 개인키는 HSM/KMS에 보관하며, 내부 서비스 간 통신에는 짧은 수명의 인증서를 자동 순환(SPIFFE/SPIRE 등)하는 체계를 갖춘다. 구현 결함(Heartbleed류)에 대비해 라이브러리 CVE를 상시 추적·패치한다.

  • 가시성과 규제의 충돌(복호화 운영): 전면 암호화는 프라이버시를 높이지만, 보안 관제([[siem]]·IDS)와 장애 분석에서 트래픽 가시성을 떨어뜨린다. 따라서 조직은 경계에서의 TLS 종단(termination)·재암호화 지점을 설계하고, 복호화 범위를 개인정보·규제와 충돌하지 않게 최소화하며, 복호화 키·로그의 접근통제를 엄격히 해야 한다. 가시성 확보와 프라이버시 보호를 동시에 설계하는 것이 핵심이다.

  • 전망 및 연계 기술(양자 전환 로드맵): 'Harvest Now, Decrypt Later' 위협에 대응해 장기 기밀성이 요구되는 데이터(의료·국가기밀)부터 하이브리드 PQC 키 교환으로 선제 전환하는 암호 민첩성(crypto-agility) 로드맵을 수립해야 한다. 알고리즘을 설정으로 쉽게 교체할 수 있도록 추상화하고, 인증서·라이브러리의 PQC 지원 현황을 정기 점검하는 거버넌스가 향후 10년의 핵심 과제가 될 것이다.

참고자료


한 줄 요약: TLS는 TCP 위에서 하이브리드 암호로 기밀성·무결성·인증을 제공하는 인터넷 보안의 사실상 표준이며, TLS 1.3은 핸드셰이크를 1-RTT로 줄이고 (EC)DHE·AEAD만 남겨 전방향 비밀성을 강제하는 재설계로 안전성과 성능을 동시에 끌어올렸고, 이제 과제는 0-RTT 재전송 통제·인증서 수명주기 자동화·양자내성암호로의 전환이다.