專利名稱:一種智能卡及智能卡中存取對(duì)象的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)存儲(chǔ)及信息處理領(lǐng)域,特別是涉及一種智能卡及向智能卡中存取對(duì)象的方法。
背景技術(shù):
由于現(xiàn)有的磁條卡存在安全性差等缺陷,所以國(guó)內(nèi)外各銀行都在逐步采用智能卡(CPU卡)來(lái)代替磁條卡,并單獨(dú)或聯(lián)合行業(yè)用戶發(fā)行了大量的智能卡。一般而言,智能卡是一個(gè)包含嵌入集成電路(IC)的塑料卡片,集成電路內(nèi)包含一個(gè)微型的中央處理器(CPU)、ROM、RAM及其它附屬外圍電路,該集成電路具有和計(jì)算機(jī)類似的能力,例如運(yùn)行程序,處理輸入和輸出數(shù)據(jù)。當(dāng)使用上述CPU卡的時(shí)候,需要由外部提供電源及其它接口設(shè)備。
為了規(guī)范從磁條卡向IC卡(通常指CPU卡)的遷移過(guò)程,三大國(guó)際卡組織Europay、MasterCard、Visa共同制訂了基于IC卡的金融支付應(yīng)用標(biāo)準(zhǔn),簡(jiǎn)稱EMV規(guī)范。所謂EMV遷移是指,按照EMV規(guī)范,在發(fā)卡、收單、信息轉(zhuǎn)接、業(yè)務(wù)處理、相關(guān)產(chǎn)品認(rèn)證等各個(gè)環(huán)節(jié)從磁條卡向IC卡遷移。
為了迅速適應(yīng)國(guó)際化競(jìng)爭(zhēng)的需要,盡快提高自身競(jìng)爭(zhēng)力,國(guó)內(nèi)銀行卡EMV遷移正在逐步實(shí)施中,在不遠(yuǎn)的將來(lái),CPU卡將成為大多數(shù)人隨身攜帶的智能卡。發(fā)卡行通常都比較積極的拓展自己智能卡的功能,如何將發(fā)卡行的這種需求和行業(yè)用戶的項(xiàng)目結(jié)合就是非常重要的課題。
國(guó)際標(biāo)準(zhǔn)化組織規(guī)定的ISO7816第1~7部分規(guī)定了一組覆蓋CPU卡各個(gè)方面的標(biāo)準(zhǔn)。ISO7816包括物理特性(第1部分)、尺寸和觸點(diǎn)位置(第2部分)、電子信號(hào)和傳輸協(xié)議(第3部分)、行業(yè)間交換指令(第4部分)、應(yīng)用程序標(biāo)識(shí)符(第5部分)、行業(yè)間數(shù)據(jù)元素(第6部分)和行業(yè)間SCQL指令(第7部分)。
對(duì)于CPU卡來(lái)說(shuō),實(shí)現(xiàn)CPU卡的多應(yīng)用是一個(gè)迫切的發(fā)展方向,所謂多應(yīng)用是指在同一張智能卡上存在多個(gè)應(yīng)用,如金融錢(qián)包、加油錢(qián)包、考勤門(mén)禁等,通常這些應(yīng)用在邏輯上分別處于不同的應(yīng)用區(qū)。實(shí)現(xiàn)CPU卡多應(yīng)用必須主要考慮以下三部分內(nèi)容應(yīng)用數(shù)據(jù)在智能卡上的存儲(chǔ)機(jī)制;應(yīng)用數(shù)據(jù)如何存取卡上數(shù)據(jù);智能卡如何配合實(shí)際的應(yīng)用實(shí)現(xiàn)具體的應(yīng)用流程。
現(xiàn)有的普通IC卡操作系統(tǒng)遵循基于ISO7816標(biāo)準(zhǔn)的目錄和文件方式,實(shí)現(xiàn)應(yīng)用數(shù)據(jù)在智能卡上的存儲(chǔ)機(jī)制,如圖1所示。
現(xiàn)有的IC卡中采用目錄和文件的方式進(jìn)行應(yīng)用數(shù)據(jù)的存儲(chǔ),即現(xiàn)有的基本都是面向文件系統(tǒng)的智能卡。所述文件數(shù)據(jù)的存儲(chǔ)過(guò)程類似普通軟盤(pán)等的存儲(chǔ)機(jī)制,只不過(guò)現(xiàn)在常用的CPU卡的容量?jī)H僅為8K或者16K字節(jié),容量較小而已。并且,現(xiàn)在常用的CPU卡在操作文件時(shí),存在以下限制1、CPU卡創(chuàng)建一個(gè)文件時(shí)必須先聲明創(chuàng)建的文件的類型以及創(chuàng)建文件的空間大?。徊⑶?,確定后文件的長(zhǎng)度就是固定、不能改變的了,從而導(dǎo)致以前申請(qǐng)的空間無(wú)法再次使用。
2、CPU卡創(chuàng)建完一個(gè)文件后不可以刪除。(測(cè)試發(fā)卡的時(shí)候可以例外,但此時(shí)刪除的是MF,即刪除智能卡中的所有文件和目錄)3、CPU卡文件類型只有很少幾種,即文件類型是固定的。
4、CPU卡創(chuàng)建文件、寫(xiě)文件必須通過(guò)向智能卡發(fā)送報(bào)文的方式進(jìn)行,并且每次寫(xiě)的字節(jié)數(shù)一般不能超過(guò)256字節(jié),處理過(guò)程復(fù)雜。
參照?qǐng)D1,現(xiàn)在常用的CPU卡一般包括主文件MF、專用文件DF以及基本數(shù)據(jù)文件MF等文件類型??ǖ膶S梦募?DF,Dedicated File)與基本數(shù)據(jù)文件(EF)呈樹(shù)狀結(jié)構(gòu),每個(gè)專用文件是其下屬基本數(shù)據(jù)文件的入口點(diǎn)。
所述主文件MF(Master File)即根目錄,是智能卡文件系統(tǒng)的根,相當(dāng)于DOS的根目錄,每張卡有且只有一個(gè)MF文件。當(dāng)然,不同智能卡廠商的MF的創(chuàng)建方式是不同的。主要有兩種方式在智能卡個(gè)人化過(guò)程中由發(fā)卡方創(chuàng)建,如明華、德生智能卡;或者,廠商提供智能卡的時(shí)候已經(jīng)創(chuàng)建,發(fā)卡方不能再創(chuàng)建,如握奇智能卡。
所述DF(Dedicated File)文件相當(dāng)于DOS的子目錄。所述DF文件又可以進(jìn)一步分為DDF和ADF,一般將包含下級(jí)目錄的DF稱之為DDF,不包含下級(jí)目錄的稱之為ADF。
對(duì)于現(xiàn)有IC卡多應(yīng)用的實(shí)現(xiàn)是通過(guò)創(chuàng)建多個(gè)ADF(即創(chuàng)建多個(gè)目錄)達(dá)到的。每個(gè)ADF代表一個(gè)應(yīng)用。每個(gè)ADF下有相應(yīng)的文件,相應(yīng)的文件中存放相應(yīng)的數(shù)據(jù)。
ISO7816標(biāo)準(zhǔn)也定義了一些針對(duì)文件系統(tǒng)的存取指令,如讀二進(jìn)制文件、寫(xiě)二進(jìn)制文件等,現(xiàn)有的IC卡操作系統(tǒng)基本上都采用7816里定義的機(jī)制,另外再加入自定義的或行業(yè)應(yīng)用的特殊指令來(lái)實(shí)現(xiàn)。
例如,CPU卡有這么一個(gè)指令SELECT MF,這個(gè)指令表示進(jìn)入智能卡的根目錄,但由于CPU卡的操作系統(tǒng)比較簡(jiǎn)單,它處理不了這種純粹字符的東西,向智能卡發(fā)送指令的時(shí)候必須把指令轉(zhuǎn)換成十六進(jìn)制的格式轉(zhuǎn)換成智能卡的指令格式是00 A4 00 00 02 3F 00。
由于ISO7816標(biāo)準(zhǔn)僅僅規(guī)定了一些簡(jiǎn)單的存取指令,對(duì)于不同的應(yīng)用則需要加入自定義的或行業(yè)應(yīng)用的特殊指令來(lái)實(shí)現(xiàn),所以,智能卡如何配合具體的應(yīng)用的實(shí)現(xiàn)流程是無(wú)法統(tǒng)一的,例如,人民銀行定義了實(shí)現(xiàn)消費(fèi)和圈存的指令、中石化定義了灰鎖的加鎖解扣指令、勞動(dòng)部定義了自己的實(shí)現(xiàn)老保和社保的指令等等。不同的行業(yè)應(yīng)用根據(jù)自身需要,設(shè)置不同的文件結(jié)構(gòu)、長(zhǎng)度等進(jìn)行存儲(chǔ),設(shè)置不同的專用指令來(lái)實(shí)現(xiàn)不同的應(yīng)用流程。
總之,現(xiàn)有的CPU卡的存儲(chǔ)機(jī)制導(dǎo)致下述的幾個(gè)問(wèn)題
由于創(chuàng)建一個(gè)文件時(shí)必須先聲明創(chuàng)建的文件的類型以及創(chuàng)建文件的空間大??;并且,確定后文件的類型、長(zhǎng)度就是固定的,且不可以刪除,從而導(dǎo)致以前申請(qǐng)過(guò)的空間無(wú)法再次使用。
由于不同行業(yè)應(yīng)用發(fā)行CPU卡時(shí)都需要進(jìn)行相應(yīng)的開(kāi)發(fā)過(guò)程,使得該CPU卡可以執(zhí)行本行業(yè)或企業(yè)的專用指令、流程。本行業(yè)或者其他行業(yè)的新應(yīng)用希望共同使用該CPU卡(即向該CPU卡中創(chuàng)建新應(yīng)用)時(shí),但是由于該CPU卡無(wú)法執(zhí)行其特殊指令、流程,則不得不重新開(kāi)發(fā)一個(gè)新卡,一方面導(dǎo)致開(kāi)發(fā)成本極高,并且后續(xù)升級(jí)或業(yè)務(wù)整合的難以實(shí)現(xiàn);另一方面又導(dǎo)致不同的應(yīng)用需要使用不同的CPU卡,給消費(fèi)者以及服務(wù)提供商帶來(lái)不便。也就是說(shuō),現(xiàn)有技術(shù)向智能卡中創(chuàng)建應(yīng)用的過(guò)程必須包括一個(gè)針對(duì)卡本身的開(kāi)發(fā)過(guò)程,而且無(wú)法方便的向該智能卡中創(chuàng)建另一個(gè)應(yīng)用,因?yàn)樾枰槍?duì)該新應(yīng)用重新進(jìn)行開(kāi)發(fā)過(guò)程。
并且由于各行業(yè)的應(yīng)用具有獨(dú)特的特點(diǎn),自定義了各種不同的應(yīng)用指令和流程,而現(xiàn)有的智能卡無(wú)法適應(yīng)各行業(yè)不同的具體應(yīng)用流程,所以帶來(lái)智能卡多應(yīng)用實(shí)現(xiàn)中的困難。
現(xiàn)有技術(shù)中智能卡應(yīng)用的開(kāi)發(fā)主要是某個(gè)公司私有的開(kāi)發(fā)行為。雖然所有智能卡看起來(lái)很像,但是每個(gè)智能卡的操作系統(tǒng)軟件都是不盡相同的,在設(shè)計(jì)應(yīng)用的接口上存在差異。這意味著如果A公司制造了一種智能卡,B公司也制造了一種智能卡,在這兩種卡上構(gòu)建相同的應(yīng)用存在很大的不確定性,甚至不可能完成。這就導(dǎo)致智能卡的應(yīng)用開(kāi)發(fā)被限制在一個(gè)相對(duì)較小的圈子里,很難實(shí)現(xiàn)和推動(dòng)智能卡的多應(yīng)用。
由于現(xiàn)有技術(shù)無(wú)法制定出一套能夠滿足各行業(yè)對(duì)CPU卡應(yīng)用的指令或流程,使得開(kāi)發(fā)成本極高,并且后續(xù)升級(jí)或業(yè)務(wù)整合的難以實(shí)現(xiàn)。行業(yè)應(yīng)用提供方單獨(dú)發(fā)卡或?yàn)榱四撤N原因和銀行聯(lián)合發(fā)卡,也迫切需要一個(gè)通用的規(guī)范來(lái)指導(dǎo),以減少后續(xù)升級(jí)或業(yè)務(wù)整合時(shí)帶來(lái)的風(fēng)險(xiǎn)和代價(jià)。
發(fā)明內(nèi)容
鑒于上述問(wèn)題,本發(fā)明的目的是提供一種公共的開(kāi)放的智能卡平臺(tái),以便減小或消除發(fā)卡行在業(yè)務(wù)開(kāi)拓時(shí)的技術(shù)障礙,快速推動(dòng)對(duì)智能卡多應(yīng)用市場(chǎng)的開(kāi)發(fā);滿足行業(yè)應(yīng)用的特點(diǎn)和需求,保護(hù)各行業(yè)應(yīng)用的獨(dú)立性和私密性;并相互兼容多個(gè)應(yīng)用開(kāi)發(fā)商的應(yīng)用。
為解決上述技術(shù)問(wèn)題,本發(fā)明的目的是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的一種智能卡中存取對(duì)象的方法,所述智能卡采用容器和對(duì)象的方式存儲(chǔ)數(shù)據(jù),包括以下步驟檢查指令參數(shù),判斷合法性,并分析確定具體的操作類型;解析輸入的對(duì)象標(biāo)識(shí),判斷是否與當(dāng)前應(yīng)用類入口的標(biāo)識(shí)相同;如果相同,則在當(dāng)前應(yīng)用類入口對(duì)象列表中檢索該對(duì)象;如果存在該對(duì)象,則根據(jù)確定的操作類型和對(duì)象屬性,完成相應(yīng)的對(duì)象的存取操作流程。
優(yōu)選的,如果所述相應(yīng)的操作流程為引用流程,則將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長(zhǎng)度Lc和數(shù)據(jù)域是否匹配,以及數(shù)據(jù)域內(nèi)部的結(jié)構(gòu)是否正確;如果檢查通過(guò),則根據(jù)對(duì)象的屬性確定當(dāng)前的引用操作是否合法;如果合法,則引用相應(yīng)的對(duì)象。
優(yōu)選的,所述引用的對(duì)象包括用于實(shí)現(xiàn)一定應(yīng)用指令功能的APDU對(duì)象。優(yōu)選的,如果當(dāng)前對(duì)象為密鑰對(duì)象,則根據(jù)密鑰屬性進(jìn)行相應(yīng)的認(rèn)證過(guò)程;如果認(rèn)證通過(guò),則引用該密鑰對(duì)象。
優(yōu)選的,如果所述相應(yīng)的操作流程為刪除流程,則將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長(zhǎng)度Lc和數(shù)據(jù)域是否匹配;如果匹配,檢查當(dāng)前應(yīng)用類的狀態(tài)機(jī);如果相應(yīng)對(duì)象的刪除條件滿足,則將該對(duì)象占用的空間全部釋放,并更新與此對(duì)象相關(guān)的列表。
優(yōu)選的,如果所述相應(yīng)的操作流程為讀取流程,則將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長(zhǎng)度Lc和數(shù)據(jù)域是否匹配;如果匹配,檢查當(dāng)前對(duì)象的屬性是否為普通的數(shù)據(jù)對(duì)象;如果是,則根據(jù)讀取數(shù)據(jù)項(xiàng)列表(DOL),逐項(xiàng)檢查當(dāng)前應(yīng)用類的狀態(tài)機(jī);如果數(shù)據(jù)項(xiàng)的讀取條件滿足,則將該數(shù)據(jù)項(xiàng)的內(nèi)容讀出。
優(yōu)選的,如果所述相應(yīng)的操作流程為更新流程,則將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長(zhǎng)度Lc和數(shù)據(jù)域是否匹配;如果匹配,檢查當(dāng)前對(duì)象的屬性是否為普通的數(shù)據(jù)對(duì)象;如果是,則根據(jù)更新數(shù)據(jù)項(xiàng)列表(DOL),逐項(xiàng)檢查當(dāng)前應(yīng)用類的狀態(tài)機(jī);如果所有數(shù)據(jù)項(xiàng)的更新條件都滿足,則將該數(shù)據(jù)項(xiàng)的內(nèi)容更新。
優(yōu)選的,如果所述相應(yīng)的操作流程為加值或者減值流程,則將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長(zhǎng)度Lc和數(shù)據(jù)域是否匹配;如果匹配,檢查當(dāng)前對(duì)象的屬性是否為計(jì)算對(duì)象;如果是,則檢查當(dāng)前應(yīng)用類的狀態(tài)機(jī);如果數(shù)據(jù)項(xiàng)的加值或者減值條件滿足,則將該數(shù)據(jù)項(xiàng)的內(nèi)容加值或者減值。
優(yōu)選的,如果所述相應(yīng)的操作流程為解鎖處理流程,則完成下述步驟步驟1、將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長(zhǎng)度Lc和數(shù)據(jù)域是否匹配;如果匹配,則判斷當(dāng)前容器的認(rèn)證模式;步驟2、如果是PIN認(rèn)證模式,則轉(zhuǎn)步驟3;如果是外部認(rèn)證模式,則轉(zhuǎn)步驟6;步驟3、判斷具體的操作類型,如果是解鎖PIN,則轉(zhuǎn)步驟4;如果是修改PIN,則轉(zhuǎn)步驟5。
步驟4、判斷用于容器認(rèn)證的密鑰是否鎖定;如果沒(méi)有鎖定,則比較校驗(yàn)值和保存PUK的值;如果校驗(yàn)成功,則解鎖PIN;步驟5、判斷用于容器認(rèn)證的密鑰是否鎖定;如果沒(méi)有鎖定,則比較校驗(yàn)值和保存的PIN值;如果校驗(yàn)成功則更新PIN的值;步驟6、判斷用于容器認(rèn)證的密鑰是否鎖定;如果沒(méi)有鎖定,則判斷解鎖容器認(rèn)證密鑰的密鑰是否鎖定;如果沒(méi)有鎖定,則利用卡片唯一性標(biāo)識(shí)將應(yīng)用類解鎖密鑰分散,得到解鎖過(guò)程密鑰;解鎖過(guò)程密鑰將終端輸入的隨機(jī)數(shù)加密得到認(rèn)證密文;比較所述認(rèn)證密文和輸入的密文,如果比較結(jié)果一致,則解鎖成功。
本發(fā)明還提供了一種數(shù)據(jù)處理裝置,特別是智能卡,包括微處理器、非易失性存儲(chǔ)器以及操作系統(tǒng);所述操作系統(tǒng)將數(shù)據(jù)按照容器和對(duì)象的方式存儲(chǔ)在非易失性存儲(chǔ)器中,存儲(chǔ)在至少一個(gè)容器中,每個(gè)容器內(nèi)包含至少一個(gè)應(yīng)用的對(duì)象集合;所述操作系統(tǒng)設(shè)置容器的操作接口,以實(shí)現(xiàn)通用的針對(duì)對(duì)象的操作。
本發(fā)明還公開(kāi)了一種實(shí)現(xiàn)智能卡多應(yīng)用的方法,包括設(shè)置至少一個(gè)容器;將數(shù)據(jù)按照容器和對(duì)象的方式存儲(chǔ),每個(gè)容器內(nèi)包含至少一個(gè)應(yīng)用的對(duì)象集合;設(shè)置容器的操作接口,以實(shí)現(xiàn)通用的針對(duì)對(duì)象的操作。優(yōu)選的,根據(jù)數(shù)據(jù)的特性,將數(shù)據(jù)分別存儲(chǔ)為數(shù)據(jù)對(duì)象、計(jì)算對(duì)象、密鑰對(duì)象及應(yīng)用協(xié)議數(shù)據(jù)單元APDU對(duì)象;所述數(shù)據(jù)對(duì)象用于存儲(chǔ)應(yīng)用數(shù)據(jù),所述計(jì)算對(duì)象用于存儲(chǔ)敏感數(shù)據(jù),所述密鑰對(duì)象用于存儲(chǔ)應(yīng)用的密鑰數(shù)據(jù);所述APDU對(duì)象用于存儲(chǔ)實(shí)現(xiàn)特定功能的指令序列數(shù)據(jù)。
與現(xiàn)有技術(shù)相比,從上述技術(shù)方案可以得出,本發(fā)明具有以下優(yōu)點(diǎn)由于本發(fā)明所述智能卡采用容器、對(duì)象的概念對(duì)應(yīng)用數(shù)據(jù)進(jìn)行存儲(chǔ),并在容器端提供通用的針對(duì)對(duì)象的操作,而將多應(yīng)用的本身的安全機(jī)制和應(yīng)用流程完全交給外部處理,達(dá)到了最大的通用性,這是采用ISO7816文件系統(tǒng)的規(guī)范難以做到的。所述通用性體現(xiàn)在,采用本發(fā)明所述智能卡的數(shù)據(jù)存儲(chǔ)方法,只需要針對(duì)該智能卡進(jìn)行一次開(kāi)發(fā)即可,以后的個(gè)人化過(guò)程以及使用流程都可以采用通用流程實(shí)現(xiàn),而不需要由于某個(gè)具體應(yīng)用的特殊需要或者特殊指令對(duì)該智能卡進(jìn)行重新開(kāi)發(fā)的過(guò)程。
采用對(duì)象的概念解決應(yīng)用數(shù)據(jù)存儲(chǔ)問(wèn)題,并且提供標(biāo)準(zhǔn)的接口來(lái)實(shí)現(xiàn)對(duì)象的插入和存取操作,所以本發(fā)明對(duì)應(yīng)用數(shù)據(jù)的具體格式?jīng)]有限制,由應(yīng)用本身自行定義和設(shè)定,從而同時(shí)解決了數(shù)據(jù)的存取問(wèn)題;優(yōu)選的,本發(fā)明還可以采用與傳統(tǒng)方式一致的安全報(bào)文機(jī)制來(lái)保證系統(tǒng)和數(shù)據(jù)安全。
由于本發(fā)明采用了容器和對(duì)象的數(shù)據(jù)存儲(chǔ)方式,所以本發(fā)明所述智能卡還可以具體將某個(gè)單獨(dú)的應(yīng)用作為容器,在該應(yīng)用下面創(chuàng)建更多的子應(yīng)用,從而可以實(shí)現(xiàn)多個(gè)微應(yīng)用。
本發(fā)明所述的向智能卡中創(chuàng)建應(yīng)用的流程可以適用于各種行業(yè),提供了一種通用的創(chuàng)建流程。智能卡的發(fā)行過(guò)程中只需要進(jìn)行一次開(kāi)發(fā)即可,各種行業(yè)應(yīng)用都可以采用本發(fā)明所述的創(chuàng)建應(yīng)用的方法,向智能卡中創(chuàng)建應(yīng)用,即本發(fā)明可以很方便的實(shí)現(xiàn)向智能卡中創(chuàng)建多應(yīng)用。
為了配合應(yīng)用流程的實(shí)現(xiàn),本發(fā)明采用APDU對(duì)象來(lái)實(shí)現(xiàn)以前定義專用的指令的功能,將解決這個(gè)問(wèn)題的主動(dòng)權(quán)從智能卡交到應(yīng)用一方,可以由應(yīng)用具體設(shè)計(jì)相應(yīng)的對(duì)象,只要插入容器就可以了。容器處理APDU對(duì)象類似一個(gè)鉤子,當(dāng)發(fā)現(xiàn)卡讀取設(shè)備發(fā)來(lái)的指令不是標(biāo)準(zhǔn)的指令,則查看當(dāng)前的APDU對(duì)象列表,如果某個(gè)對(duì)象符合處理請(qǐng)求則調(diào)用處理,即可實(shí)現(xiàn)以前定義專用指令的功能。
由于APDU對(duì)象的采用,使得本發(fā)明的存取對(duì)象的流程可以適用于各種行業(yè)的具體應(yīng)用流程。一般的讀取、引用對(duì)象等流程是統(tǒng)一的,而且執(zhí)行特殊指令的流程也是統(tǒng)一的先引用相應(yīng)的APDU對(duì)象,然后由該APDU對(duì)象控制流程完成特殊的指令功能。
由于解決了數(shù)據(jù)的存儲(chǔ)問(wèn)題和存取問(wèn)題,而且將應(yīng)用流程的處理也交到實(shí)際應(yīng)用去處理,本發(fā)明就可以提供統(tǒng)一的多應(yīng)用平臺(tái)。IC卡產(chǎn)業(yè)鏈的所有廠商都將可以開(kāi)發(fā)出通用的、互相兼容的產(chǎn)品,降低成本,并推動(dòng)整個(gè)產(chǎn)業(yè)的發(fā)展。
一個(gè)開(kāi)放的、可互操作的多應(yīng)用智能卡平臺(tái)給不同的機(jī)構(gòu)都將帶來(lái)益處,例如,持卡人、商戶、發(fā)卡方、收單方、系統(tǒng)集成商、智能卡供應(yīng)商和卡讀取設(shè)備供應(yīng)商等。對(duì)發(fā)卡方而言,可以提供共同的平臺(tái)供商業(yè)合作伙伴使用,給持卡人提供便利,保持其忠誠(chéng)度,提高使用本行卡的積極性;對(duì)持卡人而言,可以很容易的、及時(shí)的獲得發(fā)卡方提供的各種服務(wù),隨時(shí)能了解自己的積分額或VIP等級(jí)等信息;對(duì)商戶、收單方、系統(tǒng)集成商、智能卡供應(yīng)商和卡讀取設(shè)備供應(yīng)商而言,可以通過(guò)公共的平臺(tái)和POS系統(tǒng)為各種應(yīng)用服務(wù),比如可以在持卡人的卡上輕松加入自己的積分系統(tǒng),而無(wú)需任何投資。
由于本發(fā)明所述智能卡具有統(tǒng)一的接口,所以系統(tǒng)集成商、機(jī)具供應(yīng)商都可以開(kāi)發(fā)標(biāo)準(zhǔn)的產(chǎn)品,避免對(duì)某個(gè)具體的項(xiàng)目開(kāi)發(fā)產(chǎn)品而增加開(kāi)發(fā)成本,而發(fā)卡者也可以降低系統(tǒng)的兼容風(fēng)險(xiǎn),并保持足夠的開(kāi)放性,確保后續(xù)業(yè)務(wù)能及時(shí)更新到智能卡和相關(guān)環(huán)節(jié),保護(hù)投資收益。
下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
圖1是基于ISO7816標(biāo)準(zhǔn)的目錄和文件的智能卡數(shù)據(jù)存儲(chǔ)方式示意圖;圖2是智能卡的應(yīng)用的裝置框圖;圖3是實(shí)現(xiàn)APDU對(duì)象的信息流程圖;圖4是實(shí)現(xiàn)APDU對(duì)象的系統(tǒng)結(jié)構(gòu)圖;圖5是智能卡中數(shù)據(jù)存儲(chǔ)的容器和對(duì)象的概念圖;圖6是智能卡中數(shù)據(jù)存儲(chǔ)的容器中不同類型的對(duì)象之間的關(guān)系圖;圖7是容器認(rèn)證流程的步驟圖;圖8是插入對(duì)象的處理流程的步驟圖;圖9是存取對(duì)象的處理流程的步驟圖;圖10是引用對(duì)象的處理流程的步驟圖;圖11是刪除對(duì)象的處理流程的步驟圖;
圖12是讀取對(duì)象的處理流程的步驟圖;圖13是更新對(duì)象的處理流程的步驟圖;圖14是對(duì)象加值的處理流程的步驟圖;圖15是對(duì)象減值的處理流程的步驟圖;圖16是解鎖容器認(rèn)證密鑰的處理流程的步驟圖。
具體實(shí)施例方式
本發(fā)明中所述應(yīng)用(Application)一般是指智能卡和卡讀取設(shè)備(CardAcceptance Device,CAD)之間的應(yīng)用協(xié)議以及相關(guān)的數(shù)據(jù)。一個(gè)典型的智能卡設(shè)備一般包括一個(gè)8或16位的運(yùn)行在3.7MHz的微處理器,帶有1K的RAM和多于16K的非易失性存儲(chǔ)器(可編程只讀存儲(chǔ)器或者閃存)。智能卡可以分為可接觸和非可接觸??山佑|智能卡通過(guò)讀卡器和智能卡的8個(gè)觸點(diǎn)物理接觸來(lái)通訊并工作,而非可接觸智能卡依靠在小于2英尺的一般距離之內(nèi)的射頻信號(hào)通訊。
本發(fā)明所述的典型的智能卡的應(yīng)用并不是孤立的,而是包含智能卡、卡讀取設(shè)備以及后端應(yīng)用程序。參照?qǐng)D2,智能卡的應(yīng)用的裝置框圖。
智能卡插入可以與另一臺(tái)計(jì)算機(jī)相連的卡讀取設(shè)備,從而實(shí)現(xiàn)數(shù)據(jù)傳輸和處理。卡讀取設(shè)備又可稱作終端、讀卡器或者接口設(shè)備(IFD)。上述卡讀取設(shè)備都具有向智能卡提供電源和建立數(shù)據(jù)傳輸連接的基本功能。
所述后端應(yīng)用程序可以提供支持卡上APDU對(duì)象(或者稱為小應(yīng)用程序)的服務(wù)。例如,一個(gè)后端應(yīng)用程序可以提供安全系統(tǒng)和卡上的證書(shū)的連接,提供強(qiáng)大的安全性。在一個(gè)電子付款系統(tǒng)中,后端應(yīng)用程序可以提供信用卡訪問(wèn)其他付款信息的服務(wù)。所述APDU是指應(yīng)用協(xié)議數(shù)據(jù)單元(Application ProtocolData Unit)。所述APDU對(duì)象類似JAVA小程序,包括能夠?qū)崿F(xiàn)一定功能的指令集合。
卡讀取設(shè)備端主應(yīng)用程序存在于一個(gè)例如個(gè)人計(jì)算機(jī)這樣的臺(tái)式機(jī)、電子付款終端、手機(jī)或者一個(gè)安全子系統(tǒng)中。所述卡讀取設(shè)備主應(yīng)用程序處理智能卡、APDU對(duì)象和供應(yīng)商的后端應(yīng)用程序之間的通訊。
卡讀取設(shè)備(CAD)是處于主應(yīng)用程序和智能卡設(shè)備之間的接口設(shè)備。所述卡讀取設(shè)備CAD為智能卡提供電力,以及與該智能卡進(jìn)行電子或者射頻通信。所述卡讀取設(shè)備CAD可能是一個(gè)使用串行端口附于臺(tái)式計(jì)算機(jī)的讀卡器,或者可能被整合到其他終端內(nèi),例如飯店或者加油站內(nèi)的電子付款終端。該接口設(shè)備從主應(yīng)用程序到智能卡轉(zhuǎn)送應(yīng)用協(xié)議數(shù)據(jù)單元(Application ProtocolData Unit,簡(jiǎn)稱APDU)指令,并且從智能卡向主應(yīng)用程序轉(zhuǎn)送響應(yīng)。當(dāng)然,某些卡讀取設(shè)備CAD還可以有用于輸入個(gè)人識(shí)別號(hào)碼的鍵盤(pán),設(shè)置還有顯示屏。
本發(fā)明所述智能卡中優(yōu)選存在一個(gè)或多個(gè)能夠?qū)崿F(xiàn)一定指令功能的APDU對(duì)象,還需要存在支持軟件,例如,智能卡的操作系統(tǒng)等。由于本發(fā)明所述智能卡可以存儲(chǔ)APDU對(duì)象,使用APDU對(duì)象可以模擬任何已知的或可能的指令,則必須有相應(yīng)的虛擬機(jī)和指令系統(tǒng)支持,即本發(fā)明所述智能卡還可以包括相應(yīng)的虛擬機(jī)和指令系統(tǒng),用以保證指令的執(zhí)行。
參照?qǐng)D3,是實(shí)現(xiàn)APDU對(duì)象的信息流程圖;參照?qǐng)D4,是實(shí)現(xiàn)APDU對(duì)象的系統(tǒng)結(jié)構(gòu)圖。
APDU對(duì)象是一個(gè)預(yù)定義的程序,通過(guò)CLA和INS與卡讀取設(shè)備(CAD)發(fā)出的APDU命令建立關(guān)聯(lián)。當(dāng)容器內(nèi)存在某個(gè)APDU對(duì)象,且卡讀取設(shè)備CAD發(fā)出的APDU命令的CLA、INS字節(jié)與該APDU對(duì)象關(guān)聯(lián)的CLA、INS相同,則該程序就會(huì)被執(zhí)行,從而完成特定的應(yīng)用功能。
要實(shí)現(xiàn)APDU對(duì)象,則需要設(shè)置相應(yīng)的指令系統(tǒng)和虛擬機(jī)進(jìn)行支持,引用APDU對(duì)象,其內(nèi)容(用高級(jí)語(yǔ)言編寫(xiě)的程序)將被編譯成一串指令序列,程序的執(zhí)行其實(shí)就是對(duì)應(yīng)的指令序列在機(jī)器碼上執(zhí)行,將APDU對(duì)象的程序編譯成指令序列是一個(gè)轉(zhuǎn)換過(guò)程,將人類容易理解的語(yǔ)言轉(zhuǎn)換成機(jī)器容易理解的語(yǔ)言。為了提高運(yùn)行效率,轉(zhuǎn)換(編譯)過(guò)程可以在卡片外部實(shí)現(xiàn),下載到卡片上的是轉(zhuǎn)換后的指令序列。
對(duì)APDU對(duì)象的引用其實(shí)就是執(zhí)行相應(yīng)的指令序列,指令序列里的每一條指令又叫微指令。實(shí)際中,不同的芯片可能具有不同的機(jī)器結(jié)構(gòu)和指令集,將微指令定義的功能在具體的芯片平臺(tái)上實(shí)現(xiàn)必須將其再次翻譯稱該芯片平臺(tái)的專用的指令,這個(gè)翻譯的機(jī)制和方法就稱之為虛擬機(jī)。
參照?qǐng)D3可知,由于設(shè)置了實(shí)現(xiàn)APDU對(duì)象的指令系統(tǒng),所以編譯后的APDU對(duì)象(微指令序列)可以在任何芯片平臺(tái)上運(yùn)行,因?yàn)槠渲噶钕到y(tǒng)與具體的芯片平臺(tái)無(wú)關(guān)。圖4示出了實(shí)現(xiàn)APDU對(duì)象的系統(tǒng)結(jié)構(gòu)圖。虛擬機(jī)定義微指令的翻譯規(guī)則和過(guò)程,包括如何存取操作數(shù)等、如何維護(hù)指令棧、指令寄存器及符號(hào)表。不同的芯片實(shí)現(xiàn)APDU對(duì)象的虛擬機(jī)是相同的。
實(shí)現(xiàn)APDU對(duì)象的指令系統(tǒng)可以根據(jù)實(shí)際數(shù)據(jù)處理過(guò)程的需要進(jìn)行設(shè)定。當(dāng)然,一般指令系統(tǒng)可以設(shè)定加指令、減指令、乘指令、除指令、比較指令、條件轉(zhuǎn)移指令、左位移指令、右位移指令、壓棧指令、出棧指令、存操作數(shù)等,本發(fā)明對(duì)此并不加以限定。
參照?qǐng)D5,首先對(duì)智能卡中數(shù)據(jù)存儲(chǔ)的容器和對(duì)象的概念進(jìn)行詳述。
容器在現(xiàn)實(shí)環(huán)境中,有許多物體可以參照,比如辦公室、城市、村莊和社會(huì)等,其中包含了許多其它的、各種各樣的東西,被容器包容的稱之為對(duì)象。對(duì)象在容器內(nèi)有一定的關(guān)聯(lián),也可能沒(méi)有,但是容器內(nèi)的對(duì)象需要共同遵守容器的規(guī)則。
對(duì)于智能卡來(lái)說(shuō),智能卡本身其實(shí)就是一個(gè)容器,主文件(MF,Master File)包含了卡上所有的應(yīng)用對(duì)象,MF下的DF又是一個(gè)子容器,包含了應(yīng)用具體的數(shù)據(jù)或者密鑰。容器就是一組提供一系列服務(wù)的管理器,只要符合容器的服務(wù)要求(規(guī)范)容器就可以允許使用范圍內(nèi)的管理服務(wù)(針對(duì)對(duì)象的操作)。智能卡上的一個(gè)DF,以唯一的應(yīng)用標(biāo)識(shí)符(AID)標(biāo)識(shí),在支付系統(tǒng)環(huán)境(PSE)里可以標(biāo)識(shí)成一個(gè)應(yīng)用。
本發(fā)明的核心之一就在于是采用了容器和對(duì)象的數(shù)據(jù)存儲(chǔ)架構(gòu),并在容器端提供通用的插入和引用對(duì)象的操作,用以達(dá)到通用平臺(tái)的目的;而將多應(yīng)用的本身的安全機(jī)制和應(yīng)用流程完全交給外部處理,達(dá)到了最大的通用性,這是采用ISO7816文件系統(tǒng)的規(guī)范難以做到的。
由于不同的數(shù)據(jù)涉及的操作、操作條件以及安全程度是不盡相同的,因此為了使容器提供的基本通用操作更好的滿足各種數(shù)據(jù),本發(fā)明所述智能卡根據(jù)不同的數(shù)據(jù)類型,分別存儲(chǔ)成不同類型的對(duì)象。例如,可以定義以下四類對(duì)象數(shù)據(jù)對(duì)象、計(jì)算對(duì)象、密鑰對(duì)象和APDU對(duì)象。參照?qǐng)D6,是不同類型對(duì)象之間的關(guān)系圖。
數(shù)據(jù)對(duì)象是用來(lái)存儲(chǔ)具體應(yīng)用數(shù)據(jù)的,一個(gè)應(yīng)用可以有多個(gè)數(shù)據(jù)對(duì)象。所有應(yīng)用數(shù)據(jù)都必須對(duì)應(yīng)到相應(yīng)的對(duì)象上,一個(gè)數(shù)據(jù)對(duì)象可以包含一個(gè)或多個(gè)應(yīng)用數(shù)據(jù)項(xiàng),不同的數(shù)據(jù)項(xiàng)采用TLV結(jié)構(gòu)封裝,每個(gè)數(shù)據(jù)項(xiàng)的存取條件(AC,Access Condition)都可以單獨(dú)定義。所述TLV是一種結(jié)構(gòu)形式,其中T=TAG標(biāo)識(shí);L=LENTGTH長(zhǎng)度;V=value值。當(dāng)然,具體數(shù)據(jù)項(xiàng)也可以采用其他可以變長(zhǎng)度的結(jié)構(gòu)體,但是所述TLV結(jié)構(gòu)使用起來(lái)非常方便,創(chuàng)建時(shí),定義一段結(jié)構(gòu)體大小加上可變長(zhǎng)數(shù)據(jù)長(zhǎng)度的空間給它即可;釋放時(shí),直接把整個(gè)結(jié)構(gòu)體釋放掉就可以了;所述釋放是指將整個(gè)結(jié)構(gòu)占用的空間釋放,故本發(fā)明采用數(shù)據(jù)對(duì)象的形式可以重復(fù)使用申請(qǐng)過(guò)的空間。
計(jì)算對(duì)象是一種特殊的數(shù)據(jù)對(duì)象,用來(lái)存儲(chǔ)特殊的敏感數(shù)據(jù),比如忠誠(chéng)項(xiàng)目里的積分值等,一個(gè)計(jì)算對(duì)象只能存儲(chǔ)一個(gè)敏感數(shù)據(jù)項(xiàng)。計(jì)算對(duì)象的其他設(shè)置與數(shù)據(jù)對(duì)象相同。
密鑰對(duì)象存儲(chǔ)應(yīng)用安全控制的密鑰,一個(gè)密鑰對(duì)應(yīng)一個(gè)密鑰對(duì)象,密鑰對(duì)象用來(lái)保護(hù)數(shù)據(jù)對(duì)象。一個(gè)密鑰對(duì)象只能存儲(chǔ)一個(gè)密鑰,密鑰本身的使用也可以指定其它的密鑰對(duì)象來(lái)保護(hù)。所述密鑰對(duì)象可以采用單倍長(zhǎng)和雙倍長(zhǎng)對(duì)稱密鑰,也支持非對(duì)稱密鑰。通過(guò)密鑰對(duì)象,可以實(shí)現(xiàn)外部認(rèn)證或線路保護(hù)等安全機(jī)制。
APDU對(duì)象類似JAVA小程序,包括能夠?qū)崿F(xiàn)一定功能的指令集合,它可以應(yīng)用自定義的接口,微處理器負(fù)責(zé)將卡讀取設(shè)備發(fā)來(lái)的APDU指令轉(zhuǎn)接到對(duì)應(yīng)的APDU對(duì)象,由它來(lái)執(zhí)行具體的動(dòng)作。APDU對(duì)象類似一個(gè)鉤子函數(shù),當(dāng)進(jìn)入容器內(nèi)指定的應(yīng)用,一旦發(fā)出APDU對(duì)象定義的APDU指令時(shí),容器將控制權(quán)交給APDU對(duì)象,由它解釋這條指令。通過(guò)相應(yīng)的虛擬機(jī)和指令系統(tǒng)支持,APDU對(duì)象可以模擬任何已知的或可能的指令,從而達(dá)到較高的通用性。
由于智能卡大多數(shù)情況下是由主應(yīng)用的發(fā)行者擁有,所述多應(yīng)用容器可以設(shè)置一個(gè)控制密鑰用以控制應(yīng)用的增加和刪除。各應(yīng)用內(nèi)的對(duì)象則可以由自定義的安全策略控制,即應(yīng)用本身的安全機(jī)制、應(yīng)用流程交給外部進(jìn)行處理,進(jìn)一步提高行業(yè)應(yīng)用的通用性。
所有的數(shù)據(jù)對(duì)象都可能受密鑰對(duì)象保護(hù),密鑰對(duì)象也可能受其它密鑰對(duì)象保護(hù),但是APDU對(duì)象不受密鑰對(duì)象保護(hù),因?yàn)樗鯝PDU對(duì)象用來(lái)模擬一個(gè)通用接口。當(dāng)APDU對(duì)象的內(nèi)部處理引用到數(shù)據(jù)對(duì)象或密鑰對(duì)象時(shí),和外部引用的條件是一樣的,即需要滿足不同對(duì)象各自的存取條件(AC)。
當(dāng)兩臺(tái)計(jì)算機(jī)彼此進(jìn)行通信時(shí),它們之間交換的是根據(jù)一系列協(xié)議構(gòu)造的數(shù)據(jù)包。類似地,智能卡也使用自己的數(shù)據(jù)包---稱作APDU(ApplicationProtocol Data Unit,應(yīng)用協(xié)議數(shù)據(jù)單元)與卡讀取設(shè)備進(jìn)行對(duì)話。一個(gè)APDU數(shù)據(jù)包包含一條指令或響應(yīng)信息。智能卡的通信采用的是主從模式,而智能卡永遠(yuǎn)扮演從動(dòng)的角色;換句話說(shuō),智能卡總是在等待來(lái)自卡讀取設(shè)備的命令A(yù)PDU。隨后,智能卡執(zhí)行APDU規(guī)定的動(dòng)作,并以一個(gè)應(yīng)答APDU向卡讀取設(shè)備做出回答,即智能卡與卡讀取設(shè)備之間互相交換命令A(yù)PDU和應(yīng)答APDU。
下表分別詳述命令A(yù)PDU和應(yīng)答APDU的格式。
表1命令A(yù)PDU和應(yīng)答APDU的格式
上表中所述命令A(yù)PDU的標(biāo)題頭對(duì)被選指令進(jìn)行編碼,它包括4個(gè)字段類(CLA)、指令(INS)、和參數(shù)1和2(P1和P2),其中每個(gè)字段包含一個(gè)字節(jié)。
CLA類字節(jié),該字節(jié)用來(lái)表示指令的類別;INS指令字節(jié),該字節(jié)表示指令代碼;P1-P2參數(shù)字節(jié),該字節(jié)對(duì)命令A(yù)PDU提供進(jìn)一步說(shuō)明。
上表中所述命令A(yù)PDU的主體部分包括三個(gè)字段,其中,Lc表示命令A(yù)PDU的數(shù)據(jù)字段的字節(jié)數(shù);Le表示以下應(yīng)答APDU的數(shù)據(jù)字段希望的字節(jié)數(shù)。
上表中所述應(yīng)答APDU的尾部的狀態(tài)字節(jié)SW1和SW2表示命令A(yù)PDU在智能卡中的處理狀態(tài)。
下面對(duì)本發(fā)明所述智能卡在與卡讀取設(shè)備進(jìn)行APDU交互時(shí)使用的數(shù)據(jù)元進(jìn)行描述,其長(zhǎng)度以字節(jié)為單位。
容器至少包括兩個(gè)數(shù)據(jù)元容器實(shí)現(xiàn)版本和容器唯一性標(biāo)識(shí),當(dāng)然,所述容器還可以包括其他的數(shù)據(jù)元,例如下面所示
表2容器數(shù)據(jù)元
表3對(duì)象包含的數(shù)據(jù)元
表3描述了對(duì)象可能包括的一些數(shù)據(jù)元。其中對(duì)象標(biāo)識(shí)用于唯一的標(biāo)識(shí)容器內(nèi)的一個(gè)對(duì)象,由于容器內(nèi)可能容納了多個(gè)應(yīng)用,每個(gè)應(yīng)用都定義個(gè)多個(gè)對(duì)象,這就要求對(duì)象標(biāo)識(shí)必須能區(qū)別不同的應(yīng)用和相同應(yīng)用內(nèi)的不同對(duì)象。
在ISO7816里,標(biāo)識(shí)一個(gè)應(yīng)用使用稱為AID的定義方法,AID的長(zhǎng)度可以是從5到16字節(jié);ASN.1(Abstract Syntax Notation 1)標(biāo)準(zhǔn)定義了一種通用的對(duì)象標(biāo)識(shí)方法OID,具體定義和編碼格式請(qǐng)參閱X.208。OID的長(zhǎng)度沒(méi)有限制,OID的格式是按照樹(shù)狀的規(guī)則定義的,每一層都由ISO或其它國(guó)際組織定義。OID存儲(chǔ)時(shí)有特殊的壓縮存儲(chǔ)格式,可以節(jié)省很多空間。所以,在這里優(yōu)選采用OID來(lái)標(biāo)識(shí)容器內(nèi)的對(duì)象。下面的例子是部分OID定義及存儲(chǔ)格式表4OID格式及存儲(chǔ)示例
采用OID類型作為對(duì)象標(biāo)識(shí)(OUID),OUID可以分為兩部分末位域標(biāo)識(shí)對(duì)象在本應(yīng)用內(nèi)的編號(hào)(OSN),前邊所有的域標(biāo)識(shí)對(duì)象所屬的應(yīng)用類(OAID)。在一個(gè)容器內(nèi)使用OAID來(lái)唯一的標(biāo)識(shí)一個(gè)應(yīng)用類,OSN的取值范圍限制為1~254,也就是一個(gè)容器內(nèi)的應(yīng)用最多可有254個(gè)對(duì)象。例如
對(duì)象數(shù)據(jù)元中的對(duì)象屬性可以用兩個(gè)字節(jié)定義,分別定義對(duì)象的類型和屬性,下面詳述。
表5對(duì)象屬性第一字節(jié)定義 第一字節(jié)位8、7標(biāo)識(shí)了一個(gè)對(duì)象的類型,如果是數(shù)據(jù)對(duì)象、計(jì)算對(duì)象或APDU對(duì)象,剩余位和第二字節(jié)均保留使用。
如果是密鑰對(duì)象,則第一字節(jié)的剩余位,用于定義密鑰對(duì)象的用途。如果是密鑰對(duì)象,則第二字節(jié)用于定義密鑰的屬性。表5示出了定義的一些具體情況表6對(duì)象屬性第二字節(jié)定義
每個(gè)在容器內(nèi)的數(shù)據(jù)對(duì)象可以通過(guò)APDU被外部引用,密鑰對(duì)象可以被數(shù)據(jù)對(duì)象或其它密鑰對(duì)象引用,APDU對(duì)象可以被外部調(diào)用;對(duì)象間的引用僅限于容器內(nèi)的同一應(yīng)用,即對(duì)象都具有相同的OAID,所述OAID用來(lái)標(biāo)識(shí)對(duì)象所屬的應(yīng)用類;所有的對(duì)象也可以被刪除,引用或刪除的前提定義為使用條件(AC,Access Condition)。
基于對(duì)象的操作可以有兩類引用(Reference)和刪除(Delete)。
數(shù)據(jù)對(duì)象的引用條件沒(méi)有意義,對(duì)象只是一個(gè)數(shù)據(jù)項(xiàng)的集合,并且所有數(shù)據(jù)項(xiàng)都分別有自己的AC。APDU對(duì)象的引用條件也沒(méi)有意義。
密鑰對(duì)象的引用操作根據(jù)密鑰的用途和屬性解釋,如果是PIN,則解釋為校驗(yàn)口令,如果是外部認(rèn)證密鑰,則解釋為使用外部認(rèn)證;如果是加密密鑰則解釋稱線路保護(hù)密鑰,由密鑰屬性決定保護(hù)方式,如果是屬性定義為MAC KEY,是明文加MAC的保護(hù)方式,如果屬性定義為ENC & MAC KEY,則為密文加MAC的保護(hù)方式;下表是當(dāng)引用到一個(gè)密鑰對(duì)象時(shí)的動(dòng)作解釋。
表7密鑰對(duì)象的動(dòng)作解釋
對(duì)象的使用條件(AC)可以定義為一個(gè)字節(jié),取值為0~255。根據(jù)基于對(duì)象的操作,每個(gè)對(duì)象有兩個(gè)AC,第一字節(jié)定義為引用條件(Reference AC,RAC),第二字節(jié)定義為刪除條件(Delete AC,DAC),AC的定義如下表所示表8對(duì)象AC的定義
當(dāng)AC取值為0時(shí),表示無(wú)條件,即任何條件都可以訪問(wèn);如果為255,則表示為禁止;其它則指向某個(gè)對(duì)象,由該對(duì)象的屬性定義來(lái)決定訪問(wèn)的條件。
對(duì)象的內(nèi)容可以分為兩部分結(jié)構(gòu),一部分定義對(duì)象內(nèi)部存儲(chǔ)的數(shù)據(jù)項(xiàng)的屬性,一部分是數(shù)據(jù)項(xiàng)本身。數(shù)據(jù)項(xiàng)的屬性是指數(shù)據(jù)元的存取條件,多個(gè)數(shù)據(jù)項(xiàng)的存取條件組成一個(gè)列表。即對(duì)象的內(nèi)容由數(shù)據(jù)項(xiàng)使用條件列表(ACL)與數(shù)據(jù)項(xiàng)本身組成。使用條件列表(ACL)的格式可以采用類似EMV規(guī)范里的DOL的概念,由一組標(biāo)簽(Tag)和存取條件(AC)組成,格式是一個(gè)Tag后緊跟此Tag定義的數(shù)據(jù)元的AC。為了減少ACL的長(zhǎng)度以及增強(qiáng)易用性,建議將具有相同AC的數(shù)據(jù)項(xiàng)用一個(gè)模板來(lái)包裝,模板內(nèi)的所有數(shù)據(jù)項(xiàng)都將繼承模板的AC。
下面描述基于數(shù)據(jù)項(xiàng)的操作和使用條件在數(shù)據(jù)對(duì)象內(nèi),數(shù)據(jù)項(xiàng)的操作通常是讀(Read)和寫(xiě)(Update),對(duì)于特殊的數(shù)據(jù)項(xiàng),比如金額或點(diǎn)券等敏感信息,出于安全的考慮,允許的操作是遞增(Increase)和遞減(Decrease);對(duì)于密鑰對(duì)象的數(shù)據(jù)項(xiàng),允許的操作只有寫(xiě)(Update);而對(duì)于APDU對(duì)象,優(yōu)選的,不允許進(jìn)行操作。
數(shù)據(jù)項(xiàng)使用條件可以定義為兩個(gè)字節(jié),對(duì)于數(shù)據(jù)對(duì)象,第一字節(jié)定義為讀條件或遞增條件,第二字節(jié)定義為寫(xiě)條件或遞減條件;對(duì)于密鑰對(duì)象,第一字節(jié)定義為密鑰的錯(cuò)誤使用保護(hù)計(jì)數(shù)器,高半字節(jié)為最大值,低半字節(jié)為初始值,第二字節(jié)定義為寫(xiě)條件。
所有的數(shù)據(jù)項(xiàng)都可以用TLV結(jié)構(gòu)表示,一個(gè)對(duì)象內(nèi)不允許出現(xiàn)相同標(biāo)簽的數(shù)據(jù)項(xiàng),不同的對(duì)象的數(shù)據(jù)項(xiàng)可以采用相同的標(biāo)簽。
下面描述容器和應(yīng)用類的創(chuàng)建和選擇機(jī)制由于本發(fā)明是針對(duì)多應(yīng)用而設(shè)計(jì)的,可以涵蓋開(kāi)放平臺(tái)和非開(kāi)放平臺(tái),所以容器的創(chuàng)建這里不作要求和描述,即對(duì)此不進(jìn)行限定。
容器作為多應(yīng)用的載體,當(dāng)卡讀取設(shè)備發(fā)出SELECT命令選擇容器后,智能卡需要返回容器本身的一些信息和公共信息,需要返回的容器信息見(jiàn)下表表9SELECT命令后需要返回的容器信息
公共信息可以保存在一個(gè)公共信息對(duì)象中,當(dāng)卡讀取設(shè)備選擇容器后,智能卡檢查容器內(nèi)如果存在這個(gè)對(duì)象,則把它的數(shù)據(jù)項(xiàng)附加在容器信息后返回。公共信息對(duì)象的創(chuàng)建是在創(chuàng)建容器時(shí)一起創(chuàng)建的,如何創(chuàng)建及寫(xiě)入信息本發(fā)明不進(jìn)行限定。當(dāng)然,優(yōu)選的,可以將持卡人的信息作為公共信息對(duì)象內(nèi)容的一部分。
容器的認(rèn)證可以是外部認(rèn)證,也可以是PIN認(rèn)證,一旦完成容器的認(rèn)證過(guò)程,容器就允許進(jìn)入創(chuàng)建對(duì)象的狀態(tài)。
應(yīng)用類的創(chuàng)建必須在完成容器的認(rèn)證后才可以使用Insert Object命令創(chuàng)建,一個(gè)應(yīng)用類可以創(chuàng)建多達(dá)254個(gè)對(duì)象,插入的對(duì)象的OID的OAID必須是認(rèn)證時(shí)使用的OAID。
當(dāng)卡讀取設(shè)備發(fā)出本發(fā)明定義的應(yīng)用類選擇命令后,相應(yīng)的應(yīng)用類被選中,并根據(jù)當(dāng)前應(yīng)用類的密鑰對(duì)象的設(shè)置復(fù)位容器的狀態(tài)機(jī)。
創(chuàng)造性的提出采用容器和對(duì)象的概念存儲(chǔ)多應(yīng)用數(shù)據(jù)之后,本發(fā)明還需要解決應(yīng)用流程中如何實(shí)現(xiàn)對(duì)智能卡上的對(duì)象數(shù)據(jù)的存取。下面主要詳細(xì)介紹涉及容器的認(rèn)證、插入對(duì)象和存取對(duì)象的流程步驟。其中,有可能涉及到采用狀態(tài)字表示的結(jié)果,下表描述了優(yōu)選使用的狀態(tài)字及其含義。
表10優(yōu)選使用的狀態(tài)字及其含義
參照?qǐng)D7,下面詳細(xì)介紹容器的認(rèn)證流程步驟。
容器的認(rèn)證流程即獲取訪問(wèn)權(quán)限(GET ACCESS RIGHT)的過(guò)程,容器認(rèn)證可以采用PIN認(rèn)證或者外部認(rèn)證方式。取得容器的認(rèn)證以獲取插入對(duì)象的權(quán)限,可以在認(rèn)證的同時(shí)創(chuàng)建該應(yīng)用類,也可以選擇以前創(chuàng)建的應(yīng)用類以添加對(duì)象。但是經(jīng)過(guò)認(rèn)證獲取的訪問(wèn)權(quán)限,當(dāng)遇到下列任何一種情況時(shí),這種權(quán)限將立即失效□□卡讀取設(shè)備發(fā)出了一個(gè)SELECT CLASS命令□□卡讀取設(shè)備發(fā)出了GET ACCESS RIGHT命令□□卡讀取設(shè)備退出容器通過(guò)容器的認(rèn)證流程之后就可以將對(duì)象插入到容器內(nèi),容器的認(rèn)證流程步驟一般可以包括以下步驟步驟1根據(jù)P1判斷是認(rèn)證還是操作,如果是操作則轉(zhuǎn)入步驟4。
步驟2根據(jù)P1判斷認(rèn)證模式,如果是創(chuàng)建模式則轉(zhuǎn)入步驟4,否則轉(zhuǎn)步驟3。
步驟3當(dāng)前認(rèn)證模式為添加模式,在容器內(nèi)搜索指定的應(yīng)用類,如果找到轉(zhuǎn)步驟4,否則報(bào)引用數(shù)據(jù)未找到(6A88)。
步驟4根據(jù)容器內(nèi)的特征信息,判斷認(rèn)證的具體方法,如果是PIN認(rèn)證則轉(zhuǎn)到步驟5,否則轉(zhuǎn)到步驟6。
步驟5如果是PIN認(rèn)證模式,則校驗(yàn)容器PIN,首先判別PIN是否鎖定,如果鎖定則終止并返回0x6983;否則比較校驗(yàn)值和對(duì)象內(nèi)存儲(chǔ)的值作比較,如果不同,則將錯(cuò)誤計(jì)數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯(cuò)誤計(jì)數(shù)器為0,則表示該P(yáng)IN已鎖定;如果校驗(yàn)成功則恢復(fù)PIN的錯(cuò)誤計(jì)數(shù)器為初始值,轉(zhuǎn)到步驟9。
步驟6首先判別容器認(rèn)證密鑰是否鎖定,如果鎖定則終止并返回0x6983;否則繼續(xù)解析輸入的OAID,如果其長(zhǎng)度不足8字節(jié),則后補(bǔ)0xFF直到補(bǔ)齊8字節(jié),之后用作分散因子;如果OAID長(zhǎng)度大于8字節(jié),則取其最右8字節(jié)作為分散因子。用分散因子分散容器主控密鑰得到應(yīng)用類控制密鑰,分散方式詳見(jiàn)《中國(guó)金融集成電路卡規(guī)范-電子錢(qián)包電子存折應(yīng)用規(guī)范》即可。
步驟7利用相同的分散方法,用智能卡唯一性標(biāo)識(shí)將應(yīng)用類控制密鑰分散,得到認(rèn)證過(guò)程密鑰。
步驟8檢查卡讀取設(shè)備是否取過(guò)隨機(jī)數(shù),如果隨機(jī)數(shù)有效則用該隨機(jī)數(shù)作為輸入,用認(rèn)證過(guò)程密鑰將其加密得到認(rèn)證密文,和輸入的密文比較,如果不一致則認(rèn)證過(guò)程失敗,將錯(cuò)誤計(jì)數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯(cuò)誤計(jì)數(shù)器為0,則表示該密鑰已鎖定;如果認(rèn)證成功恢復(fù)認(rèn)證密鑰的錯(cuò)誤計(jì)數(shù)器為初始值轉(zhuǎn)步驟9。
步驟9判斷是認(rèn)證還是認(rèn)證開(kāi)關(guān)操作,如果是認(rèn)證轉(zhuǎn)步驟10,如果是認(rèn)證開(kāi)關(guān)操作轉(zhuǎn)步驟11。
步驟10根據(jù)P1的設(shè)置,在容器內(nèi)創(chuàng)建新的應(yīng)用類入口或選擇指定的應(yīng)用類入口,且在容器內(nèi)并設(shè)置認(rèn)證成功標(biāo)志。
步驟11根據(jù)P1的設(shè)置,激活或關(guān)閉容器認(rèn)證功能。
參照?qǐng)D8,下面詳述插入對(duì)象Insert Object的處理流程。所述插入對(duì)象的過(guò)程是指對(duì)象的創(chuàng)建過(guò)程,在創(chuàng)建對(duì)象的過(guò)程中將同時(shí)進(jìn)行容器管理。
步驟1檢查P2是否為0x00;同時(shí)檢查P1是否是指定范圍內(nèi)的值,如果有一項(xiàng)不滿足則終止并返回6B00;步驟2檢查內(nèi)部狀態(tài),確認(rèn)是否成功完成認(rèn)證過(guò)程,如果完成則允許插入對(duì)象,否則終止并返回安全條件不滿足代碼6982。
步驟3從數(shù)據(jù)內(nèi)解析出對(duì)象標(biāo)識(shí)OUID,檢查是否具有和當(dāng)前應(yīng)用類入口相同的OAID,如果不滿足則終止并返回?cái)?shù)據(jù)域不正確代碼6A80。
如果滿足,則解析出對(duì)象屬性Attrib和對(duì)象存取條件OAC。分析對(duì)象屬性是否和P1參數(shù)里設(shè)定的插入對(duì)象的類型匹配,如果不滿足則終止并返回?cái)?shù)據(jù)域不正確6A80,否則繼續(xù)分析,如果是密鑰對(duì)象則解析屬性的后續(xù)字節(jié),并根據(jù)密鑰的算法計(jì)算密鑰的長(zhǎng)度。
如果屬性滿足,則解析對(duì)象的內(nèi)容,首先分析并保存存取條件列表ACL,在識(shí)別數(shù)據(jù)項(xiàng)內(nèi)容時(shí)逐項(xiàng)在ACL里檢索,如果定義了數(shù)據(jù)項(xiàng)的AC,則記錄該數(shù)據(jù)項(xiàng)的AC到對(duì)象的ACL列表;如果在ACL里定義的標(biāo)簽是一個(gè)應(yīng)用定義的模板,則模板內(nèi)的所有數(shù)據(jù)項(xiàng)繼承模板的AC;如果在ACL里沒(méi)有定義數(shù)據(jù)項(xiàng)的AC,則設(shè)置缺省值0x00FF,表示讀寫(xiě)權(quán)限為自由;如果是密鑰對(duì)象,則記錄對(duì)象的引用條件、計(jì)數(shù)器及更新條件到當(dāng)前應(yīng)用類入口的狀態(tài)機(jī)描述列表中。
如果在解析對(duì)象內(nèi)容時(shí)出現(xiàn)數(shù)據(jù)域內(nèi)容不正確的情況,應(yīng)終止并返回6A80,智能卡必須釋放所有為該對(duì)象申請(qǐng)的臨時(shí)空間,其它狀態(tài)應(yīng)恢復(fù)到插入該對(duì)象前的狀態(tài)。
步驟4將當(dāng)前解析的對(duì)象插入當(dāng)前應(yīng)用類入口的對(duì)象列表中。
如果認(rèn)證過(guò)程成功后,沒(méi)有一個(gè)該應(yīng)用類的對(duì)象插入到容器內(nèi),當(dāng)卡讀取設(shè)備選擇離開(kāi)容器或用另一個(gè)應(yīng)用類的OAID進(jìn)行認(rèn)證時(shí),當(dāng)前的應(yīng)用類入口應(yīng)該釋放。
參照?qǐng)D9,下面詳述對(duì)象的存取Access Object處理流程。
對(duì)象的存取過(guò)程實(shí)際是對(duì)應(yīng)用數(shù)據(jù)的存取,也可能是執(zhí)行某個(gè)特定的功能,基于對(duì)象的操作可以至少包括兩類引用(Reference)和刪除(Delete)。所述對(duì)象的存取Access Object處理流程可以包括以下步驟步驟1檢查P1、P2的值以及合法性,如果P2不為0x00或P1的值位8沒(méi)置位,則終止并返回6B00。同時(shí)分析P1的值,進(jìn)而確定具體的操作類型。
步驟2解析輸入的對(duì)象OUID,確認(rèn)和當(dāng)前應(yīng)用類入口具有相同的OAID,如果不滿足則終止并返回?cái)?shù)據(jù)域不正確代碼6A80。
在當(dāng)前應(yīng)用類入口對(duì)象列表里檢索該對(duì)象,如果沒(méi)找到,則終止并返回6A88。
步驟3根據(jù)步驟1分析得到的操作類型,分別進(jìn)入對(duì)應(yīng)的操作流程。
下面分別對(duì)具體的操作流程進(jìn)行詳述引用(Reference)過(guò)程流程、刪除(Delete)過(guò)程流程、讀取(Read)過(guò)程流程、更新(Update)過(guò)程流程、加值(Increase)過(guò)程流程、減值(Decrease)過(guò)程流程以及Unblock CAK處理流程。
(1)參照?qǐng)D10,詳細(xì)描述引用(Reference)過(guò)程的流程步驟步驟4將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長(zhǎng)度Lc和數(shù)據(jù)域是否匹配,以及數(shù)據(jù)域內(nèi)部的結(jié)構(gòu)是否正確。如果不正確返回?cái)?shù)據(jù)域長(zhǎng)度不正確代碼6700。
步驟5檢查當(dāng)前對(duì)象是否允許引用,如果不能引用則終止并返回6985。
根據(jù)對(duì)象的屬性確定當(dāng)前的引用操作是否合法,如果不正確返回使用條件不滿足代碼6985。
步驟6如果當(dāng)前對(duì)象為PIN密鑰對(duì)象且P1指明是校驗(yàn)口令,則進(jìn)入校驗(yàn)口令過(guò)程,首先判別此密鑰對(duì)象是否鎖定,如果鎖定則終止并返回0x6983;否則比較校驗(yàn)值和對(duì)象內(nèi)存儲(chǔ)的值作比較,如果不同,則將錯(cuò)誤計(jì)數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯(cuò)誤計(jì)數(shù)器為0,則表示該密鑰已鎖定。
步驟7如果當(dāng)前對(duì)象為PUK密鑰對(duì)象且P1指明是PIN解鎖,則進(jìn)入PIN解鎖過(guò)程,首先判別此密鑰對(duì)象是否鎖定,如果鎖定則終止并返回0x6983;否則繼續(xù)檢查目標(biāo)對(duì)象是否為PIN對(duì)象,如果不是則終止并返回使用條件不滿足6985,如果目標(biāo)對(duì)象是PIN密鑰對(duì)象則繼續(xù)檢查該對(duì)象是否已經(jīng)鎖定,如果沒(méi)有鎖定則終止并返回安全狀態(tài)不滿足6982,否則就比較校驗(yàn)值和PUK對(duì)象內(nèi)存儲(chǔ)的值,如果相同則將目標(biāo)PIN對(duì)象解鎖,并設(shè)置其錯(cuò)誤計(jì)數(shù)器為該密鑰對(duì)象允許的最大值,如果不同,則將PUK密鑰對(duì)象的錯(cuò)誤計(jì)數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯(cuò)誤計(jì)數(shù)器為0,則將該密鑰設(shè)置鎖定標(biāo)記。
步驟8如果當(dāng)前對(duì)象為密鑰對(duì)象,當(dāng)密鑰屬性是允許外部認(rèn)證且P1指明是外部認(rèn)證,則進(jìn)入外部認(rèn)證過(guò)程,首先判別此密鑰對(duì)象是否鎖定,如果鎖定則終止并返回0x6983;如果沒(méi)有鎖定,則檢查卡讀取設(shè)備是否取過(guò)隨機(jī)數(shù),如果隨機(jī)數(shù)有效則用該隨機(jī)數(shù)作為輸入,用對(duì)象內(nèi)的密鑰將其加密得到認(rèn)證密文,和輸入的密文比較,如果不一致則認(rèn)證過(guò)程失敗。
如果密鑰類型為非對(duì)稱密鑰,則按密鑰屬性里指明的方法補(bǔ)齊數(shù)據(jù)后處理。
步驟9如果當(dāng)前對(duì)象為密鑰對(duì)象,當(dāng)密鑰屬性是允許內(nèi)部認(rèn)證且P1指明是內(nèi)部認(rèn)證,則進(jìn)入內(nèi)部認(rèn)證過(guò)程,首先判別此密鑰對(duì)象是否鎖定,如果鎖定則終止并返回0x6983;如果沒(méi)有鎖定,則將輸入數(shù)據(jù)作為輸入,用對(duì)象內(nèi)的密鑰將其加密得到密文并返回。
如果密鑰類型為非對(duì)稱密鑰,則按密鑰屬性里指明的方法補(bǔ)齊數(shù)據(jù)后處理。
步驟10如果當(dāng)前對(duì)象為密鑰對(duì)象,當(dāng)密鑰屬性標(biāo)是允許計(jì)算簽名且P1指明是計(jì)算簽名,則進(jìn)入計(jì)算簽名過(guò)程,首先判別此密鑰對(duì)象是否鎖定,如果鎖定則終止并返回0x6983;如果沒(méi)有鎖定,則檢查卡內(nèi)是否設(shè)置或計(jì)算Hash值,如果沒(méi)有報(bào)6985,否則將Hash值按密鑰屬性里指明的算法補(bǔ)齊到密鑰模長(zhǎng)計(jì)算簽名。
步驟11如果當(dāng)前對(duì)象為密鑰對(duì)象,當(dāng)密鑰屬性是允許校驗(yàn)簽名且P1指明是校驗(yàn)簽名,則進(jìn)入校驗(yàn)簽名過(guò)程,首先判別此密鑰對(duì)象是否鎖定,如果鎖定則終止并返回0x6983;檢查卡內(nèi)是否設(shè)置或計(jì)算Hash值,如果沒(méi)有報(bào)6985,否則將輸入的簽名數(shù)據(jù)解開(kāi),解析出Hash值,和卡內(nèi)的Hash值比較,比較結(jié)果一致返回9000,否則返回9xxx。
(2)參照?qǐng)D11,詳細(xì)描述刪除(Delete)過(guò)程的流程步驟步驟12檢查L(zhǎng)C及數(shù)據(jù)的長(zhǎng)度,如果不匹配則終止并返回6700。
步驟13檢查當(dāng)前應(yīng)用類的狀態(tài)機(jī),如果對(duì)象的刪除條件滿足,則將對(duì)象釋放,并更新與此對(duì)象相關(guān)的列表。
(3)參照?qǐng)D12,詳細(xì)描述讀取(Read)過(guò)程的流程步驟步驟14檢查L(zhǎng)C及數(shù)據(jù)的長(zhǎng)度,如果不匹配則終止并返回6700。檢查當(dāng)前對(duì)象的屬性是否為普通的數(shù)據(jù)對(duì)象,如果是計(jì)算對(duì)象或密鑰對(duì)象,則終止并返回6985。
步驟15根據(jù)讀取數(shù)據(jù)項(xiàng)列表(DOL),逐項(xiàng)檢查當(dāng)前應(yīng)用類的狀態(tài)機(jī),如果數(shù)據(jù)項(xiàng)的讀取條件滿足,則將該數(shù)據(jù)項(xiàng)的內(nèi)容讀出并保存到一個(gè)列表,直到所有數(shù)據(jù)項(xiàng)處理完成。如果有一項(xiàng)的讀取條件不滿足,則終止并返回6985。數(shù)據(jù)項(xiàng)的內(nèi)容讀取完成后,返回讀取的數(shù)據(jù)項(xiàng)內(nèi)容列表。
(4)參照?qǐng)D13,詳細(xì)描述更新(Update)過(guò)程流程步驟16檢查L(zhǎng)C及數(shù)據(jù)的長(zhǎng)度,如果不匹配則終止并返回6700。檢查當(dāng)前對(duì)象的屬性是否為普通的數(shù)據(jù)對(duì)象,如果是計(jì)算對(duì)象或密鑰對(duì)象,則終止并返回6985。
步驟17根據(jù)更新數(shù)據(jù)項(xiàng)列表(DOL),逐項(xiàng)檢查當(dāng)前應(yīng)用類的狀態(tài)機(jī),如果所有數(shù)據(jù)項(xiàng)的更新條件都滿足,則將該數(shù)據(jù)項(xiàng)的內(nèi)容更新。如果有一項(xiàng)的讀取條件不滿足,則終止并返回6985,智能卡必須確保沒(méi)有一項(xiàng)數(shù)據(jù)被更新。
(5)參照?qǐng)D14,詳細(xì)描述加值(Increase)過(guò)程流程步驟18檢查L(zhǎng)C及數(shù)據(jù)的長(zhǎng)度,如果不匹配則終止并返回6700。檢查當(dāng)前對(duì)象的屬性是否為計(jì)算對(duì)象,如果不是則終止并返回6985。
步驟19檢查當(dāng)前應(yīng)用類的狀態(tài)機(jī),如果數(shù)據(jù)項(xiàng)的加值條件滿足,則將該數(shù)據(jù)項(xiàng)的內(nèi)容更新,否則終止并返回6985,(6)參照?qǐng)D15,詳細(xì)描述減值(Decrease)過(guò)程流程步驟20檢查L(zhǎng)C及數(shù)據(jù)的長(zhǎng)度,如果不匹配則終止并返回6700。檢查當(dāng)前對(duì)象的屬性是否為計(jì)算對(duì)象,如果不是則終止并返回6985。
步驟21檢查當(dāng)前應(yīng)用類的狀態(tài)機(jī),如果數(shù)據(jù)項(xiàng)的減值條件滿足,則將該數(shù)據(jù)項(xiàng)的內(nèi)容更新,否則終止并返回6985,(7)參照?qǐng)D16,詳細(xì)描述Unblock CAK解鎖處理流程UnBlock CAK解鎖處理流程可以用來(lái)解鎖容器認(rèn)證密鑰,所述密鑰可以是PIN密鑰或是認(rèn)證密鑰。所述解鎖處理流程優(yōu)選的可以包括以下步驟步驟1檢查L(zhǎng)C及數(shù)據(jù)的長(zhǎng)度,如果不匹配則終止并返回6700。
步驟2判斷當(dāng)前容器的認(rèn)證模式,并判斷指令里指明的模式是否正確,如果不正確,終止并返回安全條件不滿足代碼;否則繼續(xù),如果是PIN認(rèn)證模式,轉(zhuǎn)步驟3;如果是外部認(rèn)證模式轉(zhuǎn)步驟6。
步驟3判斷具體的操作類型,如果是解鎖PIN,則轉(zhuǎn)步驟4;如果是修改PIN,則轉(zhuǎn)步驟5。
步驟4首先判別用于容器認(rèn)證的PIN密鑰是否鎖定,如果沒(méi)有鎖定則終止并返回0x6985;否則繼續(xù)判斷用于容器認(rèn)證的PUK密鑰是否鎖定,如果鎖定則終止并返回0x6983;
否則比較校驗(yàn)值和保存PUK的值作比較,如果不同,則將PUK錯(cuò)誤計(jì)數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯(cuò)誤計(jì)數(shù)器為0,則表示PUK密鑰已鎖定。如果校驗(yàn)成功則44將容器認(rèn)證PIN的錯(cuò)誤計(jì)數(shù)器恢復(fù)為初始值,同時(shí)恢復(fù)PUK密鑰的錯(cuò)誤計(jì)數(shù)器為初始值并結(jié)束指令流程。
步驟5首先判別用于容器認(rèn)證的PIN密鑰是否鎖定,如果鎖定則終止并返回0x6983;否則比較校驗(yàn)值和保存的PIN值作比較,如果不同,則將PIN錯(cuò)誤計(jì)數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯(cuò)誤計(jì)數(shù)器為0,則表示PIN密鑰已鎖定。如果校驗(yàn)成功則更新PIN的值,恢復(fù)PIN的錯(cuò)誤計(jì)數(shù)器為初始值并結(jié)束指令流程。
步驟6首先判別容器認(rèn)證密鑰是否鎖定,如果沒(méi)有鎖定則終止并返回0x6985;否則繼續(xù)判斷解鎖容器認(rèn)證密鑰的密鑰是否鎖定,如果鎖定則終止并返回0x6983;解析輸入的OAID并檢查長(zhǎng)度,如果不足8字節(jié),則后補(bǔ)0xFF直到補(bǔ)齊8字節(jié),之后用作分散因子;如果OAID長(zhǎng)度大于8字節(jié),則取其最右8字節(jié)作為分散因子。用分散因子分散用于解鎖容器認(rèn)證密鑰的解鎖密鑰,得到應(yīng)用類解鎖密鑰,分散方式可以詳見(jiàn)《中國(guó)金融集成電路卡規(guī)范-電子錢(qián)包電子存折應(yīng)用規(guī)范》。
利用相同的分散方法,用智能卡唯一性標(biāo)識(shí)將應(yīng)用類解鎖密鑰分散,得到解鎖過(guò)程密鑰。
檢查卡讀取設(shè)備是否取過(guò)隨機(jī)數(shù),如果隨機(jī)數(shù)有效則用該隨機(jī)數(shù)作為輸入,用解鎖過(guò)程密鑰將其加密得到認(rèn)證密文,和輸入的密文比較,如果不一致則解鎖過(guò)程失敗,將解鎖密鑰的錯(cuò)誤計(jì)數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯(cuò)誤計(jì)數(shù)器為0,則表示該密鑰已鎖定;如果比較結(jié)果一致則將容器認(rèn)證密鑰的錯(cuò)誤計(jì)數(shù)器恢復(fù)為初始值,同時(shí)恢復(fù)解鎖密鑰的錯(cuò)誤計(jì)數(shù)器為初始值并結(jié)束指令流程。
由于本發(fā)明所述智能卡上可以存在多個(gè)應(yīng)用,則為了獨(dú)立地管理容器內(nèi)的不同應(yīng)用類,每一個(gè)應(yīng)用類優(yōu)選的應(yīng)該放在一個(gè)單獨(dú)的區(qū)間。亦即在應(yīng)用類之間應(yīng)該設(shè)計(jì)一道“防火墻”以防止跨過(guò)應(yīng)用類進(jìn)行非法訪問(wèn)。
為了實(shí)現(xiàn)密鑰功能的獨(dú)立性,優(yōu)選的,用于一種特定功能的加密/解密密鑰不能被任何其他功能所使用,包括保存在IC卡中的密鑰和用來(lái)產(chǎn)生、派生、傳輸這些密鑰的密鑰。
安全報(bào)文傳送的目的是保證數(shù)據(jù)的可靠性、完整性和對(duì)發(fā)送方的認(rèn)證。數(shù)據(jù)完整性和對(duì)發(fā)送方的認(rèn)證可以通過(guò)使用MAC來(lái)實(shí)現(xiàn)。數(shù)據(jù)的可靠性可以通過(guò)對(duì)數(shù)據(jù)域的加密來(lái)得到保證。
實(shí)現(xiàn)上述的安全報(bào)文傳送的具體方式可以參見(jiàn)下述實(shí)例。
例如,采用APDU報(bào)文進(jìn)行傳送,當(dāng)CLA字節(jié)的第二個(gè)半字節(jié)等于十六進(jìn)制數(shù)字“4”時(shí),表明對(duì)發(fā)送方命令數(shù)據(jù)要采用安全報(bào)文傳送。當(dāng)使用安全報(bào)文傳送時(shí),命令數(shù)據(jù)域中的數(shù)據(jù)用TLV結(jié)構(gòu)標(biāo)識(shí),格式可以采用“OUID+命令關(guān)聯(lián)數(shù)據(jù)+MAC”。為保證命令中明文數(shù)據(jù)的保密性,可以將數(shù)據(jù)加密。加密時(shí)包含加密數(shù)據(jù)的標(biāo)簽和長(zhǎng)度,在APDU加密數(shù)據(jù)中不包括OUID和讀寫(xiě)數(shù)據(jù)時(shí)的DOL。
在執(zhí)行安全報(bào)文前從智能卡取得的隨機(jī)數(shù)前兩個(gè)字節(jié)定義為ICVprefix,將ICVprefix用指定數(shù)據(jù)補(bǔ)齊為8字節(jié)作為計(jì)算MAC得ICV。
ICVprefix=智能卡隨機(jī)數(shù)前兩個(gè)字節(jié)ICV=ICVprefix+“0F 00 00 00 00 F0”如果連續(xù)進(jìn)行安全報(bào)文傳輸,則將ICVprefix作為整數(shù)值加1后的值做為新得ICVprefix,重新補(bǔ)齊后做為新得ICV參與安全報(bào)文MAC得計(jì)算,如此類推。如果在連續(xù)的安全報(bào)文之間有使用隨機(jī)數(shù)的命令、發(fā)出選擇容器命令或選擇應(yīng)用類命令出現(xiàn),則前面取得的隨機(jī)數(shù)失效,卡讀取設(shè)備必須重新取智能卡隨機(jī)數(shù)以計(jì)算ICVprefix。MAC的計(jì)算數(shù)據(jù)從CLA字節(jié)開(kāi)始到數(shù)據(jù)域結(jié)束。
下面通過(guò)一個(gè)咖啡店對(duì)顧客發(fā)行積分卡的具體實(shí)施例對(duì)本發(fā)明的思想進(jìn)行詳細(xì)說(shuō)明。
某咖啡店準(zhǔn)備對(duì)顧客發(fā)行積分卡,以便在激烈的市場(chǎng)競(jìng)爭(zhēng)中保持顧客的忠誠(chéng)度,計(jì)劃將對(duì)持積分卡的顧客實(shí)行一定的優(yōu)惠和贈(zèng)送,但這些優(yōu)惠計(jì)劃是可變的,也可能針對(duì)不同的顧客群實(shí)施不同的優(yōu)惠計(jì)劃。對(duì)智能卡的要求是智能卡上要記錄顧客的積分值、VIP級(jí)別和身份識(shí)別信息,可以在發(fā)卡后安全的修改相關(guān)內(nèi)容。
根據(jù)積分計(jì)劃需求,可以做如下設(shè)計(jì)表11發(fā)行積分卡的初始化信息
所需要發(fā)行的智能卡設(shè)計(jì)完成之后,就可以開(kāi)始智能卡個(gè)人化過(guò)程。所述個(gè)人化階段主要是將應(yīng)用對(duì)象插入到容器中,如何在智能卡上創(chuàng)建容器這里不做描述,在個(gè)人化時(shí),根據(jù)實(shí)際的商業(yè)營(yíng)運(yùn)模式,可能是單獨(dú)發(fā)卡,也可能是在合作伙伴的卡上添加本積分計(jì)劃。
假定所述需要個(gè)人化的智能卡采用以下的APDU命令編碼表12預(yù)置的APDU命令編碼
所述智能卡個(gè)人化過(guò)程可以包括以下步驟,其中命令部分采用上表進(jìn)行代替對(duì)應(yīng)示出。
步驟1選擇容器,得到容器的認(rèn)證信息To Card00 A4 04 00 10“CUP CONTAINER001”From Card70 1D 5F01 01 40 5F02 08 11 22 33 44 55 66 77 88 5F03 01 00 5F0402 FF FE 5F05 02 A0 00在此假定容器的認(rèn)證功能為激活狀態(tài),認(rèn)證模式為PIN認(rèn)證;同時(shí)已經(jīng)獲知容器的剩余空間以及容器的版本號(hào)等信息。
步驟2認(rèn)證容器To Card80 46 01 00 1D 61 11 4F 05 46 01 00 00 01 50 08“QQ咖啡店”57 0826 12 34 56 FF FF FF FFFrom Card90 00根據(jù)第1步得到的信息,用容器的PIN對(duì)容器進(jìn)行認(rèn)證并創(chuàng)建本應(yīng)用類,假設(shè)容器PIN的值為“123456”。
在該步驟中,如果是外部認(rèn)證模式,則首先從智能卡取隨機(jī)數(shù),將用認(rèn)證密鑰加密隨機(jī)數(shù)后的認(rèn)證數(shù)據(jù)替換上面的認(rèn)證數(shù)據(jù);如果第一步標(biāo)明容器認(rèn)證功能為關(guān)閉,則可以跳過(guò)這一步。
步驟3插入應(yīng)用對(duì)象首先需要插入所有應(yīng)用密鑰到容器中To Card80 40 80 00 2E 7A 2C 51 06 46 01 00 00 01 01 52 03 80 69 0053 02 00 01 7B 19 54 03 55 FF 02 55 12 00 00 DropKey
From Card90 00To Card80 40 80 00 2E 7A 2C 51 06 46 01 00 00 01 02 52 03 80 89 0053 02 00 01 7B 19 54 03 55 FF 02 55 12 00 00 MtKeyFrom Card90 00To Card80 40 80 00 2E 7A 2C 51 06 46 01 00 00 01 03 52 03 80 89 0053 02 00 01 7B 19 54 03 55 FF 02 55 12 00 00 IncKeyFrom Card90 00To Card80 40 80 00 2E 7A 2C 51 06 46 01 00 00 01 04 52 03 80 89 0053 02 00 01 7B 19 54 03 55 FF 02 55 12 00 00 DecKeyFrom Card90 00需要注意的是,如果需要密文安裝密鑰,則首先必須安裝一個(gè)傳輸密鑰,再將所有準(zhǔn)備密文安裝的密鑰的屬性和ACL列表用Insert object指令寫(xiě)入容器后,用Access object以密文的方式將密鑰值導(dǎo)入容器。
再插入應(yīng)用的數(shù)據(jù)對(duì)象To Card80 40 00 00 2C 7A 2A 51 06 46 01 00 00 01 05 52 01 0053 02 00 01 7B 19 54 06 B1 00 FF 93 00 02 B1 0C 91 05“Tiger”92 0339 35 38 93 01 01From Card90 00To Card80 40 40 00 1E 7A 1C 51 06 46 01 00 00 01 06 52 01 40 53 0200 01 7B 0B 54 03 56 03 04 56 04 00 00 00 00From Card90 00至此,積分應(yīng)用的個(gè)人化工作就完成了。
積分智能卡的個(gè)人化完成之后,下面對(duì)積分應(yīng)用的使用示例進(jìn)行詳細(xì)介紹根據(jù)實(shí)際的業(yè)務(wù)需求,積分應(yīng)用的使用示例包括兩方面,一方面是查詢積分和個(gè)人信息,另一方面是增減積分值。
假設(shè),我們已經(jīng)預(yù)定義了一些算法和數(shù)據(jù)代碼,如下表所述,表13預(yù)置的算法和數(shù)據(jù)代碼
□□查詢積分和個(gè)人信息查詢個(gè)人信息To Card80 A4 00 00 05 46 01 00 00 01From Card90 00To Card80 42 B0 00 0D 51 06 46 01 00 00 01 05 58 03 91 92 93From Card“Tiger”39 35 38 01
查詢積分To Card80 A4 00 00 05 46 01 00 00 01From Card90 00To Card80 42 B0 00 0B 51 06 46 01 00 00 01 06 58 01 56From Card00 00 00 00□□增減積分值增加1000點(diǎn)積分To Card80 A4 00 00 05 46 01 00 00 01From Card90 00To Card00 84 00 00 08From CardF2 87 AA 3D 93 6A C1 8F 90 00To Card84 42 C0 00 1B 51 06 46 01 00 00 01 05 58 01 9357 08 EncValue 59 04 MacFrom Card90 00EncValue=Fenc(IncKey,“00 00 03 E8”)MD=Fpad(“84 42 D0 00 1B 51 06 46 01 00 00 01 06 58 01 56 57 08”EncValue)ICVprefix=“B0 01”ICV=ICVprefix+“0F 00 00 00 00 F0”Mac=Fmac(IncKey,ICV,MD)
扣減500點(diǎn)積分To Card84 42 E0 00 1B 51 06 46 01 00 00 01 06 58 01 5657 08 EncValue 59 04 MacFrom Card90 00EncValue=Fenc(DecKey,“00 00 01 F4”)MD=Fpad(84 42 E0 00 1B 51 06 46 01 00 00 01 06 58 01 56 57 08EncValue)ICVprefix++ICV=ICVprefix+“0F 00 00 00 00 F0”Mac=Fmac(DecKey,ICV,MD)□□修改VIP等級(jí)To Card80 A4 00 00 05 46 01 00 00 01From Card90 00To Card00 84 00 00 08From CardB0 01 0E 6F 1E 76 5E 60 90 00To Card84 42 D0 00 1B 51 06 46 01 00 00 01 06 58 01 5657 08 EncValue 59 04 MacFrom Card90 00EncValue=Fenc(MtKey,“02”)MD=Fpad(“84 42 C0 00 1B 51 06 46 01 00 00 01 05 58 01 93 57 08”EncValue)ICVprefix=“F2 87”ICV=ICVprefix+“0F 00 00 00 00 F0”Mac=Fmac(MtKey,ICV,MD)在積分應(yīng)用使用一段時(shí)間后,可能要添加新的對(duì)象來(lái)支撐新的業(yè)務(wù)需求,這其實(shí)就是對(duì)已發(fā)行應(yīng)用的修改或維護(hù)。下面對(duì)可能發(fā)生的積分計(jì)劃變更的流程進(jìn)行說(shuō)明□□刪除對(duì)象刪除對(duì)象的權(quán)限可以由應(yīng)用類自己控制,所以無(wú)需對(duì)容器進(jìn)行認(rèn)證,只要符合對(duì)象的刪除條件,就可以將指定的對(duì)象刪除。
□□添加對(duì)象添加對(duì)象必須完成對(duì)容器的認(rèn)證,過(guò)程和個(gè)人化相同。
□□修改對(duì)象由于對(duì)象創(chuàng)建后只能修改數(shù)據(jù)項(xiàng)的內(nèi)容,無(wú)法添加數(shù)據(jù)項(xiàng)或修改數(shù)據(jù)項(xiàng)的屬性,如果應(yīng)用必須修改對(duì)象的內(nèi)容,則必須首先刪除該對(duì)象,然后再重新創(chuàng)建該對(duì)象。
以上對(duì)本發(fā)明所提供的一種智能卡及智能卡中存取對(duì)象的方法進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種智能卡中存取對(duì)象的方法,其特征在于,所述智能卡采用容器和對(duì)象的方式存儲(chǔ)數(shù)據(jù),包括以下步驟檢查指令參數(shù),判斷合法性,并分析確定具體的操作類型;解析輸入的對(duì)象標(biāo)識(shí),判斷是否與當(dāng)前應(yīng)用類入口的標(biāo)識(shí)相同;如果相同,則在當(dāng)前應(yīng)用類入口對(duì)象列表中檢索該對(duì)象;如果存在該對(duì)象,則根據(jù)確定的操作類型和對(duì)象屬性,完成相應(yīng)的對(duì)象的存取操作流程。
2.如權(quán)利要求1所述的智能卡中存取對(duì)象的方法,其特征在于,如果所述相應(yīng)的操作流程為引用流程,則將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長(zhǎng)度Lc和數(shù)據(jù)域是否匹配,以及數(shù)據(jù)域內(nèi)部的結(jié)構(gòu)是否正確;如果檢查通過(guò),則根據(jù)對(duì)象的屬性確定當(dāng)前的引用操作是否合法;如果合法,則引用相應(yīng)的對(duì)象。
3.如權(quán)利要求2所述的智能卡中存取對(duì)象的方法,其特征在于,所述引用的對(duì)象包括用于實(shí)現(xiàn)一定應(yīng)用指令功能的APDU對(duì)象。
4.如權(quán)利要求2所述的智能卡中存取對(duì)象的方法,其特征在于,還包括如果當(dāng)前對(duì)象為密鑰對(duì)象,則根據(jù)密鑰屬性進(jìn)行相應(yīng)的認(rèn)證過(guò)程;如果認(rèn)證通過(guò),則引用該密鑰對(duì)象。
5.如權(quán)利要求1所述的智能卡中存取對(duì)象的方法,其特征在于,如果所述相應(yīng)的操作流程為刪除流程,則;將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長(zhǎng)度Lc和數(shù)據(jù)域是否匹配;如果匹配,檢查當(dāng)前應(yīng)用類的狀態(tài)機(jī);如果相應(yīng)對(duì)象的刪除條件滿足,則將該對(duì)象占用的空間全部釋放,并更新與此對(duì)象相關(guān)的列表。
6.如權(quán)利要求1所述的智能卡中存取對(duì)象的方法,其特征在于,如果所述相應(yīng)的操作流程為讀取流程,則;將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長(zhǎng)度Lc和數(shù)據(jù)域是否匹配;如果匹配,檢查當(dāng)前對(duì)象的屬性是否為普通的數(shù)據(jù)對(duì)象;如果是,則根據(jù)讀取數(shù)據(jù)項(xiàng)列表(DOL),逐項(xiàng)檢查當(dāng)前應(yīng)用類的狀態(tài)機(jī);如果數(shù)據(jù)項(xiàng)的讀取條件滿足,則將該數(shù)據(jù)項(xiàng)的內(nèi)容讀出。
7.如權(quán)利要求1所述的智能卡中存取對(duì)象的方法,其特征在于,如果所述相應(yīng)的操作流程為更新流程,則;將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長(zhǎng)度Lc和數(shù)據(jù)域是否匹配;如果匹配,檢查當(dāng)前對(duì)象的屬性是否為普通的數(shù)據(jù)對(duì)象;如果是,則根據(jù)更新數(shù)據(jù)項(xiàng)列表(DOL),逐項(xiàng)檢查當(dāng)前應(yīng)用類的狀態(tài)機(jī);如果所有數(shù)據(jù)項(xiàng)的更新條件都滿足,則將該數(shù)據(jù)項(xiàng)的內(nèi)容更新。
8.如權(quán)利要求1所述的智能卡中存取對(duì)象的方法,其特征在于,如果所述相應(yīng)的操作流程為加值或者減值流程,則;將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長(zhǎng)度Lc和數(shù)據(jù)域是否匹配;如果匹配,檢查當(dāng)前對(duì)象的屬性是否為計(jì)算對(duì)象;如果是,則檢查當(dāng)前應(yīng)用類的狀態(tài)機(jī);如果數(shù)據(jù)項(xiàng)的加值或者減值條件滿足,則將該數(shù)據(jù)項(xiàng)的內(nèi)容加值或者減值。
9.如權(quán)利要求1所述的智能卡中存取對(duì)象的方法,其特征在于,如果所述相應(yīng)的操作流程為解鎖處理流程,則;步驟1、將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長(zhǎng)度Lc和數(shù)據(jù)域是否匹配;如果匹配,則判斷當(dāng)前容器的認(rèn)證模式;步驟2、如果是PIN認(rèn)證模式,則轉(zhuǎn)步驟3;如果是外部認(rèn)證模式,則轉(zhuǎn)步驟6;步驟3、判斷具體的操作類型,如果是解鎖PIN,則轉(zhuǎn)步驟4;如果是修改PIN,則轉(zhuǎn)步驟5。步驟4、判斷用于容器認(rèn)證的密鑰是否鎖定;如果沒(méi)有鎖定,則比較校驗(yàn)值和保存PUK的值;如果校驗(yàn)成功,則解鎖PIN;步驟5、判斷用于容器認(rèn)證的密鑰是否鎖定;如果沒(méi)有鎖定,則比較校驗(yàn)值和保存的PIN值;如果校驗(yàn)成功則更新PIN的值;步驟6、判斷用于容器認(rèn)證的密鑰是否鎖定;如果沒(méi)有鎖定,則判斷解鎖容器認(rèn)證密鑰的密鑰是否鎖定;如果沒(méi)有鎖定,則利用卡片唯一性標(biāo)識(shí)將應(yīng)用類解鎖密鑰分散,得到解鎖過(guò)程密鑰;解鎖過(guò)程密鑰將終端輸入的隨機(jī)數(shù)加密得到認(rèn)證密文;比較所述認(rèn)證密文和輸入的密文,如果比較結(jié)果一致,則解鎖成功。
10.一種數(shù)據(jù)處理裝置,特別是智能卡,其特征在于,包括微處理器、非易失性存儲(chǔ)器以及操作系統(tǒng);所述操作系統(tǒng)將數(shù)據(jù)按照容器和對(duì)象的方式存儲(chǔ)在非易失性存儲(chǔ)器中,存儲(chǔ)在至少一個(gè)容器中,每個(gè)容器內(nèi)包含至少一個(gè)應(yīng)用的對(duì)象集合;所述操作系統(tǒng)設(shè)置容器的操作接口,以實(shí)現(xiàn)通用的針對(duì)對(duì)象的操作。
11.一種實(shí)現(xiàn)智能卡多應(yīng)用的方法,其特征在于,包括設(shè)置至少一個(gè)容器;將數(shù)據(jù)按照容器和對(duì)象的方式存儲(chǔ),每個(gè)容器內(nèi)包含至少一個(gè)應(yīng)用的對(duì)象集合;設(shè)置容器的操作接口,以實(shí)現(xiàn)通用的針對(duì)對(duì)象的操作。
12.如權(quán)利要求11所述的實(shí)現(xiàn)智能卡多應(yīng)用的方法,其特征在于,還包括根據(jù)數(shù)據(jù)的特性,將數(shù)據(jù)分別存儲(chǔ)為數(shù)據(jù)對(duì)象、計(jì)算對(duì)象、密鑰對(duì)象及應(yīng)用協(xié)議數(shù)據(jù)單元APDU對(duì)象;所述數(shù)據(jù)對(duì)象用于存儲(chǔ)應(yīng)用數(shù)據(jù),所述計(jì)算對(duì)象用于存儲(chǔ)敏感數(shù)據(jù),所述密鑰對(duì)象用于存儲(chǔ)應(yīng)用的密鑰數(shù)據(jù);所述APDU對(duì)象用于存儲(chǔ)實(shí)現(xiàn)特定功能的指令序列數(shù)據(jù)。
全文摘要
本發(fā)明公開(kāi)了一種智能卡中存取對(duì)象的方法,所述智能卡采用容器和對(duì)象的方式存儲(chǔ)數(shù)據(jù),包括檢查指令參數(shù),判斷合法性,并分析確定具體的操作類型;解析輸入的對(duì)象標(biāo)識(shí),判斷是否與當(dāng)前應(yīng)用類入口的標(biāo)識(shí)相同;如果相同,則在當(dāng)前應(yīng)用類入口對(duì)象列表中檢索該對(duì)象;如果存在該對(duì)象,則根據(jù)確定的操作類型和對(duì)象屬性,完成相應(yīng)的對(duì)象的存取操作流程。由于APDU對(duì)象的采用,使得本發(fā)明的存取對(duì)象的流程可以適用于各種行業(yè)的具體應(yīng)用流程。而且執(zhí)行特殊指令的流程也是統(tǒng)一的先引用相應(yīng)的APDU對(duì)象,然后由該APDU對(duì)象控制流程完成特殊的指令功能。采用本發(fā)明,IC卡產(chǎn)業(yè)鏈的所有廠商都可以開(kāi)發(fā)出通用兼容的產(chǎn)品,降低成本。
文檔編號(hào)G06F9/44GK101042736SQ20061002513
公開(kāi)日2007年9月26日 申請(qǐng)日期2006年3月24日 優(yōu)先權(quán)日2006年3月24日
發(fā)明者徐晉耀, 孟宏文, 楊輔祥, 李春歡, 柏建寧 申請(qǐng)人:中國(guó)銀聯(lián)股份有限公司