반응형



TLS Handshake(Transport Layer Security)는:
HTTPS 통신 시작 전에
서로를 확인하고
암호화 키를 안전하게 만드는 과정
이다.
쉽게 말하면:
"우리 이제부터 어떤 암호로 안전하게 대화할지 정하는 절차"
라고 보면 된다.
먼저 큰 그림
TLS Handshake의 목적은 4개다.
| 목적 | 설명 |
| 서버 인증 | 진짜 서버인지 확인 |
| 암호 알고리즘 협상 | AES-GCM/ChaCha20 등 결정 |
| 키 교환 | 세션키 생성 |
| 안전한 통신 시작 | 이후 HTTPS 암호화 |
현대 기준(TLS 1.3) 흐름
현재 실무 대부분은:
- TLS 1.2
- TLS 1.3
사용.
특히 최신은 TLS 1.3 중심.
전체 흐름 먼저
1. ClientHello
2. ServerHello
3. 인증서 전달
4. ECDHE 키 교환
5. 세션키 생성
6. Finished
7. HTTPS 암호화 통신 시작
STEP 1 — ClientHello
브라우저가 서버에 먼저 보낸다.
예:
안녕하세요
제가 지원하는 암호 방식은:
- TLS1.3
- AES-GCM
- ChaCha20
- ECDHE
...
입니다
포함 내용
| 항목 | 의미 |
| TLS 버전 | TLS1.2/1.3 |
| Cipher Suites | 지원 암호 알고리즘 |
| Random 값 | 키 생성용 랜덤 |
| SNI | 접속 도메인 |
Cipher Suite란?
예:
TLS_AES_128_GCM_SHA256
의미:
| 부분 | 역할 |
| AES_128_GCM | 데이터 암호화 |
| SHA256 | 해시 |
| TLS | 프로토콜 |
STEP 2 — ServerHello
서버 응답.
좋아요
우리:
- TLS1.3
- AES-GCM
- ECDHE
사용합시다
결정.
서버도 Random 보냄
나중에 세션키 생성에 사용.
STEP 3 — 인증서(Certificate) 전달
서버가:
- 인증서
- 공개키
전달.
인증서 안에는
예:
도메인
공개키
CA 정보
전자서명
들어있다.
STEP 4 — 브라우저가 인증서 검증
브라우저는:
"이 서버 진짜 맞나?"
확인.
어떻게 검증?
CA 전자서명 검증.
예:
- Let's Encrypt
- DigiCert
브라우저 안에는
신뢰 가능한 CA 공개키가 미리 들어있다.
그래서:
인증서 위조 여부 검사 가능
여기까지 의미
"가짜 서버 아님"
확인 완료.
STEP 5 — ECDHE 키 교환
핵심 단계.
현재는 대부분:
Elliptic-curve Diffie–Hellman
사용.
중요한 점
AES 키를 직접 안 보냄
이다.
대신
클라이언트와 서버가:
각자 비밀값 계산
후,
공개값만 교환한다.
결과
둘 다:
같은 세션키
생성 성공.
왜 안전?
중간 공격자는:
- 공개값
- 패킷
봐도:
최종 세션키 계산 불가
하다.
STEP 6 — Finished 메시지
양쪽이:
"우리가 같은 키를 만들었는지"
검증.
여기서부터 암호화 시작
즉:
Handshake 완료
의 의미.
STEP 7 — HTTPS 암호화 통신
이후부터는:
- Advanced Encryption Standard AES-GCM
- ChaCha20-Poly1305
등으로 통신.
여기서 실제 데이터 보호
예:
비밀번호
쿠키
API 데이터
JSON
전부 암호화.
왜 RSA는 잘 안 보이나?
TLS 1.3에서는:
RSA Key Exchange 제거
됐다.
현재는:
ECDHE 중심
이다.
이유 — Perfect Forward Secrecy
엄청 중요.
뜻:
미래에 서버 개인키 털려도
과거 통신은 복호화 불가
왜 가능?
ECDHE는:
세션마다 일회용 키 생성
하기 때문.
TLS 1.2 vs TLS 1.3
| 항목 | TLS1.2 | TLS1.3 |
| RSA Key Exchange | 가능 | 제거 |
| 속도 | 느림 | 빠름 |
| 보안 | 좋음 | 더 강함 |
| Round Trip | 많음 | 감소 |
실제 패킷 흐름 느낌
ClientHello
↓
ServerHello + Certificate
↓
ECDHE Key Exchange
↓
Finished
↓
HTTPS AES-GCM 통신
실무에서 중요한 포인트
1. 인증서 검증 실패하면 위험
예:
인증서 무시
누르면 MITM 공격 가능.
2. TLS 1.0/1.1 비활성화
구형 취약점 많음.
3. Cipher Suite 중요
현재 권장:
- AES-GCM
- ChaCha20-Poly1305
핵심 한 줄
TLS Handshake는:
서버 신원을 전자서명으로 검증하고,
ECDHE로 안전하게 세션키를 만든 뒤,
AES-GCM으로 HTTPS 암호화 통신을 시작하는 절차
이다.
반응형
'system_fundamentals > security_cryptography' 카테고리의 다른 글
| CA 체계 (1) | 2026.05.15 |
|---|---|
| 인증서는 누가 믿는가 (1) | 2026.05.15 |
| HTTPS는 어떻게 안전한가 (0) | 2026.05.15 |
| 권한 시스템 설계 (1) | 2026.05.15 |
| ACL (0) | 2026.05.15 |
댓글