
Supondo que eu criptografei 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 de outra criptografia?
Responder1
Resposta curta: não
Em primeiro lugar, observe que se você não for um dos destinatários, é totalmente impossível. Você nem mesmo tem a capacidade de descriptografar o arquivo, muito menos de adicionar um destinatário. Mesmo que você tenha criptografado há dois segundos.
Supondo que você seja um destinatário, é tecnicamente possível. Na verdade, o arquivo é criptografado com uma chave de sessão e a chave de sessão é criptografada com sua chave pública, para que você possaem teoriadescriptografar a chave de sessão e criptografá-la novamente para a chave de outra pessoa e, em seguida, empacotar tudo em um arquivo, como se você tivesse criptografado originalmente o documento para ambas as pessoas.
No entanto,gpg não tem esse recurso. O mais próximo que você pode chegar do gpg é
- Use a
--show-session-key
opção para obter a chave da sessão (que parece também descriptografar o arquivo, perdendo o objetivo neste caso) - Criptografe essa chave de sessão para a chave pública de outra pessoa (na verdade, isso cria uma nova chave de sessão e usa essa chave de sessão para criptografar a chave de sessão original)
- Envie os dois arquivos.
- O destinatário pode descriptografar a chave de sessão e usá-la
--override-session-key
para descriptografar a mensagem original.
Responder2
1) É por esta situação que criptografar um arquivo para você mesmo (bem como para os destinatários pretendidos) é sempre uma boa ideia. RedGrittyBrick está correto acima ao descrever como o GPG e o PGP funcionam, o que desemboca na resposta de nathang acima.
2) No entanto, se você tiver o arquivo original, é melhor simplesmente criar um novo arquivo criptografado para o novo destinatário.
Supondo que você não queira seguir o caminho da chave de sessão da sugestão de nathang, se você criptografou o arquivo para si mesmo (como acima no item 1) em primeiro lugar, descriptografe-o e siga a etapa 2 acima.
Se você não tiver o original nem criptografá-lo para si mesmo, não poderá recuperar os dados e não poderá criptografá-los para outra pessoa sem que o primeiro destinatário lhe envie uma cópia.
Responder3
É possível adicionar outro destinatário sem primeiro descriptografar o arquivo, seguido de outra criptografia?
Não é possível sem descriptografarde forma algumamas issoparece que deveria serpossível sem descriptografarpara um arquivo:
gpg -d this_file.gpg | gpg -e -r "Some Name" -r "Another Name" -o this_file.gpg
Exceto que isso parece resultar em um arquivo corrompido (pelo menos às vezes) porque gpg
está lendo e gravando no mesmo arquivo simultaneamente:
Em vez disso, você poderia fazer o seguinte (em um script) para evitar a necessidade de gerenciar o arquivo descriptografado:
gpg -d -o this_file.txt this_file.gpg
gpg -e \
-r "Some Name" \
-r "Another Name" \
-o this_file.gpg \
--batch --yes \
this_file.txt
shred -u this_file.txt
shred
, com a -u
opção, substitui com segurança os dados e, em seguida, exclui o arquivo especificado. Existem programas semelhantes para outras plataformas, como srm
no Mac OS X.
Ou você poderia escrever seu roteiro assim (cortesia dedave_thompson_085) para evitar a necessidade de armazenar os dados descriptografados em um arquivo:
gpg -d this_file.gpg \
| gpg -e \
-r "Some Name" \
-r "Another Name" \
-o this_file.gpg.new \
--batch --yes
mv -f this_file.gpg.new this_file.gpg
Responder4
Como já mencionado nas respostas anteriores e, também bem descrito nesteFerramentas GPG publicar:
"Nenhum destinatário pode ser adicionado a um arquivo que já esteja criptografado. Se isso fosse possível, haveria um sério problema de segurança."
Dito isto, uma alternativa poderia ser estaplug-in vim, um complemento muito útil para visualizar e editargpgarquivos criptografados:vim-gnupg.
Uma vez instalado emvim, adicionar destinatários a um arquivo criptografado pode ser feito por meio do :GPGEditRecipients
comando.