데이터 암호화 및 TLS
1) 위협지도 및 대상
운송 중: 교통 차단/수정, MitM, 다운 그레이드.
휴식 시간 (휴식 중): 디스크/백업 도난, DB/로그 덤프, 내부자.
열쇠: 비밀 유출, 약한 회전, 재사용.
목표는 측정 가능한 SLO 및 관리 된 암호 해독성으로 기밀 유지, 무결성 및 진정성을 보장하는 것입니다.
2) 데이터 분류 및 정책
수업: 공개/내부/기밀/제한 (PII/금융/PAN).
태그: '데이터. 클래스 ',' 테넌트 ',' 지역 ',' 유지 '.
필수 조치: 제한된-현장/객체 수준의 암호화, 액세스 로그, 임차인/지역 당 개별 키.
3) 휴식 시간 암호화
3. 봉투 암호화 1 개
DEK (데이터 암호화 키) 는 데이터를 암호화합니다. KEK/CMK (KMS/HSM) 는 DEK를 암호화합니다.
KEK 회전에는 데이터 암호 해독이 필요하지 않습니다. DEK를 다시 랩핑하십시오.
바람직하게는 TTL이 짧은 객체 당/당사자/테넌트입니다.
3. 2 단계
투명 (TDE): 디스크/테이블 스페이스 (PostgreSQL/MySQL/SQL 서버). 간단하지만 세분화 된 제어가 없습니다.
응용 프로그램 수준에서: 필드/객체 (PAN, 비밀) -멀티 테넌트 및 액세스 최소값에 더 적합합니다.
저장/구름: S3/GCS SSE-KMS; ACID 데이터-가능한 경우 FLE (필드 레벨 암호화).
3. 3 가지 알고리즘 및 모드
AEAD: AES-256-GCM 또는 ChaCha20-Poly1305 (AES-NI가없는 CPU).
IV/nonce: 독창성은 엄격히 필수입니다. 암호문 옆에 저장하지 않습니다.
해싱: 암호-소금 및 철 매개 변수가있는 Argon2id (또는 scrypt/bcrypt).
MAC/서명: 무결성 또는 AEAD 내장 레이블을위한 HMAC-Ś-256.
3. 4 DB/파일 연습
PostgreSQL: pgcrypto/확장; 쓰기-응용 프로그램의 민감한 필드를 암호화합니다
Mongo/Doc-storage: 클라이언트 측 FLE, KMS 키.
백업: 개별 키 및 CI/CD 에이전트에서만 액세스 할 수 있습니다. 오프 사이트 사본-항상 암호화됩니다.
4) 키 관리 (KMS/HSM/Vault)
진실의 근원: KMS/HSM; 개인 키는 장치/서비스를 떠나지 않습니다.
버전: 'kid', 'porture', 'alg', 'producted _ at', 'rotates _ at'.
액세스: 최소 권한; 직무 분리 (SoD).
회전: 예약 (서명 3-6 개월), 이벤트 (사고), 토큰 새로 고침을위한 사용 중 회전.
감사: 불변의 통나무: 누가, 언제, 무엇을 서명/해독했는지.
멀티 테넌트: 테넌트/브랜드/지역 당 키; 고객이 요구하는 경우 BYOK/HYOK.
5) 채널 내 암호화 (SL)
5. 최저 1 개
TLS 1. 2 +, 바람직하게는 SL 1. 3; 도메인의 HSTS.
암호 스위트: TLS1. 3 - 사전 정의 (AES _ 256 _ GCM _ ș384/CHACHA20 _ POLY1305 _ ș256).
PFS: 모든 주요 에페 메른 거래소 (ECDHE).
ALPN: 상식적으로 의식적인 것을 포함한다. 타이머를보십시오.
5. 2 개의 인증서, OCSP, 피닝
OCSP 스테이플 링 및 짧은 체인.
재사용 세션: 짧은 TTL이있는 TLS 티켓.
0-RTT (TLS 1. 3): 조심스럽게 켜십시오 (dempotent GET 만).
피닝: 애플리케이션/모바일 (하드 HPKP가 아님) 에서 'TSP/키 연속성을 통한 공개 키 피닝' 만.
mTLS: 서비스와 파트너 사이의 경계/내에서; SAN 자격.
5. 3 gRPC/SHT/QUIC
gRPC는 마감일 및 메타 데이터를 전송합니다-시도 당 타임 아웃을 확인하고 제한하십시오.
Q/3 (QUIC) 은 1 바이트를 가속화합니다. WAF/밸런서 호환성을 확인하십시오.
6) mTLS 및 서비스 매쉬
짧은 인증서 자동 발급 (7-30 일) 을위한 SPIFFE/SPIRE 또는 메쉬 -CA.
정치인: 누구에게 말하는가 (SVID → SVID) 는 L7 수준에서 저작자입니다.
회전 - 투명; 트러스트 번들 업데이트를 통해 철회하십시오.
7) 성능 및 작동
AES-NI: 지원되는 서버에서-AES-GCM 더 빠릅니다. 모바일/오래된 CPU-ChaCha20-Poly1305.
TLS 튜닝: PFS가 있지만 합리적인 한계 내에있는 짧은 키 (P-256/25519); 악수 캐시.
배칭: 작은 쿼리를 최소화합니다. TLS- 오버 헤드는 연결 수에 비례합니다.
오프로드: 주변의 TLS (Envoy/NGINX), 내부-mTLS-mesh.
8) 비밀 및 로그 정책
KMS/Vault에서만 비밀; Kubernetes에서-암호화 etcd + KMS 제공 업체.
로그 금지: 키/토큰/PAN/비밀; 마스킹.
스냅 샷/덤프: 액세스를 암호화하고 제한합니다. 키 액세스를 모니터링하십시오.
9) 구성 및 예
9. 1 NGINX (TLS 엄격한 프로필)
nginx ssl_protocols TLSv1. 2 TLSv1. 3;
ssl_prefer_server_ciphers on;
ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:P-256;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
9. 2 특사 (mTLS에서 업스트림, 의사)
yaml transport_socket:
name: envoy. transport_sockets. tls typed_config:
common_tls_context:
tls_params:
tls_minimum_protocol_version: TLSv1_2 tls_certificate_sds_secret_configs:
- name: service_cert # client certificate validation_context_sds_secret_config:
name: mesh_ca_bundle # trusted roots
9. 3 AEAD 사용 예 (의사)
pseudo nonce = random(12)
ciphertext, tag = AES256_GCM. encrypt(key=DEK, nonce, aad=tenant object_id, plaintext)
store(nonce ciphertext tag)
10) 회전 및 취소 된 키
JWKS/JWT의 'kid'; 짧은 'exp'.
TTL로 토큰을 취소하기 위해 'jti '/' sid' 를 표시합니다.
HMAC의 비밀 (웹 후크): 활성 + 카나리아; 마감일 전에 둘 다 수신.
TLS: T-30/T-7/T-1 경고, 자동 갱신, 보안 카나리아.
11) 관찰 및 경고
'tls _ handshake _ fail _ total {reason}', 'tls _ version _ share', 'censp _ share', 'ocsp _ stapling _ aults', 'kms _ ops _ tock {op}', 'disken _ fail _ total', 'jwks _ kid _ share'.
액세스 로그: 프로토콜/버전/암호 (비밀없이).
경고: 만료 인증서, 'bad _ record _ mac' 급증, "신뢰할 수없는 체인" 의 성장, 암호 해독 실패.
12) iGaming/Finance의 세부 사항
PAN 안전 스트림: 토큰 화, 토큰 전용 스토리지; PAN-PSP/토큰 저장소에서.
PCI DSS: 카드 소지자 데이터 암호화, 키 액세스 제한, 암호화 트랜잭션 로그, 네트워크 세분화.
지역: 플레이어 지역의 열쇠 및 데이터 (대기 시간/주권).
백 오피스: mSL + SSO, 짧은 세션, 관리자를위한 FIDO2.
13) 안티 패턴
TLS <1. 2; 약한 암호/RC4/3DES를 허용했습니다.
회전과 '아이' 가없는 일반적인 "영원한" 비밀과 키.
GCM에서 IV/nonce를 반복하십시오 (보안에 치명적).
비밀/키/팬 데이터가있는 로그.
민감한 필드를 암호화하지 않은 TDE 만.
prod에서 HPKP 피닝 ("자체 잠금" 위험).
쓰기/비 등식 쿼리의 0-RTT.
14) Prod 준비 점검표
- 데이터 분류 및 암호화 정책 (클래스 당).
- AEAD (AES-GCM/ChaCha20-Poly1305); 독특한 nonce; 비밀번호 Argon2id.
- 봉투 암호화: 객체/테넌트 당 DEK; KMS/HSM.
- TLS 1. 2+/1. 3, HSTS, OCSP 스테이플 링; 합리적인 암호 세트.
- mTLS 내부; 짧은 인증서의 자동 발급/회전.
- JWKS/' kid ', 짧은' exp ',' jti '목록; 겹치는 비밀/종의 회전.
- 백업 및 로그는 암호화됩니다. 액세스 및 작업이 감사됩니다.
- SL/KMS/JWKS에 따른 대시 보드/경고; 열화 테스트 및 카나리아.
- 문서: 사건 절차 (키/인증 타협).
15) TL; DR
모든 곳에서 암호화합니다: 채널에서 - TLS 1. 3/1. PFS 및 엄격한 경계를 갖는 2; 내부-mTLS. 휴식 시간-KMS/HSM에 키가있는 엔벨로프 (DEK/KEK) 는 민감한 필드를 암호화합니다. 'kid '/JWKS 및 규칙적인 중복 회전을 통해 키를 관리하고 암호화 트랜잭션 로그를 저장하십시오. AES-GCM (또는 ChaCha20-Poly1305) 을 선택하고 nonce를 재사용하지 않고 백업/로그를 암호화하십시오. iGaming/PAN, 토큰 화 및 PCI 의식 세분화.