通过非接触式或 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
ATS
和 ATR
是否应该与非接触式和接触式 reader 上的同一张卡相同? 双接口卡上的 JavaCard 应用程序以不同的 ATS
和 ATR
响应会影响该小程序的执行吗?
这里还有另一个问题: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 翻译?)。
编辑:额外研究
有一些相关问题开始讲述这个故事:
- Determine card type from ATR
详细介绍了ATR
和ATQ-A
和ATQ-B
之间的转换过程,而
- 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 界面。
ATS
和 ATR
是否应该与非接触式和接触式 reader 上的同一张卡相同? 双接口卡上的 JavaCard 应用程序以不同的 ATS
和 ATR
响应会影响该小程序的执行吗?
这里还有另一个问题: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 翻译?)。
编辑:额外研究
有一些相关问题开始讲述这个故事:
- Determine card type from ATR
详细介绍了ATR
和ATQ-A
和ATQ-B
之间的转换过程,而
- 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 界面。