Como a podridão de bits afeta um contêiner LUKS e o sistema de arquivos dentro?
Suponha que você tenha um sistema de arquivos adequado para lidar com a podridão de bits. Agora coloque-o dentro de um contêiner LUKS. Caso o bit rot tenha corrompido o contêiner, presumo que o sistema de arquivos descriptografado sofrerá grandes quantidades de bytes / blocos brutos corrompidos.
Como o LUKS protege contra isso?
Bitrot no cabeçalho LUKS (chave e material crítico): é *poof* desaparecido.
(Há um pouco de redundância e soma de verificação para o cabeçalho LUKS2, mas não cobre muito, então as chances são... ainda está desaparecido).
Bitrot em dados criptografados: depende do modo de criptografia, mas em geral, um único bit flip resultará em 16 bytes errados.
Configure a criptografia:
Faça tudo zero:
Vire um pouco:
Resultado:
Um bit invertido, 16 bytes malucos.
Proteção? Nenhum. Para isso, você teria que adicionar integridade (apenas para relatar erros, a redundância ainda é um problema separado disso).
Você não deve gravar deliberadamente dados corrompidos em seu armazenamento.
O armazenamento deve relatar erros de leitura em vez de retornar dados falsos. Nesse caso, seus dados ainda desapareceram, mas pelo menos não é um bitrot silencioso .
O próprio LUKS não protege contra a podridão de bits. Se você deseja proteção contra a podridão de bits no nível do dispositivo de bloco, você precisa da integridade do DM . O LUKS 2 pode ser combinado com integridade para obter criptografia autenticada (
cryptsetup luksFormat
com--integrity
) e com esse sistema será capaz de detectar que os dados foram alterados, mas isso não é realmente útil contra a podridão de bits - o setor simplesmente fornecerá um erro de IO se você tenta ler e não sabe como resolver. (O objetivo do AEAD é detectar que alguém alterou os dados criptografados.)Para corrigir os dados, você precisará do RAID 1 e do dispositivo de integridade autônomo sob as pernas do RAID para possibilitar a autocura (isso funciona automaticamente, o RAID obtém o erro de IO de uma perna, lê os dados da outra e corrige (tenta ) o primeiro). O novo systemd 250 adicionou suporte para montagem de dispositivos de integridade durante a inicialização
/etc/integritytab
(para sistemas de arquivos não raiz) para que você possa tentar isso. Mas tudo isso precisa ser feito "abaixo" do nível LUKS para que funcione como @frostschutz mostrou em sua resposta porque o erro precisa ser corrigido nos dados criptografados.