Copiando arquivos criptografados ext4

Copiando arquivos criptografados ext4

Estou usando criptografia ext4. https://wiki.archlinux.org/index.php/Ext4#Using_file-based_encryption

Antes de descriptografar um diretório, posso ver muitos nomes de arquivos criptografados nele.

Gostaria de copiar os arquivos criptografados para poder descriptografá-los em uma máquina diferente.

Eu poderia fazer isso com ecryptfs. Como faço isso com criptografia ext4.

Responder1

Você pode ver nomes de arquivos criptografados e preenchidos, mas não conseguirá ler o conteúdo do arquivo. Portanto, tentar copiar os arquivos não criptografados resultará em erros como:

cp: cannot open 'vault/YgI8PdDi8wY33ksRNQJSvB' for reading: Required key not available

Então você praticamente não deveria fazer isso. A resposta prática é descriptografá-lo e depois copiá-lo. A cópia será criptografada novamente se você escolher um local criptografado como diretório de destino. Pela rede com rsync/ssh a transferência também será criptografada. Portanto, a maioria das coisas funciona, apenas armazená-las na nuvem provavelmente está fora de questão. A criptografia específica do sistema de arquivos não funciona fora do sistema de arquivos.

Contornar a barreira de leitura não é suficiente: ao contrário do ecryptfs, onde todos os metadados são arquivos normais, a criptografia ext4 envolve metadados ocultos no próprio sistema de arquivos, não visíveis para você, portanto, você não pode copiá-los facilmente.

O mais próximo que encontrei é o e4crypt get_policy, e4crypt set_policyque permite criptografar um diretório com uma chave existente sem saber a chave real em texto não criptografado. Mas só funciona para diretórios vazios, não para arquivos.

Você também pode criptografar um diretório do vault, preenchê-lo com arquivos, vincular esses arquivos ao diretório raiz e, em seguida, excluir o diretório do vault. Você acaba com arquivos criptografados (conteúdo) no diretório raiz (que você não deveria ser capaz de criptografar). O sistema de arquivos apenas sabe que o arquivo está criptografado. (Não é recomendado realmente fazer isso.)


Se você precisar fazer uma cópia de qualquer maneira, acho que você pode fazer isso de maneira indireta:

  1. faça uma cópia dd bruta de todo o sistema de arquivos
  2. alterar o UUID do sistema de arquivos
  3. exclua os arquivos que você não queria

Caso contrário, acho que você precisaria de uma ferramenta especializada que saiba como replicar um diretório criptografado + metadados de um sistema de arquivos ext4 para outro, mas não vi uma maneira de fazer isso com e4cryptor debugfs.


debugfsem particular, parece ser desprovido de recursos relacionados a políticas/criptas, exceto ls -raqueles que mostram nomes de arquivos criptografados em toda a sua glória, o \x1e\x5c\x8d\xe2\xb7\xb5\xa0N\xee\xfa\xde\xa66\x8axYque significa que os shows regulares da representação ASCII lssão codificados de alguma forma para serem impressos.

O nome do arquivo real é [preenchido e realmente armazenado no sistema de arquivos como] 16 bytes aleatórios, mas regular lsmostra-o como 22 caracteres ASCII. Copiar esse arquivo da maneira tradicional criaria um arquivo armazenado como sua representação de caracteres ASCII quando você realmente precisasse armazená-lo como bytes aleatórios. Então isso está fadado a falhar em muitas camadas.


dr.se existe uma maneira de fazer isso, então não sei :-}

informação relacionada