HTTP와 HTTPS의 차이점
HTTP와 HTTPS의 차이점

HTTP와 HTTPS의 차이점

Tags
Node.js
Web Dev
Published
January 31, 2024
Author
gozneokhan

HTTP란?

HTTP(Hyper Text Transfer Protocol)

HTTP는 서버/클라이언트 모델을 따르며 데이터를 주고 받기 위한 프로토콜입니다. 이는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 주로 80번 포트를 사용합니다. HTTP 서버는 80번 포트에서 요청을 기다리며, 클라이언트는 80번 포트로 요청을 보냅니다.
이 프로토콜은 1989년 팀 버너스 리(Tim Berners Lee)에 의해 처음 설계되었으며, WWW(World-Wide-Web) 기반에서 세계적인 정보를 공유하는 데 큰 역할을 하였습니다. HTTP는 웹 브라우저와 웹 서버 간의 통신에서 핵심적인 역할을 하며, 전세계적으로 정보를 공유하고 검색하는 데 사용됩니다.

HTTP 구조

HTTP는 애플리케이션 레벨의 프로토콜로, TCP/IP 위에서 작동합니다. 이는 상태를 가지고 있지 않는 Stateless 프로토콜로 구성되어 있으며, Method, Path, Version, Headers, Body 등의 요소로 이루어져 있습니다.
notion image
그러나 HTTP는 암호화되지 않은 평문 데이터를 전송하는 프로토콜로, 비밀번호나 주민등록번호와 같은 민감한 정보를 주고 받을 경우 제3자가 정보를 조회할 수 있었습니다. 이러한 보안 문제를 해결하기 위해 HTTPS가 등장하였습니다.
HTTPS는 HTTP의 보안 강화 버전으로, 데이터를 암호화하여 전송함으로써 도청을 방지합니다. 이는 웹 통신에서 보안과 개인정보 보호를 강화하는 중요한 발전으로 작용하고 있습니다.

HTTPS란?

HTTPS(Hyper Text Transfer Protocol Secure)

HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜입니다. 또한 HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure 등으로 불리기도 합니다. HTTPS는 HTTP와는 다르게 443번 포트를 사용하며, 중간에 제3자가 정보를 볼 수 없도록 네트워크 통신을 암호화하는 기능을 제공합니다.

대칭키 암호화와 비대칭키 암호화

HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 함께 사용합니다.

대칭키 암호화

HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용합니다. 대칭키 암호화는 클라이언트와 서버가 동일한 키를 사용하여 암호화/복호화를 진행하며, 키가 노출되면 매우 위험하지만 연산 속도가 빠릅니다.

비대칭키 암호화

비대칭키 암호화는 공개키/개인키 암호화 방식을 사용하여 데이터를 암호화합니다. 이때, 공개키와 개인키는 서로를 위한 1쌍의 키로 구성됩니다. 공개키는 모두에게 공개 가능한 키이며, 개인키는 나만 가지고 알고 있어야 하는 키입니다.
암호화를 공개키로 하면 개인키로만 복호화할 수 있어 나만 볼 수 있는 효과를 얻을 수 있습니다. 반면, 개인키로 암호화하면 공개키로만 복호화할 수 있어 내가 인증한 정보임을 알려 신뢰성을 보장할 수 있습니다.
notion image

HTTPS의 동작 과정

HTTPS는 대칭키 암호화와 비대칭키 암호화를 통해 빠른 연산 속도와 안정성을 모두 활용하고 있습니다. 연결 과정(Hand-Shaking)에서는 클라이언트와 서버 간에 세션키를 교환합니다. 이 세션키는 주고 받는 데이터를 암호화하기 위한 대칭키로, 빠른 연산 속도를 필요로 하기 때문에 대칭키로 생성됩니다. 그러나 세션키의 안전한 교환을 위해 처음 연결을 성립할 때 비대칭키가 사용됩니다.
notion image
실제 HTTPS 연결 과정은 다음과 같습니다
  1. 클라이언트(브라우저)가 서버로 최초 연결 시도를 합니다.
  1. 서버는 공개키(또는 인증서)를 브라우저에게 전송합니다.
  1. 브라우저는 인증서의 유효성을 검사하고 세션키를 생성합니다.
  1. 브라우저는 세션키를 보관하며, 서버의 공개키로 세션키를 암호화하여 서버로 전송합니다.
  1. 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻습니다.
  1. 클라이언트와 서버는 이제 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행합니다.
notion image

HTTPS의 발급 과정

서버는 HTTPS를 적용하기 위해 공개키/개인키를 발급하고, 이를 인증된 기관(CA)에 전송하여 인증서를 발급받습니다. 브라우저는 인증된 CA의 공개키를 미리 다운로드하고, 서버로부터 받은 암호화된 인증서를 복호화하여 세션키를 공유합니다.
서버가 비대칭키를 발급받는 과정은 다음과 같습니다
  1. 서버(A 기업)는 HTTPS를 적용하기 위해 공개키/개인키를 발급합니다.
  1. 서버는 돈을 지불하고 공개키를 저장하는 인증서의 발급을 인증 기관(Certificate Authority, CA)에 요청합니다.
  1. CA는 CA의 이름, 서버의 공개키, 서버의 정보 등을 기반으로 인증서를 생성하고, CA의 개인키로 암호화하여 서버에 제공합니다.
  1. 서버는 클라이언트에게 암호화된 인증서를 제공합니다.
  1. 브라우저는 미리 다운로드한 CA의 공개키를 사용하여 암호화된 인증서를 복호화합니다.
  1. 브라우저는 복호화된 인증서에서 서버의 공개키를 얻고, 이를 사용하여 세션키를 공유합니다.
notion image

글을 마치며

HTTP 사용 시

HTTP는 주로 민감한 정보를 주고 받지 않는 단순한 정보 조회와 같은 상황에서 사용됩니다. 특히, 데이터 전송 속도가 중요하거나 추가적인 보안 요구가 없는 경우에 적합합니다. 이는 웹 브라우저와 웹 서버 간의 데이터 전송을 담당하는 프로토콜로, 텍스트 데이터를 평문으로 전송하며 데이터 보안 및 개인 정보 보호 기능을 제공하지 않습니다. HTTP는 URL을 통해 웹 페이지에 접근하고, 주로 데이터 전송 중에 암호화가 이뤄지지 않아 중간에서 데이터가 가로채질 가능성이 있습니다. 이 프로토콜은 보통 포트 80을 사용하여 통신합니다.

HTTPS 사용 시

HTTPS는 HTTP의 안전한 버전으로, 데이터 전송 중에 암호화를 통해 정보의 기밀성과 무결성을 확보합니다. 민감한 데이터를 주고 받아야 할 때, 특히 개인 정보, 로그인 정보, 결제 정보와 같은 경우에는 반드시 사용되어야 합니다. 이러한 보안적인 측면에서, 서비스나 웹 애플리케이션, 전자상거래와 같이 보안이 중요한 곳에서는 HTTPS를 적극적으로 도입하여 데이터 보호를 강화해야 합니다.
뿐만 아니라, 사용자의 신뢰를 확보하고 검색 엔진 최적화(SEO)에 도움이 되는 경우도 있습니다. HTTPS는 SSL(보안 소켓 계층) 또는 TLS(전송 계층 보안) 프로토콜을 활용하여 데이터를 암호화하며, 이를 통해 중간에서의 데이터 가로채기를 방지합니다. 사용자에게 안전한 연결임을 나타내기 위해 URL 앞에 "https://"를 사용하고, 보안 연결이 설정되면 웹 브라우저에서는 녹색 잠금 아이콘을 표시하여 사용자에게 보안을 시각적으로 알립니다. HTTPS는 기본적으로 포트 443을 사용하여 통신합니다.

HTTP vs HTTPS 차이점

  1. 보안성
      • HTTP: 데이터를 암호화하지 않아 중간에서 데이터를 엿볼 수 있습니다.
      • HTTPS: 데이터를 암호화하여 보안을 유지하므로 중간에서의 데이터 감청을 방지합니다.
  1. 데이터 무결성
      • HTTP: 데이터가 전송 중에 수정될 수 있습니다.
      • HTTPS: 데이터 무결성을 보장하여 데이터가 전송되는 동안 수정되지 않음을 보장합니다.
  1. 인증서
      • HTTP: 인증서를 사용하지 않아 서버의 신원을 검증하지 않습니다.
      • HTTPS: SSL 인증서를 사용하여 서버의 신원을 검증하고, 사용자는 브라우저에서 해당 인증서를 확인하여 신뢰 여부를 판단할 수 있습니다.
  1. 검색 엔진 랭킹 (SEO)
      • HTTP: 검색 엔진에서는 HTTPS를 사용하는 웹 사이트를 더 높은 순위로 평가합니다. HTTPS 사용이 SEO에 긍정적인 영향을 미칩니다.
  1. 데이터 노출 방지
      • HTTP: 중간에서의 데이터 가로채기를 방지하지 않아 민감한 정보 노출이 가능합니다.
      • HTTPS: 중간에서의 데이터 가로채기를 방지하여 사용자의 민감한 정보를 안전하게 보호합니다.
  1. 속도
      • HTTP: 데이터 암호화가 없어 빠를 수 있습니다.
      • HTTPS: 데이터 암호화 및 복호화 과정이 추가되어 약간의 성능 저하가 있을 수 있지만, 현대의 하드웨어와 암호화 기술로 인해 큰 영향은 없습니다.

기타 고려 사항

현재 대부분의 웹 서비스에서는 HTTPS를 권장하고 있으며, 많은 웹 브라우저에서는 HTTPS를 사용한 웹사이트를 더 선호합니다. 브라우저들이 '안전하지 않은 사이트'로 표시하는 등의 경고를 피하기 위해서도 HTTPS 사용이 권장됩니다. 또한, 비대칭키 암호화는 공개키/개인키 암호화 방식을 사용하여 데이터를 안전하게 전송하는 데 중요한 역할을 합니다.

Reference