TWI711970B - 用於安全程式執行之資訊確保系統和方法 - Google Patents
用於安全程式執行之資訊確保系統和方法 Download PDFInfo
- Publication number
- TWI711970B TWI711970B TW106102633A TW106102633A TWI711970B TW I711970 B TWI711970 B TW I711970B TW 106102633 A TW106102633 A TW 106102633A TW 106102633 A TW106102633 A TW 106102633A TW I711970 B TWI711970 B TW I711970B
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- memory
- instructions
- computer
- data
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 66
- 238000012545 processing Methods 0.000 claims abstract description 65
- 238000004088 simulation Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 43
- 238000004891 communication Methods 0.000 description 32
- 238000004590 computer program Methods 0.000 description 27
- 230000002085 persistent effect Effects 0.000 description 16
- 230000004224 protection Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 230000008901 benefit Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 238000004321 preservation Methods 0.000 description 6
- 239000000047 product Substances 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000002955 isolation Methods 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 239000013307 optical fiber Substances 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 241000700605 Viruses Species 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000002269 spontaneous effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000282412 Homo Species 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/74—Protecting 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 operating in dual or compartmented mode, i.e. at least one secure mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/72—Protecting 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 cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/109—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by using specially-adapted hardware at the client
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2125—Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2149—Restricted operating environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一種增強型資訊確保系統可包含一改良式電腦12,其包括經組態以擴展可用的機器指令集之一中央處理單元(CPU)16模擬器。該CPU模擬器可經組態以模擬獲自一非本機安全運算碼集合的機器語言指令。該CPU模擬器例如可在其視需要經解密時,藉由將隨機存取記憶體(RAM)14中之指令38及資料36儲存於CPU暫存器18中,來確保該等指令及該等資料36當在RAM中時始終保持為經加密的。
Description
本發明係關於用於在程式碼執行期間維持資料及程式安全之裝置及方法。
保全現代電腦程式(其位於標準桌上型電腦或關鍵即時嵌入型系統上)中之關鍵資料及技術係現今面臨巨大威脅之環境中的至關重要的要求。當潛在攻擊者具有大預算、對目標系統直接存取且具有大量時間時,此任務之難度成倍增加。
執行關鍵功能(例如,核發電廠之控制、手術機器人、自發武器系統等)之電腦程式通常經由與可提取關鍵資料或損害其行為及效能的其他電腦及電腦程式隔離而受到保護。實際上,電腦程式之「關鍵性」在廣泛範圍內變化,自損害可造成使用者不便之狀況,至損害可造成關鍵基礎架構及服務之暫時損耗之狀況,至損害可造成人類壽命損耗之狀況。因此,存在許多情境,其中電腦系統之完全隔離並不合理或並不實際,但儘管如此仍極需要程式及資料之額外保護。舉例而言,使用者可需要運行對習知個人電腦執行關鍵功能(調整附加安全及保護)之程式。
安全設計所隱含的目標為使獲得所保護資訊之成本大於所
保護資訊之價值。特定問題為在程式碼處於操作中且資料處於使用中(所謂「資料使用中」)時保全電腦程式碼及資料。相關問題為在電力斷開(所謂「資料靜止」)時或在傳輸時(所謂「資料運動中」)時的程式碼及資料之保全。
此等問題的常見基於硬體之方法係基於安全密碼處理器之某種形式。安全密碼處理器為用於執行密碼編譯操作的嵌入防篡改封裝中之專用處理器。密碼處理器將僅僅在安全環境中輸出經解密資料或程式指令。然而,安全密碼處理器通常用於保全相對較小量資訊,且通常限於其可保護之資訊的範疇。將安全密碼處理器按比例調整至較大應用將為成本過高的,從而需要相當大的專用資源。此外,安全密碼處理器固定於矽中,藉此呈現維護及更新難題。對系統的任何成功攻擊將需要重新開發及修改大量可能昂貴的硬體。
需要並不顯著犧牲效能的較低成本之可更新解決方案。另外,此等解決方案應適用於習知計算系統,而非需要昂貴且不切實際的客製硬體。保全現代電腦程式(其位於標準桌上型電腦或關鍵即時嵌入型系統上)中之關鍵資料及技術係現今面臨巨大威脅之環境中的至關重要的要求。當潛在攻擊者具有大預算、對目標系統直接存取且具有大量時間時,此任務之難度成倍增加。
執行關鍵功能(例如,核發電廠之控制、手術機器人、自發武器系統等)之電腦程式通常經由與可提取關鍵資料或損害其行為及效能的其他電腦及電腦程式隔離而受到保護。實際上,電腦程式之「關鍵性」在廣泛範圍內變化,自損害可造成使用者不便之狀況,至損害可造成關鍵
基礎架構及服務之暫時損耗之狀況,至損害可造成人類壽命損耗之狀況。因此,存在許多情境,其中電腦系統之完全隔離並不合理或並不實際,但儘管如此仍極需要程式及資料之額外保護。舉例而言,使用者可需要運行對習知個人電腦執行關鍵功能(調整附加安全及保護)之程式。
安全設計所隱含的目標為使獲得所保護資訊之成本大於所保護資訊之價值。特定問題為在程式碼處於操作中且資料處於使用中(所謂「資料使用中」)時保全電腦程式碼及資料。相關問題為在電力斷開(所謂「資料靜止」)時或在傳輸時(所謂「資料運動中」)時的程式碼及資料之保全。
此等問題的常見基於硬體之方法係基於安全密碼處理器之某種形式。安全密碼處理器為用於執行密碼編譯操作的嵌入防篡改封裝中之專用處理器。密碼處理器將僅僅在安全環境中輸出經解密資料或程式指令。然而,安全密碼處理器通常用於保全相對較小量資訊,且通常限於其可保護之資訊的範疇。將安全密碼處理器按比例調整至較大應用將為成本過高的,從而需要相當大的專用資源。此外,安全密碼處理器固定於矽中,藉此呈現維護及更新難題。對系統的任何成功攻擊將需要重新開發及修改大量可昂貴的硬體。
需要並不顯著犧牲效能的較低成本之可更新解決方案。另外,此等解決方案應適用於習知計算系統,而非需要昂貴且不切實際的客製硬體。
根據本發明教示的用於安全程式執行之系統解決了上文概
述之技術問題。本文中所描述之增強型資訊確保系統修改一電腦之操作以包括並非另外可用於該電腦之處理器的安全機器語言指令。在一些實例中,此包括使用一增強型安全性中央處理單元(CPU)模擬器。本發明解決方案可幾乎完全基於現存現成的處理器,其可有助於適應目前技術。根據本發明之態樣的系統可對電腦程式及相關聯資料(當位於隨機存取記憶體(RAM)中時)提供保護。
在一些具體實例中,一種用於安全地執行軟體指令之電腦系統可包括:一第一處理器,其具有複數個硬體暫存器;一記憶體;及一模擬器程式,其包括儲存於該記憶體中之複數個指令,該等指令可由該第一處理器執行以進行以下操作:模擬一第二處理器;模擬該第二處理器上的複數個本機機器指令之執行,該等本機機器指令為該第二處理器本機帶有;及模擬該第二處理器上的複數個安全機器指令之執行,該等安全機器指令並非為該第二處理器本機帶有的,且包括一或多個運算碼,其經組態以確保與該等運算碼相關聯的運算元資料之未加密值僅僅儲存於該第一處理器之該等硬體暫存器中之一或多者中。
在一些具體實例中,一種實施於一電腦系統中之方法可包括:自一記憶體擷取一經加密機器指令;解密該經擷取機器指令且將該經解密指令儲存於一第一處理器之一第一硬體暫存器中;及使用一模擬第二處理器模擬該經解密指令之執行;其中該經解密指令為關於該模擬第二處理器非本機的複數個安全指令中之一者。
在一些具體實例中,一種用於安全地執行軟體指令之電腦系統可包括:一第一處理器,其具有複數個硬體暫存器;一記憶體;及一模
擬器程式,其包括儲存於該記憶體中之複數個指令,該等指令可由該第一處理器執行以進行以下操作:自該記憶體擷取一經加密機器指令;解密該經擷取機器指令且將該經解密指令儲存於一第一處理器之該等硬體暫存器中之一或多者中;及使用該模擬第二處理器模擬該經解密指令之執行;其中該經解密指令為關於該模擬第二處理器非本機的複數個安全指令中之一者。
特徵、功能及優點可在本發明之各種具體實例中獨立地實現,或可在其他具體實例中組合,參考以下描述及圖式可見該等特徵、功能及優點之另外細節。
10:增強型資訊確保(IA)系統
12:電腦
14:隨機存取記憶體(RAM)
16:實體中央處理單元(CPU)
18:暫存器
19:暫存器
20:處理器電路
22:第二中央處理單元(CPU)
24:超管理器
26:作業系統(OS)
28:增強型安全性中央處理單元(CPU)模擬器
30:超管理器專用隨機存取記憶體(RAM)
32:模擬器專用隨機存取記憶體(RAM)
34:安全程式
36:程式資料
38:機器語言指令
40:模擬暫存器
42:模擬處理器電路
44:補充指令
100:方法
102-118:步驟
200:資料處理系統
202:通信構架
204:處理器單元
206:記憶體
208:持續性儲存器
210:通信單元
212:輸入/輸出(I/O)單元
214:顯示器
216:儲存裝置
218:程式碼
220:電腦可讀媒體
222:電腦程式產品
224:電腦可讀儲存媒體
226:電腦可讀信號媒體
300:網路資料處理系統
302:網路
304:第一網路器件
306:第二網路器件
308:電子儲存裝置
310:用戶端電腦
312:用戶端膝上型電腦或平板電腦
314:用戶端智慧型器件
圖1為根據本發明之態樣的展示具有增強型資訊確保系統之說明性電腦之元件的示意性方塊圖。
圖2為根據本發明之態樣的描繪用於在模擬處理器上執行安全程式之說明性方法中之步驟的流程圖。
圖3為說明性資料處理系統之各種構件的示意圖。
圖4為說明性電腦網路系統之示意性表示。
併有安全程式執行之資訊確保(IA)系統的各種態樣及實例以及相關方法在下文進行描述,且在相關聯圖式中進行說明。除非另外規定,否則根據本發明之態樣的資訊確保系統及/或其各個構件可(但並非必要)含有以下各項中之至少一者:本文中描述、說明及/或併入之結構、構
件、功能性及/或變化。此外,除非特定地排除,否則結合本發明教示內容而描述、說明及/或併入於本文中之處理程序步驟、結構、構件、功能性及/或變化可包括在其他類似器件及方法中,包括在所揭示之具體實例之間可互換。對各種實例之以下描述在性質上僅為說明性且不意欲以任何方式限制本發明、其應用或使用。另外,由以下所描述之實例及具體實例提供之優點在性質上為說明性的,且並非所有實例及具體實例提供相同優點或相同程度之優點。
根據本發明之態樣的資訊確保系統(其在本文中可被稱作增強型IA系統)對在習知實體電腦及作業系統上運行之電腦程式及資料提供附加保護,而不隔離該等電腦及電腦程式。
現代電腦處理器之機器指令及暫存器經組態以藉由各種手段保護電腦程式及資料,包括多個安全等級,對定址及存取實體及經傳呼記憶體之限制,用於資料之加密及解密的特殊指令,及防止一個程式存取或損害另一程式之程式碼及資料的其他特徵。然而,此等特徵並不防止用於存取或修改隨機存取記憶體(RAM)之內容及經寫入至硬碟的RAM傳呼之內容的複雜電子方法。
已知虛擬機(VM)產品使用現代電腦處理器之機器指令及暫存器來保護電腦程式及資料。當執行(亦即,模擬)彼等指令時,此等VM產品可調用特殊程序來實施與並行及多階虛擬機相關的其他保護。
然而,根據本發明教示的增強型IA系統提供並非另外可用於標準處理器的或可自現存VM產品獲得的保護。一般而言,增強型IA系統藉由擴展可用的機器語言指令集以包括經組態以提供安全性之額外指
令,來有效地修改電腦之操作。在一些實例中,此包括使用增強型安全性中央處理單元(CPU)模擬器。當在RAM中或儲存為經寫入至硬碟之RAM傳呼時,增強型IA系統特定集中於保護電腦程式及資料。
保護程式資料
在一些實例中,增強型IA系統藉由強加某些限制來保護程式資料。具體而言,將儲存於RAM中之所有資料加密,將所有未加密資料僅僅儲存於實體暫存器中,且保護所有關鍵計算以防出現可使得其他程式能夠檢查暫存器中之任何未加密資料的處理器層級中斷。
此保護藉由增強型IA系統之兩個態樣而促進。首先,可編譯或以其他方式修改程式之原始程式碼以包括未發現於現存電腦處理器或現存VM產品中之特殊機器指令。此等機器指令可經組態以執行各種任務,例如:安全地產生及管理實體暫存器中未加密且RAM中經加密之加密密鑰;用隨機位元初始化專用RAM;在安全計算開始時停用中斷以防止檢查儲存於實體處理器暫存器中之未加密資料;在安全計算之結束時實現中斷;在將未加密暫存器值儲存於RAM中時加密資料;在自RAM擷取經加密資料且將其儲存於暫存器中時解密資料,等等。
第二,可由IA虛擬機(例如,模擬器)執行所得二進位程式,該IA虛擬機經組態以執行習知處理器之機器語言指令以及上述特殊機器語言指令。除上述彼等二進位程式之外,IA虛擬機亦可在其遇到控制記憶體分配、虛擬記憶體傳呼、內容切換等之機器語言指令時調用其他特殊程序。
保護程式碼
儘管如此,有可能藉由檢查及修改程式碼之二進位表示來平衡利用此等特殊指令之程式。為提供額外保護,可傳輸程式碼之二進位表示且將其儲存為經加密形式,且可在執行期間在RAM中保持為經加密形式。此與典型實踐形成對比,在典型實踐中,可將電腦程式加密且儲存為經加密形式,且以經加密形式載入至RAM中,但在執行開始之前將其整體解密。
在一些實例中,可藉由安全步驟序列保護程式碼之二進位表示(亦即,機器語言)。首先,在已知安全的經隔離電腦上準備及編譯程式之原始程式碼。第二,將所得可執行二進位加密為可由IA虛擬機(例如,下文描述的增強型安全性CPU模擬器)解密且執行之形式。接著可將經加密可執行二進位傳送至習知電腦且儲存於該電腦上。在習知電腦上,IA虛擬機可經組態以執行程式碼之經加密二進位表示(當在RAM中時)。此可(例如)藉由自RAM遞增地擷取經加密機器語言指令及其參數,將機器語言指令及其參數解密至實體暫存器中,且接著執行模擬操作來實現。
電腦方法、系統及產品之說明性態樣
增強型IA系統之態樣可體現為電腦方法、電腦系統或電腦程式產品。因此,增強型IA系統之態樣可呈以下形式:完全硬體具體實例、完全軟體具體實例(包括韌體、常駐軟體、微碼及其類似者),或組合軟體態樣及硬體態樣之具體實例,其皆可在本文中通常稱作「電路」、「模組」或「系統」。此外,增強型IA系統之態樣可呈體現於一電腦可讀媒體(或多個電腦可讀媒體)中之電腦程式產品的形式,其上體現有電腦可讀程式碼/指令。
可利用電腦可讀媒體之任何組合。電腦可讀媒體可為電腦可讀信號媒體及/或電腦可讀儲存媒體。電腦可讀儲存媒體可包括電子的、磁,性的、光學的、電磁的、紅外的及/或半導體系統、裝置或器件,或此等構件之任何合適的組合。電腦可讀儲存媒體之更特定實例可包括以下各者:具有一或多根電線之電連接件、攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、光纖、攜帶型緊密光碟唯讀記憶體(CD-ROM)、光學儲存裝置、磁性儲存裝置,及/或此等構件之任何合適的組合,及/或其類似者。在本發明之背景中,電腦可讀儲存媒體可包括可含有或儲存程式以供或結合指令執行系統、裝置或器件使用的任何合適的有形媒體。
電腦可讀信號媒體可包括具有體現於其中之電腦可讀程式碼的所傳播之資料信號,例如,在基頻中或作為載波之部分。此所傳播之信號可呈多種形式中的任一者,包括(但不限於)電磁性、光學及/或其任何合適的組合。電腦可讀信號媒體可包括並非為電腦可讀儲存媒體且能夠傳達、傳播或傳輸程式以供或結合指令執行系統、裝置或器件使用的任何電腦可讀媒體。
體現於電腦可讀媒體上之程式碼可使用任何適當媒體傳輸,包括(但不限於)無線、有線、光纖纜線、RF及/或其類似者,及/或此等媒體之任何合適的組合。
可將用於執行增強型IA系統之態樣之操作的電腦程式碼寫入程式設計語言中之一者或任何組合中,包括面向對象之程式設計語言(諸如Java、Smalltalk、C++及/或其類似者),及習知程序程式設計語言(諸如C)。
可使用任何合適的語言開發行動應用程式,包括先前提及之彼等語言以及Objective-C、Swift、C#、HTML5及其類似者。程式碼可以以下方式執行:完全在使用者之電腦上,部分在使用者之電腦上,作為單獨軟體套件、部分在使用者之電腦上且部分在遠端電腦上,或完全在遠端電腦或伺服器上。在後種情形中,該遠端電腦可經由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者之電腦,及/或可連接至外部電腦(例如,使用網際網路服務業者經由網際網路)。
增強型IA系統之態樣在下文參考方法、裝置、系統及/或電腦程式產品之流程圖說明及/或方塊圖進行描述。流程圖及/或方塊圖中的每一區塊及/或區塊之組合可藉由電腦程式指令實施。可將該等電腦程式指令提供至通用電腦、專用電腦或其他可程式化資料處理裝置之處理器以產生一機器,以使得經由該電腦或其他可程式化資料處理裝置之該處理器執行之指令產生用於實施該或該等流程圖及/或方塊圖區塊中所指定之功能/動作之手段。
此等電腦程式指令亦可儲存於電腦可讀媒體中,該電腦可讀媒體可引導電腦、其他可程式化資料處理裝置及/或其他器件以特定方式起作用,使得儲存於電腦可讀媒體中之指令產生包括實施該或該等流程圖及/或方塊圖區塊中所指定之功能/動作的指令的製品。
該等電腦程式指令亦可載入至電腦、其他可程式化資料處理裝置及/或其他器件上以使對該器件執行一系列操作步驟以產生一電腦實施處理程序,以使得在該電腦或其他可程式化裝置上執行之指令提供用於實施該或該等流程圖及/或方塊圖區塊中所指定之功能/動作之處理程序。
圖式中之任何流程圖及/或方塊圖意欲說明根據本發明教示之態樣的系統、方法及電腦程式產品之可能實施之架構、功能性及/或操作。就此而言,每一區塊可表示程式碼之模組、片段或部分,其包含用於實施所指定邏輯函數之一或多個可執行指令。在一些實施中,區塊中標記之函數可不按圖式中標記之次序出現。舉例而言,視所涉及功能性而定,連續展示之兩個區塊實際上可實質上同時執行,或該等區塊有時可以相反次序執行。每一區塊及/或區塊之組合可藉由執行所指定之功能或動作的基於專用硬體之系統(或專用硬體及電腦指令之組合)實施。
說明性增強型IA系統之概述
在一些實例中,有可能僅僅使用可由標準主機處理器執行之CPU本機(CPU-native)指令來產生實施根據本發明教示之安全操作的對象程式碼。在其他實例中,可藉由使用經修改處理器模擬器擴展可用的指令集之增強型IA系統實現類似功能性。
大體而言,此增強型IA系統10可包括在習知主機電腦上運行之虛擬機(亦被稱作數位處理器及/或資料處理系統)。下文更詳細地描述計算系統之其他態樣。參看圖1,合適的電腦12之硬體可包括隨機存取記憶體(RAM)14及與RAM通信之實體中央處理單元(CPU)16。CPU 16可包括具有複數個暫存器18及處理器電路20之任何合適的處理單元或核心。可預留某些暫存器19(例如)以供加密密鑰之儲存。電腦12可包括複數個CPU及/或一多核處理器,此處表示為第二CPU 22。換言之,CPU 22可表示第二處理單元或處理核心。參見標題為說明性資料處理系統(下文)之章節,以獲得可包括於電腦12中之額外硬體的論述。
系統10可包括經組態以管理一或多個沙盒式(sandboxed)虛擬機的在電腦12上運行之超管理器24。此等虛擬機可包括作業系統(OS)26及增強型安全性CPU模擬器28。在一些實例中,超管理器24可為裸金屬(亦即,「本機」或「I型」)超管理器。超管理器24可與超管理器專用RAM 30通信,該超管理器專用RAM為RAM 14中以獨佔方式分配給超管理器24的一部分。類似地,超管理器專用RAM 30內的模擬器專用RAM 32可以獨佔方式分配給模擬器28。在一些實例中,可不存在超管理器24,在此狀況下,CPU模擬器28可替代地(例如)在安裝於電腦12上之本機作業系統(圖中未示)上運行。
模擬器28可包括經組態以模擬選定CPU之執行之任何合適的CPU模擬器。選定CPU可屬於與CPU 16相同或不同的類型。模擬器28可用以運行敏感程式,諸如包含資料36及機器語言指令38之安全程式34。安全程式34可載入至RAM(例如,RAM 30)中。
複數個模擬暫存器40及模擬處理器電路42可由模擬器用以模擬選定CPU且執行機器語言指令38。機器語言指令38(亦被稱作機器指令及/或組合語言指令)可包括運算碼,從而指定有待執行之操作。與此等運算碼相關聯之運算元係指藉由指令處理之資料36。資料36可包括未加密資料及經加密資料。運算碼可包括通常可由模擬CPU執行之本機(例如,標準)運算碼,及/或安全運算碼。模擬器28可包括一組補充指令44,其在功能上組態模擬器28以處置此等安全運算碼。
根據本發明教示之安全運算碼經組態以在安全程式34之執行期間維持資料36之加密。安全運算碼可獲自按照根據本發明之態樣之系
統定義的一組安全計算指令。此等安全運算碼表示可用於電腦12之機器語言指令之展開,此係由於其並非為CPU 16本機帶有之指令集的一部分(或,對彼問題而言,經模擬之標準CPU本機帶有的)。
藉由任何合適的方法使安全運算碼包括於經模擬程式中。在一些實例中,藉由預先編譯指示詞將安全運算碼添加至程式。在一些實例中,經由本機編譯器之修改促進安全運算碼。在一些實例中,藉由對象程式碼之後編譯修改而包括安全運算碼。在一些實例中,在執行期間動態地包括安全運算碼(例如)以補充及/或替換非安全本機程式碼。
模擬器28經組態以根據模擬處理器之規範將模擬CPU本機帶有的機器語言指令模擬。換言之,在無修改的情況下執行本機運算碼。
然而,藉由模擬器以不同方式處置安全運算碼及安全資料。在一些實例中,可使分配給程式資料36之RAM模糊或部分模糊(例如,隨機化)以防止檢查及偵測資料中之圖案。在一些實例中,敏感資料始終在儲存於RAM中時經加密。在一些實例中,模擬器28經組態以確保僅僅在硬體暫存器中發現未加密資料且僅僅在預留硬體暫存器中發現加密密鑰。在一些實例中,模擬器在執行安全運算碼時使用CPU 16之暫存器18而非模擬暫存器40(例如,在程式之所謂的「關鍵區段」內)。當對敏感資料進行操作時,亦可暫時中止硬體中斷。
使用本機運算碼之說明性方法
如上所述,可充分修改軟體程式之程式碼(例如,經由編譯及/或預處理)使得模擬器(例如,模擬器28)可不必要。換言之,可修改程式碼使得其可由主機電腦安全地且非虛擬地運行,從而僅僅利用由主機
處理器辨識之本機運算碼。此章節論述兩種用於此程式碼修改之互補方法。
第一種方法為使得程式利用操控資料之安全基元函數。第二種方法為使得程式在函數層級解密及加密,藉此允許易於控制在何處及何時加密資料。基於安全基元之方法可提供較高安全性,而基於解密/加密安全函數調用之方法可提供較佳效能。此兩種方法係互補的,且可出於額外安全性而組合該等方法。
基於安全基元運算而產生安全程式碼在兩種方法中可為更加安全的,此係由於安全性可追溯至基本操作。基本操作之實例包括加法、減法、乘法、除法、比較、賦值及類型轉換。將此等基元經寫入組合語言中(例如,使用AES-NI操作)以確保資訊保持受保護。
用於處置安全基元之一般處理程序如下:(1)停用中斷;(2)解密相關變數,其中將結果儲存於處理器暫存器(而非記憶體)中;此可包括檢查有效的訊息認證碼(MAC);(3)執行基礎的基元運算;(4)將基元運算之結果儲存於另一處理器暫存器中;(5)清除用於步驟(2)中之暫存器;(6)加密在步驟(3)中發現且儲存於暫存器中之結果,且將其儲存於主記憶體中;(7)清除用於步驟(6)中之處理器暫存器;及(8)重新啟用中斷。在此處理程序期間,任何經解密變數將不會在任一點處駐留於記憶體中。
舉例而言,考慮以下各者,其中X、Y及B為經加密變數:B=X+Y.
在此狀況下,X、Y及B之值如上文所論述進行加密。在此實例中,藉由將X及Y解密至內部處理器暫存器,將兩個經解密值相加,
且接著將結果儲存於B之經加密版本中來進行加法。在外部,安全記憶體中唯一的變化將為儲存有結果之經加密變數B的更新。
轉向另一種方法,基於經修改函數調用而產生安全程式碼與上文之方法互補。使用安全函數調用可包括修改函數之二進位程式碼,使得該函數:(1)停用調用之佔先;(2)將函數及運行時間資料解密至普通可執行碼及變數;(3)檢查MAC中之建置以驗證完整性;(4)執行該函數;(5)加密結果;及(6)抹除(例如,藉由用隨機資料覆寫)所分配的記憶體(在其被標記為空閒之前),該記憶體包括所用的任何堆疊。
此第二種方法可對於許多函數而言更快,尤其對於迭代數千個迴路之函數而言。然而,基於安全函數調用之方法的確將更多資料及程式碼簡單地曝露於RAM中。基於安全函數調用之方法保留相當大的安全性,此係由於至多僅僅將存在與安全處理器核心一樣多的正在運行之同步安全處理程序。因此,即使實體上移除及檢查RAM,藉由彼快照曝露的可能資訊之量亦有限。在最佳情況下,與彼一個函數調用有關的資料被曝露,而無需任何周圍內容感覺到。
作為整體深度防衛策略中之部分,此第二種方法之安全性可經由使用現存軟體模糊方法進一步增強,該等方法用來在短視窗(其處於未加密狀態中)期間保護安全函數。常規記憶體分配(即使未經加密)仍藉由程式在內部進行。記憶體分配使用較大記憶體區塊中之隨機位置,且較大記憶體區塊填充有隨機數。
為以此種類保護為目標,入侵者必須在初始函數解密出現之後及在新加密及清除結束之前讀取記憶體。甚至,彼將需要判定實際堆疊
位於何處,且堆疊可被置放於安全記憶體中之任何位置處。此方法具有以下優點:允許實施者易於選擇在何處出現加密且因此可在何處影響效能。
函數之加密可使用標準鏈接函數,諸如用於完全磁碟加密。在一些實例中,位於函數之開始處的欄位含有隨機數及訊息認證碼。一旦彼等欄位經加密,整個函數將受到保護而免遭碼本型式之攻擊以及修改。當未主動調用時,安全函數應保持於經加密狀態中。
說明性增強型安全性CPU模擬器
相比於上文所概述之兩種方法,用以提供安全程式執行之簡化方法包括使用經修改以處置安全指令的增強型安全性CPU模擬器。標準CPU模擬器之實例為QEMU(可自qemu.org獲得),其為經組態以執行硬體虛擬化從而經由動態二進位轉譯模擬CPU之超管理器。增強型安全性CPU模擬器可基於類似於QEMU(或其類似者)之超管理器。
根據本發明教示之系統集中於將至及自主記憶體之所有互動保持為經加密的。假定待執行之程式或作業系統已對進入至程式(或作業系統)中及出自該程式的資料具有充分控制。加密至記憶體之所有存取的本發明方法可用其他加密操作進行擴展,使得僅僅增強型安全性CPU模擬器可解密相關程式且將該程式載入至其經加密記憶體中。
為維持至及自主記憶體之互動的加密,增強型安全性CPU模擬器系統利用實體CPU之硬體暫存器以暫時地儲存未加密資訊。因此,足夠數目個此等暫存器必須專用於此目的且不用於其他目的。此可(例如)藉由模擬相比實體上存在於電腦中之CPU具有較少個暫存器的CPU模型來實現。此將釋放未存在於模擬CPU中之所有實體CPU暫存器以供加密及解
密操作。換言之,若主機處理器相比模擬處理器具有較多個暫存器,則簡化模擬器之實施。若經實施用於多核晶片,則模擬器可將一組暫存器分配給正在執行之程式,且以獨佔方式將另一組機器暫存器分配給增強型安全性指令。
增強型安全性CPU模擬器會將連續記憶體之存在呈現給作業系統。實際實體記憶體可經分段,但上面運行有增強型安全性CPU模擬器之基礎作業系統應向模擬器呈現連續記憶體之存在。為將記憶體加密,必須建立映射。為建立映射,首先必需判定所使用之加密的基本形式。對於此實例,將128位元假定為加密區塊大小,但其無需限於128位元。較大區塊大小將傾向於會以效能為代價來增大安全性。
相較於用於相加熵或任何選用的內部總和檢查碼之位元,一旦判定用於加密之位元數目,便必需判定用於實際資料之位元數目。在此實例中,將假定64位元,但大體而言,數目可為達至實際加密區塊大小之任何數目。視需要,可用密碼編譯雜湊替換總和檢查碼。在此實例中,當原始程式存取0x100000時,增強型安全性CPU模擬器將以0x200000存取區塊,此歸因於訊息展開因子2。模擬器順暢地處置此轉變。
經加密載入及儲存區
作為可藉由增強型安全性CPU模擬器實施之安全指令的一實例,現將進一步詳細論述通用MOVE運算碼。用以載入或儲存資訊之通用處理器指令可寫為:MOVE<目的地(destination)><源(source)>
下文論述將集中於源或目的地位於主記憶體中但並非兩者
均位於主記憶體中的情境。若源及目的地兩者均為處理器暫存器,則將出現正常的未加密操作。若源及目的地均位於主記憶體中,則處理程序將包括直接複製或經加密載入加經加密儲存區之組合。應注意,可僅僅在複製整個經加密區塊的情況下使用直接複製,且不存在作為加密處理程序之部分而進入經加密區塊偏移中的佈建(例如,藉由使其成為總和檢查碼計算之部分)。此佈建可用以防止運行一個經加密區塊至另一者之簡單複製。
若源位於主記憶體中且目的地為處理器暫存器,則指令將調用一次常式,該次常式將執行解密主記憶體中之源且將結果儲存於暫存器中的一連串本機指令。若目的地位於主記憶體中且源為處理器暫存器,則該指令將用將經加密結果儲存於主記憶體中之一或多個指令替換。
經加密儲存區
將值儲存於經加密記憶體中並非如同加密該值且將結果置放於記憶體中般簡單。實情為,一般處理程序可包括:(1)解密經加密記憶體之一個或兩個塊且將結果儲存於CPU暫存器中(若資料未與經加密區塊對準,則可需要兩個塊。);(2)(視情況),驗證經解密記憶體區塊通過可存在的任何內部總和檢查碼;舉例而言,在所論述之實例中,64個位元用於資料且64個位元用於隨機位元及總和檢查碼;此可進一步劃分成隨機資料之32個位元及32位元總和檢查碼;若此總和檢查碼不合格,則執行預定動作;(3)此時,應在CPU暫存器中解密經加密記憶體之一個或兩個區塊;用有待儲存之值更新由彼等暫存器表示的未加密記憶體中之部分;(4)(視情況),用新的隨機位元更新含有隨機位元之任何區域;此為昂貴操作,因此可並非每次均進行;(5)重新計算與此等區塊相關聯之總和檢查
碼;及(6)加密所得區塊且將其儲存回原始位置中。
經加密載入
將記憶體之一部分解密至處理器暫存器可如下進行:(1)解密經加密記憶體之一個或兩個塊且將結果儲存於CPU暫存器中(若資料未與經加密區塊對準,則可需要兩個塊。);(2)(視情況),驗證經解密記憶體區塊通過可存在的任何內部總和檢查碼;(3)此時,應在CPU暫存器中解密經加密記憶體之一個或兩個區塊,且硬體CPU暫存器可載入有經解密資料之相關部分。
加密實例
此實例將假定具有64位元資料、32位元總和檢查碼及32個位元隨機資料的128位元區塊大小。舉例而言,純文字區塊可佈置如下:[64位元資料][32位元隨機][32位元總和檢查碼]。此等選擇僅用於說明。在實際實施中可選擇不同值以達成不同安全性及效能目標。
1.發佈將32個位元儲存於記憶體位置0x100中的CPU指令。
2.將增強型安全性CPU模擬器使用之記憶體劃分成128位元(亦即,16位元組)塊。每一塊含有實際資料之八個位元組。
3.因為吾人儲存32個位元,所以吾人知道涉及位元組0x100、0x101、0x102及0x103。此為該程式所見。
4.更確切而言,吾人知道歸因於訊息展開因子而涉及實際記憶體位置0x200、0x202、0x204及0x206。
5.自128位元加密,吾人知道0x0至0xF為一個區塊且0x10至0x1F為另一個區塊。
6.若吾人將0x200、0x202、0x204及0x206除以十六(亦即,區塊大小),則吾人獲得異動中所涉及之經加密區塊為第32個區塊(第一區塊被稱作0)。由十六乘回32得出針對經加密記憶體之相關區段之位置的0x200。
7.將記憶體之此十六個位元組區段載入至暫存器中且解密。
8.程式記憶體中之0x100映射至實際記憶體中之0x200,其為使用上述考慮因素的128位元區塊之開始。可將彼等32個位元僅僅儲存於128位元暫存器之32個最有效數位中。
9.視情況,可用新的隨機位元更新彼暫存器中之隨機位元欄位。
10.視情況,可計算基於128位元區域中除總和檢查碼位元外之所有事物的總和檢查碼。視情況,此總和檢查碼亦可基於區塊數目。在此狀況下,其將為32。此將使得僅移動記憶體之區塊不起作用。
11.現加密所得128位元暫存器,且將結果儲存回位置0x200中。此意謂0x200至0x20F得以更新。
在此實例中,若資料替代地為64位元,則將有可能跳過初始解密,此係由於原始資料中無一者將被重新使用。
在一些狀況下,用來自硬體隨機數產生器之新位元週期性地(若並非連續地)替換隨機位元且接著重新計算總和檢查碼可為有利的。此可使反向工程改造更加困難。
雖然未作要求,但一般程式設計應嘗試使變數保持與記憶體對準,以避免在不同經加密區塊中將其不必要地分裂,此係由於彼將導致用於每一存取的加密操作之數目加倍。
設定密鑰
增強型安全性CPU模擬器將使用硬體數產生器產生加密密鑰。此密鑰一旦經儲存便不應可用於增強型安全性CPU模擬器正在運行之程式或作業系統。在領域系統之一般狀況中,應防止除增強型安全性CPU模擬器之外的任何事物存取儲存有密鑰相關之資訊的暫存器。
為加密或解密,通常需要將加密密鑰展開成一組子密鑰。可對每一加密進行此操作,或可預計算該組密鑰。歸因於密鑰及子密鑰之敏感本質,實際密鑰應保持於處理器暫存器中。經展開子密鑰亦應保持於處理器暫存器或記憶體之某一其他安全區段中將為較佳的。然而,若子密鑰之此儲存不可能或不切實際,則應在每一操作之後清除及重新產生該等子密鑰。此外,在記憶體中移動子密鑰使得難以存取可為合理的。準確的實施將視目標硬體之細節而定。
微碼更新可出於安全子密鑰儲存之目的而專用快取RAM內部的CPU之一部分,從而較佳地能夠儲存對應於多個實際加密密鑰之多組子密鑰。此更新亦應防止彼快取區域被轉移至主記憶體。在一些實例中,記憶體之加密及解密可僅僅出現在資料載入至快取記憶體時或出現在必需將來自快取記憶體之資料清空回至主記憶體時。
說明性模擬演算法
此章節描述用於使用增強型IA系統安全地執行敏感軟體程式之說明性方法的步驟;參見圖2。系統10之態樣可用於下文描述之方法步驟中。若適當,可參考可用於執行每一步驟之先前所描述構件及系統。此等參考係用於說明,且並非意欲限制執行該方法之任何特定步驟的可能方式。
圖2為說明在說明性方法中執行之操作的流程圖,且可並未列舉該方法之完整處理程序或所有步驟。圖2描繪通常上在100處予以指示的方法之多個步驟,該等步驟可結合根據本發明之態樣的增強型IA系統來執行。儘管方法100之各種步驟在下文中進行描述且在圖2中予以描繪,但該等步驟無需全部執行,且在一些狀況中可按不同於所展示之次序的次序來執行。
在步驟102處,模擬器藉由將安全程式之指令載入至RAM中而開始。舉例而言,模擬器28可將安全程式34載入至RAM 30中。該等指令可在位於RAM中時保持為加密的。
在步驟104處,模擬器將模擬暫存器初始化。舉例而言,可將暫存器40置零。
在步驟106處,模擬器將目前指令位址初始化以指向安全程式之開始。
在步驟108處,模擬器檢查以查看模擬是否應停止,且若是,則結束程式模擬。
在步驟110處,若模擬器未停止,則擷取目前指令指標處的下一運算碼。若整個程式經加密且為安全的,或若目前指令指標位於所謂的關鍵區段內,則可將所擷取指令解密至CPU之硬體暫存器中。舉例而言,可解密目前指令,且可將所得經解密指令載入至CPU 16之預留暫存器18中之一者中。
在步驟112處,若所擷取運算碼為結束(STOP)指令,則模擬器受指示以結束。
在步驟114處,若所擷取運算碼替代地為本機運算碼(亦即,位於模擬CPU之標準指令集內的運算碼),則藉由模擬CPU來模擬本機運算碼。
在步驟116處,若所擷取運算碼並非為結束指令或本機運算碼,則該指令為安全運算碼,且模擬器將模擬安全運算碼,(例如)好像該安全運算碼為正在模擬之CPU本機帶有的。以下章節描述此模擬之若干實例。大體而言,模擬器可包括一組補充模擬指令(諸如指令44),其待在模擬來自一組已知安全運算碼的指令時經執行。
在步驟118處,目前指令位址遞增,且控制返回至步驟108。
說明性安全運算碼實施
此章節描述用於安全運算碼之經模擬執行的若干說明性方法之步驟。返回參看方法100,下文方法為增強型安全性CPU模擬器可如何在步驟116中模擬安全運算碼之執行的實例。
大體而言,此實例假定增強型安全性CPU模擬器經組態以預留一個硬體暫存器用於一加密密鑰,且預留一個硬體暫存器用於一檔案加密密鑰(該等密鑰兩者儲存於安全非揮發性記憶體中且自安全非揮發性記憶體獲得),以及預留其他暫存器用於加密/解密操作及/或正常算術運算。另外,此實例實施使用正在執行之程式之軟體程式碼中的開始與結束關鍵區段指令來對一或多個「關鍵區段」加括號。此實例說明將藉由實施增強型安全性指令之CPU模擬器實施的邏輯。此等指令包括:用於獲得加密密鑰之指令,用於將分配給資料之記憶體初始化之指令,用於閱讀及寫入經加密檔案之指令,用於自分配給經加密資料之記憶體載入資料且將資
料儲存至該記憶體的指令,及用於停用中斷且稍後啟用該等中斷使得可安全地執行加密及解密操作的指令。自未加密記憶體載入資料且將資料儲存至該記憶體包括為增強型安全性指令(相較於本機指令),使得該等指令連同自經加密記憶體載入之未加密資料將由硬體CPU暫存器中之模擬器執行。
當到達下一運算碼時,可藉由模擬器按任何次序執行以下說明性的偽碼若-則語句:若運算碼<<自安全非揮發性記憶體讀取加密密鑰>>則{執行自安全非揮發性記憶體讀取加密密鑰的指令,且儲存於預留加密密鑰暫存器中;}否則若運算碼<<自安全非揮發性記憶體讀取檔案加密密鑰>>則{執行自安全非揮發性記憶體讀取檔案加密密鑰的指令,且儲存於預留檔案加密密鑰暫存器中;}否則若運算碼<<開始關鍵區段指令>>則{執行暫時中止中斷、儲存目前硬體暫存器(排除預留加密密鑰暫存器),且將目前硬體暫存器(排除預留加密密鑰暫存器)之內容置零的指令}否則若運算碼為<<結束關鍵區段指令>>則{執行將目前硬體暫存器(排除預留加密密鑰暫存器)之內容置零、恢復目前硬體暫存器(排除預留加密密鑰暫存器),且恢復中斷的指令;
}否則若運算碼<<初始化記憶體>>則{執行用隨機位元初始化經分配給經模擬程式資料之RAM的指令;}否則若運算碼<<自經加密記憶體載入暫存器>>則{自經模擬機器語言RAM擷取暫存器名稱及記憶體位置;執行自分配給經模擬程式資料之記憶體中之所指定位置載入所指定暫存器的指令;及使用在經預留用於加密密鑰之硬體暫存器中發現的加密密鑰來解密;}否則若運算碼為<<將暫存器儲存至經加密記憶體>>則{自經模擬機器語言RAM擷取暫存器名稱及記憶體位置;執行使用在經預留用於加密密鑰之硬體暫存器中發現的加密密鑰來加密所指定暫存器的指令;及將彼暫存器之內容儲存至分配給經模擬程式資料之記憶體中之所指定位置;}否則若運算碼為<<自未加密記憶體載入暫存器>>則{自經模擬機器語言RAM擷取暫存器名稱及記憶體位置;執行自分配給經模擬程式資料之記憶體中之所指定位置載入所指定暫存器的指令;}否則若運算碼<<將暫存器儲存至未加密記憶體>>則{自經模擬機器語言RAM擷取暫存器名稱及記憶體位置;執行將所指定暫存器之內容儲存至分配給經模擬程式資料之記憶體中之所指定位置的指
令;}否則若運算碼<<自經加密檔案讀取資料>>,則{自經模擬機器語言RAM擷取檔案名稱及記憶體位置;執行自安全非揮發性記憶體讀取檔案加密密鑰且儲存於預留檔案加密密鑰暫存器中的指令,接著遞增地將來自檔案之資料讀取至硬體暫存器中;使用在經預留用於檔案加密密鑰之硬體暫存器中發現的檔案加密密鑰解密暫存器之內容;使用在經預留用於加密密鑰之硬體暫存器中發現的加密密鑰重新加密硬體暫存器之內容,及將硬體暫存器之內容儲存至分配給經模擬程式資料之記憶體中的所指定位置;}否則若運算碼為<<將資料儲存至經加密檔案>>則{自經模擬機器語言RAM擷取檔案名稱及記憶體位置;執行自安全非揮發性記憶體讀取檔案加密密鑰且儲存於預留檔案加密密鑰暫存器中的指令,接著遞增地將來自分配給經模擬程式資料之記憶體中的所指定位置之資料讀取至硬體暫存器中;使用出現在經預留用於加密密鑰之硬體暫存器中的加密密鑰解密硬體暫存器之內容;使用出現在經預留用於檔案加密密鑰之硬體暫存器中的檔案加密密鑰重新加密硬體暫存器之內容,及將硬體暫存器之內容儲存至所指定檔案;}否則若運算碼並非為增強型安全性運算碼{用指示「無效運算碼」之誤差訊息停止模擬器;
}
增強型IA系統之說明性益處及應用
此章節概述各種說明性應用程式及系統,其可適合於併有根據本發明之態樣的增強型IA系統或與其串接工作。
在第一實例中,增強型IA系統可用於演算法保護中。考慮複雜演算法判定用於較大程式之一組座標的情境。必須保護彼演算法不被來自程式二進位之攻擊者複製。可由根據本發明教示之增強型IA系統保護演算法自身連同相關聯資料,同時可將演算法之結果發送(例如)至主機作業系統以供顯示於標準視窗中。
在第二實例中,電腦程式可能非常寶貴及/或含有(例如)在有可能銷售之前必須受專門保護的關鍵技術。因此,需要產生在日常個人電腦上運行的真正安全的應用程式。安全應用程式可分佈且安裝有標準視窗安裝程式。可將程式之安全部分複製至安全虛擬機以供執行。此情形保護由應用程式之安全部分使用的實際應用程式碼及記憶體兩者。
在第三實例中,根據本發明教示之增強型IA系統可對防衛惡意程式碼(諸如病毒及蠕蟲)有用。安全虛擬機將僅僅運行信任且加密的程式碼。其因此提供對攻擊程式碼之安全部分之病毒及蠕蟲的全面保護。將由驗證標準作業系統中之密鑰檔案的增強型IA系統保護在常規OS上運行的應用程式中之任何部分。安全應用程式將驗證其直接與之交互的程式庫,包括具備未經修改之應用程式的彼等程式庫。即使主機OS之構件受損害,此保護亦將起作用。
在第四實例中,嵌入型系統可併有根據本發明教示之增強型
IA系統。儘管必須安全地遞送初始密鑰,但可在程式執行時於安全虛擬機中保護(例如)飛行電腦系統中之關鍵智慧財產權。正常程式可在系統之不安全部分中執行。在嵌入型系統中安全地獲得初始密鑰可較簡單,此係因為一些系統可已具有資料靜止安全性所需的硬體。舉例而言,基於現代PowerPC之設計具有整合式安全性處理器。
在第五實例中,可重新編譯嵌入型程式碼以在桌面測試環境中運行,因此將商業現成(COTS)電腦之電力及可用性用於關鍵軟體程式碼之開發及測試。此開發及測試通常涉及程式碼之廣泛修改,以允許其在多個目標上編譯且運行。根據本發明教示之增強型IA系統呈現一種提供與COTS作業系統並排之嵌入型作業系統的解決方案。此允許針對基本上相同的工作位準,維持與在嵌入型系統中的相同的資料運動中安全性要求。其亦使桌面環境成為真實系統之更精確表示。在一些實例中,可允許使用者改變使用者介面之外觀及感覺,但不改變內部事物如何起作用。可藉由在桌面與嵌入型環境上保持相同的目標處理器架構來促進在系統兩者之間的移動。
說明性資料處理系統
如圖3中所示,此實例描述根據本發明之態樣的資料處理系統200(亦被稱作電腦)。在此實例中,資料處理系統200為適合於實施根據本發明教示之增強型IA系統之態樣的說明性資料處理系統。更確切而言,在一些實例中,作為資料處理系統之具體實例的器件(例如,智慧型電話、平板電腦、個人電腦)可包括經組態以模擬安全運算碼之安全虛擬機,諸如上述系統。
在此說明性實例中,資料處理系統200包括通信構架202。通信構架202提供處理器單元204、記憶體206、持續性儲存器208、通信單元210、輸入/輸出(I/O)單元212與顯示器214之間的通信。記憶體206、持續性儲存器208、通信單元210、輸入/輸出(I/O)單元212及顯示器214為可由處理器單元204經由通信構架202存取之資源的實例。
處理器單元204用以運行可載入至記憶體206中之指令。視特定實施而定,處理器單元204可為若干處理器、多處理器核心,或一些其他類型之處理器。此外,可使用若干異質處理器系統實施處理器單元204,其中主處理器與次要處理器存在於單晶片上。作為另一說明性實例,處理器單元204可為含有多個同種類型處理器的對稱的多處理器系統。
記憶體206及持續性儲存器208為儲存裝置216的實例。儲存裝置為能夠儲存諸如(例如,但不限於)資料、呈函數形式之程式碼的資訊及暫時或永久的其他合適資訊的任何硬體物件。
在此等實例中,儲存裝置216亦可被稱為電腦可讀儲存裝置。在此等實例中,記憶體206可為(例如)隨機存取記憶體或任何其他合適的揮發性或非揮發性儲存裝置。視特定實施而定,持續性儲存器208可呈各種形式。
舉例而言,持續性儲存器208可含有一或多個構件或器件。舉例而言,持續性儲存器208可為硬碟機、快閃記憶體、可重寫光碟、可重寫磁帶或以上各者之某一組合。由持續性儲存器208使用之媒體亦可為抽取式的。舉例而言,抽取式硬碟機可用於持續性儲存器208。
在此等實例中,通信單元210提供與其他資料處理系統或器
件之通信。在此等實例中,通信單元210為網路介面卡。通信單元210可經由使用實體通信連結及無線通信連結中之任一者或兩者而提供通信。
輸入/輸出(I/O)單元212允許與可連接至資料處理系統200之其他器件進行資料之輸入及輸出。舉例而言,輸入/輸出(I/O)單元212可提供一連接,以供用於經由鍵盤、滑鼠及/或某一其他合適之輸入器件的使用者輸入。此外,輸入/輸出(I/O)單元212可將輸出發送至印表機。顯示器214向使用者提供用以顯示資訊之機構。
用於作業系統、應用程式及/或程式之指令可定位於儲存裝置216中,該等儲存裝置經由通信框架202與處理器單元204通信。在此等說明性實例中,指令在持續性儲存器208上呈函數形式。此等指令可載入至記憶體206中以供處理器單元204執行。不同具體實例之處理程序可由處理器單元204使用電腦實施指令執行,處理器單元可定位於記憶體(諸如記憶體206)中。
此等指令被稱為可由處理器單元204中之處理器讀取及執行的程式指令、程式碼、電腦可用程式碼、或電腦可讀程式碼。不同具體實例中之程式碼可體現於不同實體或電腦可讀儲存媒體上,諸如記憶體206或持續性儲存器208。
程式碼218以函數形式定位於可選擇性地抽取的電腦可讀媒體220上,且可被載入至資料處理系統200上或傳送至資料處理系統以供處理器單元204執行。在此等實例中,程式碼218及電腦可讀媒體220形成電腦程式產品222。在一項實例中,電腦可讀媒體220可為電腦可讀儲存媒體224或電腦可讀信號媒體226。
電腦可讀儲存媒體224可包括(例如)插入或置放至作為持續性儲存器208之部分的驅動器或其他器件中(諸如作為持續性儲存器208之部分的硬碟機)以供轉移至儲存裝置上的光碟或磁碟。電腦可讀儲存媒體224亦可呈連接至資料處理系統200之持續性儲存器的形式,諸如硬碟機、隨身碟或快閃記憶體。在一些情況下,電腦可讀儲存媒體224可無法自資料處理系統200抽取。
在此等實例中,電腦可讀儲存媒體224為用以儲存程式碼218之實體或有形儲存裝置,而非傳播或傳輸程式碼218之媒體。電腦可讀儲存媒體224亦被稱作電腦可讀有形儲存裝置或電腦可讀實體儲存裝置。換言之,電腦可讀儲存媒體224為可由人觸控的媒體。
替代地,可使用電腦可讀信號媒體226而將程式碼218傳送至資料處理系統200。電腦可讀信號媒體226可為(例如)含有程式碼218之所傳播資料信號。舉例而言,電腦可讀信號媒體226可為電磁信號、光學信號及/或任何其他合適類型之信號。此等信號可經由通信連結傳輸,諸如無線通信連結、光纖纜線、同軸電纜、電線及/或任何其他合適類型之通信連結。換言之,在說明性實例中,通信連結及/或連接可為實體的或無線的。
在一些說明性具體實例中,可經由電腦可讀信號媒體226在網路上將程式碼218自另一器件或資料處理系統下載至持續性儲存器208以供在資料處理系統200內使用。舉例而言,可在網路上將儲存於伺服器資料處理系統中之電腦可讀儲存媒體中的程式碼自伺服器下載至資料處理系統200。提供程式碼218之資料處理系統可為伺服器電腦、用戶端電腦,
或能夠儲存及傳輸程式碼218之某種其他器件。
針對資料處理系統200所說明的不同構件並非意欲提供對可實施不同具體實例之方式的架構侷限性。不同說明性具體實例可實施於包括除針對資料處理系統200說明之彼等構件之外及/或代替彼等構件之構件的資料處理系統中。圖3中所示之其他構件可不同於所展示之說明性實例。可使用能夠運行程式碼之任何硬體器件或系統實施不同具體實例。作為一項實例,資料處理系統200可包括與無機構件整合之有機構件,及/或可完全由除人類之外的有機構件組成。舉例而言,儲存裝置可由有機半導體組成。
在另一說明性實例中,處理器單元204可呈具有經製造或經組態用於特定使用之電路的硬體單元之形式。此類型之硬體可執行操作,而無需將程式碼自待經組態以執行操作之儲存裝置載入至記憶體中。
舉例而言,當處理器單元204呈硬體單元之形式時,處理器單元204可為電路系統、特殊應用積體電路(ASIC)、可程式化邏輯器件,或經組態以執行若干操作的某種其他合適類型之硬體。在使用可程式化邏輯器件的情況下,器件經組態以執行若干操作。器件可稍後經重新組態,或可永久地經組態以執行若干操作。可程式化邏輯器件之實例包括(例如)可程式化邏輯陣列、場可程式化邏輯陣列、場可程式閘陣列及其他合適的硬體器件。在使用此類型之實施的情況下,可省略程式碼218,此係由於用於不同具體實例之處理程序實施於一硬體單元中。
在另一說明性實例中,可使用在電腦及硬體單元中發現的處理器之組合實施處理器單元204。處理器單元204可具有經組態以運行程式
碼218之若干硬體單元及若干處理器。在使用此所描繪之實例的情況下,處理程序中之一些可實施於若干硬體單元中,而其他處理程序可實施於若干處理器中。
在另一實例中,匯流排系統可用以實施通信構架202,且可由一或多個匯流排組成,諸如系統匯流排或輸入/輸出匯流排。當然,可使用在附接至匯流排系統之不同構件或器件之間提供資料之傳送的任何合適類型之架構來實施匯流排系統。
另外,通信單元210可包括傳輸資料、接收資料,或傳輸資料且亦接收資料的若干器件。通信單元210可為(例如)一數據機或一網路配接器、兩個網路配接器,或其某一組合。此外,記憶體可為(例如)記憶體206或快取記憶體,諸如出現在可存在於通信框架202中之介面及記憶體控制器集線器中發現的快取記憶體。
本文中所描述之流程圖及方塊圖說明根據各種說明性具體實例的系統、方法及電腦程式產品之可能實施的架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示程式碼之模組、片段或部分,其包含用於實施一或多個所指定之邏輯函數的一或多個可執行指令。亦應注意,在一些替代性實施中,區塊中標記之函數可不按圖式中標記之次序出現。舉例而言,連續展示之兩個區塊的功能可實質上同時執行,或該等區塊之功能有時可以相反次序執行,此視所涉及之功能性而定。
說明性電腦網路
如圖4中所示,此實例描述一般網路資料處理系統300,其可互換地稱作網路、電腦網路、網路系統、分散式網路或其類似者,其中
可包括增強型IA系統及安全虛擬機之說明性具體實例。舉例而言,增強型IA系統、相關程式指令、加密密鑰及/或虛擬機之各種態樣可實施於電腦網路中或使用該電腦網路而通信。應瞭解,圖4被提供為一項實施之說明,且並非意欲暗示關於可實施不同具體實例之環境的任何侷限性。可對所描繪之環境進行許多修改。
網路資料處理系統300為電腦(其中每一者為資料處理系統200之實例)及其他構件之網路。網路資料處理系統300可包括網路302,該網路為經組態以在一起連接於網路資料處理系統300內的各種器件與電腦之間提供通信連結的媒體。網路302可包括諸如有線或無線通信連結之連接、光纖纜線,及/或用於在網路器件之間傳輸及/或傳達資料的任何其他合適的媒體,或其任何組合。
在所描繪之實例中,第一網路器件304及第二網路器件306連接至網路302,正如電子儲存裝置308。網路器件304及306各自為上述的資料處理系統200之實例。在所描繪之實例中,器件304及306展示為伺服器電腦。然而,網路器件可包括(但不限於)一或多個個人電腦、行動計算器件,諸如個人數位助理(PDA)、平板電腦及智慧型電話、手持型遊戲器件、可穿戴式器件、平板電腦、路由器、開關、話音閘、伺服器、電子儲存裝置、成像器件,及/或可執行機械或其他功能的其他具備網路功能之工具。此等網路器件可經由有線、無線、光學及其他適當通信連結互連。
另外,諸如用戶端電腦310、用戶端膝上型電腦或平板電腦312及/或用戶端智慧型器件314之用戶端電子器件可連接至網路302。此等器件中之每一者為上文關於圖3所描述的資料處理系統200之實例。用戶端
電子器件310、312及314可包括(例如)一或多個個人電腦、網路電腦及/或行動計算器件,諸如個人數位助理(PDA)、智慧型電話、手持型遊戲器件、可穿戴式器件及/或平板電腦,及其類似者。在所描繪之實例中,伺服器304將諸如啟動檔案、作業系統影像及應用程式之資訊提供至用戶端電子器件310、312及314中之一或多者。用戶端電子器件310、312及314可被稱為關於諸如伺服器電腦304之伺服器的「用戶端」。網路資料處理系統300可包括更多或更少伺服器及用戶端或不包括伺服器或用戶端,以及圖中未示之其他器件。
用戶端智慧型器件314可包括能夠進行軟體之無線通信及執行的任何合適的攜帶型電子器件,諸如智慧型電話或平板電腦。一般而言,術語「智慧型電話」可描述相比典型行動電話具有更進階計算能力及網路連接性的任何合適的攜帶型電子器件。除進行電話呼叫(例如,經由蜂巢式網路)之外,智慧型電話亦可能夠發送及接收電子郵件、本文及多媒體訊息、存取網際網路及/或充當網路瀏覽器。智慧型器件(例如,智慧型電話)亦可包括其他已知電子器件之特徵,諸如媒體播放器、個人數位助理、數位攝影機、視訊攝影機及/或全球定位系統。智慧型器件(例如,智慧型電話)可能夠諸如經由近場通信(NFC)、藍芽(BLUETOOTH)、WiFi或行動寬頻網路而與其他智慧型器件、電腦或電子器件無線地連接。可在智慧型器件、智慧型電話、電腦及其他器件之間建立無線連接性以形成可交換資訊之行動網路。
定位於系統300中之程式碼可儲存於電腦可記錄儲存媒體(諸如持續性儲存器208)中或儲存於其上,且可被下載至資料處理系統或
其他器件以供使用。舉例而言,程式碼可經儲存於伺服器電腦304上的電腦可記錄儲存媒體上,且經由用於用戶端310上之網路302下載供用戶端310使用。
網路資料處理系統300可實施為若干不同類型的網路中之一或多者。舉例而言,系統300可包括企業內部網路、局域網路(LAN)、廣域網路(WAN)或個人區域網路(PAN)。在一些實例中,網路資料處理系統300包括網際網路,其中網路302表示使用協定之傳輸控制協定/網際網路協定(TCP/IP)程式組來彼此通信的網路及閘道器之世界範圍的集合。在網際網路之中心處為主節點或主機電腦之間的高速資料通信線之主結構。可利用數千商業的、政府的、教學的及其他電腦系統來路由傳送資料及訊息。在一些實例中,網路300可被稱為「雲端」。在彼等實例中,每一伺服器304可被稱為雲端計算節點,且用戶端電子器件可被稱為雲端消費者,或其類似者。圖4意欲作為一實例,且並非作為對於任何說明性具體實例的架構限制。
此外,本發明包含根據以下條項之具體實例:
條項1. 一種用於安全地執行軟體指令之電腦系統,該電腦系統包含:一第一處理器,其具有複數個硬體暫存器;一記憶體;及一模擬器程式,其包括儲存於該記憶體中之複數個指令,該等指令可由該第一處理器執行以進行以下操作:模擬一第二處理器;模擬該第二處理器上的複數個本機機器指令之執行,該等本機機器指令為該第二處理器本機帶有;及
模擬該第二處理器上的複數個安全機器指令之執行,該等安全機器指令並非為該第二處理器本機帶有的,且包括一或多個運算碼,其經組態以確保與該等運算碼相關聯的運算元資料之未加密值僅僅儲存於該第一處理器之該等硬體暫存器中之一或多者中。
條項2. 如條項1之電腦系統,其中該模擬第二處理器屬於與該第一處理器不同的一類型。
條項3. 如條項2之電腦系統,其中該模擬第二處理器相比該第一處理器具有較少暫存器。
條項4. 如條項1之電腦系統,其進一步包括與該第一處理器通信之一隨機存取記憶體(RAM)及儲存於該RAM中之一軟體程式,該軟體程式經編譯以在該模擬第二處理器上運行且含有該等安全機器指令中之一或多者。
條項5. 如條項4之電腦系統,其中該軟體程式經加密。
條項6. 如條項1之電腦系統,其中該模擬器程式之該等指令進一步可由該第一處理器執行以確保該等安全機器指令之該等運算碼的經解密版本僅僅儲存於該第一處理器之該等硬體暫存器中之一或多者中。
條項7. 如條項6之電腦系統,其中該模擬器程式之該等指令進一步可由該第一處理器執行,以在將該運算元資料儲存於RAM中之前加密該運算元資料,且在自RAM擷取該運算元資料之後解密該運算元資料。
條項8. 一種實施於一電腦系統中之方法,該方法包含:自一記憶體擷取一經加密機器指令;解密該經擷取機器指令且將該經解密指令儲存於一第一處理器之一第
一硬體暫存器中;及使用一模擬第二處理器模擬該經解密指令之執行;其中該經解密指令為關於該模擬第二處理器非本機的複數個安全指令中之一者。
條項9. 如條項8之方法,其中模擬該經解密指令之執行包括改變與該經解密指令相關聯的一運算元之一值。
條項10. 如條項9之方法,其中改變該運算元之該值包括解密該運算元以產生一經解密值,且將該經解密值儲存於該第一處理器之一第二硬體暫存器中。
條項11. 如條項10之方法,其中儲存該經解密值包括除了儲存該經解密值之外亦儲存隨機資訊。
條項12. 如條項10之方法,其中改變該運算元之該值進一步包括判定且加密一新值以產生一或多個經加密資料區塊,且將該一或多個經加密資料區塊儲存於該記憶體中。
條項13. 如條項12之方法,其中加密該新值包括用該新值加密一選定量的隨機資料。
條項14. 如條項8之方法,其中解密該經擷取機器指令包括使用儲存於該第一處理器之一第三硬體暫存器中的一加密密鑰。
條項15. 一種用於安全地執行軟體指令之電腦系統,該電腦系統包含:一第一處理器,其具有複數個硬體暫存器;一記憶體;及
一模擬器程式,其包括儲存於該記憶體中之複數個指令,該等指令可由該第一處理器執行以進行以下操作:自該記憶體擷取一經加密機器指令;解密該經擷取機器指令且將該經解密指令儲存於一第一處理器之該等硬體暫存器中之一或多者中;及使用該模擬第二處理器模擬該經解密指令之執行;其中該經解密指令為關於該模擬第二處理器非本機的複數個安全指令中之一者。
條項16. 如條項15之電腦系統,其中模擬該經解密指令之執行包括改變與該指令相關聯的一運算元之一值。
條項17. 如條項16之電腦系統,其中改變該運算元之該值包括解密該運算元以產生一經解密值,且將該經解密值儲存於該第一處理器之該等硬體暫存器中之一或多者中。
條項18. 如條項17之電腦系統,其中儲存該經解密值包括除了儲存該經解密值之外亦儲存隨機資訊。
條項19. 如條項17之電腦系統,其中改變該運算元之該值進一步包括判定且加密一新值以產生一或多個經加密資料區塊,且將該一或多個經加密資料區塊儲存於該記憶體中。
條項20. 如條項19之電腦系統,其中加密該新值包括用該新值加密一選定量之隨機資料。
10:增強型資訊確保(IA)系統
12:電腦
14:隨機存取記憶體(RAM)
16:實體中央處理單元(CPU)
18:暫存器
19:暫存器
20:處理器電路
22:第二中央處理單元(CPU)
24:超管理器
26:作業系統(OS)
28:增強型安全性中央處理單元(CPU)模擬器
30:超管理器專用隨機存取記憶體(RAM)
32:模擬器專用隨機存取記憶體(RAM)
34:安全程式
36:程式資料
38:機器語言指令
40:模擬暫存器
42:模擬處理器電路
44:補充指令
Claims (10)
- 一種用於安全地執行軟體指令之電腦系統(12),該電腦系統(12)包含:一第一處理器(204),其具有複數個硬體暫存器(18);一記憶體(206);及一模擬器程式(38),其包括儲存於該記憶體(206)中之複數個指令,該等指令可由該第一處理器(204)執行以進行以下操作:模擬一第二處理器(204);模擬該第二處理器(204)上的複數個本機機器指令之執行,該等本機機器指令為該第二處理器(204)本機所具有;及模擬該第二處理器(204)上的複數個安全機器指令(38)之執行,該等安全機器指令(38)並非為該第二處理器(204)本機所具有的,且包括一或多個運算碼,其經組態以確保與該等運算碼相關聯的運算元資料(36)之未加密值僅僅儲存於該第一處理器(204)之該等硬體暫存器(18)中之一或多者中。
- 如申請專利範圍第1項之電腦系統(12),其中該模擬第二處理器(204)屬於與該第一處理器(204)不同的一類型。
- 如申請專利範圍第2項之電腦系統(12),其中該模擬第二處理器(204)相比該第一處理器(204)具有較少暫存器(18)。
- 如申請專利範圍第1項之電腦系統(12),其進一步包括與該第一處理器(204)通信之一隨機存取記憶體(RAM)(14)及儲存於該RAM(14)中之一軟體程式(34),該軟體程式(34)經編譯以在該模擬第二處理 器(204)上運行且含有該等安全機器指令(38)中之一或多者。
- 如申請專利範圍第1項之電腦系統(12),其中該模擬器程式(38)之該等指令進一步可由該第一處理器(204)執行以確保該等安全機器指令(38)之該等運算碼的經解密版本僅僅儲存於該第一處理器(204)之該等硬體暫存器(18)中之一或多者中。
- 一種實施於一電腦系統12中之方法(100),該方法(100)包含:自一記憶體(206)擷取一經加密機器指令;解密該經擷取機器指令且將該經解密指令儲存於一第一處理器(204)之一第一硬體暫存器(18)中;及使用一模擬第二處理器(204)模擬該經解密指令之執行;其中該經解密指令為關於該模擬第二處理器(204)非本機的複數個安全指令(38)中之一者。
- 如申請專利範圍第6項之方法(100),其中模擬該經解密指令之執行包括改變與該經解密指令相關聯的一運算元之一值。
- 如申請專利範圍第7項之方法(100),其中改變該運算元之該值包括解密該運算元以產生一經解密值,且將該經解密值儲存於該第一處理器(204)之一第二硬體暫存器(18)中。
- 如申請專利範圍第8項之方法(100),其中儲存該經解密值包括除了儲存該經解密值之外亦儲存隨機資訊。
- 如申請專利範圍第6項之方法(100),其中解密該經擷取機器指令包括使用儲存於該第一處理器(204)之一第三硬體暫存器(18)中的一加密密鑰。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/148,866 US10210323B2 (en) | 2016-05-06 | 2016-05-06 | Information assurance system for secure program execution |
US15/148,866 | 2016-05-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201740269A TW201740269A (zh) | 2017-11-16 |
TWI711970B true TWI711970B (zh) | 2020-12-01 |
Family
ID=58692317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106102633A TWI711970B (zh) | 2016-05-06 | 2017-01-24 | 用於安全程式執行之資訊確保系統和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10210323B2 (zh) |
EP (1) | EP3242241B1 (zh) |
JP (1) | JP6843691B2 (zh) |
CN (1) | CN107346401B (zh) |
TW (1) | TWI711970B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9767318B1 (en) * | 2015-08-28 | 2017-09-19 | Frank Dropps | Secure controller systems and associated methods thereof |
WO2019117978A1 (en) * | 2017-12-12 | 2019-06-20 | Google Llc | Oblivious access with differential privacy |
CN108446137B (zh) * | 2018-02-26 | 2024-08-23 | 国民技术股份有限公司 | 通道寄存器初始化方法、装置及dma设备、终端 |
US11520913B2 (en) * | 2018-05-11 | 2022-12-06 | International Business Machines Corporation | Secure execution support for A.I. systems (and other heterogeneous systems) |
US11100254B2 (en) * | 2018-12-05 | 2021-08-24 | Micron Technology, Inc. | Processors with security levels adjustable per applications |
CN109968359A (zh) * | 2019-03-28 | 2019-07-05 | 台州九牛慧联机器人技术有限公司 | 一种工业机器人控制系统 |
US12001572B2 (en) * | 2019-05-13 | 2024-06-04 | Snap One, Llc | Systems and methods for generating artificial automation data to protect actual automation data |
CN111950017B (zh) * | 2019-05-14 | 2023-05-16 | 龙芯中科技术股份有限公司 | 内存数据保护方法、装置、设备以及存储介质 |
CN113711212A (zh) * | 2019-06-25 | 2021-11-26 | 华为技术有限公司 | 一种用于可信执行计算机指令的系统和方法 |
JP6671701B1 (ja) * | 2019-07-19 | 2020-03-25 | Eaglys株式会社 | 演算装置、演算方法、演算プログラム、および演算システム |
US11080400B2 (en) | 2019-08-28 | 2021-08-03 | Palo Alto Networks, Inc. | Analyzing multiple CPU architecture malware samples |
US11520905B2 (en) * | 2019-11-20 | 2022-12-06 | Kyndryl, Inc. | Smart data protection |
US11809607B2 (en) | 2021-08-05 | 2023-11-07 | International Business Machines Corporation | Customization of multi-part metadata of a secure guest |
US11829495B2 (en) | 2021-08-05 | 2023-11-28 | International Business Machines Corporation | Confidential data provided to a secure guest via metadata |
US20230126908A1 (en) * | 2021-10-27 | 2023-04-27 | International Business Machines Corporation | Protection against executing injected malicious code |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140317419A1 (en) * | 2013-04-17 | 2014-10-23 | Laurence H. Cooke | Secure computing |
TW201516736A (zh) * | 2013-08-20 | 2015-05-01 | Janus Technologies Inc | 用於安全性電腦裝置的系統及架構 |
US20150347724A1 (en) * | 2014-05-27 | 2015-12-03 | Assured Information Security, Inc. | Secure execution of encrypted program instructions |
TW201616343A (zh) * | 2010-05-25 | 2016-05-01 | 威盛電子股份有限公司 | 程式加密方法以及其電腦程式產品 |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2637770B2 (ja) * | 1988-05-25 | 1997-08-06 | 日本電気株式会社 | マイクロコンピュータ |
JP2715967B2 (ja) * | 1995-03-15 | 1998-02-18 | 日本電気株式会社 | マイクロコンピュータ |
DE10201449C1 (de) * | 2002-01-16 | 2003-08-14 | Infineon Technologies Ag | Rechenwerk, Verfahren zum Ausführen einer Operation mit einem verschlüsselten Operanden, Carry-Select-Addierer und Kryptographieprozessor |
US7171656B2 (en) | 2003-04-08 | 2007-01-30 | The Boeing Company | Generic embedded application technology architecture |
US7383583B2 (en) * | 2004-03-05 | 2008-06-03 | Microsoft Corporation | Static and run-time anti-disassembly and anti-debugging |
JP4737592B2 (ja) * | 2005-02-16 | 2011-08-03 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
US7779449B2 (en) | 2005-04-13 | 2010-08-17 | The Boeing Company | Secured network processor |
US8090919B2 (en) | 2007-12-31 | 2012-01-03 | Intel Corporation | System and method for high performance secure access to a trusted platform module on a hardware virtualization platform |
US8612729B2 (en) * | 2007-12-17 | 2013-12-17 | Advanced Micro Devices, Inc. | Known good code for on-chip device management |
US8281296B2 (en) * | 2008-08-12 | 2012-10-02 | Oracle America, Inc. | Cross-ISA inlining in a system virtual machine |
US8738932B2 (en) * | 2009-01-16 | 2014-05-27 | Teleputers, Llc | System and method for processor-based security |
US8166276B2 (en) * | 2009-02-27 | 2012-04-24 | Advanced Micro Devices, Inc. | Translate and verify instruction for a processor |
US10628579B2 (en) * | 2009-06-26 | 2020-04-21 | International Business Machines Corporation | System and method for supporting secure objects using a memory access control monitor |
US8428930B2 (en) * | 2009-09-18 | 2013-04-23 | International Business Machines Corporation | Page mapped spatially aware emulation of a computer instruction set |
US10521231B2 (en) * | 2010-06-24 | 2019-12-31 | International Business Machines Corporation | Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor |
US9032186B2 (en) | 2010-07-09 | 2015-05-12 | Blackberry Limited | Utilization of a microcode interpreter built in to a processor |
US9141389B2 (en) * | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
US8966478B2 (en) | 2011-06-28 | 2015-02-24 | The Boeing Company | Methods and systems for executing software applications using hardware abstraction |
CN102315940B (zh) * | 2011-09-08 | 2013-09-18 | 飞天诚信科技股份有限公司 | 一种数据的传输与处理系统及方法 |
US9164924B2 (en) * | 2011-09-13 | 2015-10-20 | Facebook, Inc. | Software cryptoprocessor |
US9448796B2 (en) * | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US20130339656A1 (en) * | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Compare and Replace DAT Table Entry |
US9286094B2 (en) * | 2012-10-12 | 2016-03-15 | Citrix Systems, Inc. | Human interface device virtualization using paravirtual USB system |
US9183399B2 (en) * | 2013-02-14 | 2015-11-10 | International Business Machines Corporation | Instruction set architecture with secure clear instructions for protecting processing unit architected state information |
US9477467B2 (en) * | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US9846656B2 (en) * | 2013-04-17 | 2017-12-19 | Laurence H. Cooke | Secure computing |
US9104841B2 (en) * | 2013-05-08 | 2015-08-11 | Truly Protect Oy | Methods and systems for executing protected content |
US9767044B2 (en) * | 2013-09-24 | 2017-09-19 | Intel Corporation | Secure memory repartitioning |
US9983894B2 (en) * | 2013-09-25 | 2018-05-29 | Facebook, Inc. | Method and system for providing secure system execution on hardware supporting secure application execution |
US9756048B2 (en) * | 2013-11-24 | 2017-09-05 | Truly Protect Oy | System and methods for executing encrypted managed programs |
US9471511B2 (en) * | 2013-11-24 | 2016-10-18 | Truly Protect Oy | System and methods for CPU copy protection of a computing device |
US9213563B2 (en) * | 2013-12-30 | 2015-12-15 | Unisys Corporation | Implementing a jump instruction in a dynamic translator that uses instruction code translation and just-in-time compilation |
US9009468B1 (en) | 2014-08-26 | 2015-04-14 | MagicCube, Inc. | System for transaction authentication |
US10922402B2 (en) * | 2014-09-29 | 2021-02-16 | Vmware, Inc. | Securing secret data embedded in code against compromised interrupt and exception handlers |
US10181027B2 (en) * | 2014-10-17 | 2019-01-15 | Intel Corporation | Interface between a device and a secure processing environment |
US9703720B2 (en) * | 2014-12-23 | 2017-07-11 | Intel Corporation | Method and apparatus to allow secure guest access to extended page tables |
US9710401B2 (en) * | 2015-06-26 | 2017-07-18 | Intel Corporation | Processors, methods, systems, and instructions to support live migration of protected containers |
US9716710B2 (en) * | 2015-06-26 | 2017-07-25 | Intel Corporation | Technologies for virtualized access to security services provided by a converged manageability and security engine |
US10374805B2 (en) * | 2015-07-20 | 2019-08-06 | Intel Corporation | Technologies for trusted I/O for multiple co-existing trusted execution environments under ISA control |
US10565370B2 (en) * | 2015-12-24 | 2020-02-18 | Intel Corporation | System and method for enabling secure memory transactions using enclaves |
US9898326B2 (en) * | 2016-02-23 | 2018-02-20 | Red Hat Israel, Ltd. | Securing code loading in a virtual environment |
US10536274B2 (en) * | 2016-03-31 | 2020-01-14 | Intel Corporation | Cryptographic protection for trusted operating systems |
-
2016
- 2016-05-06 US US15/148,866 patent/US10210323B2/en active Active
-
2017
- 2017-01-24 TW TW106102633A patent/TWI711970B/zh active
- 2017-04-14 CN CN201710244987.5A patent/CN107346401B/zh active Active
- 2017-04-21 EP EP17167573.9A patent/EP3242241B1/en active Active
- 2017-04-24 JP JP2017085352A patent/JP6843691B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201616343A (zh) * | 2010-05-25 | 2016-05-01 | 威盛電子股份有限公司 | 程式加密方法以及其電腦程式產品 |
US20140317419A1 (en) * | 2013-04-17 | 2014-10-23 | Laurence H. Cooke | Secure computing |
TW201516736A (zh) * | 2013-08-20 | 2015-05-01 | Janus Technologies Inc | 用於安全性電腦裝置的系統及架構 |
US20150347724A1 (en) * | 2014-05-27 | 2015-12-03 | Assured Information Security, Inc. | Secure execution of encrypted program instructions |
Also Published As
Publication number | Publication date |
---|---|
TW201740269A (zh) | 2017-11-16 |
CN107346401B (zh) | 2022-02-08 |
US10210323B2 (en) | 2019-02-19 |
CN107346401A (zh) | 2017-11-14 |
US20170323098A1 (en) | 2017-11-09 |
JP6843691B2 (ja) | 2021-03-17 |
JP2018014081A (ja) | 2018-01-25 |
EP3242241A1 (en) | 2017-11-08 |
EP3242241B1 (en) | 2019-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI711970B (zh) | 用於安全程式執行之資訊確保系統和方法 | |
US11620391B2 (en) | Data encryption based on immutable pointers | |
JP7101761B2 (ja) | コール・パス依存認証 | |
Sasy et al. | ZeroTrace: Oblivious memory primitives from Intel SGX | |
CN107408072B (zh) | 用于随机化指令的方法、介质和装置 | |
US10255443B2 (en) | Method, apparatus, system and non-transitory computer readable medium for code protection | |
Quoc et al. | Securetf: A secure tensorflow framework | |
JP6177355B2 (ja) | 擬似乱数生成操作を実施するための命令 | |
JP6395737B2 (ja) | 擬似乱数シード操作を実施するための命令 | |
Bauman et al. | Sgxelide: enabling enclave code secrecy via self-modification | |
CN112639778A (zh) | 指针认证及指针认证方案之间的动态切换 | |
TW201227394A (en) | Security through opcode randomization | |
JP5596150B2 (ja) | 暗号鍵の仮想化 | |
Vrba et al. | Program obfuscation by strong cryptography | |
JP2023065323A (ja) | コンピュータに実装された方法、システム及びコンピュータプログラム | |
KR102430335B1 (ko) | 가상화 코드의 난독화를 강화하는 방법 및 그 장치 | |
ElAtali et al. | BliMe: Verifiably secure outsourced computation with hardware-enforced taint tracking | |
Plauth et al. | Hardening application security using Intel SGX | |
JP6996561B2 (ja) | システム、改変装置、方法及びプログラム | |
Bouché et al. | Attacking the cloud from an insider perspective | |
EP3387530B1 (en) | Secure computing | |
Teschke | Hardening Applications with Intel SGX | |
Tan et al. | Formal modeling and verification of cloudproxy | |
Středa | Analysis of Virtual Machine based obfuscation | |
Bauman | Securing Binary Programs without Perfect Disassembly |