¿Qué algoritmo de hash es ideal para usar en la web? [duplicar]

2

Soy nuevo aquí, y he hurgado en el sitio buscando una descripción general de qué algoritmo hash utilizar en la web y por qué.

Parece ser el consenso de que SHA-256 u otros algoritmos de la familia SHA-2 son los mejores porque no tienen las colisiones que tienen MD5 y las técnicas de hash más antiguas. Me pregunto si las técnicas de la familia SHA-2 son menos compatibles en la web debido a otras razones además de la seguridad, como la facilidad de implementación o la velocidad de ejecución.

En un sitio web que ya está protegido por el cifrado de un certificado SSL a través de TLS / HTTPS, los datos (es decir, una contraseña) ya están encriptados de todos modos (dejando de lado los problemas recientes con Heartbleed). ¿Entonces quizás se le ha dado más prioridad a los algoritmos que son más fáciles de implementar en lugar de más seguros? Todavía parece incompleto utilizar MD5 en la web, es decir, para el hashing de contraseñas.

¿Qué algoritmo de hash es mejor para la web y por qué?

    
pregunta JHS 23.04.2014 - 01:02
fuente

2 respuestas

5

Qué algoritmo es mejor depende de para qué lo estés usando. Si estás tratando de detectar la corrupción de datos aleatorios, por ejemplo, un algoritmo tan rápido como el CRC-32 es ideal Por otro lado, si estás tratando de asegurar hashes de contraseña, quieres un algoritmo inherentemente lento como bcrypt. Para proteger las transferencias de datos contra la manipulación maliciosa, desea un algoritmo rápido, criptográficamente seguro, como SHA-256. Y, por último, si necesita interoperar con el software de otra persona, use la función hash que esté esperando.

    
respondido por el Mark 23.04.2014 - 08:36
fuente
3

En caso de duda, utilice SHA-256. Esta es la respuesta predeterminada para las situaciones en las que necesita una función hash genérica ; para casos especializados, como el hash de contraseñas , la situación es diferente : no desea utilizar MD5 o SHA-1 o SHA-2 o SHA-3 para las contraseñas, sino algo como bcrypt.

SSL es un estándar implementado con un largo historial, y generalmente utiliza SHA-1. Esto esta bien. Aunque SHA-1 tiene algunas debilidades teóricas contra las colisiones, las colisiones no son un problema en la forma en que se usa SHA-1 en SSL (se usa como parte de HMAC , que funciona más en la resistencia de preimagen que en las colisiones. SHA-256 se puede usar con SSL, pero solo con el estándar más reciente (TLS 1.2) que aún no se implementa en todas partes .

    
respondido por el Thomas Pornin 23.04.2014 - 13:02
fuente

Lea otras preguntas en las etiquetas