Linux

從 gpg 中僅刪除私有簽名密鑰(無需重新導入子密鑰或 ‘rm ~/.gnupg/private-keys-v1.d/KEYGRIP.key’)

  • August 27, 2020

據我了解,生成私鑰-公鑰對、生成用於加密的子密鑰、導出所有三個密鑰並儲存/備份它們(例如使用“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 收到了這個答案,也想在這里分享。

引用自:https://unix.stackexchange.com/questions/606698