SSL/TLS protocol

hyunnu·2025년 4월 28일
0

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

  • 단말(PC, Server 등)과 단말간의 암호화 통신을 위한 프로토콜
  • SSLv1은 최초의 버전으로서 문제가 많아 발표되지 않고 사장됨
  • TLS는 SSL의 업데이트 버전이며 명칭만 다름
  • SSL은 개인정보 보호를 제공하기 위해, 웹에서 전송되는 데이터를 암호화한다.(데이터를 가로채려해도 거의 복호화가 불가능)
  • SSL은 클라이언트와 서버간에 핸드셰이크를 통해 인증이 이루어짐
  • 데이터 무결성을 위해 데이터에 디지털 서명을 하여 데이터가 의도적으로 도착하기 전에 조작된 여부를 확인

SSL/TLS 핸드셰이크

핸드셰이크는 클라이언트와 서버간의 메세지 교환이며, HTTPS 웹에 처음 커넥션할 때 진행된다.
핸드셰이크의 단계는 클라이언트와 서버에서 지원하는 암호화 알고리즘, 키 교환 알고리즘에 따라 달라진다.
일반적으로는 RSA 키 교환 알고리즘이 사용된다.

RSA 키 교환 알고리즘 순서

  1. 클라이언트 -> 서버 메세지 전송: 이때 핸드셰이크가 시작된다. 이 메세지에는 TLS 버전, 암호화 알고리즘, 무작위 바이트 문자열이 포함된다.
  2. 서버 -> 클라이언트 메세지 전송: 클라이언트의 메세지에 응답으로 서버의 SSL 인증서, 선택한 암호화 알고리즘, 서버에서 생성한 무작위 바이트 문자열을 포함한 메세지를 전송.
  3. 인증: 클라이언트가 서버의 SSL 인증서를 인증 발행 기관에 검증
  4. 예비 마스터 암호: 클라이언트는 무작위 바이트 문자열을 공개 키로 암호화된 premaster secret 키를 서버로 전송
  5. 개인 키 사용: 서버가 premaster secret 키를 개인 키를 통해 복호화한다.(개인 키로만 복호화 가능)
  6. 세션 키 생성: 클라이언트롸 서버는 클라이언트가 생성한 무작위 키, 서버가 생성한 무작위 키, premaster secret 키를 통해 세션 키를 생성, 양쪽은 같은 키가 생성되어야 한다.
  7. 클라이언트 완료 전송: 클라이언트는 세션 키로 암호화된 완료 메세지를 전송
  8. 서버 완료 전송: 서버도 세션 키로 암호화된 완료 메세지를 전송
  9. 핸드셰이크 완료: 핸드계이크가 완료되고, 세션 키를 이용해 통신을 진행
profile
Data Engineer / Back-End Developer

0개의 댓글