Como dm-crypt os dados apenas uma vez pelo RAID no nível do sistema de arquivos?

1

Eu gostaria de usar o dm-crypt com o btrfs, por causa da proteção do bitrot deste sistema de arquivos. O que me preocupa é que o RADI1 está no nível do sistema de arquivos acima do dm-crypt, então se eu gravar um arquivo, ele será criptografado duas vezes.

HDD.x ⇄ dm-crypt.x ↰
                    btrfs-raid1 ⇒ btrfs
HDD.y ⇄ dm-crypt.y ↲

Existe uma maneira de criptografar os dados apenas uma vez, por exemplo, via dm-crypt.x e armazenar exatamente a mesma cópia em ambos os HDDs? (De acordo com o FAQ do btrfs eu preciso do encryptfs para fazer algo assim:

HDD.x ↰
       btrfs-raid1 ⇒ btrfs ⇄ ecryptfs
HDD.y ↲

mas eu prefiro usar dm-crypt se for possível não obter a penalidade de desempenho extra usando o btrfs RAID1.

    
por inf3rno 15.01.2018 / 20:08

1 resposta

2

Com o BTRFS, atualmente não existe essa opção diretamente integrada. Houve conversas no passado na lista de discussão do BTRFS sobre como adicionar suporte para a VFS Encryption API (a mesma coisa usada pelo ext4 e pelo F2FS para a criptografia de arquivos transparente), mas que parece nunca ter ido a lugar nenhum.

No momento, a única maneira de conseguir o que você quer é colocar a replicação fora do BTRFS, o que elimina a maioria dos benefícios da soma de verificação no BTRFS. O eCryptFS é uma opção, mas quase sempre será mais lento que usar o dm-crypt no BTRFS. O EncFS pode ser uma opção, mas eu não sei nada sobre o seu desempenho (também é baseado no FUSE, e como regra geral as camadas do FUSE em cima do BTRFS são dolorosamente lentas).

Como uma alternativa para tudo isso, você pode considerar o uso de um sistema de arquivos mais convencional sobre o RAID regular (através do MD ou LVM), colocar isso no topo do alvo dm-integridade (que faz a verificação criptográfica do armazenado Os dados, essencialmente, funcionam como uma versão gravável do alvo dm-verity que o Android e o ChromeOS usam para verificar a integridade de suas partições do sistema) e, em seguida, colocam isso em cima de dm-crypt. Fazer isso requer um kernel com suporte a integridade de dm (não me lembro exatamente quando foi adicionado, mas foi no ano anterior), e uma versão do cryptsetup que o suporta. Isso lhe dará o mesmo nível de verificação de integridade que a criptografia no estilo AEAD. Infelizmente, para fornecer a mesma capacidade de correção de erros que o BTRFS, você terá que colocar dm-crypt e dm-integrity sob a camada RAID (caso contrário, o erro de E / S da integridade do dm não será visto pelo RAID camada, e, portanto, nunca será devidamente corrigido por ele).

    
por 15.01.2018 / 20:37