본문 바로가기
Web 개요

[WEB] HTTP / HTTPS

by 도전하는 린치핀 2024. 1. 8.

1. HTTP / HTTPS

HTTP는 HyperText Transfer Protocol의 약자로 WWW상에서 정보를 주고 받는 프로토콜이다.

쉽게 말해 HTTP는 웹 브라우저와 웹 서버가 웹 페이지와 같은 데이터나 자원을 주고 받을 때 사용하는 통신 규약이다.

HTTP는 하이퍼텍스트, 즉 텍스트의 교환이기 때문에 악의적인 누군가(해커)가 네트워크에서 신호를 가로채어 본다면 내용이 노출되는 문제가 있다.

 

HTTPS는 이러한 HTTP의 보안의 문제를 해결하기 위해 HTTP에 SSL을 추가한 것으로 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 해주고, 서버와 브라우저가 민감한 정보를 주고 받을 때 해당 정보가 도난당하는 것을 막아주는 역할을 한다.

즉, HTTPS는 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer)프로토콜을 이용하여 웹 브라우저와 서버가 테이터나 자원을 주고 받는 통신 규약이다.

 

 

2. 대칭키 / 비대칭키

대칭키와 비대칭키를 다루는 이유는 HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식의 장점만을 사용하기 위해 두 암호화 방식을 다 사용하기때문이다.

각 암호화 방식은 아래와 같다.

  • 대칭키 암호화
    • 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행한다.
    • 키가 노출되면 매우 위험하지만 연산 속도가 빠르다.
  • 비대칭키 암호화
    • 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용한다.
    • 공개키는 누구나 볼 수 있고 키가 노출되어도 비교적 안전하지만 연산 속도가 느리다.

 

HTTPS의 경우 위에서 정리한 대칭키의 키가 노출되면 위험한 부분을 비대칭키를 활용해서 보완하고 비대칭키의 연산속도가 느린 부분을 연산 속도가 빠른 대칭키로 보완하였다고 생각하면 된다.

비대칭키가 사용되는 방법을 그림으로 이해해보자

 

 

3. HTTPS 동작 방식

그렇다면 가장 중요한 내용인 HTTPS의 동작 방식에 대해서 알아보자.

HTTPS의 경우 웹 브라우저와 웹 서버말고 추가적으로 CA(Certificate Authority)라는 인증 기관이 추가되어 웹 브라우저, 웹 서버, CA 세개의 주체가 키를 주고 받으며 하나의 대칭키를 생성한다고 생각할 수 있다.

 

1. 웹 서버(사이트)에서 인증기관(CA)에게 사이트 정보와 사이트 공개키를 전송한다.

2. 인증기관에서는 전달받은 데이터를 검증 후 인증기관의 개인키로 암호화(서명)한다.

 

3. 사이트 인증서가 생성되어 이 인증서를 웹 서버(사이트)에게 인증서를 전달한다.

4. 그후, 인증기관(CA)은 웹 브라우저(사용자)에게 인증기관의 공개키를 제공하고 사용자 브라우저에 자동으로 내장된다.

 

5. 모든 준비가 끝나고 웹 브라우저(사용자)는 웹 서버(사이트)에게 접속을 요청한다.

 

 

6. 웹 서버(사이트)는 웹 브라우저(사용자)에게 인증기관(CA)에서 받은 사이트 인증서를 준다.

 

7. 웹 브라우저(사용자)는 인증기관 공개키를 사용하여 사이트 인증서를 복호화하여 사이트 정보와 사이트 공개키를 얻을 수 있다.

 

8. 사이트 공개키를 활용하여 사용자는 통신에 사용할 대칭키(세션키)를 암호화하여 웹 서버(사이트)에게 전달한다.

 

 

9. 웹 서버(사이트)는 자신이 가지고 있는 개인키를 활용하여 대칭키(세션키)를 복호화하여 대칭키를 얻는다.

10. 이후 대칭키를 활용하여 암호화하여 통신을 진행한다.

 

 


결론적으로 각 주체가 가지는 키의 종류와 하는 일에 대해서 정리해보자

  • 웹 서버(사이트)
    • 가지고 있는 키는 웹 서버의 개인키와 사용자와 통신할 때 사용하는 대칭키까지 두개를 가진다.
    • 웹 서버는 인증기관에 자신의 공개키와 사이트 정보를 인증기관에 전달하여 인증을 받는다.
    • 그 후, 웹 브라우저가 암호화한 대칭키를 자신의 개인키로 복호화하여 대칭키를 얻는다.
  • 웹 브라우저(사용자)
    • 가지고 있는 키는 인증기관의 공개키, 인증기관의 개인키로 복호화한 웹 서버의 공개키, 웹 서버와 통신할 때 사용하는 대칭키 총 3가지를 가진다.
    • 웹 브라우저는 웹 서버에 요청으로 받은 인증서를 인증기관의 공개키로 복호화한 뒤 웹 서버의 공개키를 얻는다.
    • 그 후 웹 서버의 공개키를 활용하여 통신에 사용할 대칭키를 암호화한다.
  • 인증기관(CA)
    • 가지고 있는 키는 인증기관의 개인키, 웹 서버의 공개키 두가지를 가진다.
    • 인증기관은 웹 서버에서 보낸 사이트가 믿을만한 사이트인지 검증하고 자신의 개인키로 인증을 진행한다.

 

더보기