Evolução com o GnuPG: 'nenhuma chave pública importada' mesmo que seja importada

1

Eu estava executando o Evolution no Debian buster (testando) amd64 com o GnuPG para criptografar emails. Eu tenho a minha chave privada GPG em um ato YubiKey como smartcard GPG. Como o Evolution de alguma forma não conseguiu carregar meus calendários usando o CalDAV, eu reiniciei o Evolution . O CalDAV está funcionando bem agora.

Mas após a redefinição, outro problema apareceu: A criptografia / assinatura de GPG não funciona mais. Mensagens são decifradas sem problemas.

Além disso, não consigo escolher minha própria chave GPG nas configurações da conta, mesmo que ela seja importada corretamente e listada em gpg -K :

Agorapossoescolherminhachave.

Quandotentoenviarumemailcriptografado,issofalhacomoEvolutionmostrandooseguinteerro:

Couldnotcreatemessage.Youmayneedtoselectdifferentmailoptions.Detailederror:Failedtoencrypt:Invalidrecipient<[email protected]>specified.Acommonissueisthatthegpg2doesn’thaveimportedpublickeyforthisrecipient.

Masminhachavepúblicaéimportada.OmesmoacontecequandodesativoaopçãoAlwaysencrypttomyselfwhensendingencryptedmessageswiththisaccount.Oerroentãoé:

Detailederror:Failedtoencrypt:Invalidrecipient<[email protected]>specified.Acommonissueisthatthegpg2doesn’thaveimportedpublickeyforthisrecipient.

Criptografar/assinarapartirdalinhadecomandocomocomandogpgfuncionabem.Usandoumachaveprivadaquenãoestáemumcartãointeligentetambémnãofuncionou.RedefiniroGPGeoEvolutionnãofuncionou.

Eunãotenhoideiaagoraoquedevofazeragora.Obrigadoatodosantecipadamente:)

EDITAR:saídadestrace-p$(pidofevolution)-f-etrace=execveaodescriptografar(funcionabem):

[pid4613]execve("/usr/local/bin/gpg2", ["gpg2", "--verbose", "--no-secmem-warning", "--no-greeting", "--no-tty", "--status-fd=66", "--command-fd=67", "--verify-options", "show-photos", "--photo-viewer", "/usr/lib/evolution/camel-gpg-pho"..., "--decrypt", "--output", "-"], [/* 34 vars */]) = -1 ENOENT (No such file or directory)
[pid  4613] execve("/usr/bin/gpg2", ["gpg2", "--verbose", "--no-secmem-warning", "--no-greeting", "--no-tty", "--status-fd=66", "--command-fd=67", "--verify-options", "show-photos", "--photo-viewer", "/usr/lib/evolution/camel-gpg-pho"..., "--decrypt", "--output", "-"], [/* 34 vars */]) = 0

Ao criptografar (que falha):

[pid  4537] execve("/usr/local/bin/gpg2", ["gpg2", "--verbose", "--no-secmem-warning", "--no-greeting", "--no-tty", "--batch", "--yes", "--status-fd=67", "--encrypt", "--armor", "-u", "[email protected]", "-r", "<[email protected]>", "--output", "-"], [/* 34 vars */]) = -1 ENOENT (No such file or directory)
[pid  4537] execve("/usr/bin/gpg2", ["gpg2", "--verbose", "--no-secmem-warning", "--no-greeting", "--no-tty", "--batch", "--yes", "--status-fd=67", "--encrypt", "--armor", "-u", "[email protected]", "-r", "<[email protected]>", "--output", "-"], [/* 34 vars */]) = 0

O arquivo /usr/local/bin/gpg2 não existe e parece não estar parte de qualquer pacote Debian .

EDIT2 : O comando @Hauke Laging postado nos comentários funciona, mas interativamente precisei confirmar para executar a ação (como também foi quando eu criptografei manualmente usando a linha de comando):

echo foo | /usr/bin/gpg2 --status-fd=1 --encrypt --armor -u [email protected] -r [email protected] --output -

Enquanto o comando que o Evolution quer executar falhar (removi o <> que causa problemas com o zsh):

➜  ~  gpg2 --verbose --no-secmem-warning --no-greeting --no-tty --batch --yes --status-fd=67 --encrypt --armor -u [email protected] -r [email protected] --output
gpg: Fatal: status-fd is invalid: Bad file descriptor

A configuração --status-fd=1 ainda falha, mas com erros diferentes:

➜  ~ echo "foo" | gpg2 --verbose --no-secmem-warning --no-greeting --no-tty --batch --yes --status-fd=1 --encrypt --armor -u [email protected] -r [email protected] --output -
[GNUPG:] KEY_CONSIDERED <recipient's key fingerprint> 0
gpg: using pgp trust model
gpg: using subkey <recipient's encryption subkey id> instead of primary key <recipient's primary key id>
[GNUPG:] KEY_CONSIDERED <recipient's key fingerprint> 0
gpg: automatically retrieved '[email protected]' via Local
gpg: <recipient's encryption subkey id>: There is no assurance this key belongs to the named user
[GNUPG:] INV_RECP 10 [email protected]
[GNUPG:] FAILURE encrypt 53
gpg: [stdin]: encryption failed: Unusable public key

EDIT3: Apenas testado: assinando mensagens dos trabalhos do Evolution, bem como descriptografando.

Quando criptografo manualmente uma mensagem usando a linha de comando, recebo a seguinte mensagem que, na minha opinião, causa esse problema:

➜  ~ echo "foo" | gpg --encrypt -r [email protected] --armor
gpg: automatically retrieved '[email protected]' via Local
gpg: <recipient's encryption subkey id>: There is no assurance this key belongs to the named user
sub  rsa4096/<recipient's encryption subkey id> 2015-10-14 Recipient's Name <[email protected]>
 Primary key fingerprint: <recipient's key fingerprint>
      Subkey fingerprint: <recipient's encryption subkey fingerprint>

It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Use this key anyway? (y/N) y
-----BEGIN PGP MESSAGE-----
[...]
-----END PGP MESSAGE-----

EDIT4 : Como a mensagem acima é causada pela falta de confiança do proprietário (pelo menos eu acho que sim), gostaria de definir a confiança do proprietário do destinatário usando gpg --edit-key (que não foi definido antes):

gpg> trust 
pub  rsa4096/<some key id>
     created: <some date in the past>  expires: <some date in the future>  usage: SCA 
     trust: unknown       validity: unknown
sub  rsa4096/<some other key id>
     created: <some date in the past>  expires: <some date in the future>  usage: E   
[ unknown] (1). Pecipient's Name <[email protected]>

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

Your decision? 3

pub  rsa4096/<some key id>
     created: <some date in the past>  expires: <some date in the future>  usage: SCA 
     trust: marginal      validity: unknown
sub  rsa4096/<some other key id>
     created: <some date in the past>  expires: <some date in the future>  usage: E   
[ unknown] (1). Pecipient's Name <[email protected]>

Por isso, defino a confiança do proprietário do destinatário, mas por que ainda há esse [ unknown] no final?

    
por tr01 01.11.2017 / 21:50

1 resposta

1

Você não entendeu como o esquema de validade do OpenPGP funciona. Mas independente disso: Os aplicativos não devem ter problemas ao usar chaves não válidas (portanto, você pode reclamar para os desenvolvedores do Evolution).

Existem duas maneiras (com o GnuPG no modo padrão) como um certificado pode se tornar válido:

  1. A sua confiança é definida como final.
  2. Ele tem uma assinatura (válida, ou seja, não expirada) de uma assinatura válida (ou seja, não expirada) de uma chave com a última propriedade confiável.

Isso significa que: Se nenhum certificado em seu chaveiro tiver a confiança final do proprietário, você perderá automaticamente.

Como alternativa, você pode alterar o modelo de confiança com

--trust-model direct

Depois, você pode definir a validade diretamente conforme tentou. Mas, em qualquer caso, o certificado deve ser "completamente válido". Validade marginal não é suficiente.

Eu expliquei isso em detalhes no meu site:

link

O texto é alemão, mas há algumas imagens nesse bloco que podem ser úteis para o entendimento.

    
por 04.11.2017 / 11:20