HTTPS는 HTTP over TLS/SSL로 데이터를 안전하게 암호화해서 전송합니다.
핵심은 TLS Handshake를 통해 클라이언트와 서버가 암호화 알고리즘, 키, 인증서 등을 안전하게 교환하는 것입니다.
핵심 단계:
목적: TLS 연결 시작
내용:
트래픽 캡처 예시:
Frame 1: Client Hello
TLSv1.2 Record Layer: Handshake Protocol: Client Hello
💡 어린이 비유:
“나는 안전한 상자를 만들 준비가 됐어. 내 주사위 숫자(Client Random)도 보낼게.”
목적: 서버 설정 선택 및 신원 증명
내용:
트래픽 캡처 예시:
Frame 2: Server Hello
TLSv1.2 Record Layer: Handshake Protocol: Server Hello
TLS Certificate: Server X.509 Certificate
💡 어린이 비유:
“좋아요, 우리 이 방식으로 하자. 내 주사위(Server Random) 숫자도 보내고, 내 신분증(Certificate)도 보여줄게. 진짜 서버 맞지?”
🔑 핵심 원리:
- 서로 랜덤 값(Client Random / Server Random) 교환 → 세션 키 계산 재료
- 인증서 전송 → 서버 신원 확인, 공개키 안전하게 확보
목적: 세션 키 안전하게 공유
내용:
트래픽 캡처 예시:
Frame 3: Client Key Exchange
Encrypted PreMasterSecret
💡 어린이 비유:
“내가 만든 비밀 조각(Premaster Secret)을 안전하게 보내면, 너(서버)만 열 수 있어.”
목적: 이후 트래픽부터 암호화 적용
내용:
Change Cipher SpecFinished (핸드셰이크 무결성 확인)Change Cipher Spec + Finished트래픽 캡처 예시:
Frame 4: Change Cipher Spec
Frame 5: Encrypted Handshake Message: Finished
💡 어린이 비유:
“이제 우리 둘 다 같은 열쇠(Session Key)를 갖고 상자를 잠글 수 있어. 이제 메시지는 안전하게 보낼 수 있어.”
Application Data로 보이며 내용은 해독 불가Frame 6: Application Data
TLSv1.2 Record Layer: Application Data (encrypted)
💡 어린이 비유:
“상자가 잠겼으니, 편지 내용을 도둑이 봐도 열 수 없어!”
결과: 같은 세션 키(Session Key) 획득 → 안전하게 암호화 통신 가능
💡 어린이 버전 비유:
클라이언트가 연결하려는 서버가 진짜 서버인지 확인 필요
서버 인증서 안의 정보:
www.example.com)원리:
Client Hello 전송Server Hello + Certificate 전송 → “내 공개키와 신원 확인해”💡 어린이 비유:
| 순서 | 메시지 | 주체 | 기능 | 캡처 특징 |
|---|---|---|---|---|
| 1 | Client Hello | 클라이언트 | TLS 시작, 지원 암호화 알림, Client Random 전송 | Handshake, Client Hello |
| 2 | Server Hello + Certificate | 서버 | TLS 버전/암호화 선택, Server Random 전송, 서버 신원 인증 | Server Hello, Certificate |
| 3 | Client Key Exchange | 클라이언트 | Premaster Secret 전송, 세션 키 생성 재료 공유 | Encrypted PreMasterSecret |
| 4 | Change Cipher Spec + Finished | 양쪽 | 이후 트래픽 암호화 시작 | Change Cipher Spec, Finished |
| 5 | Application Data | 양쪽 | HTTPS 데이터 암호화 전송 | Application Data (encrypted) |
💡 핵심 요약