專利名稱:針對代碼簽名服務(wù)來注冊實體的系統(tǒng)和方法
技術(shù)領(lǐng)域:
這里描述的系統(tǒng)和方法的實施例大體上涉及針對軟件應(yīng)用程序的安全協(xié)議領(lǐng)域,更具體地,涉及一種系統(tǒng)和方法,用于向希望使軟件應(yīng)用程序被數(shù)字地簽名以便可以在計算設(shè)備上(例如移動設(shè)備)執(zhí)行該應(yīng)用程序的個人或?qū)嶓w提供代碼簽名服務(wù)。
背景技術(shù):
含有軟件代碼簽名方案的安全協(xié)議典型地被用于確保從因特網(wǎng)或其他來源下載以用于在計算設(shè)備上執(zhí)行的軟件應(yīng)用程序的可靠性。例如,計算設(shè)備可以是移動設(shè)備。
可以在計算設(shè)備上實施代碼簽名系統(tǒng),以便控制軟件應(yīng)用程序訪問計算設(shè)備上的某些資源。在一個示例系統(tǒng)中,在計算設(shè)備中提供了應(yīng)用平臺、一個或多個應(yīng)用程序編程接口(API)、以及虛擬機(jī)。配置API以使軟件應(yīng)用程序與應(yīng)用平臺相鏈接,以及更具體地,允許軟件應(yīng)用程序?qū)Y源做出功能調(diào)用,或者與計算設(shè)備上的軟件應(yīng)用程序通??稍L問的資源進(jìn)行交互。
然而,可以由希望限制對API的訪問或?qū)εc這些API有關(guān)的特定資源的訪問的實體,將一些API分類為“敏感的”。在示例系統(tǒng)中,在準(zhǔn)予訪問敏感API之前,虛擬機(jī)適于驗證附加到要求訪問敏感API的應(yīng)用程序上的數(shù)字簽名的真實性。因此,為了準(zhǔn)許應(yīng)用程序訪問敏感API,適當(dāng)?shù)暮灻行?signing authority)必須首先數(shù)字地簽名應(yīng)用程序。
發(fā)明內(nèi)容
在一個方面,優(yōu)選地提出了一種針對代碼簽名服務(wù)來注冊實體的方法,包括步驟從請求針對代碼簽名服務(wù)來注冊的實體接收注冊請求,其中注冊請求包括與實體的身份相關(guān)的數(shù)據(jù);通過驗證注冊請求中的數(shù)據(jù)的至少子集,來認(rèn)證實體的身份;產(chǎn)生針對實體的賬戶記錄,其中賬戶記錄包括與實體相關(guān)的至少第一和第二標(biāo)識符;經(jīng)由第一通信信道向?qū)嶓w發(fā)送第一標(biāo)識符和第二標(biāo)識符中的一個,以及經(jīng)由不同的第二通信信道向?qū)嶓w發(fā)送第一標(biāo)識符和第二標(biāo)識符中的另一個;從實體接收注冊文件;在接受注冊請求之前,確認(rèn)注冊文件至少包括第一和第二標(biāo)識符兩者。
為了更好地理解這里描述的系統(tǒng)和方法的實施例,以及為了更加清楚地示出如何使他們產(chǎn)生效果,現(xiàn)在將參考附圖為例,其中圖1是在一個示例實施方式中的移動設(shè)備的方框圖;圖2是圖1的移動設(shè)備的通信子系統(tǒng)組件的方框圖;圖3是無線網(wǎng)絡(luò)節(jié)點的方框圖;圖4是示出了示例代碼簽名協(xié)議的示意圖,在該協(xié)議中,代碼簽名中心向軟件應(yīng)用程序開發(fā)者提供代碼簽名服務(wù);圖5是示出了在移動設(shè)備中的示例代碼簽名系統(tǒng)的組件的示意圖;圖6是示出了處理在圖5中圖示的移動設(shè)備上執(zhí)行的已簽名軟件應(yīng)用程序的示例方法的步驟的流程圖;圖7A是示出了在一個實施例中提供代碼簽名服務(wù)的方法的步驟的流程圖;圖7B是示出了在示例網(wǎng)絡(luò)配置中的用于提供代碼簽名服務(wù)的系統(tǒng)的原理圖;圖8A是示出了在一個實施例中創(chuàng)建用于代碼簽名的密鑰對的方法的步驟的流程圖;圖8B和圖8C是由代碼簽名中心應(yīng)用程序提供的用戶界面中的示例對話框;圖9是示出了在一個實施例中用于針對代碼簽名服務(wù)來注冊實體的方法的步驟的流程圖;以及圖10是示出了賬戶記錄的詳情的示例表格。
具體實施例方式
創(chuàng)建要求訪問計算設(shè)備上敏感API的應(yīng)用程序的軟件應(yīng)用程序開發(fā)者可能需要使他們的應(yīng)用程序由適當(dāng)簽名中心數(shù)字地簽名,使得應(yīng)用程序在計算設(shè)備上正確地執(zhí)行。期望限制訪問某些敏感API(以及相關(guān)資源)(例如實體自己寫出的專有API)的實體可能希望充當(dāng)關(guān)于這些API的簽名中心,并且向要求訪問這些API的軟件應(yīng)用程序開發(fā)者提供代碼簽名服務(wù)。例如,通過代碼簽名服務(wù)的提供,實體能夠控制誰應(yīng)該或誰不應(yīng)該被準(zhǔn)許訪問其寫出和/或被分類為敏感的特定API、跟蹤誰請求了此種訪問、以及如果需要對提供此類訪問收費。
這里描述的實施例大體上涉及一種用于向軟件應(yīng)用程序開發(fā)者或希望應(yīng)用程序被數(shù)字地簽名的其他個人或?qū)嶓w提供代碼簽名服務(wù)的系統(tǒng)和方法。當(dāng)在計算設(shè)備上執(zhí)行應(yīng)用程序時,也許要求簽名應(yīng)用程序以使應(yīng)用程序能夠訪問計算設(shè)備的敏感API以及相關(guān)資源。
向軟件應(yīng)用開發(fā)者或其他個人或?qū)嶓w提供代碼簽名服務(wù)的代碼簽名中心可以要求這些參與方針對代碼簽名服務(wù)來注冊。在注冊時,這些個體或?qū)嶓w可以提供在與代碼簽名中心安全地通信中使用的公鑰??杀挥脕眚炞C被提供的公鑰是否屬于相關(guān)的注冊方的成本效率且及時的技術(shù)是值得期待的。
在一方面,這里提出了一種針對代碼簽名服務(wù)來注冊實體的方法,該方法包括步驟從請求針對代碼簽名服務(wù)來注冊的實體接收注冊請求,其中注冊請求包括與實體的身份相關(guān)的數(shù)據(jù);通過驗證注冊請求中的數(shù)據(jù)的至少子集,來認(rèn)證實體的身份;產(chǎn)生針對實體的賬戶記錄,其中賬戶記錄包括與實體相關(guān)的至少第一和第二標(biāo)識符;經(jīng)由第一通信信道向?qū)嶓w發(fā)送第一標(biāo)識符和第二標(biāo)識符中的一個,以及經(jīng)由不同的第二通信信道向?qū)嶓w發(fā)送第一標(biāo)識符和第二標(biāo)識符中的另一個;從實體接收注冊文件;以及在接受注冊請求之前,確認(rèn)注冊文件至少包括第一和第二標(biāo)識符兩者。
例如,已簽名的應(yīng)用程序所執(zhí)行在的計算設(shè)備可以是移動站。然而,本領(lǐng)域普通技術(shù)人員應(yīng)該理解,這里描述的至少一些實施例可以關(guān)于要在除移動站之外的計算設(shè)備上執(zhí)行的應(yīng)用程序來實現(xiàn)。
移動站是一種帶有先進(jìn)數(shù)據(jù)通信能力的雙向通信設(shè)備,具有與其他計算機(jī)系統(tǒng)通信的能力,并且這里提到的一般指移動設(shè)備。移動設(shè)備也可以包括用于語音通信的能力。取決于由移動設(shè)備提供的功能,可以稱其為數(shù)據(jù)消息設(shè)備、雙向?qū)ず魴C(jī)、帶有數(shù)據(jù)消息能力的蜂窩電話、無線因特網(wǎng)裝置、或數(shù)據(jù)通信設(shè)備(帶有或不帶有電話能力)。移動設(shè)備通過收發(fā)站的網(wǎng)絡(luò)與其他設(shè)備通信。為有助于讀者理解移動設(shè)備的結(jié)構(gòu)以及其如何與其他設(shè)備通信,首先參考圖1至圖3。
參考圖1,在一個示例實施方式中的移動設(shè)備的方框圖大致如100所示。移動設(shè)備100包括多個組件,其中控制組件是微處理器102。微處理器102控制移動設(shè)備100的所有操作。通過通信子系統(tǒng)104來執(zhí)行包括數(shù)據(jù)和語音通信的通信功能。通信子系統(tǒng)104從無線通信網(wǎng)絡(luò)200接收消息并向其發(fā)送消息。在移動設(shè)備100的該示例實施方式中,根據(jù)全球移動通信系統(tǒng)(GSM)和通用分組無線業(yè)務(wù)(GPRS)標(biāo)準(zhǔn)來配置通信子系統(tǒng)104。GSM/GPRS無線網(wǎng)絡(luò)在世界范圍內(nèi)廣泛使用,并且可以預(yù)料的是這些標(biāo)準(zhǔn)最終將由增強(qiáng)數(shù)據(jù)GSM環(huán)境(EDGE)和通用移動通信服務(wù)(UMTS)所取代。新的標(biāo)準(zhǔn)正在制定中,但是可以相信的是他們具有與這里描述的網(wǎng)絡(luò)行為相類似的網(wǎng)絡(luò)行為,本領(lǐng)域的技術(shù)人員也應(yīng)該理解,可以使用將來開發(fā)的其他合適的標(biāo)準(zhǔn)。使無線通信子系統(tǒng)104與網(wǎng)絡(luò)200相連接的無線鏈路代表一個或多個不同的射頻(RF)信道,根據(jù)針對GSM/GPRS通信規(guī)定的已定義協(xié)議來運行。隨著更新的網(wǎng)絡(luò)協(xié)議,這些信道能夠支持電路交換語音通信和分組交換數(shù)據(jù)通信這兩者。
盡管在移動設(shè)備100的一個示例實施方式中,與移動設(shè)備100相關(guān)聯(lián)的無線網(wǎng)絡(luò)是GSM/GPRS無線網(wǎng)絡(luò),在不同的實施方式中也可以使其他無線網(wǎng)絡(luò)與移動設(shè)備100相關(guān)聯(lián)。例如,可使用的不同類型的無線網(wǎng)絡(luò)包括數(shù)據(jù)核心無線網(wǎng)絡(luò)、語音核心無線網(wǎng)絡(luò)、以及通過同一物理基站能夠支持語音和數(shù)據(jù)通信的雙模網(wǎng)絡(luò)。組合的雙模網(wǎng)絡(luò)包括但不限于碼分多址(CDMA)或CDMA2000網(wǎng)絡(luò)、GSM/GPRS網(wǎng)絡(luò)(如上面提到的)、以及例如EDGE和UMTS的未來第三代(3G)網(wǎng)絡(luò)。數(shù)據(jù)核心網(wǎng)絡(luò)的一些較早的示例包括MobitexTM無線電網(wǎng)絡(luò)以及DataTACTM無線電網(wǎng)絡(luò)。較早的語音核心數(shù)據(jù)網(wǎng)絡(luò)的示例包括象GSM以及時分多址(TDMA)系統(tǒng)的個人通信系統(tǒng)(PCS)網(wǎng)絡(luò)。
微處理器102還與附加子系統(tǒng)進(jìn)行交互,所述附加子系統(tǒng)例如隨機(jī)存取存儲器(RAM)106、閃速存儲器108、顯示器110、輔助輸入/輸出(I/O)子系統(tǒng)112、串行端口114、鍵盤116、揚聲器118、麥克風(fēng)120、短程通信設(shè)備122、以及其他設(shè)備124。
移動設(shè)備100的一些子系統(tǒng)執(zhí)行通信相關(guān)功能,而其他子系統(tǒng)可以提供“常駐”或設(shè)備上(on-device)功能。作為示例,顯示器110和鍵盤116可以被用于通信相關(guān)功能,例如鍵入用于通過網(wǎng)絡(luò)200發(fā)送的文本消息,以及用于諸如計算器或任務(wù)列表的常駐設(shè)備功能。由微處理器102使用的操作系統(tǒng)軟件典型地被存儲在例如閃速存儲器108的永久存儲器中,可選地,存儲器可以是只讀存儲器(ROM)或類似存儲單元(未示出)。本領(lǐng)域的技術(shù)人員應(yīng)該理解的是,可以將操作系統(tǒng)、特定設(shè)備應(yīng)用程序或其一部分臨時地加載到諸如RAM 106的易失存儲器中。
在已經(jīng)完成所要求的網(wǎng)絡(luò)注冊或激活程序之后,移動設(shè)備100可以通過網(wǎng)絡(luò)200發(fā)送和接收通信信號。網(wǎng)絡(luò)訪問與移動設(shè)備100的訂戶或操作者有關(guān)。為了識別訂戶,移動設(shè)備100要求將用戶身份模塊或“SIM”卡126插入到SIM接口128以便與網(wǎng)絡(luò)通信。其中,SIM 126是用于識別移動設(shè)備100的訂戶以及使移動設(shè)備100個人化的一種傳統(tǒng)類型的“智能卡”。如果沒有SIM 126,移動設(shè)備100不能完全操作以與網(wǎng)絡(luò)200通信。通過將SIM 126插入到SIM接口128,訂戶能夠訪問所有訂閱的服務(wù)。服務(wù)可以包括網(wǎng)頁瀏覽和諸如電子郵件、語音郵件、短消息服務(wù)(SMS)、以及多媒體信息傳遞服務(wù)(MMS)的消息傳遞。更高級的服務(wù)可以包括銷售點、現(xiàn)場服務(wù)和銷售人員自動化。SIM 126包括處理器和用于存儲信息的存儲器。一旦將SIM126插入到SIM接口128,它就與微處理器102相連。為了識別訂戶,SIM 126包含一些諸如國際移動用戶身份(IMSI)的參數(shù)。使用SIM 126的優(yōu)點是用戶不必受限于任何個別的物理移動設(shè)備。SIM 126同樣地可以存儲移動設(shè)備的附加訂戶信息,包括日期簿(或日歷)信息以及近期通話信息。
移動設(shè)備100是電池供電的設(shè)備,并且包括用于容納一個或多個可充電電池130的電池接口132。電池接口132連接到穩(wěn)壓器(未示出),穩(wěn)壓器輔助電池130向移動設(shè)備100提供V+的電能。盡管當(dāng)前的技術(shù)使用電池,諸如微燃料電池的未來技術(shù)也可以向移動設(shè)備100提供電能。
除了其操作系統(tǒng)的功能之外,微處理器102能夠在移動設(shè)備100上執(zhí)行軟件應(yīng)用程序。通常在制造期間就將控制包括數(shù)據(jù)和語音通信應(yīng)用程序的基本設(shè)備操作的一組應(yīng)用程序安裝到移動設(shè)備100上??梢员患虞d到移動設(shè)備100上的其它應(yīng)用程序是個人信息管理器(PIM)。PIM具有組織和管理訂戶感興趣的數(shù)據(jù)項目的功能,所述數(shù)據(jù)項目例如但是不限于電子郵件、日歷事件、語音郵件、約會、以及任務(wù)項目。PIM應(yīng)用程序具有經(jīng)由無線網(wǎng)絡(luò)200發(fā)送和接收數(shù)據(jù)項目的能力??梢越?jīng)由無線網(wǎng)絡(luò)200將PIM數(shù)據(jù)項目無縫地與主機(jī)計算機(jī)系統(tǒng)存儲的和/或與主機(jī)計算機(jī)系統(tǒng)有關(guān)的移動設(shè)備訂戶的相應(yīng)的數(shù)據(jù)項目集成、同步、以及更新。該功能在移動設(shè)備上創(chuàng)建了關(guān)于這些項目的鏡像主機(jī)計算機(jī)。這在主機(jī)計算機(jī)系統(tǒng)是移動設(shè)備訂戶的辦公計算機(jī)系統(tǒng)時是特別有利的。
也可以通過網(wǎng)絡(luò)200、輔助I/O子系統(tǒng)112、串行端口114、短程通信子系統(tǒng)122或任何其他合適的子系統(tǒng)124,將附加的應(yīng)用程序加載到移動設(shè)備100。應(yīng)用程序安裝中的這種靈活性增加了移動設(shè)備100的功能性,并且可以提供增強(qiáng)的“設(shè)備上”功能、通信相關(guān)功能或這兩個功能。例如,安全通信應(yīng)用程序使得能夠使用移動設(shè)備100來執(zhí)行電子商務(wù)功能和其他此類金融交易。
串行端口114使用戶能夠通過外部設(shè)備或軟件應(yīng)用程序來設(shè)置優(yōu)選項,并且通過不通過無線通信網(wǎng)絡(luò)來給移動設(shè)備100提供信息或軟件下載,擴(kuò)展了移動設(shè)備100的性能。例如,可以通過直接的并且因而可靠且可信的連接,使用可選的下載路徑將加密密鑰加載到移動設(shè)備100上,以便提供安全的設(shè)備通信。
在不使用網(wǎng)絡(luò)200時,短程通信子系統(tǒng)122提供在移動設(shè)備100和不同的系統(tǒng)或設(shè)備之間的通信。例如,子系統(tǒng)122可以包括紅外設(shè)備以及用于短程通信的相關(guān)電路和組件。短程通信的示例包括由紅外數(shù)據(jù)協(xié)會(IrDA)所發(fā)展的標(biāo)準(zhǔn)、藍(lán)牙、以及IEEE發(fā)展的802.11標(biāo)準(zhǔn)族。
在使用中,由通信子系統(tǒng)104處理諸如文本消息、電子郵件消息、或下載網(wǎng)頁之類的接收信號,并將其輸入到微處理器102。然后微處理器102處理接收的信號,將其輸出到顯示器110或可選地輸出到輔助I/O子系統(tǒng)112。訂戶也可以例如結(jié)合顯示器100以及可能的輔助IO子系統(tǒng)一起來使用鍵盤116,編撰諸如電子郵件消息的數(shù)據(jù)項目。輔助子系統(tǒng)112可以包括以下設(shè)備,例如觸摸屏、鼠標(biāo)、軌跡球、紅外指紋檢測器、或帶有動態(tài)鈕按壓能力的滾輪。鍵盤116是字母數(shù)字鍵盤和/或電話型小鍵盤??梢酝ㄟ^通信子系統(tǒng)104在網(wǎng)絡(luò)200上發(fā)送編撰的項目。
對于語音通信,除了接收信號被輸出到揚聲器118,以及由麥克風(fēng)120產(chǎn)生用于發(fā)送的信號之外,移動設(shè)備100的所有操作基本上都是類似的。也可以在移動設(shè)備100上實現(xiàn)可選的語音或音頻I/O子系統(tǒng),例如語音消息記錄子系統(tǒng)。盡管主要通過揚聲器118實現(xiàn)語音或音頻信號輸出,也可以使用顯示器110來提供附加信息,例如主叫方的身份、語音呼叫的持續(xù)時間、或其他的語音呼叫相關(guān)信息。
現(xiàn)在參考圖2,示出了圖1的通信子系統(tǒng)組件104的方框圖。通信子系統(tǒng)104包括接收機(jī)150、發(fā)射機(jī)152、一個或多個嵌入的或內(nèi)部的天線元件154、156、本地振蕩器(LO)158、以及諸如數(shù)字信號處理器(DSP)160的處理模塊。
通信子系統(tǒng)104的特定設(shè)計取決于移動設(shè)備100意欲操作于的網(wǎng)絡(luò)200,因此應(yīng)該理解的是,圖2中圖示的設(shè)計僅用作一個示例。由天線154通過網(wǎng)絡(luò)200接收到的信號被輸入到接收機(jī)150,接收機(jī)150可以執(zhí)行諸如信號放大、頻率下轉(zhuǎn)換、濾波、信道選擇以及模數(shù)(A/D)轉(zhuǎn)換的普通接收機(jī)功能。接收信號的A/D轉(zhuǎn)換允許在DSP160中執(zhí)行諸如解調(diào)和解碼的更復(fù)雜的通信功能。以類似的方式,由DSP160處理將被發(fā)射的信號,所述處理包括調(diào)制和編碼。這些已被DSP處理的信號被輸入到發(fā)射機(jī)152,用于數(shù)模(D/A)轉(zhuǎn)換、頻率上轉(zhuǎn)換、濾波、放大、以及經(jīng)由天線156在網(wǎng)絡(luò)200上發(fā)射。DSP160不但處理通信信號,而且提供接收機(jī)和發(fā)射機(jī)的控制。例如,可以通過在DSP160中實施的自動增益控制算法自適應(yīng)地控制在接收機(jī)150和發(fā)射機(jī)152中施加到通信信號的增益。
在移動設(shè)備100和網(wǎng)絡(luò)200之間的無線鏈路可以包含一個或多個不同的信道(典型地為不同的RF信道)、以及在移動設(shè)備100和網(wǎng)絡(luò)200之間使用的相關(guān)協(xié)議。RF信道是必須節(jié)約使用的有限資源,典型地是由于整體帶寬以及由移動設(shè)備100的有限電池電能的限制所限制。
當(dāng)移動設(shè)備100完全運轉(zhuǎn)時,典型地僅當(dāng)向網(wǎng)絡(luò)200發(fā)送時才打開發(fā)射機(jī)152,否則關(guān)閉以便節(jié)約資源。類似地,定期地關(guān)閉接收機(jī)150以便節(jié)約資源,直到在指定的時間段期間需要接收信號或信息(如果有的話)才打開。
現(xiàn)在參考圖3,無線網(wǎng)絡(luò)節(jié)點的方框圖如202所示。實際上,網(wǎng)絡(luò)200包括一個或多個節(jié)點202。移動設(shè)備100與無線網(wǎng)絡(luò)200內(nèi)的節(jié)點202通信。在圖3的示例實施方式中,根據(jù)通用分組無線服務(wù)(GRRS)以及全球移動通信系統(tǒng)(GSM)技術(shù)來配置節(jié)點202。節(jié)點202包括具有相關(guān)塔站206的基站控制器(BSC)204、被添加以用于在GSM中支持GPRS的分組控制單元(PCU)208、移動交換中心(MSC)210、歸屬位置寄存器(HLR)212、訪問位置寄存器(VLR)214、服務(wù)GRPS支持節(jié)點(SGSN)216、網(wǎng)關(guān)GPRS支持節(jié)點(GGSN)218、以及動態(tài)主機(jī)配置協(xié)議(DHCP)220。組件的列表并不意味著是GSM/GPRS網(wǎng)絡(luò)內(nèi)的每個節(jié)點202的組件的詳盡列表,而是在通過網(wǎng)絡(luò)200的通信中普遍使用的組件的列表。
在GSM網(wǎng)絡(luò)中,MSC210與BSC 202以及例如公共交換電話網(wǎng)絡(luò)(PSTN)222的地面網(wǎng)絡(luò)相連,以便滿足電路交換的需求。通過PCU 208、SGSN 216以及GGSN 218與公共或?qū)S镁W(wǎng)絡(luò)(因特網(wǎng))224(這里也統(tǒng)稱為共享網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu))的連接代表了針對有GRPS能力的移動設(shè)備的數(shù)據(jù)通道。在擴(kuò)展具有GRPS性能的GSM網(wǎng)絡(luò)中,BSC 204還包含與SGSN 216相連的分組控制單元(PCU)208,以便控制分段、無線信道分配、以及滿足分組交換的需求。為了針對電路交換和分組交換管理來追蹤移動設(shè)備的位置和可用性,在MSC 210和SGSN 216之間共享HLR 212。由MSC 210控制對VLR 214的訪問。
站點206是固定收發(fā)站點。站點206和BSC 204一起形成固定收發(fā)設(shè)備。固定收發(fā)設(shè)備向通常稱作“小區(qū)”的特定覆蓋區(qū)域提供無線網(wǎng)絡(luò)覆蓋。固定收發(fā)設(shè)備經(jīng)由站點206向在其小區(qū)內(nèi)的移動設(shè)備發(fā)射通信信號以及從在其小區(qū)內(nèi)的移動設(shè)備接收通信信號。固定收發(fā)設(shè)備在其控制器的控制下,根據(jù)特定的、通常是預(yù)定的通信協(xié)議和參數(shù),通常執(zhí)行這樣一些功能,例如對將要被發(fā)射到移動設(shè)備的信號的調(diào)制以及可能地編碼和/或加密。如有必要,固定收發(fā)設(shè)備類似地解調(diào)和可能地解碼和/或解密從在其小區(qū)內(nèi)的移動設(shè)備100接收到的任意通信信號。不同節(jié)點之間的通信協(xié)議和參數(shù)可以不同。例如,一個節(jié)點可以使用與其他節(jié)點不同的調(diào)制方案并且在與其他節(jié)點不同的頻率處運行。
對于向特定的網(wǎng)絡(luò)注冊的所有移動設(shè)備100,將諸如操作者簡介的永久配置數(shù)據(jù)存儲在HLR 212中。HLR 212還包含針對每個已注冊的移動設(shè)備的位置信息,并且能夠被查詢以確定移動設(shè)備的當(dāng)前位置。MSC 210負(fù)責(zé)一組位置區(qū)域,并且將當(dāng)前處于負(fù)責(zé)區(qū)域內(nèi)的移動設(shè)備的數(shù)據(jù)存儲在VLR 214中。VLR 214還包括關(guān)于訪問其他網(wǎng)絡(luò)的移動設(shè)備的信息。VLR 214中的信息包括從HLR 212向VLR214發(fā)射的、用于更快訪問的永久移動設(shè)備數(shù)據(jù)的一部分。通過將附加的信息從遠(yuǎn)程HLR 212節(jié)點移動到VLR 214,可以減少在這些節(jié)點之間的通信量,使得以更快的響應(yīng)時間來提供語音和數(shù)據(jù)服務(wù)并同時需要較少地使用計算資源。
SGSN 216和GGSN 128是針對GPRS(即在GSM內(nèi)的分組交換數(shù)據(jù)支持)支持而增加的元件。通過追蹤每個移動設(shè)備100的位置,SGSN 216和MSC 210在無線網(wǎng)絡(luò)200內(nèi)具有類似的職責(zé)。SGSN 216還執(zhí)行安全功能和網(wǎng)絡(luò)200上數(shù)據(jù)業(yè)務(wù)的訪問控制。GGSN 218提供與外部分組交換網(wǎng)的因特網(wǎng)連接,并且經(jīng)由在網(wǎng)絡(luò)200內(nèi)運行的因特網(wǎng)協(xié)議(IP)骨干網(wǎng)與一個或多個SGSN 216相連。在正常的操作期間,給定的移動設(shè)備100必須執(zhí)行“GPRS附加(attach)”以便取得IP地址并且訪問數(shù)據(jù)服務(wù)。在電路交換語音信道中并不存在該請求,因為綜合業(yè)務(wù)數(shù)字網(wǎng)(ISDN)地址被用于路由入和出的呼叫?,F(xiàn)在,所有具有GPRS功能的網(wǎng)絡(luò)使用專有的、動態(tài)分配的IP地址,因此需要與GGSN 218相連的DHCP服務(wù)器220。存在多種用于動態(tài)IP分配的機(jī)構(gòu),包括使用遠(yuǎn)程驗證用戶撥入業(yè)務(wù)服務(wù)器(RADIUS)以及DHCP服務(wù)器。一旦完成了GPRS附加,就建立了從移動設(shè)備100、通過PCU 208以及SGSN 216、到GGSN 218內(nèi)部的訪問點節(jié)點(APN)的邏輯連接。APN代表能夠直接訪問因特網(wǎng)兼容服務(wù)或?qū)S镁W(wǎng)絡(luò)連接的IP隧道的邏輯端。APN還代表針對網(wǎng)絡(luò)200的安全機(jī)制,因為必須將每個移動設(shè)備100分配給一個或多個APN,以及如果沒有首先對已被授權(quán)使用的APN執(zhí)行GRPS附加,則移動設(shè)備100不能交換數(shù)據(jù)。
一旦完成GRPS附加,就創(chuàng)建了隧道,并且在使用IP分組中可支持的任意協(xié)議在標(biāo)準(zhǔn)IP分組內(nèi)交換所有通信量。這包括隧道方法,例如在與虛擬專用網(wǎng)絡(luò)(VPN)一起使用的IP安全(IPsec)連接的情況下的IP over IP。這些隧道也被稱為分組數(shù)據(jù)協(xié)議(PDP)環(huán)境(context),并且在網(wǎng)絡(luò)200中存在有限數(shù)目的可用隧道。為了最大化使用PDP環(huán)境,網(wǎng)絡(luò)200針對每個PDP環(huán)境來運行空閑計時器以便確定是否不活動。當(dāng)移動設(shè)備100未使用其PDP環(huán)境時,能夠釋放PDP環(huán)境,并且IP地址回到由DHCP服務(wù)器220管理的IP地址池。
為了更好的理解在涉及提供代碼簽名服務(wù)的本說明書中所描述的系統(tǒng)和方法的各個實施例,將參考圖4至圖6,首先描述示例代碼簽名協(xié)議和從移動設(shè)備方面看的示例代碼簽名系統(tǒng)的特征。如先前所述的,盡管通常參考移動設(shè)備來描述多個下面的示例,這里描述的實施例對于除移動設(shè)備之外的設(shè)備也是適用的。
參考圖4,示出了示例代碼簽名協(xié)議的示意圖大體上如300所示,其中代碼簽名中心向軟件應(yīng)用程序開發(fā)者提供代碼簽名服務(wù)。
軟件應(yīng)用程序開發(fā)者302創(chuàng)建針對移動設(shè)備100的軟件應(yīng)用程序304,要求訪問移動設(shè)備100上的一個或多個敏感API。應(yīng)該理解的是,軟件應(yīng)用程序包括最終可以在移動設(shè)備或其他計算設(shè)備上執(zhí)行的軟件代碼。因此,在這里術(shù)語“代碼簽名”和“應(yīng)用程序簽名”可以互換地使用。
例如,軟件應(yīng)用程序304可以是在安裝在移動設(shè)備100上的Java虛擬機(jī)(JVM)上運行的Java應(yīng)用程序。API使軟件應(yīng)用程序能夠與移動設(shè)備或其他計算設(shè)備上的應(yīng)用程序平臺相接口。例如,應(yīng)用程序平臺可以包括諸如設(shè)備硬件的資源、操作系統(tǒng)和核心軟件、以及數(shù)據(jù)模型。因此為對這種設(shè)備資源做出功能調(diào)用或與這種設(shè)備資源進(jìn)行交互,軟件應(yīng)用程序304通常需要訪問移動設(shè)備100上的一個或多個API。API在軟件應(yīng)用程序304和設(shè)備資源之間有效地“橋接(bridge)”。
在該說明書和所附權(quán)利要求中,查閱API訪問應(yīng)該被解釋為包括以這樣一種方式訪問API,以使軟件應(yīng)用程序與一個或多個相應(yīng)設(shè)備資源進(jìn)行交互。因此,提供對任意API的訪問使得軟件應(yīng)用程序與相關(guān)的設(shè)備資源進(jìn)行交互,而拒絕對API的訪問防止軟件應(yīng)用程序與相關(guān)資源進(jìn)行交互。例如,數(shù)據(jù)庫API可以與設(shè)備文件或數(shù)據(jù)存儲系統(tǒng)進(jìn)行通信,并且對數(shù)據(jù)庫API的訪問將提供軟件應(yīng)用程序和文件或數(shù)據(jù)存儲系統(tǒng)之間的交互。用戶接口(UI)API將與諸如屏幕、鍵盤、以及給移動設(shè)備的操作者提供輸出或者從其接收輸入的任意其它設(shè)備組件的控制器和/或控制軟件進(jìn)行通信。在移動設(shè)備中,例如,也可以提供無線API作為例如發(fā)射機(jī)和接收機(jī)的無線通信資源的接口??梢蕴峁┘用艿腁PI以便與加密模塊進(jìn)行交互,所述加密模塊在設(shè)備上實現(xiàn)加密算法。這些僅是可以在移動設(shè)備和可能的其他計算設(shè)備上提供的API的演示性示例。這種設(shè)備可以包括這些示例API中的一些或全部、或不同的API,來取代上述API,或添加到上述那些API中。
通常,可以由移動設(shè)備制造商、或可能由API作者、無線網(wǎng)絡(luò)操作者、移動設(shè)備所有者或操作者、或也許會受針對設(shè)備的軟件應(yīng)用程序中的病毒或惡意代碼所影響的一些其他實體,將任意給定的API分類為敏感的。例如,移動設(shè)備制造商可以將與加密例程、無線通信功能、或諸如地址簿或日歷條目的專用數(shù)據(jù)模型相接口的一些API分類為敏感的。為保護(hù)以避免對這些敏感API的未授權(quán)訪問,需要軟件應(yīng)用程序開發(fā)者302從移動設(shè)備制造商或?qū)PI分類為敏感的其他實體、或從代表制造商或致力于保護(hù)對敏感設(shè)備API的訪問的其他實體的代碼簽名中心306,獲得一個或多個數(shù)字簽名,以及如下面進(jìn)一步所描述的,向軟件應(yīng)用程序304添加簽名。
可以針對每個敏感API或包括軟件應(yīng)用程序要求訪問的敏感API的庫,獲得數(shù)字簽名。在某些的實施方式中,想要獲得多重簽名。例如,這將允許服務(wù)提供商、公司或網(wǎng)絡(luò)運營商限制加載或更新到特定一組移動設(shè)備上的一些或全部軟件應(yīng)用程序。在一個多重簽名的場景中,限制并鎖定設(shè)備上的所有API,直到驗證了用于軟件應(yīng)用程序的“全局”簽名。例如,公司也許希望在首先從企業(yè)信息技術(shù)(IT)或計算機(jī)服務(wù)部門獲得許可之前,防止其雇員在他們的設(shè)備上執(zhí)行任何軟件應(yīng)用程序。則可以配置所有這種企業(yè)移動設(shè)備以在能夠執(zhí)行軟件應(yīng)用程序之前需要驗證至少全局簽名。因此能進(jìn)一步限制訪問敏感的設(shè)備API和庫(如果有的話),使之取決于各自的對應(yīng)數(shù)字簽名的驗證。
軟件應(yīng)用程序304的二進(jìn)制可執(zhí)行表示可以與移動設(shè)備的特定類型或移動設(shè)備的型號無關(guān)。例如,軟件應(yīng)用程序304可以是一次寫成隨處運行的二進(jìn)制格式,例如典型地Java軟件應(yīng)用程序的情況。然而,也許想要持有例如針對每個類型或型號的移動設(shè)備、或可選地針對每個移動設(shè)備平臺或制造商的數(shù)字簽名。因此,如果軟件應(yīng)用程序304以多個類型或型號的移動設(shè)備作為目標(biāo),則可能需要將軟件應(yīng)用程序304提交給多個代碼簽名中心。
在圖4中所示的示例中,當(dāng)軟件應(yīng)用程序開發(fā)者302要求簽名軟件應(yīng)用程序304時,軟件應(yīng)用程序304被從軟件應(yīng)用程序開發(fā)者302發(fā)送到代碼簽名中心306。代碼簽名中心306可以代表移動設(shè)備制造商、任意敏感API的作者、或可能具有軟件應(yīng)用程序304需要訪問的敏感API的操作知識的其他人。
雖然在一些情況下在圖4中沒有明確地示出,應(yīng)該理解的是,軟件應(yīng)用程序可以被提交給多于一個代碼簽名中心。例如,每個代碼簽名中心可以對針對特定的敏感API的、或針對在支持軟件應(yīng)用程序所需要的敏感API的特定型號的移動設(shè)備或一組移動設(shè)備上的API的簽名軟件應(yīng)用程序負(fù)責(zé)。因而,例如制造商、移動通信網(wǎng)絡(luò)運營商、服務(wù)提供商、或企業(yè)客戶可以針對他們的特定移動設(shè)備型號,或針對運行在特定網(wǎng)絡(luò)上的、訂閱了一個或多個特定服務(wù)的、或分配給企業(yè)雇員的移動設(shè)備,具有針對敏感API使用的簽名中心。因此,已簽名的軟件應(yīng)用程序可以包括軟件應(yīng)用程序和來自每個簽名中心的至少一個附加數(shù)字簽名。在此示例中,盡管這些簽名中心將產(chǎn)生針對相同軟件應(yīng)用程序的數(shù)字簽名,不同的簽名和簽名驗證方案可以與不同的簽名中心相關(guān)。
從代碼簽名中心306方面看,代碼簽名中心306接收軟件應(yīng)用程序304,并且自行地簽名軟件應(yīng)用程序304,以允許訪問移動設(shè)備上的一個或多個敏感API。在代碼簽名中心306簽名軟件應(yīng)用程序304之前,在確定是否應(yīng)該簽名軟件應(yīng)用程序304中,代碼簽名中心306可以考慮應(yīng)用程序開發(fā)者302的身份。代碼簽名中心306在簽名之前還可以重新檢查軟件應(yīng)用程序304;可選地,代碼簽名中心304依靠其識別軟件應(yīng)用程序開發(fā)者302的身份的能力,可以選擇不執(zhí)行這種重新檢查,所述能力依賴于例如發(fā)現(xiàn)軟件應(yīng)用程序304被感染病毒或含有惡意代碼。
如果代碼簽名中心306確定軟件應(yīng)用程序304可以訪問敏感API,并且因此應(yīng)該被簽名,則由代碼簽名中心306產(chǎn)生數(shù)字簽名(未明確地示出)并且將其附加到軟件應(yīng)用程序304,以便產(chǎn)生將要被返回給軟件應(yīng)用程序開發(fā)者302的已簽名的軟件應(yīng)用程序308。另一方面,如果代碼簽名中心306拒絕簽名軟件應(yīng)用程序304,可以將適當(dāng)?shù)捻憫?yīng)(未示出)返回給軟件應(yīng)用程序開發(fā)者302。
典型地,數(shù)字簽名是使用僅由代碼簽名中心306持有的簽名私鑰310產(chǎn)生的標(biāo)記。例如,根據(jù)一個簽名方案,可以使用諸如安全散列算法SHA1的散列算法,由代碼簽名中心306產(chǎn)生軟件應(yīng)用程序304的散列,然后用簽名私鑰310進(jìn)行編碼以便創(chuàng)建數(shù)字簽名。盡管在此示例中,使用簽名私鑰310,對要簽名的信息散列進(jìn)行編碼,例如可以從軟件應(yīng)用程序304中推導(dǎo)出,然而在不同的方案中,可以以其他的方式使用簽名私鑰310,從要簽名的信息或信息的變換版本中產(chǎn)生數(shù)字簽名。
然后可以將已簽名的軟件應(yīng)用程序308通過例如無線網(wǎng)絡(luò)200發(fā)送到移動設(shè)備100,或加載到移動設(shè)備100上。例如,可以將已簽名的軟件應(yīng)用程序308經(jīng)由計算機(jī)網(wǎng)絡(luò)下載到個人計算機(jī),并通過串行鏈路加載到移動設(shè)備100,或者可以以另外的方式從軟件應(yīng)用程序開發(fā)者302獲得并加載到移動設(shè)備100上。一旦將已簽名的軟件應(yīng)用程序308加載到移動設(shè)備100上,則在準(zhǔn)予軟件應(yīng)用程序304訪問敏感API之前,典型地要利用簽名公鑰312來驗證已簽名的軟件應(yīng)用程序308的至少一個數(shù)字簽名。
盡管已簽名的軟件應(yīng)用程序308已被加載到移動設(shè)備100上,本領(lǐng)域的技術(shù)人員應(yīng)該理解的是,最終可以在移動設(shè)備100上執(zhí)行的軟件是軟件應(yīng)用程序304。如上所述,已簽名的軟件應(yīng)用程序308典型地包括軟件應(yīng)用程序304和一個或多個附加的數(shù)字簽名(未示出)。當(dāng)成功驗證了(例如由移動設(shè)備100的虛擬機(jī))正確的數(shù)字簽名時,可以在移動設(shè)備100上執(zhí)行軟件應(yīng)用程序304,并且準(zhǔn)許軟件應(yīng)用程序304訪問對應(yīng)簽名已被驗證的任意API。
包括軟件代碼簽名方案的安全協(xié)議典型地依賴加密公鑰和私鑰,來提供授權(quán)以訪問敏感API,以及確保已簽名的應(yīng)用程序的完整性。根據(jù)已知的公鑰的加密技術(shù),使用私鑰/公鑰對的私鑰加密的數(shù)據(jù)僅能夠使用密鑰對中對應(yīng)的公鑰來解密,并且反之亦然。
在此示例中,代碼簽名中心通過產(chǎn)生數(shù)字簽名來簽名軟件應(yīng)用程序。數(shù)字簽名是軟件應(yīng)用程序摘要(例如散列),或可能是從軟件應(yīng)用程序推導(dǎo)出的一些數(shù)據(jù),使用代碼簽名中心的私鑰對其進(jìn)行編碼。然后可以將數(shù)字簽名附加到軟件應(yīng)用程序。
為在移動設(shè)備或其他計算設(shè)備中驗證數(shù)字簽名,以類似的方式(例如使用相同的標(biāo)準(zhǔn)散列算法)從在設(shè)備處接收到的軟件應(yīng)用程序(將要附加數(shù)字簽名的程序)中獲得摘要。典型地與敏感API一起存儲的代碼簽名中心的公鑰被用于解碼附加的數(shù)字簽名,以便獲得應(yīng)該是接收到的軟件應(yīng)用程序的匹配摘要的摘要。如果摘要不匹配,這意味著要么在設(shè)備處接收到的軟件應(yīng)用程序不是由代碼簽名中心所簽名的同一應(yīng)用程序,要么軟件應(yīng)用程序沒有使用正確的私鑰或不是由正確的代碼簽名中心進(jìn)行簽名的。以這樣的方式來設(shè)計數(shù)字簽名算法,使得只有具有代碼簽名中心的私鑰的知識的人能夠?qū)?shù)字簽名進(jìn)行編碼,所述數(shù)字簽名可以使用與一個或多個敏感API相關(guān)聯(lián)的代碼簽名中心的公鑰來正確地解碼(例如由在設(shè)備處的虛擬機(jī))。因此,通過以這種方式驗證數(shù)字簽名,可以保持對敏感API的授權(quán)和訪問控制以及已簽名應(yīng)用程序的完整性。
因此,簽名公鑰312與由代碼簽名中心306持有的簽名私鑰相對應(yīng),并且典型地隨同一個或多個敏感API一起被設(shè)置在移動設(shè)備100上??蛇x地,可以使用移動設(shè)備100或可能地個人計算機(jī)系統(tǒng),從公鑰庫(未示出)中獲得簽名公鑰312,并且按照需要設(shè)置在移動設(shè)備100上。移動設(shè)備100使用與代碼簽名中心306相同的散列算法,計算已簽名的軟件應(yīng)用程序308中的軟件應(yīng)用程序304的散列,并且使用數(shù)字簽名以及簽名公鑰312,來恢復(fù)最初由代碼簽名中心306編碼的散列。然后比較作為本地計算結(jié)果的散列和從數(shù)字簽名中恢復(fù)的散列,并且如果散列相同則驗證了簽名。如果對軟件應(yīng)用程序304進(jìn)行了多次簽名,可以以相同的方式驗證每個數(shù)字簽名。然后軟件應(yīng)用程序304能夠在移動設(shè)備100上執(zhí)行,并且訪問對應(yīng)簽名已被驗證的任意敏感API。提供該示例簽名方案僅僅是為了示例,并且在不同的實施方式中也可以使用包括其他公鑰簽名方案的其他簽名方案。
參考圖5,示出了移動設(shè)備上的示例代碼簽名系統(tǒng)的組件的示意圖大體上如320所示。
關(guān)于移動設(shè)備100,示例代碼簽名系統(tǒng)320包括虛擬機(jī)322(例如JVM)、多個軟件應(yīng)用程序324a至324c、多個API庫326a至326d、以及應(yīng)用程序平臺328。應(yīng)用程序平臺328一般包括設(shè)備100上的可以由軟件應(yīng)用程序324a至324c訪問的所有資源。例如,應(yīng)用程序平臺328可以包括設(shè)備硬件330、移動設(shè)備的操作系統(tǒng)332、以及核心軟件和數(shù)據(jù)模型334。每個API庫326a至326d包括與在應(yīng)用程序平臺328中可用的資源相接口的一個或多個API。例如,一個API庫可以包括與日歷程序以及日歷條目數(shù)據(jù)模型相接口的所有API。另一個API庫可以包括與移動設(shè)備100的傳輸電路和功能相接口的所有API。又一個API庫可以包括能夠與由移動設(shè)備的操作系統(tǒng)332所執(zhí)行的低層服務(wù)相接口的所有API。
一些API庫326a至326d可以使例如接口的敏感API暴露于密碼功能或模塊(例如326a、326c),而其他的庫可以在不暴露敏感API下就可以被訪問(例如326b、326d)。類似地,一些軟件應(yīng)用程序324a至324c是要求訪問一個或多個敏感API的已簽名軟件應(yīng)用程序(例如324a、324c),其他的軟件應(yīng)用程序是未被簽名的(例如324b)。虛擬機(jī)322可以是諸如Sun公司的J2METM(Java 2平臺,Micro版本)的面向?qū)ο筮\行時間環(huán)境,用于管理在移動設(shè)備100上運行的軟件應(yīng)用程序324a至324c的執(zhí)行,并且使軟件應(yīng)用程序324a至324c與不同的API庫326a至326d相鏈接。
在圖5中標(biāo)注為應(yīng)用程序Y的軟件應(yīng)用程序324a是已簽名的軟件應(yīng)用程序的示例(例如圖4的已簽名的應(yīng)用程序308)。在該示例中,已簽名的軟件應(yīng)用程序324a包括包含例如可在應(yīng)用程序平臺328上執(zhí)行的軟件代碼的軟件應(yīng)用程序(例如圖4的應(yīng)用程序304);一個或多個簽名標(biāo)識符336a;以及與數(shù)字簽名標(biāo)識符336a相關(guān)的一個或多個數(shù)字簽名338a。軟件應(yīng)用程序324c以及其他已簽名的軟件應(yīng)用程序通常包括類似的組件。然而,下面將參考軟件應(yīng)用程序324a作為示例,詳細(xì)地描述已簽名的軟件應(yīng)用程序的組件。
在已簽名的軟件應(yīng)用程序324中的每個數(shù)字簽名338a以及相關(guān)的簽名標(biāo)識符336a可以對應(yīng)于API庫326a、326c,所述326a和326c暴露了軟件應(yīng)用程序324a要求訪問的至少一個敏感API。在某些實施方式中,已簽名的軟件應(yīng)用程序324a可以包括針對特定API庫326a、326c內(nèi)的每個敏感API的數(shù)字簽名338a。簽名標(biāo)識符336a可以是能夠使特定的數(shù)字簽名338a與特定的API庫、API、應(yīng)用程序平臺、或移動設(shè)備的型號相關(guān)聯(lián)的唯一整數(shù)或一些其他標(biāo)識符。
在圖5中標(biāo)注為API庫A的API庫326a是暴露敏感API的API庫的示例。在該示例中,API庫326a包括描述字符串340、簽名公鑰312、以及簽名標(biāo)識符342。API庫326c以及暴露一個或多個敏感API的其他API庫通常包括類似的組件。然而,下面將參考軟件應(yīng)用程序326a作為示例,詳細(xì)地描述此種API庫的組件。
API庫326a的簽名標(biāo)識符342可以對應(yīng)于在已簽名的軟件應(yīng)用程序(例如324a)中的簽名標(biāo)識符(例如336a)。這些簽名標(biāo)識符使虛擬機(jī)322能夠快速地將數(shù)字簽名(例如338a)與API庫(例如326a)匹配。簽名公鑰312對應(yīng)于由代碼簽名中心持有的簽名私鑰(例如圖4的310),并且被用于驗證附加到已簽名的應(yīng)用程序324a的數(shù)字簽名338a的真實性。例如,當(dāng)已簽名的軟件應(yīng)用程序314a被加載或試圖訪問API庫326a的敏感API時,描述字符串340可以是在移動設(shè)備100上顯示的文本消息。
可操作地,當(dāng)將要求訪問特定敏感API(例如在API庫中的API)的已簽名軟件應(yīng)用程序加載到移動設(shè)備100上時,虛擬機(jī)322搜索與該API相關(guān)的附加數(shù)字簽名的已簽名軟件應(yīng)用程序。在該示例中,這包括將與數(shù)字簽名相關(guān)的特定簽名標(biāo)識符與對應(yīng)API庫的簽名標(biāo)識符(例如342)相匹配。如果已簽名的軟件應(yīng)用程序包括適當(dāng)?shù)臄?shù)字簽名,則虛擬機(jī)322使用與該API庫有關(guān)的簽名公鑰312來驗證其真實性。然后在成功驗證數(shù)字簽名時,準(zhǔn)予已簽名的軟件應(yīng)用程序訪問敏感API。如果已簽名的軟件應(yīng)用程序不包括適當(dāng)?shù)臄?shù)字簽名,則拒絕訪問敏感API。
可選地,即使成功地驗證了適當(dāng)?shù)臄?shù)字簽名,也可以提示移動設(shè)備操作者提供可以由軟件應(yīng)用程序訪問敏感API的確認(rèn)。在這種情況下,在執(zhí)行軟件應(yīng)用程序和訪問敏感API之前,可以在移動設(shè)備100的顯示器上顯示基于描述字符串340的消息。例如,可以顯示表示“應(yīng)用程序Y試圖訪問API庫A”的消息,并且可以賦予移動設(shè)備操作者控制權(quán)以便最終準(zhǔn)予或拒絕訪問敏感API。
本領(lǐng)域技術(shù)人員要理解的是,任意給出的已簽名軟件應(yīng)用程序可以具有多重設(shè)備專用、庫專用、或API專用的簽名、或附加在其上的此類簽名的組合。類似地,可以針對不同的設(shè)備來配置不同的簽名驗證要求。例如,可以向已簽名的軟件應(yīng)用程序提供數(shù)字簽名,準(zhǔn)予訪問一個移動設(shè)備型號上的給定敏感API、而不準(zhǔn)予訪問不同的移動設(shè)備型號上的相同敏感API。這也許導(dǎo)致已簽名的軟件應(yīng)用程序被準(zhǔn)予訪問一種類型的移動設(shè)備上的敏感API,而不被準(zhǔn)予訪問另一種類型的移動設(shè)備上的敏感API。作為另一示例,一個移動設(shè)備也許需要對全局簽名和附加簽名進(jìn)行驗證,所述附加簽名是針對軟件應(yīng)用程序要求訪問以便執(zhí)行軟件應(yīng)用程序的任意敏感API的。另一移動設(shè)備可以要求單獨的全局簽名的驗證,而另一個不同的移動設(shè)備可以要求僅針對其敏感API的簽名的驗證。
本領(lǐng)域的技術(shù)人員要理解的是,在不同的實施方式中,能夠接收附加了數(shù)字簽名的軟件應(yīng)用程序的某些設(shè)備可以適于沒有任何簽名驗證就準(zhǔn)予執(zhí)行軟件應(yīng)用程序,所述設(shè)備包括例如其中沒有實現(xiàn)數(shù)字簽名、或數(shù)字簽名是可選的設(shè)備。
參考圖6,示出了處理在圖5中圖示的移動設(shè)備上執(zhí)行的簽名軟件應(yīng)用程序的示例方法中的步驟的流程圖大體上如350所示。
在步驟352中,將軟件應(yīng)用程序(例如圖5的應(yīng)用程序324a)加載到移動設(shè)備(例如圖5的移動設(shè)備100)。一旦加載了軟件應(yīng)用程序,在步驟354中,例如使用虛擬機(jī)(例如圖5的虛擬機(jī)322),發(fā)備確定軟件應(yīng)用程序是否要求訪問暴露了敏感API的任意API庫。如果軟件應(yīng)用程序確實要求訪問敏感API,則如下面參考步驟356至366所述的,虛擬機(jī)驗證軟件應(yīng)用程序是否包括與所要求訪問的敏感API相關(guān)的(或與API庫相關(guān)的)有效數(shù)字簽名。如果沒有要求,在步驟368中將軟件應(yīng)用程序與所有其要求的API庫相鏈接,并執(zhí)行。
在該示例中,在步驟356中,虛擬機(jī)檢索針對相應(yīng)的API庫的簽名公鑰(例如圖5的公鑰312)以及簽名標(biāo)識符(例如圖5的簽名標(biāo)識符342)。然后在步驟358中,由虛擬機(jī)使用API庫的簽名標(biāo)志符,來確定軟件應(yīng)用程序是否具有帶有對應(yīng)簽名標(biāo)識符(例如圖5的簽名標(biāo)識符336a)的附加數(shù)字簽名(例如圖5的簽名標(biāo)識符338a)。如果沒有,則適當(dāng)?shù)拇a簽名中心不批準(zhǔn)軟件應(yīng)用程序訪問敏感API,并且在步驟360中防止執(zhí)行軟件應(yīng)用程序,或者可選地(在圖6中沒有明確地示出),可以從移動設(shè)備中清除軟件應(yīng)用程序,或者在可以不訪問敏感API的程度內(nèi)執(zhí)行軟件應(yīng)用程序。在采取這些行動之前可以提醒用戶進(jìn)行輸入,以便提供對要執(zhí)行的特定動作的用戶控制(未示出)。
如果對應(yīng)于敏感API的數(shù)字簽名已被附加到軟件應(yīng)用程序并且由虛擬機(jī)定位,則在步驟362中,虛擬機(jī)使用公鑰來驗證數(shù)字簽名的真實性。例如,可以通過使用參考圖4描述的簽名驗證方案、或其他可選的簽名方案,來執(zhí)行該步驟。如果數(shù)字簽名沒有成功地驗證,則如上參考步驟360所述的,不執(zhí)行、清除、或限制軟件應(yīng)用程序訪問敏感API。然而如果成功地驗證了數(shù)字簽名,則可選地,在步驟364中,向移動設(shè)備的操作者顯示基于與敏感API或?qū)?yīng)API庫相關(guān)聯(lián)的描述字符串(例如圖5的描述字符串340)的消息,警告軟件應(yīng)用程序要求訪問敏感API,并且在步驟366中,可選地提示操作者授權(quán)以執(zhí)行軟件應(yīng)用程序。如果對執(zhí)行進(jìn)行了授權(quán),則在步驟368中可以執(zhí)行軟件應(yīng)用程序并且將其鏈接到敏感API,否則如上參考步驟360所述的,不執(zhí)行、清除、或限制軟件應(yīng)用程序訪問敏感API。
當(dāng)對于給定的軟件應(yīng)用程序,要驗證多于一個數(shù)字簽名時,則在執(zhí)行應(yīng)用程序之前,可以針對每個數(shù)字簽名,重復(fù)步驟354至366。
這里描述的實施例大體上涉及一種用于提供代碼簽名服務(wù)的系統(tǒng)和方法。如之前所述的,可以由代碼簽名中心(例如圖4的代碼簽名中心306)給軟件應(yīng)用程序開發(fā)者或希望具有已數(shù)字地簽名的軟件應(yīng)用程序的其他個人或?qū)嶓w提供代碼簽名服務(wù),使得當(dāng)在計算設(shè)備(例如圖4的移動設(shè)備100)上執(zhí)行應(yīng)用程序時應(yīng)用程序可以訪問敏感API??梢猿洚?dāng)代碼簽名中心的實體的示例可以包括移動設(shè)備制造商、API作者、無線網(wǎng)絡(luò)運營商、設(shè)備擁有者或操作者、可能受計算設(shè)備的軟件應(yīng)用程序中的病毒或惡意代碼影響的任意其他實體、或者希望控制訪問敏感API的任意其他實體、以及任意上述實體的代表。
從代碼簽名中心方面看,任意給定的軟件應(yīng)用程序開發(fā)者(或希望使其應(yīng)用程序被簽名的其他個人或?qū)嶓w)最初都是不被信任的客戶。在軟件應(yīng)用程序開發(fā)者和代碼簽名中心之間建立信任關(guān)系之前,代碼簽名中心通常拒絕向從軟件應(yīng)用程序開發(fā)者接收到的軟件應(yīng)用程序進(jìn)行簽名使得可以訪問敏感API。只有在與軟件應(yīng)用程序建立了信任的關(guān)系之后,代碼簽名中心才可能愿意簽名軟件應(yīng)用程序,代碼簽名中心然后能夠追蹤哪些API被準(zhǔn)予訪問了,以及已經(jīng)準(zhǔn)予了哪些軟件應(yīng)用程序開發(fā)者。
因此,在一個實施例中,一種提供代碼簽名服務(wù)的方法包括至少一些涉及注冊實體的步驟,所述實體要求訪問由代碼簽名中心控制的敏感API。執(zhí)行這些步驟,以便與那些實體建立信任的關(guān)系。提供代碼簽名服務(wù)的方法可以包括涉及接收和處理來自這些實體的代碼簽名請求的附加步驟。
關(guān)于代碼簽名中心做出的實體注冊,如果由于當(dāng)軟件應(yīng)用程序在計算設(shè)備上執(zhí)行時所展示的行為,而可以在軟件應(yīng)用程序中發(fā)現(xiàn)并懷疑任意破壞性的或有問題的代碼,則可以中止或撤銷對應(yīng)軟件應(yīng)用程序開發(fā)者(或其它注冊的個人或?qū)嶓w)對代碼簽名中心的注冊權(quán)限。這是可能的,因為由代碼簽名中心附加到應(yīng)用程序的數(shù)字簽名提供了跟蹤記錄,通過其可以識別有問題的軟件應(yīng)用程序開發(fā)者。
例如,可以通過被配置用于定期下載撤銷列表,將這種注冊的撤銷通知計算設(shè)備。如果已經(jīng)撤銷的對應(yīng)數(shù)字簽名的軟件應(yīng)用程序正運行在特定的計算設(shè)備上,則該設(shè)備可以暫停任意此類軟件應(yīng)用程序的執(zhí)行,并且可能從其本地存儲器中清除軟件應(yīng)用程序。例如,也可以將設(shè)備配置成定期地或當(dāng)下載了新的撤銷列表時,重新執(zhí)行數(shù)字簽名驗證。
在某些實施例中,代碼簽名中心可以不提供撤銷列表等。代碼簽名中心可以追蹤在任意給定的時間軟件應(yīng)用程序開發(fā)者(或者其它注冊的個人或?qū)嶓w)可以或不可以使其應(yīng)用程序被簽名,并且自行處理廢除開發(fā)者的簽名權(quán)限。在一個示例實施方式中,一旦代碼簽名中心已經(jīng)簽名了應(yīng)用程序,即使相關(guān)開發(fā)者的簽名權(quán)限隨后被廢除,應(yīng)用程序也將保持有效性。然而在已經(jīng)廢除了開發(fā)者的簽名權(quán)限之后由該開發(fā)者做出的簽名應(yīng)用程序的隨后請求將被拒絕。
參考圖7A,示出了在一個實施例中提供代碼簽名服務(wù)的方法的步驟的流程圖大體上如400所示。
盡管作為示例參考移動設(shè)備大體上描述了該實施例,不同的實施例對于其他計算設(shè)備也是適用的。此外,盡管參考在代碼簽名中心和軟件應(yīng)用程序開發(fā)者之間信息交換,大體上描述了該實施例,但是在代碼簽名中心和不同于軟件應(yīng)用程序開發(fā)者的個人或?qū)嶓w之間交換信息的情況下,上述實施例也是適用的。
參考如由代碼簽名中心所執(zhí)行的方法400的步驟,在典型的實施方式中由軟件應(yīng)用程序執(zhí)行該步驟,所述軟件應(yīng)用程序已經(jīng)被編程序來執(zhí)行方法400的步驟,除非另有說明。在該說明書以及所附權(quán)利要求中,將編程用于執(zhí)行方法400的步驟的軟件應(yīng)用程序稱為代碼簽名中心應(yīng)用程序。
代碼簽名中心應(yīng)用程序是用于提供在由代碼簽名中心(例如圖4的代碼簽名中心306)所持有的計算設(shè)備上執(zhí)行的代碼簽名服務(wù)的系統(tǒng)的一個組件。在一個實施例中,圖7B的示例網(wǎng)絡(luò)配置450示出了用于提供代碼簽名服務(wù)的系統(tǒng)。在該示例中,在計算設(shè)備454上執(zhí)行代碼簽名中心應(yīng)用程序452,所述計算設(shè)備454在示例網(wǎng)絡(luò)450中是網(wǎng)絡(luò)服務(wù)器。例如,代碼簽名中心應(yīng)用程序452通過經(jīng)由因特網(wǎng)458可訪問的網(wǎng)絡(luò)接口456,與網(wǎng)絡(luò)450中的客戶進(jìn)行交互。
代碼簽名中心應(yīng)用程序452可以與之進(jìn)行交互的客戶可以包括例如在遠(yuǎn)程計算設(shè)備上執(zhí)行的簽名工具應(yīng)用程序460以及API著作工具應(yīng)用程序462。可以由需要由代碼簽名中心簽名應(yīng)用程序的軟件應(yīng)用程序開發(fā)者(例如圖4的軟件應(yīng)用程序開發(fā)者302)將簽名工具應(yīng)用程序460用于向代碼簽名中心應(yīng)用程序452通信數(shù)據(jù)和應(yīng)用程序??梢杂尚枰獜拇a簽名中心獲得一個或多個簽名公鑰的敏感API的作者使用API著作工具應(yīng)用程序462來保護(hù)API。
應(yīng)該理解的是,在一些實施例中,敏感API的作者也可以擔(dān)當(dāng)代碼簽名中心。
代碼簽名中心應(yīng)用程序452還可以訪問至少一個客戶信息數(shù)據(jù)庫464以及至少一個簽名私鑰存儲器466??蛻粜畔?shù)據(jù)庫464以及簽名私鑰存儲器466中的數(shù)據(jù)可以被存儲在相同的存儲設(shè)備上,或者被分發(fā)到不一定物理地常駐在計算設(shè)備454上的多個存儲設(shè)備。
本領(lǐng)域的技術(shù)人員應(yīng)該理解的是,僅作為示例提供圖7B中所示的組件,并且在不同的實施方式中,除在圖7B中所示的那些之外,計算設(shè)備454一般還包括其他組件,并且可以包括不同的組件。
再參考圖7A,在從軟件應(yīng)用程序開發(fā)者接收到代碼簽名注冊請求和代碼簽名請求之前(這將參考方法400的其它步驟詳細(xì)地進(jìn)行描述),首先需要產(chǎn)生私鑰/公鑰對,使得可以將公鑰附加到通過將其分類為敏感而要進(jìn)行保護(hù)的API(例如類)??梢杂纱a簽名中心本地地存儲私鑰(例如在圖7B的私鑰存儲器466中),以便隨后使用。因此,在涉及代碼簽名的任意步驟之前執(zhí)行的步驟410中,代碼簽名中心應(yīng)用程序創(chuàng)建了針對代碼簽名中心想要控制訪問的API的私鑰/公鑰對。例如,可以針對要保護(hù)的各個敏感API,產(chǎn)生密鑰對,或?qū)⑾嗤拿荑€對應(yīng)用于多個API。作為另外的示例,可以針對不同設(shè)備上的API或相同類型設(shè)備的不同型號上的API,產(chǎn)生不同的密鑰對。下面參考圖8A至圖8C,詳細(xì)地描述關(guān)于示例實施例的步驟410。
參考圖8A,在一個實施例中,提出了一種用于確定和顯示由計算設(shè)備上的隨機(jī)數(shù)據(jù)服務(wù)所產(chǎn)生的隨機(jī)數(shù)的隨機(jī)性質(zhì)量的裝置。應(yīng)該理解的是,例如當(dāng)將公鑰密碼系統(tǒng)用于產(chǎn)生密鑰對時,需要用于密鑰產(chǎn)生的良好來源的隨機(jī)數(shù)。一般地,數(shù)字越隨機(jī),所產(chǎn)生的密鑰將越強(qiáng)大。隨機(jī)數(shù)的良好來源產(chǎn)生對于潛在敵人來說未知的并且不可預(yù)知的數(shù)字。原則上,從物理過程中推導(dǎo)出的隨機(jī)數(shù)可能是最好的,因為許多物理過程呈現(xiàn)出真正的隨機(jī)性。
在該實施例中,提供隨機(jī)數(shù)據(jù)服務(wù),使其可訪問用于產(chǎn)生公鑰/私鑰對的代碼簽名中心應(yīng)用程序。隨機(jī)數(shù)據(jù)服務(wù)可以收集從幾個不同來源推導(dǎo)出的隨機(jī)數(shù)據(jù),所述來源包括例如串行端口、窗口密碼API、鍵盤和鼠標(biāo)事件、以及硬件標(biāo)志。隨機(jī)數(shù)據(jù)服務(wù)適于提供三種基本功能收集隨機(jī)數(shù)據(jù)、向請求隨機(jī)數(shù)據(jù)的應(yīng)用程序提供隨機(jī)數(shù)據(jù)、以及提供已收集的隨機(jī)數(shù)據(jù)的隨機(jī)性質(zhì)量的測量。
在步驟411中,確定由隨機(jī)數(shù)據(jù)服務(wù)提供的數(shù)據(jù)的隨機(jī)性質(zhì)量。在該實施例中,可以由隨機(jī)數(shù)據(jù)服務(wù)連續(xù)地收集在請求時能提供的隨機(jī)數(shù)據(jù)。例如,在隨機(jī)數(shù)據(jù)服務(wù)執(zhí)行的同時,可以連續(xù)地產(chǎn)生預(yù)定義大小塊(例如20000字節(jié)的塊)的隨機(jī)數(shù)據(jù)。在該步驟中,評價已產(chǎn)生的隨機(jī)數(shù)據(jù)(例如頻繁地、通過以某個間隔(例如每次0.5s)查詢隨機(jī)數(shù)據(jù)),并且可以將統(tǒng)計的隨機(jī)性測試應(yīng)用于隨機(jī)數(shù)據(jù)塊的序列。已知各種隨機(jī)性測試(例如聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS)測試、FIPS 140-2),并且可以應(yīng)用一個或多個此種測試,以便于確定產(chǎn)生的隨機(jī)數(shù)據(jù)的質(zhì)量。
取決于所使用的隨機(jī)性測試以及該隨機(jī)性測試提供結(jié)果的方式,可以將每個結(jié)果與隨機(jī)性質(zhì)量的多個預(yù)定義定性測量之一建立映射。例如,隨機(jī)數(shù)據(jù)服務(wù)可以應(yīng)用預(yù)定義的映射,以便在任意給定時間以滿足下面狀態(tài)之一來指示隨機(jī)性質(zhì)量未知的、不可接受的、差的、可接受的、好的、優(yōu)秀的、錯誤的。在步驟412中,可以向代碼簽名中心應(yīng)用程序的用戶(例如代碼簽名中心的管理員)顯示隨機(jī)性質(zhì)量的指示。
盡管可以使用上述狀態(tài)之一的名稱來顯示隨機(jī)性質(zhì)量的指示,但是也可以使用不同的標(biāo)識符。在不同的實施例中,也可以將這些狀態(tài)進(jìn)一步地映射到更少數(shù)目的集合狀態(tài),每個狀態(tài)由描述性標(biāo)識符標(biāo)識。
例如,在一個實施例中,由交通燈圖標(biāo)的顏色表示隨機(jī)性質(zhì)量,其在步驟412中能夠被顯示在用戶接口中。這種表示隨機(jī)性質(zhì)量的方式是直觀的而且對于用戶來說是易于理解的。絕大多數(shù)用戶對交通燈圖標(biāo)是熟悉的,并且該圖像能夠被用于描述將要被用于創(chuàng)建針對代碼簽名應(yīng)用程序的密鑰對的數(shù)的隨機(jī)性的當(dāng)前質(zhì)量。
交通燈圖標(biāo)被用于闡明隨機(jī)性質(zhì)量的當(dāng)前水平,并且能夠基于當(dāng)前水平來顯示三種顏色之一(例如紅色、黃色、綠色)。紅色代表因為隨機(jī)性質(zhì)量非常差、或因為隨機(jī)性質(zhì)量不能被驗證為好的而不應(yīng)該創(chuàng)建密鑰的狀態(tài)。黃色代表質(zhì)量是差的、并且在特別注意安全的應(yīng)用程序中不推薦產(chǎn)生密鑰的狀態(tài)。綠色代表隨機(jī)性質(zhì)量是好的、并且告知用戶創(chuàng)建密鑰是相對安全的狀態(tài)。
上述七種初始狀態(tài)與交通燈圖標(biāo)顏色的一個可能的映射可以如下所示紅色{未知的、不可接受的、錯誤的}黃色{差的}綠色{可接受的、好的、優(yōu)秀的}本領(lǐng)域的技術(shù)人員應(yīng)該理解的是,可以在不同的實施例中定義其他初始狀態(tài)設(shè)置和其它的映射狀態(tài)設(shè)置,并且如何對其進(jìn)行預(yù)定義可以取決于所使用的特定的隨機(jī)性測試。
在圖8B中示出了顯示交通燈圖標(biāo)的用戶界面的示例對話框。也可以與所示出的交通燈圖標(biāo)一起,顯示描述性標(biāo)識符(例如基于七種初始步驟之一,或與被顯示的燈的顏色相應(yīng)的不同標(biāo)識符)。也可以以其他方式向用戶呈現(xiàn)交通燈圖標(biāo)的顏色。例如,可以在工具欄的縮微圖中顯示顯示顏色或僅僅著色圓圈的交通燈圖標(biāo)。
在步驟412中顯示了隨機(jī)性質(zhì)量的指示符之后,代碼簽名中心應(yīng)用程序的用戶可以命令應(yīng)用程序創(chuàng)建用于簽名的密鑰對(例如通過點擊在圖8B中所示的對話框的“創(chuàng)建密鑰對”按鈕)。在這種情況下,從用戶接收指令以便創(chuàng)建密鑰對。在一個實施例中,用戶可以選擇創(chuàng)建密鑰對,無論交通燈圖標(biāo)所示的狀態(tài)如何。然而,在不同的實施例中,當(dāng)示出“紅色燈”和/或“黃色燈”時,可以禁用顯示給用戶的用于創(chuàng)建密鑰的選項。此外,在不同的實施例中,盡管示出“紅色燈”和/或“黃色燈”,如果接收到創(chuàng)建密鑰的指令,可以詢問用戶以確定其選擇。
在步驟414中,以已知的方式(例如使用RSA算法)創(chuàng)建私鑰和對應(yīng)公鑰。在步驟415中,由代碼簽名中心存儲私鑰(例如在圖7B的私鑰存儲器466中),以便將來使用,并且配置公鑰??梢詫⒐€附加到代碼簽名中心希望保護(hù)的敏感API,或可以將公鑰存儲在庫中,當(dāng)要求簽名驗證時所述庫對于在計算設(shè)備上執(zhí)行的代碼簽名系統(tǒng)組件是可用的。在圖8C中,示出了示例對話框,其中代碼簽名中心應(yīng)用程序的用戶可以向API作者發(fā)送已創(chuàng)建的公鑰(例如經(jīng)由圖7B的API著作工具462),以便將其嵌入到API中,來保護(hù)這些API。
本領(lǐng)域的技術(shù)人員應(yīng)該理解的是,可以在適于使用隨機(jī)數(shù)產(chǎn)生除了用于代碼簽名的密鑰對之外的對象的其他應(yīng)用程序中,實現(xiàn)在圖8A的描述中提到的例如包括可顯示交通燈圖標(biāo)的特征。例如,可以在產(chǎn)生個人身份號碼(PIN)的應(yīng)用程序或在產(chǎn)生會話密鑰(例如用于根據(jù)對稱加密算法來加密數(shù)據(jù))的應(yīng)用程序中使用這些特征。
再次參考圖7A,在步驟410中已經(jīng)創(chuàng)建與敏感API相關(guān)聯(lián)的一個或多個公鑰之后,當(dāng)軟件應(yīng)用程序開發(fā)者開發(fā)需要訪問已經(jīng)被分類為敏感的API的應(yīng)用程序時,執(zhí)行方法400的后繼步驟。在步驟420中,由代碼簽名中心應(yīng)用程序從希望訪問敏感API的軟件應(yīng)用程序開發(fā)者接收到注冊請求。然后處理該注冊請求,以及確定是否應(yīng)該接收注冊請求。參考圖9,關(guān)于示例實施例來詳細(xì)地描述步驟420。
在圖9中,根據(jù)一個實施例提出了一種針對代碼簽名服務(wù)來注冊實體的方法。在參考圖7A至圖9描述的示例中,該實體是軟件應(yīng)用程序開發(fā)者,盡管其也可以是一些其他個人或?qū)嶓w。使用已知手段(例如通過因特網(wǎng)網(wǎng)站),可以使軟件應(yīng)用程序開發(fā)者獲得對于軟件應(yīng)用程序開發(fā)者的關(guān)于如何向代碼簽名中心注冊的指導(dǎo)。
在步驟421中,由代碼簽名中心應(yīng)用程序從軟件應(yīng)用程序開發(fā)者(“API客戶”)接收注冊請求。注冊請求包括可以由代碼簽名中心用以驗證軟件應(yīng)用程序開發(fā)者身份的信息。該信息可以包括典型的身份信息(例如聯(lián)系信息),并且還可以包括能夠由代碼簽名中心所驗證的信用卡信息。例如,可以通過多個不同通信頻帶中的任意一個來接收該信息。例如,可以經(jīng)由例如安全套接層(SSL)網(wǎng)絡(luò)形式來交換數(shù)據(jù)。
在步驟422中,驗證從軟件應(yīng)用程序開發(fā)者接收到的信息。例如,可以聯(lián)系信用卡公司(例如用電子方法或另外的方法)來驗證已接收的信用卡信息。
如果驗證是不成功的,返回錯誤消息(步驟428)。另一方面,如果成功地驗證了信息(例如,如果成功地驗證了所提供的信用卡信息),在步驟423中,由代碼簽名中心應(yīng)用程序產(chǎn)生了唯一的客戶ID和PIN??梢詣?chuàng)建用于保存客戶ID、PIN、以及與特定的軟件應(yīng)用程序開發(fā)者相關(guān)的其他信息的賬戶記錄,以存儲在由代碼簽名中心持有以及代碼簽名中心應(yīng)用程序可訪問的客戶信息數(shù)據(jù)庫(例如圖7B的客戶信息數(shù)據(jù)庫464)中。
在不同的實施例中,在步驟423中,可以由軟件應(yīng)用程序開發(fā)者而不是代碼簽名中心來產(chǎn)生PIN和/或客戶ID,并且與代碼簽名中心共享以存儲。
在創(chuàng)建與軟件應(yīng)用程序開發(fā)者有關(guān)的賬戶記錄時,例如,也可以向賬戶記錄填充可以用于管理軟件應(yīng)用程序開發(fā)者的賬戶的其他信息,以便追蹤賬戶的活動,以及當(dāng)發(fā)生賬戶活動時向特定一方提供指示。在一個實施例中,當(dāng)針對給定的軟件應(yīng)用程序開發(fā)者創(chuàng)建了賬戶記錄時,可以向代碼簽名中心應(yīng)用程序的用戶(例如代碼簽名中心的管理員)提供使各種詳情和限制與軟件應(yīng)用程序開發(fā)者的賬戶相關(guān)聯(lián)的表格(例如經(jīng)由如圖7B中所示的用戶接口468)。在圖10中示出了賬戶記錄中可以由代碼簽名中心應(yīng)用程序的用戶更新的詳情的示例表格。賬戶記錄的一些詳情可以自動地用預(yù)定義的缺省值來填充。
例如,可以被保存在與軟件應(yīng)用程序開發(fā)者相關(guān)的賬戶記錄中的詳情包括需要向特定的電子郵件地址(例如“到達(dá)”地址、“抄送”地址、“轉(zhuǎn)發(fā)”地址等)發(fā)送電子郵件通知的數(shù)據(jù)。當(dāng)嘗試進(jìn)行注冊時、當(dāng)做出代碼簽名請求時、當(dāng)在處理注冊嘗試或代碼簽名請求時發(fā)生錯誤時、和/或當(dāng)檢測到發(fā)生任意非法(irregular)行為(象可以在代碼簽名中心應(yīng)用程序中定義的那樣)時,也可以設(shè)置標(biāo)記以便向特定的地址發(fā)送電子郵件通知。當(dāng)一些其他預(yù)定義的事件發(fā)生時,也可以設(shè)置標(biāo)記以便發(fā)送電子郵件通知。電子郵件通知使軟件應(yīng)用程序開發(fā)者、管理員、或其他人員來監(jiān)測賬戶(它們自己的賬戶或其它賬戶),以及尤其是觀察在賬戶下是否做出未授權(quán)的代碼簽名請求或注冊嘗試。
可以保存在賬戶記錄中的其他詳情可以包括指示出有效期限與賬戶相關(guān)的標(biāo)記、以及相關(guān)的有效期限的設(shè)置。例如,可以由代碼簽名中心的管理員設(shè)置這些詳情。
可以被保存在賬戶記錄中的其他詳情可以包括指示出賬戶僅被準(zhǔn)予特定數(shù)目的容許代碼簽名請求以及容許代碼簽名請求的相關(guān)數(shù)目的設(shè)置。例如,可以由代碼簽名中心的管理員設(shè)置這些詳情。這可以便于由代碼簽名中心提供“按使用收費(pay-per-use)”的代碼簽名服務(wù)。因此,在一個示例實施方式中,僅僅只要軟件應(yīng)用程序開發(fā)者的賬戶沒有過期并且還有容許代碼簽名請求(例如信用卡),軟件應(yīng)用程序開發(fā)者就能夠使應(yīng)用程序被簽名。
在步驟424中,將客戶ID和PIN、以及可能的其他注冊數(shù)據(jù)發(fā)送到軟件應(yīng)用程序開發(fā)者。盡管步驟421中通過第一通信頻帶(例如SSL連接)接收到注冊請求中的信息,并且在步驟424中可以通過相同的通信頻帶將客戶ID和其他注冊數(shù)據(jù)(除PIN之外)發(fā)送回軟件應(yīng)用程序開發(fā)者,然而,在一個實施例中,可以使用帶外通信裝置(例如通過電話、通過傳真等)來將PIN傳送到軟件應(yīng)用程序開發(fā)者。該帶外通信裝置與在步驟424中用來向軟件應(yīng)用程序開發(fā)者發(fā)送客戶ID和其他注冊數(shù)據(jù)的通信頻帶不同。
在之前提到的各種實施例中,其中由軟件應(yīng)用程序開發(fā)者而不是代碼簽名中心產(chǎn)生PIN和/或客戶ID,則在步驟424中可以確認(rèn)或拒絕該外部產(chǎn)生的PIN和/或客戶ID的使用。如果拒絕了該特殊的PIN和/或客戶ID的使用,可以向軟件應(yīng)用程序開發(fā)者返回錯誤消息(流程前進(jìn)到步驟428,未示出)。
在步驟425中,由代碼簽名中心應(yīng)用程序從軟件應(yīng)用程序開發(fā)者接收注冊文件,這構(gòu)成了軟件應(yīng)用程序開發(fā)者做出的實際注冊嘗試。注冊文件包括在步驟424中發(fā)送給軟件應(yīng)用程序開發(fā)者的客戶ID和PIN、與僅僅軟件應(yīng)用程序開發(fā)者期待擁有的私鑰對應(yīng)的公鑰、以及可能的其他數(shù)據(jù)。在一個實施例中,經(jīng)由SSL連接接收注冊文件。
為更加清楚起見,在步驟425中提到的公鑰/私鑰對與如關(guān)于圖4所描述的產(chǎn)生以用于簽名和驗證軟件應(yīng)用程序的公鑰/私鑰對是不相干的。而是,在步驟425中從軟件應(yīng)用程序開發(fā)者接收的公鑰是用于在軟件應(yīng)用程序開發(fā)者和第三方之間交換編碼消息以利于安全通信的私鑰/公鑰對(例如已經(jīng)由認(rèn)證中心發(fā)出的密鑰對)的一部分。在上下文中,代碼簽名中心應(yīng)用程序隨后能夠使用用于安全通信的公鑰來驗證消息,例如從軟件應(yīng)用程序開發(fā)者接收的代碼簽名請求。事實上,可以使用安全通信的軟件應(yīng)用程序開發(fā)者的私鑰數(shù)字地簽名在步驟425中所接收的注冊文件本身。
在步驟425中接收的注冊文件不僅包含在步驟424中通過第一通信頻帶發(fā)送到軟件應(yīng)用程序開發(fā)者的客戶ID,而且包含根據(jù)示例實施例通過第二(帶外)通信裝置傳送到軟件應(yīng)用程序開發(fā)者的PIN。通過使用不同的通信信道來向軟件應(yīng)用程序開發(fā)者發(fā)送注冊詳情,存在較低的使第三方可以知道客戶ID和與該客戶ID有關(guān)的正確PIN的風(fēng)險。
當(dāng)在步驟425中接收了客戶ID以及與該客戶ID有關(guān)的正確PIN、并且在步驟426中由代碼簽名中心成功地驗證了客戶ID以及與該客戶ID有關(guān)的正確PIN(即在注冊文件中的客戶ID和PIN與存儲在客戶信息數(shù)據(jù)庫的適當(dāng)賬戶記錄中的軟件應(yīng)用程序開發(fā)者的客戶ID以及相關(guān)PIN相匹配)時,則可以安全地設(shè)想伴隨著接收到的注冊文件的用于安全通信的公鑰事實上確實與由軟件應(yīng)用程序開發(fā)者所擁有的安全通信的私鑰相對應(yīng)。代碼簽名中心隨后能夠使用公鑰來驗證聲稱來源于軟件應(yīng)用程序開發(fā)者的消息,并且因此使用公鑰密碼術(shù)來編碼此種消息在通信中提供了增強(qiáng)的安全性。特別地,這里存在較低的使第三方通過使用所截取的客戶ID和PIN以及其自己的公鑰能夠完成錯誤注冊的風(fēng)險。
在各種實施例中,可以將除PIN之外的不同信息通過優(yōu)選為“帶外”通信裝置的第二通信裝置發(fā)送到軟件應(yīng)用程序開發(fā)者。然而,在這些不同的實施例中,由代碼簽名中心所驗證的信息應(yīng)該還包括通過一個通信裝置被發(fā)送到軟件應(yīng)用程序開發(fā)者的一些詳情,以及通過一些其他通信裝置被發(fā)送到軟件應(yīng)用程序開發(fā)者的一些詳情,使得可以實現(xiàn)至少一些上述優(yōu)點。
在一個實施例中,作為更進(jìn)一步的安全措施,代碼簽名中心應(yīng)用程序適于跟蹤不利于(against)任意給定軟件應(yīng)用程序開發(fā)者賬戶的注冊嘗試的數(shù)目。在不利于賬戶的不成功的注冊嘗試的數(shù)目達(dá)到預(yù)定義的數(shù)目之后,可以禁用該賬戶。這是為了避免對代碼簽名中心應(yīng)用程序和軟件應(yīng)用程序開發(fā)者之間共享的PIN的暴力破解(brute forceattack)。
如之前所述的,在步驟426中代碼簽名中心嘗試對注冊文件的驗證(例如通過將已接收的客戶ID和PIN與保存在對應(yīng)賬戶記錄中的那些相匹配),并且如果驗證是成功的則做出確定。倘若如此,則在步驟427中更新與軟件應(yīng)用程序開發(fā)者相關(guān)的賬戶記錄以便反映成功的注冊;否則,在步驟428中將錯誤消息返回到軟件應(yīng)用程序開發(fā)者。特別地,在步驟427中,例如,可以利用在步驟425中接收到的公鑰來更新賬戶記錄。該公鑰被存儲在客戶信息數(shù)據(jù)庫中的軟件應(yīng)用程序開發(fā)者的賬戶記錄中,并且可以被用于在未來驗證包括代碼簽名請求的通信,可以由代碼簽名中心應(yīng)用程序從軟件應(yīng)用程序開發(fā)者接收所述代碼簽名請求。
再參考圖7A,在步驟420中成功地注冊軟件應(yīng)用程序開發(fā)者之后,然后通常由軟件應(yīng)用程序開發(fā)者提交軟件應(yīng)用程序,用于向代碼簽名中心簽名。
在步驟430中,從請求者接收到代碼簽名請求,在該示例中所述請求者是軟件應(yīng)用程序開發(fā)者。例如,代碼簽名請求可以包括與軟件應(yīng)用程序開發(fā)者的賬戶以及要簽名的應(yīng)用程序相關(guān)的客戶ID。在一個實施例中,軟件應(yīng)用程序開發(fā)者的數(shù)字簽名伴隨著代碼簽名請求,其中已經(jīng)使用軟件應(yīng)用程序開發(fā)者的私鑰簽名了所述代碼簽名請求。這利于軟件應(yīng)用程序開發(fā)者的身份的認(rèn)證。
在步驟440中,代碼簽名中心應(yīng)用程序驗證在步驟430中所接收的代碼簽名請求是已注冊的軟件應(yīng)用程序開發(fā)者所做出的有效請求。例如,該步驟可以包括獲得與已接收的客戶ID有關(guān)的公鑰,以及驗證附加到代碼簽名請求的數(shù)字簽名;確認(rèn)客戶ID所標(biāo)識的賬戶還沒有到期;以及確認(rèn)存在指示出對于該賬戶仍然有容許代碼請求的足夠的信用。
如果確定是做出了有效的請求,則在步驟450中,更新與由客戶ID所標(biāo)識的賬戶相關(guān)的賬戶記錄。例如,這可以包括減少剩下的容許代碼簽名請求的數(shù)目。在一些實施例中,也可以將涉及請求的信息保存在日志中,可以將所述日志存儲在客戶信息數(shù)據(jù)庫(例如圖7B的464)或一些其他的存儲設(shè)備上。
在步驟460,可以根據(jù)賬戶記錄中的設(shè)置,將通知電子郵件發(fā)送到在賬戶記錄中所標(biāo)識的地址。
在步驟470中,代碼簽名中心使用針對代碼簽名而創(chuàng)建的簽名私鑰(例如如在步驟410中創(chuàng)建的并且存儲在圖7B的私鑰數(shù)據(jù)庫466中的)來簽名應(yīng)用程序。在步驟470中還將數(shù)字簽名返回到軟件應(yīng)用程序開發(fā)者,使得可以將數(shù)字簽名附加到應(yīng)用程序中,所述應(yīng)用程序已經(jīng)被編程以訪問利用對應(yīng)的簽名公鑰所保護(hù)的敏感API。在該步驟中,也可以配置代碼簽名中心應(yīng)用程序以用于向其他方轉(zhuǎn)發(fā)包含數(shù)字簽名的文件。
在代碼簽名中心可以控制訪問由不同的簽名公鑰所保護(hù)的不同API的實施例中,可以在代碼簽名請求中包括需要產(chǎn)生的數(shù)字簽名的指示,并且可以在步驟470中將適當(dāng)?shù)暮灻借€相應(yīng)地用于簽名應(yīng)用程序。
如果在步驟440中確定沒有做出有效的請求,則在步驟480中返回錯誤消息。在該步驟中,取決于賬戶設(shè)置,可以發(fā)送通知電子郵件。
應(yīng)該理解的是,由代碼簽名中心應(yīng)用程序的用戶(例如管理員)采取的行動,例如包括賬戶記錄的修改或代碼簽名密鑰對創(chuàng)建的發(fā)起,可以是以用戶密碼的成功驗證、或一些其他訪問控制機(jī)制的提供為條件的。
應(yīng)該理解的是,在從相同的軟件應(yīng)用程序開發(fā)者接收到多個代碼簽名請求的情況下,可以重復(fù)步驟430至480,以及在向多個軟件應(yīng)用程序開發(fā)者提供代碼簽名服務(wù)的情況下,可以重復(fù)步驟420至480。
盡管在這里描述的至少一些實施例中,由代碼簽名中心產(chǎn)生的數(shù)字簽名取決于軟件應(yīng)用程序開發(fā)者的認(rèn)證以及對軟件應(yīng)用程序開發(fā)者已經(jīng)被正確地注冊的確認(rèn),應(yīng)該理解的是,數(shù)字簽名是從應(yīng)用程序的散列或其它變換版本中產(chǎn)生的,因而是應(yīng)用程序?qū)S玫?。這與一些已知的代碼簽名方案形成對比,已知方案中,準(zhǔn)予從可信任的軟件應(yīng)用程序開發(fā)者或作者接收到的所有軟件應(yīng)用程序進(jìn)行API訪問,而不考慮正要被簽名的特定應(yīng)用程序。在這里所描述的系統(tǒng)和方法的實施例中,根據(jù)不同應(yīng)用程序來準(zhǔn)予對API的訪問,并且因此更嚴(yán)格地控制和管理對API的訪問。
在這里描述的至少一些實施例中,代碼簽名中心從軟件應(yīng)用程序開發(fā)者接收軟件應(yīng)用程序,用于利用代碼簽名請求來簽名。一旦認(rèn)證了代碼簽名請求者的身份并且已經(jīng)驗證了請求者某些的賬戶信息,則由代碼簽名中心簽名應(yīng)用程序。應(yīng)用程序的簽名典型地包括由代碼簽名中心產(chǎn)生散列(或軟件應(yīng)用程序的其它變換版本),以及隨后使用適當(dāng)?shù)暮灻借€對散列進(jìn)行編碼。
然而,在另一個實施例中,并沒有作為代碼簽名請求的一部分而接收要由代碼簽名中心簽名的應(yīng)用程序。而是和代碼簽名請求一起接收到散列(或軟件應(yīng)用程序的其它變換版本),其中散列是由不同于代碼簽名中心的個人或?qū)嶓w,例如軟件應(yīng)用程序開發(fā)者本身,使用如果由代碼簽名中心接收到實際要簽名的應(yīng)用程序則代碼簽名中心本來會使用的散列算法相同的散列算法,而產(chǎn)生的。然后由代碼簽名中心使用適當(dāng)?shù)乃借€對散列進(jìn)行編碼(經(jīng)過賬戶驗證)。因為在該實施例中原始的應(yīng)用程序從不會由代碼簽名中心接收到,軟件應(yīng)用程序開發(fā)者不需要擔(dān)心泄漏機(jī)密的算法或數(shù)據(jù)。此外,因為將與應(yīng)用開發(fā)程序相關(guān)的任意風(fēng)險留給了軟件應(yīng)用程序開發(fā)者來處理,代碼簽名中心可以從中受益。例如,代碼簽名中心典型地不必檢查或驗證代碼的完整性,或確保遵守了保密規(guī)則,因為其從不接收要簽名的實際應(yīng)用程序。該技術(shù)也減少了當(dāng)處理代碼簽名請求時代碼簽名中心應(yīng)用程序需要處理的數(shù)據(jù)量。
可以將這里描述的一個或多個方法的步驟提供為存儲在計算機(jī)可讀媒質(zhì)上的可執(zhí)行軟件指令,所述計算機(jī)可讀媒質(zhì)可以包括傳輸型媒質(zhì)。
盡管已關(guān)于多個實施例描述了本發(fā)明,本領(lǐng)域的技術(shù)人員可以理解,在不脫離如在所附權(quán)利要求所限定的本發(fā)明范圍的情況下,可以對這些實施例進(jìn)行其他改變和改進(jìn)。
權(quán)利要求
1.一種用于針對代碼簽名服務(wù)來注冊實體的方法(420),所述方法包括步驟從請求針對代碼簽名服務(wù)來注冊的實體接收(421)注冊請求,其中所述注冊請求包括與所述實體的身份相關(guān)的數(shù)據(jù);通過驗證所述注冊請求中的所述數(shù)據(jù)的至少子集,來認(rèn)證(422)實體的身份;產(chǎn)生(423)針對實體的賬戶記錄,其中所述賬戶記錄包括與所述實體相關(guān)的至少第一和第二標(biāo)識符;經(jīng)由第一通信信道向所述實體發(fā)送(424)第一標(biāo)識符和第二標(biāo)識符中的一個,以及經(jīng)由不同的第二通信信道向所述實體發(fā)送(424)第一標(biāo)識符和第二標(biāo)識符中的另一個;從所述實體接收(425)注冊文件;以及在接受所述注冊請求之前,確認(rèn)(426)所述注冊文件至少包括第一和第二標(biāo)識符兩者。
2.如權(quán)利要求1所述的方法,其中,第一標(biāo)識符是客戶ID,以及第二標(biāo)識符是PIN。
3.如權(quán)利要求2所述的方法,還包括產(chǎn)生客戶ID以及PIN的步驟。
4.如權(quán)利要求2所述的方法,其中,客戶ID以及PIN中的至少一個是由實體產(chǎn)生的,并且被包括在注冊請求中。
5.如前述權(quán)利要求中任意之一所述的方法,其中,與實體的身份相關(guān)的數(shù)據(jù)包括與實體相關(guān)的信用卡信息,以及認(rèn)證實體身份的步驟包括驗證所述信用卡信息。
6.如前述權(quán)利要求中任意之一所述的方法,其中,第一通信信道是SSL連接。
7.如前述權(quán)利要求中任意之一所述的方法,其中,第二通信信道是電話和傳真之一。
8.如前述權(quán)利要求中任意之一所述的方法,其中,注冊文件包括與實體相關(guān)的公鑰,以及所述方法還包括步驟存儲公鑰,以用于將來使用,其中公鑰被用于驗證從實體接收到的數(shù)字簽名。
9.一種計算機(jī)可讀媒質(zhì),包括用于執(zhí)行如前述權(quán)利要求中任意之一所述的方法(420)的步驟的指令,其中,所述指令可在計算設(shè)備上執(zhí)行。
10.一種針對代碼簽名服務(wù)來注冊實體的系統(tǒng),包括用于存儲多個賬戶記錄的客戶信息數(shù)據(jù)庫(464)、以及代碼簽名中心應(yīng)用程序(452),當(dāng)在計算設(shè)備上執(zhí)行所述代碼簽名中心應(yīng)用程序時,所述代碼簽名中心應(yīng)用程序執(zhí)行如權(quán)利要求1至8中任一項所述的方法的步驟。
全文摘要
一種針對代碼簽名服務(wù)來注冊實體的系統(tǒng)和方法。實體可以是軟件應(yīng)用程序開發(fā)者或希望具有應(yīng)用程序被數(shù)字地簽名的其他個體或?qū)嶓w??梢砸蠛灻麘?yīng)用程序,以便當(dāng)在計算設(shè)備上執(zhí)行應(yīng)用程序時,使應(yīng)用程序能夠訪問計算設(shè)備的敏感API以及相關(guān)資源。在一個實施例中,針對代碼簽名服務(wù)來注冊實體的方法包括步驟使用帶外通信系統(tǒng),將至少一些賬戶數(shù)據(jù)發(fā)送到注冊個人或?qū)嶓w。這提供了附加的安全性,使得針對代碼簽名服務(wù)進(jìn)行注冊的個人或?qū)嶓w是想要注冊的個人或?qū)嶓w。
文檔編號G06F21/42GK1940955SQ20061013998
公開日2007年4月4日 申請日期2006年9月28日 優(yōu)先權(quán)日2005年9月29日
發(fā)明者尼爾·P·亞當(dāng)斯, 麥克爾·G·柯卡普, 赫伯特·A·利特爾, 戴維·F·塔普什科 申請人:捷訊研究有限公司