¿Cómo es una función hash que implementa la resistencia a la colisión del modelo oracle aleatorio?

El objetivo de una función hash es tomar una entrada arbitraria y distribuirla aproximadamente de manera uniforme sobre el espacio hash restringido. Cuanto más uniforme sea la distribución, más probable es que la función hash tenga resistencia a la colisión.

Por definición, una función hash tiene un rango de salida finito y una entrada de rango infinito. Por lo tanto, el principio del casillero siempre se aplica, se use o no ROM.

El problema es que la entrada a una función hash generalmente tendrá algún patrón. El texto se agrupará de manera diferente a las imágenes, que se agruparán de manera diferente al video, y así sucesivamente. La falta de uniformidad de entrada hace que la creación de una función hash genérica sea muy difícil. Si puede predecir algo sobre la entrada en función de cómo se agrupan los hashes, su algoritmo de hash tiene una utilidad inferior a la que no tiene. Si la función hash pierde suficientes datos para hacer posible la invertibilidad, es una falla total.

Un oráculo aleatorio es una función teórica idealizada que garantiza una distribución aleatoria y uniforme (uniforme) de salidas (hashes) que corresponden exactamente a la entrada. Es decir, la misma entrada siempre produce la misma salida. Estos son los principios ideales de una función tiene.

Un oráculo aleatorio es una construcción teórica que no existe en la realidad.

Por lo tanto, no necesita preocuparse por trivialidades mundanas, como la forma de implementar realmente la resistencia a colisiones.

Un oráculo aleatorio se define simplemente como resistente a colisiones.

En la práctica, la función hash no (criptográfica) es un verdadero oráculo aleatorio, sin embargo, muchos se acercan mucho.

Tome la función hash MD5 simple y ya rota: la posibilidad de que dos entradas aleatorias tengan el mismo valor de salida es 1: 10 ^ 61.