EMV流程
一、应用选择:
1、建立卡片与终端两者共同支持的应用列表
2、在步骤1生成的应用列表中选择一个将要运行的应用。
支付系统:
一种支付系统应用应包括以下内容:
1、IC卡上一组已由发卡方进行过客户化处理的文件
2、一组由收单行或者商户提供的终端中的数据
3、一套卡和终端共同遵守的应用协议
IC卡上,支付系统起始于一个名为1PAY.SYS.DDF01的目录数据文件(DDF).
所有的应用都唯一的由一个应用标识符(AID)标识。
终端使用Select的命令选择一个应用数据文件(ADF),ADF中定义了IC卡中所支持某种应用的一组数据。
终端应存放终端所支持的应用及其对应的应用标识符(AID)列表。
两种方法:直接应用选择法和支付目录系统的使用。
1、直接选择应用
适用于支持较少数量应用的终端,使用Select命令轮流选择每个应用,建立终端与IC卡都支持的应用列表。
2、支付系统目录使用
适用于终端支持大量应用的情况。
通过Select命令对文件1PAY.SYS.DDF01直接选择,由此创建支付系统环境并进入初始目录。
通过Read Record从第一条记录开始连续都目录中的所有记录,当SW1 SW2=“6A83”,表示所需记录序号已不存在。
如果目录中某个ADF名与终端支持的应用名相符,则将该应用列入最终应用选择的“候选名单”。
如果目录中出现一个指向DDF的入口地址,则DDF名称至少与终端所支持的一个AID的前几位匹配,则终端选择改DDF,终端不断的发出Select指令,按2,3处理。
确定ADF列表,查找完毕。
二、应用初始化
命令GPO,如果在应用选择阶段Select命令的响应信息包括PDOL。GPO命令应包括PDOL指定的终端数据。GPO命令通知卡片命令开始。
卡片对GPO命令的响应信息包括:AIP和AFL。
AFL:应用文件定位器,列出交易需要的数据存放的短文件标识符,记录号,记录个数以及脱机数据认证需要的静态签名数据存放位置。
AIP:应用交互特征,列出交易在处理过程中执行的功能。
GPO命令的响应信息中的AIP决定卡片是否支持持卡人验证,脱机数据认证(tag70)的类型和是否支持发卡行认证。
三、读应用数据
在读数据中,终端读出卡片中处理交易和执行SDA或DDA的必要数据
命令:Read Record
终端连续发出读记录命令,直到AFL中指定的所有记录都读出
四、脱机数据认证(可选)
用于验证卡片重要数据是否被更改,是否伪卡。
SDA:静态数据认证,只能验证重要数据是否被更改,IC卡中的数据用Hash函数生成一个简短的摘要,用发卡行公钥加密得到一个签名,再把数据和加密后的签名给终端,终端把数据Hash,得到一个签名,再通过发卡行公钥解密收到的签名,利用发卡行公钥验证,两相对比。
DDA:动态数据认证,包括标准DDA和CDA(复合动态数据认证/应用密文生成)。
DDA不仅可以验证重要数据是否被篡改,还可以验证是否为伪卡。DDA每次用来签名的数据是当前交易的动态数据,签名加密所用的私钥是IC卡私钥,这个私钥被存储在安全区域中。
SDA过程,无命令,卡片不需要终端数据。
DDA过程:内部认证(INTERNAL AUTHENTICATE)命令,终端发送内部认证命令,命令包括了DDOL中指明的终端动态数据,DDA处理过程中卡片的唯一操作就是生成动态签名。
五、处理限制
终端使用终端和卡片数据执行处理限制功能,包括检查应用版本,生效和失效日期等。
在处理限制过程中,卡片不执行任何操作。
卡片数据由Read Record获得。
六、持卡人验证(可选)
持卡人身份验证在EMV中叫CVM(cardholder verification method),在一笔交易中,CVM有多个,所以就有了CVM List的概念。
一个CVM包括以下几项内容:
金额X
金额Y
CVM代码,指出如果CVM失败,是执行下一CVM还是认定CVM失败。
CVM类型,包括脱机明文PIN验证,联机PIN验证,签名,CVM失败,无需CVM,签名与脱机明文PIN验证相结合,脱机密文PIN验证。
CVM条件,表示在什么条件下才用改方法,包括:
0:总是执行 1:如果是现金或返现交易 2、如果不是现金或返现交易 3、如果终端支持此CVM
4、如果交易金额小于X 5、如果交易金额大于X 6、如果交易金额小于Y 7、如果交易金额大于Y
CVM List的tag为8E,长度为10个字节,前四个字节为X,后四个字节为Y
tag 8E
Len 0A
value 00 00 00 00 00 00 00 00 04 00,粉色为X,蓝色为Y,黄色0400为CV rules.04表示如果CVM失败,则CVM验证失败,而且验证方法为脱机加密PIN,00表示该CVM总是执行。
终端按顺序读取CVM List,并使用满足条件的第一个方法,如果某个方法不可用,应继续遍历其他方法,如果所有方法都不可用,则磁卡人验证失败。
脱机加密PIN验证原理:
终端从卡片中获取PIN加密公钥证书(可在Read data阶段读取),从证书中恢复PIN加密公钥,当用户输完PIN时,终端用此公钥加密该PIN。然后通过指令把加密数据传给卡片,卡片收到数据后,先用自身存在的PIN加密私钥解密,然后验证改PIN的正确性。
六、终端风险管理
终端风险管理为大额交易提供了发卡行授权,确保芯片交易可以周期性的进行联机处理,防止过度欠款和环境中不易察觉的攻击。
命令:取数据(GET DATA)
9F36:应用交易序号,9F17:PIN重试计数器,9F13:最近联机的ATC寄存器
9F14:连续脱机交易下限
9F23:连续脱机交易上限
9F02:当前交易金额,用于最低限额检查
交易状态信息(TSI):概述了交易过程中终端执行的功能,在联机授权和清算报文中,这个数据元不被提供,但是终端用这个数据元标明终端风险管理已被执行。
最低限额检查:进行最低限额检查,当交易金额超过终端最低限额,交易联机上送。
随机交易选择:有脱机和联机能力的终端要执行随机选择交易联机处理,此步骤不需要卡片数据
频度检查:连续脱机达到一个特定次数后,频度检查运行发卡行请求交易联机处理。发卡行可以选择不支持频度检查,则在个人化时,9F14和9F23数据不写入卡中。
七、终端行为分析
此过程中,终端对联机处理结果使用发卡行在卡片中设置的规则以及支付系统在终端设置的规则来决定交易是接受,拒绝还是上送联机授权。
步骤:
1、检查脱机处理结果,决定交易是联机上送还是接受脱机或拒绝,需考虑IAC和TAC(终端行为代码).
2、请求密文,终端请求卡片生成密文
应用密文类型:
联机交易:ARQC
批准交易:TC
拒绝交易:AAC
终端行为分析过程中做出的交易联机或接受并不是一个最终结果,卡片进行行为分析时,卡片可能推翻终端的决定,但卡片不能推翻终端做出的交易拒绝的决定。
IAC(卡片行为代码):IAC是3个数据元,每个数据元都和终端验证结果(TVR)中的每一位对应,这3个卡片行为代码为
IAC-拒绝,和对应的TVR中的条件如果满足,则交易拒绝。
IAC-联机
IAC-缺省
请求密文处理:
CDOL1:列出卡片在生成应用密文时需要终端提供的数据的标签和长度
TDOL:交易证书数据对象列表,列出生成交易证书(TC)哈希计算的数据对象(标签和长度)。
八、卡片行为分析
卡片收到应用密文请求后,卡片执行卡片行为分析。
卡片行为分析允许发卡行在卡片内部设置执行频度检查和其他风险管理。
包括的检查有:
上次交易行为
卡片是否新卡
脱机交易系数和累计脱机金额
如果卡片和终端都支持CDA,卡片返回的ARQC或TC要作为签名的动态应用数据的一部分。
九、联机处理
如果卡片和终端交易需要一个联机授权,而且终端具有连接能力,则终端传送一个联机授权报文给发卡行,这个报文包括ARQC密文,生成ARQC的数据和脱机处理结果指示器。
联机处理允许发卡行主机系统中的风险管理参数对交易进行检查,作出批准或拒绝的决定。
发卡行使用一个名为卡片认证方法(CAM)的处理过程验证ARQC来鉴别卡片。主机授权系统可以使用由卡片生成的动态密文执行联机卡片认证。
发卡行响应可以包括给卡片的二次发卡更新和发卡行生成的授权响应密文(ARPC),由ARQC,授权响应码和卡片对称密钥生成。卡片验证密文确保响应来自一个有效的发卡行,此验证为发卡行验证。
应用密文(TC)密钥:卡片认证ARPC使用的对称密钥.
命令:外部认证命令(EXTENAL AUTHENTICATE),如果终端执行发卡行认证,终端发送外部认证命令给卡片,外部认证命令包括发卡行认证数据。
步骤:
联机请求,收到ARQC而且具有联机能力
联机响应
发卡行认证
终端用ARQC和授权响应吗生成一个授权响应密文ARPC,新生成的ARPC和外部认证命令送进来的ARPC相等,则认证成功。
终端收到卡片返回ARQC后,终端先发起8583报文请求,然后收到后台返回的报文,提取相关的IC卡数据域。
十、交易结束
终端和卡片执行交易结束步骤决定交易处理结果。如果终端在授权报文后传送一个清算报文,TC要在清算报文中,当卡片作出接受交易的结论(卡片返回TC)后,卡片会记录交易日志。
只有当卡片作出交易请求联机授权的交易才执行交易结束处理步骤,此时终端向卡片发送第2个生成应用密文命令(Generate AC)。
十一、发卡行脚本处理(可选)
发卡行可以不用重新发卡而是通过发卡行脚本处理来修改卡片中的个人化数据,发卡行将脚本命令放在授权响应报文中传送给终端,终端将命令转发给卡片,当满足安全应用时,卡片执行命令。
支持的命令有:
修改卡片参数
锁定或解锁应用
锁卡
重试PIN尝试计数器
修改脱机PIN值
发卡行脚本操作中的密钥管理:
安全报文鉴别密钥
安全报文加密密钥
授权响应中发卡行脚本数据:
发卡行脚本模板:Tag72,标识模板2,模块中包括在第2次生成应用密文命令后,传送给卡片的发卡行专用脚本数据
发卡行脚本标识符:发卡行用于唯一标识发卡行脚本。
发卡行脚本命令:脚本中每一个发卡行脚本命令都按照BLV格式,用tag "86"开始。