.NET中存在什么Elliptical Curve支持?我可以定义自己的曲线,还是复制SEC标准?

时间:2013-10-26 14:05:35

标签: c# .net cryptography logarithm bitcoin

.NET中的Microsoft Elliptical Curve支持有哪些限制?我只是指System.Cryptography名称空间的可能性。

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

我特别感兴趣的一条曲线是secp256k1,尽管我不想限制自己。

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

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

1 个答案:

答案 0 :(得分:2)

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

更准确地说,CNG only supports the following domain parameters用于ECDSA和ECDH密钥。仅当这些参数用于“命名曲线”时才支持这些参数:

  

P-256,P-384,P-521

注意:因为我没有与微软的NDA或类似的,我无法检查这些值是否是硬编码的,但我认为这很可能。