Quanto velocemente possono essere battuti questi schemi di password?

21

Se utilizzi un algoritmo di hashing rapido come MD5 o SHA-1 per le password hash e non usi affatto sale, con quale rapidità potresti aspettarti che un hacker trovi la mia password?

Se utilizzo un sale veramente casuale per ciascun utente, quale ordine di grandezza influirà sul tempo necessario a decifrare la mia password?

Ho sentito che algoritmi di hashing come md5 o sha-1 possono essere calcolati molto rapidamente e su larga scala, quindi non dovresti usarli per schemi di password oggi. Ma so che ci sono molti sistemi là fuori che li usano, e sono curioso di capire quanto velocemente questi sistemi possano essere battuti, o se sia più un problema teorico che non esisterà veramente fino ad un decennio da oggi . So che la password scelta dall'utente conta molto qui, e se puoi farlo nella tua risposta, sarebbe fantastico.

Come bonus, quali algoritmi di hashing sono più sicuri da usare?

    
posta Michael Berkhart 02.11.2011 - 19:27
fonte

4 risposte

29

Supponi di non avere una tabella arcobaleno (o un altro elenco precompilato di hash), e avrebbe effettivamente bisogno di fare un attacco di forza bruta o dizionario.

Questo programma IGHASHGPU v0.90 afferma di essere in grado di fare circa 1300 milioni di hash SHA-1 ( cioè più di 2 ^ 30) in ogni secondo su una singola GPU ATI HD5870.

Assumi una password di 40 bit di entropia, questo richiede 2 ^ 10 secondi, ovvero circa 17 minuti.

Una password di 44 bit di entropia ( mi piace quello del famoso fumetto XKCD ) impiega 68 minuti (il caso peggiore, la media è metà).

L'esecuzione su più GPU in parallelo accelera proporzionalmente.

Quindi, forzare il bruto con gli hash veloci è un pericolo reale, non teorico. E molte password hanno un'entropia molto più bassa, rendendo la forza bruta ancora più veloce.

If I use a truly random salt for each user, on what order of magnitude will this affect the length of time to crack my password?

Si presume che lo stesso sale sia noto all'attaccante e di per sé non aumenta di molto il tempo di cracking per una singola password (potrebbe aumentarlo un po ', perché i dati con hash diventano un blocco più lungo, ma al massimo raddoppia il lavoro).

Il vero vantaggio di un salt (indipendente casuale) è che un utente malintenzionato non può utilizzare la stessa opera per attaccare le password di più utenti contemporaneamente. Quando l'utente malintenzionato vuole solo la password di qualsiasi utente (o "il maggior numero possibile") e tu hai alcuni milioni di utenti, non avere un salato potrebbe ridurre il tempo di attacco in proporzione, anche se tutti gli utenti avrebbero password sicure. E certamente non tutti avranno.

As a bonus, which hashing algorithms are safest to use?

Lo standard corrente è quello di utilizzare un algoritmo di hashing slow . PBKDF2, bcrypt o scrypt prendono sia una password e un sale come input e un fattore di lavoro configurabile - imposta questo fattore di lavoro così alto come gli utenti accettano solo il tempo di accesso con l'hardware del tuo server.

  • PBKDF2 è semplicemente un hash veloce iterato (cioè ancora efficientemente parallelizzabile). (Si tratta di uno schema che può essere utilizzato con diversi algoritmi di base. Utilizza qualsiasi algoritmo tu utilizzi comunque nel tuo sistema.)
  • Bcrypt ha bisogno di una memoria di lavoro (4KB) e quindi è implementabile in modo meno efficiente su una GPU con meno di 4KB di processore per processore cache.
  • Scrypt utilizza una quantità di memoria (configurabile) in aggiunta al tempo di elaborazione, il che rende estremamente costoso parallelizzare su GPU o su misura hardware, mentre i computer "normali" di solito hanno abbastanza RAM disponibile.

Tutte queste funzioni hanno un input salt e dovresti usarlo .

    
risposta data 02.11.2011 - 20:03
fonte
7

Se non usi i sali, l'hacker può semplicemente inserirli in Google e probabilmente trovarli. MD5 crittografa la tua password, poi Google il risultato e vedrai cosa intendo.

Se hai scelto una password sufficientemente complessa, probabilmente non sarà su Google, ma sarà ancora in tabelle pre-calcolate chiamate "tavole arcobaleno" (le tabelle complete richiederebbero troppo spazio, quindi la tecnica "arcobaleno" è usata per comprimerle).

Se non vengono utilizzate tabelle, non importa se la password è salata o meno. Naturalmente, le tabelle vengono sempre utilizzate, quindi sì, dovresti eliminare le password.

Una macchina desktop, con una scheda di gioco (che può essere utilizzata anche per accelerare il crack delle password) e calcolare un miliardo di hash al secondo. Quanto velocemente questo cracks dipende dalla tua password. Può calcolare tutte le combinazioni per le password brevi entro pochi minuti. Ma il problema è esponenziale, in modo che non possa calcolare tutte le combinazioni possibili per le password lunghe, anche se hai usato un miliardo di computer su un miliardo di anni.

Invece, quello che fa l'hacker è un crack "dizionario mutato". Iniziano con un elenco di parole ben note. Si chiama "dizionario", ma tali elenchi contengono molte parole che non si trovano in un dizionario reale, come "ncc1701", la designazione di Star Trek Enterprise. Per ogni parola, fa un certo numero di mutazioni, come la capitalizzazione di alcune lettere, la modifica di alcune lettere in numeri, come "p4ssw0rd", o caratteri aggiunti, come "password1234". Quanto velocemente funzioni dipende dall'abilità dell'hacker di scegliere solo il dizionario giusto e le giuste mutazioni. Questo può anche cambiare in base alla conoscenza di te da parte dell'hacker. Ad esempio, se sei ispanico, l'hacker aggiungerà parole e nomi spagnoli al dizionario.

Ci si può aspettare che se il database delle password viene rubato, l'hacker sarà in grado di crackare circa la metà delle password salate con un lavoro di un paio di giorni.

    
risposta data 02.11.2011 - 22:19
fonte
5

Bene, se usi semplicemente MD5 o SHA-1 senza sale, scarica semplicemente un tavolo arcobaleno e fallo crackare in pochissimo tempo.

Un soggetto sulle tavole dell'arcobaleno può essere trovato qui e in che modo sfruttano un po 'di efficienza migliore rispetto a solo un bruto che impone una password nel caso di un sale fisso.

quanto tempo ci vuole per effettivamente generare tabelle arcobaleno?

In cima ai primi due, che si applica a qualsiasi hash senza sale o con un sale fisso, MD5 ha molte vulnerabilità di sicurezza (riducendo il tempo necessario per craccare la password).

link

    
risposta data 02.11.2011 - 19:42
fonte
3

Questa diapositiva descrive quanto è necessario un investimento hardware per decifrare una password in 1 anno:

Confronta vari KDF tra cui MD5, PBKDF2, bcrypt, scrypt con un numero variabile di round.

    
risposta data 03.04.2013 - 17:13
fonte

Leggi altre domande sui tag