TLS 버전, 암호 스위트 및 완전 순방향 비밀성
TLS 1.2/1.3을 구성하고 강력한 암호 스위트를 선택하며 완전 순방향 비밀성을 활성화하여 캡처된 트래픽을 나중에 복호화할 수 없도록 합니다.
TLS 버전, 암호 스위트 및 완전 순방향 비밀성은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
TLS 프로토콜 개요
TLS (Transport Layer Security)는 대부분의 인터넷 통신을 보호하는 암호화 프로토콜입니다. HTTPS, SMTPS, IMAPS, LDAPS, VPN은 모두 TLS에 의존합니다. TLS는 세 가지 보안 속성을 제공합니다. 기밀성(암호화로 도청 방지), 무결성(MAC으로 변조 방지), 인증(인증서로 서버 신원 확인)입니다. TLS는 현재 사용 중단된 SSL (Secure Sockets Layer)에서 발전했습니다. 현재 버전은 TLS 1.2(널리 배포됨)와 TLS 1.3(더 빠르고 안전하며 모든 신규 배포에 권장됨)입니다.
TLS 버전 기록 및 사용 중단
TLS는 여러 버전을 거쳐 발전했으며, 이전 버전에는 치명적인 취약점이 포함되어 있습니다. SSL 2.0/3.0: 사용 중단되었으며 POODLE, DROWN 공격에 취약합니다. TLS 1.0: 2020년에 NIST와 PCI-DSS에서 사용 중단되었으며 블록 암호를 사용할 경우 BEAST 및 POODLE에 취약합니다. TLS 1.1: TLS 1.0과 함께 사용 중단되었습니다. TLS 1.2: 현재 최소 표준이며, 강력한 암호 스위트로 올바르게 구성하면 안전합니다. TLS 1.3: 2018년에 출시되었으며, 취약한 알고리즘을 모두 제거하고 순방향 보안을 의무화했습니다. 또한 핸드셰이크가 2-RTT 대신 1-RTT로 크게 빨라졌고 다운그레이드 공격을 방지합니다. PCI-DSS 4.0은 TLS 1.2 이상을 요구하고 TLS 1.3을 권장합니다.
# TLS version timeline
SSL 2.0 1995 DEPRECATED (DROWN)
SSL 3.0 1996 DEPRECATED (POODLE)
TLS 1.0 1999 DEPRECATED 2020 (BEAST, POODLE)
TLS 1.1 2006 DEPRECATED 2020 (no improvements over 1.0)
TLS 1.2 2008 MINIMUM STANDARD (strong ciphers required)
TLS 1.3 2018 RECOMMENDED (mandatory PFS, faster, secure)
# Check which TLS versions a server supports
nmap --script ssl-enum-ciphers -p 443 example.com
# Or:
openssl s_client -connect example.com:443 -tls1_2
openssl s_client -connect example.com:443 -tls1_3암호 스위트
암호 스위트는 TLS 세션에서 함께 사용되는 암호화 알고리즘 집합입니다. 각 암호 스위트는 다음을 지정합니다. 키 교환 알고리즘(세션 키를 설정하는 방법), 인증 알고리즘(서버를 확인하는 방법), 대칭 암호화 알고리즘(데이터를 암호화하는 방식), 메시지 인증 코드(MAC) 알고리즘(무결성을 확인하는 방법)입니다. 클라이언트와 서버는 TLS 핸드셰이크 중에 사용할 암호 스위트를 협상하며, 서버는 양쪽이 지원하는 가장 강력한 스위트를 선택합니다.
# TLS cipher suite naming format (TLS 1.2)
# TLS_[KeyExchange]_WITH_[Cipher]_[MAC]
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
ECDHE = Elliptic Curve Diffie-Hellman Ephemeral
RSA = Server certificate authentication
AES_256_GCM = 256-bit AES in Galois/Counter Mode
SHA384 = HMAC with SHA-384 for integrity
# TLS 1.3 simplified format (fewer components)
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_GCM_SHA256키 교환 알고리즘
키 교환 단계에서는 키를 전송하지 않고 세션 키를 설정합니다. RSA 키 교환(TLS 1.2): 클라이언트가 서버의 공개 키로 프리마스터 시크릿을 암호화합니다. 나중에 개인 키가 유출되면 과거의 모든 세션을 복호화할 수 있습니다. DHE (Diffie-Hellman Ephemeral): 세션마다 새 키 쌍을 생성하며 순방향 보안을 제공하지만 느립니다. ECDHE (Elliptic Curve DHE): 더 작은 키 크기와 향상된 성능으로 DHE와 동일한 순방향 보안을 제공합니다. 따라서 TLS 1.2와 TLS 1.3 모두에서 선호되는 키 교환 방식입니다. TLS 1.3은 ECDHE 또는 DHE를 의무화하고 RSA 키 교환을 완전히 제거했습니다.
완전 순방향 보안(PFS)
완전 순방향 보안(PFS)은 서버의 장기 개인 키가 나중에 유출되더라도 기록된 과거 세션을 복호화할 수 없도록 합니다. PFS는 임시 키 교환(ECDHE 또는 DHE)을 사용해 세션마다 새 임시 키 쌍을 생성하고 사용 후 폐기함으로써 구현됩니다. PFS가 없으면(RSA 키 교환) 공격자는 오늘 모든 암호화된 TLS 세션을 기록해 두었다가 나중에 개인 키를 확보하면 소급하여 복호화할 수 있습니다. NSA의 '지금 수집하고 나중에 복호화' 감시 전략은 대상이 결국 더 강력한 키로 업그레이드하거나 양자 컴퓨터가 현재의 키를 해독할 것이라고 가정합니다.
# Cipher suites WITH perfect forward secrecy
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 # Good
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 # Good
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 # OK (slower)
# Cipher suites WITHOUT perfect forward secrecy
TLS_RSA_WITH_AES_256_CBC_SHA256 # NO PFS - avoid
TLS_RSA_WITH_3DES_EDE_CBC_SHA # NO PFS + weak
# Key: look for ECDHE or DHE prefix
# RSA alone as key exchange = no forward secrecy피해야 할 취약한 암호 알고리즘
여러 레거시 암호 구성 요소는 암호학적으로 깨진 상태이므로 비활성화해야 합니다. NULL 암호: 암호화가 전혀 없습니다. 수출 등급 암호(FREAK 공격): 1990년대 US 수출 규정을 준수하기 위해 의도적으로 약화되었습니다. RC4: 공격에 악용된 통계적 편향이 있는 스트림 암호입니다. DES 및 3DES: 블록 크기가 지나치게 작거나(SWEET32 공격) 키 길이가 충분하지 않은 블록 암호입니다. MAC에 사용되는 MD5 및 SHA-1: 충돌 취약점이 있습니다. 익명 암호(aNULL): 서버 인증이 없습니다. 최신 TLS 구성에서는 대칭 암호로 AES-GCM, ChaCha20-Poly1305, AES-CCM만 허용해야 합니다.
# nginx: disable weak ciphers, enforce strong only
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:
ECDHE-RSA-AES256-GCM-SHA384:
ECDHE-ECDSA-CHACHA20-POLY1305:
ECDHE-RSA-CHACHA20-POLY1305:
ECDHE-ECDSA-AES128-GCM-SHA256:
ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
# Explicitly disable weak ciphers in Apache
SSLCipherSuite 'HIGH:!aNULL:!MD5:!3DES:!RC4:!EXPORT'TLS 1.3의 개선 사항
TLS 1.3은 TLS 1.2에 비해 몇 가지 중요한 보안 개선 사항을 제공합니다. 의무화된 PFS: RSA 키 교환이 제거되어 모든 세션에서 ECDHE 또는 DHE를 사용합니다. 더 적은 암호 스위트: AEAD 암호 스위트 5개만 허용되므로 취약한 암호 협상이 불가능합니다. 더 빠른 핸드셰이크: TLS 1.2의 2-RTT 대신 1회 왕복(1-RTT)을 사용하며, 세션 재개에는 0-RTT를 사용합니다(단, 0-RTT에는 재생 공격과 관련된 고려 사항이 있습니다). 암호화된 핸드셰이크: 핸드셰이크에서 서버 인증서가 암호화되므로 수동 관찰자가 클라이언트가 어떤 인증서, 즉 어떤 웹사이트에 연결하는지 식별할 수 없습니다.
# TLS 1.3 handshake (simplified)
Client -> Server: ClientHello (supported ciphers, key shares)
Server -> Client: ServerHello (chosen cipher, key share)
{EncryptedExtensions}
{Certificate}
{CertificateVerify}
{Finished}
Client -> Server: {Finished}
# Both sides now have session keys
# Total: 1 round-trip before application data
# (TLS 1.2 required 2 round trips)
# Note: {} = encrypted (cert is hidden from observers)다운그레이드 공격과 POODLE
다운그레이드 공격은 TLS 서버와 클라이언트가 양쪽 모두 지원하는 버전이나 암호 스위트보다 오래되고 취약한 TLS 버전을 사용하도록 속입니다. POODLE (Padding Oracle On Downgraded Legacy Encryption)은 연결 오류가 발생할 때 TLS 구현이 SSL 3.0으로 대체되던 점을 악용했습니다. 대응 방법은 SSL 3.0을 비활성화하는 것이었습니다. FREAK과 Logjam은 수출 등급 암호를 악용했습니다. TLS_FALLBACK_SCSV는 클라이언트가 '이 버전은 선호 버전이 아님'을 알리기 위해 포함하는 의사 암호 스위트입니다. 서버가 이를 확인하고 더 높은 버전을 지원하면 다운그레이드 시도를 중단합니다.
인증서 확인 및 고정
TLS 서버 인증은 클라이언트가 신뢰할 수 있는 루트 CA까지 이어지는 서버의 인증서 체인을 확인하는 방식으로 이루어집니다. 중요한 확인 항목은 다음과 같습니다. 만료(인증서가 유효 기간 내에 있어야 함), 폐기(CRL 또는 OCSP 확인으로 인증서가 폐기되지 않았음을 확인), 호스트 이름(SAN 또는 CN이 연결하려는 도메인과 일치해야 함), 서명 체인(중간 CA와 루트 CA의 서명이 유효해야 함)입니다. Certificate Transparency (CT)는 공개적으로 신뢰되는 모든 인증서를 추가만 가능한 CT 로그에 기록하도록 요구하여, 인증서가 발급된 지 몇 분 안에 잘못 발급된 인증서를 탐지할 수 있게 합니다.
# Check TLS certificate details
openssl s_client -connect example.com:443 \
-showcerts 2>/dev/null | openssl x509 -noout \
-text | grep -E 'Subject:|Issuer:|Not After:|SAN'
# Verify certificate chain
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt \
server.crt
# Check OCSP status
openssl ocsp -issuer intermediate.crt \
-cert server.crt \
-url http://ocsp.ca.example.com \
-text -noverifySSL Labs 및 구성 테스트
Qualys SSL Labs (ssllabs.com/ssltest)는 웹 서버의 TLS 구성을 평가하는 업계 표준 도구입니다. 지원되는 TLS 버전, 암호 스위트의 강도, 인증서 유효성, HSTS 구성, 순방향 보안 지원, 알려진 공격에 대한 저항성을 기준으로 서버를 A+(우수)부터 F(치명적 문제)까지 평가합니다. A+ 등급을 받으려면 TLS 1.2 이상만 사용하고, 모든 ECDHE 암호를 사용하며, 유효한 인증서와 preload가 적용된 HSTS가 필요합니다. 조직은 초기 구성 후와 TLS 스택을 변경할 때마다 SSL Labs 테스트를 실행해야 합니다. PCI-DSS와 같은 많은 규정 준수 프레임워크에서는 TLS 구성의 정기적인 평가를 요구합니다.
TLS 인증서 관리 모범 사례
만료된 TLS 인증서는 서비스 중단과 사용자 신뢰 경고를 일으키며, 공격자는 이를 악용할 수 있습니다. 인증서 수명 주기 관리에는 인증서 목록에서 모든 인증서를 추적하고, 만료 최소 30일 전에 만료 알림을 구성하며, ACME 프로토콜(Let's Encrypt, Certbot)을 사용해 갱신을 자동화하는 작업이 포함됩니다. 또한 손상으로 인한 위험 노출 기간을 줄이기 위해 짧은 인증서 수명(공개 인증서는 90일)을 사용하고, 손상된 와일드카드 인증서가 모든 하위 도메인에 영향을 미치므로 와일드카드 인증서(*.example.com)를 신중하게 사용해야 합니다. 인증서 관리 플랫폼(Venafi, DigiCert CertCentral)은 대규모 인증서 목록 전반에서 검색과 수명 주기 관리를 자동화합니다.
# Auto-renew Let's Encrypt cert with Certbot
# Install Certbot
apt install certbot python3-certbot-nginx
# Issue certificate
certbot --nginx -d example.com -d www.example.com
# Certbot auto-renewal (runs twice daily via systemd timer)
systemctl status certbot.timer
# Test renewal without actually renewing
certbot renew --dry-run
# Verify cert expiry date
openssl x509 -enddate -noout -in /etc/ssl/certs/example.crt
# Output: notAfter=Feb 20 12:00:00 2025 GMT빠른 확인
이 단원에서 배운 CompTIA Security+ (SY0-701) 개념을 이해했는지 확인해 보십시오.
단원 요약
이 단원에서는 다음을 배웠습니다. TLS 1.0/1.1은 사용 중단되었고 TLS 1.2가 최소 표준이며 TLS 1.3이 선호됩니다. TLS 1.3은 PFS와 암호화된 핸드셰이크를 의무화합니다. 암호 스위트는 키 교환(선호 방식은 ECDHE), 대칭 암호화(AES-GCM, ChaCha20), MAC 알고리즘을 지정합니다. 또한 완전 순방향 보안에는 임시(DHE/ECDHE) 키 교환이 필요하므로 키가 유출된 후에도 과거 세션을 복호화할 수 없습니다. 다음으로 보안 DNS인 DNSSEC와 DNS over HTTPS를 살펴보겠습니다.
자주 묻는 질문
“TLS 버전, 암호 스위트 및 완전 순방향 비밀성” 강의는 무료인가요?
네 — “TLS 버전, 암호 스위트 및 완전 순방향 비밀성” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
“TLS 버전, 암호 스위트 및 완전 순방향 비밀성”에서 뭘 배우나요?
TLS 1.2/1.3을 구성하고 강력한 암호 스위트를 선택하며 완전 순방향 비밀성을 활성화하여 캡처된 트래픽을 나중에 복호화할 수 없도록 합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“TLS 버전, 암호 스위트 및 완전 순방향 비밀성” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 안전하지 않은 프로토콜 교체: Telnet과 SSH, FTP와 SFTP
- TLS 버전, 암호 스위트 및 완전 순방향 비밀성
- 보안 DNS: DNSSEC 및 HTTPS를 통한 DNS(DoH)
- IPsec, VPN 프로토콜 및 원격 접속 보안