從 gpg 中僅刪除私有簽名密鑰(無需重新導入子密鑰或 ‘rm ~/.gnupg/private-keys-v1.d/KEYGRIP.key’)
據我了解,生成私鑰-公鑰對、生成用於加密的子密鑰、導出所有三個密鑰並儲存/備份它們(例如使用“paperkey”)然後只重新導入公鑰被認為是一種很好的做法和子密鑰(參見https://paul.fawkesley.com/gpg-for-humans-protecting-your-primary-key/以及https://riseup.net/en/security/message-security/openpgp/ best-practices#only-use-your-primary-key-for-certification-and-possibly-signing-have-a-separate-subkey-for-encryption)。此外,密鑰應該有一個到期日期(參見https://riseup.net/en/security/message-security/openpgp/best-practices#use-an-expiration-date-less-than-two-years)。
要更新到期日期,我目前手動執行以下步驟:
gpg --import /PATH/TO/FULL-PRIVATE-KEY.asc gpg --edit-key BADC0FFE0DDF00D > expire # the main key > 1y # expire in 1 year > key 1 # select the first subkey > key 2 # select the second subkey in addition > expire # for both of the subkeys > y # perform action on both keys > 1y # expire in 1 year > save
現在我想再次刪除導入的私鑰。目前我知道有兩種方法可以做到這一點:要麼
gpg -K BADC0FFE0DDF00D # here I should see the key gpg --delete-secret-and-public-keys BADC0FFE0DDF00D gpg -K BADC0FFE0DDF00D # now nothing should be visible gpg --import /PATH/TO/PRIVATE-SUB-KEY.asc /PATH/TO/PUBLIC-KEY.pub
或者
gpg -K --with-keygrip BADC0FFE0DDF00D # copy the keygrip and use it below rm -i ~/.gnupg/private-keys-v1.d/8BADF00DBEEFCACEDEFEC8EDDEADFA11.key
我不喜歡這兩種方法:第一種方法有很多步驟,需要我導出然後導入(公共和子)密鑰文件,第二種方法感覺有點容易出錯(你不會被問到)進行確認(忽略“rm -i”),例如,如果這是您要刪除的正確密鑰)。
難道沒有什麼更優雅的我可以做的,比如
gpg --delete-only-the-private-signing-key-if-you-have-already-created-other-subkeys BADC0FFE0DDF00D
或類似的東西?我會很感激任何想法!
我正在使用 Debian Stable(實際上是 PureOS amber,它基於 Debian Stable)和 gpg (GnuPG) 2.2.12
要更改到期日期,我建議使用
gpg --quick-set-expire FINGERPRINT \*
這更容易編寫腳本。有關詳細資訊,請參見手冊頁。
要僅刪除主密鑰,您可以使用正常命令;例如:
gpg --delete-secret-key 502D1A5365D1C0CAA69945390BA52DF0BAA59D9C\! sec nistp256/0BA52DF0BAA59D9C 2010-09-17 ec_dsa_dh_256 <openpgp@brainhub.org> Note: Only the secret part of the shown primary key will be deleted. Delete this key from the keyring? (y/N) y This is a secret key! - really delete? (y/N) y
請注意指紋末尾的驚嘆號 - 它強制使用特定的主鍵或子鍵,因此該命令不適用於整個鍵。由於外殼要求,引用了驚嘆號。為避免出現確認提示,請添加 –batch 和 –yes。
注意:您的 2.2.12 版本無法正常工作;我們用 2.2.16 修復了這個問題——因此可以更好地更新到最新版本(2020 年 7 月初發布的 2.2.21)。
免責聲明:我從 gnupg.org-forum 的 Werner Koch @ dev.gnupg.org 收到了這個答案,也想在這里分享。