자격증/정보보안기사

TLS/SSL Handshake (SSL인증서)

부소대장 2024. 2. 7. 19:00
반응형

인증기관(CA)으로부터 SSL인증서를 발급받은 웹 사이트는 HTTPS 통신 프로토콜을 사용하여 데이터 송/수신간 안전한 암호화 통신을 수행한다.

 

SSL인증서를 발급받은 웹 사이트는 아래 그림처럼 인증서 정보를 확인할 수 있다.

공개된 SSL인증서에는 발급기관 정보, 발급일, 만료일, 공개키 정보가 담겨있다.

 

 

SSL인증서는 다음과 같은 과정을 거쳐 발급된다.

① 서버는 서버의 공개키(public key)와 비밀키(private key)를 생성한다.

② 서버는 인증기관(CA)에게 서버의 공개키(public key), 서버 정보를 전달한다.

③ 인증기관(CA)은 서버로부터 받은 정보를 담은 SSL인증서를 발급한다.

④ 인증기관(CA)은 인증서를 암호화하기 위해, CA의 공개키(public key)와 비밀키(public key)를 생성한다. CA의 비밀키를 이용하여 SSL인증서를 암호화한다.

⑤ 인증기관(CA)은 암호화한 SSL인증서를 서버에게 전달한다.

 

 

SSL Handshake 동작 원리 및 과정

- 서버와 클라이언트가 서로 주고받을 데이터의 안전한 암호화를 위한 암호화 알고리즘을 결정하고, 서로의 대칭키를 얻기 위한 과정이다.

 

Client-to-Server Handshake 과정

 

상단의 하늘색 영역은 TCP 프로토콜의 3-way handshke 과정이며, 이후 노란색 영역이 SSL Handshake 과정이다.

 

SSL Handshake 과정을 내 PC(10.x.x.x)와 티스토리 웹 사이트(211.249.222.33)를 대상으로 패킷을 통해 확인해보겠다.

 

1. Client -> Server 연결시도 (Client Hello)

클라이언트(내PC)가 연결 대상서버(티스토리)에게 연결 시도하는 패킷을 전송한다.

Session ID, Protocol Version, Cipher Suite 등의 내용이 확인 가능하다.

Cipher Suites는 클라이언트(내PC)가 사용 가능한 Cipher suite 목록이다.

 

 

2. Server -> Client 응답 (Server Hello

연결 대상서버(티스토리)에서 클라이언트(내PC)에게 응답 패킷을 전송한다.

클라이언트에서 받은 cipher suite 목록 중 cipher suite 1개를 선택해서 응답함

 

 

3. Server -> Client (Certificate, Server Key Exchange, Server Hello Done)

Certificate : 서버의 SSL인증서 내용을 담고있다.


Server Key Exchange : Certificate 내의 SSL 인증서에 서버의 공개키(public key)가 없는 경우, 서버가 직접 전달함을 의미한다. 즉, 인증서 내부에 서버의 공개키가 존재한다면 Server Key Exchange 는 생략된다.


Server Hello Done : 서버가 행동을 마쳤다는 의미

 

4. Client에서 Server의 SSL인증서 검증

클라이언트(내PC)에서 서버(티스토리)의 인증서가 인증기관(CA)을 통해 발급받은 인증서인지를 검증한다. 검증 원리는 다음과 같다.

SSL인증서를 발급한 CA는 인증서 암호화를 위해 CA의 공개키와 비밀키를 생성했으며 CA의 비밀키를 이용하여 암호화했다. 따라서 클라이언트는 CA의 공개키를 이용해서만 복호화가 가능하다. 클라이언트가 CA의 공개키를 이용하여 인증서를 복호화했을 때 복호화가 되었다는 것은 SSL인증서가 CA로부터 발급되었다는 것을 검증한다.

* CA의 공개키는 모두에게 접근 가능하다.

 

 

5. Client -> Server (Client Key Exchange, Change Cipher Spec)

클라이언트는 서버와 데이터를 주고받을 때 암호화를 사용해야하기 때문에 데이터 암호화를 위한 대칭키(비밀키)를 생성하고, 전 단계에서 SSL인증서 복호화를 통해 얻은 서버의 공개키를 이용하여 암호화해서 서버에게 전달한다.

이후 Change Cipher Spec으로 SSL Handshake의 종료를 알린다.

 

 

6. Server / Client SSL Handshake Finished

클라이언트가 서버의 공개키를 이용하여 암호화한 대칭키(비밀키)는 서버의 개인키를 이용하여 복호화한 후 획득한다.

통신할 준비가 완료된 서버는 클라이언트에게 Change Ciper Spec을 보내고 SSL Handshake의 종료를알린다.

반응형

'자격증 > 정보보안기사' 카테고리의 다른 글

FTP  (1) 2024.02.15
대칭키 암호 vs 공개키 암호  (0) 2024.02.14
IPSec  (0) 2024.02.13
DRDoS  (0) 2023.07.26
DoS(Denial Of Service)  (0) 2023.03.07