專利名稱:基于至少一個已安裝的簡檔來授權執(zhí)行軟件代碼的系統(tǒng)和方法
技術領域:
本申請涉及控制對軟件代碼的執(zhí)行。
背景技術:
計算設備可被配置為要求在計算機系統(tǒng)上執(zhí)行的代碼由可信方來授權。例如, 這種授權可以用于幫助確保計算設備的完整性不會被惡意或未授權的代碼損害。在一些 情況下,計算設備可被配置為要求代碼由可信方數(shù)字地簽名以及驗證,用以在計算設備 上執(zhí)行和/或控制對訪問設備的特定資源或服務的軟件的執(zhí)行。對數(shù)字簽名的驗證有助 于確保底層的應用代碼自被可信授權機構(authority) 102數(shù)字簽名起不再被修改。然而, 這種安全方案在允許多個實體在設備上實施它們的策略方面是有挑戰(zhàn)的。例如,在開發(fā)期間,軟件開發(fā)者將在計算機系統(tǒng)上頻繁地修改其代碼,并且可 能試圖在該系統(tǒng)上測試代碼。每當修改代碼時,數(shù)字簽名就失效了。因此,為了執(zhí)行任 何新的或未修改的代碼,軟件開發(fā)者必須使可信授權機構102對代碼再次簽名。這個過 程可能是令人厭煩且費時的。
圖1是例示了計算環(huán)境的一個示例的框圖,在該計算環(huán)境中,軟件代碼從一個 或多個開發(fā)者發(fā)布到計算設備。圖2是例示了在如圖1中所例示的環(huán)境中的計算設備的軟件部件的一個實施例的 框圖。圖3是例示了用于控制在如圖2中所例示的設備上執(zhí)行軟件的簡檔的一個實施例 的框圖。圖4是例示了在圖2所例示的計算設備的一個實施例的軟件部件之間的數(shù)據(jù)流的 框圖。圖5是例示了基于圖2所例示的簡檔而執(zhí)行軟件的方法的一個實施例的流程圖。圖6是更詳細地例示了圖5的方法的部分的流程圖。圖7是例示了如圖2所例示的計算設備的一個示例的框圖。圖8A和8B是例示了如圖2所例示的計算設備的一個示例的框圖。圖9是例示了如圖8A和8B所例示的移動設備的實施的一個示例的框圖。
具體實施例方式提供了如下實施例,這些實施例允許軟件開發(fā)者在開發(fā)和控制軟件在設備上的 執(zhí)行方面具有特定可信權限。在應用程序由第一可信方加密簽名的計算設備中,可以提 供開發(fā)者簡檔,該開發(fā)者簡檔針對由設備標識符標識的指定設備列表規(guī)定設備的操作以 將信任擴展到由第二方簽名的應用程序。特定簡檔可以使得應用程序能夠從多個開發(fā)者在一個設備上運行,在多個設備上運行,以及針對不同設備、簡檔和/或開發(fā)者指定不 同可用的能力。控制應用程序的執(zhí)行可以保持在設備的處理器的可信空間中。該可信空間可以 包括特權或監(jiān)管模式或者處理器的存儲器空間,例如存儲器的內(nèi)核空間。在不可信空間 (例如,存儲器的用戶空間)中運行的服務(或處理)可以被配置為管理簡檔,以及確定 是否特定的應用程序是可執(zhí)行的,并識別對可信空間的可信應用程序。不可信空間可以 包括在處理器上執(zhí)行的用戶模式或非特權處理的存儲器空間。加密功能及它們隨附的計算可以由用戶空間服務來執(zhí)行。另外,用戶空間服務 可以被配置為基于一個或多個可能特定于特定開發(fā)者簡檔、特定設備標識符、特定承載 商等的簡檔和策略來認證軟件。將這些邏輯上和計算上復雜的處理與可信空間分離將改 善軟件系統(tǒng)可靠性和性能,并使得能夠采用復雜的加密和策略執(zhí)行。為了例示本發(fā)明的實施例,下面將給出圖1-7。圖1例示了實施例可以實施的整 體系統(tǒng)圖。圖2-3示出了軟件部件和用于控制軟件的執(zhí)行的示例性簡檔的實施例。圖4 示出了軟件部件之間的數(shù)據(jù)流的一個示例。接著圖5-6例示了用于基于簡檔執(zhí)行軟件的 處理流程圖。提供圖7來例示移動計算設備的一個示例。下面將從參照圖1開始進一步 描述這些附圖。圖1是計算環(huán)境的一個示例,該計算環(huán)境允許授權軟件代碼分布到被配置為僅 執(zhí)行授權代碼的計算設備。計算設備100可以是任意數(shù)量的不同類型的計算設備,包 括移動通信設備、臺式計算機、膝上型計算機、手持式計算機、個人數(shù)字輔助(PDA)設 備、移動電話設備、媒體播放設備,等等。計算設備100可以被配置為要求在計算設備 100上執(zhí)行的任何代碼由可信授權機構102來授權。在其他實施例中,可以采用更復雜的 授權方案,例如,未授權軟件可執(zhí)行僅用于有限用途或者訪問有限設備資源,而授權軟 件可以被提供以對設備100的資源的更廣泛訪問。如下面將更詳細討論的,授權功能可以由確定代碼是否已經(jīng)由可信授權機構授 權的設備100的操作系統(tǒng)提供或者與之相結合地提供。如果代碼如此被授權和驗證,則 其一般可以被執(zhí)行而無需任何進一步的系統(tǒng)或用戶交互;如果代碼沒有被授權,則其在 計算設備100上執(zhí)行的能力可以被限制或者甚至禁止。在一些實施例中,計算設備可以 警告用戶該代碼沒有被授權,并且詢問用戶是否仍希望執(zhí)行該未授權的代碼。在其他實 施例中,計算設備100可以被配置為根本禁止未授權代碼被執(zhí)行,而不顧用戶的意愿。在一些實施例中,可信授權機構102可以通過數(shù)字簽名軟件106來授權軟件 106。如本領域所公知的,數(shù)字簽名采用公鑰加密法來確保數(shù)據(jù)的完整性。例如,軟件 開發(fā)者104可以向可信授權機構102提供經(jīng)編譯的對象代碼。然后可信授權機構102可 以創(chuàng)建具有對軟件106的對象代碼的私鑰的數(shù)字簽名,并且可以使得代碼對計算設備100 是可用的。當可以在計算設備100上請求執(zhí)行軟件時,計算設備100檢查軟件106的數(shù)字簽 名來驗證其真實性和/或授權。如果軟件被驗證為由可信授權機構102簽名,則軟件106 可以在計算設備100上執(zhí)行。計算設備100可以有多種方法來在執(zhí)行之前檢查軟件106 的數(shù)字簽名。軟件開發(fā)者104可以是編寫、開發(fā)、測試、行銷、銷售和/或發(fā)布用以在計算設備100上運行的軟件的任何人或組織。在一個實施例中,開發(fā)者104可以是開發(fā)在其控 制或管理的設備100上使用的軟件的公司或企業(yè)。作為軟件開發(fā)周期的一部分,軟件開發(fā)者104可能希望在與軟件106將現(xiàn)場部署 于其上的計算設備相類似的計算設備上測試其軟件。因此,軟件開發(fā)者104可以具有一 個或多個開發(fā)者計算設備100,其允許軟件開發(fā)者開發(fā)、測試和/或以其他方式進一步開 發(fā)軟件106。開發(fā)者計算設備100可以與所開發(fā)的軟件106將要提供給的計算設備100相同。 例如,如果軟件開發(fā)者104在編寫要運行在諸如iPhone的移動電話平臺上的軟件106,例 如,開發(fā)者計算設備100可以是iPhone。類似地,如果針對軟件106的計算設備平臺100 是諸如iPodTouch的媒體播放器,那么開發(fā)者計算設備100可以是iPod touch。通過采用 類似的設備用于測試和開發(fā),軟件開發(fā)者104可以能夠在將軟件發(fā)布到終端用戶以在計 算設備100上使用之前更有效地開發(fā)和測試軟件。在軟件開發(fā)過程期間,軟件應用程序中的代碼可以被頻繁改變。因此,如下面 將描述的,軟件開發(fā)者可以獲得和使用在一個或多個計算設備100上的開發(fā)者訪問。該 開發(fā)者訪問簡檔可以安裝在開發(fā)者計算設備100上,其允許開發(fā)者在設備100上修改、重 編譯并測試他們的軟件,而無需從可信授權機構102請求附加的代碼簽名服務。在一些實施例中,除了接收開發(fā)者訪問簡檔之外,開發(fā)者計算設備100還可以 包括諸如調(diào)試、追蹤或描繪軟件的開發(fā)和測試相關的軟件,作為安裝在開發(fā)者計算設備 100上的標準發(fā)布的一部分,作為預先準備處理的一部分,或者在任何其他時間包括該 軟件。在一些實施例中,開發(fā)者計算設備100被預先準備有這種附加的開發(fā)相關軟件。 在其他實施例中,開發(fā)相關軟件可以隨開發(fā)者訪問簡檔或者與之相結合地被安裝在設備 上。圖2是提供開發(fā)者計算設備100如何可以被配置為采用開發(fā)者訪問簡檔208來執(zhí) 行沒有被可信授權機構102簽名的軟件模塊206的一個示例的框圖。如上所述,開發(fā)者 計算設備100可以與可以向其提供軟件開發(fā)者104創(chuàng)建的軟件106的計算設備100類型相 同。軟件106可以包括存儲在設備100上或可由設備100訪問的一個或多個軟件模塊 206。在一個實施例中,計算設備100的存儲設備209可以包括計算機可讀存儲介質(易 失性和/或非易失性的),其可被配置為存儲軟件模塊206和簡檔208中的一個或兩者。 存儲設備209還可以被配置為存儲操作系統(tǒng)202的代碼,并且還可以包括設備100的通用 存儲設備。軟件模塊206可以被暫時存儲在設備100上或者永久性地存儲在設備100上。開發(fā)者計算設備100可以包括操作系統(tǒng)。操作系統(tǒng)可以是廣為公知的操作系 統(tǒng),例如MacOS、Windows> Linux、Unix、Symbian等等。如以上簡要地討論的,操作 系統(tǒng)的一部分(例如,操作系統(tǒng)202的內(nèi)核)可以被配置為要求在設備100上執(zhí)行的代碼 在被允許在設備上執(zhí)行之前被授權。該授權可以采取數(shù)字地簽名軟件模塊206中的一些 或全部的可信授權機構102的形式。在一些實施例中,可信授權機構102采用代碼簽名 證書,其可以被用于驗證經(jīng)簽名的計算機代碼的來源和完整性。操作系統(tǒng)202所采用的存儲器的內(nèi)核空間在概念上可以被認為是可信空間。信 任可以通過對內(nèi)核的引導時認證來建立。在一個實施例中,計算設備100可以包括用于提供對操作系統(tǒng)202及其內(nèi)容所采用的內(nèi)核空間的引導時認證的硬件支持。例如,在一 個實施例中,計算設備100的引導加載器可以例如采用適合的公鑰簽名驗證來在加載和 引導內(nèi)核之前認證內(nèi)核軟件的簽名。數(shù)字簽名可以包括摘要,該摘要例如可以通過在軟件上執(zhí)行散列函數(shù)以創(chuàng)建消 息摘要來創(chuàng)建。在一些實施例中,可以采用遞增代碼簽名。散列值可以是針對軟件的全 部或特定部分產(chǎn)生的散列值。例如,在一些實施例中,軟件被分為諸如一個或多個頁面 的一個或多個單元。散列值是針對軟件的每個單元或頁面生成的。在這種實施例中,軟 件的摘要包括針對每個代碼或頁面的散列值的陣列或表生成的散列值。然后可以利用與 可信授權機構102相關聯(lián)的私用加密密鑰來加密消息摘要。在一個實施例中,廣為公知 的SHA-I函數(shù)可以用來生成消息摘要。然后可以將加密的消息摘要(也稱為簽名)附加 到一個或多個軟件模塊206。在一些實施例中,當在設備上請求執(zhí)行軟件代碼時,操作系統(tǒng)202可以通過證 實數(shù)字簽名而驗證軟件代碼的來源和完整性來處理請求。如果可信授權機構102驗證了 代碼的來源,并且代碼的完整性沒有被損害,則操作系統(tǒng)202可以允許代碼在計算設備 100上運行。開發(fā)者計算設備100還可以包括設備標識符204。設備標識符204可以采取多種 形式。在一個實施例中,設備標識符204可以是唯一地標識開發(fā)者計算設備100的序列 號。在其他實施例中,設備標識符204可以是操作系統(tǒng)202生成的唯一標識符。如上所述,開發(fā)者計算設備100還可以具有可信授權機構102創(chuàng)建的開發(fā)者訪問 簡檔208。開發(fā)者訪問簡檔208可以包括指示允許特定設備執(zhí)行沒有被可信授權機構102 簽名的軟件的一組數(shù)據(jù)。在一個實施例中,開發(fā)者訪問簡檔208允許軟件開發(fā)者104修改 和重編譯其軟件模塊206的源代碼,然后在開發(fā)者計算設備100上測試軟件模塊206,而 無需從可信授權機構102請求附加的代碼簽名服務。相反,軟件開發(fā)者104可以被允許 數(shù)字地簽名其軟件模塊206,并且在具有如下開發(fā)者訪問簡檔208的開發(fā)者計算設備100 上運行軟件,該開發(fā)者訪問簡檔208指定開發(fā)者104簽名的代碼可以在設備100上執(zhí)行。 在一些實施例中,開發(fā)者訪問簡檔還可以指定在測試軟件模塊206中開發(fā)者104可以執(zhí)行 的特定操作。例如,開發(fā)者訪問簡檔208可以指定由開發(fā)者104數(shù)字簽名的軟件模塊206 可以在開發(fā)者計算設備100上被調(diào)試。開發(fā)者計算設備100還可以具有多于一個的開發(fā) 者訪問簡檔208。在一些實施例中,開發(fā)者訪問簡檔208可以與策略服務210相結合地操作。策 略服務210可以采取在操作系統(tǒng)的用戶(不可信)存儲器空間中運行的守護(daemon)或 其他處理的形式。策略服務210可以被進一步配置為執(zhí)行開發(fā)者訪問簡檔208中指定的 策略。例如,如果開發(fā)者訪問簡檔208指定開發(fā)者可以追蹤開發(fā)設備上的軟件的操作, 但是不允許進行調(diào)試,那么策略服務210將允許追蹤操作,而不允許在調(diào)試模式下運行 應用程序。策略服務210可以是由操作系統(tǒng)202初始啟動的,操作系統(tǒng)202可以在加載服務 210之前驗證該服務的加密保護的摘要。操作系統(tǒng)202可以經(jīng)由處理間通信或類似的適合 端口來保持對服務210的引用。由此,當簡檔服務210在不可信或用戶模式的空間中執(zhí) 行時,簡檔服務210的代碼可以在執(zhí)行時被驗證為由可信授權機構簽名。
圖3是開發(fā)者訪問簡檔208的更詳細視圖。如上所述,開發(fā)者訪問簡檔208可 以是存儲在設備100的存儲器中的一組數(shù)據(jù),其指示即使在軟件沒有被可信授權機構102 簽名的情況下設備也被允許執(zhí)行該軟件。開發(fā)者訪問簡檔208可以包括設備標識符數(shù)據(jù) 302、開發(fā)者標識符數(shù)據(jù)304以及權利數(shù)據(jù)306。設備標識符數(shù)據(jù)302指定開發(fā)者訪問簡檔208應用到的一個或多個設備標識符 302。在設備100是移動電話設備的實施例中,設備標識符數(shù)據(jù)302可以包括移動電話設 備序列號的陣列。開發(fā)者訪問簡檔208的設備標識符數(shù)據(jù)302可以包括不同設備的一個或多個設備 標識符204。在一個實施例中,設備標識符204可以是特定設備的特定標識符,其可以被 表示為數(shù)字或字母數(shù)據(jù)。在其他實施例中,可以采用更廣義的設備標識數(shù)據(jù)。例如,一 些設備銷售商和/或制造商可以提供具有特定于組織的設備標識符的設備。例如,設備 銷售商和/或制造商可以基于設備遞送到的組織來定制與設備相關聯(lián)的設備標識符204的 特定方面。設備標識符數(shù)據(jù)302可以包括設備標識符的范圍,而非列出每單個設備標識符 值。在又一些實施例中,可以采用位掩碼(bit mask)或通配字符來指定開發(fā)者訪問簡檔 應用到具有指定標識符特性的所有設備。在又一些實施例中,設備標識符數(shù)據(jù)302可以 指定開發(fā)者訪問簡檔208應用于所有設備。例如,在一個這種實施例中,由開發(fā)者標識 符數(shù)據(jù)302中標識的一個或多個開發(fā)者簽名的軟件可以被授權以在安裝了開發(fā)者訪問簡 檔208的任何設備100上運行。如上所述,開發(fā)者訪問簡檔208可以進一步包括開發(fā)者標識符數(shù)據(jù)304,該開發(fā) 者標識符數(shù)據(jù)304指定開發(fā)者訪問簡檔208所應用到的軟件開發(fā)者104。開發(fā)者標識符數(shù) 據(jù)304可以采取多種形式。在一些實施例中,開發(fā)者標識符數(shù)據(jù)304可以是與由開發(fā)者 訪問簡檔208覆蓋的軟件開發(fā)者104相關聯(lián)的公鑰。還可以采用其他類型的標識符。在 一些實施例中,開發(fā)者標識符數(shù)據(jù)304可以存儲在陣列數(shù)據(jù)結構中,該陣列數(shù)據(jù)結構存 儲在開發(fā)者訪問簡檔內(nèi)。當然,可以采用任何適合的數(shù)據(jù)結構。此外,開發(fā)者訪問簡檔208可以包括權利數(shù)據(jù)306。權利數(shù)據(jù)306可以包括如 下數(shù)據(jù),該數(shù)據(jù)指示針對由開發(fā)者標識符數(shù)據(jù)304標識的開發(fā)者簽名的軟件模塊206在設 備標識符數(shù)據(jù)302中指定的設備100上允許的操作的類型。特定的開發(fā)者訪問簡檔208 可以指定多于一個的開發(fā)者104為被授權,以數(shù)字地簽名由開發(fā)者訪問簡檔208授權的代碼。權利數(shù)據(jù)306可以指定關于在設備標識符數(shù)據(jù)302中標識的設備100針對由開發(fā) 者標識符數(shù)據(jù)304中標識的開發(fā)者104所簽名的應用程序所允許的訪問的類型。權利數(shù)據(jù) 306可以采取鍵值對的形式。該值例如可以包括數(shù)字、布爾或字母數(shù)據(jù)。在一個實施例 中,權利數(shù)據(jù)306可以包括指示各種指定權利的預定布爾變量的陣列或其他數(shù)據(jù)結構。在一個實施例中,權利數(shù)據(jù)306可以包括被執(zhí)行的能力。在一個實施例中,可 以包括準許調(diào)試權利,該準許調(diào)試權利在特定簡檔中被設置為“真(TRUE)”時指示與 開發(fā)者訪問簡檔208相關聯(lián)的開發(fā)者104所簽名的代碼被允許在調(diào)試模式下在設備100上 執(zhí)行軟件模塊206。如果準許調(diào)試模式權利被設置為“假(FALSE)”并且開發(fā)者104試 圖在設備100上在調(diào)試模式下運行軟件,則策略服務210可以阻止對代碼的執(zhí)行。其他這種權利可以包括可以指示準許追蹤權利的權利數(shù)據(jù)。準許追蹤權利可以準許由開發(fā)者 104數(shù)字簽名的軟件模塊206在設備100上在追蹤模式下被編譯和執(zhí)行。其他權利可以控制對具有安全或私密暗示(例如,地址簿數(shù)據(jù))的設備100的聯(lián) 網(wǎng)資源、數(shù)據(jù)、庫或應用程序的訪問。另外,其他權利可以控制對特定開發(fā)者API(包括 通話、聯(lián)網(wǎng)、地址或電話存儲、或多媒體API)的訪問。圖4是例示了在系統(tǒng)接收到并且處理請求時在一個實施例的計算設備100的軟件 部件之間發(fā)生的事件之間的關系的框圖。如圖所示,在事件1中,可包括可信空間的操 作系統(tǒng)202可以接收請求(響應于執(zhí)行特定軟件模塊206的用戶請求,或者響應于請求設 備100上的另一軟件部件執(zhí)行特定軟件模塊206)以執(zhí)行標識的軟件模塊206。在一個實 施例中,該請求可以包括對存儲設備209的目錄或文件的引用,存儲設備209存儲軟件模 塊206的可執(zhí)行指令代碼。在事件2中,操作系統(tǒng)202可以將認證軟件模塊206的請求傳送給策略服務 210。在一個實施例中,認證請求可以包括對與軟件模塊206相關聯(lián)的存儲設備209中的 存儲位置的引用。操作系統(tǒng)202還可以將軟件模塊206的至少一部分的摘要提供給策略 服務210。另選地或者另外地,策略服務210可以生成軟件模塊206的全部或部分的摘 要。在一個實施例中,摘要可以基于針對與軟件模塊206相關聯(lián)的每個代碼頁面或每個 文件所確定的摘要值。在一個實施例中,對策略服務210的請求可以包括諸如要被執(zhí)行 的特定權利的其他數(shù)據(jù)。例如,操作系統(tǒng)202可以指定,權利可以是執(zhí)行、調(diào)試或者訪問指定的系統(tǒng)資 源的權利。操作系統(tǒng)202或者設備100的操作系統(tǒng)的另一部分可以被配置為請求訪問特定 網(wǎng)絡(例如,移動電話網(wǎng)絡、藍牙堆棧)或者設備100的特定能力(例如,訪問設備100 的傳聲器、揚聲器、照相機或者其他I/O接口)的權利授權。在事件5中,策略服務210可以訪問與執(zhí)行軟件模塊206相關聯(lián)的一個或多個簡 檔208。在一個實施例中,簡檔是從存儲設備209訪問的。在一個實施例中,簡檔208 包括與軟件模塊206的開發(fā)者相關聯(lián)的特定簡檔??梢哉J識到,盡管這里是針對軟件開 發(fā)者104而非可信授權機構102描述了簡檔,但是還可以利用這里描述的系統(tǒng)和方法來控 制對由可信授權機構102 (例如,設備或操作系統(tǒng)開發(fā)者)提供的軟件模塊的訪問。在事件5中,策略服務210可以基于摘要和/或簡檔208驗證軟件模塊206的執(zhí) 行權限。例如,策略服務210可以被配置為接收與軟件模塊206的摘要相關聯(lián)的簽名, 并且加密驗證所述摘要。在一個實施例中,策略服務210可以采用與特定開發(fā)者104相 關聯(lián)的并且可以被包括作為簡檔208的一部分的公鑰,來驗證摘要的簽名。在一個實施例中,為了確保簡檔和開發(fā)者密鑰是可信的,策略服務210加密地 驗證簡檔可由可信授權機構102信任。在該實施例中,策略服務210可以通過采用可存 儲在設備100上或者例如經(jīng)由數(shù)據(jù)網(wǎng)絡以其他方式由設備100訪問的可信授權機構102的 公鑰而驗證簡檔(及其內(nèi)容)的摘要或其他簽名來驗證簡檔。策略服務210可以被進一步配置為驗證可針對特定設備100授權軟件模塊206。 例如,在一個實施例中,簡檔208可以包括用于匹配設備標識符(例如,用于匹配特定組 設備100的掩碼或通配符)的一個或多個設備標識符或數(shù)據(jù)。策略服務210可以將標識符與設備100所安全保持的標識符進行比較,并且當策
10略208的標識符數(shù)據(jù)與設備100的標識符數(shù)據(jù)匹配時授權軟件模塊。設備標識符可以包 括存儲在設備上可用于標識的任何數(shù)據(jù),包括制造商序號、諸如集成電路卡ID (ICCID) 的移動電話設備的設備或用戶標識符、當前插入到設備100上的SIM卡的國際移動用戶 標識符(IMSI)、設備上編碼的國際移動設備標識符(IMEI)、電子序號(ESN)、或者任何 其他適于標識特定軟件模塊206針對其被授權的設備100的數(shù)據(jù)。策略服務210可以被配置為基于簡檔208所指定的進一步的權利或其他能力來授 權軟件模塊206。可執(zhí)行或不可執(zhí)行可以被認為是權利的一個示例。其他權利可以指定 特定軟件模塊206是否可以基于一個或多個簡檔208并基于策略服務210可配置為執(zhí)行的 任何其他策略來執(zhí)行或訪問服務。策略服務210可以被配置為在用戶空間執(zhí)行,使得其中執(zhí)行的策略和簡檔可以 是任意復雜并進行更新的而不會增加內(nèi)核或其他受保護的存儲器空間的尺寸,并且更容 易被開發(fā)和修改而沒有一般與內(nèi)核編程相關聯(lián)的困難。應當認識到,盡管圖5例示了操作系統(tǒng)202確定特定軟件模塊206是否具有要被 執(zhí)行的權利的示例,但是這里描述的方法和系統(tǒng)可以用于授權對設備硬件能力、內(nèi)核的 其他服務、其他操作系統(tǒng)服務、或者另一軟件模塊208的服務的訪問。例如,設備100 可以包括例如由操作系統(tǒng)202或僅根據(jù)被策略服務210執(zhí)行的策略授權的其他操作系統(tǒng)部 件提供的調(diào)試或追蹤工具(facility)。例如,調(diào)試器接口(未示出)可以請求基于與軟件 模塊206相關聯(lián)的簡檔208中指定的調(diào)試權利或者通過其他策略來授權利用圖5所示的系 統(tǒng)對特定軟件模塊206的調(diào)試??梢酝ㄟ^與設備相關聯(lián)的一個或多個策略來執(zhí)行權利。例如,用于執(zhí)行權利的 策略可以包括將簡檔中的權利數(shù)據(jù)處理為白名單(whitelist),例如,當簡檔208可以包括 指示存在針對特定軟件模塊206和/或特定設備100的權利的數(shù)據(jù)時,可以針對特定這種 權利認證軟件模塊206。另一策略可以基于黑名單(blacklist)執(zhí)行權利,例如,軟件模塊 206可以針對特定這種權利被認證,除非簡檔208或可應用的策略可以包括否定針對特定 軟件模塊206和/或特定設備100的權利的數(shù)據(jù)。在另一實施例中,設備100可以被配 置具有如下策略,該策略使得一些權利可以被配置為通過白名單執(zhí)行,而其他權利被配 置為通過黑名單執(zhí)行。可以包括其他策略以更精細地控制特定權利或解決沖突的簡檔數(shù)據(jù)。例如,在 一個實施例中,移動服務提供商可以在其網(wǎng)絡中使用的設備中包括特定承載商簡檔208, 該簡檔進一步指定對例如語音網(wǎng)絡或撥號盤訪問的特定設備能力的權利,其可能與針對 特定軟件模塊206的開發(fā)者簡檔208相沖突。在這種事件中,設備100的策略可以指定 一個簡檔的權利指定來控制。在事件6中,當策略服務210可以驗證軟件模塊240的權利和/或其他執(zhí)行權限 時,策略服務210向操作系統(tǒng)202或策略服務210的其他客戶端提供指示軟件模塊206的 權利和/或認證請求所針對的權利的數(shù)據(jù)。在事件7中,操作系統(tǒng)202然后可以根據(jù)從 策略服務210接收到的權利數(shù)據(jù)來執(zhí)行軟件模塊206。圖5是例示了在設備100中驗證軟件模塊206的權利的方法500的一個實施例的 流程圖。該方法可以在塊502處開始,在塊502中操作系統(tǒng)202的可信空間接收執(zhí)行特 定軟件模塊206的請求。在一個實施例中,可信空間可以在通過設備100的引導加載器(其在加載操作系統(tǒng)202前對其進行加密驗證)啟動設備時建立。在塊504中,可信空間處理將指示軟件模塊206的數(shù)據(jù)傳送到在不可信空間中執(zhí) 行的策略服務210,但是該不可信空間在初始執(zhí)行策略服務210時已被授予信任。數(shù)據(jù) 可以包括對軟件模塊206的存儲位置的引用,并且可選地包括指示特定權利被認證的數(shù)據(jù)。接下去在塊506處,策略服務210認證軟件模塊206。在一個實施例中,策略服 務210基于加密認證來認證軟件模塊206。例如,策略服務210可以通過采用諸如非對稱 /公鑰加密的適合加密技術驗證軟件模塊206的數(shù)字簽名來認證軟件模塊206。此外,可 以利用類似的加密技術來認證與軟件模塊206相關聯(lián)的一個或多個權利。參照圖6將給 出塊506的更多細節(jié)。前進到塊508,策略服務210將指示軟件模塊的執(zhí)行權限的數(shù)據(jù)傳送到操作系統(tǒng) 202的內(nèi)核。該數(shù)據(jù)可以包括布爾認證響應、指示軟件模塊206的一個或多個權利的數(shù) 據(jù)、軟件模塊206的經(jīng)驗證摘要或者與請求相關的任何其他適合數(shù)據(jù)。在塊510中,操作系統(tǒng)202或其他可信處理可以執(zhí)行軟件模塊206,或者可以基 于經(jīng)認證的權利執(zhí)行針對軟件模塊206的服務。圖6是更詳細地例示了圖5的方法中的塊506的流程圖。在塊602處,策略服 務210可以計算與軟件模塊206的可執(zhí)行代碼相關聯(lián)的至少一個文件或其他數(shù)據(jù)結構的摘 要。摘要可以利用例如包括SHA-I的任何適合散列算法來計算。在塊604中,策略服務210可以識別與軟件模塊206和/或設備100相關聯(lián)的一 個或多個簡檔208。在一個實施例中,簡檔208可以各自包括簽名密鑰和指示軟件模塊 206的權利的數(shù)據(jù)。例如,權利可以包括諸如表1中例示的表格形式的數(shù)據(jù)結構。表1示例簡檔數(shù)據(jù)
權利要求
1.一種授權軟件的計算機化方法,該方法包括在處理器的可信空間中接收用以執(zhí)行在電子設備上存儲的軟件模塊的請求; 將指示所述軟件模塊的數(shù)據(jù)傳送到在所述處理器的不可信空間中執(zhí)行的服務; 通過所述服務認證對所述軟件模塊的至少一個權利; 將指示所述經(jīng)認證的權利的數(shù)據(jù)傳送到所述可信空間;以及 基于所述權利執(zhí)行所述軟件模塊。
2.根據(jù)權利要求1所述的方法,其中,所述可信空間包括在所述設備的處理器上以可 信模式執(zhí)行的操作系統(tǒng)內(nèi)核,并且在所述不可信空間中執(zhí)行的所述服務包括以所述處理 器的用戶模式處理執(zhí)行的處理。
3.根據(jù)權利要求1所述的方法,其中,所述軟件模塊至少包括應用程序或共享庫。
4.根據(jù)權利要求1所述的方法,其中,所述指示所述軟件模塊的數(shù)據(jù)包括對與所述軟 件模塊相關聯(lián)的可執(zhí)行指令的至少一部分的引用。
5.根據(jù)權利要求4所述的方法,其中,認證至少一個權利包括計算指示所述部分的摘要。
6.根據(jù)權利要求5所述的方法,其中,計算指示所述軟件模塊的至少一部分的摘要包 括基于指示所述軟件模塊的相應部分的多個摘要值來生成摘要。
7.根據(jù)權利要求5所述的方法,其中,所述摘要包括指示所述至少一個部分的 SHA-I散列。
8.根據(jù)權利要求5所述的方法,其中,認證所述至少一個權利包括基于與所述軟 件模塊相關聯(lián)的實體的加密密鑰來認證所述摘要的加密簽名。
9.根據(jù)權利要求8所述的方法,其中,認證所述摘要的加密簽名包括 基于可信實體的公鑰來計算所述摘要的加密簽名;以及將所計算的簽名與關于至少一個文件存儲的簽名進行比較。
10.根據(jù)權利要求8所述的方法,其中,認證所述軟件模塊的至少一個權利包括識別與所述軟件模塊相關聯(lián)的簡檔,其中所述簡檔包括指示至少一個設備標識符的 數(shù)據(jù);基于所述實體的加密密鑰來認證所述簡檔;將所述簡檔的設備標識符與所述電子設備的設備標識符進行比較;以及 基于所述比較來認證所述權利。
11.根據(jù)權利要求10所述的方法,其中,所述簡檔還包括指示至少一個權利的數(shù)據(jù), 并且其中,認證所述軟件模塊的至少一個權利包括當所述軟件模塊的權利與所述簡檔的 權利一致時認證所述軟件模塊的權利。
12.根據(jù)權利要求1所述的方法,其中,所述軟件模塊的權利包括準許調(diào)試權利、準 許追蹤權利、準許訪問地址簿數(shù)據(jù)權利或者準許訪問多媒體API權利中的至少一個或多 個。
13.—種計算機程序產(chǎn)品,包括計算機可讀介質,包括指示代碼的數(shù)據(jù),所述代碼可由電子設備的至少一個處理器 執(zhí)行以實現(xiàn)包括如下的處理在處理器的可信空間中接收用以執(zhí)行在電子設備上存儲的軟件模塊的請求;將指示所述軟件模塊的數(shù)據(jù)傳送到在所述處理器的不可信空間中執(zhí)行的服務; 通過所述服務認證對所述軟件模塊的至少一個權利; 將指示所述經(jīng)認證的權利的數(shù)據(jù)傳送到可信空間處理;以及 基于所述權利執(zhí)行所述軟件模塊。
14.根據(jù)權利要求13所述的計算機程序產(chǎn)品,其中,所述可信空間包括在所述設備的 處理器上以可信模式執(zhí)行的操作系統(tǒng)內(nèi)核,并且在所述不可信空間中執(zhí)行的所述服務包 括以所述處理器的用戶模式處理執(zhí)行的處理。
15.根據(jù)權利要求13所述的計算機程序產(chǎn)品,其中,所述軟件模塊至少包括應用程序或共享庫。
16.根據(jù)權利要求13所述的計算機程序產(chǎn)品,其中,所述指示所述軟件模塊的數(shù)據(jù)包 括對與所述軟件模塊相關聯(lián)的可執(zhí)行指令的至少一部分的引用。
17.根據(jù)權利要求16所述的計算機程序產(chǎn)品,其中,認證至少一個權利包括計算指示 所述部分的摘要。
18.根據(jù)權利要求17所述的計算機程序產(chǎn)品,其中,計算指示所述軟件模塊的至少一 部分的摘要包括基于指示所述軟件模塊的相應部分的多個摘要值來生成摘要。
19.根據(jù)權利要求17所述的計算機程序產(chǎn)品,其中,所述摘要包括指示所述至少一個 部分的SHA-I散列。
20.根據(jù)權利要求17所述的計算機程序產(chǎn)品,其中,認證所述至少一個權利包括 基于與所述軟件模塊相關聯(lián)的實體的加密密鑰來認證所述摘要的加密簽名。
21.根據(jù)權利要求20所述的計算機程序產(chǎn)品,其中,認證所述至少一個權利包括 基于可信實體的公鑰來計算所述摘要的加密簽名;以及將所計算的簽名與關于至少一個文件存儲的簽名進行比較。
22.根據(jù)權利要求20所述的計算機程序產(chǎn)品,其中,認證所述至少一個權利包括 識別與所述軟件模塊相關聯(lián)的簡檔,其中所述簡檔包括指示至少一個設備標識符的數(shù)據(jù);基于所述實體的加密密鑰來認證所述簡檔;將所述簡檔的設備標識符與所述電子設備的設備標識符進行比較;以及 基于所述比較來認證所述權利。
23.根據(jù)權利要求23所述的計算機程序產(chǎn)品,其中,所述簡檔還包括指示至少一個權 利的數(shù)據(jù),并且其中,當所述軟件模塊的權利與所述簡檔的權利一致時,處理器認證所 述軟件模塊的權利。
24.根據(jù)權利要求13所述的計算機程序產(chǎn)品,其中,所述軟件模塊的權利包括準許調(diào) 試權利、準許追蹤權利、準許訪問地址簿數(shù)據(jù)權利或者準許訪問多媒體API權利中的至 少一個或多個。
25.—種設備,包括存儲介質,該存儲介質配置為 存儲用于在所述電子設備上執(zhí)行的軟件模塊;和存儲至少一個簡檔,該至少一個簡檔包括與所述軟件模塊相關聯(lián)的至少一個權利;以及至少一個處理器,該至少一個處理器配置為由在處理器的可信空間中執(zhí)行的處理接收用以執(zhí)行軟件模塊的請求;將指示所述軟件模塊的數(shù)據(jù)傳送到在所述處理器的不可信空間中執(zhí)行的服務;通過所述服務認證對所述軟件模塊的至少一個權利;將指示所述經(jīng)認證的權利的數(shù)據(jù)傳送到可信空間處理;以及基于所述權利執(zhí)行所述軟件模塊。
26.根據(jù)權利要求25所述的設備,其中,所述可信空間包括在所述設備的處理器上以 可信模式執(zhí)行的操作系統(tǒng)內(nèi)核,并且在所述不可信空間中執(zhí)行的所述服務包括以所述處 理器的用戶模式處理執(zhí)行的處理。
27.根據(jù)權利要求25所述的設備,其中,所述軟件模塊至少包括應用程序或共享庫。
28.根據(jù)權利要求25所述的設備,其中,所述指示所述軟件模塊的數(shù)據(jù)包括對與所述 軟件模塊相關聯(lián)的可執(zhí)行指令的至少一部分的引用。
29.根據(jù)權利要求28所述的設備,其中,為了認證摘要的加密簽名,所述處理器還配 置為計算指示所述部分的摘要。
30.根據(jù)權利要求29所述的設備,其中,為了計算所述摘要,所述處理器配置為基于 指示所述軟件模塊的相應部分的多個摘要值來生成摘要。
31.根據(jù)權利要求29所述的設備,其中,所述摘要包括指示所述至少一個部分的 SHA-I散列。
32.根據(jù)權利要求29所述的設備,其中,為了認證摘要的加密簽名,所述處理器還配 置為基于與所述軟件模塊相關聯(lián)的實體的加密密鑰來認證所述摘要的加密簽名。
33.根據(jù)權利要求32所述的設備,其中,為了認證所述摘要的加密簽名,所述處理器 還配置為基于可信實體的公鑰來計算所述摘要的加密簽名;以及 將所計算的簽名與關于至少一個文件存儲的簽名進行比較。
34.根據(jù)權利要求32所述的設備,其中,為了認證所述摘要的加密簽名,所述處理器 還配置為識別與所述軟件模塊相關聯(lián)的簡檔,其中所述簡檔包括指示至少一個設備標識符的 數(shù)據(jù);基于所述實體的加密密鑰來認證所述簡檔;將所述簡檔的設備標識符與所述電子設備的設備標識符進行比較;以及 基于所述比較的結果來認證所述權利。
35.根據(jù)權利要求34所述的設備,其中,所述簡檔還包括指示至少一個權利的數(shù)據(jù), 并且其中,認證所述軟件模塊的至少一個權利包括當所述軟件模塊的權利與所述簡檔的 權利一致時認證所述軟件模塊的權利。
36.根據(jù)權利要求25所述的設備,其中,所述軟件模塊的權利包括準許調(diào)試權利、準 許追蹤權利、準許訪問地址簿數(shù)據(jù)權利或者準許訪問多媒體API權利中的至少一個或多
全文摘要
實施例包括用于授權軟件代碼在安全操作環(huán)境中被執(zhí)行或訪問性能的系統(tǒng)和方法。簡檔可由可信實體發(fā)出,以將信任擴展到其他實體,從而準許這些其他實體在安全操作環(huán)境中,例如在特定計算設備上,提供或控制應用程序的執(zhí)行。該簡檔準許實體將軟件代碼添加到設備,而無需由可信授權機構再次授權每個發(fā)布,例如測試、質量確保,或者添加到由其他實體控制或授權的有限組設備。
文檔編號G06F21/00GK102016867SQ200980115997
公開日2011年4月13日 申請日期2009年3月2日 優(yōu)先權日2008年3月4日
發(fā)明者D·德阿特勒, H·潘塞, M·麗達, M·安德勒爾, M·布勞沃, S·庫鉑 申請人:蘋果公司