国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種Java卡對(duì)象訪問的控制方法

      文檔序號(hào):6385542閱讀:243來(lái)源:國(guó)知局
      專利名稱:一種Java卡對(duì)象訪問的控制方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于智能卡技術(shù)領(lǐng)域,特別涉及一種Java卡對(duì)象訪問的控制方法。
      背景技術(shù)
      隨著電子政務(wù)和電子商務(wù)的發(fā)展,Java卡的應(yīng)用越來(lái)越廣泛,為解決用戶對(duì)--^
      多用的需要,目前多應(yīng)用的Java卡越來(lái)越普遍,而應(yīng)用之間的安全問題也日益重要。現(xiàn)有技術(shù)中,多個(gè)應(yīng)用(applet)存在于同一智能卡中,因此Java卡平臺(tái)需要提供一種控制機(jī)制將應(yīng)用隔離,即保證某一 applet不能隨便訪問其他applet的對(duì)象。

      發(fā)明內(nèi)容
      為了解決現(xiàn)有技術(shù)中存在的上述問題,本發(fā)明提出了一種Java卡對(duì)象訪問的控制方法。本發(fā)明采取的技術(shù)方案是:一種Java卡對(duì)象訪問的控制方法包括:`
      步驟SI Java卡虛擬機(jī)解釋執(zhí)行當(dāng)前應(yīng)用的Java程序;步驟S2:所述Java卡虛擬機(jī)獲取所述Java程序中當(dāng)前被執(zhí)行指令提供的對(duì)象引用,根據(jù)所述對(duì)象引用從預(yù)設(shè)存儲(chǔ)區(qū)獲取當(dāng)前訪問對(duì)象,并讀取所述當(dāng)前訪問對(duì)象的環(huán)境值;步驟S3:所述Java卡虛擬機(jī)根據(jù)當(dāng)前被執(zhí)行指令得到當(dāng)前訪問對(duì)象的類型;如果當(dāng)前訪問對(duì)象類型是方法調(diào)用,則執(zhí)行步驟Al ;如果當(dāng)前訪問對(duì)象類型是讀寫對(duì)象,則執(zhí)行步驟BI ;否則執(zhí)行步驟Cl ;步驟Al:判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用,是則執(zhí)行步驟A2,否則執(zhí)行步驟BI ;步驟A2:判斷當(dāng)前訪問對(duì)象所屬的包是否是活動(dòng)包,是則執(zhí)行步驟S4,否則拋出異常;步驟B1:判斷當(dāng)前訪問對(duì)象是否是不受防火墻限制的對(duì)象或滿足基本檢測(cè)條件,是則執(zhí)行步驟S4,否則拋出異常;步驟Cl:判斷當(dāng)前訪問對(duì)象是否滿足基本檢測(cè)條件,是則執(zhí)行步驟S4,否則拋出
      異常;步驟S4 Java卡虛擬機(jī)執(zhí)行當(dāng)前被執(zhí)行指令。所述步驟S2具體為:所述Java卡虛擬機(jī)根據(jù)當(dāng)前被執(zhí)行指令中的參數(shù),從虛擬機(jī)運(yùn)行棧上獲取對(duì)象引用,從預(yù)設(shè)存儲(chǔ)區(qū)獲取與所述對(duì)象引用對(duì)應(yīng)的當(dāng)前訪問對(duì)象,讀取當(dāng)前訪問對(duì)象的第二個(gè)字節(jié)為所述當(dāng)前訪問對(duì)象的環(huán)境值。上述步驟Al所述判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用包括:步驟2-1:判斷當(dāng)前被執(zhí)行指令的第一個(gè)字節(jié)是否為第三預(yù)設(shè)值,是則繼續(xù)下一步,否則當(dāng)前訪問對(duì)象不是共享接口方法調(diào)用;步驟2-2:根據(jù)當(dāng)前被執(zhí)行指令獲得當(dāng)前訪問對(duì)象所在類型的引用,根據(jù)所述引用獲得類型信息;步驟2-3:根據(jù)所述類型信息的第I個(gè)字節(jié)判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用。若所述類型信息的第I個(gè)字節(jié)的第2位為1,則當(dāng)前訪問對(duì)象是共享接口方法調(diào)用。上述步驟A2所述判斷當(dāng)前訪問對(duì)象所屬的包是否是活動(dòng)包具體為Java卡虛擬機(jī)遍歷所有通道,判斷當(dāng)前訪問對(duì)象的環(huán)境值的高4位是否與某一通道中存儲(chǔ)的環(huán)境值的高4位相等,是則當(dāng)前訪問對(duì)象所屬的包是活動(dòng)包,否則當(dāng)前訪問對(duì)象所屬的包不是活動(dòng)包。進(jìn)一步的,某一通道中存儲(chǔ)的環(huán)境值是指某一通道對(duì)應(yīng)的全局變量中的環(huán)境值。上述步驟BI所述不受防火墻限制的對(duì)象包括入口點(diǎn)對(duì)象和全局?jǐn)?shù)組對(duì)象。步驟BI和Cl所述滿足基本檢測(cè)條件包括滿足當(dāng)前執(zhí)行環(huán)境為系統(tǒng)環(huán)境或當(dāng)前訪問對(duì)象的環(huán)境值等于當(dāng)前執(zhí)行環(huán)境的環(huán)境值。所述步驟Cl具體為:步驟Cl-1:判斷當(dāng)前執(zhí)行環(huán)境是否為系統(tǒng)環(huán)境,是則執(zhí)行步驟S4,否則執(zhí)行步驟C1-2 ;步驟C1-2:判斷當(dāng)前訪問對(duì)象的環(huán)境值是否與當(dāng)前執(zhí)行環(huán)境的環(huán)境值相等,是則執(zhí)行步驟S4,否則拋出異常。所述步驟BI具體為:判斷當(dāng)前訪問對(duì)象是否是不受防火墻限制的對(duì)象,是則執(zhí)行步驟S4,否則執(zhí)行步驟Cl。所述判斷當(dāng)前執(zhí)行環(huán)境是否為系統(tǒng)環(huán)境具體為判斷當(dāng)前執(zhí)行環(huán)境的環(huán)境值是否
      為第二預(yù)設(shè)值。所述判斷當(dāng)前訪問對(duì)象是否是不受防火墻限制的對(duì)象具體包括:步驟Bl-1:判斷當(dāng)前訪問對(duì)象是否為入口點(diǎn)對(duì)象,是則執(zhí)行步驟S4,否則執(zhí)行步驟 B1-2 ;步驟B1-2:判斷當(dāng)前訪問對(duì)象是否為全局?jǐn)?shù)組對(duì)象,是則執(zhí)行步驟S4,否則執(zhí)行步驟Cl。所述判斷當(dāng)前訪問對(duì)象是否為入口點(diǎn)對(duì)象具體為判斷當(dāng)前訪問對(duì)象的第一個(gè)字節(jié)是否為第一預(yù)設(shè)值。所述判斷當(dāng)前訪問對(duì)象是否為全局?jǐn)?shù)組對(duì)象具體為判斷當(dāng)前訪問對(duì)象的第一個(gè)字節(jié)是否與全局?jǐn)?shù)組屬性值匹配。全局?jǐn)?shù)組屬性值包括0x70、0x90、OxBO、OxDO和OxFO。所述步驟SI之前還包括:步驟1-1: Java卡虛擬機(jī)接收到APDU應(yīng)用選擇命令,解析所述APDU應(yīng)用選擇命令并從中獲取應(yīng)用標(biāo)識(shí)符;步驟1-2:所述Java卡虛擬機(jī)根據(jù)所述應(yīng)用標(biāo)識(shí)符遍歷卡片上所有的包,查找到所述應(yīng)用標(biāo)識(shí)符對(duì)應(yīng)的包索引;根據(jù)所述應(yīng)用標(biāo)識(shí)符遍歷卡片上所有已安裝的應(yīng)用列表,查找到所述應(yīng)用標(biāo)識(shí)符對(duì)應(yīng)的應(yīng)用索引;步驟1-3:所述Java卡虛擬機(jī)根據(jù)所述包索引和所述應(yīng)用索引計(jì)算得到當(dāng)前執(zhí)行環(huán)境的環(huán)境值。所述步驟1-3具體為Java卡虛擬機(jī)將所述包索引作為高4位,將所述應(yīng)用索引作為低4位,兩者拼接組成的一個(gè)字節(jié)即為得到的當(dāng)前執(zhí)行環(huán)境的環(huán)境值。本發(fā)明取得的有益效果如下:本發(fā)明實(shí)現(xiàn)了 Java卡的多應(yīng)用安全管理,尤其是通過一種防火墻檢測(cè)機(jī)制控制多應(yīng)用對(duì)象的訪問,提高了多應(yīng)用之間的安全性。


      圖1是實(shí)施例1提供的一種Java卡對(duì)象訪問的控制方法流程圖;圖2是實(shí)施例2提供的一種Java卡對(duì)象訪問的控制方法流程圖。
      具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述,以下實(shí)施例中一個(gè)應(yīng)用的Java程序等同于一個(gè)applet。實(shí)施例1本實(shí)施例提供了一種Java卡對(duì)象訪問的控制方法,如圖1所示,包括以下步驟:步驟I Java卡虛擬機(jī)解釋執(zhí)行當(dāng)前應(yīng)用的Java程序;本實(shí)施例中具體地,所述當(dāng)前應(yīng)用的Java程序由多條被執(zhí)行指令組成,Java卡虛擬機(jī)解釋執(zhí)行當(dāng)前應(yīng)用的Java程序具體為依次執(zhí)行所述被執(zhí)行指令。本實(shí)施例優(yōu)選的本步驟之前還包括:步驟1-1: Java卡虛擬機(jī)接收到APDU應(yīng)用選擇命令,解析所述APDU應(yīng)用選擇命令并從中獲取應(yīng)用標(biāo)識(shí)符(AID);進(jìn)一步的,在Java卡中有多個(gè)通道,步驟1_1還包括:Java卡虛擬機(jī)解析所述APDU應(yīng)用選擇命令并從中獲取當(dāng)前被選擇通道,具體地,Java卡虛擬機(jī)根據(jù)所述APDU應(yīng)用選擇命令的第一個(gè)字節(jié)得到當(dāng)前被選擇通道。步驟1-2 =Java卡虛擬機(jī)根據(jù)AID遍歷卡片上所有的包,查找到該AID對(duì)應(yīng)的包索引;根據(jù)AID遍歷卡片上所有已安裝的應(yīng)用列表,查找到該AID對(duì)應(yīng)的應(yīng)用索引;具體地,卡片上的包中包含有已安裝應(yīng)用的Java程序,卡片上的包的包索引用于標(biāo)識(shí)包的存儲(chǔ)位置,AID和包索引一一對(duì)應(yīng),AID和應(yīng)用列表中的應(yīng)用索引一一對(duì)應(yīng)。優(yōu)選的本步驟具體為Java卡虛擬機(jī)解釋執(zhí)行包索引所對(duì)應(yīng)包中的當(dāng)前應(yīng)用的Java程序。進(jìn)一步的,上述步驟1-2之后還包括:步驟1-3 Java卡虛擬機(jī)根據(jù)包索引和應(yīng)用索引計(jì)算得到當(dāng)前執(zhí)行環(huán)境的環(huán)境值(CC 值);具體地,Java卡虛擬機(jī)將得到的包索引作為高4位,將得到的應(yīng)用索引作為低4位,兩者拼接組成的一個(gè)字節(jié)即為當(dāng)前執(zhí)行環(huán)境的環(huán)境值。進(jìn)一步的,本步驟計(jì)算得到的當(dāng)前執(zhí)行環(huán)境的CC值保存在當(dāng)前被選擇通道對(duì)應(yīng)的全局變量中。步驟2 Java卡虛擬機(jī)獲取Java程序中當(dāng)前被執(zhí)行指令提供的對(duì)象引用,根據(jù)對(duì)象引用從預(yù)設(shè)存儲(chǔ)區(qū)獲取當(dāng)前訪問對(duì)象,并讀取當(dāng)前訪問對(duì)象的環(huán)境值;本實(shí)施例中具體地,所述預(yù)設(shè)存儲(chǔ)區(qū)用于存儲(chǔ)所有訪問對(duì)象,對(duì)象引用與預(yù)設(shè)存儲(chǔ)區(qū)中存儲(chǔ)的訪問對(duì)象一一對(duì)應(yīng),所述訪問對(duì)象由對(duì)象頭和數(shù)據(jù)域組成。本步驟具體為:Java卡虛擬機(jī)解釋執(zhí)行當(dāng)前被執(zhí)行指令,根據(jù)指令中提供的參數(shù),從Java卡虛擬機(jī)運(yùn)行棧上獲取相應(yīng)的對(duì)象引用,從預(yù)設(shè)存儲(chǔ)區(qū)中獲取與所述對(duì)象引用對(duì)應(yīng)的當(dāng)前訪問對(duì)象,讀取當(dāng)前訪問對(duì)象的第二個(gè)字節(jié)為當(dāng)前訪問對(duì)象的環(huán)境值。步驟3 Java卡虛擬機(jī)根據(jù)當(dāng)前被執(zhí)行指令得到當(dāng)前訪問對(duì)象的類型;當(dāng)訪問對(duì)象類型是方法調(diào)用時(shí),執(zhí)行步驟4,當(dāng)訪問對(duì)象類型是讀寫對(duì)象時(shí),執(zhí)行步驟6,當(dāng)前訪問對(duì)象類型是其他時(shí),執(zhí)行步驟7。具體地,當(dāng)前被執(zhí)行指令的第一個(gè)字節(jié)為0x8B或0x8E時(shí),當(dāng)前訪問對(duì)象是方法調(diào)用,當(dāng)前被執(zhí)行指令的第一個(gè)字節(jié)為 0x83、0x84、0x85、0x86、0x87、0x88、0x89、0x90、0xA9、OxAA、OxAB、OxAC、OxAD、OxAE、OxAF、OxBO、OxB1、0xB2、0xB3、0xB4、0xB5、0xB6、0xB7、0xB8、0x94之中任一數(shù)值時(shí),當(dāng)前訪問對(duì)象是讀寫對(duì)象,否則當(dāng)前訪問對(duì)象是其他類型,本實(shí)施例中具體地當(dāng)前被執(zhí)行指令的第一個(gè)字節(jié)是0x93時(shí)表示當(dāng)前訪問對(duì)象是其他類型。步驟4:判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用,是則執(zhí)行步驟5,否則執(zhí)行步驟6 ;本實(shí)施例中具體地,根據(jù)當(dāng)前被執(zhí)行指令的第一個(gè)字節(jié)和當(dāng)前訪問對(duì)象判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用,當(dāng)被執(zhí)行指令的第一個(gè)字節(jié)為0x8E時(shí)當(dāng)前訪問對(duì)象可能是共享接口方法調(diào)用,因此,當(dāng)被執(zhí)行指令的第一個(gè)字節(jié)為OxSE時(shí)判斷當(dāng)前訪問對(duì)象是否是共享接口具體為:根據(jù)當(dāng)前被執(zhí)行指令獲得當(dāng)前訪問對(duì)象所調(diào)用的接口方法所在類型的引用,根據(jù)所述引用得到類型信息,根據(jù)類型信息的第I個(gè)字節(jié)判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用,具體地,當(dāng)所述類型信息的第一個(gè)字節(jié)的第二位為I時(shí)則當(dāng)前訪問對(duì)象是共享接口方法調(diào)用。步驟5:判斷當(dāng)前訪問對(duì)象所屬的包是否是活動(dòng)包,是則執(zhí)行步驟8,否則拋出異常;本實(shí)施例中具體地,Java卡虛擬機(jī)遍歷所有通道,判斷當(dāng)前訪問對(duì)象的CC值的高4位是否與某一通道中存儲(chǔ)的CC值的高4位相等,是則當(dāng)前訪問對(duì)象所屬的包為活動(dòng)包允許訪問,否則拋出異常。步驟6:判斷當(dāng)前訪問對(duì)象是否是不受防火墻限制的對(duì)象或滿足基本檢測(cè)條件,是則執(zhí)行步驟8,否則拋出異常;本實(shí)施例中具體地,不受防火墻限制的對(duì)象包括入口點(diǎn)對(duì)象、全局?jǐn)?shù)組對(duì)象。判斷是否滿足基本檢測(cè)條件具體為:(I)當(dāng)前執(zhí)行環(huán)境為系統(tǒng)環(huán)境;(2)當(dāng)前訪問對(duì)象的環(huán)境值等于當(dāng)前執(zhí)行環(huán)境的環(huán)境值;若滿足上述任一條件則當(dāng)前訪問對(duì)象滿足基本檢測(cè)條件。步驟7:判斷當(dāng)前訪問對(duì)象是否滿足基本檢測(cè)條件,是則執(zhí)行步驟8,否則拋出異常;本步驟的判斷與步驟6所述判斷是否滿足基本檢測(cè)條件相同,在此不再贅述。步驟8 Java卡虛擬機(jī)執(zhí)行當(dāng)前被執(zhí)行指令。實(shí)施例2在實(shí)施例1的基礎(chǔ)上,本實(shí)施例提供了一種Java卡對(duì)象訪問的控制方法,如圖2所示,包括以下步驟:
      步驟101 Java卡虛擬機(jī)解釋執(zhí)行當(dāng)前應(yīng)用的Java程序;本實(shí)施例中具體地,所述當(dāng)前應(yīng)用的Java程序由多條被執(zhí)行指令組成,Java卡虛擬機(jī)解釋執(zhí)行當(dāng)前應(yīng)用的Java程序具體為依次執(zhí)行所述被執(zhí)行指令。本實(shí)施例優(yōu)選的本步驟之前還包括:步驟1-1: Java卡虛擬機(jī)接收到APDU應(yīng)用選擇命令,解析所述APDU應(yīng)用選擇命令并從中獲取應(yīng)用標(biāo)識(shí)符(AID);具體包括:1) Java卡虛擬機(jī)判斷接收到的APDU應(yīng)用選擇命令的前四個(gè)字節(jié)是否為00 A4 04 00,是則繼續(xù),否則拋出異常;2) Java卡虛擬機(jī)根據(jù)所述APDU應(yīng)用選擇命令的第五個(gè)字節(jié)獲取AID的長(zhǎng)度;3)從第六個(gè)字節(jié)開始讀取長(zhǎng)度為AID長(zhǎng)度的數(shù)據(jù)即為獲取到的AID。進(jìn)一步的,在Java卡中有多個(gè)通道,步驟1_1還包括:Java卡虛擬機(jī)解析所述APDU應(yīng)用選擇命令并從中獲取當(dāng)前被選擇通道,具體地,Java卡虛擬機(jī)根據(jù)所述APDU應(yīng)用選擇命令的第一個(gè)字節(jié)得到當(dāng)前被選擇通道。本實(shí)施例中優(yōu)選的:Java卡虛擬機(jī)接收到0x01 0xA4 0x04 0x00 0x08 OxAO0x00 0x00 0x00 0x03 0x00 0x00 0x00 ;其中 0x01 0xA4 0x04 0x00 代表接收到的是APDU應(yīng)用選擇命令,0x08代表后面AID的長(zhǎng)度,則從該命令中獲取的AID為:OxAO0x00 0x00 0x00 0x03 0x00 0x00 0x00,第一個(gè)字節(jié)0x01表示當(dāng)前被選擇通道為通道I。步驟1-2 =Java卡虛擬機(jī)根據(jù)AID遍歷卡片上所有的包,查找到該AID對(duì)應(yīng)的包索引;根據(jù)AID遍歷卡片上所有已安裝的應(yīng)用列表,查找到該AID對(duì)應(yīng)的應(yīng)用索引;

      具體地,卡片上的包中包含有已安裝應(yīng)用的Java程序,卡片上的包的包索引用于標(biāo)識(shí)包的存儲(chǔ)位置,AID和包索引一一對(duì)應(yīng),AID和應(yīng)用列表中的應(yīng)用索引一一對(duì)應(yīng)。本實(shí)施例中優(yōu)選的,若卡片上有3個(gè)包,AID所代表的應(yīng)用在第2個(gè)包中,則Java卡遍歷卡片上所有的包之后查找到的包索引為2 ;若卡片上安裝了 3個(gè)應(yīng)用,AID所代表的應(yīng)用為第3個(gè),則遍歷卡片上所有已安裝的應(yīng)用列表查找到的應(yīng)用索引為3。優(yōu)選的本步驟具體為=Java卡虛擬機(jī)解釋執(zhí)行包索引所對(duì)應(yīng)包中的當(dāng)前應(yīng)用的Java程序。進(jìn)一步的,上述步驟1-2之后還包括:步驟1-3 Java卡虛擬機(jī)根據(jù)包索引和應(yīng)用索引計(jì)算得到當(dāng)前執(zhí)行環(huán)境的環(huán)境值(CC 值);具體地,Java卡虛擬機(jī)將得到的包索引作為高4位,將得到的應(yīng)用索引作為低4位,兩者拼接組成的一個(gè)字節(jié)即為當(dāng)前執(zhí)行環(huán)境的環(huán)境值。進(jìn)一步的,本步驟計(jì)算得到的當(dāng)前執(zhí)行環(huán)境的CC值保存在當(dāng)前被選擇通道對(duì)應(yīng)的全局變量中。本實(shí)施例中優(yōu)選的:步驟1-2中查找得到的包索引為2,應(yīng)用索引為3,則本步驟中Java卡虛擬機(jī)根據(jù)包索引和應(yīng)用索引計(jì)算得到當(dāng)前執(zhí)行環(huán)境的環(huán)境值是23。步驟102 Java卡虛擬機(jī)獲取Java程序中當(dāng)前被執(zhí)行指令提供的對(duì)象引用,根據(jù)對(duì)象引用從預(yù)設(shè)存儲(chǔ)區(qū)獲取當(dāng)前訪問對(duì)象,并讀取當(dāng)前訪問對(duì)象的環(huán)境值;本實(shí)施例中具體地,所述預(yù)設(shè)存儲(chǔ)區(qū)用于存儲(chǔ)所有訪問對(duì)象,對(duì)象引用與預(yù)設(shè)存儲(chǔ)區(qū)中存儲(chǔ)的訪問對(duì)象--對(duì)應(yīng),所述訪問對(duì)象由對(duì)象頭和數(shù)據(jù)域組成。本步驟具體為:Java卡虛擬機(jī)解釋執(zhí)行當(dāng)前被執(zhí)行指令,根據(jù)指令中提供的參數(shù),從Java卡虛擬機(jī)運(yùn)行棧上獲取相應(yīng)的對(duì)象引用,從預(yù)設(shè)存儲(chǔ)區(qū)獲取與所述對(duì)象引用對(duì)應(yīng)的當(dāng)前訪問對(duì)象,讀取當(dāng)前訪問對(duì)象的第二個(gè)字節(jié)。步驟103 Java卡虛擬機(jī)根據(jù)當(dāng)前被執(zhí)行指令得到當(dāng)前訪問對(duì)象的類型;當(dāng)訪問對(duì)象類型是方法調(diào)用時(shí),執(zhí)行步驟104,當(dāng)訪問對(duì)象類型是讀寫對(duì)象時(shí),執(zhí)行步驟106,當(dāng)前訪問對(duì)象類型是其他時(shí),執(zhí)行步驟107。具體地,當(dāng)前被執(zhí)行指令的第一個(gè)字節(jié)為0x8B或0x8E時(shí),當(dāng)前訪問對(duì)象是方法調(diào)用,當(dāng)前被執(zhí)行指令的第一個(gè)字節(jié)為 0x83、0x84、0x85、0x86、0x87、0x88、0x89、0x90、0xA9、OxAA、OxAB、OxAC、OxAD、OxAE、OxAF、OxBO、OxB1、0xB2、0xB3、0xB4、0xB5、0xB6、0xB7、0xB8、0x94之中任一數(shù)值時(shí),當(dāng)前訪問對(duì)象是讀寫對(duì)象,否則當(dāng)前訪問對(duì)象是其他類型,本實(shí)施例中具體地當(dāng)前被執(zhí)行指令的第一個(gè)字是0x93時(shí)表示當(dāng)前訪問對(duì)象是其他類型。本實(shí)施中優(yōu)選的,若當(dāng)前被執(zhí)行指令為調(diào)用實(shí)例方法指令(invokevirtual指令),則當(dāng)前訪問對(duì)象類型是方法調(diào)用具體為調(diào)用實(shí)例方法,若當(dāng)前被執(zhí)行指令為調(diào)用接口方法指令(invokeinterface指令),則當(dāng)前訪問對(duì)象類型是方法調(diào)用具體為調(diào)用接口方法;若當(dāng)前被執(zhí)行指令為讀對(duì)象(getfield)或?qū)憣?duì)象(putfield)指令,則當(dāng)前訪問對(duì)象類型是讀寫對(duì)象,進(jìn)一步的若當(dāng)前被訪問對(duì)象的第一個(gè)字節(jié)為0x20,則當(dāng)前訪問對(duì)象類型是讀寫普通對(duì)象,若當(dāng)前被訪問對(duì)象的第一個(gè)字節(jié)為其他取值,則當(dāng)前訪問對(duì)象類型是讀寫數(shù)組對(duì)象。例如,被訪問對(duì)象的第一個(gè)字節(jié)取值為0x60、0x80、OxAO、OxCO、OxEO時(shí)分別代表布爾數(shù)組、字節(jié)數(shù)組、short數(shù)組、int數(shù)組、引用數(shù)組;若當(dāng)前被執(zhí)行指令為拋出異常指令(athrow指令),則當(dāng)前訪問對(duì)象類型是其他類型具體為拋出異常對(duì)象。步驟104:判斷當(dāng)前訪問對(duì)象是共享接口方法調(diào)用,是則執(zhí)行步驟105,否則執(zhí)行步驟106 ;本實(shí)施例中,判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用具體如下:步驟2-1:判斷當(dāng)前被執(zhí)行指令的第一個(gè)字節(jié)是否是第三預(yù)設(shè)值,是則繼續(xù)下一步,否則當(dāng)前訪問對(duì)象不是共享接口方法調(diào)用;具體地,第三預(yù)設(shè)值為0x8E。步驟2-2:根據(jù)當(dāng)前被執(zhí)行指令提供的對(duì)象所調(diào)用的接口方法所屬類型的引用找到類型信息;步驟2-3:根據(jù)類型信息的第I個(gè)字節(jié)判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用;優(yōu)選的,若所述類型信息的第I個(gè)字節(jié)的第2位為1,則當(dāng)前訪問對(duì)象不是共享接口方法調(diào)用。步驟105:判斷當(dāng)前訪問對(duì)象所屬的包是否是活動(dòng)包,是則執(zhí)行步驟109,否則拋出異常;本實(shí)施例中具體地,Java卡虛擬機(jī)遍歷所有通道,判斷當(dāng)前訪問對(duì)象的CC值的高4位是否與某一通道中存儲(chǔ)的CC值的高4位相等,是則當(dāng)前訪問對(duì)象所屬的包為活動(dòng)包,允許訪問,否則拋出異常。步驟106:判斷當(dāng)前訪問對(duì)象是否是不受防火墻限制的對(duì)象,是則執(zhí)行步驟109,否則執(zhí)行步驟107 ;本實(shí)施例中判斷是否是不受防火墻限制的對(duì)象具體包括:
      (I)判斷當(dāng)前訪問對(duì)象是否為入口點(diǎn)對(duì)象,是則允許訪問當(dāng)前訪問對(duì)象執(zhí)行步驟109,否則繼續(xù)下一步;具體地,判斷當(dāng)前訪問對(duì)象的第一個(gè)字節(jié)是否為第一預(yù)設(shè)值,是則允許訪問當(dāng)前訪問對(duì)象,否則繼續(xù)下一步。本實(shí)施例中優(yōu)選的,第一預(yù)設(shè)值為0x28。(2)判斷當(dāng)前訪問對(duì)象是否為全局?jǐn)?shù)組對(duì)象,是則允許訪問當(dāng)前訪問對(duì)象執(zhí)行步驟109,否則執(zhí)行步驟107 ;具體地,判斷當(dāng)前訪問對(duì)象的第一個(gè)字節(jié)是否與全局?jǐn)?shù)組屬性值匹配,是則允許訪問當(dāng)前訪問對(duì)象執(zhí)行步驟109,否則執(zhí)行步驟107。本實(shí)施例中優(yōu)選的,全局?jǐn)?shù)組屬性值包括0x70、0x90、OxBO、OxDO和OxFO,
      上述全局?jǐn)?shù)組屬性值分別表示該訪問對(duì)象是全局布爾數(shù)組、全局字節(jié)數(shù)組、全局Short數(shù)組、全局Int數(shù)組、全局引用數(shù)組。進(jìn)一步的,上述(I)、(2)的判斷可以不分先后順序。步驟107:判斷當(dāng)前執(zhí)行環(huán)境是否為系統(tǒng)環(huán)境,是則執(zhí)行步驟109,否則執(zhí)行步驟108 ;具體地,判斷當(dāng)前執(zhí)行環(huán)境的環(huán)境值是否為第二預(yù)設(shè)值,是則允許訪問當(dāng)前訪問對(duì)象執(zhí)行步驟109,否則執(zhí)行步驟108。本實(shí)施例中優(yōu)選的,第二預(yù)設(shè)值為0x00。步驟108:判斷當(dāng)前訪問對(duì)象的環(huán)境值是否與當(dāng)前執(zhí)行環(huán)境的環(huán)境值相等,是則允許訪問當(dāng)前訪問對(duì)象執(zhí)行步驟109,否則拋出異常。具體地,判斷當(dāng)前訪問對(duì)象的第二個(gè)字節(jié)是否與當(dāng)前執(zhí)行環(huán)境的環(huán)境值相等,是則允許訪問當(dāng)前訪問對(duì)象,否則拋出異常。進(jìn)一步的,上述步驟106、107和步驟108的順序可以互換。步驟109 Java卡虛擬機(jī)執(zhí)行當(dāng)前被執(zhí)行指令。實(shí)施例3在實(shí)施例1或2的基礎(chǔ)上,本實(shí)施例以具體的訪問對(duì)象類型為例對(duì)Java卡對(duì)象訪問的控制方法進(jìn)行詳細(xì)說(shuō)明。Java卡虛擬機(jī)解釋執(zhí)行當(dāng)前被執(zhí)行指令時(shí),從Java卡虛擬機(jī)運(yùn)行棧上可以獲取相應(yīng)的對(duì)象引用。本實(shí)施例中優(yōu)選的,系統(tǒng)環(huán)境的CC值為0x00。,Java卡虛擬機(jī)根據(jù)接收到的APDU應(yīng)用選擇命令得到的當(dāng)前執(zhí)行環(huán)境的CC值0x21。當(dāng)前被執(zhí)行指令為OxAE 0x03時(shí),從Java卡虛擬機(jī)運(yùn)行棧上獲取的對(duì)象引用優(yōu)選為0x96,根據(jù)指令的第一個(gè)字節(jié)得到該指令為getfield_b_this指令,得到訪問對(duì)象類型是讀寫對(duì)象,Java卡虛擬機(jī)訪問當(dāng)前訪問對(duì)象前執(zhí)行以下操作:步驟Al:根據(jù)對(duì)象引用找到當(dāng)前訪問對(duì)象為:0x20 0x00 0x00 0x13 0x04 0x000x01 0x00 0x08 0x00 0x05,根據(jù)當(dāng)前訪問對(duì)象的第一個(gè)字節(jié)得到當(dāng)前訪問對(duì)象的類型為
      讀寫普通對(duì)象;步驟A2:根據(jù)當(dāng)前訪問對(duì)象的第二個(gè)字節(jié)得到當(dāng)前訪問對(duì)象的環(huán)境值;具體地,得到的當(dāng)前訪問對(duì)象的CC值為0x00。步驟A3:判斷當(dāng)前執(zhí)行環(huán)境是否為系統(tǒng)環(huán)境,是則允許訪問,否則繼續(xù)下一步;具體的,判斷當(dāng)前執(zhí)行環(huán)境的CC值是否等于系統(tǒng)環(huán)境的CC值,本實(shí)施例中,當(dāng)前執(zhí)行環(huán)境的CC值0x21與系統(tǒng)環(huán)境的CC值0x00不等,繼續(xù)下一步。步驟A4:判斷當(dāng)前訪問對(duì)象的CC值是否與當(dāng)前執(zhí)行環(huán)境的CC值相同,是則允許訪問,否則拋出異常。本實(shí)施例中,當(dāng)前訪問對(duì)象的CC值0x00與當(dāng)前執(zhí)行環(huán)境的CC值0x21不等,拋出異常。進(jìn)一步的,當(dāng)判斷結(jié)果是允許訪問時(shí),根據(jù)當(dāng)前被執(zhí)行指令的第二個(gè)字節(jié)獲取當(dāng)前訪問對(duì)象的數(shù)據(jù),具體為第二個(gè)字節(jié)0x03表示待提取的數(shù)據(jù)的編號(hào),執(zhí)行允許訪問具體為 Java 卡虛擬機(jī)從當(dāng)前訪問對(duì)象 0x20 0x00 0x00 0x13 0x04 0x00 0x01 0x00 0x080x00 0x05的數(shù)據(jù)中提取第三組數(shù)據(jù)即0x00 0x05,每2個(gè)字節(jié)為一個(gè)單位,其中前五個(gè)字節(jié)0x20 0x00 0x00 0x13 0x04為對(duì)象頭,其余字節(jié)為數(shù)據(jù)。當(dāng)前被執(zhí)行指令為0x26時(shí),從Java卡虛擬機(jī)運(yùn)行棧上獲取的對(duì)象引用優(yōu)選為0x83,根據(jù)指令的第一個(gè)字節(jié)得到該指令為加載指令(saload指令),得到訪問對(duì)象類型是讀寫對(duì)象,Java卡虛擬機(jī)訪問當(dāng)前訪問對(duì)象前執(zhí)行以下操作:步驟B1:根據(jù)對(duì)象引用找到當(dāng)前訪問對(duì)象為:0xA0 0x00 0x00 OxOA 0x16 0x00OxOA 0x00 0x03 0x00 0x08 0x00 0x38 0x00 0x12 0x00 0x35 0x00 0x06 0x00 0x070x00 0x08 0x00 0x09 0x00 OxOA ;根據(jù)當(dāng)前訪問對(duì)象的第二個(gè)字節(jié)得到當(dāng)前訪問對(duì)象的CC 值為 0x00 ;步驟B2:判斷當(dāng)前訪問對(duì)象是否是全局?jǐn)?shù)組對(duì)象,是則允許訪問,否則繼續(xù)下一
      I K
      少;本實(shí)施例中具體地,根據(jù)當(dāng)前訪問對(duì)象的第一個(gè)字節(jié)為OxAO得到當(dāng)前訪問對(duì)象是全局?jǐn)?shù)組對(duì)象,允許訪問。進(jìn)一步的,若判斷結(jié)果為否則繼續(xù)執(zhí)行步驟B3。步驟B3:判斷當(dāng)前訪問對(duì)象是否是入口點(diǎn)對(duì)象,是則允許訪問,否則繼續(xù)下一步;具體地,判斷當(dāng)前訪問對(duì)象的第一個(gè)字節(jié)的第5位(從最低位第O位向高位開始數(shù))是否為I,本實(shí)施例中當(dāng)前訪問對(duì)象的第一個(gè)字節(jié)OxAO的第5位為I,允許訪問。步驟B4:判斷當(dāng)前執(zhí)行環(huán)境是否為系統(tǒng)環(huán)境,是則允許訪問,否則繼續(xù)下一步;具體的,判斷當(dāng)前執(zhí)行環(huán)境的CC值是否等于系統(tǒng)環(huán)境的CC值,本實(shí)施例中,判斷結(jié)果為否,繼續(xù)下一步。步驟B5:判斷當(dāng)前訪問對(duì)象的CC值是否與當(dāng)前執(zhí)行環(huán)境的CC值相同,是則允許訪問,否則拋出異常。本實(shí)施例中,當(dāng)前訪問對(duì)象的CC值0x00與當(dāng)前執(zhí)行環(huán)境的CC值0x21不等,拋出異常。當(dāng)前被執(zhí)行指令為0x93時(shí),從Java卡虛擬機(jī)運(yùn)行棧上獲取的對(duì)象引用優(yōu)選為0x90,當(dāng)前被執(zhí)行指令為athrow指令,用于執(zhí)行將虛擬機(jī)運(yùn)行棧中棧頂?shù)漠惓?duì)象拋出的操作,Java卡虛擬機(jī)訪問此異常對(duì)象前執(zhí)行以下操作:步驟Cl:根據(jù)對(duì)象引用找到當(dāng)前訪問對(duì)象為:0x28 0x00 0x00 0x6B 0x04 OxFC0x08 ;根據(jù)當(dāng)前訪問對(duì)象的第二個(gè)字節(jié)得到當(dāng)前訪問對(duì)象的環(huán)境值為0x00 ;步驟C2:判斷當(dāng)前執(zhí)行環(huán)境是否為系統(tǒng)環(huán)境,是則允許訪問,否則繼續(xù)下一步;步驟C3:判斷當(dāng)前訪問對(duì)象的CC值是否與當(dāng)前執(zhí)行環(huán)境的CC值相同,是則允許訪問,否則拋出異常。當(dāng)前被執(zhí)行指令為0x8E,I, 0x0002, 2時(shí),從Java卡虛擬機(jī)運(yùn)行棧上獲取的對(duì)象引用優(yōu)選為0x68,根據(jù)指令的第一個(gè)字節(jié)得到該指令為invokeinterface指令,得到訪問對(duì)象類型是方法調(diào)用,根據(jù)指令的第二個(gè)字節(jié)為I得到要調(diào)用的方法有I個(gè)參數(shù),根據(jù)第三、四個(gè)字節(jié)得到被調(diào)用方法所在類型的引用,根據(jù)第五個(gè)字節(jié)得到被調(diào)用的方法的ID,該ID用于表示被調(diào)用方法在類型虛方法表中的索引;Java卡虛擬機(jī)訪問當(dāng)前訪問對(duì)象前執(zhí)行以下操作:步驟El:根據(jù)對(duì)象引用找到當(dāng)前訪問對(duì)象為:0x20 0x01 0x02 0x05 0x08 ;根據(jù)當(dāng)前訪問對(duì)象的第二個(gè)字節(jié)得到當(dāng)前訪問對(duì)象的CC值為0x01 ;步驟E2:判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用,是則執(zhí)行步驟E3,否則執(zhí)行步驟E4 ;本實(shí)施例中具體地,根據(jù)指令中提供的0x0002找到對(duì)象所調(diào)用接口所屬的類型信息,根據(jù)類型信息的第I個(gè)字節(jié)判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用。優(yōu)選的,若當(dāng)前訪問對(duì)象的類型信息的第I個(gè)字節(jié)的第2位為1,則當(dāng)前訪問對(duì)象是共享接口方法調(diào)用。例如:根據(jù)invokeinterface指令中提供的0x0002可以找到類型的信息如下:0x81,0x00,0x00,根據(jù)所述類型地址的第I個(gè)字節(jié)0x81可知,它的(10000001)第2位為
      O,表示該類型不是共享接口方法調(diào)用。步驟E3:判斷當(dāng)前訪問對(duì)象所屬的包是否是活動(dòng)包,是則允許訪問,否則拋出異常;本實(shí)施例中具體地,Java卡虛擬機(jī)遍歷所有通道,判斷當(dāng)前訪問對(duì)象的CC值的高4位是否與某一通道中存儲(chǔ)的CC值的高4位相等,是則當(dāng)前訪問對(duì)象所屬的包為活動(dòng)包允許訪問,否則拋出異常。例如:卡片上有2個(gè)通道,第I個(gè)通道中存儲(chǔ)的CC值為0x00,第2個(gè)通道中存儲(chǔ)的CC值為0x40,那么第I個(gè)通道中的CC值(0x00)的高4位與當(dāng)前訪問對(duì)象的CC值(0x01)的高4位相同,表示當(dāng)前訪問對(duì)象所屬的包為活動(dòng)包。步驟E4:判斷當(dāng)前訪問對(duì)象是否是不受防火墻限制的對(duì)象或滿足基本檢測(cè)條件,是則允許方法,否則拋出異常。本實(shí)施例中具體地,判斷當(dāng)前訪問對(duì)象是否為不受防火墻限制的對(duì)象或是否滿足基本檢測(cè)條件在前面已做了詳細(xì)描述,在此不再贅述。以上所述,僅為本發(fā)明的具體實(shí)施方式
      ,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
      權(quán)利要求
      1.一種Java卡對(duì)象訪問的控制方法,其特征是:所述方法包括: 步驟SI Java卡虛擬機(jī)解釋執(zhí)行當(dāng)前應(yīng)用的Java程序;步驟S2:所述Java卡虛擬機(jī)獲取所述Java程序中當(dāng)前被執(zhí)行指令提供的對(duì)象引用,根據(jù)所述對(duì)象引用從預(yù)設(shè)存儲(chǔ)區(qū)獲取當(dāng)前訪問對(duì)象,并讀取所述當(dāng)前訪問對(duì)象的環(huán)境值;步驟S3:所述Java卡虛擬機(jī)根據(jù)當(dāng)前被執(zhí)行指令得到當(dāng)前訪問對(duì)象的類型;如果當(dāng)前訪問對(duì)象類型是方法調(diào)用,則執(zhí)行步驟Al ;如果當(dāng)前訪問對(duì)象類型是讀寫對(duì)象,則執(zhí)行步驟BI ;否則執(zhí)行步驟Cl ; 步驟Al:判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用,是則執(zhí)行步驟A2,否則執(zhí)行步驟BI ; 步驟A2:判斷當(dāng)前訪問對(duì)象所屬的包是否是活動(dòng)包,是則執(zhí)行步驟S4,否則拋出異常;步驟B1:判斷當(dāng)前訪問對(duì)象是否是不受防火墻限制的對(duì)象或滿足基本檢測(cè)條件,是則執(zhí)行步驟S4,否則拋出異常; 步驟Cl:判斷當(dāng)前訪問對(duì)象是否滿足基本檢測(cè)條件,是則執(zhí)行步驟S4,否則拋出異常; 步驟S4 Java卡虛擬機(jī)執(zhí)行當(dāng)前被執(zhí)行指令。
      2.根據(jù)權(quán)利要求1所述的控制方法,其特征是:所述步驟S2具體為:所述Java卡虛擬機(jī)根據(jù)當(dāng)前被執(zhí)行指令中的參數(shù),從虛擬機(jī)運(yùn)行棧上獲取對(duì)象引用,從預(yù)設(shè)存儲(chǔ)區(qū)獲取與所述對(duì)象引用對(duì)應(yīng)的當(dāng)前訪問對(duì)象,讀取當(dāng)前訪問對(duì)象的第二個(gè)字節(jié)為所述當(dāng)前訪問對(duì)象的環(huán)境值。
      3.根據(jù)權(quán)利要求1所述的 控制方法,其特征是:步驟Al所述判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用包括: 步驟2-1:判斷當(dāng)前被執(zhí)行指令的第一個(gè)字節(jié)是否為第三預(yù)設(shè)值,是則繼續(xù)下一步,否則當(dāng)前訪問對(duì)象不是共享接口方法調(diào)用; 步驟2-2:根據(jù)當(dāng)前被執(zhí)行指令獲得當(dāng)前訪問對(duì)象所在類型的引用,根據(jù)所述引用獲得類型息; 步驟2-3:根據(jù)所述類型信息的第I個(gè)字節(jié)判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用。
      4.根據(jù)權(quán)利要求3所述的控制方法,其特征是:若所述類型信息的第I個(gè)字節(jié)的第2位為1,則當(dāng)前訪問對(duì)象是共享接口方法調(diào)用。
      5.根據(jù)權(quán)利要求1所述的控制方法,其特征是:步驟A2所述判斷當(dāng)前訪問對(duì)象所屬的包是否是活動(dòng)包具體為Java卡虛擬機(jī)遍歷所有通道,判斷當(dāng)前訪問對(duì)象的環(huán)境值的高4位是否與某一通道中存儲(chǔ)的環(huán)境值的高4位相等,是則當(dāng)前訪問對(duì)象所屬的包是活動(dòng)包,否則當(dāng)前訪問對(duì)象所屬的包不是活動(dòng)包。
      6.根據(jù)權(quán)利要求1所述的控制方法,其特征是:步驟BI所述不受防火墻限制的對(duì)象包括入口點(diǎn)對(duì)象和全局?jǐn)?shù)組對(duì)象。
      7.根據(jù)權(quán)利要求1所述的控制方法,其特征是:步驟BI和Cl所述滿足基本檢測(cè)條件包括滿足當(dāng)前執(zhí)行環(huán)境為系統(tǒng)環(huán)境或當(dāng)前訪問對(duì)象的環(huán)境值等于當(dāng)前執(zhí)行環(huán)境的環(huán)境值。
      8.根據(jù)權(quán)利要求1所述的控制方法,其特征是:所述步驟Cl具體為: 步驟Cl-1:判斷當(dāng)前執(zhí)行環(huán)境是否為系統(tǒng)環(huán)境,是則執(zhí)行步驟S4,否則執(zhí)行步驟C1-2 ;步驟Cl-2:判斷當(dāng)前訪問對(duì)象的環(huán)境值是否與當(dāng)前執(zhí)行環(huán)境的環(huán)境值相等,是則執(zhí)行步驟S4,否則拋出異常。
      9.根據(jù)權(quán)利要求8所述的控制方法,其特征是:所述步驟BI具體為:判斷當(dāng)前訪問對(duì)象是否是不受防火墻限制的對(duì)象,是則執(zhí)行步驟S4,否則執(zhí)行步驟Cl。
      10.根據(jù)權(quán)利要求8所述的控制方法,其特征是:所述判斷當(dāng)前執(zhí)行環(huán)境是否為系統(tǒng)環(huán)境具體為判斷當(dāng)前執(zhí)行環(huán)境的環(huán)境值是否為第二預(yù)設(shè)值。
      11.根據(jù)權(quán)利要求9所述的控制方法,其特征是:所述判斷當(dāng)前訪問對(duì)象是否是不受防火墻限制的對(duì)象具體包括: 步驟Bl-1:判斷當(dāng)前訪問對(duì)象是否為入口點(diǎn)對(duì)象,是則執(zhí)行步驟S4,否則執(zhí)行步驟B1-2 ; 步驟B1-2:判斷當(dāng)前訪問對(duì)象是否為全局?jǐn)?shù)組對(duì)象,是則執(zhí)行步驟S4,否則執(zhí)行步驟Cl。
      12.根據(jù)權(quán)利要求11所述的控制方法,其特征是:所述判斷當(dāng)前訪問對(duì)象是否為入口點(diǎn)對(duì)象具體為判斷當(dāng)前訪問對(duì)象的第一個(gè)字節(jié)是否為第一預(yù)設(shè)值。
      13.根據(jù)權(quán)利要求11所述的控制方法,其特征是:所述判斷當(dāng)前訪問對(duì)象是否為全局?jǐn)?shù)組對(duì)象具體為判斷當(dāng)前訪問對(duì)象的第一個(gè)字節(jié)是否與全局?jǐn)?shù)組屬性值匹配。
      14.根據(jù)權(quán)利要求13所述的控制方法,其特征是:全局?jǐn)?shù)組屬性值包括0x70、0x90、OxBO 、 OxDO 和 OxFO。
      15.根據(jù)權(quán)利要求1所述的控制方法,其特征是:所述步驟SI之前還包括: 步驟1-1 =Java卡虛擬機(jī)接收到APDU應(yīng)用選擇命令,解析所述APDU應(yīng)用選擇命令并從中獲取應(yīng)用標(biāo)識(shí)符; 步驟1-2:所述Java卡虛擬機(jī)根據(jù)所述應(yīng)用標(biāo)識(shí)符遍歷卡片上所有的包,查找到所述應(yīng)用標(biāo)識(shí)符對(duì)應(yīng)的包索引;根據(jù)所述應(yīng)用標(biāo)識(shí)符遍歷卡片上所有已安裝的應(yīng)用列表,查找到所述應(yīng)用標(biāo)識(shí)符對(duì)應(yīng)的應(yīng)用索引; 步驟1-3:所述Java卡虛擬機(jī)根據(jù)所述包索引和所述應(yīng)用索引計(jì)算得到當(dāng)前執(zhí)行環(huán)境的環(huán)境值。
      16.根據(jù)權(quán)利要求15所述的控制方法,其特征是:所述步驟1-3具體為Java卡虛擬機(jī)將所述包索引作為高4位,將所述應(yīng)用索引作為低4位,兩者拼接組成的一個(gè)字節(jié)即為得到的當(dāng)前執(zhí)行環(huán)境的環(huán)境值。
      全文摘要
      本發(fā)明公開了一種Java卡對(duì)象訪問的控制方法,屬于智能卡技術(shù)領(lǐng)域。該方法包括Java卡虛擬機(jī)根據(jù)當(dāng)前被執(zhí)行指令得到當(dāng)前訪問對(duì)象的類型;如果當(dāng)前訪問對(duì)象是方法調(diào)用,則包括判斷當(dāng)前訪問對(duì)象是否是共享接口方法調(diào)用,是則判斷當(dāng)前訪問對(duì)象所屬的包是否是活動(dòng)包,否則執(zhí)行當(dāng)前訪問對(duì)象是讀寫對(duì)象的判斷;如果當(dāng)前訪問對(duì)象是讀寫對(duì)象,則判斷當(dāng)前訪問對(duì)象是否是不受防火墻限制的對(duì)象或滿足基本檢測(cè)條件,如果是其他類型則判斷當(dāng)前訪問對(duì)象是否滿足基本檢測(cè)條件;上述判斷為是則允許訪問,否則拋出異常。本發(fā)明實(shí)現(xiàn)了Java卡的多應(yīng)用安全管理。
      文檔編號(hào)G06F21/52GK103093142SQ201210574908
      公開日2013年5月8日 申請(qǐng)日期2012年12月26日 優(yōu)先權(quán)日2012年12月26日
      發(fā)明者陸舟, 于華章 申請(qǐng)人:飛天誠(chéng)信科技股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1