Crittografia dei dati: Privacy by Math
HTTPS non è sufficiente. Per proteggere realmente le PII sono necessarie la crittografia dei dati inattivi e la crittografia a livello di applicazione. Comprensione di AES, RSA e KMS.
L’illusione della sicurezza
“Verifichiamo SSL.”
Grande. I tuoi dati sono al sicuro mentre viaggiano lungo il cavo in fibra ottica (Crittografia in transito).
Ma dove atterra?
Finisce in un database.
Il database è crittografato?
Se un hacker riesce ad accedere al disco user.db, può leggerlo?
Se il SysAdmin scarica il database in un CSV, è leggibile?
Se la risposta è sì, non sei sicuro.
Crittografia a riposo garantisce che i dati archiviati siano essenzialmente rumore casuale senza la chiave.
Perché Maison Code ne parla
Noi di Maison Code gestiamo i dati degli utenti che rientrano in una rigorosa regolamentazione (GDPR, CCPA, HIPAA). Cartelle mediche. Indirizzi di casa. Una violazione qui non è solo motivo di imbarazzo; è una causa. Implementiamo architetture Zero Trust. Presumiamo che il database verrà trapelato. Se vengono divulgati, vogliamo che i dati siano inutili per l’aggressore. Ne parliamo perché la crittografia è un’ingegneria valida, non una magia.
I 3 stati dei dati
- In transito: spostamento sulla rete.
- Soluzione: TLS 1.3 (HTTPS). Gestore certificati AWS.
- A riposo: seduto su un disco (disco rigido S3, RDS).
- Soluzione: crittografia del volume AES-256. (AWS KMS).
- Questo è trasparente. Il sistema operativo crittografa le scritture e decrittografa le letture. Se qualcuno ruba il disco rigido fisico, non può leggerlo. Ma se accedono al database come amministratore, possono leggerlo.
- In uso (livello applicazione): logica nella RAM.
- La parte più difficile.
- Protezione dei dati anche dal DB Admin.
- Soluzione: crittografia lato client. L’App crittografa il numero della carta di credito prima di inviarlo al database. Il DB vede solo spazzatura.
KMS (Sistemi di gestione delle chiavi)
Regola n. 1 delle criptovalute: Non creare la tua criptovaluta.
Regola n.2: Non riporre la chiave accanto alla serratura.
Se crittografi il DB ma memorizzi la chiave di crittografia in config.js nello stesso repository… non hai ottenuto nulla.
Utilizza un KMS (AWS KMS, HashiCorp Vault).
L’Hardware Security Module (HSM) genera la chiave e non la lascia mai uscire dall’hardware.
La tua app chiede a KMS di “Decriptare questo”. KMS convalida l’autorizzazione e restituisce il testo in chiaro.
Puoi verificare esattamente chi ha decrittografato cosa e quando.
Hashing e crittografia
La crittografia è reversibile (con una chiave). Usalo per: Indirizzi, Carte di credito (se le gestisci), PII. Hashing è unidirezionale (irreversibile). Usalo per: Password. Non crittografare mai le password. Hashing utilizzando Argon2 o bcrypt. Se le crittografi e la chiave viene rubata, tutte le password verranno compromesse. Se li triti (salati), l’aggressore deve romperli uno per uno.
Implementazione della crittografia a livello di applicazione
Utilizzo del modulo “crypto” di Node.js.
importa criptovaluta da "criptovaluta";
const ALGORITMO = 'aes-256-gcm'; // Crittografia autenticata
funzione crittografa(testo, chiave master) {
const iv = crypto.randomBytes(16); // Vettore di inizializzazione (casuale!)
const cifra = crypto.createCipheriv(ALGORITHM, masterKey, iv);
lascia criptato = cipher.update(text, 'utf8', 'hex');
crittografato += cipher.final('hex');
const tag = cipher.getAuthTag();
// Memorizza IV e Tag con il testo cifrato!
ritorno {
contenuto: crittografato,
iv: iv.toString('hex'),
tag: tag.toString('hex')
};
}
Rotazione chiave: Ogni anno, genera una nuova chiave principale. Crittografare nuovamente i dati. Ciò limita il “Raggio di esplosione”. Se la chiave 2024 viene rubata, i dati 2025 sono al sicuro.
7. Crittografia delle buste: il Santo Graal
Se hai 1 miliardo di righe, non puoi crittografarle tutte con la stessa chiave principale. Se quella chiave perde, tutto perde. Soluzione: crittografia delle buste.
- Chiave principale (CMK): risiede in KMS (HSM). Non se ne va mai.
- Chiave dati (DK): generata per ciascun utente. Crittografato da CMK.
- Dati: crittografati da DK. Quando vuoi leggere i dati dell’Utente A:
- Chiedi a KMS di decrittografare il DK dell’utente A (utilizzando CMK).
- Utilizzare il DK in testo normale per decrittografare i dati dell’utente A.
- Scartare immediatamente il testo in chiaro DK. Ecco come funziona la crittografia AWS S3 ed EBS dietro le quinte. Consente il controllo granulare degli accessi.
8. Conformità FIPS (GovCloud)
Se lavori con il governo o il settore sanitario, senti “FIPS 140-2”.
Questa è una certificazione per i moduli crittografici.
Significa “Il generatore di numeri casuali è veramente casuale”.
La crittografia predefinita di Node.js non è conforme a FIPS per impostazione predefinita.
È necessario compilare Node con --enable-fips.
Oppure utilizza AWS CloudHSM, certificato FIPS 140-2 Livello 3.
L’ignoranza qui non è una scusa per l’auditor.
9. Il punto di vista dello scettico
“Questo rovina le prestazioni.” Contropunto: Le istruzioni AES sono integrate nelle moderne CPU (AES-NI). Il sovraccarico è di microsecondi. La latenza del DB è di millisecondi. La crittografia è gratuita (in termini di prestazioni). Il costo è la complessità (gestione delle chiavi). La privacy del tuo utente vale la complessità? SÌ.
Domande frequenti
D: Simmetrico o asimmetrico? R: Simmetrico (AES): la stessa chiave crittografa e decrittografa. Veloce. Buono per i dati a riposo. Asimmetrico (RSA/ECC): la chiave pubblica crittografa, la chiave privata decrittografa. Lento. Ottimo per condividere segreti (handshake TLS). Utilizza AES per la crittografia DB.
D: E la ricerca?
R: Non è possibile cercare facilmente i dati crittografati (WHERE nome = 'Alice' fallisce perché ‘Alice’ è memorizzato come x8s7...).
Soluzione: Indicizzazione cieca.
Memorizza una versione con hash del nome (hash('Alice')) in una colonna separata. Cercalo.
10. Resistenza quantistica: la minaccia futura
RSA-2048 è sicuro oggi. Tra 10 anni, un computer quantistico potrebbe risolverlo in pochi secondi (algoritmo di Shor). Questo è “Memorizza ora, decrittografa più tardi”. Gli aggressori raccolgono dati crittografati oggi, aspettando che la tecnologia li decifra domani. Difesa: Crittografia post-quantistica (PQC). Il NIST sta standardizzando algoritmi come Kyber e Dilithium. Maison Code sta già sperimentando le librerie PQC per proteggere gli archivi sensibili a lungo termine (ad esempio, cartelle cliniche) a prova di futuro.
11. Crittografia omomorfa (Il sogno)
Immagina di chiedere al cloud: “Qual è lo stipendio medio?” E il cloud lo calcola senza mai decifrare gli stipendi. Questa è la crittografia omomorfa. Permette il calcolo su testo cifrato. “Inc(5) + Inc(10) = Inc(15)”. Attualmente è troppo lento per la produzione (overhead 1000x), ma è all’avanguardia nella tecnologia della privacy. Monitoriamo attentamente questo spazio.
12. Conclusione
La crittografia è l’applicazione matematica della privacy. Senza di essa, la privacy è solo una promessa. Le promesse sono infrante. La matematica no.
Dati esposti?
Se stai memorizzando informazioni personali in testo semplice, non sei conforme. Maison Code implementa strategie AES-256 e architetture di gestione delle chiavi per proteggere la tua cassaforte digitale.
Dati sensibili in testo normale?
Implementiamo strategie di crittografia end-to-end e gestione delle chiavi (KMS) per proteggere le PII e la proprietà intellettuale. Assumi i nostri architetti.