¿Hay alguna ventaja de bcrypt sobre múltiples iteraciones de SHA-x / MD5?

13

Sé que un buen algoritmo de hashing de contraseñas debería ser lento. MD5, SHA256, etc. son rápidos. Así que he estado agregando múltiples iteraciones de hash SHA-256 a mis aplicaciones web (alrededor de 50000). Obtener el hash de una contraseña lleva aproximadamente 150 ms en mi máquina.

¿Hay alguna ventaja de bcrypt sobre este enfoque?

Nota: sé de sales y pimienta. No no hablemos de esto aquí.

    
pregunta Philippe Gerber 11.07.2011 - 11:50
fuente

2 respuestas

14

Insertar la sal (sí, se debe hablar de eso), e iterar la función al mismo tiempo, es un poco más complicado de lo que generalmente aparece. En particular, una función hash como SHA-256 no es exactamente una función "similar a un oráculo aleatorio"; Exhibe alguna estructura interna. Cualquier construcción casera podría golpear uno de esos detalles finos de los que pueden surgir debilidades mortales.

Asegurarse de que lo hiciste bien es difícil, al igual que crear cualquier algoritmo criptográfico. Ahí es donde bcrypt es mejor que cualquier construcción casera: bcrypt se ha publicado y está en uso y, presumiblemente, ha sido inspeccionado por muchas personas durante bastante tiempo. Esta es básicamente la única medida de seguridad que puede obtener en la criptografía. El consejo genérico de "no defina sus propios algoritmos" se aplica aquí también.

    
respondido por el Thomas Pornin 11.07.2011 - 14:19
fuente
7

El problema al que te enfrentas ya se ha resuelto, y sí, vas en la dirección correcta: enlace

    
respondido por el Hubert Kario 12.07.2011 - 00:57
fuente

Lea otras preguntas en las etiquetas