HTTPS 정리

KIKO·2022년 3월 22일
0

CS

목록 보기
1/2
post-thumbnail

1. HTTPS란?

HTTP(Hyper Text Transfer Protocol)에 SSL 또는 TLS를 추가하였다고 해서 HTTPS (HTTP over TLS, HTTP over SSL)라고 이름지었다. HTTPS에서는 Cookie, URL, HTTP header 등 여러 데이터들이 암호화된다.

1-1. SSL

Security Socket Layer, TCP 계층의 보안을 위해 설계된 암호 규약. 기존의 TCP 통신에 사용자와 서버의 인증과 전송되는 데이터의 암호화 과정이 추가되었다.

1-2 TLS

Transport Layer Security, 앞서 설명한 SSL의 3.1버전, IETF 표준화 기구에서 SSL의 표준 버전을 지정하며 명칭을 TLS로 바꾸었다. (RFC 5246 표준 문서)

2. HTTP에서 추가되는 과정

Handshake Protocol

HTTP는 TCP계층에서 3-way Handshake를 통해서 서버와의 연결을 요청하고 요청이 수락되면 데이터를 주고 받는다. HTTPS는 앞서 말했듯 데이터의 암호화가 이루어지고, 그 준비과정으로 Handshake Protocol을 진행한다. Handshake Protocol은 보안에 필요한 정보를 나누는 프로토콜로 크게 4단계로 진행한다.

1. 보안 기능의 확립

클라이언트는 서버에 클라이언트의 암호화 방식, 키 교환 방식 등의 보안 기능에 대한 정보가 담긴 client_hello 메세지를 서버에 보낸다. 이를 받은 서버는 서버의 보안 기능과 비교하며 메세지의 보안 기능 중 서버에서 사용 가능한 기능에 대한 정보를 server_hello 메세지에 넣어 전송한다.

2. 서버 인증 및 키 교환

보안 기능에 대한 정보 교환이 끝나면 서버는 선택적으로 서버 자신에 대한 인증 정보 또는 클라이언트에 대한 인증 요청, 암호화에 사용할 암호 키 등을 클라이언트에게 보내며, 이후 server_hello_done 메세지를 통해서 client_hello 메세지와 server_hello 메세지를 주고 받는 과정이 종료됐음을 클라이언트에게 알린다.

3. 클라이언트 인증 및 키 교환

클라이언트 또한 앞서 서버가 선택적으로 보낸 메세지에 따라 올바른 응답을 보낸다. 만약 서버가 서버 자신의 인증 정보를 보냈다면, 인증을 확인했다는 메세지를, 서버가 클라이언트의 인증을 요청했다면 클라이언트 자신의 인증 정보를 서버에 보낸다. 그리고 보안 방식에 따라서 알맞은 클라이언트의 암호화 키를 서버와 교환한다.

4. Cipher Suite 변경 및 프로토콜 종료

클라이언트와 변경된 보안 관련 정보들을 change_cipher_spec 메세지에 담아 서버에 전송하며, 변경된 방식으로 암호화 된 finished 메세지를 서버에 전송한다. (이 finished는 HTTPS 통신에서 최초로 암호화된 메세지이다)
동일한 방식으로 서버가 클라이언트에 change_cipher_spec 메세지와 finished를 보내는 것으로 HandShaking Protocol은 종료된다.

이후 보내지는 데이터는 암호화되어 사용자의 기밀성과 무결성을 보장한다.

Reference

  1. IBM, An overview of the SSL or TLS handshake
    https://www.ibm.com/docs/en/ibm-mq/7.5?topic=ssl-overview-tls-handshake
  2. Microsoft, TLS 핸드셰이크 프로토콜
    https://docs.microsoft.com/ko-kr/windows/win32/secauthn/tls-handshake-protocol
  3. 정보통신기술용어해설, SLL/TLS 구성 프로토콜
    http://www.ktword.co.kr/test/view/view.php?no=2552
profile
개발자로 발돋움

0개의 댓글