两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

保護(hù)小應(yīng)用程序免受隱藏信道分析的制作方法

文檔序號:6484509閱讀:254來源:國知局
保護(hù)小應(yīng)用程序免受隱藏信道分析的制作方法
【專利摘要】本發(fā)明具體涉及裝備用于執(zhí)行小應(yīng)用程序的虛擬機(jī)的電子設(shè)備。虛擬機(jī)設(shè)置成識別小應(yīng)用程序的指令以及執(zhí)行對應(yīng)于各條指令的代碼。該虛擬機(jī)包括:關(guān)聯(lián)模塊,設(shè)置成將多個不同但操作上相同的代碼與同一指令相關(guān)聯(lián),以及選擇模塊,設(shè)置成以隨機(jī)的方式來選擇所述指令要執(zhí)行的代碼。本發(fā)明還涉及保護(hù)計數(shù)器電子設(shè)備免受隱藏信道攻擊的方法。
【專利說明】保護(hù)小應(yīng)用程序免受隱藏信道分析
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及保護(hù)小應(yīng)用程序免受隱藏信道分析的方法以及實施這種保護(hù)的設(shè)備?!颈尘凹夹g(shù)】
[0002]小應(yīng)用程序(applet)是指由虛擬機(jī)所執(zhí)行的任何程序。例如,使用Java Card語言編寫并將由芯片卡的JVM執(zhí)行的程序稱之為小應(yīng)用程序。以此類推,.NET小應(yīng)用程序或Multos小應(yīng)用程序指定用于芯片卡的以.NET環(huán)境(或Multos環(huán)境)開發(fā)的程序。在JavaCard內(nèi)容中,小應(yīng)用程序所包含的指令通常稱之為op-codes,表示“操作碼(operationcodes)”。
[0003]虛擬機(jī)是一個實體,它能夠執(zhí)行以一系列指令形式記錄的小應(yīng)用程序,當(dāng)執(zhí)行該小應(yīng)用程序時,它將各條指令翻譯成一個基本運(yùn)算或一系列基本運(yùn)算,并執(zhí)行這個或這些基本運(yùn)算。虛擬機(jī)有可能將記錄或傳輸程序的界面與執(zhí)行基本運(yùn)算的平臺相分離。虛擬機(jī)的例子具體包括 JVM(Java Virtual Machines = Java虛擬機(jī)),或者 CLI (Common LanguageInfrastructure =通用語言架構(gòu))的多種實現(xiàn),例如,適用于C#語言(.NET環(huán)境)的CLR(通用語言運(yùn)行時)。虛擬機(jī)常常只是純軟件。因此,有可能在彼此完全不同的各類平臺上執(zhí)行相同的小應(yīng)用程序,但會受制于現(xiàn)有適用于這些平臺中的各個不同平臺的虛擬機(jī)。然而,也有可能使用硬件虛擬機(jī)(例如專用電子電路)或結(jié)合軟件部分和硬件部分的虛擬機(jī)。
[0004]小應(yīng)用程序的逆向工程是指目的為理解小應(yīng)用程序設(shè)計方式以便復(fù)制、修改或移植該小應(yīng)用程序且通常沒有獲得其作者和/或持有者同意的行為。
[0005]隱藏信道分析是基于根據(jù)電子設(shè)備的物理實現(xiàn)所獲得的信息的分析。此信息常常是電子設(shè)備執(zhí)行程序所導(dǎo)致的某些物理量的變化。這些物理量(稱之為“隱藏信道”)可具體為設(shè)備的耗電量或者設(shè)備所產(chǎn)生的電磁場,并還有可能根據(jù)它們所需要的耗電量或它們所產(chǎn)生的電磁輻射來區(qū)分所執(zhí)行的任務(wù)。也有可能測量發(fā)出的振動(某些組件易于振動,并且振動方式取決于它們正在執(zhí)行的工作內(nèi)容而不同),或者溫度的變化,或者執(zhí)行特定任務(wù)所占用的時間(“時間攻擊”)等。
[0006]基本分析可簡單包括根據(jù)指定測量來識別目標(biāo)電子設(shè)備的指定特征。這種情況例如所謂SPA(簡單功率分析)的攻擊。更復(fù)雜的分析可依據(jù)基于大量測量的統(tǒng)計研究(這種情況例如DPA攻擊,表示為差分功率分析,以及更具體的是HODPA攻擊,表示為高階DPA)。
[0007]在Java Card的討論內(nèi)容中,常常追求保持小應(yīng)用程序所包括的一系列指令的機(jī)密性,以便避免為移植小應(yīng)用程序或者改變小應(yīng)用程序執(zhí)行過程所產(chǎn)生的結(jié)果而修改這些指令中的部分指令。
[0008]然而,有時有可能可以通過分析隱藏信道來找到這一系列指令并構(gòu)建程序,具體正如 Dennis Vermoen 的角軍釋,詳見Dennis Vermoen,“Reverse engineering of Java Cardapplets using power analysis,,,MSc Thesis, Delft Technology University (performedin Riscure), 2006。這暗不著Java Card小應(yīng)用程序存在著潛在的重大安全隱患。隱藏信道分析也已經(jīng)由被授權(quán)的組織(例如信息技術(shù)評價機(jī)構(gòu)-1TSEF)用于評估Java Card的安全性,正如 Serge Chaumette 等人的解釋:詳見 Serge Chaumette and Damien Sauveron^Anefficient and simple way to test the security of Java Cards,,,in Proceedingsof 3rd International Workshop on Security in Information Systems(WOSIS 2005)。Sagem Securite 還擁有——工頁專矛1J,i羊見 〃 Protection of a program interpreted by avirtual machine",number FR 2903508B1 {"由虛擬機(jī)解釋的程序的保護(hù)(Protection ofa program interpreted by a virtual machine)",專利號為 FR 2903508 BI),提出了遮蔽指令來防止此類分析。
[0009]為了試圖發(fā)現(xiàn)小應(yīng)用程序的指令,攻擊者可例如進(jìn)行兩個步驟。
[0010]在特征化步驟中,攻擊者將學(xué)習(xí)型小應(yīng)用程序下載到卡片中(對于一部分JavaCard來說,這種操作實際上是以授權(quán)的方式來執(zhí)行的,而對于另一部分,則必須進(jìn)行第一次攻擊以便下載學(xué)習(xí)型小應(yīng)用程序)。學(xué)習(xí)型小應(yīng)用程序是由攻擊者采用能夠通過相應(yīng)模型來特征化指令的方式進(jìn)行編碼的。該模型對應(yīng)于聯(lián)系指令隱藏信道的信號。因此,所有模型構(gòu)成已經(jīng)特征化的指令的模型庫。
[0011]在檢測步驟中,攻擊者測量來自他期望發(fā)現(xiàn)的小應(yīng)用程序執(zhí)行過程中的隱藏信道的信號。接著,他使用在特征化步驟中創(chuàng)建的模型庫來找到小應(yīng)用程序的指令序列。檢測是基于檢測步驟所采集的信號和存儲于庫的模型之間的相干性。一種最簡單的相干性測量是相關(guān)性。
[0012]因此,采用分析隱藏信道的逆向工程的成功通常取決于特征化和檢測這兩個步驟。關(guān)于特征化步驟,攻擊者可能面對下述四種具體狀況之一,如圖1所示:
[0013]Cl-容易獲得準(zhǔn)確模型,
[0014]C2-難以獲得準(zhǔn)確模型,
[0015]C3-不可能獲得模型,`
[0016]C4-獲得錯誤模型。
[0017]狀況Cl對應(yīng)于例如沒有實施硬件或軟件對策的情況或者僅僅實施行基本(無效)對策的情況。此類對策的典型示例是在信道(例如耗電量或電磁輻射)上添加隨機(jī)噪聲。然而,這一隨機(jī)噪聲可通過很多次地執(zhí)行特征化小應(yīng)用程序和均化信號分離出。
[0018]狀況C2尤其會發(fā)生于如果實施了一些硬件或軟件的對策。使用專利FR 2903508BI所提出的確定性噪聲的解決方案有可能使得模型的提取更加困難。使信號失去同步(例如:抖動,時鐘分頻等)的對策可干擾模型的獲得,但通常有可能籍助于信號處理技術(shù)找到它們。根據(jù)FR 2903508 BI的解決方案在性能方面相當(dāng)昂貴。此外,如果沒有準(zhǔn)確生成確定性噪聲(也就是說,如果它所生成的簽名不能與執(zhí)行討論指令時所自然生成的簽名非常類似),則攻擊者可設(shè)法提取原始信號。
[0019]狀況C3會出現(xiàn)在非常強(qiáng)的保護(hù)的情況下,例如籍助于低級別的干預(yù)措施,在硬件層面上,直接在執(zhí)行小應(yīng)用程序的組件中,或在軟件層面上,在解釋器(執(zhí)行小應(yīng)用程序的虛擬機(jī))中。這些干預(yù)措施的目的通常是使模型恒定,或者不恒定但完全相同,從而使之不可能區(qū)分出警告指令。然而在實踐中,要保證這一屬性是非常困難的,因此情況C3是相當(dāng)理論化的。
[0020]狀況C4會出現(xiàn)在被攻擊的設(shè)備被設(shè)計成在學(xué)習(xí)階段提供假模型(也就是說,該模型并不對應(yīng)于被攻擊小應(yīng)用程序的模型)時。根據(jù)專利FR 2903508 BI,有可能生成虛假類型的噪聲,也就是說,為了干擾檢測,在特征化和檢測兩個步驟中生成不同類型的噪聲。然而,模型(隱藏在噪聲后)通常是相同的。如果攻擊者設(shè)法找到分離添加噪聲的手段(例如分離來自用作噪聲的加密處理器的信號),他有可能設(shè)法通過隱藏信道分析來實施被攻擊的小應(yīng)用程序的逆向工程。
[0021]通常,認(rèn)為可能性C3和C4不能引起檢測步驟。一般,可能性Cl和C2允許他們在第二步驟中檢測指令,其中兩種狀況可被預(yù)見:
[0022]Dl-在執(zhí)行過程中易于檢測的模型,
[0023]D2-難以檢測的模型。
[0024]其中不可能檢測模型的狀況一般是狀況C3的結(jié)果,并因此不作研究。
[0025]通過隱藏信道分析實施小應(yīng)用程序逆向工程可能發(fā)生的五種情景在圖1中由S1、S2、S3、S4和S5示出。C2-D1的結(jié)合典型地非常少見。這是因為,如果對于攻擊者來說要創(chuàng)建特征化小應(yīng)用程序便于觀測目標(biāo)設(shè)備和確定模型都很困難,則會由于模型質(zhì)量的不確定權(quán)衡,使得后續(xù)檢測階段也是同樣很困難的。
[0026]為了防止這些攻擊,保護(hù)電子設(shè)備自身是可能的。例如,有可能在電源上添加噪聲以便使得對它的利用更加困難,平滑耗電量(例如使用電容器),通過適當(dāng)?shù)钠帘蝸硐拗齐姶泡椛涞?。還有可能使用特殊的內(nèi)部時鐘,它具有隨機(jī)改變的工作頻率這一特征,這使得測量結(jié)果難以使用,小應(yīng)用程序的指令以不斷改變的速率執(zhí)行并且這是攻擊者無從獲知的)。還有一些其它技術(shù),包括例如控制對電子設(shè)備的物理訪問和/或邏輯訪問。例如,Java Card芯片卡可使得小應(yīng)用程序的執(zhí)行取決于對PIN碼的正確展示。因此,盜取該芯片卡并期望從中提取信息的人員不能在沒有展示正確PIN碼的情況下來執(zhí)行目標(biāo)小應(yīng)用程序(細(xì)心的用戶將PIN碼記在腦中并不告訴其他人),因此不在處于實施攻擊的位置之中。
[0027]WO 02/50641 (Nicolas Giraud等)公開了一種用于保護(hù)運(yùn)算符(尤其是XOR運(yùn)算符)的執(zhí)行的技術(shù),該運(yùn)算符形成微處理器的一組算術(shù)指令的一部分。這一技術(shù)包括使用多個可能的操作序列的其中一個的執(zhí)行來替代相同操作符的執(zhí)行,該多種序列在功能上與該操作符相同。然而,這一技術(shù)保護(hù)了在使用該運(yùn)算符的前后過程中沒有任何差別的運(yùn)算符。此外,它并沒有設(shè)計特別保護(hù)具有虛擬機(jī)的電子設(shè)備(甚至還未公開此類電子設(shè)備)。
[0028]然而,這些對策是有缺點的。

【發(fā)明內(nèi)容】

[0029]本發(fā)明旨在改善該狀況。
[0030]本發(fā)明的一個方面涉及裝備用于執(zhí)行小應(yīng)用程序的虛擬機(jī)的電子設(shè)備,該虛擬機(jī)設(shè)置成識別小應(yīng)用程序的指令并執(zhí)行對應(yīng)于各條指令的代碼。該電子設(shè)備為例如芯片卡(SIM,銀行卡,健康卡等),電子身份文檔(電子護(hù)照,電子身份卡,電子visa等),USB秘鑰,令牌等等。虛擬機(jī)包括關(guān)聯(lián)模塊,設(shè)置成將多個不同但功能上完全相同的代碼與同一指令相關(guān)聯(lián)。因此,該虛擬機(jī)具有執(zhí)行同一指令的多種方式。有可能保護(hù)多條指令,這些指令各自都與多個不同但功能上完全相同的代碼相關(guān)聯(lián)。與各條指令相關(guān)聯(lián)的代碼組的定義可在上游完成(例如,在設(shè)計該設(shè)備時),并且該關(guān)聯(lián)模塊隨后僅存儲與各個有關(guān)指令相關(guān)聯(lián)的預(yù)定義代碼的列表。虛擬機(jī)還包括選擇模塊,設(shè)置成隨機(jī)選擇相關(guān)指令所要執(zhí)行的代碼。隨機(jī)是指對于該設(shè)備外部的實體來說不可能輕易地推斷出確定性特性,該特性有可能根據(jù)過去的選擇預(yù)測未來的選擇。這種選擇可例如籍助于所謂“偽隨機(jī)”發(fā)生器來完成,例如線性同余產(chǎn)生器,它可為軟件或硬件。由這一發(fā)生器所產(chǎn)生的一系列隨機(jī)數(shù)是確定的,但是周期長并具有不與外部共享的機(jī)密性。關(guān)聯(lián)模塊和選擇模塊為例如由該設(shè)備的處理器所執(zhí)行的軟件模塊或布線邏輯(例如通過籍助于專用電子組件所制造的虛擬機(jī))。
[0031]于是,使用與多個代碼相關(guān)聯(lián)的指令的相同小應(yīng)用程序的連續(xù)執(zhí)行導(dǎo)致不同的觀察結(jié)果并且難以從這些觀察結(jié)果中推斷出小應(yīng)用程序的實際發(fā)生。這一保護(hù)是有利的,因為對使用解釋器的設(shè)備(例如Java芯片卡)通常強(qiáng)調(diào)的特征之一是它們的開放特性以及第三方下載小應(yīng)用程序的可能性。該設(shè)備的不誠實用戶可試圖利用這一開放特性以下載學(xué)習(xí)型小應(yīng)用程序并嘗試攻擊該設(shè)備。
[0032]這一實施例是有利的,還在于它提供在比處理器級別更高的級別上實現(xiàn)的保護(hù)。因此,有可能保護(hù)虛擬機(jī)執(zhí)行小應(yīng)用程序時所使用某些指令。這一保護(hù)可增加至低級別的保護(hù),例如處理器此外可額外使用多個功能等價序列中的一個序列來代替處理器的某些操作。作為常規(guī),包括虛擬機(jī)的電子設(shè)備可引導(dǎo)執(zhí)行多個代碼,它的小應(yīng)用程序僅構(gòu)建為子組件。例如,某些代碼可對應(yīng)于電子設(shè)備的部分操作系統(tǒng)(或?qū)?yīng)于軟掩碼(softmasks)),并可在虛擬機(jī)沒有起作用(或甚至通知它們執(zhí)行)的情況下執(zhí)行。
[0033]根據(jù)一個實施例,與指令相關(guān)聯(lián)的多個代碼通過該設(shè)備執(zhí)行它們的持續(xù)時間長度(時長)來區(qū)分。因此,小應(yīng)用程序的執(zhí)行時長不可預(yù)料地波動,不僅僅是在全局的(執(zhí)行小應(yīng)用程序的總時長)層面上,而且還是在與多個代碼相關(guān)聯(lián)的各條指令層面上。
[0034]根據(jù)一個實施例,與所述指令相關(guān)聯(lián)的多個代碼通過當(dāng)設(shè)備執(zhí)行代碼時它們所產(chǎn)生的電磁輻射的耗電量來區(qū)分。因此,對當(dāng)執(zhí)行小應(yīng)用程序時的耗電量的電磁輻射的測量不可能簡單地推斷該小應(yīng)用程序正在做些什么,電磁(或耗電)簽名對于相關(guān)聯(lián)多個代碼的各條指令而言是可變的。
[0035]根據(jù)一個實施例,虛擬機(jī)設(shè)置成依據(jù)設(shè)備物理特性的測量結(jié)果來隨機(jī)選擇與多個代碼相關(guān)聯(lián)的各條指令所要執(zhí)行的代碼。例如,有可能籍助于模數(shù)轉(zhuǎn)換器來測量電阻器的噪聲,電阻器的噪聲具有隨機(jī)的物理屬性。一項或多項物理測量結(jié)果都可直接使用,或作為軟件偽隨機(jī)發(fā)生器的種子來使用,或者后處理,例如籍助于加密處理器,以便提升它們的統(tǒng)計屬性。依據(jù)物理特性來提升選擇的質(zhì)量(不可預(yù)知性)。
[0036]根據(jù)一個實施例,兩條指令各自都與多個代碼相關(guān)聯(lián),相關(guān)聯(lián)第一指令的至少一個代碼與相關(guān)聯(lián)第二指令的一個代碼具有至少一個共同的特性,該共同特性包括當(dāng)設(shè)備執(zhí)行代碼時的設(shè)備執(zhí)行時長以及產(chǎn)生的耗電量和電磁輻射。根據(jù)一個實施例,該共同特征受限于這三項特性中的一項或多項。因此,任何攻擊者有時將面臨兩條不同的指令卻具有相同簽名(即相同的執(zhí)行時長和/或相同的耗電量和/或相同的電磁輻射)的情況,使之難以識別該指令。為了適應(yīng)執(zhí)行時長,有可能固定為最長的時長(兩條指令之間的最長時長);然而,推薦的做法是不僅僅只將簡單的等待循環(huán)添加至最快的指令,因為等待循環(huán)所具有的電磁簽名原則上不同于任意指令的簽名。建議采用執(zhí)行與那些最長的指令相似的計算或操作且這些計算或操作的結(jié)果可被忽略,而不是簡單的等待循環(huán)。這與被限制于將相同指令展示為多條不同指令(當(dāng)該指令多次執(zhí)行時)的實施例相比是更為有利的。這是因為易于將任何攻擊者在其傾向于進(jìn)行簽名分析期間弓I向甚至更進(jìn)一步地犯錯。[0037]根據(jù)一個實施例,虛擬機(jī)設(shè)置成識別最頻繁的指令并僅為所述最頻繁的指令使用多個代碼。虛擬機(jī)可識別最頻繁的指令(對于該指令來說多個代碼是可用的),例如使用預(yù)先存儲的指令列表(例如在設(shè)計設(shè)備時定義該列表)。因此,就有可能在統(tǒng)計上確定如此這般的指令是更頻繁的。還可能分析所討論的小應(yīng)用程序的代碼,以便識別出這一特定小應(yīng)用程序的最頻繁指令。
[0038]根據(jù)一個實施例,五個最頻繁的指令是指令sload, sconst_0, baload, getfield_a_this, sstore,并且只有這五條指令或者乃至這五條指令的任意子集可被修改。
[0039]根據(jù)一個實施例,最頻繁的指令包括來自于指令加、減、乘、按模計算和異或計算中的一條指令,并有利的是僅僅屬于這一指令子集(加、減、乘、按模計算和異或計算)中的一條指令。這種基本的算術(shù)指令,它們非常普通,出現(xiàn)在任何小應(yīng)用程序中的概率極大,并且頻繁出現(xiàn)。通過關(guān)注于對一些非常頻繁的指令的保護(hù),使得實現(xiàn)保護(hù)的復(fù)雜性最小化(通過避免保護(hù)所有指令集),同時確保該保護(hù)相當(dāng)有效(藉助于所選擇指令的頻繁出現(xiàn),由此引導(dǎo)任何攻擊者犯錯,這些指令的簽名不斷改變)。
[0040]根據(jù)一個實施例,虛擬機(jī)設(shè)置成識別最敏感的指令并僅為這些最敏感的指令使用多個代碼。因此,保護(hù)最關(guān)鍵的操作(攻擊者的興趣常常僅在于小應(yīng)用程序的某些部分)。正如對于最頻繁指令的識別那樣,最敏感指令的識別可以是靜態(tài)的,即最敏感的指令列表可在設(shè)計虛擬機(jī)和/或設(shè)計包括虛擬機(jī)的設(shè)備時預(yù)先編程在虛擬機(jī)中。根據(jù)一個實施例,最敏感指令包括來自于執(zhí)行加密算法的指令和訪問控制指令(尤其是用于驗證PIN碼或密碼的指令)中的一條指令。
[0041]本發(fā)明的另一方面涉及保護(hù)電子設(shè)備免受隱藏信道攻擊的方法,該電子設(shè)備裝備識別小應(yīng)用程序的指令并執(zhí)行對應(yīng)于每條指令的代碼的虛擬機(jī)。一條指令(至少)與多個不同但功能上完全相同的代碼相關(guān)聯(lián),虛擬機(jī)隨機(jī)選擇與多個代碼相關(guān)聯(lián)的該指令所要執(zhí)行的代碼。
[0042]根據(jù)一個實施例,與所述指令相關(guān)聯(lián)的多個代碼通過設(shè)備執(zhí)行它們的持續(xù)時間長度(時長)來區(qū)分。
[0043]根據(jù)一個實施例,與所述指令相關(guān)聯(lián)的多個代碼通過設(shè)備執(zhí)行它們時所產(chǎn)生的耗電量或電磁福射來區(qū)分。
[0044]根據(jù)一個實施例,虛擬機(jī)依據(jù)設(shè)備的物理特性的測量結(jié)果影響所述指令所要執(zhí)行的代碼的選擇。該物理特性(由模數(shù)轉(zhuǎn)換器取樣分量中的電噪聲等)不能直接使用,而只是根據(jù)該物理特性計算出的參數(shù),它可能例如具有更好的統(tǒng)計屬性。
[0045]根據(jù)一個實施例,兩條指令各自與多個代碼相關(guān)聯(lián),相關(guān)聯(lián)第一指令的至少一個代碼和相關(guān)聯(lián)第二指令的一個代碼具有至少一個共同的特性,該共同特性包括設(shè)備的執(zhí)行時長,以及當(dāng)設(shè)備執(zhí)行代碼時所產(chǎn)生的耗電量和電磁輻射。
[0046]根據(jù)一個實施例,虛擬機(jī)識別最頻繁的指令并僅為所述最頻繁的指令使用多個代碼。
[0047]本發(fā)明的其它方面、目的和優(yōu)點將通過閱讀實施例的詳細(xì)說明而清晰。
【專利附圖】

【附圖說明】
[0048]同樣,借助于下述附圖,本發(fā)明也易于更好地理解:[0049]圖1示出了通過隱藏信道分析的小應(yīng)用程序的逆向工程的多種情景;
[0050]圖2示出了根據(jù)本發(fā)明一個實施例所實施的小應(yīng)用程序保護(hù)的實施例。
【具體實施方式】
[0051]根據(jù)一個實施例,保護(hù)由虛擬機(jī)解釋的程序使其免受使用隱藏信道分析(稱之為“邊信道分析”)的逆向工程是基于備選模型的使用,使特征化和檢測階段更加困難。
[0052]于是,指令(操作碼)可對應(yīng)于多個不同的代碼,并因此對應(yīng)于多個不同的模型。
[0053]此外,相同的模型可對應(yīng)于多條不同的指令。例如,加運(yùn)算(ADD)通常非常接近于減運(yùn)算(SUB)。有可能將ADD和SUB以它們的簽名相同或非常相似的方式來編碼。例如,可能預(yù)見使用加ADD,其采用兩個操作數(shù)Opl和0p2作為參數(shù),可有下述方式:
[0054]讀取Opl
[0055]讀取0p2
[0056]X = 0p2 的補(bǔ)數(shù)
[0057]計算0pl+0p2
[0058]將結(jié)果寫入存儲器
[0059]這里可看出,計算該運(yùn)算的第二參數(shù)的補(bǔ)數(shù)但并未使用該計算的結(jié)果。有可能以下述方式執(zhí)行相應(yīng)的運(yùn)算SUB:
[0060]讀取Opl
[0061]讀取0p2
[0062]X = 0p2 的補(bǔ)數(shù)
[0063]計算Op I+X
[0064]將結(jié)果寫入存儲器
[0065]可以看出,此SUB運(yùn)算執(zhí)行與ADD操作完全相同的步驟,除了在第四行它使用補(bǔ)數(shù)X作為參數(shù)代替參數(shù)0p2之外。然而,這在執(zhí)行ADD和SUB所產(chǎn)生的電磁或其他輻射中一般是觀測不到的,由于僅僅只改變所使用的地址(X的地址不是0p2的地址)。然而,在同一存儲器組件的第一地址或其它地址中讀取到的數(shù)據(jù)內(nèi)容原則上產(chǎn)生相同的痕跡。這一結(jié)果是ADD運(yùn)算可能比常規(guī)ADD運(yùn)算稍慢些,因為它計算了顯然不需要的補(bǔ)數(shù)X(后面未使用),但是另一方面,事實上,計算該補(bǔ)數(shù)使之有可能獲得與SUB運(yùn)算相同的簽名。根據(jù)一個實施例,求補(bǔ)數(shù)是以硬件方式與其它步驟并行執(zhí)行的步驟,并沒有使ADD運(yùn)算減慢。
[0066]也有可能為相當(dāng)不同的運(yùn)算獲得相同的簽名,例如,具有一個操作數(shù)的運(yùn)算(求補(bǔ)數(shù),取非,移位I比特等),以及具有兩個操作數(shù)的運(yùn)算(加,乘等)。尤其是,有可能連續(xù)兩次讀取唯一的操作數(shù),從而模擬讀取兩個操作數(shù)。
[0067]根據(jù)一個實施例,相同指令的模型是不同的,不僅在形式上(耗電量,電磁輻射),而且在執(zhí)行持續(xù)時間上(執(zhí)行時長),例如,通過添加不需要的運(yùn)算。不需要的運(yùn)算可以為NOP運(yùn)算。建議對于此類任務(wù)(對執(zhí)行時長的人為延長)不僅僅使用Ν0Ρ,因為隨后可能發(fā)生攻擊者會處于定位NOP的位置上并將它們認(rèn)定為“時間填充”的指示器,它的執(zhí)行時長必須被推斷出以便確定真正的執(zhí)行時長。
[0068]根據(jù)一個實施例,僅針對存儲在特定類型存儲器(例如ROM)中的小應(yīng)用程序能啟動某些模型。ROM存儲器一般包括高度受控的小應(yīng)用程序,因為在遮蔽ROM組件的步驟中它們必須已經(jīng)由負(fù)責(zé)制造該ROM組件的制造商“下載”,它還包括小應(yīng)用程序的信息,使得制造商因此獲得驗證其內(nèi)容的機(jī)會。對于很多種小應(yīng)用程序(特別是對于Java小應(yīng)用程序),很容易(并根據(jù)現(xiàn)有技術(shù)已知)獲得小應(yīng)用程序的源代碼,甚至僅在它的二進(jìn)制碼可供使用時(這可為上述制造商的情況)。
[0069]根據(jù)一個實施例,ROM模型不適用于將小應(yīng)用程序下載到不是ROM的存儲器,例如EEPROM或閃存或電池保護(hù)的RAM。這是有利的,由于這種(可重復(fù)寫入)的存儲器一般比ROM更利于存取并尤其是可能由攻擊者操縱以便在其上存儲經(jīng)選擇的特征化小應(yīng)用程序(這是在ROM存儲器的情況下不可能的或者至少不可能制成的,由于制造商和/或他的顧客和/或銷售方會進(jìn)行檢查)。
[0070]根據(jù)一個實施例,模型是取決于存儲區(qū)域而不同的。例如,電子設(shè)備的一些操作系統(tǒng)分割可重復(fù)寫入的存儲器(例如EEPROM和FLASH),至少定義了:
[0071]第一區(qū)域,可訪問第三方,以便根據(jù)第一保護(hù)等級以受控方式下載小應(yīng)用程序,以及,
[0072]第二區(qū)域,可訪問設(shè)備的制造商,以便下載校正程序(補(bǔ)丁,軟掩碼等)或者小應(yīng)用程序(可選小應(yīng)用程序升級包),該第二區(qū)域一般可根據(jù)第二保護(hù)等級(常高于第一保護(hù)等級)來控制。
[0073]除了上述兩個區(qū)域外還可存在補(bǔ)充區(qū)域。第二保護(hù)等級可以是確定的并且不可修改的,而第一保護(hù)等級是可以修改的。該第一等級是可通過例如電信運(yùn)營商(典型的是采用SIM卡的電子設(shè)備的情況)、金融機(jī)構(gòu)(典型的是銀行卡的情況)或被任何購買該電子設(shè)備并使其終端用戶使用的單位來修改。
[0074]因此,通過根據(jù)存儲器類型和/或區(qū)域改變使用的模型,使得攻擊者更難以進(jìn)行特征化指令,由于可能由攻擊者執(zhí)行的特征化小應(yīng)用程序?qū)λ行?yīng)用程序而言并不相關(guān),并尤其對于存儲在某些種類的存儲器中或某些存儲器區(qū)域中被攻擊者視為更敏感且無法訪問的的小應(yīng)用程序而言并不相關(guān)。這尤其可能涉及系統(tǒng)小應(yīng)用程序,例如提供認(rèn)證功能或身份證共享功能(信用證書)的小應(yīng)用程序。認(rèn)證功能可具體包括一項或多項生物識別認(rèn)證(通過“match-on-card”技術(shù)的指紋校對,虹膜校對等),密碼校對,PIN碼等。共享身份證的功能可包括例如由系統(tǒng)小應(yīng)用程序共享的PIN碼功能,用于避免每個人的所有用戶小應(yīng)用程序必須向用戶請求相同的PIN碼,這會有害于電子設(shè)備的用戶易用性(典型的是,用戶因需要多次輸入相同的密碼而惱怒),甚至一般也會不利于安全性。這是由于每次新輸入的PIN碼都有可能承受攻擊(社交工程,例如觀察PIN的輸入并記住它的人,或按鍵日志類型的間諜系統(tǒng),即按鍵敲擊攔截器)。此外,每次新輸入電子設(shè)備的PIN碼都有可能潛在地承受攻擊。
[0075]根據(jù)為應(yīng)用目標(biāo)定義的某些規(guī)則交替地激活同一指令的模型。例如,所有模型都可隨機(jī)激活,能夠根據(jù)專利申請F(tuán)R 2903508 ( “由虛擬機(jī)解釋的程序的保護(hù)”,2006年7月10日提交)中定義的機(jī)制來確定適用于小應(yīng)用程序的規(guī)則,也就是說,有可能考慮小應(yīng)用程序的摘要(例如,應(yīng)用于小應(yīng)用程序的二進(jìn)制代碼的SHA-1函數(shù)的結(jié)果),以便對于同一指令,取決于它屬于一個小應(yīng)用程序還是另一個而不同地改變模型。
[0076]備選模型可應(yīng)用于所有指令或一組最關(guān)鍵的指令和/或最頻繁調(diào)用的指令。尤其可能例如將訪問NVRAM或EEPROM類型存儲器的指令作為目標(biāo),它們是耗電大戶,并常常更易于通過分析耗電量來檢測。
[0077]根據(jù)一個實施例,由這一對策產(chǎn)生的效果如下文所述。
[0078]當(dāng)攻擊者能夠使用原始信號輕易地特征化模型時(如果該組件大量泄漏并且沒有添加任何噪聲或者如果添加噪聲但它可輕易過濾掉,就有可能發(fā)生這一狀況),備選模型的使用增加了攻擊者在特征化階段所要確定的模型的數(shù)量以及在檢測階段所要識別(匹配)的候選者的數(shù)量。因而,模型的檢測變得更為困難。
[0079]因此,攻擊者可能試圖實施的噪聲提取以便發(fā)現(xiàn)與該指令相關(guān)聯(lián)的模型變得更為復(fù)雜。
[0080]攻擊者可能注意到存在由目標(biāo)電子設(shè)備使用的針對相同指令的不同模型(根據(jù)設(shè)備執(zhí)行指令的前后過程)。這類攻擊者然后可試圖考慮這一特性,通過嘗試確定目標(biāo)電子設(shè)備所使用的一項或多項規(guī)則用來選擇一個模型而不是另一個模型。在這種情況下,攻擊者不能使用原始信號來特征化模型或者他被迫記錄信號的很多次出現(xiàn),然后平均這些信號以便推斷出噪聲:
[0081]-如果攻擊者用于確定模型所使用的學(xué)習(xí)型小應(yīng)用程序的一項或多項規(guī)則和使用要被攻擊的小應(yīng)用程序的電子設(shè)備所使用的一項或多項規(guī)則并不相同,則在兩個不同階段所獲取的同一指令的模型一般也是不同的。因而,不能使用在特征化階段所獲取的模型(由于它們先天是錯誤的),以便成功地找到要被攻擊的小應(yīng)用程序的指令。攻擊因此也變得更加困難。
[0082]-如果對于學(xué)習(xí)型小應(yīng)用程序和要被攻擊的小應(yīng)用程序來說,一項或多項規(guī)則是相同的,但是對于各條指令所使用的多個代碼以這種方式來確定,使得與這些代碼相關(guān)聯(lián)的模型并不具有相同的時長以及不在同一時刻調(diào)用,那么可以期望的是,根據(jù)這一實施例的對策產(chǎn)生抖動并導(dǎo)致不同步。通過平均化信號,在兩個步驟(特征化和檢測)中的同一指令的平均模型因此并不相同。檢測因而變得更加困難。
[0083]根據(jù)一個實施例,僅僅只保護(hù)幾條指令(最頻繁的,即那些統(tǒng)計上被小應(yīng)用程序頻繁調(diào)用的指令),這有可能使得對性能產(chǎn)生小的影響(大約幾個百分比,即小應(yīng)用程序的執(zhí)行速度幾乎不變)。因此,通過將例如四個可能的代碼而不是僅僅一個代碼與指令相關(guān)聯(lián)來僅改變一個非常頻繁的指令(例如加運(yùn)算),這一簡單事實可能足以使得攻擊變得更為復(fù)雜,而對于開發(fā)時間(在解釋器,設(shè)備,小應(yīng)用程序等的設(shè)計階段)和性能(根據(jù)這一實施例,被保護(hù)的小應(yīng)用程序與未被保護(hù)的小應(yīng)用程序幾乎同樣快)兩者都有著非常微不足道的影響。
[0084]根據(jù)一個實施例,最頻繁的指令為:sload,sconst_0, baload, getfield_a_this和sstore,并且它是受保護(hù)的這些指令的子集(或者甚至所有這些指令)。
[0085]解釋器(例如,JCVM類型,表示Java Card虛擬機(jī))通常是使用C語言開發(fā)的軟件。因此,有可能使用這種語言來修改解釋器,這具有移植性更高的優(yōu)點(可簡單地從一個設(shè)備改變至另一個設(shè)備,這些設(shè)備例如具有不同類型的處理器)。
[0086]受限于保護(hù)頻繁指令的一個實施例是特別有利的,特別是對于具有影響性能的高度約束的產(chǎn)品時,例如低容量存儲器,慢速處理器等。例如,芯片卡所具有的計算和存儲資源比那些傳統(tǒng)計算機(jī)要小得多,本實施例特別適用于它們。
[0087]僅將某些指令作為目標(biāo)也有可能避免翻譯器的開發(fā)時間長和尺寸大。此外,通過與不同代碼相關(guān)聯(lián)的指令產(chǎn)生抖動(使用具有不同執(zhí)行時間的代碼),也同樣能夠干擾僅具有一個模型的其他指令的模型的生成和檢測。
[0088]圖2涉及根據(jù)一個實施例的小應(yīng)用程序保護(hù)的實現(xiàn)。在圖2中,OPi表示指令號i (具有操作碼OPi)。Ri表示對應(yīng)于指令OPi的小應(yīng)用程序的規(guī)則。規(guī)則Ri可以例如為指令OPi定義所要執(zhí)行的代碼的選擇算法。它可以是傳統(tǒng)的偽隨機(jī)算法,但也可以是使用不等概率所選擇不同代碼的算法,即使因難以預(yù)測而具有隨機(jī)性。OP.SEQi表示執(zhí)行由小應(yīng)用程序所構(gòu)建的指令序列中的指令OPi的步驟。在Op.SEQi期間所執(zhí)行的代碼并不總是相同;它首先取決于指令OPi,它確定必須由代碼和由規(guī)則Ri所執(zhí)行的功能,其中,規(guī)則Ri確定了必須執(zhí)行的代碼(在執(zhí)行此功能的所有代碼中)。
[0089]因此,根據(jù)圖2所示實施例的虛擬機(jī),從一系列指令(0P1、0P2、0P3、...)表示的小應(yīng)用程序,從一系列規(guī)則(Rl、R2、R3、...)和從一系列代碼組(0P1的代碼、0P2的代碼、0P3的代碼)中產(chǎn)生與一條指令相關(guān)聯(lián)的各組代碼,執(zhí)行小應(yīng)用程序所提供任務(wù)的執(zhí)行序列(OP.SEQl、OP.SEQ2、OP.SEQ3、...),但是使用隨機(jī)選擇的代碼。
[0090]當(dāng)然,本發(fā)明并不限制于上文通過示例描述的實施例;它可擴(kuò)展至其它變體。
[0091]因此,可能為芯片卡的設(shè)備已在上文中描述。然而,實施本發(fā)明的設(shè)備還可為例如移動通信設(shè)備、非接觸式識別標(biāo)簽、非接觸式識別等級讀取器、芯片卡、這種芯片卡的讀取器、訪問控制系統(tǒng),等等。有利于實施本發(fā)明的芯片卡的類型尤其是健康芯片卡、身份或護(hù)照芯片卡、銀行芯片卡、訪問控制芯片卡或支持電子游戲的芯片卡。
[0092]可以受到保護(hù)的小應(yīng)用程序并不限制為Java Card小應(yīng)用程序,而是可為例如.NET小應(yīng)用程序或Multos小應(yīng)用程序。
【權(quán)利要求】
1.裝備用于執(zhí)行小應(yīng)用程序的虛擬機(jī)的電子設(shè)備,該虛擬機(jī)設(shè)置成識別小應(yīng)用程序的指令并執(zhí)行對應(yīng)于各條指令的代碼,其特征在于,所述虛擬機(jī)包括關(guān)聯(lián)模塊,設(shè)置成將多個不同但功能上完全相同的代碼與同一指令相關(guān)聯(lián);以及選擇模塊,設(shè)置成隨機(jī)選擇所述指令所要執(zhí)行的代碼。
2.根據(jù)權(quán)利要求1所述的設(shè)備,其特征在于,所述多個代碼與所述指令相關(guān)聯(lián)并通過設(shè)備執(zhí)行代碼的持續(xù)時間長度(時長)來區(qū)分。
3.根據(jù)權(quán)利要求1或2所述的設(shè)備,其特征在于,所述多個代碼與所述指令相關(guān)聯(lián)并通過設(shè)備執(zhí)行代碼時產(chǎn)生的耗電量或電磁輻射來區(qū)分。
4.根據(jù)上述權(quán)利要求中任一項所述的設(shè)備,其特征在于,所述虛擬機(jī)設(shè)置成依據(jù)設(shè)備物理特性的測量結(jié)果來影響所述指令所要執(zhí)行的代碼的隨機(jī)選擇。
5.根據(jù)上述權(quán)利要求中任一項所述的設(shè)備,其特征在于,所述兩條指令各自與多個代碼相關(guān)聯(lián),相關(guān)聯(lián)于第一指令的至少一個代碼與相關(guān)聯(lián)于第二指令的一個代碼具有至少一個共同特性,可能的共同特性為設(shè)備執(zhí)行代碼的時長以及當(dāng)設(shè)備執(zhí)行代碼時產(chǎn)生的耗電量和電磁輻射。
6.根據(jù)上述權(quán)利要求中任一項所述的設(shè)備,其特征在于,所述虛擬機(jī)設(shè)置成識別最頻繁的指令并僅為所述最頻繁的指令使用多個代碼。
7.根據(jù)權(quán)利要求6所述的設(shè)備,其特征在于,所述最頻繁的指令包括取自加、減、乘、按模計算和異或計算指令中的一條指令。
8.根據(jù)權(quán)利要求1至5中任一項所述的設(shè)備,其特征在于,所述虛擬機(jī)設(shè)置成識別最敏感的指令并僅為所述最敏感的指令使用多個代碼。
9.根據(jù)權(quán)利要求8所述的設(shè)備,其特征在于,所述最敏感的指令包括取自使用密碼算法的指令和訪問控制指令中的一條指令。
10.保護(hù)電子設(shè)備免受隱藏信道攻擊的方法,所述電子設(shè)備裝備識別小應(yīng)用程序的指令并執(zhí)行對應(yīng)于各條指令的代碼的虛擬機(jī),其特征在于,所述指令與多個不同但功能上完全相同的代碼相關(guān)聯(lián),所述虛擬機(jī)隨機(jī)選擇所述指令要執(zhí)行的代碼。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述多個代碼與所述指令相關(guān)聯(lián)并通過設(shè)備執(zhí)行代碼的時長來區(qū)分。
12.根據(jù)權(quán)利要求10或11所述的方法,其特征在于,所述多個代碼與所述指令相關(guān)聯(lián)并通過設(shè)備執(zhí)行代碼時產(chǎn)生的耗電量或電磁輻射來區(qū)分。
13.根據(jù)權(quán)利要求10至12中任一項所述的方法,其特征在于,所述虛擬機(jī)依據(jù)設(shè)備物理特性的測量結(jié)果來選擇所述指令要執(zhí)行的代碼。
14.根據(jù)權(quán)利要求10至13中任一項所述的方法,其特征在于,所述兩條指令各自與多個代碼相關(guān)聯(lián),相關(guān)聯(lián)于第一指令的至少一個代碼與相關(guān)聯(lián)于第二指令的一個代碼具有至少一個共同特性,可能的共同特性為設(shè)備執(zhí)行代碼的時長以及當(dāng)設(shè)備執(zhí)行代碼時產(chǎn)生的耗電量和電磁福射。
15.根據(jù)權(quán)利要求10至14中任一項所述的方法,其特征在于,所述虛擬機(jī)識別最頻繁的指令并僅為所述最頻繁的指令使用多個代碼。
【文檔編號】G06F21/14GK103597490SQ201180066192
【公開日】2014年2月19日 申請日期:2011年12月22日 優(yōu)先權(quán)日:2010年12月24日
【發(fā)明者】弗雷德里克·鮑萊特, 邁克爾·巴塞, 桑赫-哈·萊 申請人:茂福公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
达孜县| 杭州市| 新绛县| 武威市| 密云县| 鲁山县| 化州市| 黎城县| 厦门市| 墨脱县| 龙游县| 景洪市| 东乡县| 金川县| 娄烦县| 新河县| 嘉定区| 乐安县| 开化县| 汝州市| 怀集县| 仪陇县| 台南县| 全州县| 湖州市| 兴和县| 新昌县| 原平市| 武夷山市| 河曲县| 泽普县| 鄂托克前旗| 三江| 平度市| 仁化县| 湛江市| 赣榆县| 永川市| 特克斯县| 平舆县| 莲花县|