네트워크

HTTP? HTTPS?

머전제이팍 2023. 4. 9. 12:33

통신 Protocol의 국룰, HTTP와 HTTPS에 대해 정리해 보자..

 

 

HTTP(Hyper Text Transfer Protocol)?

💡 인터넷에서 데이터를 주고 받기 위한 통신규약중 하나

 

  • 웹 브라우저와 서버/클라이언트 통신에서 주로 사용되는 통신 규약.
    1. HTTP는 웹 브라우저와 서버 간의 데이터 전송을 위해 TCP/IP 프로토콜 위에서 동작하며 2)기본적으로 암호화하지 않은 평문 통신 방식
  • 기본 80 port를 사용

http의 구성 요소

http의 구성요소

image reference: https://mangkyu.tistory.com/98      

 

  1. http method: 요청 메시지에서 사용되는 method로, 서버에서 수행할 동작을 지정.
  • 대표적인 HTTP 메소드로는 GET(자원 조회), POST(자원 생성), PUT(자원 갱신), DELETE(자원 삭제) 등이 존재.

   2. Path: HTTP 요청의 경로.

  • 클라이언트가 요청하는 자원의 위치를 가리키며, 예를 들어, "http://example.com/api/users"는 클라이언트가 "example.com" 서버의 "/api/users" 경로에 위치한 자원을 요청한다는 것을 의미

 

   3. Protocol: HTTP 프로토콜의 버전을 나타냄.

  • 현재는 HTTP/1.1이 국룰

    4. Headers: HTTP 요청이나 응답의 부가적인 정보를 담는 부분, 예시의 경우 host: 요청된 reousrce의 dns 이름, Accept-        Laguange: fr ⇒ 클라이언트가 프랑스어로 응답해주는것을 선호한다.

** protocol의 종류는 추후 정리 예정

BUT! HTTP는 이러한 문제점들이 있다!

  • HTTP 는 평문 통신이기 때문에 도청이 가능하다.
  • 통신 상대를 확인하지 않기 때문에 위장이 가능하다.
  • 완전성을 증명할 수 없기 때문에 변조가 가능하다.

=> 이러한 이유로 주민등록번호, 비밀번호 등을 제 3자가 도청하는 불상사가 일어날수도 있음

=> 이러한 이유로 HTTPS가 등장

 

 

 

HTTPS?(Hyper Text Transfer Protocol Secure)

💡 HTTP에 암호와와 인증을 추가하여 보안을 더한 protocol

  • HTTP 통신하는 소켓 부분을 SSL(Secure Socket Layer)or TLS(Transport Layer Security)라는 프로토콜로 대체하여 통신하는 protocol == HTTPS!
  • 기본적으로 443 port를 사용

암호화 방식

💡 http는 대칭키 암호화 방식, 비대칭키 암호화 방식을 두가지 다 이용한다.

 

  1. 대칭키 암호화
    • 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함
    • 키가 노출되면 매우 위험하지만 연산 속도가 빠름
  2. 비대칭키 암호화
    • 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용함
    • 키가 노출되어도 비교적 안전하지만 연산 속도가 느림

HTTPS의 동작 과정

💡 HTTPS는 위의 암호화 방식 2가지를 사용하여 동작한다.

 

⇒ 즉, 안정성과 연산속도를 둘다 챙길 수 있다!!

  1. HTTPS 연결 과정(Hand-Shaking)에서는 먼저 서버와 클라이언트 간에 Session key를 교환.
  2. Session key는 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키이며, 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어짐.
  3. 문제는 이 Session key를 클라이언트와 서버가 어떻게 교환할 것이냐 인데, 이 과정에서 비대칭키가 사용.

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

 

 

 

두 방식의 장단점

HTTP의 장단점:

  • 장점: 구성이 단순하며, 빠른 속도로 데이터를 전송가능.
  • 단점: 데이터가 평문으로 전송되므로 보안에 취약.
  • 또한, 데이터 무결성이 보장되지 않기 때문에 중간에 데이터가 변조될 가능성이 있다.

HTTPS의 장단점:

  • 장점: HTTP와 달리, SSL 인증서를 사용하여 데이터 암호화를 지원합니다. 따라서, 데이터 전송 시에 더욱 안전하며, 중간자 공격을 방지할 수 있다.
  • 단점: SSL 인증서 발급 및 설치, 암호화/복호화 처리로 인해 성능이 HTTP보다 느릴 수 있습니다. 또한, SSL 인증서 발급 및 유지 보수 비용이 발생할 수 있다.
  •