foxy_wany 2020. 10. 14. 08:47

SSL 통신은 암호화 통신이다. 

즉, Clinet 와 Server 간의 암호화 알고리즘, 암호화 키, 신뢰할 수 있는 인증서 등이

먼저 확인되어야 하며, 그렇기 위해 Handshake 과정을 거친다. 

아래는 HandShake 순서이다. 

 

[ HandShake 순서 ]

그림에서 다 표현하지 못한 부가적인 설정이다. 

( 그럼에 표기된 번호를 기준으로 설명한다. )

 

2번 단계 : Client 에서 전달된 암호화 알고리즘 리스트중 서버가 사용할 수 있는게 1개 이상이라면, 

              알고리즘 리스트 중 가장 보안이 높은 알고리즘을 선택한다. 

4번 단계 : 선택된 알고리즘에 따라 서버에서 공개키는 달라지며 그림에서 오타인데 '교환' 이 아니라 '전달' 이다. 

9번 단계 : Server 에서는 개인키로 Client 가 보낸 'Pre Master Secret' 데이터를 복호화 하여 sessionKey를 획득할

              수 있다. 

이하 설명은 생략한다. ( 그림을 보면 쉽게 이해가 됨 )

 

위 HandShake 가 완료 되면 Server 와 Client 는 동일한 sessionKey 를 가지고 있다.

 

이후 SSL 통신 시 데이터 암/복호화는 Server 과 Client 가 가지고 있는 sessionKey 를 사용한다. ( 대칭키 사용 )