用於部分安全存儲器處理的軟體修改的製作方法
2023-07-30 17:56:26 3
用於部分安全存儲器處理的軟體修改的製作方法
【專利摘要】本發明涉及可以用於防止軟體盜版和防止應用的未授權的修改的軟體修改。在某些實施例中,在分發至用戶之前,軟體供應商可以對軟體進行修改。軟體供應商可以從應用提取多個剪切塊以創建修改後的應用。用戶設備可以下載該修改後的應用和這些剪切塊。用戶設備可以使用該修改後的應用和通過在將底層代碼隱藏在這些剪切塊內的安全執行環境中執行這些剪切塊來運行該應用。
【專利說明】用於部分安全存儲器處理的軟體修改
【技術領域】
[0001]本披露總體上涉及計算機領域。具體地,本披露涉及計算機軟體的修改,從而對部分地來自用戶設備上的安全存儲器的用於執行的代碼進行重新打包。
【背景技術】
[0002]應用程式商店正快速地成為許多平臺的應用的重要分發器,如智慧型電話、平板計算機、和常規計算機(例如,筆記本計算機、臺式計算機等)。應用商店經常是一些基於網絡的商店,這些商店使用戶能夠電子地下載軟體而不接收物理產品。應用的這種分發機制的成功存在若干原因。一個原因在於,開發者可以使用應用程式商店從而能夠實現其應用的廣泛分發而無需開發者的大的投資。
[0003]應用商店正快速地將自己本身建立成為主要的軟體分發渠道。當前,對於流行的智慧型電話和平板計算機作業系統(OS)而言,數十萬智慧型電話應用可供用於下載。此外,用於運行Windows?作業系統(OS)或蘋果(Apple)OS的常規計算機的數千常規計算機應用也是可供使用的。預期將來應用商店的普及度增加並且成為軟體的主導分發器。
[0004]雖然迄今為止,當前應用商店發展令人印象深刻,但應用商店正應對或者威脅到禁止其未來發展或者徹底使其陷入危險的許多挑戰。通常,這些應用商店的挑戰包括:1)軟體盜版,2)給應用商店運營商造成運營、法律和安全問題的仿冒應用,3)無力吸引知名的獨立軟體供應商(ISV),以及4)難於通過此分發機制提供「購買前試用(try before youbuy) 」或應用的其他共享軟體版本。
[0005]自從主流計算已經變得對用戶廣泛可供使用以來,軟體盜版一直是軟體開發者和供應商的難題。具體地,在易於訪問網際網路和易於通過網際網路拷貝和發送數據情況下,儘管對那些被起訴盜版軟體的人實行重罰,但軟體盜版繼續泛濫。
[0006]附圖簡要說明
[0007]參照附圖描述詳細說明。在圖中,參考號的最左邊的數字(或多個數字)標識了該參考號首次出現的圖。不同圖中的相同的參考號指示相似或完全相同的項目。
[0008]圖1為用於安全地從應用商店向用戶設備提供修改後的軟體以便執行該軟體的說明性計算環境的示意圖。
[0009]圖2為說明性應用商店伺服器的框圖。
[0010]圖3為說明性用戶設備的框圖。
[0011]圖4為用於對軟體進行修改和安全地向用於執行該軟體的用戶設備提供修改後的軟體的說明性過程的流程圖。
[0012]圖5為示意圖,示出了從應用商店伺服器到用戶設備的安全堆棧密鑰的傳輸。
[0013]圖6為示意圖,示出了應用到應用商店伺服器的傳輸,然後其對該應用進行修改以創建剪切塊。
[0014]圖7為不意圖,不出了修改後的應用和剪切塊到用戶設備的傳輸。
[0015]圖8為示意圖,示出了用戶設備對修改後的應用的執行。[0016]圖9為用戶設備執行修改後的應用的說明性過程的流程圖。
[0017]圖10為另一個說明性用戶設備的框圖。
[0018]詳細說明
[0019]本披露涉及可以用於防止軟體盜版和防止應用的未授權的修改的軟體修改。在某些實施例中,在分發至用戶之前,軟體供應商可以對軟體進行修改。可以銷售、出租、或由下載軟體的用戶「試用」修改後的軟體。
[0020]可以主辦應用商店的軟體供應商可以最初從開發者或軟體公司接收應用。然後,軟體供應商可以移除軟體的多個部分,如代碼段、函數、或軟體的其他部分,在此被稱為「剪切塊(cutout)」。軟體供應商可以對剪切塊進行加密並將其存儲為與不包括這些剪切塊(但包括其中已經剪切出代碼的孔)的應用的修改後的版本分開的部分,在此稱為「修改後的應用」。然後,軟體供應商可以至少將修改後的應用和加密後的剪切塊、以及可能地其他數據(如許可證、用戶手冊諸如此類)傳輸至用戶設備。
[0021]根據某些實施例,用戶設備可以在安全存儲器位置(在此被稱為「安全存儲器」)對剪切塊進行存儲和解密。安全存儲器可以是外部軟體(如用戶設備上運行的作業系統或其他本機軟體)不可訪問的存儲器。安全存儲器可以包括能夠使一個或多個處理器或處理器核安全執行安全存儲器內的內容的安全執行環境。安全存儲器可以被限制為通過安全執行環境來訪問。因此,沒有向用戶設備的用戶、用戶設備上運行的軟體、或向其他人(例如,黑客、供應商等)洩露或公開剪切塊中所包含的代碼。安全存儲器可以存儲工作狀態(即,未加密的)下的剪切塊。此安全存儲器和安全執行環境與修改後的應用融洽地合作來執行原始應用。
[0022]如針對未修改的應用當前執行的,用戶設備上的作業系統可以加載和執行修改後的應用。當修改後的應用的請求部分包括這些剪切塊之一時,重定向代碼可以將處理定向至安全執行環境以執行相應的剪切塊,並且然後將結果數據返回至修改後的應用,這可以使用結果數據而不需剪切塊中的代碼的實際處理來重新開始運行。
[0023]在某些實施例中,用戶設備可以包括用於包括剪切塊的不同應用的單個「框架」安全執行環境。安全執行環境可以將應用的剪切塊以及任何適當的元數據(例如,輸入、變量等)一起加載。
[0024]例如,一個應用可以具有兩個剪切塊。加載器堆棧可以將這些剪切塊中的至少一個剪切塊的加密後的代碼加載到安全執行環境內,並且包括與這個(些)剪切塊相關聯的任何元數據。進入安全執行環境內,剪切塊被解密並且可以由修改後的應用調用以執行該應用的被從該應用移除並存儲在安全存儲器內以便通過安全執行環境進行處理的這些部分的操作(例如,函數、計算等)。
[0025]在各實施例中,每個應用可以使用安全存儲器和安全執行環境的框架的不同拷貝,因為可以將安全執行環境映射到其對應的應用的地址空間上。
[0026]可以用多種方式實施在此描述的技術、設備和系統。以下參照下面的附圖提供了示例實施方式。
[0027]說明性環境
[0028] 圖1為用於安全地從應用商店向用戶設備提供修改後的軟體的說明性計算環境100的示意圖。該環境包括開發者102 (如獨立軟體供應商(ISV))、應用商店104、以及用戶106。在某些實例中,開發者102和應用商店104可以是同一實體。該開發者可以創建和開發可以由開發者伺服器110存儲和/或訪問的應用108。應用商店(AS) 104可以使用AS伺服器112接收應用。AS伺服器112可以對應用108進行修改以創建如上所討論的剪切塊,並且存儲加密後的剪切塊114和不包括這些剪切塊的修改後的應用116。AS伺服器112可以使用戶106能夠通過加密後的剪切塊114和修改後的應用116將軟體下載到用戶設備118。用戶設備118可以將加密後的剪切塊114存儲在安全存儲器內,並在解密之後在安全執行環境中執行這些剪切塊。開發者伺服器110、AS伺服器112、以及用戶設備118可以通過一個或多個網絡120交換數據。
[0029]用戶設備118可以包括個人計算機、平板計算機、行動電話(包括智慧型電話)、個人數字助理(PDA)、電視機、機頂盒、遊戲控制器、或另一個電子的、可攜式或手持式設備。這個(些)網絡120可以包括能夠實現在環境100中所述的不同計算設備之間的通信的有線和/或無線網絡。在某些實施例中,這個(些)網絡120可以包括區域網(LAN)、廣域網(WAN)、行動電話網(MTN)、以及其他類型的網絡,可能地彼此結合使用,以促進不同計算設備(即,這個(些)開發者伺服器110、AS伺服器112、和/或用戶設備118)之間的通信。分別參照圖2和圖3更加詳細地描述了 AS伺服器112和用戶設備118。
[0030]圖2示出了 AS伺服器112的說明性計算架構200。該架構可以包括(多個)處理器202和存儲器204。存儲器204可以存儲各種模塊、應用、程序、或其他數據。存儲器204可以包括如下指令:當由這個(些)處理器202執行時,致使這些處理器執行如針對AS伺服器112的在此所述的操作。在某些實施例中,存儲器204可以存儲應用轉換器206、客戶端註冊管理器208、以及下載管理器210。進而討論每個模塊。
[0031]應用轉換器206可以是軟體引擎,該軟體引擎將開發者上傳的應用作為輸入、並且提取該應用的多個片段作為剪切塊。可以將這些剪切塊選擇為代碼的重要部分,從而當從應用中被提取時,使應用不可運行。進一步地,當被提取時,這些剪切塊部分防止另一個人重構完整的應用,由此阻撓盜版企圖。應用上傳之後,應用轉換器可以進行應用二進位的分析並且自動識別針對應用的正確執行的最相關的那些片段。在某些實例中,開發者可以指示有待用作剪切塊的片段。然後,應用轉換器206可以用重定向代碼替換所提取的片段,這些片段是對外部位置的調用並且可以基於表格。剪切塊可以與分離的文件中的某些元數據(例如,返回值、參數等)聚合。可以對此文件進行加密。
[0032]客戶端註冊管理器208可以配置用於正在運行客戶端註冊流程的每個新客戶端的唯一客戶端密鑰。此過程可以歸界到安全存儲器和用戶設備118所使用的安全執行環境技術。在某些實施例中,如以下參照圖3所討論的,交付受保護的軟體分發技術客戶端軟體堆棧的同一實體提供客戶端註冊管理器208。
[0033]下載管理器210可以創建許可證並且對應用的剪切塊進行加密。例如,對於所有客戶端而言,如果二進位在每平臺的基礎上將是不同的而不是每個應用單個加密密鑰,則下載管理器2110可以對剪切塊進行加密。下載管理器210可以用特定客戶端密鑰(其由客戶端註冊管理器208在登記期間配置)對許可證進行加密並且可以用應用和加密後的剪切塊傳輸該特定客戶端密鑰。
[0034]圖3示出了用戶設備118的說明性計算架構300。該架構可以包括公開存儲器302、(多個)處理器304和安全存儲器306。公開存儲器302可以存儲各種模塊、應用、程序、或其他數據。公開存儲器302可以包括如下指令:當由這個(些)處理器304執行時,致使這些處理器執行如針對用戶設備118的在此所述的某些操作。公開存儲器可以是常規存儲器,如快閃記憶體存儲器、RAM、或其他類型的常規存儲器。在某些實施例中,公開存儲器304可以存儲作業系統(OS) 308、修改後的應用(修改後的app) 114、和應用商店客戶端310、以及其他本機應用或程序。
[0035]應用商店客戶端310可以支持從應用商店204的安全下載。應用商店客戶端310可以利用客戶端設備118的安全存儲器306來存儲加密後的剪切塊116。應用商店客戶端310還可以激活用戶設備118上的安全存儲器和安全執行環境。
[0036]根據各實施例,安全存儲器306可以存儲受保護的軟體分發許可安全環境(PLN)312,該安全環境可以用於一次登記進入應用商店104並且稍後可以在每次用戶106想要開始安全應用(具有剪切塊)時使用。PLN312可以管理受保護的軟體分發技術的密鑰製造(keying)材料並且可以對許可證進行解析。PLN312可以存儲在安全存儲器306內並且對於平臺與其一起工作的任何給定在線應用商店而言,可以充當客戶端平臺(用戶設備118)上的單元素集合。在某些實例中,PLN312可以同時支持多個應用商店。如以下所討論的,PLN312可以參與用戶登記和應用執行。
[0037]在某些實施例中,安全存儲器306可以存儲受保護的軟體分發執行環境(PXN)314(其可以是安全執行環境),作為存儲應用(剪切塊)的解密後的內容的安全執行環境。可以為在用戶設備118上執行的每個安全應用創建PXN314。來自不同應用的剪切塊在大小上可以不同。在某些實施例中,以最小大小加載PXN312以便能夠執行和正確地容納來自修改後的應用的剪切塊。這可以如以下所描述來完成。
[0038]可以將為軟體堆棧的一部分的靜態PXN 二進位構建至全最大支持的大小。可以部分地加載PXN 二進位 以適應具體應用的任何較小的需求。例如,每個應用的最大大小可以是2MB的剪切塊(這製作了稍微更大的最大大小的PXN);然而,對於僅使用0.5MB的剪切塊的給定應用而言,軟體堆棧可以加載那個大小的PXN314。為堆棧的一部分的測量表可以為可能大小的集合提供其對應的測量。當堆棧加載用於具體應用的PXN314時,其可能正在使用為應用的一部分的嵌入的受保護的軟體分發元數據來決定大小。加載堆棧可以構建具有正確大小的PXN314。由於此架構可以支付每個正在運行的應用的此開銷,針對PXN314的實施考慮是設計具有最小開銷大小的PXN。
[0039]說明性操作
[0040]圖4至圖9示出了對軟體進行修改並安全地向用戶設備提供修改後的軟體以便由該用戶設備進行安全執行的說明性過程。將這些過程展示為邏輯流程圖或示意圖中的框的集合,其代表了可以在硬體、軟體、或其組合中實施的操作序列。在某些實例中,以可以執行框中所述的各操作的對應實體來組織框的集合。在軟體的背景下,這些框代表一個或多個計算機可讀存儲介質上存儲的計算機可執行指令,從而當由一個或多個處理器執行時,執行所述的操作。通常,計算機可執行指令包括執行具體函數或實施具體抽象數據類型的例程、程序、對象、分量、數據結構等等。不旨在將描述這些操作的順序解釋為限制,並且可以用任何順序組合和/或並列任何數量的所述框來實施這些過程。參照圖1至圖3描述了這些過程。當然,可以在其他相似和/或不同環境中執行這些過程。
[0041]圖4為用於對軟體進行修改和安全地向用戶設備提供修改後的軟體以便由該用戶設備進行安全執行的說明性過程400的流程圖。
[0042]在402,AS伺服器112可以用應用商店104初始地登記用戶106和用戶設備118。該登記可以包括加密密鑰的交換。根據各實施例,該登記可以使PLN312能夠在用戶設備118上建立或使用。關於圖5,更詳細地描述了操作402。
[0043]在404,這個(些)開發者伺服器102可以將應用上傳到AS伺服器112。AS伺服器112可以從應用移除剪切塊116以創建修改後的應用114。AS伺服器112還可以在操作404對這些剪切塊進行加密。關於圖6,更詳細地描述了操作404。
[0044]在406,AS伺服器112可以將修改後的應用114和加密後的剪切塊116下載到用戶設備118。AS伺服器112還可以在操作406為用戶118提供許可證。關於圖7,更詳細地描述了操作406。
[0045]在408,用戶設備118可以執行修改後的應用。當適用時,用戶設備118可以執行PXN314中的剪切塊中的一個或多個以隱藏剪切塊中的代碼並且將結果數據傳遞迴到正在用戶設備118上運行的修改後的應用。因此,甚至在修改和AS伺服器112創建剪切塊之後,應用可以如開發者所設計的那樣運行。可以預測試和通過安全存儲器306和PXN314的使用對用戶、作業系統、本機軟體、黑客、以及其他人隱藏剪切塊中所使用的代碼。關於圖8,更詳細地描述了操作408。
[0046]圖5為示意圖,描繪了環境500,該環境示出了從AS伺服器112到用戶設備118的安全堆棧密鑰的傳輸。根據各實施例,用戶106可以請求登記與應用商店104的關係,如通過建立帳戶。用戶106可以向應用商店104提供用戶信息、支付信息、聯繫信息、用戶設備118的信息、和/或其 他數據。作為回報,AS伺服器112可以向用戶設備118的安全存儲器306中所存儲的PLN312提供安全堆棧密鑰502。安全堆棧密鑰502可以用於對剪切塊116、修改後的應用114、應用的許可證、或其組合進行解密。當從AS伺服器112向用戶設備118傳輸數據時,還可以使用其他加密。當對來自AS伺服器112的至少某些信息或數據進行解密時,用戶設備118可以使用安全堆棧密鑰502 (或僅「密鑰」或「加密密鑰」)。
[0047]圖6為示意圖,描繪了環境600,該環境示出了應用到應用商店伺服器104的傳輸,然後其對該應用進行修改以創建剪切塊。開發者通訊器602可以將未經修改的並包括完整的代碼集合的應用108傳輸至AS伺服器112。因此,從開發者角度看,應用開發本身沒有變化。在開發者網站處的構建過程與任何其他應用的過程相同。
[0048]對於安全應用而言(例如,當應用不是免費的時),在上傳到應用商店104內之後,應用轉換器206可以對該應用(例如,應用二進位)進行分析並生成剪切塊列表。可以通過來自開發者、來自AS伺服器112進行的對代碼的離散部分的檢測、或兩者的組合的指定來識別剪切塊。應用轉換器206的輸出為包括到用戶設備118的安全執行環境(即,PXN314)的正確調用(重定向代碼)的修改後的應用114(例如,應用二進位)。該輸出還包括已經被AS伺服器112加密的剪切塊。該輸出還可以包括正確地加載和執行應用作為具有剪切塊的修改後的應用的元數據。該元數據可以進一步包括剪切塊的大小和其他可能的參數。
[0049]在某些實施例中,應用轉換器206可以執行與以下說明性算法相似的算法。給定由代碼序列C = (cO, cl, c2…cm)和數據區域(dO, dl, d2...,(Idn)組成的應用A,過程可以用如下方式提取序列代碼E= (el,…,en)(其中ei = (cn,..., ci2))的η個片段:(1)當執行A連同所提取的E片段(用AE表示)時,該操作與A無區別。(2) E片段為序列線性代碼摘錄(即,沒有從ei內到ej內的跳躍,即i〈>j,並且沒有ei與A之間的跳躍)。(3)E片段不包括軟體中斷的子集。在交錯運行過程中,可以通過如下方式選擇剪切塊:仔細檢查A和E的應用執行流程(其中E執行是不透明的,但可以是單步執行的等),從而使得觀察者不具有倒序建造E片段的高效方式。可選地,E片段還包括D子集,當僅Ei在某個D子集上運行時尤其是不重要的,那個子集可以在Ei內。在某些實施例中,剪切塊116可以是來自應用的完整函數。剪切塊116還可以是沒有正在調用外部函數或系統調用的葉函數,由此保護所提取的功能的局部數據不被洩露。在某些實施例中,剪切塊116在大小上被限制到存儲器的閾值大小(字節)。
[0050]圖7為示意圖,描繪了環境700,該環境示出了修改後的應用114到用戶設備118的傳輸。在某些實施例中,AS伺服器112可以為具體用戶106的應用生成唯一密鑰並且用那個密鑰對剪切出的塊進行加密。AS伺服器112還可以為用戶生成唯一用戶許可證702。用戶許可證702可以包括用於通過用戶和唯一應用密鑰的應用的激活的可選策略。在某些實施例中,該許可證僅可以允許有限地使用應用(例如,基於使用時間和數量等的試行)或允許出租應用(例如,軟體即服務)。AS伺服器112可以用唯一客戶端密鑰(其在登記過程中配置)對許可證進行加密。AS伺服器112可以創建包括修改後的應用114、加密後的剪切塊116和用戶許可證702的下載包704,其隨後可以被傳輸至用戶設備118。
[0051]圖8為示意圖,描繪了環境800,該環境示出了用戶設備118進行的修改後的應用114的執行。根據各實施例,用戶設備118可以加載修改後的應用114用於執行。然後,可以加載具有適用於剪切塊116的大小的PXN314。可以將許可證702發送至PLN312用於對PXN314進行解密,這可以在對應用在許可證的條款和策略下運行的驗證或通知後發生。剪切塊116可以被流化進入PXN314。可以使用修改後的應用114和剪切塊116激活應用。此外,除其他函數之外,當終止應用時,堆棧可以清除EPC。
[0052]在某些實 施例中,PXN314可以作為緩衝器運行並且可以為由於大小約束而不可以存儲在PXN314內的剪切塊加載附加代碼。因此,PXN314可以在剪切塊的處理過程中檢索和可能對一些附加代碼和/或剪切塊(或其多個部分)進行解密。
[0053]圖9為用戶設備118執行修改後的應用的說明性過程900的流程圖。
[0054]在902,用戶設備118可以對來自存儲在公開存儲器302內的修改後的應用114的代碼進行處理。
[0055]在904,用戶設備118可以確定在來自修改後的應用114的代碼中是否到達了重定向代碼。重定向代碼(或重新定向代碼、跳碼等)可以是連結到存儲在PXN314內的相應剪切塊的代碼。當沒有發現重定向代碼(沿著「否」路線)時,則處理繼續進行操作902。然而,當發現重定向代碼(從決定操作904沿著「是」路線),則處理可以在906繼續進行。
[0056]在906,用戶設備118可以向PXN314發送處理相應的剪切塊的請求。該請求可以包括元數據、參數和/或其他數據。例如,該請求可以包括剪切塊中的代碼所使用的變量。
[0057]在908,用戶設備118可以對PXN314中的剪切塊內的代碼進行處理。可以對作業系統、其他應用、其他用戶、用戶106等等隱藏剪切塊的處理。
[0058]在910,用戶設備119可以確定是否已經處理了代碼。當代碼不完整(仍在處理)時,則該過程可以從決定操作910沿著「否」路線在908繼續進行。當來自剪切塊的代碼是完整的(從決定操作910沿著「是」路線)時,則該過程可以在操作912繼續進行。[0059]在912,PXN314可以將參數傳遞迴至公開存儲器302以使修改後的應用114能夠繼續運行。例如,在不洩露底層代碼的情況下並通過將剪切塊中的代碼的底層邏輯模糊至可能的程度,可以將代碼的輸出傳遞迴公開存儲器302。除了正在執行剪切塊的處理器線程或處理器核線程以外,解密後的剪切塊可能不能由用戶設備上的任何軟體或硬體可讀。在各實施例中,操作912可能不包括將信息傳遞迴至主應用的PXN314,因為該PXN僅可以改變公開存儲器302的狀態和/或通過寄存器返回數據。
[0060]在某些實施例中,用戶設備118可以宣布或以另外方式提供可利用信息,該可利用信息指示修改後的應用的合法或有效許可證和應用的狀態為修改後的。因此,用戶設備118可以指示應用包括如此處所述的剪切塊。
[0061]圖10為可以執行在此所述的過程和功能性的另一個說明性用戶設備1000的框圖。用戶設備1000可以包括一個或多個處理器1002-1,…,1002-N(其中N為大於或等於I的正整數),這些處理器中的每個處理器可以包括一個或多個處理器核1004-1,…,1004-M(其中M為大於或等於I的正整數)。在某些實施方式中,如以上所討論的,這個(些)處理器1002可以是單核處理器,而在其他實施方式中,這個(些)處理器1002可以具有大量處理器核,這些處理器核中的每個核可以包括圖10中所示的某些或所有組件。例如,每個處理器核1004-1,…,1004-M可以包括用於與寄存器文件1008-1,…,1008-M進行交互和/或執行在此所討論的操作中的至少某些操作的邏輯1006的實例。邏輯1006可以包括專用電路、邏輯單元、微代碼等等中的一個或多個。
[0062]可以通過集成存儲器控制器(MC) 1010結合局部互連1016來運行這個(些)處理器1002和這個(些)處理器核1004,從而讀取和寫入到存儲器1012。這個(些)處理器1002和這個(些)處理器核1004還可以執行存儲在存儲器1012或其他計算機可讀介質中的計算機可讀指令。存儲器1012可以包括易失性和非易失性存儲器和/或以用於信息存儲的任何類型的技術中所實現的可移除和不可移除介質,如計算機可讀指令、數據結構、程序模塊或其他數據。這種存儲器可以包括但不限於RAM、R0M、EEPR0M、快閃記憶體存儲器或其他存儲器技術。在存在多個處理器核1004的情況下,在某些實施方式中,該多個處理器核1004可以共享高速緩存1014,該共享高速緩存可以通過局部互連1016是可訪問的。此外,可以提供儲存器1018用於存儲數據、代碼、程序、日誌等等。儲存器1018可以包括固態儲存器、磁碟儲存器、廉價磁碟冗餘陣列(RAID)存儲系統、存儲陣列、網絡附接儲存器、存儲區域網絡、雲儲存器、CD-ROM、數字多用途光碟(DVD)或其他光儲存器、磁盒、磁帶、或可以用於存儲所期望的信息和可以被計算設備訪問的任何其他介質。取決於用戶設備1000的配置,存儲器1012和/或儲存器1018可以是一種類型的計算機可讀存儲介質並可以是非瞬態介質。
[0063]根據各實施例,處理器1102可以通過MC1010與安全存儲器1019進行通信。安全存儲器1019可以包括PLN312和/或PXN314。可以用處理器1002-1或另一個處理器或處理器核至少部分地存儲安全存儲器1019。
[0064]在各實施例中,局部互連1016還可以與圖形控制器(GFX) 1020進行通信以提供圖形處理。在某些實施例中,局部互連1016可以與系統代理1022進行通信。系統代理1022可以與中樞1024進行通信,該中樞連接了顯示引擎1026、PCIel028、以及DMI1030。
[0065] 存儲器1012可以存儲可由這個(些)處理器1002執行的功能組件。在一些實施方式中,這些功能組件包括可由這個(些)處理器1002執行的指令或程序1032。圖10中所示的示例功能組件進一步包括用於對用戶設備1000的運行進行管理的作業系統(OS) 1034。
[0066]用戶設備1000可以包括一個或多個通信設備1036,這個或這些通信設備可以包括用於能夠通過通信鏈路(如一個或多個網絡1038)與各種其他設備進行通信的一個或多個接口和硬體組件。例如,通信設備1036可以促進通過網際網路、電纜網絡、蜂窩網絡、無線網絡(例如,W1-F1、蜂窩)以及有線網絡的通信。用於通信的組件可以至少部分地取決於所選擇的網絡和/或環境的類型。用於通過這種網絡進行通信的協議和組件是眾所周知的並且將不在此進行詳細討論。
[0067]用戶設備1000可以進一步配備有各種輸入/輸出(I/O)設備1040。這種I/O設備1040可以包括顯示器、各種用戶接口控制項(例如,按鈕、操縱杆、鍵盤、觸控螢幕等)、揚聲器、連接埠等等。可以提供可包括系統總線、點到點接口、晶片組、或其他合適的連接和組件的互連1024,從而能夠實現處理器1002、存儲器1012、儲存器1018、通信設備1036、以及I/O設備1040之間的通信。
[0068]結論
[0069]儘管以專用於結構特徵和/或方法動作的語言描述了主題,但應理解的是,所附權利要求書中限定的主題不一定局限於所描述的特定特徵或動作。相反,作為實施權利要求書的說明性形式,披露了這些特定特徵和動作。
【權利要求】
1.一種處理器,包括: 第一邏輯,用於對包括有待分別地存儲在安全存儲器內的代碼的所提取部分的應用,處理存儲在存儲器內的代碼;以及 第二邏輯,用於當所述第一邏輯到達代碼的所述所提取部分的位置時,在安全執行環境中對存儲在所述安全存儲器內的代碼的所述所提取部分的至少一部分進行處理,所述安全存儲器被限制成通過所述安全執行環境訪問,所述安全執行環境在將結果數據傳遞迴至所述第一邏輯的同時隱藏二進位代碼的所述所提取部分的內容。
2.如權利要求1所述的處理器,其中,當檢測到重定向代碼後,所述第一邏輯重定向至所述第二邏輯,其中所述重定向代碼是用於所述代碼的所述所提取部分的應用中的佔位符。
3.如權利要求1所述的處理器,其中,代碼的所述所提取部分是由所述第二邏輯解密並且在所述安全執行環境中執行的。
4.如權利要求1所述的處理器,其中,所述第一邏輯將至少一個參數傳遞至所述第二邏輯,以發起對所提取代碼的所述至少一部分進行處理的請求。
5.如權利要求1所述的處理器,進一步包括第三邏輯,用於對所述應用進行解密並且將所述代碼的所述所提取部分存儲在所述安全存儲器內。
6.一種安全地分發軟體的方法,所述方法包括: 從應用中提取代碼的多個部分作為剪切塊,以創建不包括這些剪切塊的修改後的應用; 使用由用戶維護的加密密鑰對所述這些剪切塊進行加密;以及 將這些加密後的剪切塊和所述修改後的應用傳輸至所述用戶。
7.如權利要求6所述的方法,其中,所述這些剪切塊是來自所述應用的代碼的函數。
8.如權利要求6所述的方法,其中,所述這些剪切塊在大小上被限制到閾值大小。
9.如權利要求6所述的方法,進一步包括:至少部分地基於使用來自開發者的指示符,對所述這些剪切塊進行識別。
10.如權利要求6所述的方法,進一步包括:從開發者接收未修改狀態下的所述應用。
11.如權利要求6所述的方法,進一步包括:在所述加密之前,將所述加密密鑰傳輸至所述用戶。
12.—個或多個計算機可讀介質,用於保持有待在一個或多個處理器上執行以完成多個動作的多個計算機可執行指令,所述動作包括: 從應用中移除代碼的多個部分作為剪切塊,以創建修改後的應用; 使用加密密鑰對這些剪切塊進行加密;以及 將所述修改後的應用和這些加密後的剪切塊傳輸至所述用戶。
13.如權利要求12所述的方法,進一步包括:通過自動化的選擇過程,將代碼的所述多個部分識別為所述這些剪切塊。
14.如權利要求12所述的方法,進一步包括:將用戶許可證傳輸至所述用戶。
15.如權利要求12所述的方法,其中,所述修改後的應用和所述這些加密後的剪切塊被包括在加密包內用於所述傳輸。
16.如權利要求12所述的方法,進一步包括:在所述加密之前,將所述加密密鑰傳輸至所述用戶。
17.一種用於安全地存儲和執行應用的系統,所述系統包括: 一個或多個處理器; 公開存儲器,用於存儲所述一個或多個處理器可執行的應用; 安全存儲器,用於在所述公開存儲器接收到所述應用之前,將代碼存儲為從所述應用所提取的一個或多個剪切塊,所述安全存儲器被限制成使用所述一個或多個處理器通過安全執行環境訪問; 其中,所述一個或多個處理器執行來自所述公開存儲器的所述應用;以及 當所述執行來自所述公開存儲器的所述應用到達所述應用內的剪切塊時,在所述安全執行環境中執行所述剪切塊內的相應代碼而不向所述公開存儲器洩露所述剪切塊的內容。
18.如權利要求17所述的系統,其中,所述應用包括代替所述剪切塊的重定向代碼,以將所述處理重定向至所述剪切塊內的相應代碼。
19.如權利要求17所述的系統,其中,當所述剪切塊處於所述安全加密環境中時,對其進行解密。
20.如權利要求17所述的系統,其中,所述剪切塊為所述應用的函數。
21.如權利要求17所述的系統,其中,所述安全存儲器進一步包括加密密鑰,所述加密密鑰用於在下載了所述應用和所述一個或多個剪切塊之後對所述應用和所述一個或多個剪切塊進行解密。
22.如權利要求17所述的系統,其中,所述一個或多個處理器在執行所述相應代碼之前將至少一個參數傳遞至所述安全執行環境。
【文檔編號】G06F21/12GK104040552SQ201180076096
【公開日】2014年9月10日 申請日期:2011年12月29日 優先權日:2011年12月29日
【發明者】M·茂爾, S·格倫 申請人:英特爾公司