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