Eu tenho um script que cria um backup noturno de vários diretórios.
Ele é criado usando tar -czf
e o caminho do arquivo tar.gz de destino está em um diretório de rede montado. O arquivo resultante tem cerca de 1,2 GB de tamanho.
A velocidade da rede é razoavelmente rápida (a cópia da unidade de rede para o local ocorre em ~ 28 MB / s).
Agora, quero usar a criptografia de chave pública para criptografar o arquivo tar.gz antes de transferi-lo para a unidade de rede e gostaria de saber qual é a melhor maneira de fazer isso.
Devo criar o arquivo localmente primeiro, criptografá-lo e copiá-lo? Ou existe uma maneira de "transmitir" a saída do tar através de um processo de criptografia e gravar os resultados diretamente na unidade de rede?
fonte
tar xz
No segundo conjunto de comandos, deveria sertar -xz
?-
z
opção adicione muitoO processo a seguir criptografa o arquivo no disco local primeiro e pode ser enviado pela rede (ou armazenado conforme necessário)
Primeiro, gere chaves públicas e privadas (feitas apenas uma vez):
Em seguida, em cada backup:
Gere uma senha longa e aleatória, salve no arquivo
echo -n "Tl4R6dnvWXiDeXr1LtpCNkyLG1" > key.txt
criptografar arquivo com senha
openssl enc -aes-256-cbc -pass file:key.txt < UNENCRYPTED_FILE > encrypted.dat
criptografar senha com chave pública
openssl rsautl -encrypt -pubin -inkey key-public.pem < key.txt > enc.key.txt
Em seguida, salve encrypted.dat AND enc.key.txt onde desejar.
Para descriptografar:
Descriptografar senha secreta criptografada com chave privada
openssl rsautl -decrypt -inkey key.pem < enc.key.txt > key.txt
Descriptografar arquivo
openssl enc -aes-256-cbc -d -pass file:key.txt < encrypted.dat > UNENCRYPTED_FILE
Isso é muito mais longo que o analisador de Florian, mas eu decidi usá-lo para entender melhor o processo e não depender das variáveis de configuração do GPG dependentes do servidor, etc. Também não consegui encontrar nenhuma documentação útil do GPG.
fonte
openssl rand 32 -out key.txt
Eu faço isso com criptografia de chave assimétrica. Isso significa que eu tenho uma chave pública (que eu posso compartilhar com qualquer pessoa que gostaria de me enviar pacotes criptografados), o que me permite criptografar o pacote. Também tenho uma chave privada (que não compartilho) que me permite descriptografar o pacote.
Meus comandos para criptografar o diretório de trabalho atual: o -e para criptografar, o -r para especificar um "destinatário" ou chave a ser usada, o -o para especificar o arquivo de saída.
E para descriptografar para o diretório de trabalho atual:
Ou para descriptografar para um arquivo tgz padrão para descompactar posteriormente:
Obviamente, isso só funciona se eu já tiver gerado um par de chaves público-privado e o instalado com o gpg. No meu caso, fiz isso usando o guia da Digital Ocean em https://www.digitalocean.com/community/tutorials/how-to-use-gpg-to-encrypt-and-sign-messages-on-an-ubuntu -12-04-vps . O ABCD1234 no comando de criptografia refere-se a uma das chaves públicas instaladas no meu sistema. Este guia também aborda como compartilhar sua chave pública e instalar chaves públicas de outras pessoas para enviar e receber arquivos criptografados.
fonte
GnuPG é o que eu escolhi usar para esse processo e porque você declarou que as etapas de descriptografia são opacas (eu concordo nesta instância de uso). Também trabalhei nesse lado do problema. Verifique os logs de construção do Travis-CI dos projetos para saber quais recursos atualmente funcionam como projetados e o arquivo travis.yml para acompanhar os resultados dos logs. Basicamente, você precisará de três scripts deste projeto; o script keygen, script auxiliar de descriptografia e script do listener de pipe nomeado. O script keygen script e o script auxiliar de descriptografia devem ser usados no dispositivo que realizará a descriptografia e o script do listener de pipe nomeado deverá estar na criptografia de pré-formas do dispositivo.
O script de ouvinte de pipe nomeado de criptografia aceita cadeias de caracteres, caminhos de arquivo ou caminhos de diretório, uma vez configurados e emitidos resultados criptografados de maneira previsível.
Abaixo estão exemplos de comandos que podem ser colocados no seu script de backup noturno para criptografia e compressão de diretórios + criptografia
Para descriptografia, você deve verificar como os scripts de compilação
.travis-ci/script_decrypt.sh
e.travis-ci/test_search_script_decrypt.sh
como as seqüências anexadas de dados criptografados são recuperadas e como os arquivos / diretórios em massa são restaurados.É claro que, com as coisas deste experimento, é melhor não usar pares de chaves primárias (meio por que o script keygen foi escrito) e não deve ser usado em dados importantes até que você tenha certeza de como restaurá-lo para a forma legível.
fonte