GnuPG의 진화: 가져왔음에도 불구하고 "공개 키를 가져오지 않음"

GnuPG의 진화: 가져왔음에도 불구하고 "공개 키를 가져오지 않음"

나는 이메일을 암호화하기 위해 데비안 버스터(테스트) amd64에서 Evolution을 실행하는 GnuPG를 사용하고 있습니다. 내 GPG 개인 키는 GPG 스마트 카드 역할을 하는 YubiKey에 있습니다. Evolution에서는 CalDAV를 사용하여 내 캘린더를 로드할 수 없기 때문에진화 재설정. CalDAV는 현재 잘 작동하고 있습니다.

그러나 재설정 후 또 다른 문제가 발생했습니다. GPG 암호화/서명이 더 이상 작동하지 않는다는 것입니다. 이메일 복호화에는 문제가 없습니다.

또한 GPG 키를 올바르게 가져와서 다음에 나열해도 계정 설정에서 내 GPG 키를 선택할 수 없습니다 gpg -K.

여기에 이미지 설명을 입력하세요.

이제 키를 선택할 수 있습니다.

암호화된 이메일을 보내려고 하면 실패하고 Evolution에서 다음 오류를 표시합니다.

Could not create message.
You may need to select different mail options.
Detailed error: Failed to encrypt: Invalid recipient <[email protected]>  specified. A common issue is that the gpg2 doesn’t have imported public key for this recipient.

하지만 내 공개 키수입. 옵션을 비활성화해도 같은 일이 발생합니다 Always encrypt to myself when sending encrypted messages with this account. 그런 다음 오류는 다음과 같습니다

Detailed error: Failed to encrypt: Invalid recipient <[email protected]> specified. A common issue is that the gpg2 doesn’t have imported public key for this recipient.

명령을 사용하여 명령줄에서 암호화/서명하는 gpg것이 효과적입니다. 스마트 카드에 없는 개인 키를 사용하는 것도 작동하지 않습니다. GPG 및 Evolution을 재설정해도 효과가 없습니다.

나는 지금 무엇을 해야할지 모르겠습니다. 다들 감사 해요:)

편집하다: strace -p $(pidof evolution) -f -e trace=execve복호화 시 출력(잘 작동함):

[pid  4613] 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

암호화 시(실패):

[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

파일이 /usr/local/bin/gpg2존재하지 않으며 존재하지 않는 것 같습니다.데비안 패키지의 일부.

편집 2:@Hauke ​​Laging이 댓글에 게시한 명령은 작동하지만 작업을 수행하는지 대화형으로 확인해야 합니다(예: 명령줄을 사용하여 수동으로 암호화할 때).

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

Evolution이 실행하려는 명령이 실패했지만( <>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

--status-fd=1다른 오류로 인해 설치가 계속 실패합니다.

➜  ~ 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

편집 3:방금 테스트했습니다. Evolution의 메시지에 서명하는 것은 메시지를 해독하는 것과 마찬가지로 작동합니다.

명령줄을 사용하여 메시지를 수동으로 암호화하면 다음 메시지가 표시되는데, 이것이 문제의 원인이라고 생각됩니다.

➜  ~ 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-----

편집 4gpg --edit-key: 위 메시지는 소유자 신뢰가 누락되어 발생했기 때문에(적어도 그렇게 생각합니다) 다음을 사용하여 수신자의 소유자 신뢰(이전에 설정되지 않음) 를 설정하고 싶습니다 .

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]>

그래서 받는 사람의 ownertrust를 설정했는데 왜 [ unknown]이렇게 되는 걸까요?

답변1

OpenPGP 유효성 체계가 어떻게 작동하는지 아직 이해하지 못했습니다. 하지만 그 이상으로, 응용 프로그램은 유효하지 않은 키를 사용하는 데 문제가 있어서는 안 됩니다(따라서 Evolution 개발자에게 불만을 제기할 수 있습니다).

인증서를 유효하게 만드는 방법에는 두 가지가 있습니다(표준 모드에서 GnuPG 사용).

  1. 소유자 신뢰는 최종 신뢰로 설정됩니다.
  2. 최종 소유자가 신뢰하는 키의 유효한(만료되지 않은) 서명이 있습니다.

즉, 최종 소유자 신뢰를 갖고 있는 키링에 인증서가 없으면 자동으로 실패합니다.

또는 다음 명령을 사용하여 신뢰 모델을 변경할 수 있습니다.

--trust-model direct

그런 다음 시도하면서 유효성을 직접 설정할 수 있습니다. 그러나 인증서는 "완전히 유효"해야 합니다. 한계 타당도가 충분하지 않습니다.

내 웹사이트에서 이에 대해 자세히 설명했습니다.

http://www.hauke-laging.de/sicherheit/openpgp.html#wot

텍스트는 독일어로 되어 있지만 블록에는 이해를 돕기 위한 일부 이미지가 있습니다.

답변2

활성화하면 Always trust keys in my keyring for encrypting이 문제가 해결되었습니다.

관련 정보