암호학
SSL/TLSSSL/TLS
SSL(Secure Sockets Layer) / TLS(Transport Layer Security)는 인터넷 통신을 암호화하는 보안 프로토콜이다. HTTPS, 이메일, VPN 등 네트워크 보안의 핵심 기반 기술로, 공개키 암호화와 대칭키 암호화를 결합해 효율적이고 안전한 통신을 제공한다. SSL은 현재 사용 중단되었고, 후속인 TLS가 표준이다.
SSL vs TLS 역사
| 버전 | 연도 | 상태 |
|---|---|---|
| SSL 2.0 | 1995 | 사용 중단 (취약점) |
| SSL 3.0 | 1996 | 사용 중단 (POODLE 취약점) |
| TLS 1.0 | 1999 | 사용 중단 권고 |
| TLS 1.1 | 2006 | 사용 중단 권고 |
| TLS 1.2 | 2008 | 현재 널리 사용 |
| TLS 1.3 | 2018 | 현재 권장 표준 |
TLS 핸드셰이크 (TLS 1.3)
암호화 방식
TLS는 두 가지 암호화를 조합한다.
| 단계 | 방식 | 이유 |
|---|---|---|
| 핸드셰이크 | 비대칭키 (RSA, ECDHE) | 안전하게 키 교환 |
| 데이터 전송 | 대칭키 (AES, ChaCha20) | 빠른 대량 데이터 암호화 |
비대칭키 암호화
X.509 인증서
서버의 신원을 CA(Certificate Authority)가 보증하는 디지털 문서.
인증서 체인
브라우저는 루트 CA까지 체인을 따라가며 신뢰를 검증한다.
주요 암호화 알고리즘
| 종류 | 알고리즘 | 용도 |
|---|---|---|
| 키 교환 | ECDHE, DHE | 세션키 협상 |
| 인증 | RSA, ECDSA | 서버 신원 증명 |
| 대칭 암호화 | AES-GCM, ChaCha20-Poly1305 | 데이터 암호화 |
| 해시 | SHA-256, SHA-384 | 무결성 검증 |
HTTPS 인증서 발급 (Let's Encrypt)
보안 취약점
| 취약점 | 대상 | 설명 |
|---|---|---|
| POODLE | SSL 3.0 | CBC 패딩 오라클 공격 |
| BEAST | TLS 1.0 | CBC 블록 암호 공격 |
| Heartbleed | OpenSSL | 버퍼 오버리드 메모리 노출 |
| CRIME/BREACH | 압축 사용 시 | 압축+암호화 결합 공격 |
→ TLS 1.3 사용으로 대부분 해결.
블록체인과 TLS
Web3 dApp도 RPC 통신은 HTTPS/TLS로 보호된다.
HSTS (HTTP Strict Transport Security)
브라우저가 해당 도메인에 항상 HTTPS로만 접속하도록 강제하는 HTTP 응답 헤더.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
- •max-age: HSTS 적용 기간 (초)
- •includeSubDomains: 서브도메인에도 적용
- •preload: 브라우저 내장 HSTS 목록에 등록
효과: 최초 HTTP 요청을 HTTPS로 자동 리다이렉트, SSL Stripping 공격 방지.
OCSP 스테이플링 (OCSP Stapling)
인증서 유효성을 실시간으로 확인하는 방법.
- •기존 OCSP: 클라이언트가 CA의 OCSP 서버에 직접 요청 → 지연, 프라이버시 문제
- •OCSP 스테이플링: 서버가 CA로부터 OCSP 응답을 미리 받아 TLS 핸드셰이크 시 클라이언트에게 전달 → 빠르고 프라이버시 보호
Certificate Transparency (CT)
CA가 발급한 모든 인증서를 공개 로그에 기록하는 체계. 악의적 인증서 발급 감지에 활용된다.
관련 개념
- •HTTP/HTTPS — TLS 위에서 동작하는 응용 프로토콜
- •SHA-256 — TLS에서 무결성 검증에 사용
- •공개키 암호화 — TLS 핸드셰이크 기반
- •네트워크 — TLS가 보호하는 네트워크 통신
- •TCP/IP — TLS가 동작하는 전송 계층