專利名稱:可信代碼群組的制作方法
技術領域:
本發(fā)明通常涉及軟件安全性領域,且更明確地說,涉及軟件安全性的驗證及證實。
背景技術:
當今,軟件應用程序通常由在一起工作以提供共用"應用程序功能"的數(shù)個不同 的可執(zhí)行模塊組成。例如,新應用程序的開發(fā)者可寫入實施所述應用程序的"核心業(yè) 務邏輯"的源代碼,同時再分類到第三方或其它代碼程序庫以用于更多例程功能 (functionality),例如,共用對話框或通信功能。在運行時間時,應用程序被啟動且 指令操作系統(tǒng)加載動態(tài)鏈接到正執(zhí)行應用程序代碼的其它程序庫的實例。接著,在應 用程序正執(zhí)行時,應用程序及程序庫通常作為存儲器中的單個單元一起工作。
.然而,管理正執(zhí)行應用程序代碼與程序庫之間的信任時困難的。在應用程序正執(zhí) 行時,其加載的任何程序庫均被映射到應用程序的存儲器空間或過程邊界且所述程序 庫就像應用程序的一部分那樣執(zhí)行。 一旦加載,應用程序與程序庫之間便不存在邊界, 且當應用程序調(diào)用程序庫時,其對所述程序庫便完全信任。程序庫可修改、刪除或在 分布應用程序己存取的任何或所有數(shù)據(jù)。隨著應用程序變得更復雜且程序庫更經(jīng)常地 被從各種可能的不可信位置加載到計算裝置上,關注可由應用程序調(diào)用或加載的代碼 程序庫的安全性及完整性(即,"可信性")變得更重要。
直到現(xiàn)在,一種可勝任評估及/或確保代碼程序庫的可信性的機構(gòu)一直困擾著所屬 領域的技術人員。
發(fā)明內(nèi)容
本發(fā)明針對用于確?;蚣訌姂贸绦蚺c程序庫之間的信任的技術及機構(gòu)。在一個 方面,本發(fā)明設想一種用于確保代碼模塊之間的信任的方法。所述方法包含接收使用 一類別功能的應用程序,所述應用程序包含所述應用程序信任的用以實施所述類別的 可信代碼群組("TCG")列表。所述方法還包含接收實施所述類別的功能的程序庫, 所述程序庫是使用簽名密鑰簽署的,所述簽名將所述程序庫與TCG相關聯(lián),所述TCG 是可信性的認可。當起始調(diào)用以致使加載所述程序庫時,所述方法包含在加載所述程 序庫之前,致使驗證所述程序庫上的簽名以確定所述程序庫是否是所列出的TCG中的 一者的成員。
在另一方面,本發(fā)明設想一種用于驗證程序庫的可信性的方法及計算機可讀媒
體。所述方法包含從應用程序接收加載所述程序庫的指令,所述應用程序具有被授權(quán) TCG ID的相關聯(lián)列表,每一 TCG ID與TCG相關聯(lián),所述TCG表示與程序庫群組相 關聯(lián)的信任等級。所述方法進一步包含檢驗所述程序庫以檢測將TCG ID與所述程 序庫相關聯(lián)的數(shù)字簽名;將所述程序庫的所述TCG ID與和所述應用程序相關聯(lián)的所 述被授權(quán)TCGID列表相比較以確定所述程序庫是否被授權(quán)使用所述應用程序來執(zhí)行; 及如果所述程序庫被授權(quán),那么加載所述程序庫。
在又一方面,本發(fā)明設想一種用于驗證程序庫的可信性的設備。所述設備包含
存儲媒體,其上存儲有應用程序及程序庫;處理器;及存儲器,其耦合到所述處理器
及所述存儲媒體且其中駐留計算機可執(zhí)行組件。所述組件操作以致使所述處理器執(zhí)行
從應用程序接收加載所述程序庫的指令,所述應用程序具有被授權(quán)TCG ID的相關聯(lián) 列表,每一TCGID與TCG相關聯(lián),所述TCG表示與程序庫群組相關聯(lián)的信任等級; 檢驗所述程序庫以檢測將所述TCG ID與所述程序庫相關聯(lián)的數(shù)字簽名;將所述程序 庫的所述TCG ID與和所述應用程序相關聯(lián)的所述被授權(quán)TCG ID列表相比較,以確 定所述程序庫是否被授權(quán)以使用所述應用程序來執(zhí)行;及如果所述程序庫被授權(quán),那 么加載所述程序庫。
結(jié)合圖式依據(jù)下文所述的詳細說明,本發(fā)明的特征及優(yōu)點將變得更明了,在所有 圖式中相同的參考字符識別對應的元件。
圖1顯示根據(jù)本發(fā)明的一個實施方案正執(zhí)行應用程序及程序庫的實例的系統(tǒng)存儲器。
圖2是各自具有一個或一個以上相關聯(lián)可信代碼群組("TCG")的可信實體("TE") 層級的概念性圖解。
圖3圖解說明樣本開發(fā)環(huán)境,其中代碼開發(fā)者與TE互動以在TE的控制下獲得 經(jīng)批準用于特定TCG的程序庫。
圖4圖解說明根據(jù)本發(fā)明的實施方案的計算裝置,例如其上執(zhí)行應用程序及程序 庫的手持式計算裝置。
圖5是操作流程圖,其大體上圖解說明用于確保應用程序與所述應用程序加載的 程序庫之間的信任的方法。
圖6是功能框圖,其大體上圖解說明特別適合本發(fā)明的實施方案的樣本計算裝置 的核心組件。
具體實施例方式
以下是對本發(fā)明的各種實施例的詳細說明,其使應用程序開發(fā)者能夠控制應用程 序可在運行時間時致使加載的程序庫的可信性。簡單地說,本發(fā)明設想允許程序庫開
發(fā)者使其共享程序庫經(jīng)評估而包含在一個或一個以上"可信代碼群組"中。應用程序 開發(fā)者接著包含識別應用程序在運行時間時應信任的那些可信代碼群組的列表。當安 裝的應用程序被啟動且試圖加載程序庫時,信任管理器驗證所述程序庫是否在所述應 用程序辨識的可信代碼群組內(nèi)。如果在所述群組內(nèi),那么信任管理器允許加載所述程 序庫,且如果不在所述群組內(nèi),那么信任管理器放棄所述加載。
為開始論述,圖1顯示根據(jù)本發(fā)明的一個實施方案的系統(tǒng)存儲器101,其中正執(zhí) 行應用程序111及程序庫131的實例。其它代碼也可在系統(tǒng)存儲器101中執(zhí)行,例如 其它應用程序145及/或操作系統(tǒng)代碼147。在繼續(xù)進行之前,提供將在整個文獻中使 用的術語的一些定義是有幫助的。
術語"信任者"意指加載被信任者的任何可執(zhí)行代碼(例如,應用程序)。信任 者具有圍繞其的存儲器或過程保護邊界且制定跨越所述邊界來往的政策。簡單的用戶 應用程序僅是信任者的一個實例。其它實例包含但不限于腳本、網(wǎng)頁內(nèi)容(例如,"快 閃"或"沖擊波"組件)、用戶接口(例如,高等級UI描述語言的用戶接口規(guī)格)及類似 物。
術語"被信任者"意指信任者在運行時間時加載的任何可執(zhí)行代碼(例如,程序庫) 或配置數(shù)據(jù)。術語"被信任者"包含但不限于共享及公共程序庫、動態(tài)及靜態(tài)鏈接的 程序庫、"擴展"、腳本、配置、內(nèi)容、用戶接口或如此項技術中所用術語的任何其 它資源(例如,圖像或多媒體數(shù)據(jù))。
在整個文獻中術語"應用程序"或"信任者"可互換使用。同樣,在整個文獻中 術語"程序庫"及"被信任者"可互換使用。因此,不應向術語"應用程序"及"程 序庫"附加不同于恰好歸屬于所述術語的意義的特定意義。
如圖1中所示,當將應用程序111加載到存儲器101中時,便創(chuàng)建其中所述應用 程序執(zhí)行的過程,且所述過程具有過程邊界113。正在過程邊界113內(nèi)執(zhí)行的代碼通 ??勺杂傻卮嫒∷鲞吔鐑?nèi)的任何存儲器位置,但不能(至少不能直接地)在過程邊 界113之外存取。雖然此處圖解說明為連續(xù)存儲器空間,但將了解過程還可具有不連 續(xù)的存儲器位置。
在此實例中,應用程序111正在過程邊界113內(nèi)執(zhí)行且分配有自己的用于數(shù)據(jù)115 的存儲器空間。雖然此處顯示為單個連續(xù)數(shù)據(jù)空間115,但將了解應用程序111可具 有用于不同類型數(shù)據(jù)的數(shù)個不同數(shù)據(jù)位置。
在執(zhí)行期間的任一點處,應用程序111可致使加載一個或一個以上程序庫,例 如,程序庫131。在此實例中,程序庫131可以是由應用程序111使用但不是應用程 序lll的部分的任何補充代碼。在一個實例中,程序庫131可以是實施某一核心或特 定功能的第三方程序庫。
程序庫131自己通常不具有過程或保護邊界,而是在應用程序的過程邊界113內(nèi) 執(zhí)行。因此,程序庫131可存取應用程序lll擁有的任何事物,例如,應用程序的數(shù) 據(jù)115且甚至應用程序可執(zhí)行代碼的多個部分。然而,程序庫131可具有其自己的數(shù)
據(jù)117,應用程序111可存取數(shù)據(jù)117。正是此對應用程序的代碼111及數(shù)據(jù)115的自 由存取創(chuàng)建了對應用程序111與程序庫131之間的牢固信任關系的需要。
如此專利文獻的剩余部分中的更全面描述,應用程序111說明定義程序庫131必 須屬于的信任關系的某一信息。當加載時,程序庫131指示其不屬于的那些信任關系。 當程序庫131開始加載時,如果其不屬于應用程序lll所辨識的信任關系,那么放棄 所述加載。
圖2是可信實體("TE")的層級200的概念性圖解,所述可信實體的每一者具有 一個或一個以上相關聯(lián)的可信代碼群組("TCG")。根據(jù)本發(fā)明,可信代碼群組("TCG") 實質(zhì)上是可相等信任的代碼模塊群組。可信實體(TE)是批準或認證代碼模塊進入到一 個或一個以上TCG的組織或可能個體。設想特定TE將擁有特定TCG的所有權(quán)且評 估或測試針對所述TCG中的成員資格提議的代碼模塊。
在一個特定實施方案中,每一TCG具有相關聯(lián)的TCG識別符(TCGID)。 TCG ID 是32-位的整數(shù),其識別所述TCG且唯一地區(qū)別每一TCG與其它TCC。在此特定實 施方案中,TCG ID的完整范圍可從0x00000000擴展到OxFFFFFFFF。參照圖2,最 高等級TE(g卩,TE201)具有整個范圍的TCGID的所有權(quán)。此最高等級TE 201可以是 負責移動裝置上的操作系統(tǒng)的組織或類似者。
最高等級TE201將整個TCG ID范圍內(nèi)對應于專家或特定信任域的某一區(qū)域的范 圍委授給從屬TE。在一個實例中,從屬TE(安全TE 211)可具有驗證及認可與任一類 型的安全特征相關的代碼程序庫的責任。因此,將用于安全特征的TCG ID范圍授給 安全TE211。安全TE211可進一步將其TCGID的子范圍授給下一等級TE。例如, 安全TE211可將TCGID的子范圍授給加密TE221或鑒別TE 222的。
最高等級TE201可將用于用戶接口組件的TCG ID的不同范圍授給負責用戶接口 程序庫的用戶接口 TE212。用戶接口 TE212接著將其TCG ID的子范圍授予負責共用 對話的共用對話TE 223。此層級系統(tǒng)允許靈活地分布TCG ID的范圍以便可在將來適 應額外的TCG。將了解整個范圍的某些子范圍可能出于某種原因而被排除用作TCG ID,例如保留用于另一使用。
為使用具體實例來圖解說明此概念,假設最高等級TE 201將范圍OxOOOFOOOO到 0x000FFFFF授給安全TE 211 ,將范圍0x00100000到0x1 A000O授給用戶接口 TE 212。 安全TE 211可依次將子范圍0x000F000F到0x000F00FF授給加密TE 221且將子范圍 OxOOOFOlOO至U OxOOOFOFFF授給鑒別TE 222。用戶接口 TE 212可將子范圍 0x0010F000到0x0010FFFF授給共用對話TE223。當然,這些特定范圍及子范圍僅是 用以圖解說明所述概念的實例且在任何方式中也未必是本發(fā)明所必需的。
圖3圖解說明樣本開發(fā)環(huán)境,其中代碼開發(fā)者301與TE 331互動以在TE 331控 制下獲得被簽署到特定TCG中的共享程序庫311。在此實例中,代碼開發(fā)者301可開 發(fā)出可在數(shù)字權(quán)利管理("DRM")應用程序中用于解碼安全媒體內(nèi)容的程序庫311。 TE331已被授給范圍TCGID332,從而具有批準程序庫進入到用于DRM程序庫的特
定TCG的授權(quán)。在此實例中,TE 331從根TE授權(quán)或"CA" 333接收認可程序庫的 授權(quán)。
開發(fā)者301向TE 331呈現(xiàn)未簽署的程序庫311以便得到批準,其可包含任何形 式的調(diào)查,例如,故障檢査、病毒檢査、性能評估或或許僅驗證開發(fā)者301的身份以 確保開發(fā)者301是可信的。如果未簽署的程序庫311及/或開發(fā)者301滿意TE的準則, 那么TE331 "簽署"未簽署的程序庫311。簽署未簽署的程序庫311可包含產(chǎn)生未簽 署程序庫311的雜湊值且使用私鑰320來編碼所述雜湊值。經(jīng)編碼的雜湊值稱為未簽 署程序庫311的數(shù)字簽名325。
在一個實施方案中,當產(chǎn)生數(shù)字簽名325時,將程序庫正簽署到其中的群組的TCG ID 312添加到未簽署程序庫311。此允許在簽署過程期間從添加到程序庫的信息直接 識別TCG。另一選擇是,TCGID可與簽署授權(quán)(例如,TE331或CA333)相關聯(lián)并嵌 入到其根證書中,以允許在運行時間驗證數(shù)字簽名325時間接地從證書鏈確定TCG。 可應用于本發(fā)明的實施方案的共用數(shù)字證書標準是ITU-T X.509標準。
將了解,數(shù)字證書325可在TCG ID 312被包含在封裝內(nèi)的情況下明確地或在證 書335通過證書鏈與TCG相關聯(lián)的情況下隱含地將經(jīng)簽署的程序庫321有效地綁定到 TCG。
TE331接著返回經(jīng)簽署的程序庫321、數(shù)字簽名325及可能地程序庫已被簽署到 其中的群組的TCGID 312。 TE 331還返回TE的證書335,其包含TE的供用于驗證 數(shù)字簽名325的真實性的公鑰。實際上,TE證書335可以是證書鏈,其包含產(chǎn)生可信 根證書的中間證書,例如,CA 333的證書。開發(fā)者301現(xiàn)在準備好分布經(jīng)簽署的程序 庫321。
應注意,雖然此處描述為執(zhí)行程序庫批準及證書頒發(fā)兩者的單個實體,但所述兩 個任務可由單獨實體來執(zhí)行。例如,在某些情況下,TE331可向CA 335請求頒發(fā)證 書335或或許向完全單獨的實體請求。
圖4圖解說明計算裝置401,在此實例中其是上面執(zhí)行應用程序411的手持式計 算裝置。圖6中圖解說明且在下文中描述可用于本發(fā)明的實施方案的一個實例性計算 裝置。計算裝置401包含操作系統(tǒng)420及一個或一個以上已安裝的應用程序(例如,應 用程序411),還存在可如上所述認證的(例如,經(jīng)認證的程序庫417)或未認證(例 如,程序庫419)的一個或一個以上代碼程序庫415。在此實例中,經(jīng)認證的程序庫 417已被批準包含在TCG中,且已由適當?shù)腡E簽署,如上所述。
應用程序411具有包含被授權(quán)TCG列表412的元數(shù)據(jù),被授權(quán)TCG列表412可 以是應用程序411說明其辨識的被授權(quán)TCG ID的列表。此意味著使用應用程序411 加載的任何程序庫415必須在被授權(quán)TCG列表412中的TCG中的一者中。將了解被 授權(quán)TCG列表412可包含可信TCGID的范圍,而非僅包含個別TCGID的列表。
應用程序411還可包含可信證書413的列表,可信證書413包含用于應用程序411 所信任的任何TE的根證書。根證書用于確定經(jīng)認證的程序庫是否已變更,變更的原
因是所述經(jīng)認證的程序庫因使用TE的公鑰(其嵌入在根證書中)來證實經(jīng)認證的程
序庫517的數(shù)字簽名而被簽署??尚抛C書413可預先安裝在計算裝置401上,或可與 應用程序411 一起或在任何其它時間安裝。除或替代應用程序411維持的可信證書 413,操作系統(tǒng)420還可維持可信證書422的存儲。
當應用程序411正執(zhí)行時,其可嘗試啟動(例如,或許使用"創(chuàng)建實例"調(diào)用或其 它調(diào)用)經(jīng)認證的程序庫417。應用程序411說明其調(diào)用的任一程序庫必須是被授權(quán) TCG列表412中的可信TCG中的一者的成員。此可在作為應用程序的啟動程序一部 分的初始化時完成,或應用程序411可使用調(diào)用(例如,創(chuàng)建實例)而在被授權(quán)TGG 列表412(或其相關部分)中通過以加載程序庫。
響應于應用程序411的請求,操作系統(tǒng)420定位經(jīng)認證的程序庫417并確定是否 批準使用應用程序411來執(zhí)行所述程序庫。批準確定可由操作系統(tǒng)420的信任管理器 424模塊來執(zhí)行,其從經(jīng)認證的程序庫417提取數(shù)字簽名并確定應用程序可信證書413 中或或許全球可信證書422中是否存在對應的根證書。如果存在,那么信任管理器424 驗證程序庫的數(shù)字簽名的真實性以確保所述程序庫尚未因其被簽署而變更。此驗證可 包含檢查遠程信任實體或認證機構(gòu)460以確保不取消適當?shù)母C書。
如果所有的都得到證實,那么操作系統(tǒng)420加載經(jīng)認證的程序庫417(或其一部分) 并在應用程序的存儲器空間中將其鏈接到應用程序411。如果根據(jù)所述方法的任一測 試失敗,那么操作系統(tǒng)420不加載經(jīng)認證的程序庫417并返回錯誤。
在一些情況下,應用程序411可請求特定類別的功能而不必指定調(diào)用哪一特定程 序庫??纱嬖谔峁┧埱蠊δ艿亩鄠€程序庫, 一些經(jīng)認證的程序庫417及一些未認證 的程序庫419。在所述情況下,操作系統(tǒng)420僅可使應用程序411使用滿足應用程序 的TCG要求的那些程序庫(即,經(jīng)認證的程序庫417)。例如,應用程序411可再現(xiàn)受 DRM控制的音頻內(nèi)容,例如"MP3"。在所述情況下,應用程序411將可能需要信任 任何MP3解碼器(程序庫)不會盜用所述內(nèi)容。此信任可以成員資格的形式進入特定 DRMTCG中,因此,當應用程序411需要MP3解碼器程序庫時,操作系統(tǒng)420僅使 是DRM TCG成員的MPS解碼器程序庫可用。
圖5是操作流程圖,其大體上圖解說明用于確保應用程序與所述應用程序加載的 程序庫之間的信任的方法500。方法500通常描述由用于建立及驗證應用程序與程序 庫之間的信任的系統(tǒng)中的各種機構(gòu)執(zhí)行的步驟。
在塊502處,代碼開發(fā)者創(chuàng)建程序庫。所述程序庫可以是既定或能夠通過與執(zhí)行 代碼的另一模塊(例如,應用程序)共享過程而以支持作用執(zhí)行的任何代碼模塊或組 件。
在塊504處,簽署程序庫以表示授權(quán)所述程序庫包含在TCG中。包含在ICG中 暗指所述程序庫被某一可信實體(例如,IE)認可且已經(jīng)驗證為與針對包含在TCG中的 任何要求或準則相符。在一個實施方案中,當程序庫被簽署時,將識別所述程序庫己 簽署到其中的特定群組的TCG ID明確地添加到所述程序庫。在替代實施例中,TCG
證書被包含在表示程序庫已簽署到其中的特定TCG的經(jīng)簽署程序庫內(nèi)。TCG證書由 TE頒發(fā)或從負責TCG的TE導出其授權(quán)。以此方式,簽名明確地或暗含地將程序庫 綁定到TCG。
在塊506處,創(chuàng)建并配置應用程序以使用程序庫,例如在塊502處創(chuàng)建的程序庫。 所述應用程序可以是執(zhí)行某一主要功能且依賴于支持所述功能或提供某一補充功能的 另一代碼模塊(即,程序庫)的任一可執(zhí)行代碼。
在塊508處,將被授權(quán)TCG的列表添加到應用程序,例如添加到應用程序的元 信息中。被授權(quán)TCG列表識別經(jīng)加載以支持應用程序的任一程序庫必須屬于的那些 TCG以在應用程序的過程或存儲器邊界中執(zhí)行。另一選擇是或另外,所述應用程序可 包含表示應用程序信任而將程序庫簽署到TCG中的TE的可信根證書。
在塊510處,將來自塊508的應用程序及來自塊504的程序庫安裝在計算裝置上, 例如,手持式計算裝置或智能蜂窩式電話。將了解,應用程序及程序庫需要同時安裝, 且可能將不同時安裝,但所述兩個組件最終將安裝在同一裝置上。
在塊512處,啟動應用程序并開始執(zhí)行。當啟動應用程序時,可視需要驗證應用 程序的代碼簽名,以確保所述代碼實際上是由代碼開發(fā)者提供的,但所述驗證在特性 及目的上明顯不同于此文獻的大部分中所述的TCG驗證。
在塊514處,應用程序頒發(fā)創(chuàng)建實例調(diào)用以加載由程序庫實施的類別。將了解, 在一些情況下,可寫入應用程序以調(diào)用一類別的程序庫而非特定程序庫??砂惭b多個 程序庫以實施所述類別的程序庫且例如,所述應用程序并不對例示的實施類別進行特 定控制。然而,在此實例中,應用程序用以創(chuàng)建所述類別的程序庫的實例的調(diào)用起始 對來自塊510的程序庫的加載。
在塊516處,在加載程序庫之前,檢查所述程序庫上的簽名以確定其是有效的且 鏈鎖達到由應用程序識別為可信的根證書。在一個實施方案中,有效簽名指示程序庫 尚未引起被簽署而變更。因此,被包含在或嵌入在程序庫中的TCG ID直接識別程序 庫屬于的TCG。另一選擇是,可從用于簽署程序庫的證書鏈確定TCG成員資格。例 如,與應用程序相關聯(lián)的可信根證書可含有可信實體具有對特定TCG的簽署授權(quán)的確 認(例如,根)證書。對照本地可信根證書評估與程序庫相關聯(lián)的TCG證書。應注意應 用程序可識別被授權(quán)以使用應用程序執(zhí)行的多個TCG ID。所述多個TCG ID可僅識別 為TCGID的列表、TCG ID的范圍或或許定義程序庫必須屬于的一個或一個以上TCG 以使用應用程序執(zhí)行的布爾表達式。這些及其它替代技術對所屬領域的技術人員將是 顯而易見。
如果程序庫上的簽名確認其可信性,那么在塊518處,加載所述程序庫。然而, 如果程序庫上的簽名不能以任何方式確認,那么在塊520處,不加載所述程序庫。如 果在計算裝置上加載多個程序庫,那么可以與初始程序庫相同的方式選擇及評估替代 程序庫。另一選擇是,可發(fā)布安全提示以允許由用戶或另一安全確認機構(gòu)來做出信任 決定。又一替代形式是僅放棄程序庫的加載并為此發(fā)布錯誤代碼。
圖6是功能框圖,其大體上圖解說明其中本發(fā)明的實施方案尤其適用的樣本計算 裝置601的核心組件。計算裝置601可以是任一移動計算裝置,例如蜂窩式電話、個 人數(shù)字助理、手持式"掌上型"裝置、膝上型計算機、便攜式音樂播放器、全球定位
衛(wèi)星(GPS)裝置等等。類似地,計算裝置601可以是任一固定計算裝置,例如桌上 型計算機或服務器。
在此實例中,計算裝置601包含處理器單元604、存儲器606、存儲媒體613及 音頻單元631。有利地,處理器單元604包含微處理器或?qū)S锰幚砥鳎鐢?shù)字信號 處理器(DSP),但在替代形式中其可以是任何常規(guī)形式的處理器、控制器、微控制器或 狀態(tài)機。
處理器單元604耦合到存儲器606,有利地可將所述存儲器實施為保持由處理器 單元604執(zhí)行的軟件指令的RAM存儲器。在此實施例中,存儲在存儲器606中的軟 件指令包含操作系統(tǒng)610、 一個或一個以上應用程序612及一個或一個以上代碼程序 庫614。存儲器606可以是板上RAM,或處理器單元604及存儲器606可共同駐留于 ASIC中。在替代實施例中,存儲器606可由固件或快閃存儲器組成。
處理器單元604耦接到存儲媒體613,存儲媒體613可實施為任一非易失性存儲 器,例如,ROM存儲器、快閃存儲器或磁盤驅(qū)動器(僅提出少數(shù)例子)。存儲媒體 6B還可實施為那些或其它技術的任一組合,例如,磁盤驅(qū)動器與高速緩存器(RAM) 存儲器或類似組合。在此特定實施例中,存儲媒體613用于在切斷計算裝置601電源 時或在無電情況下的周期期間存儲數(shù)據(jù)。
計算裝置601還包含通信模塊621,其能夠在計算裝置601與一個或一個以上其 它計算裝置之間實現(xiàn)雙向通信。通信模塊621可包含能夠?qū)崿F(xiàn)RF或其它無線通信的 組件,例如,蜂窩式電話網(wǎng)絡、藍牙連接、無線局域網(wǎng)絡或或許無線廣域網(wǎng)絡。另一 選擇是,通信模塊621可包含能夠?qū)崿F(xiàn)陸線或硬線網(wǎng)絡通信的組件,例如,以太網(wǎng)連 接、RJ-ll連接、通用串行總線連接、IEEE6394 (火線)連接或類似連接。本文打算 將這些例子作為非排他性列舉,且可能存在許多其它替代形式。
音頻單元631是計算裝置601中經(jīng)配置以在模擬格式與數(shù)字格式之間轉(zhuǎn)換信號的 組件。音頻單元631由計算裝置601用來使用揚聲器632輸出聲音且從麥克風633接 收輸入信號。
圖6僅圖解說明通常在多數(shù)常規(guī)計算裝置中發(fā)現(xiàn)的某些組件。日常中,還可在特 定實施方案中發(fā)現(xiàn)許多其它組件,且在某些罕見情況下,可省略圖6中所示的一些組 件。然而,圖6中所示的計算裝置601代表當今常見的裝置。
雖然上文己參照特定實施例及實施方案對本發(fā)明進行描述,但應了解,這些實施 例僅為說明性且本發(fā)明的范圍并不限于這些實施例??纱嬖趯ι鲜鰧嵤├脑S多變化、 修改、添加及改進,預期這些變化、修改、添加及改進均屬于如本發(fā)明權(quán)利要求書內(nèi) 所祥述的本發(fā)明的范圍內(nèi)。
權(quán)利要求
1、一種用于確保代碼模塊之間的信任的方法,所述方法包括接收使用一類別的功能的應用程序,所述應用程序包含所述應用程序信任的用以實施所述類別的可信代碼群組(“TCG”)列表;接收實施所述類別的功能的程序庫,所述程序庫是使用簽名密鑰簽署的,所述簽名將所述程序庫與TCG相關聯(lián),所述TCG是可信性的認可;起始調(diào)用以致使加載所述程序庫;及在加載所述程序庫之前,致使驗證所述程序庫上的所述簽名,以確定所述程序庫是否是所述列出的TCG中的一者的成員。
2、 如權(quán)利要求1所述的方法,其中所述簽名通過將所述程序庫綁定到識別所述 TCG的TCG ID而將所述程序庫與所述TCG相關聯(lián)。
3、 如權(quán)利要求l所述的方法,其中使用公鑰密碼來簽署及驗證所述程序庫。
4、 如權(quán)利要求3所述的方法,其中使用證書層級來進行所述簽署及驗證。
5、 如權(quán)利要求4所述的方法,其中致使驗證所述簽名進一步包括確定所述TCG 證書是否已到期。
6、 如權(quán)利要求4所述的方法,其中致使驗證所述簽名進一步包括確定所述TCG 證書是否已被取消。
7、 如權(quán)利要求1所述的方法,其中所述簽名通過證書鏈將所述程序庫與所述TCG 相關聯(lián),所述證書鏈將所述簽名密鑰與負責授權(quán)將程序庫簽署到所述TCG中的可信實 體("TE")相關聯(lián)。
8、 如權(quán)利要求1所述的方法,其中致使驗證所述程序庫上的所述簽名包括使用 與TE相關聯(lián)的根證書來驗證所述簽名,所述根證書用于驗證所述簽名的真實性以及 所述TE被授權(quán)將所述程序庫簽署到所述TCG中。
9、 如權(quán)利要求l所述的方法,其中所述應用程序包括一個或一個以上代碼模塊, 所述代碼模塊選自包括用戶應用程序、腳本、網(wǎng)頁內(nèi)容、標記內(nèi)容及用戶接口的群組。
10、 如權(quán)利要求l所述的方法,其中所述程序庫包括一個或一個以上代碼模塊, 所述代碼模塊選自包括共享程序庫、公共程序庫、動態(tài)鏈接的程序庫、靜態(tài)鏈接的程 序庫、擴展、腳本、配置、內(nèi)容、用戶接口及資源的群組。
11、 一種用于驗證程序庫的可信性的方法,其包括從應用程序接收加載所述程序庫的指令,所述應用程序具有被授權(quán)的可信代碼群 組(TCG)的相關聯(lián)列表,每一 TCG表示與程序庫群組相關聯(lián)的信任等級; 檢驗所述程序庫以檢測將所述程序庫與TCG相關聯(lián)的數(shù)字簽名; 將所述程序庫的所述TCG與和所述應用程序相關聯(lián)的所述被授權(quán)TCG列表相比 較,以確定所述程序庫是否被授權(quán)使用所述應用程序來執(zhí)行;及 如果所述程序庫被授權(quán),那么加載所述程序庫。
12、 如權(quán)利要求11所述的方法,其中所述數(shù)字簽名通過證書鏈將所述程序庫與 所述TCG相關聯(lián),所述證書鏈將用于創(chuàng)建所述數(shù)字簽名的簽名密鑰與負責授權(quán)將程序 庫簽署到所述TCG中的可信實體("TE")的根證書相關聯(lián)。
13、 如權(quán)利要求11所述的方法,其中所述數(shù)字簽名通過將所述程序庫綁定到識 別特定TCG的TCG ID而將所述程序庫與所述TCG相關聯(lián)。
14、 如權(quán)利要求13所述的方法,其中所述TCGID包括在一整數(shù)值范圍內(nèi)的整數(shù) 值,所述整數(shù)值中的至少一者用于識別已針對使用所述至少一個整數(shù)值的授權(quán)進行了 評估的一群組的程序庫。
15、 如權(quán)利要求11所述的方法,其進一步包括證實所述數(shù)字簽名以確保所述TCG 與所述程序庫的關聯(lián)是真實的。
16、 如權(quán)利要求15所述的方法,其中證實所述數(shù)字簽名包括使用與可信實體相 關聯(lián)的根證書以確保所述數(shù)字簽名是真實的。
17、 如權(quán)利要求15所述的方法,其中證實所述數(shù)字簽名包括驗證可信實體被授 權(quán)將所述程序庫簽署到所述TCG中。
18、 如權(quán)利要求11所述的方法,其進一步包括如果所述程序庫未被授權(quán),那么 不加載所述程序庫。
19、 如權(quán)利要求11所述的方法,其中所述應用程序包括一個或一個以上代碼模 塊,所述代碼模塊選自包括用戶應用程序、腳本、網(wǎng)頁內(nèi)容、標記內(nèi)容及用戶接口的 群組。
20、 如權(quán)利要求ll所述的方法,其中所述程序庫包括一個或一個以上代碼模塊, 所述代碼模塊選自包括共享程序庫、公共程序庫、動態(tài)鏈接的程序庫、靜態(tài)鏈接的程 序庫、擴展、腳本、配置、內(nèi)容、用戶接口及資源的群組。
21、 如權(quán)利要求11所述的方法,其中來自所述應用程序的所述指令包括對特定 類別的功能的請求,且進一步其中所述程序庫包括提供所述特定類別的功能的一群組 的程序庫中的一者,所述方法進一步包括基于所述程序庫與被授權(quán)TCG相關聯(lián)而從所 述群組的程序庫中選擇所述程序庫的步驟。
22、 一種具有用于驗證程序庫的可信性的計算機可執(zhí)行指令的計算機可讀媒體, 其包括從應用程序接收加載所述程序庫的指令,所述應用程序具有被授權(quán)的可信代碼群 組(TCG)的相關聯(lián)列表,每一 TCG表示與程序庫群組相關聯(lián)的信任等級;檢驗所述程序庫以檢測將所述程序庫與具有所述程序庫的TCG相關聯(lián)的數(shù)字簽名;將所述程序庫的所述TCG與和所述應用程序相關聯(lián)的所述被授權(quán)TCG列表相比 較,以確定所述程序庫是否被授權(quán)使用所述應用程序來執(zhí)行;及 如果所述程序庫被授權(quán),那么加載所述程序庫。
23、 如權(quán)利要求22所述的計算機可讀媒體,其中所述數(shù)字簽名通過證書鏈將所 述程序庫與所述TCG相關聯(lián),所述證書鏈將用于創(chuàng)建所述數(shù)字簽名的簽名密鑰與負責 授權(quán)將程序庫簽署到所述TCG中的可信實體("TE")的根證書相關聯(lián)。
24、 如權(quán)利要求22所述的計算機可讀媒體,其中所述數(shù)字簽名通過將所述程序 庫綁定到識別特定TCG的TCG ID而將所述程序庫與所述TCG相關聯(lián)。
25、 如權(quán)利要求24所述的計算機可讀媒體,其中所述TCGID包括在一整數(shù)值范 圍內(nèi)的整數(shù)值,所述整數(shù)值中的至少一者用于識別已針對使用所述至少一個整數(shù)值的 授權(quán)進行了評估的一群組的程序庫。
26、 如權(quán)利要求24所述的計算機可讀媒體,其進一步包括證實所述數(shù)字簽名以 確保所述TCGID與所述程序庫的關聯(lián)是真實的。
27、 如權(quán)利要求26所述的計算機可讀媒體,其中證實所述數(shù)字簽名包括使用與 可信實體相關聯(lián)的根證書來確保所述數(shù)字簽名是真實的。
28、 如權(quán)利要求26所述的計算機可讀媒體,其中證實所述數(shù)字簽名包括驗證可 信實體被授權(quán)將所述程序庫簽署到所述TCG中。
29、 如權(quán)利要求22所述的計算機可讀媒體,其進一步包括如果所述程序庫未被 授權(quán),那么不加載所述程序庫。
30、 如權(quán)利要求22所述的計算機可讀媒體,其中所述應用程序包括一個或一個 以上代碼模塊,所述代碼模塊選自包括用戶應用程序、腳本、網(wǎng)頁內(nèi)容、標記內(nèi)容及 用戶接口的群組。
31、 如權(quán)利要求22所述的計算機可讀媒體,其中所述程序庫包括一個或一個以 上代碼模塊,所述代碼模塊選自包括共享程序庫、公共程序庫、動態(tài)鏈接的程序庫、 靜態(tài)鏈接的程序庫、擴展、腳本、配置、內(nèi)容、用戶接口及資源的群組。
32、 如權(quán)利要求22所述的計算機可讀媒體,其中來自所述應用程序的所述指令 包括對特定類別的功能的請求,且進一步其中所述程序庫包括提供所述特定類別的功 能的一群組的程序庫中的一者,所述計算機可執(zhí)行指令進一步包括基于所述程序庫與 被授權(quán)TCG相關聯(lián)而從所述群組的程序庫中選擇所述程序庫。
33、 一種用于驗證程序庫的可信性的設備,其包括-用于從應用程序接收加載所述程序庫的指令的裝置,所述應用程序具有被授權(quán)的 可信代碼群組(TCG)的相關聯(lián)列表,每一 TCG表示與程序庫群組相關聯(lián)的信任等級;用于檢驗所述程序庫以檢測將所述程序庫與TCG相關聯(lián)的數(shù)字簽名的裝置;用于將所述程序庫的所述TCG與和所述應用程序相關聯(lián)的所述被授權(quán)TCG列表 相比較以確定所述程序庫是否被授權(quán)使用所述應用程序來執(zhí)行的裝置;及如果所述程序庫被授權(quán)那么用于加載所述程序庫的裝置。
34、 如權(quán)利要求33所述的設備,其進一步包括如果所述程序庫未被授權(quán),那么 不加載所述程序庫。
35、 一種用于驗證程序庫的可信性的設備,其包括 存儲媒體,其上存儲有應用程序及程序庫; 處理器;及存儲器,其耦合到所述處理器及所述存儲媒體,且其中駐留有操作以致使所述處 理器執(zhí)行以下動作的計算機可執(zhí)行組件從應用程序接收加載所述程序庫的指令,所述應用程序具有被授權(quán)TCG的相 關聯(lián)列表,每一 TCG表示與程序庫群組相關聯(lián)的信任等級;檢驗所述程序庫以檢測將所述程序庫與TCG相關聯(lián)的數(shù)字簽名; 將所述程序庫的所述TCG與和所述應用程序相關聯(lián)的所述被授權(quán)TCG列表相 比較,以確定所述程序庫是否被授權(quán)使用所述應用程序來執(zhí)行;及 如果所述程序庫被授權(quán),那么加載所述程序庫。
全文摘要
本發(fā)明描述用于加強應用程序與由所述應用程序加載的程序庫之間的信任的技術及機構(gòu)。非常概括地說,所述應用程序說明其程序庫必須是被授權(quán)使用所述應用程序執(zhí)行的成員的一個或一個以上可信代碼群組(“TCG”)。被授權(quán)以斷言一個或一個以上TCG中的成員資格的程序庫包含所述成員資格的安全指示符。當所述應用程序執(zhí)行并試圖加載程序庫時,在加載所述程序庫之前驗證TCG中由所述應用程序授權(quán)的程序庫成員資格。
文檔編號G06F21/00GK101385033SQ200780005812
公開日2009年3月11日 申請日期2007年2月23日 優(yōu)先權(quán)日2006年2月23日
發(fā)明者勞倫斯·倫德布拉德, 布賴恩·哈羅德·凱利, 馬修·霍爾菲爾德 申請人:高通股份有限公司