HTTPS( HyperText Transfer Protocol over Secure )란?

 

  • HTTPS( HyperText Transfer Protocol over Secure )는 HTTP에 SSL/TLS을 이용하여 HTTP의 body를 암호화하여 서버와 클라이언트 간의 안전한 통신을 보장하는 프로토콜입니다.




HTTPS를 사용해야 하는 두 가지 이유

 

  • HTTP를 사용하면 클라이언트와 서버간의 통신 과정에서 패킷이 중간에 탈취될 경우 사용자의 입력 데이터가 그대로 노출됩니다. 이를 보완하기 위해서 HTTPS를 사용하여 패킷이 중간에 탈취되어도 사용자 및 서버가 송신한 데이터를 알아볼 수 없게 하기 위함입니다.

 

  • 서버는 브라우저에게 CA( Certificate Authority )에서 발급받은 인증서를 응답하고 브라우저는 CA에게 해당 인증서가 정말로 해당 사이트에서 발급받은 인증서인지 확인하여 신뢰할 수 있는 사이트인지 검증합니다.




SSL/TLS 이란?

 

  • SSL( Secure Socket Layer )는 Netscape Communications Corporation에서 웹 브라우저와 웹 서버간의 보안을 위해 만든 프로토콜로서 대칭키, 비대칭키를 기반으로 암호화된 통신을 합니다. TLS( Transport Layer Security )는 SSL의 취약점을 보완한 업그레이드된 버전으로서 현재는 SSL과 TLS을 동일하게 취급하고 있습니다.




대칭키와 비대칭키를 혼합해서 사용하는 이유

 

  • 대칭키는 암호화와 복호화에 사용되는 키가 동일하여 해커가 해당 키를 알아내었을 때 쉽게 복호화가 가능하다는 단점이 있습니다. 이러한 단점을 보완한 것이 비대칭키로서 A, B 키가 있을 때 A로 암호화한 패킷은 B 키로만 복호화할 수 있습니다. 하지만, 그만큼 암호화 복호화 연산의 비용이 크다는 단점이 있기 때문에 SSL/TLS는 대칭키와 비대칭키를 혼합하여 사용합니다.




HTTPS 통신 과정

 

<HTTPS 통신과정( 출처 : 미닉스 김인성님 블로그 )>

 

  1. 1. 서버는 한 쌍의 공개키와 개인키를 생성한 후 서버 내 사이트의 각종 정보와 자신의 공개키를 CA에 전달하여 SSL/TLS 인증서 생성을 요청합니다.

 

  1. 2. CA는 서버의 도메인을 비롯하여 각종 정보를 담은 인증서를 발급한 후 자신의 개인키로 SSL/TLS 인증서를 암호화하여 서버에 전달합니다.

 

  1. 3. 웹 브라우저는 접속하려는 서버로부터 응답 받은 SSL/TLS인증서를 CA의 공개키를 이용하여 SSL/TLS 인증서를 복호화하여 신뢰할 수 있는 서버인지 확인합니다. 그리고 SSL/TLS인증서에 담겨있는 서버의 공개키를 확보합니다.

 

  1. 4. 웹브라우저는 대칭키를 생성하고 SSL/TLS 인증서에 담겨있는 서버의 공개키로 웹 브라우저가 생성한 대칭키를 암호화하여 서버에 전송합니다.

 

  1. 5. 서버는 웹 브라우저가 자신의 공개키로 암호화하여 전달한 패킷을 개인키로 복호화하여 웹 브라우저에서 생성한 대칭키를 확보합니다.

 

  1. 6. 서버와 웹 브라우저는 안전하게 대칭키를 공유하게 되었으며 이를 통해 HTTP 메시지를 암호화, 복호화하여 통신합니다.




'네트워크 > HTTP' 카테고리의 다른 글

HTTP 상태코드란?  (0) 2023.01.29
HTTP API 설계 방법과 HTTP 메서드와 특징  (1) 2023.01.29
HTTP 메시지 구조  (0) 2023.01.29
HTTP/0.9 ~ 2.0의 각 특징  (1) 2023.01.29
REST(REpresentational State Transfer)란?  (0) 2022.12.16

+ Recent posts