TLS 1.3 핸드셰이크 단계별 학습
ClientHello, ServerHello, 키 파생, Finished 과정을 단계별로 살펴봅니다.
TLS 1.3 핸드셰이크 단계별 학습은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
TLS가 필요한 이유
TLS(Transport Layer Security)는 인터넷을 통해 전송되는 데이터를 보호합니다. 모든 HTTPS 연결은 TLS를 사용합니다. 2018년에 RFC 8446으로 표준화된 TLS 1.3은 레거시 알고리즘을 제거하고 핸드셰이크 왕복 횟수를 2회에서 1회로 줄였습니다.
ClientHello
클라이언트는 TLS 버전(1.3), 무작위 32바이트 논스, 지원하는 암호 스위트 목록(예: TLS_AES_256_GCM_SHA384), 그리고 지원 그룹(X25519, P-256)의 ECDH 공개 키가 포함된 키 공유 확장을 보냅니다.
ServerHello
서버는 암호 스위트와 키 공유 그룹을 선택하고 자체 ECDH 임시 키 쌍을 생성한 다음 공개 키로 응답합니다. 이 시점에서 양쪽은 ECDH를 통해 공유 비밀을 계산할 수 있습니다.
HKDF를 통한 키 파생
TLS 1.3은 스케줄에서 HKDF(HMAC-based Key Derivation Function)를 사용합니다: 초기 비밀 → 핸드셰이크 비밀 → 마스터 비밀. 각 단계에서는 클라이언트와 서버의 핸드셰이크 트래픽 및 애플리케이션 데이터를 위해 별도의 키를 파생합니다.
서버 Finished
서버는 Certificate, CertificateVerify(개인 키를 사용해 핸드셰이크 전사에 서명한 값), Finished(전사에 대한 HMAC)를 보냅니다. 이 모든 메시지는 핸드셰이크 트래픽 키로 암호화됩니다.
클라이언트 Finished
클라이언트는 인증서 체인을 검증하고 CertificateVerify 서명을 확인하며 Finished MAC을 검증한 다음 자체 Finished 메시지를 보냅니다. 이제 1회 왕복(1-RTT)으로 핸드셰이크가 완료됩니다.
0-RTT 재개
TLS 1.3은 이전 세션의 사전 공유 키(PSK)를 사용해 0-RTT(왕복 횟수 0) 재개를 지원합니다. 클라이언트는 즉시 애플리케이션 데이터를 보낼 수 있지만, 0-RTT 데이터에는 재전송 방지가 없으므로 멱등성이 있어야 합니다.
TLS 1.3 암호 스위트
TLS 1.3은 AEAD 암호만 의무적으로 사용합니다: AES-128-GCM-SHA256, AES-256-GCM-SHA384, ChaCha20-Poly1305-SHA256. 모두 키 교환에 ECDHE 또는 DHE를 사용합니다. 취약한 스위트(RC4, 3DES, CBC)는 제거되었습니다.
레코드 계층
핸드셰이크 후 모든 데이터는 TLS 레코드로 감쌉니다: 5바이트 헤더(콘텐츠 유형, 버전, 길이) + AEAD로 암호화된 페이로드. 시퀀스 번호는 암묵적으로 지정되며 재전송을 방지하기 위한 AEAD 논스의 일부로 사용됩니다.
순방향 보안
TLS 1.3은 항상 임시 키 교환(ECDHE)을 사용하므로 서버의 장기 개인 키가 유출되어도 과거 세션을 복호화할 수 없습니다. 각 세션에는 핸드셰이크 후 폐기되는 고유한 임시 키 쌍이 있습니다.
Wireshark 화면
Wireshark에서 ClientHello에는 random + key_share가 표시되고, ServerHello에는 선택된 그룹이 표시됩니다. 이후 레코드는 "Application Data"(암호화됨)로 표시됩니다. 세션 키를 사용해 복호화하려면 SSLKEYLOGFILE을 내보냅니다.
빠른 확인
TLS 1.3의 전체 핸드셰이크에는 왕복이 몇 번 필요합니까?
요약
TLS 1.3은 ECDHE, HKDF, AEAD 암호, 인증서 기반 인증을 결합하여 순방향 보안이 의무화된 1-RTT 핸드셰이크를 제공합니다. 다음에는 TLS 레코드 계층과 암호 스위트를 자세히 살펴봅니다.
자주 묻는 질문
“TLS 1.3 핸드셰이크 단계별 학습” 강의는 무료인가요?
네 — “TLS 1.3 핸드셰이크 단계별 학습” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“TLS 1.3 핸드셰이크 단계별 학습”에서 뭘 배우나요?
ClientHello, ServerHello, 키 파생, Finished 과정을 단계별로 살펴봅니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“TLS 1.3 핸드셰이크 단계별 학습” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- TLS 1.3 핸드셰이크 단계별 학습
- TLS 레코드 계층과 암호 스위트
- TLS에서의 인증서 검증
- TLS 공격: BEAST, POODLE 및 다운그레이드