Gpg

創建新的 GPG 子密鑰後,如何使用之前的 GPG 子密鑰進行加密?

  • October 6, 2015

我最近生成了兩個新的子密鑰以放在外部密鑰卡上。我以前有一個主密鑰(使用標記為 SC)和一個子密鑰(標記為 E)。這種安排很好地滿足了我將一些本地文件保密的需要。剛才我使用創建了兩個新的子密鑰addkey,一個簽名密鑰和一個加密密鑰。我使用keytocard. 這似乎運作良好,並且該卡符合我的預期。

現在的問題是我不知道如何使用我的第一個子密鑰(密鑰 1)加密文件。無論我指定什麼作為收件人或使用者(包括子密鑰 ID),生成的文件都顯示為針對他們現在在我卡上的密鑰進行加密(並且僅在我的卡上!)。

我的鑰匙圈現在看起來像這樣:

❯❯❯ gpg --list-secret-keys
/home/caleb/.gnupg/pubring.gpg
------------------------------
sec   rsa4096/75267693 2014-07-31 [expires: 2016-02-02]
uid         [ultimate] Caleb Maclennan <caleb@alerque.com>
ssb   rsa4096/B89B1E86 2014-07-31 [expires: 2018-07-30]
ssb>  rsa2048/85BD5AD1 2015-10-06 [expires: 2016-10-05]
ssb>  rsa2048/DFE6D89D 2015-10-06 [expires: 2016-10-05]

對於加密我正在執行這樣的東西:

❯❯❯ gpg --recipient B89B1E86 -a -e test.txt

但是我已經嘗試了所有的--default-key--local-user-u)和--recipient-r),包括組合。我以任何方式搖動它,解密結果表明它是用我的卡密鑰編碼的:

❯❯❯ gpg -d test.txt.asc
gpg: encrypted with 2048-bit RSA key, ID DFE6D89D, created 2015-10-06
     "Caleb Maclennan <caleb@alerque.com>"
gpg: public key decryption failed: Card error
gpg: decryption failed: No secret key

使用特定子密鑰加密的正確程序是什麼?

要使用特定的子鍵,並且沒有 GnuPG 將子鍵解析為主鍵,請附加!到該鍵。例如,要為子密鑰加密DEADBEEF,請使用--recipient DEADBEEF!.

重要提示:由於碰撞攻擊,不建議使用短密鑰 ID,而是使用長密鑰 ID 或指紋

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