Como proteger com senha os arquivos gzip na linha de comando?


130

Eu quero criar alguns arquivos tar.gz (e possivelmente tar.bz2), usando o comando tar no Ubuntu 10.04.

Quero proteger com senha o arquivo.

Qual é o comando para fazer isso (eu pesquisei no Google, mas não encontrei nada que mostre como criar e extrair arquivos compactados usando uma senha).

Alguém sabe como se faz isto?

Respostas:


159

você deve aplicar a filosofia unix a esta tarefa: uma ferramenta para cada tarefa.

tarar e compactação é um trabalho para tare gzipou bzip2, criptografia é um trabalho para gpgou openssl:

Criptografar

 % tar cz folder_to_encrypt | \
      openssl enc -aes-256-cbc -e > out.tar.gz.enc

Descriptografar

 % openssl enc -aes-256-cbc -d -in out.tar.gz.enc | tar xz

Ou usando gpg

 % gpg --encrypt out.tar.gz

a variante openssl usa criptografia simétrica, você teria que informar à parte receptora sobre a 'senha' usada (também conhecida como 'a chave'). a variante gpg usa uma combinação de criptografia simétrica e assimétrica, você usa a chave da parte receptora (o que significa que você não precisa informar nenhuma senha envolvida a ninguém) para criar uma chave de sessão e criptografar o conteúdo com essa chave.

se você seguir a rota zip (ou 7z): essencialmente isso é o mesmo da variante openssl, você deve informar a parte receptora sobre a senha.


26
Para quem openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz
quiser

1
@ nathan.f77 esse comando também mostra como fazer as coisas sem direcioná-las para o openssl. openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc
Keith Smiley

3
@KeithSmiley, se você tiver arquivos grandes e pouco espaço (como em um VPS), será mais eficiente em espaço para canalizar.
Andrew Savinykh

Não consigo executar isso em um mac. Isso é diferente de qualquer maneira?
eleijonmarck

3
@eleijonmarck fornece a parte "não funciona porque <inserção-erro-mensagem-aqui>" ...
akira

29

Se sua intenção é apenas proteger arquivos com senha, use o utilitário zip manual através da linha de comando

zip -e <file_name>.zip <list_of_files>

-e pede ao utilitário zip para criptografar os arquivos mencionados em

Exemplo de trabalho:

$ touch file_{0,1}.txt # creates blank files file_0 & file_1    
$ zip -e file.zip file_* # ask zip to encrypt
$ ENTER PASSWORD:
$ VERIFY PASSWORD:
$ ls file*

11
A criptografia de arquivos zip não é segura de forma alguma.
Kristopher Ives

4
@KristopherIves você pode falar sobre a insegurança?
tscizzle


4
@KristopherIves Requer "outro arquivo ZIP, contendo pelo menos um dos arquivos do arquivo criptografado em forma não criptografada " para funcionar.
Franklin Yu

4
"Você precisa conhecer apenas uma parte do texto simples (pelo menos 13 bytes)". Isso o torna muito mais vulnerável do que se um arquivo inteiro não criptografado fosse necessário (o que já é muito ruim). Além disso, a criptografia zip não é resistente a ataques de força bruta (por exemplo, com Jack, o Estripador). Ninguém deveria usá-lo para nada sério.
EM0 24/07/19

21

Aqui estão algumas maneiras de fazer isso. Uma coisa a observar é que, se você usar ferramentas de compactação e criptografia separadas, sempre deverá comprimir antes da criptografia, pois os dados criptografados são essencialmente não compactáveis.

Esses exemplos compactam e criptografam um arquivo chamado clear_text.

Usando gpg

$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress

O gpg comprime o arquivo de entrada antes da criptografia, por padrão, -csignifica usar criptografia simétrica com uma senha. O arquivo de saída será clear_text.gpg. Um benefício do uso gpgé o uso de formatos padrão do OpenPGP; portanto, qualquer software de criptografia que suporte o OpenPGP poderá descriptografá-lo.

Usando mcrypt

$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress

A -zopção compacta. Por padrão, isso gera um arquivo chamado clear_text.gz.nc.

Usando bcrypt

$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress

bcrypt compacta antes de criptografar por padrão, a -ropção é para que o arquivo de entrada não seja excluído no processo. O arquivo de saída é chamado clear_text.bfepor padrão.

Usando gzipeaespipe

$ cat clear_text | gzip | aespipe > clear_text.gz.aes #Compress & Encrypt
$ cat clear_text.gz.aes | aespipe -d | gunzip > clear_text #Decrypt & Decompress

aespipe é o que parece, um programa que recebe entrada no stdin e gera dados criptografados no stdout. Ele não suporta compactação, então você pode canalizar a entrada através do gzip primeiro. Como a saída vai para o stdout, você precisará redirecioná-la para um arquivo com um nome de sua escolha. Provavelmente não é a maneira mais eficaz de fazer o que você está pedindo, mas a atualização é uma ferramenta versátil, então pensei que valeria a pena mencionar.


15

Você pode usar o 7zip para criar seu arquivo protegido por senha. Você pode especificar a senha na linha de comandos (ou em um script) da seguinte maneira:

7z a -p<password> <someprotectedfile>.7z file1.txt file2.txt

O 7zip também pode ler do STDIN da seguinte maneira:

cat <somefile> | 7z a -si -p<password> <someprotectedfile>.7z

Se for obrigatório o uso de arquivos zip, convém brincar com o -t<type>parâmetro (por exemplo -tzip).


5
Eu escolhi isso como a resposta, porque é o único que responde à pergunta. A questão não é como criptografar uma mensagem, é como proteger um arquivo com senha. Era tudo o que eu precisava fazer. (Gmail estava bloqueando backups meu servidor porque ele decidiu que havia algo inseguro no anexo, e eu só precisava para adicionar uma senha Não tem de ser seguro..)
felwithe

7

Nem tar, gzip nem bzip2 suportam proteção por senha. Use um formato de compactação, como zip, ou criptografe-o com outra ferramenta, como o GnuPG.


Ah, isso explica por que não consegui encontrar nada online. Eu acho que vou para zip.
morpheous

Gah !, Estou tentando compactar recursivamente um diretório com senhas, e ele apenas cria um arquivo zip com o nome foobar como um diretório (vazio) nele. Aqui está o comando que estou usando: zip -e foobar.zip foobar. foobar é uma pasta não vazia no diretório atual
morpheous

4
Assim como o homem diz -r.
Ignacio Vazquez-Abrams

5

Crie com:

tar czvf - directory | gpg --symmetric --cipher-algo aes256 -o passwordprotectedarchive.tar.gz.gpg

Ele solicitará uma senha.

Descriptografar com:

gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -
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.