Qual é a resiliência dos volumes criptografados VeraCrypt e LUKS contra a corrupção de dados?

19

A pergunta foi parcialmente respondida, mas ainda não é exatamente o que estou procurando. Consulte a Atualização 1 para baixo

Estou planejando criptografar alguns sistemas de arquivos com VeraCrypt e LUKS, mas meu medo é que, se um único problema acontecer, eu não conseguiria montar as partições novamente, perdendo todos os dados armazenados dentro delas. (devido a setores / blocos danificados, falta de energia durante uma operação de gravação, erros no sistema de arquivos etc.)

Além disso, o VeraCrypt pode ter bifurcado as ferramentas de reparo do TrueCrypt, mas não estou contando com isso e procurando mais sobre casos reais.

Eu também sei sobre RAID e backups / cofres, mas não é o que estou procurando.

Portanto, a pergunta é: Qual a resiliência das próprias partições criptografadas com o VeraCrypt e LUKS?

Atualização 1 :

Minha pergunta é mais sobre a resiliência da partição criptografada e seus dados, em vez de salvar a chave mestra, os metadados ou os cabeçalhos. O problema é semelhante a um arquivo 7zip sólido: se um único bit estiver danificado no meio, você perderá todo o arquivo.

As partições criptografadas serão tão vulneráveis? (excluindo chave mestra, metadados e cabeçalhos)

PS: Desculpe, se eu não responder imediatamente, estou trabalhando e viajando pelo mundo - para tornar esse post relacionado - e muitas vezes enfrento negócios que exigem muito tempo. Mas, com certeza vou responder com certeza.

X.LINK
fonte

Respostas:

13

Na prática, é quase tão resistente com a criptografia quanto sem ela, desde que você faça backup da chave mestra e dos metadados corretamente.

Além dos metadados, a corrupção afetaria apenas o bloco do bit corrompido, na maioria dos casos apenas 16 bytes dele.

Na maioria das situações de corrupção de dados, com a chave e as ferramentas (como sua senha e Veracrypt / LUKS), você tem o mesmo acesso que um disco não criptografado, assim como normalmente faz com o uso diário de um disco criptografado. A criptografia adicionaria apenas uma etapa adicional (abra uma partição criptografada) ao normal. Portanto, nesse caso, ele se comporta como dados não criptografados.

Com o Veracrypt ou o Luks, você precisa armazenar a chave mestra no disco, criptografada com sua senha. Danificar esse (s) setor (es) causaria perda permanente de dados. Isso pode ser facilmente resolvido com o backup da chave mestra (tamanho de alguns kilobytes), algo fácil de fazer nos dois softwares e é altamente recomendado para todos.

Detalhes sobre não metadados

O Veracrypt e o Luks usam o XTS hoje. Nesse modo, é calculada uma chave para cada bloco. Em uma simplificação, para criptografar o bloco, ivocê usa uma chave gerada com as Chaves mestras e o número do bloco. Portanto, a criptografia de um bloco é independente de outro. Se você corromper algumas informações, elas serão restritas a esse bloco.

No XTS, ele quebra o bloco em sub-blocos (normalmente de 16 bytes) e cria uma chave e criptografa esse sub-bloco com ela. Isso significa que, se mudarmos um pouco, apenas esses 16 bytes serão afetados.

Como teste, alterando um único bit em um volume Luks, ele altera 16 bytes do arquivo original para sem sentido, mas os outros 496 ainda permanecem inalterados. Em um arquivo 7zip, ele usa um método de fluxo, em que todos os bytes são encadeados, portanto, uma alteração de byte afetaria todos os restantes - esse não é o caso aqui.

Alguns consideram isso um problema, como você pode saber com precisão de 16 bytes quando e onde você altera um texto sem formatação, comparando apenas os dados criptografados.

Informações mais interessantes sobre isso podem ser encontradas nesses links:

/crypto/6185/what-is-a-tweakable-block-cipher

/security/39306/how-secure-is-ubuntus-default-full-disk-encryption

https://en.wikipedia.org/wiki/Disk_encryption_theory

Detalhes sobre a chave mestra

LUKS

O LUKS possui alguns setores no início da partição (ou disco) com metadados, armazenando métodos de criptografia, outros parâmetros e 8 slots de chave. Para criptografar e descriptografar o disco, ele usa uma Chave Mestra , um grande número aleatório gerado ao criar um contêiner LUKS. Para armazená-lo, ele criptografa a Chave Mestra com sua senha, iterando uma função de hash criptográfico várias vezes sobre a senha e gerando uma chave específica para esse slot. Você pode ter 8 senhas diferentes para o mesmo disco, cada uma criptografando a chave mestra com uma senha diferente em um slot. Quando você altera a senha, é tão simples quanto criptografar a chave mestra e não alterar toda a partição.

Portanto, quando esses slots e metadados estão corrompidos, não é possível recuperar a chave mestra que é realmente usada para descriptografar, perdendo todos os dados no disco. Essa é uma maneira fácil de destruir rapidamente todos os seus dados. Mas se você tiver um backup do Volume Header, é muito fácil recuperá-lo.

Abaixo está uma cópia das Perguntas frequentes do LUKS sobre backup extraído de https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#6-backup-and-data-recovery

6.2 Como eu faço backup de um cabeçalho LUKS?

Embora você possa copiar o número apropriado de bytes desde o início da partição LUKS, a melhor maneira é usar a opção de comando "luksHeaderBackup" do cryptsetup. Isso também protege contra erros quando parâmetros fora do padrão foram usados ​​na criação da partição LUKS. Exemplo:

cryptsetup luksHeaderBackup --header-backup-file <file> <device>

Para restaurar, use o comando inverso, ou seja,

cryptsetup luksHeaderRestore --header-backup-file <file> <device>

Se você não tiver certeza sobre um cabeçalho a ser restaurado, faça primeiro um backup do atual! Você também pode testar o arquivo de cabeçalho sem restaurá-lo usando a opção --header para um cabeçalho desanexado como este:

cryptsetup --header <file> luksOpen <device> </dev/mapper/ -name>

Se isso desbloquear seu lote de chaves, você estará bem. Não se esqueça de fechar o dispositivo novamente.

Sob algumas circunstâncias (cabeçalho danificado), isso falha. Em seguida, use as seguintes etapas:

Primeiro determine o tamanho da chave mestra:

cryptsetup luksDump <device>

dá uma linha do formulário

MK bits:        <bits>

com bits iguais a 256 para os padrões antigos e 512 para os novos padrões. 256 bits é igual a um tamanho total de cabeçalho de 1'052'672 bytes e 512 bits um de 2MiB. (Consulte também o Item 6.12) Se o luksDump falhar, assuma 2MiB, mas lembre-se de que, se você restaurar isso, também poderá restaurar os primeiros 1M do sistema de arquivos. Não altere o sistema de arquivos se você não conseguiu determinar o tamanho do cabeçalho! Com isso, a restauração de um backup de cabeçalho muito grande ainda é segura.

Segundo, despeje o cabeçalho no arquivo. Existem várias maneiras de fazer isso. Prefiro o seguinte:

head -c 1052672 <device>  >  header_backup.dmp

ou

head -c 2M <device>  >  header_backup.dmp

para um cabeçalho 2MiB. Verifique o tamanho do arquivo de despejo para ter certeza. Para restaurar esse backup, você pode tentar luksHeaderRestore ou executar uma ação mais básica

cat header_backup.dmp  >  <device>

Veracrypt

O Veracrypt é semelhante ao LUKS. Não estou acostumado com isso como estava com o Truecrypt, mas a ideia geral é válida.

O Veracrypt possui apenas um slot de chave, portanto você não pode ter mais de uma senha ao mesmo tempo. Mas você pode ter um volume oculto: ele armazena os metadados no final da partição (ou disco ou arquivo). O volume oculto tem uma chave mestra diferente e usará o final da partição como espaço sobreposto. A idéia de que você deve fazer backup é a mesma. Isso pode ser feito com Tools -> Backup Volume Headere Tools -> Restore Volume Header. Com a criptografia do sistema, ele costumava criar um disco inicializável com backup de chave que recupera o carregador e as chaves do Truecrypt, se ocorrer algum dano. Isso é feito antes de criptografar qualquer coisa, e até onde eu sei, o Veracrypt continua fazendo o mesmo.

Para obter mais detalhes, consulte este link https://veracrypt.codeplex.com/wikipage?title=Program%20Menu

Considerações de segurança sobre chaves de backup

Se você tiver uma senha vazada, por exemplo, e alterar a senha do volume para uma nova, forte e segura, alguém com acesso ao backup ainda poderá descriptografar os arquivos com a senha antiga. O backup é basicamente a Chave Mestra criptografada com a senha (antiga). Portanto, ao alterar senhas, também é necessário fazer um novo backup e destruir os mais antigos. E destruir dados permanentemente pode ser muito complicado.

Para cada backup que você possui com essa senha, é uma maneira possível de descriptografar dados com essa senha. Isso pode ser usado no Veracrypt, por exemplo, usando uma "Senha universal" (como em uma corporação), fazendo backup e alterando para outra senha. Então, o departamento de TI. poderia recuperar o acesso a esse volume mesmo que alguém perdesse a senha (pense como uma senha mestra, mas não confunda com a chave mestra anterior).

Considerações finais (TL; DR)

A probabilidade de danificar o setor específico com a chave mestra é menos provável do que uma falha completa do disco. Portanto, se esses dados forem importantes, você deve fazer um backup deles, apenas os cabeçalhos de volume (chave mestra).

E a corrupção de dados se espalha pouco (16 bytes), resultando aceitável para a maioria dos usos.

Portanto, um bloco defeituoso no meio da partição ou disco afetaria apenas esse bloco. E alguns erros de bits em um setor são restritos a esse setor e nem sequer afetam totalmente um setor de 512 bytes.

Atualização (23/01/2017): adicione mais informações com base nos comentários do OP.

Allan Deamon
fonte
1
Uau, essa foi uma resposta muito extensa e informativa, muito obrigado! No entanto, minha pergunta é mais sobre a resiliência da partição criptografada e dos próprios dados, em vez da chave mestra e dos metadados. O problema é semelhante a um arquivo 7zip sólido: se um único bit estiver danificado no meio, você perderá todo o arquivo. As partições criptografadas agirão da mesma maneira? (chave mestra e metadados excluídos)
X.LINK 15/01
4

Compilei abaixo algumas informações sobre a resiliência dos contêineres VeraCrypt / TrueCrypt.

Da corrupção de dados Veracrypt :

O TC / VC armazena o cabeçalho do volume em dois locais: no início e no final do volume. O do início é o principal e o do final é para backup. Esse mecanismo geralmente é suficiente para permitir o acesso quando uma parte da unidade está danificada ou corrompida porque o dano geralmente é local. se ocorrerem danos no início e no final da unidade, é quase certo que a unidade esteja morta.

Observe que, no caso de uma unidade danificada ou corrompida, você terá a mesma perda de dados que quando não usa criptografia. Isso significa que, mesmo se você conseguir montar o volume, a leitura dos dados poderá estar corrompida. Portanto, sempre pense no backup de dados porque a criptografia não protege contra corrupção de dados.

Do FAQ do VeraCrypt :

O que acontecerá quando uma parte de um volume VeraCrypt for corrompida?

Nos dados criptografados, um bit corrompido geralmente corrompe todo o bloco de texto cifrado no qual ocorreu. O tamanho do bloco de texto cifrado usado pelo VeraCrypt é de 16 bytes (ou seja, 128 bits). O modo de operação usado pelo VeraCrypt garante que, se ocorrer corrupção de dados dentro de um bloco, os blocos restantes não sejam afetados.

O que faço quando o sistema de arquivos criptografado no meu volume VeraCrypt está corrompido?

O sistema de arquivos em um volume VeraCrypt pode ser corrompido da mesma maneira que qualquer sistema de arquivos não criptografado normal. Quando isso acontece, você pode usar as ferramentas de reparo do sistema de arquivos fornecidas com o sistema operacional para corrigi-lo. No Windows, é a ferramenta 'chkdsk'. O VeraCrypt fornece uma maneira fácil de usar esta ferramenta em um volume VeraCrypt: Clique com o botão direito do mouse no volume montado na janela principal do VeraCrypt (na lista de unidades) e, no menu de contexto, selecione 'Reparar sistema de arquivos'.

A corrupção de dados pequenos deve ter apenas efeito local e não destruirá todo o contêiner. No entanto, aconselho a não criptografar um volume / partição inteira e, especialmente, a unidade do sistema, pois a recuperação pode ser mais complicada. Faça bons backups, especialmente para o cabeçalho do volume. E lembre-se de que, assim como em um disco ou pasta real, a corrupção nos cabeçalhos de disco / arquivo pode dificultar a recuperação de dados e exigir utilitários avançados.

Acredito que LUKS não tenha um segundo cabeçalho no disco, portanto, você deve ter ainda mais cuidado ao manter um backup.

harrymc
fonte
Eu já os li, mas isso ainda é um pouco confuso. Além das recuperações feitas através dos cabeçalhos e dos sistemas de arquivos dos contêineres, significa que um setor ruim no meio de um contêiner não o tornará completamente morto e impossível de montar? Pelo que entendi direito, um bloco de texto cifrado funciona exatamente como dentro de um arquivo 7-zip não sólido / ext3 não criptografado ainda montável e com setores físicos ruins?
X.LINK
Não posso falar por volumes criptografados, mas alterar um único bit em um texto criptografado criptografa o lixo por todo o bloco. O tamanho do bloco pode ser 128 bytes ou 256 bytes ou 4kb. Isso não impedirá que o restante do texto cifrado seja descriptografado. Não há como o algoritmo de criptografia saber que o lixo é ruim. Não há soma de verificação nem nada (para AES-CBC). Se esse bloco estiver dentro de um arquivo de texto, ele parecerá lixo no Bloco de Notas. Se fazia parte da estrutura de diretórios, o sistema de arquivos parecerá ilegível e exigirá chkdsk.
Chloe
@ X.LINK: Um bit ruim corromperá todo o seu "setor" de 16 bytes. Dependendo de onde esse setor está localizado, o resultado pode ser zero se cair em uma área não utilizada, ou lixo nesse local no arquivo ou, na pior das hipóteses, uma estrutura de diretórios incorreta que requer o uso de utilitários de recuperação. Isso é muito semelhante a um disco físico em que você possui setores não utilizados, dados de arquivo e tabelas de disco, e seu backup deve seguir diretrizes semelhantes.
harrymc
0

Graças a todas as respostas fornecidas pelas pessoas, a resposta definitiva é 100% completa.

Atualmente, não tenho muito tempo, por isso editarei minha resposta "própria" mais tarde. Como todas as respostas que as pessoas deram aqui são completamente úteis, isso será apenas uma recapitulação do que elas disseram, além das minhas descobertas também.

De qualquer forma, aqui está uma das minhas descobertas que desmascarará muita confusão que conheci, e principalmente preocupada ... o que significa o bloco, já que é um termo usado excessivamente e por engano:

https://sockpuppet.org/blog/2014/04/30/you-dont-want-xts/

Além disso, você encontrará uma maneira "padrão" de falar sobre as coisas aqui e evitará a confusão do 'bloco':

/superuser/1176839/what-are-every-possible-names-of-hard-drives-structure-parts

Em resumo, você pode alterar um bloco criptografado que contém a palavra "400" para "800". Isso significa que a camada criptografada no nível do bloco não é sólida, em vez de acreditar que "isso funcionará como um sistema de arquivos normal" (por exemplo, Veracrypt FAQ).

Além disso, eu deveria ter encontrado esse link há dois meses:

/unix/321488/full-image-of-internal-hdd-drive-dd-dd-rescue-with-truecrypt-bad-sectors/

Como o VeraCrypt é um garfo do TrueCrypt, certamente funcionará da mesma maneira.

PS:

Qualquer resposta adicional ainda é bem-vinda e será adicionada à minha "própria" resposta.

X.LINK
fonte