在更安全的執(zhí)行環(huán)境中標(biāo)識并執(zhí)行多個(gè)指令的子集的制作方法
【專利摘要】在此描述了用于標(biāo)識并加密用于在更安全執(zhí)行環(huán)境中執(zhí)行的多個(gè)指令的子集的裝置、計(jì)算機(jī)實(shí)現(xiàn)的方法、系統(tǒng)、設(shè)備及計(jì)算機(jī)可讀介質(zhì)的實(shí)施例。在各實(shí)施例中,該子集可包括單個(gè)進(jìn)入點(diǎn)和單個(gè)退出點(diǎn)。在各實(shí)施例中,該多個(gè)指令中的在該子集之前或之后的一個(gè)或多個(gè)指令可在具有第一安全等級的第一執(zhí)行環(huán)境中執(zhí)行。在各實(shí)施例中,該子集可在具有比該第一安全等級更高的第二安全等級的第二執(zhí)行環(huán)境中執(zhí)行。
【專利說明】在更安全的執(zhí)行環(huán)境中標(biāo)識并執(zhí)行多個(gè)指令的子集
[0001] 領(lǐng)域
[0002] 本發(fā)明實(shí)施例總體上涉及數(shù)據(jù)處理的【技術(shù)領(lǐng)域】,并且更具體地,涉及在更安全執(zhí) 行環(huán)境中標(biāo)識并執(zhí)行指令的子集。
[0003] 背景
[0004] 在此提供的背景描述是為了總體上展現(xiàn)本公開的上下文的目的。就在該背景部分 中描述的以及可不在提交時(shí)以其他方式作為現(xiàn)有技術(shù)有資格的說明書的方面的程度而言, 所列出的發(fā)明人的工作既不明確地也不隱含地被解釋為與本公開相抵觸的現(xiàn)有技術(shù)。除非 以其他方式在此指示的,在該部分中描述的方法不是本公開中的權(quán)利要求書的現(xiàn)有技術(shù)并 且不應(yīng)因?yàn)楸话ㄔ谠摬糠种卸徽J(rèn)為是現(xiàn)有技術(shù)。
[0005] 軟件盜版和/或篡改(諸如病毒或惡意軟件)是廣泛的。常規(guī)的反盜版/篡改措 施(諸如代碼混淆、加密和反調(diào)試技術(shù))不能充分地解決這個(gè)問題,尤其是針對大部分所確 定的軟件盜版黑客。更強(qiáng)健的反盜版/篡改措施(諸如硬件密鑰(例如密鑰環(huán)密碼狗上的 一次性密碼))雖然更加有效但是可能不方便、昂貴和/或不靈活。
[0006] 附圖簡要說明
[0007] 將結(jié)合附圖通過以下詳細(xì)描述容易地理解實(shí)施例。為了方便本描述,相同的參考 標(biāo)號指示相同的結(jié)構(gòu)元素。通過舉例而非通過限制在附圖的圖式中示出實(shí)施例。
[0008] 圖1示意性地示出根據(jù)各實(shí)施例可如何創(chuàng)建、向軟件分發(fā)者(諸如應(yīng)用商店)提 供、以及修改以便提供增強(qiáng)安全性的多個(gè)可執(zhí)行指令形式的軟件的示例。
[0009] 圖2示意性地示出根據(jù)各實(shí)施例可如何向最終用戶系統(tǒng)提供以及以增強(qiáng)安全性 的方式執(zhí)行該多個(gè)指令的示例。
[0010] 圖3至圖4示意性地描繪根據(jù)各實(shí)施例可由各計(jì)算設(shè)備實(shí)現(xiàn)的示例方法。
[0011] 圖5示意性地描繪根據(jù)各實(shí)施例可在其上實(shí)現(xiàn)所公開的方法和計(jì)算機(jī)可讀介質(zhì) 的示例計(jì)算設(shè)備。
[0012] 詳細(xì)描述
[0013] 在以下詳細(xì)描述中,參考形成其一部分并且通過可實(shí)踐的說明實(shí)施例示出的附 圖,其中,相同的標(biāo)號指示相同的部件。應(yīng)當(dāng)理解可使用其他實(shí)施例以及可在不背離本公開 的范圍的情況下做出結(jié)構(gòu)或邏輯改變。因此,不應(yīng)以限制性的意義解釋以下詳細(xì)描述,并且 實(shí)施例的范圍由所附權(quán)利要求書及其等效方案定義。
[0014] 各操作可被描述為按順序的多個(gè)離散動作或操作,其方式為最有助于理解所要求 保護(hù)的主題。然而,描述的順序不應(yīng)被解釋為暗示這些操作必需依賴于順序。具體而言,可 不按展示順序執(zhí)行這些操作??梢杂貌煌谒枋龅膶?shí)施例的順序執(zhí)行所描述的操作???執(zhí)行各附加操作和/或可在附加實(shí)施例中忽略所描述的操作。
[0015] 為了本公開的目的,短語"A和/或B"是指⑷、⑶、或(A和B)。為了本公開的 目的,短語 "A、B 和 / 或 C" 是指(A)、(B)、(C)、(A 和 B)、(A 和 C)、(B 和 C)或(A、B 和 C)。
[0016] 本描述可使用短語"在實(shí)施例中(in an embodiment) "或"在多個(gè)實(shí)施例中(in embodiments) ",其可各自指代相同或不同實(shí)施例中的一個(gè)或多個(gè)。此外,如結(jié)合本公開的 實(shí)施例所使用的,術(shù)語"包括(comprising) "、"包括(including) "、"具有(having)"等等 是同義的。
[0017] 如在此所使用的,術(shù)語"模塊"可指代、作為其一部分、或包括專用集成電路 ("ASIC")、電子電路、執(zhí)行一個(gè)或多個(gè)軟件或固件程序的處理器(共享、專用或分組)和/ 或存儲器(共享、專用或分組)、組合式邏輯電路、和/或其他合適的提供所描述的功能性的 組件。
[0018] 如在此所使用的,術(shù)語"軟件"可包括但不限于存儲在瞬態(tài)或非瞬態(tài)介質(zhì)上的一個(gè) 或多個(gè)指令,當(dāng)被計(jì)算設(shè)備執(zhí)行時(shí),該一個(gè)或多個(gè)指令使計(jì)算設(shè)備能執(zhí)行各動作。軟件的 非限制性示例包括文字處理器、電子表格、圖像處理應(yīng)用、游戲、媒體播放器、電子郵件客戶 端、網(wǎng)頁瀏覽器、操作系統(tǒng)、驅(qū)動器、服務(wù)器(例如網(wǎng)頁服務(wù)器)等等。
[0019] 現(xiàn)在參考圖1,軟件開發(fā)者計(jì)算設(shè)備100可以是由一個(gè)人或一組人使用的一個(gè)或 多個(gè)計(jì)算設(shè)備,例如軟件開發(fā)公司、企業(yè)、獨(dú)立軟件供應(yīng)商("ISV")等等,以便開發(fā)多個(gè)指 令102形式的軟件。在各實(shí)施例中,多個(gè)指令102可包括源代碼、二進(jìn)制指令、匯編代碼、腳 本語言、和/或任何其他類型的可被立即或在某種形式的預(yù)處理(諸如編譯、匯編、解釋等 等)之后執(zhí)行的指令。
[0020] 如圖1中的箭頭所示,在各實(shí)施例中,軟件開發(fā)者計(jì)算設(shè)備100可向軟件分發(fā)者計(jì) 算設(shè)備104提供多個(gè)指令102。在各實(shí)施例中,軟件開發(fā)者計(jì)算設(shè)備100可通過一個(gè)或多個(gè) 有線和/或無線通信網(wǎng)絡(luò)通過郵件或以其他方式物理地傳送存儲多個(gè)指令102的計(jì)算機(jī)可 讀介質(zhì)等等向軟件分發(fā)者計(jì)算設(shè)備104提供多個(gè)指令102。
[0021] 在各實(shí)施例中,軟件分發(fā)者計(jì)算設(shè)備104可托管通過任何介質(zhì)(諸如通過一個(gè)或 多個(gè)有線和/或無線通信網(wǎng)絡(luò))或物理地通過郵件或以其他方式物理地傳送計(jì)算機(jī)可讀介 質(zhì)來分發(fā)軟件的在線應(yīng)用商店或其他服務(wù)。在某些實(shí)施例中,軟件開發(fā)者計(jì)算設(shè)備100和 軟件分發(fā)者計(jì)算設(shè)備104可以是相同的計(jì)算設(shè)備或協(xié)作操作的多個(gè)計(jì)算設(shè)備。
[0022] 多個(gè)指令102自身可不包括對抗軟件盜版和/或篡改的充分的安全措施。用戶可 以能夠或者在執(zhí)行之前或者在執(zhí)行過程中查看多個(gè)指令102。這可允許用戶以不希望的方 式拷貝或修改多個(gè)指令102。例如,用戶可編輯多個(gè)指令102以便移除版權(quán)保護(hù)機(jī)制。即使 多個(gè)指令102是處于可容易地由人類讀取的形式(例如,對象代碼),所確定的軟件盜版可 具有逆向工程能力。作為另一個(gè)示例,黑客可篡改指令。
[0023] 因此,在各實(shí)施例中,多個(gè)指令102可例如由軟件轉(zhuǎn)換器105轉(zhuǎn)換成具有防止、降 低其可能性和/或總體上挫敗軟件盜版/篡改的特征的包106。具體而言,可標(biāo)識、提取和 /或加密多個(gè)指令102的分組或"子集",并且可與多個(gè)指令102中的剩余指令分離地存儲 這些分組或"子集"。這些指令子集可被配置成用于在防止用戶訪問指令子集的分離的、更 安全的環(huán)境中執(zhí)行。
[0024] 軟件轉(zhuǎn)換器105可以是軟件和/或硬件的任何組合。在圖1中,其被示出為在軟 件分發(fā)者計(jì)算設(shè)備104上操作。然而,這不意味著是限制性的,并且軟件轉(zhuǎn)換器105可在其 他計(jì)算設(shè)備(諸如軟件開發(fā)者計(jì)算設(shè)備100)上操作。在一個(gè)實(shí)施例中,軟件轉(zhuǎn)換器105可 以是多個(gè)邏輯的組合,各自具有單獨(dú)的目的,如將在以下描述的。在由軟件轉(zhuǎn)換器105轉(zhuǎn)換 之后,包106可包括經(jīng)修改的多個(gè)指令103、一個(gè)或多個(gè)經(jīng)加密的子集108和/或調(diào)度程序 例程109。
[0025] 現(xiàn)在參考圖2,經(jīng)轉(zhuǎn)換的包106可被分發(fā)到一個(gè)或多個(gè)最終用戶以便在最終用戶 計(jì)算設(shè)備110上執(zhí)行。如將在以下更詳細(xì)地描述的,最終用戶計(jì)算設(shè)備110可被配置成用 于在具有第一安全等級的第一執(zhí)行環(huán)境112中執(zhí)行經(jīng)修改的多個(gè)指令103中的在原始多個(gè) 指令102中的子集108之前或之后的指令。最終用戶計(jì)算設(shè)備110可被配置成用于在具有 比第一安全等級更安全的第二安全等級的第二執(zhí)行環(huán)境114中執(zhí)行調(diào)度程序例程109和子 集108。在各實(shí)施例中,在第二執(zhí)行環(huán)境114中,可對用戶隱藏指令及其執(zhí)行性質(zhì)。例如,在 第二執(zhí)行環(huán)境114中執(zhí)行的指令可被存儲在安全存儲器中。在第二執(zhí)行環(huán)境114中執(zhí)行子 集108可使得用戶更加難以拷貝子集108或?qū)ζ溥M(jìn)行逆向工程。
[0026] 返回參考圖1,為了將多個(gè)指令102轉(zhuǎn)換成包106用于分發(fā),軟件轉(zhuǎn)換器105可標(biāo) 識、提?。ㄈ缬商摼€框和相應(yīng)的虛線箭頭所指示的)和/或加密多個(gè)指令102的適合于在 第二執(zhí)行環(huán)境114中執(zhí)行的一個(gè)或多個(gè)子集108。可基于各標(biāo)準(zhǔn)標(biāo)識適合于在第二執(zhí)行環(huán) 境114中執(zhí)行的指令的子集108。在各實(shí)施例中,具有單個(gè)進(jìn)入點(diǎn)和單個(gè)退出點(diǎn)的指令分 組可適合于在第二執(zhí)行環(huán)境114中執(zhí)行。在各實(shí)施例中,合適的子集108可以是超級基礎(chǔ) 塊("SBB"),其可包括整數(shù)指令,當(dāng)被執(zhí)行時(shí),該整數(shù)指令在通用寄存器("GPR")(諸如 RAX-R15及其部分)上操作。在各實(shí)施例中,子集108可包括其他類型的指令,諸如直接跳 躍。在各實(shí)施例中,當(dāng)子集108被重新定位到最終用戶計(jì)算設(shè)備(例如110)上的分離(例 如安全)存儲器時(shí),根據(jù)安全環(huán)境的參數(shù),子集108內(nèi)的指令可引用安全存儲器之外的存儲 器。
[0027] 不是多個(gè)指令102中的所有指令分組都可適合于在第二執(zhí)行環(huán)境114中執(zhí)行。例 如,將在非GPR(諸如參考指令指針("RIP")或參考堆棧指針("RSP")、諸如PUSH或POP 指令)上操作的指令分組可能不適合在安全環(huán)境中執(zhí)行??赡懿贿m合在更安全的執(zhí)行環(huán)境 中執(zhí)行的另一指令分組可以是包括一個(gè)或多個(gè)CALL (調(diào)用)指令的指令分組,因?yàn)镃ALL指 令可要求異常處理支持并且以其他方式可增加復(fù)雜度。在各實(shí)施例中,可使用由美國加利 福尼亞州圣克拉拉市的英特爾⑧公司提供的工具(諸如用于程序的動態(tài)插樁的PIN工具) 標(biāo)識適用于在第二執(zhí)行環(huán)境114中執(zhí)行的指令分組。
[0028] 可向多個(gè)指令102(以便創(chuàng)建經(jīng)修改的多個(gè)指令103)和/或向子集添加各指令, 以便促進(jìn)不同執(zhí)行環(huán)境之間的重定向。例如,可在任何子集108之前向多個(gè)指令102添加 用于初始化第二執(zhí)行環(huán)境114的一個(gè)或多個(gè)指令。在圖1中可見這種情況的示例,其中已 經(jīng)向經(jīng)修改的多個(gè)指令103在接近開始處添加 INIT SE⑶RE ENVIRONMENT指令。在各實(shí)施 例中,可在經(jīng)修改的多個(gè)指令103的進(jìn)入點(diǎn)之前插入這種初始化指令。
[0029] 附加地,可向多個(gè)指令102插入用于將執(zhí)行從第一執(zhí)行環(huán)境112重定向到第二 執(zhí)行環(huán)境114的指令。例如,從多個(gè)指令102提取的作為子集108的指令分組可被替 換為用于將執(zhí)行重定向到第二執(zhí)行環(huán)境114的一個(gè)或多個(gè)指令(可被稱為"蹦床代碼 (trampoline code)")。在圖1中可見這種情況的示例,其中已經(jīng)在經(jīng)修改的多個(gè)指令103 中用TRAMPOLINE代碼替換了每個(gè)子集108。
[0030] 在各實(shí)施例中,用于在第二執(zhí)行環(huán)境114中執(zhí)行的子集108可與經(jīng)修改的多個(gè)指 令103分離地存儲。在圖1中,例如,子集108封裝有調(diào)度程序例程109。如以下將更詳細(xì) 地描述的,TRAMPOLINE指令可調(diào)用調(diào)度程序例程109,該調(diào)度程序例程進(jìn)而可調(diào)用執(zhí)行子 集108。在某些實(shí)施例中,可向子集108添加將執(zhí)行從子集108返回到調(diào)度程序例程109的 指令。例如,在圖1中,在每個(gè)子集108的末尾插入RETURN指令。這可致使執(zhí)行在子集108 已經(jīng)被執(zhí)行之后返回調(diào)度程序例程109。
[0031] 如果多個(gè)指令102在沒有首先由所公開的方法修改的情況下被執(zhí)行,包含在其中 的指令將在單個(gè)執(zhí)行上下文中執(zhí)行。如在此所使用的,術(shù)語"執(zhí)行上下文"可指代其中執(zhí)行 指令的上下文并且可包括在程序執(zhí)行過程中存儲在GPR和/FLAG或寄存器(例如EFLAG、 RFLAG)中的各個(gè)值。盡管存儲在這些寄存器中的值可在執(zhí)行過程中被更改,它們可以用大 概由正在執(zhí)行的計(jì)算機(jī)程序控制并解釋的方式被更改。
[0032] 然而,包106可包括可在不同的執(zhí)行環(huán)境中執(zhí)行的多個(gè)指令集,例如經(jīng)修改的多 個(gè)指令103和子集108。在不同的執(zhí)行環(huán)境中重定向執(zhí)行可以用多個(gè)指令102中可能未預(yù) 測到或解釋的方式更改執(zhí)行上下文。這可導(dǎo)致不可預(yù)測的和/或錯(cuò)誤的結(jié)果。因此,在各 實(shí)施例中,在執(zhí)行環(huán)境之間在過渡之前可保存執(zhí)行上下文并且在過渡之后可恢復(fù)。
[0033] 在各實(shí)施例中,可例如由軟件轉(zhuǎn)換器105在包106的各個(gè)點(diǎn)處添加用于保存執(zhí)行 上下文的一個(gè)或多個(gè)指令(在此稱為PRESERVE EC),以便在將執(zhí)行從一個(gè)執(zhí)行環(huán)境重定向 到另一個(gè)執(zhí)行環(huán)境之前保存執(zhí)行上下文。在各實(shí)施例中,PRESERVE EC指令可致使將存儲 在GPR和/或FLAG寄存器中的值的快照存儲在存儲器中。在圖1中,在trampoline代碼 的每個(gè)實(shí)例之前,PRESERVE EC指令已經(jīng)被添加到經(jīng)修改的多個(gè)指令103。
[0034] PRESERVE EC指令還可被結(jié)合到調(diào)度程序例程109中,以便當(dāng)將執(zhí)行從第二執(zhí)行 環(huán)境114重定向回第一執(zhí)行環(huán)境112時(shí)保存執(zhí)行上下文。例如,在圖1中,在用于調(diào)用子集 108的指令之后,PRESERVE EC指令已經(jīng)被結(jié)合到調(diào)度程序例程109中。
[0035] 在從一個(gè)執(zhí)行環(huán)境重定向到另一個(gè)執(zhí)行環(huán)境之后,可從快照恢復(fù)執(zhí)行上下文。在 各實(shí)施例中,RESTORE EC可被插入到多個(gè)指令102中和/或包括在調(diào)度程序例程109中。 例如,在圖1中,在trampoline代碼的每個(gè)實(shí)例之后,RESTORE EC指令已經(jīng)被添加到經(jīng)修 改的多個(gè)指令103。類似地,在定位并調(diào)用特定的子集之前,RESTORE EC指令被包括在調(diào)度 程序例程109中。
[0036] 在各實(shí)施例中,經(jīng)加密的子集108可例如由軟件轉(zhuǎn)換器105連結(jié)以便形成經(jīng)連結(jié) 的子集116。在各實(shí)施例中,軟件轉(zhuǎn)換器105可生成經(jīng)連結(jié)的子集的索引。在各實(shí)施例中, 索引可包括與至少一個(gè)子集相關(guān)聯(lián)的偏移。在各實(shí)施例中,該偏移可作為參數(shù)被傳遞給致 使重定向到第二執(zhí)行環(huán)境114的trampoline代碼。在各實(shí)施例中,索引還可包括與至少一 個(gè)子集108相關(guān)聯(lián)的尺寸,該尺寸也可被作為參數(shù)傳遞到trampoline代碼。在各實(shí)施例中, 索引可附加地或可替代地包括與至少一個(gè)子集108相關(guān)聯(lián)的相對虛擬地址("RVA")。在 各實(shí)施例中,在提取之前,RVA可以是原始多個(gè)指令102中的子集的地址。
[0037] 現(xiàn)在將參照圖2描述可如何執(zhí)行包106的示例。執(zhí)行可在第一執(zhí)行環(huán)境112中發(fā) 起,在經(jīng)修改的多個(gè)指令103的開始處開始。例如,如上所述可非常接近或者甚至在經(jīng)修改 的多個(gè)指令103的進(jìn)入點(diǎn)之前的INIT SE⑶RE ENVIRONMENT指令可被執(zhí)行以便發(fā)起第二執(zhí) 行環(huán)境114。
[0038] 經(jīng)修改的多個(gè)指令103可被執(zhí)行,直到達(dá)到PRESERVE EC指令。在該點(diǎn)處,可通過 生成GPR FLAGS值的快照并且將這些值存儲器存儲器中來保存執(zhí)行上下文。在PRESERVE EC指令之后,TRAMPOLINE代碼可將執(zhí)行重定向到第二執(zhí)行環(huán)境114,如箭頭A所示。包含 在TRAMPOLINE代碼中的一個(gè)或多個(gè)函數(shù)(諸如InvokeSEO)可將所保存的執(zhí)行上下文作 為參數(shù)接收(例如,作為到存儲GPR FLAG快照的存儲器的指針)。InvokeSEQ也可接收其 他參數(shù),諸如有待調(diào)用的子集108的RVA、偏移和/或尺寸。
[0039] 然后執(zhí)行可在第二執(zhí)行環(huán)境114中繼續(xù)。RESTORE EC指令可致使從快照恢復(fù)所保 存的GPR/FLAG的狀態(tài)。接下來,可在所連結(jié)的子集116中定位要調(diào)用的子集108。在各實(shí) 施例中,LOCATE SUBSET函數(shù)可接收與子集相關(guān)聯(lián)的偏移或RVA作為輸入,其可使調(diào)度程序 例程109能在所連結(jié)的子集116中定位適當(dāng)?shù)淖蛹?08。一旦被定位,INVOKE SUBSET指令 可跳躍到執(zhí)行包含在適當(dāng)?shù)淖蛹?08中的指令,如箭頭B所示。
[0040] 如上所述,可已經(jīng)在每個(gè)子集108的末尾插入了 RETURN指令。一旦子集108的執(zhí) 行到達(dá)了這個(gè)指令,則執(zhí)行可返回調(diào)度程序例程109,如箭頭C所示。接下來,調(diào)度程序例程 109的PRESERVE EC指令可被執(zhí)行以便保存執(zhí)行上下文。EXIT SECURE ENVIRONMENT指令 可將執(zhí)行重定向回第一執(zhí)行環(huán)境112,如箭頭D所示。在重定向回第一執(zhí)行環(huán)境112之后, RESTORE EC指令可被執(zhí)行以便恢復(fù)由調(diào)度程序例程109保存的GPR/FLAG的狀態(tài)。
[0041] 因此,迄今為止已經(jīng)總體上描述了上述并且在圖1和圖2中示出的實(shí)施例??梢?用各種方式實(shí)現(xiàn)特定方面。例如,在一個(gè)示例實(shí)施例中,軟件轉(zhuǎn)換器105可將多個(gè)指令102 轉(zhuǎn)換成包106,如下所述。與軟件轉(zhuǎn)換器105相關(guān)聯(lián)的可在此被稱為"片段尋檢器"的邏輯 可搜索多個(gè)指令102以便找到適合在更安全的執(zhí)行環(huán)境中執(zhí)行的子集108。片段尋檢器可 輸出包含所有已標(biāo)識的子集的第一頭文件,其中在每個(gè)子集之間插入RETURN指令。片段尋 檢器可輸出包括用于每個(gè)子集的五元組的索引的第二文件。每個(gè)五元組可包括包含所連結(jié) 的子集的頭文件內(nèi)的子集的RVA和尺寸(例如,以字節(jié)為單位)。片段尋檢器可輸出包含在 原始多個(gè)指令102中通過其RVA分類的子集描述符陣列的第三文件(其也可以是頭文件)。
[0042] 第二文件(包含索引)以及原始多個(gè)指令102可由與軟件轉(zhuǎn)換器105相關(guān)聯(lián)的另 一個(gè)邏輯用作輸入以便創(chuàng)建經(jīng)修改的多個(gè)指令103。分別包含所連結(jié)的子集和子集描述符 陣列的第一和第三文件可被用作到與軟件轉(zhuǎn)換器105相關(guān)聯(lián)的同一或仍另一個(gè)邏輯的輸 入,以便生成將被在第二執(zhí)行環(huán)境114中執(zhí)行的指令,包括調(diào)度程序例程109和該一個(gè)或多 個(gè)經(jīng)加密的子集108。
[0043] 除調(diào)度程序例程109和子集108之外,要在第二執(zhí)行環(huán)境114中執(zhí)行的指令還可 包括執(zhí)行與初始化第二執(zhí)行環(huán)境114有關(guān)的各種操作的初始化程序例程118。例如,初始化 程序例程118可包括用于獲得解密密鑰(例如從用戶)的一個(gè)或多個(gè)指令。初始化程序例 程118還可包括用于在更安全的執(zhí)行環(huán)境中例如使用從用戶獲得的解密密鑰解密子集108 的一個(gè)或多個(gè)指令。在各實(shí)施例中,當(dāng)初始化第二初始化程序例程114時(shí)可調(diào)用初始化程 序例程118。
[0044] 在圖3和圖4中描繪了可由軟件轉(zhuǎn)換器105實(shí)現(xiàn)的示例方法300。應(yīng)當(dāng)假設(shè)最終 用戶計(jì)算設(shè)備(諸如最終用戶計(jì)算設(shè)備110)至少具有第一執(zhí)行環(huán)境112(例如默認(rèn)執(zhí)行環(huán) 境)。應(yīng)當(dāng)理解盡管以具體的順序示出了方法300的操作,這并不意味著是限制性的,并且 可以用任何其他順序執(zhí)行這些操作。附加地或可替代地,可添加或忽略這些操作中的一個(gè) 或多個(gè)。
[0045] 在作為輸入接收到多個(gè)指令102之后,在框302,初始化第二執(zhí)行環(huán)境114的一個(gè) 或多個(gè)指令可例如由軟件轉(zhuǎn)換器105添加到多個(gè)指令102。在框304,可標(biāo)識并提取一組多 個(gè)指令102作為子集108。例如,可例如通過從多個(gè)指令102移除并分離地存儲來標(biāo)識并提 取具有單個(gè)進(jìn)入點(diǎn)和退出點(diǎn)的多組指令。在框306,可例如由軟件轉(zhuǎn)換器105將用于將執(zhí)行 從第一執(zhí)行環(huán)境112重定向到第二執(zhí)行環(huán)境114的一個(gè)或多個(gè)指令添加到多個(gè)指令從而替 換在框304提取的子集108。
[0046] 在框308,可例如由軟件轉(zhuǎn)換器105將用于保存執(zhí)行上下文的一個(gè)或多個(gè)指令添 加到多個(gè)指令102,例如在將執(zhí)行從第一執(zhí)行環(huán)境重定向到第二執(zhí)行環(huán)境的指令之前。如上 所述,這可允許在具有如在第一執(zhí)行環(huán)境中可用的那樣可用的相同的GPR/FLAG值的第二 執(zhí)行環(huán)境中執(zhí)行指令子集。
[0047] 在框310,可例如由軟件轉(zhuǎn)換器105將用于將執(zhí)行從第二執(zhí)行環(huán)境重定向回第一 執(zhí)行環(huán)境的一個(gè)或多個(gè)指令添加到調(diào)度程序例程109。在框312,可例如由軟件轉(zhuǎn)換器105 將用于在從第一執(zhí)行環(huán)境過渡到第二執(zhí)行環(huán)境之后恢復(fù)執(zhí)行上下文的一個(gè)或多個(gè)指令添 加到調(diào)度程序例程109。
[0048] 方法300在圖4中繼續(xù)。在框314,可例如由軟件轉(zhuǎn)換器105將用于保存執(zhí)行上下 文的一個(gè)或多個(gè)指令添加到調(diào)度程序例程109,例如在將執(zhí)行重定向回第一執(zhí)行環(huán)境的指 令之前。在框316,可例如由軟件轉(zhuǎn)換器105將用于恢復(fù)執(zhí)行上下文的一個(gè)或多個(gè)指令添加 到多個(gè)指令102。這可允許在具有如在第二執(zhí)行環(huán)境中可用的那樣可用的相同的GPR/FLAG 值的第一執(zhí)行環(huán)境中執(zhí)行多個(gè)指令102。
[0049] 在框318,可加密經(jīng)標(biāo)識并提取的子集108。在各實(shí)施例中,子集108可保持加密, 直到在最終用戶計(jì)算設(shè)備處執(zhí)行。在各實(shí)施例中,當(dāng)執(zhí)行時(shí),可在例如與第二執(zhí)行環(huán)境114 相關(guān)聯(lián)的安全存儲器中解密子集108,從而使得經(jīng)解密的指令對用戶不可見。
[0050] 可標(biāo)識、提取并加密多于一個(gè)子集108。例如,對于給定的計(jì)算機(jī)程序(例如多個(gè) 指令102),可存在可適合在第二、更安全的環(huán)境中執(zhí)行的任何數(shù)量的指令分組。
[0051] 在圖4中可見這種情況的示例。假設(shè)結(jié)合框302至318提及的子集是第一子集。 在框320,可以用與標(biāo)識、提取并加密第一子集相同的方法標(biāo)識、提取并加密第二子集。在各 實(shí)施例中,在框322,可連結(jié)多個(gè)經(jīng)加密的子集(諸如第一和第二子集)。以此方式,它們可 被存儲在單個(gè)存儲器塊中,在某些實(shí)施例中,該單個(gè)存儲器塊可與存儲多個(gè)指令102的存 儲器塊分離。
[0052] 在各實(shí)施例中,在框324,可例如由軟件轉(zhuǎn)換器105生成索引。如上所述,索引可包 括有關(guān)所連結(jié)的子集的各種信息,諸如與所連結(jié)的子集中的至少一個(gè)相關(guān)聯(lián)的RVA、和/或 尺寸/偏移。
[0053] 圖5示出根據(jù)各實(shí)施例的示例計(jì)算設(shè)備500。計(jì)算設(shè)備500可包括多個(gè)組件、處理 器504和至少一個(gè)通信芯片506。在各實(shí)施例中,處理器504可以是處理器核或者可包括多 個(gè)處理器核。在各實(shí)現(xiàn)方式中,至少一個(gè)通信芯片506還可物理地并電氣地耦合到處理器 504。在進(jìn)一步的實(shí)現(xiàn)方式中,通信芯片506可以是處理器504的一部分。在各實(shí)施例中, 計(jì)算設(shè)備504可包括印刷電路板("PCB")502。對于這些實(shí)施例,處理器504和通信芯片 506可被布置在其上。在替代實(shí)施例中,各實(shí)施例可在不采用PCB502的情況下耦合。
[0054] 取決于其應(yīng)用,計(jì)算設(shè)備500可包括可或可不物理地和電氣地耦合到PCB 502的 其他組件。這些其他組件包括但不限于易失性存儲器(例如動態(tài)隨機(jī)存取存儲器508,也被 稱為"DRAM")、非易失性存儲器(例如只讀存儲器510,也被稱為"ROM")、快閃存儲器512、 圖形處理器514、軟件轉(zhuǎn)換器105 (在圖5中被示出為DRAM 508中的軟件但也可以是硬件)、 數(shù)字信號處理器(未示出)、加密處理器(未示出)、輸入輸出("I/O")控制器516、天線 518、顯示器(未示出)、觸摸屏顯示器520、觸摸屏控制器522、電池524、音頻編解碼器(未 示出)、視頻編解碼器(未示出)、全球定位系統(tǒng)("GPS")設(shè)備528、羅盤530、加速度計(jì) (未示出)、陀螺儀(未示出)、揚(yáng)聲器532、照相機(jī)534、以及大容量存儲設(shè)備(諸如硬盤驅(qū) 動器、固態(tài)驅(qū)動器、致密盤("CD")、數(shù)字通用盤("DVD")未示出)等等。在各實(shí)施例中, 處理器504可與其他組件被集成到同一管芯上以便形成片上系統(tǒng)("SoC")。
[0055] 在各實(shí)施例中,易失性存儲器(例如DRAM 508)、非易失性存儲器(例如ROM 510)、快閃存儲器512、以及大容量存儲設(shè)備可包括被配置成用于響應(yīng)于由處理器504執(zhí)行 使計(jì)算設(shè)備500能通過操作軟件轉(zhuǎn)換器105實(shí)踐方法300的所有或選定方面的編程指令。 例如,這些存儲器組件中的一個(gè)或多個(gè)(諸如易失性存儲器(例如DRAM 508)、非易失性存 儲器(例如ROM 510)、快閃存儲器512、以及大容量存儲設(shè)備)可包括被配置成用于使能計(jì) 算設(shè)備500實(shí)踐所公開的技術(shù)(諸如方法300的所有或選定方面)的指令的臨時(shí)和/或永 久拷貝。
[0056] 通信芯片506可使得能夠進(jìn)行有線和/或無線通信以便向和從計(jì)算設(shè)備500傳遞 數(shù)據(jù)。術(shù)語"無線"及其衍生物可用于描述可通過使用經(jīng)調(diào)制的電磁輻射經(jīng)由非固態(tài)介質(zhì) 傳遞數(shù)據(jù)的電路、設(shè)備、系統(tǒng)、方法、技術(shù)、通信信道等等。該術(shù)語不暗示相關(guān)聯(lián)的設(shè)備不包 含任何電線,盡管在某些實(shí)施例中它們可能包含。通信芯片506可實(shí)現(xiàn)多種無線標(biāo)準(zhǔn)或協(xié) 議中的任何一種,包括但不限于Wi-Fi (IEEE 802. 1802. 11家族)、WiMAX (IEEE 802. 16家 族)、IEEE 802. 20、長期演進(jìn)(LTE)、Ev-DO、HSPA+、HSDPA+、HSUPA+、EDGE、GSM、GPRS、CDMA、 TDMA、DECT、藍(lán)牙、其衍生物,以及任何其他被指定為2G、3G、4G、5G的無線協(xié)議等等。計(jì)算設(shè) 備500可包括多個(gè)通信芯片506。例如,第一通信芯片506可專用于短距離無線通信(諸 如Wi-Fi和藍(lán)牙),而第二通信芯片506可專用于長距離無線通信(諸如GPS、EDGE、GPRS、 CDMA、WiMAX、LTE、Εν-DO 等等)。
[0057] 在各實(shí)施例中,處理器504(或其處理器核之一)可與軟件轉(zhuǎn)換器105封裝在一 起。對于一個(gè)實(shí)施例,處理器504 (或其處理器核之一)可與軟件轉(zhuǎn)換器105封裝在一起, 以便形成系統(tǒng)級封裝(SiP)。對于一個(gè)實(shí)施例,處理器504 (或其處理器核之一)可與軟件 轉(zhuǎn)換器105封裝在一起,并且可集成在同一管芯上。對于一個(gè)實(shí)施例,處理器504 (或其處 理器核之一)可與軟件轉(zhuǎn)換器105封裝在一起,以便形成片上系統(tǒng)(SoC)。
[0058] 在各實(shí)現(xiàn)方式中,計(jì)算設(shè)備500可以是膝上計(jì)算機(jī)、上網(wǎng)本計(jì)算機(jī)、筆記本計(jì)算 機(jī)、超極本計(jì)算機(jī)、智能電話、平板計(jì)算機(jī)、個(gè)人數(shù)字助理("PDA")、超移動PC、移動電話、桌 上計(jì)算機(jī)、服務(wù)器、打印機(jī)、掃描儀、監(jiān)視器、機(jī)頂盒、娛樂控制裝置、數(shù)碼相機(jī)、便攜式音樂 播放器、或數(shù)字錄像機(jī)。在進(jìn)一步的實(shí)現(xiàn)方式中,計(jì)算設(shè)備500可以是處理數(shù)據(jù)的任何其他 電子設(shè)備。
[0059] 在此描述了用于標(biāo)識并加密多個(gè)指令的子集的裝置、計(jì)算機(jī)實(shí)現(xiàn)的方法、系統(tǒng)、設(shè) 備及計(jì)算機(jī)可讀介質(zhì)(瞬態(tài)的和非瞬態(tài)的)的實(shí)施例。在各實(shí)施例中,該子集可包括單個(gè) 進(jìn)入點(diǎn)和單個(gè)退出點(diǎn)。在各實(shí)施例中,該多個(gè)指令中的在該子集之前或之后的一個(gè)或多個(gè) 指令可在具有第一安全等級的第一執(zhí)行環(huán)境中執(zhí)行。在各實(shí)施例中,該子集可在具有比該 第一安全等級更高的第二安全等級的第二執(zhí)行環(huán)境中執(zhí)行。
[0060] 在各實(shí)施例中,用于將執(zhí)行從該第二執(zhí)行環(huán)境返回該第一執(zhí)行環(huán)境的一個(gè)或多個(gè) 指令可與該子集相關(guān)聯(lián)。在各實(shí)施例中,用于初始化該第二執(zhí)行環(huán)境的一個(gè)或多個(gè)指令可 被添加到該子集之前的該多個(gè)指令。在各實(shí)施例中,用于在將執(zhí)行從該第一執(zhí)行環(huán)境重定 向到該第二執(zhí)行環(huán)境之前保存執(zhí)行上下文的一個(gè)或多個(gè)指令可被添加到該多個(gè)指令。在各 實(shí)施例中,可添加用于在執(zhí)行從該第二執(zhí)行環(huán)境重定向到該第一執(zhí)行環(huán)境之后恢復(fù)執(zhí)行上 下文的一個(gè)或多個(gè)指令。
[0061] 在各實(shí)施例中,該子集可以是第一子集。在各實(shí)施例中,可標(biāo)識并加密第二子集。 在各實(shí)施例中,該第一和第二子集可被連結(jié)。在各實(shí)施例中,可生成所連結(jié)的第一和第二子 集的索引。在各實(shí)施例中,該索引可包括與該第一和第二子集中的至少一個(gè)相關(guān)聯(lián)的相對 虛擬地址、偏移和/或尺寸。
[0062] 在各實(shí)施例中,可生成用于在將執(zhí)行重定向到該第二執(zhí)行環(huán)境中時(shí)被調(diào)用的調(diào)度 程序例程。在各實(shí)施例中,該調(diào)度程序例程自身可調(diào)用該子集并且在執(zhí)行該子集之后將執(zhí) 行重定向回該第一執(zhí)行環(huán)境。在各實(shí)施例中,用于在調(diào)用該子集之前恢復(fù)執(zhí)行上下文以及 在執(zhí)行該子集之后保存該執(zhí)行上下文的一個(gè)或多個(gè)指令可被添加到該調(diào)度程序例程。
[0063] 在各實(shí)施例中,至少一種計(jì)算機(jī)可讀介質(zhì)可具有在其中實(shí)施的計(jì)算機(jī)可讀代碼。 該計(jì)算機(jī)可讀代碼可包括:第一指令集,用于在具有第一安全等級的計(jì)算設(shè)備的第一執(zhí)行 環(huán)境中被執(zhí)行;以及第二指令集,包括單個(gè)進(jìn)入點(diǎn)和單個(gè)退出點(diǎn),用于在具有比該第一安全 等級更安全的第二安全等級的該計(jì)算設(shè)備的第二執(zhí)行環(huán)境下被執(zhí)行。在各實(shí)施例中,該第 一指令集可包括用于將執(zhí)行重定向到該第二執(zhí)行環(huán)境的至少一個(gè)指令以及在將執(zhí)行重定 向到該第二執(zhí)行環(huán)境之前保存執(zhí)行上下文的至少一個(gè)指令。在各實(shí)施例中,該第二指令集 可包括用于恢復(fù)該執(zhí)行上下文的至少一個(gè)指令。
[0064] 在各實(shí)施例中,該第一指令集可包括用于在將執(zhí)行重定向到該第二執(zhí)行環(huán)境的該 至少一個(gè)指令之前初始化該第二執(zhí)行環(huán)境的一個(gè)或多個(gè)指令。在各實(shí)施例中,包括單個(gè)進(jìn) 入點(diǎn)和單個(gè)退出點(diǎn)的第三指令集可被配置成用于在該第二執(zhí)行環(huán)境中執(zhí)行。
[0065] 在各實(shí)施例中,該第二和第三指令集可被加密并連結(jié)。在各實(shí)施例中,該連結(jié)第一 和第二指令集的索引可包括與該第一和第二指令集中的至少一個(gè)相關(guān)聯(lián)的相對虛擬地址。 在各實(shí)施例中,該索引可包括與該第二和第三子集中的至少一個(gè)相關(guān)聯(lián)的尺寸和偏移。 [0066] 在各實(shí)施例中,一個(gè)或多個(gè)指令可形成調(diào)度程序例程。在各實(shí)施例中,該調(diào)度程序 例程可在將執(zhí)行重定向到該第二執(zhí)行環(huán)境中時(shí)被調(diào)用。在各實(shí)施例中,該調(diào)度程序例程可 調(diào)用該第二指令集并且在執(zhí)行該第二指令集之后將執(zhí)行重定向回該第一執(zhí)行環(huán)境。
[0067] 在各實(shí)施例中,該第二指令集可被加密。在各實(shí)施例中,該介質(zhì)可包括形成用于在 第二執(zhí)行環(huán)境中執(zhí)行的初始化程序例程的一個(gè)或多個(gè)指令,該初始化程序例程解密該第二 指令集。
[0068] 盡管已經(jīng)在此為了描繪的目的示出并描述了某些實(shí)施例,本申請旨在覆蓋在此所 討論的實(shí)施例的任何改編或變化。因此,主要旨在在此描述的實(shí)施例僅由權(quán)利要求書限制。 [0069] 本公開引用"一個(gè)"或"第一"要素或其等效物時(shí),這種公開包括一個(gè)或多個(gè)這種要 素,既不要求也不排除兩個(gè)或更多個(gè)這種要素。進(jìn)一步地,用于所標(biāo)識的要素的順序指示符 (例如第一、第二或第三)用于區(qū)分要素,并且不表明或暗示所要求的或所限制的這些要素 的數(shù)量,它們也不表明這些要素的具體位置或順序,除非以其他方式明確地指明。
【權(quán)利要求】
1. 至少一種在其中實(shí)施計(jì)算機(jī)可讀代碼的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可讀代碼被配 置成使計(jì)算設(shè)備能響應(yīng)于所述代碼的執(zhí)行標(biāo)識并加密多個(gè)指令的子集,其中,所述子集包 括單個(gè)進(jìn)入點(diǎn)和單個(gè)退出點(diǎn),并使所述多個(gè)指令中的在所述子集之前或之后的一個(gè)或多個(gè) 指令能在具有第一安全等級的第一執(zhí)行環(huán)境中執(zhí)行,以及使所述子集在具有比所述第一安 全等級更安全的第二安全等級的第二執(zhí)行環(huán)境中執(zhí)行。
2. 如權(quán)利要求1所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述代碼響應(yīng)于由所 述計(jì)算設(shè)備執(zhí)行進(jìn)一步使所述計(jì)算設(shè)備能將所述子集與用于將執(zhí)行從所述第二執(zhí)行環(huán)境 返回到所述第一執(zhí)行環(huán)境的一個(gè)或多個(gè)指令進(jìn)行關(guān)聯(lián)。
3. 如權(quán)利要求1所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述代碼響應(yīng)于由所 述計(jì)算設(shè)備執(zhí)行進(jìn)一步使所述計(jì)算設(shè)備能將用于初始化所述第二執(zhí)行環(huán)境的一個(gè)或多個(gè) 指令在所述子集之前添加到所述多個(gè)指令。
4. 如權(quán)利要求1所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述代碼響應(yīng)于由所 述計(jì)算設(shè)備執(zhí)行進(jìn)一步使所述計(jì)算設(shè)備能將用于在將執(zhí)行從所述第一執(zhí)行環(huán)境重定向到 所述第二執(zhí)行環(huán)境之前保存執(zhí)行上下文的一個(gè)或多個(gè)指令添加到所述多個(gè)指令。
5. 如權(quán)利要求4所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述代碼響應(yīng)于由所 述計(jì)算設(shè)備執(zhí)行進(jìn)一步使所述計(jì)算設(shè)備能將用于在執(zhí)行從所述第二執(zhí)行環(huán)境返回到所述 第一執(zhí)行環(huán)境之后恢復(fù)所述執(zhí)行上下文的一個(gè)或多個(gè)指令添加到所述多個(gè)指令。
6. 如權(quán)利要求1所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述子集是第一子集, 并且所述代碼響應(yīng)于由所述計(jì)算設(shè)備執(zhí)行進(jìn)一步使所述計(jì)算設(shè)備能標(biāo)識并加密第二子集 以及連結(jié)所述第一和第二子集,所述第一和第二子集用于在所述第二執(zhí)行環(huán)境中執(zhí)行。
7. 如權(quán)利要求6所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述代碼響應(yīng)于由所 述計(jì)算設(shè)備執(zhí)行進(jìn)一步使所述計(jì)算設(shè)備能生成所述經(jīng)連結(jié)的第一和第二子集的索引,所述 索引包括與所述第一和第二子集中的至少一個(gè)相關(guān)聯(lián)的相對虛擬地址。
8. 如權(quán)利要求6所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述代碼響應(yīng)于由所 述計(jì)算設(shè)備執(zhí)行進(jìn)一步使所述計(jì)算設(shè)備能生成所述經(jīng)連結(jié)的第一和第二子集的索引,所述 索引包括與所述第一和第二子集中的至少一個(gè)相關(guān)聯(lián)的尺寸和偏移。
9. 如權(quán)利要求1所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述代碼響應(yīng)于由所 述計(jì)算設(shè)備執(zhí)行進(jìn)一步使所述計(jì)算設(shè)備能生成在將執(zhí)行重定向到所述第二執(zhí)行環(huán)境中時(shí) 將被調(diào)用的調(diào)度程序例程,所述調(diào)度程序例程調(diào)用所述子集并且在執(zhí)行所述子集之后將執(zhí) 行重定向回所述第一執(zhí)行環(huán)境。
10. 如權(quán)利要求9所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述代碼響應(yīng)于由所 述計(jì)算設(shè)備執(zhí)行進(jìn)一步使所述計(jì)算設(shè)備能將用于在調(diào)用所述子集之前恢復(fù)執(zhí)行上下文以 及在執(zhí)行所述子集之后保存所述執(zhí)行上下文的一個(gè)或多個(gè)指令添加到所述調(diào)度程序例程。
11. 至少一種在其中實(shí)施計(jì)算機(jī)可讀代碼的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可讀代碼包 括: 第一指令集,用于在具有第一安全等級的計(jì)算設(shè)備的第一執(zhí)行環(huán)境下執(zhí)行;以及 第二指令集,包括單個(gè)進(jìn)入點(diǎn)和單個(gè)退出點(diǎn),用于在具有比所述第一安全等級更安全 的第二安全等級的所述計(jì)算設(shè)備的第二執(zhí)行環(huán)境下執(zhí)行; 其中,所述第一指令集包括將執(zhí)行重定向到所述第二執(zhí)行環(huán)境的至少一個(gè)指令以及在 將執(zhí)行重定向到所述第二執(zhí)行環(huán)境之前保存執(zhí)行上下文的至少一個(gè)指令,并且其中,所述 第二指令集包括用于恢復(fù)所述執(zhí)行上下文的至少一個(gè)指令。
12. 如權(quán)利要求11所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述第一指令集包 括在用于將執(zhí)行重定向到所述第二執(zhí)行環(huán)境的所述至少一個(gè)指令之前的用于初始化所述 第二執(zhí)行環(huán)境的一個(gè)或多個(gè)指令。
13. 如權(quán)利要求11至12中任一項(xiàng)所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一 步包括第三指令集,所述第三指令集包括單個(gè)進(jìn)入點(diǎn)和單個(gè)退出點(diǎn),所述第三指令集用于 在所述第二執(zhí)行環(huán)境中執(zhí)行。
14. 如權(quán)利要求13所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述第二和第三指 令集被加密并連結(jié)。
15. 如權(quán)利要求14所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括所述經(jīng) 連結(jié)第一和第二指令集的索引,所述索引包括與所述第一和第二指令集中的至少一個(gè)相關(guān) 聯(lián)的相對虛擬地址。
16. 如權(quán)利要求15所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述索引進(jìn)一步包 括與所述第一和第二指令集中的至少一個(gè)相關(guān)聯(lián)的尺寸和偏移。
17. 如權(quán)利要求11至13中任一項(xiàng)所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一 步包括形成調(diào)度程序例程的一個(gè)或多個(gè)指令,所述調(diào)度程序用于在將執(zhí)行重定向到所述第 二執(zhí)行環(huán)境中時(shí)被調(diào)用,所述調(diào)度程序例程用于調(diào)用所述第二指令集并且在執(zhí)行所述第二 指令集之后將執(zhí)行返回到所述第一執(zhí)行環(huán)境。
18. 如權(quán)利要求17所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述第二指令集被 加密,所述介質(zhì)進(jìn)一步包括形成用于在所述第二執(zhí)行環(huán)境中執(zhí)行的初始化程序例程的一個(gè) 或多個(gè)指令,所述初始化程序例程用于解密所述第二指令集。
19. 如權(quán)利要求18所述的至少一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述調(diào)度程序例程 包括用于在調(diào)用所述第二指令集之前恢復(fù)執(zhí)行上下文以及在執(zhí)行所述第二指令集之后保 存所述執(zhí)行上下文的一個(gè)或多個(gè)指令。
20. -種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括: 由計(jì)算設(shè)備標(biāo)識并提取第一多個(gè)指令的子集,其中,所述子集包括單個(gè)進(jìn)入點(diǎn)和單個(gè) 退出點(diǎn); 由所述計(jì)算設(shè)備向所述第一多個(gè)指令添加用于將執(zhí)行從具有第一安全等級的第一執(zhí) 行環(huán)境重定向到具有比所述第一安全等級更安全的第二安全等級的第二執(zhí)行環(huán)境的一個(gè) 或多個(gè)指令以代替所提取子集; 由所述計(jì)算設(shè)備將所述子集添加到用于在所述第二執(zhí)行環(huán)境中被執(zhí)行的第二多個(gè)指 令,其中,所述第一多個(gè)指令用于在所述第一執(zhí)行環(huán)境中執(zhí)行; 由所述計(jì)算設(shè)備加密所述子集;以及 由所述計(jì)算設(shè)備向所述第二多個(gè)指令添加用于將執(zhí)行從所述第二執(zhí)行環(huán)境重定向到 所述第一執(zhí)行環(huán)境的一個(gè)或多個(gè)指令。
21. 如權(quán)利要求20所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,進(jìn)一步包括由所述計(jì)算設(shè) 備在用于將執(zhí)行從所述第一執(zhí)行環(huán)境重定向到所述第二執(zhí)行環(huán)境的所述一個(gè)或多個(gè)指令 之前向所述第一多個(gè)指令添加用于初始化所述第二執(zhí)行環(huán)境的一個(gè)或多個(gè)指令。
22. 如權(quán)利要求20所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,進(jìn)一步包括由所述計(jì)算設(shè) 備在用于將執(zhí)行從所述第一執(zhí)行環(huán)境重定向到所述第二執(zhí)行環(huán)境的所述一個(gè)或多個(gè)指令 之前向所述第一多個(gè)指令添加用于保存執(zhí)行上下文的一個(gè)或多個(gè)指令。
23. 如權(quán)利要求22所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,進(jìn)一步包括由所述計(jì)算設(shè) 備在用于將執(zhí)行從所述第一執(zhí)行環(huán)境重定向到所述第二執(zhí)行環(huán)境的所述一個(gè)或多個(gè)指令 之后向所述多個(gè)指令添加用于恢復(fù)所述執(zhí)行上下文的一個(gè)或多個(gè)指令。
24. 如權(quán)利要求20所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,進(jìn)一步包括: 由所述計(jì)算設(shè)備標(biāo)識并加密所述多個(gè)指令的第二子集;以及 由所述計(jì)算設(shè)備連結(jié)所述第一和第二子集。
25. 如權(quán)利要求24所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,進(jìn)一步包括由所述計(jì)算設(shè) 備生成所述經(jīng)連結(jié)的第一和第二子集的索引,所述索引包括與所述第一和第二子集中的至 少一個(gè)相關(guān)聯(lián)的尺寸和偏移。
26. 至少一種機(jī)器可讀介質(zhì),包括多個(gè)指令,響應(yīng)于在計(jì)算設(shè)備上被執(zhí)行,所述指令致 使所述計(jì)算設(shè)備執(zhí)行根據(jù)權(quán)利要求20至25中任一項(xiàng)所述的計(jì)算機(jī)實(shí)現(xiàn)的方法。
27. -種被配置成用于執(zhí)行如權(quán)利要求20至25中任一項(xiàng)所述的計(jì)算機(jī)實(shí)現(xiàn)的方法的 裝直。
28. -種系統(tǒng),包括: 一個(gè)或多個(gè)處理單元; 存儲器,操作地耦合到所述一個(gè)或多個(gè)處理單元; 第一執(zhí)行環(huán)境,具有第一安全等級; 第二執(zhí)行環(huán)境,具有比所述第一安全等級更安全的第二安全等級;以及 軟件轉(zhuǎn)換器,用于由所述一個(gè)或多個(gè)處理單元操作并且被配置成用于標(biāo)識并加密適合 在所述第二執(zhí)行環(huán)境中執(zhí)行的多個(gè)指令的子集、使所述多個(gè)指令中的在所述子集之前或之 后的一個(gè)或多個(gè)指令能在所述第一執(zhí)行環(huán)境中執(zhí)行、以及使所述子集能在所述第二執(zhí)行環(huán) 境中執(zhí)行、以及將用于在將執(zhí)行從所述第一執(zhí)行環(huán)境重定向到所述第二執(zhí)行環(huán)境之前保存 執(zhí)行上下文的一個(gè)或多個(gè)指令在所述子集之前添加到所述多個(gè)指令。
29. 如權(quán)利要求28所述的系統(tǒng),其特征在于,所述軟件轉(zhuǎn)換器進(jìn)一步被配置成向所述 多個(gè)指令添加用于初始化所述第二執(zhí)行環(huán)境的一個(gè)或多個(gè)指令。
30. 如權(quán)利要求29所述的系統(tǒng),其特征在于,所述軟件轉(zhuǎn)換器進(jìn)一步被配置成用于在 將執(zhí)行從所述第一執(zhí)行環(huán)境重定向到所述第二執(zhí)行環(huán)境的所述一個(gè)或多個(gè)指令之后向所 述多個(gè)指令添加用于從所述執(zhí)行上下文的快照恢復(fù)所述執(zhí)行上下文的一個(gè)或多個(gè)指令。
31. 如權(quán)利要求28至30中任一項(xiàng)所述的系統(tǒng),其特征在于,所述子集是第一子集,并且 其中,所述軟件轉(zhuǎn)換器進(jìn)一步被配置成用于標(biāo)識并加密第二子集以及連結(jié)所述第一和第二 子集,所述第一和第二子集用于在所述第二執(zhí)行環(huán)境中執(zhí)行。
32. 如權(quán)利要求31所述的系統(tǒng),其特征在于,所述軟件轉(zhuǎn)換器進(jìn)一步被配置成用于生 成所述經(jīng)連結(jié)的第一和第二子集的索引,所述索引包括與所述第一和第二子集中的至少一 個(gè)相關(guān)聯(lián)的尺寸和偏移。
33. 如權(quán)利要求28至30中任一項(xiàng)所述的系統(tǒng),其特征在于,進(jìn)一步包括觸摸屏顯示器。
【文檔編號】G06F9/44GK104272317SQ201280072808
【公開日】2015年1月7日 申請日期:2012年6月1日 優(yōu)先權(quán)日:2012年6月1日
【發(fā)明者】S·高夫曼, A·貝倫宗, O·倫茨, T·德沃爾, B·張, Y·扎哈維, M·茂爾 申請人:英特爾公司