EMV笔记(总体流程)
C-00 a4 04 00 0e 00 (00 a4:选择命令 P1:04:通过名称选择 P2:00 0e:数据长度14) Len: 14 31 50 41 59 2e 53 59 53 2e 44 44 46 30 31 (1PAY.SYS.DDF01) R-SW: 90-00 Len: 34 (表B.26定义了成功选择PSE后回送的FCI) 6f 20 84 0e 31 50 41 59 2e 53 59 53 2e 44 44 46 (6F:FCI:模板文件控制信息模板 84:DF名字:1PAY.SYS.DDF01) 30 31 a5 0e 5f 2d 04 7a 68 65 6e 9f 11 01 01 88 (A5 (FCI数据专用模板) 14(长度)) 01 01 88 (目录基本文件的SFI) 01(长度) 01 (短文件标识符(Short File Identifier)) 5F2D (语言选择) 02 7A68 9F11 (发卡行代码表索引) 01 01 BF0C (发卡行自定义数据FCI)05 9F4D020B0A
C-00 b2 01 0c 00 00 (00 b2:读记录 P1:记录号 P2:应用控制参数(0C:读p1指定记录) GETDATA 获取数据) R-SW: 90-00 Len: 45 (70:标签, 2b:数据域长度, 61:标识符, 29:目录入口1长度) 70 2b 61 29 4f 08 a0 00 00 03 33 01 01 01 50 0a (4F:ADF名称:aid)50 42 4f 43 20 44 65 62 69 74 87 01 01 9f 12 0d (50:应用标签(PBOC Debit), 87:应用优先权标识符: ) (多个候选应用列表的时候,终端ICS支持持卡人确认的话就让持卡人确认,不支持的话就按优先级,,不看每个应用的b8 只有一个候选应用时要看每个应用具体的b8,如果b8为1,需要让持卡人确认的,正常情况下多应用都是需要列出来,然后应用优先级高的排前面,正常情况终端都支持持卡人确认功能) 49 43 42 43 20 50 62 6f 63 43 61 72 64 (9f 12:应用优先名称:ICBC PbocCard )
C-00 b2 02 0c 00 00 R-SW: 6a-83 SltDDF PrsSFIofDDF Ret: 01 PSE SLT end:00 EA_EMV_AppSelection Return Len: 65 01 a0 00 00 03 33 01 01 01 00 00 00 00 00 00 00 00 08 50 42 4f 43 20 44 65 62 69 74 00 00 00 00 00 00 0a 49 43 42 43 20 50 62 6f 63 43 61 72 64 00 00 00 0d 01 01 7a 68 65 6e 00 00 00 00 04 01 01
● (PBOC规范5 )B.12.2 命令报文:
C-00 a4 04 00 08 00(选择具体应用a0 00 00 03 33 01 01 01) Len: 8 a0 00 00 03 33 01 01 01 R-SW: 90-00 Len: 94 6f 5c 84 08 a0 00 00 03 33 01 01 01 a5 50 50 0a 50 42 4f 43 20 44 65 62 69 74 87 01 01 5f 2d 04 7a 68 65 6e 9f 11 01 01 9f 12 0d 49 43 42 43 20 50 62 6f 63 43 61 72 64 9f 38 0c 9f 7a 01 9f 02 06 5f 2a 02 df 69 01 bf 0c 14 d1 02 31 32 c2 04 49 43 42 43 9f 4d 02 0b 0a df 4d 02 0c 0a
C-80 ca 9f 51 00 00 (P1\P2:要访问数据的标签) R-SW: 90-00 Len: 5 9f 51 02 01 56 C-80 ca df 71 00 00 R-SW: 6a-88
● AFL(应用文件定位器),每个AFL包括4个字节,AFL的定义如下: 包含终端将要读取用来交易处理的卡片数据文件的SFI和记录范围
字节1:bit8-bit4:SFI(短文件标识符) bit3-bit1:000
字节2:文件中要读的第1个记录的记录号(不能为0)
字节3:文件中要读的最后一个记录的记录号(大于或等于字节2)
字节4:从字节2的记录号开始,用于静态数据记录的个数(从0开始,不大于(字节3)-(字节2)+1)
● AIP列出了交易在处理过程中执行的功能;AFL列出交易需要读出的数据存放的短文件标识符、记录号、记录个数以及脱机数据认证需要的静态签名数据的存放位置。
Len: 12 83 0a 00 00 00 00 00 00 01 01 56 00 (83+PDOL的部分,直接把Tag 9F38之后的数据部分填充进来即可,如果没有PDOL那么就是83+00 ) R-SW: 90-00 Len: 20 80 12 7c 00(AIP) 08 01 01 00 10 01 04 00 18 01 01 01 01 20 01 00(AFL) 返回格式:80 + 长度 + 应用交互特征(AIP)+应用文件定位器(AFL)
C-00 b2 01 0c 00 00 (08 01 01 00根据AFL发送读记录命令, 发送第1条命令:SFI为01,记录号为01,01:p1,记录号 0C:SFI) R-SW: 90-00 Len: 102 70 64 57 13 62 22 03 10 01 00 76 15 39 1d 27 11 (57:二磁道等效数据) 22 03 00 99 91 71 4f 5f 20 14 20 20 20 20 20 20 (5f 20:持卡人姓名) 20 20 20 20 20 20 20 20 20 20 20 20 20 20 9f 1f (9f 1f:磁道一自定义数据) 18 30 30 37 31 34 30 30 30 30 30 30 30 30 30 30 33 30 30 30 30 30 30 30 30 5f 34 01 01 9f 61 12 (5f 34:应用主帐号序列号) 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 9f 62 01 20 (9f 62 :证件类型)
C-00 b2 01 14 00 00 (10 01 04 00) R-SW: 90-00 Len: 254 70 81 fb 90 81 f8 21 e4 40 c5 04 29 cd 94 7d 33 (90:发卡行公钥证书:用于脱机数据认证) 13 2c ba 1b 9b 10 57 7c 1e 15 e1 11 0c eb 79 7a ba f8 c0 5b 39 64 77 57 33 81 0c af 81 2c fe 8b b5 cd 6c 56 6b 79 28 4a ca be 9a 1b 3f 2e 27 b2 fb 43 2f a7 c7 b7 ba fa d3 45 96 62 7e b1 a9 82 34 72 af 57 57 87 fd 36 9d 3c 1e cd 31 f4 fe cb c8 c8 93 82 75 29 1f 51 96 93 79 a8 ce 39 08 d2 1f c5 a1 35 34 a2 7d 49 7a 0b 0c 58 3f 32 0a e3 a9 84 f2 4b 82 11 33 2a dc c9 0f bb 0d ce b0 77 aa 04 88 9c 2f af c4 15 da 6e 60 fd b7 90 75 16 69 6a 60 d2 88 95 90 b4 eb 8a 20 de ab 89 92 b4 22 40 05 34 0b 3a bc 05 a2 7b 93 71 ac 9b fd 8b c0 9b 4f ea 3a 6a 6b e7 a2 ac ba 5d a5 a4 f5 10 03 e6 fb 09 60 66 b6 0f 63 da 76 64 aa ae c1 41 86 40 d6 e4 d7 ec 32 e1 07 10 64 ec 8d 61 c4 d8 cc d8 8f ee 32 99 9d 4a c9 20 3a c1 2b d6
C-00 b2 02 14 00 00 (18 01 01 01根据AFL发送读记录命令, 发送第1条命令: SFI为02,记录号为01) R-SW: 90-00 Len: 13 70 0b 9f 32 01 03 8f 01 04 9f 47 01 03 (发卡行公钥指数) (8f:公钥索引) C-00 b2 03 14 00 00 R-SW: 90-00 Len: 182 70 81 b3 93 81 b0 87 e2 27 9f 2a e5 b8 7d 25 0f (93:签名的静态应用数据:SDA) ed 84 7d 69 1e 76 29 75 d8 3e 25 f2 f6 e1 0c 17 5e eb 30 96 fa 39 94 4f f2 4f d5 41 7a 3d 20 ff e7 81 c2 62 4e 48 e0 10 1a b5 96 b8 e5 de 85 1f 68 62 8f 2b b6 ee 2c 83 24 96 d8 17 0e cc 70 c3 9f f1 b6 b0 10 fc 36 80 e2 2e 83 b0 5d 02 f3 d9 3d 72 52 de ce 9b 8f e0 81 17 d8 da 1c 94 f9 78 b3 e2 5d 21 4e ef 57 b9 f7 52 21 2f 8c 5f a5 25 41 05 4e 95 d3 97 72 d8 30 2a ce 35 37 33 b9 81 8c 24 07 8c f5 ed a4 3e 63 17 1e 32 a0 fa 4d 27 47 ee 60 be 15 c5 c6 26 39 fd 97 6f 20 65 12 19 c6 13 5b ad 4e 06
C-00 b2 04 14 00 00 R-SW: 90-00 Len: 183 70 81 b4 9f 46 81 b0 15 4c 65 cb 9f 65 94 a7 c8 (9F6:IC卡公钥证书) 1f 41 7e 24 3e e3 70 87 e5 cf ad 46 87 01 40 9c 03 e4 ac 89 d2 4d 0d 43 05 fb 88 9a 83 58 f3 61 0a 8d 04 48 fb 42 06 78 9e a4 b2 7e eb 4f a4 f9 8b 0a c2 5d a1 55 2e 27 98 d4 dc bd 76 a6 08 f8 17 6d 2b e3 66 a3 aa b8 dd b0 75 0c 33 9b dd 16 65 6b e7 81 1c e4 36 51 ca 7a 0a a8 19 a1 f6 4d 4d e2 b0 90 55 79 39 1d 1b c2 59 b5 27 e7 52 18 c8 e2 c0 98 2e ce 12 8f 60 26 9e ef 13 01 db 71 d1 7d 3e 06 1b c0 15 92 52 95 f4 a6 66 92 28 3c 8b 58 7a ae b4 c4 85 c9 81 0a 61 d6 2a 37 98 1a a3 41 48 11 10 2b a0
C-00 b2 01 1c 00 00 R-SW: 90-00 Len: 55 70 35 5a 0a 62 22 03 10 01 00 76 15 39 1f 5f 24 03 27 11 30 5f 28 02 01 56 9f 07 02 ff 00 5f 25 (5f 25:应用生效日期) 03 16 12 01 9f 08 02 00 30 5f 30 02 02 20 9f 42 (9f 08:应用版本号) (5f 30:服务码) (9f 42:应用货币代码) 02 01 56 9f 4a 01 82 C-00 b2 01 24 00 00 R-SW: 90-00 Len: 105 (8e:CVM list) 70 67 8e 0e 00 00 00 00 00 00 00 00 02 03 1e 03 (IAC) 1f 00 9f 0d 05 fc 50 8c 00 00 9f 0e 05 04 10 00 (9f 0e:发卡行行为代码:拒绝) 00 00 9f 0f 05 f8 70 8c 98 00 8c 1b 9f 02 06 9f (9f 0f:发卡行行为代码:联机) 03 06 9f 1a 02 95 05 5f 2a 02 9a 03 9c 01 9f 37 (9f 0d:发卡行行为代码:缺省) 04 9f 21 03 9f 4e 14 8d 1a 8a 02 9f 02 06 9f 03 06 9f 1a 02 95 05 5f 2a 02 9a 03 9c 01 9f 37 04 9f 21 03 9f 49 03 9f 37 04
●静态数据认证由终端使用一种基于公钥技术的数字签名方案来完成。发现在个人化以后对数据的未经授权的改动。
静态数据认证要求存在一个认证中心,这个认证中心具有高级别的安全性来签名发卡行公钥。每一台符合本规范的终端都必须为每一个它能识别的应用保存相应的认证中心的公钥。
2.根CA用自己的私钥SCA对发卡行公钥PI进行数字签名,产生发卡行证书,连同根CA公钥信息返回给发卡行密钥管理系统;
3.发卡行密钥管理系统用发卡行私钥SI对卡片静态数据进行数字签名,将签名结果和发卡行证书传送至发卡系统;
4.发卡系统在个人化时将发卡行证书和数字签名写入每一张卡片中;
5.根CA将其公钥PCA,经收单行传送至终端管理系统;
6.收单行终端管理系统把根CA公钥PCA通过远程下载至终端;
7.IC卡进行脱机交易的静态数据认证,受理终端完成如下过程:
终端从卡片中读取出发卡行证书及签名数据,使用CA公钥PCA恢复出发卡行公钥PI;
终端使用恢复的发卡行公钥PI解密卡片签名数据;
终端将解密结果与卡片静态数据进行比对,保存比对结果;
8.将验证结果返回给卡片。
C-00 88 00 00 04 00 Len: 4 (1:认证中心公钥:终端已经下载过公钥,通过RID和8F(公钥索引,读记录获取):锁定认证中心公钥) ef 08 3f 1a (2:恢复发卡行公钥:) R-SW: 90-00 Len: 98 80 60 ae e5 aa 73 89 34 ad cc cc 54 4b 45 c6 23 a5 3a 65 9b bd d0 50 5f 50 be ce ed 7c ac da 93 43 6b 92 a2 99 52 b2 56 4e 3b b8 50 d8 09 b2 6c 4d 51 7d 9f f1 74 fa 2d e2 be 46 a5 59 fd 2e e0 fd 11 b3 4e 9b 28 a4 60 02 30 21 22 d6 76 5c e3 2e 8e 84 fd 96 e2 a6 33 2e 60 fc c1 55 92 fe 5c 26 fe
CVM LIST:[Tag 8E] Len: 14 (02:联机加密PIN验证 03:如果终端支持)(85页) 00 00 00 00 00 00 00 00 02 03 1e 03 1f 00
● 持卡人认证并不是必备的EMV流程, 终端是否应该执行持卡人认证, 决定因素在两点. 一是AIP表明是否支持, 二是在读数据阶段,卡片是否返回CVM list:
字节9 (CVMCode):
bit 8: 0 = 只有符合此规范的取值(如果不为1,说明有自定义的值)
bit 7:
1 = 如果此CVM失败,应用后续的
0 = 如果此CVM失败,则持卡人验证失败
bits 6–1 (CVM Type):
000000 = CVM失败处理
000001 = 卡片执行明文PIN核对
000010 = 联机加密PIN验证
000011 = 卡片执行明文PIN核对+签名(纸上)
000100 = EMV保留
000101 = EMV保留
011110 = 签名(纸上)
011111 = 不需CVM
000110–011101 = 保留给加入的支付系统
100000–101111 = 保留给各自独立的支付系统
110000–111110 = 保留给发卡行
111111 = RFU
CVM条件码:表示什么时候使用该方法
0 总是执行
1 如果是现金或返现交易
2 如果不是现金或返现交易
3 如果终端支持此CVM
4 如果交易金额小于金额X
5 如果交易金额大于金额X
6 如果交易金额小于金额Y
7 如果交易金额大于金额Y
7:脱机加密PIN原理:终端从卡片中获取PIN加密公钥证书(可在read data阶段读取),从证书中恢复PIN加密公钥. 当用户输完PIN时, 终端用此公钥加密该PIN,然后能过指令把加密数据传给卡片,卡片收到数据后,先用存在自身的PIN加密私钥解密,然后再验证该PIN的正确性.)
CVM LIST:[Tag 8E] Len: 14 (02:联机加密PIN验证 03:如果终端支持)(85页) 00 00 00 00 00 00 00 00 02 03 1e 03 1f 00 Term Capp:[Tag 9F33] Len: 3 e0 f0 c8 *************************************** EA_EMV_NewCardHolderValidate RET=c2 请求联机PIN call EA_EMV_NewCardHolderValidate:cCmd=00 CVM flg=01 EA_EMV_NewCardHolderValidate RET=1 Call EA_EMV_ActionAnalysis emvShowActionCode TVR: Len: 5 00 80 88 80 00
C-80 ae 80 00 34 00 (控制参数80: bit8,bit7 :00=AAC--拒绝 、 01=TC--批准交易、 10=ARQC--联机、 11=RFU) Len: 52 00 00 00 00 00 01 00 00 00 00 00 00 01 56 00 80 88 80 00 01 56 18 05 15 00 ef 08 3f 1a 11 02 02 d2 f8 c1 aa b2 e2 ca d4 c9 cc bb a7 00 00 00 00 00 00 00 00 R-SW: 90-00 Len: 32 80 1e 80 00 38 6e b0 d2 f3 72 ed 1b da 07 01 01 ( 80: 模板此模板的响应数据为: 密文信息数据(L:1:80) + 应用交易计数器(L:2:00 38) 03 a0 28 02 01 0a 01 00 00 00 00 00 00 e1 9e 24 + 应用密文L8:(6e b0 d2 f3 72 ed 1b da ) + 发卡行应用数据) TM AA=0 CDA reslut 00 GetBaseData TAG state=0
-
91 0A E3 44 EE 82 E0 0C A8 76 30 30 72 12
-
86 10 04 DA 9F 79 0A 00 00 00 02 00 00 B3
-
AB A7 E8 00
-
04 DA 9F 79 0A 00 00 00 02 00 00 B3 AB A7 E8 00
-
send:15
-
04 DA 9F 79 0A 00 00 00 02 00 00 B3 AB A7 E8
-
rec:3
-
90 00
-
Send:40
-
80 AE 40 00 22 30 30 00 00 00 00 01 00 30 30 30
-
30 30 30 01 56 00 00 04 00 00 01 56 11 03 30 00
-
1C 22 24 13 11 41 45 00
-
-
REC:35
-
80 1E 40 06 A0 8B 35 9C A6 4B CC 4F 06 07 02
-
01 03 60 00 02 01 0A 01 00 00 00 07 00 A1 38 E4
-
BB 90 00