TWI667611B - 資料處理設備及用於其之方法 - Google Patents
資料處理設備及用於其之方法 Download PDFInfo
- Publication number
- TWI667611B TWI667611B TW103117164A TW103117164A TWI667611B TW I667611 B TWI667611 B TW I667611B TW 103117164 A TW103117164 A TW 103117164A TW 103117164 A TW103117164 A TW 103117164A TW I667611 B TWI667611 B TW I667611B
- Authority
- TW
- Taiwan
- Prior art keywords
- library
- software
- active
- security
- domain
- Prior art date
Links
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/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
- 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)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
Abstract
處理設備2具有安全域90及較不安全域80。當處理電路系統2在域之間調用時,安全保護硬體40執行安全檢查操作。資料儲存器6儲存若干軟體程式庫100及程式庫管理軟體110。程式庫管理軟體110選擇程式庫100中之至少一者作為處理電路系統4可執行之活動程式庫及選擇至少一個其他程式庫100作為不可執行之不活動程式庫。回應於對不活動程式庫之存取,程式庫管理軟體110切換何者程式庫為活動的。
Description
本發明係關於資料處理領域。更特定言之,本發明係關於資料處理設備中之軟體程式庫之安全保護。
資料處理設備可具有安全域及較不安全域。當在安全域中操作時,可存取在較不安全域中操作時不可存取之資料。此提供一種保護潛在敏感資料及程式碼免遭未經授權人或程式存取之方式。
然而,愈來愈需要保護多個軟體應用程式避免相互存取。隨著應用程式數目增加,維護安全變得更加複雜。本發明技術設法解決此問題。
從一態樣看,本發明提供一種資料處理設備,該資料處理設備包含:處理電路系統,該處理電路系統用於回應於指令執行資料處理,該處理電路系統具有操作之複數個域,該等域包括安全域及較不安全域,其中當在安全域中操作時對指令
可存取的至少一些資料在較不安全域中操作時不可存取;安全保護硬體,該安全保護硬體經配置以回應於較不安全域與安全域之間的處理電路系統調用執行第一安全保護操作;以及資料儲存器,該資料儲存器經配置以儲存複數個軟體程式庫及程式庫管理軟體以便由處理電路系統執行;其中:配置程式庫管理軟體,以控制處理電路系統將複數個軟體程式庫中之至少一者設置為處理電路系統可執行之活動軟體程式庫,且將至少一個其他軟體程式庫設置為處理電路系統不可執行之不活動軟體程式庫;以及回應於處理電路系統調用目標不活動軟體程式庫,配置程式庫管理軟體以執行活動程式庫切換來控制處理電路系統將目標不活動軟體程式庫設置為活動軟體程式庫且將先前活動軟體程式庫設置為不活動軟體程式庫。
可希望在處理設備中提供多個不同軟體程式庫。可由可能相互不信任的不同軟體供應商提供程式庫,且因此可希望強制執行程式庫之間的安全性。選項將針對待在軟體(例如,使用作業系統)中處置之軟體程式庫之間的所有安全檢查。然而,此途徑傾向於緩慢,因為每當存在對受保護程式庫的函數調用時,必須中斷處理電路系統之處理以調用作業系統安全行為。另一方面,全硬體實施解決方案可將各個軟體程式庫實施為獨立安全域及使用專用硬體強制執行程式庫之間的安全。然而,相同裝置上存在的軟體程式庫數目可能很大,且因此在電路面積及功率消耗方面,作為獨立域維護各個程式庫的專用硬體資源量可為高昂。
為了解決該等問題,本發明技術提供一種使用專用安全保護硬體及程式庫管理軟體的混合途徑。安全保護硬體控制較不安全域與安全域之間的調用。當在各域之間調用時,安全保護硬體可執行第一安全保護操作,該第一安全保護操作可包括用於確保較不安全程式碼在無許可情況下不可存取安全資料或安全程式碼的各種措施。另一方面,使用由處理電路系統本身所執行的程式庫管理軟體控制域內不同軟體程式庫之間的切換。程式庫管理軟體選擇軟體程式庫中之至少一者作為活動程式庫及選擇至少一個其他軟體程式庫作為不活動軟體程式庫。處理電路系統不可執行經指定為不活動的軟體程式庫,且與彼程式庫關聯的安全關鍵資源對活動程式庫不可存取。若處理電路系統試圖調用不活動軟體程式庫,則程式庫管理軟體控制處理電路系統切換程式庫何者為活動,使得所需程式庫變為活動及先前活動程式庫變為不活動。因此,程式庫管理軟體有效地虛擬化不同軟體程式庫之間的安全保護協定,使得系統表現出好像處理電路系統具有許多保護域,各個保護域對應於不同受保護程式庫,而從硬體角度看,幾乎不存在一軟體程式庫每次被選為活動程式庫的域。
此途徑比全軟體實施途徑更快速,因為專用安全保護硬體允許對另一域中的活動軟體程式庫直接進行函數調用而無需調用處理電路系統上的軟體。對相同活動程式庫的重複調用不調用程式庫管理軟體,且可在對由處理電路系統正
執行之處理幾乎沒有中斷的情況下用硬體快速控制與較不安全域與安全域之間的調用關聯的任何安全預防措施。僅當需要不活動程式庫時才會遇到使用程式庫管理軟體的程式庫之間切換的執行額外負擔。實際上,此與對已處於活動程式庫的調用相比不經常發生,且因此總體效能接近於藉由全硬體實施途徑實現的彼效能,但具有較少硬體額外負擔。
各個軟體程式庫可包括與彼程式庫關聯的指令及資料兩者。舉例而言,程式庫可表示特定應用程式,諸如銀行或虛擬支付應用程式。
當處理電路系統對不活動軟體程式庫調用時,程式庫管理軟體可控制該處理電路系統以執行第二安全保護操作。若此第二安全保護操作不成功,則可觸發錯誤,而若成功,則可執行活動程式庫切換以使得目標程式庫變為活動。因此,若存在跨域調用,除用硬體執行第一安全保護操作外,可藉由程式庫管理軟體提供額外安全保護層。即便不存在由安全保護硬體所監測之跨域調用,仍可執行第二安全保護操作。舉例而言,軟體程式庫可僅允許另一軟體程式庫分支至程式庫程式碼之某些點,且若另一軟體程式庫試圖分支至程式庫中的一位置,而該位置不在有效入口點處,則可藉由程式庫管理軟體觸發錯誤。又,僅可信任某些程式庫能分支至給定程式庫,若程式庫管理軟體偵測到非信任程式庫調用該程式庫,則觸發錯誤。
為了維持安全,可希望程式庫管理軟體選擇一程式庫作為活動程式庫及選擇其他程式庫作為不活動程式庫,使
得一個時刻只有一個程式庫為活動且程式庫之彼此互動需要安全受控的程式庫切換。
另一方面,可較佳的是維持多個活動程式庫及其他程式庫為不活動。舉例而言,可僅需要保護一些程式庫免遭侵入及其他程式庫可不需要被保護。在此情況中,可使得一些程式庫永久活動。又,可存在程式庫之集合,該等程式庫受信任彼此互動,且因此當該等程式庫中之一者為活動時,亦使得其他程式庫活動。又,可存在程式庫之不同子集合,且在程式庫之各個子集合內,可選擇一活動程式庫,而子集合中的其他程式庫為不活動。又,由於安全保護硬體可強制執行安全域與較不安全域之間的安全,可能指定安全域中的一活動程式庫及較不安全域中的一活動程式庫,由於硬體所提供的保護,在沒有許可情況下該等活動程式庫仍不可相互存取。因此,對於可希望將多個程式庫同時設置為活動存在眾多原因。大體而言,程式庫管理軟體可確保防止不活動程式庫被活動程式庫不適當地存取。
儘管本發明技術可用於較不安全域中,但是該技術對安全域十分有用,該安全域將通常用於可能處理敏感資訊的軟體程式庫。因此,在一實例中,受管理之軟體程式庫可為安全域中的安全軟體程式庫,而程式庫管理軟體不管理較不安全域中的任何程式庫。或者,可提供獨立安全程式庫管理器及較不安全程式庫管理器用於分別處置安全域及較不安全域中的程式庫之間的切換。
記憶體保護單元(memory protection unit;MPU)可用於控制程式庫何者為活動或不活動。MPU可用於指定資料儲存器之區域為可存取或不可存取,對不可存取區域的存取觸發故障狀況。因此,程式庫管理軟體執行的活動程式庫切換可包括更新MPU中的存取許可以指示不同區域為可存取或不可存取。若存取不活動程式庫,則將對應記憶體區域指示為在MPU中不可存取,且因此MPU可產生故障,該故障可觸發程式庫管理軟體執行活動程式庫切換。
活動程式庫切換亦可包括更新堆疊指標儲存位置中的堆疊指標以對應於新活動程式庫。可在資料儲存器中為軟體程式庫中的至少一些軟體程式庫提供堆疊。當活動時,程式庫可使用堆疊儲存臨時資料。並非所有程式庫皆需要在資料儲存器中分配有堆疊,因為隨著程式庫自不活動狀態切換至活動狀態,可動態分配堆疊。各個分配堆疊具有對應堆疊指標,該堆疊指標識別堆疊在記憶體中的位置。由堆疊指標所指示的精確位置可各有不同。舉例而言,堆疊指標可指示放置於堆疊上的最後資料值之位置,或放置於堆疊上的下一資料值應被寫入之位置。藉由當自一程式庫切換至另一程式庫時更新MPU及堆疊指標,新活動程式庫不可存取與先前活動程式庫關聯的堆疊,該堆疊可為敏感資料。若允許多個程式庫同時為活動,則可提供多個堆疊指標暫存器。舉例而言,可存在安全堆疊指標儲存位置及較不安全堆疊指標儲存位置,該等位置分別儲存當前活動安全程式庫及較不安全程式庫的堆疊指標。
安全保護硬體可具有安全保護單元,該安全保護單
元儲存安全資料,該等安全資料界定分別與安全域及較不安全域關聯的資料儲存器之安全區域及較不安全區域。可基於當前正經處理之指令是否處於資料儲存器之安全區域中還是較不安全區域中選擇處理電路系統之操作之當前域。通常,位於安全區域中的程式碼將執行安全域,而位於較不安全區域中的程式碼將在較不安全域中執行,但可存在一些異常。當分支指令試圖自與安全域及較不安全域中之一者關聯的位置分支至與另一域關聯的位置時,可藉由安全保護硬體執行第一安全保護操作。
第一安全保護操作可包括用於防止對安全資訊之不適當存取的若干不同措施。當自安全域調用至較不安全域時可僅需要一些措施,或反之亦然。
舉例而言,第一安全保護操作可包括檢查待在程式流之受保護變化後執行的第一指令是否為針對程式流之彼變化的所允許之目標指令。當程式流之受保護變化為至待在安全域中執行的指令之分支時,此可為特別有用。允許分支跳至安全函數之中間可為危險的,因為此可允許繞過諸如安全函數中較早提供的密碼檢查之安全預防措施。為了防止此情況,可將預先決定指令(例如,特殊防護指令)指定為針對程式流之變化經允許之目標指令,且經允許之指令可包括於安全程式碼中以標記經允許之函數入口點。在程式流之受保護變化(例如,至安全區域中的指令之分支)後,安全保護硬體可檢查待在調用後執行的第一指令是否為經允許之目標指令。若否,則可觸發安全故障。
又,第一安全保護操作可包括在受保護函數調用後保護函數返回位址。舉例而言,若自安全域中的程式碼及較不安全域中的目標程式碼調用函數,則將不希望允許較不安全域中的程式碼存取函數之返回位址。若較不安全函數能夠修改返回位址,則其將能夠影響安全程式碼之程式流,此可導致由跳入安全函數之中間而繞過安全保護。為了防止此情況,硬體可採取步驟自函數調用後所執行的指令隱藏返回位址之函數。舉例而言,可將返回位址儲存至與調用了函數之安全程式碼關聯的堆疊,該堆疊不可藉由較不安全域中的程式碼存取。
第一安全保護操作亦可包括在程式流之變化後檢查處理已被切換到的域是否為針對程式流之彼變化所指定的經允許之域。存在某些安全攻擊,在該等攻擊中較不安全程式碼可引發安全域中的分支指令,原本預期該分支指令分支至較不安全域,但卻分支至安全域中的一位置,允許較不安全程式碼作出安全域中的程式流之不受控變化。為了防止此情況,可針對程式流之某些變化指定至少一個經允許之域,且在程式流之變化後,硬體可檢查目的域是否匹配經允許之域。第一安全保護操作亦可包括除上文所描述之彼等外的安全檢查與操作。
安全保護硬體提供用於確保在較不安全域與安全域之間調用時之安全性的措施。然而,當在相同域內的不同軟體程式庫之間調用時亦可需要該等措施。可以不同方式實現此舉。在一實例中,當在相同域中的程式庫之間調用時,處
理電路系統可臨時切換至另一域,隨後又切換回到原始域。域之臨時切換使得程式庫調用呈現為安全域與較不安全域之間的調用,儘管兩個程式庫實際上處於相同域中,且因此觸發硬體執行第一安全保護操作,使得當在相同域中的程式庫之間調用時亦可使用與在域之間調用時所執行之相同的安全措施。
舉例而言,為了在相同域中的程式庫之間調用時調用安全保護硬體,活動程式庫可執行分支指令,該分支指令在目標不活動程式庫內指定一位置之目標位址以及指示當實施分支時系統應切換至另一域。此舉引發系統切換至另一域長達一段時期,隨後當決定目標位置實際上與原始域關聯時切換回來。此途徑所具有之優勢在於用硬體快速執行針對程式庫之切換的安全措施。
或者,當在相同域中的兩個程式庫之間調用時,系統可保持在當前域中,且程式庫管理軟體可執行第一安全保護操作。在不同域之間調用時本將藉由安全保護硬體正常執行的任何操作可藉由在處理電路系統上執行之程式庫管理軟體代替執行。此舉避免對如先前實例中的域之間臨時切換之特殊機制的需要,且確保程式庫之間傳遞的運算元未變得對較不安全域可存取。
如上文所論及,由安全保護硬體所提供的第一安全保護操作的一部分可自函數調用後的後續軟體隱藏函數返回位址。當存在相同域中的程式庫之間的切換時,此舉亦可藉由程式庫管理軟體執行。此不必針對所有函數調用執行--
僅針對某些受保護函數調用隱藏函數返回位址可足夠。實現此隱藏的一種方式為在自彼程式庫切換前將函數返回位址儲存至與活動軟體程式庫關聯的堆疊。
此途徑與將函數返回位址儲存至鏈接暫存器之常用方法形成對比,該鏈接暫存器對所有程式庫可存取。實際上,可將虛設函數返回位址儲存至鏈接暫存器。虛設函數返回位址不對應於有效指令位址,此情況指示當作出至虛設位址的函數返回時,安全保護硬體應將自與活動軟體程式庫關聯的堆疊讀取實際函數返回位址及隨後觸發至實際函數返回位址的函數返回。
然而,在將實際函數返回位址儲存至堆疊後,可又切換至另一軟體程式庫,此切換可引發堆疊指標交換。因此,當自函數調用返回時,可不再可存取儲存函數返回位址的堆疊。為了解決此問題,在已作出受保護函數調用後,程式庫管理軟體可設置資訊來指示已切換至另一軟體程式庫。在對應函數返回時,程式庫管理軟體可檢查資訊,查看是否已存在程式庫切換,且若是,則可執行活動程式庫切換回到原始程式庫,使得可自堆疊存取函數返回位址。
為指示已切換活動程式庫所設置的資訊可具有各種形式。舉例而言,此資訊可為不對應於有效指令位址的無效返回位址(例如,藉由硬體儲存至鏈接暫存器之與虛擬返回位址不同的無效位址)。舉例而言,可將無效返回位址儲存至另一軟體程式庫之堆疊,在已作出受保護函數調用後將處理切換至該堆疊。另一軟體程式庫使用無效返回位址引發故
障,該故障可用於觸發程式庫管理軟體執行活動程式庫切換回到原始程式庫。
又,程式庫管理軟體可維護狀態資訊,該狀態資訊指示軟體程式庫中之何者作出了受保護函數調用。在自受保護函數調用返回後,若狀態資訊所指示之程式庫為當前不活動,則程式庫管理軟體可切換至狀態資訊所指示之程式庫。此情況允許系統決定堆疊,自該堆疊處應將獲得返回位址。若僅存在兩個藉由程式庫管理軟體管理的程式庫,則狀態資訊可不為基本型。
可在作出受保護函數調用時儲存狀態資訊,或可在切換至不同活動程式庫稍後儲存狀態資訊。在一實例中,狀態資訊可指示經調用之函數中的至少一部分歷史,使得稍後可能回溯以識別調用了原始函數的程式庫。然而,監測函數調用樹可為複雜的,因為可存在許多巢套函數,在返回原始函數調用前處理該等巢套函數。在不追蹤函數之所有後續處理的情況下儲存原始調用者程式庫之指示可更為簡單。實行此舉的一種方式為將狀態資訊儲存至與另一軟體程式庫關聯的堆疊。
若將狀態資訊儲存於另一軟體程式庫可存取之一位置,則該另一程式庫可能夠修改狀態資訊,此修改可引發不可預知且不安全的操作。為了防止此修改,程式庫管理軟體可控制處理電路系統將驗證資訊儲存至作出保護函數調用的程式庫之堆疊。可對函數返回使用此驗證資訊以檢查到尚未修改狀態資訊。舉例而言,驗證資訊可包含一指示,表示哪
個程式庫為其堆疊儲存狀態資訊之該另一程式庫。若藉由軟體修改狀態資訊,則函數返回可不再返回至原始調用者程式庫及處理被切換到的程式庫反而可不具有校正驗證資訊,從而允許偵測修改及產生錯誤。
儘管上文論述安全域及較不安全域,但是設備亦可具有進一步域,用安全保護硬體控制域之間的轉換。因此,上文所論及之安全域及較不安全域可為更多數目之域中的兩者。在各個域中可存在活動程式庫,使得可同時存在多個活動程式庫。
從另一態樣看,本發明提供一種資料處理設備,該資料處理設備包含:處理手段,該處理手段用於回應於指令執行資料處理,該處理手段具有操作之複數個域,該等域包括安全域及較不安全域,其中當在安全域中操作時對指令可存取的至少一些資料在較不安全域中操作時不可存取;安全保護硬體手段,該安全保護硬體手段用於回應於較不安全域與安全域之間的處理手段調用而執行第一安全保護操作;以及儲存手段,該儲存手段用於儲存複數個軟體程式庫及程式庫管理軟體以便由處理手段執行;其中:配置程式庫管理軟體,以控制處理手段將複數個軟體程式庫中之至少一者設置為處理手段可執行之活動軟體程式庫,且將至少一個其他軟體程式庫設置為處理手段不可執行之不活動軟體程式庫;以及
回應於處理手段調用目標不活動軟體程式庫,配置程式庫管理軟體以執行活動程式庫切換來控制處理手段將目標不活動軟體程式庫設置為活動軟體程式庫且將先前活動軟體程式庫設置為不活動軟體程式庫。
從另一態樣看,本發明提供一種用於一設備的資料處理之方法,該設備包含:處理電路系統,該處理電路系統具有操作之複數個域,該等域包括安全域及較不安全域,其中當在安全域中操作時對指令可存取的至少一些資料在較不安全域中操作時不可存取;及資料儲存器,該資料儲存器儲存複數個軟體程式庫及程式庫管理軟體以便由處理電路系統執行;該方法包含以下步驟:在程式庫管理軟體之控制下,處理電路系統將複數個軟體程式庫中之至少一者設置為處理電路系統可執行之活動軟體程式庫,且將至少一個其他軟體程式庫設置為處理電路系統不可執行之不活動軟體程式庫;回應於較不安全域與安全域之間的處理電路系統調用,安全保護硬體執行第一安全保護操作;以及回應於處理電路系統調用目標不活動軟體程式庫,程式庫管理軟體執行活動程式庫切換來控制處理電路系統以將目標不活動軟體程式庫設置為活動軟體程式庫且將先前活動軟體程式庫設置為不活動軟體程式庫。
2‧‧‧資料處理設備
4‧‧‧處理電路系統
6‧‧‧資料儲存器
8‧‧‧暫存器
10‧‧‧擷取級
12‧‧‧解碼級
14‧‧‧執行級
20‧‧‧程式計數器暫存器
22‧‧‧鏈接暫存器
24‧‧‧堆疊指標暫存器
26‧‧‧堆疊指標暫存器
30‧‧‧安全堆疊
32‧‧‧較不安全堆疊
39‧‧‧較不安全資料
40‧‧‧安全保護硬體
42‧‧‧安全保護單元
44‧‧‧安全區域
46‧‧‧較不安全區域
47‧‧‧安全程式碼
47-0、47-1、47-N‧‧‧非特權程式碼
47P‧‧‧特權程式碼
48‧‧‧較不安全程式碼
49‧‧‧安全資料
50‧‧‧安全記憶體保護單元/安全MPU
52‧‧‧較不安全MPU
55‧‧‧軟體程式庫
58‧‧‧作業系統
60‧‧‧軟體程式庫/程式碼
61‧‧‧特權程式碼
70‧‧‧邊界
80‧‧‧較不安全域
90‧‧‧安全域
100‧‧‧程式庫
100-0‧‧‧安全程式庫
100-1‧‧‧安全程式庫
105‧‧‧較不安全程式碼
110‧‧‧程式庫管理軟體/程式庫管理器
115‧‧‧較不安全處置器
112‧‧‧程式庫配置資料
120‧‧‧函數調用
130‧‧‧函數調用
140‧‧‧記憶體管理異常
150‧‧‧故障處置器
151‧‧‧保留位址範圍
200‧‧‧步驟
202‧‧‧步驟
204‧‧‧步驟
205‧‧‧步驟
206‧‧‧步驟
208‧‧‧步驟
210‧‧‧步驟
212‧‧‧步驟
214‧‧‧步驟
216‧‧‧步驟
220‧‧‧步驟
230‧‧‧步驟
232‧‧‧步驟
234-1、234-2‧‧‧步驟
235‧‧‧步驟
236‧‧‧步驟
238‧‧‧步驟
240‧‧‧步驟
242‧‧‧步驟
246‧‧‧步驟
248‧‧‧步驟
300‧‧‧返回位址
305‧‧‧堆疊
310‧‧‧虛設位址
312‧‧‧第二虛設位址
315‧‧‧堆疊
320‧‧‧驗證值
340‧‧‧狀態值
400‧‧‧較不安全程式庫
410‧‧‧程式庫管理器
420‧‧‧存取
本發明之上文及其他目標、特徵及優勢將自說明性實施例之以下詳細描述顯而易見,將結合隨附圖式閱讀詳細
描述,在該等圖式中:第1圖圖示具有安全保護硬體的資料處理設備;第2圖圖示用於維護軟體程式庫之間安全的軟體技術;第3圖圖示用於維護軟體程式庫之間安全的硬體技術;第4圖圖示使用軟體分隔安全域中的不同軟體程式庫及使用硬體分離安全域與較不安全域的混合技術;第5圖圖示具有安全區域及較不安全區域之位址空間之實例;第6圖圖示安全域中的不同安全程式庫之間切換之第一實例;第7圖圖示安全域中的不同安全程式庫之間切換之第二實例;第8圖圖示安全保護方法;第9圖圖示回應於記憶體保護故障執行活動程式庫切換之方法;第10圖圖示巢套函數調用之實例;第11圖圖示用於在執行第10圖所示之函數調用時保護函數返回位址的示例性技術;以及第12圖圖示安全域及較不安全域各者具有程式庫管理軟體以用於控制彼域中程式庫之間切換的實例。
第1圖示意地圖示資料處理設備2,該資料處理設
備包含處理電路系統4、資料儲存器6及暫存器8。資料儲存器6可包括至少一個快取記憶體以及記憶體。處理電路系統4包含處理管線,該處理管線包括自資料儲存器6擷取指令的擷取級10、解碼所擷取指令的解碼級12及執行已解碼指令的執行級14。應將瞭解,管線可包括其他級,例如,暫存器重命名級或發佈級。
暫存器8包括若干通用暫存器R0至R12,該等通用暫存器用於代表處理電路系統4儲存資料。儘管第1圖圖示13個通用暫存器R0至R12,但是可提供其他數目暫存器及視情況亦可提供浮點暫存器用於儲存浮點值。暫存器8亦包括一些專用暫存器,該等專用暫存器包括程式計數器(program counter;PC)暫存器20、鏈接暫存器(link register;LR)22及堆疊指標(stack pointer;SP)暫存器24、26。程式計數器暫存器20儲存程式計數器,該程式計數器指示待由處理電路系統4所執行的下一程式指令之位址。大體而言,在執行指令後,程式計數器將被更新以指示來自記憶體的下一指令。然而,回應於控制流動改變指令,可將程式計數器設置為一值,該值不順序跟隨前值。鏈接暫存器22可儲存自函數或異常處返回時所使用的返回值以決定在函數或異常之完成後應處理何種程式指令。堆疊指標暫存器24、26分別儲存安全及較不安全的堆疊指標,該等指標指向資料儲存器6中的安全堆疊30及較不安全堆疊32。舉例而言,堆疊指標可指示放置於堆疊30、32上的最後項目之位置,或可指示放置於堆疊30、32上的資料值應被寫入之下一位置。
提供安全保護硬體40強制執行安全域與較不安全域之間的分離。安全保護硬體具有儲存保護資料的安全保護單元42,該保護資料針對資料儲存器6之各個區域界定該區域是安全區域還是較不安全區域。第1圖圖示資料儲存器6具有一安全區域44及較不安全區域46的實例,但實際上資料儲存器6可包括各個類型之若干區域。藉由安全域中的處理電路系統4執行位於資料儲存器6之安全區域44內的程式碼47,而在較不安全域中執行位於較不安全區域46內的程式碼48。當在較不安全域中時,處理電路系統4不可存取儲存在安全區域44中的資料或指令。安全保護硬體40控制較不安全域與安全域之間的轉換以確保僅接受某些經允許之轉換。
資料處理設備2包含安全記憶體保護單元(memory protection unit;MPU)50及較不安全MPU 52用於界定分別對於資料儲存器6之安全區域44及較不安全區域46的存取許可。存取許可控制安全區域44及較不安全區域46之子區域是為可存取還是不可存取。由安全MPU 50及較不安全MPU 52界定的區域可重疊。舉例而言,安全MPU 50及較不安全MPU 52可界定相同記憶體區域的不同屬性。
第2圖圖示用於維護不同軟體程式庫55之間分離的軟體技術。可藉由不同互相不信任軟體供應商提供不同軟體程式庫55,且因此可需要防止一程式庫55對與另一程式庫55關聯的資料或程式碼之存取。可提供實時作業系統58或信任管理器以管理軟體程式庫55之間的切換。當一程式庫設法
存取與界定為受作業系統58保護的另一程式庫關聯的資料或程式碼時,MPU硬體可檢查此舉是否被允許,且若不允許,則可觸發故障。在此實施例中,不提供第1圖之安全保護硬體40。當切換程式庫時,需要中斷處理電路系統4上的處理,使得可執行作業系統58中的安全處置器。此降低了處理電路系統4之處理效能且因此此技術與硬體技術相比較為緩慢。
另一方面,第3圖圖示用於分離不同域的硬體技術之實例。較不安全域與安全域兩者都可執行非特權程式碼60與特權程式碼61。在此情況中,安全保護硬體40維護較不安全域與安全域之間的邊界70且各個軟體程式庫60具有自己的域。由於藉由硬體控制域之間的轉換之安全,程式庫之間的轉換快速且不一定調用軟體處置器。然而,第3圖之硬體實施例難以維護大量不同互相保護軟體程式庫,因為安全保護單元42中所儲存的資料量變得非常大,且因此實際上此情況限制可支持之不同域的數目。
為了解決該等問題,第4圖圖示混合硬體/軟體技術,該技術使得許多互相不信任軟體程式庫能夠以比第3圖所示之技術更加硬體有效率的方式維護,但是比第2圖所示之途徑具有更大效能。安全保護硬體40提供安全保護用於維護較不安全域80與安全域90之間的邊界70。在安全域中執行多個安全軟體程式庫100,且使用安全MPU 50及亦在安全域中執行的程式庫管理軟體110保護該等安全軟體程式庫100避免相互存取。程式庫管理軟體110管理不同安全程式庫100之間的轉換。程式庫管理軟體110選擇一或更多個程式庫
100作為活動程式庫及選擇其他程式庫作為不活動程式庫。舉例而言,在第4圖中,將安全程式庫0設置為活動程式庫及其他程式庫1至N設置為不活動程式庫。藉由設置安全MPU 50中的MPU許可選擇活動及不活動程式庫,使得對應於活動程式庫的區域為可存取及對應於不活動程式庫的區域為不可存取。藉由程式庫管理軟體100使用程式庫配置資料112以決定當某些程式庫為活動時將存取許可寫入安全MPU 50中。
當函數調用120為自較不安全域80中的軟體(較不安全程式碼105)至活動程式庫時,則安全保護硬體40執行安全檢查操作。由於用硬體執行安全檢查,該安全檢查為快速且可直接對安全程式庫100作出函數調用120而不必藉由處理電路系統4首先執行其他軟體常式。較不安全域也包括較不安全處置器115。
另一方面,若函數調用130為自較不安全域80中的程式碼至安全域90中的不活動程式庫100,則安全MPU 50將觸發記憶體保護故障,因為對應於不活動程式庫的區域當前被設置為不可存取。此故障觸發記憶體管理異常140且此異常調用程式庫管理器110中的故障處置器150,該故障處置器引發切換活動程式庫使得當前被函數調用130作為目標的程式庫(此實例中的程式庫1)變為活動程式庫,而先前的活動程式庫(此實例中的程式庫0)變為不活動。故障處置器150基於程式庫配置資料112切換安全MPU 50之配置,使得將允許對新活動程式庫的後續函數調用及對現為不活動的舊程式庫的函數調用現將觸發故障。又,故障處置器150改變
安全堆疊指標暫存器24中的堆疊指標以指示與新活動程式庫關聯的資料儲存器6中的堆疊,而非指示與先前活動程式庫關聯的堆疊。此舉確保新程式庫可存取與之關聯的堆疊。若新程式庫尚未具有堆疊,則在資料儲存器6之安全區域44中分配堆疊。程式庫管理器110亦可執行一些軟體安全檢查以決定是否許可切換程式庫。與此同時,由於函數調用130越過域邊界70,故又藉由安全保護硬體40以與函數調用120相似的方式提供硬體安全措施。
因此,程式庫管理器110虛擬化在相同硬體安全域中操作的不同安全程式庫100,使得一次僅一些程式庫為活動且防止活動程式庫存取不活動程式庫,使用程式庫管理器110管理對不活動程式庫的調用以確保安全。僅當對不活動程式庫作出調用時才會遇到使用程式庫管理器110改變安全MPU 50配置之額外負擔,且對相同程式庫的後續調用不引發故障140及具有最小額外負擔。此允許支持對應不同軟體程式庫100的幾乎無限數目之保護域。
第5圖圖示資料儲存器6之記憶體位址空間之實例。位址空間具有安全區域44及較不安全區域46。儘管第5圖圖示一個較不安全區域44及一個安全區域46,但可提供更多數目之安全區域及較不安全區域。安全保護單元42(未圖示於第5圖)儲存資料,該資料界定資料儲存器6中的何者區域為安全區域及何者區域為較不安全區域。
安全區域44包括對應於安全軟體程式庫100中的至少一些的一或更多個安全堆疊30。不一定針對所有軟體程式
庫100在位址空間中提供堆疊。實情為,隨著程式庫變為活動,可將堆疊儲存空間分配給程式庫100。安全區域44亦包含對應於軟體程式庫100的非特權程式碼47-0、47-1、...47-N及對應於程式庫管理軟體110的特權程式碼47P。安全區域44也包含安全資料49。安全MPU 50(未圖示在第5圖中)控制程式碼及資料之何者為非特權或特權。
相似地,較不安全區域46包括在較不安全域80中執行的較不安全程式碼48(包括特權及非特權程式碼)、由較不安全程式碼48所使用的較不安全堆疊32及較不安全資料39。較不安全MPU 52(未圖示在第5圖中)控制較不安全區域46中的資料或程式碼是否為特權或非特權。通常,非特權程式碼不可存取特權資料或程式碼。
記憶體位址空間亦包括保留位址範圍151,該保留位址範圍不對應於任何有效指令位址。此保留範圍可用於特殊函數,諸如虛設返回位址,如下文應將描述。舉例而言,保留位址範圍151可包含範圍自0xF0000000至0xFFFFFFFF中的位址。
當越過較不安全域80與安全域90之間的邊界70時,安全保護硬體40執行安全保護操作,該等操作可包括以下操作中之至少一者:
‧在自較不安全域80分支至安全域90後,若分支目標位址處的指令不含有表示進入安全程式碼的有效入口點之防護指令,則安全保護硬體40可產生故障。此舉防止較不安全程式碼試圖分支至安全函數中間的情況下的攻擊,該等攻擊可為
危險的,因為可允許在函數中較早執行之安全檢查(例如,密碼檢查)被避開,從而允許在沒有適當安全授權情況下實施安全操作。
‧當藉由安全域90中的程式庫執行分支並引發轉換至較不安全域時,又自動推動返回位址至與彼程式庫100關聯的堆疊及在鏈接暫存器22中放置來自保留位址範圍151中的保留虛設值。當後續函數返回分支至虛設值時,又藉由安全保護硬體40偵測此情況,從而自安全程式庫100之堆疊擷取實際返回位址。此操作防止安全位址對非安全程式碼可存取。下文相對於第11圖更詳細地描述此操作。
‧當自較不安全域80調用安全函數時,可藉由安全保護硬體40修改由公用程式碼所提供的函數返回位址以指示當自函數返回時處理將返回至較不安全域80。舉例而言,可在返回位址中設置目標域位元以指示函數返回應返回至較不安全域80。當實施函數返回時,可檢查函數返回位址是否實際上對應於自藉由所設目標域位元指示之域可調用的一位置,且若不對應,則可觸發故障。此舉防止駭客修改藉由較不安全域80所傳遞的函數返回位址以試圖觸發自安全域至其他安全程式碼之不受控轉換情況下的攻擊。此可為危險的,因為安全至安全分支通常將不由安全保護硬體40管控。藉由在實施函數返回前衛生處理自較不安全域傳遞的函數返回位址,可防止此類攻擊。
因此,硬體40可採取各種安全措施。然而,當在安全域90內的安全程式庫100之間切換時提供相同的保護亦可
為理想的,如同在獨立硬體保護域中實施該等程式庫。第6圖及第7圖圖示實現此保護的不同技術。
在第6圖中,自第一安全程式庫0至第二安全程式庫1的函數調用引發切換至較不安全域80,然後切換回安全域90中的第二安全程式庫1。藉由臨時切換至較不安全域80,對第二安全程式庫的調用呈現給硬體40如同自較不安全域80切換至安全域90,且因此藉由安全保護硬體40以與在較不安全程式碼調用第二安全程式庫1情況下會發生之相同的方式執行上文所描述之硬體保護措施。程式庫管理器100檢查並確保調用經由較不安全域發出,但是卻不需要執行由硬體40所執行的安全措施。觸發臨時切換域的一種方式為將上文所論述之目標域設置在函數調用之目標位址中以指示較不安全域80,而實際目標位址對應於安全域90中的一位置,該位置對應於安全程式庫1。
然而,當切換至較不安全域80時,正在兩個安全程式庫之間傳遞的任何運算元可對較不安全程式碼可見。當處理器處於較不安全域80中時,攻擊者可能夠觸發中斷以獲得對正經由堆疊或經由暫存器傳遞的任何運算元的存取。對於一些應用程式,此可能無關緊要。對於一些軟體應用程式,軟體供應商可需要程式庫100之間的安全保護來阻止競爭者複製該供應商之軟體程式碼,而非保護對資料的存取。對於此類應用程式,第6圖所示之技術可為可接受的且在較不安全域中是否可存取由安全程式庫所處理的資料可能無關緊要。
然而,對於其他應用程式(例如,銀行),資料本身可為敏感且應防止較不安全域存取正在安全程式庫之間傳遞的運算元。對於此類應用程式,不同安全程式庫100之間的函數調用可全部發生在安全域中,如第7圖所示,且程式庫管理器110可執行安全保護函數,該安全保護函數正常情況下本將由安全保護硬體40執行。因此,程式庫之間的轉換具有與較不安全域與安全域之間的轉換相同的保護,而不調用硬體。儘管用軟體執行安全措施比使用硬體更慢,但是此方法維護程式庫之間所傳遞的任何運算元之安全。
對於一些系統,可支持第6圖及第7圖中所示之技術兩者。對於安全程式庫之間的給定函數調用,程式庫管理器110可偵測到調用是否經由較不安全域80發出。若是,則可假定硬體將執行安全保護操作。若調用並非經由較不安全域80發出,則程式庫管理器110執行安全保護操作。在其他實施例中,可支持第6圖及第7圖中所示之技術中的僅一者或另一者。
當執行函數調用時,習知系統通常使用通用暫存器8傳遞引數。若通用暫存器中沒有足夠空間,則堆疊可用於傳遞過量引數。然而,當一安全程式庫100調用另一安全程式庫100(如第6圖及第7圖所示)時,不可使用此途徑,因為各別程式庫100在資料儲存器6中具有自己的堆疊30,其他程式庫100不可存取該等堆疊。若函數引數不敏感,則可藉由將引數儲存至較不安全堆疊32在程式庫100之間傳遞該等引數,該較不安全堆疊可藉由安全域90中的任何安全程式庫
100存取。另一方面,若在程式庫之間傳遞敏感資料,則諸如由程式庫管理軟體110所提供的郵箱之軟體方法可用於確保引數之安全。
第8圖圖示使用硬體40及安全MPU 50與較不安全MPU 52執行安全檢查之方法。在步驟200處,發生分支操作以將程式流改變為目標位址處的指令。在步驟202處,安全保護單元42及安全保護硬體40決定是否存在存取違規。若操作之當前域為較不安全域,目標位址處於安全區域44中,及目標位址處的指令並非防護指令,則偵測到存取違規。若偵測到存取違規,則在步驟204處硬體40觸發安全故障。在步驟205處,硬體40偵測分支是否越過較不安全域80與安全域90之間的邊界70。若是,則在步驟206處安全保護硬體40執行上文所描述之硬體安全保護操作。若否,則忽略步驟206。
在步驟208處,決定分支目標位址是否處於安全域90中或較不安全域80中(基於資料儲存器6之區域44、46之何者包括目標位址)。若目標位址處於安全域90中,則在步驟210處安全MPU 50為活動且檢查對包括目標位址在內的子區域的存取許可,來偵測是否存在安全MPU 50存取違規。可發生違規,因為分支將引至不活動程式庫,或因為非特權程式碼正設法存取特權區域。若存在安全MPU 50存取違規,則在步驟212處觸發安全記憶體管理異常。另一方面,若目標位址處於較不安全域80中,則在步驟214處較不安全MPU 52為活動且決定是否已存在存取違規,及若是,則在步驟216
處觸發較不安全記憶體管理異常。若未偵測到存取違規,則在步驟220處實施與分支指令關聯的存取且處理繼續。
亦可針對指定目標位址的資料存取,執行與第8圖所示方法相似的方法。然而,對於資料存取,步驟208將偵測當前正操作處理電路系統4的域(而非與目標位址關聯的域),且在步驟210或步驟214處又將使用對應於當前域的MPU。
第9圖圖示處置第8圖之步驟212及步驟216處觸發的記憶體管理異常之方法。在第4圖之實例中,程式庫管理器110管理安全域中的多個安全軟體程式庫100且在較不安全域中不使用此技術。在此情況中,將僅在步驟212處且非步驟216處執行第9圖之方法。然而,如下文相對於第12圖所描述,可能在較不安全域80中提供相似程式庫管理器,在此情況中亦可針對步驟216執行第9圖之方法。
在步驟230處,程式庫管理器110查找程式庫配置資料112,及在步驟232處,程式庫管理器使用程式庫配置資料112決定是否存在活動程式庫之變化。此可以各種方式實行。舉例而言,可對比程式庫配置資料112檢查目標位址,該等程式庫配置資料界定MPU區域之何者對應於各個程式庫。然而,此可耗費一些時間。更快速途徑將為重新結構化程式庫程式碼,使得至程式庫的所有有效入口點位於稱為「蹦床(trampoline)」區域的記憶體之小固定尺寸區域內,自該區域可產生後續分支至需要執行的程式碼之區域。藉由約束可產生分支至不活動程式庫的蹦床區域,需要檢查較少配置資
料,且因此較快速地偵測到程式庫之何者對應於給定存取。舉例而言,若與各個程式庫100關聯的蹦床區域具有固定尺寸及在位址空間中相互鄰近,則可使用以下公式快速計算程式庫識別符:(分支目標位址-程式庫0蹦床面積的基底位址)/(蹦床面積尺寸)
即便蹦床面積並非全部相同尺寸,但是為固定尺寸之倍數,此公式之結果可用於索引至較小表格中以獲得實際程式庫識別符。因此,存在程式庫管理器110可決定程式庫之何者對應於目標位址的各種方式。
若目標位址不對應於程式庫232之變化,則在步驟234-1處執行故障處置以處置212或216處所觸發的記憶體保護故障。可使用處置記憶體保護故障的任何已知技術。舉例而言,可中斷處理以防止非特權程式碼對特權資料的存取。
另一方面,若在步驟232處決定已由不活動程式庫的變化引發記憶體管理器異常,則此情況不像其他記憶體保護故障那樣危險且可藉由程式庫管理器110處置。在步驟234-2處,程式庫管理器110切換MPU 50之存取許可,使得對應於先前活動程式庫的區域變為不可存取及對應於新活動程式庫的區域變為可存取。此後,對舊程式庫的存取將觸發記憶體保護故障,而對新目標程式庫的存取將不觸發記憶體保護故障。當特定程式庫變為活動時,程式庫配置資料112界定何者區域應將設置為可存取或不可存取。
在步驟235處,程式庫管理器110將先前活動程式
庫之堆疊指標儲存至程式庫配置資料112,該堆疊指標當前儲存於堆疊指標暫存器24中。自啟動彼程式庫後,堆疊指標可已改變,且因此先前保存在程式庫配置資料112中的堆疊指標可已過期。藉由針對程式庫配置資料112中的先前活動程式庫更新堆疊指標,當稍後又啟動彼程式庫時,可能決定對應堆疊之位置。
在步驟236處,程式庫管理器110決定是否已為新活動程式庫分配堆疊30。若否,則在步驟238處在資料儲存器6中為新活動程式庫分配堆疊,而若已分配堆疊,則忽略步驟238。在步驟240處,程式庫管理器110將對應於新活動程式庫的堆疊之堆疊指標恢復至堆疊指標暫存器24。從程式庫配置資料112處獲得新堆疊指標。
在步驟242處,程式庫管理器110決定安全保護硬體40是否已在步驟206處執行安全保護。若分支越過較不安全域與安全域之間的邊界70,則為此情況。若硬體40已執行安全保護操作,則在步驟246處記憶體管理異常返回及繼續處理程式庫。若硬體40尚未執行安全保護操作,則在步驟248處藉由程式庫管理器110用軟體執行該等操作,然後在步驟246處自異常返回。不管硬體是否已執行第一安全保護操作,程式庫管理器110亦可執行第二安全保護操作。舉例而言,僅可允許某些程式庫對特定程式庫作出函數調用,且可防止來自其他程式庫中的函數調用繼續。
第10圖圖示較不安全程式碼105與兩個安全程式庫100-0、100-1之間的巢套函數調用之實例。自安全程式庫100-0
至較不安全程式碼105作出第一函數調用(調用1)。又自較不安全程式碼105至安全程式庫100-1發生第二函數調用(調用2)。在函數自第二函數調用返回(返回2)後,將安全程式庫100-1作為目標又發生第三函數調用(調用3)。在自第三函數調用返回(返回3)後,處理又自較不安全程式碼105返回(返回1)至作出第一函數調用(調用1)的安全程式庫100-0。
如上文所論述,安全保護硬體40可隱藏調用1之返回位址以防止較不安全程式碼105存取返回位址。藉由將調用1之函數返回位址儲存至與安全程式庫100-0關聯的堆疊及將虛設返回位址儲存至鏈接暫存器22以在執行函數返回返回1時觸發硬體40自堆疊獲得真實函數返回位址可實現此隱藏。然而,當對安全程式庫100-1作出調用2時,則程式庫之切換意謂禁用程式庫100-0,且因此當較不安全程式碼105執行函數返回返回1時,函數返回位址不再為可存取。
為了解決此問題,可如第11圖所示處置返回位址。在調用1後,在與安全程式庫100-0關聯的堆疊305上放置實際返回位址300,而在鏈接暫存器22中放置不對應於有效指令位址的虛設位址310。此意謂處理第一函數調用的較不安全程式碼105僅可看見虛設位址其而不可看見安全返回位址300。
當自較不安全程式碼105至安全程式庫100-1作出調用2時,在鏈接暫存器22中儲存調用2之返回位址(在自較不安全程式碼105作出調用2時,不一定遮住返回位址及
可將實際返回位址儲存至鏈接暫存器22)。調用2又引發程式庫管理器100執行程式庫之切換及將驗證值320儲存至與包括返回位址300之程式庫100-0關聯的堆疊305之堆疊蹦床。驗證值包含現正經啟動之程式庫100-1之識別符。在自程式庫100-0至程式庫100-1切換活動程式庫及切換安全堆疊指標暫存器24中的堆疊指標的同時,程式庫管理器在與安全程式庫100-1關聯的堆疊315上放置第二虛設位址312。程式庫管理器110使用與由硬體儲存至鏈接暫存器22的虛設位址310不同的虛設位址312以指示在自調用1返回時,將需要活動程式庫之切換。程式庫管理器110亦將狀態值340儲存至程式庫100-1之堆疊315。狀態值340指示先前活動程式庫100-0,且因此當處理返回1時再啟動程式庫。
在自調用2返回(函數返回返回2)時,處理分支至儲存於鏈接暫存器22中的位址。用與調用2及返回2相同的方式處置調用3及對應函數返回返回3,不同之處在於現在安全程式庫1為活動且未產生異常及未遭遇與程式庫管理器關聯的額外負擔。
在返回3後,對應於原始函數調用調用1,函數返回返回1發生。較不安全程式碼105分支至原始虛設值310,該原始虛設值在作出調用1時放置於鏈接暫存器中。硬體偵測到至保留位址的此分支及自當前活動安全堆疊315擷取返回位址。由於所擷取之位址實際上為由程式庫管理軟體110先前放置於堆疊上的保留不可執行虛設位址312,由硬體產生記憶體管理異常。程式庫管理軟體110處置此異常及決定需
要執行活動程式庫切換。程式庫管理軟體110自狀態資訊340偵測到程式庫100-0應變為活動及程式庫100-1現應變為不活動。程式庫管理軟體110檢查儲存於程式庫100-0之堆疊305上的驗證資訊320以確保驗證資訊320指示程式庫100-1係將變為不活動的程式庫及尚未修改狀態資訊340。另一方面,若處於與程式庫100-1關聯的堆疊315上的同時已修改狀態值340,則不同程式庫將指示為需要再啟動,該程式庫的堆疊將在返回位址堆疊框架中不含有驗證值320,且程式庫管理軟體110偵測到缺少正確驗證值320,從而觸發故障。
因此,狀態值340及驗證值320使得程式庫管理器110能夠決定在所調用函數後程式庫之何者切換回來及驗證已正確實施此操作。因此,即使當活動程式庫之切換發生時,仍可能使用堆疊防止較不安全程式碼105存取安全返回位址。
一旦已驗證狀態資訊340之完整性,程式庫管理器軟體110可引發處理在程式庫0之堆疊305上所指定的返回位址300處繼續進行。
儘管第4圖圖示程式庫管理器110強制執行安全域90中若干安全軟體程式庫100之間的保護之實例,但是亦可能針對較不安全域80中的程式庫使用此技術。第12圖圖示提供與安全程式庫管理器110相似的較不安全程式庫管理器410之實例。安全程式庫管理器110選擇活動安全程式庫100及一或更多個不活動安全程式庫100,且較不安全程式庫管理器410選擇活動較不安全程式庫400及一或更多個不活動較不安全程式庫400。對域80、90任一者中的不活動程式庫之
存取420觸發對應程式庫管理器110、410執行程式庫切換。當存取420越過域邊界70時,藉由安全保護硬體40執行安全保護操作。當在相同域中的程式庫之間切換時,可藉由臨時切換域調用硬體40,或對應程式庫管理器110、410可執行對應安全保護操作,如第6圖及第7圖所示。以此方式,在幾乎沒有硬體額外負擔情況下,在較不安全域80及安全域90兩者中可保護大量軟體程式庫避免相互存取。
在共同讓渡之英國專利申請案第1220769.2號及第1217531.1號及美國專利申請案第13/368,419號、第13/680,298號及第13/741,709號中描述可藉由安全保護硬體40執行之安全保護操作之額外實例,上述申請案之內容以引用之方式併入本文。
儘管本文已參看隨附圖式詳細描述本發明之說明性實施例,但是應將理解,本發明不受限於彼等精確實施例,且各種變化及修改可在不脫離申請專利範圍所界定之本發明之範疇及精神的情況下由熟習此項技術者實現。
Claims (23)
- 一種資料處理設備,該資料處理設備包含:處理電路系統,該處理電路系統用於回應於指令執行資料處理,該處理電路系統具有操作之複數個域,該等域包括一安全域及一較不安全域,其中當在該安全域中操作時對該等指令可存取的至少一些資料在該較不安全域中操作時不可存取;安全保護硬體,該安全保護硬體經配置以回應於該較不安全域與該安全域之間的該處理電路系統調用執行一第一安全保護操作;以及一資料儲存器,該資料儲存器經配置以儲存複數個軟體程式庫及程式庫管理軟體以便由該處理電路系統執行;其中:配置該程式庫管理軟體,以控制該處理電路系統將該等複數個軟體程式庫中之至少一者設置為該處理電路系統可執行之一活動軟體程式庫,且將至少一個其他軟體程式庫設置為該處理電路系統不可執行之一不活動軟體程式庫;以及回應於該處理電路系統調用一目標不活動軟體程式庫,配置該程式庫管理軟體以執行活動程式庫切換來控制該處理電路系統將該目標不活動軟體程式庫設置為一活動軟體程式庫且將一先前活動軟體程式庫設置為一不活動軟體程式庫。
- 如請求項1所述之資料處理設備,其中該等複數個軟體程式庫包含用於在該安全域中執行的複數個安全軟體程式庫。
- 如請求項1及2中任一項所述之資料處理設備,其中回應於該處理電路系統調用該目標不活動軟體程式庫,配置該程式庫管理軟體以控制該處理電路系統執行一第二安全保護操作,且若該第二安全保護操作成功,則執行該活動程式庫切換。
- 如請求項1所述之資料處理設備,該資料處理設備包含一記憶體保護單元,該記憶體保護單元經配置以儲存存取許可,該等存取許可指示該資料儲存器之區域是為可存取還是不可存取,其中配置該記憶體保護單元以回應於對一不可存取區域的一指令擷取或一記憶體存取觸發一故障狀況;其中該活動程式庫切換包含控制該處理電路系統以設置該記憶體保護單元之該等存取許可來指示對應於該目標不活動軟體程式庫的該資料儲存器之至少一個區域為可存取,及指示對應於該先前活動軟體程式庫的該資料儲存器之至少一個區域為不可存取。
- 如請求項4所述之資料處理設備,其中回應於該處理電路系統調用該目標不活動軟體程式庫,配置該記憶體保護單元以自該等存取許可偵測對應於該目標不活動軟體程式庫的一區域為不可存取,及以觸發一異常,該異常引發該程式庫管理軟體執行該活動程式庫切換。
- 如請求項1所述之資料處理設備,其中配置該資料儲存器以儲存一堆疊用於該等複數個軟體程式庫中的至少一些軟體程式庫;以及該資料處理設備包含一堆疊指標儲存位置,該堆疊指標儲存位置經配置以儲存一堆疊指標,該堆疊指標對應於該活動軟體程式庫的該堆疊。
- 如請求項6所述之資料處理設備,其中該活動程式庫切換包含控制該處理電路系統更新該堆疊指標儲存位置以儲存一堆疊指標,該堆疊指標對應於該目標不活動軟體程式庫的該堆疊。
- 如請求項6所述之資料處理設備,其中若該資料儲存器尚未儲存該目標不活動軟體程式庫的一堆疊,則該活動程式庫切換包含在該資料儲存器中為該目標不活動軟體程式庫分配一堆疊。
- 如請求項1所述之資料處理設備,其中該安全保護硬體包含一安全保護單元,該安全保護單元經配置以儲存安全資料,該等安全資料界定與該安全域關聯的該資料儲存器之至少一個安全區域及與該較不安全域關聯的該資料儲存器之至少一個較不安全區域;以及 配置該處理電路系統以依據正經處理之該指令是處於該資料儲存器之一安全區域中還是一較不安全區域中選擇是在該安全域中還是在該較不安全域中操作。
- 如請求項1所述之資料處理設備,其中該第一安全保護操作包含以下操作中之至少一者:(i)檢查待在程式流之一受保護變化後執行的一第一指令是否為針對程式流之該變化的一經允許之目標指令;(ii)回應於觸發一函數之處理的一受保護函數調用,防止該函數之指令存取一函數返回位址,該函數返回位址識別待在已處理該函數後處理之該指令;以及(iii)回應於程式流之一受保護變化,檢查處理被切換到的該安全域及該較不安全域之該一者是否為針對程式流之該變化所指定的一經允許之域。
- 如請求項1所述之資料處理設備,其中回應於該處理電路系統自在該安全域及該較不安全域中之一者中所執行的該活動軟體程式庫之一指令切換至待在該安全域及該較不安全域中之該一者中執行的該目標不活動軟體程式庫之一指令,配置該處理電路系統以臨時切換至該安全域及該較不安全域中之另一者,隨後切換至該安全域及該較不安全域中之該一者中的該目標不活動軟體程式庫之該指令。
- 如請求項1所述之資料處理設備,其中回應於該處理電路系統自在該安全域及該較不安全域中之一者中所執行的該活動軟體程式庫之一指令切換至待在該安全域及該較不安全域中之該一者中執行的該目標不活動軟體程式庫之一指令,配置該處理電路系統以保持在該安全域及該較不安全域之該一者中且配置該程式庫管理軟體以控制該處理電路系統執行該第一安全保護操作。
- 如請求項1所述之資料處理設備,其中回應於該活動軟體程式庫作出一受保護函數調用以便調用待由其他軟體處理的一函數,該第一安全保護操作包含將該函數之一函數返回位址儲存至與該活動軟體程式庫關聯的一堆疊。
- 如請求項13所述之資料處理設備,其中回應於該受保護函數調用,該第一安全保護操作包含將一虛設函數返回位址儲存至一鏈接暫存器,該虛設函數返回位址包含不對應於一有效指令位址的一位址;以及回應於至該虛設函數返回位址的一函數返回,配置該安全保護硬體以自與該活動軟體程式庫關聯的該堆疊讀取該函數返回位址及觸發至該函數返回位址的一函數返回。
- 如請求項1所述之資料處理設備,其中在自該活動軟體程式庫已作出一受保護函數調用後執行活動程式庫切換至另 一軟體程式庫時,配置該程式庫管理軟體以控制該處理電路系統設置資訊以指示已存在活動程式庫之一切換;以及在對應於該受保護函數調用的一函數返回時,若該資訊經設置為指示已存在活動程式庫之一切換,則配置該程式庫管理軟體以執行該活動程式庫切換回到作出該受保護函數調用的該活動軟體程式庫。
- 如請求項15所述之資料處理設備,其中該資訊包含一無效返回位址,該無效返回位址不對應於一有效指令位址;以及配置該程式庫管理軟體以回應於由至該無效返回位址的一函數返回觸發的一異常,執行該活動程式庫切換回到作出該受保護函數調用的該活動軟體程式庫。
- 如請求項15所述之資料處理設備,其中將該資訊儲存至另一軟體程式庫之一堆疊。
- 如請求項13所述之資料處理設備,其中回應於該受保護函數調用,配置該程式庫管理軟體以控制該處理電路系統維護狀態資訊,該狀態資訊指示該等複數個軟體程式庫中之何者作出該受保護函數調用。
- 如請求項18所述之資料處理設備,其中若在該函數之該處理完成後作出該受保護函數調用的該軟體程式庫為一不活 動軟體程式庫,則配置該程式庫管理軟體以執行該活動程式庫切換來控制該處理電路系統將該狀態資訊指示已作出該受保護函數調用的該軟體程式庫設置為該活動軟體程式庫。
- 如請求項18所述之資料處理設備,其中在該受保護函數調用後及在對應於該受保護函數調用的一函數返回前,執行活動程式庫切換至另一軟體程式庫時,配置該程式庫管理軟體以控制該處理電路系統將該狀態資訊儲存至與該另一軟體程式庫關聯的一堆疊。
- 如請求項18所述之資料處理設備,其中回應於該受保護函數調用,配置該程式庫管理軟體以控制該處理電路系統將驗證資訊儲存至與該活動軟體程式庫關聯的該堆疊;以及在該函數之該處理完成後,配置該程式庫管理軟體以控制該處理電路系統檢查該驗證資訊以偵測是否已修改該狀態資訊。
- 一種資料處理設備,該資料處理設備包含:處理手段,該處理手段用於回應於指令執行資料處理,該處理手段具有操作之複數個域,該等域包括一安全域及一較不安全域,其中當在該安全域中操作時對該等指令可存取的至少一些資料在該較不安全域中操作時不可存取; 安全保護硬體手段,該安全保護硬體手段用於回應於該較不安全域與該安全域之間的該處理手段調用執行一第一安全保護操作;以及儲存手段,該儲存手段用於儲存複數個軟體程式庫及程式庫管理軟體以便由該處理手段執行;其中:配置該程式庫管理軟體,以控制該處理手段將該等複數個軟體程式庫中之至少一者設置為該處理手段可執行之一活動軟體程式庫,且將至少一個其他軟體程式庫設置為該處理手段不可執行之一不活動軟體程式庫;以及回應於該處理手段調用一目標不活動軟體程式庫,配置該程式庫管理軟體以執行活動程式庫切換來控制該處理手段將該目標不活動軟體程式庫設置為一活動軟體程式庫且將一先前活動軟體程式庫設置為一不活動軟體程式庫。
- 一種用於一設備資料處理之方法,該設備包含:處理電路系統,該處理電路系統具有操作之複數個域,該等域包括一安全域及一較不安全域,其中當在該安全域中操作時對該等指令可存取的至少一些資料在該較不安全域中操作時不可存取,及一資料儲存器,該資料儲存器儲存複數個軟體程式庫及程式庫管理軟體以便由該處理電路系統執行;該方法包含以下步驟:在該程式庫管理軟體之控制下,該處理電路系統將該等複數個軟體程式庫中之至少一者設置為該處理電路系統可執 行之一活動軟體程式庫,且將至少一個其他軟體程式庫設置為該處理電路系統不可執行之一不活動軟體程式庫;回應於該較不安全域與該安全域之間的該處理電路系統調用,安全保護硬體執行一第一安全保護操作;以及回應於該處理電路系統調用一目標不活動軟體程式庫,該程式庫管理軟體執行活動程式庫切換以控制該處理電路系統將該目標不活動軟體程式庫設置為該活動軟體程式庫且將一先前活動軟體程式庫設置為該不活動軟體程式庫。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
??1310421.1 | 2013-06-12 | ||
GB1310421.1A GB2515047B (en) | 2013-06-12 | 2013-06-12 | Security protection of software libraries in a data processing apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201447754A TW201447754A (zh) | 2014-12-16 |
TWI667611B true TWI667611B (zh) | 2019-08-01 |
Family
ID=48876120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103117164A TWI667611B (zh) | 2013-06-12 | 2014-05-15 | 資料處理設備及用於其之方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9251378B2 (zh) |
KR (1) | KR102192835B1 (zh) |
CN (1) | CN105264540B (zh) |
GB (1) | GB2515047B (zh) |
TW (1) | TWI667611B (zh) |
WO (1) | WO2014199118A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9268970B2 (en) | 2014-03-20 | 2016-02-23 | Analog Devices, Inc. | System and method for security-aware master |
CN105046116B (zh) * | 2015-06-25 | 2018-07-31 | 上海斐讯数据通信技术有限公司 | Android系统中保护dex文件不被反编译的方法 |
GB2540388B (en) | 2015-07-15 | 2019-01-23 | Advanced Risc Mach Ltd | Secure mode state data access tracking |
GB2552966B (en) * | 2016-08-15 | 2019-12-11 | Arm Ip Ltd | Methods and apparatus for protecting domains of a device from unauthorised accesses |
GB2563881B (en) * | 2017-06-28 | 2019-12-25 | Advanced Risc Mach Ltd | Realm execution context masking and saving |
US10567359B2 (en) | 2017-07-18 | 2020-02-18 | International Business Machines Corporation | Cluster of secure execution platforms |
EP3547122B1 (en) * | 2018-03-27 | 2023-06-07 | CODESYS Holding GmbH | A method and system for replacing a software component of a runtime system |
US11461461B2 (en) * | 2018-07-17 | 2022-10-04 | Mergebase Software Inc. | Systems and methods for managing and securing computer systems |
GB2577878B (en) * | 2018-10-08 | 2020-11-11 | Advanced Risc Mach Ltd | Transition disable indicator |
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 (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020051536A1 (en) * | 2000-10-31 | 2002-05-02 | Kabushiki Kaisha Toshiba | Microprocessor with program and data protection function under multi-task environment |
US20040170046A1 (en) * | 2002-11-18 | 2004-09-02 | Arm Limited | Technique for accessing memory in a data processing apparatus |
US20070283146A1 (en) * | 2006-06-06 | 2007-12-06 | Cedric Gaston Christian Neveux | Enhanced Exception Handling |
US20080196081A1 (en) * | 2006-10-08 | 2008-08-14 | International Business Machines Corporation | Switching between unsecure system software and secure system software |
CN101477612A (zh) * | 2008-01-02 | 2009-07-08 | Arm有限公司 | 保护从中央处理器发送的以供处理的安全数据的安全性 |
TW200939122A (en) * | 2008-02-20 | 2009-09-16 | Advanced Risc Mach Ltd | Non-native program execution across multiple execution environments |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6317742B1 (en) * | 1997-01-09 | 2001-11-13 | Sun Microsystems, Inc. | Method and apparatus for controlling software access to system resources |
US6282657B1 (en) * | 1997-09-16 | 2001-08-28 | Safenet, Inc. | Kernel mode protection |
US7082615B1 (en) * | 2000-03-31 | 2006-07-25 | Intel Corporation | Protecting software environment in isolated execution |
US6789200B1 (en) * | 2000-05-18 | 2004-09-07 | International Business Machines Corporation | Method of automatically instituting secure, safe libraries and functions when exposing a system to potential system attacks |
GB0226875D0 (en) * | 2002-11-18 | 2002-12-24 | Advanced Risc Mach Ltd | Control of access to a memory by a device |
EP1688816A4 (en) * | 2003-11-28 | 2012-04-25 | Panasonic Corp | DATA PROCESSING DEVICE |
US7735136B2 (en) * | 2005-04-18 | 2010-06-08 | Vmware, Inc. | 0-touch and 1-touch techniques for improving the availability of computer programs under protection without compromising security |
US7962746B2 (en) * | 2005-06-01 | 2011-06-14 | Panasonic Corporation | Computer system and program creating device |
GB2447154B (en) * | 2005-10-04 | 2009-05-27 | Nec Corp | Information processing device, information processing method, and program |
US9158941B2 (en) * | 2006-03-16 | 2015-10-13 | Arm Limited | Managing access to content in a data processing apparatus |
GB2460393B (en) * | 2008-02-29 | 2012-03-28 | Advanced Risc Mach Ltd | A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry |
US9411634B2 (en) * | 2010-06-21 | 2016-08-09 | Microsoft Technology Licensing, Llc | Action framework in software transactional memory |
-
2013
- 2013-06-12 GB GB1310421.1A patent/GB2515047B/en active Active
-
2014
- 2014-03-13 WO PCT/GB2014/050747 patent/WO2014199118A1/en active Application Filing
- 2014-03-13 KR KR1020157035730A patent/KR102192835B1/ko active IP Right Grant
- 2014-03-13 CN CN201480031833.2A patent/CN105264540B/zh active Active
- 2014-03-20 US US14/220,499 patent/US9251378B2/en active Active
- 2014-05-15 TW TW103117164A patent/TWI667611B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020051536A1 (en) * | 2000-10-31 | 2002-05-02 | Kabushiki Kaisha Toshiba | Microprocessor with program and data protection function under multi-task environment |
US20040170046A1 (en) * | 2002-11-18 | 2004-09-02 | Arm Limited | Technique for accessing memory in a data processing apparatus |
US20070283146A1 (en) * | 2006-06-06 | 2007-12-06 | Cedric Gaston Christian Neveux | Enhanced Exception Handling |
US20080196081A1 (en) * | 2006-10-08 | 2008-08-14 | International Business Machines Corporation | Switching between unsecure system software and secure system software |
CN101477612A (zh) * | 2008-01-02 | 2009-07-08 | Arm有限公司 | 保护从中央处理器发送的以供处理的安全数据的安全性 |
TW200939122A (en) * | 2008-02-20 | 2009-09-16 | Advanced Risc Mach Ltd | Non-native program execution across multiple execution environments |
Also Published As
Publication number | Publication date |
---|---|
GB2515047A (en) | 2014-12-17 |
GB2515047B (en) | 2021-02-10 |
TW201447754A (zh) | 2014-12-16 |
US20140373171A1 (en) | 2014-12-18 |
US9251378B2 (en) | 2016-02-02 |
KR20160019454A (ko) | 2016-02-19 |
CN105264540A (zh) | 2016-01-20 |
GB201310421D0 (en) | 2013-07-24 |
KR102192835B1 (ko) | 2020-12-18 |
CN105264540B (zh) | 2019-05-03 |
WO2014199118A1 (en) | 2014-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI667611B (zh) | 資料處理設備及用於其之方法 | |
Shi et al. | Deconstructing Xen. | |
CN104809401B (zh) | 一种操作系统内核完整性保护方法 | |
EP2973194B1 (en) | Linear address mapping protection | |
US20210124824A1 (en) | Securing secret data embedded in code against compromised interrupt and exception handlers | |
US10140448B2 (en) | Systems and methods of asynchronous analysis of event notifications for computer security applications | |
JP7432586B2 (ja) | スタック・ポインタを検証すること | |
US20220366037A1 (en) | Domain transition disable configuration parameter | |
KR102547479B1 (ko) | 명령 세트의 변경을 제어하는 장치 및 방법 | |
EP4073635B1 (en) | Intermodal calling branch instruction | |
US10019576B1 (en) | Security control system for protection of multi-core processors | |
KR20220127325A (ko) | 메모리 맵핑된 제어 레지스터들의 세트에 대한 액세스를 제어하기 위한 장치 및 방법 |