介绍
ISO/IEC 7816 是一系列标准,规定了集成电路卡和此类卡的使用
互换。 这些卡是用于在外部世界和卡中的集成电路之间协商的信息交换的识别卡。 作为信息交换的结果,卡传递信息(计算结果、存储的数据)和/或修改其内容(数据存储、事件记忆)。
五个部分专门针对带电流触点的卡,其中三个部分指定电气接口。
⎯ ISO/IEC 7816-1 规定了触点卡的物理特性。
⎯ ISO/IEC 7816-2 规定了触点的尺寸和位置。
⎯ ISO/IEC 7816-3 规定了异步卡的电气接口和传输协议。
注 ISO/IEC 7816-3 的第一版和第二版指定了可选使用触点 C6 以提供
具有写入或擦除内部非易失性存储器所需的编程能力的卡。 由于自 1990 年以来制造的每张卡都在内部产生编程能力,因此第三版反对这种使用,以及相关的
Answer-to-Reset 中的指示和每个传输协议中的相关控件。
⎯ ISO/IEC 7816-10 规定了同步卡的电气接口和复位应答。
⎯ ISO/IEC 7816-12 规定了 USB 卡的电气接口和操作程序。
所有其他部分都独立于物理接口技术。 它们适用于通过以下一种或多种方法访问的卡:接触、紧密耦合和射频
⎯ ISO/IEC 7816-4 规定了交换的组织、安全和命令。
⎯ ISO/IEC 7816-5 规定了应用提供商的注册。
⎯ ISO/IEC 7816-6 指定了用于交换的行业间数据元素。
⎯ ISO/IEC 7816-7 规定了结构化卡片查询语言的命令。
⎯ ISO/IEC 7816-8 规定了安全操作的命令。
⎯ ISO/IEC 7816-9 规定了卡片管理命令。
⎯ ISO/IEC 7816-11 指定通过生物识别方法进行个人验证。
⎯ ISO/IEC 7816-13 规定了多应用环境中应用管理的命令。
——ISO/IEC 7816-15 规定了密码信息的应用。
ISO/IEC 10536[3] 指定通过紧耦合访问。 ISO/IEC 14443[5] 和 ISO/IEC 15693[6] 指定通过射频访问。 这种卡也称为非接触式卡。
5 Electrical characteristics
ISO/IEC 7816 的这一部分至少支持以下触点。
⎯ C1:电源输入(VCC,见 5.2.1)。
⎯ C2:复位信号输入(RST,见 5.2.2)。
⎯ C3:时钟信号输入(CLK,见 5.2.3)。
⎯ C5:接地(GND,参考电压)。
——C6:标准或专有使用(SPU,见 5.2.4)。
——C7:串行数据的输入/输出(I/O,见 5.2.5)。
注意 本文档不赞成使用触点 C6 为卡提供编程电源,因为自 1990 年以来制造的每张卡都在内部产生编程电源。
6 卡片操作流程
6.1 原则
在卡的触点机械连接到接口设备的触点之前,电路应保持不活动。 接口设备与卡之间的交互应通过以下操作顺序进行。
——接口设备应将一类操作条件应用于电路,即激活、冷复位和可能的一个或多个热复位。 如果卡支持该类别,则它应根据第 8 条回答复位。接口设备以完整有效的复位应答和操作条件类别结束。 接口设备应能够重复整个操作。
——为了交换信息,卡和接口设备应就传输协议和传输参数值达成一致。 第 10 条规定 T=0,以接口设备为主机进行字符的半双工传输。 第 11 条规定 T=1,块的半双工传输。 条款 12 规定了 T=0 和 T=1 时命令-响应对的传输。 当卡没有传输预期时(例如,在处理命令-响应对之后和启动下一个之前),如果卡支持时钟停止,则接口设备可以停止时钟信号。
——接口设备应执行停用。
去激活应该在卡的触点和接口设备的触点之间的机械断开之前完成
6.2 激活、重置和类别选择
6.2.1 激活
为了启动与机械连接卡的交互,接口设备应根据操作条件类别激活电路:A、B 或 C,见 5.1.3,顺序如下。
——RST 应置于状态 L,见 5.2.2。
——VCC 应通电,见 5.2.1。
——接口设备中的 I/O 应置于接收模式,见 5.2.5。 接口设备在激活期间应忽略 I/O 上的状态。
——CLK 应提供时钟信号,见 5.2.3。
注 1 未定义为 VCC 供电、将 I/O 设置为接收模式和在 CLK 上提供时钟信号之间的延迟。
注2:接口设备可能会因短路而失效。
6.2.2 冷复位
在激活结束时(RST 处于 L 状态,VCC 供电,接口设备中的 I/O 处于接收模式,CLK 提供合适且稳定的时钟信号),卡准备好进行冷复位。 卡的内部状态在冷复位之前没有定义。 根据图 1,时钟信号在时间 Ta 施加到 CLK。 在时钟信号施加到 CLK(在时间 Ta + ta)之后,卡应在 200 个时钟周期(延迟 ta)内将 I/O 设置为状态 H。 冷复位是在时钟信号施加到 CLK(在时间 Ta + tb)后将 RST 保持在状态 L 至少 400 个时钟周期(延迟 tb)的结果。 当 RST 处于状态 L 时,接口设备应忽略 I/O 上的状态。在时间 Tb,RST 被置于状态 H。I/O 上的应答应在 400 和 40000 个时钟周期(延迟 tc)之后开始 RST 上信号的上升沿(在时间 Tb + tc)。 如果在状态 H 的 RST 的 40 000 个时钟周期内没有开始应答,则接口设备将执行去激活。
6.2.3 热复位
由于对热复位的回答可能不同于对前一次复位的回答,接口设备可以在任何时候对卡进行热复位,即使是在复位应答期间,但不能在接收到强制字符 TS 和 T0 之前(见 8.1) ). 在字符 T0 的前沿之后,热复位不得启动少于 4 464(= 12 × 372)个时钟周期。 警告 在复位应答期间启动的热复位可能会损坏符合先前版本 (ISO/IEC 7816-3:1997) 的卡。 根据图 2,接口设备通过将 RST 置于状态 L 至少 400 个时钟周期(延迟 te)来启动热复位(在时间 Tc),同时 VCC 保持通电并且 CLK 提供合适且稳定的时钟信号。 在状态 L 应用于 RST 之后(在时间 Tc + td),卡应在 200 个时钟周期(延迟 td)内将 I/O 设置为状态 H。 当 RST 处于状态 L 时,接口设备应忽略 I/O 上的状态。在时间 Td,RST 被置于状态 H。I/O 上的应答应在 400 和 40000 个时钟周期(延迟 tf)之后开始 RST 上信号的上升沿(在时间 Td + tf)。 如果在状态 H 的 RST 的 40 000 个时钟周期内没有开始应答,则接口设备将执行去激活。
6.2.4 选课
图 3 说明了选择操作条件类别的原则。 该图并不详尽。 ⎯ 如果 Reset 应答带有一个类别指示符,指示正在应用的类别(参见 8.2 中 T=15 的第一个 TA),则可以继续正常操作。 或者,接口设备可以执行停用,并在至少 10 毫秒的延迟之后,应用卡支持的另一个类。 ⎯ 如果 Reset 应答没有携带类指示符,则接口设备应保持当前类。 如果在完成复位应答后,卡没有运行,则接口设备应执行去激活,并在至少 10 ms 的延迟后,可以应用另一个类。 ——如果卡不响应复位,那么接口设备将执行去激活并且或者 • 在至少 10 ms 的延迟之后,应用另一个类,如果有的话,或者 • 中止选择过程。 在选择过程中止后,接口设备可以启动另一个选择过程
9 协议和参数选择
9.1 PPS 交换
PPS 交换应按 6.3.1 中的规定开始。 字符帧应按照 7.1 和 7.2 中的规定,使用 TS(见 8.1)规定的编码约定,GT 如 8.3 中规定,WT = 9 600 etu。 根据 7.3 的错误信号和字符重复对于提供 T=0 的卡是强制性的; 它对于接口设备和其他卡是可选的。 只有接口设备被允许启动 PPS 交换。
——接口设备应向卡发送 PPS 请求。
⎯ 如果卡收到错误的 PPS 请求,则不应发送任何响应。
⎯ 如果卡接收到正确的 PPS 请求,它应发送 PPS 响应(如果已执行),否则将超过 WT。
——在以下三种情况下:WT 溢出、错误的 PPS 响应、不成功的 PPS 交换,接口设备应执行去激活。
9.2 PPS请求和响应
PPS 请求和 PPS 响应均由一个初始字节 PPSS、随后是格式字节 PPS0、三个可选参数字节 PPS1、PPS2、PPS3 和作为最后一个字节的校验字节 PCK 组成。
——PPSS 标识 PPS 请求或响应并设置为“FF”。
⎯ 在 PPS0 中,每个位 5、6 或 7 设置为 1 分别表示存在可选字节 PPS1、PPS2、PPS3。 比特 4 到 1 编码类型 T 以提出传输协议。 第 8 位保留供将来使用,应设置为 0。
⎯ PPS1 允许接口设备向卡建议 F 和 D 的值。 以与 TA1 中相同的方式编码,这些值应分别从 Fd 到 Fi 和从 Dd 到 Di。 如果一个接口设备不传输PPS1,它建议继续Fd和Dd。 卡要么通过回显 PPS1 来确认这两个值(然后这些值变为 Fn 和 Dn),要么不传输 PPS1 以继续 Fd 和 Dd(然后 Fn = 372 和 Dn = 1)。
⎯ PPS2 允许接口设备建议使用 SPU。 PPS2 的编码方式应与
T=15 的第一个 TB。 如果一个接口设备不传输PPS2,或者如果它传输PPS2 = '00',它建议不要使用SPU。
⎯ PPS3 保留供将来使用。
⎯ 异或所有字节 PPSS 到 PCK(包括在内)应给出 '00'。 任何其他值均无效。
9.3 PPS兑换成功
当且仅当 PPS 响应符合以下条件时,PPS 交换才成功
PPS 请求。
——PPS0_Response 的第 1 到 4 位应与 PPS0_Request 的第 1 到 4 位相同。
——PPS0_Response 的第 5 位应与 PPS0_Request 的第 5 位相同或设置为 0。
• 如果位5 设置为1,PPS1_Response 应与PPS1_Request 相同。
• 如果第5 位设置为0,PPS1_Response 将不存在,这意味着将使用Fd 和Dd。
——PPS0_Response 的第 6 位应与 PPS0_Request 的第 6 位相同或设置为 0。
• 如果第6 位设置为1,PPS2_Response 应与PPS2_Request 相同。
• 如果第6 位设置为0,PPS2_Response 将不存在,意味着卡不使用SPU。
——PPS0_Response 的第 7 位应与 PPS0_Request 的第 7 位相同或设置为 0。
• 如果第7 位设置为1,PPS3_Response 应与PPS3_Request 相同。
• 如果第7 位设置为0,则PPS3_Response 应不存在(确切含义保留供将来使用)。
在最常见的情况下,PPS 响应与 PPS 请求相同。
10 协议 T=0
字符的半双工传输 10.1 范围 本节定义了半双工字符传输中命令的结构和处理。 接口设备启动这些命令。 本节涵盖传输控制。
10.2 人物等级
传输协议应按 6.3.1 中的规定开始。 字符帧应按7.1和7.2规定,使用TS(见8.1)规定的编码约定,GT按8.3规定。 卡和接口设备都应根据 7.3 使用错误信号和字符重复。 当使用 D = 64 时,接口设备应确保在最后接收到的字符的前沿和发送的用于启动命令的字符的前沿之间至少有 16 etu 的延迟。 如果出现在复位应答中,接口字节 TC2 将等待时间整数 WI 编码为 8 位,但保留供将来使用的值“00”除外。 如果没有 TC2,则默认值为 WI = 10。
10.3 命令的结构和处理
10.3.1 原则
接口设备通过传输一个五字节的标头来启动每个命令,该标头告诉卡要做什么。 在卡传输的过程字节的控制下,命令处理继续在一个方向上传输可变数量的数据字节。 假定卡和接口设备先验地知道传输方向,以便区分 ⎯ 输入数据传输的命令,数据字节在处理时进入卡,以及 ⎯ 输出数据传输的命令,数据字节离开 卡,同时处理。
10.3.2 命令头
头部由五个字节组成,分别表示为 CLA、INS、P1、P2 和 P3。 CLA、INS、P1 和 P2 的值应
符合 ISO/IEC 7816-4 的规定。
⎯ CLA 表示一类命令。 “FF”值无效(为 PPSS 保留,参见 6.3.1 和 9.2)。
注意 ISO/IEC 7816-4 强制将“FF”作为 CLA 的无效值。
⎯ INS 表示指令代码。 值“6X”和“9X”无效。 注意 ISO/IEC 7816-4 强制将“6X”和“9X”作为 INS 的无效值。
⎯ P1 P2 表示指令参数,例如,完成指令代码的引用。
⎯ P3 编码在命令期间传输的数据字节数,表示为 D1 到 Dn。
• 在传出数据传输命令中,P3='00' 引入了来自卡的256 字节数据传输。
• 在传入数据传输命令中,P3='00' 不引入数据传输
10.3.3 过程字节
在将报头作为五个字符的字符串传输后,接口设备应等待一个传送过程字节的字符。 过程字节分为三种,见表 11。
⎯ 如果值为 '60',则为 NULL 字节。 它不要求对数据传输采取任何行动。 接口设备应等待传送过程字节的字符。
⎯ 如果值为 '6X' 或 '9X',除了 '60',它是一个 SW1 字节。 它不要求对数据传输采取任何行动。 接口设备应等待传送 SW2 字节的字符。 对 SW2 值没有限制。 注意 ISO/IEC 7816-4 强制将“60”作为 SW1 的无效值,以及任何不同于“9X”和“6X”的值。
⎯ 如果该值是 INS 的值,除了值 '6X' 和 '9X' 之外,它是一个 ACK 字节。 所有剩余的数据字节,如果有任何字节剩余,表示为 Di 到 Dn,随后将被传输。 然后接口设备将等待一个传送过程字节的字符。
⎯ 如果该值是“FF”与 INS 值的异或,除了值“6X”和“9X”之外,它是一个 ACK 字节。 只有下一个数据字节(如果存在)才被传输,表示为 Di。 然后接口设备将等待一个传送过程字节的字符。
⎯ 任何其他值均无效。
在每个程序字节,卡可以通过 NULL 或 ACK 继续执行命令,或者通过 SW1 SW2 完成命令,或者通过变得无响应来表示不同意(WT 将被超过)
10.3.4 状态字节
状态字节 SW1 SW2 指示命令末尾的卡状态。 它们的值应符合 ISO/IEC 7816-4 中的规定。
注 ISO/IEC 7816-4 强制执行 SW1 SW2 的六个值的含义,由以前的版本为 T=0 指定
(ISO/IEC 7816-3:1989 和 1997)。
'9000' 命令正常完成
不支持“6E00”CLA
支持“6D00”CLA,但 INS 未编程或无效
'6B00' CLA INS 支持,但 P1 P2 不正确
'6700' CLA INS P1 P2 支持,但 P3 不正确
不支持“6F00”命令且未给出精确诊断
根据定义,命令在字符传送 SW2 的前沿后 12 个 etu 完成
11.3 块框架
11.3.1 总则
如图 17 所示,一个块由两个或三个字段组成。
⎯ 序言字段由节点地址字节、协议控制字节和长度字节组成。
⎯ 信息字段由 0 到 254 个字节组成。
⎯ 结语字段由一个或两个字节组成。
传输协议定义了三种类型的块。
⎯ 信息块(I-block)用于传送应用层使用的信息。 此外,它还传达了正面或负面的认可。
⎯ 接收就绪块(R 块)用于传达肯定或否定确认。 它的信息字段应该不存在。
⎯ 监控块(S-block)用于在接口设备和卡之间交换控制信息。 根据其控制功能,其信息字段可能会出现。
注:这种分离允许协议控制的设计和设备微代码的应用部分相对独立
11.3.2 序言字段
11.3.2.1 节点地址字节节点地址字节(NAD)允许识别块的源和预期目的地; 当多个逻辑连接共存时,它可以用来区分它们。 值“FF”无效。 它保留给 PPSS(见 6.3.1 和 9.2)。 位 1 到 3 是源节点地址,表示为 SAD,位 5 到 7 是目标节点地址,表示为 DAD。 第 4 位和第 8 位已弃用。 卡应将它们设置为 00。接口设备应忽略它们。 注 ISO/IEC 7816-3 的前两个版本指定了第 4 位和第 8 位来控制触点 C6 的弃用(参见 5.1.1)。 当不使用寻址时,SAD 和 DAD 的值应设置为 000。SAD 和 DAD 相同的任何其他 NAD 值保留供将来使用。 在接口设备传输的第一个块中,NAD 应通过关联地址 SAD 和 DAD 来建立逻辑连接。 NAD 包含同一对地址 SAD 和 DAD 的后续块与同一逻辑连接相关联。 在信息交互过程中,其他地址对SAD和DAD可能会建立其他逻辑连接。 注:例如,由接口设备传输的具有 SAD 值 x 和 DAD 值 y 的块以及卡传输的具有 SAD 值 y 和 DAD 值 x 的块属于表示为 (x, y) 的逻辑连接,而块 由接口设备传输,SAD 值为 v,DAD 值为 w,卡传输 SAD 值为 w,DAD 值为 v 的块属于另一个逻辑连接 (v, w)。
11.3.2.2 协议控制字节
协议控制字节 (PCB) 传送控制传输所需的信息。 PCB 定义块是 I 块、R 块还是 S 块。
在每个 I 块中,PCB 的位 8 设置为 0,如图 18 所示。
⎯ 位 7 编码表示为 N(S) 的发送序列号。
⎯ 位 6 是更多数据位,表示为 M 位。
——第 5 位到第 1 位保留供将来使用,应设置为 0。
11.4 协议参数
11.4.1 T=1 的特定接口字节
指定了三个特定的接口字节:T=1 的第一个 TA,T=1 的第一个 TB 和 T=1 的第一个 TC(见 8.2.3)。 它们用于将协议参数设置为非默认值。
11.4.2 信息字段大小
IFSC 是卡可以接收的块信息字段的最大大小。 如果存在,T=1 的第一个 TA 设置 IFSC 的初始值。 默认值为 32。
IFSD 是接口设备可以接收的块信息字段的最大大小。 IFSD 的初始值为 32。在传输协议开始时,IFSC 和 IFSD 被初始化。 在传输协议中,IFSC和IFSD可以通过S(IFS request)和S(IFS response)来调整,其中INF由一个字节组成,名称为IFS。 在任何情况下,T=1 的第一个 TA 和每个字节 IFS 应按如下方式编码。
⎯ 值“00”和“FF”保留供将来使用。
⎯ 值 '01' 到 'FE' 编码数字 1 到 254。
注 1 本文档建议 IFS 值至少为“20”。
注 2 块大小是序言、信息和尾声字段中出现的字节总数。 最大块大小设置为 IFS 加四或五,具体取决于尾声字段的大小。
11.4.3 等待时间
根据定义,CWT 是块中两个连续字符的前沿之间的最大延迟(参见图 21)。 最小延迟是 CGT(见 11.2)。
注意 当长度存在潜在错误时,CWT 可用于检测块的结尾
11.4.4 冗余代码
T=1 的第一个 TC 的位 1 指示要使用的错误检测代码:
——CRC 如果位 1 被设置为 1;
——如果位 1 设置为 0,则 LRC(默认值)。T=1 的第一个 TC 的位 8 到 2 保留供将来使用,应设置为 0。
11.5 数据链路层字符组件操作
在传输协议开始时,接口设备有权传输。 异步字符总是分组在块中。 当卡或接口设备发送了一个块时,它切换到接收模式。 当卡或接口设备根据长度字节中编码的字节数接收到一个块时,它假定它有权传输。
11.6 数据链路层块组件操作
11.6.1 块符号
以下块用于传输协议的描述。 I块表示如下。 I(N(S), M) I-block 其中 N(S) 是发送序列号,M 是更多数据位(见 11.6.2.2) Na(S), Nb(S) 发送序列号 I-block 的索引 a 和 b 区分源 A 和 B
R块表示如下。
R(N(R)) R-block 其中 N(R) 是预期 I-block S-block 的发送序号,表示如下。
S(RESYNCH request) S-block 请求重新同步
S(RESYNCH response) S-block 确认重新同步
S(IFS request) S-block 提供信息字段的最大尺寸
S(IFS response) S-block acknowledging IFS
S(ABORT request) S-block请求链中止
S(ABORT response) S-block 确认链中止
S(WTX request) S-block 请求等待时间延长
S(WTX response) S-block 确认等待时间延长
在 S(IFS…) 和 S(WTX…) 中,INF 根据 11.6.2.3 中的规则 3 和 4 存在