Como criptografar um arquivo ou diretório no Linux?

24

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

    
por Kim 23.02.2011 / 19:30

7 respostas

25

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

Criptografia

Para arquivos (saídas filename.gpg):

gpg -c filename

Para dirs:

gpg-zip -c -o file.gpg dirname

Descriptografia

Para arquivos (saídas 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.

    
por 23.02.2011 / 20:30
8
  • com o 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 o AES

aescrypt -e -p password file.jpg

Descriptografar:

aescrypt -d -p password file.jpg.aes

    
por 23.02.2011 / 20:29
2

Experimente o GnuPG .

Para criptografar: gpg -c filename

Para descriptografar: gpg filename.gpg

    
por 23.02.2011 / 20:28
2

Este é o meu método usando openssl e tar

Abrir 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
    
por 03.07.2015 / 17:41
2

Eu pessoalmente uso aescrypt principalmente.

      aescrypt -e "File" 

e decifre:

      aescrypt -d "File"

Ou há mcrypt:

      mcrypt "File" 

e decifre:

      mcrypt -d "File"

E, para um diretório, sugiro tarar o diretório e criptografar isso. Então, depois de descriptografar, basta descompactar o arquivo:

      tar -cf "Dir.tar" Dir/

e para descompactar

      tar -xf "Dir.tar"
    
por 01.08.2011 / 19:39
1

Se o maior nível de segurança não for um grande problema (a página man do zip diz que o algoritmo de criptografia usado pelos utilitários zipfile é mais fraco que o PGP), então eu prefiro zip e unzip. 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 decodifique

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
    
por 02.08.2016 / 14:40
0

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

Cortando as lógicas do código-fonte, mas eis 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 variável ${_mapped_input} é configurada lendo um arquivo de pipe nomeado mkfifo e configurando qualquer coisa lida para uma matriz com mapfile -t _lines < "${_file_to_map}" , que é posteriormente expandida e salva em ${_mapped_input} ... um pouco complicado, mas permite para recursos experimentais para atuar em linhas individuais. Os resultados finais terminam com 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 é simples o suficiente em um dispositivo com uma chave privada relacionada à chave pública usada para criptografia. Mas a descriptografia de pacotes de dados criptografados com múltiplas armaduras foi um pouco mais difícil, então existe um script chamado Paranoid_Pipes_Scenario_One.sh no projeto acima escrito para fazer tudo com o mínimo de interação 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 sendo testados de uma forma publicamente verificável, então confira o Travis-CI logs de compilação (especialmente perto do fim dos logs) você encontrará algumas outras coisas interessantes sendo trabalhadas em relação à criptografia e descriptografia de quase todos os dados.

    
por 21.11.2016 / 21:56