Red de conocimiento del abogados - Preguntas y respuestas jurídicas - El proceso de cálculo de la tabla arcoíris

El proceso de cálculo de la tabla arcoíris

En pocas palabras, es un método para descifrar de manera efectiva algoritmos específicos, especialmente algoritmos asimétricos (como el algoritmo md5). Su proceso consiste en establecer una tabla hash correspondiente a los datos de origen y los datos cifrados. De esta forma, tras obtener los datos cifrados, se pueden localizar rápidamente los datos de origen mediante comparación, consulta o determinadas operaciones. En teoría, si no se tiene en cuenta el tiempo necesario para la consulta, cuanto mayor sea la tabla hash, más eficaz y rápido será el descifrado. Por supuesto, este método es complicado para otros métodos de descifrado (como la colisión), y el efecto se reducirá considerablemente para los algoritmos avanzados modernos, como las claves de longitud variable. Pero pase lo que pase, la tabla arcoíris (hash) es siempre un método inútil pero muy eficaz para cifrar y descifrar datos.

Supongamos que tenemos una función hash de contraseña H y una contraseña P. El enfoque tradicional es enumerar exhaustivamente todas las salidas de H(X) y establecer H(P)=H(x[y]), obtenemos Out P==X[y];

Si bien el encadenamiento hash es una técnica para reducir los requisitos de espacio de los métodos tradicionales, nuestra idea es definir una función de caída R que asigne el valor hash a "P " El valor se obtiene alternando las funciones H y R para obtener la función hash, formando una contraseña y un valor hash alternos.

Por ejemplo: supongamos que P es un conjunto de contraseñas de 6 caracteres y valores hash, una cadena larga de 32 bits. Podría verse así:

aaaaaa -H()->281DAF40 -R()-> sgfnyd -H()-> 9203CF10 --R()-->kiebgt .

Para generar las tablas, elegimos un conjunto aleatorio de contraseñas iniciales de P, calculamos algunas tablas K de longitud fija para cada cadena y almacenamos la primera y la última contraseña en cada cadena. La primera contraseña se llama punto de partida y la última se llama punto final. En la cadena de ejemplo anterior, "AAAAAA" sería el punto de partida, "kiebgt" sería el punto final y no se almacenarían otras contraseñas (o hashes).

Si se proporciona un texto cifrado h, necesitamos revertir la operación (buscar la contraseña correspondiente) y calcular una cadena poniendo R seguida de H, seguida de R seguida de h, y así sucesivamente. Si en algún momento durante esta operación encontramos que el valor en ese punto coincide con uno de los puntos finales de la cadena hash anterior, entonces tenemos el punto de partida correspondiente para la contraseña p que estamos buscando.

Por ejemplo, si nos dan el hash 920ECF10, calcularemos su primera petición?chain: found to:

90E1CF10---R()-->kiebgt p>

Dado que kiebgt es uno de nuestros puntos finales, usaremos otro punto como nuevo punto final, que es encontrar aaaaaa.

aaaaa--H-->281DAF40---R --> sgfnyd--H-->920EC10

Por lo tanto, la contraseña es "sgfnyd".

Sin embargo, si FB107E70 no está en la cadena, pero tiene el mismo punto final AAAAAA, entonces debemos continuar la competencia de descifrado con otro enlace hash.

Hay varios errores en este simple cadenas de hash. Si en cualquier momento dos cadenas chocan entre sí (produciendo el mismo valor), se fusionarán, por lo que la tabla no cubrirá tantos cifrados, a pesar de pagar el mismo costo computacional para producir los más severos. Sin almacenarlos todos debido a cadenas anteriores, es imposible detectarlos de manera eficiente. Por ejemplo, si el tercer valor de la cadena 3 coincide con el segundo valor de la cadena 7, las dos cadenas cubrirán casi la misma secuencia de valores, pero sus valores finales no serán los mismos. Es menos probable que la función hash H produzca colisiones, ya que generalmente se considera una característica de seguridad importante y no lo hace, pero la función de reducción R no es resistente a las colisiones ya que necesita cubrir correctamente posibles textos sin formato.

La otra dificultad es la importancia de elegir la función correcta para R. Elegir la identidad de R no se parece en nada a un enfoque de fuerza bruta. Sólo si el atacante tiene un posible texto sin formato puede elegir una función R, por lo que es una buena idea asegurarse de que sólo se dedique tiempo y espacio a posibles textos sin formato, en lugar de todo el espacio de posibles cifrados.

Antes de afectar a R Shepherd, el resultado del cálculo de hash puede ser texto sin formato, pero esto tiene la ventaja y la desventaja de que es posible que R no produzca todos los textos sin formato posibles en la clase. El atacante quiere verificar el resultado negativo con seguridad, sin la contraseña de la que proviene el atacante. Seleccione una clase. Además, puede resultar difícil diseñar la función R en texto plano para que coincida con la distribución deseada.

El problema de colisión de las tablas arcoíris con cadenas hash ordinarias se resuelve eficazmente reemplazando la secuencia de funciones de resta únicas R con las funciones de resta asociadas de las tablas R 1 a R K. De esta manera, para que dos cadenas colisionen y se fusionen, deben alcanzar el mismo valor en la misma iteración. Por tanto, el valor final en cada cadena será el mismo. Una etapa final de posprocesamiento puede ordenar las cadenas en la tabla para eliminar cualquier cadena "duplicada" de otras cadenas con el mismo valor final. Genera una nueva cadena y completa la tabla. Estas cadenas no están libres de colisiones (pueden superponerse temporalmente), pero no se fusionan, lo que reduce en gran medida el número total de colisiones.

Cómo encontrarlo, use la función de restauración de la secuencia para variar, dado que el valor hash de interés puede encontrarse en cualquier parte de la cadena, es necesario generar K tablas para diferentes cadenas. La primera cadena asume que el valor hash está en la última posición hash y se aplica solo a las tablas R K; la cadena asume que el valor hash está en la penúltima posición hash y se aplica a R ? -1,H, luego a la tabla RK; así sucesivamente hasta que la última cadena, que aplica todas las funciones de restauración, se intercambia con H. Produce una falsa alarma, que creará una nueva ruta: si "adivinamos" el valor hash en la ubicación incorrecta, podemos evaluar una cadena innecesariamente.

Aunque las tablas arcoíris tienen más cadenas a seguir, lo hacen con menos tablas: las listas enlazadas hash simples no pueden crecer y rápidamente se vuelven ineficientes debido a la fusión de cadenas, más allá de un cierto tamaño. Para manejar esto, mantienen múltiples. tablas, y cada búsqueda debe buscar en cada tabla. Las tablas Rainbow pueden lograr el mismo rendimiento, lo que les permite funcionar con un factor de ? menos tablas de búsqueda.