Pre Master Secret 값은 서버가 인증서를 통해 전달한 공개키로 암호화하여 전송되며 서버는 해당 값을 공개키에 매칭되는 개인키로 복호화한다.
암호화된 HTTP 데이터를 전송하기 위 정보를 교환하는 과정
Client Hello
Pre Master Secret 을 생성하기 위한 클라이언트 랜덤 데이터와 클라이언트가 지원하는 암호화 방식 목록, 세션 ID를 전송
Server Hello
Pre Master Secret 을 생성하기 위한 서버 랜덤 데이터와 인증서, Client Hello 단계에서 받은 암호화 방식 목록 중에서 사용 가능한 암호화 방식을 선택해서 전송.
Pre Master Secret 전송
인증서를 수신한 클라이언트는 내장된 CA의 공개키를 이용해서 인증서를 복호화(브라우저는 CA 리스트를 가지고 있음)
클라이언트는 서버 랜덤데이터와 클라이언트 랜덤데이터를 조합하여 Pre Master Secret 를 생성한 후 해당 값을 인증서에 포함된 서버의 공개키로 암호화하여 서버에 전송. 서버에서는 공개키에 매칭되는 개인키로 복호화한 Pre Master Secret 값을 통해 Session Key 를 얻어낸다.
SSL Handshake 종료
전송 데이터의 암호화 / 수신 데이터의 복호화
데이터를 동일한 Session Key 를 통해 암호화 및 복호화
클라이언트는 전송할 데이터를 Pre Master Secret를 통해 얻은 Session Key 를 통해 암호화하여 전송
서버는 Pre Master Secret를 통해 얻은 Session Key 를 통해 수신한 데이터를 복호화하여 처리