È possibile forzare un file crittografato con un file di chiavi?

1

Se qualcuno ha usato un file di chiavi (4092 bit di entropia) per crittografare un file e lo ha rinforzato con Hashcat ... Hashcat deve indovinare i dati del blob nel file di chiavi per violare il file crittografato?

$ 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  �
    
posta user190181 30.10.2018 - 19:19
fonte

2 risposte

0

Prima di tutto, hashcat crepa hashes , mentre AES è un codice a blocchi. Sei sicuro che hashcat possa persino fare AES? Non lo vedo elencato nella manpage di hashcat .

Supponiamo che possa e prendi questo benchmark hashcat di 250MH / s su un singolo GTX1080 come nostra velocità di cracking. 2 4096 possibilmente chiavi divise per 250 milioni di ipotesi al secondo = 1x10 1206 x età dell'universo [ source: wolfram alpha ].

(Inoltre, dove sulla Terra hai ottenuto una chiave AES a 4096 bit? Se stai usando AES-256, probabilmente usa solo i primi 256 bit del file di chiavi. 256 / 250MH / s è sceso a solo 1x10 51 x età dell'universo.)

Quindi dovresti affrontare il problema di "come sa hashcat quando ottiene la chiave giusta?" Per questo, dovresti sapere qualcosa su quale testo in chiaro ti aspetti di vedere nel file crittografato.

TL; DR: È possibile , a condizione che A) hashcat supporti i cifrari a blocchi, B) sai qualcosa del testo in chiaro che stai aspettando, C) sei disposto ad aspettare 1x10 51 x età dell'universo per il completamento.

    
risposta data 30.10.2018 - 19:35
fonte
1

Per prima cosa devo sottolineare che Hashcat non sarebbe lo strumento giusto per il lavoro. Hashcat funziona sugli hash e OpenSSL non memorizza l'hash della chiave. Invece, è necessario disporre di almeno un blocco di testo in chiaro noto, dopo il quale è possibile tentare di forzare la forzatura di una chiave in modo che il testo in chiaro venga crittografato nel testo cifrato visualizzato nel file. Ci sono altri strumenti che possono farlo.

Tuttavia, credo che tu stia fraintendendo il funzionamento del comando che hai specificato. Sfortunatamente, OpenSSL non accetta file di chiavi. Quando gli dai una password sotto forma di file, prende solo la prima riga come password. Questa riga viene elaborata esattamente come se fosse stata passata tramite pass . Ovvero, viene sottoposto a hashing una volta con SHA-256 per formare un valore a 256 bit utilizzato per la chiave AES. Poiché il file che stai utilizzando è binario, è molto probabile che un carattere di nuova riga (0x0a) sia uno dei primi byte.

Se un byte di nuova riga si trova entro i primi otto byte, sarà assolutamente possibile forzare il file crittografato risultante. La probabilità che ogni dato byte sia una newline è 1/256. La possibilità che una nuova riga sia presente nei primi otto byte è solo 1/32. Ciò significa che non è possibile garantire che non sia possibile forzare un file crittografato in modo improprio passando un file binario come chiave.

Quindi, come faresti questo correttamente ? Dovresti eseguire l'hash del file di chiavi e passare l'hash come chiave al comando OpenSSL. Questo può essere fatto facilmente utilizzando le utilità comuni:

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

È quindi possibile passare questa chiave a OpenSSL utilizzando -pass pass:$pass . Questo garantirà che l'entropia della chiave non sarà inferiore all'entropia del file di chiavi che gli dai. Per un file di chiavi a 4092 bit, l'hashing con SHA-256 risulterebbe in una chiave a 256 bit. Forza brutale che richiederebbe fino a 2 256 operazioni di cifratura che, come menziona l'altra risposta, non sarebbe possibile completare prima che l'universo stesso finisca, assumendo ovviamente che il file di chiavi a 4092 bit sia veramente casuale.

    
risposta data 31.10.2018 - 03:48
fonte

Leggi altre domande sui tag