COMPUTER SCIENCE/NETWORK

Network / HTTP vs HTTPS 개념 차이

24_bean 2022. 8. 5. 17:08

HTTP : Hyper Text Transfer Protocol

 - 서버 / 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜

 

인터넷에서 Hyper Text 를 서로 주고 받기 위한 통신 규약으로 80번 포트를 사용하고 있다. (default port:80)

application 레벨의 프로토콜로 TCP/IP 위에서 작동한다. 

또한 Stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성된다.

 

HTTP Headers

HTTP 는 암호화 되지 않은 평문 데이터를 전송하는 프로토콜인데, 개인정보나 암호 등을 주고 받는 과정에서 leak 문제가 생길 수 있다는 점이 대두되며 이를 해결하기 위해 암호화-복호화 기능이 추가된 HTTPS가 등장하게 되었다.


HTTPS : Hyper Text Transfer Protocol Secure

 - HTTP 에 데이터 암호화가 추가된 프로토콜

 

HTTP와 다르게 443번 포트를 기본으로 사용한다.


대칭키 암호화와 비대칭키 암호화 

HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용한다.

 

  • 대칭키 암호화
    • 이름에서도 알 수 있듯 클라이언트와 서버가 같은 키를 사용해 암호화/복호화를 진행한다.
    • 키가 노출될 경우 매우 위험하지만 연산속도가 빠르다
  • 비대칭키 암호화
    • 대칭키와 반대로 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화하는데 사용한다.
    • 키가 노출되어도 비교적 안전하지만 연산속도가 느리다

 

비대칭키 암호화 부분에서 공개키과 개인키의 개념에 대해 알아보자.

 

공개키란 말 그대로 "모두에게 공개가능한 키"를 뜻하고,

개인키란 말 그대로 "나만 가지고 알 수 있는 키"를 뜻한다.

 

공개키 암호화 -> 개인키로 복호화 진행, (나만 볼 수 있다)

개인키 암호화 -> 공개키로 복호화 진행, (내가 인정한 정보임을 보증한다)

출처 : https://sectigo.com/resource-library/public-key-vs-private-key


 

SSL(Secure Socket Layer) / TLS(Transport Layer Security)

HTTPS는 SSL 과 TLS 를 전송 기술로 사용한다.

이는 TCP, UDP와 같은 일반적인 인터넷 통신에 안전한 계층(layer)을 추가하는 방식이다. 그리고 이 기술을 구현하기 위해 웹 서버에 설치하는 것이 SSL/TLS 인증서이다. TLS는 SSL의 개선 버전으로, 최신 인증서는 TLS를 사용하지만 편의적으로 SSL 인증서라고 쭉 부르고 있다.

 

이점

  • 통신 내용이 공격자에게 노출되는 것을 막을 수 있다. 
  • 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지를 판단할 수 있다.
  • 통신 내용의 악의적인 변경을 방지할 수 있다.


HTTPS 동작 과정

위에서 살짝 언급하지만 HTTPS는 대칭키 방식과 비대칭키 방식을 모두 사용한다.

 

HTTP 연결과정(Hand-Shaking)

 - 서버와 클라이언트간 세션키 교환 (대칭키)

세션키 교환 (대칭키 방식)

HTTPS 암호화 

HTTPS 암호화 과정

 


Reference :

https://en.wikipedia.org/wiki/HTTPS,

https://www.techtarget.com/searchsoftwarequality/definition/HTTPS,

https://www.youtube.com/watch?v=Tw5q-SN9ZM8