0Pricing
Cloud & IT Cert Prep · 강의

TLS 1.3 핸드셰이크 및 0-RTT 재개

TLS 1.3 핸드셰이크를 단계별로 추적하고 기본적으로 순방향 비밀성을 달성하는 방식을 이해하며 0-RTT 세션 재개의 보안상 절충을 평가합니다.

TLS 1.3 핸드셰이크 및 0-RTT 재개은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

TLS 1.3이 필요했던 이유

TLS 1.3은 2018년에 발표되었으며(RFC 8446), 10년에 걸친 실제 공격으로 TLS 1.2에 누적된 약점을 해결하도록 설계되었습니다. 이전 버전에서는 취약한 암호 스위트의 협상과 수출용 암호 기술을 허용했으며, Data를 전송하기 전에 여러 번의 왕복이 필요했습니다. TLS 1.3은 더 이상 사용되지 않는 모든 알고리즘을 제거하고 일반적인 경우 핸드셰이크를 한 번의 왕복으로 간소화하여 Security와 성능을 크게 향상합니다.

핸드셰이크 개요: 한 번의 왕복

TLS 1.3에서는 Client와 Server가 1-RTT(한 번의 왕복)로 핸드셰이크를 완료합니다. Client는 지원되는 암호 스위트와 키 공유 값(Diffie-Hellman 사용)을 포함한 ClientHello를 보냅니다. Server는 ServerHello, 자체 키 공유 값, 인증서 및 암호화된 첫 Application Data를 한 번에 전송하여 응답합니다. 그런 다음 Client는 인증서를 검증하고 Application Data를 교환하기 전에 Finished 메시지를 보냅니다.

# Trace TLS 1.3 handshake with openssl
openssl s_client -connect example.com:443 -tls1_3 -msg 2>&1 | grep -E 'ClientHello|ServerHello|Finished'

키 교환: 임시 Diffie-Hellman만 사용

TLS 1.3은 임시 키 교환을 의무화하며 RSA 키 교환을 완전히 제거했습니다. 모든 키 교환에는 ECDHE(타원 곡선 Diffie-Hellman 임시 방식) 또는 DHE(Diffie-Hellman 임시 방식)를 사용해야 합니다. '임시'라는 말은 각 세션마다 새로운 키 쌍이 생성된다는 뜻입니다. 이는 완전 순방향 비밀성의 기반입니다. Server의 장기 개인 키가 유출되더라도 각 세션이 고유한 임시 키를 사용했기 때문에 과거 세션을 복호화할 수 없습니다.

완전 순방향 비밀성 설명

Perfect Forward Secrecy (PFS)는 공격자가 오늘 모든 암호화된 트래픽을 기록하고 미래에 Server의 개인 키를 손에 넣더라도 이전 세션을 복호화할 수 없도록 보장합니다. RSA 키 교환을 사용하는 TLS 1.2에서는 Server의 개인 키로 과거 모든 세션의 사전 마스터 비밀을 복호화할 수 있었으며, 이는 치명적인 결함이었습니다. TLS 1.3의 임시 DH 키를 사용하면 각 세션이 자체 키를 도출하고, 해당 임시 키는 사용 후 폐기됩니다.

암호 스위트 간소화

TLS 1.2는 300개가 넘는 암호 스위트를 지원했으며, 그중 상당수는 취약하거나 이미 무력화된 것이었습니다. TLS 1.3은 이를 5개의 암호 스위트로 줄였고, 모두 AEAD(Associated Data를 포함한 인증 암호화)를 사용합니다. TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_CCM_SHA256, TLS_AES_128_CCM_8_SHA256이 이에 해당합니다. 이로써 취약한 암호 협상을 악용했던 BEAST, POODLE 및 FREAK과 같은 공격 유형 전체가 제거됩니다.

# Check supported TLS 1.3 cipher suites on a server
nmap --script ssl-enum-ciphers -p 443 example.com

0-RTT 재개: 속도와 Security의 균형

0-RTT(Zero Round Trip Time) 재개는 핸드셰이크가 완료되기 전에 Client가 첫 번째 메시지에서 Application Data를 보낼 수 있도록 하는 선택적 TLS 1.3 기능입니다. 이전 세션의 사전 공유 키(PSK)를 사용하여 작동합니다. 0-RTT는 지연 시간을 크게 줄여 트래픽이 많은 API에 중요하지만, 중요한 상충 관계가 있습니다. 초기 Data가 재생 공격으로부터 보호되지 않는다는 점입니다.

0-RTT의 재생 공격 위험

0-RTT Data에 대한 재생 공격에서 공격자는 초기 Data 메시지를 가로챈 뒤 Server에 다시 전송하여 동일한 동작을 두 번 실행시킬 수 있습니다(예: 결제 또는 상태 변경). TLS 1.3 사양은 0-RTT 초기 Data에 멱등 연산만 포함해야 한다고 명시적으로 경고합니다. 멱등 연산은 GET 요청처럼 몇 번 실행하더라도 동일한 결과를 생성하는 연산입니다. 멱등적이지 않은 연산(POST, DELETE)에는 0-RTT를 사용해서는 안 됩니다.

사전 공유 키와 세션 재개

TLS 1.3 전체 핸드셰이크가 성공적으로 완료되면 Server는 Client가 저장하는 PSK(사전 공유 키)가 포함된 NewSessionTicket 메시지를 발급합니다. 다시 연결할 때 Client는 pre_shared_key extension을 사용하여 ClientHello에 이 PSK를 포함합니다. Server는 이를 인식하고 0-RTT Data를 승인하거나 1-RTT 재개로 대체합니다. PSK 티켓에는 사용 기간 제한이 있으며 노출될 수 있는 기간을 줄이기 위해 자주 교체해야 합니다.

암호화된 핸드셰이크: 메타데이터 숨기기

TLS 1.3의 주요 Improvement는 Server 인증서를 포함한 핸드셰이크 대부분이 암호화된다는 것입니다. TLS 1.2에서는 Server 인증서가 평문으로 전송되었으므로 네트워크 관찰자가 Client가 연결하려는 도메인을 식별할 수 있었습니다. TLS 1.3은 인증서와 그 이후에 이어지는 대부분의 핸드셰이크 메시지를 암호화하여 수동적으로 관찰하는 사람이 얻을 수 있는 메타데이터를 줄입니다. Encrypted Client Hello (ECH)는 SNI(Server Name Indication) 필드까지 숨기는 새로운 확장 기능입니다.

제거된 기능: TLS 1.3이 없앤 것

TLS 1.3은 문제가 된 여러 레거시 기능을 제거했습니다. RSA 키 교환(순방향 비밀성 없음), CBC 모드 암호 스위트(패딩 오라클 공격에 취약), RC4(완전히 무력화된 스트림 암호), 수출용 암호 기술(FREAK 및 Logjam의 원인), 디지털 서명의 MD5 및 SHA-1, 압축(CRIME의 원인), 재협상(여러 공격의 원인)이 이에 해당합니다. 이를 제거함으로써 TLS 1.3은 공격 표면을 크게 줄였습니다.

TLS 1.3을 위한 Server 구성

TLS 1.3을 올바르게 배포하려면 웹 Server가 TLS 1.3을 우선 사용하도록 구성하고 TLS 1.0 및 1.1은 비활성화해야 합니다. 대부분의 최신 웹 Server(Nginx, Apache, IIS)는 TLS 1.3을 기본적으로 지원합니다. 또한 Client가 CA에 접속하지 않고도 인증서 폐기 상태를 확인할 수 있도록 OCSP Stapling을 활성화하고, HSTS 헤더가 HTTP로의 다운그레이드 공격을 방지하도록 해야 합니다. SSL Labs와 같은 도구를 사용하여 구성이 A+ 등급을 달성하는지 확인하십시오.

# Nginx TLS 1.3 configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security 'max-age=63072000' always;

빠른 확인

이 lesson에서 다룬 CompTIA Security+ (SY0-701) 개념을 이해했는지 테스트해 보십시오.

lesson 요약

이 lesson에서는 다음을 배웠습니다. TLS 1.3은 완전 순방향 비밀성을 위해 임시 DH 키 교환만 사용하여 1-RTT로 핸드셰이크를 완료합니다. 또한 0-RTT 재개는 PSK를 사용하여 더 빠른 재연결을 가능하게 하지만 재생 공격에 취약하므로 멱등 연산만 전달해야 하며, TLS 1.3은 모든 레거시 취약 기능인 RSA 키 교환, CBC 암호, RC4, 수출용 암호 기술 및 압축을 제거하여 공격 표면을 크게 줄였습니다. 다음에는 AES-GCM과 같은 인증 암호화 알고리즘을 살펴보겠습니다.

자주 묻는 질문

“TLS 1.3 핸드셰이크 및 0-RTT 재개” 강의는 무료인가요?

네 — “TLS 1.3 핸드셰이크 및 0-RTT 재개” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“TLS 1.3 핸드셰이크 및 0-RTT 재개”에서 뭘 배우나요?

TLS 1.3 핸드셰이크를 단계별로 추적하고 기본적으로 순방향 비밀성을 달성하는 방식을 이해하며 0-RTT 세션 재개의 보안상 절충을 평가합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“TLS 1.3 핸드셰이크 및 0-RTT 재개” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. TLS 1.3 핸드셰이크 및 0-RTT 재개
  2. 인증된 암호화: AES-GCM 및 ChaCha20-Poly1305
  3. 키 파생 함수: PBKDF2, bcrypt 및 Argon2
  4. 포스트 양자 암호: CRYSTALS-Kyber 및 Dilithium
← Cloud & IT Cert Prep(으)로 돌아가기