Le passphrase devono essere eseguite tramite PBKDF2? Quasi impossibile alla forza bruta?

2

Le passphrase contengono normalmente più dati e password e possono fornire più entropia. Sembra che sarebbe ancora difficile forzare una passphrase senza usare PBKDF2, supponendo che un utente non abbia selezionato una frase famosa, una linea di film, ecc ... Definisco una passphrase in questo esempio di almeno 22 caratteri.

Ad esempio, se un utente utilizza una passphrase generata da DiceWare di 6 parole da un dizionario di 10.000 parole, otterremmo 10.000 ^ 6 di frasi possibili.

Se un super computer poteva eseguire 33.6 X 10 ^ 15 operazioni al secondo e ci sono volute 2.000 operazioni (senza PBKDF2) per provare 1 indovinare ci vorrebbero (10.000 ^ 6) / ((33.6 X 10 ^ 15) / 2.000) o circa 1887 anni alla forza bruta nel peggiore dei casi.

Questo e l'esempio sopra hanno senso? Grazie mille!

    
posta oris 11.10.2014 - 05:41
fonte

3 risposte

5

Passphrases normally contain more data then passwords and can provide more entropy. It seems like it would still be hard to brute force a passphrase w/o using PBKDF2, assuming a user didn't select a famous quote, movie line, etc... I define a passphrase in this example as at least 22 characters.

Quello che stai dicendo qui è che ci sono passphrase che hanno una grande entropia. Questo non prova nulla. Ci sono password più brevi con grande entropia. La lunghezza non è correlata tanto con l'entropia quando è un essere umano a fare la scelta.

(Nota: userò password e passphrase in modo intercambiabile da ora in poi, perché non c'è differenza tra i due, tecnicamente parlando. passphrase è una password che consiste in più parole in un linguaggio umano concatenato insieme.)

Entropia di una password composta da 8 caratteri ASCII stampabili: 52 bit
Entropia di una password composta da 4 parole Diceware: 51 bit
(Per selezioni casuali in modo uniforme: l'elenco Diceware è composto esattamente da 7776 parole.)

Più casualità entra in una password, più difficile è la memorizzazione da parte di un umano. Se si utilizza una funzione di hashing lento piuttosto che rapida, si riduce l'entropia che una password deve avere per evitare il cracking. È un compromesso tra spendere più tempo della CPU e richiedere agli umani di memorizzare di più.

Dato che anche le password decenti mettono a dura prova le capacità degli umani di memorizzarle (e tenere presente che molte persone hanno decine se non centinaia di password), la scelta è chiara: è necessario fornire loro una funzione di hashing della password più lenta possibile.

    
risposta data 11.10.2014 - 15:50
fonte
1

Avere una password molto strong indipendentemente dal fatto di aver bisogno di un kdf ha dei vantaggi come hai sottolineato.

Tuttavia, anche una password complessa dipende da un hash per essere protetta dai dump della tabella delle password, altrimenti non è necessario indovinare.

Questa logica dovrebbe essere utilizzata solo per prendere la decisione di utilizzare password complesse e non per essere pigri se si sta implementando la sicurezza. La maggior parte delle persone non usa quelli forti.

    
risposta data 11.10.2014 - 06:11
fonte
1

Se la tua password deve essere eseguita attraverso un PBKDF dipende dal caso d'uso. PBKDF come PBKDF2 hanno più vantaggi e proprietà:

  • possono nascondere una password in un database, per quando il database viene rubato
    • forniscono un sale per nascondere password identiche e proteggere contro le tabelle arcobaleno
    • usano il conteggio delle iterazioni per rendere più difficili gli attacchi di forza bruta (ma solo di una quantità lineare)
  • possono estrarre l'entropia da un dato valore, cioè restituire un output a dimensione fissa
  • possono espandere la quantità di materiale segreto a un valore maggiore (utile soprattutto quando l'output viene utilizzato come input crittografico come chiave o IV)

Ora dì che hai un sistema sicuro dove usi la passphrase per l'autenticazione. Per questa autenticazione esiste un numero limitato di tentativi o le password hanno una quantità elevata di entropia. In tal caso un PBKDF non ha molto senso.

Se le tue password hanno già una quantità verificabile di entropia, allora un KBKDF - come HKDF - ha più senso di un PBKDF2 - non hai bisogno del conteggio delle iterazioni. Ma come altri hanno sottolineato, in generale non è possibile stimare o garantire facilmente la quantità di entropia di una frase di accesso.

Se usi un hash come povero equipaggia KDF, allora non hai sale. Ciò significa che l'output sarà identico per la stessa passphrase; le frasi duplicate possono diventare un problema.

Se vuoi avere una voce di tabella di dimensioni fisse nel tuo database, allora potrebbe avere senso usare almeno un KDF, altrimenti dovrai usare un limite superiore per la dimensione della frase di accesso.

Alla fine poi diventa la domanda perché non per usare un PBKDF come PBKDF2.

Tieni presente che PBKDF2 non è considerato una buona opzione da molti per eseguire l'espansione in quanto consente a un utente malintenzionato.

    
risposta data 11.10.2014 - 17:31
fonte

Leggi altre domande sui tag