智能卡安全機制比較系列(二)DS SmartCard
文章出處:http://hz-huyue.com 作者:佚名 人氣: 發表時間:2012年02月26日
DS Smart Card是飛利浦公司自己開發的一款CPU卡產品,在早期芯片廠商開發自己的COS并進行推廣很普遍,現在像英飛凌(前西門子半導體)以及恩智普(前飛利浦半導體)幾乎很少推廣自己的COS,大多時候都是在集中精力推廣自己的芯片。
飛利浦的DS系列智能卡COS結合了ISO7816和ETSI的規范(也就是SIM卡規范),在安全機制上采取了和SIM卡類似的密碼驗證方式,即主要通過密碼比對的方式獲取對文件的訪問控制權限。
DS CPU卡一共定義了三種基本的訪問權限,分別是發卡商權限(0到3)共享權限(0和1),持卡人權限(0和1)。這些訪問權限通過密碼單元中對應的訪問權限區域來定義,對應的密碼分別是發卡商密碼和持卡人密碼,而共享權限可以利用發卡商密碼或者持卡人密碼來獲得。在正確驗證密碼后根據訪問權限區域設定的數據位就可以獲得其中的一種或幾種權限。一旦獲得了某種權限,那么這種權限就一直保留,直到到卡片斷電,或者是對同一個密碼又進行了錯誤的認證后才會消失。每次正確的密碼認證所獲得的權限是累加的關系。
在可以設定的權限中共有16種狀態,其中0表示始終滿足,即不需要認證,而15表示永遠都不滿足,即拒絕任何訪問。其余的14種狀態可以分別對應不同的密碼或者密碼組合來實現訪問控制。每個密碼還設計了對應的解鎖密碼,當連續錯誤驗證密碼超過規定的次數后,該密碼將被鎖定,只有通過核對解鎖密碼才能解開。下表是訪問控制權限組合:
訪問控制編號 | 需要的訪問控制權限 | 訪問控制條件 |
0 | 不可用 | 始終滿足 |
1 | 10 00 0000 (80H) | 持卡人權限0 |
2 | 01 00 0000 (40H) | 持卡人權限1 |
3 | 00 00 0000 (00H) | 永遠不滿足 |
4 | 00 00 1000 (08H) | 發卡商權限0 |
5 | 00 00 0100 (04H) | 發卡商權限1 |
6 | 00 00 0010 (02H) | 發卡商權限2 |
7 | 00 00 0001 (01H) | 發卡商權限3 |
8 | 10 00 1000 (88H) | 持卡人權限0和發卡商權限0 |
9 | 01 00 1000 (48H) | 持卡人權限1和發卡商權限0 |
10 | 00 10 0000 (28H) | 共享權限0 |
11 | 00 01 0000 (10H) | 共享權限1 |
12 | 00 10 1000 (28H) | 共享權限0和發卡商權限0 |
13 | 00 10 0100 (24H) | 共享權限0和發卡商權限1 |
14 | 00 10 0010 (22H) | 共享權限0和發卡商權限2 |
15 | 不可用 | 永遠不滿足 |
總體上看DS的CPU卡COS主要是依據SIM卡的規范而設計的安全機制,而其中的文件管理和操作也符合SIM卡的標準,比如對于文件的訪問除了一般的讀寫之外,還有對文件的禁用和啟用,在文件被禁用后不能更改,根據文件建立時規定的禁用可讀與否來決定文件禁用后是否可讀。
DS卡只支持一種EF文件類型,那就是透明二進制文件。
DS卡還有一種據稱申請專利的認證技術,采用DES的算法來認證卡片上存儲的數據,借以判斷終端明確知道的某個地址的卡片內容對不對,這種認證方式類似于7816規定的內部認證,但是機制上又有自己的定義,所以也比較有意思。在目前廣泛應用的CPU卡中幾乎沒有人再使用這種機制了。
這種認證機制可以核對更改后的數據是否正確、實現文件內容的密文讀出、實現帶有隨機數的內部認證。實際上終端應該能夠確切地知道卡片中某個位置存儲的4個字節數據,在認證中并不是采用簡單的密碼比較方式,而是采用隨機數和認證響應的方式進行計算和比較。
認證是依靠當前的EF文件來進行的,在認證進行之前,對于文件的讀權限必須滿足。通過兩步來完成認證,第一步是生成臨時密鑰,第二步是使用第一步得到的臨時密鑰計算認證數據。首先終端發送8字節的隨機數據給卡片,卡片把前兩字節用當前文件的標識給替換掉,使用該數據通過認證密鑰Kc進行DES解密運算來得到臨時密鑰。如果重新進行了正確的文件選擇,那么原來計算得到的臨時密鑰就會被破壞。然后利用臨時密鑰對文件中某個地址的4個字節數據及其對應的兩個字節的地址進行DES解密運算,出于冗余和8字節DES計算的需要,兩個字節的數據被重復,即8字節的數據結構為:數據(4字節)+地址(2字節)+地址(2字節)。經過計算得到的8字節認證數據傳送給終端,終端可以比對計算的結果是否正確,來確定認證是否成功。