Rondas de algoritmos de hash MD5 y SHA512

4

¿Cuál es el número exacto de rondas empleadas por los algoritmos de hashing MD5 y SHA512?

Según diversas fuentes, el algoritmo de hash SHA512 emplea un total de 80 rondas ( enlace ).

Por otro lado, estoy confundido cuando se trata del algoritmo de hash MD5. Según Wikipedia, MD5 emplea 64 rondas ( enlace ). Sin embargo, otro sitio web afirma que MD5 emplea 4 rondas ( enlace ). ¿Quién es el correcto de los dos por favor?

Parece que no puedo encontrar una fuente confiable de información con respecto al número de rondas. Además, ¿cuáles son estas rondas exactamente? En términos simples, ¿qué hace el algoritmo de hashing durante estas rondas? Muchas gracias :))

    
pregunta Matthew 23.07.2013 - 18:39
fuente

2 respuestas

10

No hay una noción objetiva, sistemática y consistente de lo que es una "ronda". Cada especificación de algoritmo define las cosas a su manera.

MD5 se describe como primer relleno y luego divide su entrada en bloques de 512 bits . Luego, como lo indica el RFC, hay cuatro rondas en las que cada ronda es una secuencia de 16 operaciones muy similares. Así que podríamos decir que MD5 usa "cuatro rondas" (por bloque). Sin embargo, los criptógrafos pronto han rechazado esta terminología, y cuando hablan de las debilidades potenciales de MD5, se concentran en las operaciones internas, que llaman "rondas". En esa vista, MD5 tiene 64 rondas.

SHA-512 se especifica de manera similar a la entrada de relleno y ruptura datos en bloques de 1024 bits, y cada bloque se procesa con un bucle que se repite 80 veces la secuencia de 4 pasos . Así que podríamos decir que SHA-512 usa "320 pasos" (por bloque). De nuevo, los criptógrafos están de acuerdo, más o menos implícitamente, en hablar de "80 rondas". Se puede observar que cada una de estas rondas implica aproximadamente el doble de operaciones que una "ronda" de MD5 (cuando se dice que MD5 tiene 64 rondas), por lo que se podría argumentar que el SHA-512 en realidad tiene 160 rondas. O no.

Estos problemas de terminología no son importantes siempre y cuando todos estén de acuerdo sobre lo que están hablando. El punto importante es que no hay una noción absoluta de "ronda" que sea más correcta que cualquier otra, o que podría permitir comparar diferentes algoritmos basados en "cuántas rondas tienen".

En cuanto a saber qué sucede dentro de las rondas, la forma más sencilla de saberlo es leer la especificación e implementarla en algún idioma. Esto no es difícil (comience con MD5) y es un gran experimento pedagógico.

    
respondido por el Tom Leek 23.07.2013 - 19:57
fuente
9

Las funciones de hash suelen funcionar realizando una sola operación una y otra vez. Cada vez que se llama "ronda".

Es un poco como remover una olla: no puedes esperar mezclar bien cualquier cosa con solo un giro de la cuchara. Pero agite el tiempo suficiente y ya no se puede determinar el estado original de los ingredientes.

Aquí hay un ejemplo de una ronda de SHA-1. Un solo bloque de datos se divide en partes más pequeñas, con ciertas operaciones realizadas en cada parte dependiendo de su posición. Al final, las posiciones se desplazan un poco y se ejecuta la función nuevamente.


[Vea la página de Wikipedia para ver lo que significan los símbolos]

En cuanto a dónde encontrar el número de rondas; la mayoría de las descripciones técnicas proporcionarán estos detalles, incluso típicamente Wikipedia. Pero si desea la definición más precisa y confiable, la especificación técnica original presentada en NIST es la fuente definitiva.

    
respondido por el tylerl 23.07.2013 - 19:13
fuente

Lea otras preguntas en las etiquetas