Quanto ci vorrà per decifrare le password rubate nell'hack di Yahoo annunciato il 14 dic 2016?

78

Sembra che Yahoo sia stato nuovamente compromesso con un massimo di un miliardo di account utente essere compromesso. L'articolo dice che Yahoo usa MD5 per l'hashing delle password.

Gli hacker sono probabilmente in grado di decifrare anche le password? Quanto ci vorrà per craccare 1 password? È il momento di rompere 1 miliardo, solo 1B * t?

    
posta soadyp 15.12.2016 - 08:09
fonte

4 risposte

69

Sì, probabilmente erano in grado di decifrare molte password in breve tempo.

Dalla dichiarazione ufficiale di Yahoo :

For potentially affected accounts, the stolen user account information may have included names, email addresses, telephone numbers, dates of birth, hashed passwords (using MD5) and, in some cases, encrypted or unencrypted security questions and answers.

MD5 è un discutibile choice per hashing della password perché la sua velocità fa crollare le password con hash MD5 veramente veloce . Inoltre, probabilmente non sono salati, dal momento che Yahoo ci avrebbe certamente fatto sapere. (Un sale avrebbe aiutato a prevenire l'uso di tavoli arcobaleno mentre si rompevano.)

Puoi vedere gli svantaggi del semplice hashing MD5 quando lo paragoni con la violazione di Ashley Madison nel 2015 che ha fatto trapelare 36 milioni di account. In tal caso, hanno utilizzato bcrypt con l'espansione della chiave 2 12 round contro il semplice MD5 di Yahoo che è il motivo per cui allora i ricercatori potrebbero decifrare solo 4.000 password in un primo tentativo.

Dall'articolo:

In Pierce's case, bcrypt limited the speed of his four-GPU cracking rig to a paltry 156 guesses per second. [...] Unlike the extremely slow and computationally demanding bcrypt, MD5, SHA1, and a raft of other hashing algorithms were designed to place a minimum of strain on light-weight hardware. That's good for manufacturers of routers, say, and it's even better for crackers. Had Ashley Madison used MD5, for instance, Pierce's server could have completed 11 million1 guesses per second, a speed that would have allowed him to test all 36 million password hashes in 3.7 years if they were salted and just three seconds if they were unsalted (many sites still do not salt hashes).

Quindi, scomporre una gran parte delle password di Yahoo è questione di secondi (mentre alcune password più potenti rimarranno ininterrotte). Una risposta esatta dipenderà dalla potenza di calcolo disponibile e dalla consapevolezza della sicurezza della password dei clienti Yahoo.

1 Come notato da @grc, 11 milioni di hash al secondo appaiono piuttosto lenti. @ 8x Nvidia GTX 1080 Hashcat benchmark (200,3 GH / s per MD5 totale) è una buona risorsa per maggiori informazioni misurazioni aggiornate.

    
risposta data 15.12.2016 - 08:15
fonte
22

(Il riepilogo è nell'ultimo paragrafo.)

How long will it take to crack 1 password? Is the time to crack 1 billion, just 1e9 * t?

Immagina di avere questo algoritmo di hashing:

function hash(password):
    hash = 0
    foreach character in password:
        hash = hash + toNumber(character)
    return hash

Se chiami hash("ab") potrebbe restituire 3, poiché il valore numerico del primo carattere potrebbe essere 1 e il secondo potrebbe essere 2, e li aggiunge, risultando in 3.

Ora, se disponi di un database pieno di numeri, come 583, 140, 8582, ecc., quanto tempo impiegherebbe a craccare?

In questo esempio, hash("ab") risulterebbe in 3 e hash("ba") , che è chiamata collisione (due input che associano allo stesso output). In MD5 questo non accade così facilmente. L'ordine conta e non è possibile ricavare alcuna informazione sull'input dato l'output. Neanche la lunghezza.

Quindi devi ricorrere a provare tutte le possibilità finché non ne trovi una che ti dia l'output giusto. Se qualcuno ha una password strong e casuale di 20 caratteri, potrebbero volerci secoli. Ma la maggior parte delle persone usa password come "horselover49", "letmein" o "penis" (anche se quest'ultimo potrebbe essere troppo corto), che sono molto più facili da decifrare.

Il motivo per cui tutti si lamentano dell'utilizzo di md5 è perché è veloce. Ma gli algoritmi di hashing sono fatti per essere veloci . MD5 potrebbe essere danneggiato per altri scopi, ma non per l'hashing della password. Non dovresti usare un singolo passaggio di qualsiasi algoritmo di hashing, sia esso md5 o sha1 o sha512.

Migliori algoritmi, come bcrypt / scrypt / pbkdf2 / etc. usa un algoritmo di hashing un milione di volte (tra le altre cose). Ora invece di essere in grado di eseguire l'algoritmo una volta per ogni ipotesi, è necessario eseguirlo un milione di volte per ogni ipotesi. Ciò richiede molto più tempo, permettendoti di provare meno password, che protegge meglio le password deboli.

Quindi sì, lo stesso succederà come con altre violazioni che hanno usato MD5: molte password saranno incrinate. Ma non faranno tutti crackizzati e sicuramente non in tempo lineare. I più forti impiegheranno in modo esponenziale più tempo.

    
risposta data 15.12.2016 - 09:03
fonte
5

Ricordare che il tempo necessario per iniziare a recuperare le password utilizzabili dal sistema è molto meno del tempo necessario per trovare la password di un particolare utente. Scegli una password, cancellala, trova tutti gli utenti la cui password ha hash su quel valore (estremamente veloce se hai precedentemente memorizzato gli utenti in un hash con l'hash della password), ripeti. In questo grande mucchio di utenti, è probabile che quasi tutte le password utilizzino qualcuno, e le password comuni / non corrette avranno molte persone che le usano.

    
risposta data 17.12.2016 - 02:01
fonte
3

Non sappiamo senza ulteriori informazioni.

In primo luogo, è stato detto che "hanno usato MD5". Prendere una password e eseguirne l'hashing con MD5 è molto, molto veloce. Come è stato detto, ci sono macchine che possono fare 28 miliardi di tentativi di password e calcolare codici hash MD5 al secondo. Sarebbe male. Tuttavia, potrebbero aver utilizzato cicli multipli di hashing con MD5. Potrebbero avere hash la password, quindi hash il risultato di ulteriori milioni di volte. Ora il numero di password che possono essere indovinate e l'hash calcolato è "solo" 28.000 al secondo.

In secondo luogo, dobbiamo sapere se le password sono state "salate". La password "salata" significa che per ogni utente viene aggiunta una "salata" diversa alla password. Ad esempio, se ho stupidamente usato la password 1234 e hai usato stupidamente la stessa password, allora le nostre "vere" password potrebbero essere k39fja0eflaei-1234 e oe0vnda9afnlad-1234. Quindi, anche se la mia password è incrinata, questo non aiuta a violare la password. Ogni password deve essere risolta individualmente.

Con le password non salate, ognuna delle 28.000 ipotesi di password avrà successo se qualsiasi del miliardo di utenti ha usato quella password. Quindi con qualche miliardo di ipotesi, tutte le password più semplici saranno incrinate. Con le password salate, ci vogliono alcuni miliardi di tentativi per ottenere solo poche password facili. Ma se usassero MD5 semplice, allora 28 miliardi di tentativi di password al secondo si incrinerebbero le cose abbastanza velocemente, anche con la salatura.

    
risposta data 18.12.2016 - 18:56
fonte

Leggi altre domande sui tag