본문 바로가기
Computer Science/CS 지식

TLS 암호화 프로토콜

by rnasterofmysea 2025. 7. 31.
반응형

1. TLS의 주요 기능

  • 암호화: 데이터를 제3자가 읽지 못하도록 암호화합니다.
  • 인증: 서버/클라이언트의 신원을 확인합니다 (주로 서버 인증에 사용).
  • 무결성: 데이터가 전송 중 변조되지 않았음을 보장합니다.

2. TLS 동작 과정 (핸드셰이크)

  1. Client Hello:
    • 클라이언트가 지원하는 TLS 버전, 암호화 스위트(Cipher Suites), 임의의 데이터(Client Random)를 서버에 전송.
  2. Server Hello:
    • 서버는 선택한 TLS 버전, 암호화 스위트, 서버 인증서(공개키 포함), Server Random을 응답.
  3. 인증서 검증:
    • 클라이언트는 서버 인증서를 CA(인증 기관)를 통해 검증합니다.
  4. 키 교환 (Key Exchange):
    • 클라이언트는 Pre-Master Secret을 생성해 서버의 공개키로 암호화해 전송합니다.
    • 양측은 Client Random, Server Random, Pre-Master Secret으로 세션 키를 생성합니다.
      (대칭키 암호화에 사용될 키)
  5. 암호화 통신 시작:
    • 세션 키로 데이터를 암호화해 통신합니다 (AES 등 대칭키 암호화 사용).

세션 키는 매 연결마다 새로 생성되므로, 한 키가 유출되어도 다른 세션은 안전합니다.


3. TLS 버전 역사

  • SSL 1.0~3.0: Netscape이 개발했지만 보안 결함으로 폐기됨.
  • TLS 1.0 (1999): SSL 3.0의 업그레이드 버전.
  • TLS 1.2 (2008): 현대적 암호화 방식 지원 (AES, SHA-256 등).
  • TLS 1.3 (2018):
    • 핸드셰이크 간소화 (1-RTT 또는 0-RTT 지원).
    • 불필요한 암호화 스위트 제거 (보안 강화).
    • 이전 버전보다 훨씬 빠르고 안전합니다.

TLS 1.0/1.1은 2020년 이후 대부분의 브라우저에서 지원 중단되었습니다.
TLS 1.3 을 주로 사용함


4. TLS vs SSL

  • TLS는 SSL의 후속 버전이지만, 여전히 "SSL/TLS"로 혼용되어 언급됩니다.
  • 차이점:
    • TLS는 더 강력한 암호화 알고리즘을 지원합니다.
    • SSL은 POODLE, DROWN 등의 취약점으로 사용되지 않습니다.

5. TLS의 적용 예시

  • HTTPS: HTTP + TLS (웹 보안의 기본).
  • 이메일: SMTP, IMAP, POP3에 TLS 적용 (Ex: Gmail의 STARTTLS).
  • VPN: OpenVPN, WireGuard 등에서 TLS 활용.
  • API 통신: RESTful API에 TLS를 적용해 데이터 보호.

TLS에서 CA(인증 기관)의 PEM 키는 서버/클라이언트 인증서의 신뢰성을 검증하는 데 사용되는 파일입니다.
주로 루트 인증서(Root CA) 또는 중간 인증서(Intermediate CA)의 공개키가 PEM 형식으로 저장됩니다.


1. CA PEM 파일의 내용

  • 파일 확장자: .pem, .crt, .cer (PEM 형식)
  • 내용:
    • 공개키 인증서 (ASCII 텍스트 형식)
    • -----BEGIN CERTIFICATE-----와 -----END CERTIFICATE----- 사이에 Base64로 인코딩된 X.509 인증서 데이터가 포함됩니다.
    • 예시:
       
      -----BEGIN CERTIFICATE-----
      MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
      ... (Base64 인코딩 데이터) ...
      vpzMGQ==
      -----END CERTIFICATE-----

2. CA PEM 파일의 역할

  1. 서버 인증서 검증:
    • 클라이언트(브라우저 등)는 서버가 제공한 인증서가 신뢰할 수 있는 CA에 의해 발급되었는지 확인합니다.
    • CA의 공개키(PEM 파일)로 서버 인증서의 서명을 검증합니다.
  2. 체인 인증서 구성:
    • 서버는 인증서 체인 (서버 인증서 + 중간 CA 인증서)을 클라이언트에 전송합니다.
    • 클라이언트는 CA PEM 파일을 통해 체인의 유효성을 확인합니다.

3. CA PEM 파일의 종류

  • 루트 CA 인증서:
    • 최상위 인증 기관의 공개키 (Ex: DigiCert, Let's Encrypt).
    • OS/브라우저에 기본적으로 내장됩니다.
  • 중간 CA 인증서:
    • 루트 CA의 서명을 받은 하위 기관의 인증서.
    • 서버 인증서와 함께 전송되어 체인을 완성합니다.

 

4. 직접 CA PEM 파일을 사용하는 경우

  • 사설 CA 인증서를 사용할 때 (Ex: 내부 테스트 환경).
  • 특정 CA를 신뢰하도록 클라이언트에 강제해야 할 때.
  • 예시 (cURL):
  • bash
     
    curl --cacert /path/to/ca.pem https://example.com

5. PEM 파일 생성/변환

  • DER → PEM 변환:
     
    openssl x509 -inform der -in ca.cer -out ca.pem
  • 인증서 내용 확인:
    openssl x509 -in ca.pem -text -noout

 

반응형