[Network]HTTP와 HTTPS

Dex·2023년 1월 14일
0

Network

목록 보기
3/3

HTTP(Hyper Text Transfer Protocol)란?

  • 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜입니다.
  • 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있습니다.
  • HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다.
  • 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이라서 도청이 가능하며, 상대를 확인하지 않기 때문에 위장이 가능하고 마지막으로 완전성을 증명할 수 없기 때문에 변조가 가능하다는 단점을 가지고 있습니다.

HTTP의 구조

  • 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다.
  • HTTP는 상태를 가지고 있지 않은 Stateless 프로토콜이고 Method, Path, Version, Headers, Body 등으로 구성된다.

HTTPS(Hyper Text Transfer Protocol Secure)란?

  • HTTP에 데이터 암호화가 추가된 프로토콜이며, 443번 포트를 사용하고 있습니다.
  • HTTP의 단점인 제3자가 정보를 조회하거나 데이터가 도난되지 않도록 SSL(Secure Socket Layer) 혹은 TLS(Transport Layer Security)를 사용하여 데이터 암호화를 지원하고 있습니다.

HTTPS의 암호화 방식

  1. 대칭키 암호화
  • 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행합니다.
  • 키가 노출되면 매우 위험하지만 연산 속도가 빠르다는 장점이 있습니다.
  1. 비대칭키 암호화
  • 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용합니다.
  • 키가 노출되어도 비교적 안전하지만 연산 속도가 느리다는 단점이 있습니다.
  • 비대칭키 암호화는 공개키/개인키를 사용해 데이터를 암호화 하고 있다.
    공개키는 모두에게 공개 가능한 키를 말한다.
    개인키는 나만 가지고 알고 있어야 하는 키를 말한다.

HTTPS의 동작 과정

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

HTTP와 HTTPS의 차이점

  • HTTTP는 암호화가 추가되지 않았기 때문에 보안에 취약하며, HTTPS는 암호화가 되기 때문에 안전하게 데이터를 주고 받을 수 있다.

Reference
Blog
Blog

profile
성장하는 개발자

0개의 댓글