TLS 핸드셰이크 과정에 대해 설명해주세요.
프론트엔드와 관련된 질문이에요.
TLS 핸드셰이크는 브라우저와 서버가 TLS 프로토콜을 통해 암호화된 통신을 시작하기 전, 안전하게 연결을 설정하는 절차입니다. 이 절차는 보통 다음과 같은 흐름으로 이뤄집니다.
먼저 브라우저는 Client Hello 메시지를 보냅니다. 여기에는 브라우저가 지원하는 TLS 버전, 사용할 수 있는 암호화 알고리즘 목록, 세션 ID, 그리고 Client Random이라는 난수가 포함되어 있습니다.
서버는 이에 대해 Server Hello로 응답하면서, 서버가 선택한 암호화 방식, 자신의 Server Random 값, 그리고 디지털 인증서를 함께 보냅니다. 이 인증서 안에는 서버의 공개키와 CA의 서명이 포함되어 있으며, 브라우저는 이걸 통해 서버의 신원을 검증합니다.
검증이 완료되면 브라우저는 서버의 공개키로 Pre-Master Secret이라는 임시 비밀 값을 암호화해서 전송합니다. 서버는 자신의 개인키로 이를 복호화해 Pre-Master Secret 값을 복원하고, 이제 클라이언트와 서버는 서로 갖고 있는 Client Random, Server Random, 그리고 Pre-Master Secret을 기반으로 동일한 대칭키를 생성합니다. 이 대칭키는 이후 주고 받는 데이터를 암호화하고 복호화하는 데 사용됩니다.
마지막으로 서로 Finished 메시지를 교환하면서 대칭키로 암호화된 통신이 잘 되는지 확인하고 나면, 정상적인 HTTPS 통신이 시작됩니다.
📚 추가 학습 자료를 공유합니다.
공유하기
컨텐츠 피드백