SSL/TLS Handshake

wannabeking·2022년 10월 2일
0

CS

목록 보기
24/27
post-thumbnail

HTTPS 통신을 위해서는 클라이언트가 서버 인증서를 확인하고 서로의 암호화 규칙을 정하여 통신을 시작해야한다.

이 과정은 SSL/TLS Handshake라고 불린다.

이는 대칭 키와 공개 키의 단점을 보완하고 장점을 살리기 위함이다.

대칭 키 암호화 방식은 비용이 싸다는 장점이 있지만, 비밀스럽게 키를 공유해야 한다.
공개 키 암호화 방식은 공개 키가 공유되어도 서버만 복호화 가능하지만 비용이 비싸다.

  • 클라이언트는 서버에 Client Hello로 연결을 시도하며 자신이 사용 가능한 암호화 방식들을 담아 보낸다. 이는 Cipher Suite에 들어있다.

  • 서버는 클라이언트에 Server Hello로 응답하며 요청한 암호화 알고리즘들 중 하나를 선택하여 알린다.

  • Certificate는 서버가 자신의 인증서를 클라이언트에 전달하는 것이다. 인증서는 CA의 공개 키로 복호화가 가능하며 이를 통해 진위 여부를 판별할 수 있다.

  • 만약 인증서에 서버의 공개 키가 없다면 Server Key Exchange로 전달하며 생략 가능하다. Client Hello에 따른 모든 응답이 끝나면 Server Hello Done을 보낸다.

  • 클라이언트는 서버와 둘만 알고있는 암호화 방식을 정하여(대칭 키) 서버의 공개키로 암호화해 서버로 보낸다. 이 과정을 Client Key Exchange라 한다.

  • 클라이언트, 서버 모두 Change Ciper Spec으로 준비 완료를 알리고 Finished로 종료한다.



profile
내일은 개발왕 😎

0개의 댓글