HTTP와 HTTPS의 차이점

HTTP는 무엇일까?

   HTTP는 Hyper Text Transfer Protocol의 약자로, 인터넷 상에서 데이터(Hyper Text)를 주고 받기 위해서(Transfer) 서버/클라이언트 모델을 따르는 프로토콜입니다. 주로 웹 브라우저와 웹 서버간의 커뮤니케이션을 위해서 디자인 되었으며 ??

   HTTP는 주로 TCP를 사용하고, 2020년부터 도입된 HTTP/3에서는 UDP를 사용합니다. 또한 기본 포트로 80번을 사용한다는 특징이 있습니다.

서버/클라이언트 모델: 클라이언트가 요청을 생성하기 위한 연결을 연다음 응답을 받을때 까지 대기하는 전통적인 방식

 

프로토콜: 컴퓨터 내부 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계

HTTP의 문제점

   HTTP 서버는 기본 80번 포트에서 서비스를 대기하고 있으며, 만약 웹 브라우저가 80번 포트를 연결하여 데이터를 요청하면 서버는 요청에 해당하는 데이터(Hyper Text)를 전송하면서 응답하게 됩니다.

   이 과정에서 누군가가 네트워크 신호를 가로채는 경우, 데이터는 외부에 그대로 노출되어 데이터가 도난당할 수 있다는 문제점이 존재합니다. 이러한 보안 취약점을 해결하기 위해 HTTPS가 등장하였습니다.

HTTPS!

   HTTPS HTTP에서 Secure socket layer, 즉 데이터 전송 과정에서 보안이 추가된 프로토콜입니다. 데이터 전송시 텍스트를 사용하는 대신, SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화하기 때문에 데이터의 보호를 보장합니다. 그리고 HTTP와는 다르게 기본 포트로 443번을 사용한다는 특징이 있습니다.

   따라서 HTTPS를 사용하면 클라이언트가 금융 활동 이나 온라인 쇼핑을 할 때 민감한 개인 정보를 서버와 안전하게 주고 받을 수 있게 됩니다.

SSL? TLS? : SSL(Secure Sockets Layer), TSL(Transport Layer Security)는 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약입니다. 이때 TLS는 SSL이 표준화되면서 바뀐 이름입니다. 따라서 TLS안에 SSL이 있다 할 수 있습니다.

그렇다면 HTTPS에서 보안이 어떤 방식으로 동작할까?

브라우저에서 https를 사용하는 사이트일 경우 보안 연결이 사용되었다는 문구를 볼 수 있습니다.

   HTTPS는 SSL 암호화 통신, 즉 공개키 암호화 방식의 알고리즘을 통해 보안을 구현합니다. 그렇다면 공개키 암호화 방식에 대해서 알아보겠습니다.

공캐키 암호화 방식

   공개키 암호화 방식은 암호 방식의 한 종류로 암호화와 복호화에 이용하는 키가 다른 방식을 말합니다. 공개키와 암호키가 존재하며, 위 그림에서 Hello Alice!라는 문구를 공개키로 암호화했다면 오직 암호키로만 이를 복호화할 수 있습니다. 반대로 암호키로 암호화했다면 공개키로만 복호화 할 수 있습니다.

   이 방식을 이용한 클라이언트와 서버간의 흐름을 간단하게 정리해보았습니다.

  • 클라이언트는 공개키로 HTTP요청을 암호화합니다.
  • 이 요청을 받은 서버는 암호키로 요청을 복호화해서 해독합니다.
  • 서버는 요청에 해당하는 데이터를 암호키로 암호화하여 클라이언트에 응답합니다.
  • 클라이언트는 응답을 공개키로 응답을 복호화하여 해독합니다.

보안 말고 또 다른 차이점?

   구글 등의 검색 엔진에서는 HTTPS를 사용한 사이트에 SEO(Search Engine Optimization) 가산점을 부여합니다. 따라서 동일한 키워드를 검색하더라도 HTTPS가 적용된 안전한 사이트가 더 상위에 노출됩니다.

요약

   HTTPS는 인터넷 상에서 데이터를 주고받기위한 프로토콜인 HTTP에 보안이 추가된 방식입니다. 보안은 공개키 암호화 방식을 사용하는 SSL 암호화 통신을 통해 구현됩니다. 따라서 둘의 차이점은 보안의 적용유무에 있다고 할 수 있습니다.

참고문서

https://developer.mozilla.org/ko/docs/Web/HTTP

https://ko.wikipedia.org/wiki/HTTP

https://ko.wikipedia.org/wiki/HTTPS

https://post.naver.com/viewer/postView.nhn?volumeNo=16561296&memberNo=1834 

https://ko.wikipedia.org/wiki/%EA%B3%B5%EA%B0%9C_%ED%82%A4_%EC%95%94%ED%98%B8_%EB%B0%A9%EC%8B%9D

'cs지식' 카테고리의 다른 글

논리회로 및 설계(1)  (0) 2022.05.06