4

.NET 中的 Microsoft 椭圆曲线支持有哪些限制?我仅指 System.Cryptography 命名空间的可能性。

使用该命名空间,我可以实现自定义曲线,还是仅限于在框架中硬编码的不同子集?

我特别感兴趣的一条曲线是 secp256k1,尽管我不想局限于此。

为什么我不使用 Bouncy Castle,而只关注 Microsoft?原因是因为 Hash 函数的 Microsoft 实现比 Bouncy Castle 快很多倍,因此我认为基于自定义椭圆曲线的加密。

我不介意是否需要更新注册表或 ini 文件以添加对其他曲线的支持,或构建低级类;我只是想看看有哪些可能性和限制。

4

1 回答 1

3

.NET 唯一支持的曲线是(并且长期以来一直是)由 NIST 在 Suite B 中定义的 P-xxx 曲线。任何其他曲线均不受开箱即用的支持。您定义了一条特定的非 NIST 非素数曲线(Koblitz 曲线),因此 CNG 不支持该曲线。

更准确地说,CNG 仅支持 ECDSA 和 ECDH 密钥的以下域参数。仅当它们也用于“命名曲线”时才支持这些参数:

P-256、P-384、P-521

注意:由于我没有与 Microsoft 签订的保密协议或类似协议,我无法检查这些值是否是硬编码的,但我认为这很有可能。

于 2013-10-27T14:46:01.300 回答