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
* 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 |
댓글