Supondo que eu tenha criptografado um arquivo (possivelmente grande) usando GPG; por exemplo
gpg --recipient "Some Name" -o this_file.gpg --encrypt this_file.txt
É possível adicionar outro destinatário sem primeiro descriptografar o arquivo, seguido por outra criptografia?
--symmetric
para isso. Com--recipient
ele, usa a chave pública do destinatário. Pode haver mais de 1 destinatário, mas isso deve ser feito em um comando, não em 2 comandos separados.gpg -e -r <name1> -r <name2> ... <file>
" Eu ainda não tentei isso. Ele se encaixa com o que aprendi sobre criptografia há muitos anos, que é quase sempre mais eficiente usar algoritmos simétricos rápidos para criptografar o texto da mensagem. Somente a chave da mensagem é criptografada usando criptografia assimétrica lenta.Respostas:
Resposta curta: não
Antes de tudo, observe que, se você não for um dos destinatários, é completamente impossível. Você nem tem a capacidade de descriptografar o arquivo, muito menos adicionar um destinatário. Mesmo se você o criptografou dois segundos atrás.
Supondo que você seja um destinatário, é tecnicamente possível. O arquivo é realmente criptografado com uma chave de sessão e a chave de sessão é criptografada com sua chave pública; portanto, você pode, em teoria, descriptografar a chave da sessão e criptografá-la novamente na chave de outras pessoas, e depois empacotar tudo em um arquivo, como se você originalmente criptografou o documento para as duas pessoas.
No entanto, o gpg não possui esse recurso . O mais próximo que você pode chegar do gpg é
--show-session-key
opção para obter a chave da sessão (que também parece descriptografar o arquivo, perdendo o ponto nesse caso)--override-session-key
para descriptografar a mensagem original.fonte
1) Essa situação é a razão pela qual criptografar um arquivo para si mesmo (e também para os destinatários pretendidos) é sempre uma boa ideia. O RedGrittyBrick está correto acima ao descrever como o GPG e o PGP funcionam, o que flui para a resposta de nathang acima.
2) No entanto, se você tiver o arquivo original, é melhor criar simplesmente um novo arquivo criptografado para o novo destinatário.
Supondo que você não queira seguir o caminho da chave da sessão a partir da sugestão de nathang, se você criptografou o arquivo para si mesmo (como acima no item 1) em primeiro lugar, decifre-o e siga o passo 2 acima.
Se você não tiver o original nem criptografado para si mesmo, não poderá recuperar os dados nem criptografá-los para outras pessoas sem que o primeiro destinatário envie uma cópia para você.
fonte
Não é possível sem descriptografar , mas parece que deveria ser possível sem descriptografar para um arquivo :
Exceto que isso parece resultar em um arquivo corrompido (pelo menos algumas vezes) porque
gpg
está lendo e gravando no mesmo arquivo simultaneamente:Em vez disso, você pode fazer o seguinte (em um script) para evitar a necessidade de gerenciar o arquivo descriptografado:
shred
, com a-u
opção, substitui com segurança os dados e exclui o arquivo que você especificar. Existem programas semelhantes para outras plataformas, comosrm
no Mac OS X.Ou você pode escrever seu script assim (cortesia de dave_thompson_085 ) para evitar a necessidade de armazenar os dados descriptografados em um arquivo:
fonte
gpg -d file.gpg | gpg -e ... -o file.new; mv file.new file.gpg
ou seu espelhomv file.gpg file.old; gpg -d file.old | gpg -e ... -o file.gpg
. Ou (talvez demasiado) inteligentemente apenas manter o velho inode :{ rm file.gpg; gpg -d /dev/fd/3; } 3<file.gpg | gpg -e ... -o file.gpg