本發(fā)明涉及建立應(yīng)用程序可信執(zhí)行環(huán)境的技術(shù)領(lǐng)域,特別地,涉及一種針對(duì)基于Java語言編寫的Java應(yīng)用程序可信執(zhí)行環(huán)境的構(gòu)建方法。
背景技術(shù):
隨著計(jì)算機(jī)和互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,人類已經(jīng)進(jìn)入了“信息時(shí)代”。信息系統(tǒng)越來越廣泛的應(yīng)用于政治、經(jīng)濟(jì)、教育和軍事領(lǐng)域中。然而,系統(tǒng)缺陷、策略漏洞、惡意攻擊等問題一直嚴(yán)重威脅著信息系統(tǒng)的安全性。如何有效抵御多種安全威脅,提升信息系統(tǒng)可靠性一直是信息安全領(lǐng)域廣泛關(guān)注的熱點(diǎn)問題。
Java技術(shù)利用Java虛擬機(jī)(Java Virtual Machine,JVM)實(shí)現(xiàn)了平臺(tái)無關(guān)、前端設(shè)計(jì)語言無關(guān)程序設(shè)計(jì)。這一特性能夠有效地為遺留系統(tǒng)的改造接入、異構(gòu)系統(tǒng)的互連互通提供支持,使得Java技術(shù)廣泛地應(yīng)用于各種信息系統(tǒng)構(gòu)建。IBM、Oracle等知名企業(yè)均廣泛采用Java技術(shù)作為其企業(yè)級(jí)業(yè)務(wù)系統(tǒng)構(gòu)建的核心技術(shù)。Google在其云計(jì)算服務(wù)中部署定制的JVM,為各種采用Python、Java等語言實(shí)現(xiàn)的應(yīng)用提供統(tǒng)一的執(zhí)行環(huán)境。知名手機(jī)操作系統(tǒng)Android的核心部分也是基于JVM技術(shù)規(guī)范實(shí)現(xiàn)的Dalvik虛擬機(jī),其應(yīng)用開發(fā)也是采用Java語言。目前,越來越多的軟件系統(tǒng)開始直接面向JVM開發(fā),JVM和基于JVM技術(shù)規(guī)范實(shí)現(xiàn)的語言級(jí)虛擬機(jī)已經(jīng)成為各種應(yīng)用運(yùn)行的基礎(chǔ)性平臺(tái)。隨著越來越多的Java應(yīng)用服務(wù)的部署,Java應(yīng)用程序在軟件生命周期中經(jīng)常遭受到字節(jié)碼篡改、內(nèi)存篡改等完整性破壞的威脅。因此,從JVM層次提供有效的信任與安全保障機(jī)制具有非常重要的意義。
硬件協(xié)處理器技術(shù),長期以來一直被廣泛地應(yīng)用于科學(xué)計(jì)算領(lǐng)域,主要是為了解決主處理器計(jì)算能力不足等問題。最典型的協(xié)處理器包括早期的浮點(diǎn)運(yùn)算協(xié)處理器,用于數(shù)字信號(hào)處理的DSP,以及近年來被大量應(yīng)用于超級(jí)計(jì)算機(jī)的GPU和最新的英特爾MIC處理器等。這些硬件協(xié)處理器通常針對(duì)特定的應(yīng)用進(jìn)行優(yōu)化,利用硬件加速特定的運(yùn)算,使其更加適應(yīng)某些具體的應(yīng)用領(lǐng)域。近年來隨著信息系統(tǒng)對(duì)安全性和可用性要求的不斷提升,利用協(xié)處理器進(jìn)行加密解密運(yùn)算提高系統(tǒng)可用性的需求也越來越強(qiáng),可信計(jì)算組織TCG提出的可信平臺(tái)模塊TPM(Trusted Platform Module,TPM)就是一種安全芯片。協(xié)處理器的另外一個(gè)優(yōu)勢(shì)在于提供良好的隔離性,在協(xié)處理器中運(yùn)行的應(yīng)用程序相對(duì)獨(dú)立,不受主處理機(jī)中的上下文對(duì)于構(gòu)建信息系統(tǒng)的Java應(yīng)用程序而言,由于共享系統(tǒng)運(yùn)行環(huán)境,應(yīng)用程序之間的隔離性也是嚴(yán)重影響系統(tǒng)安全的因素,雖然現(xiàn)有的虛擬化技術(shù),包括JVM,都提供了一定程度上的應(yīng)用隔離能力,但是還是達(dá)不到硬件隔離的強(qiáng)度,而針對(duì)Java應(yīng)用及JVM的攻擊也越來越多,現(xiàn)有技術(shù)難以為Java應(yīng)用提供一個(gè)安全的基礎(chǔ)。
協(xié)處理器是為了解決中央處理器無法執(zhí)行或執(zhí)行效率低下的處理工作而開發(fā)的處理器。典型的協(xié)處理器包括圖形/音頻處理芯片、外設(shè)接口控制器以及代數(shù)運(yùn)算加速芯片等。在信息安全領(lǐng)域,除了各類密碼運(yùn)算加速協(xié)處理器外。TPM也可以看成一種協(xié)處理器安全芯片,TPM主要功能是提供關(guān)鍵數(shù)據(jù)的安全存儲(chǔ)、采用哈希算法對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行度量驗(yàn)證??尚庞?jì)算組織依托于TPM提出了可信計(jì)算平臺(tái)的基本思想:以TPM為信任根,建立一條信任鏈,從信任根到硬件平臺(tái)、到操作系統(tǒng)、再到應(yīng)用程序,一級(jí)度量認(rèn)證一級(jí),一級(jí)信任一級(jí),最終把這種信任擴(kuò)展到整個(gè)計(jì)算機(jī)系統(tǒng),從而確保整個(gè)系統(tǒng)的可信。在可信平臺(tái)中,信任根包括:可信度量根(Root of Trust for Measurement,RTM)、可信存儲(chǔ)根(Root of Trust for Storage,RTS)和可信報(bào)告根(Root of Trust for Report,RTR)??尚糯鎯?chǔ)根則由平臺(tái)配置寄存器(Platform configuration Register,PCR)和存儲(chǔ)根密鑰(Storage Root Key,SRK)組成。
在Java技術(shù)出現(xiàn)和發(fā)展的早期,由于Java程序執(zhí)行的效率較低,出現(xiàn)了以PicoJava、MicroJava和JOP為代表的一系列Java協(xié)處理器,這些協(xié)處理器的主要目標(biāo)定位于提升Java程序的執(zhí)行效率和性能。隨著Java虛擬機(jī)技術(shù)的進(jìn)步以及Java即時(shí)編譯執(zhí)行技術(shù)的成熟,Java程序的執(zhí)行效率得到了大幅提升,上述Java協(xié)處理器也逐漸退出市場(chǎng)。但是,從可信計(jì)算平臺(tái)技術(shù)的發(fā)展來看,利用協(xié)處理器提升計(jì)算機(jī)系統(tǒng)的安全性具有一定的可行性和應(yīng)用前景,目前也尚未存在此類產(chǎn)品。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明目的在于提供一種Java程序可信執(zhí)行環(huán)境的構(gòu)建方法,以解決Java應(yīng)用程序在發(fā)布、加載以及運(yùn)行過程中可能面臨的Java字節(jié)碼篡改、內(nèi)存篡改等完整性破壞的威脅,使得計(jì)算機(jī)系統(tǒng)的Java程序安全性不夠的技術(shù)問題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種Java程序可信執(zhí)行環(huán)境的構(gòu)建方法,其特征在于,包括步驟:
A、構(gòu)建協(xié)處理器板卡,協(xié)處理器板卡設(shè)置在主板上:
所述協(xié)處理器板卡包括協(xié)處理器芯片、均與協(xié)處理器芯片連接的內(nèi)存芯片和閃存芯片;
主板上插有主處理器、TPM芯片,所述主處理器、協(xié)處理器板卡、TPM芯片相互連接;
B、配置主處理器上部署的Java應(yīng)用安全性需求等級(jí)和協(xié)處理器上的Java應(yīng)用度量經(jīng)驗(yàn)表:
將每個(gè)Java應(yīng)用的安全性需求等級(jí)填到Java應(yīng)用安全性需求等級(jí)配置表中:
將Java應(yīng)用名稱和散列值寫入?yún)f(xié)處理器板卡閃存芯片中的Java應(yīng)用度量經(jīng)驗(yàn)表;
C、當(dāng)判斷Java應(yīng)用有網(wǎng)絡(luò)通信需求,且未在主處理器中運(yùn)行過時(shí),TPM芯片獲取該Java應(yīng)用的度量值;
若度量值與協(xié)處理器讀取的Java應(yīng)用度量經(jīng)驗(yàn)表中存儲(chǔ)的該Java應(yīng)用的Java應(yīng)用字節(jié)碼SHA1散列值相等,則將Java應(yīng)用加載到協(xié)處理器運(yùn)行的刪減版Linux操作系統(tǒng)中執(zhí)行。
優(yōu)選的,步驟C中,當(dāng)判斷Java應(yīng)用無網(wǎng)絡(luò)通信需求,則主處理器直接執(zhí)行Java應(yīng)用。
優(yōu)選的,步驟C中,當(dāng)判斷Java應(yīng)用有網(wǎng)絡(luò)通信需求,且在主處理器中運(yùn)行過時(shí),則主處理器與協(xié)處理器同步Java應(yīng)用運(yùn)行數(shù)據(jù),主處理器通過協(xié)處理器驅(qū)動(dòng)程序?qū)⑦\(yùn)行時(shí)數(shù)據(jù)傳輸給協(xié)處理器板卡上的內(nèi)存芯片,主處理器終止該Java應(yīng)用運(yùn)行并轉(zhuǎn)發(fā)請(qǐng)求到協(xié)處理器,協(xié)處理器中的主控程序讀取Java應(yīng)用字節(jié)碼,并將Java應(yīng)用字節(jié)碼提交給TPM芯片,TPM芯片得到Java應(yīng)用的度量值;
若度量值與協(xié)處理器讀取的Java應(yīng)用度量經(jīng)驗(yàn)表中存儲(chǔ)的該Java應(yīng)用的Java應(yīng)用字節(jié)碼SHA1散列值相等,則將Java應(yīng)用加載到協(xié)處理器運(yùn)行的刪減版Linux操作系統(tǒng)中執(zhí)行。
優(yōu)選的,步驟C中,當(dāng)度量值與協(xié)處理器讀取的Java應(yīng)用度量經(jīng)驗(yàn)表中存儲(chǔ)的該Java應(yīng)用的Java應(yīng)用字節(jié)碼SHA1散列值不相等,則向主處理器運(yùn)行的Linux操作系統(tǒng)報(bào)告錯(cuò)誤。
優(yōu)選的,步驟B中,所述Java應(yīng)用度量經(jīng)驗(yàn)表有N項(xiàng),每項(xiàng)有2個(gè)域,分別為Java應(yīng)用名稱和Java應(yīng)用字節(jié)碼SHA1散列值;
所述Java應(yīng)用安全性需求等級(jí)配置表有N項(xiàng),每項(xiàng)有2個(gè)域,分別為Java應(yīng)用名稱和安全性需求等級(jí),N是Java應(yīng)用的個(gè)數(shù)。
優(yōu)選的,步驟A中,主處理器與TPM芯片相連,主處理器將協(xié)處理器驅(qū)動(dòng)程序二進(jìn)制數(shù)據(jù)送給TPM芯片,TPM芯片將協(xié)處理器驅(qū)動(dòng)程序二進(jìn)制數(shù)據(jù)進(jìn)行計(jì)算得到度量值送給主處理器;協(xié)處理器板卡與TPM芯片相連,協(xié)處理器板卡將Java應(yīng)用字節(jié)碼送給TPM芯片進(jìn)行度量,TPM芯片將度量值送回給協(xié)處理器板卡;協(xié)處理器板卡與主處理器相連,主處理器向協(xié)處理器板卡發(fā)送Java應(yīng)用運(yùn)行的映像和數(shù)據(jù),協(xié)處理器板卡向主處理器報(bào)告Java應(yīng)用運(yùn)行結(jié)果。
優(yōu)選的,步驟C具體還包括步驟:
D1、主處理器運(yùn)行的Linux操作系統(tǒng)接收J(rèn)ava應(yīng)用請(qǐng)求;
D2、主處理器運(yùn)行的Linux操作系統(tǒng)查詢Java應(yīng)用安全性需求等級(jí)配置表,若用戶請(qǐng)求為低安全性需求應(yīng)用則主處理器執(zhí)行Java應(yīng)用,執(zhí)行完后轉(zhuǎn)4.11;若為高安全性需求應(yīng)用則轉(zhuǎn)D3;
D3、主控程序?qū)闹魈幚砥鹘邮盏腏ava應(yīng)用進(jìn)行判定,若是在主處理器中運(yùn)行過的Java應(yīng)用,則執(zhí)行D4,若是未在主處理器中運(yùn)行過的Java應(yīng)用,則執(zhí)行D5;
D4、主處理器與協(xié)處理器同步Java應(yīng)用運(yùn)行數(shù)據(jù),主處理器通過協(xié)處理器驅(qū)動(dòng)程序?qū)⑦\(yùn)行時(shí)數(shù)據(jù)傳輸給協(xié)處理器板卡上的內(nèi)存芯片;主處理器終止該Java應(yīng)用運(yùn)行并轉(zhuǎn)發(fā)請(qǐng)求到協(xié)處理器,由協(xié)處理器中的Java應(yīng)用繼續(xù)為客戶端提供服務(wù);
D5、協(xié)處理器中的主控程序讀取Java應(yīng)用字節(jié)碼,并將Java應(yīng)用字節(jié)碼提交給TPM芯片,TPM芯片得到Java應(yīng)用的度量值;用得到的Java應(yīng)用的度量值與協(xié)處理器讀取的Java應(yīng)用度量經(jīng)驗(yàn)表中存儲(chǔ)的該Java應(yīng)用的Java應(yīng)用字節(jié)碼SHA1散列值進(jìn)行比對(duì)驗(yàn)證,如果不相等,則向主處理器報(bào)告錯(cuò)誤,轉(zhuǎn)D1;若相等,將Java應(yīng)用加載到協(xié)處理器運(yùn)行的刪減版Linux操作系統(tǒng)中執(zhí)行。
優(yōu)選的,所述內(nèi)存芯片要求具有1GB以上運(yùn)行內(nèi)存,閃存芯片要求具有4GB以上固化閃存。
本申請(qǐng)還提供一種Java程序可信執(zhí)行環(huán)境的構(gòu)建系統(tǒng),包括相互連接的主處理器、協(xié)處理器板卡和TPM芯片,所述協(xié)處理器板卡包括協(xié)處理器芯片、均與協(xié)處理器芯片連接的內(nèi)存芯片和閃存芯片;
主處理器上存儲(chǔ)有Java應(yīng)用安全性需求等級(jí)配置表,Java應(yīng)用安全性需求包含Java應(yīng)用名稱和安全性需求等級(jí),協(xié)處理器上存儲(chǔ)有Java應(yīng)用度量經(jīng)驗(yàn)表,Java應(yīng)用度量經(jīng)驗(yàn)表包含Java應(yīng)用名稱和散列值。
優(yōu)選的,所述閃存芯片中存有經(jīng)過刪減的僅保留Linux內(nèi)核的刪減版Linux操作系統(tǒng)、主控程序、Java應(yīng)用度量經(jīng)驗(yàn)表和Java固化應(yīng)用程序;刪減版Linux操作系統(tǒng)指刪減了Linux操作系統(tǒng)中關(guān)于用戶應(yīng)用軟件、圖形用戶接口的功能模塊,只剩下Linux內(nèi)核的Linux操作系統(tǒng)。
本發(fā)明具有以下有益效果:
本發(fā)明在現(xiàn)有可信計(jì)算技術(shù)的基礎(chǔ)上,利用特定的協(xié)處理器及協(xié)處理器上運(yùn)行的軟、固件系統(tǒng),實(shí)現(xiàn)有高安全性需求的Java應(yīng)用由主處理器向協(xié)處理器的平滑遷移,并在協(xié)處理器中實(shí)現(xiàn)內(nèi)存運(yùn)行時(shí)度量與認(rèn)證,Java應(yīng)用字節(jié)碼度量與驗(yàn)證功能,為Java應(yīng)用提供安全的運(yùn)行環(huán)境和信任保障。
本發(fā)明在TPM芯片和協(xié)處理器板卡的支持下構(gòu)建一個(gè)Java可信執(zhí)行環(huán)境,使高安全性Java應(yīng)用在對(duì)用戶透明的協(xié)處理器中隔離執(zhí)行。通過TPM芯片對(duì)協(xié)處理器驅(qū)動(dòng)程序和Java應(yīng)用程序進(jìn)行度量與驗(yàn)證,保護(hù)了協(xié)處理器驅(qū)動(dòng)程序和Java應(yīng)用程序的完整性,使得執(zhí)行Java應(yīng)用的安全性得到大大加強(qiáng)。本發(fā)明能夠較好的滿足Java應(yīng)用的安全與可信需求。
除了上面所描述的目的、特征和優(yōu)點(diǎn)之外,本發(fā)明還有其它的目的、特征和優(yōu)點(diǎn)。下面將參照?qǐng)D,對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。
附圖說明
構(gòu)成本申請(qǐng)的一部分的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1是本發(fā)明優(yōu)選實(shí)施例的總體流程圖;
圖2是本發(fā)明優(yōu)選實(shí)施例的第一步構(gòu)建Java可信執(zhí)行環(huán)境結(jié)構(gòu)圖;
圖3是本發(fā)明優(yōu)選實(shí)施例的分步流程圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說明,但是本發(fā)明可以根據(jù)權(quán)利要求限定和覆蓋的多種不同方式實(shí)施。
圖1是本發(fā)明總體流程圖;本發(fā)明包括以下步驟:
第一步,構(gòu)建Java程序可信執(zhí)行環(huán)境,Java程序可信執(zhí)行環(huán)境由協(xié)處理器板卡、主處理器、TPM芯片組成,協(xié)處理器板卡、主處理器、TPM芯片均插在主板上。
內(nèi)存芯片要求具有1GB以上運(yùn)行內(nèi)存,閃存芯片要求具有4GB以上固化閃存。
第二步,配置主處理器上部署的Java應(yīng)用安全性需求等級(jí)。
第三步,配置協(xié)處理器上Java應(yīng)用度量經(jīng)驗(yàn)表。
第四步,采用Java應(yīng)用可信執(zhí)行環(huán)境運(yùn)行Java程序。
具體步驟為:
第一步,構(gòu)建Java程序可信執(zhí)行環(huán)境,Java程序可信執(zhí)行環(huán)境由協(xié)處理器板卡、主處理器、TPM芯片組成,方法是:
1.1利用協(xié)處理器芯片、內(nèi)存芯片和閃存芯片構(gòu)建協(xié)處理器板卡,方法為:協(xié)處理器芯片采用x86或arm指令集的協(xié)處理器芯片,閃存芯片中存有經(jīng)過刪減的僅保留Linux內(nèi)核的刪減版Linux操作系統(tǒng)、主控程序、Java應(yīng)用度量經(jīng)驗(yàn)表和Java固化應(yīng)用程序;Java應(yīng)用度量經(jīng)驗(yàn)表有N項(xiàng),每項(xiàng)有2個(gè)域,分別為Java應(yīng)用名稱和Java應(yīng)用字節(jié)碼SHA1散列值;Java應(yīng)用字節(jié)碼SHA1散列值是用Java應(yīng)用的二進(jìn)制字節(jié)碼,通過哈希函數(shù)SHA1計(jì)算得到的值,作為Java應(yīng)用度量值;協(xié)處理器芯片讀取閃存芯片中的Java固化應(yīng)用程序送入內(nèi)存芯片執(zhí)行;協(xié)處理器板卡通過PCIE接口插在主板上,協(xié)處理器通過PCIE接口與主處理器及TPM芯片通信;
刪減版Linux操作系統(tǒng)指刪減了Linux操作系統(tǒng)中關(guān)于用戶應(yīng)用軟件、圖形用戶接口的功能模塊,只剩下Linux內(nèi)核。
1.2主處理器也插在主板上,主處理器上安裝有Linux操作系統(tǒng)、協(xié)處理器驅(qū)動(dòng)程序和Java應(yīng)用安全性需求等級(jí)配置表;協(xié)處理器驅(qū)動(dòng)程序是協(xié)處理器板卡上的協(xié)處理器芯片的驅(qū)動(dòng)程序;Java應(yīng)用安全性需求等級(jí)配置表是說明每個(gè)Java應(yīng)用的安全性需求等級(jí)的表格,有N項(xiàng),每項(xiàng)有2個(gè)域,分別為Java應(yīng)用名稱和安全性需求等級(jí),N是Java應(yīng)用的個(gè)數(shù);
1.3 TPM芯片也插在主板上,主處理器、協(xié)處理器板卡、TPM芯片相互連接;主處理器與TPM芯片相連,主處理器將協(xié)處理器驅(qū)動(dòng)程序二進(jìn)制數(shù)據(jù)送給TPM芯片,TPM芯片將協(xié)處理器驅(qū)動(dòng)程序二進(jìn)制數(shù)據(jù)進(jìn)行計(jì)算得到度量值送給主處理器;協(xié)處理器板卡與TPM芯片相連,協(xié)處理器板卡將Java應(yīng)用字節(jié)碼送給TPM芯片進(jìn)行度量,TPM芯片將度量值送回給協(xié)處理器板卡;協(xié)處理器板卡與主處理器相連,主處理器向協(xié)處理器板卡發(fā)送Java應(yīng)用,協(xié)處理器板卡向主處理器報(bào)告Java應(yīng)用運(yùn)行結(jié)果;
第二步,配置主處理器上部署的Java應(yīng)用安全性需求等級(jí),方法為:利用安裝在主處理器中的Linux實(shí)用工具編輯器配置已部署的Java應(yīng)用安全性需求等級(jí),將所有Java應(yīng)用根據(jù)是否有網(wǎng)絡(luò)通信來劃分安全性等級(jí)需求,有網(wǎng)絡(luò)通信則定義為高安全性需求,無網(wǎng)絡(luò)通信的本地Java應(yīng)用定義為低安全性需求,將每個(gè)Java應(yīng)用的安全性需求等級(jí)填到Java應(yīng)用安全性需求等級(jí)配置表中;網(wǎng)絡(luò)通信指通過數(shù)據(jù)網(wǎng)、無線網(wǎng)等手段與互聯(lián)網(wǎng)連接進(jìn)行數(shù)據(jù)交換;
第三步,配置協(xié)處理器上Java應(yīng)用度量經(jīng)驗(yàn)表,方法為:協(xié)處理器驅(qū)動(dòng)程序?qū)⑺蠮ava應(yīng)用的字節(jié)碼傳輸?shù)絽f(xié)處理器板卡的閃存芯片中,協(xié)處理器將Java應(yīng)用的字節(jié)碼作為哈希函數(shù)SHA1的輸入?yún)?shù),得到SHA1函數(shù)值,即Java應(yīng)用字節(jié)碼SHA1散列值,將Java應(yīng)用名稱和SHA1散列值寫入?yún)f(xié)處理器板卡閃存芯片中的Java應(yīng)用度量經(jīng)驗(yàn)表;
第四步,采用Java應(yīng)用可信執(zhí)行環(huán)境運(yùn)行Java程序,過程如下:
4.1 TPM芯片對(duì)協(xié)處理器驅(qū)動(dòng)程序進(jìn)行度量,如協(xié)處理器驅(qū)動(dòng)程序完整則啟動(dòng)協(xié)處理器,轉(zhuǎn)4.2步,若協(xié)處理器驅(qū)動(dòng)程序不完整則協(xié)處理器啟動(dòng)失敗,向主處理器中Linux操作系統(tǒng)報(bào)告錯(cuò)誤,轉(zhuǎn)4.12;
4.2協(xié)處理器從閃存芯片中加載刪減版Linux操作系統(tǒng);
4.3協(xié)處理器從閃存芯片中加載主控程序;
4.4主處理器運(yùn)行的Linux操作系統(tǒng)接收J(rèn)ava應(yīng)用請(qǐng)求;
4.5主處理器運(yùn)行的Linux操作系統(tǒng)查詢Java應(yīng)用安全性需求等級(jí)配置表,若用戶請(qǐng)求為低安全性需求應(yīng)用則主處理器執(zhí)行Java應(yīng)用,執(zhí)行完后轉(zhuǎn)4.11;若為高安全性需求應(yīng)用則轉(zhuǎn)4.6;
4.6遷移Java應(yīng)用:主控程序?qū)闹魈幚砥鹘邮盏腏ava應(yīng)用進(jìn)行判定,若是已經(jīng)在主處理器中運(yùn)行過的Java應(yīng)用,則執(zhí)行4.7,若是未在主處理器中運(yùn)行過的Java應(yīng)用,則執(zhí)行4.8;
4.7對(duì)于已在主處理器中運(yùn)行過的Java應(yīng)用,執(zhí)行以下步驟:
4.7.1、將主處理器中已運(yùn)行的Java應(yīng)用的映像傳輸?shù)絽f(xié)處理器;
4.7.2主處理器與協(xié)處理器同步Java應(yīng)用運(yùn)行數(shù)據(jù),主處理器通過協(xié)處理器驅(qū)動(dòng)程序?qū)⑦\(yùn)行時(shí)數(shù)據(jù)傳輸給協(xié)處理器板卡上的內(nèi)存芯片;
4.7.3、主處理器終止該Java應(yīng)用運(yùn)行并轉(zhuǎn)發(fā)請(qǐng)求到協(xié)處理器,轉(zhuǎn)第4.9步;
4.8對(duì)未在主處理器中運(yùn)行過的Java應(yīng)用,執(zhí)行以下步驟:
4.8.1協(xié)處理器中的主控程序讀取Java應(yīng)用字節(jié)碼,并將Java應(yīng)用字節(jié)碼提交給TPM芯片,TPM芯片對(duì)Java應(yīng)用字節(jié)碼進(jìn)行度量,得到Java應(yīng)用的度量值;
4.8.2用4.8.1中得到的Java應(yīng)用的度量值與協(xié)處理器讀取的Java應(yīng)用度量經(jīng)驗(yàn)表中存儲(chǔ)的該Java應(yīng)用的Java應(yīng)用字節(jié)碼SHA1散列值進(jìn)行比對(duì)驗(yàn)證,如果不相等,則向主處理器運(yùn)行的Linux操作系統(tǒng)報(bào)告錯(cuò)誤,轉(zhuǎn)第4.4步,等待下一個(gè)Java應(yīng)用請(qǐng)求;如果相等,則執(zhí)行4.9步;
4.9將Java應(yīng)用加載到協(xié)處理器運(yùn)行的刪減版Linux操作系統(tǒng)中執(zhí)行;
4.10協(xié)處理器將執(zhí)行結(jié)果返回給主處理器;
4.11主處理器將運(yùn)行結(jié)果返回給主處理器Linux操作系統(tǒng),轉(zhuǎn)第4.4步,等待下一個(gè)Java應(yīng)用請(qǐng)求,Java程序可信執(zhí)行環(huán)境一直處于等待、接收、處理Java應(yīng)用的循環(huán)過程中。
本發(fā)明在TPM芯片和協(xié)處理器板卡的支持下構(gòu)建了Java可信執(zhí)行環(huán)境,使高安全性Java應(yīng)用在對(duì)用戶透明的協(xié)處理器中隔離執(zhí)行。
由此,本申請(qǐng)還提供一種Java程序可信執(zhí)行環(huán)境的構(gòu)建系統(tǒng),包括相互連接的主處理器、協(xié)處理器板卡和TPM芯片,所述協(xié)處理器板卡包括協(xié)處理器芯片、均與協(xié)處理器芯片連接的內(nèi)存芯片和閃存芯片;主處理器上存儲(chǔ)有Java應(yīng)用安全性需求等級(jí)配置表,Java應(yīng)用安全性需求包含Java應(yīng)用名稱和安全性需求等級(jí),協(xié)處理器上存儲(chǔ)有Java應(yīng)用度量經(jīng)驗(yàn)表,Java應(yīng)用度量經(jīng)驗(yàn)表包含Java應(yīng)用名稱和散列值。
所述閃存芯片中存有經(jīng)過刪減的僅保留Linux內(nèi)核的刪減版Linux操作系統(tǒng)、主控程序、Java應(yīng)用度量經(jīng)驗(yàn)表和Java固化應(yīng)用程序;刪減版Linux操作系統(tǒng)指刪減了Linux操作系統(tǒng)中關(guān)于用戶應(yīng)用軟件、圖形用戶接口的功能模塊,只剩下Linux內(nèi)核的Linux操作系統(tǒng)。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。