在配置 YubiKeys 时评估从 RSA 切换到 ECC。
注意到当我运行gpg --expert --full-generate-key
并选择“ECC(设置您自己的功能)”时,“切换加密功能”功能不可用(与使用 RSA 时相比)。
我正在尝试生成 ECC 主密钥,以便从中派生签名、加密和身份验证子密钥。
为什么?谢谢你的帮助!
答案1
子密钥不是从主密钥派生出来的。它们只是被...签名主密钥,但除此之外与它没有任何关系 —— 它们的功能甚至算法都不需要匹配。
确实如此重点PGP 中的子密钥。最初,它使用单个 RSA 密钥对来处理所有事情,但现在密码学专家普遍认为,同一个密钥不应该用于不同的目的,例如签名和加密 - 因此最终发明了“子密钥”功能,这样就可以使用一个 RSA 密钥进行签名,使用另一个 RSA 密钥进行加密。
(在某种程度上,即使使用相同的签名密钥进行网络身份验证和文档认证也不是一个好主意——尽管从加密角度来看它们是相同的,但在策略方面却是不同的。Yubikey 中的“PIV 智能卡”模式为这些目的明确提供了单独的密钥槽,因为它们有不同的 PIN 要求。)
因此,虽然 PGP 中的 RSA 密钥对仍然可以同时拥有所有功能位(出于遗留原因),但所有其他密钥类型都被明确视为使用不同的算法进行签名和加密 - “ECDSA”(19)或“EdDSA”(22)密钥只能签名/验证,“ECDH”(18)密钥只能加密/解密。DSA 与 ElGamal 的情况类似。
由于 PGP 中的主密钥用于验证其他人的密钥和你自己的子密钥,因此必须是具有该功能且具有签名能力的算法certify
。对于 EC 密钥,这排除了具有加密能力的算法。
但正如前面提到的,这不会以任何方式影响子密钥。生成主密钥后,您可以使用任何算法添加子密钥(例如,即使是旧的 RSA 主密钥也可以有一个 Ed25519 签名子密钥和一个 P256 身份验证子密钥)。