DS8007是一款多协议、低成本、双智能卡接口,支持所有ISO 7816、EMV™和GSM11-11要求。这个混合信号外设管理微控制器和两个独立智能卡之间接口的所有细节。本应用笔记介绍了智能卡的一些基础知识以及如何与智能卡通信。提供的软件使用DS8007将智能卡与DS5002安全微处理器连接。
概述
什么是智能卡?智能卡通常定义为包含嵌入式集成电路的任何袖珍卡。由于嵌入式集成电路,智能卡有时被称为集成电路卡或ICC。这些卡用于各种不同的应用,取代了熟悉的支付(借记卡或信用卡)卡,后者使用磁条来存储有关卡帐户的信息。在支付应用中向智能卡的过渡主要是因为功能增加,特别是因为该技术可以提高安全性。但是,必须根据智能卡的较高成本来评估后一种功能。
嵌入在智能卡中的集成电路可以是简单的非易失性存储设备,也可以是能够执行复杂操作的微控制器等复杂设备。支付卡中的简单非易失性存储设备可以取代用于存储数据的磁条。在许多此类设备中,存储器与附加逻辑相结合,以限制对部分或全部存储器的访问。然而,智能卡的真正功能在于嵌入式微控制器执行数据处理和/或加密功能的能力。这种处理能力允许增强安全功能。然而,随着复杂性的增加,卡的成本也在增加。带有嵌入式处理器的智能卡的成本在 7.00 美元到 15.00 美元之间,而带有磁条的支付卡的成本可能低至 0.75 美元¹ (美元)。智能卡的这种较高成本减缓了从更简单技术的普遍转换,但随着对安全性的要求增加,对智能卡的需求也将增加。
DS8007提供微控制器与两个独立智能卡物理接口所需的所有电信号。该器件包含一个专用的内部定序器,用于控制自动卡激活和停用,以及一个用于数据通信的ISO UART。电荷泵和稳压器允许该器件在 2.7V 至 6.0V 电源电压下工作,并产生两个独立的智能卡电源电压,其中任一电压可以是 1.8V、3.0V 或 5V。与微控制器的通信由标准的并行8位总线提供,该总线在非多路复用配置中传输数据,或在多路复用配置中传输数据和地址。
智能卡详细信息
虽然最熟悉的智能卡外形规格是信用卡大小的设备,但术语“智能卡”也适用于用户识别模块 (SIM),其大小约为邮票大小,常见于移动电话中。这种SIM卡外形还用于支付终端,为终端提供特定的支付系统数据和详细的应用信息。信用卡大小设备的卡部分通常由聚氯乙烯(PVC)制成,并且通常浮雕有帐号和可能的有效期。无论外形尺寸如何,所有机电规格均基于 ISO 7816 系列标准。此外,由EuroCard,MasterCard和Visa(EMV)公司组成的联盟已经制定了一套专门针对智能卡及其在支付系统中的应用的标准。EMV规范通常基于ISO 7816文档。®®®
智能卡联系人
智能卡上触点的数量、位置和功能由上述标准明确定义。集成电路在标准智能卡上的位置和触点尺寸如图2所示。ISO 7816 定义了八个可能的接触位置。在这八个地点中,有五个目前用于EMV应用。这些触点的名称和功能如表1所示。而触点 C6 定义为 V聚丙烯根据 ISO 7816,根据 EMV 规范,此编程电压不用于电流卡。不使用触点 C4 和 C8,也不需要实际存在。下面将更详细地讨论EMV规格中指定的各个触点。
联系人姓名 | 触点功能 |
C1 | 卡的电源电压 (V抄送) |
C2 | 复位 (RST) |
C3 | 时钟(CLK) |
C4 | DS8007 提供;未在电动势车中使用 |
C5 | 接地(接地) |
C6 | V聚丙烯;未在电动势车中使用 |
C7 | 输入/输出 (I/O) |
C8 | DS007 提供;未在电动势车中使用 |
图2.接触尺寸和位置。
Vcc触点 (C1)
此触点为卡提供电源电压。V的原始规格抄送仅包括 5V 直流 ±10%。但是,目前已分阶段迁移到低压卡。仅支持此原始规范的卡(称为 A 类卡)将在 2009 年 <> 月底之前替换为 AB 类或 ABC 类卡。五世抄送这些卡类别的规格如下:
A类卡:4.5V≤VCC≤5.5V,≤50mA
AB类卡:2.70V≤VCC≤3.3V,≤50mA
ABC类卡:1.62V≤VCC≤1.98V,≤30mA
DS8007卡接口包含电荷泵和稳压器,当器件采用2.6V至6.0V电源供电时,可为三种卡类别中的任何一种提供适当的电压。
输入/输出触点 (C7)
智能卡上的I/O触点用作输入(接收模式)以从终端接收数据或作为输出(传输模式)以将数据传输到终端。
在接收模式下,当输入符合以下规范时,卡将识别有效数据。
A类卡
输入高压:0.7×VCC≤VIH≤VCC
输入低电压:0.0≤VIL≤0.8V
上升时间/下降时间:≤1µs
AB类或ABC类卡
输入高压:0.7×VCC≤VIH≤VCC
输入低电压:0.0≤VIL≤0.2×VCC
上升时间/下降时间:≤1µs
在传输模式下,I/O触点将提供如下信号电平:
A类卡
输出高压:0.7×VCC≤VOH≤VCC,-20µA<IOH<0,VCC=min
输出低电压:0.0≤VOL≤0.4V,0
上升时间/下降时间:≤1.0µs
AB类或ABC类卡
输出高压:0.7×VCC≤VOH≤VCC,-20µA<IOH<0,VCC=min
输出低电压:0.0≤VOL≤0.15×VCC,0
上升时间/下降时间:≤1.0µs
EMV 规范规定,除非 I/O 触点正在传输,否则智能卡的 I/O 触点驱动程序将设置为接收模式。
CLK 联系人 (C3)
CLK触点是由接口端子(即DS8007)提供的输入。该信号用于控制交易过程中数据传输的时间。频率范围指定在 1.0MHz 和 5.0MHz 之间。此触点具有以下电气规格:
A类卡
输入高压:VCC-0.7≤VIH≤VCC
输入低电压:0.0≤VIL≤0.5V
上升时间/下降时间:≤时钟周期的9%
AB类或ABC类卡
输入高压:0.7×VCC≤VIH≤VCC
输入低电压:0.0≤VIL≤0.2×VCC
上升时间/下降时间:≤时钟周期的9%
RST 触点 (C2)
RST触点是由接口端子源的卡的输入。该信号为低电平有效信号,将导致卡异步复位。该触点具有与CLK触点相同的电气规格,但最大上升和下降时间为1.0μs。
从上述规范可以看出,与智能卡接口的终端必须提供各种电源电压和信号电平。接口规格还要求端子能够承受卡的任意两个触点之间的短路。由于这些原因,使用专用器件提供必要的电源电压和信号电平显然比组装大量分立模拟IC更有利。DS8007就是这样一款专用器件。除了提供这些功能所需的模拟电路外,它还包含FIFO和其他数字控制逻辑,以支持完整的卡会话所需的状态排序和时序。
终端接口要求
所有卡片会话都包括以下步骤。
将卡插入终端;联系人的连接和激活
重置卡;在终端和卡之间建立通信(ATR 序列 — 见下文)
交易的执行
停用联系人;取出卡
插入后对卡进行初始重置后,卡会以一系列称为重置答案或 ATR 的字符进行响应。这一系列字符建立初始通信详细信息,包括所有后续通信的特定协议、位定时和数据传输详细信息。虽然后续数据传输可以更改某些通信参数,但 ATR 会建立初始通信条件。以下各节将广泛讨论 ATR。
个人角色详细信息
在智能卡和终端之间的接口期间,信息通过双向 I/O 触点串行传输。位持续时间定义为元素时间单位或 ETU。ETU 的时间段与 CLK 触点上的端子提供的时钟信号具有直接线性关系。ATR 期间字符的位时序称为初始 ETU。此初始 ETU 由以下等式定义:
初始 ETU = 372/ƒ 秒
其中 ƒ 是以赫兹为单位的时钟信号的频率。
在 ATR 之后,位持续时间称为电流 ETU,它是参数 F 和 D 以及时钟频率的函数。(参数 F 和 D 在下面的 TA1 字符部分中进行了更详细的讨论。
Current ETU = F/(Dƒ) seconds
其中ƒ是以赫兹为单位的时钟信号的频率。
任何通信中的每个字符都由 10 位组成,因此持续时间为 1 个 ETU。字符的第一个位称为起始位;它总是很低。在起始位之前,I/O 行保持其默认高电平状态。字符的最后一位是奇偶校验位;它由源确定为高或低,因此字符中的 3 总数是偶数。该位模式如图<>所示。
图3.10 位字符帧。
智能卡通信协议
在ISO 7816规范中,四个位用于选择卡会话的通信协议。目前,可能的 2 种协议中有 16 种正在使用中。它们被称为 T=0 和 T=1。两种协议都是半双工(一次一个方向),异步通信。T=0 协议是基于字符的格式,而 T=1 是基于块的格式。所有符合EMV标准的智能卡必须支持T=0或T=1协议,而终端必须同时支持两者。
将卡插入端子后,当所有触点保持在“低”状态时,电源电压立即施加到卡的 V抄送联系。在端子验证电压稳定且在指定限值内后,将端子的 I/O 触点驱动器置于接收模式,并将时钟信号施加到卡的 CLK 触点。在时钟信号启动后的 200 个周期内,终端将其 I/O 线置于接收模式,卡将其 I/O 线置于传输模式。在 40,000 到 45,000 个时钟周期的间隔之后,终端在卡的 RST 触点上应用高电平有效信号。在 400 到 40,000 个时钟周期后,该卡以一系列称为 ATR 的字符进行响应。ATR 包括详细说明后续通信将如何进行的信息,包括 T=0 或 T=1 协议选择。如果未指定协议,则假定 T=0。(下面介绍了 ATR 的完整详细信息以及其中包含的信息。
复位答案 (ATR)
最初由终端重置后,EMV 智能卡以一串字符响应,称为重置答案或 ATR。这些字符由初始字符 TS 组成,后跟最多 32 个附加字符。这些字符一起向终端提供有关如何在会话的剩余时间内与卡通信的信息。以下各节将介绍每个字符。
表 0 给出了协议 T=2 的 EMV 规范定义的 ATR 内容,表 1 给出了协议 T=3 定义的 ATR 内容。
字符 | 价值 | 言论 |
TS | “3B”或“3F” | 表示直接 (3B) 或反向 (3F) 约定。 |
T0 | '6x | 存在 TB1 和 TC1,不存在 TA1 和 TD1;x 表示存在的历史字节数。 |
TB1 | '00' | V聚丙烯不是必需的。 |
TC1 | “00”到“FF” | 指示所需的额外保护时间量。值“FF”具有特殊含义。(请参阅下面的 TC1 说明。 |
字符 | 价值 | 言论 | |
TS | “3B”或“3F” | 表示直接 (3B) 或反向 (3F) 约定。 | |
T0 | “前” | 存在 TB1、TC1 和 TD1,不存在 TA1;x 表示存在的历史字节数。 | |
TB1 | '00' | V聚丙烯不是必需的。 | |
TC1 | “00”到“FF” | 指示所需的额外保护时间量。 | |
TD1 | '81' | TA2、TB2 和 TC2 缺失;存在 TD2;T=1 使用。 | |
TD2 | '31' | 存在 TA3 和 TB3;TC3 和 TD3 缺失;T=1 使用。 | |
TA3 | “10”到“FE” | 返回 IFSI,它指示卡的信息字段大小和 IFSC 的初始值 16 字节到 254 字节。 | |
TB3 | m.s. nibble* '0' to '4'; l.s. nibble '0' to '5' |
BWI = 0 到 4 CWI = 0 到 5 |
|
TCK | 检查字符。从 T0 到 TCK (含)的所有 ATR 字节的独占 OR 为空。 | ||
*注:m.s.半字节=最高有效半字节;l.s.半字节=最低有效半字节。 |
TS 初始字符
ATR 序列的第一个字符定义为初始字符 TS。凭借其位模式,此字符同步信息并定义所有后续字符的极性。TS的前四位由一个低起始位组成,后跟两个高位,后跟一个附加低位。此固定位模式允许定时同步。以下三位要么全部为高电平表示直接约定,要么全部为低电平以表示反向约定。对于直接约定,I/O 线上的高状态等效于逻辑 1,并且首先传输数据的最低有效位。对于反约定,I/O线上的低状态等效于逻辑1,数据首先传输最高有效位。虽然规范允许反向约定,但EMV建议将直接约定用于所有当前的卡设计。最后三位是两个低位,后跟一个高位。此字符帧或任何其他 10 位字符帧中的最后一位是奇偶校验位;它将被设置或清除以使帧中的 1 数成为偶数。
T0 格式字符
ATR 序列的第二个字符定义为格式字符,称为 T0。此字符包含两个部分,这两个部分确定剩余 ATR 序列中包含的字符。最重要的四个位称为Y1,它们指示是否将传输TA1,TB1,TC1或TD1。对于 Y1 的每个逻辑 1,相应字符的存在确定如下:
Bit8(msb)=1表示将发送字符TD1
Bit7=1表示将发送字符TC1
Bit6=1表示将发送字符TB1
Bit5=1表示将发送字符TA1
T0 的最低有效四位称为 K。这些位确定将包含在剩余 ATR 序列中的“历史字节”的 0 到 15 个数字。历史字节传达有关卡的一般信息,例如卡制造商、卡中的芯片、芯片中的屏蔽 ROM 或卡的生存状态。ISO 7816 和 EMV 规范都没有准确定义要传达的信息(如果有的话)。
如上表2所示,Y1位b7和b6为高电平,b8和b5位为低电平('6x')。这表示将传输 TC1 和 TB1,而字符 TA1 和 TD1 不会传输(如表中所示)。对于协议 T=0,字符 TB1 和 TC1 完成基本 ATR 序列。在表 3 中,Y8 的第 1 位也很高,因此对于协议 T=1,字符 TD1 也将传输。
TA1 角色
虽然字符TA1不在T=0或T=1协议的基本EMV ATR响应中传输,但在ISO 7816规范中定义了其他通信。使用时,TA1被分成上下半身。上半字节确定时钟速率转换因子F,用于修改时钟信号的频率。较低的半字节确定 D,即可用于调整 ATR 之后的位持续时间的比特率调整因子。这些参数的使用如上面的公式2所示。默认值 F = 372 和 D = 1 用于 ATR 期间的初始 ETU 值,除非在基本 ATR 之外进行更改,否则将在后续交换期间继续使用。
TB1 字符
TB1 字符传达有关智能卡编程电压要求的信息。位 b1 至 b5(称为 PI1)表示编程电压,位 b6 和 b7(称为 II)表示智能卡所需的最大编程电流。对于基本 ATR,TB1 = '00' 表示 V聚丙烯智能卡中的 PIN 未连接。
TC1 字符
TC1 字符传达 N 的值,该值确定从终端发送到智能卡的连续字符之间要添加的额外保护时间。此值不适用于从卡发送到终端的字符,也不适用于以相反方向发送的两个字符。N 是一个二进制数,表示要添加为额外保护时间的额外 ETU。当 TC1 = 'FF' 时,应使用字符之间的最小延迟。对于协议 T=0,这是 12 个 ETU,对于 T=11,这是 1。N 的值可以是 0 到 255 之间的任何值;如果未在 ATR 中返回 TC1,终端将继续,就像收到值 00 一样。由于此值会增加字符传输的时间,因此应将其最小化以加快事务。
TD1 字符
TD1 字符指示是否要传输任何其他接口字节,如果是,将使用哪种协议。字符 TD1 是通用字符 TDx 的特定实例。TDx最重要的半字节表示TA(x + 1),TB(x + 1),TC(x + 1)或TD(x + 1)将被传输。对于每个逻辑 1,后续传输中相应字符的存在确定如下:
Bit 8(msb)=1表示将发送字符TD(x+1)
Bit7=1表示将发送字符TC(x+1)
Bit6=1表示将发送字符TB(x+1)
Bit5=1表示将发送字符TA(x+1)
TD1 字符(TDx 广义)的最低有效半字节包含值 0x0 或 0x1,分别指示协议 T=0 或 T=1。
如果使用协议 T=0,则字符 TD1 将不包括在 ATR 序列中;协议 T=0 将用于所有后续传输。如果使用协议 T=1,则将包含 TD1 并包含 0x81 的值。后一个值表示 TD2 将存在,协议 T=1 将用于所有后续传输。
TA2 角色
虽然字符TA2不在T=0或T=1协议的基本EMV ATR响应中传输,但它在ISO 7816规范中定义。TA2 的存在与否决定了智能卡是在 ATR 之后分别以特定模式还是可协商模式运行。没有TA2表示将使用可转让操作模式。
TB2 字符
虽然字符TB2不会在T=0或T=1协议的基本EMV ATR响应中传输,但它在ISO 7816规范中定义。字符TB2表示PI2,PI1确定智能卡所需的编程电压值。当存在字符 TB1 时,将取代字符 TB2 中的 PI<> 值。
TC2 字符
虽然字符TC2不在T=0或T=1协议的基本EMV ATR响应中传输,但它在ISO 7816规范中定义。如果存在,TC2 特定于协议类型 T=0。TC2 传输工作等待时间整数 (WI),该整数确定智能卡发送的任何字符的起始位的前缘与卡或终端发送的前一个字符的起始位的前沿之间的最大间隔。工作等待时间的值为:
工作等待时间 = 960 × D ×WI
其中 D 是比特率调整因子(请参阅上面 TA1 中的说明)。
当 ATR 序列中不包含 TC2 时,假定默认值为 WI = 0x0A。
TD2 字符
TD2 字符与 TD1 字符具有相同的功能。有关详细信息,请参阅上面的 TD1 说明。在协议 T=3 的表 1 中,存在 TD2 并包含值 0x31。此值指示:TA3 和 TB3 将存在,TC3 和 TD3 将不存在,协议类型将为 T=1。
TA3 角色
TA3 字符传达智能卡的信息字段大小整数 (IFSI)。IFSI 确定智能卡的信息字段大小,这是卡可以接收的块的信息字段 (INF) 的最大长度。字段大小可以是 0x01 到 0xFE 之间的任何值。0x0和0xFF的值保留供将来使用。在基本 ATR 中使用 T=1 协议,TA3 的值在 0x10 到 0xFE 的范围内,因此表示 IFSC 在 16 到 254 字节的范围内。对于不包含 TA3 的 ATR,终端将假定默认值为 0x20。
TB3 字符
TB3 字符表示用于计算字符等待时间 (CWT) 和块等待时间 (BWT) 的字符等待时间整数 (CWI) 和块等待时间整数 (BWI) 的值。TB3 的最低显著部分(b1 至 b4)表示 CWI 的值;最重要的半字节(B5 到 B8)表示 BWI 的值。在 T=1 协议的基本 ATR 中,TB3 字符在 0 到 5 (CWI = 0 到 5) 范围内具有最低有效半字节,在 0 到 4 范围内具有最不重要的半字节(BWI = 0 到 4)。
TC3 字符
虽然字符TC3不在T=0或T=1协议的基本EMV ATR响应中传输,但它在ISO 7816规范中定义。当存在 TC3 时,它指示要使用的块错误检测类型。当 TC3 不存在时,默认纵向冗余校验 (LRC) 是使用的块错误校验。
特克角色
TCK 字符是校验字符,其值允许验证 ATR 中发送的数据的完整性。TCK 的值可以是任何值,只要从 T0 到 TCK 包含的所有字节的独占 OR 为零即可。TCK 不用于 T=0,但在所有其他情况下将在 ATR 中返回。
ATR 摘要
在终端接收到ATR序列中的最后一个字符后,将必要的参数从卡传输到终端后,可以对DS8007进行任何必要的接口参数调整。然后可以开始进一步的沟通。
应用协议数据单元 (APDU)
如前所述,卡会话的下一阶段是交易的执行。交易过程中执行的具体操作取决于卡和帐户的类型(信用卡、借记卡等)以及用户的请求。无论具体操作如何,事务都是通过向智能卡发出命令来完成的。智能卡执行请求的操作,并可能传达结果。卡的操作可以像读取内存中的位置一样简单,也可以像执行加密操作一样复杂。无论操作如何,终端和卡之间的通信都是使用应用协议数据单元或APDU进行的。
要运行应用程序,智能卡和终端必须交换信息。这种信息共享是在命令-响应数据交换中完成的。终端创建命令并将其发送到智能卡,智能卡随后解释命令并发送响应。此命令-响应消息对称为应用程序协议数据单元 (APDU)。终端 (C-APDU) 发送的特定命令消息将具有来自卡 (R-APDU) 的特定响应消息。这些消息称为 APDU 命令-响应对。EMV 规范详细介绍了这两种消息类型的格式,它们的格式如下所述。
C-APDU 格式
终端启动所有命令 APDU。它们由必需的 4 字节标头组成,后跟可包含数据的可变长度的可选主体。C-APDU 中包含的数据字节数在命令字节 Lc 中指定;终端期望从卡的响应接收的字节数在命令字节 Le 中指定。C-APDU格式如表4所示,字符如表5所示。
CLA | INS | P1 | P2 | Lc | Data | Le |
←必需标头→ | ←条件体→ |
Code | 描述 | 长度 |
CLA | 教学等级 | 1 |
INS | 指令代码 | 1 |
P1 | 指令参数 1 | 1 |
P2 | 指令参数 2 | 1 |
Lc | 命令日期字段中存在的字节数 | 0 或 1 |
Data | 在命令中发送的数据字节字符串 (= Lc) | 变量 |
Le | 响应数据字段中预期的最大数据字节数 | 0 或 1 |
命令APDU的第一个字节被定义为指令类,称为CLA。此字节可以采用除 8xFF 之外的任何 0 位值。但是,目前仅使用最高有效半字节 0 和 8 的值。值为 0 的最重要半字节定义为行业间命令,值 8 是 EMV 规范专有的。
命令APDU的第二个字节是指令代码,称为INS。仅当最低有效位为 0 且最高有效半字节既不是 6 也不是 9 时,此字节才有效。
必需标头的 P1 和 P2 字节包含特定命令的参数,可以是任何值。如果未使用,则参数字节的值必须为 0x00。
R-APDU
从终端接收并解释 APDU 命令后,智能卡将返回响应。如规范中所定义,此响应由可变长度的可选主体组成,后跟由两个字节组成的所需拖车。这种格式如表6所示,APDU响应的内容如表7所示。
数据 | SW1 | SW2 |
←身体→ | ←预告片→ |
法典 | 描述 | 长度 |
数据 | APDU 响应中接收的数据字节字符串 | 变量 (= Lr) |
SW1 | 命令处理状态 | 1 |
SW2 | 命令处理限定符 | 1 |
卡响应的预期长度作为 APDU 命令的 Le 代码部分传输。响应的实际长度称为 Lr。虽然卡不传输Lr的值,但终端可以根据应用需要计算它。
为了正常完成命令,智能卡将返回值为 1x0 的 SW90 和值为 2x0 的 SW00。任何其他响应都指示发生了错误或警告²。
示例代码
本应用笔记随附的软件包含在可下载的文件an4029_sw.zip中。此文件包含生成可执行十六进制文件 (ds8007.hex) 所需的所有 C (main.c、ds51.c、LCD_Funct.c) 和汇编语言 (Startup.a8007) 源代码。该代码是使用 Keil PK51 专业开发人员工具包和 μVision 集成开发环境 (IDE) 编译和链接的。μVision 项目文件 (ds8007.Uv2) 也包含在.zip文件中。这。HEX文件在DS8007评估(EV)板(可从Analog获得)中的DS8007智能卡接口板上加载并运行。示例软件实现完整的智能卡会话,包括上电、ATR、APDU 和断电操作。当连接到哑终端时,电路板和软件将产生232,38波特的RS-400串行输出。此输出如下面的图 4 所示。本软件的详细说明超出了本应用笔记的范围,但提供的源代码可以作为使用DS5002安全微处理器和DS8007多协议双智能卡接口芯片的完整智能卡接口的基础。®
图4.软件输出。
为了测试示例软件,使用了高级卡系统(ACS)基于微控制器的智能卡。作为基于微控制器的设备,该卡执行其嵌入式操作系统的功能,称为ACS智能卡操作系统版本1或ACOS1。此卡具有以下功能。
8kB EEPROM 存储器,用于存储应用数据
符合 ISO 7816-3,T=0 协议
DES 和 MAC 功能
基于随机数的会话密钥
密码,可由持卡人更改
用于相互身份验证的密钥对
ACOS1 文档指示此卡将使用 19 字节的数据响应重置。如图 4 所示,为 T0 返回的值为 0xBE。高半字节 (0xB) 表示 TA1、TB1 和 TD1 将与 TS 一起包含在 ATR 中。低半字节包含0xE,表示 ATR 响应中将包含 14 个历史字节(请参阅上面的字符 T0 说明)。因此,卡的 ATR 中总共包含 19 个字节。
对于此示例软件,执行一个 ADPU,即“启动会话”命令。此命令具有以下格式。
CLA | INS | P1 | P2 | P3 |
0x80 | 0x84 | 0x00 | 0x00 | 0x08 |
对“启动会话”命令的响应具有以下格式。
数据 | SW1 | SW2 |
RNDc(卡中的 8 个字节) | 地位 | 地位 |
图 4 所示的软件输出表明,从卡返回的随机数为 0xCB、0xC4、0xBD、0xD5、0xA4、0x7E、0x36和0x3F。它还显示返回的状态为 0x90, 0x00,这表示命令成功完成。
结论
DS8007为混合信号外设,减轻了微控制器与智能卡接口的负担。它提供与两个独立智能卡进行物理接口所需的所有电信号。专用的内部定序器控制自动卡激活和停用,以及用于数据通信的ISO UART。电荷泵和稳压器允许DS8007工作在2.7V至6.0V电源电压,同时产生两个独立的智能卡电源电压,可以是1.8V、3.0V或5V。与微控制器的通信由标准的并行8位总线提供,该总线在非多路复用配置中传输数据或在多路复用配置中传输数据和地址。所提供的软件使用DS5002安全微处理器和DS8007作为其智能卡接口实现完整的卡会话。智能卡在其 ATR 中返回的字符以 38400 波特率输出在主板的串行端口上,并向卡发送“启动会话”命令 APDU。生成的随机数也会输出在串行端口上。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !