본문 바로가기
IT 기본지식

HTTPS란 무엇인가? / TLS(=SSL) 공개키 암호화

by 내기록 2022. 2. 19.
반응형
HTTPS is HTTP with encryption.
HTTPS는 암호화 기능이 있는 HTTP

 

https://www.venafi.com/blog/what-are-differences-between-http-https-0#:~:text=HTTPS%20is%20HTTP%20with%20encryption,uses%20HTTPS%20has%20HTTPS%3A%2F%2F.

 

두 프로토콜의 차이점은 HTTPS가 TLS(SSL)를 사용하여 일반 HTTP 요청과 응답을 암호화 한다는 것이다.

따라서 HTTPS가 HTTP보다 훨씬 더 안전하다.

 

 

https://feel5ny.github.io/2019/08/26/HTTP_004_01/

 

 

HTTP란?


HTTP는 Hypertext Transfer Protocol의 약자로 네트워크를 통해 데이터를 전송하는 데 사용되는 프로토콜 또는 정보를 표시하는데 사용되는 규정된 순서와 구문이다..? 쉽게 말해서 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜이다.

 

웹사이트 콘텐츠와 API call을 포함하여 인터넷을 통해 전송되는 대부분의 정보는 HTTP 프로토콜을 사용한다.

 

HTTP 메시지에는 요청과 응답의 두 가지 주요 유형이 있는데, HTTP 요청 및 응답은 인터넷을 통해 일반 텍스트로 전송된다.

문제는 연결을 모니터링하는 모든 사람이 이러한 일반 텍스트를 읽을 수 있다는 점이다. 

특히 사용자가 웹 사이트나 웹 응용 프로그램을 통해 중요한 데이터를 제출할 때 문제가 되는데.. 비밀번호, 신용카드 번호 등이 될 수 있다.

악성 행위자는 요청이나 응답의 텍스트를 읽기만 하면 어떤 정보를 요구하고 보내고 받는지를 정확히 알 수 있고 심지어 통신까지 조작할 수 있다는 문제점이 있다.

이러한 보안 문제를 해결하기 위해 HTTPS가 도입되었다.

 

HTTPS란 무엇인가?


HTTPS는 Hypertext Transfer Protocol Secure(TLS 기반 HTTP 또는 SSL 기반 HTTP) 의 약자이다.

HTTPS는 HTTP 요청과 응답을 암호화 하기 위해 TLS(또는 SSL)을 사용하기 때문에 공격자(악성 행위자)는 일반 텍스트 대신 무작위로 보이는 일련의 문자를 볼 수 있다.

 

통신 암호화 외에도 HTTPS는 두 통신 행위자를 인증하는데 사용된다. HTTP에서는 신뢰의 원칙에 기반하여 신원 확인을 하지 않았지만 현대 인터넷에서는 인증이 필수적이다.

 

신분증이 신원을 확인하는 것처럼 개인 키는 서버 신원을 확인한다. 예를들면 사용자가 웹 사이트를 탐색할 때 웹 사이트의 SSL 인증서에 있는 공개 키와 일치하는 개인 키를 소유하는 것은 해당 서버가 실제로 웹사이트의 합법적인 호스트임을 증명한다.

이렇게 하면 중간자 공격(Man-in-the-middle attacks), DNS스푸핑(DNS spoofing)등 인증이 없을 때 발생할 수 있는 여러 공격을 방지하거나 차단할 수 있다.

 

참고)
DNS스푸핑은 DNS서버를 통해 특정 웹서버의 주소로 번역하는 과정에서 이를 가로채서 공격자가 원하는 위조된 웹서버로 접근하게 하는 방법이다. 

 

 

TLS(=SSL)?


Transport Layer Security

전송 계층의 보안으로 기존의 SSL(Secure Socket Layer)에 기반한 프로토콜이다.

TCP/IP를 사용할 때 적용되며 전송계층 보안인 만큼 종단간(End-to-End) 보안 통신을 지원한다.

 

네트워크 상에서 SSL을 적용하지 않고 데이터를 전송하면 암호화되지 않은 데이터가 전송되기 때문에 스누핑(Snooping), 스니핑(Sniffing)의 위협에 노출될 수 있다. 이를 방지하기 위해 상호간 적당한 사용자인지 인증서를 통해 검증하고 서로 약속한 암호화 알고리즘을 통해 키를 교환한 후 암호화 통신을 진행한다.

 

* TLS는 공개키와 개인키가 있는 공개키 암호화라는 기술을 사용한다. (public key encryption :public key , private key)

공개 키는 서버의 SSL인증서를 통해 클라이언트 장치와 공유된다.(SSL 인증서에 웹사이트의 공개 키 정보가 있음) 인증서는 CA(인증기관)에 의해 암호화되어 서명되며 각 브라우저에는 암시적으로 신뢰하는 CA 목록이 있다.

 

신뢰할 수 있는 CA 목록에 의해 서명된 인증서는 "신뢰"가 입증되고 브라우저의 주소 표시줄에 녹색 자물쇠가 부여된다.

 

클라이언트가 서버와의 연결을 open 할 때 각 시스템은 확인된 ID가 필요하다. (verified identity)

따라서 두 장치는 공개 키와 개인 키를 사용하여 세션 키라고 하는 새 키에 동의하여 이들 간의 추가 통신을 암호화한다.

* Hand shake 과정 이후부터는 session key로 암호화된 데이터가 전송된다.

모든 HTTP 요청과 응답은 이러한 세션키로 암호화되기 때문에 통신을 가로채는 악성 행위자는 일반 텍스트가 아닌 임의의 문자열만 볼 수 있는 것이다.

 

아래는 SSL의 동작 방법에 대한 그림인데 너무 완벽하게 정리되어 있다.

세션 키(session key)는 하나의 통신 세션에서 모든 메시지를 암호화하기 위해 사용되는 1회용 대칭 키이다.

출처 : https://minix.tistory.com/397

 

 

TLS Handshake는 어떻게 진행되는가?

TLS(Transport Layer Security)란? 인터넷 상의 커뮤니케이션을 위한 개인 정보와 데이터 보안을 위해 설계되어 널리 채택된 보안 프로토콜이다. 주요 사용 사례는 웹 브라우저(웹 응용 프로그램)과 서버

sunrise-min.tistory.com

 

 

HTTP vs HTTPS


https://www.venafi.com/blog/what-are-differences-between-http-https-0#:~:text=HTTPS%20is%20HTTP%20with%20encryption,uses%20HTTPS%20has%20HTTPS%3A%2F%2F.

 

 

스푸핑(Spoofing) vs 스니핑(Sniffing) vs 스누핑(Snooping)


 

스푸핑(Spoofing), 스니핑(Sniffing), 스누핑(Snooping)

▶ 스푸핑(Spoofing) Spoof란 단어의 사전적 의미는 'hoax; trick; swindle 골탕 먹이다.; 속여먹다.; 야바위(치다), 우롱, 사취'이다. 즉 해커가 악용하고자 하는 호스트의 IP 어드레스를 바꾸어서 이를 통

limkydev.tistory.com

 

References

https://www.venafi.com/blog/what-are-differences-between-http-https-0#:~:text=HTTPS%20is%20HTTP%20with%20encryption,uses%20HTTPS%20has%20HTTPS%3A%2F%2F.

https://ohs-o.tistory.com/59

 

반응형

댓글