持卡人認證部分,emv和pboc是有區別的,emv有離線加密pin認證,pboc沒有;pboc有持卡人身份證件驗證,但是emv沒有。
持卡人驗證主要基於兩個資料要素,aip和cvm。
aip已經討論過很多次,現在主要看一下cvm。
乙個cvm含有2個主要要素:
1.兩個金額,x金額和y金額。
2.持卡人驗證方法條目(可能含有多個)
2部分又細化為下列三個部分
1.持卡人驗證方法**,即第9位元組的bit7,用來表明持卡人驗證失敗後的操作。
2.持卡人驗證方法型別,即第9位元組的bit6--bit1,用來表明採用什麼樣的方法做持卡人驗證。
1.持卡人驗證方法條件,即第10位元組的bit7,用來表明在什麼情況下做持卡人驗證。
這樣看比較抽象,拿個例項來看一下:
[html]view plain
copy
8e 0c
00 00 00 00
00 00 00 00
5e 03
1f 00
這是乙個標準的cvm列表,x金額為0,y金額為0,後續每兩個位元組表示乙個持卡人驗證方法條目,5e的二進位制位01 011110這表明如果持卡人驗證失敗則使用後續的cvm,cvm驗證方法為簽名,03表示「如果終端支援這個cvm」。
這樣估計還是比較抽象,我用語言再描述一下。
首先5e的bit8 bit7為01,這表明如果這個cvm失敗,那就要用到後面的1f 00作為持卡人驗證方法。
再看5e的bit6到bit1,這個規範上說的很明確,現在的6個數字就是代表使用簽名。
再看03,03的含義是「如果終端支援這個cvm」,這個怎麼理解呢?終端有乙個很重要的資料,終端效能,終端效能中明確指出了終端所支援的驗證方法,所以03的意思就是如果終端支援持卡人簽名驗證,那麼這個交易就使用簽名作為驗證方法。當持卡人驗證條件為03時,核心對於終端效能的判斷也是直接影響持卡人驗證成功與失敗的關鍵要素。
後面的1f00就不做分析了,分析方法同理。
程式分析完cvm列表後,再根據分析結果提示持卡人進行操作,然後就相當於持卡人認證已經完成。
最後再看看,離線加密pin,簡單來說, 原理如下**子小馬哥部落格):
終端從卡片中獲取pin加密公鑰證書(可在read data階段讀取),從證書中恢復pin加密公鑰. 當使用者輸完pin時, 終端用此公鑰加密該pin,然後能過指令把加密資料傳給卡片,卡片收到資料後,先用存在自身的pin加密私鑰解密,然後再驗證該pin的正確性.
詳細的步驟如下:
[html]view plain
copy
1 終端把使用者輸入的明文pin按照一定的格式補位對齊, 然後用get challenge命令從卡片中取乙個8位元組的隨機數.
2 終端自己產生一組長度為n-17的隨機數(n為pin加密公鑰的長度), 然後把補位後的pin,卡片中取的隨機數以及終端產生的隨機數拼接在一起, 與pin加密公鑰做rsa運算.
3 把上一步運算的結果通過verify命令發給ic卡.
4 卡片用pin加密私鑰解密資料, 首先檢查解出來的8位元組隨機數是否與自己產生的一致,然後卡片檢查恢復的資料頭位元組是否有效, 最後一步是驗證pin是否合法. 只有所有的條件都滿足,離線加密pin才算成功.
EMV規範學習與研究(七) 持卡人驗證
持卡人驗證目的驗證當前卡片的使用者是否是卡片中應用授權的人。此功能可以在讀應用資料之後 終端行為分析結束以前的任何時間 執行。執行條件 aip中表明了 ic 卡至少具有一種持卡人驗證方法的能力。如果該標記位 b5 被設定為1 終端必須使用 ic 卡中的持卡人驗證相關資料,判斷是否執行某個發卡行指定的...
EMV技術學習和研究(一)開篇
在這個行業也3年多了,一直想寫寫關於emv和pboc的內容,但是總覺得自己懂得還不夠,對emv和pboc的理解還不夠深入。但是後來想想,如果還不開始自己寫一點東西的話,可能這個事情也就永遠的擱淺了,所以最後還是決定帶著學習的態度去完成blog。接下來的幾篇blog更多的是描述自己和同事以及朋友對em...
EMV技術學習和研究 離線資料認證之SDA
離線資料認證的方式有 sda dda cda三種。最常用的的就是sda dda,所以先討論研究這兩個認證方式,cda放到後面。終端究竟採用什麼方式做離線資料認證,取決於兩個要素aip和終端效能。讀完記錄結束以後,將會有四個要素伴隨ic卡交易的整個流程,aip 終端效能 接觸式9f33,q是9f66 ...