0netw0m1ra

SSL/TLS 통신과정 본문

나홀로 스터디

SSL/TLS 통신과정

M1RA 2021. 5. 30. 15:07

<SSL/TLS 통신시 주고받는 메시지>

 

① 먼저 데이터를 주고 받기 전, TCP 3 way handshake 과정을 통해 연결을 맺는다.

 

② client에서 Client_ID, Client_Rand, ciphersuite 목록을 server에게 전송한다.

 

③ server에서는 ciphersuite의 목록 중에서 자신이 사용할 ciphersuite을 하나 선택하여 알려주고, S_ID, S_Rand를 함께 전송한다.

-> ciphersuite 예시 : TLS_RSA_WITH_AES_256_CBC_SHA256

그 후, client와 sever는 각각 자신의 공개키와 개인키를 생성한다.

 

④ Server 인증서, Server Key Exchange, Certificate Request, Server Hello Done 은 선택사항이다.

이 단계에서 server가 client에게 인증서를 보내면 ⑤단계에서 client가 인증서가 CA에 의해 발급되었는지 확인하고 서버를 인증하게 된다.

인증서를 통해 공개키를 상대방에게 전달하게 되는데 이때, 인증서가 없을 경우를 대비하여 보내지는 것이 Server Key Exchange이다. 인증서가 없으면 Server Key Exchange를 통해 server의 공개키를 보내게 되는 것이다.

 

⑤ Client_Rand와 Server_Rand를 이용하여 premaster secret을 생성한다. 후에 master key로 사용된다.

server의 공개키(CA에 의해 공개된 인증서의 공개키)를 이용해 암호화 하여 전송한다.

 

⑥ Client Certificate는 선택사항이고, 나머지 항목과 함께 전송한다.

위 ④와 같은 방법으로 client의 공개키도 전송하게 되는 것이다.

 

⑦ server에서는 개인키를 이용하여 premaster secret을 얻을 수 있게 되고, ⑥과정에서 전송된 인증서를 통해 client를 인증할 수 있다.

 

⑧ 협상한 암호명세를 이후부터 적용하고, 변경함을 알리고 협상완료를 알린다.

 

⑨ 협상한 암호명세를 이후부터 적용하고, 변경함을 알리고 협상완료를 마친다.

 

⑩ ②~⑨로 완성된 premaster-> master -> session key 를 통해 session key(대칭키)로 암호화 복호화를 수행하여 데이터를 통신한다.