首页 文章

JavaCard中SDA和DDA之间的区别?

提问于
浏览
0

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

Applet在文档中使用KeyBuilder.LENGTH_RSA_2048生成公钥和私钥,卡片令人遗憾,JavaCard仅在DDA中支持2048位密钥长度 .

所以问题是什么是DDA和SDA . 他们之间的差异?主要问题是:如何在这种模式下安装(或运行?)applet?

我发现了: Update 1 :SDA - 静态数据认证DDA - 动态数据认证

2 回答

  • 1

    所以问题是:

    什么是DDA和SDA . 他们之间的差异?

    SDA - SDA确保ICC数据的真实性 . 在SDA之后,确保来自ICC的数据是真实的并且没有任何人改变 . 但SDA并不能保证ICC数据的独特性 . 你可以看到SDA图就像,

    SDA FLOW:

    在这里你可以看到两个RSA对在SDA期间使用,
    (1) - IssuerRSA

    (2) - CA_RSA

    该图非常具有描述性,可以清楚地了解SDA的流程 . 您还可以查看EMV BOOK 2以获取有关SDA的更多说明 . DDA流量就像,

    DDA FLOW

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

    1 - IssuerRSA

    2- CA_RSA

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

    SDA保证卡上的数据有效,因为我们信任签署数据的高级证书颁发机构 . 但是攻击者可以记录卡会话并构建一个新的虚拟卡,因为这里使用相同的数据进行所有会话 .

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

    希望它有所帮助,你可以阅读SDADDAGemalto

  • 2

    DDA意味着 Cipher.ALG_RSA_NOPAD 算法(有时也称为原始RSA或CKM_RSA_X_509) - 正如@ Hai-Binh LE所指出的那样,看看EMV Book 2(可能是附件B2) .

    您正在实例化一个不用于DDA的 Cipher.ALG_RSA_PKCS1 ,因此卡可能不支持 .

    您可以通过检查抛出 CryptoExceptionCryptoException.NO_SUCH_ALGORITHM 原因代码来验证这一点 .

相关问题