Questão Como proteger por senha arquivos gzip na linha de comando?


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

Eu quero proteger com senha o arquivo.

Qual é o comando para fazer isso (eu tenho pesquisado, mas não encontrei nada que mostra como criar e extrair arquivos compactados usando uma senha).

Alguém sabe como se faz isto?


110


origem




Respostas:


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

tarring e compressão é um trabalho para tar e gzip ou bzip2, a criptografia é um trabalho para qualquer gpg ou 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

o openssl-variant usa criptografia simétrica, você teria que informar a parte receptora sobre a 'senha' usada (também conhecida como 'a chave'). o gpg-variante 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 a ninguém) para criar uma chave de sessão e criptografar o conteúdo com essa chave.

se você for a rota zip (ou 7z): essencialmente, o mesmo que o openssl-variant, você deve informar a parte receptora sobre a senha.


136



Para quem quer saber como descriptografar o arquivo com o openssl: openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz - ndbroadbent
@ 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
@KeithSmiley Se você tiver grandes arquivos e não muito espaço (como poderia ser em um VPS), ele é mais eficiente em termos de espaço para canos. - Andrew Savinykh
Eu não consigo executar isso em um mac. Isso é diferente de qualquer maneira? - eleijonmarck
@eleijonmarck fornecer a parte "não funciona porque <insert-error-message-here>"… - akira


Se sua intenção é apenas proteger os arquivos com senha, use o utilitário zip da mão por meio 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*

25



A criptografia de arquivos zip não é segura de forma alguma. - Kristopher Ives
@ Kristopher Ives você pode elaborar sobre a insegurança? - tscizzle
@tscizzle unix-ag.uni-kl.de/~conrad/krypto/pkcrack/pkcrack-readme.html - Kristopher Ives
@KristopherIves Requer "outro arquivo ZIP, contendo pelo menos um dos arquivos do arquivo criptografado em sem criptografia forma "para trabalhar. - Franklin Yu
"Você precisa saber apenas uma parte do texto simples (pelo menos 13 bytes)". Isso faz com que Muito de mais vulnerável do que se um arquivo inteiro não criptografado fosse necessário (o que já é bastante ruim). Além disso, a criptografia zip não é resistente a ataques de força bruta (por exemplo, com Jack the Ripper). Ninguém deveria usá-lo para nada sério. - EM0


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

Esses exemplos comprimir e criptografar um arquivo chamado clear_text.

Usando gpg

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

gpg comprimirá o arquivo de entrada antes da criptografia por padrão, -c significa usar criptografia simétrica com uma senha. O arquivo de saída será clear_text.gpg. Um benefício de usar gpg é que usa formatos OpenPGP padrão, portanto, qualquer software de criptografia que ofereça suporte ao OpenPGP poderá descriptografá-lo.

Usando mcrypt

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

o -z opção comprime. 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 comprime antes de criptografar por padrão, o -r A opção é para que o arquivo de entrada não seja excluído no processo. O arquivo de saída é chamado clear_text.bfe por padrão.

Usando gzip e aespipe

$ 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 em stdin e gera dados criptografados em stdout. Ele não suporta compressão, então você pode canalizar a entrada através do gzip primeiro. Como a saída vai para o stdout, você terá que redirecioná-lo para um arquivo com um nome de sua escolha. Provavelmente não é a maneira mais eficaz de fazer o que você está pedindo, mas aespipe é uma ferramenta versátil, então eu achei que valeu a pena mencionar.


14





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

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

7zip também pode ler a partir de STDIN da seguinte maneira:

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

Se é obrigatório usar arquivos zip, você pode querer brincar com o -t<type>parâmetro (por ex. -tzip).


9



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. Isso é tudo que eu precisava fazer. (O Gmail estava bloqueando meus backups de servidor porque decidiu que havia algo inseguro no anexo, e eu só precisava adicionar uma senha. Ele não precisa ser seguro.) - felwithe


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


5



Ah, isso explica porque eu não encontrei nada online. Eu acho que vou para o zip. - morpheous
Gah !, Estou tentando recursivamente zipar um diretório com passwors, e ele só 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
Assim como o homem diz -r. - Ignacio Vazquez-Abrams


Crie com:

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

Ele pedirá uma senha.

Descriptografar com:

gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -

2