LEZIONE 13 · GESTIRE IL SEGRETO
L’algoritmo può reggere. La chiave deve reggere con lui.
La sicurezza concreta dipende dal miglior attacco disponibile contro l’intero sistema. Indovinare una chiave è una possibilità; rubarla da un log, da un dispositivo o da una persona può essere molto più semplice.
- Chi?
- Sviluppatori, amministratori e titolari delle chiavi, ciascuno con responsabilità definite.
- Che cosa?
- Generazione, custodia, uso, rinnovo, recupero e distruzione del materiale segreto.
- Quando?
- Per tutto il ciclo di vita del servizio, inclusi guasti e incidenti.
- Dove?
- Dispositivi, memoria, servizi di gestione dei segreti e copie di sicurezza.
- Perché?
- Una chiave persa può rendere i dati irrecuperabili; una chiave rubata può annullare la protezione.
Casualità e costo di un attacco
- Entropia
- Una misura dell’incertezza di una scelta, legata alla sua distribuzione. Una chiave uniforme di n bit ha n bit di entropia; una parola prevedibile scritta in un campo lungo 256 bit non ha automaticamente 256 bit di entropia.
- CSPRNG
- Generatore pseudocasuale crittograficamente sicuro: usa stato segreto e fonti di entropia per produrre valori che devono essere imprevedibili all’avversario. Le API crittografiche del sistema sono diverse da funzioni per simulazioni come Math.random().
- Bit di sicurezza
- Una stima del lavoro necessario al miglior attacco pertinente, espressa rispetto a una ricerca di circa 2 elevato a quel numero di operazioni. Non coincide sempre con la lunghezza scritta nella chiave.
- Compromissione
- Perdita di una proprietà di sicurezza: per una chiave può essere l’esposizione, l’uso non autorizzato o la perdita di controllo.
- Canale laterale
- Informazione ricavata da effetti dell’implementazione, come tempi, consumi o accessi alla memoria, invece che dalla sola relazione matematica tra chiaro e cifrato.
Un calcolo, con tutte le ipotesi
Per una chiave simmetrica uniforme di n bit esistono 2n valori. Se l’unico attacco è la ricerca esaustiva, senza ripetizioni, e la chiave è verificabile, servono in media circa 2n−1 tentativi. Con velocità r tentativi al secondo, il tempo medio è T ≈ 2^(n−1) / r.
Per n = 56 e r = 109 si ottengono circa 36 milioni di secondi, cioè 417 giorni. Con r = 1012 si scende a circa 10 ore. Sono scenari aritmetici, non misurazioni di un hardware reale. Il costo di verificare un tentativo dipende dal sistema. Per RSA non si può applicare questa formula ai bit del modulo ignorando gli attacchi di fattorizzazione.
Il ciclo di vita di una chiave
- Generazione: usa un’API crittografica e parametri ammessi. Se la chiave deriva da una password, serve una KDF adatta, non una conversione testuale improvvisata.
- Custodia: limita chi può leggere o usare il segreto. Un KMS è un servizio di gestione delle chiavi; un HSM è un componente hardware progettato per custodirle ed eseguire operazioni protette. Non sostituiscono permessi e configurazioni corretti.
- Separazione: evita di usare la stessa chiave per firma, cifratura, ambienti di prova e produzione. Non inserire chiavi in repository, log, URL o schermate.
- Uso e inventario: registra identificativo, scopo e dipendenze senza registrare il valore segreto. Un identificativo permette di scegliere la chiave corretta, non deve consentire di ricostruirla.
- Rotazione: introduci una nuova chiave e gestisci il periodo di transizione. I vecchi dati non vengono ricifrati automaticamente cambiando una configurazione.
- Recupero e dismissione: prevedi ripristini controllati delle chiavi di cifratura e cancellazione coerente con gli obblighi e le esigenze. Conservare copie non protette vanifica la custodia.
Questi compiti sono trattati in OWASP Key Management; la politica concreta dipende dal valore dei dati e dal modello di minaccia.
Non tutti gli attacchi cercano una chiave
| Attacco | Che cosa sfrutta | Conseguenza progettuale |
|---|---|---|
| Replay | Un vecchio messaggio ancora valido. | Controlla stato, scadenze e identificativi, non solo il tag. |
| Phishing | Inganno che induce a consegnare credenziali o approvare operazioni. | Usa autenticazione resistente all’imitazione del sito e verifica il contesto. |
| Malware sul dispositivo | Un programma ostile legge dati già decifrati o usa le chiavi disponibili. | Proteggi dispositivi e aggiornamenti: il canale cifrato termina comunque da qualche parte. |
| Downgrade | Forza l’uso di versioni o opzioni più deboli. | Configura versioni ammesse e verifica la negoziazione. |
| Oracle | Una risposta o differenza temporale rivela informazioni su un segreto. | Usa librerie e protocolli che gestiscono correttamente verifiche ed errori. |
Due password non sono due fattori
L’autenticazione a più fattori combina categorie diverse: qualcosa che conosci, possiedi o sei. Due segreti memorizzati restano nella stessa categoria. Le passkey usano credenziali a chiave pubblica legate al servizio e possono essere sbloccate localmente: sono un esempio di come la crittografia supporta l’autenticazione senza inviare una password al sito.
Rubano una chiave dal repository. Basta cancellare il file nell’ultimo commit?
No. Il valore può restare nella cronologia e nelle copie. Bisogna considerarlo compromesso, sostituirlo o revocarlo, valutare dove è stato usato e correggere la causa dell’esposizione. La pulizia del repository non rende nuovamente segreto un valore già divulgato.
Approfondimento dei limiti e dei tempi di attacco del video 15. Riferimenti sulla gestione; entropia nel glossario.