정보시스템감리사/토픽모음

TLS_핸드쉐이크

론리나잇 2025. 4. 21. 00:28

TLS(Transport Layer Security)의 핸드쉐이킹(Handshake) 과정은 클라이언트와 서버가 보안 연결을 수립하기 위해 수행하는 초기 통신 절차입니다. 이 과정에서 암호화 알고리즘, 세션 키, 인증서 등을 협의하고 교환합니다.

✅ TLS 핸드쉐이킹 절차 (TLS 1.2 기준)

1. ClientHello (클라이언트 → 서버)

  • 클라이언트가 서버에게 다음 정보를 보냄:
    • 지원하는 TLS 버전
    • 클라이언트 랜덤값 (client_random)
    • 지원하는 암호 스위트 목록 (Cipher Suites)
    • 확장정보 (예: SNI - Server Name Indication)

2. ServerHello (서버 → 클라이언트)

  • 서버가 다음 정보로 응답함:
    • 선택된 TLS 버전
    • 서버 랜덤값 (server_random)
    • 선택한 암호 스위트
    • 세션 ID
    • 서버 인증서 (공개키 포함)
    • (선택) 서버 키 교환 메시지
    • (선택) 클라이언트 인증 요청

3. 서버 인증 및 키 교환

  • 클라이언트는 서버 인증서를 검증함 (인증서 체인 → 루트CA)
  • 서버가 선택한 키 교환 방식(Diffie-Hellman, RSA 등)에 따라,
    • RSA: 클라이언트는 서버의 공개키로 Premaster Secret을 암호화
    • DH/ECDHE: 서버와 클라이언트가 각각 공개키/비밀키 기반으로 키 교환

4. ClientKeyExchange (클라이언트 → 서버)

  • 클라이언트가 암호화된 Premaster Secret을 보냄

5. 세션 키 생성

  • 양측은 다음 정보를 바탕으로 대칭키(Session Key) 생성:
    • client_random
    • server_random
    • premaster secret

6. ChangeCipherSpec & Finished

  • 클라이언트 → 서버:
    • "이제부터는 암호화 통신 시작할게요" (ChangeCipherSpec)
    • Finished 메시지를 암호화해서 전송
  • 서버 → 클라이언트:
    • ChangeCipherSpec
    • Finished 메시지를 암호화해서 전송

🚀 TLS 1.3 변화 및 최적화

주요 특징

  • 핸드쉐이크 라운드 수 감소 (1 RTT)
  • RSA 키 교환 제거 → Forward Secrecy 필수
  • ChangeCipherSpec 메시지 제거
  • 클라이언트 인증은 선택적으로 지원
  • 세션 재사용 대신 0-RTT 데이터 전송 지원

📊 TLS 1.2 vs TLS 1.3 비교표

항목 TLS 1.2 TLS 1.3
핸드쉐이크 라운드 최소 2 RTT 1 RTT
키 교환 방식 RSA, DH, ECDHE ECDHE (Forward Secrecy 필수)
암호화 시작 시점 Finished 메시지 이후 서버 Finished 직후
인증서 암호화 평문 전송 암호화 가능
지원 암호 알고리즘 다양한 (RC4, 3DES 등 포함) 보안 강화된 알고리즘만
세션 재사용 방식 세션 ID / 세션 재개 PSK + 0-RTT
보안성 중간자 공격 우려 존재 향상된 보안, PFS 필수 적용
설정 복잡도 상대적으로 복잡 간소화됨

✅ 참고

  • TLS 1.3은 HTTPS 성능 향상에 크게 기여
  • Wireshark에서 TLS 1.3 패킷은 EncryptedExtensions, Finished 등이 첫 패킷에 포함됨

'정보시스템감리사 > 토픽모음' 카테고리의 다른 글

동적해싱기법  (0) 2025.04.22
ISO27000(ISMS) 시리즈  (1) 2025.04.21
보안취약점 점검도구  (0) 2025.04.21
증분백업vs차등백업  (0) 2025.04.20
하둡_에코시스템  (0) 2025.04.20