我最近生成了两个新的子密钥以放置在外部密钥卡上。我以前有一个主密钥(用法标记为 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 或指纹。