SSL과 TLS를 알아보기 전에 우선 대칭키와 비대칭키를 알아보자
대칭키는
어떤 정보를 암호화, 복호화할 때 사용하는 키가 동일(대칭)하다.
즉, 어떤 정보가 대칭키를 통해 암호화 되었다면 복호화할 때 똑같은 키를 가지고 있어야 한다.
반면에 비대칭키는
어떤 정보를 암호화, 복호화할 때 사용하는 키가 다른(비대칭) 경우이다.
여기서 공개키와 개인키가 있는데
공개키는 말 그대로 공개가 되어도 되는 키 / 개인키는 개인만 가지고 있는 키이다.
예를 들어 공개키로 암호화했을 경우 개인키로 복호화되는 경우가 비대칭키의 예이다.
반면 개인키로 암호화를 했을 경우 공개키로 복호화를 할 수 있다.
SSL과 TLS은
보안프로토콜의 하나로서 연결의 보안을 제공하고 2개의 파티간의 프라이버시와 데이터 무결성을 확보한다.
TLS는 Netscape SSL 3.0에서 발명된 것이지만 SSL과 TLS가 상호 작동하지는 않는다.
SSL/TLS handshake의 동작과정은 아래와 같다.
1. SSL/TLS 클라이언트는 버전, 압축방식, CipherSuite 등을 암호화하여 SSL/TLS 서버에게 보낸다.
2. SSL/TLS 서버는 클라이언트에게 클라이언트가 제공한 리스트 중에
하나의 CipherSuite, session ID, digital certificate 등을 보낸다.
만약 client 인증을 위한 digital certificate이 필요하면
거기에 대한 “client certificate request”도 함께 보낸다. (서버 공개키와 같이)
3. 클라이언트는 서버의 digital certificate를 검증한다.
4. 클라이언트는 임의의 난수 byte를 보내는데,
이는 추후 클라이언트-서버 사이의 대칭키를 만들기 위해 사용이 되고 임의의 난수 byte는 서버의 공개키를 통해 암호화한다.
5. 만약 서버가 2번에서 “client certificate request”를 요구하였다면,
클라이언트는 클라이언트의 개인키를 통하여 랜덤 난수와 digital certificate를 암호화하여 등을 보낸다.
(certificate가 없으면 없다는 alert를 송부)
6. SSL은 클라이언트의 certificate를 확인한다. (if required)
7. 클라이언트는 “finished” message를 보내는데, 이는 비공개키로 암호화 되어 있다. ⇒ handshake 완료!
8. 서버는 “finished” message를 보내는데, 이는 비공개키로 암호화 되어 있다. ⇒ handshake 완료!
9. SSL/TLS 세션 동안 서버와 클라이언트는 서로 메시지를 주고 받을 수 있으며,
해당 내용은 대칭된 암호화키를 가지고 암호화하여 주고받음 (아래 그림에서는 5번)
위의 과정을 그림으로 나타내면 아래와 같다.
참고
https://www.ibm.com/docs/en/ibm-mq/7.5?topic=ssl-overview-tls-handshake
https://myjamong.tistory.com/293
'Study > Network' 카테고리의 다른 글
[Network] HTTP와 HTTPS (0) | 2023.04.03 |
---|---|
[Network] OSI 참조모델 (TCP/UDP와 handshake) (0) | 2023.04.03 |
[Network] OSI 참조 모델 (OSI 7계층) (0) | 2023.04.03 |