¿El hash cambia la seguridad del protocolo de contraseña remota segura?

3

Estoy implementando el protocolo de contraseña remota segura, y similar a esta pregunta , me pregunto si puedo usar la función de hash SHA-512 en lugar de SHA-1 actualmente en uso. ¿Ayudaría esto a mejorar la confidencialidad de la clave?

 M = SHA1(A | B | Key) -->
                <-- SHA1(A | M | Key)
    
pregunta Robinicks 16.03.2012 - 17:49
fuente

3 respuestas

3

Creo que está bien usar SHA1 en SRP. SHA1 está bien para estos fines. Usar SHA1 no dañará la confidencialidad de la clave.

Algunas personas dicen que "SHA1 tiene algunas debilidades". Sin embargo, esas debilidades son relativamente menores y, en cualquier caso, solo afectan la resistencia de SHA1 a los ataques de colisión. Esos ataques no afectan ni ponen en peligro la SRP, ya que SHA1 no depende de la resistencia a la colisión de SHA1. Cambiar a una función hash diferente no es probable que mejore la confidencialidad de la clave. Para una discusión más detallada, consulte Sección 3.4 de RFC 5054 , que trata el uso de SHA1 en el SRP protocolo.

Aprendo un poco sobre cómo hacer cambios a un protocolo criptográfico, sobre principios generales. Los protocolos criptográficos son complicados y los pequeños detalles pueden hacer una gran diferencia en la seguridad, especialmente los protocolos de acuerdo de clave autenticados por contraseña (donde el diseño exacto de bits de algunos campos puede ser importante para la seguridad). Mi sugerencia sería encontrar una especificación existente y bien examinada que ofrezca una especificación completa del protocolo SRP, y adoptarla exactamente. Hacer cambios tiene el potencial de introducir debilidades de seguridad sutiles.

Sin embargo, si quisiera cambiar la función hash de la forma que describió, creo que sería un cambio relativamente razonable y de bajo riesgo. De hecho, Sección 3.2 de RFC 2945 (una especificación de la versión 3 de SRP) dice que está bien cambie SHA1 a otra función hash criptográficamente fuerte, por lo que cambiar el hash utilizado en el paso de confirmación de clave a SHA256 o SHA512 probablemente estaría bien.

    
respondido por el D.W. 16.03.2012 - 18:17
fuente
2

En 2005 se demostró que sha1 tiene algunas debilidades matemáticas. Se recomienda que uses una función hash más nueva. Sha512 está bien. enlace

    
respondido por el k to the z 16.03.2012 - 17:56
fuente
1

La propiedad de SHA-1 que se usa aquí es su resistencia a las imágenes previas : es computacionalmente inviable, por lo que sabemos, calcular un mensaje m que produce un salida dada SHA-1 ( m ), o incluso para obtener alguna "información" en m . Hay dos formas de calcular una preimagen:

  1. Tienes suerte. Pruebe muchas imágenes posibles hasta que se encuentre una.
  2. Aprovechar una debilidad es la estructura de la función hash.

El método "suerte" requiere un promedio de intentos de 2n para una función de hash con una salida de n -bit; con SHA-1, n = 160 , lo que hace que el "ataque de suerte" sea demasiado costoso (alrededor de mil millones de billones de veces más de lo que es tecnológicamente viable). En cuanto a las debilidades estructurales, todavía no se conoce ninguna (hay debilidades conocidas en SHA-1, pero afectan la resistencia a las colisiones, no a las preimágenes). Incluso el MD5 estaría bien aquí, debido a su rotura publicada (y hay una debilidad estructural conocida en el MD5 que hace que las preimágenes sean más fáciles de calcular que usar suerte, todavía inviable, pero un poco más fácil). p>

Por lo tanto, reemplazar SHA-1 con SHA-256 o SHA-512 no ayudaría, ya que SHA-1 ya es lo más seguro que se puede obtener, y no existe un nivel de seguridad que no se rompa. Por otro lado, cualquier modificación a un protocolo criptográfico rompe la compatibilidad con las implementaciones existentes y lo lanza al peligroso reino de los criptogramas hechos en casa, por lo que no se puede recomendar.

    
respondido por el Thomas Pornin 10.02.2013 - 22:59
fuente

Lea otras preguntas en las etiquetas