HTTP, HTTPS

ejoo·2024년 5월 1일

HTTP (HyperText Transfer Protocol)와 HTTPS (HyperText Transfer Protocol Secure)

HTTP (HyperText Transfer Protocol)

서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜
인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약

클라이언트는 웹 브라우저로 서버에 HTTP 요청을 보내면, 서버는 이 요청에 대한 응답을 다시 클라이언트에게 전송한다. 이 과정에서 요청과 응답은 HTTP 메시지 형태로 전송된다.

상태 정보를 저장하지 않고(Stateless) 클라이언트의 요청에 맞는 응답을 보낸 후 연결을 끊는(Connectionless) 특징이 있다.
하지만
보안 취약: HTTP는 데이터를 암호화 하지 않고 텍스트 형태로 전송하기 때문에 제 3자에게 데이터가 노출될 수 있다.
무결성 문제: HTTP는 데이터 무결성을 보장하지 않는다. 데이터가 전송 중 조작될 수 있다.
신원 보증의 부재: HTTP는 서버의 신원을 확인하지 않아 중간에 제3자가 서버를 위장하여 클라이언트와 통신할 수 있으며, 사이버 공격의 가능성이 높아진다.

HTTPS (HyperText Transfer Protocol Secure)

HTTP 프로토콜의 보안 버전으로, SSL 또는 TLS 프로토콜을 사용하여 데이터를 암호화 하는 방식
서버와 클라이언트 사이의 모든 통신 내용이 암호화된다.

SSL/TLS
SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 네트워크 통신에서 데이터의 보안 및 기밀성을 제공하기 위한 프로토콜이다. TSL은 SSL의 후속 버전이다.
브라우저는 이 인증서를 수신 및 해석하고 진위 여부를 확인한다. 확인이 완료되면 보안 연결을 통해 전송된 모든 데이터가 암호화된다. 클라이언트와 서버만 그 암호를 알고 있다.

HTTPS는 HTTP의 주요 문제들을 해결했다.

보안 강화: HTTPS는 SSL/TLS 프로토콜을 사용하여 데이터의 암호화를 제공한다. 클라이언트와 서버 간의 통신은 대칭 키를 사용한 암호화 방식으로 이루어지며, 중간에 제 3자가 데이터를 엿볼 수 없도록 보안적으로 강화된다.
무결성 보장: HTTPS는 데이터 무결성을 보장하기 위해 메시지 다이제스트(Message Digest)를 사용한다. 데이터를 전송할 때 각 데이터 블록에 대한 다이제스트 값을 생성하고, 이를 서버에서 검증하여 데이터의 변조 여부를 확인한다. 이를 통해 데이터가 전송 중에 변경되지 않았는지를 확인하고 데이터의 무결성을 보장한다.
신원 보증: HTTPS는 인증 기관에 의해 발급된 서버 인증서를 사용하여 서버의 신원을 확인한다. 클라이언트는 서버의 인증서를 검증하고, 서버의 공개 키를 획득하여 안전한 통신을 위한 대칭 키 교환에 사용한다. 이를 통해 중간에 제3자가 서버를 위장하거나 조작하는 것을 방지하고, 신뢰할 수 있는 서버와의 통신을 보장한다.

HTTPS 프로토콜 동작 방식

HTTPS는 대칭키 암호화와 비대칭키 암호화를 모두 사용하여 빠른 연산 속도와 안정성을 모두 얻고 있다.
HTTPS 연결 과정(Hand-Shaking)에서는 먼저 서버와 클라이언트 간에 세션키를 교환한다.
세션키는 주고 받는 데이터를 암호화 하기 위한 대칭키이며, 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어진다.
세션키를 클라이언트와 서버가 교환하는 과정에서 비대칭키가 사용된다. 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키가 사용되고, 이후 데이터를 교환하는 과정에서 빠른 연산을 위해 대칭키가 사용된다.

  1. 브라우저(클라이언트)가 HTTPS 웹 사이트를 방문한다.
  2. 서버는 SSL 인증서를 브라우저에게 넘겨준다.
  3. 브라우저는 SSL 인증서의 유효성을 검사하고 세션키를 발급한다.
  4. 브라우저는 세션키를 보관하며 서버의 공개키로 세션키를 암호화하여 서버로 전송한다.
  5. 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻는다.
  6. 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행한다.

HTTPHTTPS
의미Hypertext Transfer ProtocolHypertext Transfer Protocol Secure
기본 프로토콜HTTP/1,2는 TCP/IP, HTTP/3은 QUIC 프로토콜HTTP 요청, 응답 암호화를 위해 SSL/TLS, HTTP/2 사용
포트기본 포트 80기본 포트 443
용도이전 텍스트 기반 웹 사이트모든 최신 웹 사이트
보안추가 보안 기능 없음퍼블릭 키 암호화에 SSL 인증서 사용
이점인터넷을 통한 통신 지원웹 사이트에 대한 권위, 신뢰성, 검색 엔진 순위 개선

참고
HTTP & HTTPS
HTTP와 HTTPS의 차이점은 무엇인가요?
[Web] HTTP와 HTTPS의 개념 및 차이점
HTTP와 HTTPS의 차이는 무엇일까?

profile
안녕하세요

0개의 댓글