Crittografia dei dati e TLS
1) Mappa delle minacce e degli obiettivi
Nel canale (in-transit), intercettazione/modifica del traffico, MitM, downgrade.
In pace (at-rest) - Furto di dischi/backup, dampe di database/unità, insidie.
Le chiavi sono fughe di segreti, scarsa rotazione, riutilizzo.
Lo scopo è quello di garantire la riservatezza, l'integrità e l'autenticità, con SLO misurati e cryptoagilati.
2) Classificazione dei dati e criteri
Classi: Public/Internal/Confidential/Restringted (PII/finanza/PAN).
Etichette: 'data. class`, `tenant`, `region`, `retention`.
Misure obbligatorie: per Resticted - crittografia a livello di campo/oggetto, registro di accesso, singole chiavi per-tenant/region.
3) Crittografia in pace (at-rest)
3. 1 crittografia invelope
DEK (Data Encryption Key) cifra i dati KEK/CMK (KMS/HSM) cifra DEK.
La rotazione KEK non richiede la decrittografia dei dati - pene-wrap DEK.
DEK preferibilmente per-oggetto/partitura/tenante con TTL breve.
3. 2 Livelli
TDE - Disco/spazio tabella (PostgreSQL/MySQL/SQL Server). Semplice, ma senza controllo granulare.
A livello di applicazione, campi/oggetti (PAN, segreti) - meglio per multi-tenant e minimo accesso.
Storage/cloud: S3/GCS SSE-KMS; per i dati ACID - FLE (field-level encryption), se possibile.
3. 3 Algoritmi e modalità
AEAD: AES-256-GCM o ChaCha20-Poly1305 (per CPU senza AES-NI).
IV/nonce: l'unicità è strettamente obbligatoria; memorizzare accanto al ciphertext; Non ripeterlo.
Hash: password - Argon2id (o scrypt/bcrypt) con sale e parametri di ferro.
MAS/firma: HMAC-SHA-256 per l'integrità o etichetta integrata AEAD.
3. 4 Pratica per database/file
PostgreSQL: pgcrypto/estensioni; write - Crittografa i campi sensibili nell'applicazione.
Mongo/Doc-Storage: client-side FLE, chiavi in KMS.
Bacap: chiavi separate e disponibili solo da ICI/CD-agente; Le copie off-site sono sempre crittografate.
4) Gestione chiavi (KMS/HSM/Vault)
Fonte di verità: KMS/HSM; le chiavi private non lasciano l'apparecchio/servizio.
Versioning: «kid», «purpose», «alg», «created _ at», «rotates _ at».
Accesso: least-privilege; Separazione dei compiti (SoD).
Rotazione: pianificazione (3-6 mes da firmare), evento (incidente), rotate-on-use per i token refresh.
I registri immutabili sono chi, quando, cosa ha firmato/decifrato.
Multi-tenant: chiavi per-tenant/brand/region; BYOK/HYOK per i requisiti del cliente.
5) Crittografia nel canale (TLS)
5. 1 Minimi
TLS 1. 2 +, preferibilmente TLS 1. 3; HSTS sui domini.
Cifrati: TLS1. 3 - predefiniti (AES _ 256 _ GCM _ SHA384/CHACHA20 _ POLY1305 _ SHA256).
PFS - Tutti gli scambi chiave sono epemini (ECDHE).
ALPN: HTTP/2 e HTTP/3 (QUIC) includere consapevolmente; Tenere d'occhio i timer.
5. 2 Certificati, OCSP, pinning
OCSP stapling e catene brevi.
Riutilizza sessioni: TLS tickets con TTL breve.
0-RTT (TLS 1. 3) - Includere con cautela (solo GET Idempoted).
Pinning: solo «public-key pinning via TSP/Key continuity» nelle applicazioni/cellulari (non HPKP rigido).
mTLS: all'interno del perimetro/tra servizi e partner; certificazione SAN.
5. 3 gRPC/HTTP/QUIC
gRPC invia Deadline e metadati - Controlla e limita per-try timeout.
HTTP/3 (QUIC) accelera first-byte verificare la compatibilità WAF/Bilanciatori.
6) mTLS e servizio-mash
SPIFFE/SPIRE o mesh-CA per il rilascio automatico di certificati brevi (7-30 giorni).
I politici, chi parla con chi, a livello L7.
Rotazione trasparente; revoke attraverso aggiornamenti trust-bundle.
7) Prestazioni e utilizzo
AES-NI: su server supportati - AES-GCM più veloce. Sul vecchio e cellulare CPU.
Sintonizzatore TLS: chiavi brevi con PFS ma a limiti ragionevoli (P-256/25519) la cache delle strette di mano.
Batching: minimizza le piccole richieste; TLS-overhead è proporzionale al numero di connessioni.
Offload: TLS sul perimetro (Avvoy/NGINX), all'interno c'è il mTLS in mesh.
8) Politiche di segreti e fogli
I segreti sono solo in KMS/Vault; Kubernets - crittografia etcd + KMS provider.
Disabilitazione dei cassetti: chiavi/token/PAN/segreti; occultamento.
Snapshot/dump: crittografa e limita l'accesso; Monitor delle chiavi.
9) Confighi e esempi
9. 1 NGINX (TLS profilo rigoroso)
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 Avvoy (mTLS all'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 Esempio di utilizzo di AEAD (pseudo)
pseudo nonce = random(12)
ciphertext, tag = AES256_GCM. encrypt(key=DEK, nonce, aad=tenant object_id, plaintext)
store(nonce ciphertext tag)
10) Rotazione e chiavi ritirate
JWKS/« kid »per JWT; brevi «exp».
Elenchi «jti »/« sid» per richiamare i token da TTL.
I segreti HMAC sono attivi + canarini; Ricevimento da entrambi fino alla data di fine.
TLS: alert T-30/T-7/T-1, estensione automatica, canary sicuro.
11) Osservabilità e alerti
Метрики: `tls_handshake_fail_total{reason}`, `tls_version_share`, `cipher_share`, `ocsp_stapling_errors`, `kms_ops_total{op}`, `decrypt_fail_total`, `jwks_kid_share`.
Loghi di accesso: protocollo/versione/cifrario (senza segreti).
Alert: certificati in scadenza, picco dì bad _ record _ mac ", crescita di" catene diffidate ", decodifica fallita.
12) Specificità iGaming/finanza
Thread PAN-safe: tornitura, storage solo di token PAN: lo storage PSP/token.
PCI DSS: crittografia dei dati dei titolari di carte, limitazione dell'accesso alle chiavi, cronologia delle operazioni di crittografia, segmentazione della rete.
Regionalità: chiavi e dati nella regione del giocatore (latitanza/sovranità).
Backoffice: mTLS + SSO, brevi sessioni, FIDO2 per gli ammiragli.
13) Antipattern
TLS < 1. 2; codici deboli/RC4/3DES consentiti.
Segreti e chiavi comuni «eterni» senza rotazione e «kid».
Ripetizione IV/nonce in GCM (fatale per la sicurezza).
Loghi con segreti/chiavi/dati pan.
Solo TDE senza crittografia dei campi sensibili.
Pinning HPKP (rischio di autodifesa).
0-RTT su query non identificabili.
14) Foglio di assegno prod
- Classificazione dei dati e criteri di crittografia (per-class).
- AEAD (AES-GCM/ChaCha20-Poly1305); nonce univoci; Argon2id per le password.
- Crittografia evelope: DEK per-oggetto/tenante; KEK в KMS/HSM.
- TLS 1. 2+/1. 3, HSTS, OCSP stapling; Un set intelligente di codici.
- mTLS all'interno; rilascio automatico/rotazione di certificati brevi.
- JWKS/« kid », brevi« exp », elenchi« jti »; rotazione di segreti/cerchi con sovrapposizione.
- Bacapi e loghi crittografati; la disponibilità e le operazioni vengono verificate.
- Dashboard/alert per TLS/KMS/JWKS; test di degrado e canary.
- Documentazione: procedure di incidente (compromissione chiave/serto).
15) TL; DR
Crittografa ovunque nel canale - TLS 1. 3/1. 2 con PFS e perimetro rigoroso Dentro c'è un mTLS. In pace, invelope (DEK/KEK) con le chiavi KMS/HSM, crittografare granularmente i campi sensibili. Controlla le chiavi con «kid »/JWKS e la rotazione regolare con sovrapposizione e memorizza i registri delle operazioni di crittografia. Selezionare AES-GCM (o ChaCha20-Poly1305), non reuse-nonce, cifrare bacap/login. Per i iGaming/PAN, la tornizzazione e la segmentazione PCI consapevole.