PBOC/EMV之DDA(動(dòng)態(tài)數據認證)
文章出處:http://psychicreadingswithdeb.com 作者: 人氣: 發(fā)表時(shí)間:2012年05月27日
前一篇文章講了SDA,DDA的步驟可以這樣理解:先執行SDA,再執行DDA特有的步驟. 所以這篇文章主要講這個(gè)特有的步驟.正是這個(gè)特有的步驟,使得DDA不僅具有SDA的功能(保證卡片上的數據在個(gè)人化后不會(huì )被修改),還可以防止卡片被復制偽造.
第一步,取IC公鑰
在SDA階段取得的發(fā)卡行公鑰,在DDA時(shí)還有一個(gè)用途,就是恢復IC卡公鑰. 可以用下面的公式表示:
發(fā)卡行公鑰+IC卡公鑰證書(shū)+RSA算法=IC卡公鑰
IC卡公鑰證書(shū)是終端在讀數據階段從卡里讀出來(lái)的, 是一串密文數據,類(lèi)似如下:
第二步,取簽名的動(dòng)態(tài)數據
終端首先發(fā)起內部認證命令給卡片, 命令的數據域是DDOL中指明的數據, DDOL是卡片在讀數據階段返回給終端的,告訴終端自己需要哪些終端數據來(lái)生成簽名的動(dòng)態(tài)數據. 舉例如下:
要注意9F37(終端不可預知數)是DDOL的必備項.
卡片用終端送來(lái)的DDOL中的數據,加上自己產(chǎn)生的動(dòng)態(tài)數據(比如ATC),用IC卡私鑰(注意這個(gè), 這個(gè)私鑰放在安全存貯區域,是不可復制的)生成一個(gè)密文數據,這個(gè)數據叫做簽名的動(dòng)態(tài)應用數據. 然后卡片把這個(gè)數據通過(guò)內部認證返回給終端.
第三步,驗證哈希值
用公式可表示如下:
IC卡公鑰+動(dòng)態(tài)簽名的應用數據+RSA=數據A
數據A也包括兩部分,一部分我把它叫A1,另一部分叫哈希結果A
終端用A1加上DDOL指定的數據,用指定的哈希算法計算一個(gè)哈希結果B.
A和B比較,如果相等,則DDA成功,否則失敗.
前面一開(kāi)始說(shuō)到,DDA可以防止復制卡片, 從上面一系列的流程可以看出, 即使你復制一張卡,SDA可以通過(guò)(因為靜態(tài)的數據都是一樣的),但是由于IC卡私鑰的安全性,動(dòng)態(tài)簽名的驗證是肯定失敗的.