鬼佬大哥大
  • / 29
  • 下載費用:30 金幣  

數據處理設備中的軟件庫的安全保護.pdf

摘要
申請專利號:

CN201480031833.2

申請日:

2014.03.13

公開號:

CN105264540A

公開日:

2016.01.20

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 21/74申請日:20140313|||公開
IPC分類號: G06F21/74 主分類號: G06F21/74
申請人: ARM有限公司
發明人: 托馬斯·克里斯托弗·喬洛卡特
地址: 英國劍橋
優先權: 1310421.1 2013.06.12 GB
專利代理機構: 北京東方億思知識產權代理有限責任公司11258 代理人: 李曉冬
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201480031833.2

授權公告號:

||||||

法律狀態公告日:

2019.05.03|||2016.07.06|||2016.01.20

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

處理設備(2)具有安全域(90)和較不安全域(80)。當處理電路(2)在域之間調用時,安全保護硬件(40)執行安全檢查操作。數據存儲裝置(6)存儲若干軟件庫(100)和庫管理軟件(110)。庫管理軟件(110)選擇庫(100)中的至少一者作為處理電路(4)可執行的活動庫并且選擇至少一個其他庫(100)作為不可執行的不活動庫。響應于對不活動庫的訪問,庫管理軟件(110)切換哪個庫為活動的。

權利要求書

1.一種數據處理設備,包括:
處理電路,所述處理電路用于響應于指令而執行數據處理,所述處理
電路具有多個操作域,所述多個操作域包括安全域和較不安全域,其中當
在所述安全域中操作時對所述指令可訪問的至少一些數據當在所述較不安
全域中操作時不可訪問;
安全保護硬件,所述安全保護硬件被配置為響應于所述較不安全域和
所述安全域之間的處理電路調用而執行第一安全保護操作;以及
數據存儲裝置,所述數據存儲裝置被配置為存儲多個軟件庫和庫管理
軟件,以供所述處理電路執行;其中:
所述庫管理軟件被配置為控制所述處理電路將所述多個軟件庫中的至
少一者設置為所述處理電路可執行的活動軟件庫,并且將至少一個其他軟
件庫設置為所述處理電路不可執行的不活動軟件庫;以及
響應于所述處理電路調用目標不活動軟件庫,所述庫管理軟件被配置
為執行活動庫切換來控制所述處理電路將所述目標不活動軟件庫設置為活
動軟件庫并且將先前活動軟件庫設置為不活動軟件庫。
2.如權利要求1所述的數據處理設備,其中,所述多個軟件庫包括用
于在所述安全域中執行的多個安全軟件庫。
3.如權利要求1和2中任意項所述的數據處理設備,其中,響應于所
述處理電路調用所述目標不活動軟件庫,所述庫管理軟件被配置為控制所
述處理電路執行第二安全保護操作,并且若所述第二安全保護操作成功,
則執行所述活動庫切換。
4.如任意前述權利要求所述的數據處理設備,包括存儲器保護單元,
所述存儲器保護單元被配置為存儲訪問權限,所述訪問權限指示所述數據
存儲裝置的區域是可訪問的還是不可訪問的,其中配置所述存儲器保護單
元被配置為響應于對不可訪問區域的指令提取或存儲器訪問而觸發故障狀
況;
其中,所述活動庫切換包括控制所述處理電路設置所述存儲器保護單
元的所述訪問權限,以指示與所述目標不活動軟件庫相對應的所述數據存
儲裝置的至少一個區域為可訪問的,并且指示與所述先前活動軟件庫相對
應的所述數據存儲裝置的至少一個區域為不可訪問的。
5.如權利要求4所述的數據處理設備,其中,響應于所述處理電路調
用所述目標不活動軟件庫,所述存儲器保護單元被配置為從所述訪問權限
檢測與所述目標不活動軟件庫相對應的區域是不可訪問的,并且觸發異常
以使得所述庫管理軟件執行所述活動庫切換。
6.如任意前述權利要求所述的數據處理設備,其中,所述數據存儲裝
置被配置為存儲針對所述多個軟件庫中的至少一些軟件庫的棧;以及
所述數據處理設備包括棧指針存儲位置,所述棧指針存儲位置被配置
為存儲與針對所述活動軟件庫的棧相對應的棧指針。
7.如權利要求6所述的數據處理設備,其中,所述活動庫切換包括控
制所述處理電路更新所述棧指針存儲位置以存儲與針對所述目標不活動軟
件庫的棧相對應的棧指針。
8.如權利要求6和7中任意項所述的數據處理設備,其中,若所述數
據存儲裝置尚未存儲針對所述目標不活動軟件庫的棧,則所述活動庫切換
包括在所述數據存儲裝置中為所述目標不活動軟件庫分配棧。
9.如任意前述權利要求所述的數據處理設備,其中,所述安全保護硬
件包括安全保護單元,所述安全保護單元被配置為存儲安全數據,所述安
全數據界定與所述安全域相關聯的所述數據存儲裝置的至少一個安全區域
以及與所述較不安全域相關聯的所述數據存儲裝置的至少一個較不安全區
域;以及
所述處理電路被配置為依據正被處理的所述指令是處于所述數據存儲
裝置的安全域中還是較不安全域中來選擇是在所述安全域中還是在所述較
不安全域中操作。
10.如任意前述權利要求所述的數據處理設備,其中,所述第一安全
保護操作包括以下各項中的至少一項:
(i)檢查待在程序流的受保護變化后執行的第一指令是否為針對所述
程序流的所述變化的經允許的目標指令;
(ii)響應于用于觸發對函數的處理的受保護函數調用,防止所述函
數的指令訪問函數返回地址,所述函數返回地址標識待在所述函數已被處
理之后被處理的指令;以及
(iii)檢查處理響應于程序流的受保護變化而被切換到的所述安全域
和所述較不安全域的一者是否為針對所述程序流的所述變化指定的經允許
的域。
11.如任意前述權利要求所述的數據處理設備,其中,響應于所述處
理電路從在所述安全域和所述較不安全域中的一者中執行的所述活動軟件
庫的指令切換至待在所述安全域和所述較不安全域中的所述一者中執行的
所述目標不活動軟件庫的指令,所述處理電路被配置為在切換至所述安全
域和所述較不安全域中的所述一者中的所述目標不活動軟件庫的所述指令
之前,臨時切換至所述安全域和所述較不安全域中的另一者。
12.如任意前述權利要求所述的數據處理設備,其中,響應于所述處
理電路從在所述安全域和所述較不安全域中的一者中執行的所述活動軟件
庫的指令切換至待在所述安全域和所述較不安全域中的所述一者中執行的
所述目標不活動軟件庫的指令,所述處理電路被配置為保持在所述安全域
和所述較不安全域中的所述一者中,并且所述庫管理軟件被配置為控制所
述處理電路執行所述第一安全保護操作。
13.如任意前述權利要求所述的數據處理設備,其中,響應于所述活
動軟件庫做出受保護函數調用以調用待由其他軟件執行的函數,所述第一
安全保護操作包括將所述函數的函數返回地址存儲至與所述活動軟件庫相
關聯的棧。
14.如權利要求13所述的數據處理設備,其中,響應于所述受保護函
數調用,所述第一安全保護操作包括將虛設函數返回地址存儲至鏈接寄存
器,所述虛設函數返回地址包括不與有效指令地址相對應的地址;以及
響應于到所述虛設函數返回地址的函數返回,所述安全保護硬件被配
置為從與所述活動軟件庫相關聯的棧讀取所述函數返回地址并且觸發到所
述函數返回地址的函數返回。
15.如任意前述權利要求所述的數據處理設備,其中,在已從所述活
動軟件庫做出受保護函數調用后執行活動庫切換至另一軟件庫時,所述庫
管理軟件被配置為控制所述處理電路設置信息,以指示已存在活動庫的切
換;以及
在與所述受保護函數調用相對應的函數返回時,若所述信息被設置以
指示已存在活動庫的切換,則所述庫管理軟件被配置為執行活動庫切換回
到做出所述受保護函數調用的所述活動軟件庫。
16.如權利要求15所述的數據處理設備,其中,所述信息包括無效返
回地址,所述無效返回地址不與有效指令地址相對應;以及
所述庫管理軟件被配置為響應于由到所述無效返回地址的函數返回觸
發的異常,執行所述活動庫切換回到做出所述受保護函數調用的所述活動
軟件庫。
17.如權利要求15和16中任意項所述的數據處理設備,其中,所述
信息被存儲至所述另一軟件庫的棧。
18.如權利要求13到17中任意項所述的數據處理設備,其中,響應
于所述受保護函數調用,所述庫管理軟件被配置為控制所述處理電路維護
狀態信息,所述狀態信息指示所述多個軟件庫中的哪個做出所述受保護函
數調用。
19.如權利要求18所述的數據處理設備,其中,若在所述函數的所述
處理完成后做出所述受保護函數調用的所述軟件庫為不活動軟件庫,則所
述庫管理軟件被配置為執行所述活動庫切換來控制所述處理電路將所述狀
態信息指示已做出所述函數調用的所述軟件庫設置為所述活動軟件庫。
20.如權利要求18和19中任意項所述的數據處理設備,其中,在所
述受保護函數調用后并且在與所述受保護函數調用相對應的函數返回前,
執行至另一軟件庫的活動庫切換時,所述庫管理軟件被配置為控制所述處
理電路將所述狀態信息存儲至與所述其他軟件庫相關聯的棧。
21.如權利要求18到20中任意項所述的數據處理設備,其中,響應
于所述受保護函數調用,所述庫管理軟件被配置為控制所述處理電路將驗
證信息存儲至所述與所述活動軟件庫相關聯的棧;以及
在所述函數的處理完成后,所述庫管理軟件被配置為控制所述處理電
路檢查所述驗證信息以檢測所述狀態信息是否已經被修改。
22.一種數據處理設備,包括:
處理裝置,所述處理裝置用于響應于指令而執行數據處理,所述處理
裝置具有多個操作域,所述多個操作域包括安全域和較不安全域,其中當
在所述安全域中操作時對所述指令可訪問的至少一些數據當在所述較不安
全域中操作時不可訪問;
安全保護硬件裝置,所述安全保護硬件裝置用于響應于所述較不安全
域與所述安全域之間的處理裝置調用而執行第一安全保護操作;以及
存儲裝置,所述存儲裝置用于存儲多個軟件庫和庫管理軟件,以供所
述處理裝置執行;其中:
所述庫管理軟件被配置為控制所述處理裝置將所述多個軟件庫中的至
少一者設置為所述處理裝置可執行的活動軟件庫,并且將至少一個其他軟
件庫設置為所述處理裝置不可執行的不活動軟件庫;以及
響應于所述處理裝置調用目標不活動軟件庫,所述庫管理軟件被配置
為執行活動庫切換以控制所述處理裝置將所述目標不活動軟件庫設置為活
動軟件庫并且將先前活動軟件庫設置為不活動軟件庫。
23.一種用于設備的數據處理的方法,所述設備包括具有多個操作域
的處理電路,所述多個操作域包括安全域和較不安全域,其中當在所述安
全域中操作時對所述指令可訪問的至少一些數據在所述較不安全域中操作
時不可訪問;以及數據存儲裝置,所述數據存儲裝置存儲多個軟件庫和庫
管理軟件,以供所述處理電路執行;所述方法包括:
在所述庫管理軟件的控制下,所述處理電路將所述多個軟件庫中的至
少一者設置為所述處理電路可執行的活動軟件庫,并且將至少一個其他軟
件庫設置為所述處理電路不可執行的不活動軟件庫;
響應于所述較不安全域與所述安全域之間的處理電路調用,所述安全
保護硬件執行第一安全保護操作;以及
響應于所述處理電路調用目標不活動軟件庫,所述庫管理軟件執行活
動庫切換以控制所述處理電路將所述目標不活動軟件庫設置為活動軟件庫
并且將先前活動軟件庫設置為不活動軟件庫。

說明書

數據處理設備中的軟件庫的安全保護

技術領域

本發明涉及數據處理的領域。更具體地,本發明涉及數據處理設備中
的軟件庫的安全保護。

背景技術

數據處理設備可具有安全域及較不安全域。當在安全域中操作時,可
訪問當在較不安全域中操作時不可訪問的數據。這提供了保護潛在敏感數
據及代碼免遭未經授權的人或程序訪問的方式。

然而,越來越需要保護多個軟件應用以避免相互訪問。隨著應用數目
的增加,維護安全性變得更加復雜。本發明技術設法解決此問題。

發明內容

從一方面看,本發明提供了一種數據處理設備,該數據處理設備包
括:

處理電路,用于響應于指令執行數據處理,該處理電路具有多個操作
域,這些域包括安全域和較不安全域,其中當在安全域中操作時對指令可
訪問的至少一些數據當在較不安全域中操作時不可訪問;

安全保護硬件,被配置為響應于較不安全域與安全域之間的處理電路
調用執行第一安全保護操作;以及

數據存儲裝置,被配置為存儲多個軟件庫和庫管理軟件,以由處理電
路執行;其中:

庫管理軟件被配置為控制處理電路將多個軟件庫中的至少一個設置為
處理電路可執行的活動軟件庫,并且將至少一個其他軟件庫設置為處理電
路不可執行的不活動軟件庫;以及

響應于處理電路調用目標不活動軟件庫,庫管理軟件被配置為執行活
動庫切換來控制處理電路將目標不活動軟件庫設置為活動軟件庫并且將先
前活動軟件庫設置為不活動軟件庫。

在處理設備中提供多個不同軟件庫是可取的。庫可以由可能相互不信
任的不同軟件供貨商來提供,因此可希望強制執行庫之間的安全性。選項
將針對待在軟件(例如,使用操作系統)中處置的軟件庫之間的所有安全
檢查。然而,此途徑趨向于緩慢,因為每當存在對受保護庫的函數調用
時,必須中斷處理處理電路以調用操作系統安全行為。另一方面,全硬件
實現的解決方案可將各個軟件庫實施為獨立安全域并且使用專用硬件強制
執行庫之間的安全。然而,相同裝置上存在的軟件庫數目可能很大,因此
在電路面積及功率消耗方面,用于將各個庫作為獨立域來維護的專用硬件
資源量能夠是高昂的。

為解決這些問題,本技術提供一種使用專用安全保護硬件和庫管理軟
件的混合途徑。安全保護硬件控制較不安全域與安全域之間的調用。當在
各域之間調用時,安全保護硬件可執行第一安全保護操作,該第一安全保
護操作可包括用于確保較不安全代碼在無權限情況下不可訪問安全數據或
安全代碼的各種措施。另一方面,使用由處理電路本身所執行的庫管理軟
件控制域內不同軟件庫之間的切換。庫管理軟件選擇軟件庫中的至少一者
作為活動庫并且選擇至少一個其他軟件庫作為不活動軟件庫。處理電路不
可執行被指定為不活動的軟件庫,且與該庫相關聯的安全關鍵資源對活動
庫不可訪問。若處理電路試圖調用不活動軟件庫,則庫管理軟件控制處理
電路切換哪個庫為活動的,以使得所需庫變為活動的并且先前活動的庫變
為不活動的。因此,庫管理軟件有效地虛擬化不同軟件庫之間的安全保護
協議,以使得系統表現出好像處理電路具有許多保護域,各個保護域對應
于不同受保護庫,而從硬件角度看,幾乎不存在具有一個每次都被選為活
動庫的軟件庫的域。

此途徑比全軟件實施途徑更快速,因為專用安全保護硬件允許對另一
域中的活動軟件庫直接進行函數調用而無需調用處理電路上的軟件。對相
同活動庫的重復調用不調用庫管理軟件,且可在對由處理電路正執行的處
理幾乎沒有中斷的情況下以硬件形式快速控制與較不安全域與安全域之間
的調用相關聯的任何安全預防措施。僅當需要不活動庫時才會遇到使用庫
管理軟件的庫之間切換的執行開銷。實際上,這與對已處于活動庫的調用
相比不經常發生,且因此總體性能接近于通過全硬件實現途徑獲得的性
能,但具有較少硬件開銷。

各個軟件庫可包括與該庫關聯的指令和數據兩者。例如,庫可表示特
定應用,比如銀行或虛擬支付應用。

當處理電路調用不活動軟件庫時,庫管理軟件可控制該處理電路以執
行第二安全保護操作。若此第二安全保護操作不成功,則可觸發錯誤,而
若成功,則可執行活動庫切換以使得目標庫變為活動。因此,若存在跨域
調用,除以硬件形式執行第一安全保護操作外,可通過庫管理軟件提供額
外安全保護層。即便不存在由安全保護硬件所監測的跨域調用,仍可執行
第二安全保護操作。例如,軟件庫可僅允許另一軟件庫分支至庫代碼的某
些點,且若另一軟件庫試圖分支至庫中的位置,而該位置不在有效入口點
處,則可通過庫管理軟件觸發錯誤。并且,僅可信任某些庫能分支至給定
庫,若庫管理軟件檢測到非信任庫調用該庫,則觸發錯誤。

為了維持安全性,可希望庫管理軟件選擇一個庫作為活動庫并且選擇
其他庫作為不活動庫,使得一個時刻只有一個庫為活動的且為了進行庫的
彼此交互需要安全受控的庫切換。

另一方面,維持多個活動庫并且其他庫為不活動的可能是優選的。例
如,可僅需要保護一些庫免遭侵入并且其他庫可不需要被保護。在此情況
中,可使得一些庫永久活動。并且,可存在受信任彼此交互的一組庫,且
因此當這些庫中的一者為活動時,還使得其他庫活動。并且,可存在庫的
不同子集合,且在庫的各個子集合內,可選擇一活動庫,而子集合中的其
他庫為不活動。并且,由于安全保護硬件可強制執行安全域與較不安全域
之間的安全,可能指定在安全域中指定一個活動庫并且在較不安全域中指
定一個活動庫,由于硬件所提供的保護,在沒有權限情況下這些活動庫仍
不可相互訪問。因此,存在多種可希望將多個庫同時設置為活動的原因。
一般而言,庫管理軟件可確保防止不活動庫被活動庫不適當地訪問。

盡管本發明技術可用于較不安全域中,但是該技術對于將通常被用于
可能處理敏感信息的軟件庫的安全域最為有用。因此,在一示例中,受管
理的軟件庫可為安全域中的安全軟件庫,而庫管理軟件不管理較不安全域
中的任何庫。可替代地,可提供獨立安全庫管理器和較不安全庫管理器用
于分別處置安全域及較不安全域中的庫之間的切換。

存儲器保護單元(MPU)可用于控制哪些程序庫是活動的或者不活動
的。MPU可用于指定數據存儲裝置的區域為可訪問的或者不可訪問的,對
不可訪問區域的訪問觸發故障狀況。因此,由庫管理軟件進行的活動庫切
換可包括更新MPU中的訪問權限以指示不同區域為可訪問的或者不可訪
問的。若訪問不活動庫,則將對應存儲器區域在MPU中指示為不可訪
問,且因此MPU可生成故障,該故障可觸發庫管理軟件執行活動庫切
換。

活動庫切換還可包括更新棧指針存儲位置中的棧指針以與新活動庫相
對應。可在數據存儲裝置中為軟件庫中的至少一些提供棧。當活動時,庫
可使用棧存儲臨時數據。并非所有庫皆需要在數據存儲裝置中分配有棧,
因為隨著庫自不活動狀態切換至活動狀態,可動態分配棧。各個分配棧具
有對應棧指針,該棧指針標識棧在存儲器中的位置。棧指針所指示的精確
位置可各有不同。例如,棧指針可指示放置于棧上的最后數據值的位置,
或放置于棧上的下一數據值應被寫入的位置。通過當自一個庫切換至另一
庫時更新MPU及棧指針,新活動庫不可訪問與先前活動庫關聯的棧,該
棧可為敏感數據。若允許多個庫同時為活動,則可提供多個棧指針寄存
器。例如,可存在安全棧指針存儲位置及較不安全棧指針存儲位置,這些
位置分別存儲當前活動安全庫及較不安全庫的棧指針。

安全保護硬件可具有安全保護單元,該安全保護單元存儲安全數據,
這些安全數據界定分別與安全域和較不安全域相關聯的數據存儲裝置的安
全區域和較不安全區域。可基于當前正被處理的指令是處于數據存儲裝置
的安全區域中還是較不安全區域中來選擇處理電路的操作的當前域。通
常,位于安全區域中的代碼將在安全域中執行,而位于較不安全區域中的
代碼將在較不安全域中執行,但可能存在一些異常。當分支指令試圖從與
安全域和較不安全域中的一者相關聯的位置分支至與另一域相關聯的位置
時,可通過安全保護硬件執行第一安全保護操作。

第一安全保護操作可包括用于防止對安全信息的不適當訪問的若干不
同措施。僅當從安全域調用至較不安全域時可能需要一些措施,反之亦
然。

例如,第一安全保護操作可包括檢查待在程序流的受保護變化后執行
的第一指令是否為針對程序流的該變化的所允許的目標指令。當程序流的
受保護變化為至待在安全域中執行的指令的分支時,這能夠是特別有用
的。允許分支跳至安全函數的中間能夠是危險的,因為這可允許繞過諸如
安全函數中較早提供的密碼檢查之類的安全預防措施。為了防止此情況,
可將預定指令(例如,特殊防護指令)指定為針對程序流的變化經允許的
目標指令,且經允許的指令可包括于安全代碼中以標記經允許的函數入口
點。在程序流的受保護變化(例如,至安全區域中的指令的分支)后,安
全保護硬件可檢查待在調用后執行的第一指令是否為經允許的目標指令。
若否,則可觸發安全故障。

并且,第一安全保護操作可包括在受保護函數調用后保護函數返回地
址。例如,若從安全域中的代碼及較不安全域中的目標代碼調用函數,則
將不希望允許較不安全域中的代碼訪問函數的返回地址。若較不安全函數
能夠修改返回地址,則其將能夠影響安全代碼的程序流,這將導致通過跳
入安全函數的中間而繞過安全保護。為了防止此情況,硬件可采取步驟來
對在函數調用后執行的指令隱藏返回地址的函數。例如,可將返回地址存
儲至與調用了函數的安全代碼相關聯的棧,該棧不可通過較不安全域中的
代碼訪問。

第一安全保護操作還可包括在程序流的變化后檢查處理已被切換到的
域是否為針對程序流的該變化所指定的經允許的域。存在某些安全攻擊,
在這些攻擊中較不安全代碼可引發安全域中的分支指令(原本預期該分支
指令分支至較不安全域而不是分支至安全域中的位置),允許較不安全代
碼做出安全域中的程序流的不受控改變。為防止此情況,可針對程序流的
某些變化指定至少一個經允許的域,且在程序流的變化后,硬件可檢查目
的域是否匹配經允許的域。第一安全保護操作還可包括除上文所描述的那
些之外的安全檢查與操作。

安全保護硬件提供用于確保在較不安全域與安全域之間調用時的安全
性的措施。然而,當在相同域內的不同軟件庫之間調用時也可能需要這些
措施。這能夠以不同方式來實現。在一示例中,當在相同域中的庫之間調
用時,處理電路可在切換回初始域之前臨時切換至另一域。域的臨時切換
使得庫調用看起來像安全域與較不安全域之間的調用,盡管兩個庫實際上
處于相同域中,且因此觸發硬件執行第一安全保護操作,使得當在相同域
中的庫之間調用時還可使用與在域之間調用時所執行的相同的安全措施。

例如,為在相同域中的庫之間調用時調用安全保護硬件,活動庫可執
行分支指令,該分支指令指定目標不活動庫內的位置的目標地址以及當實
施分支時系統應切換至另一域的指示。這引發系統切換至另一域達一時間
段,隨后當確定目標位置實際上與初始域相關聯時切換回來。此途徑所具
有優勢在于用硬件快速執行針對庫的切換的安全措施。

或者,當在相同域中的兩個庫之間調用時,系統可保持在當前域中,
且庫管理軟件可執行第一安全保護操作。在不同域之間調用時將通過安全
保護硬件正常執行的任何操作可替代地由在處理電路上執行的庫管理軟件
來執行。這避免了對如先前示例中的在域之間臨時切換的特殊機制的需
要,且確保在庫之間傳遞的操作數未變得對較不安全域可訪問。

如上面所提到的,由安全保護硬件所提供的第一安全保護操作的一部
分可使得函數返回地址對函數調用后的后續軟件隱藏。當存在相同域中的
庫之間的切換時,這還可通過庫管理軟件執行。這不必針對所有函數調用
執行——僅針對某些受保護函數調用隱藏函數返回地址可足夠。實現此隱
藏的一種方式是在自該庫切換前將函數返回地址存儲至與活動軟件庫相關
聯的棧。

此途徑與將函數返回地址存儲至鏈接寄存器的常用方法形成對比,該
鏈接寄存器對所有庫可訪問。實際上,可替代地將虛設函數返回地址存儲
至鏈接寄存器。虛設函數返回地址不對應于有效指令地址,這指示當產生
至虛設地址的函數返回時,安全保護硬件應從與活動軟件庫相關聯的棧讀
取實際函數返回地址并且隨后觸發至實際函數返回地址的函數返回。

然而,在將實際函數返回地址存儲至棧后,然后可切換至另一軟件
庫,此切換可引發棧指針交換。因此,當自函數調用返回時,可能不再可
訪問存儲函數返回地址的棧。為解決此問題,在已做出受保護函數調用
后,庫管理軟件可設置信息來指示已切換至另一軟件庫。在對應函數返回
時,庫管理軟件可檢查信息以查看是否已存在庫切換,且若是,則可執行
活動庫切換回到初始庫,以使得可從棧訪問函數返回地址。

被設置為指示已存在活動庫的切換的信息可具有各種形式。例如,此
信息可為不對應于有效指令地址的無效返回地址(例如,通過硬件存儲至
鏈接寄存器的、與虛設返回地址不同的無效地址)。例如,可將無效返回
地址存儲至另一軟件庫的棧,在已做出受保護函數調用后將處理切換至該
棧。另一軟件庫對無效返回地址的使用引發故障,該故障可用于觸發庫管
理軟件執行活動庫切換回到初始庫。

并且,庫管理軟件可維護狀態信息,該狀態信息指示哪些軟件庫做出
了受保護函數調用。在從受保護函數調用返回后,若狀態信息所指示的庫
為當前不活動,則庫管理軟件可切換至狀態信息所指示的庫。這允許系統
確定應從其中獲得返回地址的棧。若僅存在兩個通過庫管理軟件管理的
庫,則狀態信息可能不是必要的。

可在做出受保護函數調用時存儲狀態信息,或者可在切換至不同活動
庫時稍后存儲狀態信息。在一個示例中,狀態信息可指示經調用的函數中
的至少部分歷史記錄,以使得稍后可能回溯以識別調用了初始函數的庫。
然而,監測函數調用樹可能是復雜的,因為可存在許多嵌套函數,在返回
初始函數調用前處理這些嵌套函數。在不追蹤函數的所有后續處理的情況
下存儲對初始調用者庫的指示可更為簡單。實行此舉的一種方式為將狀態
信息存儲至與另一軟件庫關聯的棧。

若將狀態信息存儲于另一軟件庫可訪問的位置,則該另一庫可能夠修
改狀態信息,此修改可引發不可預知且不安全的操作。為了防止此修改,
庫管理軟件可控制處理電路將驗證信息存儲至做出保護函數調用的庫的
棧。可對函數返回使用此驗證信息以檢查并確保尚未修改狀態信息。例
如,驗證信息可包括對哪個庫為其棧存儲有狀態信息的另一庫的指示。若
通過軟件修改狀態信息,則函數返回可不再返回至初始調用者庫,并且處
理被切換到的庫反而可不具有正確的驗證信息,從而允許檢測修改并且產
生錯誤。

盡管上文論述了安全域和較不安全域,但是設備還可具有其他域,用
安全保護硬件控制域之間的轉換。因此,上文所提及的安全域和較不安全
域可為更多數目的域中的兩者。在各個域中可存在活動庫,使得可同時存
在多個活動庫。

從另一方面看,本發明提供了一種數據處理設備,該數據處理設備包
括:

處理裝置,用于響應于指令執行數據處理,該處理裝置具有多個操作
域,這些域包括安全域和較不安全域,其中當在安全域中操作時對指令可
訪問的至少一些數據當在較不安全域中操作時不可訪問;

安全保護硬件裝置,用于響應于較不安全域與安全域之間的處理裝置
調用而執行第一安全保護操作;以及

存儲裝置,用于存儲多個軟件庫及庫管理軟件以供處理裝置執行;其
中:

庫管理軟件被配置為控制處理裝置將多個軟件庫中的至少一者設置為
處理裝置可執行的活動軟件庫,并且將至少一個其他軟件庫設置為處理裝
置不可執行的不活動軟件庫;以及

響應于處理裝置調用目標不活動軟件庫,庫管理軟件被配置為執行活
動庫切換來控制處理裝置將目標不活動軟件庫設置為活動軟件庫并且將先
前活動軟件庫設置為不活動軟件庫。

從另一方面看,本發明提供了一種用于設備的數據處理的方法,該設
備包括:處理電路,該處理電路具有多個操作域,這些域包括安全域和較
不安全域,其中當在安全域中操作時對指令可訪問的至少一些數據當在較
不安全域中操作時不可訪問;以及數據存儲裝置,該數據存儲裝置存儲多
個軟件庫及庫管理軟件以供處理電路執行;該方法包括:

在庫管理軟件的控制下,處理電路將多個軟件庫中的至少一者設置為
處理電路可執行的活動軟件庫,并且將至少一個其他軟件庫設置為處理電
路不可執行的不活動軟件庫;

響應于在較不安全域與安全域之間的處理電路調用,安全保護硬件執
行第一安全保護操作;以及

響應于處理電路調用目標不活動軟件庫,庫管理軟件執行活動庫切換
來控制處理電路將目標不活動軟件庫設置為活動軟件庫且將先前活動軟件
庫設置為不活動軟件庫。

附圖說明

將從說明性實施例的以下具體實施方式清楚地看出本發明的上文及其
他目標、特征及優勢,將結合附圖來閱讀具體實施方式,其中:

圖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還包括一些專用寄存器,這些專用寄存器包括程序計數器
(PC)寄存器20、鏈接寄存器(LR)22、以及棧指針(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內的代碼46,而在較不安全
域中執行位于較不安全區域46內的代碼48。當在較不安全域中時,處理
電路4不可訪問存儲在安全區域44中的數據或指令。安全保護硬件40控
制較不安全域與安全域之間的轉換,以確保僅接受某些經允許的轉換。

數據處理設備2包括安全存儲器保護單元(MPU)50及較不安全
MPU52,分別用于界定對于數據存儲裝置6的安全區域44及較不安全區
域46的訪問權限。訪問權限控制安全區域44及較不安全區域46的子區域
是為可訪問還是不可訪問。由安全MPU50及較不安全MPU52界定的區
域可重迭。例如,安全MPU50及較不安全MPU52可界定相同存儲器區
域的不同屬性。

圖2示出了用于維護不同軟件庫55之間的分離的軟件技術。可通過
不同、互相不信任的軟件供貨商提供不同軟件庫55,因此可能需要防止一
個庫55對與另一庫55相關聯的數據或代碼的訪問。可提供實時操作系統
58或信任管理器以管理軟件庫55之間的切換。當一個庫設法訪問與界定
為受操作系統58保護的另一庫關聯的數據或代碼時,MPU硬件可檢查此
舉是否被允許,且若不允許則可觸發故障。在這樣的實現方式中,不提供
圖1的安全保護硬件40。當切換庫時,需要中斷處理電路4上的處理,以
使得操作系統58中的安全處置器可被執行。這降低了處理電路4的處理
性能,且因此該技術與硬件技術相比較為緩慢。

另一方面,圖3示出了用于分離不同域的硬件技術的示例。在此情況
中,安全保護硬件40維護較不安全域與安全域之間的邊界70且各個軟件
庫60具有自己的域。由于通過硬件來控制域之間的轉換的安全,庫之間
的轉換快速且不一定要調用軟件處置器。然而,圖3的硬件實現方式難以
維護大量不同、互相保護的軟件庫,因為安全保護單元42中所存儲的數
據量變得非常大,且因此實際上這限制了可支持的不同域的數目。

為解決這些問題,圖4示出了混合硬件/軟件技術,該技術使得許多互
相不信任軟件庫能夠以比圖3所示的技術更加硬件有效率的方式被維護,
但是具有比圖2所示的途徑高的性能。安全保護硬件40提供用于維護較
不安全域80與安全域90之間的邊界70的安全保護。在安全域中執行多
個安全軟件庫100,且使用安全MPU50及也在安全域中執行的庫管理軟
件110保護這些安全軟件庫100避免相互訪問。庫管理軟件110管理不同
安全庫100之間的轉換。庫管理軟件110選擇一個或多個庫100作為活動
庫并且選擇其他庫作為不活動庫。例如,在圖4中,將安全庫0設置為活
動庫及其他庫1至N設置為不活動庫。通過設置安全MPU50中的MPU
權限來選擇活動及不活動庫,使得對應于活動庫的區域為可訪問并且對應
于不活動庫的區域為不可訪問。庫管理軟件100使用庫配置數據112來確
定當某些庫為活動時將訪問權限寫入安全MPU50中。

當函數Call120為從較不安全域80中的軟件至活動庫時,則安全保護
硬件40執行安全檢查操作。由于以硬件形式執行安全檢查,所以該安全
檢查是快速的且可直接對安全庫100做出函數Call120而不必首先通過處
理電路4執行其他軟件例程。

另一方面,若函數Call130為從較不安全域80中的代碼至安全域90
中的不活動庫100,則安全MPU50將觸發存儲器保護故障,因為對應于
不活動庫的區域當前被設置為不可訪問。該故障觸發存儲器管理異常140
且此異常調用庫管理器110中的故障處置器150,該故障處置器引發活動
庫被切換,使得當前被函數Call130作為目標的庫(此示例中的庫1)變
為活動庫,而先前的活動庫(此示例中的庫0)變為不活動。故障處置器
150基于庫配置數據112切換安全MPU50的配置,使得對新活動庫的后
續函數調用將被允許以及對現為不活動的舊庫的函數調用將觸發故障。再
者,故障處置器150改變安全棧指針寄存器24中的棧指針以指示與新活
動庫相關聯的數據存儲裝置6中的棧,而非指示與先前活動庫關聯的棧。
此舉確保新庫可訪問與之相關聯的棧。若新庫尚不具有棧,則在數據存儲
裝置6的安全區域44中分配棧。庫管理器110還可執行一些軟件安全檢查
以確定是否許可切換庫。與此同時,由于函數Call130越過域邊界70,所
以又通過安全保護硬件40以與函數Call120相似的方式提供硬件安全措
施。

因此,庫管理器110虛擬化在相同硬件安全域中操作的不同安全庫
100,使得一次僅一些庫為活動且防止活動庫訪問不活動庫,由庫管理器
110管理對不活動庫的調用以確保安全。僅當對不活動庫做出調用時才會
遇到使用庫管理器110改變安全MPU50配置的開銷,且對相同庫的后續
調用不引發故障140并且具有最小開銷。這允許支持對應于不同軟件庫
100的幾乎無限數目的保護域。

圖5示出了數據存儲裝置6的存儲器地址空間的示例。地址空間具有
安全區域44及較不安全區域46。盡管圖5示出一個較不安全區域44及一
個安全區域46,但可提供更多數目的安全區域及較不安全區域。安全保護
單元42存儲數據,該數據界定數據存儲裝置6中的哪些區域為安全區域
及哪些區域為較不安全區域。

安全區域44包括對應于安全軟件庫100中的至少一些的一個或多個
安全棧30。不必要在地址空間中為所有軟件庫100提供棧。而是,可隨著
庫變為活動的而將棧存儲空間分配給庫100。安全區域34還包括對應于軟
件庫100的非特權安全代碼46及對應于庫管理軟件110的特權安全代碼
47。安全MPU50控制哪些程序碼及數據為非特權的或特權的。

類似地,較不安全區域46包括在較不安全域80中執行的較不安全代
碼48(包括特權及非特權代碼)、較不安全代碼48所使用的較不安全棧
32、以及較不安全數據39。較不安全MPU52控制較不安全區域46中的
數據或代碼是特權的還是非特權。通常的,非特權代碼不可訪問特權數據
或代碼。

存儲器地址空間還包括保留地址范圍150,該保留地址范圍不對應于
任何有效指令地址。此保留范圍可用于特殊函數,諸如虛設返回地址,如
下文將描述的。例如,保留地址范圍150可包括范圍從0xF0000000至
0xFFFFFFFF中的地址。

當越過較不安全域80與安全域90之間的邊界70時,安全保護硬件
40執行安全保護操作,這些操作可包括以下操作中的至少一者:

·在從較不安全域80分支至安全域90后,若分支目標地址處的指令
不含有表示進入安全代碼的有效入口點的防護指令,則安全保護硬件
40可生成故障。此舉防止較不安全代碼試圖分支至安全函數中間的情
況下的攻擊,這些攻擊可為危險的,因為它可以允許在函數中較早執
行的安全檢查(例如,密碼檢查)被避開,從而允許在沒有適當安全
授權的情況下實施安全操作。

·當由安全域90中的庫執行分支并引發轉換至較不安全域時,則返回
地址被自動推向與該庫100相關聯的棧,并且來自保留地址范圍150
中的保留虛設值被放置在鏈接寄存器22中。當后續函數返回分支至虛
設值時,則通過安全保護硬件40檢測此情況,從而從安全庫100的棧
提取實際返回地址。此操作防止安全地址對非安全代碼可訪問。下文
關于圖11更詳細地描述此操作。

·當從較不安全域80調用安全函數時,可通過安全保護硬件40修改
由公共代碼提供的函數返回地址,以指示當從函數返回時處理將返回
至較不安全域80。例如,可在返回地址中設置目標域位以指示函數返
回應返回至較不安全域80。當實施函數返回時,可檢查函數返回地址
是否實際上對應于從由所設目標域位所指示的域可調用的位置,且若
不對應,則可觸發故障。此舉防止黑客修改由較不安全域80所傳遞的
函數返回地址以試圖觸發從安全域至其他安全代碼的不受控轉換情況
下的攻擊。這能夠是危險的,因為安全至安全分支通常將不由安全保
護硬件40管控。通過在實施函數返回前對從較不安全域傳遞的函數返
回地址進行消毒,可防止此類攻擊。

因此,硬件40可采取各種安全措施。然而,當在安全域90內的安全
庫100之間切換時提供相同的保護也是可取的,如同在單獨的硬件保護域
中實施這些庫。圖6及圖7示出了用于實現此保護的不同技術。

在圖6中,從第一安全庫0至第二安全庫1的函數調用引發在切換回
安全域90中的第二安全庫1之前切換至較不安全域80。通過臨時切換至
較不安全域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以及安全MPU50和較不安全MPU52執行安
全檢查的方法。在步驟200處,發生分支操作以將程序流改變為目標地址
處的指令。在步驟202處,安全保護單元42以及安全保護硬件40確定是
否存在訪問違規。若操作的當前域為較不安全域,目標地址處于安全區域
44中,并且目標地址處的指令并非防護指令,則檢測到訪問違規。若檢測
到訪問違規,則在步驟204處硬件40觸發安全故障。在步驟205處,硬件
40檢測分支是否越過較不安全域80與安全域90之間的邊界70。若是,則
在步驟206處安全保護硬件40執行上文所描述的硬件安全保護操作。若
否,則省略步驟206。

在步驟208處,確定分支目標地址是否處于安全域90中或較不安全
域80中(基于數據存儲裝置6的區域44、46中的哪個包括目標地址)。
若目標地址處于安全域90中,則在步驟210處安全MPU50為活動且檢查
對包括目標地址在內的子區域的訪問權限,來檢測是否存在安全MPU50
訪問違規。可能發生違規,因為將分支到不活動庫,或因為非特權代碼正
設法訪問特權區域。若存在安全MPU50訪問違規,則在步驟212處觸發
安全存儲器管理異常。另一方面,若目標地址處于較不安全域80中,則
在步驟214處較不安全MPU52為活動的且確定是否已存在訪問違規,并
且若是,則在步驟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相關聯的蹦床區域
具有固定大小并且在地址空間中相互鄰近,則可使用以下公式快速地計算
庫標識符:


即便蹦床面積并非全部相同大小,而是為固定大小的倍數,此公式的
結果可用于索引至較小表格中以獲得實際庫標識符。因此,存在庫管理器
110可確定哪個庫對應于目標地址的各種方式。

若目標地址不對應于庫232的變化,則在步驟234處執行故障處置以
處置212或216處所觸發的存儲器保護故障。可使用用于處置存儲器保護
故障的任何已知技術。例如,可中斷處理以防止非特權代碼對特權數據的
訪問。

另一方面,若在步驟232處確定已由不活動庫的變化引發了存儲器管
理器異常,則此情況不像其他存儲器保護故障那樣危險且可由庫管理器
110來處置。在步驟234處,庫管理器110切換MPU50的訪問權限,以
使得對應于先前活動庫的區域變為不可訪問及對應于新活動庫的區域變為
可訪問。從現在開始,對舊庫的訪問將觸發存儲器保護故障,而對新目標
庫的訪問將不觸發存儲器保護故障。當特定庫變為活動時,庫配置數據
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的第一函數
調用(Call1)。發生從較不安全代碼105對安全庫100-1的第二函數調用
(Call2)。在函數從第二函數調用返回(Ret2)后,再次發生以安全庫
100-1為目標的第三函數調用(Call3)。在從第三函數調用返回(Ret3)
后,處理然后從較不安全代碼105返回(Ret1)至做出第一函數調用
(Call1)的安全庫100-0。

如上文所論述,安全保護硬件40可隱藏Call1的返回地址以防止較不
安全代碼105訪問返回地址。這可以通過將Call1的函數返回地址存儲至
與安全庫100-0相關聯的棧并且將虛設返回地址存儲至鏈接寄存器22以在
執行函數返回Ret1時觸發硬件40從棧獲得真實函數返回地址來實現。然
而,當對安全庫100-1做出Call2時,則庫的切換意味著禁用庫100-0,且
因此當較不安全代碼105執行函數返回Ret1時,函數返回地址不再可訪
問。

為了解決此問題,可如圖11所示地處置返回地址。在Call1后,在與
安全庫100-0相關聯的棧305上放置實際返回地址300,而在鏈接寄存器
22中放置不對應于有效指令地址的虛設地址310。這意味著處理第一函數
調用的較不安全代碼105僅可看見虛設地址而不可看見安全返回地址
300。

當從較不安全代碼105對安全庫100-1做出Call2時,在鏈接寄存器
22中存儲Call2的返回地址(在從較不安全代碼105做出Call2時,不一
定要遮住返回地址并且可將實際返回地址存儲至鏈接寄存器22)。Call2
還使得庫管理器100執行庫的切換,并且將驗證值320存儲至與包括返回
地址300的庫100-0相關聯的棧305的棧框架。驗證值包括現在正被激活
的庫100-1的標識符。在將活動庫從庫100-0切換至庫100-1并且切換安全
棧指針寄存器24中的棧指針的同時,庫管理器在與安全庫100-1相關聯的
棧315上放置第二虛設地址312。庫管理器110使用與由硬件存儲至鏈接
寄存器22的虛設地址310不同的虛設地址312,以指示在從Call1返回時
將需要活動庫的切換。庫管理器110還將狀態值340存儲至庫100-1的棧
315。狀態值340指示先前活動庫100-0,且因此當處理Ret1時再啟動
庫。

在從Call2返回(函數返回Ret2)時,處理分支至存儲于鏈接寄存器
22中的地址。用與Call2及Ret2相同的方式處置Call3及對應函數返回
Ret3,不同之處在于現在安全庫1為活動的且未產生異常及未遭遇與庫管
理器相關聯的開銷。

在Ret3后,對應于初始函數調用Call1,發生函數返回Ret1。較不
安全代碼105分支至原始虛設值310,該原始虛設值在做出Call1時被放
置于鏈接寄存器中。硬件檢測到保留地址的該分支并且從當前活動安全棧
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
執行的安全保護操作的另外的示例,上述申請的內容通過引用合并于此。

盡管應經參照附圖詳細地描述本發明的說明性實施例,但是應當理
解,本發明不受限于這些精確實施例,并且各種變化及修改可在不脫離權
利要求所限定的本發明的范圍和精神的情況下由本領域技術人員來實現。

關 鍵 詞:
數據處理 設備 中的 軟件 安全 保護
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:數據處理設備中的軟件庫的安全保護.pdf
鏈接地址:http://www.wwszu.club/p-6405442.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大