emv2000_第三册.doc
《emv2000_第三册.doc》由会员分享,可在线阅读,更多相关《emv2000_第三册.doc(100页珍藏版)》请在冰豆网上搜索。
应用规范
第三部分
应用规范
1.范围
支付系统集成电路卡应用规范(以下简称“应用规范”)定义了在国际通用环境中影响支付系统交易的终端和集成电路卡(IC卡)操作过程。
具体地,它包括:
l数据元和文件的映射
l交易流程(事件和向卡片发送的序列命令)
l异常处理
l特定数据对象的编码(参见附录C和D)
l用于IC卡和终端信息交换的数据元和命令的定义。
具体包括:
n金融交换的数据元及它们和数据对象的映射。
n文件的结构和引用。
nIC卡和终端之间用于完成应用级功能的报文结构和编码。
l芯片电子商务规范
本规范所描述的功能保证符合本规范的支付系统卡片能够在符合本规范的所有终端上完成共同的核心功能。
单独支付系统特有的功能和非通用的功能不在本规范描述之列,但本规范亦不排斥。
本规范不涉及清算、结算和其它任何不涉及到IC卡的交易。
本规范假定读者熟悉第一册(《应用无关的IC卡和终端接口需求》),该册描述了应用层以外的功能,包括应用选择。
两个规范都面向支付系统成员、IC卡和终端制造商、使用IC卡或接入IC卡支付系统的应用设计者。
2.参考资料
本规范引用了以下标准所包含的规定
EMV2000版本4.0:
2000年12月
支付系统的集成电路卡应用规范第一册-应用无关的IC卡到终端接口需求
EMV2000版本4.0:
2000年12月
支付系统的集成电路卡应用规范第二册-安全和密钥管理
EMV2000版本4.0:
2000年12月
支付系统的集成电路卡应用规范第四册-持卡人、收银员和收单行接口需求
FIPSPub180-1:
1995
安全哈什算法
IEC512-2:
1979
电磁设备的电磁元件规范-第二部分:
接触电阻测试、绝缘测试和电压测试
ISO/FDIS639-1:
2001
名称及语言表示代码
ISO3166:
1997
国家名称代码
ISO4217:
1995
货币和资金代码
ISO/IEC7811-1:
1995
识别卡-记录技术-第1部分:
凸印
ISO/IEC7811-3:
1995
识别卡-记录技术-第3部分:
凸印字符在ID-1卡片上的位置
ISO/IEC7813:
1995
识别卡-金融交易卡
ISO/IEC7816-1:
1998
识别卡带触点的集成电路卡第1部分:
物理性能
ISO/IEC7816-2:
1999
识别卡带触点的集成电路卡第2部分:
触点的尺寸和位置
ISO/IEC7816-3:
1997
识别卡带触点的集成电路卡第3部分:
电信号和传输协议
ISO/IEC7816-4:
1995
识别卡带触点的集成电路卡第4部分:
行业间交换用命令
ISO/IEC7816-5:
1994
识别卡带触点的集成电路卡第5部分:
应用标识符的编号系统和注册程序
ISO/IEC7816-6:
1996
识别卡带触点的集成电路卡第6部分:
行业间数据元(国际标准草案)
ISO8731-1:
1987
银行业-批准的报文鉴定算法
ISO8372:
1987
信息处理-64位块的加密运算模式
ISO/IEC8825:
1990
信息技术-开放系统互联-抽象语法符号基本编码规范一(ANS.1)
ISO8583:
1987
银行卡生成报文-交换报文规范-金融交易内容
ISO8583:
1993
金融交易卡生成报文-交换报文协议
ISO/IEC8859:
1987
信息处理-8位单字节编码的图形字符集
ISO/IEC9796-2:
1997
信息技术-安全技术-提供报文恢复的数字签名系统-第2部分:
使用哈什函数的机制
ISO/IEC9797:
1994
信息技术-安全技术-用块加密算法使用加密检验函数的数据完整性机制
ISO/IEC10116:
1997
信息技术-n位块加密算法的运算模式
ISO/IEC10118-3:
1998
信息技术-安全技术-哈什函数-第3部分:
专门哈什函数
ISO/IEC10373:
1993
识别卡-测试方法
3.定义
本规范中使用了以下定义:
应用[Application] 卡片和终端及其相关的数据集之间的应用协议。
字节[Byte] 8个二进制位。
卡片[Card] 支付系统定义的支付卡片。
命令[Command] 终端向IC卡发出的一条报文,该报文启动一个操作或请求一个应答。
密文[Cryptogram] 加密操作的结果
加密算法 转换数据以隐藏或显示其内容的算法。
[CryptographicAlgorithm]
金融交易 在持卡人和商户或收单行之间发生的以支付交换商品或服务的行为。
[FianancialTransaction]
功能[Function] 以一个或多个命令及其后续动作来完成一个交易的全部或部分的过程。
发卡行行为代码 发卡行根据TVR的内容选择的动作。
[IssuerActionCode]
密钥[Key] 控制加密转换操作的字符序列。
填充[Padding] 向数据串任一端添加的附加二进制位。
路径[Path] 没有分隔的文件标识符的连接。
支付系统 就本规范而言,是指Europay,Mastercard或Visa信用卡组织。
[Paymentsystem]
[Paymentsystemsenvironment]
支付系统环境 当符合本规范的支付系统应用被选择,或者用于支付系统应用目的的目录数据文件(DDF)被选择后,IC卡中所确立的逻辑条件。
应答[Response] IC卡处理命令报文以后返回给终端的报文。
脚本[Script] 发卡行向终端发送的命令或命令序列,目的是向IC卡连续输入命令。
模板[Template] 结构数据对象的值域,定义为数据对象的逻辑组。
终端[Terminal] 在交易点结合IC卡一起完成金融交易的设备。
[TerminalActionCode]
终端行为代码 终端行为代码(缺省、拒绝、联机)反映了收单行根据TVR的内容选择的动作。
4.缩写和术语
本规范使用了以下的缩写和术语:
AAC
应用认证密文(ApplicationAuthenticationCryptogram)
AAR
应用授权参考(ApplicationAuthorizationReferral)
AC
应用密文(ApplicationCryptogram)
ADF
应用数据文件(ApplicationDefinitionFile)
AEF
应用基本文件(ApplicationElementaryFile)
AFL
应用文件定位器(ApplicationFileLocator)
AID
应用标识符(ApplicationIdentifier)
An
字母数字型(Alphanumeric)
Ans
字母数字及特殊字符型(AlphanumericSpecial)
APDU
应用协议数据单元(ApplicationProtocolDataUnit)
ARPC
授权响应密文(AuthorizationResponseCryptogram)
ARQC
授权请求密文(AuthorizationRequestCryptogram)
ASN.
抽象语法表示(AbstractSyntaxNotation)
ATC
应用交易序号(ApplicationTransactionCounter)
B
二进制(Binary)
BER
基本编码规则(BasicEncodingRules)
C
摄氏度
C-APDU
命令APDU(CommandAPDU)
CDOL
卡片风险管理数据对象列表(CardRishManagementDataObjectList)
C-TPDU
命令TPDU(CommandTPDU)
CVM
持卡人验证方法(CardholderVerificationMethod)
DDF
目录数据文件(DirectoryDefinitionFile)
DDOL
动态数据认证数据对象列表(DynamicDataAuthenticationDataObjectList)
DES
数据加密标准(DataEncryptionStandard)
DF
专用文件(DedicatedFile)
DIR
目录(Directory)
EF
基本文件(ElementaryFile)
FCI
文件控制信息(FileControlInformation)
FIPS
联邦信息处理标准(FederalInformationProcessing
Standard)
hex.
十六进制数(Hexadecimal)
HHMM
时、分(Hours,Minutes)
HHMMSS
时、分、秒(Hours,Minutes,Seconds)
IC
集成电路(IntegratedCircuit)
IC卡
集成电路卡(IntegratedCircuitCard)
IEC
国际电工委员会(InternationalElectrotechnical
Commission)
IFD
接口设备(InterfaceDevice)
I/O
输入/输出(Input/Output)
ISO
国际标准化组织(InternationalOrganizationfor
Standardization)
KM
主密钥(MasterKey)
KS
过程密钥(SessionKey)
Lc
终端发出的命令数据的实际长度(ExactLengthofDataSentbytheTALINACase3or4Command)
lcm
最小公倍数(LeastCommonMultiple)
LDD
IC卡动态数据长度
Le
响应数据的最大期望长度(MaximumLengthofDataExpectedbytheTALinResponsetoaCase2or4Command)
LIC卡
IC卡回送的可用数据的实际长度(ExactLengthofDataAvailableintheIC卡tobeReturnedinResponsetotheCase2or4CommandReceivedbytheICC)
LEN
长度(Length)
Lr
响应数据域的长度(LengthofResponseDataField)
LRC
冗余校验(LongitudinalRedundancyCheck)
M
必备型(Mandatory)
MAC
报文鉴别代码(MessageAuthenticationCode)
max.
最大值(maximum)
MF
主控文件(MaterFile)
min.
最小值(minimum)
n
数字型(numeric)
NCA
认证机构公钥模长度(LengthoftheCertificationAuthorityPublicKeyModulus)
NI
发卡行公钥模长度(LengthoftheIssuerPublicKeyModulus)
NIC
IC卡公钥模长度(LengthoftheICCPublicKeyModulus)
O
可选型(Optional)
P1
参数1(Parameter1)
P2
参数2(Parameter2)
P3
参数3(Parameter3)
PAN
主帐号(PrimaryAccountNumber)
PCA
认证中心公钥(CertificationAuthorityPublicKey)
PCB
协议控制字节(ProtocolControlByte)
PDOL
处理选项数据对象列表(ProcessingOptionsDataObjectList)
PI
发卡行公钥(IssuerPublicKey)
PIC
IC卡公钥(ICCPublicKey)
PIN
个人密码(PersonalIdentificationNumber)
PSA
支付系统应用(PaymentSystemApplication)
PSE
支付系统环境(PaymentSystemEnvironment)
R-APDU
响应APDU(ResponseAPDU)
RFU
保留为将来使用(ReservedforFutureUse)
RID
已注册的应用提供者标识(RegisteredApplicationProviderIdentifier)
RSA
一种非对称加密算法(Rivest,Shamir,Adleman)
R-TPDU
响应TPDU(ResponseTPDU)
SCA
认证中心机构私钥(CertificationAuthorityPrivateKey)
SI
发卡行私钥(IssuerPrivateKey)
SIC
IC卡私钥(IC卡PrivateKey)
SFI
短文件标识符(ShortFileIdentifier)
SHA
安全哈什算法(SecureHashAlgorithm)
SW1
状态码1(StatusWordOne)
SW2
状态码2(StatusWordTwo)
TAC
终端行为代码(缺省、拒绝、联机)TerminalActionCode(Default,Denial,Online)
TAL
终端应用层(TerminalApplicationLayer)
TC
交易证书(TransactionCertificate)
TDOL
交易证书数据列表(TransactionCertificteDataObjectList)
TLV
标签、长度、值(TagLengthValue)
TPDU
传输协议数据单元(TransportProtocolDataUnit)
TVR
终端校验结果(TerminalVerificationResults)
var.
变量(variable)
YYMMDD
年、月、日(Year,Month,Day)
以下术语意为:
‘0’-‘9’‘A’-‘F’
16进制数字
[]
可选部分
A:
=B
A被赋予B值
A=B
A等于B
A≡Bmodn
整数A与B之差模n,即存在一个整数d,使得(A-B)=dn
Amodn
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)/2modp)(X(q-1)/2modq)
如果J=1或j=(pq-p-q+1)则:
(X|n)=1
否则(X|n)=-1
注:
整数X的Jacobi值在没有n素数因子时,也可计算
Xx
任意值
以下术语含义:
专有的
本规范未定义和/或本规范范围之外的
必须
表示强制的要求
应该
表示推荐
(本页有意留空)
第I部分
数据元和命令
1.数据元和文件
IC卡的一个应用包括一组信息项。
终端在成功地选择了一个应用后,就可以读写这些信息项。
(参见本规范第一册第II部分)。
信息中的一项被称为一个数据元。
一个数据元是指可以通过一个名字、一段内容的逻辑描述、一种格式和一段编码来定义的最小信息单元。
1.1与金融交易有关的数据元
在附件A的A-1表格中的数据单元目录中定义了可以用于金融交易的数据元。
附件A的A-1表格中没有定义的数据元不在本规范讨论之列。
选择(SELECT)命令的响应报文中如果包含任何附加的数据元(例如,操作系统制造商的专有数据)都放在“FCI发行者自定义数据”域中。
(EMV标签‘BF0C’)。
1.2数据对象
一个数据对象包括一个标签部分、一个长度部分和一个数值部分。
标签用来独一无二地标记应用中的一个数据对象。
长度用来表示数据对象的数值部分的长度。
一个数据对象的数值部分可以由一个数据元或一个或多个数据对象组成。
只包含一个数据元的数据对象称为基本数据对象。
包含一个以上数据对象的数据对象称为结构数据对象。
本规范中结构数据对象的指定的标签在应用环境中具有特定的含义。
结构数据对象的数值部分是一个与上下文相关的模板。
在附件B中给出了这种上下文相关的数据对象和模板的编码规则。
终端接收到信息后,需要按照附件B中定义的规则,分析所有的数据单元。
从数据单元中取出的数值必须在终端缓冲区中存储,以便将来使用。
终端必须能够按照ISO/IEC7816的定义,正确解释长度为0的TLV数据对象。
当卡片上的数据元被个人化为不存在值域时,上述情况就可能发生。
如果一个数据单元的长度为0,则必须认为该数据单元不存在。
附件A中指出的数据元长度是指在卡片上真正存在的数据元的长度。
附件A中的表格A-1和表格A-2描述了可能的情况下把数据单元映射到数据对象和把数据对象映射到模板的格式。
记录是包含一个或多个基本数据对象或结构数据对象的模板。
数据对象到纪录的映射应由发卡行决定。
数据元的使用方法在本册第II部分描述。
附件B定义了保留给EMV、支付系统和发卡行使用的标签。
遵循本规范的所有的IC卡应用都必须遵循上述编码方式和分配方案以保持与ISO/IEC7816-6标准一致。
1.2.1数据对象类别
附件C包含了不同数据对象类别的识别与编码。
附件C中定义的标签来自ISO/IEC8825和ISO/IEC7816系列的规则,并且适用于所有遵循本规范的应用。
1.3文件
IC卡中的能够读/写的数据文件中的数据对象是以记录方式保存的。
文件的结构和引用方法取决于该文件的用途。
文件的结构和引用的方法将在下面描述。
除了下一节描述的目录文件以外,其它的IC卡可读/写数据文件的布局均由发卡行定义。
1.3.1应用基本文件
范围为1-10的AEF,包含一个基本数据对象或复合的BER-TLV数据对象(记录),复合数据对象是由多个基本编码规则——标签长度值(BER-TLV)的数据对象按附录C的方式组成的。
一旦选定之后,范围为1-10的AEF只能如I-1.3.2所述通过它的短文件标识符(SFI)来引用。
本规范中,一个数据文件包括一组按记录号引用的记录序列。
1-10号SFI引用的数据文件中只包括那些不由卡片解释的数据,即不在卡片内部过程中使用的数据。
这种文件的结构定义成线性结构。
根据ISO/IEC7816-4规定,文件结构既可以固定的,也可以是线性可变的。
这由发卡行自行选择,并且根据本规范不会影响对文件的读操作。
1.3.2文件引用
根据文件的种类,文件可以通过文件名或SFI引用。
1.3.2.1通过文件名引用
卡片中的任何ADF或DDF都可以通过它的DF名引用。
ADF的DF名与它的AID对应或以AID作为DF名的开头。
一张卡片中的每个DF名字必须在该卡内是唯一的。
1.3.2.2通过SFI引用
SFI用于选择AEF。
在一个给定的应用中可以通过SFI来引用任何一个AEF。
这个SFI使用5个位(bit)来编码,其值在1~30的范围内。
SFI编码将在使用它的各命令中描述。
SFI的结构如表I-1所示:
数值
意义
1~10
本规范定义
11~20
支付系统定义
21~30
发卡行定义
TABLEI-1SFI结构
每个SFI在一个应用以内必须是唯一的。
范围为1~10的SFI引用的AEF由本规范分配管理。
1.4使用数据对象列表(DOL)的规则
有时,终端应卡片的要求需要建立可变的数据元列表用来向卡片发送。
为了减少IC卡内对这些数据的处理,这个列表不需要进行TLV编码,而只是把若干数据单元连接成一个复合域。
因为复合域中的数据单元不是TLV编码的,所以当IC卡收到数据时,IC卡必须知道该复合域的格式。
因此,需要在IC卡内包含一个数据对象列表(DOL)来定义复合域中的数据格式。
本规范使用的DOL包括通过取处理选项(GETPROCESSOPTIONS)命令使用的PDOL,通过生成应用密文(GENERATEAC)命令使用的CDOL1和CDOL2,用来产生TC哈什值的TDOL和通过内部认证(INTERNALAUTHENTICATE)命令使用的DDOL。
本节描述了如何使用由卡片提供的DOL来构造一个复合域。
一个DOL是用一些条目连接而成的列表。
每个条目代表一个加入复合域的单个数据元。
每个条目地格式包括1~2个字节的标签来表明需要的数据对象,然后是1个字节的长度部分,表明本数据域在命令数据中占据的字节长度。
只有那些在附件B中定义为基本数据对象的标签才可以在DOL中使用。
终端必须完成下列步骤以建立结构域:
1.从IC卡读取DOL。
2.连接DOL中列出的所有数据单元。
按照下列规则进行连接:
a)如果DOL中指出的数据对象的标签无法被终端识别,或这个标签代表了一个结构数据对象,终端将提供一个长度为DOL指定长度的数据单元,并必须把该数据单元所有的数值部分设置为16进制的0。
b)如果该列表中的一个数据对象在终端上可以识别,但表现为IC卡上不出现的可选静态数据必须用16进制的0来填满。
c)如果在DOL条目中指出的长度小于实际数据对象的长度,则需要将实际的数据对象削减至DOL指出的长度。
如果数据对象是数字格式(n)的,则从数据单元的的最左端开始削减字节。
如果数据对象是其它格式的,则从数据单元的最右端开始削减字节。
如果指出的长度比实际的数据长度大,需要把实际的数据填充至指定长度:
l如果数据对象是数字格式(n)的,则从数据单元头部开始填充16进制的0。
l如果数据对象是压缩数字格式(cn)的,则在数据单元的末尾填充16进制的FF。
l如果数据对象是其它格式的,则在数据单元的末尾填充16进制的00。
d)如果表上的一个数据对