專利名稱:用于管理可重編程板載系統(tǒng)中下載的可執(zhí)行代碼的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及管理設(shè)計(jì)用于具體下載到板載微處理器計(jì)算機(jī)系統(tǒng)中的可執(zhí)行代碼的方法。
一般來說,本發(fā)明適用于通過下載由板載系統(tǒng)的微處理器可執(zhí)行的一系列指令的形式的可執(zhí)行代碼組成的程序可重編程的任何板載系統(tǒng)。在可執(zhí)行代碼由中間對(duì)象代碼構(gòu)成的上下文中,本發(fā)明得到極有利的應(yīng)用,中間對(duì)象代碼可由板載系統(tǒng)的微處理器借助于通常稱作虛擬機(jī)的中間代碼解釋器來執(zhí)行,解釋器配備了執(zhí)行棧和由這些指令操縱的操作數(shù)的寄存器,并且使得能夠解釋這種中間代碼。
更具體來說,以下描述涉及本發(fā)明在JavaCard類型的可重編程微處理器卡的上下文中的應(yīng)用。
JavaCard類型的微處理器卡實(shí)際上通過下載英語術(shù)語中稱為“applet(小應(yīng)用程序)”的小程序的操作可重編程。
因?yàn)椴煌陌遢d計(jì)算機(jī)系統(tǒng)之間的可移植性,小應(yīng)用程序采取標(biāo)準(zhǔn)虛擬機(jī)所用的代碼的形式。以二進(jìn)制形式編寫的這種代碼用作源代碼與可執(zhí)行二進(jìn)制代碼之間的中介,并且例如通過采用Java編譯器來獲得。因此,按英語術(shù)語為“bytecode(字節(jié)碼)”的這種中間代碼不是卡的微處理器直接可執(zhí)行的,而是必須通過稱作虛擬機(jī)的二進(jìn)制代碼解釋器以軟件方式來解釋。讓其中執(zhí)行中間語言編寫的小應(yīng)用程序的卡配備組成構(gòu)成虛擬機(jī)的程序的最小的特定數(shù)據(jù)處理資源是足夠的。在JavaCard類型的卡的上述實(shí)例中,所使用的虛擬機(jī)是Java虛擬機(jī)的組件。
把小應(yīng)用程序下載到配備了中間代碼解釋器的板載計(jì)算機(jī)系統(tǒng)上的操作引起一定數(shù)量的安全性問題。因此,無意間不良編寫的小應(yīng)用程序可能不正確地修改系統(tǒng)中已經(jīng)存在的數(shù)據(jù),阻礙主程序正確運(yùn)行,或者通過使先前下載的其它小應(yīng)用程序不可用或有害來對(duì)其進(jìn)行修改。
另外,使用惡意編寫的小應(yīng)用程序,還可能在卡中執(zhí)行復(fù)制存儲(chǔ)區(qū)的操作和/或危害芯片卡的正確工作。然后則可能有權(quán)訪問系統(tǒng)中存儲(chǔ)的保密或者未授權(quán)數(shù)據(jù),例如在銀行卡的情況下的訪問代碼,或者攻擊卡中存在的一個(gè)或多個(gè)應(yīng)用程序的完整性。最后,如果卡連接到外部,則所導(dǎo)致的不正常工作可能傳播到卡外。
因此,已經(jīng)提出解決方案來補(bǔ)救把中間代碼(字節(jié)碼)下載到配備了中間代碼解釋器的板載計(jì)算機(jī)系統(tǒng)、如JavaCard的上述實(shí)例上的操作中涉及的安全性問題。
一種解決方案包括在小應(yīng)用程序的運(yùn)行過程中執(zhí)行動(dòng)態(tài)訪問和定型檢查。虛擬機(jī)則在小應(yīng)用程序的運(yùn)行過程中執(zhí)行一定數(shù)量的檢查,例如對(duì)存儲(chǔ)器的存取的控制在存儲(chǔ)區(qū)中每次讀取或?qū)懭霑r(shí),虛擬機(jī)檢查小應(yīng)用程序?qū)ο鄳?yīng)數(shù)據(jù)的存取權(quán);數(shù)據(jù)類型的動(dòng)態(tài)檢驗(yàn)在來自小應(yīng)用程序的各指令上,虛擬機(jī)檢驗(yàn)是否滿足對(duì)數(shù)據(jù)類型的約束;棧溢出以及對(duì)虛擬機(jī)的執(zhí)行棧的非法存取的檢測(cè)。
但是,這個(gè)解決方案確實(shí)具有由所有動(dòng)態(tài)檢查引起的運(yùn)行中極明顯的速度降低的缺點(diǎn)。由于與所操作的數(shù)據(jù)關(guān)聯(lián)所需的類型的附加信息,這類檢查還增加了系統(tǒng)的隨機(jī)存取和永久存儲(chǔ)器方面的要求。
另一種解決方案則包括指定中間代碼(字節(jié)碼),以便能夠檢查程序是靜態(tài)下(也就是說在下載操作中以及在其運(yùn)行之前)無害的。這通過稱作檢驗(yàn)器的安全裝置來執(zhí)行。由于安全性原因,JavaCard卡必須具有板載檢驗(yàn)器。
雖然它允許與動(dòng)態(tài)檢驗(yàn)過程相比更為迅速的中間代碼的執(zhí)行,但這種靜態(tài)檢驗(yàn)過程確實(shí)具有在進(jìn)行這個(gè)過程所需的代碼大小方面以及在包含檢驗(yàn)的中間結(jié)果所需的隨機(jī)存取存儲(chǔ)器大小方面以及在計(jì)算時(shí)間方面昂貴的缺點(diǎn)。
從后一種解決方案中所述的原理開始,專利申請(qǐng)F(tuán)R 2797963(D1)提供一種用于在其下載過程中管理與這個(gè)中間代碼的靜態(tài)檢驗(yàn)的過程關(guān)聯(lián)的下載中間代碼的協(xié)議,它允許由板載計(jì)算機(jī)系統(tǒng)安全執(zhí)行靜態(tài)檢驗(yàn)。這樣,有利的是,獲得檢驗(yàn)器,它在所需代碼大小方面更簡(jiǎn)單且更低廉。
D1的中心思想是在中間代碼被下載之前對(duì)其進(jìn)行卡外轉(zhuǎn)換,以便簡(jiǎn)化它在下載及存儲(chǔ)于卡中時(shí)的檢驗(yàn)。因此,卡外執(zhí)行中間代碼的變換的階段,因而下載到卡中的是修改后標(biāo)準(zhǔn)化中間代碼,而不是通過使用Java編譯器得到的原始中間代碼。這樣,卡外變換的中間代碼將更易于根據(jù)預(yù)定檢驗(yàn)過程以靜態(tài)模式來檢驗(yàn),因?yàn)樗呀?jīng)變換為事先滿足作為D1的對(duì)象的預(yù)定義檢驗(yàn)過程的檢驗(yàn)標(biāo)準(zhǔn)的標(biāo)準(zhǔn)化中間代碼。因此,這個(gè)卡外執(zhí)行的事先變換階段有利地加速了檢驗(yàn)過程。關(guān)于這種解決方案的詳細(xì)描述,參考D1的原文。
但是,D1中提出的方法的一個(gè)缺點(diǎn)在于,它不能使它所基于的中間代碼的檢驗(yàn)過程與這個(gè)中間代碼的簽名系統(tǒng)共存。因此,D1不可能具有首先以簡(jiǎn)單迅速方式可檢驗(yàn)、然后被簽署的中間代碼。這是因?yàn)镈1所提出的方法為如上所述在下載之前卡外變換中間代碼作準(zhǔn)備,而因此在對(duì)中間代碼實(shí)行卡外變換之前實(shí)現(xiàn)的代碼的開發(fā)人員(或被授權(quán)簽署該代碼的其他任何人)的簽名因這種修改的事實(shí)而變?yōu)闊o效。因此,簽名則不再是卡可檢驗(yàn)的。
但是,讓卡能夠檢驗(yàn)下載中間代碼的簽名的可能性在安全性方面也是極為重要的。這是因?yàn)橹虚g代碼被運(yùn)行之前對(duì)其的事先檢驗(yàn)不能夠確保中間代碼不包含任何“特洛伊木馬”。這是因?yàn)橹挥腥斯し治霾庞锌赡芗词乖趯?duì)于檢驗(yàn)是正確時(shí)檢查中間代碼不是侵略性的,這種檢查無法由卡來執(zhí)行。更準(zhǔn)確地說,卡實(shí)際上只能檢驗(yàn)簽名的有效性,證實(shí)對(duì)于中間代碼的這種人工檢查被正確執(zhí)行。因此,重要的是能夠?qū)崿F(xiàn)具有有效簽名的中間代碼的下載。
基于這些不同調(diào)查結(jié)果的本發(fā)明的目標(biāo)是減少與作為D1的對(duì)象的檢驗(yàn)方法的使用相關(guān)的上述缺陷。
考慮這個(gè)目的,本發(fā)明更具體地針對(duì)在中間代碼下載到配備了中間代碼解釋器的可重編程板載計(jì)算機(jī)系統(tǒng)的過程中使簽名系統(tǒng)與D1提出的檢驗(yàn)系統(tǒng)共存,但沒有免除根據(jù)D1的檢驗(yàn)系統(tǒng)取得的優(yōu)點(diǎn),尤其是在簡(jiǎn)單性和速度方面。
更一般來說,本發(fā)明的一個(gè)目的是使用管理要下載的、無論是否為中間代碼的可執(zhí)行代碼的方法,它允許由板載計(jì)算機(jī)系統(tǒng)、如微處理器卡對(duì)這個(gè)代碼的簽名進(jìn)行檢驗(yàn),同時(shí)保持為預(yù)定的特定用途對(duì)可執(zhí)行代碼進(jìn)行變換的可能性。例如,原始可執(zhí)行代碼的變換可能希望針對(duì)在借助于虛擬機(jī)來執(zhí)行中間代碼的情況下、在根據(jù)D1中闡述的檢驗(yàn)過程的原理下載時(shí)改進(jìn)其檢驗(yàn),或者改進(jìn)它由卡的微處理器執(zhí)行的速度,而這種變換不會(huì)損害簽名的有效性,因而不會(huì)損害卡對(duì)它的檢驗(yàn)。
為此,本發(fā)明因而涉及管理組成要用于下載到可重編程板載計(jì)算機(jī)系統(tǒng)、如微處理器卡中的程序的原始可執(zhí)行代碼的方法,所述代碼具有加密簽名,并且在由板載系統(tǒng)的微處理器對(duì)所述簽名的有效性進(jìn)行檢驗(yàn)之后可由板載系統(tǒng)的微處理器執(zhí)行,所述方法包括由至少以下步驟組成的步驟-卡外-標(biāo)識(shí)與原始代碼對(duì)應(yīng)的、適合預(yù)定特定用途的已修改可執(zhí)行代碼;-根據(jù)原始代碼與相應(yīng)的修改代碼的數(shù)據(jù)之間的差異,計(jì)算軟件組件,它在應(yīng)用于原始代碼時(shí),使得能夠重構(gòu)已修改代碼;以及-簽署所述軟件組件;-把已簽署原始代碼和已簽署軟件組件下載到卡中;-卡上-分別檢驗(yàn)原始代碼和軟件組件的簽名;-把軟件組件應(yīng)用于原始代碼,從而重構(gòu)已修改代碼以便由微處理器運(yùn)行。
在一個(gè)變體中,原始可執(zhí)行代碼由中間代碼構(gòu)成,可由板載系統(tǒng)微處理器借助于使得能夠解釋這個(gè)中間代碼的虛擬機(jī)來執(zhí)行。
根據(jù)第一實(shí)施例,關(guān)于所述變體,虛擬機(jī)配備了執(zhí)行棧,以及卡上應(yīng)用于原始中間代碼的下載軟件組件使得能夠重構(gòu)事先滿足所述中間代碼的檢驗(yàn)標(biāo)準(zhǔn)的已修改中間代碼,根據(jù)它,所述代碼的各指令的操作數(shù)屬于這個(gè)指令操作的數(shù)據(jù)類型,以及在各目標(biāo)開關(guān)指令,虛擬機(jī)的執(zhí)行棧為空。
通過應(yīng)用軟件組件獲得的已修改中間代碼最好是在由微處理器借助于虛擬機(jī)執(zhí)行之前,根據(jù)檢驗(yàn)已修改中間代碼是否滿足檢驗(yàn)標(biāo)準(zhǔn)的過程進(jìn)行檢驗(yàn)。
根據(jù)另一個(gè)實(shí)施例,在卡上應(yīng)用于原始代碼的下載軟件組件使得能夠重構(gòu)已修改代碼,使得它的執(zhí)行比原始代碼的執(zhí)行更快。
根據(jù)另一個(gè)實(shí)施例,在卡上應(yīng)用于原始代碼的下載軟件組件使得能夠重構(gòu)已修改代碼,使得與原始代碼相比,取得大小方面的優(yōu)化。
通過下面參照以下附圖作為說明而不是限制的描述,本發(fā)明的其它特征和優(yōu)點(diǎn)將會(huì)更加清晰,附圖包括
圖1示意說明卡外執(zhí)行的方法的步驟;圖2示意說明將專用于預(yù)定的特定用途的原始中間代碼及關(guān)聯(lián)軟件組件下載到卡中的步驟,以及圖3示意說明卡上執(zhí)行的方法的步驟。
以下描述更具體地針對(duì)本發(fā)明在開放式系統(tǒng)上下文中的應(yīng)用,以及更具體地針對(duì)本發(fā)明在如圖2所示的JavaCard CP類型的可重編程微處理器卡中的應(yīng)用,其中,下載的原始代碼是微處理器借助于虛擬機(jī)執(zhí)行的中間代碼。但不能忘記以下事實(shí)根據(jù)本發(fā)明的方法也適用于已下載卡不是中間代碼、而是板載系統(tǒng)的微處理器可直接執(zhí)行的代碼的上下文中。
因此,這類可重編程系統(tǒng)增加了在系統(tǒng)投入使用之后通過下載小應(yīng)用程序的操作增強(qiáng)可執(zhí)行程序的可能性。要下載的小應(yīng)用程序采取原始可執(zhí)行代碼CI的形式,在本例中包含駐留在卡的存儲(chǔ)器中、通常為Java虛擬機(jī)的組件的虛擬機(jī)所用的中間代碼。因此,一旦產(chǎn)生中間代碼CI,則調(diào)用審計(jì)器,以便檢驗(yàn)中間代碼CI沒有包含特洛伊木馬。
在中間代碼CI實(shí)際上沒有包含這種類型的任何惡意程序的情況下,審計(jì)器簽署中間代碼CI。加密簽名SIGN可采用本領(lǐng)域的技術(shù)人員可得到的任何電子簽名機(jī)制來制作。已簽署的中間代碼CI則可用于任何JavaCard,因而具有證實(shí)其無害且在下載時(shí)能夠由卡檢驗(yàn)的簽名SIGN。電子簽名的檢驗(yàn)包括檢驗(yàn)簽名是否有效。
本發(fā)明的一個(gè)基本特征包括把原始中間代碼CI、也就是說未經(jīng)修改的CI下載到卡CP中;以及對(duì)它添加軟件組件CL,使得在它應(yīng)用于原始中間代碼時(shí)能夠計(jì)算適合于預(yù)定特定用途的已修改中間代碼CI’。在圖中,原始中間代碼CI通過連續(xù)線的代碼行圖解表示,而相應(yīng)的已修改中間代碼CI’則通過連續(xù)線和虛線的代碼行圖解表示。
根據(jù)本發(fā)明,根據(jù)原始中間代碼CI以及為預(yù)定特定用途標(biāo)識(shí)的相應(yīng)已修改中間代碼,在卡外計(jì)算要應(yīng)用于已簽署原始中間代碼CI的補(bǔ)充軟件CL。通過與對(duì)于原始中間代碼CI的相同方式,軟件組件CL經(jīng)過簽署,因而具有能夠被檢驗(yàn)的簽名SIGN’。
本發(fā)明的主要應(yīng)用是能夠在中間代碼下載到卡中的過程中使簽名系統(tǒng)與D1提出的檢驗(yàn)系統(tǒng)共存。因此,在這種應(yīng)用的上下文中,中間代碼CI’是適合于預(yù)定特定用途、包含事先滿足作為D1的對(duì)象的檢驗(yàn)過程的檢驗(yàn)標(biāo)準(zhǔn)的已修改中間代碼。因此,在本發(fā)明的主要應(yīng)用中,軟件組件經(jīng)過計(jì)算,使得一旦應(yīng)用于原始中間代碼CI,得到已修改中間代碼CI’,它根據(jù)D1的理論經(jīng)過標(biāo)準(zhǔn)化,從而事先滿足作為D1的對(duì)象的檢驗(yàn)過程的檢驗(yàn)標(biāo)準(zhǔn)。具體來說,根據(jù)D1的標(biāo)準(zhǔn)化中間代碼使得各指令的操作數(shù)屬于這個(gè)指令操作的數(shù)據(jù)的類型,以及在各目標(biāo)開關(guān)指令,虛擬機(jī)的執(zhí)行棧為空。關(guān)于更詳細(xì)的描述,讀者可有效地參考D1的原文。但是,在此詳細(xì)說明使得能夠以所定義的軟件組件結(jié)束的計(jì)算,超出了本申請(qǐng)的范圍,這些計(jì)算是本領(lǐng)域的技術(shù)人員更清楚的。
然后,原始中間代碼CI及關(guān)聯(lián)組件CL被下載到卡CP中,參見圖2。因此,軟件組件CL隨原始中間代碼CI傳播,并且一旦與原始中間代碼一起存儲(chǔ)在卡的可重寫永久存儲(chǔ)器中時(shí),用來在卡上應(yīng)用于原始中間代碼。
卡首先檢驗(yàn)中間代碼CI的簽名SIGN是否有效,以便保證中間代碼CI不包含任何特洛伊木馬,也不包含相同類型的其它任何惡意代碼。卡還檢驗(yàn)軟件組件CL的簽名SIGN’的有效性,以便保證它也沒有包含特洛伊木馬。
一旦已經(jīng)成功執(zhí)行這些先前簽名檢驗(yàn)操作,卡把軟件組件CL應(yīng)用于原始中間代碼CI,參見圖3,以便重構(gòu)適合于預(yù)定特定用途、在本發(fā)明的主要實(shí)施例中包含事先滿足作為D1的對(duì)象的檢驗(yàn)過程的檢驗(yàn)標(biāo)準(zhǔn)的已修改代碼CI’。
然后,在已修改中間代碼由微處理器借助于虛擬機(jī)執(zhí)行之前,卡可采用在作為D1的對(duì)象的程序段的靜態(tài)檢驗(yàn)過程中使用的檢驗(yàn)技術(shù)來檢驗(yàn)已修改中間代碼。因此,檢驗(yàn)過程包括檢驗(yàn)已修改代碼CI’是否滿足上述檢驗(yàn)標(biāo)準(zhǔn),即,已修改代碼的各指令的操作數(shù)屬于這個(gè)指令操作的數(shù)據(jù)的類型,以及在各目標(biāo)開關(guān)指令,虛擬機(jī)的執(zhí)行棧為空。請(qǐng)讀者參考D1的原文以獲取更多詳細(xì)情況,它們?cè)诒旧暾?qǐng)的上下文中是多余的。
然后,一旦已經(jīng)根據(jù)作為D1的對(duì)象的檢驗(yàn)器的原理進(jìn)行了已修改中間代碼的檢驗(yàn),已修改中間代碼由微處理器借助于虛擬機(jī)來執(zhí)行。
因此,根據(jù)本發(fā)明的方法使得能夠在中間代碼下載到可重編程板載計(jì)算機(jī)系統(tǒng)的過程中有利地使簽名系統(tǒng)與D1提出的檢驗(yàn)系統(tǒng)共存。因此,能夠把已簽署小應(yīng)用程序下載到卡中,以及使卡能夠檢驗(yàn)這個(gè)簽名,同時(shí)得到D1所公開的檢驗(yàn)過程。這依靠要與已簽署原始中間代碼同時(shí)下載的軟件組件成為可能,它在卡上應(yīng)用于已簽署原始中間代碼時(shí)使得能夠獲得符合D1所公開的簡(jiǎn)單快速檢驗(yàn)器的原理的已修改中間代碼。
根據(jù)本發(fā)明下載到卡中的中間代碼為原始中間代碼,其簽名不會(huì)通過卡外進(jìn)行的任何修改過程而變?yōu)闊o效,因而卡能夠在中間代碼執(zhí)行之前檢驗(yàn)其簽名。
但是,雖然所提出的主要應(yīng)用涉及適用于根據(jù)D1所公開的原理的中間代碼的檢驗(yàn),但本發(fā)明決不局限于這種應(yīng)用。
一般來說,本發(fā)明適用于無論對(duì)于系統(tǒng)是否為中間代碼的原始可執(zhí)行代碼以及關(guān)聯(lián)軟件組件到可重編程板載系統(tǒng)的下載,使得它在卡上應(yīng)用于原始代碼時(shí),軟件組件使得能夠重構(gòu)適合于預(yù)定特定用途的已修改代碼。因此,目的可不同于獲取允許根據(jù)D1的檢驗(yàn)過程的應(yīng)用的已修改代碼。
具體來說,已修改代碼所對(duì)應(yīng)的預(yù)定特定用途可對(duì)應(yīng)于代碼的執(zhí)行在時(shí)間方面的優(yōu)化。因此,隨原始代碼一起下載的軟件組件可經(jīng)過計(jì)算,使得原始代碼在通過組件的應(yīng)用經(jīng)過卡上修改后更快地被執(zhí)行。在本發(fā)明的這個(gè)應(yīng)用中,在卡上應(yīng)用于原始代碼的下載軟件組件因而使得能夠重構(gòu)已修改代碼,使得它的執(zhí)行與原始代碼相比更迅速。
同樣,隨原始代碼一起下載的軟件組件可經(jīng)過計(jì)算,使得原始代碼在通過組件的應(yīng)用經(jīng)過卡上修改后占用更少存儲(chǔ)空間。在本發(fā)明的這個(gè)應(yīng)用中,在卡上應(yīng)用于原始代碼的下載軟件組件因而使得能夠重構(gòu)已修改代碼,使得與原始代碼相比,取得大小方面的優(yōu)化。
下面通過說明提供的實(shí)例涉及目的在于獲得已下載原始代碼的執(zhí)行速度和大小方面的優(yōu)化的、軟件組件在卡上應(yīng)用于原始中間代碼的具體情況。在這個(gè)實(shí)例中,已下載原始中間代碼描述芯片卡程序中執(zhí)行的正常操作,其中包括恢復(fù)設(shè)置在棧中的16位字的最低有效字節(jié)。
因此,設(shè)下列原始中間代碼(符號(hào)表示和Java操作碼)為
0x11 sspush 2550x000xFF0x53 sand;這個(gè)代碼使得能夠恢復(fù)設(shè)置在棧中的16位字的最低有效字節(jié)。對(duì)此,需要堆棧16位字,它的最高有效字節(jié)為0x00,它的最低有效字節(jié)為0xFF(sspush 255),然后在棧中的兩個(gè)16位字之間進(jìn)行邏輯“與”(sand)。
以及設(shè)相應(yīng)的置換碼為0xC9 Xsand 255;在這個(gè)具體實(shí)例中,要用來在卡上應(yīng)用于原始中間代碼的已下載軟件組件的功能是采用置換碼0xC9來置換指令系列0x11、0x00、0xFF、0x53,以便因而獲得用于執(zhí)行相同操作、但與原始中間代碼相比取得6字節(jié)的節(jié)省、因此取得在由微處理器借助于虛擬機(jī)執(zhí)行時(shí)大小和速度方面的優(yōu)化的已修改中間代碼。
無疑可設(shè)計(jì)其它應(yīng)用,盡管如此,也沒有背離本發(fā)明的范圍。
權(quán)利要求
1.一種管理組成要用于下載到可重編程板載計(jì)算機(jī)系統(tǒng)、如微處理器卡(CP)中的程序的原始可執(zhí)行代碼的方法,所述代碼具有加密簽名(SIGN),并且在由板載系統(tǒng)的微處理器對(duì)所述簽名的有效性進(jìn)行檢驗(yàn)之后可由板載系統(tǒng)的微處理器執(zhí)行,所述方法包括由至少以下步驟組成的步驟-卡外-標(biāo)識(shí)與原始代碼對(duì)應(yīng)的、適合預(yù)定特定用途的已修改可執(zhí)行代碼(CI’);-根據(jù)原始代碼(CI)與相應(yīng)的已修改代碼(CI’)的數(shù)據(jù)之間的差異,計(jì)算軟件組件(CL),它在應(yīng)用于原始代碼時(shí),使得能夠重構(gòu)已修改代碼;以及-簽署所述軟件組件(CL);-把已簽署原始代碼和已簽署軟件組件下載到卡中;-卡上-分別檢驗(yàn)原始代碼(CI)和軟件組件(CL)的簽名(SIGN,SIGN’);-把軟件組件(CL)應(yīng)用于原始代碼(CI),從而重構(gòu)已修改代碼(CI’),以便由微處理器執(zhí)行。
2.如權(quán)利要求1所述的方法,其特征在于,原始可執(zhí)行代碼(CI)由中間代碼構(gòu)成,可由板載系統(tǒng)微處理器借助于用于解釋這個(gè)中間代碼的虛擬機(jī)來執(zhí)行。
3.如權(quán)利要求2所述的方法,其特征在于,虛擬機(jī)配備了執(zhí)行棧,以及在卡上應(yīng)用于原始中間代碼(CI)的下載軟件組件(CL)使得能夠重構(gòu)事先滿足所述中間代碼的檢驗(yàn)標(biāo)準(zhǔn)的已修改中間代碼(CI’),根據(jù)它,所述代碼的各指令的操作數(shù)屬于這個(gè)指令操作的數(shù)據(jù)類型,以及在各目標(biāo)開關(guān)指令,虛擬機(jī)的執(zhí)行棧為空。
4.如權(quán)利要求3所述的方法,其特征在于,通過應(yīng)用軟件組件獲得的已修改中間代碼(CI’)在由微處理器借助于虛擬機(jī)執(zhí)行之前,根據(jù)檢驗(yàn)已修改中間代碼(CI’)是否滿足檢驗(yàn)標(biāo)準(zhǔn)的過程進(jìn)行檢驗(yàn)。
5.如權(quán)利要求1或2所述的方法,其特征在于,在卡上應(yīng)用于原始代碼(CI)的下載軟件組件(CL)使得能夠重構(gòu)已修改代碼,使得它的執(zhí)行與原始代碼的執(zhí)行相比更快。
6.如權(quán)利要求1或2所述的方法,其特征在于,在卡上應(yīng)用于原始代碼(CI)的下載軟件組件(CL)使得能夠重構(gòu)已修改代碼,使得它與原始代碼相比,取得在大小方面的優(yōu)化。
全文摘要
本發(fā)明涉及用于管理下載到可重編程計(jì)算機(jī)板載系統(tǒng)、如微處理器卡(CP)的原始可執(zhí)行代碼(CI)的方法,所述代碼包含加密簽名(SIGN)并且在所述簽名的有效性被檢查之后可由微處理器執(zhí)行。本發(fā)明方法包括以下步驟在卡外,標(biāo)識(shí)與原始代碼對(duì)應(yīng)的適合預(yù)定特定用途的已修改可執(zhí)行代碼(CI’),計(jì)算軟件組件(CL),它在應(yīng)用于原始代碼時(shí)使已修改代碼能夠重構(gòu),簽署所述軟件組件,把已簽署原始代碼和已簽署軟件組件下載到卡中;然后在卡上,檢查原始代碼和軟件組件的簽名(SIGN,SIGN’),把軟件組件應(yīng)用于原始代碼,以便重構(gòu)已修改代碼,以便借助于微處理器執(zhí)行。
文檔編號(hào)G07F7/10GK1802631SQ200480015910
公開日2006年7月12日 申請(qǐng)日期2004年4月2日 優(yōu)先權(quán)日2003年4月14日
發(fā)明者A·伯努瓦, L·魯索 申請(qǐng)人:格姆普拉斯公司