Esiste la ripetizione nella routine di hash di Solaris 11? Posso aggiungerne un po '?

8

Solaris 11 ora utilizza SHA-256 , quindi possiamo avere più tempo di password di 8 caratteri ora, per impostazione predefinita. È bello.

Indicherò semplicemente che questa password non viene mai utilizzata come linea di difesa. Solo pochi eletti possono raggiungere gli strumenti che effettivamente utilizzano le password. Gli altri utenti passano attraverso un sistema di gestione basato sul web in un ambiente controllato.

Tuttavia, cerco la perfezione, quindi noto questo e mi meraviglio.

Posso configurare o installare un parametro di ripetizione dell'hash della password di Solaris 11? Voglio che l'hash effettui 50ms, che è probabilmente più sicuro del default.

Idealmente voglio passare a bcrypt. Puoi darmi qualche suggerimento?

    
posta George Bailey 17.05.2012 - 20:40
fonte

1 risposta

11

Le password unix / linux sha256 / sha512 in / etc / shadow sono rinforzate con la chiave?

Sì. Usano una procedura di crypt che esegue un default di 5000 cicli di hashing. La procedura sha256-crypt / sha512-crypt è descritta qui e in java

Posso modificare il numero di round?

Sì. Modifica semplicemente /etc/pam.d/passwd o /etc/pam.d/common-password (o equivalente solare) e aggiungi "rounds = 73500" alla fine della riga che assomiglia a:

password    [success=2 default=ignore]  pam_unix.so obscure sha512 rounds=73500

e poi cambia la password usando passwd. Perché 73500? Bene, crypt timing con round = 5000, stavo ottenendo circa 3,4 ms per password. (5000 * 50 / 3,4 ~ 73500). Puoi controllare se una password nei tuoi file / etc / shadow è stata eseguita con un numero anomalo di round se sembra inizia con yourusername:$6$rounds=73500$RFzXZTGB$ dove $6$ indica la procedura di crypt utilizzata (sha256-crypt è $ 5 $, sha512-crypt $ 6 $ ) seguito dal numero di giri e poi dal sale.

Ma voglio bcrypt; Posso passare a questo:

Controlla /etc/pam.d/ e (1) cambia tutti i riferimenti di pam_unix.so a pam_unix2.so (controlla che il file sia lì) e (2) poi modifica sha512 a blowfish in / etc /pam.d/common-password

link

Una differenza notevole tra bcrypt e sha512-crypt; è che il fattore di lavoro bcrypt scala in modo esponenziale; ad esempio, un fattore di lavoro di 12, dovrebbe durare il doppio di un fattore di lavoro di 11, mentre gli arrotondamenti di crypt di sha512 si ridimensionano linearmente (ad esempio, rounds=10000 dovrebbe richiedere il doppio del tempo di rounds=5000 ). Questo è semplicemente perché bcrypt dice di fare 2 round fattore di lavoro . Come un rapido punto di riferimento sulla mia macchina, un bcrypt round è più costoso di un round di crypt sha512; con un'equivalenza approssimativa di ~ 4 ms con rounds=5000 o work-factor=6 (2 6 = 64 bcrypt-rounds). Ma poiché entrambi possono essere scalati, questo non dovrebbe costituire un problema fino a quando il numero di cicli non supera ilint di 32 bit / 64 bit senza segno (quando round = 4 miliardi o 10 19 rispettivamente).

Stima dei tempi di Python con sha512-crypt

Puoi controllare crypt tramite python (in linux questo è veloce come la versione C poichè è solo un sottile involucro per la libreria crypt scritta in C)

>>> import crypt
>>> crypt.crypt('testtest', '$6$6LzxTFam$')

In python sulla mia macchina con il modulo cripta ci vogliono circa 3,4 ms per password sha512-crypt a 5000 giri e ~ 50 ms con 73500 round.

>>> import timeit
>>> timer = timeit.Timer("crypt.crypt('testtest', '$6$6LzxTFam$')", setup="import crypt")
>>> timer.timeit(1000)
3.4215329647064209
# with 73500 rounds:
>>> timeit.Timer("crypt.crypt('testtest', '$6$rounds=73500$RFzXTGB$')", 'import crypt').timeit(1000)
50.738550186157227
    
risposta data 17.05.2012 - 21:25
fonte

Leggi altre domande sui tag