¿Es posible aplicar fuerza bruta a un archivo cifrado con un archivo de claves?

1

Si alguien usara un archivo de claves (4092 bits de entropía) para cifrar un archivo, y lo forzara con Hashcat ... ¿Hashcat tendría que adivinar los datos del blob en el archivo de claves para descifrar el archivo cifrado?

$ dd if=/dev/urandom of=keyfile.key bs=4092 count=1 

$ openssl enc -aes-256-cbc -a -A -in filename.txt -pass file:keyfile.key -out filename.txt.enc

$ cat keyfile.key

@<��B�M�����Yj�TO
               @    d��_G���ݘ'k�M�?�բ�Ƃ��-�b��f(a�Bѩ=> Ξ�U
�uE��s��k���$�N�����/ĢI�HK�N���'�������Js�3�zX>F=�Xy�t˵ǜ�NK�ZA7ݺrˤ��>��0R�n�k�T8gbX�����8��� ��v�
                                                                                                    �~6�    ,���;�*{U{�+]�%N]������Y��(�JT�@��������
�~p@�p��R�rU�_�(��3��9- k�Ɛ��v-}7���\o_��pJ�@�<jc���$S
�rwi�2�6��������R4ȓ�B鶒o�7����}���MВcBU0�t_^9�@�d)
��{Gg|@m~8�g΅��<�
*3ByPHvO�%

                                              ��D�YXR&�7}k���L�u�Bj���44yj��j�w选a��R��@���NO����q  �
    
pregunta user190181 30.10.2018 - 19:19
fuente

2 respuestas

0

Primero que nada, hashcat agrieta hashes , mientras que AES es un cifrado de bloque. ¿Seguro que hashcat puede incluso hacer AES? No lo veo listado en la página de manual de hashcat .

Supongamos que es posible, y tome esta referencia de hashcat de 250MH / s en una sola GTX1080 como nuestra velocidad de craqueo. 2 4096 posiblemente claves divididas por 250 millones de conjeturas por segundo = 1x10 1206 x edad del universo [ fuente: wolfram alpha ].

(Además, ¿de dónde sacó una clave AES de 4096 bits? Si está utilizando AES-256, es probable que solo esté utilizando los primeros 256 bits del archivo de claves. 2 256 / 250MH / s se ha reducido a solo 1x10 51 x edad del universo.)

Entonces enfrentarías el problema de "¿cómo sabe el hashcat cuando obtiene la clave correcta?" Para eso, deberías saber algo sobre el texto sin formato que esperas ver en el archivo cifrado.

TL; DR: Es posible , siempre que A) hashcat sea compatible con cifrados de bloques, B) sabes algo sobre el texto simple que estás esperando, C) estás dispuesto a esperar 1x10 51 x edad del universo para que se complete.

    
respondido por el Mike Ounsworth 30.10.2018 - 19:35
fuente
1

Primero, debo señalar que Hashcat no sería la herramienta adecuada para el trabajo. Hashcat funciona en hashes, y OpenSSL no almacena el hash de la clave. En su lugar, necesitaría tener al menos un bloque de texto plano conocido, después de lo cual puede intentar forzar la fuerza bruta de una clave que hace que ese texto simple se cifre en el texto cifrado que se ve en el archivo. Hay otras herramientas que pueden hacer esto.

Sin embargo, creo que no está entendiendo cómo funciona realmente el comando que ha especificado. Desafortunadamente, OpenSSL no toma archivos de claves. Cuando le da una contraseña en forma de archivo, solo toma la primera línea como la contraseña. Esta línea se procesa exactamente como si la pasara a través de pass . Es decir, se procesa una vez con SHA-256 para formar un valor de 256 bits que se usa para ingresar la clave AES. Debido a que el archivo que está utilizando es binario, es muy posible que un carácter de nueva línea (0x0a) sea uno de los primeros bytes.

Si sucede que un byte de nueva línea está dentro de los primeros ocho o más bytes, será absolutamente posible forzar el archivo cifrado resultante. La probabilidad de que cualquier byte dado sea una nueva línea es 1/256. La posibilidad de que una nueva línea esté presente en los primeros ocho bytes es solo de 1/32. Esto significa que no hay garantía de que no sea posible forzar de forma bruta un archivo que cifró incorrectamente al pasar un archivo binario como clave.

Entonces, ¿cómo harías esto correctamente ? Usted querría hacer el hash del archivo de claves y pasar el hash como una clave al comando OpenSSL. Esto se puede hacer fácilmente usando utilidades comunes:

pass=$(sha256sum keyfile.key | awk {'print $1'})

Luego puede pasar esta clave a OpenSSL usando -pass pass:$pass . Esto garantizará que la entropía de la clave no será inferior a la entropía del archivo de claves que le proporcione. Para un archivo de claves de 4092 bits, el hashing con SHA-256 resultaría en una clave de 256 bits. La fuerza bruta que requeriría realizar hasta 2 operaciones de cifrado 256 que, como se menciona en la otra respuesta, no sería posible completar antes de que finalice el universo, asumiendo que el archivo de claves de 4092 bits es realmente aleatorio.

    
respondido por el forest 31.10.2018 - 03:48
fuente

Lea otras preguntas en las etiquetas