我有一个小程序(你可以看看它,JavaCard小程序不适用于RSA加密。)。Applet在构造函数中生成RSA公钥和私钥,并使用APDU命令加密一些字节数组。
Applet在文档中生成带有KeyBuilder.LENGTH_RSA_2048的公钥和私钥,这些文档中提供了卡,可悲的是,JavaCard仅在DDA中支持2048位密钥长度。
所以问题是什么是DDA和SDA。他们之间的差异?主要问题是:如何安装(或运行?)这种模式下的小程序?
我发现:更新1:SDA -静态数据身份验证DDA -动态数据身份验证
发布于 2015-10-09 05:44:55
所以问题是:
什么是DDA和SDA。他们之间的差异?
SDA - SDA确保ICC数据的真实性。在SDA之后,可以确定来自ICC的数据是真实的,没有被任何人改变。但SDA并不能保证ICC数据的唯一性。你可以看到SDA的图表

在这里您可以看到在SDA期间使用的两个RSA对,
(1) - IssuerRSA
(2) - CA_RSA
此图非常具有描述性,可以清楚地理解SDA的流程。此外,您还可以查看EMV书2以获得有关SDA的更多描述。虽然DDA流程就像,

在这里你可以看到3个RSA对在DDA中使用,
1- IssuerRSA
2- CA_RSA
3- ICC RSA (新的RSA密钥在所有卡中都是唯一的,每张卡在卡的个性化过程中产生这对RSA,因此这对RSA对对于每一张卡都是不同的)
SDA保证卡片上的数据是有效的,因为我们信任一个高级别的认证机构来签署这些数据。但是攻击者可以记录一个卡片会话并构建一个新的虚拟卡,因为这里对所有会话都使用相同的数据。
但是在DDA流程中,我们可以说它是检查SDA +,通过终端将随机数据发送给卡片签名,这部分使得克隆卡片成为不可能的,因为每个会话使用不同的随机数,所以记录卡会话在下一个卡片会话中不能工作。
希望能帮上忙,你能从SDA和DDA,杰马托上读到更多吗?
发布于 2015-10-08 22:47:22
DDA暗示了Cipher.ALG_RSA_NOPAD算法(有时被称为原始RSA或CKM_RSA_X_509) -- @Hai指出,请查看EMV书2 (可能是附件B2)。
您正在实例化不用于DDA的Cipher.ALG_RSA_PKCS1,因此可能不受卡的支持。
您可以通过检查抛出的CryptoException中的CryptoException.NO_SUCH_ALGORITHM原因代码来验证这一点。
https://stackoverflow.com/questions/33015169
复制相似问题