.NET中的Microsoft Elliptical Curve支持有哪些限制?我只是指System.Cryptography名称空间的可能性。
使用该命名空间,我可以实现自定义曲线,还是仅限于在框架中硬编码的不同子集?
我特别感兴趣的一条曲线是secp256k1,尽管我不想限制自己。
为什么我不使用Bouncy Castle,只关注微软?原因是因为Hash函数的Microsoft实现比Bouncy Castle快很多倍,因此我认为基于自定义椭圆曲线的加密。
我不介意我是否需要更新注册表或ini文件以添加对其他曲线的支持,或者构建低级类;我只想看看可能性和局限性。
答案 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或类似的,我无法检查这些值是否是硬编码的,但我认为这很可能。