Como compactar o diretório com criptografia para nomes de arquivos?


17

Usando a linha de comando, sei que posso criptografar um diretório com o seguinte comando:

zip -er Directory.zip /path/to/directory

No entanto, isso não criptografa os nomes dos arquivos. Se alguém executar:

unzip Directory.zip

e digitar repetidamente uma senha incorreta, o comando descompactar passará por todos os nomes de arquivos contidos até que a senha correta seja digitada. Saída de amostra:

unzip Directory.zip 
Archive:  Directory.zip
   creating: Directory/
[Directory.zip] Directory/sensitive-file-name-1 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-1  incorrect password
[Directory.zip] Directory/sensitive-file-name-2 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-2  incorrect password
[Directory.zip] Directory/sensitive-file-name-3 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-3  incorrect password

e assim por diante.

Usando a linha de comando, existe uma maneira de compactar um diretório com criptografia enquanto também criptografa ou oculta os próprios nomes de arquivo?

Obrigado.


Você provavelmente não deseja usar a criptografia padrão do zip, pois ela é fraca; portanto, use 7zipuma vez que usa criptografia baseada em AES.
Pierz

O que é a criptografia padrão do zip e qual é a sua fonte para afirmar que a criptografia padrão do zip não é segura?
Leo Galleguillos 26/03

1
A maioria das ferramentas zip (existem algumas ferramentas zip mais recentes que usam criptografia melhor) ainda usam a cifra PKZIP Stream, que se mostrou fraca em 1994: rd.springer.com/content/pdf/10.1007%2F3-540-60590-8_12 .pdf A Wikipedia página dá uma visão geral básica: en.wikipedia.org/wiki/Zip_(file_format)#Encryption
Pierz

Respostas:


26

Em um arquivo zip, apenas o conteúdo do arquivo é criptografado. Os metadados do arquivo, incluindo nomes de arquivos, não são criptografados. Essa é uma limitação do formato do arquivo: cada entrada é compactada separadamente e, se criptografada, criptografada separadamente.

Você pode usar o 7-zip . Ele suporta criptografia de metadados ( -mhe=oncom a implementação da linha de comandos do Linux).

7z a -p -mhe=on Directory.7z /path/to/directory

Existem implementações 7zip para todos os principais sistemas operacionais e os menores, mas isso pode exigir a instalação de software extra (o IIRC Windows pode descompactar arquivos zip criptografados hoje em dia). Se a exigência de 7z para descriptografia for um problema, você poderá confiar apenas no zip, primeiro utilizando-o para compactar o diretório em um único arquivo e depois criptografando esse arquivo. Se você fizer isso, desative a compactação de arquivos individuais e instrua o zip externo a compactá-lo, você obterá uma melhor taxa de compactação em geral.

zip -0 -r Directory.zip /path/to/directory
zip -e -n : encrypted.zip Directory.zip

1
Provavelmente melhor para evitar o uso de zip para criptografar - pode-se usar 7zip para gerar um arquivo zip com mais segurança criptografado (AES) na 2ª linha:7z a -p -tzip encrypted.zip Directory.zip
Pierz

2

Você pode criar um arquivo usando sua ferramenta favorita e depois usá-la bcryptpara executar criptografia / descriptografia.

A) Para criar um arquivo criptografado:

tar -czf Directory.tgz /path/to/directory
bcrypt Directory.tgz

Isso fornecerá um arquivo criptografado do Blowfish Directory.tgz

B) Para reverter esse processo:

bcrypt Directory.tgz.bfe
tar -xf Directory.tgz

2
A abordagem é boa, mas você deve usar outra ferramenta para criptografia - bcryptusa o EBC, que revela a estrutura dos dados criptografados. Veja o bug Debian # 700758 para detalhes (o Debian bcryptsuporta apenas descriptografia como resultado).
Stephen Kitt
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.