Gran parte del lavoro su password e chiavi è legato al controllo di dove sono memorizzati e copiati.
-
Una password è memorizzata nella mente di un utente umano. Viene immesso su una tastiera (o equivalente) e passa attraverso i registri di una CPU e la RAM del computer, mentre viene elaborato. A meno che non si esegua qualche errore terribile, la password non raggiunge mai un'area di memorizzazione permanente come un disco rigido.
-
Un algoritmo esiste come codice sorgente da qualche parte, sulla macchina di uno sviluppatore, un sistema di controllo delle versioni di origine e backup. Ci sono documenti di design, che sono stati mostrati a varie persone (ad esempio, coloro che decidono se finanziare lo sviluppo del sistema o meno), e spesso depositati in modo negligente su uno scaffale anonimo in qualche strato di crosta sul desktop tipico. Ancora più importante, l'algoritmo esiste anche come un file eseguibile sul sistema stesso; il binario non è leggibile come il codice sorgente, ma il reverse engineering funziona tuttavia.
Quindi non possiamo ragionevolmente ritenere che l'algoritmo sia segreto, o almeno così segreto come la password (o la chiave).
In realtà, i metodi di crittografia sono stati divisi un secolo fa nell'algoritmo e il chiave proprio per questo: in un sistema funzionante, parte del metodo perde necessariamente tracce ovunque. Avere una chiave significa concentrare la segretezza nell'altra metà, la parte che possiamo mantenere segreta.
"Sicurezza attraverso l'oscurità" è un'espressione che usa il termine oscurità , non segretezza . La crittografia riguarda il raggiungimento della sicurezza attraverso la segretezza . Questa è l'unica differenza: una password può essere secret ; un algoritmo è, nella migliore delle ipotesi, oscuro . L'oscurità viene dissipata non appena un ragazzo intelligente pensa a portare una lanterna metaforica. La segretezza è più simile a una cassastrong in acciaio: per romperla, hai bisogno di strumenti più potenti.
Il ragazzo intelligente Auguste Kerckhoffs l'ha già scritto più di un secolo fa. Nonostante l'invenzione del computer e tutta la tecnologia di oggi, i suoi risultati si applicano ancora. C'è voluto del tempo perché i praticanti di crittografia imparassero quella lezione; 60 anni dopo, i tedeschi stavano ancora facendo un sacco di cose nel "segreto" del design della macchina Enigma . Si noti che quando i tedeschi misero in uso il 4-rotore Navy Enigma, i crittografi alleati furono disturbati (i crack di routine si fermarono per alcuni mesi) ma non furono del tutto confusi perché alcuni documenti catturati dell'anno precedente alludevano allo sviluppo della nuova versione, con un quarto rotore "riflettore". Ecco qua: algoritmo segretezza non potrebbe essere raggiunto nella pratica.
Un'ulteriore svolta è che l'oscurità dell'algoritmo può danneggiare la sicurezza . Quello che spiego sopra è che l'oscurità non può essere considerata attendibile per la sicurezza: potrebbe potrebbe aumentare la sicurezza, ma non di molto (e non si può davvero sapere "quanto"). Si scopre che può anche diminuire sicurezza. Il problema è il seguente: è molto difficile creare un algoritmo crittografico sicuro. L'unico metodo noto è quello di pubblicare l'algoritmo e attendere la saggezza collettiva dei crittografi di tutto il mondo per rodersi e raggiungere una conclusione che può essere espressa come "può essere rotta in quel modo" o "apparentemente robusta". Un algoritmo è dichiarato "buono" solo se ha resistito all'assalto di dozzine o centinaia di crittografi competenti per almeno tre o quattro anni.
Internet, procrastinazione accademica e hubris umana sono tali che, con la giusta campagna di comunicazione, è possibile ottenere queste poche centinaia di crittografi per fare quel duro lavoro di valutazione gratuito - fornito che tu fai algoritmo pubblico (e "attraente" in qualche modo). Se si desidera mantenere l'algoritmo oscuro, non è possibile beneficiare di tale consulenza gratuita. Invece, devi pagare. Venti buoni crittografi per, diciamo, due anni di sforzi: stiamo parlando di milioni di dollari, qui. Nessuno lo fa, è troppo costoso. Corrispondentemente, gli algoritmi oscuri sono invariabilmente molto meno stressati rispetto agli algoritmi pubblici, e quindi meno sicuri .
(Si noti la stampa fine: la sicurezza non riguarda solo il non essere infranto, ma anche il fatto di avere una conoscenza a priori che le violazioni non si verificano.Voglio poter dormire la notte. )
Riepilogo:
- Tu non dovresti mantenere segreto il tuo algoritmo.
- Tu non sai quanto il tuo algoritmo è segreto.
- non puoi mantenere segreto il tuo algoritmo.
- Ma puoi e devi mantenere segreta la tua password, e puoi sapere "quanto" è segreto (è tutto il business "entropia").