¿Hay métodos de hashing de contraseña más modernos que bcrypt y scrypt?

41

Esta pregunta me hizo comenzar a pensar en el hashing de contraseñas de nuevo. Actualmente utilizo bcrypt (específicamente py-bcrypt ). He escuchado mucho sobre PBKDF2 , y scrypt .

Lo que me pregunto es si hay algún método "hash de contraseña" más moderno que quizás no conozca (porque son nuevos, por lo que la gente no habla tanto de ellos), o tal vez otros métodos. No sé sobre.

Y luego desde allí, ¿cuál debería usar? La mayoría de la gente parece recomendar bcrypt, pero me pregunto si eso es solo porque es viejo (léase: bien conocido). scrypt parece mejor (cantidad variable de uso de memoria). No sé mucho sobre PBKDF2.

Entonces, si estuviera haciendo un esquema de administración de usuarios, ¿cuál de estos debería usar? ¿O debería usar algo completamente diferente?

    
pregunta Brendan Long 25.07.2011 - 03:13
fuente

2 respuestas

48

En la criptografía, "nuevo" es no sinónimo de "bueno". Ese código es de doce años (12 años ... ¿es realmente "antiguo"? ) solo significa que mantuvo 12 años de exposición pública y uso general sin ser interrumpido, por lo que debe ser bastante sólido. Por definición, un método "más nuevo" no puede presumir tanto. Como criptógrafo, diría que los 12 años son casi la edad adecuada, y cualquier cosa menor que, digamos, 5 años, es definitivamente "demasiado joven" para el despliegue general (por supuesto, estas estimaciones dependen de la exposición del algoritmo). Una implementación temprana y amplia, aunque es arriesgada para aquellos que deciden implementarla, contribuirá en gran medida a generar confianza en la seguridad (o revelar debilidades en una etapa temprana).

Scrypt es mucho más nuevo que bcrypt ; Data del 2009. La idea es bastante inteligente. Es decir, el procesamiento lento de contraseñas tiene como objetivo hacer que los ataques al diccionario N sean más costosos para el atacante, mientras que implica que el procesamiento normal es N ' más costoso para los sistemas honestos. Idealmente, N = N '; el autor de Scrypt sostiene que con PBKDF2 o bcrypt, el uso de ASIC permite que un atacante obtenga un N mucho más bajo que N ' (en otras palabras, el atacante puede usar hardware especializado) , porque solo está interesado en romper una contraseña y, por lo tanto, utiliza muchas más contraseñas por segundo y por dólar gastado que el sistema honesto. Para solucionarlo, Scrypt se basa en un algoritmo que requiere bastante RAM, ya que la RAM de acceso rápido es la especialidad de la PC y un punto delicado del diseño ASIC. Hasta qué punto Scrypt tiene éxito en esa área queda por medir; 2009 es un momento reciente, y las cifras proporcionadas por el autor de Scrypt se basan en la tecnología ASIC de 130 nm y en una hipótesis de "5 segundos de procesamiento", que está bastante más allá de lo que el usuario promedio está listo para esperar.

Para un uso práctico ahora , recomiendo bcrypt.

A pesar de Scrypt, las investigaciones actuales sobre el concepto de procesamiento de contraseñas tienen que ver con transformaciones especializadas que permiten más que una simple verificación de contraseñas. Por ejemplo, el protocolo SRP permite un acuerdo de clave criptográfica con autenticación mutua basada en contraseña y resistente a los ataques de diccionario (incluso en el caso de un atacante que suplante activamente al cliente o al servidor); esto requiere un poco de estructura matemática, y el hash de contraseña en SRP implica exponenciación modular.

    
respondido por el Thomas Pornin 25.07.2011 - 16:46
fuente
9

Es 2016, así que vale la pena revisar esta pregunta de 5 años. Se llevó a cabo una Competencia de hash de contraseñas de 2013 a 2016, que aceptó 24 presentaciones y seleccionó Argon2 como su algoritmo de hashing de contraseña recomendado.

Todo lo que Thomas dijo sobre lo nuevo contra lo bueno sigue siendo válido. Recientemente, en febrero de 2016 (después del final del concurso), Argon2 realizó un pequeño cambio (versión 1.3) para endurecerlo contra una debilidad menor. Por lo tanto, no lo saltaría automáticamente por el momento, pero es un trabajo mantenerlo en la esquina del ojo, ya que es probable que Argon2 se vuelva más común en los próximos años.

    
respondido por el Luis Casillas 25.06.2016 - 01:31
fuente

Lea otras preguntas en las etiquetas