Existe uma ferramenta para criptografar um arquivo ou diretório?

66

Qual é a maneira mais popular de criptografar arquivos ou pastas individuais?

landroni
fonte
A pergunta é um pouco incerta. Deseja criptografar e descriptografar manualmente os arquivos ou em tempo real?
psusi 23/02
4
Em vez de 'mais popular', pode ser útil ajustar uma solução aos seus requisitos (conforme a pergunta de psusi). Você está procurando uma combinação de código-fonte fácil, confiável, nativo, seguro, rápido e aberto? Todos ou alguns deles?
belacqua 23/02
7
Eu gostaria de acrescentar que, ao contrário do que algumas respostas afirmam, o TrueCrypt não é considerado Software Livre ou Código Aberto pelo Debian / Ubuntu / Fedora / Red Hat / Arch Linux / OpenSuse / Gentoo / etc.
janc

Respostas:

46

O GnuPG (GPG) pode usar criptografia assimétrica e simétrica. A criptografia assimétrica envolve duas chaves, uma chave pública para criptografia e uma chave privada para descriptografia. Consulte a resposta do djeikyb nesta página para o uso de chaves assimétricas.

Para criptografia simétrica, as chaves de criptografia e descriptografia são iguais. É importante perceber que a maioria das pessoas é muito ruim na escolha de senhas fortes. Assim, um esquema de criptografia que usa senhas deve usar uma função de derivação de chave que consome mais recursos (tempo, memória) para diminuir os ataques de força bruta.

Para uma descrição do KDF do GnuPG, consulte esta postagem do Crypto Stack Exchange . Exemplo de uso de criptografia simétrica:

gpg --symmetric < unencrypted_file > encrypted_file

Descriptografia:

gpg --decrypt < encrypted_file > decrypted_file

Observe que o gpgcache do symkey é armazenado em cache por padrão (comportamento documentado). Para evitar isso, use a --no-symkey-cacheopção conforme descrito em uma resposta relacionada .

Página de manual do gpg .


resposta antiga para usuários que podem escolher boas chaves, veja a nota abaixo

Para arquivos únicos, opensslé muito útil, especialmente quando o arquivo é enviado por um canal não seguro (por exemplo, email). É grátis (em dinheiro e em liberdade), ao contrário do Truecrypt, que só é gratuito em dinheiro.

NOTA : a senha digitada aqui será processada por uma iteração MD5 1 . Se você escolheu uma senha "123456", terá muito pouca segurança.

Criptografar:

openssl aes-256-cbc -salt -in unencrypted_file -out encrypted_file

Você será solicitado a fornecer uma senha, que deve ser inserida duas vezes.

Descriptografar:

openssl aes-256-cbc -d -in encrypted_file -out unencrypted_file

Página de manual para o programa enc .

1 openssl enc usa a função digest definida pela -mdopção (md5 padrão) e chama a função EVP_BytesToKey()com uma contagem de iterações de 1. Isso pode ser encontrado na fonte openssl em apps/enc.c.

Lekensteyn
fonte
Existe uma maneira de fazer isso sem um passpharse?
Assaf Lavie
@Assaf Lavie: O OpenSSL não suporta arquivos de chave, se você quis dizer isso, embora possa ler uma senha da primeira linha de um arquivo. Leia a página de manual no openssl, seção Argumentos de frase secreta .
precisa saber é o seguinte
Além disso, você pode usar o sinalizador "-a", que permite copiar o texto criptografado, da seguinte forma: "openssl aes-256-cbc -a -salt -in unencrypted_file -out encrypted_file"
v2r
@ v2r Para adicionar para outros leitores: -abase64 codifica a entrada (apelido de -base64), para decriptografá-la, você também precisa adicionar a -aopção.
Lekensteyn
11
@Lio aes-256é um apelido para aes-256-cbc, não há diferença. CBC é um modo de operação para cifras de bloco. Consulte a página de manual de enc(1)para obter uma lista das cifras suportadas.
Lekensteyn
30

Eu uso o cavalo marinho para isso. É um front-end do Gnome para o GnuPG e se integra bem ao nautilus:Integração Nautilus

Para obter a integração do nautilus, instale o pacote seahorse-nautilusno Centro de Software: seahorse-nautilus Instalar seahorse-nautilus

passy
fonte
3
isto só funciona se você tiver um BPM chaves criadas em seu sistema ...
hhlp
3
@hhlp: a resposta de djeikyb explica como fazer isso.
Idbrii
11
Estou querendo criptografar minha chave GPG.
KI4JGT
19

TrueCrypt : Software de criptografia de disco freeware disponível na fonte , inseguro e descontinuado .

hhlp
fonte
2
+1, encfs - com ou sem uma GUI - é muito útil e suficiente para a maioria dos propósitos.
loevborg 23/02
3
O Cryptkeeper é incrível - simples, poderoso e fácil de configurar com o Dropbox ( askubuntu.com/questions/19613/… ).
Scaine
O TrueCrypt não é fornecido no Ubuntu (ou em qualquer outra distribuição importante) por questões de licenciamento.
MagicFab
2
TrueCrypt não é de código aberto. en.wikipedia.org/wiki/…
yuric
4
'AVISO: O uso de TrueCrypt não é seguro' - TrueCrypt
user457015
16

Um método cli seria o GnuPG , e talvez alcatrão. Este é um pequeno guia para referência, você realmente deve ler a documentação.

Primeira corrida gpg --gen-key. Siga as instruções para gerar seu par de chaves pública / privada. Agora você pode criptografar arquivos: gpg -e foo.txt. Isso criará um arquivo chamado foo.txt.gpg. O GnuPG não exclui o arquivo não criptografado original, você decide se deseja que ele fique por perto. Para descriptografar foo.txt.gpg, execute gpg foo.txt.gpg. A descriptografia solicitará que você substitua os arquivos existentes.

Se você precisar criptografar um diretório, tar primeiro:

tar -cf foo.tar foo/
gpg -e foo.tar

Você pode renomear o arquivo criptografado da maneira que desejar. Quando descriptografado, o nome do arquivo original é preservado.

djeikyb
fonte
2
As vantagens deste método são: Primeiro, não requer a instalação de pacotes adicionais; Segundo, não requer acesso root. Eu adicionaria compactação ao comando tar (xz ou gz).
Pantera
12

Há também o eCryptfs , que o Ubuntu usa para criptografar diretórios pessoais.

Você pode selecionar a criptografia do diretório inicial na instalação ou configurar um único diretório, $HOME/Privatepor padrão, usando o utilitário ecryptfs-setup-private . Esta pasta pode ser configurada para montar automaticamente no login e desmontar no logout. Cada arquivo e pasta dentro dele $HOME/Private, recursivamente, serão criptografados.

Dustin Kirkland
fonte
Infelizmente o eCryptfs é MUITO lento. Além disso, existem alguns bugs na versão mais recente
Rux
Pelo contrário, se algo eCryptfs for mais rápido que gpg; por padrão, o gpg tenta compactar antes de criptografar. E eCryptfs agora também é utilizado pela maioria Android de
Xen2050
2

Você também pode usar "Academic Signature" para usar a criptografia de curva elíptica com uma GUI wxWidgets. É de código aberto, mas não nos repositórios. Faz principalmente criptografia assimétrica, assinaturas e carimbos de data / hora do ECC. Mas a ferramenta também possui uma entrada de menu para chamar o Gnupg (RSA) e acesso direto à criptografia / descriptografia simétrica de arquivos que oferecem AES e outros algoritmos. Sua página inicial está aqui: https://www.academic-signature.org

Eu o uso muito para proteger arquivos em trânsito e para assinar digitalmente documentos acadêmicos (transcrições, cartas de recomendação, listas de notas, etc.)

Michael Anders
fonte
1

Peguei algumas das outras sugestões e criei um invólucro de script de shell simples (para os preguiçosos)

https://github.com/orionM/ssl-crypt-tools

aproveitar

private_nodez
fonte
11
hmm, bash script usando openssl aes-256-cbc ...Você sabe, em vez de usar, if [ $? -ne 0 ] ; then... fivocê pode simplesmente usar ||? E há pessoas que acham que o OpenSSL "* teve várias falhas importantes de segurança no ano passado [ Heartbleed ], enquanto os documentos Snowden mostram que o GPG é um dos poucos programas que podem atrapalhar a NSA quando usados ​​corretamente. O código do OpenSSL também é uma fossa completa e tem uma cobertura de teste terrível. (Divulgação: [ele] trabalha [s] em um projeto "O OpenSSL é uma porcaria; vamos consertar isso".) - jbarlow * "
Xen2050