본 글은 What is HTTPS? 라는 글을 번역한 글입니다.
Hypertext transfer protocol secure는 HTTP의 보안버전입니다. 그리고 이 프로토콜은 웹 브라우저와 웹사이트간의 데이터 통신에 주로 사용됩니다. HTTS는 데이터 전송의 보안성을 높이기 위해서 암호화되어 있습니다. 이것은 특히 유저가 민감한 데이터를 보낼 때 중요합니다. 예를 들어서 은행 계좌, 이메일 서비스, 건강보험과 관련된 데이터가 될 수 있습니다.
어떤 웹사이트든 간에, 특히 로그인 인증을 요구하는 사이트, HTTPS를 사용해야합니다. 크롬과 같은 모던 웹 브라우저는 HTTPS를 사용하지 않는 사이트에서는 다르게 표시됩니다. URL 바에 자물쇠 아이콘을 찾아서 웹페이지가 안전한지 확인하세요. 웹 브라우저는 HTTPS를 매우 중요하게 생각합니다. 구글 크롬과 다른 브라우저들은 모든 HTTPS가 아닌 웹사이트를 안전하지 않다고 표시합니다.
HTTPS는 어떻게 동작하나요?
HTTPS는 커뮤니케이션을 암호화하기 위해서 암호 프로토콜을 사용을 사용합니다. 이 프로토콜의 이름은 Transport Layer Security (TLS) 입니다. 이것의 이전 이름은 Secure Sockets Layer (SSL) 이었습니다. 이 프로토콜은 비대칭 공개키 인프라를 사용해서 커뮤니케이션을 보안합니다. 이러한 종류의 보안 시스템은 두 당사자 간의 통신을 암호화하기 위해 두 가지 다른 키를 사용합니다:
- 개인 키 - 이 키는 웹사이트의 소유자가 제어하며, 읽는 이가 추측했을 것처럼, 비공개로 유지됩니다. 이 키는 웹 서버에 존재하며 공개 키로 암호화된 정보를 복호화하는 데 사용됩니다.
- 공개 키 - 이 키는 안전한 방식으로 서버와 상호 작용하려는 모든 사람이 사용할 수 있습니다. 공개 키로 암호화된 정보는 개인 키로만 복호화할 수 있습니다.
HTTPS가 왜 중요할까요? HTTPS를 사용하지 않으면 어떤 일이 일어나나요?
HTTPS는 웹사이트 정보가 네트워크를 통해 쉽게 볼 수 있도록 방송되는 것을 방지합니다. 일반 HTTP를 통해 정보가 전송되면, 그 정보는 무료 소프트웨어를 사용하여 쉽게 "스니핑"(네트워크 트래픽을 모니터링하거나 가로채는 행위)할 수 있는 데이터 패킷으로 분할됩니다. 이로 인해 공개 Wi-Fi와 같은 보안되지 않은 매체를 통한 통신은 간섭에 매우 취약해집니다. 사실, HTTP를 통해 이루어지는 모든 통신은 평문으로 이루어져, 올바른 도구를 가진 사람이면 누구든 쉽게 접근할 수 있으며, 경로 중간의 공격( on-path attacks)에 취약합니다.
HTTPS를 사용하면, 트래픽이 암호화되어 패킷이 스니핑되거나 다른 방식으로 가로채어져도, 그들은 무의미한 문자로 나타납니다. 예를 들어 보겠습니다:
Before encryption:
This is a string of text that is completely readable
After encryption:
ITM0IRyiEhVpa6VnKyExMiEgNveroyWBPlgGyfkflYjDaaFf/Kn3bo3OfghBPDWo6AfSHlNtL8N7ITEwIXc1gU5X73xMsJormzzXlwOyrCs+9XCPk63Y+z0=
HTTPS가 없는 웹사이트에서는 인터넷 서비스 제공자(ISP)나 다른 중개자가 웹사이트 소유자의 승인 없이 웹페이지에 콘텐츠를 주입할 수 있습니다. 이는 대개 광고 형태로 나타나며, 수익을 늘리고자 하는 ISP가 고객의 웹페이지에 유료 광고를 주입하는 것입니다. 놀랍게도 이런 경우, 광고 수익과 그 광고의 품질 관리는 웹사이트 소유자와 전혀 공유되지 않습니다. HTTPS는 감독되지 않는 제3자가 웹 콘텐츠에 광고를 주입하는 능력을 제거합니다.
HTTPS는 어떤 포트(Port)를 사용하나요?
HTTPS는 443번 포트를 사용합니다. 이는 HTTP가 사용하는 80번 포트와 HTTPS를 구분짓습니다.
*포트란 ? : 네트워킹에서 포트는 네트워크 연결이 시작되고 끝나는 가상의 소프트웨어 기반 지점을 말합니다. 모든 네트워크에 연결된 컴퓨터는 트래픽을 받을 수 있도록 여러 포트를 노출합니다. 각 포트는 특정 프로세스나 서비스와 연결되어 있고, 다른 프로토콜들은 다른 포트들을 사용합니다.
HTTPS는 HTTP와 어떻게 다른가요?
기술적으로 말하면, HTTPS는 HTTP와 별개의 프로토콜이 아닙니다. 단지 HTTP 프로토콜 위에 TLS/SSL 암호화를 사용하는 것입니다. HTTPS는 TLS/SSL 인증서의 전송에 기반하여 일어나며, 이는 특정 제공자가 자신이 주장하는 그대로의 사람임을 확인합니다.
사용자가 웹페이지에 연결하면, 웹페이지는 안전한 세션을 시작하는 데 필요한 공개키를 포함한 SSL 인증서를 보냅니다. 그 후 클라이언트와 서버인 두 컴퓨터는 SSL/TLS 핸드셰이크라는 과정을 거치게 되는데, 이는 안전한 연결을 구축하기 위해 사용되는 일련의 응답과 요청입니다. 암호화와 SSL/TLS 핸드셰이크에 대해 더 깊이 있게 알아보려면, TLS 핸드셰이크에서 어떤 일이 일어나는지 읽어보세요.
웹사이트는 어떻게 HTTPS를 사용하기 시작하나요?
많은 웹사이트 호스팅 제공자와 다른 서비스들이 유료로 TLS/SSL 인증서를 제공합니다. 이 인증서들은 종종 많은 고객들 사이에 공유됩니다. 더 비싼 인증서들은 특정 웹 속성에 개별적으로 등록될 수 있습니다.
Cloudflare를 사용하는 모든 웹사이트는 공유 인증서를 사용하여 무료로 HTTPS를 받습니다(이를 위한 기술 용어는 다중 도메인 SSL 인증서입니다). 무료 계정을 설정하면 웹 속성이 지속적으로 업데이트되는 HTTPS 보호를 보장받게 됩니다. 개별 인증서와 다른 기능들에 대한 유료 플랜도 살펴볼 수 있습니다. 어떤 경우든, 웹 속성은 HTTPS를 사용하는 모든 이점을 받게 됩니다.
정리
- HTTPS 는 HTTP와 별개의 프로토콜이 아니다. HTTP의 보안버전이다.
- HTTPS는 TLS 프로토콜을 이용해 통신을 암호화한다. 이 프로토콜은 비대칭 공개키 인프라를 이용한다.
- HTTPS를 이용하지 않고 HTTP만 이용하면 전송하는 패킷을 누군가 중간에서 가로챌 수도 있고, ISP가 임의로 자신의 사이트에 광고를 넣을 수도 있다.