[CS] HTTP vs HTTPS

장다슬·2024년 4월 18일

CS 스터디

목록 보기
9/23

HTTP

Hyper Text Transfer Protocol
데이터를 전송하기 위한 통신 프로토콜로 TCP/IP 위에서 작동한다.

HTTP 프로토콜은 80번 포트를 사용하며, 가장 큰 특징은 상태가 없는 (stateless) 프로토콜로 데이터를 주고 받기 위한 각각의 요청이 서로 독립적으로 관리되는 것이다.

HTTP의 구조

Method, Path, Version, Headers, Body 등으로 구성된다.
HTTP 구조


HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에, 비밀번호나 주민번호 등의 데이터를 주고 받으면 제 3자가 정보를 조회할 수 있는 문제점이 있다.


HTTPS

Hyper Text Transfer Protocol Secure
HTTP에 데이터 암호화가 추가된 프로토콜로 HTTP의 문제점을 보완했다.

HTTPS는 443번 포트를 사용하며, 네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 대칭키/비대칭키 암호화 방식을 사용한다.

대칭키 암호화와 비대칭키 암호화를 모두 사용하여 빠른 연산 속도와 안전성을 가졌다는 장점이 있다.

대칭키 암호화

  • 클라이언트와 서버가 동일한 키를 사용해 암호화와 복호화를 진행
  • 키가 노출되면 매우 위험하나 연산 속도가 빠름

비대칭키 암호화

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

HTTPS 동작 과정

  1. 클라이언트(브라우저)가 서버로 최초 연결 시도
  2. 서버는 공개키(인증서)를 클라이언트에게 넘겨줌
  3. 클라이언트는 인증서의 유효성을 검사하고 세션키 발급
  4. 클라이언트는 세션키를 보관하며, 서버의 공개키로 세션키를 암호화하여 서버로 전송
  5. 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
  6. 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터 전송 시 세션키로 암호화와 복호화를 진행함

HTTPS 동작 과정


참고:
[Web] HTTP와 HTTPS의 개념 및 차이점
HTTP란 무엇입니까?

profile
반갑습니다

0개의 댓글