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_policy
que 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:
- faça uma cópia dd bruta de todo o sistema de arquivos
- alterar o UUID do sistema de arquivos
- 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 e4crypt
or debugfs
.
debugfs
em particular, parece ser desprovido de recursos relacionados a políticas/criptas, exceto ls -r
aqueles que mostram nomes de arquivos criptografados em toda a sua glória, o \x1e\x5c\x8d\xe2\xb7\xb5\xa0N\xee\xfa\xde\xa66\x8axY
que significa que os shows regulares da representação ASCII ls
sã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 ls
mostra-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 :-}