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