PBOC/EMV之CDA(復合數據認證)
文章出處:http://5052h112.com 作者: 人氣: 發表時間:2012年05月27日
CDA其實是DDA的衍生方法. 所以它和DDA有很多相同的地方. 先簡要說明一下CDA的幾個要點:
1 它也執行SDA,這個和DDA是一致的.
2 它也執行DDA,更先進的技術總是向下兼容的.
3 它也用到簽名的動態應用數據, 不過這個數據不是內部認證請求的,而是在GAC時終端請求的. 而且這個數據的組成除了一些和DDA相似的組成(DOL數據),還包括密文數據(TC或ARQC).
4 既然簽名的動態數據多了卡片的密文數據,那最后的驗證階段也比DDA多了一些步驟,CDA還需要比較應用密文.
下面是詳細的步驟:
第一步,取IC卡公鑰:這個和DDA的方法是一樣的,不再說明.
第二步,取簽名的動態數據:通過GAC返回,當IC卡返回非AAC類型的密文時, 如果終端請求CDA,IC卡會返回這個簽名的數據.這個簽名數據的產生也比DDA稍復雜一些,其實是原理是一樣的,只不過需要參與簽名的數據項增加了,也即用于產生哈希結果的數據項增加了. 如果是在第一次GAC產生CDA簽名,那么參與運算的數據項包括PDOL中的數據,CDOL1的數據以及其它(比如數據頭,長度等), 如果是在第二次GAC產生CDA簽名,那么還要加上CDOL2中指定的數據項.
第三步,驗證數據:前面說到了,最后一步數據的驗證較DDA是多了一個應用密文的比較, 終端首先將將恢復的密文數據和GAC返回的密文數據比較. 如果不等,CDA就失敗.
剩下的步驟和DDA是一樣的.
既然CDA和DDA有很多機同的地方,那么它存在的意義在哪呢? 我說說自己的理解.
CDA和DDA的區別, 核心就在于CDA對卡片行為分析產生的應用密文做了一層加密保護,確保密文是來自于合法的卡片. 這個有點像我們在ATM上取錢時,輸入的密碼,經過加密后再傳到銀行的服務器. 銀行的服務器解密后再驗證密碼的正確性.這樣更安全了.
另外一點,CDA參與哈希運算的數據項增加了, 就表示這種認證機制更加嚴格了, 比如我就遇到過因為終端國家代碼的值設置錯誤導致CDA失敗的情況.
根據信息安全行業發展的規律來推測, CDA應該會慢慢淘汰SDA和DDA成為主流甚至是強制要求. 當然以后也可能會產生新的更加安全的數據認證機制.