Como especificar uma chave privada ao descriptografar um arquivo usando o GnuPG?

22

Estou tentando descriptografar um arquivo com o GnuPG, mas ao usar o comando abaixo:

gpg --decrypt filename.gpg

Recebo a seguinte mensagem:

gpg: encrypted with RSA key, ID 3662FD5E
gpg: decryption failed: No secret key

Já tenho a chave privada com a qual o arquivo foi criptografado, mas não sei como especificá-lo. Existe alguma opção que eu possa incluir ao fazer a descriptografia para apontar para essa chave?

Crista23
fonte
1
O que gpg --list-secret-keys 0x3662FD5Eimprime?
Jonas Schäfer
Não, não faz. Existe alguma maneira de adicioná-lo?
Como você obteve a chave privada?
Jonas Schäfer
O que esse ID realmente representa?
Nishant

Respostas:

17

Já tenho a chave privada com a qual o arquivo foi criptografado, mas não sei como especificá-lo.

Entendo isso como "Eu tenho um arquivo contendo a chave privada, mas não sei como dizer ao GnuPG para usá-lo".

O GnuPG exige que as chaves (públicas e privadas) sejam armazenadas no chaveiro do GnuPG. Isso é tão fácil quanto

gpg --import [keyfile]

Posteriormente, você poderá descriptografar o arquivo exatamente da maneira que já tentou.

Jens Erat
fonte
5
Então o gpg é inteligente o suficiente para saber qual chave descriptografar depois de importar várias chaves?
RollRoll
Sim. Geralmente, a chave é mencionada no arquivo criptografado, se não o GnuPG tenta todas as chaves.
precisa saber é o seguinte
Eu uso o GnuPG programaticamente e tenho um chaveiro com centenas de chaves privadas e a mensagem pode ser criptografada com dezenas delas. Parece um pouco inútil que apenas tente todos eles (na verdade, tente desbloqueá-los todos usando a senha fornecida e pegue a primeira que funciona).
jlh
2
O GnuPG só tenta todos eles se a chave estiver oculta pela parte que envia. Parece que seu caso de uso não era um dos destinos de design do GnuPG. Se você conhece a chave privada correta, embora ela não esteja armazenada no arquivo criptografado, considere gerenciar diferentes diretórios / chaveiros do GnuPG com uma única chave privada.
Jens Erat
Sim, parece que meu caso de uso não é adequado para gpg. Para completar, aqui está uma observação mais detalhada: meus IDs de destinatários não estão ocultos (não usando -R); portanto, o gpg sabe qual das talvez uma dúzia de chaves que ele deve tentar, não precisa tentar o chaveiro inteiro. No entanto, o gpg não sabe para qual chave eu forneci a senha, então ele precisa tentar essas dezenas de teclas, o que torna as coisas consideravelmente mais lentas.
Jlh
6
bash-4.2$ gpg --import b_secret.key
gpg: key 23E7859B: already in secret keyring
gpg: Total number processed: 1
gpg:       secret keys read: 1
gpg:  secret keys unchanged: 1
bash-4.2$ gpg --decrypt b_txt.asc
gpg: key 23E7859B: secret key without public key - skipped
gpg: encrypted with RSA key, ID 04702E37
gpg: decryption failed: secret key not available
anshul
fonte
3
Bem-vindo ao SuperUser, sua sugestão já está em outra resposta. Você deve aprovar essa resposta em vez de criar uma nova. Você ainda não tem reputação suficiente para fazer isso, aguarde até o fazer.
Vlastimil Ovčáčík
2

Você não precisa declarar expressamente a chave secreta no comando gpg decrypt. Se o tanto Pública keypair- E chaves-Privada como estados Jens estão presentes no chaveiro no host onde você está decifrando, GPG automagicamente determinar a chave secreta necessária para desencriptação e apresentam um desafio senha.

NO ENTANTO, se você quiser experimentar todas as chaves (não armazenadas em cache) ( talvez esteja testando um arquivo criptografado com várias chaves ), o uso do comutador --try-all-secretspercorrerá todas as chaves secretas do seu chaveiro, testando-as sucessivamente. ou seja:

gpg -d --try-all-secrets test-gpg.txt.asc

HTH- Terrence

F1Linux
fonte