TLS Handshake (TLS 1.2)


Handshake 이후에 위 사진과 같이 Application Data가 송수신
Packet Analysis

Client Hello 옆의 SNI(Server Name Indication)를 통하여 클라이언트가 접속하려는 호스트명을 서버에 알린다.
1. Client Hello

클라이언트 측에서 생성한 데이터 들을 서버에 전달한다. (Client > Server)
Random, Session ID, Cipher Suites(클라이언트에서 지원하는 암호화 방식) 등을 전달하며 Session ID를 통하여 신규 연결인지, 재연결인지 식별할 수 있다.

2. Server Hello

위 사진과 같이 Server > Client로 어떤 암호화 방식을 사용할 것이지 결과를 전달한다.
- ECDHE : 타원 곡선 기반 디피-헬만 키 교환 방식
- RSA : 서버 인증서에서 공개 키를 사용하여 서버 인증 (Client가 제공하는 공개 키로 데이터 암호화, Client는 개인 키 사용 데이터 복호화)
- AES_128_GCM : AES는 대칭 키 알고리즘, 128비트 블록 단위 암호화, GCM 모드
- SHA256 : 메세지가 중간에 변조 및 훼손되지 않았는지 검증 (무결성)
3. Certificate

Certificate은 서버가 클라이언트에게 전달하는 인증서이다. 이를 통해 클라이언트는 서버와의 안전한 데이터 통신 채널을 구축한다. Length는 인증서의 전체 크기를 의미하며 다시 Length는 개별 인증서 크기에 따라 다시 표기한다.
signedCertificate은 인증서를 발급한 인증 기관(CA)이 해당 서버 인증서가 유효함을 보증하기 위한 서명이다.
algorithmIdentifier는 인증서 서명에 사용된 구체적인 알고리즘을 나타낸다. 여기서는 SHA-256과 RSA를 결합한 sha256 With RSA Encryption 알고리즘이 사용되었다. 즉, 이 알고리즘은 인증서에 사용된 암호화 알고리즘이다.
4. Server Key Exchange, Server Hello Done

공개키를 Server가 Client로 전달한다.
여기서는 32길이의 공개키가 전달되었으며 서명(Signature)에는 256길이 및 RSA-PSS(RSA에서 랜덤 요소 추가하여 보안 강)가 사용되었다.
이후 서버 측에서 Server Hello Done으로 handshake 송신이 완료되었음을 알린다.
5. Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message

공개키를 Client가 Server로 전달하고 세션 키를 생성한다.
Change Cipher Spec으로 암호화 모드로 전환하며 Encrypted Handshake Message를 서버가 복호화하여 클라이언트가 올바른 세션 키를 사용하고 있는 지 식별한다.
6. Change Cipher Spec, Encrypted Handshake Message

마찬가지로 Server도 암호화된 통신 모드로 동작함을 알리며 세션 키를 사용하여 암호화된 Encrpted Handshake Message를 복호화하여 확인하는 검증 단계이다. 클라이언트 측에서 보낸 것과 마찬가지로 서버 측에서도 해당 메세지를 전달한다.
7. Application Data

이후 사전에 정의한 암호화 방식을 사용하여 암호화된 데이터를 송수신한다.
'보안, IT > 네트워크, IT' 카테고리의 다른 글
| [네트워크 해킹] OSI 7 계층과 패킷 분석 개요 (0) | 2025.03.30 |
|---|---|
| [Packet Tracer] ACL을 위한 기본 네트워크 구성 정리 (1) | 2024.11.15 |
| IP주소(IP Address)와 MAC주소(MAC Address) (0) | 2024.05.22 |
| 네트워크 프로토콜(Network Protocol) (0) | 2024.02.19 |
| 블록체인 기술(Blockchain Technology) (0) | 2024.02.19 |