¿Cuál es la diferencia entre SHA-3 y SHA-256?

Soy nuevo en criptografía, aprendí que SHA-3 (Secure Hash Algorithm 3) es el último miembro de la familia de estándares Secure Hash Algorithm, lanzada por NIST.

Pero recientemente vi SHA-256 pero no entiendo qué es en comparación con SHA-3?

Comentarios

  • SHA-256 es SHA-2 con salida de 256 bits. SHA-2 es el predecesor de SHA-3. Comparten muy poco más allá del nombre.
  • Pero el nombre captura la esencia. Si no está haciendo criptografía, todos estos son algoritmos de hash seguro. El contrato y las afirmaciones de seguridad son casi idénticas .
  • @MeirMaor Dada la existencia de SHA-1 que parece ser una declaración audaz.
  • @Maeher, SHA1 fue creado esencialmente con los mismos requisitos, ahora sabemos que no ‘ t cumplirlos. Como mínimo, los requisitos de resistencia a colisiones. También tiene un tamaño de salida más pequeño mientras SHA3 puede tener el mismo tamaño de salida que SHA2.

Respuesta

Las principales diferencias entre la versión anterior de SHA-256 de la familia SHA-2 de FIPS 180 , y el SHA3-256 más nuevo de la familia SHA-3 de FIPS 202 , son:

  • Resistencia a los ataques de extensión de longitud. Con SHA-256, dado $ H (m) $ pero no $ m $ , es fácil encontrar $ H (m \ mathbin \ | m «) $ para ciertos sufijos $ m» $ . No es así con ninguna de las funciones SHA-3.

    Esto significa, por ejemplo , que $ m \ mapsto H (k \ mathbin \ | m) $ no es un código de autenticación de mensaje seguro bajo la clave $ k $ cuando $ H $ es SHA-256, porque conocer el autenticador en un mensaje le permite falsificar el autenticador en otro. La propiedad de extensión de longitud movió parcialmente el desarrollo de HMAC.

    Por el contrario, la construcción de prefijo de clave es segura como MAC cuando $ H $ es cualquiera de las funciones SHA-3, o cualquiera de las funciones SHA-2 más nuevas, SHA-512/224 y SHA-512/256. Para SHA-224, que es esencialmente el truncamiento de 224 bits de SHA-256 (pero con un IV diferente), el adversario tiene una probabilidad de $ 2 ^ {- 32} $ de adivinar los bits de salida descartados en una sola prueba, pequeña pero no despreciable.

  • Rendimiento. Las funciones SHA-2, en particular SHA-512, SHA-512/224 y SHA-512/256, generalmente tienen un rendimiento más alto que las funciones SHA-3. En parte, esto se debió a la paranoia y razones políticas en el proceso de diseño de SHA-3.

    (En respuesta, uno de los finalistas de SHA-3 se convirtió en el mucho más rápido BLAKE2 , también ampliamente utilizado en Internet hoy en día, y el ganador de SHA-3, Keccak, se convirtió en el mucho más rápido KangarooTwelve . )

  • Diseño interno completamente diferente. SHA-2 usa Davies –Estructura Meyer, una instancia de la estructura Merkle – Damgård, con un cifrado de bloque (a veces llamado SHACAL-2) construido a partir de una red ARX, como MD4; SHA-3 usa la estructura de esponja con la permutación Keccak.

    No hay diferencia visible para el usuario aquí, pero marcó una diferencia para la confianza de los criptógrafos en los diseños después de muchos DM / Los diseños de ARX basados en MD4 se rompieron a finales de los 90 y principios de los 2000.


Historia. Ha habido una larga lista de funciones hash estandarizadas por NIST en FIPS 180, el estándar Secure Hash y más tarde FIPS 202¸ el estándar SHA-3: basado en permutación y salida extensible Funciones. Más detalles e historial, incluidas las funciones hash MD4 y MD5 relacionadas en las que se basaron SHA-0, SHA-1 y SHA-2, pero no SHA-3:

\ begin {ecuación} \ begin {array} {ccc} \ text {hash} & \ text {año} & \ text {coll. res.} & \ text {tamaño (bits)} & \ text {design} & \ text {roto?} \\ \ hline \ text {MD4} & 1990 & 64 & 128 & \ text {ARX DM de 32 bits} & 1995 \\ \ text {SHA-0 (SHA)} & 1993 & 80 & 160 & \ text {32 -bit ARX DM} & 1998 \\ \ text {MD5} & 1993 & 64 & 128 & \ text {ARX DM de 32 bits} & 2004 \\ \ text {SHA-1} & 1995 & 80 & 160 & \ text {ARX DM de 32 bits} & 2005 \\ \ hline \ text {SHA-256 (SHA-2)} & 2002 & 128 & 256 & \ text { ARX DM de 32 bits} & \\ \ te xt {SHA-384 (SHA-2)} & 2002 & 192 & 384 & \ text {ARX DM de 64 bits} & \\ \ text {SHA-512 (SHA-2)} & 2002 & 256 & 512 & \ text {ARX DM de 64 bits} & \\ \ hline \ text {SHA-224 (SHA-2)} & 2008 & 112 & 224 & \ text {ARX DM de 32 bits} & \\ \ text {SHA-512/224} & 2012 & 112 & 224 & \ text {ARX DM de 64 bits} & \\ \ text {SHA-512/256 } & 2012 & 128 & 256 & \ text {ARX DM de 64 bits} & \\ \ hli ne \ text {SHA3-224} & 2013 & 112 & 224 & \ text {esponja Keccak de 64 bits} & \\ \ text {SHA3-256} & 2013 & 128 & 256 & \ text {esponja Keccak de 64 bits} & \\ \ text {SHA3-384} & 2013 & 192 & 384 & \ text {esponja Keccak de 64 bits} & \\ \ text {SHA3-512 } & 2013 & 256 & 512 & \ text {esponja Keccak de 64 bits} & \\ \ text {SHAKE128} & 2013 & {\ leq} 128 & \ text {any} & \ text {esponja Keccak de 64 bits} \\ \ text {SHAKE256} & 2013 & {\ leq} 256 & \ text {any} & \ text {esponja Keccak de 64 bits} \ end {array} \ end {ecuación}

  • En 1993, NIST publicó FIPS 180 , el estándar Secure Hash, que define SHA-0 , originalmente llamado SHA para el algoritmo de hash seguro, diseñado para su uso con el DSA recientemente publicado. SHA-0 es una única función hash de 160 bits destinada a la seguridad de colisión de 80 bits (y ahora completamente rota) , basada sobre el diseño relativamente nuevo y rápido de MD4 en 1990.

  • En 1995, NIST retiró silenciosamente FIPS 180 y lo reemplazó por FIPS 180-1 que define SHA-1 , que se diferencia de SHA-0 por la inclusión de uno solo -Rotación de bits. Al igual que SHA-0, SHA-1 es una única función hash de 160 bits destinada a la seguridad de colisión de 80 bits (y ahora está completamente rota).

    No se dio ninguna explicación pública para el cambio, pero no pasó mucho tiempo antes de que Eli Biham publicara el criptoanálisis diferencial y la comunidad académica se diera cuenta de que los ajustes de la NSA a las cajas S de DES en la década de 1970 realmente mejoró la seguridad (no importa que redujeron el tamaño de la clave de 128 bits de Lucifer a 56 bits para DES, destruyendo completamente la seguridad al mismo tiempo). El mismo año, Dobbertin rompió MD4 [1] , y al año siguiente, MD5 [2] gravemente dañado. Poco después, en 1998, Florent Chabaud y Antoine Joux informó un ataque de colisión de $ 2 ^ {61} $ -cost en SHA-0 [3] .

  • En 2002, NIST publicó FIPS 180-2 , definiendo SHA-2 , una familia de funciones hash relacionadas con diferentes tamaños: SHA- 256, SHA-384 y SHA-512, nombrados por sus tamaños de salida y apuntando respectivamente a una resistencia de colisión de 112, 128, 192 y 256 bits. El SHA -2 funciones continuaron los principios de diseño de MD4, MD5, SHA-0 y SHA-1, con más rondas y un estado más grande. Poco después, en 2004, el equipo de Xiaoyun Wang informó sobre colisiones completas en MD5 y otras funciones hash [4] , y en 2005, publicó un $ 2 ^ {69} $ – ataque de costo en SHA-1 [5] , sustancialmente más barato que el genérico. Dado que muchos de los diseños basados en MD4 se habían roto ahora, todos se pusieron nerviosos por ese diseño, así que …

  • En 2007, NIST lanzó el concurso SHA-3 para diseñar un sucesor de SHA-2, en caso de que el diseño fuera malo. La competencia se llevaría a cabo durante varios años.

  • Mientras tanto, en 2008, NIST actualizó el estándar Secure Hash con FIPS 180-3 , agregando SHA-224 a la familia SHA-2, y luego, en 2012, NIST lo actualizó nuevamente con FIPS 180-4 (2012) , agregando SHA-512/224 y SHA-512/256 , funciones hash más rápidas de 256 bits y 384 bits en máquinas de 64 bits con resistencia a los ataques de extensión de longitud que permiten calcular $ H (m \ mathbin \ | m «) $ dado $ H (m) $ y ciertos $ m» $ sin conociendo $ m $ .

  • En 2013, la competencia SHA-3 concluyó con Keccak como ganador elegido por NIST , que publicaron en FIPS 202 . SHA-3 incluye cuatro funciones hash de tamaño fijo, SHA3-224, SHA3-256, SHA3-384, SHA3-512 y dos funciones hash de salida extensible SHAKE128 y SHAKE256 que alcanzan hasta 128 bits o 256 nivel de seguridad de -bit si la salida es lo suficientemente larga.

    El diseño de SHA-3 es completamente diferente de SHA-2, lo que da confianza en que los avances criptoanalíticos en la línea de diseños basados en MD4 probablemente no afectarán SHA-3, aunque una década y media después del baño de sangre de principios de la década de 2000, no ha Tampoco hay mucho progreso en SHA-2. Los parámetros elegidos para las funciones SHA-3 de tamaño fijo se sobrediseñaron accidentalmente por razones políticas [6] , por lo que las funciones SHA-3 como SHA3-256 son más lentos de lo necesario y, por lo general, debería utilizar SHAKE128 o SHAKE256.

Comentarios

  • Cuando digamos » completamente roto «, según tengo entendido, es posible calcular m1 , m2 tal que H ( m1 ) = H ( m2 ). Sin embargo, nadie ha logrado, dado un mensaje fijo M , calcular un mensaje m (no igual a M ) tal que H ( M ) = H ( m ).
  • @MartinBonner Sí, ‘ estoy hablando de resistencia a colisiones aquí, razón por la cual las dos palabras justo antes de «y ahora completamente roto» son «seguridad contra colisiones». ‘ no estoy abordando la resistencia de preimagen aquí porque el uso seguro de una función de hash resistente a preimagen pero no resistente a colisiones es muy sutil y yo ‘ estoy tratando de no dejar trampas a los lectores desprevenidos ; Me refiero al estado de MD5 ‘ s preimage resistencia en otro lugar cuando ‘ pregunta específicamente.

Responder

Diferencia entre SHA256 y SHA3

La principal diferencia de SHA256 y SHA3 es su diseño de algoritmo interno .

SHA2 (y SHA1) se construyen usando la estructura Merkle – Damgård .

SHA3 por otro lado se construye usando un Función Sponge y pertenece a la familia Keccak.

El nombre puede inducir a error al pensar que SHA3 en comparación con SHA2 es solo un » versión » más reciente del algoritmo. Como dijo SEJPM: » […] Comparten muy poco más allá del nombre.» El nombre se acaba de dar de NIST y significa » Algoritmo hash seguro «, una familia de estándares oficiales.

Aunque puede construir MAC s con SHA256 y SHA3, SHA3 MAC es más fácil de usar (ver el comentario de fgrieu a continuación).

Salida

SHA256 genera un hash de 256 bits.

SHA3 permite salidas de

  • 224 bits
  • 256 bits
  • 384 bits
  • 512 bits

hash, aunque las variantes SHA2 (SHA256 es una de estas variantes) también permiten estas longitudes.

Los algoritmos SHA3 se pueden modificar a » SHAKE » algoritmos y permiten una salida de longitud arbitraria. Puedes encontrar información adicional en esta pregunta anterior .

Seguridad

Hashes que solo hacen uso de la estructura Merkle – Damgård y generan su El estado l (o casi completo) es vulnerable a ataques de extensión de longitud .

Los algoritmos SHAKE también son útiles para Relleno de cifrado asimétrico óptimo .


Puede ver una comparación directa aquí (wikipedia) .

Comentarios

  • Estrictamente hablando, » Hashes que utilizan Merkle – Damg å la estructura de rd es vulnerable a los ataques de extensión de longitud » es incorrecta. Los contraejemplos incluyen SHA-512/256 y SHA-384, porque no muestran su estado completo. Otro es SHA-256d, definido como SHA-256d (m) = SHA-256 (SHA-256 (m)), porque oculta el estado del primer hash. Lo que es válido es que » Hashes que solo hacen uso de la å estructura rd de Merkle – Damg y mostrar su estado completo (o casi completo) son vulnerables a ataques de extensión de longitud «. Hay ‘ s otra diferencia entre SHA-2 y SHA-3: el último es más fácil de usar como MAC.
  • ¿Qué quieres decir con » más fácil de usar » como MAC? ¿Más seguro / más rápido / implementación?
  • Podemos construir un MAC con un argumento de seguridad de SHA-3 como $ \ text {SHA-3} (K \ | M) $ (para una longitud de $ K $ eso depende de la variante SHA-3 y debería ser uh, no ‘ no lo sé con seguridad); cuando no ‘ no tenemos tal argumento con SHA-2 (incluso cuando la propiedad de extensión de longitud no se aplica). Consulte la sección 5.1.12 de Funciones criptográficas de la esponja .

Deja una respuesta

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