PBOC/EMV之脫機明文PIN和脫機密文PIN
1. EMV與PBOC在脫機PIN的區別:
EMV和PBOC都支持脫機明文PIN和聯機密文PIN。區別在於EMV還支持脫機密文PIN,而在PBOC中,EMV標識支持脫機密文PIN的位置都成了保留位。
圖1. PBOC中CVM的字節9位6-1
圖2. EMV中CVM的字節9位6-1
2. 脫機明文PIN的驗證
當終端獲取到卡片的CVM表明卡片可以通過脫機明文驗證,而且終端也支持此方式。則終端輸入個人密碼,然後通過verify指令驗證個人密碼。
因爲PBOC和EMV都支持脫機明文的驗證,所以這塊是一樣的,可以對比下圖:
圖3. PBOC的驗證指令描述
圖4. EMV的驗證指令描述
數據塊,圖5,圖6 兩者是一致的:
圖5. EMV的脫機明文PIN組包方式
圖6. PBOC的脫機明文PIN組包方式
卡片在收到verify指令後,會檢查data域,判斷裏面的控制域是否爲0010(二進制),便於確定後面的數據格式。
3. 脫機密文PIN的驗證
這點,PBOC是不支持的。從卡片返回的CVM可以得知卡片是否支持,如果終端根據CVM結合自身能力可以進行脫機密文PIN的驗證,則執行以下步驟:
a).獲取卡片隨機數8個字節;
b).終端產生隨機數,隨機數的長度爲:卡片公鑰模長度減17(發給卡片的verify命令中data域需要與IC卡模長度一樣,減17的原因是要其餘數據已經用了17位);
c). 然後根據下面的表組包:(PINBlock的組包方式與明文PIN一致)
圖7. 脫機密文PIN的組包用於加密
d). 經過組包後,得到的數據與IC卡公鑰模長度一致,這個時候使用IC卡公鑰對得到的數據包進行加密,加密後,填入verify指令發送給卡片。
卡片收到脫機密文的驗證指令後,會恢復data域數據,檢查data header是否爲0X7F.
至此,脫機密文的驗證已經結束,裏面比較複雜的一塊,應該是IC卡公鑰的獲取以及使用公鑰進行加密的過程。