TWI449392B - 軟體執行的隨機化 - Google Patents

軟體執行的隨機化 Download PDF

Info

Publication number
TWI449392B
TWI449392B TW096129254A TW96129254A TWI449392B TW I449392 B TWI449392 B TW I449392B TW 096129254 A TW096129254 A TW 096129254A TW 96129254 A TW96129254 A TW 96129254A TW I449392 B TWI449392 B TW I449392B
Authority
TW
Taiwan
Prior art keywords
instruction
address
processor
protected
instructions
Prior art date
Application number
TW096129254A
Other languages
English (en)
Other versions
TW200820707A (en
Inventor
Majid Kaabouch
Cocquen Eric Le
Dominique Parlange
Original Assignee
Inside Contactless S A
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inside Contactless S A filed Critical Inside Contactless S A
Publication of TW200820707A publication Critical patent/TW200820707A/zh
Application granted granted Critical
Publication of TWI449392B publication Critical patent/TWI449392B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Description

軟體執行的隨機化
所揭示之實施方案係關於電路。
安全積體電路卡(通常稱為智慧卡)可採用嵌入式積體電路硬體裝置(其小得足以裝入使用者之口袋中)之形式。安全積體電路卡可用於必須儲存並共享關鍵資訊的許多情況下。例如,方便付費選看或隨選視訊特徵之轉頻器可使用安全積體電路卡來將使用者帳戶資訊連同一存取此類特徵之請求供應至提供者,及隨後解密可對該請求作出回應而提供之加密數位視訊流。作為另一範例,全球行動通信系統(GSM)電話中之用戶身份模組(SIM)卡可用以儲存使用者之個人資訊,例如他或她的電話簿、裝置偏好設定、較佳網路、已保存文字或語音訊息及服務提供者資訊。SIM卡可允許使用者(例如)在保留他或她儲存於SIM卡上之所有資訊的同時改換手機。智慧卡可用於各種應用中(例如,電子付費系統,其包括專門自動轉帳裝置,例如公共運輸卡與個人識別文件,如護照、駕駛執照及醫療識別卡)。
鑒於安全起見,可使用加密標準或演算法來保護智慧卡上之敏感資訊。例如,數位加密標準(DES)可用以採用56位元密鑰加密資訊。僅密鑰之持有者可存取私人資料。此標準之較新更新(例如,三重DES與高級加密標準(AES))可提供更複雜(且安全)的加密密鑰演算法。另一範例性標準係RSA(由其三個創建者(Rivest、Shamir及Adleman)之姓導出之首字母縮寫字),一具有私有密鑰解密的公用密鑰加密標準。
由於資訊值可儲存於智慧卡上並受其保護,所以駭客可能採用各種技術來破壞或旁通用以保護智慧卡上之敏感資訊的各種加密演算法。駭客用以破壞或旁通加密演算法之各種技術一般可分類為侵略性攻擊與非侵略性攻擊。
在侵略性攻擊中,駭客可實體拆卸智慧卡以便存取、監視及控制其內部電路。一旦拆卸智慧卡(例如,移除封裝),駭客便可採用(例如)光學顯微鏡或類似觀看設備檢查內部電路,或可採用邏輯探針或分析器嘗試瞭解所採用硬體之時序與功能性。駭客可使時脈信號減慢或加速或使電源供應經受電壓短時派衝波,其可具有將硬體置於易損壞狀態中之效應。駭客可使用雷射來移除保護性電路以便(例如)永久停用加密或解密功能性。駭客亦可採用定向光束或其他光或輻射源來修改一特定硬體元件之值。例如,駭客可強行使邏輯閘極具有一特定值。駭客可採用此等範例性方法中的各方法來導致可能隨後利用之裝置易受損,或收集關於裝置操作之資訊。
駭客亦可嘗試將「故障」引入智慧卡或其他安全裝置中,以便提取敏感資訊或毀損裝置之操作。例如,與觀察智慧卡之典型操作不同,駭客可將「短時派衝波」引入電路中並分析電路之回應。特定言之,駭客可使時脈信號暫時加速以便(例如)造成在已更新資訊穿過一電路之前取樣輸入,其可能旁通密鑰安全,或洩露關於電路如何發揮功能之細節。駭客可引入電壓短時派衝波以(例如)暫時偏移電晶體或邏輯閘之臨限電壓。此一電壓短時派衝波可造成硬體跳過某些程序,允許駭客霸佔邏輯之部分,或在資料加密之前攔截資料等等。
駭客亦可採用非侵略性,或「側通道」攻擊來獲得智慧卡之功能細節。特定言之,駭客可觀察智慧卡之各種操作方面,並對觀察方面應用統計分析以推斷智慧卡之操作細節或提取敏感資訊(例如,加密或解密密鑰)。例如,駭客可使用差分功率分析(DPA)來分析智慧卡操作期間之功率消耗。由於功率消耗可與特定操作直接有關,所以駭客藉由觀察一特定操作之許多實例並對該等觀察應用統計分析能夠推斷(例如)一解密演算法中所使用之密鑰的特定位元。同樣地,駭客可採用電磁分析(EMA)來監視智慧卡在特定操作期間之輻射輸出;該輻射之統計分析亦可洩露敏感資訊。駭客亦可分析功率消耗或電磁輻射變化間之時序以識別實行熟知演算法(例如,加密或解密演算法)之密鑰操作之時間。
駭客一旦從一裝置提取敏感資訊,駭客便可基於各種惡意目的使用該敏感資訊。例如,駭客可使用另一使用者之帳戶獲得付費選看或隨選視訊服務;駭客可存取向另一使用者開帳單之電信服務;駭客可盜竊另一使用者之銀行帳戶資金;駭客可盜竊另一使用者之身份等。
應對安全裝置之攻擊的對策可包括最小化「洩漏」資訊之有用性。特定言之,為洩漏資訊添加熵或不可預測性可使得駭客更難以從裝置提取敏感資訊。在某些實施方案中,可藉由隨機或偽隨機以另一替代指令或函數取代一「受保護」指令或函數來添加此類熵,以便每當呼叫或執行該受保護指令或函數以實行某一操作時,該操作可具有一不同功率消耗、時序、或電磁輻射「簽名」。
在某些實施方案中,一種方法包括:識別一欲擷取指令;決定是否該已識別指令受保護;若該已識別指令受保護,則從與該已識別受保護指令相對應之複數個替代指令中選擇一替代指令,並擷取該被選定替代指令;及,若該已識別指令未受保護,則擷取該已識別指令。
選擇該替代指令可包括從該複數個替代指令中隨機或偽隨機選擇該替代指令。隨機或偽隨機選擇該替代指令可包括從儲存於一第二記憶體部分中之一或多個對應替代指令中隨機或偽隨機選擇一指令,並將該被選定指令儲存於該程式位址指標中。識別該欲擷取指令可包括識別儲存於一程式位址指標中的一位址;決定是否該已識別指令受保護可包括將儲存於該程式位址指標中的該位址與儲存於一第一記憶體部分中的一或多個位址作比較,並決定是否存在一對應。識別一欲擷取指令可包括識別儲存於一指令緩衝器中的一操作碼及對應運算元;決定是否該已識別指令受保護可包括將該已識別操作碼及對應運算元與儲存於一第一記憶體部分中的一或多個操作碼及對應運算元作比較,並決定是否存在一對應;選擇一替代指令可包括從儲存於一第二記憶體部分中的一或多個對應替代操作碼/運算元組合中隨機或偽隨機選擇一替代操作碼/運算元組合,並將該被選定替代操作碼/運算元組合儲存於該指令緩衝器中。
在某些實施方案中,一種指令擷取單元包括:一第一記憶體部分,其內容識別一受保護指令之一位址;一第二記憶體部分,其內容儲存與該受保護指令相對應之複數個替代指令之位址;一取代單元,其a)決定一欲擷取指令是否對應於該第一記憶體部分之該等內容,及,若與之相對應,則b)以一選自該第二記憶體部分之位址取代一與該欲擷取指令相關之位址;及一介面,其擷取一指令。
取代與該欲擷取指令相關之該位址可包括從該第二記憶體部分內之對應位址中隨機或偽隨機選擇一指令之一位址,並以該被選定位址取代該第一記憶體部分之該等內容。該指令擷取單元可進一步包括一偽隨機/隨機位址產生器,其自該第二記憶體部分選擇一對應位址以用於取代與欲擷取指令相關之該位址。
在某些實施方案中,一種指令擷取單元包括:一第一記憶體部分,其內容識別一欲擷取指令之一位址;一第二記憶體部分,其內容識別一受保護指令之一位址;一第三記憶體部分,其內容儲存與該受保護指令相對應之複數個替代指令之位址;一取代單元,其a)決定該第一記憶體之該等內容是否對應於該第二記憶體之該等內容,及,若與之相對應,則b)以一選自該第三記憶體之位址取代該第一記憶體之該等內容;及一介面,其擷取一與該第一記憶體之該等內容相對應之指令。
以選自該第三記憶體部分之該位址取代該第一記憶體部分之該等內容可包括自該第三記憶體部分隨機或偽隨機選擇一替代指令之一對應位址,並以該被選定位址取代該第一記憶體部分之該等內容。在某些實施方案中,該第一記憶體部分包括一程式位址指標;在某些實施方案中,該第一記憶體部分包括一程式計數器。該第二記憶體部分可包括一受保護函數位址暫存器。
在某些實施方案中,一種處理一指令流中之指令的方法包括:識別一指令流中之一呼叫一函數之指令;決定該欲呼叫函數是否為一受保護函數;及,若該欲呼叫函數為一受保護函數,則從與該受保護函數相對應之複數個替代函數中選擇一替代函數,並以一呼叫該被選定替代函數之指令取代該已識別指令。
該指令流可為欲寫入至一計算裝置之指令記憶體的一編譯指令序列;該指令流可為一計算裝置之指令緩衝器中的一指令序列。選擇該替代函數可包括從該複數個替代函數中隨機或偽隨機選擇一替代函數。
在某些實施方案中,一種指令擷取單元包括:一程式位址指標,其儲存一欲擷取指令之一位址;一受保護指令位址暫存器(PIAR),其儲存一受保護指令之一位址;一記憶體部分,其儲存與該受保護指令相對應之複數個替代指令之位址;一取代單元,其a)決定儲存於該程式位址指標中之該位址是否對應於儲存於該PIAR中之該位址,及,若與之相對應,則b)以選自儲存於該記憶體部分中之該等位址的一位址取代儲存於該程式位址指標中之該位址;及一介面,其擷取與儲存於該程式位址指標中之該位址或儲存於該程式位址指標中之該已取代位址相對應的一指令。該指令擷取單元可進一步包括一偽隨機/隨機位址產生器,其從儲存於該記憶體部分內之該等位址中選擇一位址,以該位址取代儲存於該程式位址指標中之該位址。
在某些實施方案中,一種裝置包括:一處理器,其執行程式化指令;一記憶體部分,其儲存程式化指令;一指令擷取單元,其自該記憶體部分擷取一程式化指令並將該已擷取程式化指令提供給該處理器供執行用;及一取代單元,其在該已擷取程式化指令係一受保護程式化指令時以一替代程式化指令取代該已擷取程式化指令並將該替代程式化指令提供給該處理器供執行用。
在某些實施方案中,該裝置進一步包括一介面,其自一有線通信通道接收該處理器欲處理之輸入;該有線通信通道可包括一智慧卡讀取器接點。在某些實施方案中,該裝置進一步包括一介面,其自一無線通信通道接收該處理器欲處理之輸入;該無線通信通道可包括一智慧卡讀取器介面,其一部分遵循國際標準化組織(ISO)/國際電工委員會(IEC)標準14443或標準15693。在某些實施方案中,該裝置進一步包括一功率轉換電路,其從位於該裝置外部之一來源接收電磁能量並將該電磁能量轉換為電能,該電能為該處理器、該記憶體部分、該指令擷取單元或該取代單元中的至少一者供電。在某些實施方案中,該裝置進一步包括一電源儲存裝置,其為該處理器、該記憶體部分、該指令擷取單元或該取代單元中的至少一者供電。
在某些實施方案中,一種裝置包括:一處理器構件,其執行程式化指令;一記憶體構件,其儲存程式化指令;一指令擷取構件,其自該記憶體構件擷取一程式化指令並將該已擷取程式化指令提供給該處理器構件供執行用;及一取代構件,其在該已擷取程式化指令係一受保護程式化指令時以一替代程式化指令取代該已擷取程式化指令並將該替代程式化指令提供給該處理器構件供執行用。該裝置可進一步包括一用於決定該已擷取程式化指令是否為一受保護程式化指令的構件。該裝置可進一步包括一介面構件,其自一無線通信通道接收該處理器構件欲處理之輸入。該裝置可進一步包括一功率轉換構件,其從位於該裝置外部之一來源接收電磁能量並將該電磁能量轉換為電能,該電能為該處理器構件、該記憶體構件、該指令擷取構件或該取代構件中的至少一者供電。
附圖及以下說明中提出一或多個實施方案之細節。從說明、圖式及申請專利範圍中將可明白其它特徵、目的及優點。
圖1A係一擷取、解碼及執行程式化指令之範例性系統100的方塊圖。系統100可用以最小化「洩漏」資訊之有用性並藉此增強藉由系統100所執行之各種指令所提供之操作的安全。特定言之,系統100之某些實施方案包括一指令取代單元137,其決定是否一欲擷取指令受保護,及,若一欲擷取指令受保護,則以一替代指令取代該指令。可從複數個可能替代指令中隨機或偽隨機選擇該替代指令。
圖1A中之系統100在四個範例性階段中處理程式化指令:在指令擷取級104中擷取指令,在指令解碼級107中解碼指令,在執行級110中執行指令,及在寫回級113中視需要將資料儲存於記憶體中。其他階段數也可行且並非需要所有階段(例如,在某些實施方案中不需要寫回)。
為了在指令擷取級104中擷取指令,系統100包括一指令擷取單元101與一記憶體介面116A。如圖所示,指令擷取單元101包括一程式位址指標119(有時稱為指令指標或程式計數器)。在某些實施方案中,程式位址指標儲存一接下來欲從記憶體122擷取之指令的一位址。在指令擷取級104期間之某一點處,記憶體介面116A基於(例如)儲存於程式位址指標119中之一位址擷取後續合適指令。
視需要,指令擷取單元101包括一用於儲存許多指令之指令緩衝器125。在某些實施方案中,該指令緩衝器125可用以佇列若干指令或方便指令記錄。此外,該指令緩衝器125可用以儲存多個可能指令,例如,跟隨一分支指令的所有可能後續指令。
為了在指令解碼級107中解碼指令,系統100包括一指令解碼單元128。指令解碼單元128可將各指令剖析成(例如)一操作編碼(操作碼)、暫存器運算元、或立即值。對該操作碼作出回應,指令解碼單元128可控制系統100之各種方面,如下面更詳細所述。
為了在執行級110中執行指令,系統100包括一執行單元131與一或多個暫存器134,其係用於儲存藉由執行單元131所實行之運算的運算元與結果。在某些實施方案中,執行單元131實行數學運算,例如運算元之加法、減法或乘法;執行單元131可實行邏輯運算,例如AND、OR、XOR、NAND等;或,執行單元131可實行位元偏移運算。在某些實施方案中,執行單元131包括一算術邏輯單元(ALU)或一浮點單元(FPU)以實行上述範例性運算。
為了儲存執行級110中所實行之操作之結果(例如,在寫回級113期間),系統100包括一記憶體介面116B。記憶體介面116B可將來自執行單元131之結果儲存於記憶體122中。對於執行級110中所實行之某些操作,記憶體介面116B亦可將資料從記憶體122移至暫存器134(圖1A未顯示)。記憶體介面116B與記憶體介面116A可為相同總記憶體介面之部分,或記憶體介面116B與116A可為獨立介面。此外,顯示為單一記憶體之記憶體122可實際上包括獨立記憶體。例如,在「von Neumann架構」中,針對資料與指令兩者使用一單一記憶體空間,而在「Harvard架構」中,針對資料與指令兩者使用獨立記憶體空間。
如圖所示,系統100亦包括一取代單元137,其在某些實施方案中以其他替代指令取代某些指令。特定言之,取代單元137可以一替代指令取代一「受保護」指令;在某些實施方案中,從許多可能替代指令中隨機或偽隨機選擇該替代指令。
在某些實施方案中,為了以替代指令取代受保護指令,取代單元137採用一第一記憶體部分140與一第二記憶體部分143。第一記憶體部分140儲存與一或多個受保護指令相關之位址。第二記憶體部分143儲存與一或多個替代指令相關之位址。取代單元137可將儲存於程式位址指標119中之一位址與儲存於第一記憶體部分140中之位址作比較以決定後續欲擷取指令是否為一受保護指令。若後續欲擷取指令為一受保護指令(例如,儲存於程式位址指標119中之位址與儲存於第一記憶體部分140中之位址相匹配),則取代單元137可以一選自第二記憶體部分143之對應替代位址取代儲存於程式位址指標119中之位址。實際上,程式位址指標119中之位址之取代使指令擷取單元101擷取一替代指令,而非擷取該受保護指令。
在某些實施方案中,第一記憶體部分140儲存指令操作碼及對應運算元,而第二記憶體部分143儲存替代指令操作碼及對應運算元。在此等實施方案中,取代單元137以儲存於第二記憶體部分143中之一替代操作碼/運算元組合取代一預擷取操作碼/運算元組合(例如,在指令緩衝器125中),其與儲存於第一記憶體部分140中之一「受保護」操作碼/運算元組合相匹配。例如,受保護操作碼/運算元組合可為「call[Protected_Function]」,且取代單元可以另一操作碼/運算元組合(例如「call[alternate_function]」)取代此組合。替代操作碼/運算元組合可為與欲取代操作碼/運算元組合相對應之若干可能操作碼/運算元組合中的一者。即,第一記憶體部分140可儲存若干「受保護」操作碼/運算元組合,且各受保護組合可對應於一或多個替代操作碼/運算元組合;參考圖1B更詳細說明此對應。
圖1B係一方塊圖,其顯示依據某些實施方案圖1A所示取代單元137之範例性細節。如上所述,取代單元137包括程式位址指標119,其在某些實施方案中儲存一欲自記憶體122擷取之後續指令149的一位址146。(即,儲存於程式位址指標119中之位址146「指向」該欲擷取之後續指令149(虛線表示指向))。在某些實施方案中,程式位址指標119係一鎖存器,其週期性鎖入一與該欲擷取之後續指令之位址相對應的新值。該新值可自動遞增以擷取一序列指令流中之「後續」指令;可藉由一先前指令來提供該新值(例如,在無條件跳越之情況下);可藉由一先前指令以及該執行單元131所實行之某一操作來提供該新值(例如,在條件分支之情況下,其中該條件係執行單元131所實行之某一邏輯運算之結果);或,可藉由取代單元137來提供該新值,如下面更詳細所述。
取代單元137包括第一記憶體部分140,其可儲存一或多個受保護指令之位址。在某些實施方案中,第一記憶體部分140係一暫存器串列(未顯示),且各暫存器係經組態用以儲存一不同受保護指令之一位址。例如,暫存器141儲存一第一受保護函數(「PF1 」)中之一指令的一位址,而暫存器142儲存一第n個受保護函數(「PFn 」)中之一指令的一位址。
取代單元137包括一控制單元152,其可將程式位址指標119之一目前值與儲存於第一記憶體部分140中之各位址(例如,儲存於各暫存器141至142中之值)作比較。若控制單元152決定程式位址指標119之目前值與一受保護指令之位址相對應,則控制單元152可促成將一替代指令之一位址儲存於程式位址指標119中。
在某些實施方案中,為了在程式位址指標119中儲存一替代指令(取代一受保護指令(例如,「PF1 」))之位址,控制單元152使一與許多替代指令位址158A-D相關之多工器155選擇性耦合至程式位址指標119。例如,如圖所示,控制單元152選擇性致能一傳遞緩衝器161(例如,一正常三態傳遞緩衝器)耦合至多工器155,以使多工器155之輸出耦合至程式位址指標119。如上所述,程式位址指標119可為一週期性鎖入一新值之鎖存器;致能傳遞緩衝器161之後,控制單元152可使程式位址指標119鎖入多工器155所輸出之值。
在某些實施方案中,各受保護指令位址可與許多替代指令位址(其可藉由一對應多工器來選擇)相關,或與之相對應。例如,如圖所示,多工器155選擇替代指令位址「AF1A 」158A、「AF1B 」158B、「AF1C 」158C或「AF1D 」158D中的一者來取代受保護指令位址「PF1 」141;多工器163選擇替代指令位址「AFnA 」、「AFnB 」或「AFnj 」中的一者來取代受保護指令位址「PFn 」142。受保護指令位址與某些對應替代指令位址間之對應可方便使用不同指令實行類似操作或獲得類似一般結果,如下面更詳細所述。
如使各種位址與記憶體122之部分耦合之虛線所示,各受保護指令位址及各替代指令位址與儲存於記憶體122中之一或多個指令相對應。在某些實施方案中,儲存於記憶體122中之指令可各與一函數相關。例如,將受保護指令「PF1 」描述為呼叫一函數166(例如,一在安全裝置中實行安全相關操作之函數,如加密或解密演算法中之函數)之函數呼叫。
如參考隨後圖式更詳細所述,駭客可能設法獲得關於函數166之操作之細節;特定言之,若一安全裝置之操作期間受保護指令「PF1 」重複呼叫函數166,則駭客可能能夠採用差分功率分析(DPA)及各種統計分析技術來從「洩漏」「側通道」資料中提取安全資訊。一對策係最小化洩漏側通道資訊之有用性;且一種最小化此類資訊之方法係為洩漏資訊添加熵,或不可預測性。
一種為洩漏資訊添加熵之方法係隨機或偽隨機呼叫若干替代函數169A-D中的一者來取代受保護函數166。例如,取代對受保護函數166之重複呼叫,取代單元137可促成隨機或偽隨機呼叫若干可能替代函數169A-D中的一者;特定言之,取代單元137可使指令擷取單元101隨機或偽隨機擷取替代指令158A-D(其各對應於一替代函數169A-D)中的一者,取代受保護指令141(其對應於受保護函數166)。
各替代函數可實現與受保護函數相同之一般結果(例如,安全相關操作之實行),不過,其亦可採用一不同指令(其具有不同時序及/或不同功率消耗特徵)序列來實現。例如,為了實施一乘法運算,一替代函數可利用一乘法指令來實行該運算之硬體部分;另一替代函數可利用一邏輯偏移運算串列及實行該運算之對應軟體部分(例如,微碼)。作為另一範例,一替代函數可使用一XOR指令來實施一XOR運算(其利用執行單元131中之某些專用硬體資源);另一替代函數可使用一OR、AND以及NOT指令串列來實施相同XOR運算,其可能佔用更長時間實行該運算且使用不同專用硬體資源。作為另一範例,一替代函數可採用暫存器134來儲存一運算所需要之中間運算元;另一替代函數可採用記憶體122來儲存相同中間運算元。
為了隨機或偽隨機選擇許多替代指令中的一者,在某些實施方案中,取代單元137採用一偽隨機/隨機位址產生器172,其針對多工器155或163產生一偽隨機/隨機位址,以使多工器155或163輸出一欲寫入至程式位址指標119之偽隨機或隨機被選定替代指令位址158A-D。
在各種實施方案中,不同數目的替代指令可用於一受保護指令之取代。如圖所示,四個替代指令158A至D對應於受保護指令「PF1 」141;不過,在其他實施方案中,提供一單一替代指令,且取代單元137隨機或偽隨機選擇該單一替代指令或該受保護指令本身;在其他實施方案中,大量可能替代指令對應於一受保護函數。
圖2係一擷取指令之範例性方法200的流程圖。可藉由一裝置來實施方法200以便最小化自該裝置洩漏之資訊的有用性並藉此增強儲存於該裝置上或該裝置所處理之敏感資訊之安全。特定言之,該方法200可用以以隨機或偽隨機被選定替代函數取代某些指令(例如,受保護指令)。
如圖所示,方法200包括識別(201)一欲擷取指令。例如,參考圖1A,指令擷取單元101識別(201)一欲擷取指令;更特定言之,指令擷取單元101基於程式位址指標119之內容識別(201)一欲從記憶體122擷取之指令的一位址。
方法200包括決定(204)該已識別(201)指令是否為一受保護指令。例如,在某些實施方案中,控制單元152決定(204)儲存於程式位址指標119中之位址146是否對應於儲存於第一記憶體部分140中之位址141至142中的任一者。
若該已識別(201)指令並非一受保護指令,則方法200包括擷取(207)該指令。例如,指令擷取單元101自記憶體122擷取(207)一與目前儲存於程式位址指標119中之位址146相對應之指令。隨後解碼並執行該已擷取(207)指令。方法200接著決定(210)是否存在其他欲擷取指令,及,若存在其他欲擷取指令,則識別(201)後續欲擷取指令。
若該已識別(201)指令係一受保護指令,則方法200包括選擇(213)(例如,隨機或偽隨機)一替代指令。例如,在某些實施方案中,控制單元152結合一偽隨機/隨機位址產生器172及多工器155選擇與該已識別受保護指令(例如,「PF1 」)相對應之若干替代指令(例如,「AF1A 」、「AF1B 」、「AF1C 」或「AF1D 」)中的一者。
方法200包括擷取(216)該被選定(213)替代指令。例如,在某些實施方案中,控制單元152結合傳遞緩衝器161促成將一替代指令位址(例如,「AF1B 」)儲存於程式位址指標119中,且指令擷取單元101隨後自記憶體122擷取(216)一與該被選定(213)替代指令位址相對應之指令。在某些實施方案中,該被選定(213)替代指令位址對應於一替代函數(例如,替代函數169B)中之一指令,而非一受保護函數(例如,受保護函數166)中之一指令。方法200接著決定(210)是否存在其他欲擷取指令,及,若存在其他欲擷取指令,則識別(201)後續欲擷取指令。
圖3A與圖3B係可用以儲存及/或處理受保護資訊之範例性智慧卡301A與301B之方塊圖。在各範例性智慧卡301A與301B中,可藉由本文所述系統及方法來保護儲存於智慧卡301A或301B中之受保護資訊329。如圖所示,各範例性智慧卡301A或301B包括一處理器305(例如,微處理器或微控制器),其係經組態用以執行儲存於記憶體308中或經由介面311而接收到之指令。記憶體308可表示多個不同種類之記憶體,例如ROM或RAM、快閃記憶體、DRAM、SRAM等。例如,在某些實施方案中,將程式指令儲存於ROM上,且當執行程式化指令時,處理器305使用某一形式之RAM來儲存中間資料。
介面311為智慧卡301A或301B提供一用以與外部系統(例如,智慧卡讀取器314A或314B)互動之構件。在某些實施方案中,介面311結合一無線通信通道317A工作,該無線通信通道317A包括(例如)適於一特定通信協定(例如,一以ISO/IEC 14443或ISO/IEC 15693為特徵之協定(ISO表示國際標準化組合;IEC表示國際電工委員會))之RF(射頻)信號。在某些實施方案中,介面311結合一適於一特定通信協定(例如,一以ISO/IEC 7816或ISO/IEC 7810為特徵之協定)之有線通信通道317B工作。
藉由一電源來源為智慧卡301A或301B供電。例如,可藉由一整合電源儲存裝置320(例如,電池或低損耗電容器)來為智慧卡301A供電。作為另一範例,可藉由一天線與轉換電路323來為智慧卡301A供電,該轉換電路接收RF信號並將RF信號中之能量轉換為可用以為智慧卡301A之組件供電的電能。作為另一範例,可藉由一位於智慧卡本身之外部之電源(例如,電源供應326)來為智慧卡301B供電,該電源係整合於一對應智慧卡讀取器314B中。
智慧卡301A或301B可儲存各種受保護資訊329,例如識別一使用者之資訊、使用者之財務或服務帳戶、加密或解密密鑰、生物統計資訊等。在某些實施方案中,藉由一使用一或多個密鑰之加密或解密演算法來保護受保護資訊329,該(等)密鑰亦儲存於記憶體308中,藉由智慧卡讀取器314A或314B或兩者來提供。
在操作中,智慧卡讀取器314A或314B可從智慧卡301A或301B請求受保護資訊329。在某些實施方案中,智慧卡讀取器314A或314B為智慧卡301A或301B提供一加密密鑰,以在將受保護資訊329發送至讀取器314A或314B之前對其進行加密時使用。在某些實施方案中,已經以加密形式儲存受保護資訊329,且智慧卡讀取器314A或314B提供一解密密鑰,以在將受保護資訊329提供給讀取器314A或314B之前對其進行解密。在某些實施方案中,智慧卡301A或301B在受保護資訊329上實行其他操作。
駭客在智慧卡301A或301B處理受保護資訊329時可能會對其進行侵略性或非侵略性監視,以便(例如)隨後存取或毀損受保護資訊329。例如,駭客在智慧卡301A或301B處理受保護資料329時可能會監視側通道資訊,例如智慧卡301A或301B所發射之電磁輻射334。或者,駭客可能會監視智慧卡301B處理受保護資訊329時的功率消耗337之變化。駭客可能會監視智慧卡301A與智慧卡讀取器314A間之射頻通信317A。駭客可能會實體修改智慧卡301A及侵略性探測智慧卡301A內部之資料路徑上所交換之資料340。
藉由監視智慧卡301A或301B在其處理受保護資訊329時之操作,駭客可能能夠獲得關於智慧卡301A或301B之操作或關於受保護資訊329之充足資料,以毀損或存取受保護資訊329。例如,一應用於受保護資訊329之加密或解密演算法可能遵循一具有可預測操作串列之特定加密或解密方法(例如,DES或AES)。若每當實行加密或解密演算法時,智慧卡均以相同方式執行此等操作,則自智慧卡「洩漏」之資訊可能具有某些可預測特徵。特定言之,功率消耗之變化或輻射電磁能量之變化可能具有一可預測「簽名」。藉由監視功率消耗或輻射電磁能量之變化,駭客可能能夠統計識別該簽名並使該簽名與標準加密或解密演算法之某些部分相關聯。藉由此類資訊,駭客可能能夠提取一加密或解密密鑰之個別位元,或蓄謀智慧卡之其他攻擊(例如,電壓短時派衝波、時脈調整、基於輻射之攻擊等),其允許駭客使智慧卡301A或301B旁通一安全操作(例如,加密或解密演算法本身),或允許駭客毀損某些資料。
在使某些函數之執行隨機化的裝置中可明顯減小洩漏資訊(例如,功率消耗或發射電磁輻射之變化)之值。特定言之,駭客使功率消耗或發射電磁輻射之變化與一標準加密或解密演算法之特定部分相關聯之難度可能會明顯加大,若每當執行該標準演算法之該部分時以具有不同功率消耗或發射電磁能量輪廓之不同指令對其加以執行的話。一系統(例如,參考圖1A、圖1B及圖2所述系統)可取代與一標準演算法相關之指令,以便每當執行該演算法時,功率消耗與輻射電磁能量輪廓可能不同。
可以與參考圖1A、圖1B及圖2所述方法不同之方法來隨機化與標準安全演算法或受保護函數相關之指令之執行。例如,圖4顯示一可用以處理一指令流中之指令(例如,在計算裝置(例如裝置100、301A或301B)執行該等指令之前)的系統400。
如圖所示,系統400包括一指令流處理器401,其處理一進入指令流404以產生一輸出指令流407。進入指令流404包括個別指令(例如,I1 、I2 、...In )及組成函數(例如,Protected_Functionn 、Alternate_Functionn 等)之指令群組。執行時,某些指令可促成呼叫該等函數之一者。例如,如圖所示,PI1 414指向Protected_Function1 417(虛線420所示指標鏈路);PI2 423指向Protected_Function2 426(虛線429所示指標鏈路)。指令PI1 414之執行使程式執行跳越至Protected_Function1 417中之指令。在某些實施方案中,PI1 係一「跳越」或「呼叫」指令;在其他實施方案中,PI1 係能夠改變程式指令之不同方式序列執行之流程的另一指令。
如圖所示,進入指令流404包括許多可以或可以不加以呼叫之函數。例如,進入指令流404可包括Alternate_Funiction1B 與Alternate_Function2B ,即使此等函數中之指令可能從未執行。
指令流處理器401接收進入指令流404,分析各指令,及視需要取代某些指令。在某些實施方案中,指令流處理器401係一後編譯器處理器,其在將指令流儲存於計算裝置之指令記憶體內之前對指令流進行修改。在某些實施方案中,指令流處理器401係包含於裝置之指令擷取單元中。例如,參考圖1A,指令流處理器401可包含於指令擷取單元101或取代單元137中。在某些實施方案中,指令流處理器401係一微碼受驅動指令處理器,其在實際擷取指令之前分析並視需要取代欲擷取指令(例如,基於其位址)。
指令流處理器401可分析各指令以決定其是否為一呼叫受保護函數之指令。若該指令並不呼叫一受保護函數,則指令流處理器401可分析後續序列指令。若該指令係一呼叫受保護函數之指令,則指令流處理器401可以一呼叫替代函數之指令取代該指令。例如,指令流處理器401可以輸出指令流407中之指令AI1B 419取代進入指令流104中之指令PI1 。儘管指令PI1 在執行時呼叫Protected_Function1 417,但替代指令AI1B 419在執行時呼叫Alternate_Function1B 418。
為了以一呼叫替代函數之替代指令取代一呼叫受保護函數之指令,指令流處理器401從許多可能替代指令中選擇(例如,隨機或偽隨機)該替代指令。例如,指令流處理器401可以AI1A (一呼叫Alternate_Function1A 之指令)、AI1B (一呼叫Alternate_Function1B 之指令)、AI1C (一呼叫Alternate_Function1C 之指令)、或AI1D (一呼叫Alternate_Function1D 之指令)中的一者取代指令PI1 414。在某些實施方案(未顯示)中,指令PI1 亦可包含於該等可能替代指令中,以便可能偶爾選擇PI1 而不加以取代。
在某些實施方案中,指令流處理器401包括一輸入緩衝器440、一分析器443及一輸出緩衝器446。如圖所示,指令流處理器401亦包括一第一表447(其儲存呼叫受保護函數之指令),及一第二表449(其儲存與呼叫受保護函數之指令相對應之替代指令);該等替代指令呼叫替代函數。指令流處理器401可在輸入緩衝器440中緩衝來自進入指令流404之指令;採用分析器443分析該等已緩衝指令;及將已分析指令照原樣傳輸至輸出緩衝器446,或以輸出緩衝器446中之替代指令取代已分析指令。分析器443可將輸入緩衝器440中之一指令與儲存於第一表447中之各指令作比較;若存在匹配,則指令流處理器401從第二表449中選擇(例如,隨機或偽隨機)一對應替代指令以寫入至輸出緩衝器446;若不存在匹配,則指令流處理器401將已分析指令照原樣寫入至輸出緩衝器446。輸出指令流407可自輸出緩衝器446流出。
圖5係一流程圖,其進一步顯示分析並視需要取代一指令流中之指令的一範例性方法500。在某些實施方案中,在一指令流處理器(例如圖4所示之指令流處理器401)中實施方法500。
如圖所示,方法500包括識別(501)一呼叫函數之指令。例如,指令流處理器401採用分析器443來法定輸入緩衝器440中之指令是否呼叫一函數。特定言之,分析器443決定該指令是否為一跳越或呼叫指令,或另一能夠改變程式化指令之執行流程之指令。
一旦識別一呼叫函數之指令,方法500便決定(504)已識別指令是否呼叫一受保護函數。例如,分析器443(例如)藉由將該已識別指令與儲存於第一表447中之指令(其各呼叫受保護函數)作比較來決定(504)該已識別指令是否呼叫一受保護函數。
若該已識別指令不呼叫一受保護函數,則方法500包括保存(513)該未改變已識別指令。例如,指令流處理器401可促成將該已識別指令照原樣寫入至輸出緩衝器446。
若該已識別指令確實呼叫一受保護函數(執行時),則方法500包括選擇(507)一替代函數,並以一呼叫該替代函數之指令取代(510)該已識別指令。例如,若分析器443決定該已識別指令呼叫一受保護函數,則指令流處理器401(例如)從儲存於第二表449中之許多對應可能替代指令中選擇一替代函數(或一呼叫替代函數之替代指令);為了進行該選擇,指令流處理器401採用一隨機或偽隨機選擇器(圖4未顯示)。指令流處理器401接著將該被選定替代函數儲存於輸出緩衝器446中。
在處理一第一呼叫函數之指令後,方法500包括決定(516)是否存在其他欲處理指令,及,若存在其他欲處理指令,則識別(501)可能其他呼叫函數之指令。
已說明許多實施方案。但應瞭解,可進行各種修改而不脫離所揭示實施方案之精神與範疇。例如,儘管所揭示實施方案中的某些係關於智慧卡或其他安全積體電路裝置,不過本文所述系統及方法亦可應用於執行或處理程式化指令之任何裝置。此外,無需「保護」已取代指令,也無需其與加密或解密演算法有關。因此,其他實施方案亦屬於以下申請專利範圍之範疇內。
100...系統
101...指令擷取單元
104...指令擷取級
107...指令解碼級
110...執行級
113...寫回級
116A、116B...記憶體介面
119...程式位址指標
122...記憶體
125...指令緩衝器
128...指令解碼單元
131...執行單元
134...暫存器
137...指令取代單元
140...第一記憶體部分
141、142...暫存器
143...第二記憶體部分
146...位址
149...後續指令
152...控制單元
155...多工器
158A、158B、158C、158D...替代指令位址
161...傳遞緩衝器
163...多工器
166...函數
169A、169B、169C、169D...替代函數
172...偽隨機/隨機位址產生器
301A、301B...智慧卡
305...處理器
308...記憶體
311...介面
314A、314B...智慧卡讀取器
317A...無線通信通道
317B...有線通信通道
320...整合電源儲存裝置
323...天線與轉換電路
326...電源供應
329...受保護資訊
334...電磁輻射
340...資料
400...系統
401...指令流處理器
404...進入指令流
407...輸出指令流
440...輸入緩衝器
443...分析器
446...輸出緩衝器
447...第一表
449...第二表
圖1A係一範例性系統(其擷取、解碼及執行程式化指令且包括一指令取代單元)的方塊圖。
圖1B係一方塊圖,其顯示一範例性指令取代單元之細節。
圖2係一擷取指令之範例性方法的流程圖。
圖3A與圖3B係可用以儲存及/或處理敏感資訊之範例性智慧卡的方塊圖。
圖4係一可用以處理指令流中之指令之範例性系統的圖式。
圖5係一處理指令流中之指令的範例性方法之流程圖。
各圖式中相同的參考符號表示相同的元件。
100...系統
101...指令擷取單元
104...指令擷取級
107...指令解碼級
110...執行級
113...寫回級
116A、116B...記憶體介面
119...程式位址指標
122...記憶體
125...指令緩衝器
128...指令解碼單元
131...執行單元
134...暫存器
137...指令取代單元
140...第一記憶體部分
143...第二記憶體部分

Claims (30)

  1. 一種由一指令擷取單元實行之方法,該方法包含:識別一欲擷取指令,其中當該指令由一或多個處理器執行時,將使該或該等處理器實行一特定功能;決定該已識別指令是否受保護;若該已識別指令受保護,則從與該已識別受保護指令相對應之複數個替代指令中選擇一替代指令,並擷取該被選定替代指令,而非擷取該已識別指令,其中當該等替代指令之每一者由該或該等處理器執行時,將使該或該等處理器實行當該或該等處理器於執行該欲擷取指令時所實行之該特定功能,其中選擇該替代指令包含從該複數個替代指令中隨機或偽隨機選擇該替代指令;及若該已識別指令未受保護,則擷取該已識別指令。
  2. 如請求項1之方法,其中識別該欲擷取指令包含識別儲存於一程式位址指標中的一位址。
  3. 如請求項2之方法,其中決定該已識別指令是否受保護包含將儲存於該程式位址指標中的該位址與儲存於一第一記憶體部分中的一或多個位址作比較,並決定是否存在一對應。
  4. 如請求項3之方法,其中隨機或偽隨機選擇該替代指令包含從儲存於一第二記憶體部分中之一或多個對應替代指令中隨機或偽隨機選擇一指令,並將該被選定指令儲存於該程式位址指標中。
  5. 如請求項1之方法,其中識別一欲擷取指令包含識別儲 存於一指令緩衝器中的一操作碼及對應運算元。
  6. 如請求項5之方法,其中決定該已識別指令是否受保護包含將該已識別操作碼及對應運算元與儲存於一第一記憶體部分中的一或多個操作碼及對應運算元作比較,並決定是否存在一對應。
  7. 如請求項6之方法,其中選擇一替代指令包含從儲存於一第二記憶體部分中的一或多個對應替代操作碼/運算元組合中隨機或偽隨機選擇一替代操作碼/運算元組合,並將該被選定替代操作碼/運算元組合儲存於該指令緩衝器中。
  8. 一種指令擷取單元,其包含:一第一記憶體部分,其內容識別一受保護指令之一位址,其中當該受保護指令由一或多個處理器執行時,將使該或該等處理器實行一特定功能;一第二記憶體部分,其內容儲存與該受保護指令相對應之複數個替代指令之位址,其中當該等替代指令之每一者由該或該等處理器執行時,將使該或該等處理器實行當該或該等處理器於執行該受保護指令時所實行之該特定功能;一取代單元,其a)決定一欲擷取指令是否對應於該第一記憶體部分之該等內容,及,若與之相對應,則b)以一選自該第二記憶體部分之位址取代一與該欲擷取指令相關之位址,其中取代與該欲擷取指令相關之該位址包含從該第二記憶體部分內之對應位址中隨機或偽隨機選 擇一指令之一位址,並以該被選定位址取代該第一記憶體部分之該等內容;及一介面,其擷取一指令。
  9. 如請求項8之指令擷取單元,其進一步包含一偽隨機/隨機位址產生器,該偽隨機/隨機位址產生器自該第二記憶體部分選擇一對應位址,以用於取代與欲擷取指令相關之該位址。
  10. 一種指令擷取單元,其包含:一第一記憶體部分,其內容識別一欲擷取指令之一位址;一第二記憶體部分,其內容識別一受保護指令之一位址,其中當該受保護指令由一或多個處理器執行時,將使該或該等處理器實行一特定功能;一第三記憶體部分,其內容儲存與該受保護指令相對應之複數個替代指令之位址,其中當該等替代指令之每一者由該或該等處理器執行時,將使該或該等處理器實行當該或該等處理器於執行該受保護指令時所實行之該特定功能;一取代單元,其a)決定該第一記憶體之該等內容是否對應於該第二記憶體之該等內容,及,若與之相對應,則b)以一選自該第三記憶體之位址取代該第一記憶體之該等內容,其中以選自該第三記憶體部分之該位址取代該第一記憶體部分之該等內容包含自該第三記憶體部分隨機或偽隨機選擇一替代指令之一對應位址,並以該被 選定位址取代該第一記憶體部分之該等內容;及一介面,其擷取一與該第一記憶體之該等內容相對應之指令。
  11. 如請求項10之指令擷取單元,其中該第一記憶體部分包含一程式位址指標。
  12. 如請求項10之指令擷取單元,其中該第一記憶體部分包含一程式計數器。
  13. 如請求項10之指令擷取單元,其中該第二記憶體部分包含一受保護函數位址暫存器。
  14. 一種由一指令擷取單元實行之處理一指令流中之指令的方法,該方法包含:識別一指令流中之一呼叫一函數之指令;決定該欲呼叫函數是否為一受保護函數,其中該受保護函數使一或多個處理器實行一或多個動作並達成一結果;及若該欲呼叫函數為一受保護函數,則從與該受保護函數相對應之複數個替代函數中選擇一替代函數,其中選擇該替代函數包含從該複數個替代函數中隨機或偽隨機選擇一替代函數,且其中每一替代函數使該或該等處理器實行一或多個相異動作並達成該受保護函數之結果,並以一呼叫該被選定替代函數之指令取代該已識別指令。
  15. 如請求項14之方法,其中該指令流係欲寫入至一計算裝置之指令記憶體的一編譯指令序列。
  16. 如請求項14之方法,其中該指令流係一計算裝置之指令緩衝器中的一指令序列。
  17. 一種指令擷取單元,其包含:一程式位址指標,其儲存一欲擷取指令之一位址;一受保護指令位址暫存器(PIAR),其儲存一受保護指令之一位址,其中當該受保護指令由一或多個處理器執行時,將使該或該等處理器實行一特定功能;一記憶體部分,其儲存與該受保護指令相對應之複數個替代指令之位址,其中當該等替代指令之每一者由該或該等處理器執行時,將使該或該等處理器實行當該或該等處理器於執行該受保護指令時所實行之該特定功能;一取代單元,其a)決定儲存於該程式位址指標中之該位址是否對應於儲存於該PIAR中之該位址,及,若與之相對應,則b)以選自儲存於該記憶體部分中之該等位址的一位址取代儲存於該程式位址指標中之該位址,其中取代儲存於該程式位址指標中之該位址包含自該記憶體部分隨機或偽隨機選擇一替代指令之一對應位址,並以該被選定位址取代儲存於該程式位址指標中之該位址;及一介面,其擷取與儲存於該程式位址指標中之該位址或儲存於該程式位址指標中之該已取代位址相對應的一指令。
  18. 如請求項17之指令擷取單元,其進一步包含一偽隨機/隨 機位址產生器,該偽隨機/隨機位址產生器從儲存於該記憶體部分內之該等位址中選擇一位址,以該位址取代儲存於該程式位址指標中之該位址。
  19. 一種用於處理指令之裝置,其包含:一處理器,其執行程式化指令;一記憶體部分,其儲存程式化指令;一指令擷取單元,其自該記憶體部分擷取一程式化指令並將該已擷取程式化指令提供給該處理器供執行用;及一取代單元,其在該已擷取程式化指令係一受保護程式化指令時,以選自對應於該已擷取程式化指令之複數個替代程式化指令之一替代程式化指令取代該已擷取程式化指令並將該替代程式化指令提供給該處理器供執行用,其中選擇該替代程式化指令包含從該複數個替代程式化指令中隨機或偽隨機選擇該替代程式化指令,其中當該受保護程式化指令由該處理器執行時,將使該處理器實行一特定功能,且其中當該等替代程式化指令之每一者由該處理器執行時,將使該處理器實行當該處理器於執行該受保護程式化指令時所實行之該特定功能。
  20. 如請求項19之裝置,其進一步包含一介面,該介面自一有線通信通道接收該處理器欲處理之輸入。
  21. 如請求項20之裝置,其中該有線通信通道包含一智慧卡讀取器接點。
  22. 如請求項19之裝置,其進一步包含一介面,該介面自一無線通信通道接收該處理器欲處理之輸入。
  23. 如請求項22之裝置,其中該無線通信通道包含一智慧卡讀取器介面,其一部分遵循國際標準化組織(ISO)/國際電工委員會(IEC)標準14443或標準15693。
  24. 如請求項19之裝置,其中該裝置進一步包含一功率轉換電路,其從位於該裝置外部之一來源接收電磁能量並將該電磁能量轉換為電能,該電能為該處理器、該記憶體部分、該指令擷取單元或該取代單元中的至少一者供電。
  25. 如請求項19之裝置,其進一步包含一電源儲存裝置,該電源儲存裝置為該處理器、該記憶體部分、該指令擷取單元或該取代單元中的至少一者供電。
  26. 一種用於處理指令之裝置,其包含:一處理器構件,其執行程式化指令;一記憶體構件,其儲存程式化指令;一指令擷取構件,其自該記憶體構件擷取一程式化指令,並將該已擷取程式化指令提供給該處理器構件供執行用;及一取代構件,其在該已擷取程式化指令係一受保護程式化指令時,以選自對應於該已擷取程式化指令之複數個替代程式化指令之一替代程式化指令取代該已擷取程式化指令並將該替代程式化指令提供給該處理器構件供執行用,其中選擇該替代程式化指令包含從該複數個替代程式化指令中隨機或偽隨機選擇該替代程式化指令,其中當該受保護程式化指令由該處理器構件執行時,將 使該處理器構件實行一特定功能,且其中當該等替代程式化指令之每一者由該處理器構件執行時,將使該處理器構件實行當該處理器構件於執行該受保護程式化指令時所實行之該特定功能。
  27. 如請求項26之裝置,其進一步包含一用於決定該已擷取程式化指令是否為一受保護程式化指令的構件。
  28. 如請求項26之裝置,其進一步包含一介面構件,該介面構件自一無線通信通道接收該處理器構件欲處理之輸入。
  29. 如請求項26之裝置,其中該無線通信通道包含一智慧卡讀取器介面,其一部分遵循國際標準化組織(ISO)/國際電工委員會(IEC)標準14443或標準15693。
  30. 如請求項26之裝置,其進一步包含一功率轉換構件,該功率轉換構件從位於該裝置外部之一來源接收電磁能量並將該電磁能量轉換為電能,該電能為該處理器構件、該記憶體構件、該指令擷取構件或該取代構件中的至少一者供電。
TW096129254A 2006-08-10 2007-08-08 軟體執行的隨機化 TWI449392B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/501,968 US8301890B2 (en) 2006-08-10 2006-08-10 Software execution randomization

Publications (2)

Publication Number Publication Date
TW200820707A TW200820707A (en) 2008-05-01
TWI449392B true TWI449392B (zh) 2014-08-11

Family

ID=38799347

Family Applications (1)

Application Number Title Priority Date Filing Date
TW096129254A TWI449392B (zh) 2006-08-10 2007-08-08 軟體執行的隨機化

Country Status (3)

Country Link
US (1) US8301890B2 (zh)
TW (1) TWI449392B (zh)
WO (1) WO2008021866A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2910657B1 (fr) * 2006-12-22 2012-11-16 Ingenico Sa Procede de verification de conformite d'une plateforme electronique et/ou d'un programme informatique present sur cette plateforme, dispositif et programme d'ordinateur correspondants.
US8781111B2 (en) * 2007-07-05 2014-07-15 Broadcom Corporation System and methods for side-channel attack prevention
US8547957B2 (en) * 2007-07-23 2013-10-01 Savi Technology, Inc. Method and apparatus for providing security in a radio frequency identification system
EP2196934A1 (en) * 2008-12-09 2010-06-16 Gemalto SA Method for securing java bytecode
EP2343664A1 (en) * 2009-12-21 2011-07-13 Nxp B.V. Cryptographic device
EP2367102B1 (en) 2010-02-11 2013-04-10 Nxp B.V. Computer processor and method with increased security properties
EP2400418A1 (fr) * 2010-06-23 2011-12-28 Trusted Logic Contrôle des propriétés de performance et de sécurité d'un logiciel par transformation de code
US10193927B2 (en) 2012-02-27 2019-01-29 University Of Virginia Patent Foundation Method of instruction location randomization (ILR) and related system
GB2510129B (en) * 2013-01-24 2015-06-10 Nds Ltd Passing hidden information using attack detectors
US10241787B2 (en) * 2014-03-31 2019-03-26 Intel Corporation Control transfer override

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956753A (en) * 1993-12-30 1999-09-21 Intel Corporation Method and apparatus for handling speculative memory access operations
US6189068B1 (en) * 1995-08-31 2001-02-13 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US20050069138A1 (en) * 2003-09-25 2005-03-31 Sun Microsystems, Inc., A Delaware Corporation Application program obfuscation

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3570006A (en) * 1968-01-02 1971-03-09 Honeywell Inc Multiple branch technique
US4447895A (en) * 1979-10-04 1984-05-08 Tokyo Shibaura Denki Kabushiki Kaisha Semiconductor memory device
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
US5471598A (en) * 1993-10-18 1995-11-28 Cyrix Corporation Data dependency detection and handling in a microprocessor with write buffer
US5584009A (en) * 1993-10-18 1996-12-10 Cyrix Corporation System and method of retiring store data from a write buffer
US5404402A (en) * 1993-12-21 1995-04-04 Gi Corporation Clock frequency modulation for secure microprocessors
US5724536A (en) * 1994-01-04 1998-03-03 Intel Corporation Method and apparatus for blocking execution of and storing load operations during their execution
US5692168A (en) * 1994-10-18 1997-11-25 Cyrix Corporation Prefetch buffer using flow control bit to identify changes of flow within the code stream
US5673426A (en) * 1995-02-14 1997-09-30 Hal Computer Systems, Inc. Processor structure and method for tracking floating-point exceptions
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5802544A (en) * 1995-06-07 1998-09-01 International Business Machines Corporation Addressing multiple removable memory modules by remapping slot addresses
US5768610A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Lookahead register value generator and a superscalar microprocessor employing same
GB2307783B (en) * 1995-09-30 2000-04-05 Motorola Ltd Enhanced security semiconductor device, semiconductor circuit arrangement, and method of production thereof
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units
US6108775A (en) * 1996-12-30 2000-08-22 Texas Instruments Incorporated Dynamically loadable pattern history tables in a multi-task microprocessor
US6748410B1 (en) * 1997-05-04 2004-06-08 M-Systems Flash Disk Pioneers, Ltd. Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication
AU7957998A (en) 1997-06-09 1999-01-25 Intertrust, Incorporated Obfuscation techniques for enhancing software security
US5991519A (en) * 1997-10-03 1999-11-23 Atmel Corporation Secure memory having multiple security levels
US6061449A (en) * 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
US6094724A (en) * 1997-11-26 2000-07-25 Atmel Corporation Secure memory having anti-wire tapping
ATE325478T1 (de) * 1998-01-02 2006-06-15 Cryptography Res Inc Leckresistentes kryptographisches verfahren und vorrichtung
US7587044B2 (en) * 1998-01-02 2009-09-08 Cryptography Research, Inc. Differential power analysis method and apparatus
FR2774492A1 (fr) * 1998-02-04 1999-07-30 Schlumberger Ind Sa Dispositif a circuit integre securise par attenuation des signatures electriques
US6032248A (en) * 1998-04-29 2000-02-29 Atmel Corporation Microcontroller including a single memory module having a data memory sector and a code memory sector and supporting simultaneous read/write access to both sectors
KR100335397B1 (ko) * 1998-05-25 2002-09-05 주식회사 하이닉스반도체 센스앰프순차구동장치
WO1999063696A1 (en) * 1998-06-03 1999-12-09 Cryptography Research, Inc. Using unpredictable information to minimize leakage from smartcards and other cryptosystems
US6298442B1 (en) * 1998-06-03 2001-10-02 Cryptography Research, Inc. Secure modular exponentiation with leak minimization for smartcards and other cryptosystems
WO1999067766A2 (en) * 1998-06-03 1999-12-29 Cryptography Research, Inc. Balanced cryptographic computational method and apparatus for leak minimization in smartcards and other cryptosystems
WO1999067919A2 (en) 1998-06-03 1999-12-29 Cryptography Research, Inc. Improved des and other cryptographic processes with leak minimization for smartcards and other cryptosystems
AU5458199A (en) * 1998-07-02 2000-01-24 Cryptography Research, Inc. Leak-resistant cryptographic indexed key update
US6295606B1 (en) * 1999-07-26 2001-09-25 Motorola, Inc. Method and apparatus for preventing information leakage attacks on a microelectronic assembly
US6609201B1 (en) * 1999-08-18 2003-08-19 Sun Microsystems, Inc. Secure program execution using instruction buffer interdependencies
JP4671571B2 (ja) * 1999-09-29 2011-04-20 株式会社日立製作所 秘密情報の処理装置および秘密情報の処理プログラムを格納するメモリ
GB2365153A (en) 2000-01-28 2002-02-13 Simon William Moore Microprocessor resistant to power analysis with an alarm state
US7042887B2 (en) * 2000-02-08 2006-05-09 Mips Technologies, Inc. Method and apparatus for non-speculative pre-fetch operation in data packet processing
US6331784B1 (en) * 2000-07-28 2001-12-18 Atmel Corporation Secure programmable logic device
US6877100B1 (en) * 2000-08-25 2005-04-05 Micron Technology, Inc. Adjustable timing circuit of an integrated circuit by selecting and moving clock edges based on a signal propagation time stored in a programmable non-volatile fuse circuit
EP1193715A1 (en) * 2000-09-20 2002-04-03 STMicroelectronics S.r.l. Nonvolatile memory device, having parts with different access time, reliability and capacity
JP2002268910A (ja) * 2001-03-09 2002-09-20 Hitachi Ltd セルフテスト機能を有する半導体装置
US7142670B2 (en) * 2001-08-14 2006-11-28 International Business Machines Corporation Space-efficient, side-channel attack resistant table lookups
JP4045777B2 (ja) * 2001-10-30 2008-02-13 株式会社日立製作所 情報処理装置
US20030120938A1 (en) * 2001-11-27 2003-06-26 Miki Mullor Method of securing software against reverse engineering
US20040162993A1 (en) * 2003-02-13 2004-08-19 Yannick Teglia Antifraud method of an algorithm executed by an integrated circuit
US20060140398A1 (en) 2003-06-12 2006-06-29 Roberto Avanzi Method for defence against differential power analysis attacks
US20040268116A1 (en) * 2003-06-30 2004-12-30 Vasisht Virender K Fault tolerant recovery block with reduced flash footprint
US7228400B2 (en) * 2003-12-31 2007-06-05 Intel Corporation Control of multiply mapped memory locations
US8065532B2 (en) * 2004-06-08 2011-11-22 Hrl Laboratories, Llc Cryptographic architecture with random instruction masking to thwart differential power analysis
DE602005013178D1 (de) 2004-12-22 2009-04-23 Ericsson Telefon Ab L M Wasserzeichenmarkierung eines Computerprogrammcodes
US7613907B2 (en) * 2006-08-11 2009-11-03 Atmel Corporation Embedded software camouflage against code reverse engineering

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956753A (en) * 1993-12-30 1999-09-21 Intel Corporation Method and apparatus for handling speculative memory access operations
US6189068B1 (en) * 1995-08-31 2001-02-13 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US20050069138A1 (en) * 2003-09-25 2005-03-31 Sun Microsystems, Inc., A Delaware Corporation Application program obfuscation

Also Published As

Publication number Publication date
US8301890B2 (en) 2012-10-30
WO2008021866A1 (en) 2008-02-21
US20080040607A1 (en) 2008-02-14
TW200820707A (en) 2008-05-01

Similar Documents

Publication Publication Date Title
TWI449392B (zh) 軟體執行的隨機化
US7613907B2 (en) Embedded software camouflage against code reverse engineering
US9740863B2 (en) Protecting a secure boot process against side channel attacks
US7194633B2 (en) Device and method with reduced information leakage
Wang et al. Covert and side channels due to processor architecture
US9069938B2 (en) Securing microprocessors against information leakage and physical tampering
May et al. Random register renaming to foil DPA
US9582650B2 (en) Security of program executables and microprocessors based on compiler-architecture interaction
EP2300952B1 (en) A method for adapting and executing a computer program and computer program product and computer architecture therefor
CA2465333A1 (en) Device and method with reduced information leakage
US8745407B2 (en) Virtual machine or hardware processor for IC-card portable electronic devices
CA2258338C (en) Method and apparatus for minimizing differential power attacks on processors
US11126432B2 (en) Computer processor and method with short forward jump instruction inhibiting
Cyr et al. Low-cost and secure firmware obfuscation method for protecting electronic systems from cloning
Milenković et al. Using instruction block signatures to counter code injection attacks
Bouffard et al. Reversing the operating system of a Java based smart card
US9177111B1 (en) Systems and methods for protecting software
Wanderley et al. Security fpga analysis
Hossain et al. Hexon: Protecting firmware using hardware-assisted execution-level obfuscation
US20230195907A1 (en) Apparatus And Method For Defending Against Control Flow Attack, And Processor
Vaslin ‘Hardware Core for Off-Chip Memory Security Management in Embedded Systems
US20080244275A1 (en) Instruction Transform for the Prevention and Propagation of Unauthorized Code Injection
Razafindralambo Security of micro-controllers: From smart cards to mobile devices
Holloway Vulnerabilities Analysis and Attack Scenarios Description
Balasch Masoliver Implementation Aspects of Security and Privacy in Embedded Design