專利名稱:用于一種嵌入式系統(tǒng)、尤其用于一種芯片卡的代碼變換器的檢驗方法
技術領域:
本發(fā)明涉及用于一種嵌入式系統(tǒng)的代碼變換器的檢驗方法。
本發(fā)明還涉及在用于產生供芯片卡用的代碼變換器中的這種方法的應用。
在本發(fā)明的范圍,“嵌入式系統(tǒng)”術語應在它的最普通的詞義中考慮。尤其涉及供一種芯片卡用的系統(tǒng),該芯片卡是本發(fā)明的優(yōu)先應用,但任何系統(tǒng)也供便攜式的或移動的設備之用,該裝置包含在下面叫做“處理資源”的信息化的數據處理的固有設備。
允許執(zhí)行越來越復雜和越來越多的數據處理資源供給現(xiàn)代嵌入式系統(tǒng)。然而,雖然越來越多的競爭力強的技術和部件投放市場,但是和傳統(tǒng)的信息系統(tǒng)(電子計算機,工作站等)比較,這些嵌入式系統(tǒng)的有特色的特征涉及在資源方面(尤其是微處理機的存儲器容量和功率)被強制性的限制。為了滿足這些限制,必須變換供在嵌入式系統(tǒng)上被執(zhí)行之用的代碼。變換的目的旨在產生一種更有效的和更經濟的代碼作為資源。
為了固定這些想法,作為非限定代碼的例子,人們將考慮在該例子中帶有在“JAVA”(SUN MICROSYSYEMS的注冊商標)語言的虛擬機中編寫的程序,該語言具有能在很多環(huán)境中被執(zhí)行的好處。該語言的應用范圍實際上尤其隨著Iternet網絡的大量發(fā)展而增多。許多小容量的叫做“支程序”的應用軟件用該語言來描述并可以通過“WEB”型導航器被執(zhí)行。
人們也將被安排在本發(fā)明的優(yōu)先應用范圍,即由一種芯片卡的固有信息資源執(zhí)行該類型的代碼。象以上被提醒的那樣,雖然取得重大的技術進步,但芯片卡的存儲器的容量以及所裝備的微處理機的功率保持相對的限制。同等重要的是,該代碼假定駐留在芯片卡中,因為在后者和主機終端之間的傳輸不管是否以低速度被實行。實際標準只規(guī)定連續(xù)型的傳輸。因此人們感覺到需要配置一種人們可以看作是“(傳輸)被減輕的”、在任何情況下對于這種使用是最理想的代碼。為做到這一點,建議使用由一種由“JAVA”派生出來的語言,它以該語言的緊縮形式出現(xiàn),即“JAVA CARD”(同樣是SUNMICROSYSTEMS注冊商標)語言。
一種額外的復雜來自于這樣的事實,即這些嵌入式系統(tǒng)通常在這些環(huán)境中被使用,該環(huán)境在材料方面,同時在可靠性和安全性方面要求得到最高的保證。作為例子人們可以引用新型芯片卡,在該卡上,人們希望安裝多種應用軟件,在不泄露秘密信息的情況下這些軟件應該和諧地協(xié)作。事實上,一開始,這些應用軟件可能涉及不同的用戶。然而,人們將上述的協(xié)作應保持嚴格的隔開,以便使涉及用戶的信息允許保持秘密,至少不能由一個未授權知道它們(讀)和/或操作它們(寫和相關操作抹去,修改)的用戶操作。除“保密性”方面之外,其他的考慮有所謂“完整性”的要求數據丟失,不合適的修改等。
如果人們在“初始代碼”的意義下考慮該“源”代碼,例如,象上述“JAVA”語言的“字節(jié)代碼”,那么,最后一個代碼將表現(xiàn)出必要的所有保證并履行上述的要求,該“字節(jié)代碼”是在“JAVA”語言的虛擬機中編寫的程序。事實上,在長時間周期期間,大量的實驗能夠被執(zhí)行。
所述“被變換的”代碼從“源代碼”開始,借助于通常是嵌入式系統(tǒng)外部的代碼變換器獲得,但是,該代碼同樣地可以駐留在后者之中。因此,需要表現(xiàn)出源代碼和被變換的代碼之間的等效。
在保證絲毫不改變它的特性(從外部觀點看)和不導致安全的缺陷而對該代碼執(zhí)行變換的同時,該等效可以被執(zhí)行。換句話說,該起始代碼(變換前)應是等價于結果代碼(變換后)的邏輯觀察點。
通常難以保證這種特性,因為這些變換對于該代碼和被操作的數據的表示法具有整體作用。實際上,這種操作所包含的復雜性不允許在注重現(xiàn)實的經濟和/或技術的條件下實行。人們還應懂得這種需要只是最近才產生,尤其與多應用和/或多用戶的芯片卡的上述技術的發(fā)展相關。
本發(fā)明就是以滿足這些需要為目的,而不需要非常長的和昂貴的工序。
根據本發(fā)明的方法允許用系統(tǒng)和模塊的方法檢驗代碼變換的正確。
在本發(fā)明的范圍,被充分認識的二個形式化方法本身將主要地用于運算語義學和邏輯關系。為了詳細地說明這些形式化方法,第一,人們將有益地參照H.R.Nielson和F.Nielsonl的書,標題為“應用語義學形式引論”Wiley,1992以及第二,J.Mitchel的書,標題為“編程語言基礎”MIT Press 1996。
根據本發(fā)明的一個主要特征,代碼變換器的檢驗方法在于借助于用叫做“輔助函數”的函數作為參數的公用虛擬機規(guī)定二個代碼的意義。二個代碼的差別在上述輔助函數中被表達和重組。每個輔助函數具有二種形式源代碼形式和變換的代碼形式。第一種模塊是相同的,因為它為二個代碼所共有,如果是相等,就沒有要檢驗之處。為顯示二個代碼的等價,因此只需顯示一對一對地被考慮的所述輔助函數是等價的就足夠。這二個子集比起用考慮到它們的完整性的源代碼和被變換的代碼所表示的二個集合變得不復雜。由此可見,根據本發(fā)明的方法檢驗過程中固有的難度大大地簡化,并且以相關的方式該檢驗過程在經濟上和在技術上將變得可以實現(xiàn)。
因此本發(fā)明的目的是提供用于嵌入式系統(tǒng)的使從所述源代碼到所述被變換代碼的變換器的檢驗方法,所述源代碼和被變換代碼與虛擬機結合,其特征在于,它至少包含以下步驟-對于每個所述源代碼和被變換代碼確定一個第一公共子集,該子集構成將這二個代碼的特性進行因式分解的唯一的虛擬機;-對于每個所述的源代碼和被變換代碼確定構成多個稱為輔助函數的第二子集,所述輔助函數表示所述源代碼和被變換代碼之間的剩余差別;
-所述輔助函數成對地結合,每對的第一輔助函數屬于與源代碼結合的第二子集,而每對第二輔助函數屬于與被變換代碼結合的第二子集;-檢驗在所有所述成對的所述輔助函數之間被確定的對應的特性;-通過所述變換器從源代碼到被變換代碼的所述變換的檢驗將遵守被確定的對應的特性。
本發(fā)明的目的還旨在使這樣的變換器的方法的應用用來生成一種被記載在芯片卡中的代碼。
本發(fā)明現(xiàn)在將參照附圖更詳細地被說明,在這些附圖中-
圖1概略地說明從源代碼到最后的被變換代碼的變換過程;-圖2A和2B概略地說明根據本發(fā)明的方法的主要特征;以及-圖3概略地說明從根據本發(fā)明的方法到一種芯片卡的應用。
現(xiàn)在我們將詳細地說明根據本發(fā)明的代碼變換器的檢驗方法。
圖1概略地說明借助于代碼變換器2從叫做在原點代碼或起始代碼的含義下的“源代碼”的代碼1到所述“被變換代碼”的最后代碼3的變換過程。最后的裝置可以是一種專用的信息設備或軟件。通常,該變換代碼駐留在嵌入式系統(tǒng)4中(實線部分)。變換器2同樣可以被駐留在或遠程加載在嵌入式系統(tǒng)中參考(標號)4’(虛線部分)。
在加載在或記載在嵌入式系統(tǒng)4-4’之后,根據需要,該變換代碼3允許執(zhí)行唯一參考標號5所表示的一個或多個任務。假定嵌入式系統(tǒng)4擁有傳統(tǒng)的獨立的信息資源(未示出)。
一開始,該代碼變換通過給定的變換器2只被執(zhí)行一次或在很少場合被執(zhí)行例如,原點代碼或源代碼1的形式的修改。
因此,必須使人們能確立該變換代碼3等價于源代碼1的形式驗證。該過程允許檢驗該變換器2是否正確地運行。
但是,象所想到的那樣,在它們的整體中,如果將考慮由源代碼和被變換代碼形成的二個集合,那么,理論表明這樣的確定按現(xiàn)實的方式通常是不可能的。
根據本發(fā)明的方法的一個主要特征將在于為二個代碼中的每一個找到二個叫做第一和第二子集的二個子集。根據本發(fā)明的方法的一個重要特征,第一子集形成為二個代碼即源代碼和被變換代碼所共有的虛擬機。因此,不必檢驗第一子集的等效。
由輔助函數組成的第二子集相反地在代碼上一個不同于另一個。那么,源代碼和變換代碼的等效的確定被簡化為確定所有成對的第二子集的輔助函數的等效。不過,輔助函數的剩余的復雜性可能大大地減小。于是,上述等效的確定將變?yōu)榭赡堋?br>
圖2A和2B非常概略地說明根據本發(fā)明的方法。
尤其象圖2A所指出的那樣,源代碼1和被變換代碼3的第一子集形成共有的虛擬機13。通過一系列所述輔助函數每個第二子集10和30被建立,輔助函數的等效應該被檢驗。這些輔助函數10和30將給共有的虛擬機13作參數。
因此象在下面參照圖2B將被指出的那樣,二個代碼,即源代碼1和被變換代碼2的等效被簡化為檢驗二個二個地被選取的輔助函數的等效。
這些源代碼和被變換代碼分別與所述虛擬的第一和第二機器相結合。
第一步驟包括確定允許對源代碼和被變換代碼的特性進行因式分解的唯一的虛擬機(或運算語義學)。那么,二個代碼之間的差別體現(xiàn)在二個代碼中的解釋或不同地使用輔助函數。
一個虛擬機可以通過形式規(guī)則的集合被表現(xiàn)prémisse(前提)1...prémisse(前提)n
état(狀態(tài))1[instruction(指令)1]état(狀態(tài))2(1)這些前提或者是一個規(guī)則的應用的條件,也就是說是布爾表達式,或者是用于表達狀態(tài)變化的被使用的變量的賦值。前提要求調用用于提取狀態(tài)信息或表達這些條件的輔助函數。當前提被檢驗和指令“instruction1”被碰見時每個規(guī)則指出該機器狀態(tài)怎樣變化。對于代碼指令的每個類型確定一個或多個這種形式的規(guī)則。
第二個步驟在于確定在二個代碼中所使用的數據的結構和類型。確定這些基本類型,例如Basique∷=Nat|Bool|Nom…(2)以及例如如下構成的結構Environnement(環(huán)境)∷=Nom(名字)→Valeur(值)Instruction∷=Instruction1|Instruction2|…(3)第三個步驟在于提供在虛擬機中使用的被標識為θ的類型解釋。對于每個θ類型確定一個源代碼[[θ]]s的解釋和一個被變換代碼[[θ]]T的解釋。還有一個遵守類型結構的在二個叫做邏輯關系的解釋[[.]]S和[[.]]T之間的關系Rθ。對于簡單的類型,它們應被明確地確定;對于結構類型,它們將從該結構的成分中被推斷出來。
例如,對于這些對來說(a,b)Rθ1×θ2(a,,b,)⇔aRθ1a,^bRθ2b,---(4)]]>在該關系中θ1和θ2是類型,而a,b,a’和b’是類型的元素。fRθ1→θ2f,⇔∀a,a,.aRθ1a,⇒faRθ2f,a,---(5)]]>對于可觀察的類型這些邏輯關系應是“同一性”關系,就是說對這些關系的類型能指出提供相同結果的二個代碼。通常在信息屏幕上涉及可以打印和/或可以顯示的類型。這可能是基本類型,但所構成的類型例如也表示一個給定的程序?;虺绦蜃兞?。
第四個步驟在虛擬機中所使用的輔助函數的解釋。對于每個輔助函數f,在于源代碼給出它的定義,記為 以及為被變換代碼給出它的定義,記為 等效的確定在于指出遵守邏輯關系的輔助函數的定義。更明確地說,對于每個輔助函數f:θ→θ’,人們指出 由此可見,二個虛擬機是有關聯(lián)的,就是說 由于這些關系對于可觀察的類型是同一性,因此,源代碼和被變換代碼被觀察為是相同的。
最后的步驟在于指出存在一種滿足邏輯關系的變換器Г(圖12)。這可通過檢驗使得給定的變換器Г:S→T滿足與源代碼S(圖11)和被變換代碼T(圖1:3)的它的自變量類型相關聯(lián)的邏輯關系來做到。為做到這點,必須遵守下面的關系 剛剛指出這些邏輯關系規(guī)定一種約束集合。因此應用精練技術或提取技術、并使用合適的證明的輔助者之一,通過構造在該集合中提取一個正確的變換器2。
因此,根據本發(fā)明的方法具有一個重要的優(yōu)勢,因為它允許檢驗過程的大量機械化,尤其允許它獲得好處,因為這種檢驗在不太復雜的子集上進行。
如果該源代碼1的變換能被描述為一系列的更簡單的變換,那么該方法可以被應用以便獨立地指出每個變換。由此可見,它具有很多模塊化的優(yōu)勢。
象圖2B所說明的那樣,該檢驗借助于一種硬件或軟件設備6只需對輔助函數10和30的子集執(zhí)行。假設存在著n個輔助函數,分別標記為10a,10b,…,10i,…10n和20a,20b,…,20j,…,20n-1,20n。如果該設備6是硬件,那么,它包含與要檢驗的輔助函數對同樣多的檢驗電路60a,60b,…60i,…,60n-1,60n(用比較器的符號在圖2B上任意地表示),例如,對于函數10i和30i的對的該檢驗電路60i0該設備6的輸出或者輸出在唯一參考標記61下指出在對應的源代碼1和被變換代碼3的輔助函數的所有可能的對之間的邏輯關系被滿足。這一系列操作在它們的整體上足以提供二個代碼的等效的形式證據。
要注意,根據本發(fā)明的方法也可以經驗地完全被利用,就是說一開始象一個新的變換器的研制助手用來檢驗現(xiàn)存的變換器。尤其在最后的情況下,它允許確定變換器的特性,以便正確地運行,換句話說,以便用該變換器從源代碼產生的被變換代碼滿足上述等效要求。
現(xiàn)在讓人們回到芯片卡的范圍。圖3概要地說明參考標號為7的芯片卡的結構。在完全理解根據本發(fā)明的方法后,人們在該圖上只示出主要部件。
尤其是芯片卡7包含一個允許和外部世界通信的輸入-輸出設備70,一個固定的或可編程的(“ROM”,“PROM”,“EPROM”或“EEPROM”類型)的存儲器的第一設備71以及一個隨機存取存儲器72。該芯片卡7最后包含一個通過總線和該芯片卡7的其它部件通信的微處理器或微控制器73。
一種這樣的芯片卡7的軟件結構符合ISO7816-3標準,它通過翻譯成從與輸入-輸出設備70結合的最低層直到與被記載在該芯片卡7中的應用軟件結合的最高層的協(xié)議被表示。該標準規(guī)定這些傳輸使用串行方式被執(zhí)行。
一旦通過代碼變換器2被變換的源代碼1被發(fā)送到芯片卡7,以便經由輸入-輸出設備70被寫入通常到是固定的或“半固定”的存儲器設備71中。用芯片卡7處理的應用軟件可以永久地寫入芯片卡7中,就是說,寫入在存儲器設備71中,或暫時寫入到隨機存取存儲器72中。在后者的情況下,這些應用軟件經由輸入-輸出設備70被遠程加載。在所描述的例子中,假設該芯片卡7是多應用、甚至是多用戶類型的卡。因此,同樣假設芯片卡7處理應用軟件m,即在被變換的語言3中所描述的A1至Am。
象被提及的,通常對于芯片卡7所使用的語言是“Java Card”語言。它涉及專門用于芯片卡的程序設計的語言,該語言受“Java”語言的限制。
該芯片卡7同樣可以儲存在對部分代碼加載時在原位執(zhí)行變換的附加變換器。
剛才在一般范圍被描述的根據本發(fā)明的方法的步驟在優(yōu)先應用范圍將更詳細地說明。
象人們已經知道的那樣,“Java Card”語言的插入要求一個將所謂的“分類”文件變換成“CAP”文件的變換器(變換程序)。分類文件是“Java”程序的目標代碼的編譯和表示的單元。一個CAP文件對所有相同的“Java卡程序包”的分類分組并且只包含一種唯一的“常數庫”。一個“Java卡程序包”是一種用于與分類分組和建立名稱空間的“Java”結構?!俺祹臁笔桥c每個“Java”分類文件和每個“Java卡”相關聯(lián)的“CAP”文件的表。該表包含常數(一系列符號,整數,…)。它在“Java”和“Java卡”的虛擬機中使用。該變換是非平凡的和全部的它是用叫做“令牌(token)”的實體代替所有的名稱(程序包的,分類的,字段的,方法的名稱),就是說7或8位整數?!傲钆啤弊鳛樵L問表的下標。此外,該變換對所有在CAP文件中的相同的程序包的分類文件進行分組(包含“常數庫”的合并和方法表的重組)。
該“Java card”尤其準備在銀行芯片卡中被使用。因此,迫切需要檢驗從用“Java”語言的虛擬機編寫的程序(或“字節(jié)代碼”)到用“Java代碼”的虛擬機編寫的程序的變換的精確性,就是說,產生二個程序的等效證據。
該形式證明將在執(zhí)行根據本發(fā)明的步驟的同時被產生。
第一步驟包括定義運算語義學。
人們將一個或多個語義學規(guī)則和每個“字節(jié)代碼”指令關聯(lián)起來。該“字節(jié)代碼”是可移值的匯編語言代碼。它是用于“Java”或“Javacard”虛擬機的目標代碼。例如,該語義學規(guī)則和該代碼指令之一關聯(lián),“取得字段(getfield)”指令也可以描述為f_ref:=constant_pool(c)(l)(c_ref,iv):=h(τ)v:=iv(f_ref) <getfield i;bc,r∷ops,l,c,h>(bc,v∷ops,1,c,h> (9)在該例子中,該狀態(tài)包括在開始部分的執(zhí)行的(getfield i;bc)具有現(xiàn)有指令的代碼,一組操作數(r∷ops),局部變量(l),一個分類流調用(c)和堆棧(h)。在執(zhí)行取得字段i時該規(guī)則規(guī)定操作的執(zhí)行-輔助函數“constant_pool”使用下標i以便在合適的“常數庫”中獲取字段調用f_ref(一種簽名或“令牌”,根據是否是原代碼或被變換代碼)。
-屬于目標的調用τ,它的應被讀出的字段在棧頂被找到。該調用允許在堆棧(h(r))中找到目標動態(tài)分類c_ref(根據涉及原代碼和被變換代碼的一個合格的名稱或令牌對)和目標字段表(ⅳ)。
-使用以前被計算的調用和字段表,該字段被讀出(v:=iv(f_ref))。
-用該字段值替代目標調用的同時該指令取得字段將改變狀態(tài),并且該執(zhí)行隨著代碼(bc)的其余部分繼續(xù)進行。
第二個步驟包括類型的定義。
在“Java card”語言情況下,定義字類型以便表示存儲單位Word=Object_ref+Null+Boolean+Byte+Short(10),作為被構成的例子,一個常數庫的類型是constant_pool=CP_index→CP_info(11)以及CP_info=Class_ref+Method_ref+Field_ref(12)在該例子中,一個“常數庫”被看作一個取下標(類型CP_index被認為是基本的)和提供一個輸入端(這里,是一個分類,方法或字段的調用)的函數。
“字節(jié)”代碼類型是Bytecode=Instruction+Bytecode;BytecodeInstruction=getfieldCP_index+Invokevirtual Cp_index+…(13)該“字節(jié)代碼”是一個指令序列。指令類型列舉了在“Java card”的“字節(jié)代碼”中被使用的所有指令。
第三個步驟包括類型解釋。
在“Java card”的情況下,用于源代碼的解釋以分類文件的形式(使用名稱)記為[[.]]name,而用于被變換代碼的解釋以CAP文件的形式(使用“令牌”)記為[[.]]tok。
作為例子,對于源代碼類型[[CP_index]]name被檢驗[[CP_index]]name=Cass_name×Index(14)在基于名稱的模型中,“常數庫”的下標由分類名稱(以便指出要調用的“常數庫”)和下標組成。
對于被變換代碼類型[[CP_index]]tok被檢驗[[CP_index]]tok=Package_token×index(15)一個“常數庫”的下標由一個“程序包”的“令牌”(在所述例子中,每個“程序包”或CAP文件只有一個“常數庫”)和一個下標組成。
關系Rcp_index被定義為一個雙映射,如<c_name,i>Rcp_index(p_tok,i’)pack_name(c_name)Rpacakage_refp_tok(16)該分類的“程序包”的名稱包含“常數庫”,該常數庫在基于名稱的模塊中被參考,該“程序包”的名稱應和“程序包”的“令牌”有聯(lián)系,該“程序包”的“令牌”包含“常數庫”,在基于“令牌”的模型中參考該“常數庫”。對下標i和i’的唯一限制是Rcp_index應是一個雙映射(因此,“常數庫”的輸入端可以被再分組和重新整理)。
第四個步驟包括輔助函數的解釋。
例如,用于基于名稱模塊的輔助函數“constant_pool”的形式是[[constant_pool]]name=cp_name(17)以及cp_name c=let(…,cp,)…=env_name(pack_name(c))(c)(18)in cp函數packk_name選取一個分類名稱和產生一個“程序包”名稱,而函數env_name選取一個程序包名稱和一個分類名稱,并在分類等級中找到表示所指定的分類文件的結構。該常數庫從分類文件提取。
對于基于“令牌”的模型,輔助函數[[constant_pool]]tok的形式是[[constant_pool]]tok=cp_tok(19)以及cp_tok c=(…,cp,…)=env_tok(p)(20)in cp“常數庫”借助于函數env_tok和程序包的令牌在環(huán)境(就是CAP文件)中被找到。
第五個步驟在于證明輔助函數遵守邏輯關系。
如果參照按照訪問“常數庫”的函數的例子,那么必須確定[[constant_pool]]nameRcp_index→cp_info[[constant_pool]]tok(21)
關系Rcp_index→cp_info完全由關系函數Rcp_index和Rcp_info定義。因此使用該定義后,人們指出只需檢驗以下等式就足夠了(c_name,i)(p_tok,i′)tels que<c_name,i)Rcp_index<p_tok,i′>
cp(i)Rcp_info cp′(i′)(22),以及(…,cp,…)=env_name(pack_name(c_name))(c_name)(…,cp′…)=env_tok(p_tok)(23)該證明基于Rcp_info的定義中,而特性如上被提及(c_name,i)Rcp_index(p_tok,i’)pack_name(c_name)Rpapackage_refp_tok(24)該方法的第六和最后的步驟在于確定變換器,使得由該變換器確定的代碼和數據變換遵守給定的邏輯關系。例如,“程序包”的調用是依賴模型的名稱或“令牌”。被關聯(lián)的Rpackage_ref的邏輯關系只是被定義作為在“程序包”名稱和“程序包令牌”之間的一個雙映射。只需檢驗實現(xiàn)從程序包名稱到“令牌”變換的變換器的函數實際上就是雙映射就足夠了。
在以前的閱讀中,人們容易地看到本發(fā)明完全達到它規(guī)定的目標。
但是,應當清楚的是,本發(fā)明不受尤其與圖2和3有關的明確地被描述的唯一實施例的限定。
最后,該方法在從“Java”語言的虛擬機的程序到“Java card”語言的虛擬機的程序的變換的情況中詳細地被描述,尤其涉及芯片類型或類似的應用,但是,本發(fā)明在任何情況下不受這種特殊應用的限制。
每當本發(fā)明能夠找到應用時,所包含的設備只配置相對有限的信息資源,尤其在涉及存儲器(隨機存取的或固定的)的容量和/或所使用的處理器的計算功率方面。人們可以列舉準備用于從所述例如“organiser(組織)”類型的袖珍計算機遠程加載和儲存來自Internet網絡現(xiàn)場的數據的例如“e-book”類型的電子圖書,以及某些可以連結到Internet網絡的移動電話等。在所有這些情況下,都必須配置最佳語言以便最好地使用被集成的信息資源。
權利要求
1.檢驗供嵌入式系統(tǒng)用的、從所謂源代碼到被變換代碼的變換器的方法,其中所述源代碼和被變換代碼與虛擬機相關聯(lián),該方法的特征在于它至少包含以下若干步驟-對于每個所述源代碼(1)和被變換代碼(3),確定一個第一公用子集(13),該子集構成將這二個代碼(1,3)的特性進行因式分解的唯一的虛擬機;-對于每個所述源代碼(1)和被變換代碼(3),確定一個第二子集(10,30),該子集由多個被所述唯一虛擬機使用的所謂輔助函數(10i,30i)構成,所述輔助函數(10i,30i)表示在所述源代碼(1)和被變換代碼(3)之間的剩余差值;-成對地將輔助函數關聯(lián)起來,將屬于與所述源代碼(1)相關聯(lián)的第二子集(10)的每對第一輔助函數(10i)和屬于與所述被變換代碼(3)相關聯(lián)的所述第二子集(30)的每對的所述第二輔助函數(30i)關聯(lián)起來;-檢驗在所述所有所述對的輔助函數(10i-30i)之間所給定的對應的特性;以及-驗證由所述變換器(2)進行的從源代碼(1)到被變換代碼(3)的變換遵守給定的所述對應特性。
2.根據權利要求1的方法,其特征在于,為了使所述每對輔助函數(10i-30i)被執(zhí)行時能產生受所述邏輯關系約束的結果,所述對應特性是一種邏輯關系,以及該方法的特征還在于,對于任一輔助函數對,當在變換到所述被變換代碼(3)的所述變換和代碼變換器(2)的檢驗被執(zhí)行時為了使所述源代碼(1)的功能性被保存,對于每個所述源代碼和被變換代碼的所述可觀察的實體,這種關系是關系恒等式。
3.根據權利要求1或2的檢驗方法的應用,從所述源代碼(1)始,在代碼變換器(2)中產生供被記載在芯片卡(7)的存儲器設備(71)中之用的被變換代碼(3)。
4.根據權利要求3的應用,其特征在于,所述被變換代碼是在被確定的一種計算機語言的虛擬機中所編寫的程序,所述芯片卡(7)是記載多個在該被變換代碼(3)中所編寫的應用軟件(A1-An)的芯片卡。
5.根據權利要求3或4的應用,其特征在于,所述源代碼(1)是在“JAVA”(注冊商標)語言的虛擬機中所描述的程序,而被變換代碼(3)是在“JAVA CARD”(注冊商標)語言的虛擬機中所描述的程序。
全文摘要
本發(fā)明涉及一種準備嵌入式系統(tǒng)(7)用的、從源代碼到被變換代碼的變換器的檢驗方法。該方法至少包含以下步驟確定將這二個代碼(1,3)進行因式分解的唯一的虛擬機,對每個所述源代碼(1)和被變換代碼(3),確定多個表示載所述源代碼(!)和被變換代碼(3)之間的剩余差值的所述輔助函數,以及一個在于檢驗這些輔助函數之間的對應特性的步驟,該代碼變換器(2)的檢驗從最后步驟開始被獲取。該應用尤其適合于芯片卡(7)。
文檔編號G06K19/07GK1316073SQ00801310
公開日2001年10月3日 申請日期2000年6月28日 優(yōu)先權日1999年7月1日
發(fā)明者克里斯蒂安·高雷, 托馬斯·簡森, 帕斯卡·弗拉德特, 丹尼爾·勒·梅塔耶, 埃文·丹尼 申請人:布爾Cp8公司, 國家信息及自動化研究院, 國家科研中心