A descriptografia do arquivo tenta usar a subchave e, em seguida, apresenta o erro 'Sem chave secreta'

A descriptografia do arquivo tenta usar a subchave e, em seguida, apresenta o erro 'Sem chave secreta'

Usando: gpg (GnuPG) 2.0.22 libgcrypt 1.5.3

Estou tentando descriptografar um arquivo de um site remoto. Exportei nossa chave para um arquivo. gpg <filename>retorna: (IDs de chave alterados)

pub 2048R/656CC421 2018-04-19
sub 2048R/99F89J32 2018-04-19

Enviei ao remetente e pedi que importassem, assinassem e confiassem.

Eles me enviaram dois arquivos de chaves diferentes. Usando gpg <filename>retornos:

1. pub 2048R/62568LK1 2015-09-03

2. pub 2048R/J561VE25 2015-09-23

Se eu fizer uma chave de edição, recebo o seguinte:

A minha chave:

Secret key is available.

pub 2048R/656CC421 created: 2018-04-19 expires: never usage: SC
trust: ultimate validity: ultimate
sub 2048R/99F89J32 created: 2018-04-19 expires: never usage: E
[ultimate] (1).

Suas chaves:

1. pub 2048R/62568LK1 created: 2015-09-23 expires: never usage: SCE
trust: full validity: full
[ full ] (1).

2. pub 2048R/99F89J32 created: 2015-09-03 expires: never usage: SC
trust: full validity: full
[ full ] (1).

Estou executando o comando decrypt em um script bash com os seguintes parâmetros.

echo $passphrase | /usr/bin/gpg --verbose --passphrase-fd 0 --no-tty --output $output_file --recipient myuser --decrypt $input_file

A seguir está a saída do comando:

Version: GnuPG v1.2.4 (MingW32)
gpg: armor header:
gpg: public key is 99F89J32
gpg: using subkey 99F89J32 instead of primary key 656CC421
gpg: using subkey 99F89J32 instead of primary key 656CC421
gpg: cancelled by user
gpg: encrypted with 2048-bit RSA key, ID 99F89J32, created 2018-04-19
"usrname (Description) <[email protected]>"
gpg: public key decryption failed: Operation cancelled
gpg: decryption failed: No secret key

Minha conclusão de tudo isso é que o remetente precisa me enviar sua chave pública no mesmo formato que enviei a ele. Como:

pub 2048R/J561VE25 2015-09-23

sub 2048R/SOM3NUMB 2015-09-23

Achei que os arquivos-chave que eles me enviaram não possuem as informações de pub/sub correspondentes e, portanto, o gpg não pode validar porque tenho apenas uma parte das informações do par de chaves.

Alguém pode me dizer se estou errado nisso ou se meus pensamentos estão corretos?

Obrigado!

Responder1

Version: GnuPG v1.2.4 (MingW32)

Bolas sagradasisso é antigo – a versão 1.2.4 foi lançada em2003. Parece que o remetente não se preocupa muito em atualizar seu software de segurança.

(Seu próprio 2.0.22 não é muito melhor, com 2013 como data de lançamento.)

gpg: public key is 99F89J32
gpg: using subkey 99F89J32 instead of primary key 656CC421
gpg: using subkey 99F89J32 instead of primary key 656CC421

Isso é normal. O par de chaves "principal" é usado apenas para assinar (também conhecido como certificar) outras chaves; muitas vezes também para assinar mensagens. Não é utilizável para criptografia – você sempre tem uma subchave para essa finalidade.

(A separação também permite coisas como assinatura offline ou rotação frequente de chaves de criptografia.)

gpg: cancelled by user
gpg: encrypted with 2048-bit RSA key, ID 99F89J32, created 2018-04-19 "usrname (Description) <[email protected]>"
gpg: public key decryption failed: Operation cancelled
gpg: decryption failed: No secret key

Parece que o GnuPG tentou exibir uma solicitação de senha para desbloquearseupar de chaves, mas a janela da senha não abriu ou você mesmo a cancelou acidentalmente.

O prompt de senha é mostrado pelo GnuPGpinheiralcomponente, que por sua vez é iniciado viaagente gpg. Eu realmente não sei por onde começar a solucionar isso no Windows – talvezuma versão mais recentefuncionaria melhor. (Seu GnuPG 2.0.22 foi lançado em 2013.)

Versões mais recentes, começando com GnuPG 2.1, suportam um modo "loopback pinentry" que pode funcionar sem opinheiralcomponente. Se a atualização por si só não ajudar, tente ativar esta opção.

que o remetente precisa me enviar sua chave pública

A chave pública do remetente é inútil para descriptografia e só é necessária para verificação de assinatura.

Como:

pub 2048R/J561VE25 2015-09-23

Achei que os arquivos-chave que eles me enviaram não possuem as informações de pub/sub correspondentes e, portanto, o gpg não pode validar porque tenho apenas uma parte das informações do par de chaves.

Não. Esta informação destina-se avocê, o usuário – resume o tipo da chave, o ID curto (inútil) e a data de validade. O GnuPG pode extraí-lo perfeitamente da própria chave, não que seja necessário.

Responder2

Bem, depois de muitas idas e vindas, encontrei a solução em duas alterações.

  1. O gpg-agent.conf precisava ser pinentry-program /usr/bin/pinentry-cursesadicionado a ele.

  2. O escritor do script precisava adicionar algo --batchà sua linha de comando.

Feito isso, o gpg conseguiu obter a chave secreta e descriptografá-la.

Obrigado a grawity por responder. Seu tempo é apreciado.

informação relacionada