본문 바로가기
Computer Science/Network

TLS/SSL handshake

by rueMi 2023. 10. 25.

TLS/SSL handshake

HTTPS 통신에서 클라이언트와 서버 간 통신 전에, SSL 인증서로 신뢰성 여부를 판단하기 위해 연결하는 방식을 말한다.

진행 순서

  1. C : “Client Hello”
    1. 컴퓨터 버전, 암호 알고리즘 목록, 사용 가능한 압축 방식을 전송한다.
  2. S : “Server Hello”
    1. 받은 목록 중에서 암호 알고리즘, 압축 방식을 선택한다 + 세션 ID와 CA에서 사인한 서버의 공개 인증서를 전송한다.
  3. C
    1. 서버가 보낸 SSL 인증서가 CA 목록에 있는 지 확인한다.
    2. SSL이 확인되면 C - S 사이에 사용할 대칭키를 생성하기 위해 난수 바이트를 생성해 서버의 공개키로 암호화하여 전송한다. 이 난수 바이트는 대칭키를 생성할 때 활용된다.
    3. 만약 2번 단계에서 서버가 클라이언트 인증서를 함께 요구했다면, 클라이언트의 인증서와 클라이언트의 개인키로 암호화된 임의의 바이트 문자열을 함께 보내준다.
  4. S
    1. 클라이언트가 보낸 대칭키를 서버의 개인키로 복호화하여, 대칭 마스터 키 생성에 활용한다.
  5. C : “finished”
    1. 클라이언트는 handshake 과정이 완료되었다는 “finished” 메시지를 서버에 보내면서, 지금까지 보낸 교환 내역들을 해싱 후 그 값을 대칭키로 암호화하여 같이 담아 보내준다.
  6. S : “finished”
    1. 서버도 동일하게 교환 내용들을 해싱한 뒤 클라이언트에서 보내준 값과 일치하는지 확인한다. 일치하면 서버도 “finished” 메시지를 만든 대칭키로 암호화하여 보낸다.
  7. 클라이언트는 해당 메시지를 대칭키로 복호화하여 서로 통신이 가능한 신뢰받은 사용자라는 것을 인지하고, 앞으로 클라이언트와 서버는 해당 대칭키로 데이터를 주고받을 수 있게 된다.

https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Network/TLS%20HandShake.md

 

'Computer Science > Network' 카테고리의 다른 글

OSI 7 Layer - 1 Physical Layer, 2 Data link Layer  (0) 2024.03.17
CORS란 무엇인가요?  (0) 2024.01.12
HTTP & HTTPS  (0) 2023.10.25
대칭키 & 비대칭키  (0) 2023.10.24
TCP & UDP  (0) 2023.10.24