Dado o conhecimento completo dos parâmetros necessários para abrir um volume dm-crypt
, é possível descriptografar um único setor retirado de tal volume?
Suponha que o volume original não esteja disponível, mas o número do setor é conhecido?
Por exemplo, o volume a seguir montado com cryptsetup
:
$ dmsetup --showkey table myvolume
0 104857600 crypt aes-xts-plain64 95264...aacae 0 254:9 0
Digamos que eu usei dd
para extrair o setor 125 do volume bruto:
$ dd if=/dev/sda1 of=raw.sector bs=512 skip=125 count=1
E eu sei da saída acima que a cifra é aes-xts-plain64
e a chave de 256 bits é 95264...aacae
(o exemplo chave é abreviado aqui).
Poderia descriptografar isso sozinho (digamos com openssl
)?
Algo como isso, talvez ...
$ openssl enc -d -in raw.sector -aes-128-xts -K 95264...aacae -iv 7D -out plain.sector
A codificação é de 128 bits porque a chave de 256 bits fornecida é segmentada pelo modo XTS. O vetor de inicialização é 0x7D
porque esse é o número do setor 125. No entanto, não consegui ir além da primeira etapa porque parece que o OpenSSL não suporta XTS ( openssl enc -ciphers
):
link :
if (cipher && (EVP_CIPHER_mode(cipher) == EVP_CIPH_XTS_MODE)) {
BIO_printf(bio_err, "%s XTS ciphers not supported\n", prog);
goto end;
}
(Eu tenho OpenSSL 1.1.0f de 25 de maio de 2017)
Eu também tentei um OpenSSL (1.0.2f) mais antigo que, embora openssl enc -ciphers
o tenha listado, usar a cifra% xts-aes-128-xts
resultou em uma mensagem de erro:
Ciphers in XTS mode are not supported by the enc utility