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