Gli hash delle password dovrebbero eseguire md5 migliaia di volte: davvero?

7

Ho sfogliato Come le aziende possono aumentare la sicurezza delle password e ho pensato che diverse affermazioni fossero completamente sbagliate, in particolare:

  1. L'hash crittografico (come md5) con salt è cattivo.
  2. Non è raro rompere / crackare i file shadow di unix.
  3. Per creare un hash della password, dovrei eseguirlo su MD5 o qualsiasi altra centinaia o migliaia di volte.

L'articolo suggerisce che gli hash salati sono troppo facili da interrompere e vorresti selezionare un hash per la password perché è più lungo da calcolare per controllare le password, quindi non puoi farlo al secondo.

Penso che fare 3 faccia male alla sicurezza e 1 sia in realtà l'opzione migliore. Cosa ne pensate?

    
posta Hendrik Brummermann 17.06.2012 - 02:38
fonte

4 risposte

14

Cryptographic hash (like md5) with salt are bad.

Non è più sufficiente. Le funzioni di hash crittografiche tradizionali sono progettate per i documenti e pertanto sono ottimizzate per la velocità.

Ma la velocità è esattamente ciò che non vogliamo per gli hash delle password. Le moderne schede grafiche possono eseguire 2.000.000.000 di hash SHA1 o MD5 al secondo. Quindi, forzare brutalmente una password di 6 caratteri richiede meno di 10 minuti.

It isn't uncommon to break/crack unix shadow files.

Questo è vero per i vecchi hash utilizzati in essi.

To make a password hash I should run it over md5 or whatever hundreds or thousands of times.

Anche se questo è un miglioramento rispetto all'uso di una funzione di hashing veloce, non è sufficiente.

Dovresti utilizzare uno degli algoritmi hash crypt (ad eccezione di md5crypt ): sha256crypt , sha512crypt , bcrypt o /scrypt.pdf">scrypt. Quelli sono algoritmi progettati per essere relativamente lenti e non facilmente implementabili su schede grafiche per ottenere un incremento delle prestazioni.

Questi algoritmi non si limitano a utilizzare l'output di un round come input per il round successivo. Le regole di cosa usare come input variano in base al contatore di iterazione (vedi le specifiche collegate). Il moderno sistema operativo unix usa sha512crypt.

scrypt fa un passo in più rispetto agli altri algoritmi perché, oltre all'utilizzo scalabile della CPU, lo scrypt utilizza molta memoria. L'idea è di rendere le implementazioni hardware dei password cracker molto più costose. Tale hardware solitamente ha accesso a 1 KB di memoria veloce, ma i parametri predefiniti di scrypt richiedono 16 MB.

    
risposta data 17.06.2012 - 19:42
fonte
5

Cryptographic hash (like md5) with salt are bad.

Non ho letto l'articolo, ma questo potrebbe essere letto in due modi:

  1. MD5, anche se salato è cattivo.
  2. Gli hash salati sono pessimi.

In risposta al primo, sì, questo è vero. MD5 è stato dimostrato insicuro, ed è troppo veloce per essere comunque una funzione di hashing sicura. Non utilizzare MD5.

Per quanto riguarda il secondo, è completamente sbagliato. Salate sempre i vostri hash. Questo aiuta a prevenire gli attacchi della tabella arcobaleno .

It isn't uncommon to break/crack unix shadow files.

Questo è vero, molte persone scelgono password insicure che sono abbastanza facili da violare. Fine della storia. Il classico strumento di sicurezza per farlo è John the Ripper . Persino i file shadow che usano gli hash moderni spesso usano algoritmi troppo veloci per fornire davvero molta protezione (vedi sotto).

To make a password hash I should run it over md5 or whatever hundreds or thousands of times.

Questo era vero La ragione per fare questo è di rendere molto più lento il tentativo di password (dato che devi eseguire molto spesso l'algoritmo di hashing). Anche con un moderno hash come SHA2, è ancora spesso così veloce che forzare brutalmente una password scelta male può richiedere una questione di giorni o addirittura di ore.

Gli algoritmi di digest moderni tengono conto di ciò e sono progettati per essere computazionalmente o intensivi della memoria. Esempi comuni includono bcrypt che include un sale ed è progettato per essere costoso dal punto di vista computazionale. Un nuovo algoritmo, scrypt, ha ricevuto recentemente un po 'di attenzione anche per l'utilizzo intensivo della memoria (rendendo il cracking della GPU molto più difficile).

    
risposta data 18.06.2012 - 01:20
fonte
4

Perché pensi che 3 faccia male alla sicurezza? In realtà quello che dovresti fare è usare qualcosa come bcrypt per cancellare le tue password per evitare tutto questo casino.

Bcrypt combina quelle proprietà. Si blocca la password usando un salt molte volte per creare una funzione hash lenta e sicura che produce hash crittograficamente sicuri.

    
risposta data 17.06.2012 - 03:45
fonte
3

1 è un must. I sali sono molto importanti per garantire che le password non possano essere facilmente screpolate solo confrontandole con un tavolo arcobaleno.

Perché consideri 3 cattivi? È una tecnica nota come stretching chiave . E aumenta considerevolmente il tempo e la potenza di calcolo necessari per decifrare le password.

Per quanto riguarda 2, direi che non è raro rompere le password comuni / errate memorizzate nel file shadow. Buone password (altamente casuali, alfanumeriche, ecc.) Dovrebbero comunque essere relativamente sicure.

    
risposta data 17.06.2012 - 05:06
fonte

Leggi altre domande sui tag