创建新的 GPG 子密钥后,如何使用之前的 GPG 子密钥进行加密?

创建新的 GPG 子密钥后,如何使用之前的 GPG 子密钥进行加密?

我最近生成了两个新的子密钥以放置在外部密钥卡上。我以前有一个主密钥(用法标记为 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 <[email protected]>
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 <[email protected]>"
gpg: public key decryption failed: Card error
gpg: decryption failed: No secret key

使用特定子密钥加密的正确程序是什么?

答案1

要使用特定子密钥,而不让 GnuPG 将子密钥解析为主密钥,请附加!到密钥。例如,要加密子密钥DEADBEEF,请使用--recipient DEADBEEF!

重要提示:不建议使用短密钥 ID,因为碰撞攻击, 反而使用长密钥 ID 或指纹

相关内容