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.