gpg encryption: erro na descriptografia com chave confirmada e comando exato como transmissões bem sucedidas anteriores

1

O Cliente A geralmente criptografa um arquivo com uma chave pública e o envia ao Cliente B que possui a chave privada correspondente para descriptografar o arquivo.

Minha equipe assumirá as responsabilidades do Cliente A e me fornecerá a chave pública (enviada por e-mail para um arquivo PUB_KEY.asc não-portado) que eu importei com sucesso e posso ver no meu chaveiro:

gpg --list-keys

pub   1024R/21FG3F01 2008-11-05
uid                  PUB_KEY
sub   1024R/3287SBN9 2008-11-05

Eu criptografei o arquivo com o comando exatamente igual ao do Cliente A e enviei-o para o Cliente B e sua descriptografia falhou:

gpg --output file.txt.gpg -e -r PUB_KEY file.txt

O cliente B recebe o seguinte erro de descriptografia: 1080: nenhuma chave privada pode ser encontrada para descriptografia (embora eles realmente tenham a chave privada).

Eles mencionaram a possibilidade de assinar a chave e, por isso, tentei assinar a chave pública usando gpg --sign-key PUB_KEY e recebi o seguinte erro:

pub  1024R/21FG3F01  created: 2008-11-05  expires: never       usage: SC
                     trust: unknown       validity: unknown
sub  1024R/3287SBN9  created: 2008-11-05  expires: never       usage: E
[ unknown] (1). PUB_KEY

gpg: no default secret key: No secret key

Por que eu precisaria de uma chave secreta para assinar uma chave pública? O que poderia fazer com que o Cliente B não pudesse descriptografar o arquivo quando estou realmente usando a chave pública correta?

    
por kstats9pt3 09.08.2017 / 14:00

2 respostas

1

Sua primeira pergunta ("Por que eu preciso de uma chave secreta para assinar uma chave pública?") é direta: é assim que funciona a criptografia de chave pública. Assinar algo (uma chave, um documento etc.) usa sua chave privada e pode ser verificado usando sua chave pública. A criptografia usa sua chave pública e pode ser descriptografada usando sua chave privada.

Sua segunda pergunta está mais envolvida. Você assinar ou não assinar a chave não deve importar - a assinatura só impedirá que avisos sobre a chave não sejam confiáveis; é uma parte importante da web-of-trust que o PGP / GPG é construído. Mas, se você verificou a exatidão da chave fora da rede de confiança (por exemplo, recebendo-a diretamente do destinatário), poderá ignorar a rede de confiança. Portanto, nenhuma assinatura deve ser necessária.

O que eu acho que está acontecendo é que você está usando um argumento -r diferente da impressão digital de chave completa - e você está acidentalmente criptografando para o destinatário errado. Você deve usar a impressão digital completa (por exemplo, 067E3C456BAE240ACEE88F6FEF0F382A1A7B6500 , não a curta EF0F382A1A7B6500 e certamente não a muito curta 1A7B6500 ).

A única outra coisa em que consigo pensar é que você está usando (provavelmente sem saber) algum algoritmo que o lado da descriptografia não suporta. Por exemplo, se você estiver usando uma versão muito mais recente do gnupg do que o destinatário. Ou o destinatário está usando algum outro programa. É normal que a chave do destinatário especifique o que o programa suporta, mas possivelmente a chave específica não está certa ou está errada. O GPG tem opções para substituir (consulte a página do manual em "INTEROPERABILITY", mas vale a pena tentar --pgp8 , --pgp7 e --pgp6 ).

    
por 09.08.2017 / 14:33
1

O gnupg relata qual chave é necessária para descriptografar o arquivo antes de falhar, pois ele é incluído nos cabeçalhos da mensagem criptografada. Por exemplo:

‰ gpg -d test
gpg: encrypted with 4096-bit RSA key, ID 0xF38153E276D54749, created 2011-09-23
      "Greg Kroah-Hartman (Linux kernel stable release signing key) <[email protected]>"
gpg: decryption failed: No secret key

A chave fornecida na mensagem corresponde a qualquer uma das chaves na saída gpg --list-secret-keys no cliente B? Como parece que você recebeu uma chave pública errada ou o Cliente B removeu a chave secreta {sub,} em questão.

    
por 09.08.2017 / 14:37