HTTP / HTTPS 개념과 차이점

솜주먹·2022년 10월 11일
0

항해99

목록 보기
15/37

📖 HTTP

💬 정의

  • Hyper Text Transfer Protocol : 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜
  • 즉 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로 80번 포트를 사용하고있음

💬 구조

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

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

📖 HTTPS

💬 정의

  • Hyper Text Transfer Protocol Secure : HTTP에 데이터 암호화가 추가된 프로토콜
  • 443번 포트를 사용하고있음

💬 동작 과정

  • 대칭키 암호화와 비대칭키 암호화를 모두 사용하여 빠른 연산 속도와 안정성을 가짐
  • 연결 과정(Hand-Shaking)에서는 먼저 서버와 클라이언트 간에 세션키를 교환
    (여기서 세션키는 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키이며,
    데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어짐)
  • 이 세션키를 클라이언트와 서버가 교환하는 과정에서 비대칭키 사용

처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키가 사용되는 것,
이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키가 사용되는 것

📖 대칭키 / 비대칭키 암호화

💬 대칭키 암호화

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

💬 비대칭키 암호화

  • 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용함
  • 키가 노출되어도 비교적 안전하지만 연산 속도가 느림

💬 비대칭키 암호화 상세 설명

암호화를 공개키로 하느냐 개인키로 하느냐에 따라 얻는 효과가 다른데, 공개키와 개인키로 암호화하면 각각 다음과 같은 효과를 얻을 수 있음

  • 공개키 암호화: 공개키로 암호화를 하면 개인키로만 복호화 가능
    -> 개인키는 나만 가지고 있으므로, 나만 볼 수 있음.
  • 개인키 암호화: 개인키로 암호화하면 공개키로만 복호화할 수 있다.
    -> 공개키는 모두에게 공개되어 있으므로, 내가 인증한 정보임을 알려 신뢰성을 보장할 수 있음.

💡 답변

HTTPS란?

HTTP의 문제인 제3자의 정보 조회를 막기 위해 데이터 암호화가 추가된 프로토콜이며
443번 포트를 사용합니다. 암호화를 할때 대칭키 / 비대칭키 암호화를 
전부 사용합니다. 
Hand shaking에서 안전하게 세션키를 공유하기 위해 비대칭키가 사용되고
후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키가 사용됩니다.

HTTP와 HTTPS 차이점에 대해 설명해주세요

먼저 사용하는 포트번호가 80번과 443번으로 다릅니다.
HTTPS는 HTTP를 기반으로 데이터 암호화가 추가된 프로토콜입니다.
그렇기에 보안적인 측면에서 HTTPS가 우위에 있지만
암/복호화 과정으로 인해 HTTP보다 속도가 느립니다.
또한 HTTPS는 인증서를 발급받고 유지하는데 비용이 발생합니다.
개인 정보와 같은 민감한 데이터가 오고간다면 HTTPS를 이용해야 하지만
단순 정보 조회같은 사이트는 HTTP를 적용하면 됩니다.

😍 참조

망나니개발자의 티스토리

0개의 댓글