Velocità di hashing con password casuali vere

2

Solo una domanda teorica:

Se avessi utenti ideali, che forniscono tutti password a 128 bit completamente casuali, Inoltre, invalido ogni password più breve di 128 bit.

Allora avrei ancora bisogno di una funzione hash slow per memorizzare queste password?

    
posta jrnv 04.05.2014 - 22:15
fonte

3 risposte

7

Se si potesse fare affidamento sugli utenti per fornire password veramente casuali, non sarebbe necessario utilizzare una lenta funzione hash. Ma puoi mai fare affidamento sugli utenti per questo.

    
risposta data 04.05.2014 - 22:23
fonte
4

Se gli utenti hanno fornito password casuali con l'equivalente di oltre 128 bit di entropia che non vengono mai utilizzati altrove, non c'è bisogno di una funzione hash lenta come bcrypt, scrypt, sha256crypt, sha512crypt o PBKDF. Allo stesso modo, non ci sarebbe bisogno di un sale sull'hash.

Perché? La forzatura bruta è semplicemente irrealizzabile quando il tempo previsto è O (2 128 ); ad es., anche con miliardi di computer che eseguono miliardi di hash per millisecondo, non sarai in grado di forzare un hash entropico a 128 bit in milioni di anni (precisamente avresti circa 1 su 10000 possibilità di romperlo). Certo, non esiste un metodo affidabile per testare la forza delle password create dall'utente, poiché l'entropia dipende molto dal modello. Ad esempio, una password come: Qwertyuiopasdfghjklzxcvbnm apparirà come 132 bit nonostante sia l'ordine dei tasti della tastiera e sia piuttosto bassa entropia. O se la mia password per security.stackexchange.com era https://security.stackexchange.com quella calcolatrice dice 147 bit di entropia (quando è estremamente debole). D'altra parte, conoscendo il metodo di generazione della password è possibile calcolare in modo affidabile l'entropia delle password; quindi, se imponi a tutti gli utenti di imparare una password casuale a 128 bit che hai generato, puoi assicurarti che le password siano abbastanza forti.

Ci sarebbe comunque bisogno di una funzione di hash anche se non dovresti mai memorizzare le password in testo semplice. Un utente malintenzionato non dovrebbe essere in grado di trovare un elenco di password in chiaro nel database da altri compromessi (ad es. Trovare un vecchio backup, SQL injection, perdita di memoria, ecc.). Un semplice hash (ad esempio, SHA-2) potrebbe funzionare per impedirlo.

    
risposta data 04.05.2014 - 22:27
fonte
0

Hai altri due aspetti da tenere in considerazione 1- L'input dell'utente è "casuale"?

Al momento, la forza bruta di 128 bit non è fattibile. Perché usare una funzione di hash del tutto se i bit sono casuali? 128 bit casuali saranno più forti dell'output con hash dello stesso. Due password diverse possono produrre una collisione in una funzione hash, maggiore è lo spazio per l'hash, maggiore è la probabilità che si verifichino collisioni, mentre una password casuale non avrebbe questo problema.

2- Come qualcuno ricorderà 128 bit casuali? Qualcuno dovrebbe cambiare la propria password 128 bit casuale dopo averla memorizzata?

Sembra una soluzione rompicoglioni.

    
risposta data 05.05.2014 - 19:54
fonte

Leggi altre domande sui tag