PAGE 22 中国金融集成电路(IC)卡电子钱包/电子存折/Easy Entry规范
第1部分:卡片部分 PAGE 21
中国金融集成电路(IC)卡
电子钱包/电子存折规范
第一部分:卡片规范
中国金融集成电路(IC)卡标准修订工作组
二零零四年九月
目 次
41. 范围
42. 参考资料
53. 定义
84. 缩略语和符号表示
125. 机电特性、逻辑接口与传输协议
机电接口
卡的机械特性
卡的电气特性
终端的机械特性
终端的电气特性
卡片操作过程
正常操作
交易过程的异常结束
字符的物理传送
位持续时间
字符帧
复位应答
复位应答期间回送字符的物理传输
复位应答期间IC卡回送的字符
字符定义
复位应答过程中的终端行为
复位应答-终端上的流程图
传输协议
物理层
数据链路层
终端传输层
应用层
506. 数据元和命令
文件
文件结构
文件查询
命令
命令APDU格式
响应APDU格式
APPLICATION BLOCK 命令
APPLICATION UNBLOCK 命令
CARD BLOCK 命令
EXTERNAL AUTHENTICATION 命令
GET CHALLENGE 命令
GET RESPONSE 命令
INTERNAL AUTHENTICATION 命令
PIN UNBLOCK 命令
READ BINARY 命令
READ RECORD 命令
SELECT 命令
UPDATE BINARY 命令
UPDATE RECORD 命令
VERIFY 命令
747. 应用选择
应用标识符的编码
支付系统环境结构
支付系统目录编码
目录入口中“执行的命令”的使用
其他目录的编码
终端的应用选择
直接选择应用
支付系统目录的使用
选择应用并执行操作
798. 安全机制
基本安全要求
共存应用
密钥的独立性
密钥和个人密码的存放
安全报文传送
安全报文传送格式
报文完整性和验证
数据可靠性
过程密钥的产生
安全报文传送的命令情况
认可的加密算法
对称算法(DES)
非对称算法(RSA)
安全哈什算法(SHA-1)
90附录A
92附录B
96附录C 使用T=0协议交换的示例
96C1 情况 1 下的命令
96C2 情况 2 下的命令
96C3情况3下的命令
97C4情况4下的命令
97C5采用过程字节‘61’和‘6C’的情况2命令
97C6 采用过程字节‘61’的情况4命令
98C7 带警告条件的情况4命令
引言
《本规范》第1部分卡片规范包括以下主要内容:
──机电接口、逻辑接口和传输协议。用于卡和终端间的信息交换。本篇参照采用了ISO 7816第1至第3部分并与EMV’2000-支付系统集成电路卡规范的第1部分等同。
──数据元和命令集。定义了金融应用中所使用的一般数据元、命令集和对终端响应的基本要求。金融应用中所需的专用命令在《本规范》第2部分应用规范中定义。
──应用选择。定义了卡和终端完成应用选择的处理过程,并规定了与卡中此过程相关的数据文件的逻辑结构。此部分与EMV’2000-支付系统集成电路卡规范的第1部分等同。
──安全机制。定义了金融应用中有关安全的总体要求、加密算法和安全机制。应用安全特征和设备要求在《本规范》第2部分应用规范中定义。
范围
《本规范》第1部分卡片规范适用于由银行发行或接受的金融IC卡。其使用对象主要是与金融IC卡应用相关的卡片设计、制造、管理、发行、受理以及应用系统的研制、开发、集成和维护等部门(单位),也可以作为其他行业IC卡应用的参考。
参考资料
EMV’2000:2000
支付系统的集成电路卡规范-应用无关的IC卡与终端接口需求
EMV’2000:2000
支付系统的集成电路卡规范-安全和密钥管理
EMV’2000:2000
支付系统的集成电路卡规范-应用规范
EMV’2000:2000
支付系统的集成电路卡规范-持卡人、服务员和收单行接口需求
FIPS Pub 180-1:1995
安全哈什标准
IEC 512-2:1979
机电设备机电器件规范 第2部分:触点电阻测试、绝缘测试和电压测试
ISO 639:1988
名称及语言表示代码
GB 2659:1994
世界各国和地区名称代码(ISO 3166:1993)
GB/T 12406:1996
表示货币和资金的代码(ISO 4217:1995)
GB/T
识别卡 记录技术 第1部分:凸印 (ISO/IEC 7811-1:1992)
GB/T
识别卡 记录技术 第3部分:ID-1型卡上凸印字符的位置 (ISO/IEC 7811-3:1992)
SJ/S 9028
识别卡 金融交易卡 ISO/IEC 7813:1990
GB/T :1996
识别卡 带触点的集成电路卡 第1部分:物理特性(ISO/IEC 7816-1:1987)
GB/T :1996
识别卡 带触点的集成电路卡 第2部分:触点的尺寸和位置(ISO/IEC 7816-2:1988)
GB/T :1996
识别卡 带触点的集成电路卡 第3部分:电信号和传输协议(ISO/IEC 7816-3:1989)
ISO/IEC 7816-3:1992
识别卡 带触点的集成电路卡 第3部分:电信号和传输协议 修订稿1:T=1,异步半双工块传输协议
ISO/IEC 7816-3:1994
识别卡 带触点的集成电路卡 第3部分:电信号和传输协议 修订稿2:协议类型选择(国际标准草案)
ISO/IEC 7816-4:1995
识别卡 带触点的集成电路卡 第4部分:行业间交换用命令
ISO/IEC 7816-5:1994
识别卡 带触点的集成电路卡 第5部分:应用标识符的编号系统和注册程序
ISO/IEC 7816-6:1995
识别卡 带触点的集成电路卡 第6部分:行业间数据元(国际标准草案)
ISO 8731-1:1987
银行业务已批准的报文鉴别算法 第1部分:DEA
ISO 8732:1987
信息处理 64位块加密算法的运算方法
GB/T 16263:1996
信息技术 开放系统互联 抽象语法表示1()的基本编码规则(ISO/IEC 8825:1990)
GB/T 15150:1996
产生报文的银行卡 交换报文规范 金融交易内容 (ISO 8583:1987)
ISO 8583:1993
产生报文的银行卡 交换报文规范 金融交易内容
GB/T 15273
信息处理八位单字节代码型图型字符集 (ISO 8859:1987)
ISO/IEC 9796-2
信息技术 安全技术 报文恢复的数字签名方法 第2部分:使用哈什函数的机制
ISO/IEC 9797:1993
信息技术 安全技术 使用块加密算法进行加密检查的数据完整性机制
ISO/IEC 10116:1993
信息技术 n位块加密算法的运算方法
ISO/IEC 10118-3:1996
信息技术 安全技术 哈什函数 第3部分:专用哈什函数
ISO/IEC 10373:1993
识别卡 测试方法
中国人民银行《银行IC卡规范需求说明书》()
定义
以下定义适用本规范。
块 Block
包含两个或三个域(头域、信息域、尾域)的字符组。
冷复位 Cold Reset
当IC卡的电源电压和其他信号从静止状态中复苏且申请复位信号时,IC卡产生的复位。
热复位 Warm Reset
在时钟(CLK)和电源电压(VCC)处于激活状态的前提下,IC卡收到复位信号时产生的复位。
接口设备 Interface Device
终端上插入IC卡的部分,包括其中的机械和电气部分。
终端 Terminal
为完成金融交易而在交易点安装的设备,用于同IC卡的连接。它包括接口设备,也可包括其他部件和接口,例如与主机通讯的接口。
命令 Command
终端向IC卡发出的一条信息,该信息启动一个操作或请求一个应答。
连接 Concatenation
两个元素的连接是指将第二个元素附加到第一个元素的末尾。每个元素的字节在结果串中的排列顺序与其从IC卡发送到终端的顺序相同,即:高位字节先送。每个字节位按照从最高位到最低位的顺序排列。一组元素或对象可以通过最先两个相连的方式连接成一个新元素,即第一个与第二个相连,再与第三个相连,…,依次类推。
触点 Contact
在集成电路卡和外部接口设备之间保持电流连续性的导电元件。
响应 Response
IC卡处理完成收到的命令报文后,返回给终端的报文。
凸印 Embossing
使字符从卡的正面显箸地凸起。
头域 Prologue Field
块的第一部分,包括节点地址(AD)、协议控制字节(PCB)和长度(LEN)。
尾域 Epilogue Field
块的最后一部分,包括错误校验代码(EDC)位。
金融交易 Financial Transaction
持卡者、商户和收单行之间基于收、付款方式的商品或服务交换行为。
功能 Function
由一个或多个命令实现的处理过程,其操作结果用于完成全部或部分交易。
保护时间 Guardtime
同一方向发送的前一个字符奇偶位下降沿和后一个字符起始位下降沿之间的最小时间。
哈什函数 Hash Function
将位串映射为定长位串的函数,它满足以下两个条件:
( 对于一个给定的输出,不可能推导出与之相对应的输入数据;
( 对于一个给定的输入,不可能推导出第二个能得出相同输出的输入数据。
另外,如果要求哈什函数具备防冲突功能,则还应满足以下条件:
( 不可能找到任意两个不同的输入,得出相同的输出数据。
哈什结果 Hash Result
哈什函数的输出位串。
静止状态 Inactive
当IC卡上的电源电压(VCC)和其他信号相对于地的电压值小于或等于伏时,则称电源电压和这些信号处于静止状态。
集成电路 Integrated Circuit(IC)
设计用于完成处理和/或存储功能的电子器件。
集成电路卡(IC卡) Integrated Circuit(s) Card
内部封装一个或多个集成电路的ID-1型卡(如ISO7810、ISO7811第1至第5部分、ISO7812和ISO7813中描述的)。
报文 Message
由终端向卡或卡向终端发出的,不含传输控制字符的字节串。
报文鉴别代码 Message Authentication Code
对交易数据及其相关参数进行运算后产生的代码。主要用于验证报文的完整性。
半字节 Nibble
一个字节的高四位或低四位。
明文 Plaintext
没有加密的信息。
密文 Ciphertext
通过密码系统产生的不可理解的文字或信号。
密钥 Key
控制加密转换操作的符号序列。
数字签名 Digital Signature
一种非对称加密数据变换,它使得接收方能够验证数据的原始性和完整性,保护发送和接收的数据不被第三方伪造,同时对于发送方来说,还可用以防止接收方的伪造。
加密算法 Cryptographic Algorithm
为了隐藏或揭露信息内容而变换数据的算法。
认证机构 Certification Authority
利用公开密钥和其他相关数据为所有者提供可靠校验的第三方机构。
对称加密技术 Symmetric Cryptographic Technique
发送方和接收方使用相同保密密钥进行数据变换的加密技术。在不掌握保密密钥的情况下,不可能推导出发送方或接收方的数据变换。
非对称加密技术 Asymmetric Cryptographic Technique
采用两种相关变换进行加密的技术,一种是公开变换(由公共密钥定义),另一种是私有变换(由私有密钥定义)。这两种变换具有以下属性,即私有变换不能通过给定的公开变换导出。
私有密钥 Private Key
一个实体的非对称密钥对中仅供实体自身使用的密钥,在数字签名模式中,私有密钥用于签名功能。
公共密钥 Public Key
一个实体的非对称密钥对中可以公开的密钥,在数字签名模式中,公共密钥用于验证功能。
公开密钥认证 Public Key Certification
由认证机构签发的一个实体的公共密钥信息,具有不可伪造性。
保密密钥 Secret Key
对称加密技术中仅供指定实体所用的密钥。
数据完整性 Data Integrity
数据不受未经许可的方法变更或破坏的属性。
状态 H State H
高电平状态。根据IC卡中的逻辑约定,可以是逻辑1或逻辑0。
状态 L State L
低电平状态。根据IC卡中的逻辑约定,可以是逻辑1或逻辑0。
T=0
面向字符的异步半双工传输协议。
T=1
面向块的异步半双工传输协议。
缩略语和符号表示
以下缩略语和符号表示适用于本规范:
AAC
应用认证密码(Application Authentication Cryptogram)
AAR
应用授权参考(Application Authorization Referral)
AC
应用密码(Application Cryptogram)
ACK
确认(Acknowledgment)
ADF
应用数据文件(Application Definition File)
AEF
应用基本文件(Application Elementary File)
AFL
应用文件位置(Application File Locator)
AID
应用标识符(Application Identifier)
an
字母数字型(Alphanumeric)
ans
字母数字及特殊字符型(Alphanumeric Special)
APDU
应用协议数据单元(Application Protocol Data Unit)
ARPC
授权响应密码(Authorization Response Cryptogram)
ARQC
授权请求密码(Authorization Request Cryptogram)
ASN.
抽象语法表示(Abstract Syntax Notation)
ATC
应用交易序号(Application Transaction Counter)
ATR
复位应答(Answer to Reset)
b
二进制(Binary)
BER
基本编码规则(Basic Encoding Rules)
BGT
块保护时间(Block Guard Time)
BWI
块等待时间整数(Block Waiting Time Integer)
BWT
块等待时间(Block Waiting Time)
C-APDU
命令APDU(Command APDU)
CBC
加密数据块链(Cipher Block Chaining)
CIN
输入电容(Input Capacitance)
CLA
命令报文的类别字节(Class Byte of the Command Message)
CLK
时钟(Clock)
cn
压缩数字(Compressed Numeric)
C-TPDU
命令TPDU(Command TPDU)
CWI
字符等待时间整数(Character Waiting Time Integer)
CWT
字符等待时间(Character Waiting Time)
DAD
目标节点地址(Destination Node Address)
DDF
目录数据文件(Directory Definition File)
DEA
数据加密算法(Data Encryption Algorithm),本规范中DEA算法就是指DES算法
DES
数据加密标准(Data Encryption Standard)
DF
专用文件(Dedicated File)
DIR
目录(Directory)
EDC
错误检测代码(Error Detection Code)
EF
基本文件(Elementary File)
EMV
Europay、Mastercard、VISA
etu
基本时间单元(Elementary Time Unit)
FCI
文件控制信息(File Control Information)
f
频率(Frequency)
FIPS
联邦信息处理标准(Federal Information Processing
Standard)
GND
地(Ground)
hex.
十六进制数(Hexadecimal)
HHMM
时、分(Hours, Minutes)
HHMMSS
时、分、秒(Hours, Minutes, Seconds)
I-block
信息块(Information Block)
IC
集成电路(Integrated Circuit)
ICC
集成电路卡(Integrated Circuit Card)
IEC
国际电工委员会(International Electrotechnical
Commission)
IFD
接口设备(Interface Device)
IFS
信息域大小(Information Field Size)
IFSC
IC卡信息域大小(Information Field Size for the ICC)
IFSD
终端信息域大小(Information Field Size for the Terminal)
IIH
高电平输入电流(High Level Input Current)
IIL
低电平输入电流(Low Level Input Current)
INF
信息域(Information Field)
INS
命令报文的指令字节(Instruction Byte of Command Message)
I/O
输入/输出(Input/Output)
IOH
高电平输出电流(High Level Output Current)
IOL
低电平输出电流(Low Level Output Current)
ISO
国际标准化组织(International Organization for
Standardization)
KM
主控密钥(Master Key)
KS
过程密钥(Session Key)
Lc
终端发出的命令数据的实际长度(Exact Length of Data Sent by the TAL IN A Case 3 or 4 Command)
lcm
最小公倍数(Least Common Multiple)
Le
响应数据的最大期望长度(Maximum Length of Data Expected by the TAL in Response to a Case 2 or 4 Command)
Licc
IC卡回送的可用数据的实际长度(Exact Length of Data Available in the ICC to be Returned in Response to the Case 2 or 4 Command Received by the ICC)
LEN
长度(Length)
Lr
响应数据域的长度(Length of Response Data Field)
LRC
冗余校验(Longitudinal Redundancy Check)
M
必备型(Mandatory)
MAC
报文鉴别代码(Message Authentication Code)
MF
主控文件(Mater File)
n
数字型(Numeric)
NAD
节点地址(Node Address)
NAK
否定的确认(Negative Acknowledgment)
NCA
认证机构公开密钥模数长度(Length of the Certification Authority Public Key Modulus)
NI
发卡方公开密钥模数长度(Length of the Issuer Public Key Modulus)
NIC
IC卡公开密钥模数长度(Length of the ICC Public Key Modulus)
O
可选型(Optional)
P1
参数1(Parameter 1)
P2
参数2(Parameter 2)
P3
参数3(Parameter 3)
PAN
主帐号(Primary Account Number)
PCA
验证机构公开密钥(Certification Authority Public Key)
PCB
协议控制字节(Protocol Control Byte)
PI
发卡方公开密钥(Issuer Public Key)
PIC
IC卡公开密钥(ICC Public Key)
PIN
个人密码(Personal Identification Number)
PIX
专用应用标识符扩展码(Proprietary Application
Identifier Extension)
PSA
支付系统应用(Payment System Application)
PSE
支付系统环境(Payment System Environment)
PTS
协议类型选择(Protocol Type Selection)
R-APDU
响应APDU(Response APDU)
RFU
保留为将来使用(Reserved for Future Use)
RID
已注册的应用提供者标识(Registered Application Provider Identifier)
RSA
一种非对称加密算法(Rivest,Shamir,Adleman)
RST
复位(Reset)
R-TPDU
响应TPDU(Response TPDU)
SAD
源节点地址(Source Node Address)
SAM
安全存取模块(Secure Access Module)
SCA
验证机构私有密钥(Certification Authority Private Key)
SI
发卡方私有密钥(Issuer Private Key)
SIC
IC卡私有密钥(ICC Private Key)
SFI
短文件标识符(Short File Identifier)
SHA
安全哈什算法(Secure Hash Algorithm)
SW1
状态码1(Status Word One)
SW2
状态码2(Status Word Two)
TAL
终端应用层(Terminal Application Layer)
TC
交易认证(Transaction Certificate)
TCK
校验字符(Check Character)
tF
信号幅度从90%下降到10%的时间(Fall Time Between 90% and 10% of Signal Amplitude)
TLV
标签、长度、值(Tag Length Value)
TPDU
传输协议数据单元(Transport Protocol Data Unit)
tR
信号幅度从10%上升到90%的时间(Rise Time Between 10% and 90% of Signal Amplitude)
TTL
终端传输层(Terminal Transport Layer)
TVR
终端校验结果(Terminal Verification Results)
VCC
VCC触点上的测量电压(Voltage Measured on VCC Contact)
VCC
电源电压(Supply Voltage)
VIH
高电平输入电压(High Level Input Voltage)
VIL
低电平输入电压(Low Level Input Voltage)
VOH
高电平输出电压(High Level Output Voltage)
VOL
低电平输出电压(Low Level Output Voltage)
VPP
VPP触点上的测量电压(Programming Voltage Measured on VCC Contact)
VPP
编程电压(Programming Voltage)
WI
等待时间整数(Waiting Time Integer)
CCYYMMDD
年、月、日(Year, Month, Day)
‘0’~‘9’ ‘A’~‘F’
16进制数字
[]
可选部分
A:=B
A被赋予B值
A=B
A等于B
A(B mod n
整数A与B之差模n,即存在一个整数 d,使得(A-B)=dn
A mod n
A模n
abs(n)
n的绝对值
Y:=ALG(K)[X]
用保密密钥 K,通过64位块加密方法,对64位数据块X进行加密
X:=ALG-1(K)[Y]
用保密密钥 K,通过64位块加密方法,对64位数据块Y进行解密
Y:=Sign(SK)[X]
用私有密钥SK,通过使用非对称可逆算法,对数据块X进行签名
X=Recover(PK)[Y]
用公开密钥SK,通过使用非对称可逆算法,对电子签名数据块Y进行恢复
C:=(A||B)
将m位块B链接到n位块A后,定义为:C=2mA+B
H:=Hash[MSG]
用80位的哈什函数对报文MSG哈什运算
lcm(a,b)
两个整数a和b的最小公倍数
|n|
整数N的位长
(X| n)
整数X和整数n(n=pq,p和q为素数)的Jacobi值,有如下定义: J:=(X(p-1)/2mod p)(X(q-1)/2mod q)
如果J=1或j=(pq-p-q+1)则:(X|n)=1
否则(X|n)=-1
注:整数X的Jacobi值在没有n素数因子时,也可计算
xx
任意值
机电特性、逻辑接口与传输协议
机电接口
本章包括IC卡和终端的电气、机械特性。IC卡和终端的规范指标有所不同,其目的是为防止对IC卡的损坏预留安全余地。
本章定义的IC卡特性遵从ISO/IEC 7816系列标准,并依据实际需要与技术发展,作了一些细小变动。
注:本章内容等同采用EMV’2000的第一部分。
卡的机械特性
本节描述了IC卡的物理特性,触点分配和机械强度。
物理特性
除本节的特殊规定外,IC卡应满足ISO 7816-1中规定的物理特性。同时IC卡应该满足ISO/IEC 7816-1定义的其它特性,如紫外线、X-射线、触点的表面断面、机械强度、电磁特性、抗静电特性等的要求,并能在上述条件下正确地运行。
模块高度
IC模块表面的最高点不应高于卡表面平面。
IC模块表面的最低点不应低于卡表面平面。
触点的尺寸和位置
触点的尺寸和位置必须如下图所示:
区域C1、C2、C3、C5和C7表面必须用导电层完全覆盖,构成IC卡的基本触点。区域C4、C6、C8和ISO/IEC7816-2附录B所定义的区域Z1到Z8可以选择导电表面,但强烈建议Z1到Z8区域无导电表面。如果区域C6和Z1到Z8有导电表面,则它们必须和集成电路(IC)、相互之间以及其它触点区域在电路上隔离 。同时,任何两个导电区域之间除了通过IC都不能导通。基本触点必须如表1所示分配。
触点相对于凸字和/或磁条的位置如图1所示。
图- 1 触点位置
触点的分配
IC卡上触点的分配遵循ISO 7816-2的规定,如表1所示:
表- 1 IC卡触点的分配
C1
电源电压(VCC)
C5
接地(GND)
C2
复位信号(RST)
C6
未使用
C3
时钟信号(CLK)
C7
输入/输出(I/0)
C4和C8未使用,可以不作实际设置。
卡的电气特性
本节描述了在IC卡触点上测量出的信号的电气特性。
测量约定
所有测量均应在IC卡和接口设备(IFD)之间的触点上进行,并以GND为参照。环境温度范围为0℃~50℃。IC卡必须能够在0℃~50℃之间正确操作。所有流入IC卡的电流均视为正值。
注:温度范围的限定是由PVC(大部分卡所用的材料)的特性决定的,而不是由集成电路的特性决定的。
输入/输出 (I/O)
该触点作为输入端(接收模式)从终端接收数据或者作为输出端(发送模式)向终端传送数据。在操作过程中,IC卡和终端不能同时处于发送模式,若万一发生此情况,I/O触点的状态(电平)将处于不确定状态,但不能损坏IC卡。
接收模式
在接收模式下,当电源电压(VCC)在节中规定的范围内时,IC卡应能正确的解释来自终端的信号,其特性如表2所示:
表- 2 接收模式下I/O的电气特性
符 号
最小值
最大值
单 位
VIH
×Vcc
Vcc
V
VIL
0
V
tR和TF
_
(s
注:在到Vcc+范围内,I/O正、负脉冲峰值不应损坏IC卡。
传输模式
在传输模式下,IC卡向终端传送数据,其特性如表3所示:
表- 3 传输模式下I/O的电气特性
符号
条 件
最小值
最大值
单位
VOH
-20(A<IOH<0,Vcc=min.
×Vcc
Vcc
V
VOL
0<IOL<1mA,Vcc=min.
0
V
tR和tF
CIN(terminal)=30pF max.
_
(s
除向终端传送数据时,IC卡应将其I/O信号驱动模式设置为接收模式,且不要求I/O具备供任何电流源性能。
编程电压 (VPP)
IC卡不需要编程电压VPP(见的注释)
时钟 (CLK)
当Vcc在节所规定的范围内时,IC卡将在具有表4所示特性的时钟信号作用下正常工作:
表- 4 CLK的电气特性
符 号
条 件
最小值
最大值
单 位
VIH
Vcc
V
VIL
0
V
tR和tF
Vcc=min. to max.
_
9%的时钟周期
(s
注:在到Vcc+范围内, CLK端正、负脉冲峰值不应损坏IC卡。
当时钟占空因数处于其稳定运行周期的44%~56%之间时,IC卡应能正常工作。
当时钟频率处于1MHz到5MHz之间时,IC卡应能正常工作。
注:在卡片操作过程中,频率值将由终端维持在复位应答期间所用频率的±1%之内。
复位 (RST)
当VCC在节所规定的范围内时,IC卡应能正确的解释具有表5所示电气特性的复位信号:
表- 5 RST的电气特性
符号
条 件
最小值
最大值
单 位
VIH
Vcc
V
VIL
0
V
tR和TF
Vcc= max.
_
(s
注:在到Vcc+范围内,RST端的正、负脉冲峰值不应损坏IC卡。
IC卡应利用激活的低复位信号,采用异步方式进行复位应答。
电源电压(VCC)
在电源电压VCC为5V±直流电的情况下,IC卡应能正常工作。此时,时钟频率应在节中所规定的范围内,最大电流为50mA。
注:建议IC卡的电流损耗尽可能低。在以后颁布的标准中,IC卡所允许的最大损耗电流将被降低。当IC卡中存在多个应用时,应确保IC卡的电损耗与其可能用到的所有终端均能相匹配。
触点电阻
在整个生命周期内,IC卡触点的电阻(在清洁的IC卡和清洁的标准接口设备触点间测量时)应小于500mΩ。(见ISO/IEC 10373的测试方法)
注:一个标准接口设备触点可以看作是在(m镍表面上的(m的镀金触点。
终端的机械特性
本节描述了终端接口设备的机械特性
接口设备
用于插入IC卡的接口设备应具备接收IC卡的能力,并具有以下特性:
- 物理特性满足ISO/IEC 7816-1的规定
- 正面触点位置应满足ISO/IEC 7816-2中图2的规定。
- 凸印应满足ISO/IEC 7811-1和3的规定
接口设备的触点分布必须保证如下所示的IC卡插入后,所有触点都可以正确导通。除了用于导通IC卡的C1到C8的触点之外,接口设备不应该有其它触点。
定位的导轨和夹板(如果使用)不应损坏IC卡,尤其不能损坏卡上磁条、签名条、凸印和全息标志等区域。
注:作为一个基本原则,持卡人应在任何时候都能将IC卡插入或拔出。因而接口设备上插入IC卡位置处,应该配有一种机械设备,从而使得持卡人能够在设备发生故障(如掉电)时取回IC卡。
触点压力
任何一个接口设备触点对相应的IC卡触点所施加的压力应在到之间。
触点分配
接口设备触点的分配如表6所示。
表- 6 接口设备触点的分配
C1
电源电压(VCC)
C5
地(GND)
C2
复位信号(RST)
C6
不使用
C3
时钟信号(CLK)
C7
输入/输出(I/0)
C4和C8不使用,在物理上可以不存在。
终端的电气特性
本节描述了在IFD触点上测量出的信号的电气特性。
测量约定
除非生产商另有指明,所有测量应是在IC卡和接口设备之间的触点上进行,并以GND为参考。环境温度范围为5℃~40℃。必须限制终端的内部温度,以防损坏IC卡。
所有流出终端的电流均为正值。
输入/输出 (I/O)
该触点作为输出端(发送模式)向IC卡传送数据,作为输入端(接收模式)从IC卡接收数据。在操作过程中,终端和IC卡不能同时处于发送模式,若万一发生此情况,I/O触点的状态(电平)将处于不确定状态,但不应损坏终端。
当终端和IC卡都处于接收模式时,触点必须处于高电平状态。除非VCC加电并稳定在节中允许的范围内,终端不应将I/O置于高电平状态。见节有关触点激活的内容。
在任何情况下,均应将流入或流出I/O触点的电流限定在±15mA以内。
传输模式
在传输模式下,终端向IC卡传送数据,其特性如表7所示:
表- 7 传输模式下I/O的电气特性
符号
条 件
最小值
最大值
单位
VOH
0<IOH<20(A,Vcc=min.
×Vcc
Vcc
V
VOL
<IOL<0,Vcc=min.
0
V
tR和tF
CIN(ICC)=30pF max.
-
(s
信号干扰
低电平
V
高电平
×Vcc
Vcc+
V
除向IC卡传送数据时,终端应将其I/O信号驱动模式设置为接收模式。
接收模式
在接收模式下,终端应能正确的解释从IC卡发来的具有表8所示特性的信号:
表- 8 接收模式下I/O的电气特性
符 号
最小值
最大值
单位
VIH
×Vcc
Vcc
V
VIL
0
V
tR和TF
-
(s
编程电压(VPP)
C6必须在电气上隔离。电气隔离意味着在C6和其它任何触点上施以5V DC的电压时,二者之间的电阻应该≧10MΩ。如果在终端中导通,则C6必须在整个卡片操作过程中保持在GND和×Vcc之间。
注:在新终端中隔离C6可以把它用于本规范未来版本可能规定的其它用途上。
时钟(CLK)
终端将产生一个具有表9所示特性的时钟信号:
表- 9 CLK的电气特性
符号
条 件
最小值
最大值
单位
VOH
0<IOH<50(A,Vcc=min.
Vcc
V
VOL
-50(A<IOL<0,Vcc=min.
0
V
tR和tF
CIN(ICC)=30pF max.
-
8%的时钟周期
(s
信号干扰
低电平
V
高电平
Vcc+
稳定运行时,时钟占空因数应在其周期的45%~55%之间。
频率范围必须在1MHz~5MHz之间,且在整个交易期间,除非通过复位应答采用了专用的协商技术,其变化范围不应超过±1%(见节)。
复位(RST)
终端必须产生具有表10所示特性的复位信号:
表- 10 RST的电气特性
符号
条件
最小值
最大值
单 位
VOH
0<IOH<50(A,Vcc=min.
Vcc
V
VOL
-50(A<IOL<0,Vcc=min.
0
V
tR和tF
CIN(ICC)=30pF max.
-
(s
信号干扰
低电平
V
高电平
Vcc+
V
电源电压(VCC)
终端必须提供5V±的直流电压,并必须能稳定输出0~55mA的电流。终端应带有保护电路以防止在误操作如对地或VCC短路时所造成的损坏。误操作既可能来源于内部,也可能来自外部接口如电源干扰、通讯链路故障等。以GND为基准,Vcc决不可以低于。
在正常的IC卡操作中,电流脉冲会在IC卡触点上引起VCC波动。电源应能抵消电量≤30nAs、持续时间≤400ns、幅度≤100mA及电流变化率≤1mA/ns的电流负载瞬时波动,以确保VCC在规定的范围之内。脉冲的最大包络参见下图。
注:如果需要,终端应能够具有大于55mA的传输能力,但建议终端将稳定电流限制在200mA以内。
触点电阻
在终端的整个设计寿命期间,触点电阻(在清洁的接口设备和清洁的标准IC卡触点间测量时)应小于500mΩ。(参见ISO/IEC 7816-1的测试方法)
注:标准的IC卡触点可以看作是在(m 的镍表面上的(m镀金触点。
短路保护
当任何两个触点之间发生短路时,无论时间长短,终端都不应被损坏或功能失常,例如:例如:插入一块金属板片。
插入IC卡后,终端的加电和断电
插入IC卡后,当对终端进行加电或断电时,所有的信号电压必须保持在节规定的范围之内,触点的激活和释放的时序应分别符合和条中的规定。
卡片操作过程
本节描述了从将卡片插入接口设备、完成处理交易直至将卡片拔出的操作过程中所有步骤。
正常操作
本条款描述了执行一个正常交易的操作过程。
操作步骤
卡的操作过程包括以下步骤:
- 将IC卡插入接口设备,使二者的触点相接并激活;
- 将IC卡复位,同时在终端和IC卡之间建立通讯联系;
- 进行交易处理操作;
- 释放触点并从接口设备中取出IC卡。
IC卡插入与触点激活顺序
在IC卡插入接口设备但触点还没有物理接触时,终端应确保其所有触点处于低电平状态(VOL符合中的规定,Vcc小于或等于)。如果IC卡在接口设备中位于插/拔方向正确位置3) 的(范围内时,接口设备应能探测到卡片的存在,当所有触点进行物理接触后,其激活过程如图2所示。
图- 2 触点激活时序
- 终端应在整个激活时序中保持RST为低电平状态;
- 触点物理接触后,应在I/0或CLK激活之前给Vcc 加电;
- 终端确认Vcc稳定在所规定的范围内后,将I/O置于接收模式并提供中规定的合适、稳定的时钟。终端将其I/O置于接收模式可以在时钟启动之前,最迟也不得超过时钟启动后的200个时钟周期。
注:根据设计,终端可以给Vcc一个足够的等待时间使之稳定,待稳定后再通过测量或其他方式来检查它的状态。终端将其I/O置为接收模式后,其I/O状态取决于IC卡上I/O的状态。
IC卡复位
IC卡利用激活的低复位信号,采用异步方式进行应答。
复位应答的传送方式在中描述,而其内容在和中描述。
冷复位
在节所述的触点激活后,终端将发出一个冷复位信号,并从IC卡获得一个复位应答信号(见图3),过程如下:
( 终端在T0时启动CLK。
( 在T0后的最多200个时钟周期内,IC卡将其I/O置为接收模式。由于终端也要在同样时间内将其I/O置为接收模式,因此IC卡上的I/O应在T0后保持至少200个时钟周期的高电平状态;
( 终端应从T0开始保持RST端为低电平状态,并在从T0开始到T1后的40000到45000个时钟周期内将RST端置为高电平状态;
( IC卡上I/O的复位应答将在T1后的400到40000个时钟周期(如图3中的t1所示)内开始;
( 终端必须在T1之后380个时钟周期之内打开一个接收窗口且不能在T1之后42,000个时钟周期内关闭(如图3中T1所示)。如果没有收到来自IC卡的复位应答信息,终端必须在不早于T1后42,001个时钟周期之后、不晚于T1后42,000个时钟周期加50ms之前启动释放时序。
图- 3 冷复位顺序
热复位
在中所述的冷复位过程之后,如果收到的复位应答信号不能满足中的规定,终端将启动一个热复位并从IC卡获得复位应答(见图4)。过程如下:
( 热复位将从T0’开始,此时终端将RST置为低电平状态;
( 在整个热复位顺序中,终端将保持Vcc和CLK的稳定,并且符合和中的规定;
( 在T0’后的不超过200个时钟周期内,IC卡和终端将其I/O置为接收模式。因此其I/O应在T0后最迟不超过200个时钟周期的高电平状态;
( 终端应从T0’开始保持RST端为低电平状态,并在从T0’开始到T1’后的40000到45000个时钟周期内将RST端置为高电平状态;
( IC卡上I/O的复位应答将在T1’后的400到40000个时钟周期(如图4中的t1’所示)内开始;
( 终端必须在T1’之后380个时钟周期之内打开一个接收窗口且不能在T1’之后42,000个时钟周期内关闭(如图4中T1’所示)。如果没有收到来自IC卡的复位应答信息,终端必须在不早于T1’后42,001个时钟周期之后、不晚于T1’后42,000个时钟周期加50ms之前启动释放时序。
图- 4 热复位顺序
交易执行
IC卡中应用的选择以及执行一次交易操作所需的IC卡与终端间的信息交换将在本规范的第7篇中描述。
触点释放时序
作为卡片操作的最后一步,根据交易的正常或异常结束(包括在卡片操作过程中将卡从接口设备中拔出),终端将把接口设备触点置为静止状态(见图5)。过程如下:
( 终端将通过把RST置为低电平状态来启动释放时序;
( 在置RST为低电平状态之后且Vcc断电之前,终端将CLK和I/O设定为低电平状态。
( 在置RST、CLK和I/O为低电平状态之后且卡片触点与接口设备触点物理分离之前,终端将切断Vcc电源,此时的Vcc应小于或等于。
( 释放过程必须在100ms内完成。这一时间段从RST置于低电平状态开始到Vcc达到或低于为止。
图- 5 触点释放时序
交易过程的异常结束
在交易过程中,如果IC卡以1m/s的速度过早地从终端中拔出,终端应能感觉到IC卡相对于接口设备触点的移动。并在相对位移达到1mm之前,根据中描述的方式将接口设备的所有触点置为静止状态。在这种情况下,IC卡的电气或机械特性应不受损坏。
注:对于滑触式结构的接口设备,终端有可能感觉到IC卡触点与接口设备触点之间的相对位移。此处不对能否感知到相对运动作强制性要求,但在IC卡和接口设备的触点脱离之前应能够将其置为静止状态。
字符的物理传送
在卡片操作过程中,数据通过I/O在终端和IC卡之间以异步半双工方式进行双向传送。终端向IC卡提供一个用作数据交换的时序控制时钟信号。数据位和字符的交换机制在下面描述,这种交换机制适用于复位应答,并在中描述的两种传输协议中使用。
位持续时间
在I/O上使用的位持续时间被定义为一个基本时间单元(etu),在复位应答期间,I/O上etu和CLK频率(f)之间呈线性关系。
复位应答期间的位持续时间称为初始etu,由下列方程给出:
初始etu = ADVANCE EQ 秒,式中f的单位是赫兹
复位应答后(参数F和D的确定,参见)的位持续时间称为当前etu,由下列方程给出:
当前etu = 秒,式中f的单位是赫兹
注:本规范描述的基本复位应答,仅支持F=372和D=1。这样初始etu和当前etu相同且均等于。除非另外说明,以后所提到的etu,均为当前etu。
在卡的整个交易过程中,f的值应在1~5MHz之间。
字符帧
数据在I/O上以如下所述的字符帧方式传输。采用的约定由IC卡在复位应答时发送的初始字符(TS)确定(见)。
字符传送之前,I/O应被置为高电平状态。
一个字符由10个连续位组成(见图6):
( 1个低电平状态的起始位;
( 组成数据字节的8个数据位;
( 一个奇偶校验位。
起始位由接收端通过对I/O周期采样测得,采样时间应小于 etu。
一个字符中的逻辑’1’位的数目必须是偶数,8个数据位和奇偶校验自身均作为校验计算位,但起始位不作校验计算。
起始时刻固定地从最后一个检测到的高电平状态到第一个检测到的低电平状态的中间算起,起始位应在之前被验证是否存在,后续各位应在(n+±)etu(n为各位的次序号)间隔内接收到,起始位的次序号为1。
在一个字符内,从起始位的下降沿到第n位的下降沿之间的时间是(n±)etu。
两个连续字符起始位下降沿之间的保护时间,等于字符持续时间(10±)etu加上一个保护时间。在保护时间内,IC卡与终端都应处于接收模式(即I/O为高电平状态)。当T=0时,如果IC卡或终端作为接收方对刚收到的字符检测出奇偶错误,则I/O将被设置为低电平状态,以向发送方表明出现错误(见)。
图- 6 字符帧
在终端的传输层(TTL),数据总是采用高位先送方式(.)在I/O上传送。一个字节中位的传送顺序(即:低位先送还是高位先送)由复位应答回送的TS字符确定(见)。
复位应答
如同所述,在由终端发出复位信号以后,IC卡以一串字节作为应答(即复位应答)。这些传输到终端的字节规定了卡和终端之间即将建立的通信的特性。传输这些字节的方法及字节的含义在下面描述。
注:在和中,一个字符的最高位指的是b8位,最低位是b1位。在单引号中的值表示以十六进制值标注,例如:’3F’。
复位应答期间回送字符的物理传输
本条款描述了复位应答期间回送字符的结构和时序。
位持续时间在节定义,字符帧在节定义。
在复位应答过程中,两个连续字符的起始位下降沿之间的最小时间间隔为12个初始etu,最大时间间隔为9600个初始etu。
在复位应答期间,IC卡应在19,200个初始etu4) 内发送完成所有要回送的字符。发送时间应从第一个字符(TS)起始位的下降沿开始,到最后一个字符起始位下降沿后的12个初始etu为止。
复位应答期间IC卡回送的字符
在复位应答期间,IC卡回送字符的数目和编码随传输协议和所支持的传输控制参数值的不同而不同。本节中描述了两种基本的复位应答:一种是针对支持T=0协议的IC卡,另一种是针对T=1协议的IC卡 (卡片只支持其中一种)。本节还规定了回送字符和传输控制参数值的允许范围。IC卡回送两种复位应答的任何一种,均能保证操作的正确性和与符合本规范的终端的互操作性。
根据特殊需要,IC卡可以选择支持多种传输协议,终端应支持这样的IC卡,同时这种IC卡会回送一个约定模式的响应,而且它的首选协议是T=0或T=1。终端将使用首选协议对卡片进行操作,但对其是否支持其他协议不做强制要求。
基于相同的考虑,IC卡可以选择支持由发卡方确定的其他传输控制参数值,但这已超出本规范的范围。符合本规范的终端可以拒绝这种卡片,并且不必为支持这种卡片而增加相应的特殊功能。
在两种基本复位应答中,IC卡回送的字符如表11和表12所示,字符的次序按照IC卡发送的顺序排列,即TS为第一个字符。
对于采用T=0协议(异步半双工字符传输协议)的IC卡,其回送字符如表11所示:
表- 11 T=0时的基本ATR
字符
值
备 注
TS
‘3B’或’3F’
指明正向或反向约定
T0
‘6X’
TB1和TC1存在,X表示历史字节的存在个数
TB1
‘00’
不使用VPP
TC1
‘00’到’FF’
指明所需额外保护时间的数量,’FF’值为特定含义值(见)
对于采用T=1协议(异步半双工传输协议)的IC卡,其回送字符如表12所示:
表- 12 T=1时的基本ATR
字符
值
备 注
TS
‘3B’或’3F’
指明正向或反向约定
T0
‘EX’
TB1到TD1存在,X表示历史字节的存在个数
TB1
‘00’
不使用VPP
TC1
‘00’到’FF’
表明所需额外保护时间的数量,’FF’值为特定含义值(见)
TD1
‘81’
TA2到TC2不存在,TD2存在;使用T=1协议
TD2
‘31’
TA3和TB3存在,TC3和TD3不存在,使用T=1协议
TA3
‘10’到’FE’
返回IFSI,表示IC卡信息域大小的初始值且具有16~254字节的IFSC
TB3
高位半字节’0’到’4’,低位半字节’0’到’5’
BWI=0到4
CWI=0到5
TCK
见
校验字符
字符定义
本条款对复位应答中可能回送的字符进行了详细描述。在符合基本ATR的情况下,一个字符是否存在,以及允许的取值范围(如果存在)由其“基本应答”信息指明。基本应答描述既不排斥其他字符值的使用,也不排斥发卡行增加或删减字符。例如,如果IC卡支持多个传输协议,它可以回送附加字符(见)。但是,只有在IC卡返回一个基本ATR,或返回一个下面描述的满足最低功能需求的终端所支持的ATR,才能保证字符的正确交换。
符合本规范的终端仅需支持本部分描述的基本ATR(最小功能)及一些附加要求。终端可以拒绝不按此要求返回ATR的IC卡。此外,终端可以具备正确解释不符合本规范但由专用IC卡(如:国内专用)返回的ATR的能力。这种功能并非强制性要求,且超出了本规范的范围。作为一个基本原则,终端不应拒绝回送非基本ATR的IC卡,只要终端能正确处理该ATR即可。
终端必须能对复位应答返回的字符进行奇偶校验,但不必即时校验。如果终端检测到校验错,它必须拒绝IC卡。
在以下描述中,如果指明终端必须
拒绝复位应答,则意味着终端必须在拒绝冷复位后执行热复位,或在拒绝热复位后释放触点以结束卡片操作过程。
拒绝IC卡,则意味着终端必须释放触点以结束卡片操作过程。
接受复位应答,则意味着终端必须在本节规定的对其它所有字符的要求都满足的情况下接受复位。
每个字符的描述按以下结构组织:
标题
ISO/IEC 7816-3描述的用途
EMV基本应答。为保证互操作性,热复位应答中必须包括这些字符。
如果终端收到EMV规定范围之外的字符,终端的规定动作。
TS-初始字符
TS有两个功能:向终端提供一个便于位同步的已知位模式并指定解释后续字符的逻辑约定。
使用反向逻辑约定时,I/O的低电平状态等效于逻辑’1’,并且该数据字节的最高位在起始位之后首先发送。
使用正向逻辑约定时,I/O的高电平状态等效于逻辑’1’,并且该数据字节的最低位在起始位之后首先发送,第1个半字节LHHL用于位同步。
基本响应:IC卡将回送的TS为以下两个值之一:
── (H)LHHLLLLLLH—反向约定,值为’3F’
── (H)LHHLHHHLLH—正向约定,值为’3B’
冷复位和热复位的约定可能不同。
终端要求:终端应能够同时支持反向和正向约定,并接收IC卡回送的值为’3B’或’3F’的TS,但应拒绝接收其他TS值。
注:强烈推荐使用‘3B’作为IC卡的回送值,因为在以后的版本中可能不再支持‘3F’。
T0-格式字符
T0由两部分组成,高半字节(b5-b8)表示后续字符TA1到TD1是否存在,b5-b8位设置成逻辑’1’表明TA1到TD1存在;相应地,低半字节(b1-b4)表明可选历史字符的数目(0到15)(见表13)。
基本响应:当选择T=0时,IC卡应回送T0=’6X’,表示字符TB1和TC1存在;当选择T=1时,IC卡应回送T0=’EX’,表示字符TB1到TD1存在。’X’的值表示要回送的可选历史字符的数目。
终端要求:在T0回送值正确且包含了所需的接口字符(TA1到TD1)和历史字符时,终端不应拒绝IC卡回送任何值。
b8
b7
b6
b5
b4
b3
b2
b1
T=0
0
1
1
0
x
x
x
x
T=1
1
1
1
0
x
x
x
x
表- 13 T0的基本响应代码
TA1到TC3-接口字符
在复位应答后的终端和IC卡信息交换期间,TA1到TC3表示传输控制参数F、D、I、P、N、IFSC、BWI及CWI的值。这些参数用于ISO/IEC 7816-3中定义的T=1协议。TA1到TC1和TC2传送的信息将用于后续数据交换且与所使用的协议类型无关。
TA1
TA1传送FI和DI的值,其中:
── FI用于确定F的值,F为时钟速率转换因子。用于修改复位应答之后终端所提供的时钟频率。
── DI用于确定D的值,D为比特速率调节因子。用于调整复位应答之后所使用的位持续时间。
ATR后位持续时间(当前etu)的计算方法见。
在复位应答期间使用的缺省值FI=1和DI=1,分别表示F=372和D=1。
基本响应:如果IC卡不回送TA1值,则在整个后续信息交换过程中继续使用缺省值F=372和D=1。
终端要求:如果ATR中存在TA1(T0的b5设为‘1’)且TA2的b5=‘0’(具体模式、参数由接口字符定义),则
──如果TA1的值在‘11’到‘13’之间,终端必须接收ATR,且必须立即采用指明的F和D值(F=372,D=1,2,4)。
──如果TA1的值不在‘11’到‘13’之间,终端必须拒绝ATR,除非它可以支持并立即采用指明的条件。
如果ATR中返回TA1(T0的b5设为‘1’)且TA2没有返回(协商模式),终端必须接收ATR且继续在后续信息交换过程中使用缺省值D=1和F=372,除非它支持使用协商参数的特殊方法。
如果ATR中没有返回TA1,则后续交换中使用缺省值D=1和F=372。
TB1
TB1传送PI1和II值,其中:
── PI1在b1到b5位中定义,用于确定IC卡所需的编程电压P值。PI1=0表示IC卡不使用VPP。
── II在b6和b7位中定义,用于确定IC卡所需的最大编程电流I值。PI1=0表示不使用此参数。
── b8位不使用,并设置为逻辑’0’。
基本响应:IC卡将回送TB1=’00’,表示IC卡不使用VPP。
终端要求:在冷复位应答中,终端只能接收TB1=‘00’的ATR。 在热复位应答中,终端必须能够接收TB1为任何值的ATR(只要T0的b6置为‘1’)或不包括TB1的ATR(如果T0的b6设为‘0’);此时终端必须当作TB1=‘00’,继续后续操作。终端不提供编程电压VPP。
注:终端可以保持Vpp为静止状态 (见)。
字符TB1的基本响应代码如表14所示:
b8
b7
b6
b5
b4
b3
b2
b1
0
0
0
0
0
0
0
0
表- 14 TB1的基本响应代码
TC1
TC1传送N值,N用于表示增加到最小持续时间的额外保护时间,此处的最小持续时间表示从终端发送到IC卡的、作为后续信息交换的两个连续字符的起始位下降沿之间的时间。N在TC1的b1-b8位为二进制编码,其值作为额外保护时间表示增加的etu数目,其值可在0到255之间任选。N=255具有特殊含义,表示在使用T=0协议时,两个连续字符的起始位下降沿之间的最小延迟时间可减少到12个etu,而在使用T=1协议时可减小到11个etu。
注:TC1只适用于终端向IC卡发送的两个连续字符间的时段,而不适用于IC卡向终端发送字符的情况,也不适用于两个反方向发送字符的情况,见和。
如果TC1值在’00’到’FE’之间,增加到字符间最小持续时间的额外保护时间为0到254个etu。对于后续传输,额外保护时间将在12到266个etu之间。
如果TC1=’FF’,则后续传输的字符间最小持续时间在使用T=0协议时为12个etu,使用T=1协议时为11个etu。
基本响应:IC卡应回送’00’到’FF’之间的TC1值。
终端要求:如果T0的b7位为’0’,终端不应拒绝不回送TC1的IC卡,但如果终端接受了这样的IC卡,应能够继续卡片操作过程,就象回送了TC1=’00’一样。
字符TC1的基本响应代码如表15所示:
b8
b7
b6
b5
b4
b3
b2
b1
x
x
x
x
x
x
x
x
表- 15 TC1的基本响应代码
注:推荐:将TC1设置为IC卡可接受的最小值。TC1取值过大将导致终端与IC卡之间的通讯缓慢,这样将延长交易时间。
TD1
TD1表示是否还要发送更多的接口字节以及后续传输所使用的协议类型,其中:
── 高半字节用于表示字符TA2到TD2是否存在,这些位(b5-b8)设置为逻辑’1’状态时,分别表示TA2到TD2字符的存在;
── 低半字节用于表示后续信息交换所使用的协议类型。
基本响应:当选用T=0协议时,IC卡不回送TD1,并且T=0协议作为后续传输类型的缺省值。当选用T=1协议时,IC卡将回送TD1=’81’,表示TD2存在,且后续传输协议类型为T=1协议。
终端要求:如果回送值正确且包含了所需的接口字符TA2到TD2,终端不应拒绝这样的IC卡,即:其所回送TD1的高半字节为任意值且低半字节的值为’0’或’1’。终端应拒绝IC卡回送其他的TD1值。
字符TD1的基本响应代码如表16所示:
b8
b7
b6
b5
b4
b3
b2
b1
1
0
0
0
0
0
0
1
表- 16 TD1的基本响应代码(T=1)
TA2
TA2的存在与否表示IC卡是以特定模式还是以交互模式工作。
基本响应:IC卡将不回送TA2,TA2不存在表示以交互模式工作。
终端要求:如果在复位应答期间TA2的b5=0,且终端能够支持IC卡返回的接口参数所指明的确切条件,终端应该接受包含TA2的ATR,并立即使用这些条件。否则,终端应拒绝接受含有TA2的ATR。
TB2
TB2传送PI2,PI2用于确定IC卡所需的编程电压P的值,当PI2出现时,它将取代TB1中回送的PI1的值。
基本响应:IC卡不应回送TB2。
终端要求:终端应该拒绝包含TB2的ATR。
注:终端可以保持Vpp为静止状态(见)。
TC2
TC2专用于T=0协议,并传送工作等待时间整数(WI),WI用来确定由IC卡发送的任意一个字符起始位下降沿与IC卡或终端发送的前一个字符起始位下降沿之间的最大时间间隔。工作等待时间为: 960×D×WI。
基本响应:IC卡不回送TC2,且后续通讯中使用缺省值WI=10。
终端要求:终端必须:
拒绝包含TC2=‘00’的ATR。
接收包含TC2=‘0A’的ATR。
拒绝TC2为其它任何值的ATR,除非它可以支持。
TD2
TD2表示是否还要发送更多的接口字节以及后续传输所使用的协议类型,其中:
── 高半字节用于表示字符TA3到TD3是否存在,这些位(b5-b8)设置为逻辑’1’状态时,分别表示TA3到TD3字符的存在;
── 低半字节用于表示后续信息交换所使用的协议类型,当选用T=1协议类型时,该低半字节选值为’1’。
基本响应:当选用T=0协议时,IC卡不回送TD2,并且T=0协议作为后续传输类型的缺省值。当选用T=1协议时,IC卡将回送TD2=’31’,表示TA3和TB3存在,且后续传输协议类型为T=1。
终端要求:如果回送值正确且包含了所需的接口字符TA3到TD3,终端不应拒绝这样的IC卡,即:其所回送TD2的高半字节为任意值且低半字节的值为’1’或’E’ (如果TD1的低半字节为‘0’)。终端应拒绝IC卡回送其他的TD2值。
字符TD2的基本响应代码如表17所示:
b8
b7
b6
b5
b4
b3
b2
b1
0
0
1
1
0
0
0
1
表- 17 TD2的基本响应代码(T=1)
TA3
TA3(如果TD2中指明T=1)回送IC卡的信息域大小整数(IFSI),IFSI决定了IFSC,并指明了卡片可接收的块信息区域的最大长度(INF)。TA3以字节形式表示IFSC的长度,其取值范围从’01’到’FE’。’00’和’FF’ 保留为将来使用。
基本响应:如果选用T=1协议表明初始IFSC在16到254字节范围内,则IC卡应回送’10’到’FE’之间的TA3值。
终端要求:如果TD2的b5位为’0’,终端不应拒绝不回送TA3的IC卡,但如果终端接受了这样的IC卡,则应令TA3=’20’来继续卡片操作过程。终端应拒绝那些回送的TA3 值在’00’到’0F’之间或为’FF’的IC卡。
字符TA3的基本响应代码如表18所示:
b8
b7
b6
b5
b4
b3
b2
b1
x
x
x
x
x
x
x
x
‘00’到’0F’和’FF’不被允许
表- 18 TA3的基本响应代码(T=1)
TB3
TB3(如果TD2中指明T=1)表明了用来计算CWT和BWT的CWI和BWI值,TB3由两部分组成。低半字节(b1-b4)用于表明CWI值,而高半字节(b5-b8)用于表明BWI值。
基本响应:在选用T=1协议的前提下,IC卡应回送这样的TB3:高半字节取值为’0’到’5’,低半字节取值为’0’到’4’。即:CWI的值在0到5之间,BWI的值在0到4之间。
字符TB3的基本响应代码如表19所示:
b8
b7
b6
b5
b4
b3
b2
b1
0
x
x
x
0
y
y
y
xxx取值范围为000到100
yyy取值范围为000到101
表- 19 TB3的基本响应代码(T=1)
终端要求:终端应拒绝以下的ATR:不包含TB3,包含BWI大于4和/或 CWI大于5的TB3,或包含使2CWI ≤(N + 1)的TB3。终端应接受包含其它TB3值的ATR。
注:N为TC1中指定的额外保护时间。若TC1=255,N的值必须置为 –1。 当T=1时,由于CWI所规定的最大值是5,TC1的值应在‘00’与‘1E’之间或等于‘FF’,以避免TC1与TB3之间的矛盾。
TC3
TC3指明了所用的块错误检测代码的类型,所用代码类型用b1位表示,b2到b8位不使用。
基本响应:IC卡不应回送那些将纵向冗余校验(LRC)作为错误代码来标明的TC3。
终端要求:终端必须能够接收包括TC3=‘00’的ATR,而拒绝TC3为其它任何值的ATR。
TCK-校验字符
TCK具有一个检验复位应答期间所发送数据完整性的值。TCK的值应使从T0到包括TCK在内的所有字节进行异或运算的结果为零。
基本响应:在使用T=0协议时,IC卡不回送TCK。而在其它情况下,IC卡应回送TCK。
终端要求:当TCK正确返回时,终端必须能校验它。如果仅选择T=0协议,终端必须能够接受不包含TCK的ATR。其它情况下,终端必须拒绝不包含TCK或TCK不正确的ATR。
复位应答过程中的终端行为
在IC卡的触点如中所描述的那样激活之后,终端应启动一个如中所定义的冷复位。
如果终端如节的描述拒绝IC卡,则它必须在ATR的TS起始位的下降沿开始的24,000个初始etu(19,200 + 4,800初始etu)之内启动下电时序。
如果终端根据节的描述拒绝接受冷复位应答,则它不应立即终止卡片操作过程,而必须在冷复位的TS起始位的下降沿开始的24,000个初始etu(19,200 + 4,800初始etu)之内置RST为低电平,启动热复位。
如果终端如节的描述拒绝热复位应答,则它必须在热复位的TS起始位的下降沿开始的24,000个初始etu(19,200 + 4,800初始etu)之内启动下电时序。
终端必须能够接收两个连续字符的起始位下降沿的最小间隔为的ATR。
终端必须能够接收两个连续字符的起始位下降沿的最大间隔为10,080初始etu(9,600 初始etu + 480初始etu)的ATR。如果某个字符没有接收到,则终端必须在最后一个接收到的字符(之后发生超时的字符)的起始位下降沿开始的14,400个初始etu(9,600初始etu + 4,800初始etu)之内启动下电时序,结束卡片操作。
终端必须能够接收总持续时间小于或等于20,160初始etu的ATR。如果ATR(热复位或冷复位)未完成,则终端必须在TS的起始位的下降沿开始的24,000个初始etu(19,200 + 4,800初始etu)之内启动下电时序,结束卡片操作。
如果终端在ATR中接收到的字符里检测到校验错,则它必须在TS的起始位下降沿开始的24,000个初始etu(19,200 + 4,800初始etu)之内启动下电时序,结束卡片操作。
在接收到了符合上述时序的有效冷复位或热复位应答后,终端必须使用接收到的参数继续卡片操作过程。终端可以在有效ATR的最后一个字符(由位图字符T0和/或TDi指明)和TCK(如果存在)接收到以后继续卡片操作过程。在继续传输之前,终端必须从有效ATR最后一个字符起始位的下降沿开始至少等待所用协议规定的保护时间(T=0为16etu,T=1为BGT)。
复位应答-终端上的流程图
图7给出了一个IC卡向终端回送复位应答的过程,以及由终端执行检查以确保该复位应答符合中规定的实例。
图- 7 ATR-终端上的流程图
注1:“case”是一个过程变量,用来表示是执行一次冷复位还是执行一次热复位。case=1时为冷复位,case=2时为热复位。
注2:如果过程在此处结束,则IC卡可能是一个商业协议终端可接受的非金融卡。终端应在卡插入前,通过特殊处理过程而事先做好准备,以便接受这种卡。这可以在终端上设置专用按钮来做到,相应地,处理过程也是专用的。
注3:如果过程在此处结束,则可以将IC卡从终端中拔出,并按照要求正确操作而使IC卡重新复位。终端上应显示一条相应的信息。
注4:本规范以外的专用交易操作可以通过使用协议选择程序而在此处被启动。
传输协议
本章规定了在异步半双工传输协议中,终端为实现传输控制和特殊控制而发出的命令的结构及其处理过程。
这里定义了两种协议:字符传输协议(T=0)和块传输协议(T=1)。IC卡支持T=0协议或T=1协议,但推荐使用T=0协议。TD1规定了后续传输中采用的传输协议(T=0或T=1),如果TD1在ATR中不存在,则假定T=0。由于没有PTS过程,在复位应答之后,由IC卡指明的协议将立即被采用。在ATR中提供的其他参数和与特定协议相关的参数将在本节相应的部分定义。
协议根据以下层次模型定义:
── 物理层:定义了位交换,是两个协议的公共部分。
── 数据链路层,包含以下定义:
a) 字符帧,定义了字符交换,是两种协议的公共部分。
b) T=0,定义了T=0时的字符交换。
c) 对T=0的检错与纠错。
d) T=1,定义了T=1时的块交换。
e) 对T=1的检错与纠错。
── 传输层,定义了针对每个协议的面向应用的报文传输。
── 应用层,根据相同的应用协议,定义报文交换的内容。
物理层
T=0与T=1协议均使用了物理层和节中定义的字符帧。
数据链路层
描述了传输协议T=0和T=1的时段分配、特殊选择与错误处理。
字符帧
在中定义的字符帧适用于IC卡与终端之间的所有报文交换。
字符协议T=0
特定选项-用于T=0的时段分配
在复位应答中,TC1的值决定了终端发送到IC卡的两个连续字符起始位下降沿之间的最小时间间隔在12和266个etu之间(见和节)。这一时间间隔可以小于在相反方向发送的两个连续字符之间的最小间隔16etu。如果TC1返回的值是N,IC卡必须能够正确解释从终端传来的相邻字符起始位下降沿最小间隔为 + N etu的连续字符。
IC卡发送到终端的两个连续字符起始位下降沿之间的最小时间间隔为12个etu。终端必须能够正确解释从IC卡传来的相邻字符起始位下降沿最小间隔为的连续字符。
IC卡发送的任意字符的起始位下降沿与IC卡或终端发送的前一个字符的起始位下降沿之间的最大时间间隔(工作等待时间)不能超过960×D×WI=9600个etu。(D和W1分别在TA1和TC2中返回。)
终端必须能够正确解释IC卡发送的起始位下降沿与IC卡或终端发送的上一个字符的起始位下降沿最大间隔为WWT + (D × 480) etu的字符。如果没有接收到字符,终端必须在发生超时的字符起始位下降沿开始的WWT + (D × 9600) etu内启动下电时序。
对于IC卡和终端,在相反方向发送的两个连续字符的起始位下降沿之间的最小时间间隔不能小于16个etu。IC卡或终端必须能够正确解释接收到的其起始位下降沿和最后发送的字节起始位下降沿间隔为15etu的字符。此处的时序不适用于重发字符。
命令头
命令均由终端应用层(TAL)发出,它包括一个由5个字节组成的命令头。每个命令头由5个连续字节CLA、INS、P1、P2和P3组成:
── CLA:命令类别;
── INS:指令代码;
── P1和P2:附加参数;
── 根据不同的INS,P3指明发送给IC卡的命令的字节长度或期待IC卡响应的最大数据长度。
对于T=0,这些字节和通过命令发送的数据一起构成命令传输协议数据单元(C-TPDU),命令应用协议数据单元(C-APDU)到C-TPDU的映射将在节中描述。
TTL传送5个字节的命令头给IC卡并等待一个过程字节。
命令处理
IC卡收到命令头以后向TTL回传过程字节或状态字节SW1 SW2(以后简称“状态”)。TTL和IC卡在二者之间的命令和数据交换的任何时刻都必须知道数据流的方向和I/O线路由谁驱动。
过程字节
过程字节向TTL表明它必须执行的动作。其编码与TTL动作的对应关系如表20所示:
过 程 字 节 值
动作
与INS字节值相同
所有余下的数据将要由TTL传送或者TTL准备接收所有的来自IC卡的数据。
与INS字节值的补码相同( )
下一个数据字节将由TTL传送或者TTL将准备接收来自IC卡的下一个数据字节。
‘60’
TTL 提供根据本条所定义的额外工作等待时间
‘61’
TTL必须等待另一个过程字节然后再以最大长度‘xx’向IC卡发送取应答(GET RESPONSE)命令头,其中‘xx’是第二个过程字节的值。
‘6C’
TTL必须等待另一个过程字节然后再以最大长度‘xx’向IC卡立即重发命令头,其中 ‘xx’是第二个过程字节的值。
表- 20 终端对过程字节的响应
在任何情况下,完成指定的动作后,TTL必须等待下一个过程字节或状态字节。
状态字节
状态字节向TTL表明IC卡对命令的处理已经完成。状态字节的意义与处理的命令有关。表21显示了TTL必须采取的动作和第一个状态字节的对应关系。
第一个状态字节的值
动作
‘6x’或‘9x’(除了 ‘60’, ‘61’, ‘6C’)-状态字节SW1
TTL必须等待另一个状态字节(状态字节SW2)
表- 21 终端对SW1的响应
接收到第二个状态字节后,TTL必须在应答APDU(R-APDU)中向TAL回送状态字节(及其它数据-参见),然后等待下一个C-APDU。
C-APDU的传输
采用T=O协议时,只包含送向IC卡的命令数据或只包含IC卡响应数据的C-APDU,可直接映射到C-TPDU(条中的情况2和情况3)。无数据且不要求回送数据的C-APDU,以及要求IC卡接收/发送数据(条中情况1和4)的C-APDU将通过中定义的T=0的C-TPDU传输规则进行传输。
T=0时的错误检测及纠错
在T=0协议中,错误检测及纠错是必须的,但不适用于复位应答过程。
若接收到校验不正确的字符,接收方必须在字符起始位的下降沿之后的±个etu内,向I/O发送持续1-2个etu的低电平信号,以表示有错误发生。
发送方必须在字符起始位下降沿脉冲发出后的11±个etu内,检测I/O的电平状态,此时若I/O为高电平状态,则表明字符已准确收到。
若发送方检测到错误,则必须在检出错误之后至少延迟2个etu,并重复发送一次有错误嫌疑的字符。发送方最多再重发三次,即总共五次(最初一次、第一次重复和然后的三次重复)。
如果最后一次重发未成功,终端必须在接收到最后一个无效字符的起始位的上升沿开始的(D x 960) 个etu内启动下电时序(如果它是接收方);或者在IC卡显示有校验错开始的(D x 960)个etu内启动下电时序(如果它是发送方)。
下图显示了字符重发的时序。
字符重发时序图
在等待过程字节或状态字节时,如果IC卡返回的字节的值未在节和节中定义,则终端必须在接收到的(无效)字符起始位下降沿开始的9,600个etu以内启动下电时序。
块传输协议T=1
T=1协议中在TAL和IC卡之间传送的命令、R-APDU和传输控制信息(例如确认信息)块组成。
以下定义了数据链路层的块帧结构、协议的特殊选项和协议操作(包括错误处理)。
块帧结构
字符帧采用中的定义。T=1协议下,无须逐个字符校验。块的结构如下(参见表22):
── 头域(必选)
── 数据域(可选)
── 尾域(必选)
头域
数 据 域
尾域
节点地址
(NAD)
协议控制字节
(PCB)
长度
(LEN)
APDU或控制
信息(INF)
错误校验码
(EDC)
1字节
1字节
1字节
0-254字节
1字节
表- 22 块帧结构
头域
头域由三个必选字节组成:
── 用于标识数据块的源地址和目的地址,以及提供VPP状态控制的节点地址。
── 控制数据传输的协议控制字节。
── 可选的数据域长度。
节点地址(NAD)
NAD第1至第3位表明块的源节点地址(SAD),而第5至第7位表明块的目的地址(DAD),第4位和第8位1) 不用,设定为0。
终端使用的节点地址是可选的,但支持T=1协议的IC卡应支持按本节所规定的节点地址方式。应遵守以下规则:
── 若不使用节点地址,终端发往IC卡的第一个数据块的SAD和DAD值均应设为0。
── 若使用节点地址,由终端发送到IC卡的第一数据块的SAD和DAD应设定为不同的值(其中之一可以是零)。
── 若使用节点地址,在卡片操作过程中,IC卡收到的第一个有效I块和S块中的NAD,用于建立起整个卡片操作过程中的终端和IC卡的节点地址,在同一过程中终端发送给IC卡的后续块应使用同一个NAD,如此建立的节点地址适用于所有类型的块。
── 在卡片操作期间,从IC卡发往终端的任何数据块都将使用在此过程中由终端向IC卡发出的第一个块时所建立起的节点地址。(注:由终端发往IC卡和由IC卡发往终端所使用的源地址和目标地址正好相反)
── 在卡片操作过程中,若IC卡接收到的数据块的NAD与交易开始时所建立的NAD不同,则IC卡应向交易开始时所建立的DAD回复一个R块。
协议控制字节
PCB表明了传输块类型,有以下三种类型:
── 传送APDU的信息块(I块);
── 用于传送确认(ACK或者NAK)的接收就绪块(R块);
── 用于交换控制信息的管理模块(S块)。
PCB的编码取决于其类型,见表23和表25所作的定义:
b8
0
b7
序列号
b6
链接(多个数据)
b5-b1
保留为将来使用(RFU)
表- 23 I块的PCB编码
b8
1
b7
0
b6
0
b5
序列号
b4-b1
0=容错
1=EDC或校验出错
2=其他错误
其他值保留为将来使用
表- 24 R块的PCB编码
b8
1
b7
1
b6
0=请求
1=应答
b5-b1
0=再同步请求
1=信息域大小请求
2=放弃请求
3=BWT扩展请求
4=Vpp错误1)
其他值保留为将来使用
表- 25 S块的PCB编码
长度
LEN指明块的INF部分的长度,取值范围从0到254。
注:本规范不支持LEN=0时的I块。
信息域
INF是有条件的,当出现在I块中时,它传送的是应用数据,当出现在S块中时,它传送的是控制信息。R块不会出现在INF中。
尾域
尾域包含所传送块的EDC,校验出错和/或EDC出错时,块是无效的。本规范仅支持LRC作为EDC的情况。LRC长度为一个字节,其值由以NAD开始到INF(如果存在的话)的全部字节作异或运算得到。
注:TCi(i>2)指明要使用的错误检测代码类型,IC卡在ATR中并不回送。因此LCR的正常缺省状态可用作EDC。
块编号
I块采用在某一位上模2数字编码的方式进行编号,IC卡和终端作为发送方分别处理各自的编号系统。复位应答后,发送方发送的第一个I块的编号为零,其后每传送一个I块,编号值增加1。当再同步后,发送方把编号值复位到零。
R块采用在某一位上模2数字编码的方式进行编号,当其在链接过程中,用来确认I块时,R块携带下一个期望的I块编号。当要求某块重发时,R块内携带的是已收到的I块编号。
S块不携带编号。
特殊选项
本条款定义了用于T=1传输协议的信息域大小和时序。
信息域大小
IFSC是指IC卡能收到的信息域的最大长度,其定义是:在复位应答期间,IC卡在TA3中回送的IFSI指明了IC卡能够容纳的ISFC的大小,IFSI取值范围是’10’到’FE’,对应的IFSC大小是16到254字节。因此IC卡能收到的最大数据块长度是(IFSC+3+1)字节,其中包括头域和尾域。复位应答期间建立起来的这个值在整个卡片操作过程中使用,或持续到由于IC卡向终端发送S块(IFS请求)而取得新的IFSC值为止。
终端报文域大小IFSD是指终端能够接收到数据块的最大长度,紧接在复位应答后的初始大小为254字节。该长度适用于整个卡片操作过程或者持续到由于终端向IC卡发送S块(IFS请求)而取得新的IFSC值为止。
T=1 协议的时段
终端发往IC卡的两个连续字符的起始位下降沿之间的最短时间间隔为11到42个etu,由复位应答回送的TC1值决定(见节和节)。如果TC1返回的值是N,IC卡必须能够正确解释终端发送的起始位下降沿最小间隔为( + N)etu的连续字符。
由IC卡发往终端的两个连续字符的起始位下降沿之间的最短时间间隔必须为11个etu。终端必须能够正确解释IC卡发送的起始位下降沿最小间隔为个etu的连续字符。
同一块中两个连续字符起始位下降沿之间的最大时间间隔(字符等待时间,CWT)不应超过(2CWI+11)个etu。其中CWI在节中规定,取值为0~5,所以CWT的取值范围是12到43个etu。接收方必须能够正确解释起始位下降沿与上一字节起始位下降沿最大间隔为(CWT + 4) etu 的字符。
终端发送给IC卡的最后一个字符的起始位下降沿与由IC卡发出的第一个字符起始位下降沿之间的最大时间间隔(块等待时间,BWT)不应超过{(2BWI×960)+11}个etu。在节中所规定的BWI的取值范围是0到4,所以BWT的取值范围是971到15,371个etu。
终端必须能够正确解释IC卡在BWT + (D x 960) 个etu内发送的块的第一个字节。
对终端或IC卡,最后一个接收到的字符的起始位下降沿和在相反方向发送的第一个字符起始位下降沿的最小时间间隔(块保护时间,BGT)必须为22etu。IC卡或终端必须能够正确解释和最后一个发送的字符的起始位下降沿间隔21etu以内接收到的字符。
注:通常,对于FI和DI不是1的情况,BWT采用以下公式计算:
BWT={[2BWI×960×372D/F]+11}etu
无错操作
协议规则的无错操作如下:
复位应答后,第一个数据块是由终端发往IC卡的,而且只能是一个PCB=‘C1’,IFSD=254(单字节INF域中指定的值)的S块(IFS请求)。卡片操作过程中,终端不能再发送S块(IFS请求)。
IC卡必须向终端返回S块(IFS应答),确认IFSD的改变。S块(IFS应答)的PCB值应为‘E1’,INF域应该和请求块相同。
若IC卡希望改变在复位应答后指定的IFSC的大小,则必须向终端发送一个S块(IFS请求),S块(IFS请求)的PCB应具有值C1以表明是一个改变IFSC的请求,INF域包含一个字节,其值表示所要求的新IFSC的字节数,该字节的取值范围从‘10’到‘FE’。终端必须向IC卡回送一个S块(IFS响应),确认卡片改变IFSC长度。其中S块(IFS响应)的PCB值应是‘E1’,且INF域与请求改变S块的INF域有相同的值。
在卡片操作过程中,只有本节中定义的块才能改变。在半双工传输协议下,终端和IC卡交替发送传输块。发送方完成块发送以后即转入接收状态。
当接收方所收到的字符数与LEN和EDC的值一致时,接收方取得发送权。
IC卡需要确认由终端传来的I块。确认在IC卡回送给终端的I块序列号中指明。若使用链接,则在R块的序列号中指明(链接的最后一个数据块除外)。
若响应中收到的I块序列号与前一个已收到的I块序列号不同,则发送方即可认为发送的非链接I块或链接I块的最后一块已被确认。若前面没有收到过I块,响应中的I块序列号应该是0。
接收到R块后,必须验证b5。接收方不必验证PCB的b4-b1。对b4-b1的可选验证不能与本规范的规定冲突。
在链接的情况下,如果在应答中发送的R块的序列号和响应的I块的序列号不同,则链接的I块(链中的最后一个I块除外)可以视为已经确认。
若IC卡需要比BWT更长的时间来处理已收到的I块,则必须发送一个等待时间扩展请求S块(WTX请求),其中的INF域包含有一个字节的二进制整数,其值为所请求的BWT值的倍数。终端必须发送一个INF中具有相同值的等待时间扩展请求S块(WTX响应),以表示对延时请求的确认。取得的时间(就是在S(WTX请求)块中请求,并且只在本次实例中替换BWT)从S块(WTX响应)的最后一个字符的起始位下降沿开始采用。在卡片响应结束后,ICC卡仍然使用原来的BWT作为允许的时间来处理I块。
S块总是配对使用,一个S请求块后总是跟随一个S响应块。
以上未规定同步失调的处理过程,见。
链接
当发送方需要传送的数据长度超过IFSC或IFSD所定义的字节数时,就要将其分成几个连续的I块。传送多个I块数据时,使用以下规定链接功能。
I块的链接由PCB的b6控制。b6的编码定义如下:
── b6=0,链的最后一块;
── b6=1,后面还有后续块。
根据中的规定,包含b6=1的任何I块都被一个R块确认。
终端发送的链中的最后块如果正确接收,则以I块确认;如果未正确接收,则以R块确认。IC发送的链的最后块如果未正确接收,则以R块确认;如果正确接收且还要处理另一条命令,则终端只能继续发送I块。
链接规则
TTL必须支持发送和接收块的链接。IC卡是否支持发送到终端的链接块是可选的。链接在一个时刻只能在同一个方向进行。其规则如下:
──当终端是接收方时,终端必须能够接收IC卡发送的每块长度≤IFSD字节的链接I块。
──当IC卡是接收方时,IC卡必须能够接收终端发送的除最后一块外每块长度LEN=IFSC的链接I块。最后一块的长度为1到IFSC(包括)。
──当IC卡是接受方时,IC卡必须用R块拒绝终端发送的长度>IFSC的I块。
──如果IC卡作为发送方链接发送到终端的块,则必须使每个发送I块的长度≤IFSD。
──当终端是发送方时,终端必须能够发送除最后一块外每块长度LEN=IFSC的链接I块。最后一块的长度为1到IFSC(包括)。
链接块的构造
C-APDU包含在I块的INF域中,并从TTL传送到IC卡(见)。如果一个C-APDU因太长而不能放在一个数据块中时,可通过如下的方法用几个链接块传送。
Block (1)
CLA INS P1 P2
Lc
Data Data
Block (2)
Data Data Data
Block (n)
Data Data
Le
如果由IC卡回送的数据和状态码因太长而不能放在一个块中,可以按照下述方法通过几个I块来处理。
Block (1)
Data Data Data
Block (2)
Data Data Data
Block (n)
Data Data
SW1 SW2
注:上面是针对命令情况4的举例,仅显示链接块的INF域。每个块还有一个头域和一个尾域。如果IC卡是发送方,全部链接块都应包含一个长度范围1到IFSD字节的INF域。如果终端是发送方,则包含一个长度范围1到IFSC字节的INF域。
T=1协议的错误检测和纠正
TTL应能检测以下错误:
── 传输错误(不正确的奇偶校验和/或EDC错误)或BWT超时。
注:在T=1情况下,不能执行字符重发。
── 同步失调(字符数目的超出或不足);
── 协议错误(违背协议规则);
── 终止链接块请求。
按照下述方法进行错误恢复:
TTL以下列的次序按照下述技术方法进行纠错:
── 块的重发;
──释放IC卡触点。
IC卡必须重发块,以恢复错误。
如果重发块,则重发的块必须和原发送块一致。
注:某些终端上,出错处理不完全由TTL承担。这种情况下,‘TTL’表示终端中可用的所有相关功能。
以下类型的块视为非法:
──包含传输错误的块,例如校验/EDC错误
──包含格式错误的块,例如发送方错误地组成了块(语法错误)
──在交换过程中出现了违背协议规则的块。如在I块的应答中收到了S(应答)块。
表明错误条件的R块不能视为非法块。
错误处理的协议规则
下述规则用于错误处理和更正。在任意一种情况下,当发送一个R块时,错误码的b4-b1是否验证是可选的,但不能引发和本规范定义的规则冲突的动作。
1. 当IC卡在复位应答后接收到的第一个块无效时,就应回送一个R块给TTL,并置b5=0和NAD=0。
2. 如果接收不到TTL发送给IC卡的块的应答,终端必须:
a) 启动下电序列。
或
如果未应答的块为I块、R块或S(应答)块,终端必须根据节的规定传送一个带有序列号的R块。
或
c) 如果未应答的块为S(请求)块,终端必须重新传送S(请求)块。
以上动作必须在未收到应答的块的最后一个字节的起始位下降沿开始的{BWT + (D x 960)}个etu到{BWT + (D x 4800)}个etu之间完成。如果使用了等待时间扩展,则必须在{BWT + (n x D x 960)}个etu到{BWT + (n x D x 4800)}个etu内完成。
如果终端在接收块的过程中没有收到期望的字符,终端必须:
启动下电时序
或
如果未应答的块为I块、R块或S(应答)块,终端必须根据节的规定传送一个带有序列号的R块。
或
如果未应答的块为S(请求)块,终端必须重新传送S(请求)块。
以上动作必须在最后一个接收到的字符的起始位下降沿开始的(CWT + 4)个etu到(CWT + 4,800)个etu之内完成。
如果在I块的应答中收到了非法块,发送方必须按节的规定传送带有序列号的R块。
如果在R块的应答中收到了非法块,发送方必须重发R块。
如果响应S块(…请求)的S(…响应)块没有收到,发送方必须重发一个S(…请求)块。
如果响应S(…响应)块的应答中收到无效块,发送方必须按节的规定传送带有序列号的R块。
如果TTL连续发送三个任何块,而没有得到有效的响应,则TTL必须在请求重发的块的最后一个字节的起始位下降沿开始的{BWT + (D x 14,400)}个etu内启动下电序列。
注:本规范中不要求再同步。如果终端需要支持再同步,它可以通过发送一个S(再同步)块,相关操作在ISO7816-3中定义。
如果IC卡最多连续发送两次而没有收到有效应答,则它必须保持在接收状态。
TTL不能发送S(放弃请求)块。如果TTL从IC卡收到一个S(放弃请求)块,TTL必须在S(放弃请求)块的最后一个字节的起始位下降沿开始的(D x 9,600)个etu内启动下电时序。
注:本规范不要求交易终止。如果因特殊原因要求IC卡或终端支持交易终止功能,它可以发出一个S(放弃请求)块。但要注意,如接收方不支持终止功能时,它只会收到一个无效的响应,卡片将按照上述规则结束卡片操作过程。如果终端收到来自IC卡的S(放弃请求)块,且支持终止功能,则它可以回送一个S(放弃响应)块,而不是主动结束卡片操作过程。
终端传输层
本节描述了在终端和IC卡之间传输的命令和响应APDU的机制。APDU是命令或响应报文。由于命令和响应报文都可以包含数据,TTL应能处理在中定义的命令的四种格式。C-APDU和R-APDU的组成在和中描述。
TAL传送C-APDU到TTL。在发送到IC卡之前,应将其变换成传输协议认可的形式。IC卡处理完命令后,以R-APDU的格式将数据(如果存在的话)和状态码回送给TTL。
T=0协议下APDU的传送
本条款描述了C-APDU和R-APDU的映射方式,TTL和IC卡之间的数据交换机制以及在命令情况2或4中如何使用GET RESPONSE命令取回IC卡的数据。
C-APDU和R-APDU的映射方式和数据交换
C-APDU到T=0命令头的映射取决于命令情况。将IC卡回送的数据(如果存在)和状态码映射到R-APDU的形式取决于回送数据的长度。
由IC卡回送的过程字节SW1 SW2=‘61xx’和SW1 SW2=‘6Cxx’用来控制IC卡和TTL之间的数据交换,它不会回送给TAL。过程字节SW1 SW2=‘61xx’或SW1 SW2=‘6Cxx’表示命令在IC卡中的处理没有完成。
注:因为某些特殊原因,TTL可能接收除‘61’和‘6C’以外的来自IC卡的其它过程字节。这些功能不在本规范定义的范围之内。
如果IC卡回送给TTL的状态码是SW1 SW2=‘9000’,则表示正常完成了命令的处理。TTL在接收到任何其它的状态(不包括过程字节‘61xx’和‘6Cxx’)时,都必须中断命令的处理(例如向TAL传送R-APDU,等待来自TAL的C-APDU)。(当是第四种形式的命令时,在向IC卡成功传输命令数据以后,如果收到警告字节(‘62xx’或‘63xx’)或应用相关的状态字节(‘9xxx’除‘9000’外),则TTL必须继续处理命令。)
以下描述的是将IC卡回送的数据和状态字节映射到R-APDU格式的方法,仅适用于IC卡已成功完成了命令处理或全部数据(如果存在)在过程字节‘61xx’和‘6Cxx’的控制下已被IC卡返回的情况。INS、 和‘60’过程字节的详细使用在此不作描述。
IC卡返回的状态字和最后一条收到的命令相关;当在情况2或情况4时,一个GET RESPONSE命令用来完成一条命令的处理,ICC卡在接收到GETRESPONSE命令后返回的任何状态字和GET RESPONSE命令相关,而与它要完成的情况2或情况4的命令无关。
情况1
C-APDU头映射到T=0命令头的前四个字节,T=0命令头的P3置为‘00’。
交换流程如下:
TTL发送T=0的命令头到IC卡;
IC卡收到命令头后,无论正常或非正常处理,IC卡都必须向TTL回送状态码。
(IC卡必须分析T=0命令头,判断是在处理情况1命令还是在处理请求最大长度数据的情况2命令。)
收到来自IC卡的状态字节以后,TTL必须中止该命令的处理。
TTL和IC卡交换的具体细节参见附录C的C1节。
命令处理结束后从IC卡返回到TTL的状态必须原封不动地映射到R-APDU的结尾。
情况2
C-APDU头映射到T=0命令头的前四个字节,长度字节‘Le’从C-APDU的条件体映射到T=0命令头的P3。
交换流程如下:
TTL发送T=0的命令头到IC卡。
IC卡收到命令头以后:
正常处理以后必须向TTL返回数据和状态。IC卡必须用状态字节‘6Cxx’(如果需要,亦可用‘61xx’)控制返回的数据。
或
在非正常处理后仅向TTL返回状态。
3. 接收到来自IC卡的数据(如果存在)和状态之后,TTL必须中止该命令的处理。
TTL和IC卡的交换细节,包括过程字节‘61xx’和‘6Cxx’的使用,请参考附录C的C2节。
命令处理完成后从IC卡返回TTL的数据(如果存在)和状态或IC卡返回的导致TTL终止命令处理的状态按以下规则与R-APDU映射:
返回的数据(如果存在)映射到R-APDU的条件体。如果没有数据返回,则R-APDU的条件体留空。
返回的状态原封不动地映射到R-APDU的结尾。
情况3
C-APDU头映射到T=0命令头的前四个字节,C-APDU条件体的长度字节‘Lc’映射到T=0命令头的P3。
交换流程如下:
TTL发送T=0的命令头到IC卡。
收到命令头后,如果IC卡:
回送一个过程字节,则TTL必须在此过程字节的控制下向IC卡发送C-APDU条件体的部分数据。
或
如果IC卡回送状态码,TTL必须中止命令处理过程。
如果处理过程没有在步骤2(b)中断,则IC卡必须在接收到C-APDU的条件体之后返回命令处理结束后的状态。
收到来自IC卡的状态码之后,TTL必须中止该命令的执行。
TTL和IC卡之间的交换细节,请参见附录C的C3节。
IC卡处理命令结束后返回到TTL的状态或导致TTL终止命令执行的状态原封不动地映射到R-APDU。
情况4
C-APDU头映射到T=0命令头的前四个字节,C-APDU条件体的长度字节‘Lc’映射到T=0命令头的P3。
交换流程如下:
TTL发送T=0命令头到IC卡。
接收到命令头以后,IC卡必须:
返回一个状态字节,TTL必须在此状态字节的控制下向IC卡发送C-APDU条件体的数据部分。
或
如果IC卡回送状态码,TTL将中止命令处理过程。
3. 如果处理过程在步骤2中没有中止,IC卡在接收到C-APDU的条件体之后必须:a) 在正常处理下,回送过程字节‘61xx’给TTL,请求TTL发出取应答(GET RESPONSE)命令从IC卡取回数据。
或
b)在非正常处理下,只向TTL返回状态。
4. 收到第3步返回的过程字节或状态后,如果IC卡:
a) 返回3(a)中的‘61xx’过程字节,TTL必须向IC卡发送P3小于或等于过程字节‘61xx’中的‘xx’的取应答(GET RESPONSE)命令头
或
b) 返回3(b)中的警告状态(‘62xx’或‘63xx’)或应用相关的警告状态(‘9xxx’但不包括‘9000’),TTL必须发送Le=‘00’的取应答(GET RESPONSE)命令。
或
返回3(b)中出现的但未在4(b)中描述的状态,TTL必须中止命令的处理。
5. 如果4(c)中没有中止处理,则必须按照节情况2的描述处理取应答命令。
TTL和IC卡的交换细节包括过程字节‘61xx’和‘6Cxx’的使用,请参考附录C的C4。
IC卡完成命令处理之后返回TTL的数据(如果存在)和状态或IC卡返回的导致TTL中止命令执行的状态,按以下规则与R-APDU映射:
返回的数据(如果存在)映射到R-APDU的条件体。如果无返回数据,则R-APDU的条件体留空。
整个情况4的命令处理过程中返回的第一个状态,包括可能使用到的取应答命令,原封不动地映射到R-APDU的结尾。
过程字节’61xx’和’6Cxx’的使用
由IC卡回送到TTL的过程字节’61xx’和’6Cxx’指明了TTL取回当前正在处理的命令请求数据的方式。在T=0协议下,这些过程字节仅仅用在命令情况2和4中。
过程字节’61xx’通知TTL发出GET RESPONSE命令到IC卡。GET RESPONSE命令头的P3置为≤’xx’。
过程字节’6Cxx’通知TTL立即重发前条命令,同时命令头置为P3=‘xx’。
命令情况2和4在无错处理过程中,使用过程字节的规定如下: 在发生错误时,IC卡回送错误或警告状态码而不是’61xx’或’6Cxx’。
命令情况2
如果IC卡收到一个情况2的命令头并且Le=‘00’或Le>Licc,则它必须返回
过程字节‘6C Licc’,要求TTL以P3=Licc立即重发命令头
或
b) 表明警告或错误条件(除SW1 SW2 = ‘9000’)的状态。
注:如果Le=‘00’且IC卡需要返回256个字节,则它必须按以下Le=Licc的规则处理。
如果IC卡收到情况2的命令头并且Le=Licc,它必须
在INS、 或‘60’及相关过程字节的控制下返回长度为Le(=Licc)的数据
或
返回状态字节‘61xx’,要求TTL发出最大长度为‘xx’的取应答命令。
或
c) 返回表明警告或错误条件的状态(SW1 SW2 = ‘9000’除外)。
如果IC卡收到情况2的命令头并且Le < Licc,它必须
返回过程字节‘61xx’, 要求TTL发送最大长度为‘xx’的取应答命令,然后在INS、 或‘60’的控制下返回长度为Le(=Licc)的数据,
或
返回过程字节‘6C Licc’要求TTL以P3=Licc立即重发命令头
或
返回表明警告或错误条件的状态(SW1 SW2 = ‘9000’除外)
3(b)不是IC卡对取应答命令的合法应答。
命令情况4
如果IC卡收到一个情况4的命令,处理完随C-APDU一同发送来的数据之后,它必须
返回过程字节‘61xx’,通知TTL按最大长度‘xx’发出取应答命令。
或
b) 返回表明警告或错误情况的状态码(SW1 SW2=‘9000’除外)。
此时发出的GET RESPONSE命令的处理方法参见中的描述。
GET RESPONSE命令
TTL发出GET RESPONSE命令,是为了从IC卡取得对应于命令情况2和4的C-APDU的Le字节的数据。GET RESPONSE仅适用于T=0协议类型。
命令报文的结构如下表26:
CLA
‘00’
INS
‘C0’
P1
‘00’
P2
‘00’
Le
预期数据的最大长度
表- 26 命令报文结构
正常处理结束后,IC卡回送状态码SW1 SW2=‘9000’和Licc字节的数据。
在错误情况发生时,错误状态码(SW1 SW2)的编码见表27:
SW1
SW2
含义
‘62’
‘81’
返回的部分数据可能已破坏
‘67’
‘00’
长度域错误
‘6A’
‘86’
P1 P2≠‘00’
‘6F’
‘00’
无准确诊断
表- 27 GET RESPONSE错误响应
T=1协议下APDU的传送
C-APDU从TAL传送到TTL,TTL将其不加变化地映射到C-APDU的一个I块的INF域中,然后把这个I块发送到IC卡。
IC卡在I块的INF域中向TTL回送响应数据(如果存在)和状态码。如果IC卡返回表明正常处理(‘61xx’)、一个警告(‘62xx’或‘63xx’),与应用相关(‘9xxx’)或‘9000’状态码,则它必须同时返回与命令处理相关的数据(如果有)。其它状态下不能返回数据。块的INF域的内容原封不动地映射到R-APDU,然后返回给TAL。
注:如果有必要,C-APDU和响应数据/状态码可以分成多个数据块的INF域的链接。
应用层
应用协议由TAL和TTL之间一组有序的数据交换组成,本节的后续部分定义了应用协议。
应用层交换的每一步由命令响应对组成,其中TAL通过TTL给IC卡发送命令,IC卡处理该命令后通过TTL返回一个响应给TAL。每一个特定的命令都与一个特定的响应相匹配。一个APDU就是一个命令报文或一个响应报文。
命令报文和响应报文都可以包含数据,传输协议通过TTL来管理四种命令情况的情况,见表28所示:
情况
命令数据
响应数据
1
无
无
2
无
有
3
有
无
4
有
有
表- 28 APDU中数据存在的情况
注:由于安全报文传送总有数据(至少是MAC)要送往IC卡,因此仅适用于命令情况3和4的情况。当使用安全报文传送时,情况1的命令就变为情况3,情况2的命令就变为情况4。
C-APDU
C-APDU包含一个必备的连续四字节的命令头,用CLA、INS、P1和P2表示,同时包括一个可变长度的条件体。
命令头定义如下:
── CLA:指令类型;除’FF’外可赋任何值。
── INS:指令类型的指令码。只有在低半字节为0,且高半字节既不是‘6’也不是’9’时,INS才有效。
── P1 P2:完成INS的参数字节。
注:每一个命令头的完整定义将在本规范第6篇中描述。
条件体定义如下:
── Lc占一个字节,定义了在C-APDU中发送数据的字节数。Lc的取值范围从1到255。
── 在C-APDU中将要发送的数据,字节数由Lc定义。
── Le占一个字节,指出R-APDU中期望返回的最大字节数。Le的取值范围从0到255;如果Le=0,期望返回数据的字节数的最大长度是256。
注:每个命令的条件体数据域的完整定义将在本规范的第6篇中描述。
可能的C-APDU结构的四种情况见表29:
情况
结 构
1
CLA INS P1 P2
2
CLA INS P1 P2 Le
3
CLA INS P1 P2 Lc Data
4
CLA INS P1 P2 Lc Data Le
表- 29 C-APDU的情况
R-APDU
R-APDU是一串字节,这一串字节由一个条件体以及必备的两字节状态码SW1 SW2组成。
条件体是一串数据字节,其最大长度在C-APDU中的Le中定义。
必备的状态码标明IC卡在处理完命令后的状态。
SW1 SW2的编码遵循下述规定:
── SW1的高半字节是’6’或’9’;
── 禁止SW1的值为’60’;
── SW1的值为’6C’时,应作为一个错误来处理;
── 命令正常结束时,SW1 SW2的取值为’9000’;
── 当SW1的高半字节为’9’,且低半字节不为’0’时,其含义依赖于相关的应用;
── 当SW1的高半字节为’6’,且低半字节不为’0’时,SW1的含义与应用无关。
SW1和SW2的其他值(在’6x’和’9x’范围内,除了上面说明的这些数值之外)所代表的含义将在本规范的第6篇中描述。
数据元和命令
IC卡中的每个应用都包括一系列信息项,在终端成功地完成应用选择后可以对这些信息进行访问(参见本规范应用选择部分)。
一个信息项称为一个数据元,数据元是信息的最小单位,它用名称、逻辑内容说明、格式及代码来标识。
文件
数据文件中数据元以记录方式或二进制方式存储,文件结构及引用方式由文件的用途决定。并将在下面的段落中加以描述。除目录文件外,数据文件的内容和布局在应用规范中说明,也可由发卡方定义。
文件结构
本规范的文件结构符合ISO/IEC7816-4。
本条款描述了符合本规范的应用文件结构,这些应用被定义为支付系统应用(PSA)。符合ISO/IEC 7816-4,但不符合本规范的其他应用也可以出现在IC卡上,并可以使用本规范中定义的命令进行操作。
IC 卡中PSA的路径可以通过明确选择支付系统环境(PSE)来激活。正如中所描述的,一个成功的PSE选择能够对目录结构进行访问。应用选择过程在本规范第7篇中描述。
从终端角度来看,PSA相关的PSE文件呈一种可通过目录结构访问的树形结构。树的每一分支是一个应用数据文件(ADF)。一个ADF是一个或多个应用基本文件(AEF)的入口点。一个ADF及其相关数据文件处于树的同一分支上。
应用数据文件(ADF)
ADF的树形结构:
── 能够将数据文件与应用联系起来;
── 确保应用之间的独立性;
── 可以通过应用选择实现对其逻辑结构的访问。
从终端角度看,ADF是一个只包含其文件控制信息(FCI)中纯数据对象的文件,参见表65。
应用基本文件(AEF)
一个AEF包含有一个或多个原始基本编码规则──标签、长度、值(BER-TLV)数据对象。但在选择了某一应用后,AEF只能通过其短文件标识符(SFI)进行查询。
ISO/IEC7816-4文件结构中文件的映象
ISO/IEC7816-4中使用下列映象表:
── 包含一个FCI的专用文件(DF)(ISO/IEC 7816-4中定义)被映象为ADF,可以通过它来访问EF和DF。在卡中处于最高层的DF称为主控文件(MF)。
── 包含一组记录中的基本文件(EF)(ISO/IEC 7816-4中定义)被映象为AEF,EF不能作为进入另一个不同DF文件的入口点。
在此规范中,DF中相连的EF的访问是透明的。
目录结构
IC卡支持用于支付系统环境(PSE)应用列表的目录结构,PSE由发卡方通过目录选择。目录结构包括一个必备的支付系统目录文件(DIR文件)和一些可选的由目录数据文件(DDF)引用的附加目录。
目录结构采用以其应用标识符(AID)的方式进入一个应用,或以AID的前N个字节作为DDF名的方式进入一组应用。
在PSE选择的响应报文中对DIR文件进行编码(参见SELECT命令)。
DIR文件是一个AEF(换句话说,是一个记录结构的EF),它包含ISO/IEC7816-5中定义的数据对象:
── 本规范第7篇中描述的一个或多个应用模板(标签为’61’);
── 可能在目录自由模板中出现的其他数据对象(标签为’73’),此模板中包含的数据对象不在本规范中定义。
在IC卡中支付系统外的其他目录是可选的,且不限制它们存在的数量。其中每个目录的位置由包括在每个DDF中的FCI的目录SFI数据对象指定。
卡片结构示例
图8给出了一个卡片内部结构示例,该卡片支持电子存折、电子钱包、Easy entry以及两个没有定义的发卡方应用。图8仅仅是一个例子。可能有其他不限定卡中应用数目的卡片内部结构。
图- 8 卡片内部结构示例
文件查询
依照其类型,文件可以通过文件名或SFI进行查询。
通过文件名查询
卡中的任何ADF或DDF可通过其DF名查询,ADF的DF名对应其AID,每个DF名在给定的卡中应是唯一的。
通过SFI查询
SFI用于选择AEF。对给定应用中的任何AEF,可以通过SFI(5位代码,取值范围从1~30)查询。SFI的编码在每个用到它的命令中描述。
在一个给定的应用中SFI应是唯一的。专用SFI的使用由应用决定。
命令
命令APDU格式
命令APDU由4字节长的必备头后跟一个可变长的条件体组成,见图9:
CLA
INS
P1
P2
Lc
Data
Le
| (必备头( | (条件体( |
图- 9 命令APDU结构
命令APDU中发送的数据字节数用Lc(命令数据域的长度)表示。
响应APDU中期望返回的数据字节数用Le(期望数据长度)表示。当Le存在且值为0时,表示需要最大字节数(256字节)。在命令报文需要时,Le始终被设为’00’。
命令APDU报文的内容见表30:
代码
描 述
长度
CLA
命令类别
1
INS
指令代码
1
P1
指令参数1
1
P2
指令参数2
1
Lc
命令数据域中存在的字节数
0或1
Data
命令发送的数据位串(=Lc)
可变
Le
响应数据域中期望的最大数据字节数
0或1
表- 30 命令APDU的内容
响应APDU格式
响应APDU格式由一个变长的条件体和后随两字节长的必备尾组成,见图10:
Data
SW1
SW2
| (条件体( | (尾( |
图- 10 响应APDU的结构
代码
描 述
长度
Data
响应中接收的数据位串(=Lr)
变长
SW1
命令处理状态
1
SW2
命令处理限定
1
表- 31 响应APDU的内容
本节描述了以下的命令-响应APDU:
── APPLICATION BLOCK (应用锁定)
── APPLICATION UNBLOCK (应用解锁)
── CARD BLOCK (卡片锁定)
── EXTERNAL AUTHENTICATION (外部认证)
── GET RESPONSE (取响应)
── GET CHALLENGE (产生随机数)
── INTERNAL AUTHENTICATION (内部认证)
── PIN CHANGE/UNBLOCK (个人密码修改/解锁)
── READ BINARY (读二进制)
── READ RECORD (读记录)
── SELECT (选择)
── UPDATE BINARY (修改二进制)
── UPDATE RECORD (修改记录)
── VERIFY (校验)
如果在应用规范使用了本节中定义的命令,执行该命令所需的附加信息在《中国金融集成电路(IC)卡规范》第2部分:应用规范中提供。
APPLICATION BLOCK 命令
定义和范围
APPLICATION BLOCK命令使当前选择的应用失效。
当APPLICATION BLOCK命令成功地完成应用临时锁定后,用SELECT命令选择已临时锁定的应用,将回送状态码“不支持此功能”(SW1 SW2=’6A81’)。同时回送FCI(对于T=0卡片,需要用GET RESPONSE 指令取回)。
当APPLICATION BLOCK 命令成功完成应用永久锁定后,此后执行所有命令,卡片将回送状态码“应用永久锁定”(SW1 SW2 = ‘9303’)。
对其他命令的影响根据不同应用而定。
命令报文
APPLICATION BLOCK命令报文编码见表32:
代码
值
CLA
‘84’
INS
‘1E’
P1
‘00’,其他值保留为将来使用
P2
‘00’或’01’
Lc
数据字节数
Data
报文鉴别代码(MAC)数据元;根据本规范第8篇中的规定进行编码
Le
不存在
表- 32 APPLICATION BLOCK命令报文
P2=’00’:此命令执行成功后可锁定应用,但该应用可以用APPLICATION UNBLOCK命令解锁。
P2=’01’:此命令执行成功后将永久锁定应用。
命令报文数据域
命令报文数据域包括根据本规范第8篇中的规定进行编码的报文鉴别码(MAC)数据元。
响应报文数据域
响应报文数据域不存在。
响应报文状态码
无论应用是否已经失效,此命令执行成功的状态码是’9000’。
IC卡可能回送的警告状态码如表33所示:
SW1
SW2
含 义
‘62’
‘00’
无信息提供
‘62’
‘81’
回送数据可能出错
‘62’
‘83’
选择文件无效
‘6A’
‘81’
不支持此功能
‘90’
‘03’
应用永久锁定
表- 33 APPLICATION BLOCK警告状态
IC卡可能回送的错误状态码如表34所示:
SW1
SW2
含 义
‘64’
‘00’
状态标志位未变
‘65’
‘81’
内存失败
‘67’
‘00’
Lc长度错误
‘69’
‘82’
不满足安全状态
‘69’
‘84’
引用数据无效
‘69’
‘87’
安全报文数据项丢失
‘69’
‘88’
安全报文数据项不正确
‘6A’
‘86’
参数P1 P2不正确
‘6A’
‘88’
未找到引用数据
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
表- 34 APPLICATION BLOCK错误状态
APPLICATION UNBLOCK 命令
定义和范围
APPLICATION UNBLOCK命令用于恢复当前应用。
当APPLICATION UNBLOCK命令成功地完成后,由APPLICATION BLOCK命令产生的对应用命令响应的限制将被取消。
命令报文
APPLICATION UNBLOCK命令报文编码见表35:
代码
值
CLA
‘84’
INS
‘18’
P1
‘00’,其他值保留为将来使用
P2
‘00’,其他值保留为将来使用
Lc
数据字节数
Data
报文鉴别代码(MAC)数据元;根据本规范第8篇中的规定进行编码
Le
不存在
表- 35 APPLICATION UNBLOCK命令报文
命令报文数据域
命令报文数据域的内容包括根据本规范第8篇中的规定进行编码的报文鉴别代码(MAC)数据元。
响应报文数据域
响应报文数据域不存在。
响应报文状态码
当应用被临时锁定时,此命令执行成功的状态码是’9000’。
当应用未被临时锁定,此命令执行返回的状态码是使用条件不满足(SW1 SW2 = ‘6985’)。
IC卡可能回送的错误状态码如表36所示:
SW1
SW2
含 义
‘64’
‘00’
标志状态位未变
‘65’
‘81’
内存失败
‘67’
‘00’
Lc错误
‘69’
‘82’
不满足安全状态
‘69’
‘84’
未取随机数
‘69’
‘85’
使用条件不满足
‘69’
‘87’
安全报文数据项丢失
‘69’
‘88’
安全报文数据项不正确
‘6A’
‘82’
文件未找到
‘6A’
‘86’
P1,P2错误
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
‘93’
‘03’
应用已被永久锁定
表- 36 APPLICATION UNBLOCK错误状态
CARD BLOCK 命令
定义和范围
CARD BLOCK命令使卡中所有应用永久失效。
当CARD BLOCK命令成功地完成后,所有后续的命令都将回送状态码“不支持此功能”(SW1 SW2=’6A81’),且不执行任何其他操作。
命令报文
CARD BLOCK命令报文编码见表37:
代码
值
CLA
‘84’
INS
‘16’
P1
‘00’,其他值保留为将来使用
P2
‘00’,其他值保留为将来使用
Lc
数据字节数
Data
报文鉴别代码(MAC)数据元;根据本规范第8篇中的规定进行编码
Le
不存在
表- 37 CARD BLOCK命令报文
命令报文数据域
命令报文数据域包括根据本规范第8篇中的规定进行编码的报文鉴别代码(MAC) 数据元。
响应报文数据域
响应报文数据域不存在。
响应报文状态码
此命令执行成功的状态码是’9000’。
IC卡可能回送的错误状态码如表38所示:
SW1
SW2
含 义
‘64’
‘00’
标志状态位没变
‘65’
‘81’
内存失败
‘67’
‘00’
Lc错误
‘69’
‘87’
安全报文数据项丢失
‘69’
‘88’
安全报文数据项不正确
‘6A’
‘86’
P1,P2错误
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
表- 38 CARD BLOCK错误状态
EXTERNAL AUTHENTICATION 命令
定义和范围
EXTERNAL AUTHENTICATION命令要求IC卡中的应用验证密码。
IC卡的响应包括命令处理状态的回送。
命令报文
EXTERNAL AUTHENTICATION命令报文编码见表39:
代码
值
CLA
‘00’
INS
‘82’
P1
‘00’
P2
‘00’
Lc
8-16
Data
发卡方认证数据
Le
不存在
表- 39 EXTERNAL AUTHENTICATION命令报文
EXTERNAL AUTHENTICATION命令使用的算法参考值(P1)编码为’00’表示无信息。算法参考值在命令发出之前是已知的,或者在数据域中提供。
命令报文数据域
命令报文数据域中包含8-16字节的数据:
── 前8个必备型字节包含密码;
── 可选的1-8个附加字节是专用的信息。
响应报文数据域
响应报文数据域不存在。
响应报文状态码
此命令执行成功的状态码是’9000’。
IC卡可能回送的警告状态码如表40所示:
SW1
SW2
含 义
‘63’
‘00’
认证失败
表- 40 EXTERNAL AUTHENTICATION警告状态
IC卡可能回送的错误状态码如表41所示:
SW1
SW2
含 义
‘67’
‘00’
Lc不正确
‘69’
‘83’
认证方法锁定
‘6A’
‘86’
参数P1 P2不正确
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
表- 41 EXTERNAL AUTHENTICATION错误状态
GET CHALLENGE 命令
定义和范围
GET CHALLENGE命令请求一个用于安全相关过程(例如:安全报文)的随机数。
该随机数只能用于下一条指令,无论下一条指令是否使用了该随机数,该随机数都将立即失效。
命令报文
GET CHALLENGE命令报文编码见表42:
代码
值
CLA
‘00’
INS
‘84’
P1
‘00’
P2
‘00’
Lc
不存在
Data
不存在
Le
‘04’ 或’08’
表- 42 GET CHALLENGE命令报文
命令报文数据域
命令报文数据域不存在。
响应报文数据域
响应报文数据域包括随机数,长度为4字节或8字节。
响应报文状态码
此命令执行成功的状态码是’9000’。
IC卡可能回送的错误状态码如表43所示:
SW1
SW2
含 义
‘6A’
‘81’
不支持此功能
‘6A’
‘86’
参数P1 P2不正确
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
表- 43 GET CHALLENGE错误状态
GET RESPONSE 命令
定义和范围
该指令只用于T=0协议卡片。
当APDU不能用现有协议传输时,GET RESPONSE命令提供了一种从卡片向接口设备传送APDU(或APDU的一部分)的传输方法。
命令报文
GET RESPONSE命令报文编码见表44:
代码
值
CLA
‘00’
INS
‘C0’
P1
‘00’
P2
‘00’
Lc
不存在
Data
不存在
Le
响应的期望数据最大长度
表- 44 GET RESPONSE命令报文
命令报文数据域
命令报文数据域不存在。
响应报文数据域
响应报文数据域的长度由Le的值决定。
如果Le的值为零,在附加数据有效时,卡片必须回送状态码’6CXX’,否则回送状态码’6F00’。
响应报文状态码
此命令执行成功的状态码是’9000’。
表45列出正常处理情况:
SW1
SW2
含 义
‘61’
‘XX’
正常处理
‘XX’表示可以通过后续GET RESPONSE命令得到的额外数据长度
表- 45 GET RESPONSE命令报文
IC卡可能回送的警告状态码如表46所示:
SW1
SW2
含 义
‘62’
‘81’
回送的数据可能有错
表- 46 GET RESPONSE警告状态
IC卡可能回送的错误状态码如表47所示:
SW1
SW2
含 义
‘67’
‘00’
长度错误(Le 不正确)
‘6A’
‘86’
参数P1 P2不正确
‘6C’
‘XX’
长度错误(Le 不正确,’XX’表示实际长度)
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
‘6F’
‘00’
数据无效
表- 47 GET RESPONSE错误状态
INTERNAL AUTHENTICATION 命令
定义和范围
INTERNAL AUTHENTICATION命令提供了利用接口设备发来的随机数和自身存储的相关密钥进行数据认证的功能。
命令报文
INTERNAL AUTHENTICATION命令报文编码见表48:
代码
值
CLA
‘00’
INS
‘88’
P1
‘00’
P2
‘00’
Lc
认证数据的长度
Data
认证数据
Le
‘00’
表- 48 INTERNAL AUTHENTICATION命令报文
INTERNAL AUTHENTICATION命令的参数P1为’00’时的含义是无信息。P1的值可事先得到,也可以在数据域中提供。
INTERNAL AUTHENTICATION命令的参数P2为’00’时的含义是无信息。P2的值可事先得到,也可以在数据域中提供。
命令报文数据域
命令报文数据域的内容是应用专用的认证数据。
响应报文数据域
响应报文数据域内容是相关认证数据,其格式和定义见《中国金融集成电路(IC)卡规范》第2部分:应用规范。
响应报文状态码
此命令执行成功的状态码是’9000’。
IC卡可能回送的警告状态码如表49所示:
SW1
SW2
含 义
‘62’
‘81’
回送的数据可能有错
表- 49 INTERNAL AUTHENTICATION警告状态
IC卡可能回送的错误状态码如表50所示:
SW1
SW2
含 义
‘64’
‘00’
标志状态位未变
‘67’
‘00’
Lc域不存在
‘68’
‘82’
不支持安全报文
‘69’
‘85’
不满足使用条件
‘6A’
‘80’
数据域参数不正确
‘6A’
‘86’
参数P1 P2不正确
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
表- 50 INTERNAL AUTHENTICATION错误状态
PIN UNBLOCK 命令
定义和范围
PIN UNBLOCK命令为发卡方提供了解锁个人密码的功能。
当PIN UNBLOCK命令成功完成后,卡将执行以下功能:
── 重置个人密码尝试计数器的值;
命令中个人密码的传递采用加密方式。
命令报文
PIN UNBLOCK命令报文编码见表51:
代码
值
CLA
‘84’;根据本规范第8篇中的规定进行编码
INS
‘24’
P1
‘00’
P2
‘00’
Lc
数据字节数
Data
加密的个人密码数据元和报文鉴别代码(MAC)数据元;根据本规范第8篇中的规定进行编码
Le
不存在
表- 51 PIN UNBLOCK命令报文
P2=’00’,表示解锁个人密码。此时应重置尝试计数器,但不更改个人密码。
当P2=’00’时,Lc应包括MAC数据元的长度。
命令报文数据域
命令报文数据域中个人密码数据元(如果存在)和其后的MAC数据元组成。个人密码和MAC数据元根据本规范第8篇中的规定进行编码。
响应报文数据域
响应报文数据域不存在。
响应报文状态码
此命令执行成功的状态码是’9000’。
IC卡可能回送的警告状态码如表52所示:
SW1
SW2
含 义
‘62’
‘00’
无信息提供
‘62’
‘81’
数据或能出错
表- 52 PIN UNBLOCK警告状态
IC卡可能回送的错误状态码如表53所示:
SW1
SW2
含 义
‘64’
‘00’
标志状态位没变
‘65’
‘81’
内存失败
‘69’
‘82’
不满足安全状态
‘69’
‘84’
引用数据无效
‘69’
‘85’
使用条件不满足(PIN未锁定)
‘69’
‘87’
安全报文数据项丢失
‘69’
‘88’
安全报文数据项不正确
‘6A’
‘86’
参数P1 P2不正确
‘6A’
‘88’
未找到引用数据
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
‘93’
‘03’
应用被永久锁定
表- 53 PIN UNBLOCK错误状态
READ BINARY 命令
定义和范围
READ BINARY命令用于读取二进制文件的内容(或部分内容)。
命令报文
READ BINARY命令报文编码见表54:
代码
值
CLA
‘00’或’04’
INS
‘B0’
P1
见表54
P2
从文件中读取的第一个字节的偏移地址
Lc
不存在;(CLA=’04’时除外)
Data
不存在;(CLA=’04’时,应包括MAC)
Le
‘00’
表- 54 READ BINARY命令报文
表55定义了命令报文中的引用控制参数:
b8
b7
b6
b5
b4
b3
b2
b1
含 义
X
1
读取模式:
-用SFI方式
0
0
RFU(如果b8=1)
X
X
X
X
X
SFI(取值范围21-30)
表- 55 READ BINARY命令引用控制参数
命令报文数据域
一般情况下,命令报文数据域不存在。当使用安全报文时,命令报文数据域中应包含MAC。MAC的计算方法和长度由应用决定。
响应报文数据域
当Le的值为零时,只要文件的最大长度在256(短长度)或65536(扩展长度)之内,则其全部字节将被读出。
响应报文状态码
此命令执行成功的状态码是’9000’。
IC卡可能回送的警告状态码如表56所示:
SW1
SW2
含 义
‘62’
‘81’
部分回送的数据可能有错
‘62’
‘82’
文件长度(Le
表- 56 READ BINARY警告状态
IC卡可能回送的错误状态码如表57所示:
SW1
SW2
含 义
‘67’
‘00’
长度错误(Lc域为空)
‘69’
‘81’
命令与文件结构不相容
‘69’
‘82’
不满足安全状态
‘69’
‘86’
不满足命令执行的条件(非当前EF)
‘6A’
‘81’
不支持此功能
‘6A’
‘82’
未找到文件
‘6A’
‘86’
P1,P2不正确
‘6B’
‘00’
参数错误(偏移地址超出了EF)
‘6C’
‘XX’
长度错误(Le错误;’XX’为实际长度)
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
表- 57 READ BINARY错误状态
READ RECORD 命令
定义和范围
READ RECORD命令用于读取记录文件的内容。
IC卡的响应由回送记录组成。
命令报文
READ RECORD命令报文编码见表58:
代码
值
CLA
‘00’或’04’
INS
‘B2’
P1
记录的个数
P2
引用控制参数(见表58)
Lc
不存在(CLA=’04’时除外)
Data
不存在(CLA=’04’时除外)
Le
‘00’
表- 58 READ RECORD命令报文
表59定义了命令报文中的引用控制参数:
b8
b7
b6
b5
b4
b3
b2
b1
含 义
X
X
X
X
X
SFI
1
0
0
P1为记录的个数
表- 59 READ RECORD命令引用控制参数
命令报文数据域
当无安全报文使用时,命令报文数据域不存在。使用安全报文时,命令报文的数据域中应包含MAC。MAC的计算方法和长度由应用决定。
响应报文数据域
所有执行成功的READ RECORD命令的响应报文数据域由读取的记录组成。
响应报文状态码
此命令执行成功的状态码是’9000’。
IC卡可能回送的警告状态码如表60所示:
SW1
SW2
含 义
‘62’
‘81’
回送的数据可能有错
表- 60 READ RECORD警告状态
IC卡可能回送的错误状态码如表61所示:
SW1
SW2
含 义
‘64’
‘00’
标志状态位没变
‘67’
‘00’
长度错误(Lc域不存在)
‘69’
‘81’
命令与文件结构不相容
‘6A’
‘81’
不支持此功能
‘6A’
‘82’
未找到文件
‘6A’
‘83’
未找到记录
‘6A’
‘86’
P1,P2不正确
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
表- 61 READ RECORD错误状态
SELECT 命令
定义和范围
SELECT命令通过文件名或AID来选择IC卡中的PSE、DDF或ADF。应用选择在本规范的第7篇中描述。
命令执行成功后,PSE、DDF或ADF的路径被设定。
应用到AEF的后续命令将采用SFI方式联系到所选定的PSE、DDF或ADF。
从IC卡的响应报文应由回送FCI组成。
命令报文
SELECT命令报文编码见表62:
代码
值
CLA
‘00’
INS
‘A4’
P1
引用控制参数(见表62)
P2
‘00’第一个或仅有一个
‘02’下一个
Lc
‘05’-’10’
Data
文件名
Le
‘00’
表- 62 SELECT命令报文
表63定义了命令报文中的引用控制参数:
b8
b7
b6
b5
b4
b3
b2
b1
含 义
0
0
0
0
0
1
通过文件名选择
0
0
表- 63 SELECT命令引用控制参数
命令报文数据域
命令报文数据域应包括所选择的PSE名、DF名或AID。
响应报文数据域
响应报文中数据域应包括所选择的PSE、DDF或ADF的FCI。表63到表65规定了此定义了所用的标志。本规范不规定FCI中回送的附加标志。
表64定义了成功选择PSE后回送的FCI:
标 志
值
存在方式
‘6F’
FCI模板
M
‘84’
DF名
M
‘A5’
FCI专用数据
M
‘88’
目录基本文件的SFI
M
表- 64 SELECT PSE的响应报文(FCI)
表65定义了成功选择DDF后回送的FCI:
标 志
值
存在方式
‘6F’
FCI模板
M
‘84’
DF名
M
‘A5’
FCI专用数据
M
‘88’
目录基本文件的SFI
M
表- 65 SELECT DDF的响应报文(FCI)
表66定义了成功选择ADF后回送的FCI:
标 志
值
存在方式
‘6F’
FCI模板
M
‘84’
DF名
M
‘A5’
FCI专用数据
M
‘9F0C’
发卡方自定数据的FCI
O
表- 66 SELECT ADF的响应报文(FCI)
表67定义了ADF回送的‘A5’中包含的数据,其中必须包含标签为’9F08’的应用版本号,其数值由全国金融标准化技术委员会负责定义和维护。
‘A5’
FCI数据专用模板
M
‘50’
应用标签
O
‘87’
应用优先指示符
O
‘9F08’
应用版本号
M
‘9F12’
应用优先名称
O
表- 67 SELECT ADF的应答报文中的FCI数据专用模板
响应报文状态码
此命令执行成功的状态码是’9000’。
IC卡可能回送的警告状态码如表68所示:
SW1
SW2
含 义
‘62’
‘83’
选择的文件无效
‘62’
‘84’
FCI格式与P2指定的不符
表- 68 SELECT警告状态
IC卡可能回送的错误状态码如表69所示:
SW1
SW2
含 义
‘64’
‘00’
标志状态位没变
‘67’
‘00’
P1 P2与Lc不一致
‘6A’
‘81’
不支持此功能
‘6A’
‘82’
未找到文件
‘6A’
‘86’
参数P1 P2不正确
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
‘93’
‘03’
应用永久锁定
表- 69 SELECT错误状态
注:SW1 SW2=’6A82’用于表示当卡支持部分文件名选择时,没有与此部分文件名相匹配的文件。
UPDATE BINARY 命令
定义和范围
UPDATE BINARY命令报文使用命令APDU中给定的数据修改EF文件中已有的数据。
命令报文
UPDATE BINARY命令报文编码见表70:
代码
值
CLA
‘00’或‘04’
INS
‘D6’
P1
见表69
P2
要修改的第一个字节的偏移地址
Lc
后续数据域的长度
Data
修改用的数据+报文鉴别代码(MAC)数据元(4字节)
Le
不存在
表- 70 UPDATE BINARY命令报文
CLA = ‘00’ 不需要安全报文。
CLA = ‘04’ 需要安全报文。
表71定义了命令报文中的引用控制参数:
b8
b7
b6
b5
b4
b3
b2
b1
含 义
X
1
读取模式:
-用SFI方式
0
0
RFU(如果b8=1)
X
X
X
X
X
SFI(取值范围21-30)
表- 71 UPDATE BINARY命令引用控制参数
命令报文数据域
命令报文数据域:包括更新原有数据的新数据。
报文鉴别代码(MAC)数据元:4字节
响应报文数据域
响应报文数据域不存在。
响应报文状态码
此命令执行成功的状态码是’9000’。
IC卡可能回送的警告状态码如表72所示:
SW1
SW2
含 义
‘63’
‘CX’
使用内部重试程序更新成功
X=’0’表示不提供计数器
X(’0’表示重试次数
表- 72 UPDATE BINARY警告状态
IC卡可能回送的错误状态码如表73所示:
SW1
SW2
含 义
‘65’
‘81’
内存失败(修改失败)
‘67’
‘00’
长度错误(Lc域为空)
‘69’
‘81’
命令与文件结构不相容
‘69’
‘82’
不满足安全状态
‘69’
‘84’
引用数据无效
‘69’
‘86’
不满足命令执行的条件(不是当前的EF)
‘6A’
‘81’
不支持此功能
‘6A’
‘82’
未找到文件
‘6A’
‘86’
P1,P2参数错误
‘6B’
‘00’
参数错误(偏移地址超出了EF)
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
‘93’
‘03’
应用永久锁定
表- 73 UPDATE BINARY错误状态
UPDATE RECORD 命令
定义和范围
UPDATE RECORD 命令报文用命令APDU中给定的数据更改指定的记录。
在使用当前记录地址时,该命令将在修改记录成功后重新设定记录指针。
命令报文
UPDATE RECORD 命令报文编码见表74:
代码
值
CLA
‘00’ 或‘04’
INS
‘DC’
P1
P1=‘00’表示当前记录
P1(‘00’指定的记录号
P2
见表73
Lc
后续数据域的长度
Data
更新原有记录的新记录+报文鉴别代码(MAC)数据元(4字节)
Le
不存在
表- 74 UPDATE RECORD 命令报文
CLA = ‘00’ 不需要安全报文。
CLA = ‘04’ 需要安全报文。
表75定义了命令报文中的引用控制参数:
b8
b7
b6
b5
b4
b3
b2
b1
含 义
X
X
X
X
X
SFI
0
0
0
第一个记录
0
0
1
最后一个记录
0
1
0
下一个记录
0
1
1
上一个记录
1
0
0
记录号在P1中给出
其余值
RFU
表- 75 UPDATE RECORD 命令引用控制参数
命令报文数据域
命令报文数据域由更新原有记录的新记录和报文鉴别代码(MAC)数据元(4字节)组成。
响应报文数据域
响应报文数据域不存在。
响应报文状态码
此命令执行成功的状态码是’9000’。
IC卡可能回送的警告状态码如表76所示:
SW1
SW2
含 义
‘63’
‘CX’
使用内部重试程序更新成功
X=’0’表示不提供计数器
X(’0’表示重试次数
表- 76 UPDATE RECORD 警告状态
IC卡可能回送的错误状态码如表77所示:
SW1
SW2
含 义
‘65’
‘81’
内存失败(修改失败)
‘67’
‘00’
长度错误(Lc域为空)
‘69’
‘81’
命令与文件结构不相容
‘69’
‘82’
不满足安全状态
‘69’
‘86’
不满足命令执行的条件(不是当前的EF)
‘6A’
‘81’
不支持此功能
‘6A’
‘82’
未找到文件
‘6A’
‘83’
未找到记录
‘6A’
‘84’
文件中存储空间不够
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
表- 77 UPDATE RECORD 错误状态
VERIFY 命令
定义和范围
VERIFY命令用于校验命令数据域中的个人密码的正确性。
如PIN文件位于某一应用下,当此应用被锁定时,禁止校验PIN;如PIN文件位于MF下,当应用被锁定后可以执行校验PIN命令。
命令报文
VERIFY命令报文编码见表78:
代码
值
CLA
‘00’
INS
‘20’
P1
‘00’
P2
‘00’
Lc
可变
Data
外部输入的个人密码
Le
不存在
表- 78 VERIFY命令报文
P2=’00’表示无特殊限定符被使用。在IC卡上,VERIFY命令在处理过程中应明确知道如何去寻找个人密码。
命令报文数据域
命令报文数据域由持卡者输入的个人密码组成。
响应报文数据域
响应报文数据域不存在。
响应报文状态码
此命令执行成功的状态码是’9000’。
当前的应用选择中,命令数据域中外部输入的个人密码与卡中存放的个人密码校验失败时,IC卡将回送SW2=’Cx’,’x’表示个人密码允许重试的次数;当卡回送’C0’时,表示不能重试个人密码。此时再使用VERIFY命令时,将回送失败状态码SW1 SW2=’6983’。
IC卡可能回送的警告状态码如表79所示:
SW1
SW2
含 义
‘63’
‘Cx ‘
校验失败,’x’表示允许重试的次数
表- 79 VERIFY警告状态
IC卡可能回送的错误状态码如表80所示:
SW1
SW2
含 义
‘64’
‘00’
标志状态位没变
‘69’
‘83’
认证方法(个人密码)锁定
‘69’
‘84’
引用数据无效
‘6A’
‘86’
参数P1 P2不正确
‘6A’
‘88’
未找到引用数据
‘6D’
‘00’
INS不支持或错误
‘6E’
‘00’
CLA不支持或错误
表- 80 VERIFY错误状态
应用选择
本章从卡片和终端两个角度描述了应用选择的过程。一方面描述了该过程所需的卡片数据和文件的逻辑结构,另一方面描述了适应这种卡片逻辑结构的终端逻辑。
本部分等同采用EMV’96的第3部分内容。
终端按本章所描述的应用选择过程,根据这里所定义的协议使用IC卡上的数据来决定选择哪种支付应用进行交易,其过程分两个步骤:
── 建立卡与终端两者共同支持的应用列表。
── 在步骤1生成的应用列表中选择一个将要运行的应用。
本章描述了为完成正确的应用选择所需要卡上的必要的信息以及两个终端选择算法。其他能够实现同样结果的终端选择算法可用来代替本章描述的算法。
应用选择通常是最先执行的应用功能。
一种支付系统应用包括以下内容:
── IC卡上一组已由发卡方进行过客户化处理的数据文件。
── 一组由收单行或商户提供的终端中的数据。
── 一套卡和终端共同遵守的应用协议。
所有应用都唯一的由一个应用标识符(AID)标识。应用标识符的格式符合ISO/IEC 7816-5(见)的有关规定。
这里描述的支付系统所采用的技术在设计上应能满足下列主要目标:
── 能够支持多功能IC卡。
── 能够支持多功能终端。而这些终端能够支持符合本规范的IC卡。
── 符合ISO标准。
── 卡片支持多应用,但不要求所有的应用都是支付应用。
── 尽可能保护现存应用,使其与本规范定义的应用在卡中共存。
── 最小的存储开销和处理开销。
── 具有允许发卡方优化选择过程的能力。
终端使用SELECT命令选择一个应用数据文件(ADF),ADF中定义了IC卡中所支持某种应用的一组数据。
应用标识符的编码
应用标识符(AID)的结构符合ISO/IEC 7816-5,它包含两个部分:
1.一个经过注册的应用提供者标识符(RID)(长度为5字节),它唯一地标识应用提供者。
2.一个可选域,由应用提供者定义,最长11字节。这个域被称为“专用应用标识符扩展码(PIX)”,其长度为0到11字节,其值由应用提供者确定。该域的含义只对应于特定的RID,不同RID下的PIX不需要唯一。
IC卡上允许存在其他应用提供者的应用数据文件(ADF),但是其RID的定义应避免与支付应用RID的范围发生重复。可遵照ISO/IEC 7816-5的规定定义RID,以确保其编码不发生冲突。
支付系统环境结构
在IC卡上,支付系统环境起始于一个名为的目录数据文件(DDF)。该文件是必须存在的。这个DDF被映射到卡中的某个DF,这个DF可以是MF,也可以不是。与其他DDF类似,这个DDF包含了支付系统的目录。该DDF的文件控制信息(FCI)中至少要包含本规范第二部分定义的所有DDF的信息,另外,还可以包含语言选择(标记’5F2D’)和发卡方代码表索引(标记’9F11’)。
初始DDF所附属的目录包含了ADF的入口地址,这些入口地址是符合本规范格式的。而这些ADF定义的应用既可以符合也可以不符合本规范。该目录也可以包含其他DDF的入口地址,但这些入口地址的格式必须符合本规范。
不要求该目录包含卡片上所有的DDF和ADF的入口地址,也不要求沿着DDF的链接一定能够找到卡片支持的全部应用。当然,只有从初始目录开始,沿着DDF的链接能够找到的应用,才具备国际互通性。
IC卡的内部逻辑结构的举例,见附件A。
支付系统目录编码
支付系统目录(下文简称目录)是一个线件文件,用1到10的短文件标识符(SFI)标识。该目录附属于DDF,目录的SFI包含在DDF文件控制信息中。目录可以使用本规范第二部分定义的READ RECORD命令进行读取。目录中一个记录可以包含几个入口地址,但一个入口地址不能跨越多个记录存储。
支付系统目录的每一个入口地址都是一个应用模板(标记’61’)它应包含表81、表82和表83所示信息。
标志
长度
值
存在方式
70
var.
结构数据对象标签
M
61
var.
应用模板
M
9D
5-16
DDF名称
M
52
var.
执行的命令(节)
O
73
var.
目录自定义模板
O
XXXX
var.
1个或多个由应用提供商、发卡行或卡片供应商提供的附加(私有)数据元
O
表- 81 DDF目录入口地址格式
标志
长度
值
存在方式
70
var.
结构数据对象标示
M
61
var.
应用模板
M
4F
5-16
ADF名称(AID)
M
50
1-16
应用标签
M
9F12
1-16
应用优先名称
O
87
1
应用优先表明符(见表81)
O
52
var.
执行的命令(节)
O
73
var.
目录自定义模板
O
XXXX
var.
1个或多个由应用提供商、发卡行或卡片供应商提供的附加(私有)数据元
O
表- 82 ADF目录入口地址格式
b8
b7-b5
b4-b1
定义
1
需要持卡人确认方可选择应用
0
不需持卡人确认即可选择应用
XXX
保留
0000
未指定优先权
XXXX
(0000除外)
应用的排列或选择顺序,从1-15,其中最高优先权为1
表- 83 应用优先表明符
目录入口中“执行的命令”的使用
一个目录入口地址总是与卡中的一个数据文件(DF)相对应。如果在目录入口地址中没有指定一个“执行的命令”,则需执行SELECT命令(本规范第6篇描述)来选择入口地址中指定的DF,并使用目录中ADF名或DDF名作为文件名。有些IC卡对SELECT命令的解释具有二义性,比如对于支持DF部分名的IC卡就有可能将其入口地址中指定的文件名当成另一DF文件的部分名而造成选择应用错误。
“执行的命令”作为一种机制提供给IC卡,使得IC卡可以利用这个机制准确地选择正确的DF,即选择与目录入口地址对应的DF。“执行的命令”可以是SELECT命令的变形,即不一定是“按名称选择”的形式(例如按路径或文件标识选择);也可以是其他命令,通过这些命令也能实现正确选择DF的结果并返回FCI。当“执行的命令”数据项存在时,终端会利用它代替“按名称选择”命令来选择相关的DF。“执行的命令”数据项中采用的具体命令本规范不作规定。
其他目录的编码
除了初始目录之外,其他目录在支付系统环境下都是可选的,对此类目录的存在数目没有明确限制。每一个目录由一个目录SFI定位,SFI存放在每个DDF的FCI中。目录SFI包括执行READ RECORD命令读目录时所用的SFI。当包含该目录的DDF为当前选定的文件时,SFI可用来读此目录。
目录SFI数据应出现在一个DDF(FCI专用模板)的FCI专用数据区域内。一个DDF最多包含一个目录,因此目录SFI数据只在FCI中出现一次。
除了初始目录之外,所有目录入口均为ADF文件,或以包含目录DDF名称开始的DDF。所有目录(包括初始目录)的格式相同,详细描述请见节。
终端的应用选择
终端中应存放终端所支持的应用及其对应的应用标识符(AID)列表。本章描述两种应用选择过程:一个适用于支持较少数量应用的终端;另一个适用于支持较多数量应用的终端。
直接选择应用
如果一个终端支持的应用不多,该终端可以简单地使用SELECT命令轮流选择每个应用。如果SELECT命令执行成功(回送SW1SW2=‘9000’),则该终端将它所支持的AID与被选择文件的FCI中的文件名进行比较,通过比较的结果来查证IC卡是否支持此应用。如果二者相匹配,IC卡支持该应用;如果返回的文件名比AID长而AID与返回文件名的起始部分相符,终端则重新发送SELECT命令并再次对选择进行验证;如果IC卡回送SW1SW2不等于‘9000’,或者即使IC卡回送SW1SW2等于‘9000’,而AID与文件名不相符且与文件名起始部分也不相符,证明卡不支持此应用。
一但终端支持的应用都被选择出来,则IC卡和终端都支持的应用列表就可以确定。然后终端可以选择指定的应用来运行。这一选择过程见节。
直接选择适用于那些仅支持较少应用的终端,并且不能支持持卡人潜在的应用。这种方式不支持终端访问应用标签或应用优先名称,这些名称仅存在于目录中。
支付系统目录的使用
如果终端支持大量的应用,可以通过使用IC卡的目录(或多个目录)来确定卡片所支持的应用。必须保证IC卡目录的结构设计正确,以便终端可以按照本规范描述的过程正确地选择应用。终端正确使用目录的步骤如下:
1.终端首先在支付系统环境下用本规范第6篇中描述的“SELECT”命令对文件’’直接选择。由此建立支付系统环境并进入初始目录。
终端从第一条记录开始,连续读目录中的所有记录,直到卡回送SW1SW2=’6A83’,表示所需记录序号已不存在。在执行READ RECORD命令查找第一个记录时,如果卡回送SW1SW2=’6A83’,则表示目录为空,转至下面步骤6。
如果目录中某个adf名与终端支持的一个应用名相符,则将该应用列入最终应用选择的“候选名单”中。
如果目录中出现一个指向DDF的入口地址,且该DDF的名称至少与一个终端所支持的AID的前几位匹配(例如:一个名为1234的DDF可与一个名为12345678的AID匹配),则终端选择该DDF。如果该入口包含一个“执行的命令”,则执行该命令完成选择;如果不存在“执行的命令”,终端发出带DDF名的SELECT命令。使用所选DDF的文件控制信息(FCI)中的目录短文件标识符(SFI),读出目录并按规则3处理,之后终端继续回到上一个目录处理。
当终端处理完第一个目录的列表后,所有能够按此方式找到的ADF就确定了,查找完毕。
终端也可以采用其他方式寻找卡内其他的专用应用(例如:用AID找出本地的或非支付应用的专用选择方式),但不在本规范范围之内。
选择应用并执行操作
当终端确定了卡与终端相互支持的应用列表之后,下一步即要选取某个应用进行操作。可通过如下方法实现:
1.如果没有互相支持的应用,交易终止。
如果只有一个相互支持的应用,终端核查应用优先表明符的b8位。如果b8等于‘0’,终端选择该应用。如果b8等于‘1’并且终端规定要有持卡人的确认,在这种情况下,终端需要向持卡人提出确认请求,如持卡人同意,即选择该应用。如果终端没有规定要有持卡人的确认,或者终端请求确认被拒绝,终端终止该交易。
建议显示应用列表请持卡人选择。将采用级别优先方式为持卡人提供应用列表目录,高优先级别的应用在先。如果卡中没有指定优先顺序,则以终端的应用优先顺序为准;如果终端也没有指定优先顺序,则按照应用在卡中出现的顺序为准。如果出现多个应用重复指定优先顺序,或个别入口地址缺少应用优先表明符的情况,也可采用类似的方法,也就是说,在这种情况下终端可使用自己的优先顺序,也可以按卡上顺序将有重复优先符或无优先符的应用显示出来。
4.终端可在没有持卡人协助的情况下选择应用。在这种情况下,终端应从相互支持的应用列表中选择优先级别最高的应用,如果终端不能对选择的应用提供确认,则应用选择禁止(应用优先表明符的b8等于‘1’)。
一旦终端或持卡人确定了待执行的应用,则该应用被选中。如果与应用相关的目录入口地址指定了一个“执行的命令”,终端执行该命令进行应用的选择。如果不存在“执行的命令”,终端发出一个“SELECT”命令(根据本规范第6篇)进行应用的选择。无论使用哪种命令,如果命令回送的SW1SW2值(‘9000’,则此应用将从候选列表中删除,之后再将删除后的列表显示给持卡人,或者选择下一个优先级高的应用,重新进行应用选择。在合适的情况下,终端要给持卡人以提示。
安全机制
基本安全要求
共存应用
为了独立地管理一张卡上不同应用间的安全问题,每一个应用应该放在一个单独的ADF中。亦即在应用之间应该设计一道“防火墙”以防止跨过应用进行非法访问。另外,每一个应用也不应该与个人化要求和卡中共存的其他应用规则发生冲突。
密钥的独立性
用于一种特定功能(如:扣款)的加密/解密密钥不能被任何其他功能所使用,包括保存在IC卡中的密钥和用来产生、派生、传输这些密钥的密钥。
如果应用要求使用SAM,其对终端、发卡方和私有SAM的安全要求请参阅《中国金融集成电路(IC)卡规范》第2部分:应用规范中的有关规定。
密钥和个人密码的存放
IC卡应该能够保证用于RSA算法的非对称私有密钥或用于DES算法的对称加密密钥在没有授权的情况下,不会被泄露出来。
如果使用个人密码,则应保证其在IC卡中的安全存放,且在任何情况下都不会被泄露。
安全报文传送
安全报文传送的目的是保证数据的可靠性、完整性和对发送方的认证。数据完整性和对发送方的认证通过使用MAC来实现。数据的可靠性通过对数据域的加密来得到保证。
安全报文传送格式
本规范中定义的安全报文传送格式符合ISO 7816-4的规定。当CLA字节的第二个半字节等于十六进制数字’4’时,表明对发送方命令数据要采用安全报文传送。卡中的FCI表明某个命令的数据域的数据是否需要加密传输,是否应该以加密的方式处理。
b4
b3
b2
b1
说 明
0
0
x
x
不需要安全报文
0
1
x
x
需要安全报文
报文完整性和验证
MAC是使用命令的所有元素(包括命令头)产生的。一条命令的完整性,包括命令数据域(如果存在的话)中的数据元,通过安全报文传送得以保证。
MAC的位置
MAC是命令数据域中最后一个数据元。
MAC的长度
本规范中,MAC的长度规定为4个字节。
MAC密钥的产生
在安全信息处理过程中用到的MAC 过程密钥是按照中描述的过程密钥的产生过程产生的。MAC DEA密钥的原始密钥用于产生MAC 过程密钥。
MAC的计算
按照如下的方式使用单重或三重DEA加密方式产生MAC:
第一步:取8个字节的16进制数字’0’作为初始变量。
第二步:按照顺序将以下数据连接在一起形成数据块:
── CLA,INS,P1,P2,Lc1)
── 所有在《中国金融集成电路(IC)卡规范》第2部分:应用规范中定义的
数据。
── 在命令的数据域中(如果存在)包含明文或加密的数据。(例:如果要更
改个人密码,加密后的个人密码数据块放在命令数据域中传输)
第三步:将该数据块分成8字节为单位的数据块,标号为D1,D2,D3,D4等。最后的数据块有可能是1-8个字节。
第四步:如果最后的数据块长度是8字节的话,则在其后加上16进制数字’80 00 00 00 00 00 00 00’,转到第五步。
如果最后的数据块长度不足8字节,则在其后加上16进制数字’80’,如果达到8字节长度,则转入第五步;否则在其后加入16进制数字’0’直到长度达到8字节。
第五步:对这些数据块使用MAC 过程密钥进行加密,过程密钥按照描述的方式产生。如果安全报文传送支持单长度的MAC DEA密钥,则依照图11的方式使用MAC 过程密钥来产生MAC(根据在第二步中产生的数据块长度的不同,有可能在计算中会多于或少于四步)。
图- 11 单长度DEA密钥的MAC算法
如果安全报文传送的处理支持双长度MAC DEA密钥,则使用MAC 过程密钥 A和B(MAC的产生如图12中所示),(根据第二步产生的数据块的长度,计算过程有可能多于或少于四步)。
图- 12 双长度DEA Key的MAC算法
第六步:最终得到是从计算结果左侧取得的4字节长度的MAC。
数据可靠性
为保证命令中明文数据的保密性,可以将数据加密。所使用的数据加密技术,应被命令发送方和当前卡中被选择的应用所了解。
数据加密密钥的计算
在安全报文处理过程中用到的数据,加密过程密钥按照中描述的方式产生。数据加密过程密钥的产生过程是从卡中的数据加密DEA密钥开始的。
被加密数据的结构
当命令中要求的明文数据需要加密时,它先要被格式化为以下形式的数据块:
── 明文数据的长度,不包括填充字符(LD)
── 明文数据
── 填充字符(根据的要求)
然后整个数据块使用中描述的数据加密技术进行加密。
数据加密计算
数据加密技术如下所述:
第一步:用LD表示明文数据的长度,在明文数据前加上LD产生新的数据块。
第二步:将第一步中生成的数据块分解成8字节数据块,标号为D1,D2,D3,D4等等。最后一个数据块长度有可能不足8位。
第三步:如果最后(或唯一)的数据块长度等于8字节,转入第四步;如果不足8字节,在右边添加16进制数字’80’。如果长度已达8字节,转入第四步;否则,在其右边添加1字节16进制数字’0’直到长度达到8字节。
第四步:每一个数据块使用中描述的数据加密方式加密。
如果采用单长度数据加密DEA密钥,数据块的加密如图13所示(使用数据加密过程密钥 A进行加密)。
图- 13 单长度DEA密钥的数据加密
如果采用双长度数据加密DEA密钥,则数据块的加密如图14所示(使用数据加密过程密钥 A和B来进行加密)。
图- 14 使用双长度DEA密钥的数据加密
第五步:计算结束后,所有加密后的数据块依照原顺序连接在一起(加密后的D1,加密后的D2,等等)。并将结果数据块插入到命令数据域中。
数据解密计算
卡片接收到命令之后,需要将包含在命令中的加密数据进行解密。数据解密的技术如下:
第一步:将命令数据域中的数据块分解成8字节长的数据块,标号为D1,D2,D3,D4等等。每个数据块使用如所描述的方法产生的数据加密过程密钥进行解密。
如果采用单长度数据加密的DEA密钥,数据块解密如图15所示(使用数据加密过程密钥 A进行解密)。
图- 15 使用单长度DEA密钥的数据解密
如果采用双长度数据加密的DEA密钥,则数据块的解密如图16所示(使用数据加密过程密钥 A和B来进行解密)。
图- 16 使用双长度DEA密钥的数据解密
第二步:计算结束后,所有解密后的数据块依照顺序(解密后的D1,解密后的D2,等等)链接在一起。数据块由LD、明文数据、填充字符(如果在描述的加密过程中增加的话)组成。
第三步:因为LD表示明文数据的长度,因此,它被用来恢复明文数据。
过程密钥的产生
MAC和数据加密过程密钥的产生如下所述。(在本节中统称为“过程密钥A”和“过程密钥B”)
基于单长度DEA密钥的过程密钥
第一步:卡片/发卡方决定是使用MAC DEA密钥A还是数据加密DEA密钥A来进行所选择的算法处理。(以后统称为“Key A”)
第二步:用Key A与预先决定的变量(如当前的交易序号)作异或运算产生过程密钥 A。在作异或运算前,数据(例如:交易序号)如果少于8个字节,则在其右边用十六进制数字’0’填满。
基于双长度DEA密钥的过程密钥
第一步:卡片/发卡方决定是使用MAC DEA密钥A和B还是数据加密DEA密钥A和B来进行所选择的算法处理。(以后统称为“Key A”和“Key B”)
第二步:用Key A与预先决定的变量(如当前的交易序号)作异或运算产生过程密钥 A。在作异或运算前,数据(例如:交易序号)如果少于8个字节,则在其右边用十六进制数字’0’填满。
用Key B与第二步中产生的过程密钥 A所用数据的非作异或运算得到过程密钥 B。非运算是以位为单位的,把值为’1’的位转换为’0’,将值为’0’的位转换为’1’。在作异或运算前,数据如果少于8个字节,则在其右边用十六进制数字’0’填满。
安全报文传送的命令情况
在ISO/IEC 7816-4中定义了四种命令情况。本节简单的讨论这些情况对命令APDU的作用。
情况一:这种情况时,没有数据送到ICC(Lc)中,也没有数据从卡中返回(Le)。没有安全报文传送要求的命令情况如下:
CLA
INS
P1
P2
有安全报文传送要求的命令情况如下:
CLA
INS
P1
P2
Lc
MAC
CLA的第二个半字节是’4’表明支持第二种情况的安全报文传送技术。Lc为MAC的长度。
情况二:这种情况时,命令中没有数据送到卡中,但有数据从卡中返回。没有安全报文传送要求的命令情况如下:
CLA
INS
P1
P2
Le
有安全报文传送要求的命令情况如下:
CLA
INS
P1
P2
Lc
MAC
Le
CLA的第二个半字节是’4’表明支持第二种情况的安全报文传送技术。Lc为MAC的长度。
情况三:这种情况时,命令中有数据传送到卡中,但没有数据从卡中返回。没有安全报文传送要求的命令情况如下:
CLA
INS
P1
P2
Lc
命令数据
有安全报文传送要求的命令情况如下:
CLA
INS
P1
P2
Lc
命令数据
MAC
CLA的第二个半字节是’4’表明支持第二种情况的安全报文传送技术。Lc为命令数据加上MAC的长度。
情况四:这种情况时,在命令中有数据送到卡中,也有数据从卡中返回。没有安全报文传送要求的命令情况如下:
CLA
INS
P1
P2
Lc
命令数据
Le
有安全报文传送要求的命令情况如下:
CLA
INS
P1
P2
Lc
命令数据
MAC
Le
CLA的第二个半字节是’4’表明支持第二种情况的安全报文传送技术。Lc为命令数据加上MAC的长度。
认可的加密算法
对称算法(DES)
安全报文允许使用64位块加密算法,该算法在ISO 8731-1、ISO 8732、ISO/IEC 10116中定义。以下定义的单DES加密和3-DES加密版本都可以用在第三节中描述的加密运算和MAC机制中。
3-DES加密是指使用双长度(16字节)密钥K=(KL||KR)将8字节明文数据块加密成密文数据块,如下所示:
Y = DES(KL)[DES-1(KR)[DES(KL)[X]]]
解密的方式如下:
X = DES-1(KL)[DES(KR)[DES-1(KL)[Y]]]
非对称算法(RSA)
《中国金融集成电路(IC)卡规范》第2部分:应用规范中未强制要求使用非对称算法,非对称算法对于终端是可选的。
RSA算法被用来进行静态和动态数据验证以及数字签名。公开密钥的指数可以为奇数,也可以为偶数。
算法产生的数字签名的长度等于所用的模数的大小。模数的最大限制如表84所示:
描 述
最大长度
验证授权公开密钥模数
248字节
发卡方公开密钥模数
247字节
ICC公开密钥模数
128字节
表- 84 不同模数在字节上的最大限制
同时,验证授权公开密钥模数的长度NCA,发卡方公开密钥模数的长度NI,IC卡公开密钥模数的长度NIC应该满足以下关系:NIC<NI<NCA。
在选择公开密钥模数的长度时,应该考虑到密钥的生命周期以及在此生命周期内被解密的可能性。每个密钥的长度范围(上、下限)在其相应的专用规范中规定。
发卡方公开密钥的指数的长度与IC卡公开密钥的指数长度由发卡方决定。指数可以是预先约定的固定的数字如2、3或216+1,但是它的长度不能超过其对应的密钥模数长度的四分之一。
该数字签名算法中的公开密钥算法的标志码为16进制数字’01’。
RSA算法的密钥、签名和恢复功能在下面说明。公开密钥的奇偶指数将分别考虑。同时,也规定了密钥产生过程的最低要求。
奇数公开密钥指数
密钥
带有奇数公开密钥指数e的RSA数字签名机制的私有密钥SK包括两个素数p和q,p-1和q-1与e是互素的,它们与私有密钥指数d存在如下关系:
ed ≡1 mod (p-1)(q-1)
相对应的公开密钥PK包括公开密钥模数n =pq和公开密钥指数e。
签名功能
带有奇数公开密钥指数的RSA的签名功能定义如下:
S = Sign(SK)[X]:=Xd mod n,0<X<n,
X是要签名的数据,S是相对应的数字签名。
恢复功能
带有奇数公开密钥指数的RSA的恢复功能定义如下:
X = Recover(PK)[S]:= Se mod n.
偶数公开密钥的指数
密钥
带有偶数公共密钥指数的RSA数字签名机制的私有密钥SK是由两个素数p和q组成,如p ≡3 mod 8,q ≡7 mod 8,对于一个私有密钥指数d,有如下结果:
ed ≡1 mod eq \o(\s\up 10(1),\s\up 0(-),\s\up-10(2))lcm(p -1,q -1)
特别注意当e = 2时,就是著名的RSA的 Rabin变数。在这种情况下,私有密钥的指数等于:
d = (pq-p-q + 5)/8
对应的公开密钥PK由公开密钥模数n = pq和公开密钥指数e组成。
签名功能
带有偶数公开密钥指数的RSA的签名功能如下所示:
S = Sign(SK)[X]:=Xd mod n,当Jacobi值(X | n)=1时
S = Sign(SK)[X]:=(X/2)d mod n,当Jacobi值(X | n)= -1时
X是要签名的数据,S是相对应的数字签名。
数据块X是不大于n的非负整数,它的低字节值为’BC’。这是为了保证恢复过程的唯一性。
恢复功能
具有偶数公开密钥指数的RSA算法的恢复功能如下所示:
1.计算Y := Se mod n。
2.恢复的数据通过下列情形中的一种得到:
(a)如果Y的低字节值为’BC’,则有X := Y。
(b)如果2Y的低字节值为’BC’,则有X:= Y。
(c)如果n-Y的低字节值为’BC’,则有X:= n-Y。
(d)如果2(n-Y)的低字节值为’BC’,则有X:= 2(n-Y)。
如果上述情形以外的情况发生,签名将被拒绝。
密钥的产生
对RSA密钥对的主要要求是保证模数是一个素数,即是一个不能通过有效的有特殊目的的因数分解算法分解的整数。
安全哈什算法(SHA-1)
这个算法在FIPS 18011) 中被标准化。SHA-1中输入任意长度的信息,产生一个20字节的哈什值。
本哈什算法的标志编码为16进制数’01’。
附录A
目录结构实例
本附录中用图例给出IC卡中文件逻辑结构,说明了目录结构的层次,但它不能完全涵盖ISO中定义的文件结构的层次。
图17是仅有单层目录的单应用卡。在此例中,MF(文件标识符为’3F00’,ISO 7816-4中规定)可以看作是卡中唯一的DDF。按中分配给第一层DDF的支付应用名称的规定,MF被分配一个唯一的支付应用名,并且MF的FCI中应包括SFI。即使只有一个应用,目录结构也必须符合本规范。
在这个实例中,“DIR A”文件即可以是ISO DIR文件,也可以不是,但它要符合本规范,包括具有取值范围从1到10的SFI。ISO定义的 DIR文件的标识为’2F00’,有可能它的SFI取值不在此范围内。
图- 17 单应用的卡片简单结构
图18给出了一个单目录结构的多应用卡。在此例中,主控文件(MF)不支持符合本规范的应用,并且不限制此处MF的功能。根据ISO 7816-4中的规定,DIR文件可以存在,但没有采用在第7篇中定义的应用选择算法。注意,目录中没有全部的ADF入口地址(ADF2~ADF5),其中ADF5不包含在内,它仅可以由“知道”卡中存在ADF5的终端对其进行选择。本规范不规定终端发现ADF5的方法。
图- 18 单层目录
图19是N层目录结构的多应用卡片。第一层目录(DIR A)具有进入2个ADF(ADF3和ADF4)和一个DDF(DDF2)的入口地址。第二层目录(DIR B)具有进入2个ADF(ADF21和ADF22)和一个DDF(DDF6)的入口地址。DDF5不能由根目录进入,它仅可以由“知道”卡中存在ADF5的终端对其进行选择。本规范不规定终端发现ADF5的方法。但DIR C可以符合本规范,所以进入DDF5(DIR C)的方法符合本规范。如果由终端寻找DDF5的存在,终端可以进入ADF(例如ADF51、ADF52和ADF53)。DIR D与DDF6相连,是目录的第三层,它下面包括四个文件(没画出),可以是ADF或多个DDF。
图- 19 三层目录
附录B
指令-状态码列表
SW1
SW2
状态码默认含义
CHANGE PIN
CREDIT FOR LOAD
DEBIT FOR PURCHASE/CASH WITHDRAW
DEBIT FOR UNLOAD
GET BALANCE
GET TRANSACTION PROVE
INITIALIZE FOR CASH WITHDRAW
INITIALIZE FOR LOAD
INITIALIZE FOR PURCHASE
INITIALIZE FOR UNLOAD
INITIALIZE FOR UPDATE
RELOAD PIN
UPDATE OVERDRAW LIMIT
61
XX
正常处理
62
00
无信息提供
62
81
回送的数据可能有错
62
82
文件长度<Le
62
83
选择的文件无效
62
84
FCI格式与P2指定的不符
63
00
认证失败
63
CX
验证失败,还剩下X次尝试机会
√
64
00
状态标志位未变
65
81
内存错误
√
√
√
√
√
√
√
√
√
√
√
√
√
67
00
长度错误
√
√
√
√
√
√
√
√
68
82
不支持安全报文
69
00
不能处理
√
69
01
命令不接受(无效状态)
√
√
√
√
√
√
√
69
81
命令与文件结构不相容
69
82
不满足安全状态
69
83
验证方法锁定
√
69
84
引用数据无效
√
69
85
使用条件不满足
√
√
√
√
√
√
√
√
√
√
√
√
69
86
不满足命令执行的条件(非当前EF)
69
87
安全报文数据项丢失
69
88
安全信息数据对象不正确
√
6A
80
数据域参数不正确
√
6A
81
功能不支持
√
6A
82
未找到文件
6A
83
未找到记录
6A
84
文件中存储空间不够
6A
86
P1、P2参数不正确
√
√
√
√
√
√
6A
88
引用数据找不到
√
6B
00
参数错误(偏移地址超出了EF)
6C
XX
长度错误(Le错误;'XX'为实际长度)
6F
00
数据无效
90
00
成功执行,无错误
√
√
√
√
√
√
√
√
√
√
√
√
√
'XX'表示可以通过后续GET RESPONSE命令得到的额外数据长度
2 使用内部重试程序更新成功; X='0'表示不提供计数器; X!='0'表示重试次数
SW1
SW2
状态码默认含义
CHANGE PIN
CREDIT FOR LOAD
DEBIT FOR PURCHASE/CASH WITHDRAW
DEBIT FOR UNLOAD
GET BALANCE
GET TRANSACTION PROVE
INITIALIZE FOR CASH WITHDRAW
INITIALIZE FOR LOAD
INITIALIZE FOR PURCHASE
INITIALIZE FOR UNLOAD
INITIALIZE FOR UPDATE
RELOAD PIN
UPDATE OVERDRAW LIMIT
93
01
金额不足
√
93
02
MAC无效
√
√
√
√
√
93
03
应用永久锁住
√
94
01
金额不足
√
√
√
94
02
交易计数器到达最大值
√
√
√
√
√
94
03
密钥索引不支持
√
√
√
√
√
94
06
所需MAC不可用
√
6E
00
不支持的类:CLA错
√
√
√
√
√
√
√
√
√
√
√
√
√
6D
00
不支持的指令代码
66
00
接收通讯超时
√
√
√
√
√
√
√
√
√
√
√
√
√
66
01
接收字符奇偶错
√
√
√
√
√
√
√
√
√
√
√
√
√
66
02
校验和不对
66
03
当前DF文件无FCI
66
04
当前DF下无SF或KF
表- B1 指令状态码列表1
指令-状态码列表(续)
SW1
SW2
状态码
默认含义
APPLICATION BLOCK
APPLICATION UNBLOCK
CARD BLOCK
EXTERNAL AUTHENTICATION
GET RESPONSE
GET CHALLENGE
INTERNAL AUTHENTICATION
PIN CHANGE/UNBLOCK
READ BINARY
READ RECORD
SELECT
UPDATE BINARY
UPDATE RECORD
VERIFY
61
XX
正常处理
√
62
00
无信息提供
√
√
62
81
回送的数据可能有错
√
√
√
√
√
√
62
82
文件长度<Le
√
62
83
选择的文件无效
√
√
62
84
FCI格式与P2指定的不符
√
63
00
认证失败
√
63
CX
验证失败,还剩下X次尝试机会
√
√
√
64
00
状态标志位未变
√
√
√
√
√
√
√
√
65
81
内存错误
√
√
√
√
√
√
67
00
长度错误
√ (Lc错误)
√
√
√ (Lc域为空)
√ (Lc域不存在)
√ (P1 P2与Lc不一致)
√ (Lc域为空)
√ (Lc域为空)
68
82
不支持安全报文
√
69
00
不能处理
69
01
命令不接受(无效状态)
69
81
命令与文件结构不相容
√
√
√
√
SW1
SW2
状态码
默认含义
APPLICATION BLOCK
APPLICATION UNBLOCK
CARD BLOCK
EXTERNAL AUTHENTICATION
GET RESPONSE
GET CHALLENGE
INTERNAL AUTHENTICATION
PIN CHANGE/UNBLOCK
READ BINARY
READ RECORD
SELECT
UPDATE BINARY
UPDATE RECORD
VERIFY
69
82
不满足安全状态
√
√
√
√
√
√
69
83
验证方法锁定
√
√
69
84
引用数据无效
√
√
√
69
85
使用条件不满足
√
69
86
不满足命令执行的条件(非当前EF)
√
√
√
69
87
安全报文数据项丢失
√
√
√
√
69
88
安全信息数据对象不正确
√
√
√
√
6A
80
数据域参数不正确
√
6A
81
功能不支持
√
√
√
√
√
√
6A
82
未找到文件
√
√
√
√
√
6A
83
未找到记录
√
√
6A
84
文件中存储空间不够
√
6A
86
P1、P2参数不正确
√
√
√
√
√
√
√
√
6A
88
引用数据找不到
√
√
√
6B
00
参数错误(偏移地址超出了EF)
√
√
6C
XX
长度错误(Le错误;'XX'为实际长度)
√
√
6F
00
数据无效
√
90
00
成功执行,无错误
√
√
√
√
√
√
√
√
√
√
√
√
√
√
93
01
金额不足
93
02
MAC无效
93
03
应用永久锁住
√
√
94
01
金额不足
94
02
交易计数器到达最大值
94
03
密钥索引不支持
94
06
所需MAC不可用
6E
00
不支持的类:CLA错
√
√
√
√
√
√
√
√
√
√
√
√
√
√
6D
00
不支持的指令代码
66
00
接收通讯超时
√
√
√
√
√
√
√
√
√
√
√
√
√
√
66
01
接收字符奇偶错
√
√
√
√
√
√
√
√
√
√
√
√
√
√
66
02
校验和不对
66
03
当前DF文件无FCI
66
04
当前DF下无SF或KF
表- B2 指令状态码列表2
附录C 使用T=0协议交换的示例
以下示例说明了使用T=0协议在TTL和IC卡之间数据和过程字节的交换。请注意:
过程字节‘60’和 的用法没有说明。
[Data(x)]表示x个字节的数据。
情况2和4中Le = ‘00’的命令要求从IC卡返回可能的最多数据。这些示例中使用Le= ‘00’来说明执行本规范第三册中定义的应用时观察到的典型交换。
C1到C4的示例说明了使用情况1到情况4的典型交换。C5和C6中的示例说明了在情况2和4的命令中使用过程字节‘61xx’的交换。C7说明了一个情况4的命令的警告条件。
C1 情况 1 下的命令
一个形如{CLA INS P1 P2}的C-APDU从TAL传送到到TTL(注意C-TPDU的P3置为‘00’)。
TTL ICC
{CLA INS P1 P2 00}==>
<=90 00
TTL向TAL返回形如{90 00}的R-APDU。
C2 情况 2 下的命令
一个形如{CLA INS P1 P2}的C-APDU从TAL 传到到TTL。
TTL ICC
[ CLA INS P1 P2 00]=>
<=6C Licc
[CLA INS P1 P2 Licc]=>
<=INS[Data(Licc)] 90 00
TTL向TAL返回形如{[Data(Licc)]90 00}的R-APDU。
C3情况3下的命令
TAL向TTL传递一个形如{CLA INS P1 P2 Lc [Dara(Lc)]}的C-APDU
TTL ICC
[ CLA INS P1 P2 Lc] =>
<=INS
[Data(Lc)]=>
<=90 00
TTL向TAL返回一个形如{90 00}的R-APDU。
C4情况4下的命令
TAL向TAL传送一个形如{CLA INS P1 P2 Lc [Data(Lc)]00}的C-APDU。
TTL ICC
[CLA INS P1 P2 Lc]=>
<=[INS]
[Data(Lc)]=>
<=61 Licc
[00 C0 00 00 Licc]=>
<=C0 [Data(Licc)]90 00
TTL向TAL传送形如{[Data(Licc)90 00 ]}的R-APDU。
C5采用过程字节‘61’和‘6C’的情况2命令
TAL向TTL传送形如{CLA INS P1 P2 00}的C-APDU。
TTL ICC
[CLA INS P1 P2 00]=>
<=6C Licc
[CLA INS P1 P2 Licc]=>
<=61 XX
[00 C0 00 00 yy]=>
<=C0 [Data(yy)] 61 zz
[00 C0 00 00 zz]=>
<=C0[Data(zz)] 90 00
当yy ≤ xx时
TTL向TAL传送形如{[Data(yy+zz)]90 00}的R-APDU。
C6 采用过程字节‘61’的情况4命令
TAL向TTL传送形如{CLA INS P1 P2 Lc[Data Lc] 00}的C-APDU。
TTL ICC
[CLA INS P1 P2 Lc]=>
<=[INS]
[Data(Lc)]=>
<=61xx
[00 C0 00 00 xx]=>
<=C0 [Data(xx)] 61 yy
[00 C0 00 00 yy]=>
<=C0 [Data(yy)] 90 00
TTL向TAL返回形如{[Data(xx+yy)] 90 00}的R-APDU。
C7 带警告条件的情况4命令
TAL向TTL传送形如{CLA INS P1 P2 Lc[Data Lc]00}的C-APDU。
TTL ICC
[CLA INS P1 P2 Lc]=>
<=[INS]
[Data(Lc)]=>
<=62 xx
[00 C0 00 00 00]=>
<=6C Licc
[00 C0 00 00 Licc]=>
<=C0 [Data(Licc)] 90 00
TTL向TAL返回形如{Data(Licc)}62 xx}的R-APDU,其中包含了与警告状态字节一起的返回的数据。
电路上隔绝意味着:在此触点和任何其它导电表面上施以5V DC电压时在二者上测得的电阻必须≧10MΩ。
ISO/IEC 7816定义为编程电压(VPP)
ISO/IEC 7816中定义为编程电压(VPP)。
注:3) 这里的正确位置是指接口设备触点的中心正对IC卡触点(符合ISO 7816-2中的有关规定)的中心。
注:4) 由于etu的大小依赖于时钟频率,因此复位应答所允许的最大时间根据时钟频率的不同而不同(见)。
注:1)在ISO/IEC 7816中定义了VPP,当值为0时,表明VPP处于静止状态。
注:1)本规范中,IC卡和终端不使用。
注:1) Lc表示命令数据域后面4个字节MAC数据的长度,例如:APPLICATION BLOCK命令需要产生一个MAC,计算MAC的Lc的输入值是4-FE,而不是0,CLA包括安全报文的表明(’X4’)。
注:1) SHA-1的标准见ISO/IEC CD 10118-3。
'XX'表示可以通过后续GET RESPONSE命令得到的额外数据长度
使用内部重试程序更新成功; X='0'表示不提供计数器; X!='0'表示重试次数
本文本的版权和解释权属于中国人民银行。
本文本的版权和解释权属于中国人民银行。
T C K ( çÈû¹æ´ÚÔ)
̼øÐ¹ÊÃÓÏÉæÃö¾¨¶ÄµÎ²ýÊ
ÕÖ¹Ö( û¼¢×2 )
ÍºæÆ¼ÅÔÐO K ¿£
èÉÃÖ C a s e = 1
èÉÃÖ C a s e = 2
Y e s
Y e s
Y e s
N o
N o
ÈÈ´¸»Î
( û¼¢× 3 )
ÕÖ¹Ö
N o
C a s e = 1 ?
û¼¢× 4
ò»
A T R O K ?
äÀ´¸»Ît
( û¼¢×1 )
ª¿¼Ê
õ³¼ÊµÖ
I 1 = D 1
K M A
I 2
D E A
O 1
D 2
I 3
D E A
O 2
D 3
K M A
K M A
I 4
D E A
O 3
D 4
K M A
I 5
D E A
O 4
M A C
¼ÍýÀº£
I = äÊëÈ D = ýÊݾé¿
D E A = ýÊݾӼÜÃã˨·( Ó¼ÜãĽÊ) K M A = M A C ý¹Ì³ÜÿÔA
O = äÊö³ + = ìÒò»ËÔãË
D
N
D E A ( e )
O 1
K D A
¼ÍýÀº£
D E A ( e ) = ýÊݾӼÜÃã˨· ( Ó¼ÜãĽʩ£ D = ýÊݾé¿
D E A ( d ) = ýÊݾӼÜÃã˨·¨£â½ÜãĽʩ£ K D A = ýÊݾӼÜÃý¹Ì³ÜÃ¿Ô A
O = äÊö³ K D B = ýÊݾӼÜÃý¹Ì³ÜÿÔB
D E A ( d )
K D B
O 2
D E A ( e )
K D A
O 3
Ó¼ÜÃóºÄµD N
D
N
D E A
O 1
K D A
â½ÜÃóºÄµ
D N
¼ÍýÀº£
D E A = ýÊݾӼÜÃã˨· D = ýÊݾé¿
¨£â½ÜãĽʩ£ K D A = ýÊݾӼÜÃý¹Ì³ÜÃ¿Ô A
O = äÊö³
D
N
D E A ( d )
O 1
K D A
¼ÍýÀº£
D E A ( e ) = ýÊݾӼÜÃã˨· ( Ó¼ÜãĽʩ£ D = ýÊݾé¿
D E A ( d ) = ýÊݾӼÜÃã˨·¨£â½ÜãĽʩ£ K D A = ýÊݾӼÜÃý¹Ì³ÜÿÔA
O = äÊö³ K D B = ýÊݾӼÜÃý¹Ì³ÜÿÔB
D E A ( e )
K D B
O 2
D E A ( d )
K D A
O 3
â½ÜÃóºÄµD N
õ³¼ÊµÖ
I 1 = D 1
K M A
I 2
D E A ( e )
O 1
D 2
I 3
D E A ( e )
O 2
D 3
K M A
K M A
I 4
D E A ( e )
O 3
D 4
K M A
I 5
D E A ( e )
O 4
¼ÍýÀº£
I = äÊëÈ D = ýÊݾé¿
D E A ( e ) = ýÊݾӼÜÃã˨·¨£Ó¼ÜãĽʩ£ K M A = M A C ý¹Ì³ÜÿÔA
D E A ( d ) = ýÊݾӼÜÃã˨·¨£â½ÜãĽʩ£ K M B = M A C ý¹Ì³ÜÿÔB
O = äÊö³ + = ìÒò»ËÔãË
D E A ( d )
K M B
O 5
D E A ( e )
K M A
O 6
M A C
D
N
D E A
O 1
K D A
Ó¼ÜÃóºÄµ
D
N
¼ÍýÀº£
D E A = ýÊݾӼÜÃã˨· D = ýÊݾé¿
¨£Ó¼ÜãĽʩ£ K D A = ýÊݾӼÜÃý¹Ì³ÜÿÔA
O = äÊö³
E F f i l e s
ü°¬º¦ÓÃÓ2 ĵ
ýÊݾ
E F f i l e s
ü°¬º¦ÓÃÓ1 ĵ
ýÊݾ
E F - S F I 2 2
ü°¬ºÖ³¨¿ËÈ
ÅТÏ
E F - S F I 2 1
ÚÔD F ĵF C I ÐÖ
ü°¬ºÄµýÊݾ
D F
( ¢·¨¿ßÕ¦ÓÃÓ2
A D F )
D F
( ¢·¨¿ßÕ¦ÓÃÓ1
A D F )
D F
( E D / E P ¦ÓÃÓA D F )
D F
( E a s y E n t r y ¦ÓÃÓ
A D F )
E F - S F I 1
ü°¬º E a s y
E n t r y ýÊݾ
E F
P S E ¿Ä¼Â
M F
( ÃÓÚÓ P S E )