[Network] TLS & SSL

do_it·2025년 9월 9일

network

목록 보기
7/12

TLS & SSL

인터넷에서 데이터의 보안 전송을 위한 프로토콜
두 프로토콜은 데이터의 암호화, 무결성 보호, 인증 등을 제공

  • SSL(Secure Sockets Layer)은 초기의 프로토콜이고,
    TLS(Transport Layer Security)는 SSL을 개선한 후속 프로토콜임
구분SSLTLS
프로토콜 개발자Netscape에 의해 개발IETF에 의해 표준화
보안 수준TLS보다 낮음SSL에 비해 보안 수준이 향상됨
핸드쉐이크 과정SSL은 취약점이 존재, 다양한 공격에 노출TLS는 SSL을 개선하여 더 안전한 핸드쉐이크 과정
암호화 알고리즘SSL 2.0, 3.0은 몇 가지 암호화 알고리즘만 지원TLS는 더 많은 강력한 암호화 알고리즘을 지원
최신 버전SSL 3.0 (이미 보안 취약점 발견됨)TLS 1.3 (가장 최신, 성능 및 보안 개선됨)

1. SSL (Secure Sockets Layer)

: 웹에서 보안 통신을 위해 Netscape에 의해 개발된 프로토콜

  • SSL의 목적은 두 지점 간의 안전한 암호화된 채널을 제공하는 것

  • 이를 통해 제3자가 중간자 공격(MITM)을 시도하거나 통신 내용을 도청하는 것을 방지할 수 있음

[c.f]
SSL 1.0은 공식적으로 공개되지 않았으며, SSL 2.0이 널리 사용됨
그 이후 SSL 3.0이 나오면서 인터넷 보안에 큰 영향을 미침


2. TLS (Transport Layer Security)

: TLS는 SSL의 후속 프로토콜로,
SSL 3.0을 기반으로 IETF(Internet Engineering Task Force)에서 개선하고 표준화한 것

  • TLS는 더 강력한 암호화, 개선된 보안 기능, 효율적인 성능을 제공함
    TLS 1.0은 사실상 SSL 3.0의 거의 그대로였지만, 그 이후에 많은 보안 취약점을 수정하고 기능을 개선한 버전들이 출시됨

  • 현재 TLS 1.2와 TLS 1.3이 가장 널리 사용되며


3. TLS/SSL +Handshake 과정

Handshake는 클라이언트와 서버가 서로 암호화된 안전한 연결을 설정하는 과정

이 과정에서 클라이언트와 서버는 서로를 인증하고, 암호화에 사용할 를 교환하며, 보안 연결을 수립함

TLS Handshake 과정


https://www.researchgate.net/figure/The-TLS-handshake-protocol-messages-sequence_fig2_321580115

TLS 핸드쉐이크는 클라이언트와 서버가 보안 연결을 설정하는 과정이며, 이 과정에서 세션 키, 인증서, Pre-master secret등이 사용됨

[+] 주요 개념

  • Pre-master secret:
    TLS 핸드셰이크 과정에서 클라이언트와 서버가 함께 만들어내는 비밀 값
    이 값은 세션 키(session key)를 만들기 위한 "재료" 역할
    실제 통신 암호화에는 직접 쓰이지 않고, 최종적으로 Master Secret을 생성하는데 사용됨
    Pre-Master Secret → Master Secret → 세션 키 순서로 발전
  • Session key:
    클라이언트와 서버가 한 세션(연결) 동안만 사용하는 대칭키
    TLS 핸드셰이크에서 파생되어 생성되며, 실제 데이터(HTTP 요청/응답)는 이 키로 암호화됨
  • 인증서(Certificate): 서버가 클라이언트에게 전달하는 디지털 서명된 공개 키로, 서버의 신뢰성을 보장함

[과정]

  1. Client Hello:
    • 클라이언트는 서버에 ClientHello 메시지를 전송
      이 메시지에는 지원하는 TLS 버전, 암호화 알고리즘 목록, 랜덤값 등이 포함됨
    • 클라이언트는 세션 ID를 제시하여 서버가 이전 세션을 재사용할 수 있는지 확인
  2. Server Hello:
    • 서버는 ServerHello 메시지를 보내어 응답
      이 메시지에는 사용할 TLS 버전, 암호화 알고리즘, 세션 ID, 랜덤값 등이 포함됨
    • 서버는 클라이언트가 제시한 알고리즘 중 하나를 선택함
  3. 서버 인증 (Server Authentication):
    • 서버는 디지털 인증서를 클라이언트에 전달하여 자신을 인증
      이 인증서에는 서버의 공개 키가 포함되어 있음
    • 클라이언트는 인증서를 검증하여 서버의 신뢰성을 확인
      인증서는 CA(Certificate Authority)가 발행
  4. 키 교환:
    • 클라이언트는 서버의 공개 키를 사용하여 Pre-master secret을 암호화하여 서버로 전송
    • 서버는 자신의 비공개 키로 이 값을 복호화하여 Pre-master secret을 얻음
  5. 세션 키 생성:
    • 클라이언트와 서버는 Pre-master secret과 앞서 교환된 랜덤값들을 기반으로 세션 키를 생성함
      이 세션 키는 이후의 암호화된 통신에서 사용됨
  6. 클라이언트 Finished:
    • 클라이언트는 Finished 메시지를 보내어, 설정된 세션 키를 사용하여 메시지를 암호화한 후 서버에 전송
      이 메시지는 핸드쉐이크가 성공적으로 완료되었음을 알림
  7. 서버 Finished:
    • 서버는 Finished 메시지를 보내어, 세션 키로 암호화된 응답 메시지를 전달함
      이 메시지가 클라이언트에게 전달되면 Handshake가 완료

[+] 서버 인증서 발급
1. 서버에서 키/CSR 생성
2. CSR을 CA에 제출
3. 도메인 소유권 검증
4. CA가 인증서 발급
5. 서버에 인증서/중간 체인 설치

0개의 댓글