기록하는 습관을 들이자

[Network] HTTP와 HTTPS의 차이 본문

네트워크

[Network] HTTP와 HTTPS의 차이

myeongmy 2020. 9. 28. 20:15
반응형

* 해당 내용은 CS(Computer Science) 스터디를 진행하며 공부한 내용을 정리한 글입니다.

 

 

HTTP와 HTTPS 프로토콜의 차이

HTTP

HTTP는 Hypertext Transfer Protocol의 약자를 의미합니다. 인터넷에서 사용하는 웹 서버와 클라이언트 사이에 데이터를 전송하기 위한 통신 규약입니다. 인터넷에서 하이퍼텍스트를 교환하기 위해 사용되는 통신규약이며 포트번호는 80번을 사용하고 있습니다.

따라서, HTTP 서버는 80번 포트에서 클라이언트의 요청을 대기하고 있으며, 클라이언트는 TCP 80번 포트를 사용해서 연결을 하게 됩니다.

 

HTTP의 문제점

  1. HTTP는 평문 통신이기 때문에 도청이 가능합니다.
  2. 완전성을 증명할 수 없기 때문에 변조가 가능합니다.

 

TCP/IP는 도청 가능한 네트워크이다.

TCP/IP 구조의 통신은 전부 통신 경로 상에서 엿볼 수 있습니다. 패킷을 수집하는 것만으로 도청할 수 있습니다. 평문으로 통신하는 경우 메시지의 의미를 파악할 수 있기 때문에 암호화하여 통신해야 합니다.

 

완전성을 증명할 수 없기 때문에 변조가 가능하다.

여기서 완전성이란 정보의 정확성을 의미합니다. 서버 또는 클라이언트에서 수신한 내용이 송신측에서 보낸 내용과 일치한다라는 것을 보장할 수 없습니다. 왠햐마녀 리퀘스트나 리스폰스가 발신된 후에 상대가 수신하는 사이에 누군가에 의해 변조되더라도 이 사실을 알 수 없기 때문입니다. 이와 같이 공격자가 리퀘스트나 리스폰스 도중에 메시지를 빼앗아 변조하는 공격을 Man-in-the-Middle Attack이라고 부릅니다.

 

 

HTTPS (HTTP over SSL, HTTP over TLS)

HTTPS는 HTTP 프로토콜의 보안성을 강화한 프로토콜입니다. HTTPS는 소켓 통신에서 일반 텍스트(평문)를 이용하는 대신에, SSL이나 TLS 프로토콜을 이용해 세션 데이터를 암호화합니다. HTTPS의 포트번호는 443번을 사용하고 있습니다.

즉, HTTPS는 새로운 어플리케이션 계층의 프로토콜이 아니라 HTTP 통신하는 소켓 부분을 SSL(Secure Socket Layer)나 TLS(Transport Layer Security)라는 프로토콜로 대체하는 것 뿐입니다. HTTP는 원래 TCP와 직접 통신했지만, HTTPS에서는 HTTP는 SSL과 통신하고 SSL이 TCP와 통신하게 됩니다.

 

그렇다면 모든 웹 페이지에서 HTTPS를 사용하지 않는 이유는?

평문 통신에 비해서 암호화 통신은 CPU나 메모리 등 리소스가 많이 필요하게 됩니다. 통신할 때마다 암호화를 하면 많은 리소스를 소비하기 때문에 서버 한 대당 처리할 수 있는 최대 리퀘스트의 수가 줄어들게 됩니다. 그렇기 때문에 민감한 정보를 다룰 때만 HTTPS에 의한 암호화 통신을 사용하게 됩니다.

반응형
Comments