通过非接触式或 NFC 的 ATS(应答选择)与通过接触卡的 ATR(应答重置)之间的区别

Jar*_*red 4 smartcard javacard contactless-smartcard globalplatform

非接触式读卡器和接触式读卡器上同一张卡的ATS和应该相同吗?双接口卡上的 JavaCard 应用程序是否会做出不同的响应并影响该小程序的执行?ATRATSATR

这里还有另一个问题:接触式卡和非接触式(RF)卡之间的差异似乎表明如果它们使用相同的传输协议,它们可以是相同的。

举一个具体的例子,我有一个 JavaCard J3H145,它pcsc_scan在非接触式读卡器和接触式读卡器上提供不同的 ATR(通过 显示)。这是否意味着阅读器正在自行执行某些操作(Identiv 3700f)?我有几个 javacard 小程序,可以通过接触方式工作,但不能通过非接触方式工作。当我追踪 ADPU 的pcscd所有内容时Attempting PTS to T=1(这是否需要读者翻译T=CL?)。


编辑:额外研究

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

  1. 从 ATR 确定卡类型

ATR详细说明了和ATQ-A之间的转换过程ATQ-B,而

  1. 根据接口的不同,智能卡具有不同的历史字节
  2. 如何更改小程序的权限和卡历史字节?

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

我也在 PN532 屏蔽上测试了 J3H145(测试我的特定阅读器翻译),并且我得到了看似被截断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罪魁祸首吗?

相关问题:PC/SC 读卡器编程时的 ATR 命令

gui*_*dot 9

这是一个复杂的问题。

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

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