У меня есть ключ GPG, я могу проверить, что у меня есть секретный ключ, и распечатать его содержимое:
$ gpg --list-secret-keys
/home/user/.gnupg/pubring.kbx
------------------------------
sec# rsa2048 2019-07-11 [SC]
9EEBCEAD0915834DFCE24B11A738D3C1E6BFA616
uid [ultimate] My Name <my.email@email>
ssb rsa2048 2019-07-11 [E]
Я могу распечатать это с помощью
$ gpg --export-secret-keys -a
-----BEGIN PGP PRIVATE KEY BLOCK-----
....
-----END PGP PRIVATE KEY BLOCK-----
Однако при попытке создать сертификат отзыва я получаю:
$ gpg --gen-revoke 9EEBCEAD0915834DFCE24B11A738D3C1E6BFA616
gpg: secret keys "9EEBCEAD0915834DFCE24B11A738D3C1E6BFA616" not found: No secret key
Почему это происходит? Наверняка у системы есть доступ к секретному ключу, с помощью которого можно сгенерировать сертификат отзыва.
решение1
Я могу подтвердить, что у меня есть секретный ключ
Нет, не нужно. Это #
означает, что отсутствует приватная часть основного ключа. GnuPG все еще показывает всю запись только потому, что у вас есть приватные части некоторыхподразделы.
Каждый ключ PGP на самом деле представляет собой связку из нескольких независимых ключей RSA/DSA/EdDSA: одна пара ключей для подписи ключей [C]; иногда отдельная пара ключей для подписи сообщений [S]; и всегда отдельная пара ключей для расшифровки сообщений [E].
Поскольку эти пары ключей имеют разное назначение и требуют разного уровня безопасности, некоторые люди решают намеренно экспортировать частичный ключ PGP на менее надежные машины — так, если кто-то украдет ноутбук, он сможет прочитать старую электронную почту, ноне будетиметь возможность выдать себя за вас с помощью PGP.
Здесь на вашем компьютере также отсутствует закрытая часть ключа [SC], что означает, что он может расшифровывать полученные письма и файлы, но не может ничего подписывать. И поскольку редактирование или отзыв вашего собственного ключа требует его подписания самим собой, это также становится невозможным без закрытого ключа [C].