Você pode usar o GPG para criptografar simetricamente um arquivo com uma frase secreta ( gpg -c
). Se a senha tiver entropia suficiente, você não precisará de uma etapa extra para gerar uma chave secreta. O que significa "entropia suficiente"? Sua criptografia precisa suportar ataques offline, onde o invasor pode fazer tentativas de quebra tão rápido quanto o hardware permitir. Com uma pequena fazenda de PCs, o invasor pode conseguir algumas centenas de bilhões de tentativas por segundo, o que é aproximadamente 2 ^ 69 por década. Então, com uma entropia de 2 ^ 70, você estará seguro. Isso significa que, se sua frase secreta consistir em letras completamente aleatórias (maiúsculas ou minúsculas) e dígitos, ela deverá ter 12 caracteres.
Agora, para armazenar essa frase secreta, você pode usar o GPG com seus pares de chaves usuais. Use gpg --gen-key
para gerar um par de chaves e gpg -e
para criptografar a senha usada para criptografar o arquivo grande para um ou mais pares de chaves.
Aqui está um esboço sobre como fazer a criptografia (note que evito colocar a frase secreta na linha de comando ou no ambiente, para garantir que outro usuário não possa encontrá-la olhando para a saída ps
enquanto o comando está sendo executado):
passphrase=$(pwgen -s 12 -1)
echo "The passphrase for myiso.iso.gpg is: $passphrase" |
gpg -e -r somebody -r somebodyelse >passphrase.gpg
echo "$passphrase" | gpg -c --passphrase-fd 3 3<&0 <myiso.iso >myiso.iso.gpg
e como descriptografar:
passphrase=$(gpg -d <passphrase.gpg)
echo "$passphrase" | gpg -d --passphrase-fd 3 3<&0 <myiso.iso.gpg >myiso.iso
O motivo para usar uma frase secreta (um segredo compartilhado) em vez de criptografar diretamente é permitir que o arquivo seja compartilhado entre várias pessoas. Apenas a pequena frase secreta precisa ser criptografada novamente se você quiser adicionar um destinatário (a remoção de um destinatário só faz sentido se você souber que o destinatário não teve acesso ao texto simples e requer a reencodificação do texto criptografado).