通过非接触式或 NFC 的 ATS(Answer-to-Select) 与通过接触卡的 ATR(Answer-to-Reset)之间的区别

Difference between ATS(Answer-to-Select) via Contactless or NFC vs ATR (Answer-to-Reset) via Contact Card

ATSATR 是否应该与非接触式和接触式 reader 上的同一张卡相同? 双接口卡上的 JavaCard 应用程序以不同的 ATSATR 响应会影响该小程序的执行吗?

这里还有另一个问题:Difference between contact card and contactless(RF) card 这似乎表明如果它们使用相同的传输协议,它们可以是相同的。

举个具体的例子,我有一个 JavaCard J3H145,它在非接触式 reader 和接触式 reader 上提供不同的 ATR(通过 pcsc_scan 显示)。这是否意味着 reader 正在自己做某事 (the Identiv 3700f)?我有几个 javacard 小程序可以通过接触而不是非接触式工作。当我通过 pcscd 追踪 ADPU 时,一切都是 Attempting PTS to T=1(是否需要 T=CL 的 reader 翻译?)。


编辑:额外研究

有一些相关问题开始讲述这个故事:

  1. Determine card type from ATR

详细介绍了ATRATQ-AATQ-B之间的转换过程,而

  1. Smartcard with different historical bytes depending on interface

显示可以从 GP API 更改历史字节(因此 ATS/ATR 是可编辑的),所以我假设有一种方法可以修复他们手动一样。

我也在 PN532 屏蔽上测试了 J3H145(测试我的特定 reader 翻译),我得到一个看似 t运行cated ATR: 3B 80 80 01 01 (ISO 14443 Type B without historical bytes) 和过度接触(当一切都很好!)ATR: 3B DC 18 FF 81 91 FE 1F C3 80 73 C8 21 13 66 05 03 63 51 00 02 50 (JCOP3 SecID P60 CS (JavaCard))

为了完整起见,我正在尝试 运行 https://github.com/ANSSI-FR/SmartPGP 通过非接触式界面,这目前在双界面卡上的接触式界面上工作。 ATR/ATS 的差异是罪魁祸首吗?

相关问题:ATR command when programming PC/SC reader

这是一个复杂的问题。

表面上很简单的答案:它们不可能相同,因为它们的格式完全不同。 ATR 以 3B/3F 开头,然后是 T0,TAx/TBx/TCx/TDx(对于 [1..4] 中的 x),最多 15 个历史字节和一个 单字节校验和 。根据您的卡片是 ISO 14443 的 A 类还是 B 类,您将获得 ATS 或 ATQB,它们具有不同的格式,但都以 two-byte 校验和 .

现在事情变得复杂了,因为 PCSC 迫切需要一个 ATR,因此为非接触式 readers(通常由 reader 或 driver 创建了一个合成 ATR)。这个合成的 ATR 通常很短(只是符合格式)并且不会与 ATR/ATS/ATQB 有惊人的相似性。由于传输速率协商发生在 reader 和卡之间,合成 ATR 与应用程序无关。虽然 reader 将使用原始的 ATS/ATQB 来解决冲突等问题,但您不会在主机上看到它。友好的 reader 名称足以将信息传送到正确的 reader 界面。