base
여러분이 웹사이트 주소창에 접속할 때 보이는 작은 자물쇠 아이콘의 의미를 생각해본 적 있나요? 이 작은 자물쇠 아이콘 뒤에는 생각보다 복잡하고 정교한 보안 메커니즘이 숨어 있습니다. 바로 TLS Handshake(TLS 핸드셰이크)입니다.
쉽게 말해 TLS 핸드셰이크는 클라이언트(예: 웹 브라우저)와 서버가 서로를 안전하게 믿고 통신하기 위해 진행하는 일종의 “악수”와 같습니다. 악수를 하듯, 서로의 신원을 확인하고 비밀스러운 정보를 공유하는 과정입니다. 이번 글에서는 HTTPS 통신에서 필수적인 TLS 핸드셰이크의 전체 과정과 작동 원리를 알아봅시다.
TLS(Transport Layer Security)는 네트워크상에서 데이터를 안전하게 전달하기 위한 보안 프로토콜의 일종입니다. TLS는 서버와 클라이언트 사이의 데이터 전송을 암호화하고 인증하여 보안을 유지합니다. 즉, TLS 자체는 보안 연결을 위한 프로토콜로서, 암호화, 인증, 무결성 보장 등을 포괄하는 개념입니다.
TLS Handshake는 TLS의 초기 연결 과정을 뜻합니다. 즉, 클라이언트와 서버가 서로 연결을 맺기 전 안전한 통신 채널을 구축하기 위해 필요한 초기 과정입니다. 이 단계에서는 다음과 같은 작업이 이루어집니다. 즉, TLS 핸드셰이크는 TLS라는 보안 프로토콜의 **한 단계(초기 단계)**로, 보안 연결을 형성하기 위한 필수적 과정입니다.
TLS는 보안된 연결을 위한 전체적인 보안 프로토콜의 개념이고, TLS 핸드셰이크는 TLS 프로토콜을 시작할 때 이루어지는 초기 보안 설정 과정입니다. 즉, TLS는 큰 개념이고, TLS 핸드셰이크는 그 안에서 연결을 안전하게 시작하기 위한 초기 단계입니다.
TLS 핸드셰이크의 동작 원리를 쉽게 정리하면 다음과 같습니다.
먼저 클라이언트가 서버에게 보안 채널을 열자는 요청을 보내면서 어떤 TLS 버전과 암호 알고리즘을 지원하는지 알립니다. 이 요청 메시지를
서버는 클라이언트가 지원하는 옵션 중 가장 적합한 암호 방식을 선택하여 다시 응답합니다(
클라이언트는 서버의 인증서를 받은 후, 인증서의 유효성을 검증합니다. 유효한 인증서임이 확인되면, 클라이언트와 서버는 데이터를 암호화할 때 사용할 암호 키를 주고받기 위한 과정을 수행합니다. 이 과정에서
마지막으로 클라이언트와 서버는 핸드셰이크의 성공을 서로에게 알리고, 이때부터 암호화된 데이터 교환이 이루어집니다. 이후 주고받는 모든 데이터는 협상된 키를 이용하여 암호화됩니다.
TLS 핸드셰이크는 높은 보안을 제공하지만 몇 가지 주의해야 할 사항이 있습니다.