【问题标题】:Java Card: can this operations be implemented?Java Card:这个操作可以实现吗?
【发布时间】:2015-08-22 11:31:47
【问题描述】:

我是智能卡和 Java 卡的新手。我计划实现 ElGamal 密钥生成算法的变体。找资料不容易,能不能在Java Card上计算这一步?

  1. 找到大于数字 x(约 2048 位)的最小素数
  2. 确定数字 g 是否为原始根 mod p
  3. 模幂运算,大数运算(约 2048 位)

我知道可以在智能卡上生成 RSA 密钥,但是生成的各个步骤(如查找素数)是否也可以?如果没有,是否有其他类型的安全令牌可以做到这一点?我打算使用 NXP J3D081 卡。

【问题讨论】:

  • 你能告诉我如何得到这样一个素数吗?我找不到任何东西。
  • 第 1 点是次优(阅读:不好)方法;素数的可能性在这里与之前的非素数间隙的大小成正比。第3点是普通的RSA(例如加密)计算,当然可以。

标签: security rsa smartcard javacard elgamal


【解决方案1】:

您可能只有 javacard 的 RSA 实现(包括 CRT 变体)。通过这种方式,您可以生成一些大素数(作为 CRT 私钥的组成部分)并进行一些模运算(参见this 最近的问题和RSAPrivateCrtKey 类)。

您的平台可能有一些限制,这可能会使事情变得有点复杂。

任何东西的手动实现都可能会很慢(即使你有卡支持的有符号 32 位整数类型)。

免责声明:我从未做过这种计算,所以请验证我的想法。

编辑>

OV chip 2.0 project 包含一个 Bignat 库,它提供大数运算(下载 here)。

EDIT2>

OpenCrypto project 提供JCMathLib,它实现了大数和椭圆曲线点的数学运算。

【讨论】:

  • 你的意思是获取素数的唯一方法是计算 RSA 密钥对并提取 p 和 q?这对我来说还不够,我需要得到一个特定数字的下一个素数。
  • 我所知道的唯一一种纯 java 卡方式(生成 DSA 密钥对除外)。您可能需要考虑使用该芯片应支持的“安全盒”功能(我没有这方面的经验,但它允许您运行本机代码。也许其他人可以帮助您......)。
  • SecureBox 功能不是您可以单独运行的任何东西。它很复杂,涉及 NXP 将您的本机代码写入 ROM 掩码并向您发送特殊的制造卡
【解决方案2】:

据我所知,El gamal 算法本身并未在任何卡上实现。所需的加密原语在 java 卡中不可用。手动实现也太慢了

【讨论】:

  • ElGamal 的计算与 RSA 非常相似。难道不能用RSA硬件来实现ElGamal吗?
  • 快速浏览一下,我认为乘法步骤是一个非常困难的部分。使用 RSA 可以解决一些问题。我可以看看旧项目,并可以在星期二提供更多信息
  • 你的卡支持DH吗?
  • 我还没有买卡。我找不到太多信息,这里是short datasheet。它没有提到 Diffie Hellman。如果您认为我提到的其他步骤是不可能的,您无需费心。否则谢谢。
  • 如果我没记错的话,使用 binmoial 公式是有效的,因为你可以用 RSA 快速平方,除以 2 是微不足道的,所以你只需要添加一些字节数组。不提供任何保证
猜你喜欢
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 2021-10-24
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多