게으른 나에게

[네트워크] - HTTP와 HTTPS 본문

My Study/CS

[네트워크] - HTTP와 HTTPS

handbefore 2025. 3. 23. 17:45

HTTP(Hyper Text Transfer Protocol)

  • OSI 7 계층의 애플리케이션 계층(Application Layer) 에서 동작하는 프로토콜

HTTP 특징

  • 클라이언트(브라우저)와 웹 서버 간의 데이터 통신을 담당
  • 웹 페이지 요청 시 80번 포트 사용
  • 웹 서버와 사용자 브라우저는 데이터를 일반 텍스트(Plain Text)로 교환
  • Stateless(상태 비저장) 프로토콜 → 요청과 응답이 끝나면 연결을 유지하지 않음
    • Method, Path, Version, Headers, Body 등으로 구성

단점

  • 데이터가 암호화되지 않아 보안에 취약
  • 개인정보 및 중요한 데이터를 주고받기 부적절

HTTP의 구조

  1. 사용자가 브라우저에서 URL 입력 (예: http://example.com)
  2. 브라우저가 웹 서버에 HTTP 요청 전송
  3. 웹 서버가 HTTP 응답을 생성하여 브라우저로 전송
  4. 브라우저가 응답을 렌더링하여 사용자에게 웹 페이지 표시

사용 예시

  • 단순한 정보 조회 서비스(뉴스, 블로그)
  • 민감한 정보가 포함되지 않은 일반적인 웹 페이지

 


 

 

HTTPS(Hyper Text Transfer Protocol Secure)

  • HTTP에 보안(SSL/TLS)이 추가된 프로토콜

HTTPS 특징

  • 443번 포트 사용
  • 데이터 암호화로 보안을 강화하여 중간에 제3자가 정보를 볼 수 없도록 암호화
  • 독립된 인증 기관(CA)에서 SSL/TLS 인증서를 획득
  • 데이터를 교환하기 전에 브라우저와 인증서를 공유

단점

  • HTTP보다 속도가 느릴 수 있음 (암호화/복호화 과정 필요)
  • SSL 인증서 비용 발생
  • 구현이 HTTP보다 복잡함

HTTPS 구조

  1. 클라이언트(브라우저)가 HTTPS 웹사이트에 접속
  2. 서버가 SSL/TLS 인증서를 브라우저에 제공 (공개키 포함)
  3. 브라우저가 인증서의 유효성을 검사하고, 세션 키(대칭키)를 발급
  4. 세션 키를 서버의 공개키로 암호화하여 서버로 전송
  5. 서버는 자신의 개인키로 복호화하여 세션 키 획득
  6. 이후 클라이언트와 서버는 같은 세션 키를 사용하여 데이터를 암호화하여 안전하게 통신

HTTPS 보안 기법

대칭키 암호화

  • 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함
  • 키가 노출되면 보안 위험
  • 데이터 전송 속도 빠름

비대칭키 암호화

  • 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용
    • 공개키와 개인키는 서로를 위한 1쌍의 키
      • 공개키: 모두에게 공개가능한 키
      • 개인키: 나만 가지고 알고 있어야 하는 키
  • 키가 노출되어도 비교적 안전
  • 연산 속도 느림

사용 예시

  • 금융 거래 사이트
  • 로그인, 회원가입이 필요한 웹사이트
  • 이메일 서비스

 

HTTP VS HTTPS

구분 HTTP HTTPS
보안성 데이터가 평문으로 전송, 보안에 취약 SSL/TLS를 사용하여 데이터 암호화
사용 포트 80번 443번
데이터 암호화 없음 (평문 전송) 있음 (공개키/개인키 암호화)
신뢰성 신뢰할 수 없음 (데이터 변조 가능) 신뢰할 수 있음 (인증서 필요)
속도 빠름 느림
운영 비용 무료 SSL 인증서 비용 필요