Posts [Network] HTTP와 HTTPS의 차이
Post
Cancel

[Network] HTTP와 HTTPS의 차이

HTTP와 HTTPS의 차이

HTTP(Hyper Text Transfer Protocol)

  • HTTP의 개요
    • 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다.
    • 즉, HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용한다.
  • HTTP의 구조
    • 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다.
    • HTTP는 상태를 가지고 있는 읺는 Stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성 된다.
    • 스크린샷 2021-03-23 오후 5 26 20
  • HTTP의 문제점
    • 암호화가 되지 않은 평문 데이터를 전송하기에 제3자가 조회 할 수 있다.
    • 비밀번호나 주민번호와 같은 민감한 데이터일 경우 큰 문제가 될 수 있다.

HTTPS(HyperText Transfer Protocol over Secure Socket Layer)

  • HTTPS의 개요
    • HTTP의 경우 서버에서 클라이언트로 데이터를 보낼 때 데이터가 암호화 되지 않는 문제점을 보완하기 위한 프로토콜
    • HTTP over TLS, HTTP over SSL, HTTP Secure 등으로 불리는 HTTPS는 HTTP에 데이터 암호화가 추가 된 프로토콜이다.
    • 433번 포트를 사용하며, 네트워크 상에서 제3자가 정보를 볼 수 없도록 공개키 암호화를 지원한다.
    • 공개키/개인키(비대칭키 암호화) 방식을 이용한다.

공개키/개인키(비대칭키 암호화)

  • 공개키와 개인키는 서로를 위한 1쌍의 키이다.
    • 공개키: 모두에게 공개 가능한 키
    • 개인키: 나만 가지고 알고 있어야 하는 키
  • 공개키와 개인키로 암호화 했을 때의 효과
    • 공개키 암호화: 공개키로 암호화하면 개인키로만 복호화 할 수 있다. -> 개인키는 나만 가지고 있으므로, 나만 볼 수 있음
    • 개인키 암호화: 개인키로 암호화하면 공개키로만 복호화 할 수 있다. -> 공개키는 모두에게 공개되어 있으므로, 내가 인증한 정보임을 알려 신뢰성을 보장 할 수 있다.
    • 스크린샷 2021-03-23 오후 5 33 05

HTTPS의 동작 과정

  • HTTPS는 SSL과 같은 프로토콜을 사용하여 공개키/개인키 기반으로 데이터를 암호화하고 있다.
  • 데이터는 암호화 되어 전송되기에 임의의 사용자가 데이터를 조회하여도 원본의 데이터를 보는 것은 불가능하다.
  • 서버는 클라이언트가 요청을 보낼 때 암호화를 하기 위한 공개키를 생성해야 하는데, 일반적으로 인증된 기관(Certificate Authority) 에 공개키를 전송하여 인증서를 발급받고 있다. 자세한 과정은 다음과 같다.
    • 1) A기업은 HTTP 기반의 애플리케이션에 HTTPS를 적용하기 위해 공개키/개인키를 발급함
    • 2) CA 기업에게 돈을 지불하고, 공개키를 저장하는 인증서의 발급을 요청함
    • 3) CA 기업은 CA기업의 이름, 서버의 공개키, 서버의 정보 등을 기반으로 인증서를 생성하고, CA기업의 개인키로 암호화하여 A기업에게 이를 제공함
    • 4) A기업은 클라이언트에게 암호화된 인증서를 제공함
    • 5) 브라우저는 CA기업의 공개키를 미리 다운받아 갖고 있어, 암호화된 인증서를 복호화함
    • 6) 암호화된 인증서를 복호화하여 얻은 A기업의 공개키로 데이터를 암호화하여 요청을 전송함
    • 111
    • 암호화된 인증서는 CA의 개인키로 암호화 되었기 때문에, 신뢰성을 확보할 수 있고, 클라이언트는 A기업의 공개키로 데이터를 암호화하였기 때문에 A기업만 복호화하여 원본의 데이터를 얻을 수 있다.

HTTPS 동작 과정 정리

  • 클라이언트가 브라우저로 국민은행 사이트에 접속 하면 브라우저는 주요 CA인증기관의 리스트와 공개키를 이미 보유하고 있으므로 국민은행의 인증서를 풀 수 있다.
  • 인증서에는 CA주체 기관, subject(국민은행), subject의 공개키, 유효기관이 포함되어 있다.
  • 이를 통해 브라우저는 서버에 데이터를 전송 할 때 국민은행의 공개키로 암호화하여 보내게 된다.
  • 국민은행은 개인키로 복호화하여 데이터를 안전하게 볼 수 있다.
  • 국민은행 서버에서 개인키로 암호화하여 클라이언트에게 데이터를 보내도 클라이언트는 공개키로 복호화하여 안전하게 볼 수 있다.

언제 HTTP와 HTTPS를 사용하는게 좋은가?

  • HTTPS의 장점
    • 안전하게 데이터를 전송 가능
  • HTTPS의 단점
    • 암/복호화 과정이 필요하기 HTTP에 비해 속도가 느리다.(오늘날에는 차이를 못느낄정도)
    • 인증서를 발급하고 유지하기 위한 추가 비용이 발생한다.
  • 따라서 개인 정보와 같은 민감한 데이터를 주고 받아야 한다면 HTTPS를 이용해야 하지만, 단순한 정보 조회 등만을 처리한다면 HTTP를 사용하면 된다!
This post is licensed under CC BY 4.0 by the author.