💡 IT 핵심 지식 (Core)/🔒사이버 보안

TLS 핸드셰이크의 실제 과정 : 신원 확인과 비밀 암호 교환

praymeyer2025 2025. 12. 12. 08:21
TLS 핸드셰이크의 4단계 과정을 중급 수준에서 기술적으로 심층 분석합니다. Client/Server Hello를 통한 협상, 인증서 교환, 비대칭키를 활용한 Pre-Master Secret 공유, 그리고 Finished 메시지를 통한 최종 검증까지, 안전한 대칭키 통신 채널이 수립되는 실제 프로세스를 전문적으로 해부합니다.

💡 인터넷 통신에서 HTTPS를 통해 보안이 확보되는 순간은 마치 두 사람이 만나기 전, 복잡하고 정교한 **'비밀 약속 절차'**를 거치는 것과 같습니다. 🤝 이 절차는 상대방이 진짜인지 확인하고, 대화에 사용할 비밀 암호(키)와 암호화 방식을 완벽하게 통일한 후에야 비로소 비밀 대화를 시작할 수 있게 만듭니다. 이 핵심적인 준비 과정을 **TLS 핸드셰이크(Handshake)**라고 부릅니다. 이 포스팅에서는 데이터 전송 전 단 몇 밀리초 만에 일어나는 이 복잡한 TLS 핸드셰이크의 4단계 과정을 비유 없이, 중급 개발자가 알아야 할 전문 용어와 메시지 교환 중심으로 심층 분석하겠습니다.

✨ 핵심 원리: 4단계 메시지 교환을 통한 보안 세션 수립

TLS 핸드셰이크는 클라이언트(브라우저)와 서버가 서로의 신원을 확인하고, **세션 키(Session Key)**를 안전하게 공유하며, 통신에 사용할 **암호화 알고리즘(Cipher Suite)**을 협상하는 일련의 과정을 의미합니다. 이 과정은 크게 네 단계로 구분됩니다.

🛡️ 1. 1단계: Client Hello & Server Hello (협상 시작)

통신의 시작은 클라이언트와 서버가 서로 인사하며 협상에 필요한 정보를 교환하는 단계입니다.

  • Client Hello: 클라이언트가 서버로 전송하는 첫 번째 메시지입니다. 포함되는 주요 정보는 다음과 같습니다.
    • TLS 버전: 클라이언트가 지원하는 가장 높은 TLS 프로토콜 버전 (예: TLS 1.2, 1.3).
    • Cipher Suite 목록: 클라이언트가 지원하는 암호화 알고리즘 조합 목록 (키 교환, 인증, 대칭키 암호화, 해시 함수).
    • Client Random: 세션 키 생성에 사용될 무작위 숫자 값.
  • Server Hello: 서버가 Client Hello에 응답하는 메시지입니다.
    • TLS 버전 선택: 서버와 클라이언트가 공통으로 지원하는 가장 높은 버전으로 결정됩니다.
    • Cipher Suite 선택: 클라이언트 목록 중 서버가 선택한 하나의 암호화 스위트.
    • Server Random: 세션 키 생성에 사용될 또 다른 무작위 숫자 값.

1단계에서는 클라이언트와 서버가 프로토콜 버전, 암호화 알고리즘, 세션 키 생성에 필요한 무작위 값을 교환하여 협상을 시작합니다.출처:AI이미지 생성도구

🔒  2. 2단계: Server Certificate & Key Exchange (신원 확인 및 키 준비)

서버가 자신의 신원을 클라이언트에게 증명하고, 앞으로 사용될 비밀 키 교환을 준비하는 단계입니다.

  • Server Certificate: 서버는 자신의 **공개키 인증서(Public Key Certificate)**를 클라이언트에게 전송합니다. 클라이언트는 이 인증서를 통해 **CA(Certificate Authority)**에 대한 신뢰 체인을 검증하여 서버의 신원을 확인합니다.
  • Server Key Exchange (선택 사항): Diffie-Hellman과 같은 임시 키 교환 알고리즘이 사용될 경우, 이 단계에서 키 교환을 위한 서버 측 파라미터가 전송됩니다.
  • Server Hello Done: 서버가 클라이언트에게 자신이 보낼 메시지를 모두 보냈음을 알립니다.

🔗  3. 3단계: Client Key Exchange & Change Cipher Spec (비밀 키 공유 및 전환)

클라이언트가 서버의 인증서를 검증한 후, 대칭키 생성에 필요한 핵심 정보를 서버에게 암호화하여 전달합니다.

  • Client Key Exchange:
    • 클라이언트는 Pre-Master Secret이라는 비밀 값을 생성합니다.
    • 클라이언트가 서버 인증서에 포함된 **공개키(Public Key)**로 이 Pre-Master Secret을 암호화하여 서버에 전송합니다. 이는 서버만이 자신의 **개인키(Private Key)**로 복호화할 수 있습니다.
    • Master Secret 생성: 이 단계에서 클라이언트와 서버는 각자 공유된 Client Random, Server Random, 그리고 Pre-Master Secret을 조합하여 Master Secret (세션 키 생성의 근원)을 생성합니다.
  • Change Cipher Spec: 클라이언트가 "이제부터 암호화된 통신을 사용할 준비가 완료되었다"고 서버에게 알리는 신호입니다.

3단계에서 클라이언트는 서버의 공개키를 이용해 Pre-Master Secret을 안전하게 전달하고, Master Secret을 생성하여 대칭키 통신을 준비합니다.출처:AI이미지 생성도구

🚀  4. 4단계: Finished (최종 확인 및 통신 시작)

양측이 최종적으로 모든 설정과 키를 확인하고, 실제 암호화 통신을 시작하는 단계입니다.

  • Finished 메시지: 클라이언트와 서버는 각자 생성한 Master Secret을 기반으로 세션 키를 도출한 후, 지금까지 교환한 모든 핸드셰이크 메시지의 해시(Hash) 값을 계산합니다.
    • 이 해시 값을 최종적으로 **방금 생성된 세션 키(대칭키)**로 암호화하여 상대방에게 전송합니다.
  • 검증: 상대방은 메시지를 받고 세션 키로 복호화한 후, 자신이 계산한 핸드셰이크 해시 값과 일치하는지 확인합니다.
  • 결과: 이 과정이 성공적으로 완료되면, 양측이 동일한 암호화 키를 가지고 있으며 메시지가 변조되지 않았음을 확신하게 됩니다. 이후부터는 효율성이 높은 대칭키를 이용한 암호화된 데이터 통신(Application Data)이 시작됩니다.

Finished 메시지 교환을 통해 세션 키 일치 여부를 최종 검증하고, 이후 모든 통신은 대칭키 기반의 암호화된 채널로 이루어집니다.출처:AI이미지 생성도구

 

✅ 요약 및 세션 키의 중요성 💯

🆔 단계 🗣️ 발신자 🔑 주요 역할 🔄 핵심 정보 교환
1단계 클라이언트/서버 협상 시작 및 무작위 값 교환 TLS 버전, Cipher Suite, Random Values
2단계 서버 신원 증명 공개키 인증서
3단계 클라이언트 비밀 키 공유 Pre-Master Secret (공개키로 암호화)
4단계 양방향 세션 키 일치 최종 검증 Finished 메시지 (대칭키 암호화)

👉 세션 키의 중요성: TLS 핸드셰이크의 최종 목표는 Master Secret을 통해 도출된 **대칭키(Session Key)**를 안전하게 공유하는 것입니다. 이 대칭키는 통신이 끝날 때까지 수많은 데이터(기가바이트)를 빠르고 효율적으로 암호화하고 복호화하는 데 사용됩니다. 이 모든 과정은 단 몇 초 이내에 끝나며, 웹 통신 보안의 근간을 이룹니다.

📚 출처

  • IETF RFC 5246 (TLS 1.2): Handshake Protocol Specification
  • 암호학 및 네트워크 보안 이론: 공개키/개인키 기반의 하이브리드 암호화 시스템
  • 웹 브라우저의 보안 통신 원리: 인증서 검증 체인

👉 함께 보면 도움되는 글 : 데이터 보호의 기술: 네트워크 보안과 암호화의 숨은 원리

 

데이터 보호의 기술: 네트워크 보안과 암호화의 숨은 원리

데이터 보호를 위한 네트워크 보안과 암호화 기술의 숨은 원리를 해부합니다. 방화벽, IDS/IPS 등 네트워크 보안 장비의 역할부터 대칭키와 비대칭키 암호화 방식, 해시 알고리즘이 데이터 무결성

praymeyer2025.tistory.com