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