專利名稱:檢查程序指令是否已經(jīng)由便攜式終端設(shè)備執(zhí)行的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及檢查程序指令是否已經(jīng)由便攜式終端設(shè)備執(zhí)行的方法和系統(tǒng)。
背景技術(shù):
隨著電子終端設(shè)備,特別是諸如移動(dòng)無線電設(shè)備、PDA、平板PC、智能電話等的終端設(shè)備的越發(fā)普及,在這些終端設(shè)備上個(gè)人的、機(jī)密的、秘密的數(shù)據(jù)和/或至少具有敏感內(nèi)容的數(shù)據(jù)的處理增加。這些數(shù)據(jù)特別包括用戶的機(jī)密,例如授權(quán)數(shù)據(jù)、訪問數(shù)據(jù)、個(gè)人身份編號(hào)、支付交易數(shù)據(jù),特別是TAN和信用卡號(hào)。如果這些數(shù)據(jù)被攻擊者窺探,則在很多情況中引起財(cái)務(wù)或個(gè)人損失。
以與具有因特網(wǎng)連接的傳統(tǒng)PC上的攻擊方法可比較的方式,例如借助于間諜軟件,便攜式終端設(shè)備越來越頻繁地變成攻擊目標(biāo)。因此,在這樣的終端設(shè)備上的數(shù)據(jù)應(yīng)當(dāng)受到最大保護(hù),從而在這樣的數(shù)據(jù)上的間諜攻擊是無果的。間諜攻擊通過植入有害第三方程序指令來完成,例如通過作為惡意軟件的所謂的木馬、病毒或蠕蟲。因此,需要便攜式終端設(shè)備檢查要執(zhí)行的各個(gè)程序指令以識(shí)別第三方程序指令的植入并且如果可行的話,初始化防御動(dòng)作。這里,在要執(zhí)行的程序指令的實(shí)際執(zhí)行之前、期間或之后可以進(jìn)行要執(zhí)行的程序指令的檢查。根據(jù)本發(fā)明理解程序指令為便攜式終端設(shè)備的計(jì)算單元,特別是CPU可以執(zhí)行和處理的機(jī)器可讀指令、語句和/或命令的序列。對(duì)于這里的發(fā)明,程序指令呈現(xiàn)為機(jī)器碼、字節(jié)碼或源碼,或編譯器或解譯器是否作為用于CPU中的它們的執(zhí)行的翻譯實(shí)體插入是非實(shí)質(zhì)性。從現(xiàn)有技術(shù)已知用于程序指令的檢查方法。根據(jù)美國(guó)專利US-7191464-B2,在終端設(shè)備的起始程序指令(所謂的引導(dǎo)代碼)的執(zhí)行期間已經(jīng)進(jìn)行檢查。這里程序指令細(xì)分為多個(gè)部分,在將接下來的部分的控制傳遞到終端設(shè)備之前,程序指令的每個(gè)部分檢查接下來要執(zhí)行的程序指令的部分的完整性。此過程的問題是程序指令的第一部分必須是值得信任的,因?yàn)樵摰谝徊糠肿陨聿槐粰z查。這可以例如通過在例如ROM存儲(chǔ)器的特殊組件中存儲(chǔ)程序指令的第一部分來解決,因?yàn)镽OM存儲(chǔ)器在初始寫入之后不能再被改變。但是,這排除了例如借助于軟件補(bǔ)丁的該第一部分的任何后續(xù)更新。在US-2008/0022108-A1中,再次描述了用于檢查程序指令的第一部分的方法。這里,在程序指令的一部分的基礎(chǔ)上計(jì)算隨機(jī)密碼功能,其在程序指令的該部分的執(zhí)行之前在獨(dú)立和外部的密碼硬件單元中驗(yàn)證。在此情況下,在沒有位于系統(tǒng)外的獨(dú)立單元的情況下無法這樣做。
發(fā)明內(nèi)容
因此,本發(fā)明是基于提供用于檢查程序指令是否已經(jīng)由終端設(shè)備執(zhí)行的方法和系統(tǒng)的目的,其是簡(jiǎn)單和安全的并且可以低成本地實(shí)現(xiàn)。同時(shí),此檢查應(yīng)該不是可預(yù)測(cè)的并且不是資源密集的。同時(shí),程序指令必須已經(jīng)在哪個(gè)時(shí)間點(diǎn)和程序指令的哪個(gè)部分必須已經(jīng)檢查應(yīng)該是無關(guān)緊要的。這里的部分目的是利用終端設(shè)備的現(xiàn)有硬件設(shè)施。本發(fā)明的此目的通過在同級(jí)的獨(dú)立權(quán)利要求中描述的措施完成。在各個(gè)從屬權(quán)利要求中描述有利的實(shí)施例。根據(jù)本發(fā)明,因此提出了檢查程序指令是否已經(jīng)由終端設(shè)備執(zhí)行的方法,其中,終端設(shè)備調(diào)用(call for)該程序指令,該程序指令以可執(zhí)行形式存儲(chǔ)在可信任的實(shí)體中,特別是芯片卡。存儲(chǔ)優(yōu)選地在可信任實(shí)體的易失性存儲(chǔ)器區(qū)域中生效,特別是閃存。這里,優(yōu)選地經(jīng)由終端設(shè)備和可信任實(shí)體之間的現(xiàn)有通信連接使調(diào)用生效。調(diào)用步驟之后是可信任實(shí)體以使得修改的程序指令在方法的每次執(zhí)行時(shí)改變的方式可變地修改可執(zhí)行程序指令的步驟。此可變修改基本上意味著在根據(jù)本發(fā)明的方法的每次執(zhí)行時(shí)不同地修改程序指令。這意味著在根據(jù)本發(fā)明的方法的重復(fù)執(zhí)行時(shí)發(fā)生替代修改以檢查相同的程序指令。
在終端設(shè)備上無修改的程序指令的執(zhí)行具有的原始效果不由程序指令的改進(jìn)而更改。這可能引起額外效果,例如,由于程序指令的改進(jìn)所獲得的檢查值,這些額外效果用來檢查程序指令的執(zhí)行。接著,修改的程序指令從可信任的實(shí)體傳送到終端設(shè)備并由終端設(shè)備執(zhí)行,通過修改的程序指令的執(zhí)行獲得檢查值。由于程序指令的修改而獲得此檢查值。此檢查值又從終端設(shè)備傳送到可信任的實(shí)體并在可信任的實(shí)體中驗(yàn)證,用以檢查所調(diào)用的程序指令是否已經(jīng)在終端設(shè)備中執(zhí)行。通過此方法,有利地實(shí)現(xiàn)了在每次執(zhí)行之前單獨(dú)地修改要執(zhí)行的程序指令。因此,在植入第三方影響的部分沒有預(yù)測(cè)是可能的,因?yàn)樾薷牡某绦蛑噶畹膱?zhí)行必然引起單獨(dú)的檢查值。由于間諜攻擊將它們自身植入程序指令中的第三方程序指令不知道要獲得的檢查值或?qū)е芦@得錯(cuò)誤檢查值,從而在可信任的實(shí)體內(nèi)的檢查值的基礎(chǔ)上的檢查得出其不是要執(zhí)行的所調(diào)用的程序指令。在方法的一個(gè)實(shí)施例中,要執(zhí)行的程序指令在調(diào)用它們之前從終端設(shè)備傳送到可信任的實(shí)體。因此僅臨時(shí)地和出于修改的目的在可信任實(shí)體中存儲(chǔ)程序指令。其結(jié)果是,降低在可信任實(shí)體中的存儲(chǔ)器要求并且仍然保證恰當(dāng)?shù)臋z查。有利地,所獲得的檢查值在可信任實(shí)體中與在修改的程序指令的傳送之前存儲(chǔ)的期望值比較,并且假如檢查值和期望值匹配,則檢查得出終端設(shè)備已經(jīng)執(zhí)行調(diào)用的程序指令。為了增加安全性并降低檢查的執(zhí)行時(shí)間,在一個(gè)實(shí)施例中,終端設(shè)備僅調(diào)用程序指令的部分。在根據(jù)本發(fā)明的方法的每次執(zhí)行時(shí),可以調(diào)用存儲(chǔ)在可信任實(shí)體中的程序指令的不同部分。要調(diào)用的部分的選擇可以是隨機(jī)的。這些部分也可以特別地是起始程序指令,從而可以由根據(jù)本發(fā)明的方法安全地檢查程序指令的很多部分的起始處的部分的完整性。在有利的實(shí)施例中,可變的改進(jìn)生效從而將可執(zhí)行的檢查指令并入程序指令中。在修改的程序指令的執(zhí)行時(shí),此檢查指令傳遞用來在可信任實(shí)體中驗(yàn)證的檢查值??尚湃螌?shí)體類似地執(zhí)行該檢查指令并存儲(chǔ)該檢查指令的結(jié)果作為期望值。特別是,算法計(jì)算、所調(diào)用的程序指令的無修改或修改部分的簽名、密碼計(jì)算可以合并為檢查指令。特別是,在每次改進(jìn)時(shí)檢查指令是不同的。以示例的方式,檢查指令是可執(zhí)行散列算法,獲得某些部分,特別是修改的程序指令的計(jì)算的散列值作為檢查值。借助于修改的程序指令,本發(fā)明的想法得以類似地包括檢查未調(diào)用的程序指令。例如,修改的程序指令傳送到終端設(shè)備,它們由該終端設(shè)備執(zhí)行,并且通過修改的額外效果,可以是已經(jīng)執(zhí)行的所檢查的程序指令或可以是必須通過已經(jīng)執(zhí)行的程序指令,特別是軟件例行程序、接口配置或訪問權(quán)呈現(xiàn)的所檢查的效果??梢砸源朔绞阶R(shí)別通過惡意軟件的所植入的第三方程序指令。在有利的實(shí)施例中,通過合并可變值,特別是隨機(jī)值來生效程序指令的可變修改。獲得該可變值作為通過終端設(shè)備執(zhí)行修改的程序指令并在可信任實(shí)體中驗(yàn)證的檢查值。替代地,通過修改在可變值上執(zhí)行散列函數(shù),并且可變值的散列值作為獲得的檢查值傳送。類似地,可以獲得將要執(zhí)行或已執(zhí)行的程序指令的散列值作為檢查值。替代地,通過在所調(diào)用的程序指令的特定位置或不同位置并入空閑指令的隨機(jī)數(shù),也稱為空閑任務(wù)或NOP來生效可變修改。然后,包含這些空閑指令的程序指令的部分的 位置或散列值用作要驗(yàn)證的檢查值。替代地,也可以插入程序指令而無任何目標(biāo)效果,所謂的無意義命令,也指垃圾指令。由通過所調(diào)用的程序指令的部分的隨機(jī)化來生效的可變修改獲得安全性上的進(jìn)一步增加。然后,所獲得的檢查值例如是散列值或隨機(jī)化數(shù)據(jù)流的簽名,其也由可信任實(shí)體計(jì)算并存儲(chǔ)為期望值。在替代實(shí)施例中,可變地修改程序指令,從而在終端設(shè)備中修改的程序指令的執(zhí)行之后,以密碼加密形式生效所獲得的檢查值的傳送,可信任實(shí)體能夠解密所獲得的檢查值。出于此目的,特別是密匙對(duì)的公共部分作為修改的程序指令的一部分傳送。在執(zhí)行修改的程序指令時(shí),請(qǐng)求終端設(shè)備采用密匙的公共部分用于密碼地加密終端設(shè)備和可信任實(shí)體之間的傳送。因?yàn)閷⑵ヅ涔裁艹椎乃矫苊艹状鎯?chǔ)在可信任實(shí)體中并提供其用于解密以加密形式傳送的數(shù)據(jù),所以所獲得的檢查值要么是以密匙加密傳送的,要么導(dǎo)致的加密傳送是檢查值。如果解密不是可能的,則認(rèn)為不執(zhí)行所調(diào)用的程序指令。在一個(gè)實(shí)施例中,由于驗(yàn)證,可信任實(shí)體授權(quán)行動(dòng)??尚湃蝿?dòng)作特別是網(wǎng)絡(luò)訪問、授權(quán)、簽名的創(chuàng)建等。在一個(gè)實(shí)施例中,所調(diào)用的程序指令是起始程序指令、終端設(shè)備的所謂的引導(dǎo)代碼。在終端的引導(dǎo)期間和/或在引導(dǎo)之后生效起始程序指令的調(diào)用。通過此措施,防止在早期階段植入惡意軟件的第三方程序指令,或者這樣的植入可以在早期階段發(fā)現(xiàn)。在特殊實(shí)施例中,終端設(shè)備是移動(dòng)無線電終端設(shè)備并且可信任實(shí)體是用戶識(shí)別模塊,所謂的SIM。這里,經(jīng)由用戶識(shí)別模塊和移動(dòng)無線電終端設(shè)備之間的現(xiàn)有通信連接,例如經(jīng)由ISO 7816或ISO 14443連接生效修改的程序指令以及獲得的檢查值的傳送。在替代實(shí)施例中,可信任實(shí)體是網(wǎng)絡(luò)操作者的服務(wù)器、智能存儲(chǔ)器卡,例如MMC、miniSD、μ SD、USIM或智能卡或完全基于操作系統(tǒng)內(nèi)核中的如受信任平臺(tái)模塊或縮寫為TPM的軟件??尚湃螌?shí)體可以額外地具有另外的功能單元,諸如計(jì)算單元、不同標(biāo)準(zhǔn)的通信接口。另外,提出用于執(zhí)行根據(jù)本發(fā)明的方法的系統(tǒng),該系統(tǒng)具有可信任實(shí)體,該可信任實(shí)體具有用于存儲(chǔ)用于終端設(shè)備內(nèi)的執(zhí)行的程序指令的裝置、用于可變地修改程序指令從而修改的程序指令在根據(jù)前述權(quán)利要求的方法的每次執(zhí)行時(shí)改變的裝置、用于傳送修改的程序指令的裝置和用于出于檢查程序指令是否已經(jīng)由終端設(shè)備執(zhí)行的目的而驗(yàn)證所獲得的檢查值的裝置,并且該系統(tǒng)進(jìn)一步具有終端設(shè)備,該終端設(shè)備具有用于執(zhí)行修改的程序指令的裝置,通過該修改的程序指令的執(zhí)行獲得檢查值、用于從可信任實(shí)體調(diào)用程序指令的裝置和用于傳送所獲得的檢查值到可信任實(shí)體的裝置。有利地,可信任實(shí)體進(jìn)一步具有用于隨機(jī)化程序指令的裝置和/或用于計(jì)算和存儲(chǔ)修改的程序指令的散列值的裝置。這里,采用該散列值來驗(yàn)證所獲得的檢查值。進(jìn)一步,根據(jù)本發(fā)明的系統(tǒng)的可信任實(shí)體具有隨機(jī)數(shù)生成器,通過合并所生成的隨機(jī)數(shù)來生效可變修改??尚湃螌?shí)體優(yōu)選地含有具有相應(yīng)的安全性功能性的數(shù)據(jù)載體,諸如例如移動(dòng)無線電網(wǎng)絡(luò)中的智能卡、芯片卡、令牌、大容量存儲(chǔ)器卡、多媒體卡、用戶身份卡。特別地設(shè)計(jì)可信任實(shí)體為硬件組件并在移動(dòng)終端設(shè)備中作為緊密集成組件布置, 其要么是以例如M2M模塊、協(xié)處理器或信任基底的此形式從移動(dòng)終端設(shè)備不可移除的,要么是連接到移動(dòng)終端設(shè)備作為具有安全性功能性的可移除模塊,例如芯片卡,特別是用戶識(shí)別模塊,簡(jiǎn)稱SIM卡、智能卡、大容量存儲(chǔ)器卡、USB令牌、多媒體卡、安全微型SD卡、例如UMTS因特網(wǎng)棒的移動(dòng)無線電網(wǎng)絡(luò)令牌。替代地,設(shè)計(jì)可信任實(shí)體為以受信任平臺(tái)模塊的形式的軟件組件作為移動(dòng)終端設(shè)備的操作系統(tǒng)內(nèi)核的可信任部分或作為安全性軟件算法。TPM類似的可信任實(shí)體通過設(shè)備的設(shè)備中性或使用者中性的數(shù)據(jù)來總地檢查電子設(shè)備的系統(tǒng)整體性,該設(shè)備的設(shè)備中性或使用者中性的數(shù)據(jù)不準(zhǔn)許正被收集、評(píng)估和傳遞的設(shè)備或使用者的標(biāo)識(shí)。由于它們的本質(zhì)或經(jīng)由它們?cè)诳尚湃螌?shí)體中的出現(xiàn)而唯一地關(guān)聯(lián)于設(shè)備的這樣的設(shè)備專用數(shù)據(jù)可以因此示出終端設(shè)備相對(duì)于第三方的可信任度,但是它們并不使得可以得出關(guān)于具體終端設(shè)備并且特別是它的使用者的任何結(jié)論。
以下,將在附圖的基礎(chǔ)上更準(zhǔn)確地說明本發(fā)明或本發(fā)明的另外的實(shí)施例和優(yōu)勢(shì),該附圖僅僅描述本發(fā)明的實(shí)施例示例。以相同的附圖標(biāo)記提供附圖中相同的組件。附圖不認(rèn)為是真實(shí)比例;附圖的單獨(dú)要素可以用夸張尺寸或夸張的簡(jiǎn)明性來描述。以下示出圖I :用于檢查程序指令是否已經(jīng)在終端設(shè)備中執(zhí)行的根據(jù)本發(fā)明的系統(tǒng)的示例性描述;圖2 :用于檢查程序指令是否已經(jīng)在終端設(shè)備中執(zhí)行的根據(jù)本發(fā)明的方法的流程圖;圖3 :根據(jù)本發(fā)明修改的程序指令的第一實(shí)施例示例;圖4 :根據(jù)本發(fā)明修改的程序指令的第二實(shí)施例示例;圖5 :根據(jù)本發(fā)明修改的程序指令的第三實(shí)施例示例;圖6 :根據(jù)本發(fā)明修改的程序指令的第四實(shí)施例示例;
具體實(shí)施例方式圖I示出根據(jù)本發(fā)明的系統(tǒng)的粗略表示。這里,終端設(shè)備I具有中央處理單元2,簡(jiǎn)稱CPU。該終端設(shè)備優(yōu)選地是便攜式終端設(shè)備,特別是移動(dòng)無線電終端設(shè)備。出于清晰的目的而未表現(xiàn)終端設(shè)備2的另外的功能組。終端設(shè)備I的CPU 2能夠處理程序指令。出于此目的,可以使用現(xiàn)有技術(shù)中足夠熟知的基礎(chǔ)設(shè)備。此外,該系統(tǒng)具有可信任實(shí)體3,這里以示例的方式,是移動(dòng)無線電終端設(shè)備I的SIM卡3。替代地,可信任實(shí)體是操作系統(tǒng)內(nèi)核的可信任軟件組件,諸如例如MoWCore 。特別是存儲(chǔ)器區(qū)域4位于的SIM卡3或MobiCore 中。此外,可信任實(shí)體3和終端設(shè)備I擁有例如接觸型或非接觸的通信接口用來在終端設(shè)備I和可信任實(shí)體3之間建立數(shù)據(jù)通信5。在可信任實(shí)體3的存儲(chǔ)器區(qū)域4中,至少包含在終端設(shè)備I的CPU 2中執(zhí)行的程序指令13的一部分。程序指令13被理解為是機(jī)器可讀命令/語句(statement)或指令的序列,由此程序指令可以以機(jī)器語言、源程序文本或字節(jié)碼呈現(xiàn)??梢灶~外提供諸如編譯器、匯編器、解譯器的可能的中間翻譯單元。在可信任實(shí)體中,存在用來修改所調(diào)用的程序指令13的另外的裝置,借助于其可以檢查終端設(shè)備I執(zhí)行的程序指令。這些裝置以如下方式修改所調(diào)用的檢查指令13 :例如,使得將空閑任務(wù)14b插入所調(diào)用的程序指令13的任意位置、將特別是隨機(jī)數(shù)的可變值14c 并入程序指令13內(nèi)的任意位置??梢灶愃频厥褂脵z查指令14,借助于該檢查指令14可以修改程序指令13。全部這些措施公共的在于修改14是可變的,即,當(dāng)修改14經(jīng)由相同的所調(diào)用的程序指令13再次執(zhí)行時(shí),出現(xiàn)不同地修改的程序指令14。即,在執(zhí)行修改的程序指令時(shí),所調(diào)用的程序指令13的空閑任務(wù)14b的編號(hào)或位置是不同的,隨機(jī)號(hào)是不同的,或檢查指令實(shí)現(xiàn)不同的額外效果。無論可變地修改的程序指令14如何,所調(diào)用的程序指令13的原始效果總是相同的。因此,可以確保修改的和無修改的程序指令14、13的功能相同的執(zhí)行?,F(xiàn)在,在圖2到圖6中,將描述根據(jù)本發(fā)明的方法。在圖2中,表現(xiàn)終端設(shè)備I和可信任實(shí)體2之間的方法序列。在程序指令的執(zhí)行期間,出于終端設(shè)備I的執(zhí)行的目的,終端設(shè)備I接收請(qǐng)求以從可信任實(shí)體2調(diào)用下一程序指令13用于其自身。替代地,終端設(shè)備I接收請(qǐng)求以使可信任實(shí)體3檢查已經(jīng)執(zhí)行的程序指令13。替代地,在終端設(shè)備執(zhí)行之前,終端設(shè)備I發(fā)送要執(zhí)行的程序指令13的至少一部分到可信任實(shí)體,從而可信任實(shí)體3不需要在存儲(chǔ)器區(qū)域4中存儲(chǔ)程序指令13。根據(jù)圖2的箭頭6,現(xiàn)在終端設(shè)備調(diào)用程序指令13的至少一部分。此調(diào)用可以關(guān)于程序指令13的隨機(jī)選擇的部分,或者也可以將要執(zhí)行的程序指令13傳送到可信任實(shí)體。在可信任實(shí)體中,然后生效所調(diào)用的程序指令13的可變修改7。在圖3到圖6中更詳細(xì)地考慮該修改??勺兊匦薷牡某绦蛑噶?4現(xiàn)在經(jīng)由數(shù)據(jù)通信5傳送到終端設(shè)備1,參見箭頭
8。在終端設(shè)備I中,根據(jù)步驟9執(zhí)行修改的程序指令14。由于修改14,從而獲得檢查值9a。在步驟10中,傳送此檢查值到可信任實(shí)體。該檢查值例如是已經(jīng)并入程序指令13中作為修改的所執(zhí)行的檢查指令的結(jié)果。替代地,檢查值是修改本身,例如隨機(jī)數(shù)14c或合并的空閑任務(wù)14b的編號(hào)。該檢查值例如可以是散列值或修改的程序指令14的部分的密碼簽名,或者是已經(jīng)執(zhí)行的程序指令或尚未執(zhí)行的程序指令的部分13a、13b、13c。類似地,該檢查值可以是需要到來的與可信任實(shí)體的通信的加密。在全部情況下,根據(jù)步驟11在可信任實(shí)體中驗(yàn)證所獲得的檢查值。通過檢查值9a和可信任實(shí)體3的期望值的比較,這是特別可能的。這里,例如在傳送之前,通過執(zhí)行可信任實(shí)體3中的修改的程序指令14來生成期望值并存儲(chǔ)在實(shí)體3中。在簡(jiǎn)單情況下,期望值和檢查值對(duì)應(yīng)于修改14。當(dāng)檢查值9a對(duì)應(yīng)于期望值時(shí),在步驟12可信任實(shí)體3授權(quán)動(dòng)作。這可以是例如網(wǎng)絡(luò)訪問的使能、數(shù)據(jù)的簽名、在e服務(wù)的授權(quán)或更多。如果未驗(yàn)證檢查值,則未授權(quán)動(dòng)作。這和發(fā)現(xiàn)所調(diào)用的程序指令尚未以此形式由終端設(shè)備執(zhí)行是同 義的。在圖3中,表現(xiàn)了修改14的原理。這里將所調(diào)用的程序指令13表現(xiàn)為數(shù)據(jù)流。由修改14改變這些程序指令13,并獲得修改的程序指令。在圖4中,表現(xiàn)修改14的第二實(shí)施例示例。這里,修改14的一部分是密碼密匙14a。此密匙14a是根據(jù)PKI基礎(chǔ)設(shè)備構(gòu)建的非對(duì)稱密匙對(duì)的公共部分。該密匙的私密部分存儲(chǔ)在可信任實(shí)體3中?,F(xiàn)在,密匙14a例如并入檢查指令中作為對(duì)所調(diào)用的程序指令13的修改。通過終端設(shè)備執(zhí)行修改的程序指令14,來執(zhí)行檢查指令。這是例如圖4的完全數(shù)據(jù)流上的散列算法。根據(jù)檢查指令,在圖4中表現(xiàn)的數(shù)據(jù)流上執(zhí)行散列算法并且獲得散列值作為結(jié)果。在執(zhí)行所合并的檢查指令時(shí),現(xiàn)在首先獲得散列值作為檢查值9a,該檢查值9a以根據(jù)檢查指令的密碼密匙14a額外加密。在傳送加密的檢查值9a之后,可信任實(shí)體3將能夠借助于密匙的私密部分解密檢查值并隨后驗(yàn)證散列值。如果惡意軟件將第三方程序指令植入要執(zhí)行的程序指令中,則要獲得的檢查值,這里是所計(jì)算的散列值,將首先不匹配期望值。另外,加密將不能適當(dāng)?shù)厣Щ蛲耆簧?,從而可信任?shí)體將通過與期望值的比較而識(shí)別非加密的和錯(cuò)誤的檢查值,并不驗(yàn)證該檢查值??赡艿慕Y(jié)果例如是終端設(shè)備的禁用、網(wǎng)絡(luò)訪問的拒絕等。因?yàn)樾薷?4和密匙被認(rèn)作終端設(shè)備I和實(shí)體3之間的密碼加密通信的前提條件,所以也可以無任何進(jìn)一步檢查指令地傳送密匙14a。在圖5中,示出修改14的第三實(shí)施例示例。這里,將空閑任務(wù)14b插入修改14的部分中。所插入的空閑任務(wù)14b的編號(hào)和位置是隨機(jī)和任意的。在到終端設(shè)備I的傳送之前,在可信任實(shí)體3中執(zhí)行修改的程序指令14的散列值并且將此值存儲(chǔ)為期望值。在到終端設(shè)備I的傳送之后,類似地獲得散列值作為修改的程序指令14的檢查值9a。依據(jù)期望值,實(shí)體3隨后驗(yàn)證檢查值。因?yàn)榭臻e任務(wù)的編號(hào)和位置是任意的,散列值總是可變的并且不能由植入的第三方程序指令模擬。要散列的修改的程序指令的部分的檢查值可以了類似地合并為修改14。替代空閑任務(wù),也可以使用所謂的無意義命令或垃圾指令,例如運(yùn)行空程序循環(huán)X次。在圖6中,表現(xiàn)修改14的第四實(shí)施例示例。這里,程序指令13至少部分地細(xì)分為部分13a、13b、13c?,F(xiàn)在隨機(jī)化這些部分13a、13b、13c,S卩,以隨機(jī)方式交換順序。因?yàn)橐@得檢查值9a,所以也在這里計(jì)算在可信任實(shí)體中驗(yàn)證的數(shù)字簽名或散列值。因?yàn)轫樞虻慕粨Q是隨機(jī)的,所以植入的第三方程序指令不能重現(xiàn)期望值;因此,檢查值9a的驗(yàn)證失敗。在未表現(xiàn)的變型中,將隨機(jī)值14c并入所調(diào)用的程序指令中,該程序指令隨后驗(yàn)證為檢查值9a。當(dāng)然可以任意地組合全部描述的修改以保證安全檢查。另外,需要增加安全性以保障終端設(shè)備I和可信任實(shí)體3之間的傳送,例如通過另外的密碼加密。因此,植入的第三方程序指令的攔截可以排除。類似地包含在本發(fā)明的想法中的是,在可信任實(shí)體2的可變修改之前,終端設(shè)備I傳送要執(zhí)行的程序指令。因?yàn)樾薷目偸强勺兊牟⑶掖送庖砸獔?zhí)行的程序指令的形式鏈接于終端設(shè)備的計(jì)算步驟,所以第三方程序指令攔截和模擬所獲得的檢查值是不可能的。由有害第三方程序指令自身的修改的程序指令的檢查在計(jì)算機(jī)科學(xué)中已知為停機(jī)問題(halting problem)。已知此問題已經(jīng)證明為無解。附圖標(biāo)記列表I終端設(shè)備2終端設(shè)備的CPU
3可信任實(shí)體,SM4可信任實(shí)體的存儲(chǔ)器區(qū)域5數(shù)據(jù)通信連接6調(diào)用程序指令7可變地修改程序指令8傳送修改的程序指令9執(zhí)行修改的程序指令9a獲得檢查值10傳送所獲得的檢查值11驗(yàn)證檢查值12授權(quán)/使能動(dòng)作13程序指令13a, b, c程序指令的部分14 修改14a密碼密匙14b空閑任務(wù)14c可變值、隨機(jī)數(shù)
權(quán)利要求
1.一種用于檢查程序指令(13)是否已經(jīng)由終端設(shè)備(I)執(zhí)行的方法,具有方法步驟 -由終端設(shè)備(I)調(diào)用(6)所述程序指令(13),所述程序指令(13)以可執(zhí)行形式被存儲(chǔ)在可/[目任實(shí)體(3),特別是芯片卡中; -由可信任實(shí)體(3)可變地修改可執(zhí)行程序指令(7),從而修改的程序指令在所述方法的每次執(zhí)行時(shí)變化; -從所述可信任實(shí)體(3)傳送修改的程序指令(8)到所述終端設(shè)備(I); -由所述終端設(shè)備(I)執(zhí)行修改的程序指令(9),通過執(zhí)行修改的程序指令(9)而獲得檢查值(9a); -從所述終端設(shè)備(I)傳送所獲得的檢查值(10)到所述可信任實(shí)體(3);并且 -在所述可信任實(shí)體(3)中驗(yàn)證所獲得的檢查值(11),用于檢查所調(diào)用的程序指令(13)是否已經(jīng)在所述終端設(shè)備(I)中執(zhí)行。
2.根據(jù)權(quán)利要求I所述的方法,其中,直接在調(diào)用步驟之前或在調(diào)用步驟期間,從所述終端設(shè)備傳送所述程序指令(13)到所述可信任實(shí)體(3 )。
3.根據(jù)權(quán)利要求I或2所述的方法,其中,當(dāng)在所述可信任實(shí)體(3)中獲得的所述檢查值(9a)對(duì)應(yīng)于所述可信任實(shí)體(3)中的期望值時(shí),認(rèn)為所述程序指令(13)由所述終端設(shè)備(I)執(zhí)行。
4.根據(jù)前述權(quán)利要求的任一項(xiàng)所述的方法,其中,調(diào)用所述程序指令的至少部分(13a、13b、13c),并且其中,在所述方法的每次執(zhí)行時(shí)調(diào)用所述程序指令(13)的不同部分。
5.根據(jù)前述權(quán)利要求的任一項(xiàng)所述的方法,其中,所述程序指令(13)通過在所述終端設(shè)備(I)中可執(zhí)行的至少一個(gè)檢查指令(14)的合并來可變地修改。
6.根據(jù)前述權(quán)利要求的任一項(xiàng)所述的方法,其中,所述程序指令(13)通過特別是隨機(jī)值的值(14c)的合并,和/或不同編號(hào)的空閑指令(14b)的合并來可變地修改。
7.根據(jù)前述權(quán)利要求的任一項(xiàng)所述的方法,其中,所述可變修改(14)通過所述程序指令(13)的部分(13a、13b、13c)的隨機(jī)化而生效。
8.根據(jù)前述權(quán)利要求的任一項(xiàng)所述的方法,其中,可變地修改所述程序指令(13)以使得在所述終端設(shè)備(I)中修改的程序指令(9)的執(zhí)行之后,以密碼加密形式生效所獲得的檢查值的傳送,所述可信任實(shí)體能夠解密所獲得的檢查值(9a)。
9.根據(jù)前述權(quán)利要求的任一項(xiàng)所述的方法,其中,只要認(rèn)為執(zhí)行所述程序指令(13),所述可信任實(shí)體(3)就授權(quán)(12)動(dòng)作。
10.根據(jù)前述權(quán)利要求的任一項(xiàng)所述的方法,其中,所述程序指令(13)是所述終端設(shè)備(I)的起始程序指令,并且在所述終端設(shè)備(I)的引導(dǎo)期間和/或弓I導(dǎo)之后生效所述起始程序指令(6)的調(diào)用。
11.根據(jù)前述權(quán)利要求的任一項(xiàng)所述的方法,其中,所獲得的檢查值(9a)是修改的程序指令的至少部分(13a、13b、13c)的散列值。
12.根據(jù)前述權(quán)利要求的任一項(xiàng)所述的方法,其中,所述終端設(shè)備(I)是移動(dòng)無線電終端設(shè)備,并且所述可信任實(shí)體(3)是用戶識(shí)別模塊(SM),并且其中,所述傳送(8、10)經(jīng)由所述用戶識(shí)別模塊和所述移動(dòng)無線電終端設(shè)備的現(xiàn)有通信連接(5)而生效。
13.一種用于執(zhí)行根據(jù)前述權(quán)利要求的方法的系統(tǒng),具有 -可信任實(shí)體,具有-用于存儲(chǔ)用于在所述終端設(shè)備內(nèi)執(zhí)行的程序指令的裝置; -用于可變地修改所述程序指令以使得修改的程序指令在根據(jù)前述權(quán)利要求的方法的每次執(zhí)行時(shí)變化的裝置; -用于傳送修改的程序指令的 裝置;和 -用于出于檢查程序指令是否已經(jīng)由終端設(shè)備執(zhí)行的目的而驗(yàn)證所獲得的檢查值的裝置; 和 -終端設(shè)備,具有 -用于執(zhí)行修改的程序指令的裝置,通過該修改的程序指令的執(zhí)行獲得檢查值; -用于從所述可信任實(shí)體調(diào)用程序指令的裝置;和 -用于傳送所獲得的檢查值到所述可信任實(shí)體的裝置。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其中,所述可信任實(shí)體具有用于計(jì)算和存儲(chǔ)修改的程序指令的散列值的裝置,并且采用所述散列值用來驗(yàn)證所獲得的檢查值。
15.根據(jù)權(quán)利要求13所述的系統(tǒng),其中,所述可信任實(shí)體具有隨機(jī)數(shù)發(fā)生器,并且所述可變修改通過所生成的隨機(jī)數(shù)的合并來生效。
全文摘要
本發(fā)明涉及用于檢查程序指令(13)是否已經(jīng)由終端設(shè)備(1)執(zhí)行的方法和系統(tǒng)。出于此目的,終端設(shè)備請(qǐng)求程序指令(13),其中該程序指令(13)已經(jīng)以可執(zhí)行形式存儲(chǔ)在可信任實(shí)體(3)中,特別是芯片卡中。接著,以使得修改的程序指令在方法的每次執(zhí)行時(shí)改變的方式,可變地修改可信任實(shí)體(3)中的程序指令(13)。通過在終端設(shè)備(1)中執(zhí)行指令,獲得測(cè)試值(9a),其又被傳輸?shù)娇尚湃螌?shí)體(3)并且在該可信任實(shí)體中驗(yàn)證。
文檔編號(hào)G06F21/54GK102893288SQ201180023596
公開日2013年1月23日 申請(qǐng)日期2011年5月6日 優(yōu)先權(quán)日2010年5月10日
發(fā)明者S.鮑爾 申請(qǐng)人:德國(guó)捷德有限公司