Vamos supor que eu perdi um pen drive USB criptografado com LUKS. Acho que o tipo de sistema de arquivos (ext4/fat32/...) não desempenha um papel. Um estrangeiro o encontra. Claro que ele não pode acessar meus dados porque não tem a senha. Mas ele pode alterar um único byte no meio dos dados "brutos" para que os dados sejam danificados.
Depois que o pen drive for devolvido para mim, é possível verificar se meus dados foram danificados ou não?
Achei que a leitura de todo o dispositivo mapeador causaria um erro de E/S, mas infelizmente isso não aconteceu. Eu também verifiquei dmesg
.
# create an all zero 100MiB file
dd if=/dev/zero of=moh bs=100M count=1
# format it as LUKS device
/usr/sbin/cryptsetup luksFormat moh
# map it to /dev/mapper/moh
sudo cryptsetup luksOpen moh moh
# initialize mapper file to zero
sudo dd if=/dev/zero of=/dev/mapper/moh
# close LUKS device
sudo cryptsetup luksClose moh
# overwrite 1MiB with zeroes at offset 10MiB. After this the LUKS device is damaged.
sudo dd if=/dev/zero of=moh conv=notrunc bs=1M seek=10 count=1
# open LUKS device and see if it complains
sudo cryptsetup luksOpen moh moh
# read all data to see if it complains
sudo dd if=/dev/mapper/moh of=/dev/null
Os comandos acima provam que abrir e ler um dispositivo LUKS danificado não produz nenhum erro.
Observe que não desejo executar nenhuma verificação do sistema de arquivos. Em vez disso, quero verificar se o dispositivo LUKS está intacto no nível de criptografia.
Como estou procurando um único comando para verificar um dispositivo luks, espero que você entenda que esta não é uma questão de programação mais adequada para SO.
É possível, mas não com LUKS "simples", você precisa configurar a criptografia autenticada. Isso é possível com o LUKS v2, você precisa criar o dispositivo LUKS usando a
--integrity
opção comluksFormat
. Isso basicamente adicionará somas de verificação para os dados criptografados para garantir a integridade, sem isso LUKS/dm-crypt simplesmente não se importa (ou sabe) o que está no disco e se você sobrescrever com zeros, ele "descriptografará" esses zeros. Consulte a seção Criptografia de disco autenticado na página do manual cryptsetup para obter mais detalhes.