네트워크 - TLS / SSL HandShake

고태희·2022년 3월 14일
0

CS

목록 보기
17/20
post-thumbnail

HTTPS에서 클라이언트와 서버간 통신 전 SSL 인증서로 신뢰성 여부를 판단하기 위해 연결하는 방식

순서

  1. 클라이언는 서버에게 client hello 메세지를 담아 서버로 전송.
    이 때 암호화된 정보(버전, 암호알고리즘, 압축방식 등)을 담는다.

  2. 서버는 클라이언트가 보낸 암호알고리즘과 압축방식을 받고, 세션IDCA인증서server hellp 메세지와 함께 담아 응답.
    CA인증서에는 handshake 과정 속 암호화에 사용할 공개키를 담고 있다.

  3. 클라이언트는 CA인증서 유효성 검사 진행 ( 자신의 CA 목록을 확인하여 )

  4. CA인증서 신뢰성 확보되었다면, 클라이언트는 난수 바이트를 생성하여 서버의 공개키로 pre master secret 키 생성
    이는 대칭키를 정하는 데 사용이 되고, 앞으로 서로 메시지를 통신할 때 암호화하는데 사용된다.

  5. 만약 2번단계에서 서버가 클라이언트 인증서를 함께 요구했다면,
    클라이언트의 인증서와 클라이언트의 개인키로 암호화된 pre master secret 키를 보낸다.

  6. 서버는 클라이언트의 인증서를 확인 후 , 수신한 pre master secret 키 를 자신의 개인키(비밀키)로 복호화 후
    대칭 마스터 키 생성

  7. 클라이언트는 handshake 과정이 완료되었다는 finished 메시지를 서버에 보내면서, 지금까지 보낸 교환 내역들을 해싱 후 그 값을 대칭키로 암호화하여 같이 담아 보낸다.

  8. 서버도 동일하게 교환 내용들을 해싱 후 클라이언트에서 보내준 값과 일치하는 지 확인한다. 일치하면 서버도 마찬가지로 finished 메시지를 대칭 마스터 키 로 암호화하여 보낸다.

  9. 클라이언트는 해당 메시지를 대칭키로 복호화하여 서로 통신이 가능한 신뢰받은 사용자란 걸 인지하고, 클라이언트와 서버는 앞으로 해당 대칭키 ( 대칭 마스터키 ) 로 데이터를 주고받을 수 있게 된다.

대칭 마스터 키를 이용하여 session key를 만들게 된다.
이후 데이터를 주고 받을 떄 session key를 대칭키 방식으로 이용하여 통신하게 됩니다.
통신이 끝나면 세션키 폐기한다.

0개의 댓글

관련 채용 정보