首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaCard - GF(2^n)上ECC的纯软件实现

JavaCard - GF(2^n)上ECC的纯软件实现
EN

Stack Overflow用户
提问于 2015-02-12 09:13:12
回答 2查看 293关注 0票数 7

我有NXP智能卡,支持ECC的GF(p)和不支持ECC的GF(2^n)。

在我的项目中,我需要使用这种特殊类型的智能卡(已经使用了数千个实例)。但是,我需要在sect193r1上添加EC签名的验证,这是GF(2^n)上的一条曲线。

表现对我来说不是问题。可能要花点时间。签名验证不涉及任何私钥,因此安全性和密钥管理也不是问题。不幸的是,我必须验证我的智能卡内的签名,而不是在配备智能卡阅读器的设备中。

有什么解决办法吗?在GF(2^n)上有任何纯软件JavaCard实现的源代码吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-14 19:23:26

能够执行非对称加密的智能卡总是使用协处理器(通常包含蒙哥马利乘数)来实现这一点。大多数智能卡(例如,初始的NXP SmartMX处理器)仍然使用8位或16位CPU操作。这些CPU的设计并不是为了对大量的数据执行操作。不幸的是,Java Card并没有提供对乘法器调用的直接支持--如果这样做有任何用处的话。大多数卡片(例如,SmartMX)也不支持32位(Javaint)操作。

因此,如果您想要执行这样的计算,您必须自己编程,使用有符号8位和有符号16位原语。这将需要大量的工作,将是非常缓慢的。再加上处理Java字节代码所需的开销,您将有惊人的惰性。

票数 3
EN

Stack Overflow用户

发布于 2017-10-02 12:15:46

只是更新一些额外的信息,以防有人仍在寻找解决方案。

OpenCryptoJC库确实提供了BigNumbers、EC曲线原语操作等,因此您应该能够加载自己的曲线及其参数。

但是,如果卡片本机不支持这条曲线,那么您可以使用lib自己实现曲线上的操作。不过,这可不是小事.

或者,如果要使用的GF(2^n)曲线与另一个GF(p)之间有任何映射,则可以尝试执行GF(p)中的所有操作,并将结果映射回GF(2^n)。假设存在这样的映射,这可能更容易做到。

免责声明:我是的作者之一。:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28473450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档