Hai ragione, e questo è un grosso fastidio. Infatti, tutto questo business delle password di hashing e la scelta di quelle che sono difficili da decifrare tramite hashing è una finzione completamente inutile e costituisce ciò che Schneier chiama "teatro della sicurezza".
L'hashing della password è irrilevante, tranne in situazioni specifiche: protocolli di autenticazione che comunicano gli hash in chiaro (che non dovrebbe essere eseguito) e database delle password che memorizzano gli hash in un modo leggibile in tutto il mondo, come il classico /etc/passwd
(che non è più fatto).
In passato, se si era su un sistema pubblico Unix con migliaia di utenti, come una macchina o una fattoria di macchine, fornendo account e-mail per studenti universitari, le password scadenti venivano letteralmente spezzate a destra ea sinistra. Il file di password di un tale sistema era un grande magnete per il cracking, con grandi profitti. Certamente, un tale file di password è completamente stupido. Ogni discreta distribuzione Linux al giorno d'oggi mette gli hash delle password in /etc/shadow
.
Quindi, il punto è che se un utente malintenzionato ha accesso agli hash, il sistema in questione è mal progettato (protocolli di autenticazione di rete quasi-plaintext, database di password leggibili pubblicamente) o è stato compromesso al punto che la conoscenza della tua password in chiaro non è più rilevante, dal momento che l'utente malintenzionato aveva bisogno dei privilegi di amministratore per ottenere l'hash.
Ancora, gli hash forniscono un piccolo livello di sicurezza aggiuntiva. E quel livello protegge coloro che riutilizzano le password tra siti . Se un sito è "pwnato", in modo che gli hacker posseggano la tua password hash, sei nei guai se usi la stessa password altrove e quella password è facile da decifrare.
Ironicamente, le persone hanno maggiori probabilità di riutilizzare password molto difficili su più siti, perché sono difficili da ricordare. In secondo luogo, è probabile che riutilizzino quasi la stessa password difficile introducendo piccole variazioni su di esso. Ad esempio, se la password originale è considerata abbastanza strong da essere accettata da un sistema, la useranno solo su un altro sistema, ma cambieranno una 1
in una 2
, o 3
e così via. Se gli hacker violano la password con 1
, possono facilmente indovinare gli altri.
È molto più facile generare e memorizzare password relativamente semplici, in modo tale che non siano completamente correlate l'una con l'altra.
Ecco un'altra cosa che la gente trascura: gli amministratori del sito non sono i tuoi amici fidati. Devi sospettare non solo gli aggressori esterni, ma anche gli addetti ai lavori. Su qualsiasi sito in cui si dispone di un account protetto da password, potrebbe esserci un amministratore malvagio che raccoglie password in testo semplice. Non sai nemmeno se le password sono o meno sottoposte a hash. Supponiamo che non siano hash e presumiamo che tra gli amministratori di ogni sito vi sia una persona malintenzionata che raccoglie le password. Anche se si sa che il software del sito utilizza un database delle password hash, non si può presumere che il codice non abbia stato modificato. L'interfaccia utente JavaScript (o qualsiasi altra cosa) gestisce le password in chiaro.
Oh, e se non vedi "HTTPS" nella barra del browser, tutte le scommesse sono disattivate! La tua password a 32 caratteri generata a caso viene raccolta da qualcuno, in chiaro.
Una password deve essere solo abbastanza difficile da non poter essere indovinata in numerosi tentativi naïf (tentativo di immissione tramite il normale meccanismo di autenticazione). Qualsiasi sito decentemente implementato implementa l'importante misura di sicurezza del blocco di un account che è stato indovinato troppe volte, in modo che l'utente legittimo debba adottare ulteriori passaggi per sbloccarlo.
Se la tua password non può essere indovinata in una mezza dozzina di tentativi e sei in grado di generare e ricordare password completamente diverse di questo tipo per ogni sito, sei sostanzialmente d'accordo.
L'interfaccia utente per la creazione di password che obbliga gli utenti a inventare password complesse è fastidiosa, controproducente e non fondata su principi di sicurezza razionalmente concepiti o sulla corretta identificazione di possibili minacce.