Qual é uma boa solução para criptografar alguns arquivos no unix? [fechadas]

44

Estou procurando um utilitário para criptografar certos diretórios no Linux. Não estou procurando nenhum serviço de criptografia de disco completo, mas simplesmente criptografar alguns diretórios com o objetivo de armazenar arquivos na nuvem. Depois de recuperá-los, eu devo descriptografá-los antes que possam ser acessados. Procurando fazer isso em alguns diretórios (algumas centenas de GB de tamanho). Alguma ideia? De preferência com base em CLI.

Peter
fonte

Respostas:

51

Eu uso apenas o GnuPG para esta tarefa. As pastas são compactadas primeiro em um arquivo TAR-GZ:

tar czf files.tar.gz /path/to/my/files

Se ainda não o tiver feito, primeiro crie um par de chaves público / privado GPG:

gpg --gen-key

Siga as instruções. Os padrões devem ser suficientes para um primeiro teste. Algo assim aparecerá:

gpg (GnuPG) 2.0.18; Direitos autorais (C) 2011 Free Software Foundation, Inc.
Este é um software livre: você pode alterá-lo e redistribuí-lo.
NÃO HÁ GARANTIA, na extensão permitida por lei.

Selecione o tipo de chave que você deseja:
   (1) RSA e RSA (padrão)
   (2) DSA e Elgamal
   (3) DSA (somente assinatura)
   (4) RSA (somente sinal)
Sua seleção? 1
As chaves RSA podem ter entre 1024 e 4096 bits.
Qual tamanho de chave você deseja? (2048) 4096
O tamanho da chave solicitado é 4096 bits
Especifique por quanto tempo a chave deve ser válida.
         0 = chave não expira
        = chave expira em n dias
      w = chave expira em n semanas
      m = chave expira em n meses
      y = chave expira em n anos
A chave é válida para? (0)
A chave não expira em absoluto
Isso está correto? (s / N) s

O GnuPG precisa construir um ID do usuário para identificar sua chave.

Nome real: Chave de criptografia de arquivo
Endereço de e-mail: [email protected]
Comentário: Chave de Criptografia de Arquivo
Você selecionou este USER-ID:
    "Chave de criptografia de arquivos (chave de criptografia de arquivos)"

Alterar (N) nome, (C) omento, (E) correio ou (O) kay / (Q) uit? o

Você será solicitado a fornecer uma senha para a chave. É altamente recomendável usar um forte. De qualquer forma, não é necessário criptografar arquivos, portanto, não se preocupe com o uso em lote posteriormente.

Se tudo estiver pronto, algo assim aparecerá na sua tela:

Precisamos gerar muitos bytes aleatórios. É uma boa ideia executar
alguma outra ação (digite no teclado, mova o mouse, utilize o
discos) durante a geração principal; isso dá o número aleatório
gerador uma chance melhor de obter entropia suficiente.
Precisamos gerar muitos bytes aleatórios. É uma boa ideia executar
alguma outra ação (digite no teclado, mova o mouse, utilize o
discos) durante a geração principal; isso dá o número aleatório
gerador uma chance melhor de obter entropia suficiente.
gpg: chave FE53C811 marcada como confiável em última análise
chave pública e secreta criada e assinada.

gpg: verificando o trustdb
gpg: 3 marginais necessários, 1 completos necessários, modelo de confiança PGP
gpg: depth: 0 válido: 1 assinado: 0 confiança: 0-, 0q, 0n, 0m, 0f, 1u
pub ***** / ******** 19/03/2013
      Impressão digital chave = **** **** **** **** **** **** **** **** **** **** ****
Chave de criptografia de arquivos uid (Chave de criptografia de arquivos) 
sub ***** / ******** 19/03/2013

Agora você pode exportar o arquivo de chave público para importá-lo em outras máquinas:

gpg --armor --output file-enc-pubkey.txt --export 'File Encryption Key'

O File Encryption Keyé o nome que eu inseri durante o procedimento de geração de chave.

Agora estou usando o GnuPG no arquivo recém-criado:

gpg --encrypt --recipient 'File Encryption Key' files.tar.gz

Agora você tem um files.tar.gz.gpgarquivo criptografado.

Você pode descriptografá-lo com o seguinte comando (sua senha será solicitada):

gpg --output files.tar.gz --decrypt files.tar.gz.gpg

Essa é toda a mágica.

Certifique-se de fazer backup da sua chave! E nunca esqueça sua senha! Se não for feito backup ou esquecido, você terá gigabytes de lixo eletrônico de dados!

Faça backup da sua chave privada com este comando:

gpg --armor --output file-enc-privkey.asc --export-secret-keys 'File Encryption Key'

Vantagens

  • Nenhum dos criptografadores precisa conhecer informações confidenciais sobre a criptografia - a criptografia é feita com a chave pública. (Você pode criar o par de chaves na estação de trabalho local e transferir apenas a chave pública para seus servidores)
  • Nenhuma senha será exibida nos arquivos ou trabalhos de script
  • Você pode ter o máximo de criptografia em qualquer sistema que desejar
  • Se você mantiver sua chave privada e a frase secreta em sigilo, está tudo bem e é muito difícil comprometer
  • Você pode descriptografar com a chave privada nas plataformas Unix, Windows e Linux usando a implementação específica de PGP / GPG
  • Não há necessidade de privilégios especiais em sistemas de criptografia e descriptografia, sem montagem, sem contêineres, sem sistemas de arquivos especiais
zero0
fonte
1
Observe que, dependendo dos dados, pode ser mais rápido executar tarsem a zopção para evitar compactá-los.
L0b0
28

Da minha parte, eu principalmente uso dois métodos:

Primeiro método: tar e openssl

Tarar o diretório

tar cvf backup.tar /path/to/folder

Você pode remover a opção [v] do comando tar para desativar o modo detalhado.

Criptografar

openssl aes-128-cbc -salt -in backup.tar -out backup.tar.aes -k yourpassword

Você pode alterar o aes-128-cbc para qualquer outro método de criptografia que o openssl suporte (openssl --help).

Descriptografar

openssl aes-128-cbc -d -salt -in backup.tar.aes -out backup.restored.tar

Ele solicitará a senha.

Segundo método: zip criptografado

zip -r -0 -e backup.zip /path/to/folder

Ele solicitará a senha.

  • -r significa recursivamente (toda a árvore de pastas)
  • -0 significa armazenar apenas (não compacta, mais rápido)
  • -e significa criptografar arquivo

Uma vantagem disso: funcionará melhor com o sistema baseado em Windows.

Julien R.
fonte
3
Dar senha na linha de comando não é uma boa ideia. A senha permanece no histórico do shell.
pbies
1
Deve-se notar que ziphá rumores de que a criptografia é quebrável.
Acumenus
22

Se você não deseja criptografar seus arquivos com um par de chaves pública / privada e usar apenas criptografia simétrica com uma frase secreta, use o seguinte comando:

gpg --symmetric --cipher-algo aes256 files.tar.gz

Você será solicitado a digitar sua senha. Depois disso, um arquivo criptografado chamado files.tar.gz.gpgé criado.

Para descriptografar, use o comando

gpg --decrypt files.tar.gz.gpg > files.tar.gz
Chiborg
fonte
2

Você pode usar truecrypt solução muito simples e agradável. Possui pacote para uso exclusivo do console. É muito simples de aprender e usar. http://www.truecrypt.org

B14D3
fonte
4
Em 28 de maio de 2014, o TrueCrypt não existe mais. Veja en.wikipedia.org/wiki/TrueCrypt
Bryce
2

Para esse propósito, sugiro a criptografia do FUSE (como encfs ) - para dados menores, eu usaria o gpg.

É fs implementado no espaço do usuário para que você não precise de privilégios especiais.

Maciej Piechotka
fonte
1

Existem alguns sistemas de arquivos Linux destinados à finalidade de criptografia de dados. Você já pensou em LUX, por exemplo?

Guardião
fonte
1

Uma maneira muito simples de criptografar um arquivo é:

gpg -c filename.ext

Você será solicitado a digitar uma senha duas vezes e o gpg será criado filename.ext.gpg. Carregue o arquivo criptografado no seu serviço de nuvem. Para recuperar o arquivo, use:

gpg filename.ext.gpg

O que será recriado filename.ext. Observe que os arquivos não criptografados não são seguros e os dados relevantes permanecerão na sua mídia de armazenamento, mesmo após a exclusão. Somente o contêiner de gpg é seguro. O EncFS é uma alternativa mais prática para criptografia baseada em nuvem no nível do arquivo.

Bryce
fonte