Esta Q & A https://security.stackexchange.com/questions/33123/hotp-with-as-hmac-hashing-algoritme-a-hash-from-the-sha-2-family

dice que la seguridad de HMAC-SHA1 no depende de la resistencia a las colisiones? ¿Están diciendo específicamente con respecto a HOTP o para HMAC-SHA1 para cualquier uso?

Si se utiliza HMAC-SHA1 para verificar la integridad de un documento y puede encontrar una colisión, puede realizar cambios en el documento, ¿verdad?

http://tools.ietf.org/html/rfc2104#section-6

Incluso la RFC dice que la resistencia a las colisiones es relevante

La seguridad del mecanismo de autenticación de mensajes presentado aquí depende de las propiedades criptográficas de la función hash H: la resistencia al hallazgo de colisiones (limitado al caso en el que el valor inicial es secreto y aleatorio, y donde el resultado de la función no está explícitamente disponible para el atacante), y la propiedad de autenticación de mensajes de la función de compresión de H cuando se aplica a bloques individuales

¿Qué me falta aquí?

Comentarios

  • Parece haber una confusión en la pregunta: HMAC-SHA1 no se usa para firmar un documento (al menos, no por lo general; y asumirlo era, la suposición estándar para HMAC de que su entrada clave es secreta no puede ' mantenerse desde que El procedimiento de verificación de firma es público). Encuentro esa respuesta bastante bien.
  • @fgrieu – Creo que cometí un error de terminología – cuando escribí la firma, debería haber realmente escrito generando un compendio de autenticación de mensajes para proteger la integridad. En caso de colisiones, puede cambiar el mensaje y conservar la misma MAC, por lo que es un problema, ¿verdad?
  • Deberíamos cerrar esto como un duplicado de ¿HMAC-MD5 se considera seguro para autenticar datos cifrados? ? Si bien esta pregunta es sobre SHA1, no sobre MD5, la respuesta es casi la misma.
  • Yo ' estoy bastante seguro de tener un ataque previo a la imagen contra SHA -1 esto explota.

Respuesta

En la primera sección de esta respuesta, asumiré que a través de una mejor hardware o mejoras algorítmicas, se ha vuelto rutinariamente factible exhibir una colisión para SHA-1 mediante un método similar al de Xiaoyun Wang, Yiqun Lisa Yin y Hongbo Yu » s ataque o ataque de Marc Stevens . Esto se ha logrado públicamente a principios de 2017, y había sido claramente factible (el esfuerzo representa solo horas del esfuerzo de hash invertido en la minería de bitcoins ; pero el hardware utilizado para eso no puede «t ser rediseñado para el ataque a SHA-1).

Contrariamente a lo que se considera en la pregunta, eso no permitiría que un atacante no reconozca la clave HMAC-SHA-1 para realizar un cambio no detectado en un documento; eso incluye si el atacante es capaz de preparar el documento que está dispuesto a modificar más tarde.

Una explicación es que los ataques de colisión en SHA-1 que estamos considerando requieren conocimiento del estado de la variable de encadenamiento SHA-1, y el atacante de HMAC que no conoce la clave se ve privado de ese conocimiento al ingresar la clave en ambos extremos de la iteración de rondas en las que el mensaje se encuentra en HMAC. Se necesitaría una ruptura mucho más profunda de la función de ronda de SHA-1 para romper HMAC. No es coincidencia que M. Bellare «s Nuevas pruebas para NMAC y HMAC: Seguridad sin Collision-Resistance muestra que la seguridad de HMAC se mantiene asumiendo solo propiedades más débiles en su función redonda que las necesarias para la resistencia a la colisión del hash correspondiente.

Lo que sería posible es para un el atacante conociendo la clave HMAC para preparar un documento que desee alterar posteriormente, que pueda ser alterado sin cambiar la MAC. Pero dado que el atacante tiene la clave HMAC, eso no se considera una interrupción de HMAC.


Un comentario pregunta ¿cuándo no debería usarse SHA-1?

Es aconsejable eliminar rápidamente SHA-1 en aplicaciones que requieran resistencia a colisiones (como una imagen: aléjese rápidamente, al salir un edificio cuya alarma contra incendios suena cuando no hay humo). Eso incluye hash para verificación de integridad o firma digital de documentos preparados por otros, incluso en parte (es decir, la mayoría de los documentos). Si continuar usando SHA-1 tiene grandes beneficios operativos, se puede hacer una excepción de manera segura insertando algo impredecible por los adversarios antes de cualquier parte del mensaje en la que un adversario pueda influir.Por ejemplo, al imponer un número de serie de certificado impredecible en el momento de la solicitud de un certificado, una autoridad de certificación aún podría emitir certificados de forma segura utilizando SHA-1 para su firma interna.

Como se explica en la primera sección de este respuesta, siempre que la clave de HMAC-SHA-1 se suponga secreta, no hay ninguna indicación de que HMAC-SHA-1 sea inseguro porque usa SHA-1. Si se supone que la clave es pública, o su fuga se considera una posibilidad operativa donde todavía se desea resistencia a colisiones para HMAC, incluso para mensajes preparados después de la divulgación de la clave, entonces se aplican las precauciones discutidas en el párrafo anterior.

Comentarios

  • Entonces, ¿cuándo no debería usarse SHA1? es decir, el descubrimiento del problema en SHA1 impide su uso, ¿dónde?
  • En general, se recomienda ' que se aleje (" camina ", no " corre ") desde SHA-1. Dicho esto, la construcción específica de HMAC-SHA1 todavía se considera segura de usar (asumiendo una clave secreta) debido a la prueba de seguridad para HMAC que no depende de la resistencia a colisiones del PRF subyacente. En caso de duda, muévase a SHA-2.
  • @StephenTouset – sí, lo tengo. Sin embargo, ¿existe algún uso de SHA-1 del que debería huir en lugar de alejarse o alejarse?
  • No, de lo contrario ese sería el consejo. La resistencia de colisión de SHA-1 ' s solo está rota en un sentido teórico en este momento. Aún no se han encontrado colisiones conocidas, aunque el mejor ataque actual está al borde de la factibilidad.

Respuesta

Cuando la gente dice que HMAC-MD5 o HMAC-SHA1 todavía son seguros, quieren decir que todavía son seguros como PRF y MAC.

La suposición clave aquí es que el atacante desconoce la clave.

$$ \ mathrm {HMAC} = \ mathrm {hash} (k_2 | \ mathrm {hash} (k_1 | m)) $$

  • Potencial ataque 1: encuentre una colisión universal, que sea válida para muchas claves:

    Al usar HMAC, el mensaje no se obtiene directamente, pero tiene $ k_1 $ como prefijo. Esto significa que el atacante no » t conocer el estado interno del hash cuando comienza el mensaje. Encontrar un mensaje que colisione para la mayoría de las opciones es $ k_1 $ es extremadamente difícil 1 .

  • Ataque potencial 2: recuperar la clave

    Para que esto tenga éxito, la función hash necesita roturas mucho más grandes que meras colisiones. Es similar a un primer ataque previo a la imagen, una propiedad que sigue siendo fuerte tanto para MD5 como para SHA1.

Por otro lado, si usó una clave conocida por el atacante y el atacante tiene la capacidad de encontrar colisiones en el hash subyacente (para IV arbitrarios), estos se vuelven en colisiones de HMAC. Entonces, si necesita seguridad en un escenario sin claves, use un hash resistente a colisiones, como SHA2 y considere no usar HMAC en absoluto.


1 Sospecho que no es posible (para tamaños de mensaje realistas) incluso para atacantes computacionalmente ilimitados, pero demostrar eso es difícil.

Comentarios

  • Entonces, ¿cuándo no debería usarse SHA1? es decir, el descubrimiento del problema en SHA1 impide su uso, ¿dónde?
  • @ user93353 Como dije, la seguridad de HMAC-SHA1 depende de la clave desconocida. Si no hay clave o si la conoce el atacante , las colisiones en SHA1 se convierten en una amenaza. Pero SHA1 rara vez, o nunca, debería usarse en nuevos diseños, ya que hay mejores alternativas disponibles.
  • Si el atacante conoce la clave, incluso SHA2 ser un problema, ¿verdad?
  • @ user93353 Depende de lo que quieras lograr. Por supuesto, ningún hash sin clave es un MAC.
  • @CodesInChaos – dices que HMAC-SHA1 es un problema solo si se conoce la clave. Pero si la clave es conocido, eso será un problema para cualquier operación de HMAC-hash, ¿verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *