TIL 12 | HTTP vs HTTPS 차이

Seon Kang choi·2021년 10월 2일
0

HTTP(Hypertext Transfer Protocol)

서로 다른 시스템 통신을 주고받게 해주는 기초적인 프로토콜이다. 인터넷 초기에 모든 웹 사이트에서 기본적으로 사용되었던 프로토콜이기도 하다.

HTTP 문제점

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

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

TCP/IP는 패킷을 수집하는 것만으로 도청이 가능하다. 평문으로 통신하면 메시지의 의미를 파악할 수 있기 때문에 암호화하여 통신해야 한다.

  • 보안
  1. 통신 자체를 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)라는 다른 프로토콜을 조홥하여 HTTP 통신 내용을 암호화할 수 있다. SSL을 조합한 HTTP를 HTTPS 라고 부른다.
  2. HTTP메시지에 포함되는 콘텐츠만 암호화한다. 암호화해서 전송하면 받은 수신측은 암호를 해독하여 출력 처리한다.

통신 상대를 확인을 못하기에 위장이 가능

HTTP에 의한 통신은 상대가 누구인지 모르기 때문에 누구든지 리퀘스트 보낼 수 있다. 서버에서 엑세스 제한이 없는 경우 리퀘스트가 오면 상대가 누구든지 리스폰스를 반환한다. 이럴 경우 여러 문제점을 유발한다.

  1. 송신측의 리퀘스트를 받은 웹 서버가 의도한 리스폰스를 보내야 하는 웹 서버인지 확인할 수 없다.
  2. 리스폰스를 받은 클라이언트가 원래 의도한 리퀘스트를 보낸 클라이언트인지 확인할 수 없다.
  3. 통신하고 있는 상대가 접근이 허가된 상대인지 확인할 수 없다.
  4. 어디에서 누가 리퀘스트를 보냈는지 확인할 수 없다.
  5. 의미없는 리퀘스트도 수신한다.(DoS 공격)
  • 보안
    SSL로 상대를 확인할 수 있다. 상대를 확인할 수단으로 증명서를 제공한다. 증명서는 신뢰할 수 있는 제 3자 기관에 의해 발행되는 것이기에 서버나 클라이언트가 실재하는 사실을 증명한다. 증명서를 통해 내가 통신하고자 하는 서버임을 알고 이용자는 개인 정보 누설 등의 위험성이 줄어든다. 그리고 클라이언트는 증명서로 본인 확인을 하고 웹 사이트 인증에도 이용할 수 있다.

완전성을 증명할 수 없기에 변조 가능

완전성이란 정보의 정확성을 의미한다. HTTP는 서버 또는 클라이언트에서 수신한 내용이 송신측에서 보낸 내용과 일치한다는 것을 보장할 수 없다. 누군가에 의해 변조되더라도 이 사실을 알 수 없다.

  • 보안
    MD5, SHA-1 등의 해시 값을 확인하는 방법과 파일의 디지털 서명을 확인하는 방법이 존재하지만 확실히 확인할 수 있는 것은 아니다. SSL은 인증이나 암호화 그리고 다이제스트 기능을 제공하고 있다.

HTTPS

HTTP에 암호화와 인증, 완전성 보호를 더했다.
SSL의 껍질을 덮어쓴 HTTP 이다. 통신하는 소켓 부분에 SSL 또는 TLS라는 프로토콜로 대체하는 것 뿐이다. HTTPS는 SSL과 통신하고 SSL은 TCP와 통신하게 된다. 여기서 암호화와 증명서, 안전성 보호를 이용한다.

HTTPS는 HTTP의 평문 통신에 비해 암호화 통신은 CPU나 메모리 등 리소스를 더 요구한다. 통신할 때마다 암호화를 하면 추가적인 리소스를 소비하기 때문에 서버 한 대당 처리할 수 있는 리퀘스트의 수가 줄어든다.

하지만 하드웨어의 발달로 HTTPS를 사용하더라도 속도 저하가 거의 일어나지 않는다. 새로운 표준인 HTTP 2.0을 이용한다면 오히려 HTTPS가 더 빠르다. 따라서 HTTPS에 의한 암호화 통신을 사용하는 방식은 현재 모든 웹 페이지에서 적용하는 방향으로 가고 있다.

profile
유쾌한 개발 생활~

0개의 댓글