[CS] TLS & SSL Handshake

히수·2023년 4월 19일
0

CS

목록 보기
9/13

TLS & SSL Handshake

TLS은 최근에 부르는 명칭으로 SSL과 같은 의미로 쓰인다.

SSL Handshake란?

handshake 과정은 통신을 암호화하는 데 사용할 암호화 알고리즘과 키를 결정하고 서버를 확인하며 실제 데이터 전송을 시작하기 전에 보안 연결이 이루어 졌는지 확인한다. 이 연결을 확인하기 위한 과정이 악수하는 것과 비슷하다고 하여 handshake라고 한다.

SSL의 키 방식

SSL은 대칭 키 방식과 비대칭 키 방식을 섞어서 사용한다. 구체적으로 설명하면 SSL은 공개키 방식으로 대칭키를 전달한다.

그리고 이 대칭키를 활용해서 암호화와 복호화를 하고, 서버와 브라우저간 통신을 진행한다.


  1. A가 B로 접속요청을 한다.
  2. B는 A에게 자신의 공개키를 전송한다.

  1. A는 자신의 대칭 키를 B에게서 받은 공개 키로 암호화한다.

  1. 암호화한 자신의 대칭 키를 B에게 전달한다.
  2. B는 자신의 개인 키로 복호화 하여 A의 대칭 키를 얻어낸다.

  1. 각자의 대칭 키를 활용하여 A와 B가 안전하게 통신한다.

SSL Handshake의 동작 과정

양쪽의 파란색과 노란색 블럭은 네트워크 상에서 전달되는 IP패킷을 표현했다. 파란색 칸에 해당하는 SYN, SYN ACK, ACK는 TCP 레이어의 3-way handshake로, HTTPS가 TCP 기반의 프로토콜이므로 SSL Handshke에 앞서 연결을 생성하기 위해 실시하는 과정이다. 노란색 칸에 해당하는 패킷들이 SSL Handshake이다.


  1. 사이트는 CA에 사이트 정보와 사이트 공개키를 전송한다.


CA란?
인증서의 역할은 클라이언트가 접속한 서버가 의도한 서버가 맞는지 보장하는 것이다. 이 역할을 하는 민간 기업들이 있는데 이런 기업들을 CA(Certificate authority) 혹은 Root Certificate라고 부른다.

  1. CA는 자신의 개인 키로 사이트 정보와 사이트 공개 키를 암호화 하여 인증서를 생성하고, 생성한 인증서를 사이트에 전달한다.


  1. 사용자가 사이트에 접속을 요청한다. 이 과정에서 clientHello라는 패킷을 보내는데 이 패킷에는 자신이 사용 가능한 Cipher Suite 목록, Session ID, SSL 프로토콜 버전, Random Byte 등을 전달한다.
    여기에 포함된 Cipher Suite의 알고리즘에 따라 데이터를 암호화한다.

  2. 사이트는 사용자의 Cipher Suite 중 하나를 고르고 자신의 SSL 프로토콜 버전을 사용자에게 알려준다. (ServerHello == Cipher Suite를 선택하여 클라이언트에게 알리는 과정)

  3. 사이트는 자신의 사이트 인증서를 사용자에게 전송한다.


  4. 사용자는 브라우저에 내장된 CA의 공개키를 이용해서 사이트 인증서 복호화를 통해 인증서가 유효한지 검증하고, 사이트의 공개키를 가져온다.


  1. 사용자는 전달할 데이터를 암호화 할 대칭키를 만들고, 그 대칭키를 사이트 공개키로 암호화 한다.


  2. 암호화한 대칭키를 사이트에 전달한다.

  3. 사이트는 자신의 개인 키를 사용해서 사용자 대칭 키를 복호화한뒤 대칭 키를 알아낸다.


  1. 얻은 대칭키를 활용해서 서로가 서로의 데이터를 안전하게 복호화 하면서 통신을 할 수 있게 된다.


SSL Handshake 한 줄 정리

서버는 CA에 사이트 정보와 공개 키를 전달하여 인증서를 받음 → 클라이언트는 브라우저에 CA 공개 키가 내장되어 있다고 가정 → ClientHello(암호화 알고리즘 나열 및 전달) → Serverhello(암호화 알고리즘 선택) → Server Certificate(인증서 전달) → Client Key Exchange(데이터를 암호화 할 대칭 키 전달) → Client / ServerHello done (정보 전달 완료) → Finished(SSL Handshake 종료)



profile
🔥

4개의 댓글

comment-user-thumbnail
2023년 4월 20일

SSL의 암호화 과정에 대해 자세하게 알게되었습니다.

답글 달기
comment-user-thumbnail
2023년 4월 20일

어려운 내용이라 그런지 이해하기 쉽지 않네요. 여러번 보고 공부해야겠습니다.

답글 달기
comment-user-thumbnail
2023년 4월 20일

동작 과정 설명에 사용된 그림예시와 마무리로 한번 더 설명해주신 한줄정리가 참 좋은거 같습니다!!

답글 달기
comment-user-thumbnail
2023년 4월 20일

시각자료덕분에 내용을 이해하기 더욱 좋았습니다

답글 달기