Todos los datos de entrada son archivos .bin generados automaticamente con datos aleatorios utilizando un script en BASH, especificando el tamaño del archivo. En todos los casos se ha utilizado SHA256 para las pruebas de hasheo.
dd
if=/dev/urandom of=files/file-1MB.bin bs=1 count=1048576 # bytes (1MB)
Tecnologías: Python, JavaScript, ChartJS, BASH
El tiempo que tarda en hashearse un archivo de mayor tamaño siempre será superior a uno menor. Un archivo de un volumen de datos 1000 (mil) veces menor, tardará mucho menos en hashearse y lo hará con una relación 1:1250.
La cantidad de hashes por segundo es inversamente proporcional al tamaño del archivo. El proceso de hash tiene una proporción de dificultad aproximada de 125.000:1 por lo tanto es considerablemente mayor cuando el tamaño aumenta en un 1000%.
El dato que se quiere colisionar es un número generado aleatoriamente entre 0 y 1 x 10 10
La cantidad de intentos de colisión por segundo es muy aleatoria. Esto sucede porque en este ejercicio se está tratando de colisionar un número aleatorio contra el hash original.
El dato que se quiere colisionar es un número generado aleatoriamente entre 0 y 1 x 10 10
En este caso la cantidad de intentos es aleatoria entre archivos de distinto tamaño. Sin
embargo queda claro con este gráfico que cuanto mayor es la cantidad de bytes o bits a
colisionar, mayor es el tiempo que demora en encontrarse una colisión.
El maximo para 1 byte fue ~300 intentos, mientras que para 3 bytes fue ~7.700.000
intentos. Esto nos dice que para una colisión 3 veces superior, la dificultad asciende a
25.666 veces la dificultad original. El tiempo insumido es el mismo ya que la proporción
entre los intentos es la misma.
El dato que se quiere colisionar es un número generado aleatoriamente entre 0 y 1 x 10 10
Nuevamente queda demostrado que la dificultad de colisión no depende del volumen de datos sino de la cantidad de bits a colisionar. Como se ve en el gráfico el tiempo insumido incrementa considerablemente cuando se aumenta la cantidad de bytes a colisionar pero vemos variabilidad de tiempos entre archivos de distinto tamaño para colisionar la misma cantidad de bytes. Esta diferencia existe porque el dato a colisionar se genera aleatoriamente.