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