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.

Leo Galleguillos
fonte
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
Gilles 'SO- parar de ser mau'
fonte
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
Jedi
fonte
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