0

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

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

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

4

2 回答 2

2

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

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

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

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

编辑>

OV 芯片 2.0 项目包含提供大数运算的Bignat在此处下载)。

编辑2>

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

于 2015-08-22T21:06:13.153 回答
0

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

于 2015-08-22T19:14:28.907 回答