Come possiamo misurare accuratamente un intervallo di entropia della password?

25

Mi sono dato il compito di scrivere un codice che determini la forza di una password, e voglio davvero uscire da un sacco di modi già stabiliti per farlo, poiché spesso mancano, non sono progettati nel modo giusto o diventa rapidamente irrilevante.

Generalmente, vedremo i pattern in cui inserisci una password e viene presentato un booleano "hai bisogno di 7 caratteri con lettere e numeri". Più tardi, abbiamo avuto un grafico senza errori che mostra un "strong a "scala" debole (e variazioni dove questa è una percentuale). Stiamo migliorando a questo schema, molto meglio in realtà, dove pensiamo a che mostra l'ora dell'utente per la forza bruta , esplicitamente mostrando i motivi per cui è stato assegnato quel punteggio,

Ora mi piace molto la presentazione di queste ultime due idee, ma non è la mia preoccupazione principale qui, e la mia domanda non ha nulla a che fare con la presentazione di questo strumento.

La mia domanda è: cosa dovrebbe prendere in considerazione un programma che genera un intervallo stimato di sicurezza della password?

Dopo aver esaminato la fonte di howsecureismypassword.net, vediamo che fa alcune cose chiare, come tenere un elenco delle 500 password comuni più comuni, raggruppare le password per classi di caratteri che sono coinvolte e collegare un meta-punteggio a una stima tempo per rompere un gruppo di valori hash in quell'intervallo. Ci sono alcuni problemi con questo, come le 500 password top non riflettono i "top 500", ma piuttosto quelli al momento della scrittura del codice, lo stesso vale per le velocità di cracking della password e gli attacchi che potrebbero non finire con l'uso di forza.

Vedo problemi simili con passwordmeter.com, ma più nel senso che viene eseguita la migliore delle ipotesi piuttosto che degli scenari peggiori.

Quindi la mia domanda è

A cosa devo pensare per misurare il punteggio di sicurezza di una password al momento "now"?

    
posta Incognito 18.06.2011 - 20:37
fonte

3 risposte

16

Il lavoro migliore in quest'area che ho visto è di Matt Weir in Reusable Security: Nuovo documento sulle metriche di sicurezza delle password (2010) . Descrive la differenza tra "entropia di Shannon" e "ipotesi di entropia". Ha anche un metodo interessante di prendere una password per un utente, analizzarla e offrire suggerimenti per migliorarla:

....other methods for password creation policies, including our proposed method to evaluate the probability of a human generated password by parsing it with a grammar trained on previously disclosed password lists. This allows us to build a more robust reject function compared to a simple blacklist, while attempting to provide the most user freedom possible, given the security constraints of the system, when selecting their passwords.

Aggiornamento : come note dell'utente185, Appendice A di NIST Electronic Authentication Guideline del 2006, rivista nel 2013, è anche molto utile. Entra nel dettaglio sul calcolo di questi due termini:

” As applied to a distribution of passwords the guessing entropy is, roughly speaking, an estimate of the average amount of work required to guess the password of a selected user, and the min-entropy is a measure of the difficulty of guessing the easiest single password to guess in the population.

Tieni presente che questa domanda è strettamente correlata:

risposta data 19.06.2011 - 00:03
fonte
6

L'Appendice A della Linea guida di autenticazione elettronica NIST specifica il metodo che usano per costruire la tabella lunghezza entropia vs. password A.1, compresi alcuni riferimenti per ulteriori letture.

    
risposta data 20.06.2011 - 11:32
fonte
2

Penso che dovresti tenere conto dei vari modi in cui una password viene effettivamente attaccata, il che richiederà qualche ricerca. Ovviamente una password che è composta interamente da una corrispondenza esatta con una password comune dovrebbe avere una forza "molto debole" (o essere annullata a titolo definitivo). Probabilmente dovresti espanderlo cercando "default" o elenchi di parole comunemente usati che i kiddies dello script proveranno sicuramente quando cracking una password; ci sono liste prontamente disponibili di decine di migliaia di password (o più) che saranno sicuramente provate contro i tuoi utenti se il tuo database è mai trapelato. Quindi includi quelli nel tuo controllo "password comune".

Ma i cracker certamente non si limiteranno a una semplice ricerca di "corrispondenza esatta", quindi nessuno dei due dovrebbe misurare la tua forza. Ricerca modelli comuni usati dai cracker, come la combinazione di due parole dal dizionario delle password, o la sostituzione di lettere per numeri o altri tipi di sostituzioni "1337 parlano" (ad esempio "p @ ssw0rd $ 4r3 4w3 $ 0m3! 1" ). Il sito howsecureismypassword.net che hai citato fallisce qui: valuta "passwordpassword" come prendere "345 mila anni" per crackare, il che è assurdamente sbagliato. Immagino che cadrà in meno di un secondo. Queste non sono le sole regole da considerare; molte password seguono schemi molto semplici come {capital letter}{6 lowercase letters}{number}! che sono molto meno sicuri di 9 caratteri casuali (ma ancora leggermente migliori di una semplice corrispondenza del dizionario). Una varietà di tali modelli comuni sarà anche provata prima di ricorrere alla forza bruta.

Il modo in cui gestisci queste trasformazioni o corrispondenze di parole dipende da te; ma a prescindere dovrebbero essere considerati in qualche modo. Una cosa da esaminare, è come hanno gestito gli strumenti open source?

Ad esempio, la funzione di stima della qualità per il gestore di password KeePass si riferisce a ciò calcolando un'entropia basata su quanti pattern sono usati per creare la password e la forza di quel pattern, piuttosto che usare il conteggio dei caratteri, se vengono rilevati dei pattern. Nelle versioni precedenti del software, un'entropia basata su un ingenuo calcolo era semplicemente penalizzata sulla base di modelli riconosciuti. Probabilmente potresti fare bene con entrambi i metodi. Il trucco consisterà nel tenere aggiornati gli schemi con i progressi del cracking, ma per lo meno la contabilità delle cose di base potrebbe avere drastici miglioramenti nella forza delle password dei tuoi utenti, specialmente se spieghi nell'interfaccia cosa modelli comuni con cui la password verrà indovinata.

    
risposta data 13.01.2016 - 18:10
fonte

Leggi altre domande sui tag