《中国金融集成电路(IC)卡规范第6部分(借记贷记应用终端规范).pdf》--笔记
这几天看了一下《中国金融集成电路(IC)卡规范第6部分(借记贷记应用终端规范).pdf》
贴出来是为了能大家互相交流,提出我理解有误的地方。
1. 按键推荐颜色:确认-绿色 取消-红色 清除-黄色;
2. 密码长度 4-12 位;
3. 账户长度 11-19 位;
4. 应用选择的卡片数据:
DDF: 目录定义文件。--比如PSE;
ADF: 应用定义文件。-包含AEF入口和应用相关的信息,比如应用名称,应用首选名,优先指示器,PDOL.;
AEF: 应用基本文件。-应用处理过程中所用到的数据元;
AID : AID = RID+ PIX ;
应用优先指示器:最高位表示是否需要持卡人确认,后四个字节表示优先级。0表示无优先级,1-15,1的优先级最高;
5. 应用选择的终端数据:
AID: 应用标识符,AID+PIX;
ASI: 应用选择指示器,表明是部分匹配还是全匹配(部分匹配是指卡片的AID比终端的AID更长一些,即对终端支持的每个应用,卡片可以有多个应用对应)。
终端支持的应用列表;
PSE文件名;
6. 应用选择的命令:SELECT , READ RECORD
7. SELECT 可以选择PSE目录选择方法或者AID列表选择方法;
8. READ RECORD读取支付系统目录,与PSE相关联的基本文件。
9. 目录选择方法:“1PAY.SYS.DDF01”搜索树型卡片文件结构,得到匹配的候选应用列表;(卡片可选,终端必须支持。终端先尝试使用目录选择方法。)
选择PSE后,如果卡片返回不支持或读取目录入口为空,则使用AID列表方法选择。
先选取PSE,根据卡片对PSE返回的SFI逐个读取记录,根据入口对应的ADF和选择指示器(部分匹配OR全匹配)加入候选列表。
10. AID列表方法:依次SELECT,如果卡片也支持,则加入候选应用列表。
发送第一个AID作为文件名进行SELECT,如果6A81,命令不支持,则不再选择。如果返回6283或其他则重新选择下一个,如果返回9000成功而且DF名与AID长度相同,则加入候选列表并选择下一个。如果返回9000但DF名称比AID长度长,先检查选择指示器是否支持部分匹配,如果支持则添加FCI信息到候选列表,然后将命令中P2参数设置为02表明选择下一个,直到卡片返回非 9000 62xx 63xx 则使用下一个AID进行选择。如此轮询整个AID列表。
11. 终端如果支持显示应用名,则必须同时支持持卡人确认功能。只有一个应用的时候,可自动选择或持卡人确认。如果多个应用,按照优先级别显示,等待持卡人确认,如果未确认一个应用,交易终止。如果优先级一样,应用顺序可以按读出顺序或自行安排顺序。
12. 选择一个应用后,终端再向卡片发送select命令,获取FCI数据,如果卡片没有返回成功,则重新选择。
13. PSE为DDF,读取记录,获取入口后,得到ADF,终端也支持,就将此ADF的应用加入候选列表。
14. SELECT应用后,卡片返回FCI,如果PDOL存在,返回PDOL。PDOL决定了GPO的响应数据,GPO的应答应该包含AFL和AIP。根据卡片对GPO的应答是否为9000,如果成功,则执行读取应用数据。否则清除该应用,重新回到选择应用阶段。
15. 卡片的GPO中响应了AFL,AFL决定要从卡片读取的交易数据记录,每个AFL项(四个字节)代表了卡片一个文件中的连续记录。每个AFL项(四个字节),从第一个记录开始,读到最后一个记录。最后一个记录是指卡片的状态返回值不是 90000。期间如果有不能识别的TAG,POS不应该终止交易,而是保留准备后用。
16. 读取记录过程中,同一个标签现在或者以前已经存在、缺少必须有的数据、数据格式错、状态字不是9000—以上三种情况应该终止交易。
17. 对于返回的持卡人姓名,或者持卡人姓名扩展,长度不需要做合法性判断,同时返回也可接收。
18. 读取记录后,SDA,DDA,CDA用读应用数据时建立的静态认证数据列表验证带签名的静态数据。
19. 支持脱机数据认证,终端应支持非对称密码算法和哈希算法。所支持的RSA公钥长度最大可至248字节。
20. 脱机数据认证方法如下:SDA:验证卡内数据的正确性;DDA:验证卡内数据的正确性和卡的合法性;CDA:指DDA和应用密文生成结合,提供对卡内数据,卡片本身,交易安全的认证。--在一个交易中,最多执行一种脱机数据认证方法。卡片支持的脱机认证方法在AIP中指示,终端支持的脱机认证方法在终端性能中指示。根据这两个指示得到的共同支持情况决定本次交易采用的脱机数据认证,优先次序为:CDA,DDA,SDA。
21. TSI:交易状态信息,包含指示执行了某种脱机数据认证方法的标志位。
22. TVR:终端验证结果,包含指示没有任何一种脱机数据认证方法被执行的标志位。
23. 静态数据认证:
SDA之前,POS从收单行处得到CA公钥,从卡片读取到RID,CA公钥索引,发卡行公钥证书、指数和余项,签名的静态应用数据,静态数据认证列表,需要认证的静态数据。
过程如下:
POS通过RID和索引定位使用的CA公钥,使用CA公钥验证发卡行公钥证书并获取发卡行公钥。通过发卡行公钥对签名的镜头应用数据进行验证。执行了此步骤,TSI(交易状态信息)中的“脱机认证被执行”置1,如果失败,TVR中的“脱机静态数据认证失败”置1。
24. 动态数据认证:DDA之前,POS得到的数据除了上面SDA的数据以外,还多了:IC卡公钥证书在、指数和余项,签名动态应用数据—以上四项是卡片处获取到的。此外还有POS自身的数据参与运算,包括DDOL,不可预知数。使用内部认证命令发送DDOL请求动态签名。
过程如下:
POS通过RID和索引定位使用的CA公钥使用CA公钥验证发卡行公钥证书并获取发 卡行公钥。通过发卡行公钥验证IC卡公钥证书并获取IC卡公钥。终端向卡片发送内部 认证命令,获得签名的动态应用数据。终端利用IC卡公钥签名并验证动态应用数据。 如果执行了DDA,TSI(交易状态信息)中的“脱机数据认证被执行”位设为1。如果DDA 失败,TVR中的“脱机动态数据认证失败”位设为1。
25. 如果DDOL中不包含不可预知数,则DDA失败。
26. 复合动态数据认证:CDA。与DDA的区别在于签名的动态应用数据不是通过内部认证命令进行,而是通过生成应用密文命令产生。验证时比较应用密文。
27. CDA验证失败如果发生在第一次的GAC后,卡片返回TC则终端马上拒绝交易,卡片返回ARQC则执行第二次GAC并结束交易。如果CDA的验证失败发生在第二次GAC后,终端拒绝交易。
28. 脱机数据认证完成后,进行处理限制。--包括应用版本号,用途控制的检查,应用生效日期,失效日期的检查,发卡行国家代码的检查。
29. 选择应用,脱机认证,处理限制。下一步是持卡人验证。通过卡片提供的CVM列表,根据卡片和终端对持卡人验证方法的支持能力,执行相应的持卡人验证方法。目前包括:脱机明文PIN,联机PIN,签名,CVM失败,No CVM,签名和脱机明文PIN组合,证件出示。持卡人验证中如果使用脱机明文PIN,需要使用GET DATA 和 VERIFY这两个命令。
30. PIN输入次数只剩下一次的时候,终端应显示“最后一次PIN输入”。
31. 最低限额用于控制交易当前交易金额或同一张卡片连续几笔交易累积金额超过某个数值时则要求联机授权。
32. 持卡人验证后,进行终端风险管理。终端需要从卡片获得的数据包括:应用主账号,交易计数器,联机计数器寄存器,连续脱机交易下限和上限。还有终端自身数据:授权金额,用于偏置随机选择的最大目标百分比,随机选择的目标百分比,终端最低限额,TVR,偏置随机选择阀值,交易日志,交易状态信息。
33. 终端风险管理包括:异常文件检查,商户强制交易联机,最低限额,随机交易选择(终端根据当前交易的金额随机决定交易是否联机授权。交易金额小于偏置随机选择阀值,则执行随机选择。比较终端随机数与目标百分比,随机数大于目标百分数,则不作联机处理。交易金额大于偏置随机选择阀值,小于终端最低限额,应用进行偏置随机选择。根据插值因子计算交易百分比与随机数相比。交易金额大于终端最低限额的,不进行随机选择,而是进行最低限额检查而进行联机处理。),频度检查(如果连续脱机交易次数下限和连续脱机交易次数上限都存在,终端应执行频度检查。终端向卡片发送命令取上次联机ATC寄存器和ATC,如果这两个数的差值大于连续脱机交易次数下限,设置“超过连续脱机交易次数下限”位为“1”,上限也一样。),新卡检查(如果上次联机ATC寄存器的值为0,则置新卡位,要求联机处理。)。
34. 支持脱机交易的联机终端必须支持频度检查,要求卡片在连续脱机交易一定次数后要求进行一次联机交易。
35. 终端行为分析是指根据终端和卡片的设置决定如果出现以下的情况该如何处理:卡片出现在异常文件,商户强制交易联机,交易超过最低限额,交易被随机进行联机处理,频度检查交易笔数超限,本卡为新卡。
36. 终端行为分析过程,终端分别应用发卡行在卡片中和收单行在终端中设定的规则,判断脱机处理的结果,以决定交易是否可用脱机批准、脱机拒绝或者联机授权。包括两个步骤,首先检查TVR中的脱机处理结果决定交易是否脱机批准,脱机拒绝或联机授权,需要TVR与发卡行行为代码(IAC)和收单行的终端行为代码(TAC)进行比较,得到结果后,执行第二步:请求相应的应用密文。
37. 终端行为分析中的交易拒绝和联机请求都不成立,则终端请求脱机批准的应用密文,请求交易证书。
38. 终端行为分析后,根据比较IAC/TAC/TVR的结果,向IC卡发送第一次GAC命令,请求适当的密文。终端请求的密文类型即终端目前对交易结果的判断不是最终的,还要通过GAC命令得到卡片对交易的评估结果。
39. 如果交易要求进行复合动态数据认证(CDA),且卡片决定返回TC或ARQC,则GAC返回签名数据后终端要进行CDA处理。
40. 对于第一次GAC的结果,如果卡片返回ARQC,终端则向主机发送联机报文,报文中包含ARQC。
41. 如果收到联机响应后需要进行发卡行认证,则终端必须向卡片发送外部认证命令进行发卡行认证。发卡行认证是指:发卡行的返回数据可以包括对卡片的发行后更新命令和发卡行生成的密文,该密文可以用于卡片对发卡行的合法性进行认证。
42. 如果终端需要进行CDA,卡片在GAC中相应AAC,则直接拒绝交易。如果卡片相应TC或ARQC,终端执行CDA并成功后,进行标准的联机处理。
43. 在执行了第一次GAC后,如果GAC中请求了TC或ARQC而卡片返回了ARQC,而且终端具有联机处理能力,则发送联机请求道后台。如果终端请求AAC而卡片返回ARQC或TC,或者在终端请求ARQC的时候,卡片返回TC,这两种情况之一终端都必须终止交易。下面的任何一个情况则需要执行交易结束功能:CDA执行了但失败,卡片相应AAC或TC,卡片相应ARQC但终端没有联机处理能力。
44. 如果第一次GAC后卡片相应ARQC,以下两个条件同时满足,则执行发卡行认证:联机授权响应中包含发卡行认证数据,AIP显示卡片支持发卡行认证。但如果满足下面任一条件则需要进行交易结束处理:联机授权响应中不包括发卡行认证数据,AIP表明卡片不支持发卡行认证。第一个GAC命令中IC卡返回TC或AAC,则交易脱机授权批准或拒绝。如果第一个GAC返回TC且CDA不执行或成功,授权响应码为Y1,脱机批准。如果第一个GAC返回TC或ARQC且CDA失败,授权响应码为Z1,脱机拒绝。如果第一个GAC返回AAC,授权响应码为Y1,脱机拒绝。
45. 终端获得收单行的返回数据,包括授权码,授权响应代码,发卡行认证数据,发卡行代码等。
46. 收单行在相应报文中收到发卡行脚本,则必须向终端发送发卡行脚本。目前借记贷记规范中支持最多一个发卡行脚本,但一个发卡行脚本中可以包含多条命令。无论发卡行,卡片是否批准交易,终端应该执行发卡行脚本。正常情况下,终端不应该收到多个脚本,也不应该收到标签为“71”的脚本。脚本处理完成后,终端才能显示交易结果。
47. 如果请求了联机处理但终端不支持联机处理或联机处理未能完成,则终端和卡片进行附加的分析决定脱机批准或拒绝。
48. 在执行了CDA且执行失败,终端进行以下处理:如果第一次GAC请求的是TC,则终端必须脱机拒绝交易。如果第一次GAC请求的是ARQC,则在第二次GAC中请求AAC。
49. 联机授权成功完成,终端向卡片发送第二个GAC命令请求附加卡片分析和最终应用密文。如果发卡行批准交易,终端请求TC。如果同时脱机数据认证要求执行CDA,则第二次GAC命令的P1参数中设置要求执行CDA。如果发卡行请求参考,终端提示打电话请求授权,根据授权结果请求相应密文,如果终端不支持参考,则终端请求AAC。如果授权响应码未指明,则请求AAC。
50. 终端必须在脚本处理完成以后再向持卡人显示交易批准或者拒绝。如果进行了脚本处理,终端必须在适当的时候向发卡行主机发送报文。
51. 在脱机数据认证阶段要求执行CDA且在第二个GAC命令中设置了CDA位,终端处理CDA,如果IC卡相应AAC,终端不认为CDA失败而结束交易,如果卡片相应TC,终端用IC卡公钥验证签名,如果不正确,CDA失败,对TVR置位。
52. 如果第二个GAC中请求AAC,无论卡片相应如何,终端均拒绝交易。
53. 如果第二个GAC,卡片响应TC,不执行CDA情况下,批准交易并交易结束;需要CDA的情况下,CDA成功则批准,否则拒绝。如果卡片响应AAC,终端拒绝并结束交易。
54. 如果要求联机交易,但终端不支持联机或者联机不成功,终端根据(发卡行行为代码)IAC缺省和(终端行为代码)TAC缺省进行行为分析,然后根据结果向IC卡发第二个GAC.
55. 终端分析第一次GAC的响应,如果是AAC,拒绝并结束交易。如果是TC且CDA失败,拒绝并结束交易。如果是TC且CDA成功,批准并结束交易。如果是ARQC,意味着会有第二次GAC。如果ARQC且CDA失败,置授权响应码,然后发第二次GAC。如果CDA非失败,即进行联机处理,联机成功则对GAC的P1置TC或AAC,如果无法联机或联机失败,根据IAC(缺省)、TAC(缺省)、TVR置响应码。然后发第二次GAC。第二次GAC后,先处理发卡行脚本。第二次GAC后,终端请求TC,或者卡片响应TC,或者执行CDA失败,终端都拒绝并结束交易,否则批准交易。
56. 数据元格式:
57. a-每个字节包含一个字符的字母(a-z A-Z); 左对齐,右补0;
58. an-字母或数字(a-z,A-Z, 0-9); 左对齐,右补0;
59. ans-字母数字和特殊字符;
60. b-二进制或位的组合;
61. cn-压缩数字,BCD码,左对齐,右补F;
62. n-数字,BCD码,右对齐,左补0;
63. var-可变数据。
64. 下面的数据在首次安装时初始化:终端性能,终端附加性能,终端IFD序号,终端国家代码,终端标识,终端类型,终端交易货币,终端货币指数。
65. 下面的数据允许终端布放后通过下载更新:终端支持应用AID列表,CA公钥,终端行为代码TAC,最低限额,随机选择阀值,随机选择目标百分数,偏置随机选择最大目标百分数,商户标识,商户分类码和收单行标识。
66. 终端应支持的交易命令:
67. 外部认证,用于发卡行认证;
68. 生成应用密文,用于卡片行为分析;
69. 取数据,用于从IC卡中获取交易数据(应用交易计数器,上次联机ATC寄存器,PIN重试次数)
70. 获取处理选项,应用选择后获取IC卡支持功能以及应用文件定位器;
71. 内部认证,用于动态数据认证;
72. 读记录,用于读取应用数据文件;
73. 选择,用于应用选择;
74. 验证,用于PIN验证。
75. 授权响应码:Y1: 脱机批准; Z1: 脱机拒绝;Y3: 无法联机,脱机被批准;Z3:无法联机,脱机被拒绝。