본문 바로가기

OSI 7계층/[기타] 보안

SSL Handshake_Client Hello

하잇!

안녕하세요! 오랜만에 돌아온 런잇입니다.

그동안 앞으로의 진로에 대해 다양한 논의를 통해!

이번에는 전에 한번 다루었던 SSL Handshake 과정에 대해서 보다 상세하고 자세하게 알아보려고 합니다.

한번 다루었던 내용이었지만 SSL에 대해 보다 자세히 보자! 특집편!

오늘은 Client Hello, Server Hello에 대해서 짚어보고 가도록 하겠습니다!

1. SSL Handshake

우선 우리가 공부를 하기 위해서는 아래와 같이 SSL Handshake 과정은 어떻게 진행 되는지!

기본적으로 파악하고 있어야 합니다.

아~~ 대충 이런식으로 진행되는 구나~

SSL Handshake 과정

오늘은 첫번째 과정! Client Hello에 대해 자세히 알아보도록 하죠

그러나 그에 앞서 해당 패킷을 살펴보기 전에 SSL의 패킷 구조가 어떻게 되어 있는지 알아볼 필요가 있습니다.

 

SSL 패킷 구조

SSL 패킷은 Record 영역과 Protocol 영역으로 나뉘어 지며 각 Protocol의 구조는 오른쪽과 같습니다.

이들의 조합을 통해 SSL Handshake 과정 및 SSL 통신을 진행하게 됩니다.

2. CLIENT Hello

CLIENT Hello는 SSL Handshake 과정의 가장 첫번째 단계입니다.

CLIENT가 SERVER와 SSL 통신을 하기위해 최초 협상을 시도하는 단계입니다.

아래는 Wireshake를 통해 패킷을 캡쳐한 것입니다.

앞서 말씀드린 SSL 패킷의 구조를 기억하시면서 지금부터 각 번호에 맞게 살펴보도록 하죠

1) Record Layer 영역은 Content type, Version, Length로 나뉘어져 있습니다.

Content Type은 보내는 패킷의 프로토콜 종류를 나타내며 각각의 값은 아래와 같습니다.

- Change Cipher Soec 프로토콜 (20)
- Alert 프로토콜 (21)
- Handshake 프로토콜 (22)
- Application Data (23)따라서 1번은 'Handshake 프로토콜이며 Version은 TLS 1.2를 사용하며 그 길이는 407이다' 입니다.

 

2) Handshake 프로토콜 영역은 Handshake type, Length, Body부분으로 나누집니다.

Handshake Type은 SSL Handshake 과정중에 현재의 과정을 나타내는 것이라 생각하셔도 될 것 같습니다.

그 종류에 따른 값들은 아래와 같습니다.

- Hello request (0)
- Client Hello (1)
- Server Hello (2) 
- Certificate (11) :
- Server Key Exchange (12)
- Certificate Request (13)
- Server Hello Done (14)
- Certificate Verify (15)
- Client Key Exchange (16)
- Finished (20)

따라서 2번은 'Handshke 중 Client Hello 패킷이며, Version은 TLS 1.2를 사용하며 그 길이는 403이다' 입니다.

 

3) Random 값은 SSL Handshake 과정 이후에 데이터를 암복호화  하는데 사용될 비밀키를 만들기 위해 사용되는 재료로 Random의 난수값을 생성하여 Server에게 전달합니다.

 

4, 7) 기존에 SSL Handshake 과정을 맺은 이력이 있다면 Session ID 혹은 Session Ticket이 존재하며, Client는 존재하는 값에 대해 명시해서 보냅니다. 그러나 현재 그 값들이 0이면 Session ID, or Session Ticket이 존재하지 않는다는 것을 뜻하며 이는 SSL Handshke 과정을 전부 수행하여야 한다고 볼 수 있습니다.

 

5, 6) Client에서 지원이 가능 Cipher Suite 값 리스트를 서버에게 전달합니다.

Cipher Suite가 무엇인지 잘 모르신다면 아래의 URL 주소를 참고해 주세요~

https://run-it.tistory.com/30

 

오늘은 SSL HandShake 과정 중 첫번째 Client Hello 과정에 대해 알아보았습니다.

파헤치고 파헤치고 또 파헤쳐봐도 알아야 할 것이 넘쳐나는 SSL 세상인 것 같습니다.

부족한 부분이 있으면 또 채워보도록 하겠습니다.