¿Hay repetición en la rutina hash de Solaris 11? ¿Puedo añadir algunos?

8

Solaris 11 ahora usa SHA-256 , por lo que podemos tener más tiempo de 8 contraseñas de caracteres ahora, por defecto. Eso es bueno.

Simplemente dejaré en claro que esta contraseña nunca se usa como una línea de defensa. Solo unos pocos pueden llegar a las herramientas que realmente hacen uso de las contraseñas. Otros usuarios pasan por un sistema de gestión basado en web en un entorno controlado.

Sin embargo, me esfuerzo por la perfección, así que me doy cuenta de esto y me pregunto.

¿Puedo configurar o instalar un parámetro de repetición del hash de contraseña de Solaris 11? Quiero que el hash tome 50 ms, lo que probablemente sea más seguro que el predeterminado.

Lo ideal es cambiarlo a bcrypt. ¿Puedes darme algunos consejos?

    
pregunta George Bailey 17.05.2012 - 20:40
fuente

1 respuesta

11

¿Se fortalecen las contraseñas de unix / linux sha256 / sha512 en / etc / shadow key?

Sí. Utilizan un procedimiento de cripta que realiza un valor predeterminado de 5000 rondas de hash. El procedimiento sha256-crypt / sha512-crypt se describe aquí y en java

¿Puedo cambiar el número de rondas?

Sí. Simplemente edite /etc/pam.d/passwd o /etc/pam.d/common-password (o el equivalente de solaris) y agregue 'rounds = 73500' al final de la línea que es similar a:

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

y luego cambie su contraseña usando passwd. ¿Por qué 73500? Bueno, cronometrando cripta con rondas = 5000, obtuve unos 3.4 ms por contraseña. (5000 * 50 / 3.4 ~ 73500). Puede verificar si una contraseña en sus archivos / etc / shadow se realizó con un número anormal de rondas si parece que comienza con yourusername:$6$rounds=73500$RFzXZTGB$ donde $6$ indica el procedimiento de cripta utilizado (sha256-crypt es de $ 5 $, sha512-crypt $ 6 $ ) seguido por el número de rondas y luego la sal.

Pero quiero bcrypt; ¿Puedo cambiar a eso?

Verifique /etc/pam.d/ y (1) cambie todas las referencias de pam_unix.so a pam_unix2.so (verifique que el archivo esté allí) y (2) luego cambie de sha512 a blowfish en / etc /pam.d/common-password

enlace

Una diferencia notable entre bcrypt vs sha512-crypt; es que el factor de trabajo bcrypt escala exponencialmente; por ejemplo, un factor de trabajo de 12, debería tomar el doble del tiempo que un factor de trabajo de 11, mientras que las rondas de sha512-crypt se escalan linealmente (por ejemplo, rounds=10000 debería tomar el doble de tiempo que rounds=5000 ). Esto es simplemente porque bcrypt dice hacer 2 rondas work-factor . Como un punto de referencia rápido en mi máquina, una ronda de cifrado es más cara que una ronda de sha512-crypt; con una equivalencia aproximada de ~ 4 ms con rounds=5000 o work-factor=6 (2 6 = 64 bcrypt-rounds). Pero como ambos pueden ampliarse, esto no debería ser un problema hasta que el número de rondas desborda el int sin signo de 32 bits / 64 bits (cuando rondas = 4 mil millones o 10 19 respectivamente).

Cosas de tiempo de Python con sha512-crypt

Puede verificar crypt a través de python (en linux, esto se realiza tan rápido como la versión C, ya que es solo una envoltura delgada para la biblioteca crypt escrita en C)

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

En Python en mi máquina con el módulo crypt, se necesitan aproximadamente 3,4 ms por contraseña de sha512-crypt en 5000 rondas y ~ 50 ms con 73500 rondas.

>>> 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
    
respondido por el dr jimbob 17.05.2012 - 21:25
fuente

Lea otras preguntas en las etiquetas