A seconda del tipo di caratteri che puoi includere, un semplice comando per creare una password leggibile con 128 bit di entropia è simile a questo:
< /dev/urandom tr -dc [:graph:] | head -c20; echo;
(Tratto da qui ). [:graph:]
sono tutti caratteri prettamente ascii tranne lo spazio.
Spiegazione:
128 bit sono equivalenti alle combinazioni 3.40e + 38 . Se stai utilizzando i 94 caratteri ASCII leggibili (eccetto lo spazio) , avrai bisogno di 20 caratteri per raggiungere almeno quella quantità di combinazioni: 94 ^ 20 = 2.90e + 39 .
Se, ad esempio, ti è consentito solo utilizzare _A-Za-z0-9
:
< /dev/urandom tr -dc '_A-Za-z0-9' | head -c22; echo;
Per 63 possibili caratteri: 63 ^ 22 = 3.85e + 39 . Aggiunge solo due caratteri per raggiungere l'intera entropia.
Per le password esadecimali:
< /dev/urandom tr -dc 'A-F0-9' | head -c32; echo;
Esadecimale è facile: 128 bit sono 32 volte i bit di un carattere esadecimale.
Avviso importante : la maggior parte delle situazioni in cui è necessaria una password, verrà utilizzata una funzione di hash dietro, che effettivamente deriverà la stringa reale che verrà utilizzata. Questa analisi è soggetta al modo in cui la password viene cancellata / utilizzata.
Nota aggiuntiva : /dev/urandom
è sicuro per questa operazione. Per favore controlla È un rand di / dev / urandom sicuro per una chiave di accesso? .
Nota aggiuntiva : se stai utilizzando più di una iterazione con una funzione di hash, puoi sottrarre i bit necessari per esprimere l'iterazione delle quantità totali di bit che puoi raggiungere, ad esempio:
65536 iterations = 2 ^ 16 iterazioni, aggiungi all'incirca 16 bit (2 byte) di entropia alla password scelta, perché in un attacco brute force, è necessario eseguire 2 ^ 16 iterazioni aggiuntive prima di calcolare l'hash utilizzato.
Solo per la cronaca, andando oltre i 128 bit di entropia, è inutile come spiegato qui: Quantità di operazioni semplici che sono al sicuro fuori dalla portata di tutta l'umanità?
Ma se la tua paranoia va oltre, ecco alcuni numeri utili:
Tutti gli ascii leggibili ( 29 caratteri , 1.6e + 57 combinazioni), 192 bit (6.28e + 57 combinazioni) di entropia:
< /dev/urandom tr -dc [:graph:] | head -c29; echo;
_A-Za-z0-9
( 32 caratteri , 3.79e + 57 combinazioni), 192 bit (6.28e + 57 combinazioni) di entropia:
< /dev/urandom tr -dc '_A-Za-z0-9' | head -c32; echo;
A-F0-9
( 48 caratteri , 16 ^ 48 combinazioni), 192 bit (2 ^ 192 combinazioni) di entropia:
< /dev/urandom tr -dc 'A-F0-9' | head -c48; echo;
Tutti gli ascii leggibili ( 39 caratteri , combinazioni 8.95e + 76), 256 bit (1.16e + 77 combinazioni) di entropia:
< /dev/urandom tr -dc [:graph:] | head -c39; echo;
_A-Za-z0-9
( 43 caratteri , 2.35e + 77 combinazioni), 256 bit (1.16e + 77 combinazioni) di entropia:
< /dev/urandom tr -dc '_A-Za-z0-9' | head -c43; echo;
A-F0-9
( 64 caratteri , 16 ^ 64 combinazioni), 256 bit (2 ^ 256 combinazioni) di entropia:
< /dev/urandom tr -dc 'A-F0-9' | head -c64; echo;
Considerando che le ultime sei opzioni sono già paranoiche, è completamente inutile scegliere password più complesse o più grandi di quelle sopra descritte.