개발자도구
HTTPS는 어떻게 통신 내용을 안전하게 지킬까
웹사이트 주소창에 붙어 있는 작은 자물쇠 아이콘은 이 사이트와의 통신이 암호화되어 있다는 뜻입니다. 이 암호화를 가능하게 하는 것이 TLS(Transport Layer Security)라는 프로토콜이며, HTTP 위에 이 TLS가 얹힌 것이 HTTPS입니다.
암호화의 핵심 과정은 접속 초반에 이루어지는 핸드셰이크(악수)입니다. 이때 브라우저와 서버는 서로 다른 두 개의 키(공개키와 개인키)를 사용하는 비대칭 암호화 방식으로 짧은 대화를 나누며, 이후 통신에서 실제로 사용할 임시 암호키(세션키) 하나를 안전하게 합의합니다. 비대칭 암호화는 보안성은 높지만 계산 비용이 크기 때문에, 이후 실제 데이터를 주고받을 때는 계산이 훨씬 빠른 대칭 암호화 방식으로 전환해 세션키 하나로 암호화와 복호화를 반복합니다. 이렇게 두 방식을 단계별로 조합하는 것이 HTTPS가 보안성과 속도를 동시에 잡는 핵심 전략입니다.
여기서 중요한 또 다른 요소는 인증서입니다. 아무리 암호화가 튼튼해도, 애초에 통신 상대가 진짜 그 사이트가 맞는지 확인할 수 없다면 소용이 없습니다. 이를 위해 신뢰할 수 있는 인증기관(CA)이 서버의 공개키에 서명을 해주는 인증서 체계가 사용됩니다. 브라우저는 이 서명을 검증해, 지금 접속한 서버가 인증기관이 보증한 진짜 서버인지 확인합니다. 이 과정이 없다면 공격자가 중간에서 서버인 척 위장해 통신 내용을 가로채는 중간자 공격에 취약해집니다.
다만 HTTPS가 지켜주는 것은 어디까지나 통신 구간의 도청과 변조 방지입니다. 접속한 사이트 자체가 신뢰할 만한 곳인지는 별개의 문제입니다. 피싱 사이트도 얼마든지 무료 인증서를 발급받아 HTTPS를 적용할 수 있기 때문에, 자물쇠 아이콘 하나만으로 사이트 전체를 신뢰해서는 안 되며, 실제 도메인 주소를 함께 확인하는 습관이 중요합니다.