转自:http://blog.youkuaiyun.com/freud_lv/article/details/7557702
EMV交易过程解析之一 Initiate Application
Michael 2006年7月7日
EMV标准定义了十一个过程,这些过程主要通过交易数据的认证、持卡人身份验证以及风险管理等来实现交易的安全,接下来我们将对这些过程逐一进行剖析,从而明白,为什么EMV交易是安全的。
我将把每个过程喻作一个函数,采用函数的语法进行解析。
初始化应用(Initiate Application)是持卡人进行应用选择后的第一个过程。
EMV交易过程解析之一 Initiate Application
Michael 2006年7月7日
EMV标准定义了十一个过程,这些过程主要通过交易数据的认证、持卡人身份验证以及风险管理等来实现交易的安全,接下来我们将对这些过程逐一进行剖析,从而明白,为什么EMV交易是安全的。
我将把每个过程喻作一个函数,采用函数的语法进行解析。
初始化应用(Initiate Application)是持卡人进行应用选择后的第一个过程。

2

3

4

5

6

7

8

9

10

11

12

13

EMV交易过程解析之二 Read Application Data
Michael 2006年7月7日
这个过程用来遍历ICC中的文件/记录/TLV对象,并保存在终端上。
Michael 2006年7月7日
这个过程用来遍历ICC中的文件/记录/TLV对象,并保存在终端上。
1
/**//*----------------------------------------
2
函数名称:ReadApplicationData
3
函数参数:
4
[IN] AFL(Application File Locator),AFL结构如下:
5
struct tAFLElement {
6
BYTE nSFI;
7
BYTE nFirstRecordNo; //the first (or only) record number to be read for that SFI.
8
BYTE nLastRecordNo; //the last record number to be read for that SFI.
9
BYTE nRecordNumToOfflineDataAuthentication; //the number of records involved in offline data
//authentication starting with the record number coded in the second byte.
10
}* pAFLList;
11
[OUT] DATA OBJECTS
12
[OUT] SW1 SW2(9000-success, others-fail)
13
函数处理:
14
终端给ICC发送READ RECORD命令。读取AFL指定的文件里的记录内容并返回数据供终端保存及使用。
15
-----------------------------------------*/


2

3

4

5

6

7

8

9

//authentication starting with the record number coded in the second byte.
10

11

12

13

14

15

EMV交易过程解析之三 Offline Data Authentication
Michael 2006年7月14日
Michael 2006年7月14日

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

EMV交易过程解析之四 Processing Restrictions
Michael 2006年7月14日
Michael 2006年7月14日

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

EMV交易过程解析之五 Cardholder Verification
Michael 2006年7月20日
Michael 2006年7月20日
/*----------------------------------------------------------------
2
名称:CardholderVerification
3
参数:
4
[IN] AIP(Application Interchange Profile)
5
[IN] CVM List(Tag '8E')
6
包括两个4-BYTE的AMOUNT FIELDs和数个2-BYTE的CVRs(Cardholder Verification Rule),每个CVR包括两个字节,分别是CVM(Cardholder Verification Method,表示身份验证的可选方法) Codes和CVM Condition Codes(表示进行身份验证的条件)。
7
[OUT] TVR(Terminal Verification Result)
8
[OUT] TSI(Transaction Status Information)
9
处理:
10
终端判断CVR列表的第一个CVM Condition是否满足,如果满足则采用对应的CVM进行验证。如果验证成功则CV过程结束,否则需要检查该CVM Code的第7位,以决定是否需要读取第二个CVR元素继续验证。
11
如果第一个CVR的Condition不满足,或者该条件不被终端理解,则需要读取下一个CVR继续验证。
12
当其中只要有一个CVR验证成功,则CV成功结束,若所有验证都失败则CV失败。CV结果在TVR相应位中作设置。
13
几个典型的CVM方法有:Offline PIN, Online PIN, Signature, Combination CVMs.
14
----------------------------------------------------------------*/
2

3

4

5

6

7

8

9

10

11

12

13

14

EMV交易过程解析之六 Terminal Risk Management
Michael 2006年7月20日
/**/
/*----------------------------------------------------------------
2
名称:TerminalRiskManagement
3
参数:
4
[IN] AIP(Application Interchange Profile)
5
[IN] Terminal LOG
6
用于获得本次交易帐号的最近一次交易金额
7
[IN] TFL(Terminal Floor Limit - Tag '9F1B')
8
[IN] TPURS(Target Percentage to be Used for Random Selection - 终端数据)
9
[IN] TVBRS(Threshold Value for Biased Random Selection - 终端数据)
10
[IN] MTPUBRS(Maximum Target Percentage to be Used for Biased Random Selection - 终端数据)
11
[IN] LCOL(Lower Consecutive Offline Limit - tag '9F14')
12
[IN] UCOL(Upper Consecutive Offline Limit - tag '9F23')
13
[IN] ATC(Application Transaction Counter - tag '9F36')
14
[IN] LOAR(Last Online ATC Register - tag '9F13')
15
[OUT] TVR(Terminal Verification Result)
16
[OUT] TSI(Transaction Status Information)
17
处理:
18
包括:
19
[金额上限检验(Floor Limit checking)] 判断本次交易金额和上次交易金额的总和是否超过终端交易金额上限(Terminal Floor Limit),设置TVR相应位。
20
[在线交易判断(Random Transaction Selection)] 对于交易金额小于TVBRS的情况,终端需要产生一个1-99的随机数,如果该随机数小于等于TPURS则该交易需要在线验证。对于金额大于等于TVBRS但小于TFL的交易,终端需要比较产生的随机数和TTP(Transaction Target Percent),如果随机数小于等于TTP,则交易需要在线验证。其中,TTP=( (MTPUBRS-TPURS) * ((Amount,Authorised-TVBRS)/(TFL-TVBRS)) )+TPURS。若需要在线验证则设置TVR的相应位为1。
21
[交易周期校验(Velocity Checking)] 发送GET DATA命令读取ATC和Last Online ATC Register,若读取失败则校验结束并置TVR相应位。若读取成功则两值相减的结果同LCOL比较,若结果大于LCOL则该交易需要在线授权。若终端当时无法在线交易则可以继续离线交易的上限为UCOL,当UCOL次数达到时必须进行在线授权,否则交易应当被拒绝。若LOAR为0则要设置TVR的“新卡”位为1。
22
TRM执行完后置TVR和TSI相应位。
23
-----------------------------------------------------------------*/
Michael 2006年7月20日


2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

EMV交易过程解析之七 Terminal Action Analysis
Michael 2006年7月21日
Michael 2006年7月21日

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

EMV交易过程解析之八 Card Action Analysis
Michael 2006年7月21日
Michael 2006年7月21日

2

3

4

5

6

7

8

9

10

11

EMV交易过程解析之九 Online Processing
Michael 2006年7月24日
Michael 2006年7月24日
/*----------------------------------------------------------------
2
名称:Online Processing
3
参数:
4
[IN] ARQC(Authorization Request Cryptogram)
5
[IN] AIP(Application Interchange Profile)
6
[OUT] TVR(Terminal Verification Result)
7
[OUT] TSI(Transaction Status Information)
8
处理:
9
这是发卡行(ICC)和发卡行自身(主机)之间的一次对话。
10
当终端收到ICC的ARQC决策时需要进行在线授权。
11
具体地,ARQC(用发卡行的密钥对交易数据进行运算得到的一段代码)被包含在交易请求包中发送给主机,主机进行授权确认后返回交易响应包。
12
如果交易响应包中包含IAD(Issuer Authentication Data - tag'91'),终端检查AIP值看ICC是否支持IA(Issuer Authentication),如果支持则终端给ICC发送EXTERNAL AUTHENTICATE命令(一次交易只能发一次),根据ICC返回的命令执行结果设置TVR相应位。若终端不支持IA或交易响应包没有IAD数据,则不发送任何命令。
13
若EXTERNAL AUTHENTICATIE命令有被发送,则设置TSI的相应位为1。
14
-----------------------------------------------------------------*/
2

3

4

5

6

7

8

9

10

11

12

13

14

EMV交易过程解析之十 Issuer-to-Card Script Processing
Michael 2006年7月24日
Michael 2006年7月24日
1
/**//*----------------------------------------------------------------
2
名称:Issuer-to-Card Script Processing
3
参数:
4
[IN] Authorization Response Message(包含Issuer Script - Tag'71' or '72')
5
[OUT] TVR(Terminal Verification Result)
6
[OUT] TSI(Transaction Status Information)
7
处理:
8
这是发卡行(ICC)和发卡行自身(主机)之间的又一次对话。
9
主机可以在发给终端的交易响应包中包含一些特殊命令的脚本
10
(比如unblocking of an offline PIN命令,对于不同的发卡行命令迥异所以由发卡行直接发送)供ICC执行,终端只要将这些命令转发给ICC即可。
11
具体地,终端接收到主机的交易响应包后取出ICC执行脚本(Issuer Script-Tag'71' or '72', 每个响应包中可能包含多个执行脚本),终端对每个执行脚本进行解析得到该脚本的ICC命令序列(Tag-'86'),然后逐一按序给ICC发送ICC命令,如果ICC执行该命令失败则该脚本的后续命令不再执行,脚本执行结束;如果该命令执行成功则继续执行后续解析出来的命令,直到所有命令执行成功后该脚本的执行成功完成。
12
只要脚本被执行则设置TSI的"Script processing was performed"为1,若执行失败则设置TVR的相应位为1(对Tag'71'和'72'的脚本设置的TVR位不同)。
13
-----------------------------------------------------------------
*/


2

3

4

5

6

7

8

9

10

11

12

13

EMV交易过程解析之十一 Completion
Michael 2006年7月24日
Michael 2006年7月24日
/*----------------------------------------------------------------
2
名称:Completion
3
参数:
4
无。
5
处理:
6
这是EMV交易的终点站。
7
ICC卡返回TC(Transaction Certificate,当响应第一次GENERATE AC命令)或者AAC(Application Authentication Cryptogram,当响应第二次GENERATE AC命令)给终端预示ICC对所有EMV函数的执行结束(即授权或者拒绝交易)。
8
-----------------------------------------------------------------*/
2

3

4

5

6

7

8
