fDDA是快速DDA認證,fDDA用於qPBOC,DDA用於PBOC,fDDA與DDA認證只有部分不同(關於區別本文有講)
本文就使用公司交行工資卡跑一遍fDDA流程,
DDA(fDDA)的步驟可以這樣理解:先執行 SDA大部分,再執行DDA(fDDA)特有的步驟
步驟1. 恢復IC卡公鑰
在SDA 階段取得的發卡行公鑰,在DDA時還有一個用途,就是恢復IC卡公鑰. 可以用下面的公式表示:
發卡行公鑰+IC 卡公鑰證書+RSA 算法=IC卡公鑰
參考靜態數據驗證,通過RSA算法,使用發卡行公鑰解析IC卡公鑰證書得出的IC卡公鑰:
| 恢復數據頭 |
6A |
| 證書格式 |
04 |
| 應用主賬號 |
62226206200171XXXXXF(為了隱私最后幾位用XX代替) |
| 證書失效日期 |
1224 |
| 證書序列號 |
100001 |
| 哈希算法標識 |
01 |
| IC卡公鑰算法標識 |
01 |
| IC卡公鑰長度 |
80 |
| IC卡公鑰指數長度 |
01 |
| IC卡公鑰或IC卡公鑰的最左邊字節 |
F10B7CD3B0AA7002E70B1959E33210487A5251C39C8D3A88DD77FAAC129171E6DF61DD76809AA0F7459434D8771CA23217BCC5CDBF194E2995FAE5C031827FBDFEEC25E0BCA3AF04B9296A37820604B9A82F3AEB03BDE46F06FFED992FE35A615A2AFFF3C584696F45D3B231C34337532D9F956B528E2EBF2523E27838E9B67BBBBBBBBBBBBB |
| 哈希結果 |
350F02EC13781B64B6D7DFC4ED85CD00D09E515B |
| 恢復數據結尾 |
BC |
HASH校驗的方法:
將上表中第2個到第10個數據元(即從證書格式直到IC卡公鑰或IC卡公鑰的最左邊字節)從左到右連接,再把IC卡公鑰的余項(如果有)+IC卡公鑰指數+需認證的靜態數據(請參考SDA)+靜態數據認證標簽列表(如果存在),然后計算HASH結果與IC卡公鑰中的HASH結果比對,由此可見動態數據驗證同樣使用靜態數據部分做HASH校驗,所以說DDA是包含了SDA
步驟2. 恢復動態應用數據和動態應用數據HASH校驗
讀記錄讀出簽名的動態應用數據:
| 簽名的動態應用數據9F4B |
6C145931F36CA978A6AA1A9D60E41C3DF9299F21BDBBA666F680DFA90F825C5B6F544C0089026294B38486D246AB7F9E4E5E965C507FA0B819E893F470EB1A4BDF9D9DBC8AAD6ADE38C8AA1ECB077B1724EF980864B56C2C567503936241D28C4A2DFCC8398481FEC1961C3704286731343C6885D0A44D8B0DC8F723F1A702F99F6C0200009F5D06000000001579 |
使用RSA工具恢復出動態應用數據
IC卡公鑰+動態簽名的應用數據+RSA=動態應用數據
| 恢復數據頭 |
6A |
| 證書格式 |
05 |
| 哈希算法標識 |
01 |
| IC卡動態數據長度 |
03 |
| IC卡動態數據 |
020E19 |
| 填充字節 |
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB |
| 哈希結果 |
37D0C6EA6109B1CEB237AFAD7847A128F711C50D |
| 數據結尾 |
BC |
動態應用數據HASH校驗,
關於DDA的校驗是:將上表第2個到第6個數據元(即從簽名數據格式直到填充字節)從左到右連接,再把DDOL中指定的數據元加在后面。fDDA認證與DDA認證的區別就在於HASH校驗的部分,終端動態數據元素不在DDOL中指定(因為qPBOC中並不存在DDOL數據元),終端動態數據應由表C.1指定的數據元素按順序連接構成
所以最終的動態應用數據HASH校驗輸入值,
| 05 |
|
| 哈希算法標識 |
01 |
| IC卡動態數據長度 |
03 |
| IC卡動態數據 |
020E19 |
| 填充字節 |
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB |
| 9F02 授權金額 |
000000000001 (GPO發給卡片的值) |
| 5F2A 交易貨幣代碼 |
0156 (GPO發給卡片的值) |
| 9F69 卡片認證相關數據 |
013539FC85000002(讀記錄卡片返回的) |
得出的HASH結果與動態應用數據解析出的完全一致,至此fDDA成功


