TWI607342B - 用於在資料處理器的不同作業域之間切換的安全機制 - Google Patents
用於在資料處理器的不同作業域之間切換的安全機制 Download PDFInfo
- Publication number
- TWI607342B TWI607342B TW102132457A TW102132457A TWI607342B TW I607342 B TWI607342 B TW I607342B TW 102132457 A TW102132457 A TW 102132457A TW 102132457 A TW102132457 A TW 102132457A TW I607342 B TWI607342 B TW I607342B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- domain
- data
- security
- instructions
- Prior art date
Links
- 230000007246 mechanism Effects 0.000 title description 2
- 238000012545 processing Methods 0.000 claims description 171
- 238000013500 data storage Methods 0.000 claims description 51
- 238000000034 method Methods 0.000 claims description 40
- 230000004044 response Effects 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 14
- 238000003860 storage Methods 0.000 claims description 13
- 230000035945 sensitivity Effects 0.000 claims description 3
- 238000003672 processing method Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 29
- 230000008859 change Effects 0.000 description 8
- 230000007704 transition Effects 0.000 description 7
- 238000000605 extraction Methods 0.000 description 6
- 230000001681 protective effect Effects 0.000 description 6
- 238000004088 simulation Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 210000003813 thumb Anatomy 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000007123 defense Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000002547 anomalous effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 210000003811 finger Anatomy 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 208000024891 symptom Diseases 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- 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/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/629—Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
-
- 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
-
- 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
-
- 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/54—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 adding security routines or objects to programs
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- 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
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/2105—Dual mode as a secondary aspect
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Description
本發明係關於資料處理之領域,且詳言之係關於使用不同安全域之資料處理設備及方法。
眾多資料處理系統及架構皆提供隔離及保護敏感資料及程式碼區段以免被未經授權之個人或處理器進行存取的方法。儘管能夠提供安全性十分重要,但與此保護關連之效能及電路面積則存在額外負擔。
保護資料及代碼安全之一方法由英國劍橋的ARM®公司利用其TrustZone®架構提供,在該架構中存在安全狀態及非安全狀態,且一異常指令用於在該等狀態之間進行轉換,同時由異常處置器保護安全側之安全性。儘管此方法提供較高程度之安全性,但需要以軟體異常處置器形式進行大量軟體介入以改變安全狀態,此舉既降低系統效能,又增加開發安全軟體之外部應用程式介面API所需之工作量,因為所有調用必須經由異常處置器代理。
對於諸如微控器之較小系統而言,TrustZone系統中
存在之額外負擔可能無法容忍,因此,必須發現用於在狀態之間進行轉換之不同方法,該等方法在不損及安全性之情況下提供增強之效能。
用以自安全性較低之域切換至安全性較高之域之一
種方法具有相對較低之額外負擔且允許多個登錄點進入安全狀態,該方法使用分支指令以自公共域分支至私用域中之函數。該函數可在起始處包括安全檢查常式,該常式檢查調用該函數之進程是否具有充分特權以允許該進程調用該函數,由此可能執行通行碼或其他檢查。
用以避免此檢查之一種方法為分支至在安全檢查常
式以外一點處之代碼內。另一攻擊可涉及向函數之結束處分支為私用函數,且此舉可導致僅一或兩個指令得到執行,然後該函數分支返回公共側。然而,如若此舉可得以多次執行,則可以稱作返回導向程式設計之程式設計來建立函數。
已授與英國劍橋ARM®有限公司之專利US8010772
揭示一種禁止攻擊者利用位於此類函數起始處之允許指令來跳越至此函數中間之能力的方法,亦即由處理電路系統驗證來自安全性較低之域之分支指令在分支至安全性較高之域時是否分支至此允許指令。此系統之一缺點為處理器必須瞭解已發送至允許指令之指令即為來自安全性較低之域之分支指令。
第1圖圖示一程式碼實例,該程式碼中有一分支自
公共側到達位於私用側上之允許指令PG。其中,如第1圖所
示,當在分支指令與允許指令之間發生異常之情況下,由於此情況導致異常處置碼在PG指令之前得以執行,因此處理器將無法以任何簡單方式決定哪一指令導致該處理器之分支。
用以解決在此處發生異常之問題之一種方法為利用可在分支指令執行時設定之旗標,使得即使發生異常,後一指令亦將瞭解來自安全性較低之域之分支出現在先且尚未經檢查。然而,此舉卻導致潛在的安全性影響,因為旗標本身可遭破壞。
目前需要以處理有效之方式改良在狀態之間進行切
換之安全性。
由第一態樣可見,本發明提供一種資料處理設備,該設備包括:處理電路系統,該處理電路系統用於回應於程式指令而執行資料處理操作,該處理電路系統具有複數個具有不同安全等級之操作域,包括一安全域及另一不同之安全域,當在該安全域內操作時,該處理電路系統可存取在該另一不同之安全域內無法存取之至少一些資料;資料儲存器,用於儲存資料及指令,該資料儲存器包括複數個區域,每一區域與該複數個操作域中之一者對應,且該資料儲存器包括至少一安全區域以用於儲存敏感資料,該敏感資料可由在該安全域內操作之該資料處理電路系統存取,但不可由在該另一不同之安全域內操作之該資料處理電路系統存取,及資料儲存器包括一安全性較低之區域以用於儲存敏感性較低之資料;
該處理電路系統經配置以:針對待執行之程式指令,驗證儲存該程式指令之資料儲存器之區域是否與該處理電路系統之當前操作域對應;及回應於偵測到該程式指令儲存在該資料儲存器之與該處理電路系統之該當前操作域不對應之區域中;驗證該程式指令是否包括防護指令;及若該程式指令包括該防護指令,則將該操作域切換至與儲存該程式指令之該資料儲存器之該區域對應之域;及若該程式指令不包括該防護指令,則產生安全違規指示。
本發明辨識在不同安全域之處理之間切換時產生的安全影響,該等安全域中之一些安全域可能具有不同之安全等級。就此方面而言,眾多處理電路在具有不同之安全等級的域中操作,及存取僅當該等處理電路在安全性較高之域內操作時才可用之一些敏感資料。不同域可具有不同之安全等級,或該等不同之域可為具有相同安全等級但卻彼此隔離之同級域。一般而言,安全性較高之域中之處理操作將可存取記憶體之安全性較低區域中及記憶體之相對安全區域中之資料。當存在不同但卻具有相同安全等級之同級域時,則該等同級域可存取資料儲存器中同樣的安全性較低之區域,但卻不可存取具有相同敏感性且儲存在記憶體安全等級與記憶體所在域不對應而與同級域對應之記憶體的區域中的資料。正在處理之程式指令亦儲存在資料儲存器之不同安全區域內,
資料儲存器中儲存當前正在執行之指令之區域的安全等級一般與當前操作域之安全等級對應。就此而言,亦有記憶體區域與同級域對應。由此,如若處理電路系統決定一待執行之指令已從與一不同域對應之區域擷取至當前操作域之對應區域,則此情況指示有問題存在,或在該已擷取指令為防護指令時指示將發生域切換。
就此而言,應注意,儘管處理電路系統可能無法存
取儲存在資料儲存器中具有高於當前操作域之安全等級之安全性的區域中之敏感資料,但儲存在安全性較高之區域或同級安全區域中之指令則可經提取。此情況之原因為資料存取與指令提取之存取許可的設定是不同的,因為指令提取不會呈現與資料存取相同之安全影響,指令提取對軟體不可見。
儘管提取儲存在安全性更高或不同之區域中之指令可能沒有關連之安全影響,但在執行該等指令時則很有可能存在關連之安全影響。
由此,在提取指令時,執行檢查以查看資料儲存器
中該已提取指令所來源之區域是否與當前操作域對應。如若不對應,則決定該程式指令是否為防護指令。如若該程式指令為防護指令,則處理電路系統切換至與資料儲存器中該防護指令所來源之區域對應之操作域,反之,如若該指令並非防護指令,則產生安全違規指示。
以此方式,由對不同域中之指令之分支所觸發之域
切換僅經由防護指令而得到允許。此舉確保域切換僅在防護指令處發生,同時避免處理電路系統需要瞭解該域切換如何
到達防護指令,處理電路系統僅需瞭解其當前操作域及與待執行之下一指令所儲存之區域對應之域即可。此方法有效,因為直至防護指令已經存取才發生域切換,因此在切換之前之操作域被稱為當前操作域,且防護指令之存在足以指示切換為可接受的。此外,由於是從與當前操作域不對應之記憶體區域中提取指令而觸發對該指令之檢查及在該指令為防護指令時之可能的域變更,因此該檢查及域變更作為單一原子操作而執行,此舉意謂著該操作不可被半途中斷。
如若一指令經存取,該指令位於與不同域對應之區
域中及並非防護指令,則產生安全違規指示。
應注意,儘管域及資料儲存器可具有對應之安全等
級,但可能並不存在一一對應之關係。就此而言,資料儲存器區域中所具有之安全等級可能多於處理電路系統之操作域。但每一區域將與一域對應,因此可能存在兩個處理域,即一公共域及一私用域,及四個資料儲存器區域,即與該公共域對應之一公共區域及具有不同之安全等級之三個不同之記憶體安全區域,每一區域與該私用域對應,使得儲存在該等私用區域中之任一者中之防護指令將觸發至私用域中之處理的切換。
儘管在一些實施例中,一安全域與另一不同之安全
域可能為具有相同安全等級之同級域,但在其他實施例中,所有域具有不同之安全等級,且該另一不同之安全域包括安全性低於該安全域之一域。
在一些實施例中,該處理電路系統經配置以僅回應
於偵測到該程式指令儲存在該資料儲存器之區域中且該區域之安全等級高於該處理電路系統之當前操作域之該安全等級而驗證該程式指令是否包括防護指令。
在一些實施例中,回應於該程式指令儲存在該資料
儲存器之區域中且該區域與安全等級低於當前操作域之該安全等級之域對應,該處理電路系統經配置以將該操作域切換至該較低之安全等級,無論該指令是否包括該防護指令。
儘管防護指令一般可用以控制不同之安全等級之間
的切換,但在一些實施例中,防護指令僅在從安全性較低之域切換至安全性較高之域時使用。顯而易見,安全問題在從安全性較低之域切換至安全性較高之域時更為頻繁地出現,因此,在此切換時,使用者務必在預定點進行切換以便需要執行之任何安全檢查將得以執行。由此,防護指令對控制從安全性較低之域至安全性較高之域的切換尤其實用,且在一些情況下,處理電路系統僅檢查防護指令,在此情況下,指令之域為較高之安全等級,且永遠允許向較低之安全等級之域切換。
儘管如此,在其他情況下,尤其在有兩個以上域之
情況下,如若從安全性較低或較高之域向相當安全之域的切換採用經由防護指令之相同方式執行,則該切換可得到有效管理。提供此對稱性使得用於控制此切換之軟體寫入更為簡單及使代碼更為有效。
在一些實施例中,該處理電路系統回應於該安全違
規指示以產生異常及執行故障處置碼。
如若來自與不同域對應之資料儲存器之區域之指令
並非防護指令,則可執行不同之安全操作。例如,可產生異常,隨後可執行故障處置碼,該碼辨識當前正在執行之軟體可能為攻擊軟體且不應允許該軟體存取處理器之安全側。在安全性較高之系統中,可能存在其他被執行之操作,例如,關閉處理器或甚至在一些極端情況下銷毀電路系統自身。
在一些實施例中,該處理電路系統經配置以執行來
自具有不同長度之指令的指令集之程式指令,該處理電路系統所要求之指令位址對準依據該等不同之長度而定,該防護指令之長度足夠長,使得若防護指令之起始位於該等位址對準點之至少一子集中之一者處且該者位元元於該等程式指令中之一者內,則該防護指令之一部分將與下一指令之起始重疊。
顯而易見,務必不得因疏忽而使用其他代碼模擬防
護指令。當指令集具有不同長度之指令時,處理電路系統可存取由指令之不同長度控制之某些位址對準點處之指令。可能在該等位址對準點之一者處部分地存取該指令,鑒於指令之不同長度,該等位址對準點將不時出現在指令內。此舉可產生問題,因為儘管指令集可能已經寫入使得防護指令具有當與其他指令對比時為唯一之代碼,但與一指令之一部分對比,該代碼可能並非唯一。此可能藉由在並非位於指令起始處之位址對準點中之一點處分支至該指令內,而向不同之安全域提供疏忽之登陸點。藉由故意分支至指令內而尋找可用之代碼序列係執行返回導向程式設計攻擊時之常見技術。
確保相鄰指令之部分之組合中之指令之任何部分無
法模擬防護指令可能需要保留大量編碼空間以用於防護指令。此潛在問題已藉由提供一防護指令而得以解決,該防護指令之長度足以使該防護指令在開始於另一指令內之情況下與下一指令之起始重疊。以此方式,必須保留之編碼空間量得以縮減,該空間用於防護指令以便該防護指令無法因疏忽而被模擬。
儘管在一些實施例中,例如在一些位址對準由於編
碼約束而不會導致模擬危險之情況下,可能僅需要慮及位址對準點之子集,但在其他實施例中,在決定防護指令之所需長度時可能需要慮及所有位址對準點,以確保在防護指令起始於另一指令中時該防護指令與下一指令重疊。
在一些情況下,此舉意謂著防護指令之長度與來自
指令集之最長程式指令之長度相等。
上述情況在例如存在兩種指令長度且其中一長度為
其中另一長度之兩倍之情況下可能發生。在此種情況下,為確保在該指令未與一指令之開頭正確對準時該指令永遠與下一指令重疊,則該指令必須具有最長程式指令之長度。
在一些實施例中,在利用該處理電路系統所要求之
該位址對準而經對準時,可與來自該指令集之另一指令重疊的該防護指令之任一部分之值並非來自該指令集之任一其他指令之有效操作碼或操作碼之起始。
用以避免疏忽模擬之一種方法為確保可能與另一指
令重疊之防護指令之任一部份之值不應為來自指令集之任一
其他指令之有效操作碼或操作碼之起始。需要保留以用於防護指令之編碼空間量隨指令之非對準可能性的增大而增大,因為在此種情況下,操作碼可能僅有一部分與防護指令重疊,因此,此部分亦需要保留,以便其不會因疏忽而模擬防護指令。
用以解決此問題之一種方法為:先編碼防護指令之
部分,該等部分與指令位址對準點之間的最小距離長度相等;然後使該等部分具有相同值。由於此值將與其他指令重疊,因此如若使用相同值,則僅此值需要避免被用作其他指令之操作碼或操作碼之起始。以此方式,保留用於防護指令之編碼空間量得以縮減。
在一些情況下,例如,當使用者具有兩種指令長度
且其中一長度為另一長度之兩倍時,防護指令將包括兩個部分及將在實質上為對稱,且該兩個部分中之值將為並非由指令集中之其他指令中之任一者之操作碼或操作碼起始所使用之值。
在一些實施例中,該相同值並非來自該指令集之任一其他指令之有效操作碼或操作碼之起始段。
如前所述,此相同值不應為該指令集上之任一其他指令之有效操作碼或事實上甚至不得為操作碼之起始段。
在一些實施例中,該資料儲存器經配置以不將與防護指令具有相同值之任何資料值儲存為程式碼內之文字。
使來自指令集之指令之操作碼停止因疏忽而模擬防護指令是一個要點,但在一些程式碼中,資料值被儲存為程
式碼內之文字,該等文字被儲存在可由碼內之指令存取之各種位址中。在此類程式碼中,文字亦可能在攻擊期間成為分支之目標,因此,該等文字亦務必不得因疏忽而模擬防護指令。由此,在一些實施例中存在一進程用以確保不將與防護指令具有相同值之資料值儲存為程式碼內之文字。
在一些實施例中,在代碼產生時可避免產生匹配文
字;例如,編譯器可經配置以偵測當文字存取提取匹配文字時之情況,及改變所產生之代碼以便移除發射文字集用場中之匹配文字值之需求。在一實施例中,該編譯器可藉由使用資料處理操作合併眾多非匹配文字存取之值而在處理器暫存器中形成所要值。例如,如若匹配文字為四,則此值可經改變為2乘以二。在另一實施例中,該編譯器可藉由使用立即移動之順序及資料處理操作而形成所要值。
在一些實施例中,可執行程式可經產生後掃瞄以便
偵測與防護指令具有相同值之文字值。在一些實施例中,掃瞄進程可為程式開發進程中之部分,及用作發佈軟體之前之檢查。在其他實施例中,掃瞄進程可作為可執行檔案而得以執行,該可執行檔案經加載以用於執行,且掃瞄進程可具有在發現匹配文字值時防止進程被執行之效用。
在一些實施例中,該資料處理設備經配置以將該資
料儲存器分段,使得該資料儲存器之至少一預定區段經允許以有效儲存該防護指令,該資料處理電路系統經配置以回應於偵測到該防護指令位於該資料儲存器中並非該至少一預定區段之分段中而產生安全違規指示。
用以防止防護指令因疏忽而被模擬之另一種方法係
將資料儲存器分段及僅將防護指令儲存在預定區段中。如若發生此疏忽模擬情況,則僅有該等區段需要被監視以檢查該等區段並未因疏忽而儲存防護指令。在分支至防護指令時,將執行檢查以檢查經存取之資料儲存器區域是否為預定區段,如若該區域並非預定區段,則將產生安全違規指示。此舉減少需要檢查以確保代碼並未儲存文字形式之防護指令之代碼量,但此舉因需要將資料儲存器分段及以某種方式指示此分段而確實具有額外負擔。
在一些實施例中,該程式碼中可由安全性較低之代
碼調用之部分被儲存在該至少一預定區段中。
防護指令將僅在該代碼之某些部分中出現。在一些
實施例中,當防護指令僅用於自安全性較低之域切換至安全性較高之域時,該代碼之此部分將成為可由安全性較低之函數調用之代碼。如若在此情況下,則將該代碼之該等部分儲存在預定區段內意謂著防護指令將永遠位於該等區段內。
替代地及/或另外,該資料儲存器經配置以僅將指令
儲存在該至少一預定區段中。
如前所述,儘管避免指令因疏忽而模擬防護指令相
當簡單,但避免資料文字因疏忽而模擬防護指令則更為困難,因為資料文字可具有任何值。因此,用以解決此問題之一種方法為將資料儲存器分段,且在可發現防護指令之預定區段中僅能儲存指令。換言之,不允許資料文字存在於代碼之該等區段中。對代碼進行編譯以避免代碼中具有之資料文
字對代碼之大小及速度具有顯著影響。然而,在代碼中僅有某些區段可能含有需要以此方式經編譯之防護指令之情況下,此舉對效能及代碼之大小的整體作用較低。
在一些實施例中,該資料處理設備包括記憶體存取
控制電路系統以用於控制對該資料儲存器之存取,該記憶體存取控制電路系統經配置以藉由在該記憶體存取控制電路系統內設定記憶屬性標誌來指示該資料儲存器之該至少一預定區段。
用以標誌預定區段之一種方法為在記憶體存取控制
電路系統內利用屬性標誌來標誌預定區段。一般而言,記憶體存取控制電路系統之存在係用以控制對資料儲存器中不同之安全區段之存取,及資料儲存器之各區段屬性儲存在記憶體存取控制電路系統內,該電路系統將對比存取請求之位址與各個區域之位址並決定該特定位址具有哪些屬性及是否應允許該存取。一額外之記憶屬性標誌可用以指示資料儲存器之一特定區段為經允許以儲存防護指令之預定區段。
用以標誌預定區段之另一種方法係使記憶體存取控
制電路系統經配置具有固定位址映射,位址空間區經映射作為預定區段。在一些實施例中,該處理電路系統經配置以將該防護指令作為域切換指令來處理,並回應於該防護指令而將該操作域切換至與儲存該防護指令之該資料儲存器之該區域對應之域。儘管處理電路系統可經配置以回應於偵測到具有適合之值的指令被儲存在資料儲存器之區域中且該區域與不同於處理電路系統之當前操作域之域對應而切換域,但在
一些情況下,防護指令自身在被執行時產生控制信號,該等控制信號控制處理電路系統以將域切換至儲存該防護指令之區域之域。
本發明之第二態樣提供一種用於設備之資料處理方
法,該設備包括:處理電路系統,用於回應與程式指令而執行資料處理操作,該處理電路系統具有複數個具有不同之安全等級之操作域,包括一安全域及一另一不同之安全域,其中,當在該安全域中操作時,該處理電路系統可存取在該另一不同之安全域內無法存取之至少一些資料;及一資料儲存器,用於儲存資料及指令,該資料儲存器包括複數個不同之安全區域,每一區域與該複數個操作域中之一者對應;該方法包括以下步驟:針對待執行之程式指令,驗證儲存該程式指令之該資料儲存器之區域之域是否與該處理電路系統之當前操作域對應;及回應於偵測到該程式指令儲存在該資料儲存器之與該處理電路系統之該當前操作域不對應之區域中;驗證該程式指令是否包括防護指令;及若該程式指令包括該防護指令,則將該操作域切換至與儲存該程式指令之該資料儲存器之該區域對應之域;及若該程式指令不包括該防護指令,則產生安全違規指示。
本發明之第三態樣提供一種資料處理設備,該設備
包括:處理構件(processing means),用於回應於程式指令而執行資料處理操作,該處理構件具有複數個具有不同之安全等級之操作域,包括一安全域及一另一不同之安全域,其中,當在該安全域中操作時,該處理構件可存取在該另一不同之安全域內無法存取之至少一些資料;資料儲存構件(data storage means),用於儲存資料及指令,該資料儲存構件包括複數個區域,每一區域與該複數個操作域中之一者對應,及該資料儲存構件包括至少一安全區域以用於儲存敏感資料,該敏感資料可由在該安全域內操作之該資料處理構件所存取,但不可由在該另一不同之安全域內操作之該資料處理構件所存取,及該資料儲存構件包括一安全性較低之區域以用於儲存敏感性較低之資料;該處理構件用於:針對待執行之程式指令,驗證儲存該程式指令之該資料儲存構件之區域是否與該處理構件之當前操作域對應;及回應於偵測到該程式指令儲存在該資料儲存構件之與該處理構件之該當前操作域不對應之區域中;驗證該程式指令是否包括防護指令;及若該程式指令包括該防護指令,則將該操作域切換至與儲存該程式指令之該資料儲存構件之該區域對應之域;及若該程式指令不包括該防護指令,則產生安全違規
指示。
10‧‧‧資料處理設備
20‧‧‧處理電路系統
22‧‧‧指令提取階段
24‧‧‧指令解碼階段
26‧‧‧指令執行階段
30‧‧‧資料儲存器
32‧‧‧安全區域
34‧‧‧安全性較低之區域
35‧‧‧單個區段
40‧‧‧記憶體保護單元
41‧‧‧比較器
42‧‧‧比較器
43‧‧‧配置暫存器
44‧‧‧域旗標
45‧‧‧屬性檢查區塊
50‧‧‧暫存器組
本發明將僅以實例之方式藉由對如附圖所示之本發明實施例之參考而進行進一步之描述,在該描述中:第1圖圖示一指令流,該指令流圖示先前技術中之域切換;第2圖圖示根據本發明之一實施例之一資料處理設備;第3圖圖示處理域之三種不同之安全等級;第4圖圖示根據本發明之一實施例之一記憶體保護單元;第5圖圖示根據本發明之一實施例之一記憶體位址空間之分段;第6圖圖示指令如何可與具有多種長度之指令失準;第7圖圖示一代碼,該代碼在公共域及私用域中執行,並在該兩者之間切換;第8圖圖示一流程圖,該流程圖圖示根據本發明之一實施例之一方法中之步驟;第9圖圖示不同操作域之一實例;及第10圖圖示一流程圖,該流程圖圖示記憶屬性檢查流程。
第2圖圖示根據本發明之一實施例之資料處理設備10,該資料處理設備可為例如微控制器。該資料處理設備包
括處理電路系統20以用於處理指令,及包括資料儲存器30以用於儲存已由處理電路系統20處理之資料,亦用於儲存由處理電路系統20執行之程式碼。
程式碼可為已編譯碼,或程式碼可為由編譯器(未
圖示)在處理設備上編譯之代碼。程式碼由程式指令形成,該等程式指令控制處理電路系統20以執行不同任務。
在此實施例中,處理電路系統20採用管線形式,該
管線具有指令提取階段22、指令解碼階段24及指令執行階段26。如將理解,此圖為簡化視圖,且可能存在進一步之階段,諸如,暫存器更名階段。處理電路系統將具有一操作域,該操作域為安全域或安全性較低之域,及在此實施例中,此操作域之安全性一般由儲存有正在被執行之代碼的資料儲存器區域之安全等級而決定。
資料儲存器30具有兩個具有不同安全性之區域,即
安全區域32及安全性較低之區域34。當正在執行儲存在安全性較低之區域34中之代碼時,該代碼無法存取儲存在安全區域32中之資料。然而,當處理電路系統在安全性較低之域中操作時,安全區域32中所儲存之指令則可在處理電路系統20之提取階段22中被提取,因為指令對軟體不可見,因此,允許跨域存取指令。
儘管資料儲存器圖示為單個區塊,但在眾多情況
下,資料儲存器係由具有不同階層之多個類型之資料儲存器形成,例如,不同等級之快取記憶體及主記憶體。該等儲存器中之每一者將在安全區域或安全性較低之區域中儲存資
料。
資料處理設備10亦具有記憶體保護單元MPU 40,
該單元控制存取許可之此分段。儘管此控制可如圖所示經由中央記憶體保護單元來完成,但在其他實施例中,此控制可藉由處理設備內之一電路系統而以更為分散之方式來完成,該電路系統監視儲存有當前正在被執行之代碼之區域,及依據此監視而控制對記憶體之不同區域之存取。
在此實施例中,記憶體保護單元MPU具有兩個區
段,其中一區段控制對儲存在資料儲存器30中之指令的存取,而其中另一區段則控制對資料之存取。如前所述,從正在安全性較低之域中執行之處理電路系統對儲存在安全部分中之指令進行指令提取是經允許的。
在此實施例中,有一暫存器組50,該暫存器組具有
用於資料處理期間之通用暫存器。該等通用暫存器包括程式計數器PC,該計數器指示哪一指令為下一待執行之指令,及包括具有特定功能之其他暫存器,諸如,用於儲存分支指令之返回位址之鏈接暫存器。
暫存器組50中亦有資料暫存器以用於儲存正在經
受處理之資料值。或者,在一些實施例中,暫存器並非用於儲存資料值,且值被儲存在堆疊上及經由儲存在暫存器之一者中之堆疊指標直接存取。此舉顯著節省面積,但卻衝擊效能。
如前所述,在此實施例中,處理電路系統20執行時
所在之域一般係根據儲存有當前正在被執行之代碼之區域而
決定。由此,儲存在安全資料儲存器32中之安全程式碼一般係在安全域中被執行。執行域藉由處理電路系統20所設定之域旗標44所指示,及由MPU 40所存取以決定存取許可。
當處理電路系統20提取指令以用於執行,且域旗標
指示該指令來自並非處理電路系統當前執行時所在之域時,處理電路系統20則將執行檢查以驗證該指令是否為防護指令。處理電路系統將藉由對比防護指令之已知操作碼檢查此經提取指令之操作碼來執行此檢查。如若此指令為防護指令,則將經解碼及執行,且此指令將控制處理電路系統以更新域旗標44,以將域切換至與該防護指令所提取自之記憶體區域對應之域。由此,例如在處理電路系統20當前正在安全性較低之域中操作且一分支經執行使得防護指令自記憶體之安全區域32中被提取時,處理電路系統則將切換為在該安全域中執行。
防護指令位於進入安全區域之允許登錄點,且在防
護指令之後被執行之代碼可包括安全檢查常式以驗證對安全域之調用是否有效,此驗證可涉及檢查通行碼,或檢查所提供之其他函數引數之有效性。
如若所提取之指令並非防護指令且來自具有不同於當前操作域之域的安全區域,則將產生安全違規指示。此過程之形式可為產生異常,然後執行故障處置常式。
第3圖極為概要地圖示三個處理域,即安全性最低之域,安全域,及安全性最高之域。在該等域之每一者中,執行程式碼及可依據域而自資料儲存器存取不同等級之安全
資料。對資料之存取許可係依據執行域之安全等級及儲存該資料之記憶體區域之安全等級而給予。在此實施例中,任何域間切換皆經由防護指令而得以執行,該防護指令在此實例中圖示為PG。儘管在一些情況下,僅在從安全性較低之域切換至安全性較高之域時需要防護指令,但更有效者係實施對稱執行一此切換需求之系統,使得自安全性較高之區域到達安全性較低之區域時轉換亦經由防護指令而得以執行。由此,當調用位於不同安全域中之常式時,藉由提取位於該常式頭部之防護指令即完成此調用。
應注意,儘管在此實施例中,該三個域如圖所示具
有不同之安全等級,但在一些實施例中,該等域中至少兩個域可為具有相同安全等級但彼此隔離之同級域。由此,安全域及安全性最高之域實際上可為安全1及安全2,在該兩個安全域內之處理操作可存取安全性最低之記憶體區域中之資料及存取與該等處理操作自身所在域對應之記憶體安全區域,但無法存取該等處理操作所在域之同級域。
第4圖更詳盡地圖示第2圖之記憶體保護單元40。
記憶體保護單元MPU 40控制自處理電路系統20對資料儲存器30之存取,及確保僅有具有適當屬性之資料儲存器30之區域可經存取。
在此實施例中,資料存取及指令存取在不同埠處經接收,並可經平行處置。比較器41及42分別將資料存取位址及指令存取與自配置暫存器43檢索之區域位址進行比較。配置暫存器43儲存資料儲存器30之不同區域之明細,亦即
配置暫存器儲存區域位址、區域大小,及區域屬性。該等屬性將指示安全等級或區域,區域是唯讀區域還是唯寫區域,及其他此類事項。因此,一旦比較器已決定存取指向哪一記憶體區域,屬性檢查區塊45將使用配置暫存器43中所儲存之該區域之屬性以決定是否允許該存取。屬性檢查區塊45可存取域旗標44,使得該等區塊在決定是否應允許存取時可決定處理電路系統20之當前操作域之安全等級。如若資料存取經決定為有效存取,則記憶體可經存取,如若並非有效存取,系統將產生故障。
就此而言,當對處於一記憶體區域內之指令進行指
令存取且該區域與由域旗標44所指示之域不對應時,屬性檢查則將決定此存取,並在返回此指令時藉由信號將此存取發送至處理電路系統20。
處理電路系統回應於此信號將檢查已返回之指令是
否為防護指令。如若該指令是防護指令,則域旗標44將經更新至與該指令所提取自之資料儲存器30之區域之域對應之域;如若該指令不是防護指令,則由處理電路系統20產生安全違規指示。
由於域間切換僅在偵測到防護指令時經允許,因此
務必不得存在可被會模擬此防護指令之代碼分支之疏忽編碼。在僅有一指令大小且因此可足以簡化之指令集中具有防護指令之唯一操作碼,該碼不由任何其他指令所使用。然而,在程式碼內編碼有文字之情況下,即使僅有單個指令長度,亦必須注意防護指令之編碼未因疏忽而在程式碼區段中被儲
存為文字。
為避免發生此情況,可檢查所儲存之所有文字以檢
查該等文字不具有防護指令編碼。或者,記憶體可經分段以便僅記憶體中之特定區段經允許以含有該防護指令。可禁止該等區段儲存資料文字,或者儲存在此區段中之任何資料文字可經檢查。
第5圖概要地圖示以此方式經分段之資料儲存器
30。因此,存在保留區段、安全性較低之區段34,及安全區段32,該安全區段32具有可儲存防護指令之單個區段35。
此區段可被標示為具有記憶體保護單元40內之配置暫存器中之此特定屬性。由此,如若防護指令經識別為儲存在資料儲存器中之其他處,則此情況將產生安全違規指示。
以此方式將記憶體分段允許將文字儲存在記憶體中
之其他處,而無需檢查該等文字並未因疏忽而具有防護指令編碼。系統可經配置,使得在區段35中儲存僅執行碼,以便不在該區段中儲存文字。當編譯代碼時,可移除文字集用場,但此舉對代碼之大小及處理速度確實具有顯著影響。然而,如若碼中僅有一小部分以此方式經編譯,則此舉對效能及代碼之大小的整體作用極小。應注意,區段35之大小及位置可依據當前正在執行之代碼而在初始化時經設定,或由處理電路系統來設定。
用以限制儲存在此區段中之代碼的類型之另一可能
方法為在此區段中儲存可自安全性較低之函數中調用之任何代碼。防護指令在域間移動之時使用,儘管在一些實施例中,
防護指令可用以在安全性較高之域與安全性較低之域之間雙向移動,但在從較低之安全性移動至較高之安全性時則防護指令顯然更為重要,且在一些情況下,防護指令僅用於該等情況中。在該等情況下,惟可自安全性較低之函數中調用之代碼是可能含有防護指令之代碼,因此,對在區段35中儲存此代碼進行限制可確保如若在其他處發現防護指令則為故障情況,因為此故障必定為疏忽編碼。
儘管資料文字中對防護指令之模擬顯然是難以避免
之問題,但因指令而發生之疏忽編碼則應更易於解決。然而,在一些情況下,及詳言之,在指令具有不同長度之情況下,則此情況本身便可造成一些問題。
例如,第6圖圖示一指令流之實例,該指令流具有
兩種指令長度,即32位元指令及16位元元元指令。存在處理電路系統所需要之位址對準點,指令之起始必須位於該等位址對準點處,且該等對準點每16個位元出現一次,16個位元與此情況下之最小指令長度對應。每一指令之起始為決定該指令之功能的操作或操作碼,隨後存在其他部分,在此實例中,目的地暫存器得以辨識,及提供資料值或立即值。
藉由故意分支至指令中間來嘗試尋找有用之代碼序
列係執行返回導向程式設計攻擊時之常用技術。因此,不僅務必不得有指令模擬防護指令,亦務必不得有失準編碼因意外而模擬防護指令。在此情況下,僅有兩種指令長度,且為了避免對防護指令的任何疏忽模擬,使防護指令具有最大長度並具有兩個相互對稱之部分,每一部分具有相同值。以此
方式,每一部分不得具有操作碼或任何其他指令之操作碼之起始段,因為即使當兩個部分失準時,後一部分亦將與下一指令之起始重疊,由此將與下一指令之操作碼重疊。由此,藉由在具有相同值之部分編碼防護指令,則僅避免將此值用於操作碼中,因此,專用於防護指令所需之編碼空間量得以縮減。
使用者可能設想,如若具有更多指令長度,且該等
長度未必是彼此之直接倍數,則位址對準點可能變得更為頻繁且出現在指令內不同之可能位置處。在此種情況下,如若防護指令起始於指令內,則該防護指令務必與下一指令重疊。以此方式,重疊部分將位於操作碼之至少一部分上,及假若此部分與任何其他操作碼或其他操作碼之起始相比為有效,則該防護指令便無法由指令集中之任何指令模擬,即使在分支不以指令開始處為目標之情況下亦如此。
第7圖概要地圖示一正在被執行之程式流。初始
時,儲存在公共記憶體中之代碼係在公共處理域中被執行,及在此執行期間,前一鏈接暫存器值經保存至堆疊,然後,分支指令得以執行,且此執行導致處理電路系統分支至儲存在私用記憶體中之代碼內及在鏈接暫存器中儲存新分支返回位址。在此實例中,自私用記憶體中提取之指令為防護指令,且該指令係當處理電路系統仍在公共域中操作時所提取的。
因此,域旗標指示公共域,而MPU則偵測出已檢索指令儲存在私用記憶體中,儘管處理電路系統正在公共域中執行。MPU向處理電路系統指示已提取安全性較高之區域中之指令,該
區域之安全等級高於當前域之安全等級。
此情況觸發處理電路系統以檢查已提取之該指令為
防護指令,並在驗證出該指令為防護指令時,藉由將域旗標設定為指示私用域以切換處理域,使得儲存在私用域內之後續指令可得以執行。然後,後續代碼得以執行,該代碼之起始為確保函數調用有效之安全檢查常式;然後,私用函數得以執行。
以此方式,經由允許避免安全檢查常式之私用函數
而部分地進入指令之分支是不可能發生的。原因在於為回應於自安全等級高於當前操作域之安全等級之記憶體區域中提取之指令而執行的指令檢查將指示所提取指令並非防護指令,且系統將產生安全違規指示。
第8圖圖示一流程圖,該流程圖圖示根據本發明之
一實施例之方法之步驟。初始時,指令經提取及經決定該指令所提取自之記憶體之區域是否與處理電路系統之當前操作域對應。此決定藉由查看第2圖所示之域旗標44而得以完成。
如若該指令沒有對應域,則執行該指令並提取下一
指令。如若該指令與不同域對應,則決定該指令是否為防護指令。如若該指令並非防護指令,則已發生安全違規,及確證安全違規指示。如若該指令為防護指令,則處理域經切換至與儲存該防護指令之資料儲存器之區域對應之處理域,在此情況下,處理電路系統亦在提取下一指令之前執行該防護指令。以此方式,域切換僅在發現防護指令時發生。
應注意,儘管本文詳細描述極為一般之方法,使用
此方法在不同域之間切換時需要防護指令,但在一些實施例中,例如就第7圖所揭示之實施例而言,僅在當從安全性較低之域切換至安全性較高之域,且初始評估為儲存該指令之資料儲存器之區域之安全等級是否高於處理域之安全等級時才需要防護指令,且僅在評估結果為肯定時才檢查該指令是否為防護指令,否則執行該指令即可。
下文中列出一特定實施例之一些其他詳情。
注意:一些暫存器在公共狀態與私用狀態之間形成組,以下命名規約用以界定應存取暫存器之哪一版本:-
‧<register name>-未指定特定版本,使用當前狀態之關連版本。此標記法亦用於未形成組之暫存器
‧<register_name>_P-使用暫存器之私用版本
‧<register_name>_NP-使用暫存器之非私用/公共版本
私用狀態
向核心(及範圍更大之系統)添加新私用狀態,該狀態與已有之線程/處置器模式為正交關係,如第9圖所示。當系統在公共狀態中之一狀態下執行時,試圖存取標示為私用之資源將導致故障。
處理器在該四個狀態中之哪一狀態下執行係由已有之線程/處置器邏輯及對軟體為非直接可見之新架構旗標之組合而界定的。在偽碼中,此旗標由稱作CurrentState之變數所表示,此旗標界定如下:-
enumeration PrivacyState{PrivacyState_Public,
PrivacyState_Private};PrivacyState CurrentState;位址空間保護
假定可標示為私用之所有記憶體及其他記憶體映射周邊設備在晶片上,因此,無需加密以保護該等記憶體及周邊設備。對位址空間之任何存取包括新屬性P-Attr,該新屬性用以將異動標示為公共或私有。P-Attr之運輸由具體實施所界定。
標示為私用之所有位址範圍之起始及結束位址必須經對準至32位元組邊界。
資產保護副檔名要求:-
‧標示為私用之位址空間區域必須僅可由將P-Attr設定為私用之異動存取。對將P-Attr設定為公共之私用位址之任何存取必定導致錯誤,該錯誤經報告至產生該請求之元件。
‧處理器能夠決定位址之私密狀態,此狀態決定由以下選項之一者完成:-
‧PAU
資產保護副檔名亦界定新P-Req屬性,該新屬性界定核心要求資料異動在執行時所處於之私密狀態,除非另外指定之P-Req與核心之私密狀態相同。
MPU副檔名
資產保護副檔名擴展MPU之以下方面的功能:-
‧MPU配置暫存器形成具有私密之組;MPU記憶體屬性標示及特權檢查使用與當前執行私密狀態對應之配置暫
存器。
‧私密屬性標示單元(privacy attribution unit;PAU)-此新區塊負責將記憶體區域之屬性標示為公共或私用。
私密屬性標示單元
私密屬性標示單元(privacy attribution unit;PAU)執行以下功能:-
‧對異動之早期篩檢。此舉能使私密違規被較早發現(亦即在執行記憶體存取之前)及以有意義之方式進行報告,而非作為BusFault報告。
‧提供關於可從中提取指令之私密域之資訊。
PAU配置界定多個記憶體區域,區域數目由具體實施而界定,並可藉由讀取PAU_TYPE.PREGION欄而發現。該等區域被命名為PAU_REGIONn,其中,n為從0至PAU_TYPE.PREGION-1之數字。該等區域之關連配置欄無法經直接存取,但可經由視窗暫存器而經間接存取,如下表所示:-
執行記憶體存取時,PAU經查詢。如若地址與PAU中所界定區域中之一者匹配(亦即PAU_REGIONn.BADDR<=
位址<PAU_REGIONn.LADDR)則利用由PAU_CTRL.RMNP位元界定之私密狀態標示該記憶體。如若偵測到私密違規(例如,對將P-Req設定為公共之私用記憶體進行存取),則產生PrivateFault。導致PrivateFault之產生的請求無法使記憶體存取得以執行,同樣地,無論MPU為何種配置,該種存取不導致MemManage故障產生。除了所報告之PFSR中之症候群資訊之外,MMFAR暫存器之私用版本用以儲存導致故障之異動之位址。此故障不同於MemManage故障,因為前者指示對破壞私用狀態之私密性之企圖,因此需要經不同方式之處置,對此而言,韌體供應商可能希望為該兩個故障分配不同優先權。與處理器當前狀態對應之MPU配置用以執行特權檢查及針對不產生PrivateFault之存取執行記憶體屬性標示(請參看第10圖)。
清除PAU_CTRL.ENABLE欄導致以下PAU行為:-
‧P-Attr經設定為P-Req以用於資料存取,及經設定為私用以用於指令提取。
‧針對指令提取之用途,整體位址空間經報告為私用。此舉防止處理器在啟動過程期間因疏忽而轉換至公共狀態。
PAU之關連配置暫存器僅可從私用特權狀態存取,及從任何其他產生BusFault之狀態存取。
PAU_CTRL
私密屬性標示單元控制暫存器,位址為0xE000EDD0,重置至0x0或由具體實施界定(請參看以下說
明)
ENABLE(位元[0])當設定至1時,PAU經賦能
RMNP(位元[1])區域標示為非私用,此位元控制記憶區如何由區域標示。
0:區域將記憶區標示為私用,不與區域中之任一者匹配之位址
經標示為公共。
1:區域將記憶區標示為公共,不與區域中之任一者匹配之位址
經標示為私用。
PAU_TYPE
私密屬性標示單元類型暫存器,位址為0xE000EDD4,唯讀
PREGION(位元[7:0])已實施之PAU區域之數目。如若此欄讀取為零,則處理器不實施PAU
PAU_RNR
私密屬性標示單元區域數目暫存器,位址為0xE000EDD8,重置為未知
REGION(位元[7:0])選擇當前由PAU_RBAR及PAU_RASR暫存器所存取之區域。
PAU_RBAR
私密屬性標示單元區域基底暫存器,位址為0xE000EDDC,重置為未知
REGION(位元[7:0])選擇哪一區域應經修改。
VALID(位元[4])如若設定為0,則忽略REGION欄,及PAU_RNR暫存器中之值用以界定哪一區域應經修改。
BADDR(位元[31:5])區域之基底位址之位元31:5,注意:基底位址之位元[4:0]經界定為0x0。
PAU_RLAR
私密屬性標示單元區域限制位址暫存器,位址為0xE000EDE0,重置為未知
REGION(位元[7:0])選擇哪一區域應經修改。
VALID(位元[4])如若設定為0,則忽略REGION欄,及PAU_RNR暫存器中之值用以界定哪一區域應經修改。
LADDR(位元[31:5])區域之限制位址之位元31:5,
注意:基底位址之位元[4:0]經界定為0x0。
PAU_RAR
私密屬性標示單元區域屬性暫存器,位址為0xE000EDE4,重置為未知
REGION(位元[7:0])選擇哪一區域應經修改。
VALID(位元[4])如若設定為0,則忽略REGION欄,及PAU_RNR暫存器中之值用以界定哪一區域應經修改。
NPC(位元[31])非私用可調用。當NPC經設定為1,則區域經標示為可從其他私密狀態調用。導致私密狀態轉換且並非以將NPC設定為1之區域為目標之任何分支將導致引起故障。此舉向PG防護指令提供額外保護等級,且可用以去除與防護指令操作碼存在於文字集用場中關連之風險。為了減少所需之PAU區域之數目,將進入私用碼之所有登錄點集合在單個區域內是有利的。此區域中之代碼可經編譯為僅執行碼,由此將不含有任何文字集用場
中央處理單元產生之異動
資料
在P-Attr設定為以下值之情況下產生資料存取:-
如若P-Req設定為公共(例如,處理器處於公共狀態),則P-Attr亦設定為公共。
‧對於具有PAU之處理器-如若P-Req設定為私用
(例如,處理器處於私用狀態)且位址與PAU中之區域中之一者匹配,則P-Attr設定為PAU_CTRL.RMNP,如若位址與PAU區域不匹配,則P-Attr設定為與PAU_CTRL.RMNP相反之私密狀態。
此舉防止公共碼在標示為私用之位置上讀取/寫入,同時提供更簡單的整合M斷面圖核心,且PAU之核心併入TrustZone賦能系統內。
指令提取
指令提取行為依據處理器是否包括PAU而定:-
‧具有PAU-如若位址與PAU區域中之一者匹配,則在P-Attr設定為PAU_CTRL.RMNP之情況下提取指令。此P-Attr值亦用以決定處理器之私密狀態。
注意:如若指令操作碼跨越保護域之間的邊界,則出現PrivateFault。
狀態轉換
執行指令時所應處於之私密狀態係由指令所提取自之位置之私密狀態經推理得出。因而,不可能在公共狀態下執行私用碼,或在私用狀態下執行公共碼。然而,為防止攻擊(例如,返回導向程式設計),登錄進入私密狀態受以下機制之嚴格控制:-
‧無論處理器處於何種狀態,在P-Attr之設定使得不因記憶體存取而產生私密違規時,執行所有指令提取。
‧如若指令所提取自之位置之私密狀態指示PC已移至公共碼,則將發生以下動作之一者:-
如若分支被標示為與核心交叉之域,則發生轉換至公共域
否則出現PrivateFault。此情況可在私用碼損壞時發生,出現該故障可防止任何私用暫存器狀態曝露至公共域。
‧向私用狀態之轉換係藉由分支至因PG防護指令之存在而已經標示為有效登錄點之私用記憶體位置而完成。進入公共記憶體中之PG之分支不導致向私用狀態之轉換。
防護指令防止公共碼能夠跳越至私用碼基底中之任意位置。藉由以下偽碼檢查此防護指令之存在,應在執行每一執行之前執行該偽碼,該偽碼之詳情在以下區段中得以描述:-
//PrivateEntryPointCheck()
//========================
PrivateEntryPointCheck()
instState=InstMemState();
if CurrentState !=instPrivate then
//如若藉由異常、線性碼流,或藉由對新指令為有效登錄點(亦即PG)之分支檢查
//而轉換至私用碼。
if instState==PrivacyState_Private && OpCode !=0xE97FE97F then ExceptionEntry(PrivateFault,TRUE);返回;//如若已轉換至公共狀態,則已存在從私用狀態
//之不受控退出。因此引起故障
if instState==PrivacyState_Public then
ExceptionEntry(PrivateFault,TRUE);返回;此方法允許迅速/有效地進行域間調用,並允許任意數目之進入私用碼之登錄點。就概念而言,資產保護在私用/公共狀態之間提供特徵結構,該等特徵結構類似於已存在於特權/特權狀態之間之特徵結構,但區別如下(該等區別之詳情在後續部分中列出):‧登錄由PG指令而非SVC異常進行閘控。
異常優先權不變更-無需算作中斷優先權計劃中之因數
進入單個登錄點不受限-無路徑選擇/代理之額外負擔
引數可經由暫存器而傳遞(不可能利用SVC傳遞,因為SVC指令與SVC異常處置器之間具有發生異常之可能性)
在需要時(例如,在有4個以上之引數時),經由堆疊傳遞引數可迅速完成,無需多個條件MRS指令以獲取堆疊指標
‧每一登錄點可從公共狀態及私用狀態調用
儘管此方法需要對私用外部API函數進行一些特殊處置,但私用域中之多數代碼及公共域中之全部代碼皆不需要作任何修改。除增強反向相容性之外,此方法亦賦能舊有程式館,或可能尚未經更新以支援該等副檔名(例如,GCC)之編譯器,該等副檔名將用於整體公共碼基底。將需要特殊
處置之私用邊界函數作為簡單的組合封套函數(該等函數可能自動產生,並含有一些腳本)而實施是沒有意義的。此方法允許資產保護副檔名在無需特定編譯器支援之情況下經使用。
目標狀態位元
在多種情況下,如若處理器在從新域提取第一指令之前便瞭解自身正在轉換至哪一狀態,則架構可經簡化。ARMv7-M架構不含有ARM指令集(且在將來需要ARM指令集之可能性極小),同樣,分支目標位址之零位元(此位元在ARMv7-AR架構中用作ARM/Thumb互連位元)當前並未使用。資產保護副檔名複用此位元以藉由信號發送處於私用狀態下之分支之目標狀態,如下所示:-
‧target_addr[0]=1,分支之目標狀態為私用。先前用以指定Thumb指令集。
‧target_addr[0]=0,分支之目標狀態為公共。先前保留用以指定ARM指令集。
由於處理器啟動進入私用狀態,且僅支援Thumb指令集,因此該架構可與舊有碼反向相容,該舊有碼分支至將LSB設定為1之位址中。當在公共狀態下執行時,將target_addr[0]設定為0之進入位置之分支導致引發INVSTATE UsageFault,而target_addr[0]=1之分支之行為則與正規分支相同,且不導致向私用狀態之轉換,此方法具有以下優勢:-
‧防止公共碼能夠利用此位元作為潛在之攻擊向量
‧保留舊有程式館之已有行為,或利用舊有工具編譯之代碼,該兩者分支至將LSB設定為1之位址中。
總而言之,僅有可調用公共碼之私用函數需要將調用位址之LSB設定為0。
對私用碼之函數調用
當任何分支(或線性碼流)導致從公共碼向私用碼之轉換時,私用碼之第一指令必須為PG指令。.
第7圖圖示公共碼調用私用函數之簡單實例,同時強調域轉換發生之處。由於處理器保持公共狀態直至PG指令已被執行為止,暫存器狀態(包括LR)被處理為不受信任,且因此在BL與PG之間發生公共中斷之事件中無需保護。另一關鍵特徵為處理器在BXNP LR指令之後返回至公共狀態。此舉防止藉由使異常將在下一指令不在公共域中或另一PG指令在私用域中之情況下產生而進行的返回攻擊。BXNP lr指令可藉由檢驗LR暫存器之LSB而提前決定目標之私密狀態。由於PG指令自動審查返回位址,因此LR暫存器之LSB可在此時得到信任。
額外指令
PG
私用閘道。此防護指令用以指示一位址對來自非私用碼之分支而言係有效分支目標。注意:此指令適合放入LDRD(文字)之T1編碼中之UNPREDICTABLE空間內。請參看ARM ARMv7-M刊號D之第A7.7.50節。此編碼已被專門挑選出,因為上16位元字及下16位元字具有相同值,惟
頂部16位元在當前ISA中將該指令標示為UNPREDICTABLE。此舉使得位元型樣將在正規碼中出現之可能性極小,即使在32位元指令之中間執行分支時亦如此。
編碼T1資產保護副檔名
PG
if InITBlock() then UNPREDICTABLE;instState=InstMemState();LR=if CurrentState==PrivacyState_Private then LR<31:1>:'1'
else LR<31:1>:'0';CurrentState=instState;此指令之惟一副作用為修改LR[0]及更新處理器之私密狀態以匹配指令所提取自之位置的私密狀態。同樣,此指令經界定為可從公共狀態執行。
異常
向量表
資產保護副檔名添加第二向量表,該表由新VTORP暫存器所表明,該新VTORP暫存器之語義類似於當前VTOR暫存器之語義,並如同已有VTOR暫存器而在同一位址處形成組(來自私用狀態之存取前往VTORP)。
以私用狀態為目標之任何異常皆使用VTORP暫存
器,而非VTOR,以決定向量表之基底位址。為保護私用向量表,VTORP務必表明標示為私用之記憶區,因此不可從公共狀態存取該記憶區。以下規則用以決定異常之目標為哪一狀態:-
‧異常號碼<16:一般而言,大多數較小號碼之異常以處理器當前所處於之狀態為目標,如CurrentState變數所決定。以下異常脫離一般規則:-
PrivateFault-永遠以私用狀態為目標
PrivateFault
新PrivateFault異常經界定具有異常號碼7。此異常由經執行之多種安全檢查而觸發(例如,當從公共碼跳越至私用碼中之未標示為有效登錄點之位址時)。可產生此異常之所有情況之詳情可在本說明書之偽碼中參看。
PrivateFault之優先權可藉由使用SHPR1暫存器中之PRI_7欄而經配置。同樣,接收來自公共狀態之存取時,此欄經界定為RAZ/WI。PrivateFaults永遠以私用狀態為目標,且同樣,公共向量表中之異常號碼7被保留。
PFSR
私用故障狀態暫存器,位址為0xE000ED8C,重置為未知,暫存器不存在於ARMv6-M使用約束中:-
‧將1寫入暫存器位元,以清除對應故障。
‧該故障位元元元具有加成性,即如若發生一個以上之故障,則所有關連位元皆設定為1。
‧僅可從私用特權狀態存取,來自其他狀態之存取
產生BusFault。
INVEP(位元[0])無效登錄點。此位元在來自公共狀態之函數調用或異常以私用狀態中之非PG指令為目標時得以設定。
INVMS(位元[1])無效魔力簽。此位元在出堆疊操作期間,異常堆疊框架中之魔力簽被發現為無效時得以設定。
INVER(位元[2])無效異常返回。指示EXC_RETURN.SCRS在從公共狀態中之異常返回時為0。
PAUVIOL(位元[3])PAU違規。指示對存取位址空間中標示為私用之部分進行之嘗試,其中異動之P-Req設定為公共。
INVALIGN(位元[4])無效對準。此異常在指令未與私用域邊界對準之情況下發生。IE該指令與該邊界交叉。
INVTRAN(位元[5])無效轉換。此異常在未經旗標標識為域交叉之分支導致從私用記憶體向公共記憶體之轉換時出現。
Misc偽碼
InstMemState()
此偽碼函數返回記憶體之PrivacyState,當前指令自該記憶體中提取而出。
本發明之各種其他態樣及特徵在附加之申請專利範
圍中得以界定。可在不脫離本發明之範疇之情況下,對本文中之實施例進行各種潤飾,再進行描述。
10‧‧‧資料處理設備
20‧‧‧處理電路系統
22‧‧‧指令提取階段
24‧‧‧指令解碼階段
26‧‧‧指令執行階段
30‧‧‧資料儲存器
32‧‧‧安全區域
34‧‧‧安全性較低之區域
40‧‧‧記憶體保護單元
42‧‧‧比較器
44‧‧‧域旗標
50‧‧‧暫存器組
Claims (21)
- 一種資料處理設備,該設備包括:一處理電路系統,該處理電路系統經配置以回應於程式指令而執行資料處理操作,該處理電路系統具有複數個具有不同之安全等級之操作域,包括一安全域及另一不同之安全域,其中,當在該安全域中操作時,該處理電路系統可存取在該另一不同之安全域內無法存取之至少一些資料;一資料儲存器,用於儲存資料及指令,該資料儲存器包括複數個區域,每一區域與該複數個操作域中之一者對應,且該資料儲存器包括至少一安全區域以用於儲存敏感資料,該敏感資料可由在該安全域內操作之該資料處理電路系統所存取,但不可由在該另一不同之安全域內操作之該資料處理電路系統所存取,及該資料儲存器包括一安全性較低之區域以用於儲存敏感性較低之資料;該處理電路系統經配置以:針對一待執行之程式指令,驗證儲存該程式指令之該資料儲存器之一區域是否與該處理電路系統之一當前操作域對應;及回應於偵測到該程式指令儲存在該資料儲存器之與該處理電路系統之該當前操作域不對應之一區域中;驗證該程式指令是否包括一防護指令;及若該程式指令包括該防護指令,則將該操作域切換至與儲存該程式指令之該資料儲存器之該區域對應之一域;及 若該程式指令不包括該防護指令,則產生一安全違規指示。
- 如請求項1所述之資料處理設備,其中,該另一不同之安全域包括一域,該域之安全性低於該安全域。
- 如請求項1或請求項2所述之資料處理設備,其中,該處理電路系統經配置以僅回應於偵測到該程式指令儲存在該資料儲存器之一區域中且該區域與該等域中之一域對應且該域之一安全等級高於該處理電路系統之一當前操作域之該安全等級而驗證該程式指令是否包括一防護指令。
- 如請求項3所述之資料處理設備,其中,回應於該程式指令儲存在該資料儲存器之一區域中且該區域與該等域中之一域對應且該域之一安全等級低於一當前操作域之該安全等級,該處理電路系統經配置以將該操作域切換至該較低之安全等級,無論該指令是否包括該防護指令。
- 如請求項1所述之資料處理設備,其中,該處理電路系統回應於該安全違規指示以產生一異常及執行一故障處置碼。
- 如請求項1所述之資料處理設備,其中,該處理電路系統經配置以執行來自具有不同長度之指令之一指令集之程式 指令,該處理電路系統所要求之指令位元元址對準依據該等不同之長度而定,該防護指令之一長度足夠長,使得若該防護指令之一起始位於該等指令位址對準點之至少一子集中之一者處且該者位於該等程式指令中之一者內,則該防護指令之一部分將與下一指令之一起始重疊,該下一指令永遠延伸至該指令外。
- 如請求項6所述之資料處理設備,其中,該等指令位元元址對準點之該至少一子集包括所有該等指令位址對準點。
- 如請求項6所述之資料處理設備,其中,該防護指令之該長度等於來自該指令集之一最長程式指令之一長度。
- 如請求項6所述之資料處理設備,其中,該防護指令由複數個部分形成,該複數個部分中之至少兩個部分具有一長度,該長度為該處理電路系統所要求之該等指令位址對準之間的一最小距離,該複數個部分中之該至少兩個部分具有一相同值。
- 如請求項9所述之資料處理設備,其中,該防護指令包括該至少兩個部分。
- 如請求項9所述之資料處理設備,其中,該相同值並非來自該指令集之任一其他指令之一有效操作碼或一操作碼之起始段。
- 如請求項6所述之資料處理設備,其中,在利用該處理電路系統所要求之該位址對準而經對準時可與來自該指令集之另一指令重疊的該防護指令之任一部分之一值並非來自該指令集之任一其他指令之一有效操作碼或一操作碼之起始。
- 如請求項1所述之資料處理設備,其中,該資料儲存器經配置以不將與該防護指令具有相同值之任何資料值儲存為程式碼內之文字。
- 如請求項1所述之資料處理設備,其中,該資料處理設備經配置以將該資料儲存器分段,使得該資料儲存器之至少一預定區段經允許以有效儲存該防護指令,該資料處理電路系統經配置以回應於偵測該防護指令位於該資料儲存器中之並非該至少一預定區段之一分段中而產生一安全違規指示。
- 如請求項14所述之資料處理設備,其中,該至少一預定區段經配置以不儲存與該防護指令具有相同值之任何資料值。
- 如請求項14所述之資料處理設備,其中,該程式碼中可由儲存在該資料儲存器之一安全性較低之區域中之一程式碼調用之部分儲存在該至少一預定區段中。
- 如請求項14所述之資料處理設備,其中,該資料儲存器經配置以僅將指令儲存在該至少一預定區段中。
- 如請求項14所述之資料處理設備,該資料處理設備包括一記憶體存取控制電路系統以用於控制對該資料儲存器之存取,該記憶體存取控制電路系統經配置以藉由在該記憶體存取控制電路系統內設定至少一記憶屬性標誌來指示該資料儲存器之該至少一預定區段。
- 如請求項1所述之資料處理設備,該處理電路系統經配置以將該防護指令作為一域切換指令來處理,並回應於該防護指令而將該操作域切換至與儲存該防護指令之該資料儲存器之該區域對應之一域。
- 一種用於一設備之資料處理方法,該設備包括:一處理電路系統,用於回應於程式指令而執行資料處理操作,該處理電路系統具有複數個具有不同安全等級之操作域,包括一安全域及一另一不同之安全域,其中,當在該安全域中操作時,該處理電路系統可存取在該另一不同之安全域內無法存取之至少一些資料;及一資料儲存器,用於儲存 資料及指令,該資料儲存器包括複數個不同之安全區域,每一區域與該複數個操作域中之一者對應;該方法包括以下步驟:(i)針對一待執行之程式指令,驗證儲存該程式指令之該資料儲存器之一區域是否與該處理電路系統之一當前操作域對應;及(ii)回應於偵測到該程式指令儲存在該資料儲存器之與該處理電路系統之該當前操作域不對應之一區域中;(iii)驗證該程式指令是否包括一防護指令;及(iv)若該程式指令包括該防護指令,則將該操作域切換至與儲存該程式指令之該資料儲存器之該區域對應之一域;及(v)若該程式指令不包括該防護指令,則產生一安全違規指示。
- 一種資料處理設備,該設備包括:處理構件,用於回應於程式指令而執行資料處理操作,該處理構件具有複數個具有不同之安全等級之操作域,包括一安全域及一另一不同之安全域,其中,當在該安全域中操作時,該處理構件可存取在該另一不同之安全域內無法存取之至少一些資料;一資料儲存構件,用於儲存資料及指令,該資料儲存構件包括複數個區域,每一區域與該複數個操作域中之一者對應,及該資料儲存構件包括至少一安全區域以用於儲存敏感 資料,該敏感資料可由在該安全域內操作之該資料處理構件所存取,但不可由在該另一不同之安全域內操作之該資料處理構件所存取,及該資料儲存構件包括一安全性較低之區域以用於儲存敏感性較低之資料;該處理構件用於:針對一待執行之程式指令,驗證儲存該程式指令之該資料儲存構件之一區域是否與該處理構件之一當前操作域對應;及回應於偵測到該程式指令儲存在該資料儲存構件之與該處理構件之該當前操作域不對應之一區域中;驗證該程式指令是否包括一防護指令;及若該程式指令包括該防護指令,則將該操作域切換至與儲存該程式指令之該資料儲存構件之該區域對應之一域;及若該程式指令不包括該防護指令,則產生一安全違規指示。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB201217531A GB201217531D0 (en) | 2012-10-01 | 2012-10-01 | ARMv7-M Asset Protection Proposal |
GB1313869.8A GB2506501A (en) | 2012-10-01 | 2013-08-02 | A secure mechanism to switch between different domains of operation |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201415287A TW201415287A (zh) | 2014-04-16 |
TWI607342B true TWI607342B (zh) | 2017-12-01 |
Family
ID=47225487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102132457A TWI607342B (zh) | 2012-10-01 | 2013-09-09 | 用於在資料處理器的不同作業域之間切換的安全機制 |
Country Status (12)
Country | Link |
---|---|
US (1) | US9122890B2 (zh) |
EP (2) | EP2888691B1 (zh) |
JP (1) | JP6272875B2 (zh) |
KR (2) | KR102160916B1 (zh) |
CN (1) | CN104756129B (zh) |
AR (1) | AR092752A1 (zh) |
GB (2) | GB201217531D0 (zh) |
IL (2) | IL237180B (zh) |
IN (1) | IN2015DN01188A (zh) |
MY (2) | MY176723A (zh) |
TW (1) | TWI607342B (zh) |
WO (2) | WO2014053802A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160314296A1 (en) * | 2013-12-17 | 2016-10-27 | Sequitur Labs ,Inc. | Method and System for Dynamic Runtime Selection and Modification of Conditional Expressions in Computations |
US9703733B2 (en) | 2014-06-27 | 2017-07-11 | Intel Corporation | Instructions and logic to interrupt and resume paging in a secure enclave page cache |
CN105988713B (zh) * | 2015-01-29 | 2019-01-08 | 深圳市硅格半导体有限公司 | 存储装置及存储方法 |
US9747218B2 (en) | 2015-03-20 | 2017-08-29 | Mill Computing, Inc. | CPU security mechanisms employing thread-specific protection domains |
US9870466B2 (en) * | 2015-09-26 | 2018-01-16 | Mcafee, Inc. | Hardware-enforced code paths |
CN111651202B (zh) * | 2016-04-26 | 2023-09-22 | 中科寒武纪科技股份有限公司 | 一种用于执行向量逻辑运算的装置 |
US20180004946A1 (en) * | 2016-07-01 | 2018-01-04 | Intel Corporation | Regulating control transfers for execute-only code execution |
US10650156B2 (en) | 2017-04-26 | 2020-05-12 | International Business Machines Corporation | Environmental security controls to prevent unauthorized access to files, programs, and objects |
GB2562102B (en) * | 2017-05-05 | 2019-09-04 | Advanced Risc Mach Ltd | An apparatus and method for managing use of capabilities |
CN109754062B (zh) * | 2017-11-07 | 2024-05-14 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
US11914726B2 (en) | 2018-08-30 | 2024-02-27 | Micron Technology, Inc. | Access control for processor registers based on execution domains |
US11182507B2 (en) * | 2018-08-30 | 2021-11-23 | Micron Technology, Inc. | Domain crossing in executing instructions in computer processors |
GB2577878B (en) * | 2018-10-08 | 2020-11-11 | Advanced Risc Mach Ltd | Transition disable indicator |
CN111339060B (zh) * | 2018-12-19 | 2024-03-12 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111353595A (zh) * | 2018-12-20 | 2020-06-30 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111400341B (zh) * | 2019-01-02 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 标量查找指令处理方法、装置及相关产品 |
GB2589897B (en) * | 2019-12-11 | 2022-03-23 | Advanced Risc Mach Ltd | Domain transition disable configuration parameter |
GB2589895B (en) * | 2019-12-11 | 2022-03-16 | Advanced Risc Mach Ltd | Intermodal calling branch instruction |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040168047A1 (en) * | 2003-02-24 | 2004-08-26 | Matsushita Electric Industrial Co., Ltd. | Processor and compiler for creating program for the processor |
US20080184016A1 (en) * | 2007-01-31 | 2008-07-31 | Microsoft Corporation | Architectural support for software-based protection |
GB2448149A (en) * | 2007-04-03 | 2008-10-08 | Advanced Risc Mach Ltd | Protected function calling across domains |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4087856A (en) * | 1976-06-30 | 1978-05-02 | International Business Machines Corporation | Location dependence for assuring the security of system-control operations |
GB0226874D0 (en) * | 2002-11-18 | 2002-12-24 | Advanced Risc Mach Ltd | Switching between secure and non-secure processing modes |
US7383587B2 (en) * | 2002-11-18 | 2008-06-03 | Arm Limited | Exception handling control in a secure processing system |
GB0226875D0 (en) * | 2002-11-18 | 2002-12-24 | Advanced Risc Mach Ltd | Control of access to a memory by a device |
WO2006064462A2 (en) * | 2004-12-14 | 2006-06-22 | Koninklijke Philips Electronics N.V. | Programmable signal processing circuit and method of interleaving |
US8621607B2 (en) * | 2006-05-18 | 2013-12-31 | Vmware, Inc. | Computational system including mechanisms for tracking taint |
US8578483B2 (en) * | 2008-07-31 | 2013-11-05 | Carnegie Mellon University | Systems and methods for preventing unauthorized modification of an operating system |
GB2482701C (en) * | 2010-08-11 | 2018-12-26 | Advanced Risc Mach Ltd | Illegal mode change handling |
US9798873B2 (en) * | 2011-08-04 | 2017-10-24 | Elwha Llc | Processor operable to ensure code integrity |
-
2012
- 2012-10-01 GB GB201217531A patent/GB201217531D0/en not_active Ceased
-
2013
- 2013-08-02 GB GB1313869.8A patent/GB2506501A/en not_active Withdrawn
- 2013-08-07 WO PCT/GB2013/052105 patent/WO2014053802A1/en active Application Filing
- 2013-08-07 KR KR1020157008994A patent/KR102160916B1/ko active IP Right Grant
- 2013-08-07 EP EP13750108.6A patent/EP2888691B1/en active Active
- 2013-08-07 MY MYPI2015700654A patent/MY176723A/en unknown
- 2013-09-06 US US14/019,580 patent/US9122890B2/en active Active
- 2013-09-09 TW TW102132457A patent/TWI607342B/zh active
- 2013-09-17 KR KR1020157009802A patent/KR102186675B1/ko active IP Right Grant
- 2013-09-17 IN IN1188DEN2015 patent/IN2015DN01188A/en unknown
- 2013-09-17 EP EP13773826.6A patent/EP2885738B1/en active Active
- 2013-09-17 CN CN201380049974.2A patent/CN104756129B/zh active Active
- 2013-09-17 WO PCT/GB2013/052423 patent/WO2014053806A1/en active Application Filing
- 2013-09-17 MY MYPI2015700648A patent/MY168636A/en unknown
- 2013-09-17 JP JP2015533687A patent/JP6272875B2/ja active Active
- 2013-09-30 AR ARP130103541A patent/AR092752A1/es active IP Right Grant
-
2015
- 2015-02-11 IL IL237180A patent/IL237180B/en active IP Right Grant
- 2015-02-17 IL IL237280A patent/IL237280B/en active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040168047A1 (en) * | 2003-02-24 | 2004-08-26 | Matsushita Electric Industrial Co., Ltd. | Processor and compiler for creating program for the processor |
US20080184016A1 (en) * | 2007-01-31 | 2008-07-31 | Microsoft Corporation | Architectural support for software-based protection |
GB2448149A (en) * | 2007-04-03 | 2008-10-08 | Advanced Risc Mach Ltd | Protected function calling across domains |
US20080250216A1 (en) * | 2007-04-03 | 2008-10-09 | Daniel Kershaw | Protected function calling |
US8010772B2 (en) * | 2007-04-03 | 2011-08-30 | Arm Limited | Protected function calling |
Also Published As
Publication number | Publication date |
---|---|
IL237280B (en) | 2018-04-30 |
IL237180B (en) | 2018-06-28 |
CN104756129A (zh) | 2015-07-01 |
JP2015534689A (ja) | 2015-12-03 |
KR102186675B1 (ko) | 2020-12-04 |
WO2014053806A1 (en) | 2014-04-10 |
IL237280A0 (en) | 2015-04-30 |
CN104756129B (zh) | 2017-11-28 |
MY176723A (en) | 2020-08-19 |
GB201313869D0 (en) | 2013-09-18 |
AR092752A1 (es) | 2015-04-29 |
EP2885738A1 (en) | 2015-06-24 |
MY168636A (en) | 2018-11-16 |
GB201217531D0 (en) | 2012-11-14 |
GB2506501A (en) | 2014-04-02 |
US9122890B2 (en) | 2015-09-01 |
EP2885738B1 (en) | 2016-10-26 |
WO2014053802A1 (en) | 2014-04-10 |
EP2888691B1 (en) | 2018-11-21 |
JP6272875B2 (ja) | 2018-01-31 |
KR20150065735A (ko) | 2015-06-15 |
EP2888691A1 (en) | 2015-07-01 |
US20140075581A1 (en) | 2014-03-13 |
TW201415287A (zh) | 2014-04-16 |
IN2015DN01188A (zh) | 2015-06-26 |
KR102160916B1 (ko) | 2020-09-29 |
KR20150064069A (ko) | 2015-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI607342B (zh) | 用於在資料處理器的不同作業域之間切換的安全機制 | |
US8701187B2 (en) | Runtime integrity chain verification | |
CN107066311B (zh) | 一种内核数据访问控制方法与系统 | |
US20120216281A1 (en) | Systems and Methods for Providing a Computing Device Having a Secure Operating System Kernel | |
JP6189039B2 (ja) | セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法 | |
JP2008257735A (ja) | 保護された関数呼び出し | |
KR102192835B1 (ko) | 데이터 처리장치에서의 소프트웨어 라이브러리들의 보안 보호 | |
US11797398B2 (en) | Systems and methods for checking safety properties | |
KR101816866B1 (ko) | 감시 대상 시스템의 기밀성 및 무결성 감시 장치 및 방법 | |
US20220366037A1 (en) | Domain transition disable configuration parameter | |
TW201939272A (zh) | 帶鏈結分支指令的分支目標變體 | |
JP7383750B2 (ja) | 故障注入攻撃を検出する改善されたシステムと方法 | |
EP4073635B1 (en) | Intermodal calling branch instruction | |
Pecatte | Processor Anchor to Increase the Robustness Against Fault Injection and Cyber Attacks | |
Lv et al. | StatekeepSpec: Securing Speculative Execution via forbidding Change-Of-State |