專利名稱:安全的軟件更新的制作方法
技術領域:
本發(fā)明涉及更新軟件,更具體地說,涉及使用從遠程服務器獲得 的更新的軟件來更新客戶機處的軟件。
背景技術:
目前,對于電子設備而言,在它們的運行中使用軟件是非常普遍 的。使用軟件的電子設備的示例包括計算機、個人數(shù)字助理、媒體播 放器和移動電話。然而,有時希望改變或更新正在由這些電子設備使 用的軟件。在計算機的情況下,更新的軟件(如較新的版本)能夠通過下載 處理從遠程服務器獲得。
一旦獲得,所述軟件能夠安裝到計算機上。 可以通過要求用戶輸入字母數(shù)字密鑰或注冊碼來控制軟件的安裝處 理。沒有正確密鑰或注冊碼,則更新的軟件無法被安裝。此外,用于 更新計算機上的軟件的傳統(tǒng)方法要求相當多的用戶參與。對用戶協(xié)助的需要是成問題的,因為用戶擔心下載軟件并將軟件安裝到計算機上 有可能感染目前已經(jīng)存在的計算機病毒。在使用軟件的便攜式電子設備(例如個人數(shù)字助理、媒體助理、 移動電話)的情況下,所述軟件通常在制造過程中被初裝。結(jié)果,當 用戶收到該便攜式電子設備時,所述軟件已被預安裝且所述便攜式電 子設備是全功能的。然而,當軟件需要隨后進行更新或修改時,在許 多情況下,安裝在便攜式電子設備上的軟件不能夠被終端用戶所改 變。近來, 一些便攜式電子設備允許更新軟件。例如,便攜式電子設 備能夠連接到計算機,該計算機能夠用更新的軟件完全替換便攜式電 子設備上的現(xiàn)有軟件。這導致的 一個復雜性是便攜式電子設備通常支 持多個功能。這些不同的功能能夠通過由不同銷售商提供的不同的軟件模塊控制。因此,將便攜式電子設備上的所有軟件完全替換通常是 不合適的。結(jié)果,需要能夠更新不同的軟件模塊而不干擾其它模塊的 支持軟件更新技術。因此,需要用于更新電子設備上的軟件的自動安全的解決方案。發(fā)明內(nèi)容本發(fā)明屬于更新電子設備內(nèi)已在使用的軟件的改進技術。在 一 個 實施例中,軟件能夠利用密碼術以安全和受控的方式被更新。更新的 軟件的真?zhèn)渭捌鋵τ谔囟娮釉O備的適當性能夠在更新之前被確認。 所述軟件也能夠逐個模塊地被更新。在一個實施例中,服務器容納用 于不同電子設備的軟件更新,并且將合適的軟件更新通過數(shù)據(jù)網(wǎng)絡提 供給電子設備。盡管本發(fā)明 一般適用于很多種類型的更新軟件,但是本發(fā)明尤其適于更新數(shù)字權限管理(DRM)軟件。出于安全原因,可能需要更新 電子設備中在使用的DRM軟件。本發(fā)明的改進技術使得DRM軟件 能夠以安全和受控的方式被更新。在一個實施方式中,對DRM軟件 的更新用來修改設置在電子設備上的DRM軟件庫。本發(fā)明適用于至少部分地根據(jù)軟件運行的電子設備。例如,所述 電子設備可以為計算機、個人數(shù)字助理、媒體播放器或移動電話。本發(fā)明能夠以多種方式實現(xiàn),包括方法、系統(tǒng)、設備、裝置或計 算機可讀介質(zhì)。在下面論述本發(fā)明的幾個實施例。作為一種用于對至少部分地根據(jù)軟件運行的電子設備上的軟件 進行升級的方法,本發(fā)明的一個實施例至少包括以下步驟將設備信 息發(fā)送到主機設備;在電子設備處接收加密的軟件模塊,所述加密的 軟件模塊先前在主機設備處被加密,專門供該電子設備使用;在電子 設備處對加密的軟件模塊進行解密;以及此后將軟件模塊安裝在電子設備上。作為一種用于對便攜式電子設備上的軟件進行升級的方法,本發(fā)明的一個實施例至少包括以下步驟發(fā)送步驟,將設備信息發(fā)送到主機設備,所述設備信息包括設備描述信息、公共密鑰和當前版本指示符;接收步驟,在便攜式電子設備處接收加密的軟件模塊,所述加密 的軟件模塊是如下獲得的,即基于設備描述信息和當前版本指示選擇 對于主機設備可用的軟件模塊,然后利用由便攜式電子設備提供的公 共密鑰對其進行加密;解密步驟,利用便攜式電子設備所知的私有密 鑰在便攜式電子設備處對加密的軟件模塊進行解密;認證步驟,對解 密的軟件模塊進行認證;以及安裝步驟,在所述解密步驟和認證步驟 已經(jīng)成功完成之后,將軟件模塊安裝在便攜式電子設備上。作為一種至少包括用于升級計算設備上的軟件的計算機程序代 碼的計算機可讀介質(zhì),本發(fā)明的一個實施例至少包括用于將設備信 息發(fā)送到主機設備的計算機程序代碼,所述設備信息包括設備描述信 息、第一密鑰和當前版本指示符;用于在計算設備處接收加密的軟件 模塊的計算機程序代碼,所述加密的軟件模塊是如下獲得的基于設 備描述信息和當前版本指示符選擇對于主機設備可用的軟件模塊,然 后利用由計算設備提供的第 一 密鑰對其進行加密;用于利用計算設備 所知的第二密鑰在計算設備處對加密的軟件模塊進行解密的計算機程序代碼;用于對解密的軟件模塊進行認證的計算機程序代碼;和用于在所述解密和所述認證已經(jīng)成功完成后將軟件模塊安裝在計算設備上的計算機程序代碼。作為一種用于對便攜式電子設備上的軟件模塊進行升級的方法, 本發(fā)明的另一個實施例至少包括以下步驟接收步驟,在基于網(wǎng)絡的 服務器設備處接收設備信息,所述設備信息與便攜式電子設備相關并 且包括設備描述信息、公共密鑰和便攜式電子設備上的軟件模塊的當 前版本指示符;確定步驟,確定是否可從服務器設備得到軟件模塊的 更新版本,所述確定步驟基于與便攜式電子設備相關的設備描述信 息;加密步驟,當所述確定步驟確定出可從服務器設備得到軟件模塊 的更新版本時,對軟件模塊的更新版本進行加密,所述加密步驟利用 了由便攜式電子設備提供的公共密鑰;以及發(fā)送步驟,將加密的軟件 模塊發(fā)送到便攜式電子設備。作為一種至少包括用于升級計算設備上的軟件模塊的計算機程序代碼的計算機可讀介質(zhì),本發(fā)明的另一個實施例至少包括用于在 基于網(wǎng)絡的服務器設備處接收設備信息的計算機程序代碼,所述設備 信息與計算設備相關并且包括設備描述信息、密鑰和計算設備上的軟 件模塊的當前版本指示符;用于確定是否可從服務器設備得到軟件模 塊的更新版本的計算機程序代碼,所述確定基于與計算設備相關的設 備描述信息;用于當所述確定確定出可從服務器設備得到軟件模塊的 更新版本時對軟件模塊的更新版本進行加密的計算機程序代碼,所述 加密使用了由計算設備提供的密鑰;和用于將加密的軟件模塊發(fā)送到 計算設備的計算機程序代碼。作為一種至少包括用于升級電子設備上的軟件的計算機程序代 碼的計算機可讀介質(zhì),本發(fā)明的一個實施例至少包括用于在主機設 備處識別用于電子設備的更新軟件模塊的計算機程序代碼;用于對用 在電子設備上的更新軟件模塊進行加密的計算機程序代碼;用于將加 密的軟件模塊發(fā)送到電子設備的計算機程序代碼;用于在電子設備處 對加密的軟件模塊進行解密的計算機程序代碼;和用于將軟件模塊安 裝在電子設備上的計算機程序代碼。作為一種基于網(wǎng)絡的軟件更新系統(tǒng),本發(fā)明的一個實施例至少包 括(i)多個移動客戶機設備,每個移動客戶機設備根據(jù)駐留在相應 移動客戶機設備上的至少一個軟件模塊運行;(ii)可訪問多個軟件模塊的服務器設備,每個軟件模塊供所述多個移動客戶機設備中的特 定一個或多個使用;和(m)可與服務器設備和移動客戶機設備可操 作地連接的至少一個客戶機設備,所述客戶機設備運行用于數(shù)字媒體 資源的媒體管理應用。所述數(shù)字媒體資源由具有至少一個軟件模塊的 數(shù)字權限管理庫進行保護??蛻魴C設備在第一數(shù)據(jù)鏈路上與服務器設 備進行交互以檢索用于待更新的移動客戶機設備的更新軟件模塊,該 更新軟件模塊屬于數(shù)字權限管理庫。此后客戶機設備與移動客戶機設 備在第二數(shù)據(jù)鏈路上進行交互以將該更新軟件模塊提供給待更新的 移動客戶機設備。本發(fā)明的其它方面和優(yōu)點根據(jù)下面結(jié)合附圖的詳細的描述而變 得明顯,所述附圖通過示例說明本發(fā)明的原理。
通過下面結(jié)合附圖進行的詳細描述,本發(fā)明將變得容易理解,在附圖中相似的標號表示相似的構(gòu)成元件,并且在附圖中圖1A是根據(jù)本發(fā)明一個實施例的軟件更新系統(tǒng)的框圖。圖1B是在已發(fā)生軟件更新之后的軟件更新系統(tǒng)的框圖。圖2是根據(jù)本發(fā)明一個實施例的服務器軟件更新處理的流程圖。圖3是根據(jù)本發(fā)明 一個實施例的客戶機軟件更新處理的流程圖。圖4A和4B是根據(jù)本發(fā)明一個實施例的客戶機軟件更新處理的流程圖。圖5A和5B是根據(jù)本發(fā)明一個實施例的服務器軟件更新處理的 流程圖。圖6是根據(jù)本發(fā)明的一個實施例的移動客戶機連接處理的流程圖。圖7A和7B是根據(jù)本發(fā)明一個實施例的移動客戶機斷開連接處 理的流程圖。
具體實施方式
本發(fā)明屬于更新電子設備中已在使用的軟件的改進技術。在一個 實施例中,能夠利用密碼術以安全和受控的方式來更新軟件。更新軟 件的真?zhèn)渭捌溽槍μ囟娮釉O備的適當性能夠在更新之前被確認。也 可以逐個模塊地更新軟件。在一個實施例中,服務器容納用于各種電 子設備的軟件更新,并且通過數(shù)據(jù)網(wǎng)絡將合適的軟件更新提供給電子 設備。盡管本發(fā)明 一般適用于很多種類型的更新軟件,但是本發(fā)明尤其 適于更新數(shù)字權限管理(DRM)軟件。出于安全原因,可能需要更新 電子設備中在使用的DRM軟件。本發(fā)明的改進技術使得DRM軟件能夠以安全和受控的方式被更新。在一個實施方式中,對DRM軟件 的更新用來修改設置在電子設備上的DRM軟件庫。本發(fā)明適用于至少部分地根據(jù)軟件運行的電子設備。例如,所述 電子設備可以為計算機、個人數(shù)字助理、媒體播放器或移動電話。下面參考圖1A-7B討論本發(fā)明的實施例。然而,本領域技術人 員能夠容易地理解,這里參考這些附圖而給出的詳細描述旨在用于解 釋的目的,而本發(fā)明的范圍超出這些有限的實施例。圖1A是根據(jù)本發(fā)明一個實施例的軟件更新系統(tǒng)100的框圖。軟 件更新系統(tǒng)100包括客戶機設備102,客戶機設備102包括媒體管理 應用(MMA)104??蛻魴C設備102例如為計算機,如桌上型計算機。 媒體管理應用104是用來管理在客戶機設備102處可得到的媒體資源 的應用程序。軟件更新系統(tǒng)IOO還包括服務器設備106,服務器設備 106能夠通過網(wǎng)絡108連接到客戶機設備102。網(wǎng)絡108可以是數(shù)據(jù) 網(wǎng)絡。網(wǎng)絡108可包括全球網(wǎng)、廣域網(wǎng)或局域網(wǎng)的至少一部分。網(wǎng)絡 108也可以是有線的和/或無線的。此外,軟件更新系統(tǒng)100包括移動客戶機設備(MCD) 110。 MCD 110能夠通過有線或無線手段可操作地連接到客戶機設備102。 在一個示例中,MCD 110能夠通過如USB電纜的外圍總線電纜而連 接到客戶機設備102。在另一個示例中,MCD 110能夠通過無線網(wǎng)絡 (例如,藍牙、WiFi、 WiMax)上的無線鏈路而連接到客戶機設備 102。根據(jù)本發(fā)明,客戶機設備102能夠幫助更新存在于MCD 110上 的軟件模塊。在這樣做時,客戶機設備102與服務器設備106通信。 服務器設備106可訪問可供分配給適當?shù)囊苿涌蛻魴C設備的多個軟件 才莫塊。更具體而言,客戶機設備102與MCD IIO進行交互以識別安 裝在MCD 110上的軟件模塊112,也就是軟件模塊-版本1 (SWM-V1)。然后客戶機設備102存儲與所識別的軟件模塊112相 關聯(lián)的版本指示U4。在圖1A示出的示例中,版本指示114指示MCD 110上安裝的軟件模塊是版本1 ( VI )。然后客戶機設備102能夠通過網(wǎng)絡108與服務器設備106通信,以確定是否存在用在MCD 110 上的軟件模塊的較新或更新版本。在此示例中,服務器設備106包括 軟件模塊116和118,其中軟件模塊116為版本1 ( SWM-V1)并且 軟件模塊118為版本2 ( SWM-V2 )。在此示例中,軟件模塊116和 118都被假定為適于用在MCD 110上。然后服務器106能夠?qū)⒏碌?軟件模塊118 (即版本2 ( SWM-V2 ))提供給客戶機設備102。然后, 客戶機設備102能夠?qū)④浖K-版本2( SWM-V2 )轉(zhuǎn)發(fā)到MCD 110。盡管圖1A中示出的軟件更新系統(tǒng)100例示了單個客戶機設備和 單個MCD,但是應該理解,軟件更新系統(tǒng)100通常使單個服務器能 夠通過多個客戶機設備來支持更新多個MCD上的軟件模塊。此外, 盡管圖1A中示出的軟件更新系統(tǒng)100利用 一個或更多個客戶機設備, 但是在另 一個實施例中,軟件更新系統(tǒng)在執(zhí)行軟件更新時不需要使用 任何客戶機設備。在這種情況下,MCD能夠連接到網(wǎng)絡108且直接 與服務器設備106通信。圖1B是已發(fā)生軟件更新后的軟件更新系統(tǒng)100,的框圖。軟件更 新系統(tǒng)IOO,代表MCD IIO處的軟件模塊已經(jīng)被更新后的軟件更新系 統(tǒng)100。要注意,在圖1B中,MCD 110包括屬于軟件模塊-版本2 (SWM-V2 )的軟件模塊112,,且客戶機設備102處的版本指示符114, 指示MCD 110現(xiàn)在使用版本2 ( SWM-V2 )。在一個實施例中,軟件可屬于數(shù)字權限管理(DRM)軟件模塊。 軟件模塊也可屬于軟件庫。作為示例,正被更新的軟件模塊可被稱為 DRM庫。媒體管理應用的一個示例是由美國加利福尼亞州庫珀蒂諾市的 蘋果計算機公司生產(chǎn)的iTunes⑧應用。服務器設備的一個示例是同樣 由美國加利福尼亞州庫珀蒂諾市的蘋果計算機公司提供的iTunes Music Store服務器。圖2是根據(jù)本發(fā)明 一個實施例的服務器軟件更新處理200的流程 圖。例如,由服務器執(zhí)行服務器軟件更新處理200。服務器屬于連接 到客戶機或在客戶機上運行的軟件程序的計算設備。服務器能夠直接或通過網(wǎng)絡連接到客戶機。例如,服務器可屬于圖1A中示出的客戶 機設備102或服務器設備106。服務器軟件更新處理200最初從判定202開始,判定202確定是 否要執(zhí)行軟件更新。當判定202確定軟件更新將不被執(zhí)行時,服務器 軟件更新處理200等待直到要進行軟件更新。軟件更新可自動執(zhí)行或 應用戶的請求而執(zhí)行。在任何情況下,當判定202確定需要軟件更新 時,對用于客戶機的軟件模塊(SWM)進行識別204。在軟件模塊已 經(jīng)被識別204之后,軟件模塊被加密206以供客戶機訪問。需要注意 的是,被識別204的軟件模塊是為客戶機專門設計的,且軟件模塊的 加密是要限制客戶機對它的使用。此后,加密的軟件模塊被發(fā)送到客 戶機(208)。在操作208之后,服務器軟件更新處理200結(jié)束。圖3是根據(jù)本發(fā)明一個實施例的客戶機軟件更新處理300的流程 圖。例如,由根據(jù)本發(fā)明一個實施例運行的客戶機來執(zhí)行客戶機軟件 更新處理300。作為示例,客戶機通常是使用軟件的電子設備或在其 上運行的軟件程序。例如,客戶機可屬于圖1A示出的移動客戶機設 備110。客戶機軟件更新處理300從判定302開始,判定302確定軟件模 塊是否要被安裝到客戶機上。當判定302確定軟件模塊將不被安裝時, 客戶機軟件更新處理300等待將軟件模塊安裝到客戶機上的需要。換 言之,可以認為每當軟件模塊要被安裝到客戶機上時就調(diào)用客戶機軟 件更新處理300。 一旦判定302確定要安裝軟件模塊,加密的軟件模 塊在客戶機處被解密304。在解密304之后,將軟件模塊安裝306到 客戶機上。在軟件模塊已經(jīng)安裝306到客戶機上之后,客戶機軟件更 新處理300結(jié)束。圖4A和4B是根據(jù)本發(fā)明 一個實施例的客戶機軟件更新處理400 的流程圖。例如,由根據(jù)本發(fā)明一個實施例運行的客戶機執(zhí)行客戶機 軟件更新處理400。作為示例,參考圖1A,所述客戶機可屬于客戶機 設備102或在其上運行的媒體管理應用104??蛻魴C軟件更新處理400從判定402開始,判定402確定媒體管當判定402確定媒體管理應用尚未啟動時,客戶 機軟件更新處理400等待這樣的事件。另一方面, 一旦判定402確定 媒體管理應用已啟動,判定404就檢查可用軟件模塊。這里,可用軟 件模塊通常是適于用在對應的移動客戶機設備(MCD )上的軟件模塊 的較新版本??蛻魴C軟件更新處理400不需要在每次被啟動時都檢查 可用軟件模塊,作為替代,這能夠定期地(例如每周)進行。當判定404確定要進行對可用軟件模塊的檢查時,向服務器發(fā)送 406版本請求。該版本請求至少包括當前版本標識符和MCD描述信 息。MCD描述信息是描述MCD的一般特性、特征或?qū)傩缘男畔?。接下來,判?08確定是否已經(jīng)從服務器接收到版本響應。當判 定408確定尚未接收到版本響應時,客戶機軟件更新處理400會等待 這樣的響應。然而,等待時段可以是有限的或在單獨的無阻塞線程中 處理。在任何情況下, 一旦判定408確定已經(jīng)接收到版本響應,將可 用版本指示存儲410在客戶機中。版本響應將可用版本指示提供給客 戶機。在一個實施例中,可用版本指示可指示是否可從服務器得到用 于MCD的更新的軟件模塊。在這點上,客戶機軟件更新處理400有效地等待直到MCD與客 戶機連接。雖然這在其它實施例中不是必須的,但所述連接能夠允許 MCD完成客戶機軟件更新處理400的平衡。在等待斷開連接的時候, MCD可執(zhí)行與軟件更新無關的其它操作。更具體而言,如圖4A和4B所示,在框410之后或在沒有發(fā)現(xiàn) 可用軟件模塊時的判定404之后,判定412確定MCD是否與客戶機 連接。通常,判定412將涉及MCD近來是否已經(jīng)被連接到客戶機。 當判定412確定到MCD沒有被連接時,客戶機可選地可執(zhí)行其它處 理414。這樣的其它處理414通常與對軟件模塊進行升級無關。然后 判定416確定客戶機軟件更新處理400是否應當關閉。當判定416確 定客戶機軟件更新處理400應當被關閉時,客戶機軟件更新處理400 結(jié)束。另選地,當判定416確定不應關閉客戶機軟件更新處理400時, 客戶機軟件更新處理400返回以重復判定412,從而等待MCD被連接到客戶機。一旦判定412確定MCD與客戶機連接,判定418確定是否存在 可用版本指示??梢曰叵氲剑捎冒姹局甘鞠惹盎谠O置在來自服務 器的版本響應內(nèi)的信息而被存儲410在客戶機中。當判定418確定存 在可用版本指示時,針對用于MCD的可用軟件模塊的軟件模塊請求 被發(fā)送420。這里,軟件模塊請求被發(fā)送420到服務器并且請求向客 戶機提供可用軟件版本模塊。軟件模塊請求可包括用于期望的可用軟 件模塊的版本標識符和用于加密可用軟件模塊的加密密鑰,即公共加 密密鑰。接下來,判定422確定是否已經(jīng)從服務器接收到軟件模塊響 應。當判定422確定尚未接收到軟件模塊響應時,客戶機軟件更新處 理400會等待這樣的響應。 一旦判定422確定已經(jīng)接收到軟件模塊響 應,可將由軟件模塊響應提供的加密的軟件模塊復制424到MCD。 在操作424之后或在確定不存在可用版本指示時的判定418之后,客 戶機軟件更新處理400完成并結(jié)束。圖5A和5B是根據(jù)本發(fā)明一個實施例的服務器軟件更新處理500 的流程圖。例如,由根據(jù)本發(fā)明的一個實施例運行的服務器執(zhí)行服務 器軟件更新處理500。作為示例,參考圖1A,該服務器可屬于服務器 設備106或在其上運行的軟件應用。通常,服務器能夠執(zhí)行多個不同的處理。服務器軟件更新處理 500被認為是能夠由服務器執(zhí)行的一個這樣的處理。因此,圖5A和 5B中討論的處理是針對用于客戶機設備(例如移動客戶機設備)的 軟件更新的處理,且這種處理可以與在服務器上執(zhí)行的其它處理相交 織。服務器軟件更新處理500從判定502開始,判定502確定是否已 經(jīng)接收到版本請求。當判定502確定已經(jīng)接收到版本請求時,基于 MCD描述信息來確定504用于MCD的軟件模塊的最新版本。這里, 已經(jīng)從客戶機接收的版本請求包括MCD上的軟件模塊的當前版本的 指示和MCD描述信息。MCD描述信息是描述MCD的一般特性、特 征或?qū)傩缘男畔?。接下來,判?06確定MCD上的軟件模塊的當前版本是否與可 從服務器得到的最新版本相同。當判定506確定MCD上的軟件模塊 的當前版本與可從服務器得到的最新版本相同時,向客戶機發(fā)送508 指示不存在用于MCD的軟件模塊的可用版本的版本響應。換言之, 在此條件下,不需要更新MCD上的軟件模塊。另一方面,當判定506 確定MCD上的軟件模塊的當前版本與可從服務器得到的最新版本不 同時,向客戶機發(fā)送510指示存在用于MCD的軟件模塊的可用版本 的版本響應。在框508和510之后以及在尚未接收到版本請求時的判定502 之后,當已接收到軟件模塊請求時,可通過服務器軟件更新處理500 執(zhí)行另外的處理。具體地說,當判定512確定已接收到軟件模塊請求 時,用于MCD的軟件模塊的最新版本被檢索514。這里,從服務器 檢索514用于MCD的軟件模塊的最新版本。換言之,服務器集中地 使用于各種MCD的軟件模塊的各種版本可用。接下來,利用用于MCD的公鑰對檢索到的軟件模塊進行加密 516。這里,軟件模塊請求提供了在(直接或間接地)加密檢索到的 軟件模塊時要使用的公鑰。公鑰是與MCD特定相關的密鑰對的一部 分。在一個實施例中,密鑰對存儲在MCD上。在檢索到的軟件模塊 被加密516之后,向客戶機發(fā)送518軟件模塊響應。軟件模塊響應至 少包括用于MCD的加密的軟件模塊。此后,可以在服務器任選地執(zhí)行其它處理520。在此后的某時刻, 判定522確定服務器軟件更新處理500是否應當關閉。當判定522確 定服務器軟件更新處理500不應當關閉時,服務器軟件更新處理500 返回到其開始。另選地,當判定522確定服務器軟件更新處理500應 當關閉時,服務器軟件更新處理500結(jié)束。通常,客戶機或服務器可被視為主機設備。在圖4A和圖5A中, 客戶機與服務器進行交互以確定是否存在SWM的更新版本。在此實 施例中,服務器確定SWM的更新版本是否存在,且如果存在的話則 向客戶機通知該更新版本。此后,在合適的時間,客戶機將檢索用于MCD的SWM的更新版本。然而,在另一個實施例中,客戶機可確定SWM的更新版本是否 存在。此實施例將代表與圖4A和圖4B中的實施例不同的實施例。在 這種實施例中,客戶機能夠定期地向服務器查詢多個不同設備的最新 版本的表(或列表)。然后客戶機存儲所述表(所述表可包括代表不 同設備的最新版本的版本號)。此后,當MCD與客戶機相連時,客 戶機得到MCD描述信息(包括MCD上的當前版本)并且將其與存 儲的表中指示的可用于該設備的最新版本進行比較。如果存在可用軟 件版本,則客戶機(例如,利用版本號)向服務器請求合適的軟件更 新。 一旦接收到合適的軟件更新,可將可用軟件模塊提供給MCD。圖6是根據(jù)本發(fā)明 一個實施例的移動客戶機連接處理600的流程 圖。例如,由根據(jù)本發(fā)明一個實施例運行的便攜式客戶機執(zhí)行移動客 戶機連接處理600。例如,便攜式客戶機可以是移動客戶機設備 (MCD)。作為示例,參考圖1A, MCD可屬于移動客戶機設備llO 或在其上運行的軟件應用。移動客戶機連接處理600從判定602開始,判定602確定MCD 是否連接到客戶機。當判定602確定MCD沒有通過有線或無線手段 連接到客戶機時,移動客戶機連接處理600等待這樣的連接。換言之, 移動客戶機連接處理600可被認為 一旦在MCD和客戶機之間建立了 連接就被調(diào)用。在任何情況下, 一旦判定602確定在MCD和客戶機 之間存在連接,那么就將MCD描述信息和當前版本標識符提供604 給客戶機。這里,MCD描述信息以及當前版本標識符是由MCD維 護的。然后,可在MCD處執(zhí)行其它處理606。所述其它處理606通 常不是移動客戶機連接處理600的一部分,但是示出在圖6中用于表 明上下文關系。作為示例,能夠被執(zhí)行的一種類型的其它處理606是 MCD和客戶機之間的同步操作,例如使音樂庫、日歷等同步。關于 數(shù)字資源或數(shù)據(jù)的同步的附加細節(jié)可在2002年10月21日提交的、 名稱為"INTELLIGENT INTERACTION BETWEEN MEDIA PLAYER AND HOST COMPUTER"的美國專利申請No. 10/277418中找到,該專利申請的內(nèi)容在此通過引用并入。在MCD連接到客戶機時的某時刻,將執(zhí)行軟件更新。以安全的 方式執(zhí)行軟件更新。因此,根據(jù)移動客戶機連接處理600, MCD將從 客戶機接收加密的軟件模塊。移動客戶機連接處理600包括判定608, 判定608確定是否已經(jīng)接收到加密的軟件模塊。當判定608確定已經(jīng) 在MCD接收到加密的軟件模塊時,加密的軟件模塊被存儲610在 MCD的存儲器內(nèi)。存儲器可具有許多不同類型,包括閃速存儲器、 盤驅(qū)動存儲器等。在框610之后或在沒有接收到加密軟件模塊時的判 定608之后,移動客戶機連接處理600結(jié)束。圖7A和7B是根據(jù)本發(fā)明一個實施例的移動客戶機斷開連接處 理700的流程圖。例如由根據(jù)本發(fā)明 一個實施例運行的便攜式客戶機 執(zhí)行移動客戶機斷開連接處理700。例如,便攜式客戶機可以是移動 客戶機設備(MCD)。作為示例,參考圖1A, MCD可屬于移動客 戶機設備110或在其上執(zhí)行的軟件應用。移動客戶機斷開連接處理700從判定702開始,判定702確定 MCD是否已經(jīng)從客戶機斷開連接。當判定702確定MCD尚未從客 戶機斷開連接時,移動客戶機斷開連接處理700等待這樣的斷開連接。 換言之, 一旦MCD從客戶機斷開連接,移動客戶機斷開連接處理700 就開始。因此,當判定702確定MCD已經(jīng)從客戶機斷開連接時,判 定704確定在MCD是否存在加密的軟件模塊。這里,如圖6中的框 610所示,移動客戶機連接處理600進行操作以將合適的加密的軟件 模塊存儲到MCD上。這里,在判定704處,進行加密的軟件模塊是 否已經(jīng)存儲在MCD上的確定。當判定704確定加密的軟件模塊已經(jīng)存儲在MCD上時,利用設 置在MCD內(nèi)的私鑰來解密706加密的軟件模塊。這里,如上所述, MCD包括一對密鑰。這些密鑰包括上述公鑰以及一私鑰。加密軟件 模塊的解密是利用所需的私鑰執(zhí)行的。因此,僅當加密的軟件模塊是 為用在該MCD上而被加密的時候,該加密的軟件模塊才能夠被正確 地解密。換言之,軟件模塊的加密是利用公鑰執(zhí)行的,所述公鑰是存儲在MCD內(nèi)的私鑰的對應物。假定解密706成功,則可對軟件模塊進行驗證700。在一個實施 例中,可利用數(shù)字簽名來驗證700軟件模塊。通過對數(shù)字簽名的驗證, 建立軟件模塊的有效性。例如,MCD的制造商能夠在軟件模塊被允 許用在MCD上之前確保軟件模塊是可信的(即,得到制造商的批準)。 然后判定710確定軟件模塊是否有效。這里,要想是有效的,軟件模 塊必須不僅被正確地解密而且還要被成功地認證。當判定710確定軟件模塊有效時,判定712確定軟件模塊是否適 于MCD。這里,當軟件模塊與MCD緊密聯(lián)系時,軟件模塊可被確 定為適于該MCD。當軟件模塊適于與MCD —起使用時,軟件模塊 可正確地緊密聯(lián)系。例如,判定702可確定軟件模塊是否適于用在 MCD的該型號和/或硬件平臺上。作為一具體示例,軟件模塊可包括 一個或更多個用于MCD的型號和/或硬件平臺的標識符,且這些標識 符能夠與存儲在MCD中的類似標識符相比較。當判定712確定軟件模塊適于MCD時,可將軟件模塊安裝714 到MCD上。接下來,判定716確定軟件模塊的安裝是否成功。當判 定716確定安裝尚未成功時,安裝714可被重復。然而,如果軟件模 塊的安裝反復失敗,則移動客戶機斷開連接處理700會在沒有安裝軟 件模塊的情況下結(jié)束。另一方面,當判定716確定軟件模塊已經(jīng)成功 安裝到MCD上時,未安裝的軟件模塊可被刪除718。這里,未安裝 的軟件模塊被存儲在MCD的存儲器內(nèi)(例如,圖6中的框610); 因此,將未安裝的軟件模塊刪除718是出于安全原因以及為了釋放 MCD的存儲器。另外,MCD的當前版本指示符被更新720。當前版 本指示符的更新720是適當?shù)模驗镸CD上的軟件模塊已經(jīng)被更新 并且由此現(xiàn)在是當前版本的軟件模塊。存儲的當前版本指示符也有助 于將當前版本信息提供到客戶機,如上所述(例如圖6中的框604)。 在框720之后以及在估計的條件不存在時的判定704、 710和712中 任一個之后,移動客戶機斷開連接處理700完成并結(jié)束。關于認證,銷售商可使用例如通過數(shù)字簽名對軟件模塊進行的認證(如上所述)。例如,可針對第一銷售商實現(xiàn)更新的軟件模塊,但 是第二銷售商可能要求軟件模塊在被安裝到或以其它方式提供給電 子設備之前得到他們的批準。例如,如果第一銷售商是軟件供應商而 第二銷售商是硬件平臺供應商,那么第 一銷售商可將更新的軟件模塊 以安全的方式提供給電子設備,但是笫二銷售商可能要求軟件模塊在 安裝到電子設備之前要進行認證或驗證。另外,除了第一銷售商提供 的任何加密之外,第二銷售商可能提供其自己的密碼等級。因此,在 一個實施方式中,在客戶機可得到軟件模塊之前,可將第一銷售商的 軟件模塊打包成帶有第二銷售商的數(shù)字簽名和/或加密。如上所述,密鑰能夠用于確保和控制軟件更新處理。為了附加的 安全或性能的原因,可使用密鑰的組合。結(jié)果,就使用公鑰而言,公 鑰不需要用來直接加密軟件模塊。在一個實施例中,加密處理如下進 行。首先,生成一隨機密鑰(隨機鑰)。作為示例,隨機密鑰可以是128位AES密鑰,其是隨機對稱密鑰。首先使用隨機密鑰來加密軟件 模塊。這產(chǎn)生加密的軟件模塊。另外,利用有電子設備提供的公鑰來 加密隨機密鑰。這產(chǎn)生加密的密鑰。在一個示例中,加密的密鑰是1024 位RSA密鑰。在此實施例中,電子設備(例如MCD)接收第一電子 文件內(nèi)的加密的軟件模塊,并且接收第二電子文件內(nèi)的加密的密鑰。 此后,為了將軟件模塊安裝到電子設備上,利用駐留在電子設備內(nèi)的 私鑰來解密第二電子文件內(nèi)的加密的密鑰。得到的密鑰是所述隨機密 鑰,該隨機密鑰然后可用于解密第一電子文件內(nèi)的加密的軟件模塊。 然后,軟件模塊是"明文的,,(即未加密的),并且可被安裝到電子設 備上。根據(jù)本發(fā)明的軟件模塊更新能夠以自動的方式提供。即,當客戶 機可操作地連接到服務器時,服務器能夠在沒有客戶機用戶參與的情 況下向客戶機提供任何更新的軟件模塊。另選地,在另一個實施例中, 可在客戶機(例如便攜式電子設備)處向用戶提示允許安裝更新的軟 件模塊。本發(fā)明的不同方面、實施例、實施方式或特征能夠單獨使用或者任意組合地使用。本發(fā)明優(yōu)選由軟件實現(xiàn),但是也能夠以硬件或硬件和軟件的組合 實現(xiàn)。本發(fā)明也能夠被實施為計算機可讀介質(zhì)上的計算機可讀代碼。 計算機可讀介質(zhì)是能夠存儲之后可由計算機系統(tǒng)讀取的數(shù)據(jù)的任何數(shù)據(jù)存儲設備。計算機可讀介質(zhì)的示例包括只讀存儲器、隨機存取 存儲器、CD-ROM、 DVD、磁帶、光學數(shù)據(jù)存儲設備和載波。計算機 可讀介質(zhì)也可分布在網(wǎng)絡連接的計算機系統(tǒng)上,從而以分布式方式存 儲和執(zhí)行計算機可讀代碼。本發(fā)明的優(yōu)點眾多。不同的方面、實施例或?qū)嵤┓绞娇梢援a(chǎn)生以 下優(yōu)點中的一個或多個優(yōu)點。本發(fā)明的一個優(yōu)點是能夠以安全的方 式通過網(wǎng)絡執(zhí)行軟件更新。軟件更新的安全性質(zhì)防止了軟件的反向工 程。例如,所加入的安全性確保了在軟件正被傳送到電子設備時防止 對軟件的未授權攔截和檢查。本發(fā)明的另 一個優(yōu)點是電子設備使用的 軟件能夠逐個模塊地被更新,這在電子設備使用來自于不同銷售商的 軟件或硬件的情況下特別有用。本發(fā)明的又一個優(yōu)點是軟件更新能夠 以自動的方式執(zhí)行,且由此電子設備的用戶無需承擔軟件更新的負 擔。根據(jù)書面的說明書,本發(fā)明的許多特征和優(yōu)點變得明顯。此外, 由于本領域技術人員可以容易地想到許多修改和變化,因此本發(fā)明不 應限于所例示和描述的確切構(gòu)造和操作。因此,所有合適的修改和等 同物都可凈皮^L為落在本發(fā)明的范圍內(nèi)。
權利要求
1、一種用于對至少部分地根據(jù)軟件運行的電子設備上的軟件進行升級的方法,所述方法包括以下步驟(a)將設備信息發(fā)送到主機設備;(b)在電子設備處接收加密的軟件模塊,所述加密的軟件模塊先前在主機設備處被加密,專門供該電子設備使用;(c)在電子設備處對加密的軟件模塊進行解密;以及(d)此后將軟件模塊安裝在電子設備上。
2、 根據(jù)權利要求1所述的方法, 其中所述設備信息包括密鑰,并且 其中所接收的加密的軟件模塊已經(jīng)利用所述密鑰被加密。
3、 根據(jù)權利要求2所述的方法, 其中所述密鑰是與電子設備相關聯(lián)的公鑰,并且其中所接收的加密的軟件模塊已經(jīng)直接或間接利用所述公鑰被加密。
4、 根據(jù)權利要求3所述的方法,其中所述解密步驟(c)是直接 或間接利用存儲在電子設備內(nèi)的私有密鑰進行的。
5、 根據(jù)權利要求1所述的方法,其中所迷密鑰是與電子設備相 關聯(lián)的/>鑰,并且其中所接收的加密的軟件模塊已經(jīng)利用隨機生成的密鑰被加密, 并且該隨才幾生成的密鑰利用所述z厶鑰#皮加密。
6、 根據(jù)權利要求5所述的方法,其中所述解密步驟(c)最初利 用存儲在電子設備內(nèi)的私有密鑰對加密的隨機生成的密鑰進行解密, 然后利用該隨機生成的密鑰對加密的軟件模塊進行解密。
7、 根據(jù)權利要求1所述的方法,其中所述設備信息包括版本指 示符,以及制造商信息、型號信息或硬件平臺信息中的一個或更多個。
8、 根據(jù)權利要求1所述的方法,其中所述主機設備是服務器計 算機或客戶機計算機,并且其中所述電子設備是移動電話、個人數(shù)字助理或媒體播放器。
9、 根據(jù)權利要求1所述的方法,其中所述方法是在沒有請求軟 件升級的用戶交互的情況下自動執(zhí)行的。
10、 一種用于對便攜式電子設備上的軟件進行升級的方法,所述 方法包括以下步驟發(fā)送步驟,將設備信息發(fā)送到主機設備,所述設備信息包括設備 描述信息、公共密鑰和當前版本指示符;接收步驟,在便攜式電子設備處接收加密的軟件模塊,所述加密 的軟件模塊是如下獲得的基于設備描述信息和當前版本指示符選擇 對于主機設備可用的軟件模塊,然后利用由便攜式電子設備提供的公 共密鑰對其進行加密;解密步驟,利用便攜式電子設備所知的私有密鑰在便攜式電子設 備處對加密的軟件模塊進行解密;認證步驟,對解密的軟件模塊進行認證;以及安裝步驟,在所述解密步驟和所述認證步驟已經(jīng)成功完成之后, 將軟件模塊安裝在便攜式電子設備上。
11、 根據(jù)權利要求10所述的方法,其中所述發(fā)送步驟和所述接 收步驟是在便攜式電子設備可操作地連接到主機設備的時候執(zhí)行的。
12、 根據(jù)權利要求11所述的方法,其中所述解密步驟、所述認 證步驟和所述安裝步驟是在便攜式電子設備已從主機設備斷開連接 之后執(zhí)行的。
13、 根據(jù)權利要求10所述的方法,所述方法還包括 識別步驟,識別便攜式電子設備已從主機設備斷開連接;并且 僅在所述識別步驟識別出便攜式電子設備已從主機設備斷開連接之后,才執(zhí)行所述解密步驟。
14、 根據(jù)權利要求10所述的方法,其中所述方法還包括 在所述安裝步驟之后,更新當前版本指示符。
15、 根據(jù)權利要求10所述的方法,其中所述私有密鑰對于便攜 式電子設備是唯一的。
16、 根據(jù)權利要求10所述的方法,其中對解密的軟件模塊進行 的所述認證使用了數(shù)字簽名。
17、 一種計算機可讀介質(zhì),其至少包括用于升級計算設備上的軟 件的計算機程序代碼,所述計算機可讀介質(zhì)包括用于將設備信息發(fā)送到主機設備的計算機程序代碼,所述設備信 息包括設備描述信息、第一密鑰和當前版本指示符;用于在計算設備處接收加密的軟件模塊的計算機程序代碼,所述 加密的軟件模塊是如下獲得的基于設備描述信息和當前版本指示符 選擇對于主機設備可用的軟件模塊,然后利用由計算設備提供的第一密鑰對其進行加密;用于利用計算設備所知的第二密鑰在計算設備處對加密的軟件模塊進行解密的計算機程序代碼;用于對解密的軟件模塊進行認證的計算機程序代碼;和 用于在所述解密和所述認證已經(jīng)成功完成后將軟件模塊安裝在計算設備上的計算機程序代碼。
18、 根據(jù)權利要求17所述的計算機可讀介質(zhì),其中所述計算設 備是便攜式計算設備。
19、 根據(jù)權利要求18所述的計算機可讀介質(zhì),其中所述便攜式 計算設備是移動電話、個人數(shù)字助理或媒體播放器。
20、 一種用于對便攜式電子設備上的軟件模塊進行升級的方法, 所述方法包括以下步驟接收步驟,在基于網(wǎng)絡的服務器設備處接收設備信息,所述設備 信息與便攜式電子設備相關并且包括設備描述信息、公共密鑰和便攜 式電子設備上的軟件模塊的當前版本指示符;確定步驟,確定是否可從服務器設備得到軟件模塊的更新版本, 所述確定步驟基于與便攜式電子設備相關的設備描述信息;加密步驟,當所述確定步驟確定出可從服務器設備得到軟件模塊 的更新版本時,對軟件模塊的更新版本進行加密,所述加密步驟利用 了由便攜式電子設備提供的公共密鑰;以及傳送步驟,將加密的軟件模塊傳送到便攜式電子設備。
21、 根據(jù)權利要求20所述的方法,其中所述方法還包括 在便攜式電子設備處接收加密的軟件模塊; 訪問駐留在便攜式客戶機設備上的私有密鑰;以及利用所述私有密鑰在便攜式電子設備處對加密的軟件模塊進行解密。
22、 根據(jù)權利要求21所述的方法,其中所述方法還包括 在所述解密已經(jīng)成功完成之后,將軟件模塊安裝在電子設備上。
23、 根據(jù)權利要求21所述的方法,其中所述方法還包括 對解密的軟件模塊進行認證;以及在所述解密和所述認證已經(jīng)成功完成之后,將軟件模塊安裝在電 子設備上。
24、 根據(jù)權利要求20所述的方法,其中所述加密步驟包括(i)利用隨機密鑰對軟件模塊的更新 版本進行加密;和(ii)利用公共密鑰對該隨機密鑰進行加密,其中所述傳送步驟用來傳送加密的軟件模塊和加密的隨機密鑰。
25、 根據(jù)權利要求24所述的方法,其中所述方法還包括 在便攜式電子設備處接收加密的軟件模塊和加密的隨機密鑰; 訪問駐留在便攜式客戶機設備上的私有密鑰; 利用私有密鑰對加密的隨機密鑰進行解密以提供所獲取的隨機密鑰;以及利用所獲取的隨機密鑰在便攜式電子設備處對加密的軟件模塊 進行解密。
26、 根據(jù)權利要求25所述的方法,其中所述方法還包括 在所述解密已經(jīng)成功完成之后,將軟件模塊安裝在電子設備上。
27、 一種計算機可讀介質(zhì),其至少包括用于升級計算設備上的軟 件模塊的計算機程序代碼,所述計算機可讀介質(zhì)包括用于在基于網(wǎng)絡的服務器設備處接收設備信息的計算機程序代 碼,所述設備信息與計算設備相關并且包括設備描述信息、密鑰和計算設備上的軟件模塊的當前版本指示符;用于確定是否可從服務器設備得到軟件模塊的更新版本的計算 機程序代碼,所述確定基于與計算設備相關的設備描述信息;用于當所述確定確定出可從服務器設備得到軟件模塊的更新版 本時,對軟件模塊的更新版本進行加密的計算機程序代碼,所述加密 使用了由計算設備提供的密鑰;和用于將加密的軟件模塊發(fā)送到計算設備的計算機程序代碼。
28、 一種計算機可讀介質(zhì),其至少包括用于升級電子設備上的軟 件的計算機程序代碼,所述計算機可讀介質(zhì)包括用于在主機設備處識別用于電子設備的更新軟件模塊的計算機 程序代碼;用于對用在電子設備上的更新軟件模塊進行加密的計算機程序代碼;用于將加密的軟件模塊發(fā)送到電子設備的計算機程序代碼; 用于在電子設備處對加密的軟件模塊進行解密的計算機程序代 碼;和用于將軟件模塊安裝在電子設備上的計算機程序代碼。
29、 根據(jù)權利要求28所述的計算機可讀介質(zhì), 其中所述計算機可讀介質(zhì)還包括用于接收與電子設備相關的設備信息的計算機程序代碼,并且其中由用于識別的所述計算機程序代碼進行的對用于電子設備 的軟件模塊的識別依賴于所述設備信息。
30、 一種基于網(wǎng)絡的軟件更新系統(tǒng),包括多個移動客戶機設備,每個移動客戶機設備根據(jù)駐留在相應移動 客戶機設備上的至少 一個軟件模塊運行;可訪問多個軟件模塊的服務器設備,每個軟件模塊供所述多個移 動客戶機設備中的特定一個或多個使用;和可與服務器設備和移動客戶機設備可操作地連接的至少一個客戶機設備,所迷客戶機設備運行用于數(shù)字媒體資源的媒體管理應用, 其中所述數(shù)字媒體資源由具有至少一個軟件模塊的數(shù)字權限管理庫進行保護,并且其中客戶機設備在第一數(shù)據(jù)鏈路上與服務器設備進行交互以檢索用于待被更新的移動客戶機設備的更新軟件模塊,該更新軟件模塊 屬于數(shù)字權限管理庫,并且其中此后客戶機設備與移動客戶機設備在 第二數(shù)據(jù)鏈路上進行交互以將該更新軟件模塊提供給待被更新的移 動客戶才幾設備。
31、根據(jù)權利要求30所述的基于網(wǎng)絡的軟件更新系統(tǒng),其中移動客戶機設備隨后用更新軟件模塊來替換現(xiàn)有的軟件。
全文摘要
本發(fā)明涉及安全的軟件更新。公開了用于更新電子設備內(nèi)已在使用的軟件的改進技術。在一個實施例中,軟件能夠使用密碼術以安全和受控的方式被更新。更新軟件的真?zhèn)渭捌鋵τ谔囟娮釉O備的適當性能夠在更新之前被確認。軟件能夠逐個模塊地更新。在一個實施例中,服務器容納用于不同電子設備的軟件更新,并且將合適的軟件更新通過數(shù)據(jù)網(wǎng)絡提供給電子設備。
文檔編號G06F21/00GK101258505SQ200680032530
公開日2008年9月3日 申請日期2006年7月26日 優(yōu)先權日2005年7月26日
發(fā)明者A·沃德, C·R·溫索基 申請人:蘋果公司