PBOC/EMV之持卡人驗(yàn)證
文章出處:http://botanicstilllife.com 作者: 人氣: 發(fā)表時(shí)間:2012年05月27日
盡管PBOC基本是中文版的EMV, 但還是需要根據(jù)國(guó)情做一些適當(dāng)?shù)牟町惢幚? 這一點(diǎn)在持卡人認(rèn)證方面有很明顯的體現(xiàn).EMV支持脫機(jī)密文PIN,PBOC不支持. 但PBOC支持身份證件驗(yàn)證,EMV不支持. 身份證件驗(yàn)證是根據(jù)國(guó)情增加的,誰(shuí)讓咱們國(guó)家證多呀.
持卡人認(rèn)證并不是必備的EMV流程, 終端是否應(yīng)該執(zhí)行持卡人認(rèn)證, 決定因素在兩點(diǎn). 一是AIP表明是否支持, 二是在讀數(shù)據(jù)階段,卡片是否返回CVM list.
PBOC 支持的CVM如下:
[plain]- 脫機(jī)明文PIN驗(yàn)證;
- 聯(lián)機(jī)PIN驗(yàn)證;
- 簽名;
- CVM失??;
- 無(wú)需CVM;
- 簽名與脫機(jī)明文PIN驗(yàn)證組合;
- 身份證件驗(yàn)證。
EMV 支持的CVM如下:
[plain]- 脫機(jī)明文PIN驗(yàn)證;
- 聯(lián)機(jī)PIN驗(yàn)證;
- 簽名;
- CVM失?。?
- 無(wú)需CVM;
- 簽名與脫機(jī)明文PIN驗(yàn)證組合;
- 脫機(jī)密文PIN驗(yàn)證。
持卡人認(rèn)證在EMV中叫CVM(cardholder verification method), 在一筆交易中,CVM可以有多個(gè), 所以就有了CVM List的概念.
一個(gè)CVM包括以下幾項(xiàng)內(nèi)容:
金額X
金額Y
CVM 代碼 指出如果這個(gè)CVM 失敗,是執(zhí)行下一CVM 還是認(rèn)為CVM 失敗
CVM 類型 (就是上面列出的那些方法)
CVM 條件 表示在什么條件是才用該方法,有以下幾個(gè):
[plain]- 0 總是執(zhí)行
- 1 如果是現(xiàn)金或返現(xiàn)交易
- 2 如果不是現(xiàn)金或返現(xiàn)交易
- 3 如果終端支持此CVM
- 4 如果交易金額小于金額X
- 5 如果交易金額大于金額X
- 6 如果交易金額小于金額Y
- 7 如果交易金額大于金額Y
說(shuō)著太抽象,舉個(gè)例子:
[plain]- * Tag 8E Cardholder Verification Method (CVM) List
- *- Len 0A
- *- Value 00 00 00 00 00 00 00 00 04 00
CVM list的tag是8E, 長(zhǎng)度是10個(gè)字節(jié). 前四個(gè)字節(jié)是金額X, 再往后四個(gè)字節(jié)是金額Y,
04 同時(shí)表示如果此CVM失敗,則持卡人驗(yàn)證失敗,而且驗(yàn)證方法為脫機(jī)加密PIN.
最后一個(gè)字節(jié)00表示”總是”,即這個(gè)方法是總是要執(zhí)行的.
當(dāng)然CVM list的長(zhǎng)度并不局限于10個(gè)字節(jié), 它的長(zhǎng)度準(zhǔn)備的應(yīng)該表示為8+2*n(n為正整數(shù)). 終端應(yīng)該按照順序讀取CVM list,并使用滿足條件的第一個(gè)方法,如果某個(gè)方法不可用,應(yīng)繼續(xù)遍歷其它方法, 如果所有方法都不可用,則持卡人驗(yàn)證失敗.
在所有的持卡人驗(yàn)證方法中, 脫機(jī)加密PIN應(yīng)該是最復(fù)雜的一個(gè), 這里詳細(xì)介紹一下它的原理及流程.
脫機(jī)加密PIN,簡(jiǎn)單來(lái)說(shuō), 原理如下:
終端從卡片中獲取PIN加密公鑰證書(可在read data階段讀取),從證書中恢復(fù)PIN加密公鑰. 當(dāng)用戶輸完P(guān)IN時(shí), 終端用此公鑰加密該P(yáng)IN,然后能過(guò)指令把加密數(shù)據(jù)傳給卡片,卡片收到數(shù)據(jù)后,先用存在自身的PIN加密私鑰解密,然后再驗(yàn)證該P(yáng)IN的正確性.
詳細(xì)的步驟如下:
[plain]- 1 終端把用戶輸入的明文PIN按照一定的格式補(bǔ)位對(duì)齊, 然后用get challenge命令從卡片中取一個(gè)8字節(jié)的隨機(jī)數(shù).
- 2 終端自己產(chǎn)生一組長(zhǎng)度為N-17的隨機(jī)數(shù)(N為PIN加密公鑰的長(zhǎng)度), 然后把補(bǔ)位后的PIN,卡片中取的隨機(jī)數(shù)以及終端產(chǎn)生的隨機(jī)數(shù)拼接在一起, 與PIN加密公鑰做RSA運(yùn)算.
- 3 把上一步運(yùn)算的結(jié)果通過(guò)verify命令發(fā)給IC卡.
- 4 卡片用PIN加密私鑰解密數(shù)據(jù), 首先檢查解出來(lái)的8字節(jié)隨機(jī)數(shù)是否與自己產(chǎn)生的一致,然后卡片檢查恢復(fù)的數(shù)據(jù)頭字節(jié)是否有效, 最后一步是驗(yàn)證PIN是否合法. 只有所有的條件都滿足,脫機(jī)加密PIN才算成功.