conan.log
로그인
conan.log
로그인
TLS/SSL Handshake
코난
·
2023년 12월 6일
팔로우
0
0
CS 면접 정리
목록 보기
20/67
SSL/TLS Handshake
HTTPS 통신에서 클라이언트가 서버에 접속하면 서버는 클라이언트에게 SSL 인증서 정보를 전달하고, 해당 인증서가 확인된 이후에 내부에 존재하는 공개키를 활용해 세션키를 생성하고 이를 활용해서 통신하는 과정을 SSL/TLS Handshake라고 함
SSL은 Secure Socket Layer, TLS는 Transport Layer Security
TLS는 SSL의 취약성을 해결한 버전의 프로토콜임(SSL이 TLS의 이전버전이라고 생각하면 됨)
HTTP는 원래 TCP와 직접 통신했지만, HTTPS에서 HTTP는 SSL와 통신하고 SSL이 TCP와 통신하게 됨.
파란색 부분은 TCP layer의 3-way handshake
노란색 부분은 SSL Handshake
1. Client Hello
handshake의 시작으로 클라이언트가 서버로 hello 메세지를 전송함
클라이언트가 지원하는 TLS(SSL) 버전, 지원되는 암호 제품군(Cipher Suite), 그리고 무작위 바이트 문자열인 client random이 메세지에 포함됨
Server Hello
Client Hello 메세지에 대한 응답 메세지
서버의 SSL 인증서, 서버에서 선택한 암호 제품군(Chosen Cipher Suite), 서버에서 생성한 무작위 바이트 문자열인 server random이 메세지에 포함됨
Verify Server Certificate
클라이언트가 서버의 SSL 인증서를 인증서 발행기관(CA)을 통해 검증
서버가 인증서에 명시된 서버인지, 클라이언트가 상호작용중인 서버가 실제 해당 도메인의 소유자인지 확인
Client Key Exchange
클라이언트는 서버의 SSL 인증서에서 공개키를 받음
검증이 완료되면 The premaster secret라고 하는 무작위 바이트 문자열을 공개키로 암호화하여 전송
Send Client Certificate
서버가 클라이언트의 인증서를 요구한다면 서버의 인증서와 같은 방식으로 암호화를 진행해 함께 전송
Verify Client Certificate
서버가 클라이언트로부터 받은 The premaster secret을 서버의 개인키를 통해 해독
Client Finished
클라이언트가 client random, server random, The premaster secret를 이용해 대칭키로 활용할 세션키를 생성(master seceret)
클라이언트가 세션키로 암호화된 finished 메세지를 전송함
Change Cipher Spec 메세지를 송심함으로써 이 메세지 이후의 통신은 암호키를 사용해서 진행한다는 것을 의미
Server Finished
서버가 client random, server random, The premaster secret를 이용해 대칭키로 활용할 세션키를 생성(master seceret)
서버가 세션키로 암호화된 finished 메세지를 전송함
Change Cipher Spec 메세지를 송심함으로써 이 메세지 이후의 통신은 암호키를 사용해서 진행한다는 것을 의미
Exchange messages
handshake가 완료되고, 세션키를 이용해 메세지를 주고받음
참고
https://inuplace.tistory.com/1086
https://loosie.tistory.com/718
코난
몸은 커졌어도, 머리는 그대로... 하지만 불가능을 모르는 명탐정 현아! 진실은 언제나 하나!
팔로우
이전 포스트
HTTP & HTTPS
다음 포스트
Sync/Async 통신
0개의 댓글
댓글 작성