SSL 인증서
로 신뢰성 여부를 판단
하기 위해 연결하는 방식client hello 메시지
를 담아 서버로 보낸다. 이때 암호화된 정보
를 함께 담는데, 버전, 암호 알고리즘, 압축 방식 등을 담는다. (C --"client hello" + 암호화된 정보--> S) 세션 ID와 CA 공개 인증서를 server hello 메시지
와 함께 담아 응답한다. 이 CA 인증서에는 앞으로 통신 이후 사용할 대칭키가 생성되기 전, 클라이언트에서 handshake 과정 속 암호화에 사용할 공개키
를 담고 있다. (S --"server hello" + 세션ID, CA공개 인증서-->C)CA 인증서에 대해 유효한 지 CA 목록에서 확인
하는 과정을 진행한다. (C : CA 인증서 유효성 확인)CA 인증서에 대한 신뢰성이 확보
되었다면, 클라이언트는 난수 바이트를 생성
하여 서버의 공개키로 암호화
한다. 이 난수 바이트는 대칭키
를 정하는데 사용이 되고, 앞으로 서로 메시지를 통신할 때 암호화
하는데 사용된다. (C --난수 바이트 생성해서 서버의 공개키로 암호화--> S)난수 바이트를 자신의 개인키로 복호화 후 대칭 마스터 키 생성에 활용
한다. (S:난수 바이트를 개인키로 복호화 -> 대칭 마스터키 생성에 활용)finished 메시지
를 서버에 보내면서, 지금까지 보낸 교환 내역들을 해싱 후 그 값을 대칭키로 암호화
하여 같이 담아 보내준다. (C --"finished" + 교환 내역을 해싱 후 대칭키로 암호화해서 전송 --> S)교환 내용들을 해싱
한 뒤 클라이언트에서 보내준 값과 일치하는 지 확인
한다. 일치하면 서버도 마찬가지로 finished 메시지
를 이번에 만든 대칭키로 암호화
하여 보낸다. (S-- 대칭키로 암호화된 "finished" + 교환 내역을 해싱 후 값 일치 확인 --> C)대칭키로 복호화
하여 서로 통신이 가능한 신뢰받은 사용자란 걸 인지
하고, 앞으로 클라이언트와 서버는 해당 대칭키로 데이터를 주고받을 수 있게
된다. (S : finished 메시지를 대칭키로 복호화 후 신뢰성 확인하고 해당 대칭키로 서버와 데이터 주고받을 수 있음)[출처]