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