Szyfrowanie danych i TLS
1) Mapa zagrożenia i cele
Tranzyt: przechwytywanie/modyfikacja ruchu, MitM, downgrade.
W stanie spoczynku (w odpoczynku): kradzież dysków/kopii zapasowych, porzucenia DB/dziennika, wnętrzności.
Klucze: wycieki tajemnic, słaby obrót, ponowne użycie.
Celem jest zapewnienie poufności, integralności i autentyczności, z wymiernymi SLO i zarządzanej kryptogenności.
2) Klasyfikacja danych i polityka
Klasy: publiczne/wewnętrzne/poufne/ograniczone (PII/Finance/PAN).
Tagi: 'dane. klasa "," najemca "," region "," zatrzymanie ".
Obowiązkowe środki: dla Ograniczony - szyfrowanie na poziomie pola/obiektu, dziennik dostępu, poszczególne klucze na lokatora/region.
3) Szyfrowanie podczas odpoczynku
3. 1 Szyfrowanie koperty
DEK (klucz szyfrowania danych) szyfruje dane; KEK/CMK (KMS/HSM) szyfruje DEK.
Rotacja KEK nie wymaga odszyfrowania danych - re-wrap DEK.
DEK najlepiej per-object/party/najemca z krótkim TTL.
3. 2 Poziomy
Przezroczyste (TDE): tarcza/tablety (PostgreSQL/MySQL/SQL Server). Proste, ale bez granulatu.
Na poziomie aplikacji: pola/obiekty (PAN, tajemnice) - lepsze dla wielu najemców i minimów dostępu.
Przechowywanie/chmury: S3/GCS SSE-KMS; dla danych ACID - FLE (szyfrowanie na poziomie pola) w miarę możliwości.
3. 3 Algorytmy i tryby
AEAD: AES-256-GCM lub ChaCha20-Poly1305 (na procesorze bez AES-NI).
IV/nonce: wyjątkowość jest ściśle obowiązkowa; Przechowywać obok szyfru nie powtarzać.
Hashing: hasła - Argon2id (lub skrypt/bcrypt) z parametrami soli i żelaza.
MAC/podpisy: HMAC-SHA-256 integralności lub wbudowana etykieta AEAD.
3. 4 Praktyka dla DB/plików
PostgreSQL: pgcrypto/rozszerzenia; on write - szyfruj pola wrażliwe w aplikacji.
Mongo/Doc-storages: klient-side FLE, klucze w KMS.
Kopie zapasowe: pojedyncze klucze i dostępne tylko z agenta CI/CD; kopie offsite - zawsze zaszyfrowane.
4) Zarządzanie kluczami (KMS/HSM/Vault)
Źródło prawdy: KMS/HSM; klucze prywatne nie opuszczają urządzenia/usługi.
Wersioning: 'kid', 'purpose', 'alg', 'created _ at', 'rotates _ at'.
Dostęp: najmniej uprzywilejowany; rozdzielenie ceł (SoD).
Obrót: zaplanowany (3-6 miesięcy do podpisania), zdarzenie (incydent), obrót w użyciu w celu odświeżenia żetonów.
Audyt: niezmienne dzienniki: kto, kiedy, co podpisane/odszyfrowane.
Multi-najemca: klucze per-najemca/marka/region; BYOK/HYOK, jeśli jest to wymagane przez klienta.
5) Szyfrowanie w kanale (TLS)
5. 1 Upadki
TLS 1. 2 +, najlepiej TLS 1. 3; HSTS na domenach.
Cipher Suites: TLS1. 3 - wstępnie zdefiniowane (AES_256_GCM_SHA384/ CHACHA20_POLY1305_SHA256).
PFS: wszystkie kluczowe wymiany epemern (ECDHE).
ALPN: HTTP/2 i HTTP/3 (QUIC) obejmują świadomie; zegarek zegarowy.
5. 2 Certyfikaty, OCSP, szpilki
OCSP zszywanie i krótkie łańcuchy.
Sesje ponownego użycia: bilety TLS z krótkim TTL.
0-RTT (TLS 1. 3): włączyć ostrożnie (tylko idempotent GET).
Szpilki: tylko „szpilki klucz publiczny poprzez TSP/ciągłość klucza” w aplikacjach/telefonach komórkowych (nie twardy HPKP).
mTLS: w obrębie/między usługami a partnerami; Kwalifikacje SAN.
5. 3 gRPC/HTTP/QUIC
gRPC przekazuje Termin i metadane - sprawdź i ograniczyć czas na próbę.
HTTP/3 (QUIC) przyspiesza pierwszy bajt; Sprawdź zgodność WAF/balancer.
6) mTLS i zacieru serwisowego
SPIFFE/SPIRE lub mesh-CA do automatycznego wydawania krótkich certyfikatów (7-30 dni).
Politycy: kto rozmawia z kim (SVID → SVID), authZ na poziomie L7.
Obrót - przezroczysty; odwołać poprzez aktualizacje pakietów zaufania.
7) Wydajność i eksploatacja
AES-NI: na serwerach z obsługą - szybciej AES-GCM. Na telefonie komórkowym/starych procesorach - ChaCha20-Poly1305.
Dostrajanie TLS: klucze krótkie z PFS, ale w rozsądnych granicach (P-256/25519); uścisk dłoni.
Dozowanie: zminimalizować małe zapytania; TLS-overhead jest proporcjonalny do liczby połączeń.
Odciążenie: TLS na obwodzie (wysłannik/NGINX), wewnątrz - mTLS w siatce.
8) Tajna i logarytmiczna polityka
Tajemnice tylko w KMS/Vault; w Kubernetes - dostawca szyfrowania etcd + KMS.
Lustrowanie dziennika: klucze/żetony/PAN/sekrety; Maskowanie.
Migawki/rzuty: szyfruj i ograniczaj dostęp; monitorować dostęp klucza.
9) Konfiguracje i przykłady
9. 1 NGINX (ścisły profil 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 Wysłannik (mTLS do upstream, pseudo)
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 Przykład użycia AEAD (pseudo)
pseudo nonce = random(12)
ciphertext, tag = AES256_GCM. encrypt(key=DEK, nonce, aad=tenant object_id, plaintext)
store(nonce ciphertext tag)
10) Obrót i odwołane klucze
JWKS/„ dziecko ”dla JWT; krótkie 'exp'.
Wymienia 'jti '/' sid' dla cofnięcia żetonów z TTL.
Sekrety HMAC (webhooks): active + canary; odbiór przed terminem.
TLS: T-30/T-7/T-1 wpisy, automatyczne odnowienie, bezpieczne kanaryjskie.
11) Obserwowalność i wpisy
Метрика: 'tls _ handshake _ fail _ total {reason}', 'tls _ version _ share', 'cipher _ share', 'ocsp _ stapling _ errors',' kms _ ops _ total {op} ',' decrypt _ fail _ total ',' jwks _ kid _ share '.
Dzienniki dostępu: protokół/wersja/szyfr (bez tajemnic).
Alerts: wygasające certyfikaty, surge 'bad _ record _ mac', wzrost „niezaufanych łańcuchów”, nieudane odszyfrowanie.
12) Szczegóły dotyczące iGaming/Finance
Strumienie bezpieczeństwa PAN: tokenizacja, przechowywanie wyłącznie tokenów; PAN - w sklepie PSP/token.
PCI DSS: szyfrowanie danych posiadacza karty, ograniczenie dostępu do klawiszy, dziennik transakcji krypto, segmentacja sieci.
Regionalność: klucze i dane w regionie gracza (opóźnienie/suwerenność).
Backoffice: mTLS + SSO, krótkie sesje, FIDO2 dla administratorów.
13) Antypattery
TLS <1. 2; dozwolone słabe ciphers/RC4/3DES.
Wspólne „wieczne” sekrety i klucze bez rotacji i „dziecko”.
Powtarzać IV/nonce w GCM (śmiertelne do bezpieczeństwa).
Dzienniki z tajemnicami/klawiszami/danymi na patelni.
Tylko TDE bez szyfrowania pól wrażliwych.
HPKP-pinning w prod (ryzyko „samozamknięcia”).
0-RTT na pisanie/nie-idempotentne zapytania.
14) Lista kontrolna gotowości Prod
- Zasady klasyfikacji i szyfrowania danych (dla poszczególnych klas).
- AEAD (AES-GCM/ChaCha20-Poly1305); niepowtarzalny nonce; Hasło Argon2id.
- Szyfrowanie koperty: DEK na obiekt/najemcę; KEK - KMS/HSM.
- TLS 1. 2+/1. 3, HSTS, zszywanie OCSP; rozsądny zestaw szyfrów.
- mTLS wewnątrz; automatyczne wydawanie/rotacja krótkich certyfikatów.
- JWKS/„ dziecko ”, krótkie„ exp ”, wykazy„ jti ”; rotacja tajemnic/serc z nakładaniem się.
- Kopie zapasowe i dzienniki są szyfrowane; dostęp i operacje są kontrolowane.
- Deski rozdzielcze/wpisy zgodnie z TLS/KMS/JWKS; testy degradacji i kanarka.
- Dokumentacja: procedury incydentów (kompromis klucz/cert).
15) TL; DR
Szyfruj wszędzie: w kanale - TLS 1. 3/1. 2 z PFS i ścisłym obwodzie; wewnątrz - mTLS. W spoczynku - koperta (DEK/KEK) z klawiszami w KMS/HSM, ziarnisto szyfrować pola wrażliwe. Zarządzanie klawiszami poprzez 'kid '/JWKS i regularne nakładanie się obrotów, przechowywanie dzienników transakcji krypto. Wybierz AES-GCM (lub ChaCha20-Poly1305), nie używaj ponownie nonce, szyfruj kopie zapasowe/dzienniki. Do segmentacji iGaming/PAN, tokenizacji i PCI.