CPU卡入門教程
1緒言:
說起CPU卡,人們肯定不禁要問,什么是CPU卡,CPU卡長什么樣的呢?
想起卡,一般人接觸最多的是銀行卡,相信現(xiàn)在大家每個(gè)人的錢包里都有好幾張磁卡。比如說:有工商行、建行的儲(chǔ)蓄卡。
但我們所說的CPU卡,是卡上面有個(gè)芯片的卡,現(xiàn)實(shí)生活中接觸最多的應(yīng)該是IC卡電話卡、買電的卡。
但以上的卡都不是CPU卡,長得和電話卡、買電的卡一樣。但卡的芯片里有CPU,我們手機(jī)里用的SIM卡就是CPU卡的一種。
我們可以把CPU卡想象成一個(gè)極小的個(gè)人計(jì)算機(jī),但這個(gè)計(jì)算機(jī)沒有顯示器,沒有電源,沒有輸入設(shè)備。要使用CPU卡的時(shí)候,必須由外部提供電源、顯示屏和輸入設(shè)備。
比如說現(xiàn)在我要往手機(jī)的SIM卡內(nèi)存入一個(gè)電話號(hào)碼.
1、我的手機(jī)必須有電---提供電源
2、我的手機(jī)必須有提供輸入電話號(hào)碼的手機(jī)按鍵--提供輸入
3、我的手機(jī)必須能有顯示電話號(hào)碼的顯示屏---提供顯示
以上我們對(duì)CPU卡有了大概的了解,有可能比喻不是很恰當(dāng)。
2.我們?yōu)槭裁匆褂肅PU卡呢?
先談?wù)勩y行磁卡的不安全性,經(jīng)常去ATM取錢的必須注意如下事項(xiàng):
1、輸入密碼的時(shí)候必須防止被別人看到,最好能用手遮著。
2、取完錢一定要取走打印的單據(jù),或者不打印單據(jù)也行。
看看犯罪分子怎樣竊取你卡片里頭的錢:
1、在你取錢的時(shí)候湊在你旁邊,偷偷得記下你的密碼,或者在很遠(yuǎn)的地方用望遠(yuǎn)鏡窺視你的密碼。
2、你取完錢走后,有可能安全意識(shí)不高,沒有取走打印的單據(jù),犯罪分子就乘機(jī)取走單據(jù),取走單據(jù)的目的是為了知道你的卡號(hào)。
有了上面兩點(diǎn),
首先:犯罪分子先復(fù)制一張和你的銀行卡一摸一樣的銀行卡。并且復(fù)制的成本非常低,只要有一臺(tái)PC,一個(gè)磁卡寫卡器(價(jià)格很便宜),一個(gè)小軟件。
其次:犯罪分子又已經(jīng)有了你的密碼。
這樣,犯罪分子就可以拿著你的卡去瀟灑地消費(fèi)、取錢了,而你卻還蒙在鼓里。直到某一天,當(dāng)你發(fā)現(xiàn)你的卡里的錢突然變少了,或者沒了,但一切為時(shí)已晚。
為什么會(huì)出現(xiàn)這種情況呢?
那就是磁卡太容易就可以被復(fù)制。那我們必須去尋找一種不能被復(fù)制的卡,什么卡呢?這就是CPU卡。而CPU卡又屬于IC卡的一種。
什么是IC卡呢?IC卡分為幾種呢?
IC卡是英文"集成電路卡"的縮寫,是近年來傳入中國的一項(xiàng)新技術(shù)。它是把具有存儲(chǔ)、運(yùn)算等功能的集成電路芯片壓制在塑料片上,使其成為能存儲(chǔ)、轉(zhuǎn)載、傳遞、處理數(shù)據(jù)的載體。
IC卡從其功能上分為三種:
1) 存儲(chǔ)器卡。
2) 帶加密邏輯存儲(chǔ)器卡:內(nèi)有COS(卡操作系統(tǒng))的一種存儲(chǔ)器卡。
3) CPU智能卡:內(nèi)有CPU(中央處理單元)的一種存儲(chǔ)器卡。
以上三種卡只有CPU卡被證實(shí)是最安全的。
CPU卡在實(shí)際情況中是怎么使用的呢?
CPU卡使用的簡(jiǎn)單情況舉例:(如圖)
硬件:一臺(tái)PC+一個(gè)讀卡器+一張CPU卡 讀卡器和PC是通過串口進(jìn)行通訊,這種做法比較常見。
軟件:
一個(gè)在PC上運(yùn)行能讀寫CPU卡的小程序(一般讀卡器提供商都會(huì)提供開發(fā)CPU卡的函數(shù)接口和讀寫CPU卡的小工具)
對(duì)CPU卡的操作的流程是怎樣的呢?
1、PC上的CPU卡讀寫程序向PC的串口(比如說串口1)發(fā)指令
2、讀卡器和串口1是連在一起的,串口的指令傳到讀卡器
3、讀卡器又把指令傳給CPU卡
4、CPU卡內(nèi)部執(zhí)行指令,返回消息
那指令的格式又是什么樣的呢?
我們可以舉這么一個(gè)例子:
用過DOS的人都知道:
CD C:\
這個(gè)指令表示進(jìn)入C盤根目錄
相應(yīng)的CPU卡有這么一個(gè)指令:SELECT MF這個(gè)指令表示進(jìn)入卡片的根目錄,但由于CPU卡的操作系統(tǒng)比較簡(jiǎn)單,它處理不了這種純粹字符的東西,向卡片指令的時(shí)候必須把指令轉(zhuǎn)換成十六進(jìn)制的格式:
轉(zhuǎn)換成卡片的指令格式是:00 A4 00 00 02 3F 00
每個(gè)字符的具體規(guī)定在ISO7816-4中有具體的規(guī)定。
大家有興趣的話可以去查具體的標(biāo)準(zhǔn),以下是比較枯燥的IC卡的國際標(biāo)準(zhǔn):
1、物理特性 符合ISO7816:1987中規(guī)定的各類識(shí)別卡的物理特性和ISO7813中規(guī)定的金融交易卡的全部尺寸要求,此外還應(yīng)符合國際標(biāo)準(zhǔn)ISO7816— 1:1987規(guī)定的附加特性、機(jī)械強(qiáng)度和靜電測(cè)試方法。
2.觸點(diǎn)尺寸與位置。 應(yīng)符合國際標(biāo)準(zhǔn)ISO7816—2:1988中的規(guī)定。
3.電信號(hào)與傳輸協(xié)議。 IC卡與接口設(shè)備之間電源及信息交換應(yīng)符合ISO/IEC7816— 3:1989的規(guī)定。
4.行業(yè)間交換用命令。 有相應(yīng)的國際標(biāo)準(zhǔn)ISO/IEC7816—4:1994。但該版本尚未正式通過。
5.應(yīng)用標(biāo)識(shí)符的編號(hào)系統(tǒng)和注冊(cè)過程應(yīng)符合國際標(biāo)準(zhǔn)ISO/IEC7816— 5:1994中的規(guī)定。 感應(yīng)式智能卡的國際標(biāo)準(zhǔn)有:ISO\IEC10536-1:1992、ISO\IEC10536-2:1995、ISO\IECDIS10536-3:1995、ISO14443-2等。
CPU卡入門教程4
對(duì)于CPU卡,人們經(jīng)常關(guān)注的是CPU卡的多應(yīng)用,也就是說一張CPU卡上可以有多個(gè)應(yīng)用,多應(yīng)用的安全相互隔離,那么多應(yīng)用究竟是什么呢?
我們可以把卡片想象成一棟縣政府辦公大樓,比如說:
一樓:屬于民政部門
二樓:屬于教育部門
三樓:屬于交通部門
各個(gè)部門獨(dú)立辦公,互不干涉,在行政上他們并沒有從屬關(guān)系。從而達(dá)到了多應(yīng)用并存。
民政部門智能辦理民政部門的事情,教育部門只能辦教育部門的事情。從而達(dá)到了多應(yīng)用的安全相互隔離。
一、多應(yīng)用并存于一張卡片上
多應(yīng)用共存在卡片上是怎么達(dá)到的呢?
通過創(chuàng)建多個(gè)ADF(即創(chuàng)建多個(gè)目錄)達(dá)到。
每個(gè)ADF代表一個(gè)應(yīng)用。每個(gè)ADF下有相應(yīng)的文件,相應(yīng)的文件中存放相應(yīng)的數(shù)據(jù)。
二、多應(yīng)用之間的安全相互隔離
多應(yīng)用之間的安全相互隔離是怎么達(dá)到的呢?
通過卡片內(nèi)部的安全機(jī)制來實(shí)現(xiàn)。
CPU卡的文件結(jié)構(gòu)1
CPU卡作為信息的載體,在卡片里必須能存儲(chǔ)信息,比如說,存放一個(gè)人的身份信息在CPU卡上(包括姓名、年齡、工作單位、職務(wù)、電話等),這些具體的信息在CPU卡中是怎么存放的呢?
請(qǐng)聽我細(xì)細(xì)道來。
在這個(gè)時(shí)候,我們可以把CPU卡想象為一張軟盤,只不過軟盤的容量比CPU卡大得多,我們現(xiàn)在軟盤的容量一般為1.4M字節(jié),而我們現(xiàn)在常用的CPU卡的容量?jī)H僅為8K或者16K字節(jié),遠(yuǎn)遠(yuǎn)比軟盤的容量小。當(dāng)然了,容量越大的CPU卡價(jià)格越貴。
請(qǐng)看下面例子
假設(shè)我們把以上所說的一個(gè)人的身份信息存放在pm.txt中。
pm.txt在一張軟盤中的存放方式
方式一:A:\pm.txt
方式二:A:\adf1\pm.txt
方式三:A:\ddf1\adf1\pm.txt
以上是信息在軟盤中的存放方式。
大家請(qǐng)看ISO7816-4規(guī)定的CPU卡內(nèi)邏輯文件組織結(jié)構(gòu)的舉例,見下圖:
大家可以可以看到最多只有三層目錄。這是由于實(shí)際應(yīng)用中只要有三層目錄就夠了。
所以現(xiàn)在的CPU卡一般都是最多只支持三層目錄的,有的國外的卡只支持兩層目錄(實(shí)際上兩層目錄一般時(shí)候也夠用)。
請(qǐng)看下面例子(可以對(duì)比軟盤的方式看)
假設(shè)我們把以上所說的一個(gè)人的身份信息存放在EF1中。
方式1:MF 方式2:MF 方式3:MF
\ \ \
EF1 ADF1 DDF1
\ \
EF1 ADF1
\
EF1
由于CPU卡的文件操作系統(tǒng)遠(yuǎn)比DOS或者WINDOWS操作系統(tǒng)簡(jiǎn)單,說句不好聽的話,可以說是“小巫見大巫”。不過這可以理解,畢竟在這么小的一個(gè)芯片上暫時(shí)不能實(shí)現(xiàn)象DOS或者WINDOWS那樣強(qiáng)大的操作系統(tǒng)。
所以對(duì)文件的規(guī)定,對(duì)文件的創(chuàng)建、文件的操作比較麻煩。
不同之處在于:
1、CPU卡創(chuàng)建一個(gè)文件時(shí)必須先聲明創(chuàng)建的文件的類型以及創(chuàng)建文件的空間大小。
在軟盤或者硬盤上則可以不指定文件長度。
2、CPU卡創(chuàng)建完一個(gè)文件后不可以刪除。(測(cè)試發(fā)卡的時(shí)候可以例外,但刪除的是MF,即刪除卡片中的所有文件和目錄)
3、CPU卡文件類型只有很少幾種,沒有后綴名。
4、CPU卡創(chuàng)建文件、寫文件必須通過向卡片發(fā)送APDU報(bào)文的方式進(jìn)行,并且每次寫的字節(jié)數(shù)不能超過256字節(jié),比較麻煩。
CPU卡的文件結(jié)構(gòu)2
【CPU卡的文件類型】
<兩種專用文件(DF--Dedicated File)類型>
MF(Master File):
根目錄,是卡片文件系統(tǒng)的根,相當(dāng)于DOS的根目錄,每張卡有且只有一個(gè)MF文件。
不同卡片廠商的MF的創(chuàng)建方式是不同的。
主要有兩種方式:
1、在卡片個(gè)人化過程中由發(fā)卡方創(chuàng)建。如明華、德生卡片
2、廠商提供卡片的時(shí)候已經(jīng)創(chuàng)建,發(fā)卡方不能再創(chuàng)建。如握奇卡片
DF(Dedicated File):
DF相當(dāng)于DOS的子目錄。
DDF和ADF:
我們把包含下級(jí)目錄的DF稱之為DDF,不包含下級(jí)目錄的稱之為ADF。
注意:DDF下可以有ADF,ADF下不能再有ADF。
<三種基本文件(EF--Elementary File)類型>
一、透明文件:
基本文件存儲(chǔ)了各種應(yīng)用的數(shù)據(jù)和管理信息,它存在于MF和DF下。文件數(shù)據(jù)是通過連續(xù)空間中的字節(jié)地址進(jìn)行存取。
比如上節(jié)中說的個(gè)人身份信息就可以存放在透明文件中。
二、記錄文件:
數(shù)據(jù)是以記錄的方式存放在文件中的。
記錄文件分為以下幾種:
1、線性定長記錄文件:
一個(gè)文件中有n條記錄,每條記錄的長度都是固定且相等的。
2、線性變長記錄文件:
文件中的每個(gè)記錄的長度是可變的。但一旦寫完后,進(jìn)行更新的時(shí)候,更新的記錄長度
必須和原來的記錄長度相同。
變長記錄的TLV格式如下:
T=TAG:標(biāo)識(shí)
L=LENTGTH:長度
V=value:值
3、循環(huán)定長記錄文件:
一個(gè)文件中所有記錄是等長度的,對(duì)文件中的記錄循環(huán)進(jìn)行讀取。
在邏輯上,這類文件可看作一個(gè)環(huán)形記錄隊(duì)列,記錄按照先進(jìn)先出的原則存儲(chǔ)。
添加記錄時(shí),最新一次寫入的記錄的記錄號(hào)為1,上一次寫入的記錄的記錄號(hào)為2,依次類推,滾動(dòng)寫入。
三、交易文件
這一類的文件為特定格式的文件,通過具體的交易指令對(duì)這類文件進(jìn)行操作。
如:
1、電子存折文件
2、電子錢包文件
<安全文件>
此類文件是和安全有關(guān)的文件,所以對(duì)文件的訪問控制就特別嚴(yán)格,對(duì)文件只能進(jìn)行寫入,文件是不可讀的。
文件內(nèi)存放有關(guān)卡片安全的密鑰和口令。
但或許大家有疑問,文件要是不可讀,那這文件還有什么用呢?
在實(shí)際中它是這么被使用的,比如說我們要使用某個(gè)密鑰,在卡片中每個(gè)密鑰都有編號(hào),我們?cè)谑褂弥型ㄟ^指定卡片的密鑰號(hào)(即:我們使用的是第幾號(hào)密鑰)來使用密鑰。
比如說我們使用口令,我們通過向卡片送入口令來進(jìn)行使用口令。
而具體的比對(duì)口令和用密鑰的計(jì)算是在卡片的內(nèi)部進(jìn)行了。
所以這種措施保證了卡片的密鑰和口令的安全。
對(duì)CPU卡中文件的操作[原創(chuàng)]
我們有什么辦法可以對(duì)文件操作呢?
比如我們要對(duì)個(gè)人基本信息文件pm.txt進(jìn)行操作,在DOS下我們可以用EDIT pm.txt進(jìn)行編輯,在WINDOWS下我們可以雙擊pm.txt,用文本編輯器打開文件。
但在CPU卡中,我們?cè)趺磳?duì)一個(gè)文件(比如說EF1)進(jìn)行操作呢?
比如說我們要打一個(gè)人,我們必須先找到那個(gè)將要倒霉被打的人。
同樣,我們要對(duì)一個(gè)文件操作,首先,我們必須先找到要操作的那個(gè)文件。
那我們?cè)鮽冋业紺PU卡中的文件呢?我們查找某人,可以查找他(她)的身份證號(hào)來找到他,CPU中卡的每個(gè)文件是否也有他們的身份證號(hào)呢?有的:那就是文件標(biāo)識(shí),CPU卡中的文件通過文件標(biāo)識(shí)表標(biāo)記一個(gè)文件。
找一個(gè)人,還可以通過他(她)的名字來查找,找CPU卡中的文件呢?很遺憾,
對(duì)MF和DF有關(guān)目錄的文件有它們的文件名,其它文件則沒有文件名。
<文件標(biāo)識(shí)符與文件名稱>
文件標(biāo)識(shí)符是文件的標(biāo)識(shí)代碼,用2個(gè)字節(jié)表示,為什么只有2個(gè)字節(jié)呢?因?yàn)?個(gè)字節(jié)足矣,2個(gè)字節(jié)FFFF=65535。
在選擇文件時(shí)只要找出該文件的標(biāo)識(shí),就可以找到該文件。同一目錄下的文件標(biāo)識(shí)符是唯一的。MF的文件標(biāo)識(shí)符為3F00,文件名自定義,符合銀行規(guī)范名稱應(yīng)該是1PAY.SYS.DDF01,當(dāng)然了,社保的卡規(guī)定的就不是這個(gè)名字了。
所有文件可以通過文件標(biāo)識(shí)符用SELECT命令進(jìn)行選擇,目錄文件DF可以通過目錄名稱進(jìn)行選擇。
短文件標(biāo)識(shí)符:
由于對(duì)CPU卡文件的操作要求節(jié)省空間并且方便操作。于是好像便出現(xiàn)了短文件標(biāo)識(shí)符這個(gè)東東。所謂短文件標(biāo)識(shí)符,在字面上的意思就是比文件標(biāo)識(shí)符短。好像實(shí)際上也是這樣。大家看看,短文件標(biāo)識(shí)符只用1個(gè)字節(jié)來表示,并且只用1個(gè)字節(jié)低五位來表示。同一個(gè)目錄下的文件短標(biāo)識(shí)符必須是唯一的。
短文件標(biāo)識(shí)符可以通過Read Binary、Update Binary命令的參數(shù)P1來實(shí)現(xiàn)文件的
選擇:若P1的高三位為100,則低5位為短文件標(biāo)識(shí)符。例如:若P1為81H,即10000001,其中高三位為100,則所選的文件標(biāo)識(shí)符為00001,十六進(jìn)制文件標(biāo)識(shí)表示為00 01。
短文件標(biāo)識(shí)符選擇還可以通過Read Record、Update Record命令參數(shù)P2來實(shí)現(xiàn)文件的選擇,方法是若P2的高五位不全為0,低五位為100,則高五位為短文件標(biāo)識(shí)符。對(duì)于命令A(yù)ppend Record低五位為000來表短文件標(biāo)識(shí)符。
短文件標(biāo)識(shí)符選擇只能用五位來決定文件標(biāo)識(shí)符,所以可選擇的最大文件標(biāo)識(shí)為31,若文件需要短文件標(biāo)識(shí)符進(jìn)行選擇,則建立文件時(shí)就需將文件標(biāo)識(shí)符取在1-31之間。
<文件的訪問>
上一節(jié)中規(guī)定了那么多種文件,那么,究竟該怎么對(duì)那些文件進(jìn)行訪問呢?
MF:
在CPU卡被復(fù)位后自動(dòng)被選擇,在任何一級(jí)子目錄下可通過文件標(biāo)識(shí)3F00或其文件名來選擇MF
DF
通過文件名或文件標(biāo)識(shí)符來選擇DF,在MF下可以選擇任意DF。
如果當(dāng)前文件是一個(gè)DF下的一個(gè)EF,同樣可以通過選擇DF的文件標(biāo)識(shí)符或文件名來選擇任意DF。
二進(jìn)制文件:
在滿足讀條件時(shí)可使用Read Binary讀取,在滿足寫條件時(shí)可用Update Binary來更改二進(jìn)制文件的內(nèi)容。
定長記錄文件:
在滿足讀條件時(shí)可使用Read Record讀取,在滿足寫條件時(shí),若記錄未滿則用Append Record增加新記錄,若記錄已滿則用Update Record來更改指定記錄的內(nèi)容。
循環(huán)定長記錄文件:
在滿足讀條件時(shí)可使用Read Record讀取,在滿足追加條件時(shí)可使用Append Record在文件末尾追加一個(gè)記錄,當(dāng)記錄寫滿后自動(dòng)覆蓋最早寫的記錄,最后一次寫入的記錄,其記錄號(hào)總是1,上次寫入的記錄號(hào)是2,依次類推。
變長記錄文件
在滿足讀條件時(shí)可使用Read Record讀出記錄,在滿足寫條件時(shí)若記錄未滿則用Append Record增加新記錄,若記錄已滿則用Update Record來更改指定記錄的內(nèi)容。變長記錄文件的格式為TLV格式,Tag為1字節(jié)的記錄標(biāo)識(shí),L為1字節(jié)的記錄數(shù)據(jù)長度,V為L字節(jié)的數(shù)據(jù)值。在執(zhí)行Update Record更改已存在的記錄時(shí),新寫的整條記錄長度必須和原來的整個(gè)記錄長度相等,否則將返回錯(cuò)誤。
cpu卡入門教程8-安全篇[原創(chuàng)]
問題的引出:
假如說你現(xiàn)在手中有6份重要文件
1、房契
2、銀行存折
3、畢業(yè)證書
4、戶口本
5、某某人欠你的100萬塊錢的欠條(呵呵,假裝你有這么多錢,你是百萬富翁并且很慷慨,一個(gè)好人)
6、結(jié)婚證(這個(gè)好像已婚人士才有)
這些對(duì)我們來說都是比較重要的東東,一定要妥善的安全的保存??!你可以這么保存:
方法1:
把這些文件鎖在六個(gè)保險(xiǎn)柜里,一個(gè)柜子放一個(gè)文件
方法2:
把六個(gè)文件全部鎖在一個(gè)保險(xiǎn)柜里
方法3:
把六個(gè)文件鎖在n個(gè)保險(xiǎn)柜里,這個(gè)n比6小又比1大
方法4:
把文件放在一個(gè)小保險(xiǎn)柜里,把小保險(xiǎn)柜放進(jìn)大保險(xiǎn)柜里,或者你覺得很好玩的話,再把大保險(xiǎn)柜放進(jìn)大大保險(xiǎn)柜里,如此一個(gè)保險(xiǎn)柜再套另一個(gè)保險(xiǎn)柜,只要你有錢、只要你還想套、我不反對(duì)。
(另:至于買什么牌子的保險(xiǎn)柜、價(jià)錢多少的保險(xiǎn)柜,不在本文章的研究之中,有興趣者可以和我私下討論。我的電話是:139-123456789 電話開機(jī)時(shí)間:凌晨3點(diǎn)到4點(diǎn) )
在CPU卡中的文件的存放也會(huì)存在這些問題,比如說你有6個(gè)文件,你想存放在CPU卡的某個(gè)應(yīng)用中。
考慮到安全問題,CPU卡的文件安全及訪問機(jī)制是由通過認(rèn)證來實(shí)現(xiàn)的(如認(rèn)證密鑰、認(rèn)證PIN,想進(jìn)一步了解可以參考我寫的文章:內(nèi)、外部認(rèn)證深入剖析:
我們現(xiàn)在以認(rèn)證是通過密鑰的認(rèn)證來說明:
方法1:
6個(gè)文件用6個(gè)密鑰來保護(hù),每個(gè)文件對(duì)應(yīng)一個(gè)密鑰
方法2:
6個(gè)文件只用一個(gè)密鑰來保護(hù)
方法3:
6個(gè)文件進(jìn)行歸類,用n個(gè)密鑰保護(hù),這個(gè)n比6小又比1大
方法4:
文件用密鑰套密鑰保護(hù)。
比如說文件1用密鑰1保護(hù)、密鑰1的使用又必須通過密鑰2的認(rèn)證?;蛘呦旅孢€更復(fù)雜密鑰2的使用必須通過密鑰3的認(rèn)證。
你可以把密鑰想象成保險(xiǎn)柜的鑰匙,小保險(xiǎn)柜的鑰匙必須在大保險(xiǎn)柜的控制下使用。(意思就是:小保險(xiǎn)柜的鑰匙必須在大保險(xiǎn)柜的鑰匙打開了大保險(xiǎn)柜之后才能起作用,這話好像有些拗口,跟繞口令試的,呵呵)
其實(shí)一般的保險(xiǎn)柜都要密碼的,也就是說保險(xiǎn)柜的鑰匙要和密碼配套使用,兩者缺一不可,好像看起來這樣做
會(huì)更保險(xiǎn)一點(diǎn),事實(shí)上也是。至于是先開鑰匙后輸入密碼還是先輸入密碼再開鑰匙,這主要看保險(xiǎn)柜的設(shè)計(jì)。
在CPU卡中可以實(shí)現(xiàn),CPU卡可以用用戶密碼加上卡上密鑰的方法實(shí)現(xiàn)??梢栽O(shè)計(jì)成兩種模式:
方式1、在密鑰認(rèn)證成功后,密碼才可以使用。
方式2、在密碼的驗(yàn)證成功后,密鑰才可以被使用。
這必須按順序來,如方式一,你要是想先驗(yàn)證密碼,對(duì)不起,卡片會(huì)給你一個(gè)提示:安全狀態(tài)不滿足。
這時(shí)候,你必須做的工作是,現(xiàn)對(duì)密鑰進(jìn)行認(rèn)證,密鑰認(rèn)證成功后,再驗(yàn)證密碼就不會(huì)提示安全狀態(tài)不滿足了
以上機(jī)制好像聽起來比較復(fù)雜,但其實(shí)也并不復(fù)雜。(談何容易,或許你會(huì)這么說)
在卡片中,現(xiàn)在比較流行的并且實(shí)現(xiàn)起來也挺簡(jiǎn)單的的方法:狀態(tài)機(jī)機(jī)制
一個(gè)CPU卡文件的安全認(rèn)證設(shè)計(jì),涉及到3方面的狀態(tài):
1、系統(tǒng)當(dāng)前的安全狀態(tài)
2、對(duì)文件操作必須滿足的狀態(tài)
3、密鑰的狀態(tài)
我們?cè)僖员kU(xiǎn)柜為例:
比如說我們想查看保險(xiǎn)柜的那張100萬欠條的內(nèi)容。
1、對(duì)應(yīng)的系統(tǒng)的當(dāng)前狀態(tài):保險(xiǎn)柜關(guān)閉狀態(tài)
2、對(duì)文件操作必須滿足狀態(tài):保險(xiǎn)柜打開狀態(tài)
怎么使系統(tǒng)的的當(dāng)前狀態(tài):保險(xiǎn)柜關(guān)閉狀態(tài) 變成對(duì)文件操作必須滿足狀態(tài):保險(xiǎn)柜打開狀態(tài)呢?
我們使用保險(xiǎn)柜的鑰匙來打開保險(xiǎn)柜。
3、使用鑰匙后的后續(xù)狀態(tài):保險(xiǎn)柜打開狀態(tài)
這樣我們實(shí)現(xiàn)了對(duì)文件的操作。
在CPU卡中,狀態(tài)可以用一個(gè)數(shù)字來表示:比如說0
我們定義:
1、系統(tǒng)缺省的當(dāng)前安全狀態(tài):0
2、對(duì)文件操作必須滿足的狀態(tài):6
3、密鑰的后續(xù)狀態(tài):6
步驟:
1、直接對(duì)文件進(jìn)行操作,文件比較“系統(tǒng)的缺省狀態(tài):0” 不等于 “對(duì)文件操作必須滿足的狀態(tài):6”
提示,安全狀態(tài)不滿足。
2、我們對(duì)密鑰進(jìn)行認(rèn)證,認(rèn)證通過后,把“密鑰的后續(xù)狀態(tài):6”賦值“系統(tǒng)缺省的當(dāng)前安全狀態(tài)”
這樣“系統(tǒng)的缺省狀態(tài)=6”
3、下面我們?cè)賹?duì)文件進(jìn)行操作,文件比較“系統(tǒng)的當(dāng)前狀態(tài):6” 等于 “對(duì)文件操作必須滿足的狀態(tài):6,
可以對(duì)文件進(jìn)行操作
安全狀態(tài)的表示:
實(shí)際使用中一般用1個(gè)字節(jié)(16進(jìn)制)來表示狀態(tài),
低4位表示安全級(jí)別下限(0-15),高4位表示安全級(jí)別上限(0-15)
假設(shè)一字節(jié)的值為:XY (0<=X <=F) (0<= Y <=F)
現(xiàn)在以文件的狀態(tài)來說明:
假設(shè)文件的狀態(tài)為:
1、0Y(如:01,02,03,04....),表示對(duì)文件的訪問無安全限制(即這個(gè)文件隨便都可以訪問)
2、如果X>Y (如:10, 32, 85等),表示這個(gè)文件被禁止訪問
3、如果X<=Y (如:13,11,33,38),表示對(duì)文件進(jìn)行訪問前,必須滿足文件的訪問權(quán)限。
比如說文件的訪問權(quán)限是:13,現(xiàn)在的權(quán)限必須是1、2或者是3才可以訪問文件
比如說文件的訪問權(quán)限是:38,現(xiàn)在的權(quán)限必須是3到8的值才可以訪問文件
比如說文件的訪問權(quán)限是:33,現(xiàn)在的權(quán)限必須是3才可以訪問文件
系統(tǒng)一般都會(huì)規(guī)定一個(gè)缺省的權(quán)限:比如說0