¿Cómo se implementan las funciones key_derivation y key_verification del mecanismo de cifrado de un archivo 7-zip?

2

Tengo curiosidad acerca de cómo funciona la recuperación de contraseña para archivos protegidos por contraseña. ¡Y quiero saber el flujo exacto del mecanismo de encriptación de 7-zip :)!

7-zip usa el algoritmo de cifrado AES-256 en modo CBC para cifrar archivos o una carpeta. La clave se genera a partir de la frase de contraseña del usuario mediante la función hash SHA-256. La frase de contraseña se procesa usando SHA-256 2 ^ 19 (524288) veces, para aumentar el costo de la búsqueda exhaustiva. Además, para ayudar a reducir el riesgo de ataques de diccionario, se agrega una sal a la frase de contraseña antes de hacer hash.

Mi primera pregunta es: ¿cómo funciona la función key_derivation para generar una clave de 256 bits? ¿Cuál es la importancia de la IV para el modo AES CBC y cómo se genera?

Mi segunda y más importante pregunta es: ¿cómo se verifica la clave para descifrar el archivo 7-zip? ¿Cómo funciona su función de verificación de clave?

    
pregunta Gopal 18.09.2012 - 07:20
fuente

1 respuesta

1

La recuperación de claves funciona así. La herramienta adivina muchas frases de contraseña posibles. Para cada frase de contraseña, comprueba si esa frase de contraseña es correcta. Sigue avanzando hasta que encuentre la contraseña correcta o hasta que te canses y te des por vencido.

Entonces, ¿cómo decimos si la frase de contraseña es correcta? Normalmente el método sería el siguiente. Utilizamos el algoritmo de derivación de claves (el mismo que se usaría cuando descifre el archivo usando el programa 7zip) para calcular la clave AES-256 derivada. Luego, intentamos descifrar algunos bloques del texto cifrado bajo esta clave.

Normalmente, el texto sin formato tiene una constante codificada en alguna posición fija, por lo que podemos verificar si nuestra suposición fue correcta al verificar si esta constante aparece en la posición fija en nuestro descifrado de prueba. (A veces, para algunos formatos de archivo, no hay una constante codificada, pero hay una suma de comprobación, por lo que podemos intentar descifrar y ver si la suma de comprobación es correcta. O, para algunos formatos de archivo, podemos saber que el texto sin formato suele ser ASCII, por lo que podemos verificar el descifrado de prueba para ver si parece un texto ASCII plausible.) El método exacto utilizado depende del formato del archivo, pero generalmente esta etapa no es una barrera seria.

Este enfoque se conoce como descifrado de prueba, búsqueda de diccionario de fuerza bruta o ataque de diccionario. Toda la inteligencia viene en la parte de la que no hablé mucho: cómo elaborar una lista de conjeturas plausibles en la frase de contraseña, en algún orden inteligente.

Consulte también heurística de fuerza bruta utilizada en el descifrado de contraseñas .

    
respondido por el D.W. 18.09.2012 - 08:09
fuente

Lea otras preguntas en las etiquetas