用于更新只讀系統(tǒng)映像內(nèi)的系統(tǒng)級服務的系統(tǒng)和方法
【專利說明】
【背景技術】
[0001]移動設備運營商和制造商通常會運送帶有只讀出廠設置系統(tǒng)映像的移動計算設備。這些系統(tǒng)映像一般包括運行及操作移動計算設備所需的設置、配置、軟件、操作系統(tǒng)等等。在一些情況下,設備運營商和制造商可允許所選的開發(fā)者(如安全軟件供應商)在該圖像中嵌入服務。雖然開發(fā)者可以通過運營商或制造商的空中下載(OTA)更新來更新這些服務,但是此更新過程可能既麻煩又緩慢,并且可能無法讓開發(fā)者及時修復嚴重的漏洞。此外,由于OTA更新往往涉及重新閃存設備,因此該更新過程可能意味著要承擔固有的風險,這有可能導致更新失敗,進而可能會使得設備不可用并且/或者造成設備上的關鍵應用程序發(fā)生故障。最后,雖然開發(fā)者可以為已重裝或“已獲取系統(tǒng)權限”的系統(tǒng)映像提供更新,但該過程可能損害設備完整性,并且在一些情況下,阻止已獲取系統(tǒng)權限的設備連接到運營商網(wǎng)絡。
[0002]因此,本公開認識到需要更新只讀系統(tǒng)映像內(nèi)系統(tǒng)級服務的更加快速有效的機制并解決了這一需求。
【發(fā)明內(nèi)容】
[0003]如將在下文更加詳細地描述,本發(fā)明整體涉及用于通過執(zhí)行來自可寫分區(qū)的對系統(tǒng)級服務的更新,而非執(zhí)行存儲在只讀系統(tǒng)映像中的系統(tǒng)級服務來更新存儲在只讀系統(tǒng)映像中的系統(tǒng)級服務的系統(tǒng)和方法。在一個例子中,用于完成這種任務的計算機實現(xiàn)的方法可包括:(I)在移動計算設備初始化期間,執(zhí)行存儲在位于移動計算設備上的只讀系統(tǒng)映像內(nèi)的更新服務,(2)通過該更新服務,識別位于移動計算設備上的可寫分區(qū),(3)通過該更新服務,為至少一個系統(tǒng)級服務識別在可寫分區(qū)內(nèi)的數(shù)字簽名更新,該至少一個系統(tǒng)級服務存儲在只讀系統(tǒng)映像中,并且被配置為在移動計算設備初始化期間被加載,以及然后(4)通過該更新服務,執(zhí)行可寫分區(qū)內(nèi)的數(shù)字簽名更新而非執(zhí)行存儲在只讀系統(tǒng)映像中的系統(tǒng)級服務。
[0004]在一些例子中,該計算機實現(xiàn)的方法還可包括:(I)從遠程服務器中檢索該數(shù)字簽名更新,以及(2)將該數(shù)字簽名更新存儲在可寫分區(qū)內(nèi)的預定義位置中。在至少一個實施例中,該方法還可包括(I)定期搜索可寫分區(qū)中的更新并且/或者(2)定期查詢遠程服務器中的更新。
[0005]該計算機實現(xiàn)的方法還可包括,先通過驗證數(shù)字簽名更新的數(shù)字簽名來確定數(shù)字簽名更新是安全的,再執(zhí)行數(shù)字簽名更新。在至少一個例子中,驗證數(shù)字簽名更新的數(shù)字簽名可包括驗證該數(shù)字簽名更新的真實性和/或完整性。
[0006]在一些實施例中,該計算機實現(xiàn)的方法還可包括,識別系統(tǒng)級服務的數(shù)字簽名更新后,終止系統(tǒng)級服務并執(zhí)行數(shù)字簽名更新。在一個例子中,執(zhí)行數(shù)字簽名更新可包括:(I)立即執(zhí)行數(shù)字簽名更新以及/或者(2)當移動計算設備初始化時,執(zhí)行數(shù)字簽名更新。
[0007]在該計算機實現(xiàn)的方法的一些例子中,更新服務可包括系統(tǒng)級服務的父進程。在這些例子中,該計算機實現(xiàn)的方法還可包括,在識別系統(tǒng)級服務的數(shù)字簽名更新之前,(I)通過更新服務,為更新服務識別其在可寫分區(qū)內(nèi)的數(shù)字簽名更新,(2)通過更新服務,為更新服務驗證數(shù)字簽名更新,以及然后(3)通過更新服務,為更新服務執(zhí)行數(shù)字簽名更新。
[0008]在該計算機實現(xiàn)的方法的一個實施例中,識別數(shù)字簽名更新可包括通過更新服務從(I)系統(tǒng)級服務和/或(2)附加服務接收數(shù)字簽名更新的通知。該計算機實現(xiàn)的方法還可包括:(I)通過更新服務,識別至少一個附加系統(tǒng)級服務的更新,(2)通過更新服務確定,因為無法驗證附加系統(tǒng)級服務的更新的數(shù)字簽名,所以附加系統(tǒng)級服務的更新是不安全的,以及(3)通過更新服務,執(zhí)行附加系統(tǒng)級服務,而非執(zhí)行附加系統(tǒng)級服務的更新。
[0009]在一個實施例中,該計算機實現(xiàn)的方法還可包括(I)檢測在更新服務執(zhí)行數(shù)字簽名更新之后移動計算設備初始化失敗,以及然后(2)將有關初始化失敗的信息存儲到可寫分區(qū)內(nèi)的日志中。當移動計算設備重新初始化時,該方法還可包括(3)根據(jù)存儲在日志中的信息,確定系統(tǒng)級服務的數(shù)字簽名更新造成初始化失敗,以及(4)執(zhí)行存儲在只讀系統(tǒng)映像中的系統(tǒng)級服務,而非執(zhí)行可寫分區(qū)內(nèi)的數(shù)字簽名更新。
[0010]在一個實施例中,用于實施上述方法的系統(tǒng)可包括初始化模塊,該初始化模塊在移動計算設備初始化期間執(zhí)行存儲在位于移動計算設備上的只讀系統(tǒng)映像內(nèi)的更新服務。更新服務可包括識別位于移動計算設備上的可寫分區(qū)的分區(qū)模塊。更新服務還可包括識別模塊,該識別模塊為至少一個系統(tǒng)級服務識別其在可寫分區(qū)內(nèi)的數(shù)字簽名更新,該至少一個系統(tǒng)級服務存儲在只讀系統(tǒng)映像中,并且被配置為在移動計算設備初始化期間被加載。更新服務還可包括執(zhí)行模塊,該執(zhí)行模塊執(zhí)行可寫分區(qū)內(nèi)的數(shù)字簽名更新,而非執(zhí)行存儲在只讀系統(tǒng)映像中的系統(tǒng)級服務。該系統(tǒng)還可包括至少一個物理處理器,該至少一個物理處理器被配置為執(zhí)行初始化模塊和更新服務的各個模塊。
[0011]相應計算機可讀介質(zhì)可包括一個或多個計算機可讀指令,當由計算設備的至少一個處理器執(zhí)行時,這些計算機可讀指令可使計算設備在移動計算設備初始化期間執(zhí)行存儲在位于移動計算設備上的只讀系統(tǒng)映像內(nèi)的更新服務。這些計算機可讀指令還可使計算設備通過更新服務識別位于移動計算設備上的可寫分區(qū)。這些計算機可讀指令還可使得計算設備通過更新服務為至少一個系統(tǒng)級服務識別其在可寫分區(qū)內(nèi)的數(shù)字簽名更新,該至少一個系統(tǒng)級服務存儲在只讀系統(tǒng)映像中,并且被配置為在移動計算設備初始化期間被加載。此外,這些計算機可讀指令可使計算設備通過更新服務執(zhí)行可寫分區(qū)內(nèi)的數(shù)字簽名更新,而非執(zhí)行存儲在只讀系統(tǒng)映像中的系統(tǒng)級服務。
[0012]來自上述實施例中的任何一者的特征可根據(jù)本文所述的一般原理彼此結(jié)合地使用。通過結(jié)合附圖和權利要求閱讀下面的詳細描述,將會更充分地理解這些和其他實施例、特征和優(yōu)點。
【附圖說明】
[0013]附圖示出了多個示例性實施例并且為說明書的一部分。這些附圖結(jié)合下面的描述展示并且說明本發(fā)明的各種原理。
[0014]圖1為用于更新只讀系統(tǒng)映像內(nèi)的系統(tǒng)級服務的示例性系統(tǒng)的框圖。
[0015]圖2為能夠更新只讀系統(tǒng)映像內(nèi)的系統(tǒng)級服務的示例性移動計算設備的框圖。
[0016]圖3為用于更新只讀系統(tǒng)映像內(nèi)的系統(tǒng)級服務的示例性方法的流程圖。
[0017]圖4為用于更新只讀系統(tǒng)映像內(nèi)的系統(tǒng)級服務的示例性多分區(qū)存儲設備的框圖。
[0018]圖5為能夠?qū)嵤┍疚拿枋龊?或示出的實施例中的一者或多者的示例性計算系統(tǒng)的框圖。
[0019]圖6為能夠?qū)嵤┍疚拿枋龊?或示出的實施例中的一者或多者的示例性計算網(wǎng)絡的框圖。
[0020]在全部附圖中,相同引用字符和描述指示類似但未必相同的元件。雖然本文所述的示例性實施例易受各種修改和替代形式的影響,但在附圖中以舉例的方式示出了特定實施例并且將在本文詳細描述。然而,本文所述的示例性實施例并非旨在限于所公開的特定形式。相反,本發(fā)明涵蓋落在所附權利要求范圍內(nèi)的所有修改形式、等同形式和替代形式。
【具體實施方式】
[0021]本發(fā)明整體涉及用于更新只讀系統(tǒng)映像內(nèi)的系統(tǒng)級服務的系統(tǒng)和方法。如將在下文更加詳細地闡釋,本文所述的系統(tǒng)和方法可為更新存儲在只讀系統(tǒng)映像內(nèi)的原生可執(zhí)行文件提供及時有效的進程。具體地講,通過將原生可執(zhí)行文件的更新存儲在可寫分區(qū)內(nèi),然后執(zhí)行這些更新,而非執(zhí)行存儲在只讀系統(tǒng)映像內(nèi)的原始原生可執(zhí)行文件,本文所述的系統(tǒng)和方法可避免有風險的更新進程(例如OTA更新),并且可為開發(fā)者提供可在未獲取系統(tǒng)權限、未改變或未損害只讀系統(tǒng)映像完整性的情況下執(zhí)行的安全且易于使用的進程。
[0022]下文將結(jié)合圖1至圖2提供用于更新只讀系統(tǒng)映像內(nèi)的系統(tǒng)級服務的示例性系統(tǒng)的詳細描述。也將結(jié)合圖3和圖4提供相應計算機實現(xiàn)方法的詳細描述。此外,將分別結(jié)合圖5和圖6提供能夠?qū)崿F(xiàn)本文所述實施例中的一者或多者的示例性計算系統(tǒng)和網(wǎng)絡體系結(jié)構的詳細描述。
[0023]圖1為用于更新只讀系統(tǒng)映像內(nèi)的系統(tǒng)級服務的示例性系統(tǒng)100的框圖。如該圖所示,示例性系統(tǒng)100可包括用于執(zhí)行一個或多個任務的一個或多個模塊102。例如,以及如將在下文更加詳細地闡釋,示例性系統(tǒng)100可包括初始化模塊104,該初始化模塊在移動計算設備初始化期間執(zhí)行存儲在位于移動計算設備上的只讀系統(tǒng)映像內(nèi)的更新服務。示例性系統(tǒng)100還可包括分區(qū)模塊106,該分區(qū)模塊識別位于移動計算設備上的可寫分區(qū)。此外,示例性系統(tǒng)100可包括識別模塊108,該識別模塊為至少一個系統(tǒng)級服務識別其在可寫分區(qū)內(nèi)的數(shù)字簽名更新,該至少一個系統(tǒng)級服務存儲在只讀系統(tǒng)映像中,并且被配置為在移動計算設備初始化期間被加載。示例性系統(tǒng)100還可包括驗證模塊110,該驗證模塊通過驗證數(shù)字簽名更新的數(shù)字簽名來確定數(shù)字簽名更新是安全的。示例性系統(tǒng)100還可包括執(zhí)行模塊112,該執(zhí)行模塊執(zhí)行可寫分區(qū)內(nèi)的數(shù)字簽名更新,而非執(zhí)行存儲在只讀系統(tǒng)映像中的系統(tǒng)級服務。
[0024]在一些實施例中,示例性系統(tǒng)100還可包括檢索模塊114,該檢索模塊從遠程服務器中檢索數(shù)字簽名更新,并將該數(shù)字簽名更新存儲在可寫分區(qū)內(nèi)的預定義位置中。示例性系統(tǒng)100還可包括故障安全模塊116,該故障安全模塊避免執(zhí)行阻止移動計算設備初始化的數(shù)字簽名更新。盡管例示為獨立元件,但圖1中的模塊102中的一者或多者可表示單個模塊或應用程序的部分。
[0025]在某些實施例中,圖1中的模塊102中的一者或多者可表不一個或多個軟件應用程序或程序,當通過計算設備執(zhí)行時所述軟件應用程序或程序可使計算設備執(zhí)行一個或多個任務。例如,并且如將在下文更詳細地描述,模塊102中的一者或多者可表示存儲并且被配置為在一個或多個計算設備上運行的軟件模塊,所述計算設備諸如為圖2中示出的設備(例如,移動計算設備202和/或更新服務器206)、圖5中的計算系統(tǒng)510和/或圖6中的示例性網(wǎng)絡體系結(jié)構600的部分。圖1中的模塊102中的一者或多者也可表示被配置為執(zhí)行一個或多個任務的一臺或多臺專用計算機的全部或部分。
[0026]如圖1所示,示例性系統(tǒng)100還可包括一個或多個數(shù)據(jù)庫,諸如更新數(shù)據(jù)庫120。在一個例子中,更新數(shù)據(jù)庫120可被配置為存儲系統(tǒng)級服務的更新,所述系統(tǒng)級服務存儲在移動計算設備(諸如圖2中的移動計算設備202)上的只讀系統(tǒng)映像中。在至少一個實施例中,更新數(shù)據(jù)庫120可表示存儲在更新服務器206上的數(shù)據(jù)庫,而更新服務器206可被配置為經(jīng)由網(wǎng)絡204向移動計算設備202提供更新。
[0027]更新數(shù)據(jù)庫120可表示單個數(shù)據(jù)庫或計算設備的組成部分或者多個數(shù)據(jù)庫或計算設備。例如,更新數(shù)據(jù)庫120可表示圖2中更新服務器206的一部分、圖5中計算系統(tǒng)510,和/或圖6中示例性網(wǎng)絡體系結(jié)構600的多個部分。作為另外一種選擇,圖1中的更新數(shù)據(jù)庫120可表示能夠通過計算