La sicurezza della password 'misurazione' programmaticamente è davvero difficile: quello che vuoi è un numero che ti dice quanto è difficile per un utente malintenzionato indovinare la password.
Di solito, una buona approssimazione è guardare il numero di possibili password che risulterebbero dall'uso dell'algoritmo di generazione, operando nel presupposto che l'hacker conosca l'algoritmo di generazione e che la password sia scelta casualmente tra tutti i possibili output di questo algoritmo.
Questo è facile da ottenere, se si definisce l'algoritmo da soli e si fornisce all'utente una password fissa e generata. È quindi possibile eseguire un calcolo sulla falsariga di "10 caratteri selezionati casualmente da un set di 62 caratteri" = 839299365868340224 possibilità ~ 59,5 bit di entropia.
Sfortunatamente molti siti permettono all'utente di scegliere la password e quindi le cose si fanno pazze. Ora né tu né l'hacker conoscono l'algoritmo di generazione. L'attaccante deve accontentarsi della prossima cosa più intelligente: provare un paio di algoritmi ragionevoli e tutte le password generate per ogni algoritmo (saltando i duplicati). Sensibilmente l'attaccante potrebbe iniziare con algoritmi comuni (come "nome di un membro della famiglia") e / o quelli che generano solo un piccolo numero di password possibili ("PIN a 4 cifre").
Ora per ottenere una sicurezza numerica sulla sicurezza della password risultante non puoi semplicemente guardare il numero totale di password possibili, ma devi anche tener conto dell'ordine in cui un utente malintenzionato potrebbe provarle. Qualcosa lungo la linee di una media pesata del numero di password per algoritmo e probabilità di utilizzo di quell'algoritmo.
Esiste un concetto strettamente correlato chiamato complessità di Kolmogorov: descrive il contenuto informativo di una stringa come la lunghezza del programma più breve (in un linguaggio di programmazione generico) in grado di ricreare la stringa. Esempio: "aaaaa" e "abcdefghijklmnopqrstuvwxyz" hanno all'incirca la stessa complessità di 3 se la nostra lingua consente di dire cose come "5 * a" e "a-z", mentre "oabuf" avrebbe la complessità 5.
Un hacker astuto proverà le password in ordine di aumento della complessità di Kolmogorov, in modo da essere a casa libera se si riuscisse a calcolarlo. Sfortunatamente non puoi .
In generale, l'approccio migliore alla sicurezza della password è di fornire consigli utili agli utenti su come scegliere una buona password, vedi questo studio . Questo documento raccomanda il metodo della frase: prendi una frase e usa le prime lettere di tutte le parole. Questo dà una buona memorizzazione e sicurezza.
Un altro buon metodo è il metodo XKCD , noto anche come fiocco corretto della batteria del cavallo (il fumetto fornisce anche una buona illustrazione delle mie osservazioni su più algoritmi sopra).
Dato che non è possibile calcolare ragionevolmente la potenza della password senza conoscere l'algoritmo e non si può generalmente conoscere l'algoritmo, suggerirei di astenersi dal provare a farlo. Avere un misuratore di forza della password non funzionante invierà i segnali sbagliati ai propri utenti (ad esempio, la maggior parte dei misuratori di forza password sottovalutano enormemente la forza delle password XKCD). Invece:
- Fornisci consigli su come scegliere una buona password
- Non rendere difficile l'utilizzo di una buona password (ad esempio avendo limiti arbitrari sulla lunghezza e sul set di caratteri, hai comunque cancellato la password, giusto?)
- Utilizza cracklib sul lato server per eliminare le password catastroficamente sbagliate.