我有NXP智能卡,支持ECC的GF(p)和不支持ECC的GF(2^n)。
在我的项目中,我需要使用这种特殊类型的智能卡(已经使用了数千个实例)。但是,我需要在sect193r1上添加EC签名的验证,这是GF(2^n)上的一条曲线。
表现对我来说不是问题。可能要花点时间。签名验证不涉及任何私钥,因此安全性和密钥管理也不是问题。不幸的是,我必须验证我的智能卡内的签名,而不是在配备智能卡阅读器的设备中。
有什么解决办法吗?在GF(2^n)上有任何纯软件JavaCard实现的源代码吗?
发布于 2015-02-14 19:23:26
能够执行非对称加密的智能卡总是使用协处理器(通常包含蒙哥马利乘数)来实现这一点。大多数智能卡(例如,初始的NXP SmartMX处理器)仍然使用8位或16位CPU操作。这些CPU的设计并不是为了对大量的数据执行操作。不幸的是,Java Card并没有提供对乘法器调用的直接支持--如果这样做有任何用处的话。大多数卡片(例如,SmartMX)也不支持32位(Javaint)操作。
因此,如果您想要执行这样的计算,您必须自己编程,使用有符号8位和有符号16位原语。这将需要大量的工作,将是非常缓慢的。再加上处理Java字节代码所需的开销,您将有惊人的惰性。
发布于 2017-10-02 12:15:46
只是更新一些额外的信息,以防有人仍在寻找解决方案。
OpenCryptoJC库确实提供了BigNumbers、EC曲线原语操作等,因此您应该能够加载自己的曲线及其参数。
但是,如果卡片本机不支持这条曲线,那么您可以使用lib自己实现曲线上的操作。不过,这可不是小事.
或者,如果要使用的GF(2^n)曲线与另一个GF(p)之间有任何映射,则可以尝试执行GF(p)中的所有操作,并将结果映射回GF(2^n)。假设存在这样的映射,这可能更容易做到。
免责声明:我是库的作者之一。:)
https://stackoverflow.com/questions/28473450
复制相似问题