在 Java Card 上使用椭圆曲线计算进行点加法

问题描述 投票:0回答:4

我有一张支持JavaCard 2.2.2的智能卡,我想在椭圆曲线上开发一个带有票据的签名。为此,我需要计算椭圆曲线上 2 个点的总和。我读过JavaCard的API,我认为这是不可能的,事实上有一些关于椭圆曲线的东西,但仅适用于已经开发的算法(例如ECDSA的ECPrivateKey......)但是当你想创建一个ECPrivateKey,你必须给出定义椭圆曲线的参数,所以它是在某个地方定义的,对吗?

简而言之,是否可以开发一个 Java cardlet,在椭圆曲线上进行计算(求和、点的乘积...)?

我对此有点迷失所以非常感谢你的帮助:)

java cryptography curve javacard
4个回答
3
投票

不,目前使用标准 Java API 是不可能的,至少在不自己完成所有所需计算的情况下是不可能的,这将需要大量复杂的代码和乘法器的实现(这将不会表现良好) .

它可能只存在于某些专有 API 中(例如 JCOP 的某些版本,举一个完全随机的例子)。


更新:3.0.5包含

ALG_EC_PACE_GM。这仍然不是点加法,但它可以用来实现 PACE,而无需专有扩展。当然,如果卡首先实现了该算法。


2
投票
我将发布根据 Maarted Bodewes 答案找到的所有内容,只是为了让更多读者清楚地了解情况。

    是的,JavaCard 上存在一些用于 ECC 的专有
  1. JCOP
     API。示例可以在
    这里找到。 这里是关于JCOP的讨论。
  2. 既没有可以将此 API 集成到现有模拟器的免费工具,也没有可用的本机 JCOP 模拟器。至少是免费的。
  3. Gemalto 提供了一些 API。至少,我见过一段代码可以做这样的事情:

    import com.gemalto.javacard.gostservices.math.ECMathFp; ... private ECPoint point; ...

    
    
    

    不幸的是,我没有有关金雅拓此功能的更多信息。

  4. 总结:javacard上的ECC还是没什么可做的。

    如果有人可以在第 3 页分享有关主题的详细信息 - 这将非常有趣(至少对我来说)


1
投票
以防万一有人仍在寻找解决方案:

JCMathlib实现ECPoint添加。您可以加载曲线、初始化 EC 点并执行所有原始 EC 点操作。

如果用于原型设计或侧信道攻击不在您的威胁模型中,那么它应该可以很好地工作。但请注意,该库不太可能像硬件实现那样抵抗侧信道攻击。

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


0
投票
如何使用jcmathlib实现PACE GM协议

© www.soinside.com 2019 - 2024. All rights reserved.