1. 程式人生 > >PBOC/EMV之DDA(動態資料認證)

PBOC/EMV之DDA(動態資料認證)

轉載請註明出處

http://blog.csdn.net/pony_maggie/article/details/7429296

作者:小馬

前一篇文章講了SDA,DDA的步驟可以這樣理解:先執行SDA,再執行DDA特有的步驟. 所以這篇文章主要講這個特有的步驟.正是這個特有的步驟,使得DDA不僅具有SDA的功能(保證卡片上的資料在個人化後不會被修改),還可以防止卡片被複制偽造.

第一步,取IC公鑰

在SDA階段取得的髮卡行公鑰,在DDA時還有一個用途,就是恢復IC卡公鑰. 可以用下面的公式表示:

髮卡行公鑰+IC卡公鑰證書+RSA演算法=IC卡公鑰

IC卡公鑰證書是終端在讀資料階段從卡里讀出來的, 是一串密文資料,類似如下:

* Tag 9F46 ICC Public Key Certificate 
* - Len 50 
* - Value 79 DE 85 4F 1F 84 9E 8B 42 9D 72 6A 8B 93 F0 E9  
*  83 06 B7 7F A8 78 67 26 B4 F6 25 6B ED 87 9F 2C  
*  24 52 24 DD 93 1C A8 0D 44 D8 C6 A5 5E 6D A9 BB  
*  E5 F3 E2 7F 65 98 28 E4 2D 27 A1 7C 33 49 88 83  
*  34 D7 46 3C 0C 6E C7 BA 93 D6 27 65 44 FB BF C5  

第二步,取簽名的動態資料

終端首先發起內部認證命令給卡片, 命令的資料域是DDOL中指明的資料, DDOL是卡片在讀資料階段返回給終端的,告訴終端自己需要哪些終端資料來生成簽名的動態資料. 舉例如下:

* Tag 9F49 Dynamic Data Authentication Data (DDOL)

*   - Len   15

*   - Value 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 

*       9C 01 9F 37 04

要注意9F37(終端不可預知數)是DDOL的必備項.

卡片用終端送來的DDOL中的資料,加上自己產生的動態資料(比如ATC),用IC卡私鑰(注意這個, 這個私鑰放在安全存貯區域,是不可複製的)生成一個密文資料,這個資料叫做簽名的動態應用資料. 然後卡片把這個資料通過內部認證返回給終端.

第三步,驗證雜湊值

用公式可表示如下:

IC卡公鑰+動態簽名的應用資料+RSA=資料A

資料A也包括兩部分,一部分我把它叫A1,另一部分叫雜湊結果A

終端用A1加上DDOL指定的資料,用指定的雜湊演算法計算一個雜湊結果B.

A和B比較,如果相等,則DDA成功,否則失敗.

前面一開始說到,DDA可以防止複製卡片, 從上面一系列的流程可以看出, 即使你複製一張卡,SDA可以通過(因為靜態的資料都是一樣的),但是由於IC卡私鑰的安全性,動態簽名的驗證是肯定失敗的.