HTTPS란?

2023. 5. 30. 00:31네트워크/네트워크 지식


HTTPS 정의

 

HTTPS는 데이터 암호화를 통해 안전하게 네트워크 상에서 데이터 교환을 할 수 있도록 해주는 프로토콜입니다.

 

여기서 프로토콜(protocol)은 규약, 규범으로 표현하는데 쉽게 말해서 데이터 교환 시 소통하는 문법이라고 생각하면 좋습니다.

예를 들어 ip는 어디에 위치해야 하고, 헤더는 어디에 위치해야 하는 등 인데 만약 위치를 뒤죽박죽으로 보내면 데이터를 받는 입장에서는 해석하기가 난감하기 때문에 서로 약속을 만들어 놓은 것이죠.

 

사실 HTTPS는 기존 HTTP에 암호화 통신 방식을 살포시 얹은 것 뿐입니다. 데이터를 받는 입장에서 HTTPS를 인지하면 HTTPS에 쓰여진 문법대로 데이터를 해석하면 될 일입니다.

Hypertext Transfer Protocol Secure (HTTPS) is an extension of the Hypertext Transfer Protocol (HTTP). It uses encryption for secure communication over a computer network, and is widely used on the Internet. In HTTPS, the communication protocol is encrypted using Transport Layer Security (TLS) or, formerly, Secure Sockets Layer (SSL). > - https://en.wikipedia.org/wiki/HTTPS

 

 

 

 


TLS Handshake

 

요즘들어 HTTPS는 거의 TLS 방식을 쓰는데, 이는 우리가 알고있던 SSL와 사실 비슷합니다.

다만 몇 가지 차이점이 존재하는 데,

  • 메시지 검증 시 템퍼링을 방지하기 위해 SSL은 MAC 주소를 보지만 TLS은 다른 암호화된 키를 본다.
  • 레코드 프로토콜이란 키를 이용해 어플리케이션 데이터를 암호화하는 방식이다. SSL은 하나의 패킷에 여러 개의 레코드를 실을 수 있지만(거의 안 한다고 한다) TLS은 하나의 패킷에 하나의 레코드가 원칙이다. (레코드는 어떤 데이터 블록을 의미하는 것 같다)
  • 암호 슈트(cipher suites)는 전송 계층에서 쓰이는 암호 알고리즘들을 의미한다. SSL은 1024-bit RSA 기반의 PFS(Perfect Forward Secrecy) 키로 길이에 맞춰 암호화를 해야되지만 TLS은 길이 제한 없이 다양한 알고리즘을 지원한다. (그럼에도 불구하고 둘 다 DHE를 쓰지 않나?)
  • SSL은 데이터 교환 시에 오류가 있으면 메시지를 준다. TLS은 그런 거 없다.

 

과정을 그려보면 다음과 같습니다.

 

 

 

 

 

 


SSL Certificate

 

클라이언트가 SSL 인증서를 검증하기 위해서 인증서 발행 기관을 통해 해당 서버가 인증서에 명시된 서버인지, 그리고 서버가 실제 해당 도메인의 소유자인지 확인합니다.

따라서 신뢰할만한 기관에서 도메인을 만들어야 하는 과정이 필요합니다.

뭐... 물론 잘 찾아보면 무료 도메인도 있겠지만 그들도 땅파서 운용하는 것은 아니기도 하고 시간이 지나면 쓰잘데기 없는 DNS 서버를 줄 것 같기 때문에 유료 도메인을 사용하는 것을 추천합니다 ㅎ

 

본인은 https://domains.google/에서 구매했는데, 사실 네임드면 어디든 상관없습니다. 가격은 연간 $12인데, 한 달에 천원 남짓이면 한 번 스벅갈 꺼 맥날가면 좋을 듯하네요.

 

 

 

 

 

 


References

 

SSL and TLS : Differences, Comparisons and More!

While the two protocols encrypt data sent over the Internet, there is a marked diference between SSL and TLS.

powerdmarc.com

 

 

TLS 레코드 프로토콜 - Win32 apps

TLS(전송 계층 보안) 레코드 프로토콜은 핸드셰이크 중에 만든 키를 사용하여 애플리케이션 데이터를 보호합니다.

learn.microsoft.com