Java卡:这个操作可以实现吗?

Java Card: can this operations be implemented?

我是智能卡和 Java 卡的新手。我计划实施 ElGamal 密钥生成算法的变体。资料不好找,请问Java卡可以算出这个步数吗?

  1. 找出大于数x(约2048位)的最小素数
  2. 判断数g是否为原根mod p
  3. 模幂,大数算术(约2048位)

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

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

您可能只有 javacard 的 RSA 实现(包括 CRT 变体)。这样你就可以生成一些大素数(作为CRT私钥的组成部分)并进行一些模运算(参见最近的问题和 RSAPrivateCrtKey class).

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

手动执行任何操作都可能会很慢(即使您拥有卡支持的带符号的 32 位整数类型)。

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

编辑>

OV chip 2.0 project contains a Bignat library which offers arithmetic on big numbers (download here).

编辑2>

OpenCrypto project provides JCMathLib实现大数和椭圆曲线点的数学运算