.NET 中存在哪些椭圆曲线支持?我可以定义自己的曲线,或复制SEC标准吗?
本文关键字:曲线 自己的 复制 SEC 标准 定义 我可以 NET 支持 存在 | 更新日期: 2023-09-27 18:36:54
.NET 中Microsoft椭圆曲线支持有哪些限制? 我只指的是System.Cryptography命名空间的可能性。
使用该命名空间,我是否可以实现自定义曲线,或者我是否仅限于在框架中硬编码的不同子集?
我特别感兴趣的一条曲线是secp256k1,尽管我不想将自己限制在这一点上。
为什么我不使用充气城堡,只专注于Microsoft? 原因是因为哈希函数的Microsoft实现比充气城堡快很多倍,因此我认为基于自定义椭圆曲线的加密。
我不介意我是否需要更新注册表或 ini 文件以添加对其他曲线的支持,或构建低级类;我只是想看看可能性和局限性是什么。
.NET 唯一支持的曲线是(并且长期以来一直是)NIST 在套件 B 中定义的 P-xxx 曲线。开箱即用不支持任何其他曲线。您已经定义了特定的非 NIST 非素数曲线(Koblitz 曲线),因此 CNG 不支持该曲线。
更准确地说,CNG 仅支持 ECDSA 和 ECDH 密钥的以下域参数。这些参数仅在用于"命名曲线"时才受支持:
P-256, P-384, P-521
注意:由于我没有 NDA 或类似的 Microsoft,我无法检查这些值是否是硬编码的,但我认为这很有可能。