HTTPS TLS 핸드쉐이크는 어떻게 동작하나요?
한 줄 답변
HTTPS는 TCP 연결 후 TLS 핸드쉐이크를 통해 인증서 검증, 키 교환, 세션 키 생성 순으로 보안 채널을 수립하며, TLS 1.3은 1-RTT로 핸드쉐이크를 단축해 성능을 개선했습니다.
핵심 개념 정리
HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 TLS(Transport Layer Security) 암호화 계층을 추가한 프로토콜입니다. 브라우저가 HTTPS 사이트에 접속하면 TCP 3-way 핸드쉐이크로 연결을 수립한 뒤 TLS 핸드쉐이크 과정이 시작됩니다. TLS는 이전 명칭인 SSL(Secure Sockets Layer)을 계승하며, 현재 권장 표준은 TLS 1.3(RFC 8446, 2018)입니다.
TLS 1.2 핸드쉐이크는 2-RTT(Round Trip Time)가 필요합니다. ① 클라이언트가 지원하는 암호화 알고리즘 목록을 담은 ClientHello를 전송합니다. ② 서버는 알고리즘을 선택하고 SSL 인증서(공개키 포함)를 포함한 ServerHello로 응답합니다. ③ 클라이언트는 CA(Certificate Authority)에서 인증서 유효성을 검증하고, Pre-Master Secret을 서버 공개키로 암호화하여 전송합니다. ④ 양측은 Pre-Master Secret으로부터 동일한 세션 키(대칭키)를 도출하고, 이후 모든 데이터를 해당 대칭키로 암·복호화합니다.
TLS 1.3은 핸드쉐이크를 1-RTT로 단축했습니다. ClientHello에 키 교환 파라미터를 함께 실어 보내 왕복 횟수를 줄이며, 재연결 시에는 Session Ticket을 활용해 0-RTT도 가능합니다. 또한 취약한 RSA 키 교환을 제거하고 ECDHE(Elliptic Curve Diffie-Hellman Ephemeral)만 허용하여 Forward Secrecy(전방향 비밀성)를 기본으로 보장합니다.
인증서는 비대칭키 방식으로 서버 신원을 검증하는 데 사용되고, 실제 데이터 전송은 속도가 빠른 대칭키 암호화(AES-256-GCM 등)를 사용합니다. 이처럼 비대칭키의 보안성과 대칭키의 처리 속도를 함께 활용하는 것을 하이브리드 암호화 방식이라 부릅니다. HTTPS 기본 포트는 443이며, HTTP(80)와 달리 모든 전송 데이터가 암호화됩니다.
비교 정리
| 항목 | TLS 1.2 | TLS 1.3 |
|---|---|---|
| 핸드쉐이크 왕복 횟수 | 2-RTT (최초 연결 기준) | 1-RTT (최초 연결 기준) |
| 키 교환 알고리즘 | RSA, DH 등 취약 알고리즘 포함 허용 | ECDHE 등 안전한 알고리즘만 허용 |
| Forward Secrecy | 선택적 지원 (RSA 사용 시 미보장) | ECDHE 필수 적용으로 기본 보장 |
| 0-RTT 재연결 | 미지원 | Session Ticket 활용으로 0-RTT 가능 |
면접에서 이렇게 답하세요
먼저 'HTTPS = HTTP + TLS'로 간결하게 정의한 뒤, 핸드쉐이크를 ①ClientHello → ②ServerHello·인증서 전달 → ③인증서 검증·키 교환 → ④세션 키 생성의 4단계 순서로 설명하면 구조적으로 보입니다. 비대칭키(신원 인증·키 교환)와 대칭키(실제 데이터 암호화)를 구분하고, '왜 두 방식을 함께 쓰는가'—비대칭키의 보안성과 대칭키의 처리 속도를 모두 얻기 위해서라고 답변하면 차별화됩니다. 실무 경험이 있다면 'Let's Encrypt로 인증서를 발급하고 Nginx에서 TLS 1.3을 설정해 핸드쉐이크 지연을 줄였다'처럼 구체적 사례를 덧붙이세요.
자주 묻는 추가 질문
Q. 공개키와 개인키는 HTTPS 핸드쉐이크에서 각각 어떤 역할을 하나요?
서버의 공개키는 클라이언트가 Pre-Master Secret을 암호화하는 데 사용되고, 서버의 개인키는 이를 복호화하여 세션 키를 도출하는 데 사용됩니다.
Q. CA(Certificate Authority)는 무엇이고 왜 필요한가요?
CA는 서버 인증서의 신뢰성을 보증하는 제3자 기관입니다. 브라우저에 내장된 루트 CA 목록으로 인증서를 검증하여 중간자 공격(MITM)을 방지합니다.
Q. Forward Secrecy(전방향 비밀성)란 무엇인가요?
세션마다 임시 키를 생성하여, 서버 개인키가 나중에 유출되더라도 과거 세션의 암호화된 데이터를 복호화할 수 없도록 보장하는 보안 특성입니다.
커뮤니티 하이라이트
“비대칭키+대칭키 하이브리드 이유까지 설명했더니 '이 부분까지 아는 지원자가 드물다'는 피드백을 받았어요. TLS 1.3 성능 개선 포인트도 꼭 챙기세요!”
“인증서 체인(루트CA → 중간CA → 서버 인증서) 검증 흐름까지 함께 설명하면 깊이가 확 달라 보입니다. 면접관 눈빛이 바뀌는 게 느껴졌어요.”
32명의 개발자가 이 질문에 참여했습니다
관련 면접 질문
앱에서 직접 답변해보세요
매일 3개의 면접 질문에 답변하고,
다른 개발자들의 답변을 비교해보세요.