【问题标题】:EMV Issuer Public Key exponent missing, but needed缺少 EMV 颁发者公钥指数,但需要
【发布时间】:2025-12-11 12:05:01
【问题描述】:

我正在尝试根据规范 EMV4.3 Book2 实现对 EMV 颁发者公钥的检索。我已经能够解密发行者的公钥证书。

我需要通过颁发者公钥 + 颁发者公钥剩余部分(如果存在)和最后颁发者公钥指数来连接证书格式。

我尝试从应用程序数据中读取颁发者公钥指数,但找不到。在从公钥证书解密的恢复数据中,我可以看到指数 = 1 的长度。

当我查看这个网站时

https://www.eftlab.co.uk/index.php/site-map/knowledge-base/243-ca-public-keys

我可以看到例如VISA 包含发行人的 RID、RID 索引、指数、模数、密钥长度等。

这是否意味着,每个终端都应具有模数、RID、索引以及指数?如果是,它在规范中的什么位置?

谁能告诉我我需要从哪里得到指数。我觉得我在规范中遗漏了一些东西。

谢谢 德里克

【问题讨论】:

  • 您能否将您的问题从 SELECT 更新到最终的 READ RECORD 并屏蔽敏感数据?还有您作为 ODA 的一部分尝试的步骤。打开 Issuer PK 证书后是否可以看到 header 6A 和 trailing BC ?
  • AFAIK 发行者 pk 指数应该在标签 0x9F32 中。您可能会发现javaemvreader 的来源非常有用。
  • 嘿伙计们,我实际上是通过所有命令来制作一个日志给你们看,我实际上发现了我的错误。我有一个 do-while 循环来读取 AFL 中指定的所有记录,但不幸的是我编写了代码并且我的中断条件不允许我始终读取 AFL 中指定的每个记录的结束记录。感谢您的问题@adarsh,我不得不再次检查我的代码。谢谢。所以问题实际上是在我没有阅读的记录中实际发现的公钥剩余和指数。所以现在我有了它们,我的哈希码现在对应了。

标签: emv


【解决方案1】:

一个简单的答案是下载联系规范书 2(安全和密钥管理)并仔细阅读第 5 和第 6 部分。您需要展示您迄今为止所做的工作,以便我们了解您缺少什么。

是的,终端需要为它支持的所有 RID 存储带有索引的 CA PK。其中大多数您可以在您显示的链接中找到,但最好从 CA 本身获取。

【讨论】:

    【解决方案2】:

    我发现了我的错误。由于代码中的错误,我错过了一些重要记录。所以我没有阅读包含发行者公钥余数和指数的记录。像 EMV 书 2 第 5.3 章第 5 点中的连接并不完整,因为我没有公钥剩余和指数。所以计算 SHA1 摘要总是给我一个错误的结果。

    【讨论】:

      【解决方案3】:

      我已经发布了一个EMV支付框架(https://github.com/vicente-da-silva/dcemv),你需要的在DCEMV_EMVProtocol项目的VerifySAD.cs文件中实现。

      【讨论】: