PBOC2.0安全系列之—脫機認證之動態數據認證(DDA)

動態數據認證:

一,什麼是動態數據認證(DDA)

由於上篇<< PBOC2.0安全系列之—脫機認證之靜態數據認證(SDA)>>已經對靜態數據認證部分做了詳細的分析,一些基本知識本章不重複說明,需要明確指出的是:無論SDA和DDA,兩者都是屬於脫機認證的範圍。

在上一篇中,我們知道靜態數據認證(SDA)的目標是解決髮卡行靜態數據的防篡改,但侷限是無法防止複製卡或者僞造卡的情況,而這種複製卡和僞造卡恰恰是金融卡安全面臨的最大問題。

舉兩個現實的例子:

1,筆者本人親自遇到的:某天突然收到招行信用卡中心的電話,說監控發現我的卡在某個異地有從pos查詢餘額的記錄,需要確認是否我本人的操作,我否認後,招行即可凍結了我的卡,然後要求我本人在某臺ATM上做一次查詢操作(筆者理解是招行想確認卡真正在我的手上),完成了回撥招行信用卡中心,答覆是卡被非法複製的可能性非常大,要求及時換卡,所幸的是沒有遭受財產損失。

2,大家經常在電視上或者網上看到的ATM犯罪場景:犯罪分子拿着自己定製的讀卡器和攝像頭到ATM去,把ATM插卡的卡套去掉換成了自己的讀卡器,然後在ATM的某個不引人注意的角落裏面安裝上自己的針孔攝像頭,當用戶來取錢的時候,由於用戶不小心把卡插入到了犯罪分子的讀卡器,讀卡器就可以把卡里面的數據都讀出來並存儲到自己的讀卡器,同時,通過針孔攝像頭拍攝用戶輸入的密碼,然後他們回去將卡數據複製到新的空白卡,有了卡和密碼,接下來的情況大家都可以猜到了…

 而動態數據認證(DDA)就是要解決卡被複制後的認證問題,使得終端有能力發現卡是僞造的,基本的核心點是:卡里面有些東西是無法複製的,且無法複製的部分是埋入了卡的唯一認證密鑰。

上面這句話可能比較抽象,不過不用擔心,接下來筆者會重點闡述具體的原理。

 

二,動態數據認證(DDA)的實現原理

我們已經知道,動態數據認證的目的主要是用於防止僞造卡片。但具體如何實現呢?

1,基本原理:

        再說明DDA的基本原理前,我們先review一下SDA的主要流程,方便我們進行對比:從實現技術角度看,SDA是利用髮卡行公鑰,CA公鑰進行認證,IC卡髮卡行髮卡的時候寫入靜態數據,如卡號等,爲了證明這些靜態數據是髮卡行寫入的,而不是其他非法的機構寫入的,髮卡行要用自己的髮卡行私鑰進行簽名,當然主要是對這些數據先進行計算一個摘要,然後對摘要進行簽名,得到一個數字簽名,並把這數字簽名也一起寫入卡片。這樣,在實際的交易過程中,卡片插到終端後,卡片會發送這些靜態數據和數字簽名一起給到終端,終端會通過數據中的CA公鑰餘項找到對應的CA證書,然後用CA證書中的CA公鑰認證髮卡行的證書,通過認證後,拿到髮卡行公鑰證書,再用髮卡行公鑰來解密驗證數字簽名,然後拿這個結果和卡片發送過來的數據進行對比。

        而DDA相比SDA來說,重點在於IC卡公私鑰對,IC卡私鑰是放在安全存儲區域的,而驗證過程是在SDA的基礎上,在終端驗證靜態數據以後,終端會發送內部認證命令(內部認證就是終端認證卡片,外部認證就是卡片認證終端)給到卡片(見圖的紅色畫圈部分),命令中包含了由DDOL指定的數據元,IC卡會根據這個列表中指出的數據用IC卡私鑰進行加密生成數字簽名,這個結果即是簽名的動態應用數據,接下來,終端收到這數據後,會像SDA一樣,用CA公鑰證書->髮卡行公鑰證書->IC公鑰證書,從IC卡公鑰證書拿到IC卡公鑰來解密IC卡私鑰加密的數據,並進行比較結果。

        這裏筆者也附上來自PBOC規範對DDA部分原理的說明:終端要求卡片提供由IC卡私鑰相比SDA使用的是髮卡行私鑰簽名靜態數據,這裏使用的是不同的IC卡私鑰,這個私鑰存儲在IC卡的一個安全區域內,無法進行復制)加密動態交易數據生成的密文,動態交易數據是由終端和卡片爲當前交易產生的唯一數據。終端用從卡片上獲取的IC卡公鑰來解密動態簽名,如果還原的數據與原始數據匹配證實了此卡不是由合法卡複製出的贗品卡。複合動態數據認證/應用密文生成把動態簽名生成與卡片的應用密文生成相結合,確保卡片行爲分析時返回的應用密文來自於有效卡。

        

2,實現步驟:

在分析實現步驟前,我們先重點分析一下各個關鍵實體需要持有的證書或者密鑰對的情況:

實體

擁有證書或者密鑰對等

髮卡行

髮卡行私鑰

IC

髮卡行證書(經過CA簽名的髮卡行公鑰),

IC卡證書(用髮卡行私鑰進行簽名),

卡片私鑰,

卡片靜態數據和用髮卡行私鑰對靜態數據進行簽名的數字簽名

終端

CA公鑰

      從上面可以看到,相比SDA,DDA的證書和密鑰持有情況最大的不同是:IC卡多了IC卡證書和卡片私鑰。

      因此,DDA相比SDA來說,除了具備SDA的防篡改保護外,最強大的地方是防止卡複製,相比SDA,它的簽名是動態的,SDA的簽名在卡發行的時候就已經定好了,它簽名所用的私鑰是髮卡行私鑰,而DDA每次用來簽名的數據是當前交易中的一些動態數據,簽名所有的密鑰是IC卡私鑰(不同的IC卡具有不同的IC私鑰),這個存儲在IC卡里面的一個安全存儲區域內(這個非常重要,一般是專門的安全芯片,是無法讀出的),而終端這邊通過從IC卡讀取出對應的IC卡公鑰來解密驗證。那麼如何實現防複製呢?

       舉個例子:張三的卡被李四複製了一張,當李四拿着複製的卡到ATM進行取錢的時候,終端會要求認證IC卡,於是發一串動態的交易數據給IC卡,IC卡會生成一個用自己IC卡密鑰簽名的應用密文給到終端確認,而關鍵的地方就在這裏,這個簽名需要用到IC卡私鑰來簽名,而這個IC私鑰是存儲在IC卡的安全芯片內,李四複製的卡無法拿到,因此無法生成對應的簽名數據給到終端確認或者隨便用一個私鑰進行簽名拿到一個串給到終端,而終端這個時候是用IC卡對應的公鑰來解密,發現通不過,因爲終端解密的IC卡公鑰和複製卡的IC私鑰不是配對的,因此驗證失敗,交易中止。

       需要重點說明的是:IC卡是CPU卡,智能卡,裏面有複雜的文件結構,不像磁條卡結構那麼簡單,並且最關鍵的是有一個IC卡私鑰存儲於IC卡文件安全區域,相當於XP系統的系統文件,有權限都複製不了,即就是把整個卡都複製了,IC卡私鑰也沒有被複制進去,而DDA就是依賴這個IC卡私鑰來確認卡片的真實性,防止卡片的非法複製。

 動態數據認證有標準動態數據認證(DDA複合動態數據認證(DDA/AC-CDA兩種。

並且DDA是在卡片行爲分析前執行,此時,IC卡將來自卡片的動態數據以及由動態數據認證數據對象列表(DDOL)所標識的終端數據用IC卡私鑰生成一個數字簽名。

 標準動態數據認證(DDA)的詳細過程如下:

密鑰和證書分發階段:

1,髮卡行的密鑰管理系統產生髮卡行公私鑰對SI和PI,以及爲每一張IC卡生成一對公私鑰對SICC和PICC,並將髮卡行公鑰PI傳輸至根CA;

2,根CA用自己的私鑰SCA對髮卡行公鑰進行數字簽名,產生髮卡行證書,連同根CA公鑰信息返回給髮卡行密鑰管理系統;

3, 髮卡行用髮卡行私鑰SI對每個IC卡公鑰PICC進行數字簽名,產生IC卡證書;--關鍵一步

4,髮卡行密鑰管理系統將髮卡行證書及IC卡證書,IC卡私鑰傳送至髮卡系統;

5,髮卡系統在個人化時將髮卡行證書和IC卡證書寫入卡片中,(筆者標識:同時在制卡的時候,把IC私鑰一起存入卡的安全存儲芯片中)

6,根CA將自己的公鑰PCA傳送給收單行的終端管理系統;

7,終端管理系統把根CA公鑰PCA通過遠程下發到終端。

 


交易驗證階段:

1,終端從卡片讀取髮卡行證書及IC卡證書,使用根CA公鑰PCA恢復出發卡行公鑰PI,使用恢復的髮卡行公鑰PI恢復出IC卡公鑰PICC;

即髮卡行公鑰+IC卡證書+RSA算法=IC卡公鑰

 

2,終端向IC卡發送內部認證命令(INTERNAL AUTHENTICATE)請求一個動態簽名,卡片連接內部認證命令中的終端數據和在IC卡中動態數據中指定的卡片數據,由存儲於卡片安全芯片的卡片私鑰SICC對該數據進行數字簽名並返回終端;

3,終端使用IC卡公鑰PICC對數字簽名進行驗證,並將驗證結果返回給卡片。

 

複合動態數據認證(DDA/AC-CDA)的詳細過程如下:

  這種方式是在第一個請求應用密文命令發出後執行,IC卡將來自卡片的數據包括應用密文以及來自終端的數據生成一個數字簽名。具體過程跟DDA基本相同:

1,髮卡行的密鑰管理系統產生髮卡行公私鑰對SI和PI,以及爲每一張IC卡產生一對公私鑰對SICC和PICC,並將髮卡行公鑰PI傳送至根CA;

2,根CA用自己的私鑰SCA對髮卡行公鑰進行數字簽名,產生髮卡行證書,連同根CA公鑰信息返回給髮卡行密鑰管理系統;

3,髮卡行用髮卡行私鑰SI對IC卡公鑰PICC進行數字簽名,產生IC卡證書;

4,髮卡行密鑰管理系統將髮卡行證書IC卡證書傳送至髮卡系統;(筆者標識:包括IC卡私鑰)

5,髮卡系統在個人化時將髮卡行證書和IC卡證書寫入卡片中。(筆者標識:同時在制卡的時候,把IC私鑰一起存入卡的安全存儲芯片中)

6,根CA將自己的公鑰PCA傳送至髮卡行的終端管理系統;

7,髮卡行終端管理系統將根CA公鑰PCA通過遠程下發到終端;


交易驗證階段:

1,終端從卡片取出髮卡行證書及IC卡證書,使用根CA公鑰PCA恢復出發卡行公鑰PI,使用恢復的髮卡行公鑰PI恢復出IC卡公鑰PICC;

2, 終端像卡片發出應用密文命令(GENERATE AC),卡片響應該命令;(跟DDA不同點)

3,卡片連接終端通過另外的命令送來的數據及自己的響應數據,由卡片私鑰SICC對該數據進行數字簽名並返回給終端;

4,終端利用卡片公鑰驗證卡片動態生成的簽名,這一步在聯機處理過程中執行,如果驗證失敗,則交易拒絕。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章