Melhor Script PGP / GPG Criptografar / Descriptografar

2

Existe um bom Python padrão ou script de shell simples que eu possa usar para criptografar e descriptografar arquivos via PGP / GPG? Eu estaria executando esse script a cada 5 minutos.

    
por Daniel 12.11.2009 / 02:56

3 respostas

8

Você não quer uma cifra simétrica

Se você precisar executar a criptografia automaticamente, não desejará usar uma cifra simétrica com uma frase secreta (isso é o que gpg -ac faz). Armazenar a senha em um script ou no cron é inaceitável e sem sentido (sério, isso soa duro, mas você pode rot13).

Se você estiver usando criptografia, não basta simplesmente "alterar as permissões" do script. Se fosse, você poderia simplesmente alterar as permissões nos dados que deseja ocultar. A criptografia neste nível obviamente significa impedir que alguém que tenha acesso à sua conta (provavelmente de forma maliciosa) leia os dados assim que eles tiverem acesso.

Nesse caso, o que você deseja é a criptografia de chave pública. Você gera uma chave privada (que é criptografada novamente com uma cifra simétrica com uma senha) e uma chave pública. A chave pública pode ser distribuída em qualquer lugar. Qualquer pessoa pode criptografar dados que você pode ler com sua chave privada. Ninguém deve ter acesso à sua chave privada. Então, para o tipo de criptografia que você precisa, é perfeito. Você pode armazenar sua chave pública no servidor e criptografar todos os seus dados usando-a. Se um invasor tiver sua chave pública e seus dados criptografados, ele não poderá fazer nada.

Sua chave privada deve ser a parte do quebra-cabeça que um invasor em potencial está sempre ausente. Você precisa esconder isso. isto é, criptografar dados que você pode ler é fácil. Descriptografá-lo deve ser difícil. Com uma cifra simétrica, a dificuldade de ambos é a mesma (se você quiser pensar sobre isso nesses termos, provavelmente não é a maior analogia.)

O GPG torna a criptografia pública relativamente indolor, mas, primeiro, você precisa gerar um par de chaves (isso não é feito no seu servidor, mas na sua área de trabalho ou em algum lugar seguro, você está feliz por ter sua chave privada):

$ gpg --gen-key

Corra com as perguntas.

Em seguida, você deseja exportar sua chave pública GPG e copiá-la e colá-la em seu servidor:

$ gpg --list-keys
$ gpg --armor --export [email protected] > pub.key

Copie pub.key para seu servidor e, em seguida, importe com:

$ gpg --import pub.key

Se você está pensando em usar criptografia, é óbvio que você tem dados confidenciais. Eu enfatizo novamente: você precisa pensar seriamente sobre a forma como você está criptografando esses dados, pois é um grande esforço para nenhum ganho se você simplesmente usar uma cifra simétrica onde a senha pode ser acessada trivialmente.

    
por 12.11.2009 / 11:12
0
#!/bin/bash
gpg -ac passphrase="secret" < $1

Parece desnecessário criar seu próprio script.

    
por 12.11.2009 / 03:25
0

A linha crontab a seguir fará com que secretfile seja criptografado a cada 5 minutos com a frase secreta especificada, sem revelar a frase secreta para ps aux e consultas semelhantes. Claro, provavelmente você também desejará fazer algo com o arquivo original e o resultado criptografado, mas isso é com você.

*/5 * * * * gpg -c --passphrase-fd 3 secretfile 3<<<"passphrase"
    
por 20.11.2009 / 11:19