HTTP vs HTTPS

Jerry·2025년 8월 4일

HTTP와 HTTPS는 웹에서 데이터를 주고받는 데 사용되는 프로토콜입니다. 두 프로토콜 모두 애플리케이션 계층의 프로토콜로, 클라이언트(보통 웹 브라우저)와 서버 간의 통신을 정의합니다. 하지만 보안과 관련된 큰 차이점이 존재하며, HTTPS는 HTTP의 보안 확장판이라고 할 수 있습니다.

개념 비교

항목HTTP (HyperText Transfer Protocol)HTTPS (HTTP Secure or HTTP over SSL/TLS)
목적웹에서 데이터를 주고받기 위한 기본 프로토콜HTTP 통신에 보안(암호화, 인증, 무결성)을 추가
포트기본적으로 80번 포트 사용기본적으로 443번 포트 사용
보안성데이터가 평문(Plain Text) 으로 전송되어 노출 가능암호화된 채널로 전송되어 도청, 위변조 방지
인증서 사용없음SSL/TLS 인증서 필요 (CA가 발급)
프로토콜 스택HTTP 단독HTTP + TLS/SSL (암호화 계층이 추가됨)

통신 구조의 차이

HTTP 구조

[클라이언트] --(평문 HTTP 요청)--> [서버]
[서버] --(평문 HTTP 응답)--> [클라이언트]
  • 공격자가 중간에서 요청/응답을 쉽게 열람 또는 조작 가능 (MITM 공격에 취약)
  • 데이터의 기밀성, 무결성, 인증 보장이 없음

HTTPS 구조 (TLS를 통한 암호화)

[클라이언트]
    |
    | 1. TCP 연결 (포트 443)
    |
    | 2. TLS Handshake (공개키 암호화 + 대칭키 교환)
    |
    | 3. TLS 세션 성립
    |
    | 4. 암호화된 HTTP 요청 및 응답
    |
[서버]
  • TLS Handshake 과정에서 공개키 인증서 검증 및 대칭키 교환 수행
  • 이후 통신은 모두 대칭키 기반 암호화로 처리 → 빠르고 안전

HTTPS에서 보안이 강화되는 3가지 요소

요소설명
기밀성 (Confidentiality)TLS를 통해 데이터를 암호화하여 도청 방지
무결성 (Integrity)전송 중 데이터가 변경되지 않았음을 MAC, HMAC 등을 통해 보장
인증 (Authentication)서버가 신뢰할 수 있는 존재임을 디지털 인증서(CA 인증) 로 검증

TLS/SSL 작동 방식 (Handshake 과정 요약)

  1. Client Hello: 클라이언트가 사용할 수 있는 암호 스위트 목록과 TLS 버전 정보를 서버에 전달
  2. Server Hello: 서버가 사용할 암호 스위트, 공개키 인증서(X.509) 등을 전달
  3. 서버 인증서 검증: 클라이언트가 CA 체인을 통해 서버의 인증서 유효성 검사
  4. Pre-Master Secret 전송: 클라이언트가 서버의 공개키로 대칭키를 암호화해 전송
  5. 세션 키 생성: 양측이 공유한 대칭키로부터 세션 키 생성
  6. Finished 메시지 교환: 이후 모든 통신은 세션 키를 사용한 대칭키 암호화로 전송

HTTPS 인증서 관련

  • 발급 주체: CA(Certificate Authority) — 예: Let's Encrypt, DigiCert, Sectigo 등
  • 유형:
    • DV (Domain Validation): 도메인 소유만 인증
    • OV (Organization Validation): 조직 정보까지 검증
    • EV (Extended Validation): 기업 신원까지 철저히 검증 (주소창에 회사 이름 노출)
  • 유효기간: 보통 90일~1년 (Let's Encrypt는 90일)
profile
Backend engineer

0개의 댓글