HTTPS 작동 원리, 어떻게 데이터를 보호할까?

세계적인 IT 기업 구글이 ‘SSL 인증서’를 매우 중요하게 여긴다는 것, 알고 계셨나요? 🤔 구글은 웹 보안 강화를 위해 HTTPS 사용을 적극 권장하고 있습니다. 일례로, 구글은 HTTPS를 적용한 웹사이트를 적극적으로 지원합니다. 구글 쇼핑 광고 및 유튜브 쇼핑에서는 HTTPS를 필수 자격 요건으로 두고 있습니다. 또한, 검색 엔진 최적화(SEO) 측면에서도 HTTPS를 적용한 웹사이트를 검색 결과에서 더 높은 순위로 노출합니다. 

이처럼 구글이 HTTPS에 진심인 이유는, 웹사이트와 사용자 간 전달되는 데이터를 HTTPS로 안전하게 암호화할 수 있기 때문인데요.  매년 사이버 공격이 급증하는 시점에서 HTTPS의 중요성은 더욱 주목받고 있습니다. 그렇다면, HTTPS는 어떤 원리로 데이터를 보호하는 걸까요? 이번 글에서는 HTTPS의 개념 및 작동 원리에 대해 살펴보겠습니다. 🔍

✅ HTTP vs. HTTPS

먼저, HTTP와 HTTPS의 개념에 대해 알아볼까요?
HTTP와 HTTPS는 모두 사용자와 웹사이트 간에 데이터를 주고받기 위한 프로토콜입니다. HTTP(HyperText Transfer Protocol)는 암호화 과정 없이 데이터를 인터넷으로 전송하는 프로토콜입니다. 해당 프로토콜은 데이터를 누구나 쉽게 볼 수 있는 ‘평문’ 상태로 전달합니다. 반면, HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 보안을 추가한 프로토콜입니다. 해당 프로토콜은 데이터를 전송하기 전에 안전하게 암호화하여 전송합니다. 이 과정에서SSL 또는 TLS와 같은 암호화 기술을 사용하여, 데이터가 전송 중 해킹이나 변조되지 않도록 보호합니다. 

HTTP와 HTTPS의 주요 차이점

Tip! TLS와 SSL은 어떤 차이가 있나요?

TLS(Transport Layer Security)와 SSL(Secure Sockets Layer)은 모두 인터넷에서 데이터를 안전하게 전송하기 위한 암호화 프로토콜입니다. SSL은 상대적으로 오래된 방식으로, 보안 취약점이 존재하여 현재는 더 이상 사용이 권장되지 않습니다. TLS는 SSL의 개선된 버전으로, 더 안전하고 현대적인 암호화 기술을 사용합니다. 현재 대부분의 웹 환경에서는 TLS가 사용되고 있으며, TLS 1.2 및 TLS 1.3이 가장 널리 사용되는 버전입니다. 편의상, 암호화 프로토콜을 SSL이라고 부르지만, 기술적으로 올바른 용어는 TLS입니다.

✅ HTTPS의 작동 원리

HTTPS는 암호화와 인증, 데이터 무결성 원칙을 통해 데이터를 안전하게 보호합니다. 이를 위해서는 ‘SSL 핸드셰이크’ 과정이 반드시 필요합니다. SSL 핸드셰이크(SSL Handshake)는 사용자와 서버를 안전하게 연결하기 위한 초기 과정으로, 이 과정에서 암호화된 데이터를 전달하기 전에 서로 신뢰할 수 있는지 확인하며 암호화 키를 교환합니다.
세부적인 SSL 핸드셰이크 과정은 아래와 같습니다. 

① ‘Client Hello’ 메시지 전송 
사용자가 웹사이트에 접속하면, 브라우저는 서버에 ’Client Hello’ 메시지를 보냅니다. 이 메시지에는 암호화를 위해 필요한 정보가 포함되어 있습니다. 사용자는 SSL/TLS 버전, 암호화 알고리즘 목록 등 호환되는 보안 방식과 함께 암호화 키 생성을 위한 난수(랜덤 값)를 전달합니다. 

②  ‘Server Hello’ 메시지 & Server Certificate 전송
사용자로부터 받은 정보를 바탕으로, 서버는 사용할 SSL/TLS 버전과 암호화 알고리즘을 선택합니다. 그 후, 서버는 생성한 난수와 함께 ‘Server Hello’ 메시지를 반환합니다. 이 과정에서 SSL/TLS 인증서를 함께 전송합니다. SSL/TLS 인증서에는 서버의 공개키, 도메인 정보, 인증기관(CA) 정보를 포함하고 있습니다. 

③  인증서 검증
브라우저는 서버가 보낸 SSL/TLS 인증서를 신뢰할 수 있는지 확인합니다. 브라우저에는 미리 설치된 신뢰할 수 있는 인증기관(CA)의 공개키가 있습니다. 브라우저는 이 공개키를 사용하여 서버가 보낸 인증서의 암호화를 해제(복호화)합니다. 이 과정에서 인증서에 포함된 정보를 확인하고, 정보가 변조되지 않았는지, 제대로 작성되었는지 검증합니다. 만약 인증서가 유효하지 않으면 경고 메시지를 표시하고 연결을 중단합니다. 

④  세션키 생성 및 교환
브라우저와 서버 간에 데이터를 안전하게 주고받기 위해서는, 암호화된 통신에 사용할 ‘세션 키’가 필요합니다. 이 세션 키는 다음과 같은 과정을 거쳐 생성됩니다. 브라우저는 ‘프리-마스터 시크릿(pre-master secret)’이라는 초기 비밀값을 생성하고, 이를 서버의 공개키로 암호화하여 전송합니다. 서버는 자신의 개인키로 암호화를 해제하여 프리-마스터 시크릿을 얻습니다. 이후, 브라우저와 서버는 공유한 프리-마스터 시크릿과 난수들을 바탕으로 ‘세션 키’를 생성합니다. 
  
⑤ ‘Finish’ 메시지 교환
서버와 사용자는 세션 키를 사용하여 ‘Finished’ 메시지를 암호화해 전송합니다. 이 메시지가 성공적으로 전달되면 핸드셰이크 과정이 완료됩니다. 

HTTPS는 이러한 과정을 통해 유출 및 변조로부터 데이터를 안전하게 전달합니다.

지금까지 HTTP와 HTTPS의 차이점과 HTTPS가 데이터를 어떻게 안전하게 보호하는지 살펴보았습니다. 
HTTPS가 데이터를 안전하게 전달할 수 있는 이유는 ‘SSL 인증서’를 활용해 통신을 암호화하고, 이를 통해 외부 공격으로부터 보호하기 때문입니다. 따라서 웹사이트 보안을 강화하려면 SSL 인증서를 반드시 설치하는 것이 중요합니다.
사이버 범죄가 계속해서 증가하는 가운데, SSL 인증서를 통해 웹사이트 보안을 강화하는 것은 더 이상 선택이 아닌 필수가 되었습니다. 지금 바로 SSL 인증서를 설치하여 웹사이트 보안을 강화하고, 데이터를 보호하세요!✨