[네트워크] TLS/SSL 핸드쉐이크 통신 과정 이해하기
- IT/네트워크(Network)
- 2022. 4. 3.
SSL 핸드쉐이크
SSL 핸드쉐이크는 TCP 연결이 성립된 상태(Established)에서 진행됩니다.
TLS/SSL 핸드쉐이크는 클라이언트가 HTTPS 웹 사이트를 탐색할 때 원본 서버를 찾기 시작할 때 발생
API, HTTPS, DNS쿼리를 할 때에도 TLS 핸드쉐이크가 발생합니다.
신뢰할 수 있는 사이트인지 판단
서버가 SSL 인증서를 제공(공개키와 서비스의 정보)
브라우저는 이 인증서를 발급한 CA가 자신의 CA리스트에 있는지 확인
존재한다면 CA의 공개키를 이용해 인증서 복호화, 이게 가능하면 신뢰 가능
SSL 핸드쉐이크 과정
1. 클라이언트 -> 서버 : SSL버전 정보, 암호화 방식, 무작위 바이트 문자열 전달, 이미 SSL 연결을 했었다면 세션 재사용 가능
2. 서버 -> 클라이언트 : 암호화 방식 중 서버가 사용하는 암호화 방식(방식 중 가장 높은 보안 수준의 방식 선택), 세션ID, 서버에서 생성한 무작위 바이트 문자열 그리고 클라이언트가 인증서를 요구하면 클라이언트에게 SSL 인증서(+공개키) 까지 전달
3. 클라이언트는 인증서 받은 후 신뢰할 수 있는 사이트인지 판단(브라우저), 이 과정에서 클라이언트는 공인인증 기관(CA)공개키로 인증서를 해독하여 서버의 공개키를 획득
4. 클라이언트 -> 서버 : 클라이언트가 자신과 서버의 무작위 바이트 문자열을 조합하여 pre master secret(PMS) 키를 생성 (이 키는 나중에 데이터를 주고 받을 때의 대칭키로 사용), 생성된 pre master secret 키를 3번에서 획득한 서버의 공개키로 암호화 하여 서버로 전달
5. 서버는 비밀키를 이용하여 복호화 하여 pre master secret 키를 획득
6. 클라이언트와 서버는 pre master key를 master key로 각자가 만들어 이 master key를 이용하여 session key를 생성, 이 후에는 데이터를 주고 받을 때 session key를 대칭키 방식으로 이용하여 통신
7. 통신 종료 후 session key 폐기
간단하게 말하자면
시작
TLS 버전 확인
암호화 방식 결정
서버 key 생성
세션 key 생성
세션 키를 이용하여 데이터 통신
종료
SSL 핸드쉐이크 과정 이전에 TCP 3 way 핸드쉐이크 과정이 궁금하신 분들은 아래의 글을 먼저 참고해 주세요
[IT/네트워크(Network)] - [네트워크] TCP 3 way 4 way handshake 패킷 분석