Criptarea datelor și TLS
1) Harta amenințării și țintele
În tranzit: interceptare/modificare trafic, MitM, downgrade.
În repaus (at-rest): furt de discuri/backup-uri, halde DB/log, insiders.
Chei: scurgeri de secrete, rotație slabă, reutilizare.
Scopul este de a asigura confidențialitatea, integritatea și autenticitatea, cu SLO-uri măsurabile și criptogagilitate gestionată.
2) Clasificarea datelor și politica
Clase: Public/Intern/Confidențial/Restricționat (PII/Finanțe/PAN).
Etichete: "date. clasa "," chiriaş "," regiune "," reţinere ".
Măsuri obligatorii: pentru Restricted - criptare la nivel de câmp/obiect, jurnal de acces, chei individuale per chiriaș/regiune.
3) criptare în repaus
3. 1 Criptare plic
DEK (Cheia de criptare a datelor) criptează datele; KEK/CMK (KMS/HSM) criptează DEK.
Rotația KEK nu necesită decriptarea datelor - re-wrap DEK.
DEK preferabil per obiect/parte/chiriaș cu TTL scurt.
3. 2 Niveluri
Transparent (TDE): discuri/linguri (PostgreSQL/MySQL/SQL Server). Simplu, dar fără control granular.
La nivel de aplicație: câmpuri/obiecte (PAN, secrete) - mai bine pentru multi-chiriaș și minimele de acces.
Depozitare/nori: S3/GCS SSE-KMS; pentru datele ACID - FLE (criptare la nivel de câmp), acolo unde este posibil.
3. 3 Algoritmi și moduri
AEAD: AES-256-GCM sau ChaCha20-Poly1305 (pe procesor fără AES-NI).
IV/nonce: unicitatea este strict obligatorie; A se păstra lângă textul cifrat nu se repetă.
Hashing: parole - Argon2id (sau scrypt/bcrypt) cu parametrii de sare și fier.
MAC/semnături: HMAC-SHA-256 pentru integritate sau etichetă încorporată AEAD.
3. 4 Practica pentru DB/fișiere
PostgreSQL: pccrypto/extensions; pe scriere - criptați câmpurile sensibile din aplicație.
Mongo/Doc-depozite: client-side FLE, chei în KMS.
Copii de rezervă: chei individuale și accesibile numai de la agentul CI/CD; copii offsite - întotdeauna criptate.
4) Managementul cheilor (KMS/HSM/Vault)
Sursa adevărului: KMS/HSM; cheile private nu părăsesc dispozitivul/serviciul.
Versioning: 'kid', 'purpose', 'alg', 'created _ at', 'rotates _ at'.
Acces: cel mai mic privilegiu; separarea sarcinilor (SoD).
Rotație: programată (3-6 luni pentru semnare), eveniment (incident), rotire-la-utilizare pentru token-uri de reîmprospătare.
Audit: jurnale imuabile: cine, când, ce a semnat/decriptat.
Multi-chiriaș: chei per chiriaș/marcă/regiune; BYOK/HYOK dacă este necesar de către client.
5) criptare în canal (TLS)
5. 1 Minime
TLS 1. 2 +, preferabil TLS 1. 3; HSTS pe domenii.
Cifru Suites: TLS1. 3 - predefinit (AES_256_GCM_SHA384/ CHACHA20_POLY1305_SHA256).
SFP: toate schimburile epemern cheie (ECDHE).
ALPN: HTTP/2 și HTTP/3 (QUIC) includ în mod conștient; cronometre de ceas.
5. 2 certificate, OCSP, pinning
Capsarea OCSP și lanțurile scurte.
Sesiuni de reutilizare: bilete TLS cu TTL scurt.
0-RTT (TLS 1. 3): porniți cu atenție (numai GET idempotent).
Pinning: numai 'public-key pinning via TSP/Key continuity' în aplicații/telefoane mobile (nu HPKP hard).
mTLS: în perimetrul/între servicii și parteneri; Calificarea SAN.
5. 3 gRPC/HTTP/QUIC
gRPC transmite Deadline și metadate - verificați și limitați timpul de încercare.
HTTP/3 (QUIC) accelerează primul octet; verificați compatibilitatea WAF/balancer.
6) mTLS și service mash
SPIFFE/SPIRE sau mesh-CA pentru eliberarea automată a certificatelor scurte (7-30 zile).
Politicieni: cine vorbește cu cine (SVID→SVID), authZ la nivelul L7.
Rotație - transparent; revocați prin actualizări de încredere.
7) Performanță și funcționare
AES-NI: pe servere cu suport - AES-GCM mai rapid. Pe procesoare mobile/vechi - ChaCha20-Poly1305.
Tuning TLS: taste scurte cu PFS, dar în limite rezonabile (P-256/25519); strângere de mână cache.
Batching: minimiza interogări mici; TLS-deasupra capului este proporțională cu numărul de conexiuni.
Descărcați: TLS pe perimetru (Envoy/NGINX), în interior - mTLS în plasă.
8) Politicile secrete și de jurnal
Secrete numai în KMS/Vault; în Kubernetes - furnizor de criptare etcd + KMS.
Log barring: chei/jetoane/PAN/secrete; mascare.
Instantanee/halde: criptați și restricționați accesul; monitorizează accesele cheie.
9) Configurări și exemple
9. 1 NGINX (profil strict 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 Trimisul (mTLS în amonte, 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 Exemplu de utilizare a AEAD (pseudo)
pseudo nonce = random(12)
ciphertext, tag = AES256_GCM. encrypt(key=DEK, nonce, aad=tenant object_id, plaintext)
store(nonce ciphertext tag)
10) Rotație și chei revocate
JWKS/„ copil ”pentru JWT; scurt „exp”.
Listele 'jti '/' sid' pentru revocarea jetoanelor cu TTL.
Secretele HMAC (webhooks): active + canare; recepție de ambele înainte de termenul limită.
TLS: alerte T-30/T-7/T-1, reînnoire automată, canar securizat.
11) Observabilitate și alerte
Метрики: 'tls _ handshake _ fail _ total {reason}', 'tls _ version _ share', 'cifru _ share', 'ocsp _ capsare _ errors',' kms _ ops _ total {op} ',' decrypt _ fail _ total ',' jwks _ kid _ share '.
Jurnale de acces: protocol/versiune/cifru (fără secrete).
Alerte: certificate care expiră, supratensiune 'bad _ record _ mac', creșterea „lanțurilor de încredere”, decriptări nereușite.
12) Specificul iGaming/Finanțe
Fluxuri PAN-safe: tokenizare, stocare token-only; PAN - la magazinul PSP/token.
PCI DSS: criptarea datelor deținătorului cardului, restricționarea accesului la chei, jurnalul tranzacțiilor cripto, segmentarea rețelei.
Regionalitate: Chei și date în regiunea jucătorului (latență/suveranitate).
Backoffice: mTLS + SSO, sesiuni scurte, FIDO2 pentru administratori.
13) Antipattern
TLS <1. 2; permise ciphers/RC4/3DES slabe.
Secrete și chei „eterne” comune fără rotație și „copil”.
Repetați IV/nonce în GCM (fatal pentru securitate).
Jurnale cu secrete/chei/date pan.
Numai TDE fără criptarea câmpurilor sensibile.
HPKP-pinning în prod (risc de „auto-blocare”).
0-RTT pe scriere/interogări non-idempotente.
14) Lista de verificare Prod Readiness
- Politica de clasificare și criptare a datelor (per clasă).
- AEAD (AES-GCM/ChaCha20-Poly1305); nonce unic; Parola Argon2id.
- Criptare plic: DEK pe obiect/chiriaș; KEK в KMS/HSM.
- TLS 1. 2+/1. 3, HSTS, OCSP capsare; un set rezonabil de cifre.
- mTLS în interior; emiterea automată/rotirea certificatelor scurte.
- JWKS/' kid ', scurt „exp”, liste „jti”; rotație de secrete/serturi cu suprapunere.
- Backup-urile și jurnalele sunt criptate; accesele și operațiunile sunt auditate.
- Tablouri de bord/alerte conform TLS/KMS/JWKS; teste de degradare și canar.
- Documentație: proceduri incidente (compromis cheie/cert).
15) TL; DR
Criptați peste tot: în canal - TLS 1. 3/1. 2 cu SFP și perimetru strict; înăuntru - mTLS. În repaus - plic (DEK/KEK) cu chei în KMS/HSM, criptează granular câmpurile sensibile. Gestionați cheile prin intermediul 'kid '/JWKS și rotirea regulată a suprapunerii, stocați jurnalele de tranzacții cripto. Alegeți AES-GCM (sau ChaCha20-Poly1305), nu reutilizați nonce, criptați copii de rezervă/jurnale. Pentru iGaming/PAN, tokenizare și segmentare PCI-conștientă.