본문 바로가기
컴퓨터공학/컴퓨터통신

[Protocol] TLS Handshake

by 일상 속 둔치 2020. 8. 2.

SSL (Secure Socket Layer) / TLS (Transport Layer Security)

 

네트워크에서 암호화하여 데이터를 전송하는 프로토콜이다.

 

이전에는 SSL이었고 최근에는 TLS이라는 더 강력한 버전의 SSL을 사용한다.

 

SSL/TLS가 사용되는 대표적인 예인 HTTPS는

 

HTTP통신에 SSL 인증서를 사용하여 보안을 강화시키는 방법이다.

 

이때, TLS가 아니라 SSL로 이야기하는 것은 일반적으로 SSL을 많이 사용해왔기 때문이다.

 

그렇다면, 이 SSL/TLS로 어떻게 암호화 및 인증을 하는지 알아보자!

 

1. Client Hello (Client -> Server)

Client가 사용할 SSL의 버전 정보, Cipher 할 수 있는 List, Client 난수를 생성해서 전송

 

2. Server Hello (Server -> Client)

Server는 Client가 보낸 Cipher List 중 하나를 선택하여 Server 난수를 생성해서 함께 전송

 

3. Server Certificate (Server -> Client)

Server는 자신의 인증서를 Client에게 전송

Client는 인증서를 2번에서 정한 암호 방식의 복호화를 통해 Server의 공개키 획득

* CA의 인증서를 함께 전송하기도 한다.

 

4. Server Key Exchange (Server -> Client)

8번에서 Client가 pre-master-secret을 만들 때 사용할 키를 전송

 

5. Certificate Request (Server -> Client)

Server가 인증서를 Client한테 요청

 

6. Server Hello Done (Server -> Client)

Server가 Client에게 메시지를 모두 보냄

 

--- Server는 Client에 대해 인증이 완료되고, Client는 Server의 공개키를 알 수 있다. ---

 

7. Client Certificate (Client -> Server)

Server의 인증서가 유효한지 확인하고 Client의 인증서를 Server에 전송

* CA의 인증서를 함께 전송하기도 한다.

 

8. Client Key Exchange (Client -> Server)

Client는 pre-master-secret을 Server의 공개키로 암호화해 Server에 전송한다.

Server는 pre-master-secret을 이용하여 Master Secret을 생성한다.

이후 Master Secret으로 Session Key를 생성하고 추후 암호화 통신에 사용한다.

* Session Key는 대칭키이다.

 

9. Certificate Verify (Client -> Server)

Client는 HandShake한 모든 메시지의 서명된 Hash 값을 전송한다.

Server도 Hash 값을 계산하여 같은지 비교한다.

* Client가 공개키에 해당하는 개인키를 가지고 있음을 Server에 증명하기 위해 사용

* Server가 Client에게 인증서를 요청한 경우 Server에서 검증

 

10. Change Cipher Spec (Client -> Server)

Client가 공유키를 생성하였으며 앞으로 메시지를 해당 암호화를 사용할 것을 전송

 

11. Finished (Client -> Server)

Client가 Server에게 Handshake가 성공적으로 완료 되었음을 전송

 

12. Change Cipher Spec (Client -> Server)

Server도 공유키를 생성하였음을 전송

 

13. Finished (Client -> Server)

Server도 Client에게 Handshake가 성공적으로 완료 되었음을 전송

 

14. 데이터 전송


참고 : https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.sec.doc/q009930_.htm

 

IBM Knowledge Center

Please note that DISQUS operates this forum. When you sign in to comment, IBM will provide your email, first name and last name to DISQUS. That information, along with your comments, will be governed by DISQUS’ privacy policy. By commenting, you are acce

www.ibm.com

* CA(Certificate Authority) : 디지털 인증서를 발급하는 기관, 공개키를 발급하고 관리한다.

'컴퓨터공학 > 컴퓨터통신' 카테고리의 다른 글

[Protocol] Nagle Algorithm  (0) 2020.08.02
OSI 7계층, TCP/IP 계층  (0) 2018.10.28
통신 모델  (0) 2018.09.16
LAN & WAN  (0) 2018.09.08
[Intro] 통신기술의 동향  (0) 2018.09.08

댓글