java - Java卡中SDA和DDA的区别?

标签 java encryption applet rsa javacard

我有一个小程序(你可以在那里查看 JavaCard applet is not working with RSA encryption )。 Applet 在构造函数中生成 RSA 公钥和私钥,并使用 APDU 命令加密一些字节数组。

Applet 使用随卡提供的文档中的 KeyBuilder.LENGTH_RSA_2048 生成公钥和私钥,遗憾的是 JavaCard 仅在 DDA 中支持 2048 位 key 长度。

所以问题是DDA和SDA是什么。他们之间的区别?主要问题是:如何在这种模式下安装(或运行?)小程序?

我发现: 更新1:SDA——静态数据认证 DDA——动态数据认证

最佳答案

所以问题是:

what is DDA and SDA. Differences between them?

SDA - SDA 确保 ICC 数据的真实性。经过SDA后,可以确定来自ICC的数据是真实的并且没有被任何人改变。 但SDA并不保证ICC数据的唯一性。你可以看到SDA的图是这样的,

SDA FLOW:

在这里您可以看到 SDA 期间使用了两个 RSA Pair,
(1) - 发行者RSA

(2) - CA_RSA

这张图描述性很强,很容易理解SDA的流程。您也可以查看EMV BOOK 2有关 SDA 的更多说明。而 DDA 流程就像,

DDA FLOW

在这里您可以看到 DDA 中使用了 3 个 RSA 对,

1 - 发行者RSA

2-CA_RSA

3 - ICC RSA(新的 RSA key 在所有卡中都是唯一的,每张卡在卡个性化过程中都会生成此 RSA 对,因此每张卡的此 RSA 对都不同)

SDA 保证卡上的数据有效,因为我们信任对数据进行签名的高级认证机构。但是攻击者可以记录卡 session 并构建例如新的 Virdl 卡,因为此处所有 session 都使用相同的数据。

但是在 DDA 流程中 - 我们可以说它正在检查 SDA + 通过终端向卡提供随机数据进行签名,这部分使得卡的克隆成为不可能,因为每个 session 使用不同的随机数,因此记录卡 session 将无法工作下一次卡片 session 。

希望它对您有所帮助,您可以从SDA阅读更多内容和 DDA , Gemalto

关于java - Java卡中SDA和DDA的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015169/

相关文章:

python - 自定义 Python 加密算法

java - 将 Java Graphics 用于 applet 时可以增加线宽吗?我不相信 BasicStroke 有效

java - 测试java代码是否在applet中运行的最佳方法是什么?

java - Java 中的 AES-256 加密需要多大的初始化 vector ?

java - 获取 Graphics2D?

java - 从windows导出war文件并将其添加到ubuntu webapps

java - Apache PDFBOX - 使用 split(PDDocument 文档)时出现 java.lang.OutOfMemoryError

java - Hibernate 缓存和延迟加载关联

java - 如何在 Java 中的对象参数中初始化数组?

javascript - CryptoJS AES 加密不是对称的?