欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種實現(xiàn)智能卡多應(yīng)用的方法及數(shù)據(jù)處理裝置的制作方法

文檔序號:6555317閱讀:282來源:國知局
專利名稱:一種實現(xiàn)智能卡多應(yīng)用的方法及數(shù)據(jù)處理裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種數(shù)據(jù)存儲及信息安全技術(shù)領(lǐng)域,特別是涉及一種實現(xiàn)智能卡多應(yīng)用的方法及數(shù)據(jù)處理裝置。
背景技術(shù)
由于現(xiàn)有的磁條卡存在安全性差等缺陷,所以國內(nèi)外各銀行都在逐步采用智能卡(CPU卡)來代替磁條卡,并單獨或聯(lián)合行業(yè)用戶發(fā)行了大量的智能卡。一般而言,智能卡是一個包含嵌入集成電路(IC)的塑料卡片,集成電路內(nèi)包含一個微型的中央處理器(CPU)、ROM、RAM及其它附屬外圍電路,該集成電路具有和計算機類似的能力,例如運行程序,處理輸入和輸出數(shù)據(jù)。當(dāng)使用上述CPU卡的時候,需要由外部提供電源及其它接口設(shè)備。
為了規(guī)范從磁條卡向IC卡(通常指CPU卡)的遷移過程,三大國際卡組織Europay、MasterCard、Visa共同制訂了基于IC卡的金融支付應(yīng)用標(biāo)準(zhǔn),簡稱EMV規(guī)范。所謂EMV遷移是指,按照EMV規(guī)范,在發(fā)卡、收單、信息轉(zhuǎn)接、業(yè)務(wù)處理、相關(guān)產(chǎn)品認(rèn)證等各個環(huán)節(jié)從磁條卡向IC卡遷移。
為了迅速適應(yīng)國際化競爭的需要,盡快提高自身競爭力,國內(nèi)銀行卡EMV遷移正在逐步實施中,在不遠(yuǎn)的將來,CPU卡將成為大多數(shù)人隨身攜帶的智能卡。發(fā)卡行通常都比較積極的拓展自己智能卡的功能,如何將發(fā)卡行的這種需求和行業(yè)用戶的項目結(jié)合就是非常重要的課題。
國際標(biāo)準(zhǔn)化組織規(guī)定的ISO7816第1~7部分規(guī)定了一組覆蓋CPU卡各個方面的標(biāo)準(zhǔn)。ISO7816包括物理特性(第1部分)、尺寸和觸點位置(第2部分)、電子信號和傳輸協(xié)議(第3部分)、行業(yè)間交換指令(第4部分)、應(yīng)用程序標(biāo)識符(第5部分)、行業(yè)間數(shù)據(jù)元素(第6部分)和行業(yè)間SCQL指令(第7部分)。
對于CPU卡來說,實現(xiàn)CPU卡的多應(yīng)用是一個迫切的發(fā)展方向,所謂多應(yīng)用是指在同一張智能卡上存在多個應(yīng)用,如金融錢包、加油錢包、考勤門禁等,通常這些應(yīng)用在邏輯上分別處于不同的應(yīng)用區(qū)。實現(xiàn)CPU卡多應(yīng)用必須主要考慮以下三部分內(nèi)容應(yīng)用數(shù)據(jù)在智能卡上的存儲機制;應(yīng)用數(shù)據(jù)如何存取卡上數(shù)據(jù);智能卡如何配合實際的應(yīng)用實現(xiàn)具體的應(yīng)用流程。
現(xiàn)有的普通IC卡操作系統(tǒng)遵循基于ISO7816標(biāo)準(zhǔn)的目錄和文件方式,實現(xiàn)應(yīng)用數(shù)據(jù)在智能卡上的存儲機制,如圖1所示。
現(xiàn)有的IC卡中采用目錄和文件的方式進(jìn)行應(yīng)用數(shù)據(jù)的存儲,即現(xiàn)有的基本都是面向文件系統(tǒng)的智能卡。所述文件數(shù)據(jù)的存儲過程類似普通軟盤等的存儲機制,只不過現(xiàn)在常用的CPU卡的容量僅僅為8K或者16K字節(jié),容量較小而已。并且,現(xiàn)在常用的CPU卡在操作文件時,存在以下限制1、CPU卡創(chuàng)建一個文件時必須先聲明創(chuàng)建的文件的類型以及創(chuàng)建文件的空間大??;并且,確定后文件的長度就是固定、不能改變的了,從而導(dǎo)致以前申請的空間無法再次使用。
2、CPU卡創(chuàng)建完一個文件后不可以刪除。(測試發(fā)卡的時候可以例外,但此時刪除的是MF,即刪除智能卡中的所有文件和目錄)3、CPU卡文件類型只有很少幾種,即文件類型是固定的。
4、CPU卡創(chuàng)建文件、寫文件必須通過向智能卡發(fā)送報文的方式進(jìn)行,并且每次寫的字節(jié)數(shù)一般不能超過256字節(jié),處理過程復(fù)雜。
參照圖1,現(xiàn)在常用的CPU卡一般包括主文件MF、專用文件DF以及基本數(shù)據(jù)文件MF等文件類型??ǖ膶S梦募?DF,Dedicated File)與基本數(shù)據(jù)文件(EF)呈樹狀結(jié)構(gòu),每個專用文件是其下屬基本數(shù)據(jù)文件的入口點。
所述主文件MF(Master File)即根目錄,是智能卡文件系統(tǒng)的根,相當(dāng)于DOS的根目錄,每張卡有且只有一個MF文件。當(dāng)然,不同智能卡廠商的MF的創(chuàng)建方式是不同的。主要有兩種方式在智能卡個人化過程中由發(fā)卡方創(chuàng)建,如明華、德生智能卡;或者,廠商提供智能卡的時候已經(jīng)創(chuàng)建,發(fā)卡方不能再創(chuàng)建,如握奇智能卡。
所述DF(Dedicated File)文件相當(dāng)于DOS的子目錄。所述DF文件又可以進(jìn)一步分為DDF和ADF,一般將包含下級目錄的DF稱之為DDF,不包含下級目錄的稱之為ADF。
對于現(xiàn)有IC卡多應(yīng)用的實現(xiàn)是通過創(chuàng)建多個ADF(即創(chuàng)建多個目錄)達(dá)到的。每個ADF代表一個應(yīng)用。每個ADF下有相應(yīng)的文件,相應(yīng)的文件中存放相應(yīng)的數(shù)據(jù)。
ISO7816標(biāo)準(zhǔn)也定義了一些針對文件系統(tǒng)的存取指令,如讀二進(jìn)制文件、寫二進(jìn)制文件等,現(xiàn)有的IC卡操作系統(tǒng)基本上都采用7816里定義的機制,另外再加入自定義的或行業(yè)應(yīng)用的特殊指令來實現(xiàn)。
例如,CPU卡有這么一個指令SELECT MF,這個指令表示進(jìn)入智能卡的根目錄,但由于CPU卡的操作系統(tǒng)比較簡單,它處理不了這種純粹字符的東西,向智能卡發(fā)送指令的時候必須把指令轉(zhuǎn)換成十六進(jìn)制的格式轉(zhuǎn)換成智能卡的指令格式是00 A4 00 00 02 3F 00。
由于ISO7816標(biāo)準(zhǔn)僅僅規(guī)定了一些簡單的存取指令,對于不同的應(yīng)用則需要加入自定義的或行業(yè)應(yīng)用的特殊指令來實現(xiàn),所以,智能卡如何配合具體的應(yīng)用的實現(xiàn)流程是無法統(tǒng)一的,例如,人民銀行定義了實現(xiàn)消費和圈存的指令、中石化定義了灰鎖的加鎖解扣指令、勞動部定義了自己的實現(xiàn)老保和社保的指令等等。不同的行業(yè)應(yīng)用根據(jù)自身需要,設(shè)置不同的文件結(jié)構(gòu)、長度等進(jìn)行存儲,設(shè)置不同的專用指令來實現(xiàn)不同的應(yīng)用流程。
總之,現(xiàn)有的CPU卡的存儲機制導(dǎo)致下述的幾個問題
由于創(chuàng)建一個文件時必須先聲明創(chuàng)建的文件的類型以及創(chuàng)建文件的空間大??;并且,確定后文件的類型、長度就是固定的,且不可以刪除,從而導(dǎo)致以前申請過的空間無法再次使用。
由于不同行業(yè)應(yīng)用發(fā)行CPU卡時都需要進(jìn)行相應(yīng)的開發(fā)過程,使得該CPU卡可以執(zhí)行本行業(yè)或企業(yè)的專用指令、流程。本行業(yè)或者其他行業(yè)的新應(yīng)用希望共同使用該CPU卡(即向該CPU卡中創(chuàng)建新應(yīng)用)時,但是由于該CPU卡無法執(zhí)行其特殊指令、流程,則不得不重新開發(fā)一個新卡,一方面導(dǎo)致開發(fā)成本極高,并且后續(xù)升級或業(yè)務(wù)整合的難以實現(xiàn);另一方面又導(dǎo)致不同的應(yīng)用需要使用不同的CPU卡,給消費者以及服務(wù)提供商帶來不便。也就是說,現(xiàn)有技術(shù)向智能卡中創(chuàng)建應(yīng)用的過程必須包括一個針對卡本身的開發(fā)過程,而且無法方便的向該智能卡中創(chuàng)建另一個應(yīng)用,因為需要針對該新應(yīng)用重新進(jìn)行開發(fā)過程。
并且由于各行業(yè)的應(yīng)用具有獨特的特點,自定義了各種不同的應(yīng)用指令和流程,而現(xiàn)有的智能卡無法適應(yīng)各行業(yè)不同的具體應(yīng)用流程,所以帶來智能卡多應(yīng)用實現(xiàn)中的困難。
現(xiàn)有技術(shù)中智能卡應(yīng)用的開發(fā)主要是某個公司私有的開發(fā)行為。雖然所有智能卡看起來很像,但是每個智能卡的操作系統(tǒng)軟件都是不盡相同的,在設(shè)計應(yīng)用的接口上存在差異。這意味著如果A公司制造了一種智能卡,B公司也制造了一種智能卡,在這兩種卡上構(gòu)建相同的應(yīng)用存在很大的不確定性,甚至不可能完成。這就導(dǎo)致智能卡的應(yīng)用開發(fā)被限制在一個相對較小的圈子里,很難實現(xiàn)和推動智能卡的多應(yīng)用。
由于現(xiàn)有技術(shù)無法制定出一套能夠滿足各行業(yè)對CPU卡應(yīng)用的指令或流程,使得開發(fā)成本極高,并且后續(xù)升級或業(yè)務(wù)整合的難以實現(xiàn)。行業(yè)應(yīng)用提供方單獨發(fā)卡或為了某種原因和銀行聯(lián)合發(fā)卡,也迫切需要一個通用的規(guī)范來指導(dǎo),以減少后續(xù)升級或業(yè)務(wù)整合時帶來的風(fēng)險和代價。

發(fā)明內(nèi)容
鑒于上述問題,本發(fā)明的目的是提供一種公共的開放的智能卡平臺,以便減小或消除發(fā)卡行在業(yè)務(wù)開拓時的技術(shù)障礙,快速推動對智能卡多應(yīng)用市場的開發(fā);滿足行業(yè)應(yīng)用的特點和需求,保護(hù)各行業(yè)應(yīng)用的獨立性和私密性;并相互兼容多個應(yīng)用開發(fā)商的應(yīng)用。
為解決上述技術(shù)問題,本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的一種實現(xiàn)智能卡多應(yīng)用的方法,包括設(shè)置至少一個容器;將數(shù)據(jù)按照容器和對象的方式存儲,每個容器內(nèi)包含至少一個應(yīng)用的對象集合;設(shè)置容器的操作接口,以實現(xiàn)通用的針對對象的操作。
優(yōu)選的,所述的實現(xiàn)智能卡多應(yīng)用的方法,還可以包括根據(jù)數(shù)據(jù)的特性,將數(shù)據(jù)分別存儲為數(shù)據(jù)對象、計算對象和密鑰對象;所述數(shù)據(jù)對象用于存儲應(yīng)用數(shù)據(jù),所述計算對象用于存儲敏感數(shù)據(jù),所述密鑰對象用于存儲應(yīng)用的密鑰數(shù)據(jù)。優(yōu)選的,所述對象還可以包括將實現(xiàn)特定功能的指令序列數(shù)據(jù)存儲為應(yīng)用協(xié)議數(shù)據(jù)單元APDU對象。優(yōu)選的,所述的實現(xiàn)智能卡多應(yīng)用的方法,還可以包括設(shè)置虛擬機和指令系統(tǒng),用以支持APDU對象在智能卡內(nèi)的執(zhí)行。
優(yōu)選的,所述的實現(xiàn)智能卡多應(yīng)用的方法,還包括如果所述對象屬于同一應(yīng)用,則APDU對象被外部調(diào)用,數(shù)據(jù)對象通過APDU對象被外部引用,密鑰對象被數(shù)據(jù)對象或其它密鑰對象引用。
優(yōu)選的,所述對象包括以下信息標(biāo)識、屬性、對象的存取條件以及對象的內(nèi)容。優(yōu)選的,所述對象的內(nèi)容包括數(shù)據(jù)項存取條件以及數(shù)據(jù)項本身。優(yōu)選的,所述具有相同存取條件的數(shù)據(jù)項采用統(tǒng)一的模板進(jìn)行封裝,模板內(nèi)的所有數(shù)據(jù)項都繼承模板的存取條件。
本發(fā)明還提供了一種數(shù)據(jù)處理裝置,特別是智能卡,包括微處理器、非易失性存儲器以及操作系統(tǒng);所述操作系統(tǒng)將數(shù)據(jù)按照容器和對象的方式存儲在非易失性存儲器中,存儲在至少一個容器中,每個容器內(nèi)包含至少一個應(yīng)用的對象集合;所述操作系統(tǒng)設(shè)置容器的操作接口,以實現(xiàn)通用的針對對象的操作。
優(yōu)選的,所述對象包括用于存儲應(yīng)用數(shù)據(jù)的數(shù)據(jù)對象,用于存儲敏感數(shù)據(jù)的計算對象,用于存儲應(yīng)用的密鑰數(shù)據(jù)的密鑰對象。優(yōu)選的,所述對象還可以包括用于存儲實現(xiàn)特定功能的指令序列數(shù)據(jù)的應(yīng)用協(xié)議數(shù)據(jù)單元APDU對象。優(yōu)選的,所述的數(shù)據(jù)處理裝置,特別是智能卡,還可以包括虛擬機和指令系統(tǒng),用以支持APDU對象指令的執(zhí)行。優(yōu)選的,如果所述對象屬于同一應(yīng)用,則APDU對象被外部調(diào)用,數(shù)據(jù)對象通過APDU對象被外部引用,密鑰對象被數(shù)據(jù)對象或其它密鑰對象引用。
與現(xiàn)有技術(shù)相比,從上述技術(shù)方案可以得出,本發(fā)明具有以下優(yōu)點由于本發(fā)明所述智能卡采用容器、對象的概念對應(yīng)用數(shù)據(jù)進(jìn)行存儲,并在容器端提供通用的針對對象的操作,而將多應(yīng)用的本身的安全機制和應(yīng)用流程完全交給外部處理,達(dá)到了最大的通用性,這是采用ISO7816文件系統(tǒng)的規(guī)范難以做到的。所述通用性體現(xiàn)在,采用本發(fā)明所述智能卡的數(shù)據(jù)存儲方法,只需要針對該智能卡進(jìn)行一次開發(fā)即可,以后的個人化過程以及使用流程都可以采用通用流程實現(xiàn),而不需要由于某個具體應(yīng)用的特殊需要或者特殊指令對該智能卡進(jìn)行重新開發(fā)的過程。
采用對象的概念解決應(yīng)用數(shù)據(jù)存儲問題,并且提供標(biāo)準(zhǔn)的接口來實現(xiàn)對象的插入和存取操作,所以本發(fā)明對應(yīng)用數(shù)據(jù)的具體格式?jīng)]有限制,由應(yīng)用本身自行定義和設(shè)定,從而同時解決了數(shù)據(jù)的存取問題;優(yōu)選的,本發(fā)明還可以采用與傳統(tǒng)方式一致的安全報文機制來保證系統(tǒng)和數(shù)據(jù)安全。
由于本發(fā)明采用了容器和對象的數(shù)據(jù)存儲方式,所以本發(fā)明所述智能卡還可以具體將某個單獨的應(yīng)用作為容器,在該應(yīng)用下面創(chuàng)建更多的子應(yīng)用,從而可以實現(xiàn)多個微應(yīng)用。
本發(fā)明所述的向智能卡中創(chuàng)建應(yīng)用的流程可以適用于各種行業(yè),提供了一種通用的創(chuàng)建流程。智能卡的發(fā)行過程中只需要進(jìn)行一次開發(fā)即可,各種行業(yè)應(yīng)用都可以采用本發(fā)明所述的創(chuàng)建應(yīng)用的方法,向智能卡中創(chuàng)建應(yīng)用,即本發(fā)明可以很方便的實現(xiàn)向智能卡中創(chuàng)建多應(yīng)用。
為了配合應(yīng)用流程的實現(xiàn),本發(fā)明采用APDU對象來實現(xiàn)以前定義專用的指令的功能,將解決這個問題的主動權(quán)從智能卡交到應(yīng)用一方,可以由應(yīng)用具體設(shè)計相應(yīng)的對象,只要插入容器就可以了。容器處理APDU對象類似一個鉤子,當(dāng)發(fā)現(xiàn)卡讀取設(shè)備發(fā)來的指令不是標(biāo)準(zhǔn)的指令,則查看當(dāng)前的APDU對象列表,如果某個對象符合處理請求則調(diào)用處理,即可實現(xiàn)以前定義專用指令的功能。
由于APDU對象的采用,使得本發(fā)明的存取對象的流程可以適用于各種行業(yè)的具體應(yīng)用流程。一般的讀取、引用對象等流程是統(tǒng)一的,而且執(zhí)行特殊指令的流程也是統(tǒng)一的先引用相應(yīng)的APDU對象,然后由該APDU對象控制流程完成特殊的指令功能。
由于解決了數(shù)據(jù)的存儲問題和存取問題,而且將應(yīng)用流程的處理也交到實際應(yīng)用去處理,本發(fā)明就可以提供統(tǒng)一的多應(yīng)用平臺。IC卡產(chǎn)業(yè)鏈的所有廠商都將可以開發(fā)出通用的、互相兼容的產(chǎn)品,降低成本,并推動整個產(chǎn)業(yè)的發(fā)展。
一個開放的、可互操作的多應(yīng)用智能卡平臺給不同的機構(gòu)都將帶來益處,例如,持卡人、商戶、發(fā)卡方、收單方、系統(tǒng)集成商、智能卡供應(yīng)商和卡讀取設(shè)備供應(yīng)商等。對發(fā)卡方而言,可以提供共同的平臺供商業(yè)合作伙伴使用,給持卡人提供便利,保持其忠誠度,提高使用本行卡的積極性;對持卡人而言,可以很容易的、及時的獲得發(fā)卡方提供的各種服務(wù),隨時能了解自己的積分額或VIP等級等信息;對商戶、收單方、系統(tǒng)集成商、智能卡供應(yīng)商和卡讀取設(shè)備供應(yīng)商而言,可以通過公共的平臺和POS系統(tǒng)為各種應(yīng)用服務(wù),比如可以在持卡人的卡上輕松加入自己的積分系統(tǒng),而無需任何投資。
由于本發(fā)明所述智能卡具有統(tǒng)一的接口,所以系統(tǒng)集成商、機具供應(yīng)商都可以開發(fā)標(biāo)準(zhǔn)的產(chǎn)品,避免對某個具體的項目開發(fā)產(chǎn)品而增加開發(fā)成本,而發(fā)卡者也可以降低系統(tǒng)的兼容風(fēng)險,并保持足夠的開放性,確保后續(xù)業(yè)務(wù)能及時更新到智能卡和相關(guān)環(huán)節(jié),保護(hù)投資收益。


下面結(jié)合附圖和具體實施方式
對本發(fā)明作進(jìn)一步詳細(xì)的說明。
圖1是基于ISO7816標(biāo)準(zhǔn)的目錄和文件的智能卡數(shù)據(jù)存儲方式示意圖;圖2是智能卡的應(yīng)用的裝置框圖;圖3是實現(xiàn)APDU對象的信息流程圖;圖4是實現(xiàn)APDU對象的系統(tǒng)結(jié)構(gòu)圖;圖5是智能卡中數(shù)據(jù)存儲的容器和對象的概念圖;圖6是智能卡中數(shù)據(jù)存儲的容器中不同類型的對象之間的關(guān)系圖;圖7是容器認(rèn)證流程的步驟圖;圖8是插入對象的處理流程的步驟圖;圖9是存取對象的處理流程的步驟圖;圖10是引用對象的處理流程的步驟圖;圖11是刪除對象的處理流程的步驟圖;圖12是讀取對象的處理流程的步驟圖;圖13是更新對象的處理流程的步驟圖;圖14是對象加值的處理流程的步驟圖;圖15是對象減值的處理流程的步驟圖;圖16是解鎖容器認(rèn)證密鑰的處理流程的步驟圖。
具體實施例方式
本發(fā)明中所述應(yīng)用(Application)一般是指智能卡和卡讀取設(shè)備(CardAcceptance Device,CAD)之間的應(yīng)用協(xié)議以及相關(guān)的數(shù)據(jù)。一個典型的智能卡設(shè)備一般包括一個8或16位的運行在3.7MHz的微處理器,帶有1K的RAM和多于16K的非易失性存儲器(可編程只讀存儲器或者閃存)。智能卡可以分為可接觸和非可接觸??山佑|智能卡通過讀卡器和智能卡的8個觸點物理接觸來通訊并工作,而非可接觸智能卡依靠在小于2英尺的一般距離之內(nèi)的射頻信號通訊。
本發(fā)明所述的典型的智能卡的應(yīng)用并不是孤立的,而是包含智能卡、卡讀取設(shè)備以及后端應(yīng)用程序。參照圖2,智能卡的應(yīng)用的裝置框圖。
智能卡插入可以與另一臺計算機相連的卡讀取設(shè)備,從而實現(xiàn)數(shù)據(jù)傳輸和處理??ㄗx取設(shè)備又可稱作終端、讀卡器或者接口設(shè)備(IFD)。上述卡讀取設(shè)備都具有向智能卡提供電源和建立數(shù)據(jù)傳輸連接的基本功能。
所述后端應(yīng)用程序可以提供支持卡上APDU對象(或者稱為小應(yīng)用程序)的服務(wù)。例如,一個后端應(yīng)用程序可以提供安全系統(tǒng)和卡上的證書的連接,提供強大的安全性。在一個電子付款系統(tǒng)中,后端應(yīng)用程序可以提供信用卡訪問其他付款信息的服務(wù)。所述APDU是指應(yīng)用協(xié)議數(shù)據(jù)單元(Application ProtocolData Unit)。所述APDU對象類似JAVA小程序,包括能夠?qū)崿F(xiàn)一定功能的指令集合。
卡讀取設(shè)備端主應(yīng)用程序存在于一個例如個人計算機這樣的臺式機、電子付款終端、手機或者一個安全子系統(tǒng)中。所述卡讀取設(shè)備主應(yīng)用程序處理智能卡、APDU對象和供應(yīng)商的后端應(yīng)用程序之間的通訊。
卡讀取設(shè)備(CAD)是處于主應(yīng)用程序和智能卡設(shè)備之間的接口設(shè)備。所述卡讀取設(shè)備CAD為智能卡提供電力,以及與該智能卡進(jìn)行電子或者射頻通信。所述卡讀取設(shè)備CAD可能是一個使用串行端口附于臺式計算機的讀卡器,或者可能被整合到其他終端內(nèi),例如飯店或者加油站內(nèi)的電子付款終端。該接口設(shè)備從主應(yīng)用程序到智能卡轉(zhuǎn)送應(yīng)用協(xié)議數(shù)據(jù)單元(Application ProtocolData Unit,簡稱APDU)指令,并且從智能卡向主應(yīng)用程序轉(zhuǎn)送響應(yīng)。當(dāng)然,某些卡讀取設(shè)備CAD還可以有用于輸入個人識別號碼的鍵盤,設(shè)置還有顯示屏。
本發(fā)明所述智能卡中優(yōu)選存在一個或多個能夠?qū)崿F(xiàn)一定指令功能的APDU對象,還需要存在支持軟件,例如,智能卡的操作系統(tǒng)等。由于本發(fā)明所述智能卡可以存儲APDU對象,使用APDU對象可以模擬任何已知的或可能的指令,則必須有相應(yīng)的虛擬機和指令系統(tǒng)支持,即本發(fā)明所述智能卡還可以包括相應(yīng)的虛擬機和指令系統(tǒng),用以保證指令的執(zhí)行。
參照圖3,是實現(xiàn)APDU對象的信息流程圖;參照圖4,是實現(xiàn)APDU對象的系統(tǒng)結(jié)構(gòu)圖。
APDU對象是一個預(yù)定義的程序,通過CLA和INS與卡讀取設(shè)備(CAD)發(fā)出的APDU命令建立關(guān)聯(lián)。當(dāng)容器內(nèi)存在某個APDU對象,且卡讀取設(shè)備CAD發(fā)出的APDU命令的CLA、INS字節(jié)與該APDU對象關(guān)聯(lián)的CLA、INS相同,則該程序就會被執(zhí)行,從而完成特定的應(yīng)用功能。
要實現(xiàn)APDU對象,則需要設(shè)置相應(yīng)的指令系統(tǒng)和虛擬機進(jìn)行支持,引用APDU對象,其內(nèi)容(用高級語言編寫的程序)將被編譯成一串指令序列,程序的執(zhí)行其實就是對應(yīng)的指令序列在機器碼上執(zhí)行,將APDU對象的程序編譯成指令序列是一個轉(zhuǎn)換過程,將人類容易理解的語言轉(zhuǎn)換成機器容易理解的語言。為了提高運行效率,轉(zhuǎn)換(編譯)過程可以在卡片外部實現(xiàn),下載到卡片上的是轉(zhuǎn)換后的指令序列。
對APDU對象的引用其實就是執(zhí)行相應(yīng)的指令序列,指令序列里的每一條指令又叫微指令。實際中,不同的芯片可能具有不同的機器結(jié)構(gòu)和指令集,將微指令定義的功能在具體的芯片平臺上實現(xiàn)必須將其再次翻譯稱該芯片平臺的專用的指令,這個翻譯的機制和方法就稱之為虛擬機。
參照圖3可知,由于設(shè)置了實現(xiàn)APDU對象的指令系統(tǒng),所以編譯后的APDU對象(微指令序列)可以在任何芯片平臺上運行,因為其指令系統(tǒng)與具體的芯片平臺無關(guān)。圖4示出了實現(xiàn)APDU對象的系統(tǒng)結(jié)構(gòu)圖。虛擬機定義微指令的翻譯規(guī)則和過程,包括如何存取操作數(shù)等、如何維護(hù)指令棧、指令寄存器及符號表。不同的芯片實現(xiàn)APDU對象的虛擬機是相同的。
實現(xiàn)APDU對象的指令系統(tǒng)可以根據(jù)實際數(shù)據(jù)處理過程的需要進(jìn)行設(shè)定。當(dāng)然,一般指令系統(tǒng)可以設(shè)定加指令、減指令、乘指令、除指令、比較指令、條件轉(zhuǎn)移指令、左位移指令、右位移指令、壓棧指令、出棧指令、存操作數(shù)等,本發(fā)明對此并不加以限定。
參照圖5,首先對智能卡中數(shù)據(jù)存儲的容器和對象的概念進(jìn)行詳述。
容器在現(xiàn)實環(huán)境中,有許多物體可以參照,比如辦公室、城市、村莊和社會等,其中包含了許多其它的、各種各樣的東西,被容器包容的稱之為對象。對象在容器內(nèi)有一定的關(guān)聯(lián),也可能沒有,但是容器內(nèi)的對象需要共同遵守容器的規(guī)則。
對于智能卡來說,智能卡本身其實就是一個容器,主文件(MF,Master File)包含了卡上所有的應(yīng)用對象,MF下的DF又是一個子容器,包含了應(yīng)用具體的數(shù)據(jù)或者密鑰。容器就是一組提供一系列服務(wù)的管理器,只要符合容器的服務(wù)要求(規(guī)范)容器就可以允許使用范圍內(nèi)的管理服務(wù)(針對對象的操作)。智能卡上的一個DF,以唯一的應(yīng)用標(biāo)識符(AID)標(biāo)識,在支付系統(tǒng)環(huán)境(PSE)里可以標(biāo)識成一個應(yīng)用。
本發(fā)明的核心之一就在于是采用了容器和對象的數(shù)據(jù)存儲架構(gòu),并在容器端提供通用的插入和引用對象的操作,用以達(dá)到通用平臺的目的;而將多應(yīng)用的本身的安全機制和應(yīng)用流程完全交給外部處理,達(dá)到了最大的通用性,這是采用ISO7816文件系統(tǒng)的規(guī)范難以做到的。
由于不同的數(shù)據(jù)涉及的操作、操作條件以及安全程度是不盡相同的,因此為了使容器提供的基本通用操作更好的滿足各種數(shù)據(jù),本發(fā)明所述智能卡根據(jù)不同的數(shù)據(jù)類型,分別存儲成不同類型的對象。例如,可以定義以下四類對象數(shù)據(jù)對象、計算對象、密鑰對象和APDU對象。參照圖6,是不同類型對象之間的關(guān)系圖。
數(shù)據(jù)對象是用來存儲具體應(yīng)用數(shù)據(jù)的,一個應(yīng)用可以有多個數(shù)據(jù)對象。所有應(yīng)用數(shù)據(jù)都必須對應(yīng)到相應(yīng)的對象上,一個數(shù)據(jù)對象可以包含一個或多個應(yīng)用數(shù)據(jù)項,不同的數(shù)據(jù)項采用TLV結(jié)構(gòu)封裝,每個數(shù)據(jù)項的存取條件(AC,Access Condition)都可以單獨定義。所述TLV是一種結(jié)構(gòu)形式,其中T=TAG標(biāo)識;L=LENTGTH長度;V=value值。當(dāng)然,具體數(shù)據(jù)項也可以采用其他可以變長度的結(jié)構(gòu)體,但是所述TLV結(jié)構(gòu)使用起來非常方便,創(chuàng)建時,定義一段結(jié)構(gòu)體大小加上可變長數(shù)據(jù)長度的空間給它即可;釋放時,直接把整個結(jié)構(gòu)體釋放掉就可以了;所述釋放是指將整個結(jié)構(gòu)占用的空間釋放,故本發(fā)明采用數(shù)據(jù)對象的形式可以重復(fù)使用申請過的空間。
計算對象是一種特殊的數(shù)據(jù)對象,用來存儲特殊的敏感數(shù)據(jù),比如忠誠項目里的積分值等,一個計算對象只能存儲一個敏感數(shù)據(jù)項。計算對象的其他設(shè)置與數(shù)據(jù)對象相同。
密鑰對象存儲應(yīng)用安全控制的密鑰,一個密鑰對應(yīng)一個密鑰對象,密鑰對象用來保護(hù)數(shù)據(jù)對象。一個密鑰對象只能存儲一個密鑰,密鑰本身的使用也可以指定其它的密鑰對象來保護(hù)。所述密鑰對象可以采用單倍長和雙倍長對稱密鑰,也支持非對稱密鑰。通過密鑰對象,可以實現(xiàn)外部認(rèn)證或線路保護(hù)等安全機制。
APDU對象類似JAVA小程序,包括能夠?qū)崿F(xiàn)一定功能的指令集合,它可以應(yīng)用自定義的接口,微處理器負(fù)責(zé)將卡讀取設(shè)備發(fā)來的APDU指令轉(zhuǎn)接到對應(yīng)的APDU對象,由它來執(zhí)行具體的動作。APDU對象類似一個鉤子函數(shù),當(dāng)進(jìn)入容器內(nèi)指定的應(yīng)用,一旦發(fā)出APDU對象定義的APDU指令時,容器將控制權(quán)交給APDU對象,由它解釋這條指令。通過相應(yīng)的虛擬機和指令系統(tǒng)支持,APDU對象可以模擬任何已知的或可能的指令,從而達(dá)到較高的通用性。
由于智能卡大多數(shù)情況下是由主應(yīng)用的發(fā)行者擁有,所述多應(yīng)用容器可以設(shè)置一個控制密鑰用以控制應(yīng)用的增加和刪除。各應(yīng)用內(nèi)的對象則可以由自定義的安全策略控制,即應(yīng)用本身的安全機制、應(yīng)用流程交給外部進(jìn)行處理,進(jìn)一步提高行業(yè)應(yīng)用的通用性。
所有的數(shù)據(jù)對象都可能受密鑰對象保護(hù),密鑰對象也可能受其它密鑰對象保護(hù),但是APDU對象不受密鑰對象保護(hù),因為所述APDU對象用來模擬一個通用接口。當(dāng)APDU對象的內(nèi)部處理引用到數(shù)據(jù)對象或密鑰對象時,和外部引用的條件是一樣的,即需要滿足不同對象各自的存取條件(AC)。
當(dāng)兩臺計算機彼此進(jìn)行通信時,它們之間交換的是根據(jù)一系列協(xié)議構(gòu)造的數(shù)據(jù)包。類似地,智能卡也使用自己的數(shù)據(jù)包---稱作APDU(ApplicationProtocol Data Unit,應(yīng)用協(xié)議數(shù)據(jù)單元)與卡讀取設(shè)備進(jìn)行對話。一個APDU數(shù)據(jù)包包含一條指令或響應(yīng)信息。智能卡的通信采用的是主從模式,而智能卡永遠(yuǎn)扮演從動的角色;換句話說,智能卡總是在等待來自卡讀取設(shè)備的命令A(yù)PDU。隨后,智能卡執(zhí)行APDU規(guī)定的動作,并以一個應(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)題頭對被選指令進(jìn)行編碼,它包括4個字段類(CLA)、指令(INS)、和參數(shù)1和2(P1和P2),其中每個字段包含一個字節(jié)。
CLA類字節(jié),該字節(jié)用來表示指令的類別;INS指令字節(jié),該字節(jié)表示指令代碼;P1-P2參數(shù)字節(jié),該字節(jié)對命令A(yù)PDU提供進(jìn)一步說明。
上表中所述命令A(yù)PDU的主體部分包括三個字段,其中,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)。
下面對本發(fā)明所述智能卡在與卡讀取設(shè)備進(jìn)行APDU交互時使用的數(shù)據(jù)元進(jìn)行描述,其長度以字節(jié)為單位。
容器至少包括兩個數(shù)據(jù)元容器實現(xiàn)版本和容器唯一性標(biāo)識,當(dāng)然,所述容器還可以包括其他的數(shù)據(jù)元,例如下面所示
表2容器數(shù)據(jù)元

表3對象包含的數(shù)據(jù)元

表3描述了對象可能包括的一些數(shù)據(jù)元。其中對象標(biāo)識用于唯一的標(biāo)識容器內(nèi)的一個對象,由于容器內(nèi)可能容納了多個應(yīng)用,每個應(yīng)用都定義個多個對象,這就要求對象標(biāo)識必須能區(qū)別不同的應(yīng)用和相同應(yīng)用內(nèi)的不同對象。
在ISO7816里,標(biāo)識一個應(yīng)用使用稱為AID的定義方法,AID的長度可以是從5到16字節(jié);ASN.1(Abstract Syntax Notation 1)標(biāo)準(zhǔn)定義了一種通用的對象標(biāo)識方法OID,具體定義和編碼格式請參閱X.208。OID的長度沒有限制,OID的格式是按照樹狀的規(guī)則定義的,每一層都由ISO或其它國際組織定義。OID存儲時有特殊的壓縮存儲格式,可以節(jié)省很多空間。所以,在這里優(yōu)選采用OID來標(biāo)識容器內(nèi)的對象。下面的例子是部分OID定義及存儲格式表4OID格式及存儲示例

采用OID類型作為對象標(biāo)識(OUID),OUID可以分為兩部分末位域標(biāo)識對象在本應(yīng)用內(nèi)的編號(OSN),前邊所有的域標(biāo)識對象所屬的應(yīng)用類(OAID)。在一個容器內(nèi)使用OAID來唯一的標(biāo)識一個應(yīng)用類,OSN的取值范圍限制為1~254,也就是一個容器內(nèi)的應(yīng)用最多可有254個對象。例如

對象數(shù)據(jù)元中的對象屬性可以用兩個字節(jié)定義,分別定義對象的類型和屬性,下面詳述。
表5對象屬性第一字節(jié)定義

第一字節(jié)位8、7標(biāo)識了一個對象的類型,如果是數(shù)據(jù)對象、計算對象或APDU對象,剩余位和第二字節(jié)均保留使用。
如果是密鑰對象,則第一字節(jié)的剩余位,用于定義密鑰對象的用途。如果是密鑰對象,則第二字節(jié)用于定義密鑰的屬性。表5示出了定義的一些具體情況表6對象屬性第二字節(jié)定義

每個在容器內(nèi)的數(shù)據(jù)對象可以通過APDU被外部引用,密鑰對象可以被數(shù)據(jù)對象或其它密鑰對象引用,APDU對象可以被外部調(diào)用;對象間的引用僅限于容器內(nèi)的同一應(yīng)用,即對象都具有相同的OAID,所述OAID用來標(biāo)識對象所屬的應(yīng)用類;所有的對象也可以被刪除,引用或刪除的前提定義為使用條件(AC,Access Condition)。
基于對象的操作可以有兩類引用(Reference)和刪除(Delete)。
數(shù)據(jù)對象的引用條件沒有意義,對象只是一個數(shù)據(jù)項的集合,并且所有數(shù)據(jù)項都分別有自己的AC。APDU對象的引用條件也沒有意義。
密鑰對象的引用操作根據(jù)密鑰的用途和屬性解釋,如果是PIN,則解釋為校驗口令,如果是外部認(rèn)證密鑰,則解釋為使用外部認(rèn)證;如果是加密密鑰則解釋稱線路保護(hù)密鑰,由密鑰屬性決定保護(hù)方式,如果是屬性定義為MAC KEY,是明文加MAC的保護(hù)方式,如果屬性定義為ENC & MAC KEY,則為密文加MAC的保護(hù)方式;下表是當(dāng)引用到一個密鑰對象時的動作解釋。
表7密鑰對象的動作解釋

對象的使用條件(AC)可以定義為一個字節(jié),取值為0~255。根據(jù)基于對象的操作,每個對象有兩個AC,第一字節(jié)定義為引用條件(Reference AC,RAC),第二字節(jié)定義為刪除條件(Delete AC,DAC),AC的定義如下表所示表8對象AC的定義

當(dāng)AC取值為0時,表示無條件,即任何條件都可以訪問;如果為255,則表示為禁止;其它則指向某個對象,由該對象的屬性定義來決定訪問的條件。
對象的內(nèi)容可以分為兩部分結(jié)構(gòu),一部分定義對象內(nèi)部存儲的數(shù)據(jù)項的屬性,一部分是數(shù)據(jù)項本身。數(shù)據(jù)項的屬性是指數(shù)據(jù)元的存取條件,多個數(shù)據(jù)項的存取條件組成一個列表。即對象的內(nèi)容由數(shù)據(jù)項使用條件列表(ACL)與數(shù)據(jù)項本身組成。使用條件列表(ACL)的格式可以采用類似EMV規(guī)范里的DOL的概念,由一組標(biāo)簽(Tag)和存取條件(AC)組成,格式是一個Tag后緊跟此Tag定義的數(shù)據(jù)元的AC。為了減少ACL的長度以及增強易用性,建議將具有相同AC的數(shù)據(jù)項用一個模板來包裝,模板內(nèi)的所有數(shù)據(jù)項都將繼承模板的AC。
下面描述基于數(shù)據(jù)項的操作和使用條件在數(shù)據(jù)對象內(nèi),數(shù)據(jù)項的操作通常是讀(Read)和寫(Update),對于特殊的數(shù)據(jù)項,比如金額或點券等敏感信息,出于安全的考慮,允許的操作是遞增(Increase)和遞減(Decrease);對于密鑰對象的數(shù)據(jù)項,允許的操作只有寫(Update);而對于APDU對象,優(yōu)選的,不允許進(jìn)行操作。
數(shù)據(jù)項使用條件可以定義為兩個字節(jié),對于數(shù)據(jù)對象,第一字節(jié)定義為讀條件或遞增條件,第二字節(jié)定義為寫條件或遞減條件;對于密鑰對象,第一字節(jié)定義為密鑰的錯誤使用保護(hù)計數(shù)器,高半字節(jié)為最大值,低半字節(jié)為初始值,第二字節(jié)定義為寫條件。
所有的數(shù)據(jù)項都可以用TLV結(jié)構(gòu)表示,一個對象內(nèi)不允許出現(xiàn)相同標(biāo)簽的數(shù)據(jù)項,不同的對象的數(shù)據(jù)項可以采用相同的標(biāo)簽。
下面描述容器和應(yīng)用類的創(chuàng)建和選擇機制由于本發(fā)明是針對多應(yīng)用而設(shè)計的,可以涵蓋開放平臺和非開放平臺,所以容器的創(chuàng)建這里不作要求和描述,即對此不進(jìn)行限定。
容器作為多應(yīng)用的載體,當(dāng)卡讀取設(shè)備發(fā)出SELECT命令選擇容器后,智能卡需要返回容器本身的一些信息和公共信息,需要返回的容器信息見下表表9SELECT命令后需要返回的容器信息

公共信息可以保存在一個公共信息對象中,當(dāng)卡讀取設(shè)備選擇容器后,智能卡檢查容器內(nèi)如果存在這個對象,則把它的數(shù)據(jù)項附加在容器信息后返回。公共信息對象的創(chuàng)建是在創(chuàng)建容器時一起創(chuàng)建的,如何創(chuàng)建及寫入信息本發(fā)明不進(jìn)行限定。當(dāng)然,優(yōu)選的,可以將持卡人的信息作為公共信息對象內(nèi)容的一部分。
容器的認(rèn)證可以是外部認(rèn)證,也可以是PIN認(rèn)證,一旦完成容器的認(rèn)證過程,容器就允許進(jìn)入創(chuàng)建對象的狀態(tài)。
應(yīng)用類的創(chuàng)建必須在完成容器的認(rèn)證后才可以使用Insert Object命令創(chuàng)建,一個應(yīng)用類可以創(chuàng)建多達(dá)254個對象,插入的對象的OID的OAID必須是認(rèn)證時使用的OAID。
當(dāng)卡讀取設(shè)備發(fā)出本發(fā)明定義的應(yīng)用類選擇命令后,相應(yīng)的應(yīng)用類被選中,并根據(jù)當(dāng)前應(yīng)用類的密鑰對象的設(shè)置復(fù)位容器的狀態(tài)機。
創(chuàng)造性的提出采用容器和對象的概念存儲多應(yīng)用數(shù)據(jù)之后,本發(fā)明還需要解決應(yīng)用流程中如何實現(xiàn)對智能卡上的對象數(shù)據(jù)的存取。下面主要詳細(xì)介紹涉及容器的認(rèn)證、插入對象和存取對象的流程步驟。其中,有可能涉及到采用狀態(tài)字表示的結(jié)果,下表描述了優(yōu)選使用的狀態(tài)字及其含義。
表10優(yōu)選使用的狀態(tài)字及其含義

參照圖7,下面詳細(xì)介紹容器的認(rèn)證流程步驟。
容器的認(rèn)證流程即獲取訪問權(quán)限(GET ACCESS RIGHT)的過程,容器認(rèn)證可以采用PIN認(rèn)證或者外部認(rèn)證方式。取得容器的認(rèn)證以獲取插入對象的權(quán)限,可以在認(rèn)證的同時創(chuàng)建該應(yīng)用類,也可以選擇以前創(chuàng)建的應(yīng)用類以添加對象。但是經(jīng)過認(rèn)證獲取的訪問權(quán)限,當(dāng)遇到下列任何一種情況時,這種權(quán)限將立即失效□□卡讀取設(shè)備發(fā)出了一個SELECT CLASS命令□□卡讀取設(shè)備發(fā)出了GET ACCESS RIGHT命令□□卡讀取設(shè)備退出容器通過容器的認(rèn)證流程之后就可以將對象插入到容器內(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,否則報引用數(shù)據(jù)未找到(6A88)。
步驟4根據(jù)容器內(nèi)的特征信息,判斷認(rèn)證的具體方法,如果是PIN認(rèn)證則轉(zhuǎn)到步驟5,否則轉(zhuǎn)到步驟6。
步驟5如果是PIN認(rèn)證模式,則校驗容器PIN,首先判別PIN是否鎖定,如果鎖定則終止并返回0x6983;否則比較校驗值和對象內(nèi)存儲的值作比較,如果不同,則將錯誤計數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯誤計數(shù)器為0,則表示該PIN已鎖定;如果校驗成功則恢復(fù)PIN的錯誤計數(shù)器為初始值,轉(zhuǎn)到步驟9。
步驟6首先判別容器認(rèn)證密鑰是否鎖定,如果鎖定則終止并返回0x6983;否則繼續(xù)解析輸入的OAID,如果其長度不足8字節(jié),則后補0xFF直到補齊8字節(jié),之后用作分散因子;如果OAID長度大于8字節(jié),則取其最右8字節(jié)作為分散因子。用分散因子分散容器主控密鑰得到應(yīng)用類控制密鑰,分散方式詳見《中國金融集成電路卡規(guī)范-電子錢包電子存折應(yīng)用規(guī)范》即可。
步驟7利用相同的分散方法,用智能卡唯一性標(biāo)識將應(yīng)用類控制密鑰分散,得到認(rèn)證過程密鑰。
步驟8檢查卡讀取設(shè)備是否取過隨機數(shù),如果隨機數(shù)有效則用該隨機數(shù)作為輸入,用認(rèn)證過程密鑰將其加密得到認(rèn)證密文,和輸入的密文比較,如果不一致則認(rèn)證過程失敗,將錯誤計數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯誤計數(shù)器為0,則表示該密鑰已鎖定;如果認(rèn)證成功恢復(fù)認(rèn)證密鑰的錯誤計數(shù)器為初始值轉(zhuǎn)步驟9。
步驟9判斷是認(rèn)證還是認(rèn)證開關(guān)操作,如果是認(rèn)證轉(zhuǎn)步驟10,如果是認(rèn)證開關(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)證功能。
參照圖8,下面詳述插入對象Insert Object的處理流程。所述插入對象的過程是指對象的創(chuàng)建過程,在創(chuàng)建對象的過程中將同時進(jìn)行容器管理。
步驟1檢查P2是否為0x00;同時檢查P1是否是指定范圍內(nèi)的值,如果有一項不滿足則終止并返回6B00;步驟2檢查內(nèi)部狀態(tài),確認(rèn)是否成功完成認(rèn)證過程,如果完成則允許插入對象,否則終止并返回安全條件不滿足代碼6982。
步驟3從數(shù)據(jù)內(nèi)解析出對象標(biāo)識OUID,檢查是否具有和當(dāng)前應(yīng)用類入口相同的OAID,如果不滿足則終止并返回數(shù)據(jù)域不正確代碼6A80。
如果滿足,則解析出對象屬性Attrib和對象存取條件OAC。分析對象屬性是否和P1參數(shù)里設(shè)定的插入對象的類型匹配,如果不滿足則終止并返回數(shù)據(jù)域不正確6A80,否則繼續(xù)分析,如果是密鑰對象則解析屬性的后續(xù)字節(jié),并根據(jù)密鑰的算法計算密鑰的長度。
如果屬性滿足,則解析對象的內(nèi)容,首先分析并保存存取條件列表ACL,在識別數(shù)據(jù)項內(nèi)容時逐項在ACL里檢索,如果定義了數(shù)據(jù)項的AC,則記錄該數(shù)據(jù)項的AC到對象的ACL列表;如果在ACL里定義的標(biāo)簽是一個應(yīng)用定義的模板,則模板內(nèi)的所有數(shù)據(jù)項繼承模板的AC;如果在ACL里沒有定義數(shù)據(jù)項的AC,則設(shè)置缺省值0x00FF,表示讀寫權(quán)限為自由;如果是密鑰對象,則記錄對象的引用條件、計數(shù)器及更新條件到當(dāng)前應(yīng)用類入口的狀態(tài)機描述列表中。
如果在解析對象內(nèi)容時出現(xiàn)數(shù)據(jù)域內(nèi)容不正確的情況,應(yīng)終止并返回6A80,智能卡必須釋放所有為該對象申請的臨時空間,其它狀態(tài)應(yīng)恢復(fù)到插入該對象前的狀態(tài)。
步驟4將當(dāng)前解析的對象插入當(dāng)前應(yīng)用類入口的對象列表中。
如果認(rèn)證過程成功后,沒有一個該應(yīng)用類的對象插入到容器內(nèi),當(dāng)卡讀取設(shè)備選擇離開容器或用另一個應(yīng)用類的OAID進(jìn)行認(rèn)證時,當(dāng)前的應(yīng)用類入口應(yīng)該釋放。
參照圖9,下面詳述對象的存取Access Object處理流程。
對象的存取過程實際是對應(yīng)用數(shù)據(jù)的存取,也可能是執(zhí)行某個特定的功能,基于對象的操作可以至少包括兩類引用(Reference)和刪除(Delete)。所述對象的存取Access Object處理流程可以包括以下步驟步驟1檢查P1、P2的值以及合法性,如果P2不為0x00或P1的值位8沒置位,則終止并返回6B00。同時分析P1的值,進(jìn)而確定具體的操作類型。
步驟2解析輸入的對象OUID,確認(rèn)和當(dāng)前應(yīng)用類入口具有相同的OAID,如果不滿足則終止并返回數(shù)據(jù)域不正確代碼6A80。
在當(dāng)前應(yīng)用類入口對象列表里檢索該對象,如果沒找到,則終止并返回6A88。
步驟3根據(jù)步驟1分析得到的操作類型,分別進(jìn)入對應(yīng)的操作流程。
下面分別對具體的操作流程進(jìn)行詳述引用(Reference)過程流程、刪除(Delete)過程流程、讀取(Read)過程流程、更新(Update)過程流程、加值(Increase)過程流程、減值(Decrease)過程流程以及Unblock CAK處理流程。
(1)參照圖10,詳細(xì)描述引用(Reference)過程的流程步驟步驟4將指令的數(shù)據(jù)域內(nèi)容分解并檢查數(shù)據(jù)域長度Lc和數(shù)據(jù)域是否匹配,以及數(shù)據(jù)域內(nèi)部的結(jié)構(gòu)是否正確。如果不正確返回數(shù)據(jù)域長度不正確代碼6700。
步驟5檢查當(dāng)前對象是否允許引用,如果不能引用則終止并返回6985。
根據(jù)對象的屬性確定當(dāng)前的引用操作是否合法,如果不正確返回使用條件不滿足代碼6985。
步驟6如果當(dāng)前對象為PIN密鑰對象且P1指明是校驗口令,則進(jìn)入校驗口令過程,首先判別此密鑰對象是否鎖定,如果鎖定則終止并返回0x6983;否則比較校驗值和對象內(nèi)存儲的值作比較,如果不同,則將錯誤計數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯誤計數(shù)器為O,則表示該密鑰已鎖定。
步驟7如果當(dāng)前對象為PUK密鑰對象且P1指明是PIN解鎖,則進(jìn)入PIN解鎖過程,首先判別此密鑰對象是否鎖定,如果鎖定則終止并返回0x6983;否則繼續(xù)檢查目標(biāo)對象是否為PIN對象,如果不是則終止并返回使用條件不滿足6985,如果目標(biāo)對象是PIN密鑰對象則繼續(xù)檢查該對象是否已經(jīng)鎖定,如果沒有鎖定則終止并返回安全狀態(tài)不滿足6982,否則就比較校驗值和PUK對象內(nèi)存儲的值,如果相同則將目標(biāo)PIN對象解鎖,并設(shè)置其錯誤計數(shù)器為該密鑰對象允許的最大值,如果不同,則將PUK密鑰對象的錯誤計數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯誤計數(shù)器為0,則將該密鑰設(shè)置鎖定標(biāo)記。
步驟8如果當(dāng)前對象為密鑰對象,當(dāng)密鑰屬性是允許外部認(rèn)證且P1指明是外部認(rèn)證,則進(jìn)入外部認(rèn)證過程,首先判別此密鑰對象是否鎖定,如果鎖定則終止并返回0x6983;如果沒有鎖定,則檢查卡讀取設(shè)備是否取過隨機數(shù),如果隨機數(shù)有效則用該隨機數(shù)作為輸入,用對象內(nèi)的密鑰將其加密得到認(rèn)證密文,和輸入的密文比較,如果不一致則認(rèn)證過程失敗。
如果密鑰類型為非對稱密鑰,則按密鑰屬性里指明的方法補齊數(shù)據(jù)后處理。
步驟9如果當(dāng)前對象為密鑰對象,當(dāng)密鑰屬性是允許內(nèi)部認(rèn)證且P1指明是內(nèi)部認(rèn)證,則進(jìn)入內(nèi)部認(rèn)證過程,首先判別此密鑰對象是否鎖定,如果鎖定則終止并返回0x6983;如果沒有鎖定,則將輸入數(shù)據(jù)作為輸入,用對象內(nèi)的密鑰將其加密得到密文并返回。
如果密鑰類型為非對稱密鑰,則按密鑰屬性里指明的方法補齊數(shù)據(jù)后處理。
步驟10如果當(dāng)前對象為密鑰對象,當(dāng)密鑰屬性標(biāo)是允許計算簽名且P1指明是計算簽名,則進(jìn)入計算簽名過程,首先判別此密鑰對象是否鎖定,如果鎖定則終止并返回0x6983;如果沒有鎖定,則檢查卡內(nèi)是否設(shè)置或計算Hash值,如果沒有報6985,否則將Hash值按密鑰屬性里指明的算法補齊到密鑰模長計算簽名。
步驟11如果當(dāng)前對象為密鑰對象,當(dāng)密鑰屬性是允許校驗簽名且P1指明是校驗簽名,則進(jìn)入校驗簽名過程,首先判別此密鑰對象是否鎖定,如果鎖定則終止并返回0x6983;檢查卡內(nèi)是否設(shè)置或計算Hash值,如果沒有報6985,否則將輸入的簽名數(shù)據(jù)解開,解析出Hash值,和卡內(nèi)的Hash值比較,比較結(jié)果一致返回9000,否則返回9xxx。
(2)參照圖11,詳細(xì)描述刪除(Delete)過程的流程步驟步驟12檢查LC及數(shù)據(jù)的長度,如果不匹配則終止并返回6700。
步驟13檢查當(dāng)前應(yīng)用類的狀態(tài)機,如果對象的刪除條件滿足,則將對象釋放,并更新與此對象相關(guān)的列表。
(3)參照圖12,詳細(xì)描述讀取(Read)過程的流程步驟步驟14檢查LC及數(shù)據(jù)的長度,如果不匹配則終止并返回6700。檢查當(dāng)前對象的屬性是否為普通的數(shù)據(jù)對象,如果是計算對象或密鑰對象,則終止并返回6985。
步驟15根據(jù)讀取數(shù)據(jù)項列表(DOL),逐項檢查當(dāng)前應(yīng)用類的狀態(tài)機,如果數(shù)據(jù)項的讀取條件滿足,則將該數(shù)據(jù)項的內(nèi)容讀出并保存到一個列表,直到所有數(shù)據(jù)項處理完成。如果有一項的讀取條件不滿足,則終止并返回6985。數(shù)據(jù)項的內(nèi)容讀取完成后,返回讀取的數(shù)據(jù)項內(nèi)容列表。
(4)參照圖13,詳細(xì)描述更新(Update)過程流程步驟16檢查LC及數(shù)據(jù)的長度,如果不匹配則終止并返回6700。檢查當(dāng)前對象的屬性是否為普通的數(shù)據(jù)對象,如果是計算對象或密鑰對象,則終止并返回6985。
步驟17根據(jù)更新數(shù)據(jù)項列表(DOL),逐項檢查當(dāng)前應(yīng)用類的狀態(tài)機,如果所有數(shù)據(jù)項的更新條件都滿足,則將該數(shù)據(jù)項的內(nèi)容更新。如果有一項的讀取條件不滿足,則終止并返回6985,智能卡必須確保沒有一項數(shù)據(jù)被更新。
(5)參照圖14,詳細(xì)描述加值(Increase)過程流程步驟18檢查LC及數(shù)據(jù)的長度,如果不匹配則終止并返回6700。檢查當(dāng)前對象的屬性是否為計算對象,如果不是則終止并返回6985。
步驟19檢查當(dāng)前應(yīng)用類的狀態(tài)機,如果數(shù)據(jù)項的加值條件滿足,則將該數(shù)據(jù)項的內(nèi)容更新,否則終止并返回6985,(6)參照圖15,詳細(xì)描述減值(Decrease)過程流程步驟20檢查LC及數(shù)據(jù)的長度,如果不匹配則終止并返回6700。檢查當(dāng)前對象的屬性是否為計算對象,如果不是則終止并返回6985。
步驟21檢查當(dāng)前應(yīng)用類的狀態(tài)機,如果數(shù)據(jù)項的減值條件滿足,則將該數(shù)據(jù)項的內(nèi)容更新,否則終止并返回6985,(7)參照圖16,詳細(xì)描述Unblock CAK解鎖處理流程UnBlock CAK解鎖處理流程可以用來解鎖容器認(rèn)證密鑰,所述密鑰可以是PIN密鑰或是認(rèn)證密鑰。所述解鎖處理流程優(yōu)選的可以包括以下步驟步驟1檢查LC及數(shù)據(jù)的長度,如果不匹配則終止并返回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密鑰是否鎖定,如果沒有鎖定則終止并返回0x6985;否則繼續(xù)判斷用于容器認(rèn)證的PUK密鑰是否鎖定,如果鎖定則終止并返回0x6983;
否則比較校驗值和保存PUK的值作比較,如果不同,則將PUK錯誤計數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯誤計數(shù)器為0,則表示PUK密鑰已鎖定。如果校驗成功則44將容器認(rèn)證PIN的錯誤計數(shù)器恢復(fù)為初始值,同時恢復(fù)PUK密鑰的錯誤計數(shù)器為初始值并結(jié)束指令流程。
步驟5首先判別用于容器認(rèn)證的PIN密鑰是否鎖定,如果鎖定則終止并返回0x6983;否則比較校驗值和保存的PIN值作比較,如果不同,則將PIN錯誤計數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯誤計數(shù)器為0,則表示PIN密鑰已鎖定。如果校驗成功則更新PIN的值,恢復(fù)PIN的錯誤計數(shù)器為初始值并結(jié)束指令流程。
步驟6首先判別容器認(rèn)證密鑰是否鎖定,如果沒有鎖定則終止并返回0x6985;否則繼續(xù)判斷解鎖容器認(rèn)證密鑰的密鑰是否鎖定,如果鎖定則終止并返回0x6983;解析輸入的OAID并檢查長度,如果不足8字節(jié),則后補0xFF直到補齊8字節(jié),之后用作分散因子;如果OAID長度大于8字節(jié),則取其最右8字節(jié)作為分散因子。用分散因子分散用于解鎖容器認(rèn)證密鑰的解鎖密鑰,得到應(yīng)用類解鎖密鑰,分散方式可以詳見《中國金融集成電路卡規(guī)范-電子錢包電子存折應(yīng)用規(guī)范》。
利用相同的分散方法,用智能卡唯一性標(biāo)識將應(yīng)用類解鎖密鑰分散,得到解鎖過程密鑰。
檢查卡讀取設(shè)備是否取過隨機數(shù),如果隨機數(shù)有效則用該隨機數(shù)作為輸入,用解鎖過程密鑰將其加密得到認(rèn)證密文,和輸入的密文比較,如果不一致則解鎖過程失敗,將解鎖密鑰的錯誤計數(shù)器減1,返回0x6Cxx,xx為剩余的可嘗試次數(shù);如果錯誤計數(shù)器為0,則表示該密鑰已鎖定;如果比較結(jié)果一致則將容器認(rèn)證密鑰的錯誤計數(shù)器恢復(fù)為初始值,同時恢復(fù)解鎖密鑰的錯誤計數(shù)器為初始值并結(jié)束指令流程。
由于本發(fā)明所述智能卡上可以存在多個應(yīng)用,則為了獨立地管理容器內(nèi)的不同應(yīng)用類,每一個應(yīng)用類優(yōu)選的應(yīng)該放在一個單獨的區(qū)間。亦即在應(yīng)用類之間應(yīng)該設(shè)計一道“防火墻”以防止跨過應(yīng)用類進(jìn)行非法訪問。
為了實現(xiàn)密鑰功能的獨立性,優(yōu)選的,用于一種特定功能的加密/解密密鑰不能被任何其他功能所使用,包括保存在IC卡中的密鑰和用來產(chǎn)生、派生、傳輸這些密鑰的密鑰。
安全報文傳送的目的是保證數(shù)據(jù)的可靠性、完整性和對發(fā)送方的認(rèn)證。數(shù)據(jù)完整性和對發(fā)送方的認(rèn)證可以通過使用MAC來實現(xiàn)。數(shù)據(jù)的可靠性可以通過對數(shù)據(jù)域的加密來得到保證。
實現(xiàn)上述的安全報文傳送的具體方式可以參見下述實例。
例如,采用APDU報文進(jìn)行傳送,當(dāng)CLA字節(jié)的第二個半字節(jié)等于十六進(jìn)制數(shù)字“4”時,表明對發(fā)送方命令數(shù)據(jù)要采用安全報文傳送。當(dāng)使用安全報文傳送時,命令數(shù)據(jù)域中的數(shù)據(jù)用TLV結(jié)構(gòu)標(biāo)識,格式可以采用“OUID+命令關(guān)聯(lián)數(shù)據(jù)+MAC”。為保證命令中明文數(shù)據(jù)的保密性,可以將數(shù)據(jù)加密。加密時包含加密數(shù)據(jù)的標(biāo)簽和長度,在APDU加密數(shù)據(jù)中不包括OUID和讀寫數(shù)據(jù)時的DOL。
在執(zhí)行安全報文前從智能卡取得的隨機數(shù)前兩個字節(jié)定義為ICVprefix,將ICVprefix用指定數(shù)據(jù)補齊為8字節(jié)作為計算MAC得ICV。
ICVprefix=智能卡隨機數(shù)前兩個字節(jié)ICV=ICVprefix+“0F 00 00 00 00 F0”如果連續(xù)進(jìn)行安全報文傳輸,則將ICVprefix作為整數(shù)值加1后的值做為新得ICVprefix,重新補齊后做為新得ICV參與安全報文MAC得計算,如此類推。如果在連續(xù)的安全報文之間有使用隨機數(shù)的命令、發(fā)出選擇容器命令或選擇應(yīng)用類命令出現(xiàn),則前面取得的隨機數(shù)失效,卡讀取設(shè)備必須重新取智能卡隨機數(shù)以計算ICVprefix。MAC的計算數(shù)據(jù)從CLA字節(jié)開始到數(shù)據(jù)域結(jié)束。
下面通過一個咖啡店對顧客發(fā)行積分卡的具體實施例對本發(fā)明的思想進(jìn)行詳細(xì)說明。
某咖啡店準(zhǔn)備對顧客發(fā)行積分卡,以便在激烈的市場競爭中保持顧客的忠誠度,計劃將對持積分卡的顧客實行一定的優(yōu)惠和贈送,但這些優(yōu)惠計劃是可變的,也可能針對不同的顧客群實施不同的優(yōu)惠計劃。對智能卡的要求是智能卡上要記錄顧客的積分值、VIP級別和身份識別信息,可以在發(fā)卡后安全的修改相關(guān)內(nèi)容。
根據(jù)積分計劃需求,可以做如下設(shè)計表11發(fā)行積分卡的初始化信息


所需要發(fā)行的智能卡設(shè)計完成之后,就可以開始智能卡個人化過程。所述個人化階段主要是將應(yīng)用對象插入到容器中,如何在智能卡上創(chuàng)建容器這里不做描述,在個人化時,根據(jù)實際的商業(yè)營運模式,可能是單獨發(fā)卡,也可能是在合作伙伴的卡上添加本積分計劃。
假定所述需要個人化的智能卡采用以下的APDU命令編碼表12預(yù)置的APDU命令編碼

所述智能卡個人化過程可以包括以下步驟,其中命令部分采用上表進(jìn)行代替對應(yīng)示出。
步驟1選擇容器,得到容器的認(rèn)證信息To Card00 A4 04 00 10“CUP CONTAINER001”From Card70 1D 5F 01 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)證;同時已經(jīng)獲知容器的剩余空間以及容器的版本號等信息。
步驟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對容器進(jìn)行認(rèn)證并創(chuàng)建本應(yīng)用類,假設(shè)容器PIN的值為“123456”。
在該步驟中,如果是外部認(rèn)證模式,則首先從智能卡取隨機數(shù),將用認(rèn)證密鑰加密隨機數(shù)后的認(rèn)證數(shù)據(jù)替換上面的認(rèn)證數(shù)據(jù);如果第一步標(biāo)明容器認(rèn)證功能為關(guān)閉,則可以跳過這一步。
步驟3插入應(yīng)用對象首先需要插入所有應(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需要注意的是,如果需要密文安裝密鑰,則首先必須安裝一個傳輸密鑰,再將所有準(zhǔn)備密文安裝的密鑰的屬性和ACL列表用Insert object指令寫入容器后,用Access object以密文的方式將密鑰值導(dǎo)入容器。
再插入應(yīng)用的數(shù)據(jù)對象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 02
00 01 7B 0B 54 03 56 03 04 56 04 00 00 00 00From Card9000至此,積分應(yīng)用的個人化工作就完成了。
積分智能卡的個人化完成之后,下面對積分應(yīng)用的使用示例進(jìn)行詳細(xì)介紹根據(jù)實際的業(yè)務(wù)需求,積分應(yīng)用的使用示例包括兩方面,一方面是查詢積分和個人信息,另一方面是增減積分值。
假設(shè),我們已經(jīng)預(yù)定義了一些算法和數(shù)據(jù)代碼,如下表所述,表13預(yù)置的算法和數(shù)據(jù)代碼

□□查詢積分和個人信息查詢個人信息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點積分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”ICY=ICVprefix+“0F 00 00 00 00 F0”Mac=Fmac(IncKey,ICV,MD)
扣減500點積分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等級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)用使用一段時間后,可能要添加新的對象來支撐新的業(yè)務(wù)需求,這其實就是對已發(fā)行應(yīng)用的修改或維護(hù)。下面對可能發(fā)生的積分計劃變更的流程進(jìn)行說明□□刪除對象刪除對象的權(quán)限可以由應(yīng)用類自己控制,所以無需對容器進(jìn)行認(rèn)證,只要符合對象的刪除條件,就可以將指定的對象刪除。
□□添加對象添加對象必須完成對容器的認(rèn)證,過程和個人化相同。
□□修改對象由于對象創(chuàng)建后只能修改數(shù)據(jù)項的內(nèi)容,無法添加數(shù)據(jù)項或修改數(shù)據(jù)項的屬性,如果應(yīng)用必須修改對象的內(nèi)容,則必須首先刪除該對象,然后再重新創(chuàng)建該對象。
以上對本發(fā)明所提供的一種實現(xiàn)智能卡多應(yīng)用的方法及數(shù)據(jù)處理裝置進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種實現(xiàn)智能卡多應(yīng)用的方法,其特征在于,包括設(shè)置至少一個容器;將數(shù)據(jù)按照容器和對象的方式存儲,每個容器內(nèi)包含至少一個應(yīng)用的對象集合;設(shè)置容器的操作接口,以實現(xiàn)通用的針對對象的操作。
2.如權(quán)利要求1所述的實現(xiàn)智能卡多應(yīng)用的方法,其特征在于,還包括根據(jù)數(shù)據(jù)的特性,將數(shù)據(jù)分別存儲為數(shù)據(jù)對象、計算對象和密鑰對象;所述數(shù)據(jù)對象用于存儲應(yīng)用數(shù)據(jù),所述計算對象用于存儲敏感數(shù)據(jù),所述密鑰對象用于存儲應(yīng)用的密鑰數(shù)據(jù)。
3.如權(quán)利要求2所述的實現(xiàn)智能卡多應(yīng)用的方法,其特征在于,還包括將實現(xiàn)特定功能的指令序列數(shù)據(jù)存儲為應(yīng)用協(xié)議數(shù)據(jù)單元APDU對象。
4.如權(quán)利要求3所述的實現(xiàn)智能卡多應(yīng)用的方法,其特征在于,還包括設(shè)置虛擬機和指令系統(tǒng),用以支持APDU對象在智能卡內(nèi)的執(zhí)行。
5.如權(quán)利要求3所述的實現(xiàn)智能卡多應(yīng)用的方法,其特征在于,還包括如果所述對象屬于同一應(yīng)用,則APDU對象被外部調(diào)用,數(shù)據(jù)對象通過APDU對象被外部引用,密鑰對象被數(shù)據(jù)對象或其它密鑰對象引用。
6.如權(quán)利要求1所述的實現(xiàn)智能卡多應(yīng)用的方法,其特征在于,所述對象包括以下信息標(biāo)識、屬性、對象的存取條件以及對象的內(nèi)容。
7.如權(quán)利要求6所述的實現(xiàn)智能卡多應(yīng)用的方法,其特征在于,所述對象的內(nèi)容包括數(shù)據(jù)項存取條件以及數(shù)據(jù)項本身。
8.如權(quán)利要求7所述的實現(xiàn)智能卡多應(yīng)用的方法,其特征在于,所述具有相同存取條件的數(shù)據(jù)項采用統(tǒng)一的模板進(jìn)行封裝,模板內(nèi)的所有數(shù)據(jù)項都繼承模板的存取條件。
9.一種數(shù)據(jù)處理裝置,特別是智能卡,其特征在于,包括微處理器、非易失性存儲器以及操作系統(tǒng);所述操作系統(tǒng)將數(shù)據(jù)按照容器和對象的方式存儲在非易失性存儲器中,存儲在至少一個容器中,每個容器內(nèi)包含至少一個應(yīng)用的對象集合;所述操作系統(tǒng)設(shè)置容器的操作接口,以實現(xiàn)通用的針對對象的操作。
10.如權(quán)利要求9所述的數(shù)據(jù)處理裝置,特別是智能卡,其特征在于,所述對象包括用于存儲應(yīng)用數(shù)據(jù)的數(shù)據(jù)對象,用于存儲敏感數(shù)據(jù)的計算對象,用于存儲應(yīng)用的密鑰數(shù)據(jù)的密鑰對象。
11.如權(quán)利要求10所述的數(shù)據(jù)處理裝置,特別是智能卡,其特征在于,所述對象還包括用于存儲實現(xiàn)特定功能的指令序列數(shù)據(jù)的應(yīng)用協(xié)議數(shù)據(jù)單元APDU對象。
12.如權(quán)利要求11所述的數(shù)據(jù)處理裝置,特別是智能卡,其特征在于,還包括虛擬機和指令系統(tǒng),用以支持APDU對象指令的執(zhí)行。
13.如權(quán)利要求11所述的數(shù)據(jù)處理裝置,特別是智能卡,其特征在于,如果所述對象屬于同一應(yīng)用,則APDU對象被外部調(diào)用,數(shù)據(jù)對象通過APDU對象被外部引用,密鑰對象被數(shù)據(jù)對象或其它密鑰對象引用。
全文摘要
本發(fā)明公開了一種實現(xiàn)智能卡多應(yīng)用的方法,包括設(shè)置至少一個容器;將數(shù)據(jù)按照容器和對象的方式存儲,每個容器內(nèi)包含至少一個應(yīng)用的對象集合;設(shè)置容器的操作接口,以實現(xiàn)通用的針對對象的操作。由于本發(fā)明所述智能卡采用容器、對象的概念對應(yīng)用數(shù)據(jù)進(jìn)行存儲,并在容器端提供通用的針對對象的操作,而將多應(yīng)用的本身的安全機制和應(yīng)用流程完全交給外部處理,達(dá)到了最大的通用性。所述通用性體現(xiàn)在,采用本發(fā)明所述智能卡的數(shù)據(jù)存儲方法,只需要針對該智能卡進(jìn)行一次開發(fā)即可,以后的個人化過程以及使用流程都可以采用通用流程實現(xiàn),而不需要由于某個具體應(yīng)用的特殊需要或者特殊指令對該智能卡進(jìn)行重新開發(fā)的過程。
文檔編號G06F9/44GK101042738SQ20061002513
公開日2007年9月26日 申請日期2006年3月24日 優(yōu)先權(quán)日2006年3月24日
發(fā)明者徐晉耀, 孟宏文, 楊輔祥, 李春歡, 柏建寧 申請人:中國銀聯(lián)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
永丰县| 灵丘县| 民和| 榆树市| 海门市| 中超| 丰城市| 广昌县| 黎平县| 湘西| 瑞金市| 调兵山市| 安丘市| 聂荣县| 台湾省| 资源县| 丽水市| 娱乐| 文昌市| 佳木斯市| 托里县| 南乐县| 高碑店市| 宁蒗| 延吉市| 潍坊市| 西丰县| 漳浦县| 河南省| 阿拉善左旗| 龙山县| 光泽县| 江安县| 长泰县| 沾益县| 南投县| 礼泉县| 天峨县| 龙陵县| 香河县| 本溪市|