Quanto è sicuro l'algoritmo e il sistema PwdHash?

6

Uso il servizio PwdHash ( link ) e plug-in per quasi tutte le mie password. Credo che questo sia più sicuro perché:

  • Nessun servizio ottiene la stessa password di un altro, quindi se un account è compreso, gli altri non dovrebbero essere.
  • Le password con hash dovrebbero essere più sicure delle password uniche che posso realisticamente ricordare.

Tuttavia, sono preoccupato che potrei espormi al rischio di avere una password principale che, se compresa, può essere utilizzata per accedere a tutti i miei servizi tramite PwdHash.

Se un utente malintenzionato ha l'hash e sa che è stato generato con PwdHash e conosce il dominio per il quale è stato generato, in che modo sarebbe possibile per loro determinare la password originale?

    
posta Hugh Grigg 葛修远 27.02.2014 - 04:33
fonte

3 risposte

7

Avere password univoche immesse in ogni sito è più sicuro che fornire ad ogni sito la stessa password, esattamente per il motivo di compromesso indipendente che hai suggerito.

If an attacker has the hash, and knows that it was generated with PwdHash and knows the domain that it was generated for, how feasible would it be for them to determine the original password from that?

Bene, facciamo qualche indagine e qualche matematica! PwdHash sembra utilizzare efficacemente GoofyStuff (Base64 (HMAC-MD5 ())), quindi siamo alla solita velocità di gioco di indovinare MD5 (MD5 ()). Per oclHashcat , "PC5 (8x AMD R9 290Xstock core clock)" può rompere ~ 81 miliardi di MD5 al secondo, quindi ~ 40 miliardi di tentativi come PwdHash al secondo, che ci dà la più pratica 1E17 (un po 'più di 2 ^ 56) tentativi per 30 giorni.

Baso il precedente su questo frammento di codice da una rapida occhiata all'origine della pagina PwdHash:

    var hash = b64_hmac_md5(password, realm);

Questo è nell'intervallo di una ricerca esaustiva dello spazio delle chiavi da 62 ^ 9 a 62 ^ 10 in quei 30 giorni, dove 62 è lo spazio delle chiavi in maiuscolo, minuscolo e numerico (o maiuscolo, minuscolo e simboli sopra i numeri, a seconda dei casi) e 9 o 10 è la lunghezza.

Quindi, una maiuscola, una minuscola, una password numerica completamente codificata con HMAC-MD5 sarà trovata in meno di circa 30 giorni (a meno che tu e l'attaccante non usiate set di caratteri diversi (cioè Cryllic vs. inglese)). Avrai bisogno di qualcosa con uno spazio tastiera totale più grande di questo per la tua password principale, e questo è se si tratta di una password veramente casuale!

Non vuoi neppure pensare a quale attacco del dizionario basato su regole può arrivare a questa velocità, se la tua password non è, in effetti, completamente casuale. Il mio set di liste di parole più completo contiene oltre 40 GB di password uniche; se assumiamo una lunghezza media delle parole pari a 9 più un separatore LF, si tratta di 4E9 parole, il che significa che se un utente malintenzionato con quel PC impiegasse 30 giorni sulla password, sarebbe in grado di provare approssimativamente 2.5E7, ovvero 25 milioni di varianti diverse ( regole) per ogni password.

Si noti che questo elenco di parole è troppo lento e macchinoso da occuparsi di ... a meno che il bersaglio non possa essere attaccato a velocità folli, come un singolo HMAC-MD5 possibile.

Se usi PwdHash con una password principale, possiedi uno veramente buono - 15 caratteri o superiore, crittograficamente casuale, con un set di caratteri grandi (superiore, inferiore, numero, simboli sopra i numeri, simboli non sopra i numeri) .

Other considerations

Dovresti pensare a come cambierai la tua password principale dopo le perdite; forse sei in ritardo e stai cercando di fare in fretta e digiti la master password in un sito web direttamente anziché in PwdHash, solo per abitudine, privazione della caffeina, fretta e incuria. Ora devi cambiarlo!

Personalmente, mi piace l'archiviazione delle password offline come KeePass , ma preferirei usare anche OpenSSL di base rispetto a PwdHash - AS PATHETICALLY INSUFFICIENT AS IT IS Metterò HMAC-SHA-512 contro HMAC-MD5 in qualsiasi giorno della settimana.

 echo example.com2014 | openssl dgst -sha512 -hmac MyPassword -binary | openssl enc -base64

Come sempre, è meglio usare qualcosa di veramente casuale e archiviarlo, o, se insisti su una routine di generazione deterministica, qualcosa di veramente lento, specialmente perché questo è solo per te, quindi PBKDF2 / BCrypt / Scrypt con abbastanza iterazioni / fattore di lavoro che impiega anche solo un secondo o due o cinque sulla tua macchina andrebbe bene, e rallenterebbe l'aggressore fino alla scansione.

Plug vergognoso: sto lavorando alla raccolta di una varietà di esempi di codice PBKDF2 (e spero più tardi BCrypt e Scrypt) su my github anti-weakpasswords pagina , alcuni dei quali vengono compilati in modo da poterli eseguire alla riga di comando di Windows o Linux e utilizzarli esattamente come si utilizza PwdHash ora, ma con un numero di iterazioni più elevato di quello che qualsiasi sito Web potrebbe utilizzare, se sei disposto ad aspettare un paio di secondi. A partire da oggi, c'è solo una versione di Python che Mitsuhiko ha scritto e Warner ha corretto conteggi di iterazioni elevate, non ancora aggiornati con hash migliori, ma che miglioreranno.

    
risposta data 27.02.2014 - 05:37
fonte
3

C'è un nuovo documento di ricerca da dicembre 2016, di David Llewellyn-Jones e Graham Rymer dell'Università di Cambridge su questo argomento:

Citazione dal giornale:

Abstract [...] We demonstrate how the hashcat password recovery tool can be extended to allow passwords generated using PwdHash to be identified and recovered, revealing the user’s master password. A leak from a single website can therefore compromise a user’s account on other sites where PwdHash was used. [...].

Conclusion: The main takeaway we want to emphasise from this work is that PwdHash is only as secure as the master password it’s used with. [...] Moreover, our results suggest that the message hasn’t been absorbed by PwdHash users, many of whom are using weak master passwords. Although the generated site-specific passwords appear strong, they are in fact no stronger than the original master password.

(sottolinea il mio)

    
risposta data 20.03.2017 - 16:04
fonte
0

Questo dipende dalla forza della tua password. Utilizzando i dati Anti-password deboli sopra, una password di 15 caratteri casuali ha 62 ^ 15 = 768909704948766668552634368 password possibili. A 40 miliardi di tentativi al secondo, questo è 768909704948766668552634368/40000000000 = 19222742623719166 secondi = 609549169 anni = 6E8 anni. Questo è fondamentalmente infrangibile usando la forza bruta.

Inoltre, il numero di caratteri nella password è più importante della dimensione alfabetica della password, poiché la lunghezza della password è l'esponente nella formula e l'alfabeto (72) è la base. Quindi, usare solo caratteri maiuscoli / minuscoli (52 caratteri) dà 52 ^ 15 = 43569598 anni = 4E7 anni.

Uso un dispositivo che mi fornisce una password casuale di 15 caratteri e utilizzo PwdHash. Sono d'accordo con te, questo è meglio che avere un enorme database di password. Se hai una password casuale di 15 caratteri, dovresti essere OK.

    
risposta data 18.07.2014 - 19:06
fonte

Leggi altre domande sui tag