GF(2 ^ n)上ECC的纯软件实现
恩智浦的智能卡支持GF(p)上的ECC,并且不支持GF(2 ^ n)上的ECC。
在我的项目中,我需要使用这种特殊类型的智能卡(已经使用了数千个实例)。 但是,我需要添加对EC签名的验证,而不是通过GF(2 ^ n)上的曲线sect193r1进行验证。
性能对我来说不是问题。 这可能需要一些时间。 签名验证不涉及任何私钥,因此安全和密钥管理也不是问题。 不幸的是,我必须验证我的智能卡内部的签名,而不是配备智能卡阅读器的设备。
有没有解决方法? 在GF(2 ^ n)上是否有任何现有的EC卡密码学软件JavaCard实现的源代码?
能够执行非对称加密的智能卡总是使用协处理器(通常包含蒙哥马利乘法器)来完成此操作。 大多数智能卡(例如最初的恩智浦SmartMX处理器)仍然使用8位或16位CPU进行操作。 这些CPU不是用来执行大量操作的。 不幸的是,Java Card不提供对乘法器的调用的直接支持 - 如果这将是有用的。 大多数卡(例如SmartMX)也不支持32位(Java int
)操作。
所以如果你想执行这样的计算,你将不得不自己编程,使用带符号的8位和带符号的16位基元。 这将需要很多工作,而且会很慢。 再加上处理Java字节码所需的开销,你将会有一个惊人的缓慢。
只需更新一些额外的信息,以防某人仍在寻找解决方案。
OpenCryptoJC库的确提供了BigNumbers,EC曲线原始操作等,因此您应该可以加载自己的曲线及其参数。
但是,如果该曲线不是由卡本地支持的,则可以使用lib自行实现曲线上的操作。 虽然这不是微不足道的...
或者,如果您想要使用的GF(2 ^ n)曲线与另一个GF(p)之间存在任何映射,您可以尝试在GF(p)中执行所有操作,并将结果映射回GF(2 ^ n) 。 假设有这样的映射,这可能会更容易做到。
免责声明:我是lib作者之一。 :)
链接地址: http://www.djcxy.com/p/83619.html上一篇: pure software implementation of ECC over GF(2^n)
下一篇: How to check a not