欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

具有增強的安全屬性的計算機處理器及方法

文檔序號:6354391閱讀:241來源:國知局
專利名稱:具有增強的安全屬性的計算機處理器及方法
技術領域
本發(fā)明涉及一種配置用于執(zhí)行計算機指令序列的計算機處理器,該處理器包括 跳轉(zhuǎn)處理器,用于在計算機指令序列中檢測跳轉(zhuǎn)指令,該跳轉(zhuǎn)指令確定序列中的跳轉(zhuǎn)目標位置;執(zhí)行單元,用于執(zhí)行計算機指令,以獲得數(shù)據(jù)結(jié)果;以及存儲處理器,用于將數(shù)據(jù)結(jié)果存儲到計算機指令所確定的存儲目的地。本發(fā)明還涉及一種執(zhí)行計算機指令序列的方法,該方法包括在計算機指令序列中檢測跳轉(zhuǎn)指令,該跳轉(zhuǎn)指令確定序列中的跳轉(zhuǎn)目標位置;執(zhí)行計算機指令,以獲得數(shù)據(jù)結(jié)果;以及將數(shù)據(jù)結(jié)果存儲到計算機指令所確定的存儲目的地。本發(fā)明還涉及一種對應的微碼程序。
背景技術
計算機處理器涉及各種安全應用。安全應用包括與大型金融利益相關的商業(yè)應用。計算機處理器處理機密的私有信息,例如密鑰、可執(zhí)行計算機代碼等等,這些機密的私有信息通常存儲在與計算機處理器相連的或者包括在計算機處理器內(nèi)的存儲器中。示例包括銀行應用,其中計算機處理器負責匯款認證;以及內(nèi)容分發(fā)系統(tǒng),其中計算機處理器負責將對內(nèi)容的訪問限制到分發(fā)系統(tǒng)的訂戶。例如,內(nèi)容分發(fā)可以通過包括多個機頂盒的網(wǎng)絡來完成。在每一個機頂盒中,通常集成在智能卡中的計算機處理器包括秘密密鑰,和/或用于對諸如音樂、電影等的內(nèi)容進行解密和/或?qū)α硗獾拿荑€進行解密的秘密解密算法。智能卡中使用的計算機處理器經(jīng)常用于安全應用。例如,智能卡用于銀行應用。智能卡可以用于驗證個人身份號碼(PIN)、應用或驗證數(shù)字簽名等。智能卡還用于移動電話中 (例如作為訂戶身份模塊),以及用于機頂盒中。當然,計算機處理器所處理的秘密信息(例如密鑰)必須保持機密,這是因為秘密信息的曝光可能導致未經(jīng)授權的訪問、未經(jīng)授權的交易等。此外,人們希望將應用操作盡可能地保持為秘密的。嘗試操縱計算機處理器(具體為智能卡)或者嘗試以非法和/或未經(jīng)授權的方式使用計算機處理器中所包含的信息的人稱為“攻擊者”。例如,通過常規(guī)信道,攻擊者可以接受采取智能卡形式的計算機處理器,智能卡包含存儲器,例如只讀存儲器(ROM)。攻擊者可以接受智能卡作為用于機頂盒的常規(guī)內(nèi)容預訂的一部分,或者他們可以接受包含ROM的智能卡作為旨在進行常規(guī)銀行智能卡交易的銀行常規(guī)消費者。采用各種防范措施來保護計算機處理器和計算機處理器所執(zhí)行的應用不受攻擊者的攻擊。例如,應用可以使用各種形式的加密技術,例如加密、認證碼、完整性檢驗等。然而,加密技術的使用通常依賴于秘密信息。一旦攻擊者獲得對秘密信息的訪問,他便能夠充分利用所泄露的秘密。不幸的是,顯然計算機處理器容易通過所謂的旁道泄露信息,包括秘 S fn 息。旁道信息是可以從安全應用的物理實現(xiàn)中獲得的信息,不同于可以從應用預期的可觀察輸入-輸出行為中獲得的信息。旁道的示例包括定時信息、功率消耗、電磁輻射等等。一般來說,如果旁道與計算機處理器所處理的秘密信息相關,則對旁道的訪問將泄露與該秘密信息相關的某些信息。 具體而言,已經(jīng)證實了測量處理器所消耗的功率包含與處理器在消耗功率的同時所執(zhí)行的操作相關的大量信息。功率消耗和電磁輻射測量統(tǒng)稱為“軌跡(trace) ”。在現(xiàn)有技術中,已經(jīng)提供了不同的建議,用于解決通過旁道的信息泄露的問題。 例如,題為 “Cryptographic architecture with instructionmasking and other techniques for thwarting differential power analysis,,的美國專利申請 2007/0180541公開了用于防止利用時間線對齊的信息泄露攻擊的裝置及方法。該裝置及方法將隨機數(shù)目的指令插入到加密算法內(nèi),從而泄露的信息更難以在時間上對齊,而使得攻擊者無法破壞加密。鑒于與計算機處理器(特別是智能卡)的安全性相關的經(jīng)濟利益不斷增加,這些設備的安全性變得愈加重要。人們對于具有增強的安全屬性的計算機處理器感興趣。

發(fā)明內(nèi)容
在有隨機指令插入的情況下,解釋功率消耗變得愈加困難。然而,隨機指令的插入存在不足。在對執(zhí)行相同應用程序的相同處理器的功率消耗進行多次測量時,可以確認哪些指令是實指令(因為它們存在于所有的測量中),以及哪些指令是偽指令(因為它們僅存在于一次測量中)。此外,如果對多次測量進行充分平均,則偽指令傾向于被平均掉,而留下實指令。發(fā)明人洞悉有一條指令往往會最有助于泄漏信息條件跳轉(zhuǎn)。典型地,由于功率消耗根據(jù)是否進行跳轉(zhuǎn)而改變,人們可以從旁道認識到是否進行了跳轉(zhuǎn)。甚至操作的定時也將至少稍微發(fā)生變化,這是因為應用程序耗費的時間將根據(jù)是否進行了跳轉(zhuǎn)而有所不同。 已知在適當?shù)慕y(tǒng)計分析之后,甚至是產(chǎn)生如總執(zhí)行時間之類的小信息的旁道也可以向攻擊者泄露秘密信息。提出了一種計算機處理器,配置用于執(zhí)行計算機指令序列,所述計算機處理器顯著地減小從跳轉(zhuǎn)中泄漏的信息(如果不能完全減小的話)。該處理器包括跳轉(zhuǎn)處理器,用于在計算機指令序列中檢測跳轉(zhuǎn)指令,所述跳轉(zhuǎn)指令確定所述計算機指令序列中的跳轉(zhuǎn)目標位置;執(zhí)行單元,用于執(zhí)行計算機指令,以獲得數(shù)據(jù)結(jié)果;以及存儲處理器,用于將數(shù)據(jù)結(jié)果存儲到計算機指令所確定的存儲目的地。所述計算機處理器包括前進跳轉(zhuǎn)檢測器,用于檢測所述跳轉(zhuǎn)目標位置在所述計算機指令序列中的位置是否比所述跳轉(zhuǎn)指令在所述計算機指令序列中的位置更遠。所述計算機處理器包括跳轉(zhuǎn)禁止器,用于根據(jù)所述前進跳轉(zhuǎn)檢測器檢測到所述跳轉(zhuǎn)目標位置在所述計算機指令序列中的位置是否比所述跳轉(zhuǎn)指令在所述計算機指令序列中的位置更遠來禁止執(zhí)行前進跳轉(zhuǎn)指令。所述執(zhí)行單元配置用于執(zhí)行所述計算機指令序列中的至少一個中間計算機指令,所述中間計算機指令位于所述計算機指令序列中被禁止的前進跳轉(zhuǎn)指令與跳轉(zhuǎn)目標位置之間。所述計算機處理器包括存儲目的地修改器,用于修改所述至少一個中間計算機指令所確定的存儲目的地。取決于秘密信息(即,秘密條件)的跳轉(zhuǎn)指令在旁道中是可見的。根據(jù)該秘密條件,通過旁道泄漏的信息發(fā)生變化。尤其是在取決于不同秘密信息的多個軌跡可以比較時, 可以從軌跡中直接推導出該條件,也可以直接統(tǒng)計分析從軌跡中推導出該條件。如常規(guī)處理器之類的計算機處理器能夠執(zhí)行計算機指令序列。該指令序列可以包含跳轉(zhuǎn),處理器能夠例如通過修改程序計數(shù)器,使用其跳轉(zhuǎn)處理器來執(zhí)行該跳轉(zhuǎn)。其他計算機指令在被執(zhí)行時可以產(chǎn)生數(shù)據(jù)結(jié)果。例如,該指令可以將兩個數(shù)相加,或者從存儲器中取回某個值。最后,存儲處理器能夠?qū)⑦@一數(shù)據(jù)結(jié)果存儲在某一目的地,例如存儲在存儲地址、寄存器、輸出設備等等。在該跳轉(zhuǎn)是前進跳轉(zhuǎn)的情況下,可以抑制通過取決于條件的跳轉(zhuǎn)而泄漏的信息。 由前進跳轉(zhuǎn)檢測器檢測前進跳轉(zhuǎn)的存在。前進跳轉(zhuǎn)檢測器可以通過將前進目標位置與該跳轉(zhuǎn)指令本身所存儲的位置進行比較來檢測該跳轉(zhuǎn)是否是前進跳轉(zhuǎn)。典型地,如果跳轉(zhuǎn)指令被存儲的存儲地址小于跳轉(zhuǎn)位置目標(也表示為存儲地址),則該跳轉(zhuǎn)是前進跳轉(zhuǎn)。計算機處理器還包括用于利用跳轉(zhuǎn)禁止器來抑制前進跳轉(zhuǎn)指令的裝置。如果無論秘密條件是否為真都不進行跳轉(zhuǎn),則跳轉(zhuǎn)所引起的旁道不再與秘密條件相關。禁止跳轉(zhuǎn)也稱為抑制跳轉(zhuǎn)。根據(jù)該架構(gòu),可以通過將跳轉(zhuǎn)目標位置修改為程序計數(shù)器的當前值或下一指令的地址來實現(xiàn)抑制跳轉(zhuǎn)。通過防止跳轉(zhuǎn)指令與跳轉(zhuǎn)目標位置之間的中間指令更新處理器狀態(tài)來“取消,,該中間指令。優(yōu)選地,中間指令消耗的功率與它們通常所消耗的功率差不多。這是由于下列原因而實現(xiàn)的禁止的跳轉(zhuǎn)之后的中間指令與在由于跳轉(zhuǎn)所需要的某一條件為假而沒有進行跳轉(zhuǎn)的情況下的相同指令之間的唯一差是其存儲目的地。為了確保處理器上運行的應用程序具有與前進跳轉(zhuǎn)被抑制時相同的效果,采用了若干措施。由于處理器繼續(xù)執(zhí)行指令,處理器將在某一點在原始跳轉(zhuǎn)目標位置處結(jié)果。在這點上,應用程序?qū)⒕哂邢嗤男Ч?。中間指令在應用程序上通過存儲數(shù)據(jù)結(jié)果而產(chǎn)生的效果通過改變存儲目的地的存儲目的地修改器來抵消。如果計算機處理器抑制了前進跳轉(zhuǎn),則中間指令的效果也被抑制。然而,由于照常執(zhí)行中間指令,因而旁道將與秘密條件不相關。盡管優(yōu)選地執(zhí)行所有的中間指令,然而在執(zhí)行若干指令的情況下,相關性也會顯著減小。這里所描述的對策的附加優(yōu)點在于它對于應用程序編程者是透明的。即便是不知道與旁道相關的安全性風險的編程者所產(chǎn)生的應用程序在根據(jù)本發(fā)明的計算機處理器上執(zhí)行時,也將泄漏較少秘密。在一實施例中,跳轉(zhuǎn)指令是配置用于在滿足一條件的情況下引起跳轉(zhuǎn)的條件跳轉(zhuǎn),以及存儲目的地修改器配置用于如果所述條件不滿足,則不修改所述至少一個中間計算機指令所確定的存儲目的地。條件跳轉(zhuǎn)尤其容易泄漏最多信息(在詳細描述中,將給出示出了抑制無條件跳轉(zhuǎn)也是有利的示例)。通過在不考慮跳轉(zhuǎn)所取決于的條件是否為真的情況下執(zhí)行中間指令,避免了通過旁道從處理器泄漏條件。如果進行跳轉(zhuǎn)所需要的條件為真,并且該跳轉(zhuǎn)是前進跳轉(zhuǎn),則不進行跳轉(zhuǎn)。對禁止的跳轉(zhuǎn)之后的中間指令的存儲目的地進行修改,直到計算機處理器到達跳轉(zhuǎn)目標位置。這時,執(zhí)行照常繼續(xù),具體是不再修改存儲目的地。如果進行跳轉(zhuǎn)所需的條件是假的,則也不進行跳轉(zhuǎn)。不修改條件跳轉(zhuǎn)之后的中間指令的存儲目的地。在一實施例中,計算機處理器包括寄存器文件。中間計算機指令所確定的存儲目的地是寄存器文件中的目的地寄存器。存儲目的地修改器配置用于將目的地寄存器修改為預定偽寄存器。優(yōu)選地,寄存器文件包含為該目的而保留的附加寄存器,該附加寄存器對編程者隱藏。例如,應用程序所使用的具有16個寄存器的常規(guī)寄存器文件可以擴展至第17 個寄存器,第17個寄存器保留為偽寄存器。在一實施例中,計算機處理器與存儲器相連,或者包括存儲器。中間計算機指令所確定的存儲目的地是存儲器中的目的地地址。存儲目的地修改器配置用于將目的地地址修改為預定偽地址。一種避免中間指令影響應用程序的效果的方式是將數(shù)據(jù)結(jié)果的存儲路由至偽位置。注意,存儲到偽寄存器和/或偽存儲地址產(chǎn)生與存儲到常規(guī)寄存器和/或地址完全相同的旁道。將需要使用多個軌跡的精細統(tǒng)計分析,以使得單個地址中的差別可見(如果能夠完全示出)。強迫攻擊者從分析一個或幾個軌跡到分析大量軌跡是一個重要的優(yōu)點。寫入偽目的地的定時特性與寫入常規(guī)目的地的相同。執(zhí)行中間指令的缺點在于應用程序的總執(zhí)行時間可能增大。注意,這一增大并不像看到的那樣有害,這是因為只有前進跳轉(zhuǎn)被禁止。應用程序的大部分執(zhí)行時間都花費在后向跳轉(zhuǎn)所控制的循環(huán)上。是否進行條件后向跳轉(zhuǎn)與現(xiàn)有技術中的常規(guī)狀況相同。一種進一步避免性能降低的方式是給執(zhí)行的中間指令的數(shù)目制定一預定最大值。如果達到預定最大值,則如常規(guī)地執(zhí)行跳轉(zhuǎn)。在備選實施例中,前進跳轉(zhuǎn)檢測器還被配置用于檢測所述跳轉(zhuǎn)目標位置與所述跳轉(zhuǎn)指令位置之間的位置差是否小于預定小跳轉(zhuǎn)閾值。僅僅突然進行小的前進跳轉(zhuǎn),添加的指令數(shù)目仍然很小,并且時間的增大也是適度的。例如,預定最大值或預定小跳轉(zhuǎn)閾值可以設置為8。注意,如詳細描述中的示例所示出的,在某些情況下,對應于跳過1或2個指令的值已經(jīng)提供了安全性優(yōu)點。具有對這些預定極限的各種選擇的執(zhí)行簡檔(profiling)示出了可接受的數(shù)目。一般而言,選擇的數(shù)目越大,則越能對抗旁道分析。在一實施例中,處理器包括用于配置預定最大值或預定小跳轉(zhuǎn)閾值的輸入。如果中間指令正好包括跳轉(zhuǎn),那么進行該跳轉(zhuǎn)可能顯著地影響應用程序的執(zhí)行。 這可以采用多種方式避免。例如,編譯器可以進行執(zhí)行路徑分析,并標記適于禁止的前進跳轉(zhuǎn)。于是,計算機處理器可以配置用于識別該標記。僅對不會在其隨后的中間指令中引起跳轉(zhuǎn)的指令進行標記,以進行抑制。編譯器也可以只以在預定最大值或預定小跳轉(zhuǎn)閾值以下的跳轉(zhuǎn)目標標記跳轉(zhuǎn)。編譯器也可以只對取決于秘密信息的那些跳轉(zhuǎn)進行標記。在備選實施例中,跳轉(zhuǎn)禁止器還配置用于禁止執(zhí)行位于所述計算機指令序列中被禁止的跳轉(zhuǎn)指令與所述跳轉(zhuǎn)目標位置之間的所有其他跳轉(zhuǎn)指令。這可以通過設置通用無跳轉(zhuǎn)標記、并在到達跳轉(zhuǎn)目標位置時重置該標記來實現(xiàn)。類似地,如果在中間指令的執(zhí)行期間發(fā)生中斷,則應用程序的執(zhí)行可能受影響。一種解決該問題的方式是保存處理器的狀態(tài),該狀態(tài)包括指示存儲目的地是否被重新路由的標記以及跳轉(zhuǎn)目標位置。備選地,在一實施例中,跳轉(zhuǎn)禁止器還配置用于禁止在執(zhí)行位于所述計算機指令序列中被禁止的跳轉(zhuǎn)指令與所述跳轉(zhuǎn)目標位置之間的所述計算機指令序列的中間計算機指令期間發(fā)生中斷。通過完全抑制中斷,避開了中斷問題。特別地,如果執(zhí)行的中間指令的數(shù)目相對較小,則抑制中斷的效果并不顯著。優(yōu)選地,跳轉(zhuǎn)指令的功率消耗獨立于跳轉(zhuǎn)禁止器對該跳轉(zhuǎn)指令的禁止。優(yōu)選地,存儲數(shù)據(jù)結(jié)果的功率消耗獨立于其存儲目的地。通過避免相對小數(shù)目的寄存器(例如,程序計數(shù)器、地址線、寄存器文件等等)處的信息泄露,可以隱藏整個中間指令的功率消耗。這樣,可以使用相對昂貴的不適用于整個計算機處理器的對策。例如,可以向這些計算機處理器組件的功率消耗添加相對大量的噪聲。在一實施例中,所述執(zhí)行單元配置用于執(zhí)行位于所述計算機指令序列中被禁止的跳轉(zhuǎn)指令與所述跳轉(zhuǎn)目標位置之間的所述計算機指令序列的所有中間計算機指令。通過執(zhí)行所有中間指令,最小化了跳轉(zhuǎn)對于軌跡的影響。在一實施例中,計算機處理器包括消除寄存器(kill register)。所述跳轉(zhuǎn)禁止器配置用于在禁止所述跳轉(zhuǎn)指令時,將所述消除寄存器設置為所述跳轉(zhuǎn)目標位置與所述跳轉(zhuǎn)指令的位置之間的位置差。所述執(zhí)行單元配置用于在執(zhí)行中間計算機指令時,減小所述消除寄存器。所述存儲目的地修改器配置用于如果所述消除寄存器為正,則修改所述中間計算機指令所確定的存儲目的地。例如,消除寄存器可以被設置為跳轉(zhuǎn)指令所指向的存儲地址與跳轉(zhuǎn)指令所位于的存儲地址之間的差。備選地,可以向相關跳轉(zhuǎn)應用跳轉(zhuǎn)抑制,其中跳轉(zhuǎn)目標位置表示為要跳過的存儲位置的數(shù)目??梢詫⒁^的存儲位置的數(shù)目加載到消除寄存器內(nèi)。諸如特定 RISC處理器(例如MIPS處理器)之類的某些計算機處理器將每條指令存儲在預定數(shù)目的存儲位置處。在那些情況下,消除寄存器可以設置為指令數(shù)目,針對該指令重新路由數(shù)據(jù)結(jié)果存儲。跳轉(zhuǎn)指令自身可以參照要跳過的指令的數(shù)目,或者該數(shù)目可以通過將存儲地址差除以每條指令的存儲地址數(shù)目來計算。例如,如果每條指令占用4個存儲地址,并且跳轉(zhuǎn)目標位置的存儲地址與跳轉(zhuǎn)指令自身的差是8,因此存在2個中間指令。處理器,例如執(zhí)行單元,配置用于在執(zhí)行中間計算機指令時減小消除寄存器。每條中間指令使得消除寄存器減小,以使得當諸如程序計數(shù)器之類的計算機處理器到達跳過目標位置時消除寄存器為0。本發(fā)明的另一方面涉及一種智能卡,該智能卡包括根據(jù)本發(fā)明的計算機處理器。 如上所述,智能卡尤其經(jīng)常用于敏感應用中。另一方面,由于攻擊者很容易訪問智能卡的旁道,因而智能卡更易受攻擊。具體而言,攻擊者可以在測量其智能卡的功率消耗、電磁輻射或其執(zhí)行時間的同時使用該智能卡。另一方面,智能卡受到以低成本制作的壓力。根據(jù)本發(fā)明的對策可以利用相對少的附加門電路來實現(xiàn)。本發(fā)明的另一方面涉及一種執(zhí)行計算機指令序列的方法。所述方法包括在計算機指令序列中檢測跳轉(zhuǎn)指令,所述跳轉(zhuǎn)指令確定所述計算機指令序列中的跳轉(zhuǎn)目標位置; 執(zhí)行計算機指令,以獲得數(shù)據(jù)結(jié)果;以及將數(shù)據(jù)結(jié)果存儲到計算機指令所確定的存儲目的地。該方法還包括檢測所述跳轉(zhuǎn)目標位置在所述計算機指令序列中的位置是否比所述跳轉(zhuǎn)指令在所述計算機指令序列中的位置更遠;根據(jù)所述前進跳轉(zhuǎn)檢測器檢測到所述跳轉(zhuǎn)目標位置比所述跳轉(zhuǎn)指令在所述計算機指令序列中的位置更遠來禁止執(zhí)行前進跳轉(zhuǎn)指令;執(zhí)行所述計算機指令序列中的至少一個中間計算機指令,所述中間計算機指令位于所述計算機指令序列中被禁止的前進跳轉(zhuǎn)指令與跳轉(zhuǎn)目標位置之間;以及修改所述至少一個中間計
8算機指令所確定的存儲目的地。根據(jù)本發(fā)明的方法可以在計算機上實現(xiàn)為一種計算機實現(xiàn)的方法,例如采用微碼、專用硬件或二者組合的形式。用于根據(jù)本發(fā)明的方法的可執(zhí)行代碼可以存儲在計算機程序產(chǎn)品上。計算機程序產(chǎn)品的示例包括存儲設備、光學存儲設備、集成電路、服務器、在線軟件等等。在優(yōu)選實施例中,計算機程序包括計算機程序代碼裝置,適于在所述計算機程序運行在計算機上時執(zhí)行根據(jù)本發(fā)明的方法的所有步驟。優(yōu)選地,該計算機程序體現(xiàn)在計算機可讀介質(zhì)上。提供了一種計算機處理器,該計算機處理器向旁道隱藏跳轉(zhuǎn)指令,具體是條件指令。該處理器包括前進跳轉(zhuǎn)檢測器,用于檢測具有位于前面的跳轉(zhuǎn)目標位置的前進跳轉(zhuǎn)指令;以及跳轉(zhuǎn)禁止器,用于禁止執(zhí)行前進跳轉(zhuǎn)指令。該計算機處理器配置用于執(zhí)行位于被禁止的前進跳轉(zhuǎn)指令與跳轉(zhuǎn)目標位置之間的至少一個中間計算機指令。該處理器還包括存儲目的地修改器,用于修改至少一個中間計算機指令所確定的存儲目的地,以抑制執(zhí)行中間指令的影響。由于中間指令是在不考慮前進跳轉(zhuǎn)指令的情況下執(zhí)行的,因而跳轉(zhuǎn)被隱藏在旁道中。還隱藏諸如密鑰之類的秘密信息,前進跳轉(zhuǎn)可能取決于該秘密信息。


作為示例并參照附圖進一步詳細說明了本發(fā)明,在附圖中
圖1是示意了根據(jù)本發(fā)明的計算機處理器的框圖。
圖2是示意了跳轉(zhuǎn)處理器的框圖。
圖3a是示出了智能卡的示意頂視圖。
圖北是示意了集成電路的框圖。
圖4是示意了根據(jù)本發(fā)明的方法的流程圖。
在所有的附圖中,相似或?qū)奶卣饔上嗤綀D標記指示。
附圖標記列表
100計算機處理器
105程序計數(shù)器
110,120,130,150,160 流水線寄存器
115指令高速緩存
125寄存器文件
135目的地寄存器線
140執(zhí)行單元
145跳轉(zhuǎn)處理器
155數(shù)據(jù)高速緩存
165數(shù)據(jù)高速緩存旁路
170地址線
175程序計數(shù)器更新線
180操作數(shù)值線
185寄存器更新線
190寄存器值更新線
210預流水線級
220指令取回級
230解碼級
240執(zhí)行級
250存儲器存取級
252跳轉(zhuǎn)確定器
254前進跳轉(zhuǎn)確定器
256消除寄存器
260目的地地址修改器
262目的地寄存器修改器
264跳轉(zhuǎn)禁止器
300智能卡
310集成電路
305支撐卡
320計算機處理器
322存儲器
324加速器
326通信元件
330總線
400流程圖
具體實施例方式盡管本發(fā)明容許采取多種不同形式的實施例,然而附圖中示出了并且在這里詳細描述了一個或多個特定實施例,應理解,本公開應視為本發(fā)明原理的示例而并不旨在使本發(fā)明局限于所示出和描述的特定實施例。圖1采取示意性形式示出了根據(jù)本發(fā)明的計算機處理器。通過箭頭示出了一些數(shù)據(jù)相關性。本實施例使用采用5個級的流水線實現(xiàn)。本發(fā)明也可以應用于不使用流水線或者使用更多或更少級的情況。圖1按順序進一步示出了級210、指令取出級220、解碼級230、執(zhí)行級M0、以及存儲器存取級250。這也是正常操作期間的指令通過這些級的順序。級210在流水線的適當級之前。級210有時稱為“級0”。這些級之間是流水線寄存器110、120、130、150和160。流水線寄存器被插入在流水線級之間,并且被同步定時。每一個時鐘信號之間的時間被設置為大于流水線級之間的最長延遲,以使得當寄存器被定時時,寫入其中的數(shù)據(jù)是前一級的最終結(jié)果。根據(jù)本發(fā)明的計算機處理器可以省略流水線寄存器,例如使用異步邏輯。圖1示出了針對每一個流水線級的一個或多個組件,有利于理解本發(fā)明。應理解, 實施例可以包括諸如計算機處理器領域中常用的多個組件。各個級的組件的分布可以不同。一個級中示出的功能可以轉(zhuǎn)移到不同的級,或者分布在多個級上。
級210示出了程序計數(shù)器105。程序計數(shù)器105經(jīng)由流水線寄存器110連接到指令取回級220。指令取回級220包括指令高速緩存115。指令高速緩存115經(jīng)由流水線寄存器120連接到解碼級230。解碼級230包括寄存器文件125。寄存器文件125經(jīng)由流水線寄存器130連接到執(zhí)行級M0。執(zhí)行級240包括執(zhí)行單元140和跳轉(zhuǎn)處理器145。跳轉(zhuǎn)處理器145經(jīng)由程序計數(shù)器更新線175連接到程序計數(shù)器105。執(zhí)行單元140和跳轉(zhuǎn)處理器 145經(jīng)由流水線寄存器150連接到存儲器存取級250。存儲器存取級250包括數(shù)據(jù)高速緩存155。跳轉(zhuǎn)處理器145適于將存儲目的地從流水線寄存器130轉(zhuǎn)發(fā)至存儲器存取級250。 數(shù)據(jù)高速緩存巧5連接到流水線寄存器160。流水線寄存器160連接到寄存器文件125,以將計算機處理器100 (具體為執(zhí)行單元140或數(shù)據(jù)高速緩存15 所產(chǎn)生的數(shù)據(jù)結(jié)果寫入到寄存器中。執(zhí)行單元140可以包括ALU。計算機處理器100包括存儲處理器。存儲處理器由數(shù)據(jù)高速緩存巧5 (通過數(shù)據(jù)高速緩存155可以將值寫入到存儲器中)、旁路165、以及線 185和190 (通過線185和190可以將值寫入到寄存器文件125中)實現(xiàn)。在操作期間,計算機處理器100操作如下。程序計數(shù)器確定計算機處理器100要取回并執(zhí)行的下一個指令。計算機計數(shù)器通過流水線寄存器110與指令取回級220相連。 指令取回級220包括指令高速緩存115。程序計數(shù)器105指示要從指令高速緩存115取回的指令。例如通過使用程序計數(shù)器預測器來獲得并取回針對指令高速緩存115的下一個指令。取回針對指令高速緩存器115的下一個指令可以并行進行。對在指令取回級220中獲得的指令進行解碼,并經(jīng)由流水線寄存器120將其轉(zhuǎn)發(fā)至解碼級230。在指令取回級220中,將指令劃分成寄存器操作數(shù)說明符,指示哪些寄存器包含隨后組件要作用于的數(shù)據(jù),和/或可選地指示寄存器目的地,寄存器目的地指示結(jié)果數(shù)據(jù)要被寫入的寄存器。經(jīng)由流水線寄存器120將從該指令中獲得的寄存器操作數(shù)說明符轉(zhuǎn)發(fā)至包括在解碼級230中的寄存器文件125。寄存器文件125配置用于接收寄存器操作數(shù)說明符作為輸入,并產(chǎn)生操作數(shù)值作為與所指定的寄存器相對應的輸出。經(jīng)由目的地寄存器線135將寄存器目的地轉(zhuǎn)發(fā)至跳轉(zhuǎn)處理器145。跳轉(zhuǎn)處理器145也經(jīng)由流水線寄存器130和操作數(shù)值線180從寄存器文件125接收操作數(shù)值。只有在操作數(shù)值包含目標地址(可以作為跳轉(zhuǎn)目標位置,或目的地地址)的情況下,計算機處理器100可以配置用于將操作數(shù)值轉(zhuǎn)發(fā)至跳轉(zhuǎn)處理器145。跳轉(zhuǎn)處理器145確定是否必須進行跳轉(zhuǎn),或是由于跳轉(zhuǎn)是無條件的,或者由于跳轉(zhuǎn)是有條件的并且條件為真。如果跳轉(zhuǎn)處理器145配置用于常規(guī)操作,則它將經(jīng)由程序計數(shù)器更新線175來更新程序計數(shù)器105,程序計數(shù)器更新線175將跳轉(zhuǎn)處理器145與程序計數(shù)器105相連。在這種情況下,不對經(jīng)由操作數(shù)值線180轉(zhuǎn)發(fā)至跳轉(zhuǎn)處理器145的地址、或經(jīng)由目的地寄存器線135轉(zhuǎn)發(fā)至跳轉(zhuǎn)處理器145的目的地寄存器進行修改。然而,如果根據(jù)本發(fā)明配置跳轉(zhuǎn)處理器145,則跳轉(zhuǎn)處理器145將確定是否必須禁止該跳轉(zhuǎn)。跳轉(zhuǎn)處理器145將確定該跳轉(zhuǎn)是否是適于禁止的前進跳轉(zhuǎn)。具體而言,跳轉(zhuǎn)處理器145可以測試以查看前進跳轉(zhuǎn)是否是小跳轉(zhuǎn),例如小于5個指令的前進。如果該跳轉(zhuǎn)要被禁止,則跳轉(zhuǎn)處理器145將不修改程序計數(shù)器105。例如,跳轉(zhuǎn)處理器145可以利用要執(zhí)行的下一個地址來重寫程序計數(shù)器105。如果在跳轉(zhuǎn)處理器之后不修改程序計數(shù)器,則這個選擇是適合的。例如,跳轉(zhuǎn)處理器145可以利用其當前值來重寫程序計數(shù)器105。如果在流水線中稍后更新程序計數(shù)器,則這個選擇是適合的。將通過跳轉(zhuǎn)處理器145的目標地址修改為預定偽存儲地址。將通過跳轉(zhuǎn)處理器 145的目的地寄存器修改為預定偽寄存器。將寄存器文件125中的寄存器之一保留為偽寄存器。將連接至或者可連接至計算機處理器100的存儲器中的偽地址所指示的存儲器位置之一保留為偽存儲地址。跳轉(zhuǎn)處理器145可以例如以隨機或循環(huán)等方式從多個偽地址和/ 或寄存器中進行選擇,以進一步將跳轉(zhuǎn)隱藏在軌跡中。圖2中對跳轉(zhuǎn)處理器145進行進一步的描述。執(zhí)行單元140連接至流水線寄存器130,以從寄存器文件125中接收操作數(shù)值。執(zhí)行單元140執(zhí)行產(chǎn)生數(shù)據(jù)結(jié)果的操作,例如計算。經(jīng)由流水線寄存器150將該結(jié)果轉(zhuǎn)發(fā)至存儲存取級%0。在存儲存取級中,存儲數(shù)據(jù)結(jié)果。如果數(shù)據(jù)結(jié)果要轉(zhuǎn)發(fā)至存儲器,則將數(shù)據(jù)結(jié)果發(fā)送至數(shù)據(jù)高速緩存155。數(shù)據(jù)高速緩存155從跳轉(zhuǎn)處理器145接收目的地存儲地址。如果數(shù)據(jù)結(jié)果由中間指令產(chǎn)生,則該存儲地址已經(jīng)被跳轉(zhuǎn)處理器145修改。如果數(shù)據(jù)結(jié)果由普通的非中間指令產(chǎn)生,則該存儲地址尚未被修改。如果數(shù)據(jù)結(jié)果要被寫到寄存器中,而不是寫到存儲地址中,則經(jīng)由數(shù)據(jù)高速緩存旁路165繞過數(shù)據(jù)高速緩存155。經(jīng)由寄存器值更新線190將數(shù)據(jù)結(jié)果轉(zhuǎn)發(fā)至寄存器文件125,同時經(jīng)由流水線寄存器150、流水線寄存器160、以及寄存器更新線185將來自跳轉(zhuǎn)處理器145的目的地寄存器一同轉(zhuǎn)發(fā)至寄存器文件125。圖2是示意了可以用于圖1所示的實施例的跳轉(zhuǎn)處理器的框圖。跳轉(zhuǎn)處理器145 經(jīng)由操作數(shù)值線180接收操作數(shù)值以及經(jīng)由目的地寄存器線135接收目的地寄存器,作為輸入。跳轉(zhuǎn)處理器145包括跳轉(zhuǎn)確定器252,連接至操作數(shù)值線180 ;前進跳轉(zhuǎn)確定器254, 連接至跳轉(zhuǎn)確定器252 ;消除寄存器256,連接至前進跳轉(zhuǎn)確定器254。跳轉(zhuǎn)處理器145包括目的地地址修改器260和目的地寄存器修改器沈2。跳轉(zhuǎn)處理器145還包括跳轉(zhuǎn)禁止器沈4。跳轉(zhuǎn)確定器252還可以稱為跳轉(zhuǎn)確定單元252。在操作中,跳轉(zhuǎn)確定器252確定是否要進行跳轉(zhuǎn)。如果要進行跳轉(zhuǎn),則跳轉(zhuǎn)確定器 252向跳轉(zhuǎn)禁止器264發(fā)送信號,以經(jīng)由程序計數(shù)器更新線175轉(zhuǎn)發(fā)至程序計數(shù)器105。跳轉(zhuǎn)禁止器264可以阻止跳轉(zhuǎn)信號的轉(zhuǎn)發(fā)。跳轉(zhuǎn)信號包括跳轉(zhuǎn)目標位置,例如下一個指令要從此處執(zhí)行的目標存儲地址。跳轉(zhuǎn)指令還可以通過用下一個指令的程序計數(shù)器代替目標程序計數(shù)器來禁止。后一選擇具有下列優(yōu)點跳轉(zhuǎn)指令的功率消耗不太取決于是否進行跳轉(zhuǎn)。如果檢測到跳轉(zhuǎn)指令,則前進跳轉(zhuǎn)確定器2M接收來自跳轉(zhuǎn)確定器252的信號。前進跳轉(zhuǎn)確定器2M確定該跳轉(zhuǎn)是否適于抑制。例如,前進跳轉(zhuǎn)確定器2M確定目標跳轉(zhuǎn)位置與當前跳轉(zhuǎn)指令的位置之間的差。如果該差為正,則指示這是前進跳轉(zhuǎn),以及如果該差較小,則前進跳轉(zhuǎn)確定器2M可以確定該跳轉(zhuǎn)要被禁止。注意,可以遵循其他準則。例如,前進跳轉(zhuǎn)確定器2M可以通過指示適配性的編譯器來尋找與跳轉(zhuǎn)指令相關聯(lián)的標記。如果要禁止跳轉(zhuǎn),則前進跳轉(zhuǎn)確定器2M將消除寄存器256設置為該差。如果該差為正,則改變目的地地址,并且抑制其他跳轉(zhuǎn)。前進跳轉(zhuǎn)確定器2M還可以被稱為跳轉(zhuǎn)檢測器254。差可以表示為存儲位置的數(shù)目,例如存儲地址的數(shù)目,或者可以表示為指令的數(shù)目。跳轉(zhuǎn)禁止器264連接至跳轉(zhuǎn)確定器252,以接收跳轉(zhuǎn)信號和跳轉(zhuǎn)目標位置的指示。 跳轉(zhuǎn)禁止器264還連接至消除寄存器256,以接收關于消除寄存器是否為正、因而是否要抑
12制跳轉(zhuǎn)的指示。注意,抑制初始跳轉(zhuǎn)和初始跳轉(zhuǎn)與其跳轉(zhuǎn)目標位置之間的任意跳轉(zhuǎn),但是只有初始跳轉(zhuǎn)設置消除寄存器256。也就是說,如果消除寄存器仍然不為0,則不設置消除寄存器。消除寄存器256還連接至目的地地址修改器260和目的地寄存器修改器沈2。目的地地址修改器260接收來自操作數(shù)值線180的目的地地址。如果消除寄存器256為正, 則目的地地址修改器260例如通過將目的地地址修改為偽地址來修改目的地地址。然后, 經(jīng)由地址線170,通過流水線寄存器150將可能采取修改形式的目的地地址轉(zhuǎn)發(fā)至數(shù)據(jù)高速緩存155。目的地寄存器262從目的地寄存器線135接收目的地寄存器。如果消除寄存器256為正,則目的地寄存器修改器262例如通過將目的地寄存器修改為偽寄存器來修改目的地寄存器。目的地寄存器修改器262將可能采取修改形式的目的地寄存器轉(zhuǎn)發(fā)至寄存器更新線185。通過流水線寄存器150和流水線寄存器160將目的地地址路由至寄存器文件1邪。在本實施例中,通過跳轉(zhuǎn)處理器145來對指示目的地地址線的地址線和指示目的地寄存器的目的地寄存器線進行路由。這不是必需的,作為替代,可以在存儲存取級250中放置目的地地址修改器沈0,并且可以將禁止信號從消除寄存器256轉(zhuǎn)發(fā)至目的地地址修改器260。類似地,可以在存儲存取級250中或者甚至寄存器文件125中放置目的地寄存器修改器洸2。注意,本發(fā)明可以采用不同方式分布在流水線上。例如,跳轉(zhuǎn)確定器252可以放置在解碼級230中。在這種情況下,執(zhí)行級240可以從執(zhí)行級240接收指示跳轉(zhuǎn)目標位置的跳轉(zhuǎn)信號。在這種情況下,執(zhí)行級240不需要評估條件,因為這已經(jīng)在解碼級230中完成了。 前進跳轉(zhuǎn)確定器2M和消除寄存器256可以放置在解碼級230或執(zhí)行級240中。根據(jù)本發(fā)明的計算機處理器可以用于計算機系統(tǒng)中,該計算機系統(tǒng)包括計算機處理器和存儲器,計算機處理器和存儲器經(jīng)由總線彼此連接。例如,圖3a以頂視圖示出了根據(jù)本發(fā)明的智能卡300的示意性表示。該智能卡包括集成電路310和典型地為塑料的支撐卡305,支撐卡305支撐集成電路310。圖北示意性地示出了集成電路310的架構(gòu)。電路 310包括計算機處理器320,例如CPU,用于運行計算機程序組件,計算機處理器320包括以加密形式存儲在的計算機程序組件。電路310包括存儲器322,用于存儲程序代碼、數(shù)據(jù)、加密密鑰等等。存儲器322的一部分可以是只讀的。電路310可以包括協(xié)同處理器324,例如用于加速加密操作。電路310可以包括通信元件326,例如天線、連接器墊、或二者。計算機處理器320、存儲器322、加速器3 和通信元件3 可以經(jīng)由總線330彼此連接??梢圆贾糜糜诜謩e使用天線和/或連接器墊來進行接觸和/或非接觸式通信。智能卡可以用于例如機頂盒中以控制對內(nèi)容的訪問、用于移動電話中以控制對電信網(wǎng)絡的訪問、用于公共交通系統(tǒng)中以控制對公共交通的訪問、以及用于銀行卡以控制對銀行賬戶的訪問等等。圖4以流程圖的形式示出了根據(jù)本發(fā)明的方法400。該流程圖以箭頭指示了該方法的一種可能的順序。步驟410包括在計算機指令序列中檢測跳轉(zhuǎn)指令,所述跳轉(zhuǎn)指令確定序列中的跳轉(zhuǎn)目標位置。步驟420包括檢測所述跳轉(zhuǎn)目標位置在所述計算機指令序列中的位置是否比所述跳轉(zhuǎn)指令在所述計算機指令序列中的位置更遠。步驟430包括根據(jù)所述前進跳轉(zhuǎn)檢測器檢測到比所述跳轉(zhuǎn)指令在所述計算機指令序列中的位置更遠來禁止執(zhí)行前進跳轉(zhuǎn)指令。步驟440包括執(zhí)行所述計算機指令序列中的至少一個中間計算機指令來獲得數(shù)據(jù)結(jié)果,所述中間計算機指令位于所述計算機指令序列中被禁止的前進跳轉(zhuǎn)指令與跳轉(zhuǎn)目標位置之間。步驟450包括修改中間計算機指令所確定的存儲目的地。步驟460包括將數(shù)據(jù)結(jié)果存儲到存儲目的地。優(yōu)選地,該方法以微碼的形式在計算機處理器上實現(xiàn)。配置用于接收更新的計算機處理器可以通過接收配置用于根據(jù)本發(fā)明的方法的微碼更新來配置用于本發(fā)明。對于本領域技術人員而言,顯而易見的是,可能存在多種不同方式執(zhí)行該方法。例如,步驟的順序可以改變,或者某些步驟可以并行執(zhí)行。此外,也在可以步驟之間插入其他方法步驟。插入的步驟可以表示這里所描述的方法的改進,或者可以與該方法與關聯(lián)。例如,步驟430和440可以至少部分地并行執(zhí)行。此外,在下一步驟開始之前,給定步驟可以不用完全完成??梢允褂密浖韴?zhí)行根據(jù)本發(fā)明的方法,該軟件包括用于使得處理器系統(tǒng)執(zhí)行方法400的指令。軟件可以只包括系統(tǒng)的特定子實體所采取的那些步驟。該軟件可以存儲在適當?shù)拇鎯橘|(zhì)中,例如硬盤、軟盤、存儲器等等。該軟件可以作為信號沿著有線、或無線、 或使用數(shù)據(jù)網(wǎng)絡(例如互聯(lián)網(wǎng))來發(fā)送??梢允沟迷撥浖梢杂糜谙螺d和/或用于服務器上的遠程使用。應理解,本發(fā)明也擴展到適于將本發(fā)明投入實踐的計算機程序,具體為載體上或載體中的計算機程序。程序可以采用源代碼、目標代碼、代碼中間源和諸如采取部分編譯的形式、或者采取適于在實現(xiàn)根據(jù)本發(fā)明的方法中使用的任意其他形式的目標代碼。也應理解,這種程序可以具有許多不同的架構(gòu)設計。例如,實現(xiàn)根據(jù)本發(fā)明的方法或系統(tǒng)的功能的程序代碼可以細劃分為一個或多個子例程。對于本領域技術人員而言,在這些子例程之中分布功能的許多不同方式是顯而易見的。子例程可以一同存儲在一個可執(zhí)行文件中,以形成獨立的程序。這種可執(zhí)行文件可以包括計算機可執(zhí)行指令,例如處理器指令和/或解釋指令。主程序包含到至少一個子例程的至少一個調(diào)用。同樣,子例程可以包括彼此之間的功能調(diào)用。與計算機程序產(chǎn)品相關的實施例包括與所提出的至少一個方法的每一個處理步驟相對應的計算機可執(zhí)行指令。這些指令可以細劃分為子例程和/或存儲在可以靜態(tài)或動態(tài)鏈接的一個或多個文件中。與計算機程序產(chǎn)品相關的另一實施例包括與所提出的至少一個系統(tǒng)和/或產(chǎn)品的每一個裝置相對應的計算機可執(zhí)行指令。這些指令可以細劃分為子例程和/或存儲在可以靜態(tài)或動態(tài)鏈接的一個或多個文件中。計算機程序的載體可以是能夠承載程序的任意實體或設備。例如,載體可以包括 諸如ROM之類的存儲介質(zhì),例如CD ROM或半導體ROM ;或磁記錄介質(zhì),例如軟件或硬盤。此外,載體可以是可傳送載體,例如電信號或光信號,可以經(jīng)由電纜或光纜或者通過無線電裝置或其它裝置來傳送。當程序以這種信號體現(xiàn)時,載體可以通過這種纜線或其它設備或裝置構(gòu)成。備選地,載體可以是程序嵌入在其中的集成電路,該集成電路適于執(zhí)行相關方法, 或者用于相關方法的性能。下面描述兩個示例,以進一步示意本發(fā)明。功率分析攻擊使用當前測量,以獲得在集成電路中處理的秘密信息,例如智能卡中的密鑰。在可編程處理器的情況下,攻擊者對條件跳轉(zhuǎn)指令(也稱為分支)非常感興趣, 在條件跳轉(zhuǎn)指令中,條件基于秘密信息。一個示例是模冪計算,模冪計算是RSA算法的一部分。在公鑰解密和簽名生成中,RSA算法與密鑰一同使用。冪函數(shù)可以通過如下偽代碼來編寫
χ = m;
for(i = η - 2 down to 0)
χ = χ * χ;
if (bit i of key is set) χ = χ * m;
return x;在這個示例中,m是所謂的消息。以該消息為底,密鑰為指數(shù),來計算冪。根據(jù)秘密信息,執(zhí)行與該消息的乘法。是否執(zhí)行乘法在旁道中是可見的。在當前軌跡中,識別這一循環(huán)的迭代相對容易。此外,觀察下列兩種迭代也是相對容易的一種是設置密鑰的比特i, 一種是將其設置為0。這是因為在第一種情況下,由于第二乘法,迭代持續(xù)較長時間,并且消耗較多功率。因此,利用當前軌跡,可以相對容易地獲得密鑰。如果對該算法進行編譯,則針對該循環(huán)的匯編代碼如下所示L2 :mul χ, χ, χtst c, i, keyjmpc c, Ll <<< this is the jump that we want to hidemul x, x, mLl :dec ijmpnz i,L2這里,Ll和L2是作為跳轉(zhuǎn)指令的目標的標記。在第一行中,對χ進行平方。在第二行中,將寄存器c設置為密鑰中的比特i的值。根據(jù)該條件,進行或者不進行跳轉(zhuǎn)。如果不進行跳轉(zhuǎn),則執(zhí)行附加乘法。注意,該跳轉(zhuǎn)是按照一個指令(按照第二乘法)跳轉(zhuǎn)的短距離前進跳轉(zhuǎn)。如果根據(jù)本發(fā)明禁止了上述所指示的跳轉(zhuǎn),則無論該條件的值如何,將始終執(zhí)行該跳轉(zhuǎn)之后的乘法(jmpc指令)。然而,可以通過寫入偽變量來代替寫入寄存器χ。中間指令的功率消耗,例如與該消息的乘法,好似尚未進行跳轉(zhuǎn)并且已經(jīng)執(zhí)行了指令。當計算機處理器到達Ll時,進一步照常執(zhí)行計算機代碼。作為使用根據(jù)本發(fā)明的計算機處理器的結(jié)果,處理器的旁道與跳轉(zhuǎn)所依賴的信息 (具體為秘密信息)之間的相關性降低。非常清楚安全性事宜的編程者自身可能已經(jīng)意識到所示出的算法泄露了信息,并重寫代碼。然而,在許多情況下存在多個條件,并且某一條件是否泄漏了信息并不總是直截了當?shù)?。例如,在下列示出的Pin code中,代碼是故意編寫的,以減小通過功率消耗的信息泄露,但該算法仍然泄露信息。根據(jù)本發(fā)明,在代碼(例如,少于8個指令)中引起短前進跳轉(zhuǎn)的條件跳轉(zhuǎn)可以被隱藏,由此顯著地減小通過旁道泄露的信息。如果處理器架構(gòu)具有相關分支,則對于短距離前進跳轉(zhuǎn)的檢測尤其有效,這是許多架構(gòu)提供的。因此,一個選擇是限制到相關分支的跳轉(zhuǎn)禁止。除了條件跳轉(zhuǎn)以外,本發(fā)明還可以有利地應用于無條件跳轉(zhuǎn)。例如,考慮下列偽代碼,該偽代碼表現(xiàn)出if-then-else的結(jié)構(gòu),之后跟著另一代石馬,連續(xù)石馬(continuation code)。
if (secret condition) Τ; // 'then code'
else
E; // 'else code'
C; // 'continuation code'這翻譯成下列匯編代碼
jmpc c, Ll // secret condition E // 'else code' jmp L2 Li: T // 'then code'
L2: C // 'continuation code'在這個示例中,變量c包含條件。如果也將本發(fā)明應用于無條件跳轉(zhuǎn)(上述代碼中的jmp L2),以及應用于頂端的條件跳轉(zhuǎn),則出現(xiàn)攻擊者將始終觀察到then代碼(T)和 else代碼(E)的功率消耗,then代碼(T)和else代碼(E)的功率消耗獨立于秘密條件的值。注意,可以應用本發(fā)明,而不需要對計算機處理器的指令集或其編譯器作出修改。 另一方面,編譯器可以配置用于重新安排所生成的代碼,以使得可以被禁止的跳轉(zhuǎn)(即,小的前進跳轉(zhuǎn))數(shù)目最大化。備選地,如果可能的話,編程者可以利用指令注釋其源代碼,該指令指示編譯器生成針對該指令所應用的代碼的短距離前進跳轉(zhuǎn)。這樣,編程者可以控制何時值得為了增強安全性而降低性能,以及何時不值得。下面描述第二示例,第二示例示出了本發(fā)明的優(yōu)點。下列的匯編代碼將輸入的PIN 碼與存儲的PIN碼進行比較。注意,同一個示例可以應用于例如針對認證過程的任意口令比較例程,例如用于入口控制。
在示例中,代碼按輸入的PIN碼(輸入的數(shù)組[])循環(huán),并順序地將其與存儲在計算機處理器可訪問的存儲器中的pincode (數(shù)組pincode [])進行比較。如果發(fā)現(xiàn)了輸入的 pincode與存儲的pincode之間的差別,則將標記fail設置為1。如果沒有發(fā)現(xiàn)差別,則標記fail保持為0。乍一看該代碼似乎不會向攻擊者泄露任何信息。例如,無論pincode正確與否, 始終執(zhí)行所有迭代。這樣做是為了降低軌跡與所存儲的Pincode之間的相關性。不過,第 6行的beq(分支相等)仍泄漏了信息。通過在軌跡中觀察該跳轉(zhuǎn)是否進行,泄露了輸入的 pincode數(shù)組中哪些條目是不正確的。攻擊者可能利用該信息。例如,如果他知道第一條目不正確,則他可能嘗試更換下一個輸入Pincode的第一條目,直至旁道指示他已經(jīng)找到第一條目的正確值。一旦他知道了第一條目,那么他就可以改變不正確的pincode的下一條目。這樣,與攻擊者不訪問旁道就發(fā)現(xiàn)其自身的情形相比,獲得正確pincode所需要的嘗試次數(shù)顯著減小。在沒有旁道的情況下,輸入的pincode的所有條目的所有組合必須隨著所有組合而一同改變,而不是彼此獨立地找到正確的條目。當上述代碼在根據(jù)本發(fā)明的計算機處理器上運行時,泄漏問題得以解決。不管條目正確與否,都將執(zhí)行move操作。如果條目是錯誤的,則將照常執(zhí)行move fail, I0如果條目是正確的,則將執(zhí)行movedummy,1。dummy可以是偽寄存器或偽地址。應注意,以上所提到的實施例示意而非限制了本發(fā)明,并且在不背離所附權利要求的范圍的前提下,本領域技術人員將能夠設計出許多備選實施例。在權利要求中,放置在括號之間的任意附圖標記不應理解為限制權利要求。動詞“包括”及其詞性變化的使用不排除權利要求中所聲明的那些以外的元素或步驟的存在。元素之前的冠詞“一”或“一個” 不排除多個這種元素的存在。本發(fā)明可以通過包括若干不同元素的硬件以及通過適當編程的計算機來實現(xiàn)。在列舉了若干裝置的設備權利要求中,這些裝置中的一些可以由同一個硬件來體現(xiàn)。在互不相同的從屬權利要求中引用特定措施的事實并不指示這些措施的組合
17不能用于進行改進。
權利要求
1.一種計算機處理器(100),配置用于執(zhí)行計算機指令序列,所述計算機處理器包括-跳轉(zhuǎn)處理器(145),用于在計算機指令序列中檢測跳轉(zhuǎn)指令,所述跳轉(zhuǎn)指令確定所述計算機指令序列中的跳轉(zhuǎn)目標位置,-執(zhí)行單元(140),用于執(zhí)行計算機指令,以獲得數(shù)據(jù)結(jié)果,以及-存儲處理器(15 ,用于將數(shù)據(jù)結(jié)果存儲到計算機指令所確定的存儲目的地,其中,所述計算機處理器包括-前進跳轉(zhuǎn)檢測器(254),用于檢測所述跳轉(zhuǎn)目標位置在所述計算機指令序列中的位置是否比所述跳轉(zhuǎn)指令在所述計算機指令序列中的位置更遠,-跳轉(zhuǎn)禁止器( ,用于根據(jù)所述前進跳轉(zhuǎn)檢測器檢測到所述跳轉(zhuǎn)目標位置在所述計算機指令序列中的位置比所述跳轉(zhuǎn)指令在所述計算機指令序列中的位置更遠來禁止執(zhí)行跳轉(zhuǎn)指令,所述執(zhí)行單元配置用于執(zhí)行所述計算機指令序列中的至少一個中間計算機指令,所述中間計算機指令位于所述計算機指令序列中被禁止的前進跳轉(zhuǎn)指令與跳轉(zhuǎn)目標位置之間,以及-存儲目的地修改器(260,262),用于修改所述至少一個中間計算機指令所確定的存儲目的地。
2.根據(jù)權利要求1所述的計算機處理器,其中,所述跳轉(zhuǎn)指令是配置用于在滿足條件的情況下引起跳轉(zhuǎn)的條件跳轉(zhuǎn),以及所述存儲目的地修改器配置用于如果所述條件不滿足,則不修改所述至少一個中間計算機指令所確定的存儲目的地。
3.根據(jù)前述任一權利要求所述的計算機處理器,包括寄存器文件,其中,所述中間計算機指令所確定的存儲目的地是所述寄存器文件中的目的地寄存器,以及所述存儲目的地修改器配置用于將所述目的地寄存器修改為預定偽寄存器。
4.根據(jù)前述任一權利要求所述的計算機處理器,包括存儲器,其中,所述中間計算機指令所確定的存儲目的地是所述存儲器中的目的地地址,以及所述存儲目的地修改器配置用于將所述目的地地址修改為預定偽地址。
5.根據(jù)前述任一權利要求所述的計算機處理器,其中,所述前進跳轉(zhuǎn)檢測器還配置用于檢測所述跳轉(zhuǎn)目標位置與所述跳轉(zhuǎn)指令的位置之間的位置差是否小于預定小跳轉(zhuǎn)閾值。
6.根據(jù)前述任一權利要求所述的計算機處理器,其中,所述跳轉(zhuǎn)禁止器還配置用于 禁止執(zhí)行位于所述計算機指令序列中被禁止的跳轉(zhuǎn)指令與所述跳轉(zhuǎn)目標位置之間的所有其他跳轉(zhuǎn)指令。
7.根據(jù)前述任一權利要求所述的計算機處理器,其中,所述跳轉(zhuǎn)禁止器還配置用于 禁止在執(zhí)行位于所述計算機指令序列中被禁止的跳轉(zhuǎn)指令與所述跳轉(zhuǎn)目標位置之間的所述計算機指令序列的中間計算機指令期間發(fā)生中斷。
8.根據(jù)前述任一權利要求所述的計算機處理器,其中,跳轉(zhuǎn)指令的功率消耗獨立于跳轉(zhuǎn)禁止器對所述跳轉(zhuǎn)指令的禁止,和/或存儲數(shù)據(jù)結(jié)果獨立于存儲目的地修改器進行的修改。
9.根據(jù)前述任一權利要求所述的計算機處理器,其中,所述執(zhí)行單元配置用于執(zhí)行位于所述計算機指令序列中被禁止的跳轉(zhuǎn)指令與所述跳轉(zhuǎn)目標位置之間的所述計算機指令序列的所有中間計算機指令。
10.根據(jù)權利要求9所述的計算機處理器,還包括消除寄存器,-所述跳轉(zhuǎn)禁止器配置用于在禁止所述跳轉(zhuǎn)指令時,將所述消除寄存器設置為所述跳轉(zhuǎn)目標位置與所述跳轉(zhuǎn)指令的位置之間的位置差,-所述計算機處理器配置用于在執(zhí)行中間計算機指令時,減小所述消除寄存器, -所述存儲目的地修改器配置用于如果所述消除寄存器為正,則修改所述中間計算機指令所確定的存儲目的地。
11.一種智能卡,包括根據(jù)前述任一權利要求所述的計算機處理器。
12.—種執(zhí)行計算機指令序列的方法,所述方法包括-在計算機指令序列中檢測跳轉(zhuǎn)指令,所述跳轉(zhuǎn)指令確定所述計算機指令序列中的跳轉(zhuǎn)目標位置,-執(zhí)行計算機指令,以獲得數(shù)據(jù)結(jié)果,以及 -將數(shù)據(jù)結(jié)果存儲到計算機指令所確定的存儲目的地, 其中,所述方法還包括-檢測所述跳轉(zhuǎn)目標位置在所述計算機指令序列中的位置是否比所述跳轉(zhuǎn)指令在所述計算機指令序列中的位置更遠,-根據(jù)前進跳轉(zhuǎn)檢測器檢測到所述跳轉(zhuǎn)目標位置在所述計算機指令序列中的位置比所述跳轉(zhuǎn)指令在所述計算機指令序列中的位置更遠來禁止執(zhí)行所述跳轉(zhuǎn)指令,-執(zhí)行所述計算機指令序列中的至少一個中間計算機指令,所述中間計算機指令位于所述計算機指令序列中被禁止的前進跳轉(zhuǎn)指令與跳轉(zhuǎn)目標位置之間,以及 -修改所述中間計算機指令所確定的存儲目的地。
13.一種微碼程序,包括計算機程序代碼裝置,適于在所述微碼程序運行在計算機處理器上時執(zhí)行權利要求12的所有步驟。
14.根據(jù)權利要求13所述的微碼程序,所述微碼程序在計算機可讀介質(zhì)上具體化。
全文摘要
本發(fā)明提供了一種計算機處理器100,計算機處理器100向旁道隱藏跳轉(zhuǎn)指令,特別是條件跳轉(zhuǎn)指令。該處理器包括前進跳轉(zhuǎn)檢測器254,用于檢測跳轉(zhuǎn)目標位置位于前面的前進跳轉(zhuǎn)指令;以及跳轉(zhuǎn)禁止器262,用于禁止執(zhí)行前進跳轉(zhuǎn)指令。該計算機處理器配置用于執(zhí)行位于被禁止的前進跳轉(zhuǎn)指令與跳轉(zhuǎn)目標位置之間的至少一個中間計算機指令。該處理器還包括存儲目的地修改器260和262,用于修改至少一個中間計算機指令所確定的存儲目的地,以抑制執(zhí)行中間指令的影響。由于中間指令是在不考慮前進跳轉(zhuǎn)指令的情況下執(zhí)行的,因而跳轉(zhuǎn)被隱藏在旁道中。還隱藏諸如密鑰之類的秘密信息,前進跳轉(zhuǎn)可以取決于該秘密信息。
文檔編號G06F21/52GK102156829SQ20111003690
公開日2011年8月17日 申請日期2011年2月10日 優(yōu)先權日2010年2月11日
發(fā)明者簡·胡格布魯格 申請人:Nxp股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
三台县| 莱芜市| 信丰县| 双桥区| 台中市| 榆社县| 四川省| 德令哈市| 怀远县| 辉县市| 霞浦县| 华安县| 镇江市| 杭州市| 柯坪县| 正安县| 勃利县| 贵南县| 方城县| 绥德县| 射阳县| 阿巴嘎旗| 长葛市| 蛟河市| 德州市| 石门县| 临泉县| 柳河县| 镇巴县| 岳阳县| 北宁市| 太谷县| 洪江市| 浏阳市| 东丽区| 东乌珠穆沁旗| 柘荣县| 永登县| 静安区| 麦盖提县| 扶风县|