-
HTTPS 통신 과정공부방 2023. 11. 15. 22:31
HTTPS
HTTPS(HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure)는 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다
기존 HTTP 통신에서 사용되는 일반 텍스트를 SSL 또는 TLS 를 이용하여 암호화 하여 데이터의 보호를 보장한다.
TLS/SSL Handshake
공개키 방식으로 대칭키를 생성할 키 정보를 교환하고, 대칭키를 생성하여 메시지는 대칭키 방식으로 암호화하여 주고 받는다.
1. Client Hello
브라우저에서 지원하는 암호화 알고리즘 (Cipher Suites)과 TLS 버전, 난수를 생성하여 전달한다.
2. Server Hello
Client Hello 에서 전달한 암호화 알고리즘중 사용할 알고리즘과 서버의 SSL 인증서, 서버쪽에서 생성한 난수를 전달한다.
3.Verify Server Certificate
클라이언트가 Server Hello 에서 받은 서버의 SSL 인증서를 CA를 통해 검증한다.
4. Client Key Exchange
SSL 인증서에서 서버의 공개키를 받아 클라이언트는 "The premaster secret" 이라는 키를 서버의 공개키로 암호화하여 전송한다. 필요하다면 클라이언트의 인증서를 같은 방식으로 암호화 하여 전송한다.
5. Verify Client Certificate
클라이언트가 보낸 "The premaster secret" 키를 서버의 개인키로 복호화한다.
6. Client Finished
클라이언트가 클라이언트에서 생성한 난수, 서버에서 생성한 난수, "The premaster secret"을 이용하여 세션 키를 생성한다. 클라이언트가 이 세션키로 암호화된 finished 메시지를 전송한다.
7. Server Finished
서버가 클라이언트에서 생성한 난수, 서버에서 생성한 난수, "The premaster secret"을 이용하여 마찬가지로 세션키를 생성한다. 서버에서 이 세션키로 암호화된 finished 메시지를 전송한다.
8. Exchange Message
핸드셰이크가 완료되고, 생성한 세션키를 대칭키로 이용하여 메시지를 주고 받는다.
'공부방' 카테고리의 다른 글
ElasticSearch 정리 (0) 2023.12.25 파이프라인 프로토콜 (1) 2023.11.22 OSI 7계층과 TCP/IP 4계층 (0) 2023.11.07 Session과 Token (0) 2023.10.20 부동소수점 표현 방식 [IEEE 754] (0) 2023.08.31