PBOC/EMV之SDA(靜態(tài)數(shù)據(jù)認(rèn)證)
文章出處:http://botanicstilllife.com 作者: 人氣: 發(fā)表時(shí)間:2012年05月27日
SDA的意思是靜態(tài)數(shù)據(jù)認(rèn)證,首先如何理解這個(gè)靜態(tài)。參與認(rèn)證的都是靜態(tài)的卡片數(shù)據(jù),這些數(shù)據(jù)在卡片個(gè)人化后就不會(huì)在改變,比如卡號. 它的目的是確認(rèn)存放在IC卡中的由應(yīng)用文件定位器(AFL)和可選的靜態(tài)數(shù)據(jù)認(rèn)證標(biāo)簽列表所標(biāo)識(shí)的,關(guān)鍵的靜態(tài)數(shù)據(jù)的合法性,從而保證IC卡中的發(fā)卡行數(shù)據(jù)在個(gè)人化以后沒有被非法篡改.
既然是認(rèn)證,必然涉及算法,SDA(包括之后的DDA,CDA)用的是RSA算法,這是一種典型的以非對稱加密為理論基礎(chǔ)的算法.
廢話不多講, 詳細(xì)的步驟如下:
第一步,
CA(認(rèn)證中心)公鑰+發(fā)卡行公鑰證書+RSA算法 = 發(fā)卡行公鑰
CA公鑰可以手動(dòng)下裝到終端,也可以聯(lián)機(jī)從后臺(tái)下載. 具體的內(nèi)容通常包括公鑰模,模長度,公鑰指數(shù),指數(shù)長度以及有效期等信息. 這些信息牽扯到算法本身的用途,不細(xì)說.
發(fā)卡行公鑰證書是簽了名的發(fā)卡行公鑰,是終端在讀數(shù)據(jù)階段從卡片中讀出來的, 其實(shí)是一串密文數(shù)據(jù), 比如下面這樣:
CA公鑰從發(fā)卡行公鑰證書中恢復(fù)發(fā)卡行公鑰用的算法是RSA算法.
第二步,
發(fā)卡行公鑰+簽名的靜態(tài)應(yīng)用數(shù)據(jù)+RSA算法 = 數(shù)據(jù)A
數(shù)據(jù)A主要包括兩部分重要的數(shù)據(jù), 一部分我把它叫做數(shù)據(jù)A1, 另外一部分叫哈希結(jié)果A.
第三步,
A1+終端在讀數(shù)據(jù)階段讀到的需要參與認(rèn)證的靜態(tài)數(shù)據(jù)+Hash算法 = 哈希結(jié)果B
A1和終端在讀數(shù)據(jù)階段讀到的需要參與認(rèn)證的靜態(tài)數(shù)據(jù)一起, 調(diào)用哈希算法,最終計(jì)算出一個(gè)哈希結(jié)果B. 數(shù)據(jù)階段讀到的需要參與認(rèn)證的靜態(tài)數(shù)據(jù),是AFL中的字節(jié)4:該字節(jié)指明從第1 個(gè)記錄開始的用于脫機(jī)數(shù)據(jù)認(rèn)證的連續(xù)記錄數(shù).
AFL的結(jié)構(gòu)如下:
字節(jié)1:短文件標(biāo)識(shí)符
字節(jié)2:文件中要讀取的第1個(gè)記錄的記錄號
字節(jié)3:文件中要讀取的最后一個(gè)記錄的記錄號
字節(jié)4:從字節(jié)中的記錄號開始,存放認(rèn)證用靜態(tài)數(shù)據(jù)記錄的個(gè)數(shù)(值從到字節(jié)-字節(jié)+1的值)
舉例:
每四字節(jié)為一部分, 10 01 03 01表示在SFI為10的文件中, 在01到03這些記錄中, 有一個(gè)記錄是用于數(shù)據(jù)認(rèn)證的.
第四步,
判斷哈希結(jié)果A和哈希結(jié)果B是否相等,如果相等,SDA成功,否則SDA失敗.
上述步驟其實(shí)省略了一些數(shù)據(jù)拼接以及數(shù)據(jù)起始字節(jié)的合法性判斷等操作,但SDA的核心已非常明確.