bscrypt, scrypt v / s iterativo SHA-x [duplicado]

1

Los algoritmos de hashing bcrypt y scrypt están diseñados para aumentar los recursos requeridos durante el cálculo. Hashear contraseñas con estos algoritmos puede ser beneficioso, ya que dificulta la tarea de un atacante sin conexión.

El tiempo requerido para hash de una contraseña se puede aumentar al aumentar el número de iteraciones en bcrypt. El atacante debe ejecutar estas iteraciones de manera secuencial, ya que no se supone un acceso directo.

La memoria requerida para hash de una contraseña se puede aumentar en scrypt. Por lo tanto, el atacante necesitará una gran cantidad de memoria para montar ataques paralelos.

Como entiendo, ambos algoritmos intentan frustrar los ataques paralelos.

Mi pregunta es: ¿podemos hacer que SHA-x o cualquier algoritmo hash seguro sea iterativo e intensivo en memoria, y lograr la misma funcionalidad que bcrypt y scrypt?

    
pregunta Curious 20.11.2014 - 05:17
fuente

2 respuestas

3

Ya existe una función hash "iterativa"; se llama PBKDF2 . Bcrypt sigue siendo preferible porque PBKDF2 se puede optimizar completamente en GPU.

Diseñar una buena función de hashing de contraseña es un trabajo difícil; pero sí, la función hash existente son buenos elementos de construcción, por lo que es probable que estén involucrados en algún momento. De hecho, mire scrypt : comienza y termina con una invocación PBKDF2, por lo tanto, mucho hashing. Pero la dureza de la memoria proviene de lo que sucede entre estas dos fases de hash. No se trata de un ensamblaje simple de funciones hash que proporcionen dureza de memoria; Al igual que un automóvil, no es simplemente "ruedas que van a donde usted quiere": las ruedas son esenciales, pero en el automóvil hay más que ruedas.

Los criptógrafos están actualmente ocupados diseñando y analizando nuevas funciones de hash de contraseñas que intentan ser mejores (de alguna manera) que PBKDF2, bcrypt y scrypt. Esta es la competencia de hash de contraseñas . Algunos de los candidatos reutilizan funciones hash existentes (por ejemplo, Catena), pero, como scrypt, su "hashing de contraseña" Las propiedades (por ejemplo, la dureza de la memoria) provienen del resto del diseño.

    
respondido por el Tom Leek 20.11.2014 - 13:18
fuente
1

Tu comprensión de las razones por las que uno debería usar scrypt y bcrypt es correcta.

Sí, podría, al menos en teoría, producir un nuevo algoritmo que requiera tiempo y memoria, y podría incorporar una función hash criptográficamente segura existente. Puede aumentar el tiempo a través de la iteración y aumentar la memoria al requerir que haya una gran cantidad de valores anteriores disponibles para calcular el siguiente valor. ¿Pero por qué? Como señala, ya hay funciones que hacen esto, diseñadas por criptógrafos, sujetas a inspección por parte de otros, y que han resistido la prueba del tiempo.

Tratar de rodar tu propio cripto es muy peligroso. Su pregunta dice por qué: "no hay un atajo asumido". No es suficiente que un algoritmo consuma mucho tiempo y memoria; También debe ser resistente a los ataques de acceso directo. Los ataques de acceso directo pueden ser sutiles e inteligentes, y evitarlos, o incluso detectar las vulnerabilidades es difícil, especialmente en su propio trabajo, lo que "sabe" es correcto. Es mucho más probable que termines con lo que otra persona ha llamado "funciones hash raras" que resultan tener accesos directos fáciles.

Si desea diseñar sus propios algoritmos criptográficos, primero obtenga un Ph.D. En matemáticas con una concentración en cripto. La NSA te contratará cuando tengas ese Ph.D. Después de eso, pase diez años trabajando en criptografía en la NSA y usted podría estar calificado para desarrollar nuevos algoritmos criptográficos.

    
respondido por el Bob Brown 20.11.2014 - 12:33
fuente

Lea otras preguntas en las etiquetas