欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)處理設備中的軟件庫的安全保護的制作方法_4

文檔序號:9510163閱讀:來源:國知局
4處硬件40觸發(fā)安全故障。在步驟205處,硬件40檢 測分支是否越過較不安全域80與安全域90之間的邊界70。若是,則在步驟206處安全保 護硬件40執(zhí)行上文所描述的硬件安全保護操作。若否,則省略步驟206。
[0084] 在步驟208處,確定分支目標地址是否處于安全域90中或較不安全域80中(基 于數(shù)據(jù)存儲裝置6的區(qū)域44、46中的哪個包括目標地址)。若目標地址處于安全域90中, 則在步驟210處安全MPU 50為活動且檢查對包括目標地址在內(nèi)的子區(qū)域的訪問權限,來檢 測是否存在安全MPU 50訪問違規(guī)??赡馨l(fā)生違規(guī),因為將分支到不活動庫,或因為非特權 代碼正設法訪問特權區(qū)域。若存在安全MPU 50訪問違規(guī),則在步驟212處觸發(fā)安全存儲器 管理異常。另一方面,若目標地址處于較不安全域80中,則在步驟214處較不安全MPU 52 為活動的且確定是否已存在訪問違規(guī),并且若是,則在步驟216處觸發(fā)較不安全存儲器管 理異常。若未檢測到訪問違規(guī),則在步驟220處實施與分支指令關聯(lián)的訪問且處理繼續(xù)。
[0085] 還可針對指定目標地址的數(shù)據(jù)訪問,執(zhí)行與圖8所示方法相似的方法。然而,對于 數(shù)據(jù)訪問,步驟208將檢測當前正操作處理電路4的域(而非與目標地址關聯(lián)的域),且然 后在步驟210或步驟214處將使用對應于當前域的MPU。
[0086] 圖9示出了處置圖8的步驟212和步驟216處觸發(fā)的存儲器管理異常的方法。在 圖4的示例中,庫管理器110管理安全域中的多個安全軟件庫100,并且在較不安全域中不 使用此技術。在此情況中,將僅在步驟212處而不在步驟216處執(zhí)行圖9的方法。然而,如 下文關于圖12所描述的,可能在較不安全域80中提供相似庫管理器,在此情況中還可針對 步驟216執(zhí)行圖9的方法。
[0087] 在步驟230處,庫管理器110查找?guī)炫渲脭?shù)據(jù)112,并且在步驟232處,庫管理器 使用庫配置數(shù)據(jù)112確定是否存在活動庫的變化。這能夠以各種方式來實現(xiàn)。例如,可相 對于庫配置數(shù)據(jù)112檢查目標地址,這些庫配置數(shù)據(jù)界定哪些MPU區(qū)域?qū)诟鱾€庫。然 而,這可能耗費一些時間。更快速途徑將是重建庫代碼,以使得到庫的所有有效入口點被定 位于稱為"蹦床(trampoline) "區(qū)域的存儲器的小型、固定大小區(qū)域內(nèi),可使得后續(xù)分支從 該區(qū)域到需要執(zhí)行的代碼的區(qū)域。通過約束可使得到不活動庫的分支去往的蹦床區(qū)域,較 少的配置數(shù)據(jù)需要被檢查,且因此較快速地檢測到哪個庫對應于給定訪問。例如,若與各個 庫100相關聯(lián)的蹦床區(qū)域具有固定大小并且在地址空間中相互鄰近,則可使用以下公式快 速地計算庫標識符:
[0089] 即便蹦床面積并非全部相同大小,而是為固定大小的倍數(shù),此公式的結果可用于 索引至較小表格中以獲得實際庫標識符。因此,存在庫管理器110可確定哪個庫對應于目 標地址的各種方式。
[0090] 若目標地址不對應于庫232的變化,則在步驟234處執(zhí)行故障處置以處置212或 216處所觸發(fā)的存儲器保護故障??墒褂糜糜谔幹么鎯ζ鞅Wo故障的任何已知技術。例如, 可中斷處理以防止非特權代碼對特權數(shù)據(jù)的訪問。
[0091] 另一方面,若在步驟232處確定已由不活動庫的變化引發(fā)了存儲器管理器異常, 則此情況不像其他存儲器保護故障那樣危險且可由庫管理器110來處置。在步驟234處, 庫管理器110切換MPU 50的訪問權限,以使得對應于先前活動庫的區(qū)域變?yōu)椴豢稍L問及對 應于新活動庫的區(qū)域變?yōu)榭稍L問。從現(xiàn)在開始,對舊庫的訪問將觸發(fā)存儲器保護故障,而對 新目標庫的訪問將不觸發(fā)存儲器保護故障。當特定庫變?yōu)榛顒訒r,庫配置數(shù)據(jù)112界定哪 些區(qū)域應將設置為可訪問的或不可訪問的。
[0092] 在步驟235處,庫管理器110將先前活動庫的棧指針存儲至庫配置數(shù)據(jù)112,該棧 指針當前存儲于棧指針寄存器24中。自庫被激活起,棧指針可能已經(jīng)改變,且因此先前保 存在庫配置數(shù)據(jù)112中的棧指針可能經(jīng)已過期。通過針對庫配置數(shù)據(jù)112中的先前活動庫 更新棧指針,當稍后又激活該庫時,可能確定對應棧的位置。
[0093] 在步驟236處,庫管理器110確定是否已為新活動庫分配了棧30。若否,則在步 驟238處在數(shù)據(jù)存儲裝置6中為新活動庫分配棧,而若已分配棧,則省略步驟238。在步驟 240處,庫管理器110將對應于新活動庫的棧的棧指針恢復至棧指針寄存器24。從庫配置 數(shù)據(jù)112處獲得新棧指針。
[0094] 在步驟242處,庫管理器110確定安全保護硬件40是否已在步驟206處執(zhí)行安全 保護。若分支越過較不安全域與安全域之間的邊界70,則為此情況。若硬件40已執(zhí)行安 全保護操作,則在步驟246處返回存儲器管理異常并且繼續(xù)對庫的處理。若硬件40尚未執(zhí) 行安全保護操作,則在步驟248處通過庫管理器110以軟件形式執(zhí)行這些操作,然后在步驟 246處從異常返回。不管硬件是否已執(zhí)行第一安全保護操作,庫管理器110還可執(zhí)行第二安 全保護操作。例如,僅可允許某些庫對特定庫做出函數(shù)調(diào)用,且可防止來自其他庫的函數(shù)調(diào) 用繼續(xù)。
[0095] 圖10示出了較不安全代碼105與兩個安全庫100-0、100-1之間的嵌套函數(shù)調(diào)用 的示例。做出從安全庫100-0對較不安全代碼105的第一函數(shù)調(diào)用(Call 1)。發(fā)生從較不 安全代碼105對安全庫100-1的第二函數(shù)調(diào)用(Call 2)。在函數(shù)從第二函數(shù)調(diào)用返回(Ret 2)后,再次發(fā)生以安全庫100-1為目標的第三函數(shù)調(diào)用(Call 3)。在從第三函數(shù)調(diào)用返回 (Ret 3)后,處理然后從較不安全代碼105返回(Ret 1)至做出第一函數(shù)調(diào)用(Call 1)的 安全庫100-0。
[0096] 如上文所論述,安全保護硬件40可隱藏Call 1的返回地址以防止較不安全代碼 105訪問返回地址。這可以通過將Call 1的函數(shù)返回地址存儲至與安全庫100-0相關聯(lián)的 棧并且將虛設返回地址存儲至鏈接寄存器22以在執(zhí)行函數(shù)返回Ret 1時觸發(fā)硬件40從棧 獲得真實函數(shù)返回地址來實現(xiàn)。然而,當對安全庫100-1做出Call 2時,則庫的切換意味 著禁用庫100-0,且因此當較不安全代碼105執(zhí)行函數(shù)返回Ret 1時,函數(shù)返回地址不再可 訪問。
[0097] 為了解決此問題,可如圖11所示地處置返回地址。在Call 1后,在與安全庫100-0 相關聯(lián)的棧305上放置實際返回地址300,而在鏈接寄存器22中放置不對應于有效指令地 址的虛設地址310。這意味著處理第一函數(shù)調(diào)用的較不安全代碼105僅可看見虛設地址而 不可看見安全返回地址300。
[0098] 當從較不安全代碼105對安全庫100-1做出Call 2時,在鏈接寄存器22中存儲 Call 2的返回地址(在從較不安全代碼105做出Call 2時,不一定要遮住返回地址并且可 將實際返回地址存儲至鏈接寄存器22)。Call 2還使得庫管理器100執(zhí)行庫的切換,并且 將驗證值320存儲至與包括返回地址300的庫100-0相關聯(lián)的棧305的??蚣?。驗證值包 括現(xiàn)在正被激活的庫100-1的標識符。在將活動庫從庫100-0切換至庫100-1并且切換安 全棧指針寄存器24中的棧指針的同時,庫管理器在與安全庫100-1相關聯(lián)的棧315上放置 第二虛設地址312。庫管理器110使用與由硬件存儲至鏈接寄存器22的虛設地址310不同 的虛設地址312,以指示在從Call 1返回時將需要活動庫的切換。庫管理器110還將狀態(tài) 值340存儲至庫100-1的棧315。狀態(tài)值340指示先前活動庫100-0,且因此當處理Ret 1 時再啟動庫。
[0099] 在從Call 2返回(函數(shù)返回Ret 2)時,處理分支至存儲于鏈接寄存器22中的地 址。用與Call 2及Ret 2相同的方式處置Call 3及對應函數(shù)返回Ret 3,不同之處在于現(xiàn) 在安全庫1為活動的且未產(chǎn)生異常及未遭遇與庫管理器相關聯(lián)的開銷。
[0100] 在Ret 3后,對應于初始函數(shù)調(diào)用Call 1,發(fā)生函數(shù)返回Ret 1。較不安全代碼 105分支至原始虛設值310,該原始虛設值在做出Call 1時被放置于鏈接寄存器中。硬件 檢測到保留地址的該分支并且從當前活動安全棧315取回返回地址。由于所取回的地址實 際上為由庫管理軟件110先前放置于棧上的保留不可執(zhí)行虛設地址312,則由硬件產(chǎn)生存 儲器管理異常。庫管理軟件110處置此異常并且確定需要執(zhí)行活動庫切換。庫管理軟件 110從狀態(tài)信息340檢測到庫100-0應變?yōu)榛顒拥牟⑶規(guī)?00-1現(xiàn)在應變?yōu)椴换顒拥摹?管理軟件110檢查存儲于庫100-0的棧305上的驗證信息320以確保驗證信息320指示庫 100-1為將變?yōu)椴换顒拥膸?,并且狀態(tài)信息340尚未被修改。另一方面,若處于與庫100-1 相關聯(lián)的棧315上的同時已經(jīng)修改了狀態(tài)值340,則不同庫將被指示為需要重新激活,該庫 的棧將在其返回地址棧框架中不含有驗證值320,并且?guī)旃芾碥浖?10檢測到缺少正確驗 證值320,從而觸發(fā)故障。
[0101] 因此,狀態(tài)值340及驗證值320使得庫管理器110能夠確定在所調(diào)用函數(shù)后切換 回那個庫并且驗證已正確實施此操作。因此,即使當活動庫的切換發(fā)生時,仍可能使用棧來 防止較不安全代碼105訪問安全返回地址。
[0102] -旦已驗證狀態(tài)信息340的完整性,庫管理器軟件110就可使得處理在庫0的棧 305上所指定的返回地址300處繼續(xù)進行。
[0103] 盡管圖4示出了庫管理器110強制執(zhí)行安全域90中的若干安全軟件庫100之間 的保護的示例,但是還可能針對較不安全域80中的庫使用此技術。圖12示出了提供與安 全庫管理器110相似的較不安全庫管理器410的示例。安全庫管理器110選擇活動安全庫 100以及一個或多個不活動安全庫100,且較不安全庫管理器410選擇活動較不安全庫400 以及一個或多個不活動較不安全庫400。對域80、90任一者中的不活動庫的訪問420觸發(fā) 對應庫管理器110、410執(zhí)行庫切換。當訪問420越過域邊界70時,通過安全保護硬件40 執(zhí)行安全保護操作。當在相同域中的庫之間切換時,可通過臨時切換域來調(diào)用硬件40,或?qū)?應庫管理器110、410可執(zhí)行對應的安全保護操作,如圖6及圖7所示。以此方式,在幾乎沒 有硬件開銷的情況下,在較不安全域80及安全域90兩者中可保護大量軟件庫避免相互訪 問。
[0104] 在共同受讓的英國專利申請1220769. 2和1217531. 1以及美國專利申請 13/368, 419、13/680, 298、和13/741,709中描述了可由安全保護硬件40執(zhí)行的安全保護操 作的另外的示例,上述申請的內(nèi)容通過引用合并于此。
[
當前第4頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
探索| 手游| 育儿| 磴口县| 铜山县| 云阳县| 辰溪县| 科尔| 定安县| 宣汉县| 沁水县| 忻城县| 衡山县| 肥乡县| 德昌县| 枝江市| 沁源县| 赤峰市| 柳江县| 罗山县| 高密市| 保定市| 楚雄市| 松阳县| 明水县| 开远市| 克什克腾旗| 克东县| 乐安县| 马尔康县| 岱山县| 榕江县| 浪卡子县| 香格里拉县| 白水县| 达尔| 阜平县| 普宁市| 定陶县| 西乌珠穆沁旗| 盘锦市|