¿Es seguro el almacenamiento de contraseñas en sha-1 hashing?

Estoy de acuerdo con lo que dice Bassem Dghaidy. Estoy seguro de que tiene razón acerca de que las granjas de fuerza bruta están ahí afuera.

Para agregar una perspectiva, es importante comprender que la seguridad siempre es relativa.

Por lo tanto, nunca es una buena pregunta hacer “es algo seguro”. La pregunta correcta es “qué tan seguro es este algoritmo de hash (o cualquier control de seguridad, complete los espacios en blanco) con el fin de proteger este activo en particular. Para responder a eso, debe analizar el valor del activo que desea proteger (una contraseña base de datos, por ejemplo); las amenazas conocidas contra su control de seguridad (SHA-1 en este caso); la probabilidad de que se intenten esas amenazas y las vulnerabilidades conocidas de su control de seguridad (SHA-1). De esta manera puede obtener un sentido de “¿SHA-1 es lo suficientemente seguro como para proteger mi base de datos de contraseñas?”.

Hay muy pocas cosas, si es que hay alguna, en el mundo que no puedan romperse con suficiente tiempo y recursos. El mejor objetivo para la seguridad es hacer que no valga la pena el tiempo y la energía de tu adversario para romper lo tuyo, de modo que vayan a otro lugar y rompan lo suyo, o tal vez simplemente se den por vencidos y vuelvan a jugar con LOIC o lo que sea.

A medida que aumenta el poder de cómputo (ley de Moore), un algoritmo dado se vuelve más fácil de aplicar fuerza bruta (exactamente lo que sucedió con MD5). Por lo tanto, cada método de encriptación y cada algoritmo tienen una vida útil. A mediados de 2012, diría que SHA-1 es bastante bueno para todas las aplicaciones, excepto las más sensibles: la vida útil aún no ha expirado. Pero eventualmente, ¿y quién puede decir si eso es en un año, cinco o diez años?

La respuesta es no: SHA-1 y cualquier otro algoritmo de cifrado criptográfico es protección insuficiente contra el forzamiento bruto. Como Thomas H. Ptacek deja en claro en una entrevista con Brian Krebs ( https://krebsonsecurity.com/2012 …), el cifrado criptográfico es un componente del cifrado de contraseñas, pero sus objetivos son fundamentalmente diferentes. Un hash criptográfico es útil si se puede calcular rápidamente, pero un hash de contraseña no debe poder calcularse rápidamente, o será trivial para la fuerza bruta.

Muchas personas afirman que el uso de un hash salado es una fuerte protección contra el descifrado de contraseñas, pero en realidad es solo una protección contra una clase particular de ataques: búsquedas de tablas calculadas previamente. Estos ataques se realizan de manera más eficiente utilizando tablas de arcoíris, y se basan en el cálculo previo del hash de cada contraseña válida para un algoritmo de hash dado y en realizar búsquedas de tablas en los resultados almacenados cada vez que se recopila un hash real. Salar un hash hace que sea más costoso hacer este ataque, ya que se debe hacer una tabla separada para cada valor de sal.

Sin embargo, la salazón ofrece poca protección contra la fuerza bruta o incluso el descifrado de contraseñas basado en el diccionario. El cálculo básico sigue siendo muy rápido. Ingrese algoritmos de hash de contraseña. Estos algoritmos (bcrypt, la cripta SHA de Ullrich Drepper, etc.) están diseñados específicamente para usar muchos recursos, de maneras que no siempre son obvias. Algunos ejemplos:

  • Requerir mucha memoria para almacenar el estado
  • Requerir el uso de más registros de los que están disponibles en una GPU para resistir el agrietamiento de GPU
  • Realizar múltiples rondas de hashing computacionalmente intensivo
  • Permitir que se especifique el número de rondas en el valor hash, de modo que la implementación se pueda ampliar a medida que aumenta la potencia de cálculo.

Algunas referencias:

Con suficientes núcleos Cuda, nada es seguro 🙂
Las granjas de descifrado de contraseñas no son producto de la imaginación. Después de ver lo que la gente hizo por BitCoin y las granjas de generación de monedas, no me sorprendería si algunos grupos de hackers están bien financiados y tienen sus propias granjas de fuerza bruta.

En realidad, el forzamiento bruto no es la mejor solución para comprometer incluso las contraseñas cifradas SHA-1, como lo son las tablas de arco iris. La velocidad de procesamiento se reduce, pero el almacenamiento aumenta exponencialmente.

Aquí hay algunas imágenes de algunas granjas de BitCoin en garajes \ casas de usuarios, etc.


Como con la mayoría de las tecnologías (de seguridad), la respuesta a esta pregunta es “no es lo que usa, es cómo lo usa”.

SHA-1 es un algoritmo de resumen de mensajes de 160 bits publicado por primera vez en 1995.

Si las contraseñas se salan antes de la creación del hash, es probable que el algoritmo siga siendo “lo suficientemente seguro” para la mayoría de las aplicaciones actuales.

Sin embargo, en 2005 se detectaron debilidades que dieron como resultado que aquellas aplicaciones que requerían certeza fueran trasladadas a SHA-2 (publicado por primera vez en 2001).

SHA-3 está programado para ser seleccionado por NIST este año (2012), lo que brindará a los desarrolladores más opciones.

En resumen, no, no es lo suficientemente seguro para la implementación empresarial / de alto riesgo. ¡Usa bcrypt!