sunknudsen Asked: 2021-07-17 03:53:26 +0800 CST2021-07-17 03:53:26 +0800 CST 2021-07-17 03:53:26 +0800 CST 为什么使用 ECC 与 RSA 生成主密钥时没有“切换加密功能”? 772 在配置 YubiKey 时评估从 RSA 到 ECC 的切换。 请注意,当我运行gpg --expert --full-generate-key并选择“ECC(设置您自己的功能)”时,“切换加密功能”功能不可用(与使用 RSA 时相比)。 我正在尝试生成 ECC 主密钥,我想从中派生签名、加密和身份验证子密钥。 为什么?感谢您的帮助! gnupg ecc 1 个回答 Voted Best Answer user1686 2021-07-17T04:45:14+08:002021-07-17T04:45:14+08:00 子密钥不是从主密钥派生的。它们仅由主密钥签名,但与主密钥无关——它们的能力甚至算法都不需要匹配。 事实上,这就是PGP 中子项的全部意义所在。最初它对所有事情都使用单个 RSA 密钥对,但现在密码学专家普遍认为,永远不应该将同一个密钥用于不同的目的,例如签名和加密——因此最终发明了“子密钥”功能,以便签名可以使用一个 RSA 密钥并使用另一个加密来完成。 (在某种程度上,即使使用相同的签名密钥进行网络身份验证和文档认证也不是一个好主意——即使它们在密码学上是相同的,但它们在策略上是不同的。Yubikey 中的“PIV 智能卡”模式有出于这些目的,明确分隔键槽,因为它们有不同的 PIN 要求。) 因此,虽然 PGP 中的 RSA 密钥对仍然可以同时拥有所有功能位(出于遗留原因),但所有其他密钥类型都被明确视为使用不同的算法进行签名和加密——“ECDSA”(19)或“EdDSA”(22)密钥只能签名/验证,“ECDH”(18)密钥只能加密/解密。类似的情况适用于 DSA 与 ElGamal。 而且由于PGP中的主密钥既是用来认证别人的密钥,也是自己的子密钥,所以它必须是一个具有签名能力的算法certify。对于 EC 密钥,这排除了支持加密的算法。 但正如已经提到的,这不会以任何方式影响子项。生成主密钥后,您可以使用任何算法添加子密钥(例如,即使是旧的 RSA 主密钥也可能具有 Ed25519 签名子密钥和 P256 身份验证子密钥)。
子密钥不是从主密钥派生的。它们仅由主密钥签名,但与主密钥无关——它们的能力甚至算法都不需要匹配。
事实上,这就是PGP 中子项的全部意义所在。最初它对所有事情都使用单个 RSA 密钥对,但现在密码学专家普遍认为,永远不应该将同一个密钥用于不同的目的,例如签名和加密——因此最终发明了“子密钥”功能,以便签名可以使用一个 RSA 密钥并使用另一个加密来完成。
(在某种程度上,即使使用相同的签名密钥进行网络身份验证和文档认证也不是一个好主意——即使它们在密码学上是相同的,但它们在策略上是不同的。Yubikey 中的“PIV 智能卡”模式有出于这些目的,明确分隔键槽,因为它们有不同的 PIN 要求。)
因此,虽然 PGP 中的 RSA 密钥对仍然可以同时拥有所有功能位(出于遗留原因),但所有其他密钥类型都被明确视为使用不同的算法进行签名和加密——“ECDSA”(19)或“EdDSA”(22)密钥只能签名/验证,“ECDH”(18)密钥只能加密/解密。类似的情况适用于 DSA 与 ElGamal。
而且由于PGP中的主密钥既是用来认证别人的密钥,也是自己的子密钥,所以它必须是一个具有签名能力的算法
certify
。对于 EC 密钥,这排除了支持加密的算法。但正如已经提到的,这不会以任何方式影响子项。生成主密钥后,您可以使用任何算法添加子密钥(例如,即使是旧的 RSA 主密钥也可能具有 Ed25519 签名子密钥和 P256 身份验证子密钥)。