¿Qué significan las colisiones y rondas al intentar romper un algoritmo SHA?

SHA es una familia de funciones hash criptográficas. El objetivo es proporcionar una salida determinista para cada entrada dada, pero hacer que sea imposible encontrar otras entradas que produzcan la misma salida.

Por ejemplo, suponga que detecta si un archivo ha cambiado. Debería poder comparar simplemente los valores hash antiguos y nuevos, en lugar de comparar todo el archivo. Un atacante malintencionado podría querer cambiar el archivo a un archivo diferente con el mismo valor hash (por ejemplo, si el archivo almacena una serie de transacciones de Bitcoin, podría agregar más dinero para sí mismo). Pero debería ser imposible para ellos hacer esto.

Si dos entradas diferentes producen la misma salida, se dice que colisionan. Las colisiones son muy malas, porque hacen que la función hash sea insegura.

Para evitar colisiones, cada uno de los algoritmos SHA realiza docenas de rondas de intercambio de bits entre diferentes ubicaciones y las envía XOR con otros bits en la entrada. Es una forma determinista de codificar toda la información que es (con suerte) imposible de revertir.

Si la salida es de 128 bits, entonces la posibilidad de que dos entradas aleatorias colisionen es 1 en 2 ^ 128, o aproximadamente 1 en mil millones de billones de billones. Es mucho más probable que gane la lotería Powerball y luego sea alcanzado por un rayo dos veces que al azar encontrar una colisión.

El algoritmo SHA tiene rondas donde la salida de la ronda anterior se alimenta a la siguiente ronda. La idea es que para cualquier entrada no hay colisión en la salida. Por lo tanto, los criptógrafos a menudo atacan versiones simplificadas de un algoritmo para encontrar debilidades. Por supuesto, los ataques futuros se basan en los ataques más antiguos. Como dice el dicho, los algoritmos solo se debilitan, nunca se fortalecen. Cada artículo publicado sobre un mejor ataque reduce el costo de atacar con éxito un algoritmo.

Entonces, para un algoritmo como SHA1 que es apenas lo suficientemente fuerte, cada uno de esos documentos es preocupante. Por esa razón, se recomienda que los nuevos sistemas utilicen algoritmos más nuevos y que las implementaciones existentes funcionen en una migración hacia algo más fuerte.

Por razones similares, NIST mantuvo un contenido para la implementación de SHA3 y el ganador fue anunciado el verano pasado.