TLS란?
TLS(전송 계층 보안)는 컴퓨터 네트워크에서 안전한 통신을 제공하는 암호화 프로토콜입니다. SSL(보안 소켓 계층)의 후속 기술이며 HTTPS 연결, 보안 이메일 전송(STARTTLS)과 여러 암호화 인터넷 프로토콜의 기반입니다. 브라우저의 자물쇠 아이콘은 TLS가 기기와 서버 사이의 데이터를 암호화하고 있음을 나타냅니다.
TLS 버전의 역사
| 버전 | 연도 | 상태 |
|---|---|---|
SSL 2.0 | 1995 | 폐기됨, 안전하지 않음 |
SSL 3.0 | 1996 | 폐기됨, 안전하지 않음 |
TLS 1.0 | 1999 | 폐기됨 |
TLS 1.1 | 2006 | 폐기됨 |
TLS 1.2 | 2008 | 현재 표준 |
TLS 1.3 | 2018 | 최신 권장 버전 |
TLS 작동 방식
TLS 핸드셰이크(TLS 1.2)
Client Server
│ │
├──── ClientHello ─────────────────► │
│ (supported ciphers, random) │
│ │
│ ◄─── ServerHello ──────────────────┤
│ (selected cipher, cert) │
│ │
├──── Key Exchange ────────────────► │
│ (encrypted pre-master secret) │
│ │
│ ◄─── Finished ─────────────────────┤
│ │
└──── Encrypted Data ◄──────────────►┘
TLS 1.3의 개선점
- 왕복 횟수 감소(더 빠른 핸드셰이크)
- 안전하지 않은 암호화 방식 제거
- 순방향 비밀성 필수화
- 핸드셰이크 메시지 암호화
TLS 구성 요소
인증서
- 서버 신원 인증
- 인증 기관이 발급
- 암호화를 위한 공개 키 포함
암호 스위트
사용할 암호화 알고리즘을 정의합니다.
TLS_AES_256_GCM_SHA384 (TLS 1.3)
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (TLS 1.2)
│ │ │ │
│ │ │ └── Hash algorithm
│ │ └── Encryption algorithm
│ └── Key exchange
└── Protocol
TLS 사용 사례
| 애플리케이션 | 프로토콜 | 포트 |
|---|---|---|
| 웹 브라우징 | HTTPS | 443 |
| 이메일(IMAP) | IMAPS | 993 |
| 이메일(SMTP) | SMTPS | 465 |
| 이메일 제출 | STARTTLS | 587 |
| FTP | FTPS | 990 |
서버 구성
Nginx TLS 구성
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
모범 사례
1. TLS 1.2 또는 1.3 사용: 이전 버전을 비활성화합니다.
2. 강한 암호 스위트 사용: AEAD 암호를 우선합니다.
3. HSTS 활성화: TLS 연결을 강제합니다.
4. 인증서 관리: 갱신을 자동화합니다.
5. 순방향 비밀성: ECDHE 키 교환을 사용합니다.
6. 정기적인 테스트: SSL Labs, testssl.sh를 사용합니다.
TLS 구성 테스트
# OpenSSL test
openssl s_client -connect example.com:443 -tls1_3
# Check certificate
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -text
TLS는 안전한 인터넷 통신의 기반입니다. 전송 중인 데이터를 암호화해 도청, 변조, 중간자 공격으로부터 보호합니다.