Infomation

SSL Handshake

DarkSoul.Story 2013. 1. 29. 19:23
반응형

SSL 연결 과정에 대해서 알아보자. SSL 연결과정은 가장 먼저 클라이언트와 SSL 서버간의 3-Way Handshk모두 이루어진 후 아래와 같이 진행된다.


 

 

   Client Hello

클라이언트가 SSL 서버에 SSL 연결을 처음으로 시도할 때 클라이언트의SSL버전 , 클라이언트에서 생성한 임의의 난수, 세션 식별자, Cipher Suit 리스트, 클라이언트가 지원하는 압축 방법 종류등의 정보를 서버로 전송한다.




 

 

   Server Hello

서버가 클라이언트에서 보낸 Client Hello 메시지를 처리한 다음에 Server Hello 또는 Handshake Failure Alert 메시지를 클라이언트로 전송한다. Server Hello 메시지에는 서버의 SSL 버전, 서버에서 생성한 임의의 난수, 세션 식별자, 클라이언트가 보낸 Client Hello 메시지속에 있는 Cipher Suit 리스트 중 하나를 선택한 Cipher Suit, 클라이언트가 지원하는 압축 방법 종류 중 서버가 선택한 압축 방법등의 정보가 포함되어 있다.




  

   Server Certificate / Server Key Exchange

서버 인증하는 단계로 서버 자신의 공개키 인증서를 가지고 있다면, Server Certificate 메시지를 클라이언트로 보내며, 만약 인증서가 없거나 인증서를 가지고 있더라도 서명용으로만 사용한다면 Server Key Exchange 메시지를 클라이언트로 보낸다. 여기서 사용되는 인증서의 종류 및 키 교환에 사용되는 알고리즘은 Server Hello 메시지에서 서버가 선택한 Cipher Suit을 사용한다. 참고로 서버 인증서에 Diffie-Hellman 매개 수가 포함되어 있다면 Server Key Exchange 메시지는 생략된다.

 

   Certificate Request

서버는 클라이언트가 신뢰 할 수 있는지 확인하기 위해 클라이언트

의 인증서를 요구한다. 경우에 따라 생략된다.

 

   Server Hello Done

서버가 클라이언트에게 보낼 메시지를 모두 보냈다는 의미로 보내는 메시지이다. 이 메시지를 받은 클라이언트는 서버로부터 더 이상 메시지 전송이 없음을 알 수 있게 된다. 서버가 이 메시지를 보내는 이유는 Certificate Request 메시지가 생략되거나 그렇지 않을 수 있기 때문이다.

 

   Client Certificate

서버가 클라이언트에게 클라이언트의 인증서를 보내라고 요청하였을 경우 자신의 인증서를 보낼 때 사용하는 메시지 이다.

만약 인증서를 가지고 있지 않다면, No Certificate Alert 메시지를 서버로 보낸다.

 

   Client Key Exchange

클라이언트는 세션키를 생성 할 때 이용되는 48 바이트의 pre_master_secret를 생성 한 후 선택된 공개키 알고리즘에 따라 암호화 하여 서버에 전송한다.



 

 

   Certificate Verify

클라이언트는 서버의 요청으로 전송되는 클라이언트의 인증서를 서버가 쉽게 확인 할 수 있도록 핸드쉐이크 메시지를 전자 서명하여 전송한다. 서버는 Certificate Verify메시지를 통해 클라이언트 인증서의 공개키가 유효한지 확인 후 클라이언트 인증을 마친다.  

 

   Change Cipher Specs / Finished (클라이언트)

클라이언트는 마지막으로 Change Cipher Specs 메시지를 서버에 전송한다. 이후에 전송되는 모든 메시지는 서버와 협상된 알고리즘

과 키를 이용한 다는 것을 서버에 알리며, Change Cipher Specs메시지를 전송 하고 바로 Finished 메시지를 생성하여 서버에 전송한다. 따라서Finished 메시지에는 서버와 협상된 알고리즘 및 키가 처음으로 적용이 되는 것이다.

 

   Change Cipher Specs / Finished (서버)

서버는 클라이언트에서 보낸 메시지를 모두 확인한 후 Change Cipher Specs 메시지를 클라이언트에게 전송 후 바로 바로 Finished 메시지를 생성하여 전송함으로써 클라이언트와 SSL 서버간의 SSL 핸드 쉐이크를 종료하게 된다

반응형