HTTP와 HTTPS(HTTP + SECURE)의 차이점 알아보기

Jiumn·2023년 4월 17일

HTTP vs. HTTPS

HTTP란

HTTP(HyperText Transfer Protocol)는 웹에서 브라우저와 서버가 통신하기 위한 프로토콜(규약)이다.

간단하게 역사를 살펴보자면, 1986년 HTML, URL과 함께 팀 버너스 리 경이 고안한 HTTP는 1991년 최초로 문서화되었고 1996년 HTTP/1.0, 1999년 HTTP/1.1, 2015년 HTTP/2, 2019년 HTTP/3가 발표되었다. 국내에서는 네이버가 2022년 최초로 HTTP/3를 도입했다.

HTTP의 특징

HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다. HTTP는 서버가 클라이언트의 상태를 보존하지 않는 Stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성된다.

하지만 HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에 개인 정보를 주고 받으면 제3자가 정보를 조회할 수 있다.

HTTPS의 특징

HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 데이터 암호화가 추가된 프로토콜이다. HTTP를 SSL(Secure Sockets Layer) 프로토콜 위에서 돌아가도록 하여 클라이언트와 서버가 주고 받는 텍스트를 암호화한다.

SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서다. SSL 인증서에서는 서비스의 정보(인증서를 발급한 CA, 서비스의 도메인 등)와 서버의 공개키가 포함되어 있다.

HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 사용한다.

  • 대칭키 암호화
  • 비대칭키 암호화

대칭키 암호화는 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행한다. 키가 노출되면 위험하지만 연산 속도가 빠르다는 장점이 있다.

비대칭키 암호화는 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복화하하는 데 사용한다. 키가 노출되어도 비교적 안전하지만 연산 속도가 느리다.

공개키는 모두에게 공개하는 키이고, 개인키는 나만 가지고 알고 있어야 하는 키다.

HTTPS는 대칭키 암호화와 비대칭키 암호화를 모두 사용한다.

HTTPS 통신 과정은 다음과 같이 이뤄진다.

  1. 클라이언트가 서버에 접속
  2. 서버는 클라이언트에 SSL 인증서 정보 전달
  3. 클라이언트는 해당 SSL 인증서가 신뢰할 수 있는지 확인 (SSL Handshake)
    • SSL 인증서에는 서비스의 정보(CA, 서비스 도메인 등)와 공개키 포함
    • 인증서 내용은 CA에 의해 비공개키로 암호화
    • 브라우저는 CA 공개키로 복호화 진행(브라우저는 신뢰된 CA 기업의 공개키를 모두 보유)
      → 클라이언트는 SSL 인증서 내부에 존재하는 서버의 공개키가 CA 기업의 보안성 검증이 완료된 것을 확인 (= 해당 서버를 신뢰할 수 있음)
  4. 공개키를 활용하여 세션키 생성. 이를 통해 통신을 시작.

profile
Back-End Wep Developer. 꾸준함이 능력이다. Node.js, React.js를 주로 다룹니다.

0개의 댓글