Como criptografar um arquivo ou diretório no Linux?

26

Qual é o comando mais popular para fazer coisas como criptografar um arquivo ou diretório no terminal no Linux?

Scott
fonte

Respostas:

31

Eu acho que seria gpg. A sintaxe para arquivos e diretórios é diferente.

Criptografia

Para arquivos (outputs filename.gpg):

gpg -c filename

Para dirs:

gpg-zip -c -o file.gpg dirname

Descriptografia

Para arquivos (outputs filename.gpg):

gpg filename.gpg

Para dirs:

gpg-zip -d file.gpg

Editar: Corrigido como @ Mk12 apontou o erro de compressão / descompressão para criptografia / descriptografia.

celebridade
fonte
Isso não deveria ser "Criptografia" e "Descriptografia"?
Mk12 27/07/12
Ninguém disse como criptografar um diretório.
Chovy
1
@chovy Não que acima dela diz: Para dirs: gpg-zip -c -o file.gpg dirname
celebdor
@celebdor perdeu essa. obrigado. edit: isso não funciona para mim. Recebo uma saída criptografada estranha quando descriptografar o arquivo.
chovy
@ Chovy: Desculpe ouvir isso. Posso confirmar que criptografar e descriptografar diretórios como mostrado acima funcionou para mim, usando gpg-zip (GnuPG) 1.4.16 sob Mint 17.
Michael Scheper
10
  • com openssl

openssl des3 -salt -in unencrypted-data.tar -out encrypted-data.tar.des3

Descriptografar:

openssl des3 -d -salt -in encrypted-data.tar.des3 -out unencrypted-data.tar

  • criptografar com AES

aescrypt -e -p password file.jpg

Descriptografar:

aescrypt -d -p password file.jpg.aes

jato
fonte
1
+1 para mostrar como fazê-lo com o openssl, o que provavelmente está disponível imediatamente.
DevSolar
Na verdade, mas 3DES é considerado inseguro e não deve ser utilizado, a AES (aescrypt) é uma opção muito melhor, veja: stackoverflow.com/questions/1619212/...
jmng
2

Experimente o GnuPG .

Para criptografar: gpg -c filename

Para descriptografar: gpg filename.gpg

slhck
fonte
2

Este é o meu método usando openssl e tar

Abra o diretório criptografado:

openssl enc -aes-256-cbc -d -in ~/vault.tar.gz.dat | tar xz; thunar ~/vault

Bloquear diretório criptografado:

tar cz vault/ | openssl enc -aes-256-cbc -out ~/vault.tar.gz.dat; rm -r ~/vault
Tom
fonte
1
rm -rnão exclui dados; apenas o desvincula. Você precisará usar algo como srmpara apagar os dados do disco.
Jbindel #
2

Eu pessoalmente uso aescryptprincipalmente.

      aescrypt -e "File" 

e descriptografar:

      aescrypt -d "File"

Ou há mcrypt:

      mcrypt "File" 

e descriptografar:

      mcrypt -d "File"

E para um diretório, sugiro tar'ing o dir, e criptografar isso. Depois de descriptografar, basta descompactar o arquivo:

      tar -cf "Dir.tar" Dir/

e desvendar

      tar -xf "Dir.tar"
Matt
fonte
1

Se o nível mais alto de segurança não for um grande problema (a página de manual do zip diz que o algoritmo de criptografia usado pelos utilitários zipfile é mais fraco que o PGP), prefiro zip e descompacte. Ele fecha meus diretórios e criptografa ao mesmo tempo. Eu prefiro o zip porque você pode ter um tipo de zip incremental e criptografar em vez de compactar e criptografar tudo novamente. Especialmente, é útil quando os tamanhos de diretório são muito grandes.

ZIP e criptografar

zip file.zip file
zip -r directory.zip directory
zip --encrypt file.zip.enc file # prompt for password
zip --encrypt -r directory.zip.enc directory # prompt for password

Descompacte e descriptografe

unzip directory.zip.enc #Beware if any directory is present with the same name as the zipped file, then it would be overwritten. Hence I normally send the contents to another directory.

unzip directory.zip.enc -d directory-new # prompts for password
infoclogged
fonte
0

Pode não ser popular, mas estou trabalhando em um projeto para criptografar / descriptografar qualquer coisa com interação mínima do usuário por meio do uso de alguns scripts Bash. Aqui está um link para o post do Hak5 que explica a configuração para o teste.

Detalhando as lógicas do código-fonte, veja o que acontece para cada tipo de dado que pode ser tratado pelo projeto vinculado acima

_gnupg_encrypt_opts="--always-trust --armor --batch --encrypt --recipient [email protected]"
 _bulk_output_dir="some_path"
_arbitrary_parsed_output="some_file.gpg"
## If file make encrypted time stamped file with similar name
_path_to_file="${_mapped_input}"
_path_to_output="${_bulk_output_dir}/$(date -u +%s)_${_path_to_file##*/}.gpg"
cat "${_path_to_file}" | gpg ${gpg _gnupg_encrypt_opts} > "${_path_to_output}"
## else if directory make compressed encrypted time stamped output file
_path_to_dir="${_mapped_input}"
_path_to_output="${_bulk_output_dir}/$(date -u +%s)_dir.tgz.gpg
tar -cz - "${_path_to_dir}" | gpg ${gpg _gnupg_encrypt_opts} > "${_path_to_output}"
## else if something else append encrypted output to file
_path_to_output="${_arbitrary_parsed_output}"
cat <<<"${_mapped_input}" | gpg ${gpg _gnupg_encrypt_opts} >> "${_path_to_output}"

A ${_mapped_input}variável é configurada lendo um mkfifoarquivo pipe nomeado e configurando qualquer coisa lida para uma matriz com a mapfile -t _lines < "${_file_to_map}"qual é expandida e salva posteriormente ${_mapped_input}... um pouco complicada, mas permite que recursos experimentais atuem em linhas individuais. Resultados finais: você terá um diretório para armazenar arquivos criptografados ou diretórios compactados e um arquivo com vários pacotes de dados criptografados.

A descriptografia de arquivos ou diretórios compactados é bastante simples em um dispositivo com uma chave privada relacionada à chave pública usada para criptografia. Porém, a descriptografia de vários pacotes de dados criptografados com armaduras foi um pouco mais difícil; portanto, um script nomeado Paranoid_Pipes_Scenario_One.shno projeto acima foi escrito para fazer tudo isso com uma interação mínima do usuário. Abaixo está uma versão simplificada do código fonte dos scripts auxiliares para arquivos e diretórios criptografados normais.

_gnupg_decrypt_opts="--quiet --no-tty --always-trust --passphrase-fd 9 --decrypt"
_decryption_output_dir="some_directory"
# if file
exec 9<"${_pass[@]}"
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.gpg*}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} > "${_decryption_output_dir}/${_output_name}"
# else if compressed file
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.tgz.gpg*}"
mkdir -p "${_decryption_output_dir}/${_output_name}"
_old_pwd="${PWD}"
cd "${_decryption_output_dir}/${_output_name}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} | tar -xzf -
cd "${_old_pwd}"
# else if non-compressed directory
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.tar.gpg*}"
mkdir -p "${_decryption_output_dir}/${_output_name}"
_old_pwd="${PWD}"
cd "${_decryption_output_dir}/${_output_name}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} | tar -xf -
cd "${_old_pwd}"

Se você deseja ver quais outros recursos estão funcionando e testados de uma forma publicamente verificável, verifique os logs de construção do Travis-CI (especialmente perto do final dos logs) e verá que há outras coisas interessantes sendo trabalhadas em relação para criptografia e descriptografia de quase todos os dados.

S0AndS0
fonte
0

Use FinalCrypt - Criptografia de arquivo / diretório OpenSource Unbreakable One-Time Pad (GUI e CLI)

Ele cria as teclas One-Time Pad por si só

java -cp FinalCrypt.jar rdj/CLUI --encrypt --password-prompt -k My-Key-Directory/ -t My-Test-Directory/

Senha:

Começou a criptografar 4 arquivos totalmente 249,7 MiB

🔒 "/home/ron/My-Test-Directory/Video/Eerebegraafplaats.mp4.bit" 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" -> "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" 58,4% 🔒 "/ home / ron / My-Test-Directório / Vídeo / castelo-waxjo-sweden.mp4.bit "🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "8AEFC9744143451F32B82BBAC6A4291BC76C747A6DA1EA024702AA51A966F810" -> "323618B7ED12A1F92D8FFB306CEEC6DFFED6862B7BF3922902E8AED29DF57ECE" 91,2% 🔒" /home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf.bit" 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" -> "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" 95,7% 🔒 "/ Home / ron / My-Test-Directório / Brother DSmobile 700d_uke_usr.pdf.bit" 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "8D718D2F29EF05BEB347D6920B3BFF5269685421B428E8D3ADFF569F67A716E0" -> "88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E" 100,0%

Criptografia finalizada [4/4] de arquivos totalmente [249,7 MiB / 249,7 MiB] em 7,3 segundos (média: 34,2 MiB / s)

java -cp FinalCrypt.jar rdj/CLUI --decrypt --password-prompt -k My-Key-Directory/ -t My-Test-Directory/

Senha:

Começou a descriptografar 4 arquivos totalmente 124,9 MiB

🔓 "/home/ron/My-Test-Directory/Video/castle-waxjo-sweden.mp4" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "323618B7ED12A1F92D8FFB306CEEC6DFFED6862B7BF3922902E8AED29DF57ECE" -> "8AEFC9744143451F32B82BBAC6A4291BC76C747A6DA1EA024702AA51A966F810" 32,8% 🔓 "/ home / ron / My-Test-Directório / Vídeo / Eerebegraafplaats.mp4" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" -> "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" 91,2% 🔓 "/ home / ron / My-Test -Directory / Brother dsmobile 700d_uke_usr.pdf "✔ ✔ 🔓✔ ℄✔ SHA-256:" 88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E5 - 95 "/home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" -> "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" 100,0%

Descriptografada finalizada [4/4] arquivos totalmente [124,9 MiB / 124,9 MiB] em 3,4 segundos (média: 36,3 MiB / s)

Também possui uma GUI

Apenas tentando ajudar a comunidade ...

Ron de Jong
fonte
Veja os comentários no FINALCRYPT .
Scott
FinalCrypt 5 adicionou Auto Key e cria OTP Keys automaticamente, para que a discussão a que Scott se refere não seja mais relevante
Ron de Jong
Gostaria de ver uma descrição de como funciona, mais técnica e menos agitada à mão. O problema é que os blocos únicos (1) são ótimos para transmissão de dados e ruins para  armazenamento e (2) devem ser aleatórios.  Se os OTPs do FinalCrypt forem verdadeiramente aleatórios, eles deverão ser armazenados, o que compromete a segurança. Se eles podem ser regenerados, não são aleatórios, mas apenas pseudo-aleatórios e, portanto, não são OTPs adequados. ... (continua)
Scott
(Continuação)… Sua página sobre  Gerenciamento automático de chaves indica que os OTPs estão armazenados “em uma unidade externa (USB) removível. OK, isso poderia funcionar. Mas, se você precisar conectar sua unidade USB toda vez que quiser descriptografar seu arquivo (e considerando que um OTP deve ter pelo menos o tamanho do arquivo que ele criptografa), você também pode apenas armazenar seus arquivos na unidade removível e não se incomode com criptografia. ... (continua)
Scott
(Continua) ... Além disso, a página principal do FinalCrypt diz que “a maioria dos softwares de criptografia usa AES quebrado…”, mas afirma que o AES está “quebrado” parece ser muito exagerado. Relacionado: Por que a AES é considerada segura? (em  Cryptography Stack Exchange ).
Scott