專利名稱:智能卡安全環(huán)境的控制方法
技術領域:
本發(fā)明涉及一種對智能卡安全環(huán)境進行控制的方法,具體地說,是指一種Java智能卡的安全環(huán)境管理系統(tǒng)的控制方法。
背景技術:
隨著Java智能卡的廣泛應用,對于Java智能卡技術的研究也逐步展開。如何通過Java智能卡來提供一個安全計算環(huán)境,這包括代碼安全性校驗、下載過程的安全保證等多方面的問題。
Java智能卡技術是Java虛擬機技術向有限資源設備平臺的移植。Java智能卡的Applet經(jīng)過編譯和轉換后生成虛擬機指令集的字節(jié)碼程序。這些字節(jié)碼再由卡上虛擬機來運行。Java虛擬機早期的運行技術主要是解釋執(zhí)行機制,即將字節(jié)碼通過解釋程序翻譯為相應的本地執(zhí)行代碼來運行,它適合于在資源較少的設備中使用。而后,為了提高字節(jié)碼的執(zhí)行速度,又相繼提出了編譯為本地代碼執(zhí)行、動態(tài)編譯和JIT編譯執(zhí)行、HotSpot技術及直接的專用硬件結構執(zhí)行等運行技術。編譯為本地代碼的方法雖然顯著地提高了速度,但卻一定程度地影響了Java語言的安全機制和可移植性,這在高安全性要求的智能卡應用中顯然并不適合。動態(tài)編譯、JIT編譯技術和HotSpot技術是在運行時將字節(jié)碼編譯為本地代碼,這需要大量的運行時的存儲資源,這在通常只有2K左右RAM的智能卡中也不具可行性。
為了通過Java智能卡來提供一個安全計算環(huán)境,必須解決代碼安全性校驗、運行環(huán)境中的應用防火墻機制、下載過程的安全保證等多方面的問題。Java智能卡中的Applet經(jīng)過編譯和轉換后生成Java智能卡虛擬機能夠識別的字節(jié)碼指令,而后再通過讀寫器下載到智能卡上。為了防止惡意Applet下載到Java卡上運行,必須對生成的字節(jié)碼指令進行安全性校驗。這主要包括防止Applet運行過程中出現(xiàn)棧溢出、非法的跳轉指令以及非法的類型轉換如將整數(shù)轉換為對象引用、不兼容的對象引用間的轉換等。這一過程必須在對Java卡指令類型系統(tǒng)形式化描述的基礎上,結合Java卡虛擬機的特點,采用卡外生成代碼證書卡內(nèi)校驗的方法來執(zhí)行。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種智能卡安全環(huán)境的管理方法,該管理方法為了給有限計算資源環(huán)境下的智能卡平臺提供一個安全的計算環(huán)境,在Java卡卡內(nèi)、卡外虛擬機結構的基礎上,設計并實現(xiàn)了橢圓曲線數(shù)字簽名的方法,卡外代碼證書(CodeCertificate)的生成法和卡上字節(jié)碼的安全校驗法。
本發(fā)明的一種智能卡安全環(huán)境的控制方法,所述智能卡包括有智能卡硬件系統(tǒng)以及硬件系統(tǒng)相關的本地方法集、Java卡虛擬機、Java卡運行環(huán)境、Java卡類庫和Java卡應用管理組件組成,下載至智能卡中的應用程序經(jīng)過編譯和轉換后生成Java卡虛擬機指令集的字節(jié)碼序列,所述字節(jié)碼序列通過Java卡虛擬機來運行;所述Java卡虛擬機有卡內(nèi)虛擬機和卡外虛擬機,卡外虛擬機實現(xiàn)對編譯后的文件進行轉換,生成CAP文件;卡內(nèi)虛擬機實現(xiàn)執(zhí)行CAP文件中的所述字節(jié)碼序列;在卡內(nèi)安全環(huán)境的控制中首先將由卡外虛擬機的轉換器輸出的所述字節(jié)碼序列進行類型劃界,得到第一校驗類型和第二校驗類型;然后采用校驗規(guī)則對所述校驗類型進行安全校驗。
所述的智能卡安全環(huán)境的控制方法,其類型劃界包括第一校驗類型和第二校驗類型。相對于校驗類型的校驗規(guī)則有第一校驗規(guī)則和第二校驗規(guī)則。
本發(fā)明的優(yōu)點(一)加快了類型校驗的速度,因為避免了指令分支交匯處的類型推斷和反復疊代。(二)降低了對存儲資源的要求。因為代碼證書為只讀信息,可存儲在卡內(nèi)容量較大的EEPROM中,校驗完成后可刪除。從而避免了在RAM中存儲大量的需進行讀寫操作的類型推斷的中間過程。(三)由于增加了卡內(nèi)校驗部分,所以提高了系統(tǒng)的安全性,避免了卡外校驗采用簽名加密機制所存在的單點安全失敗問題(簽名密鑰泄漏)。
圖1是Java智能卡的內(nèi)部結構示意圖。
圖2是Java智能卡虛擬機的結構框圖。
圖3是基于proof-carrying機制的字節(jié)碼安全校驗結構。
圖4是字節(jié)碼安全校驗的流程圖。
圖5是Java Card類型偏序集哈斯結構圖。
具體實施例方式
下面將結合附圖對本發(fā)明作進一步的詳細說明。
Java智能卡中的Applet(應用程序)經(jīng)過編譯和轉換后生成Java智能卡虛擬機能夠識別的字節(jié)碼指令,而后再通過讀寫器下載到智能卡上。為了防止惡意Applet下載到Java卡上運行,必須對生成的字節(jié)碼指令進行安全性校驗。
本發(fā)明的一種智能卡安全環(huán)境的控制方法,所述智能卡包括有智能卡硬件系統(tǒng)以及硬件系統(tǒng)相關的本地方法集、Java卡虛擬機、Java卡運行環(huán)境、Java卡類庫和Java卡應用管理組件組成,下載至智能卡中的應用程序經(jīng)過編譯和轉換后生成Java卡虛擬機指令集的字節(jié)碼序列,所述字節(jié)碼序列通過Java卡虛擬機來運行;所述Java卡虛擬機有卡內(nèi)虛擬機和卡外虛擬機,卡外虛擬機實現(xiàn)對編譯后的文件進行轉換,生成CAP文件;卡內(nèi)虛擬機實現(xiàn)執(zhí)行CAP文件中的所述字節(jié)碼序列;在卡內(nèi)安全環(huán)境的控制中首先將由卡外虛擬機的轉換器輸出的所述字節(jié)碼序列進行類型劃界,得到第一校驗類型和第二校驗類型;然后采用校驗規(guī)則對所述校驗類型進行安全校驗。根據(jù)對字節(jié)碼序列的類型劃界得到第一校驗類型和第二校驗類型,對于校驗類型的校驗規(guī)則有第一校驗規(guī)則和第二校驗規(guī)則。
本發(fā)明中的第一校驗類型為實現(xiàn)所述CAP文件中的下載組件的結構化校驗;第二校驗類型為實現(xiàn)所述卡外虛擬機輸出的字節(jié)碼序列的類型校驗。第一校驗規(guī)則,對所述第一校驗類型中的下載組件進行橢圓曲線數(shù)字簽名,所述簽名后的下載組件中含有基于橢圓曲線機制的數(shù)字簽名信息,智能卡卡內(nèi)的結構化校驗器將對所述數(shù)字簽名信息進行驗證;第二校驗規(guī)則,對所述第二校驗類型中的字節(jié)碼序列采用基于proof-carrying機制的字節(jié)碼序列安全校驗方法。
在本發(fā)明中,Java卡上的字節(jié)碼安全校驗可分為兩個過程第一個過程為下載組件的結構化校驗過程,即第一校驗類型。第二個過程為字節(jié)碼的類型校驗過程,即第二校驗類型。
對于第一校驗類型過程而言,主要是用于校驗下載組件的完整性和一致性。為了保證下載過程的安全,本發(fā)明中采取了對組件進行橢圓曲線數(shù)字簽名的方法,在下載組件中含有基于橢圓曲線機制的數(shù)字簽名信息,卡上結構化校驗器會驗證此簽名信息,以防止下載過程中對組件的篡改。此外,第一校驗類型還包括對于各個組件長度、格式、組成元素定義一致性的檢查,以保證組件結構的正確性。
由于智能卡內(nèi)有限的計算資源(2K RAM),因此在目前的硬件平臺上無法完成全部的字節(jié)碼安全校驗過程,尤其是在類型偏序集合上的類型推斷計算,因此我們結合Java智能卡卡內(nèi)、卡外虛擬機的結構特點,采取了嵌入式設備上得到廣泛應用的基于proof-carrying機制的字節(jié)碼安全校驗算法。即在卡外生成用于卡內(nèi)校驗使用的代碼證書(Certificate),作為定制組件同字節(jié)碼一起下載到卡內(nèi)虛擬機??▋?nèi)虛擬機的字節(jié)碼類型校驗器使用證書作為輔助信息進行第二類型的校驗,以加快整個卡內(nèi)虛擬機的校驗速度。
將JCVM程序P定義為方法的集合{m1,m2,…mn}。其中mi為對應于每個方法的唯一方法引用。我們使用H來代表JCVM中的堆,其中用于存放實例化對象,因此H可表示為實例化對象引用到實例化對象存儲結構的映射,即H={...,objref <context,fieldToken=val,...>,...}。其中objref代表對象引用,fieldToken代表對象域,context代表對象上下文。將Java棧結構中的局部變量區(qū)定義為L={i vali,0≤i<n},并且定義L[k val]等于L,除了其中的k映射到val。我們將Java棧結構中的操作數(shù)棧定義為列表S={val0,val1...,valn-1},并且用S+val表示將值val壓入棧S中。局部變量和操作數(shù)棧中的元素均為一個字(short類型的寬度)寬。使用J來表示JCVM中的Java棧。J中存儲的幀表示為屬性組(context,L,S,rpc),其中context表示當前的執(zhí)行上下文,L表示局部變量區(qū),S表示操作數(shù)棧,rpc表示當前方法執(zhí)行結束后的返回地址。我們將運行狀態(tài)表示為R=(bc,pc,J,L,S,H)。其中bc表示當前的異常處理狀態(tài),它只含有兩個值throw和notThrow,分別表示已拋出異常和未拋出異常。程序P的執(zhí)行可表示為一系列的運行狀態(tài)R的轉換。
此外,定義用于類型推斷系統(tǒng)的類型信息,其定義如下類類型 cls=…類類型…接口類型 interface=…接口類型…引用為空類型 Null=空引用引用類型 ref=cls|interface|Null基本類型 prim=byte|short|boolean字節(jié)數(shù)組類型 byteArray=字節(jié)或布爾數(shù)組類型短整型數(shù)組類型 shortArray=短整型數(shù)組類型布爾數(shù)組類型 booleanArray=布爾數(shù)組類型引用數(shù)組類型 refArray=引用數(shù)組類型基本類型數(shù)組類型 primArray=byteArray|shortArray|booleanArray數(shù)組類型 array=primArray|refArrayreturnAddress類型returnAddress=返回地址類型不可用類型 unusable同時,在Java智能卡字節(jié)碼指令類型集合上定義了一個自反、反對稱、傳遞的關系≤對于α,β∈{clsn‾},]]>如果α≤β,則α擴展了(extends)β。若α∈{arrayn‾},]]>β為object類,則α≤β。若β為unusable,則α≤β。則在≤關系的定義下,JavaCard語言類型集合構成了一個偏序集,其哈斯圖結構如圖5所示。圖中類型下的數(shù)字為相應類型的編碼,這種編碼規(guī)則主要用于加速偏序集上運算的速度。在類型推斷系統(tǒng)中,經(jīng)常需計算兩種類型的最小上界LUB(α,β)。在此編碼規(guī)則下,最小上界的運算可轉換為相應類型編碼的與(Λ)操作。
為了有效地表示字節(jié)碼指令的形式化規(guī)范,我們引入了一些輔助類型的定義接口類型集合int ers={int erfacen‾}(n>0)]]>空類型 void數(shù)據(jù)類型ty=ref|prim數(shù)據(jù)類型或空類型tyOrVoid=ty|void未初始化的對象類型 raw=unin(pc,cls)|init(pc,cls)引用或數(shù)組類型 refOrArray=ref|array引用或未初始化對象類型 refOrRaw=ref|raw引用、數(shù)組或未初始化對象類型refOrAyyayOrRaw=ref|raw|array引用、未初始化對象、返回地址類型refOrRawOrAds=ref|raw|returnAddress引用、數(shù)組、未初始化對象、返回地址類型refOrArrayOrRawOrAds=ref|raw|returnAddress可用類型 usuable=ty|raw|returnAddress任意類型 any=usuable|unusable字節(jié)碼安全校驗算法的一個主要任務就是推斷(在編譯時)局部變量區(qū)和操作數(shù)棧中的運行時數(shù)據(jù)類型從而保證在運行時指令不會使用錯誤的數(shù)據(jù)類型。為此首先給出局部變量區(qū)類型表LT的形式化描述為LT={i anyi|0≤i<max_local},其中max_local為當前方法中局部變量的個數(shù)。并且定義LT[k any]等于LT,除了其中的k映射到any。此外,定義操作數(shù)棧類型表為ST=[usable0,usable1,...,usabletop],若使用max_stack表示當前方法中操作數(shù)棧的最大長度,則索引top<max_local。為了構建類型推斷系統(tǒng),我們將運行時的狀態(tài)類型定義為∏=(LT,ST,Contour),其中Contour為一集合。并且將關系≤的定義擴展到運行時的狀態(tài)類型集合上若LT={i anyi|0≤i<max_local},LT`={i any`i|0≤i<max_local},如果下式成立anymax_local-1≤anymax_local-1′‾,]]>則LT≤LT`。
若ST=[usablen‾],]]>ST′=[usable′n‾],]]>如果下式成立usablen≤usable′n‾,]]>則ST≤ST`。
若∏=(ST,LT,Contour),∏`=(ST`,LT`,Contour`),如果下列條件成立ST≤ST`,LT≤LT`,ContourContour`,則∏≤∏`?!恰堋莁意味著對于所有可應用于狀態(tài)類型∏`的指令均適用于狀態(tài)類型∏。
對于類型推斷系統(tǒng),我們使用pc⊥∏來表示在地址pc處所具有的編譯時狀態(tài)類型∏。由于pc地址處的狀態(tài)類型不僅依賴于指令本身,而且還依賴于到達pc處的指令執(zhí)行路徑,即對于一個pc地址會存在多個狀態(tài)類型,因此我們使用pc⊥≤∏來表示其中的一種狀態(tài)類型,這表示pc處所有可應用于狀態(tài)類型∏`的指令均適用于狀態(tài)類型∏。
在本發(fā)明中引入基于proof-carrying機制的字節(jié)碼安全校驗算法前,我們首先介紹傳統(tǒng)的字節(jié)碼校驗算法。通常,卡內(nèi)類型校驗器采用數(shù)據(jù)流分析(Data FlowAnalysis)方法來進行字節(jié)碼安全性校驗。整個分析過程以單個方法為單位進行,相當于一個類型層面上的抽象解釋器。方法入口處的類型信息由字節(jié)碼所攜帶的證書來提供,并使用這些信息來初始化函數(shù)入口處的局部變量區(qū)類型。對于方法中的每條指令,設置標志位“Changed”,在一個新的方法校驗開始時,只有第一條指令的標志位為1。接下來進入數(shù)據(jù)流分析的主循環(huán)過程步驟一查找到一條標志位為1的字節(jié)碼指令,并置標志位為0。如果不存在標志位為1的指令,則方法校驗過程成功結束,退出主循環(huán)過程。
步驟二依據(jù)當前指令的類型規(guī)則(在上一節(jié)中已定義)來執(zhí)行指令,如果當前指令不能滿足類型規(guī)則,則指令執(zhí)行失敗,方法校驗過程失敗,退出主循環(huán)過程。
步驟三確定當前指令的后續(xù)指令,可為如下的任一指令a.如果當前指令為非跳轉指令、返回指令和拋出異常指令,則為當前指令的下一條指令。如果超出了當前方法的指令地址空間,則指令執(zhí)行失敗,方法校驗過程失敗,退出主循環(huán)過程。
b.如果當前指令為跳轉指令,則為跳轉指令目的地址處的字節(jié)碼指令。
c.當前指令所對應的異常處理句柄。
步驟四合并當前指令執(zhí)行結束后的類型狀態(tài)到后續(xù)指令中a.如果后續(xù)指令未被訪問過,則將當前指令執(zhí)行結束后的類型狀態(tài)作為后續(xù)指令的前續(xù)類型狀態(tài),置后續(xù)指令的標志位為1。
b.如果后續(xù)指令已被訪問過,則合并當前的類型狀態(tài)和已有的后續(xù)指令的前續(xù)類型狀態(tài),如果類型狀態(tài)發(fā)生改變,則置后續(xù)指令的標志位為1。
c.類型信息合并的過程即為求兩個類型LUB的過程,對于操作數(shù)棧,合并后不能存在unusable類型,并且合并的操作數(shù)棧必須具有相同的高度。否則方法校驗過程失敗,退出主循環(huán)過程。
d.對于通過jsr調(diào)用的子過程(Subroutine)我們另行考慮,在下文中有更詳細的討論。
步驟五跳轉到步驟一。
由于子過程的調(diào)用相對比較復雜,存在多條執(zhí)行路徑同時到達的問題,并且會存在在同一局部變量中存儲不同數(shù)據(jù)類型而不能進行類型合并的問題。因此,為了正確地描述子過程的處理,在參考Sun提供的Java卡開發(fā)工具的方法中,本發(fā)明采用在類型推斷系統(tǒng)中引入了Contour,其定義如下pc⊥∏[ST,LT,Contour] 在子過程中進行類型推斷時,具有不同Contour的指令不進行類型合并,即來自不同執(zhí)行路徑的指令的類型信息之間互不影響,并且會將不同路徑的類型信息在子過程結束后正確地帶給后續(xù)指令。
如果上述主循環(huán)過程成功結束,則表示當前方法的字節(jié)碼通過了安全性校驗,否則表示校驗失敗。如果當前包中全部的方法均通過校驗,則表示當前包是安全可用的,否則拒絕執(zhí)行當前包中的程序。
在上述的主循環(huán)校驗過程中可見,其中的第四步驟必須按照4.c中的規(guī)則進行類型偏序集合上的類型推斷計算,并且如果發(fā)生了類型信息的改變,必須執(zhí)行4.b進行新一輪的疊代。這對于存儲資源和執(zhí)行速度都提出了較高的要求,因此,為了避免這一問題,基于proof-carrying機制的字節(jié)碼安全校驗算法對程序分支交匯地址處的類型信息進行判斷,如果發(fā)生類型推斷過程(求兩個類型信息的LUB),則首先通過卡外的校驗過程生成此信息,存儲在代碼證書(Certificate)中,并將證書作為用戶定制組件(Custom component),同其他組件一起下載到智能卡上。為了節(jié)約存儲空間,在證書中只存儲相應的需進行類型推斷并發(fā)生了改變的元素信息和方法入口處的元素信息,證書的數(shù)據(jù)結構定義如下 其中pc為程序分支的交匯地址(或方法入口地址),LT用于存儲局部變量區(qū)中的變化類型信息(或方法入口的局部變量類型信息),ST用于存儲操作數(shù)棧中的變化類型信息。因此,校驗過程中的第四步驟改寫為4.a如果后續(xù)指令未被訪問過且在證書中存在后續(xù)指令的pc地址,則將當前指令執(zhí)行結束后的類型∏c同證書中的類型∏δ相比較,如果∏c≤∏δ,則采用∏δ作為合并后的類型狀態(tài),置后續(xù)指令的標志位為1。否則校驗失敗,退出主循環(huán)過程。如果后續(xù)指令未被訪問過且在證書中不存在后續(xù)指令的pc地址,則將當前指令執(zhí)行結束后的類型狀態(tài)作為后續(xù)指令的前續(xù)類型狀態(tài),置后續(xù)指令的標志位為1。
4.b如果后續(xù)指令已被訪問過,則將當前指令執(zhí)行結束后的類型∏c同證書中后續(xù)指令pc處的類型∏δ相比較,如果∏c≤∏δ,跳轉到步驟5。否則校驗失敗,退出主循環(huán)過程。
4.c此步驟取消。
4.d此步驟不變。
這一算法具有如下的三個優(yōu)點(1)加快了類型校驗的速度,因為避免了指令分支交匯處的類型推斷和反復疊代。
(2)降低了對存儲資源的要求。因為代碼證書為只讀信息,可存儲在卡內(nèi)容量較大的EEPROM中,校驗完成后可刪除。從而避免了在RAM中存儲大量的需進行讀寫操作的類型推斷的中間過程。
(3)由于增加了卡內(nèi)校驗部分,所以提高了系統(tǒng)的安全性,避免了卡外校驗采用簽名加密機制所存在的單點安全失敗問題(簽名密鑰泄漏)。
權利要求
1.一種智能卡安全環(huán)境的控制方法,所述智能卡包括有智能卡硬件系統(tǒng)以及硬件系統(tǒng)相關的本地方法集,其特征在于還包括有Java卡虛擬機、Java卡運行環(huán)境、Java卡類庫和Java卡應用管理組件組成,下載至智能卡中的應用程序經(jīng)過編譯和轉換后生成Java卡虛擬機指令集的字節(jié)碼序列,所述字節(jié)碼序列通過Java卡虛擬機來運行;所述Java卡虛擬機有卡內(nèi)虛擬機和卡外虛擬機,卡外虛擬機實現(xiàn)對編譯后的文件進行轉換,生成CAP文件;卡內(nèi)虛擬機實現(xiàn)執(zhí)行CAP文件中的所述字節(jié)碼序列;在卡內(nèi)安全環(huán)境的控制中首先將由卡外虛擬機的轉換器輸出的所述字節(jié)碼序列進行類型劃界,得到第一校驗類型和第二校驗類型;然后采用校驗規(guī)則對所述校驗類型進行安全校驗。
2.根據(jù)權利要求1所述的智能卡安全環(huán)境的控制方法,其特征在于第一校驗類型為實現(xiàn)所述CAP文件中的下載組件的結構化校驗;第二校驗類型為實現(xiàn)所述卡外虛擬機輸出的字節(jié)碼序列的類型校驗。
3.根據(jù)權利要求1所述的智能卡安全環(huán)境的控制方法,其特征在于第一校驗規(guī)則,對所述第一校驗類型中的下載組件進行橢圓曲線數(shù)字簽名,所述簽名后的下載組件中含有基于橢圓曲線機制的數(shù)字簽名信息,智能卡卡內(nèi)的結構化校驗器將對所述數(shù)字簽名信息進行驗證;第二校驗規(guī)則,對所述第二校驗類型中的字節(jié)碼序列采用基于proof-carrying機制的字節(jié)碼序列安全校驗方法。
4.根據(jù)權利要求1所述的智能卡安全環(huán)境的控制方法,其特征在于在第二校驗規(guī)則中對所述第二校驗類型依照基于proof-carrying機制的字節(jié)碼安全校驗方法是對程序分支交匯地址處的元素信息進行判斷,對所述智能卡的類型推斷進行卡外校驗生成所述卡外校驗信息,并存儲在代碼證書(Certificate)中;對所述代碼證書制定成用戶定制組件(Custom component),并對所述用戶定制組件與所述下載組件一并下載到智能卡上。
5.根據(jù)權利要求4所述的智能卡安全環(huán)境的控制方法,其特征在于基于proof-carrying機制的字節(jié)碼安全校驗方法中數(shù)據(jù)流分析的主循環(huán)過程為步驟一查找到一條標志位為1的字節(jié)碼指令,并置標志位為O。如果不存在標志位為1的指令,則方法校驗過程成功結束,退出主循環(huán)過程;步驟二依據(jù)當前指令的類型規(guī)則來執(zhí)行指令,如果當前指令不能滿足類型規(guī)則,則指令執(zhí)行失敗,方法校驗過程失敗,退出主循環(huán)過程;步驟三確定當前指令的后續(xù)指令;步驟四合并當前指令執(zhí)行結束后的類型狀態(tài)到后續(xù)指令中;步驟五跳轉到步驟一。
6.根據(jù)權利要求4所述的智能卡安全環(huán)境的控制方法,其特征在于所述代碼證書中存儲的所述卡外校驗信息為進行所述類型推斷改變后的元素信息和所述程序分支交匯地址處的元素信息。
全文摘要
本發(fā)明公開了一種智能卡安全環(huán)境的控制方法,下載至智能卡中的應用程序經(jīng)過編譯和轉換后生成Java卡虛擬機指令集的字節(jié)碼序列,所述字節(jié)碼序列通過Java卡虛擬機來運行;所述Java卡虛擬機有卡內(nèi)虛擬機和卡外虛擬機,卡外虛擬機實現(xiàn)對編譯后的文件進行轉換,生成CAP文件;卡內(nèi)虛擬機實現(xiàn)執(zhí)行CAP文件中的所述字節(jié)碼序列;在卡內(nèi)安全環(huán)境的控制中首先將由卡外虛擬機的轉換器輸出的所述字節(jié)碼序列進行類型劃界,得到第一校驗類型和第二校驗類型;然后采用校驗規(guī)則對所述校驗類型進行安全校驗。本發(fā)明的智能卡安全環(huán)境控制方法,在Java卡卡內(nèi)、卡外虛擬機結構的基礎上,設計并實現(xiàn)了橢圓曲線數(shù)字簽名以及卡外代碼證書的生成法和卡上字節(jié)碼序列的安全校驗。
文檔編號G06F1/00GK1687862SQ20051007716
公開日2005年10月26日 申請日期2005年6月16日 優(yōu)先權日2005年6月16日
發(fā)明者楊東凱, 張其善, 姚黎明, 吳鑫山 申請人:北京航空航天大學