首页 / 专利库 / 软件 / 引导装载程序 / 用于更新只读系统映像内的系统级服务的系统和方法

用于更新只读系统映像内的系统级服务的系统和方法

阅读:302发布:2020-05-12

专利汇可以提供用于更新只读系统映像内的系统级服务的系统和方法专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种用于更新只读系统映像内的系统级服务的计算机实现的方法,所述方法可包括(1)在移动计算设备初始化期间,执行存储在位于所述移动计算设备上的只读系统映像内的更新服务,(2)通过所述更新服务,识别位于所述移动计算设备上的可写分区,(3)通过所述更新服务,为存储在所述只读系统映像内的至少一个系统级服务识别其在所述可写分区内的数字签名更新,以及(4)通过所述更新服务,执行所述可写分区内的所述数字签名更新,而非执行存储在所述只读系统映像内的所述系统级服务。还公开了各种其他方法、系统和计算机可读介质。,下面是用于更新只读系统映像内的系统级服务的系统和方法专利的具体信息内容。

1.一种用于更新只读系统映像内的系统级服务的计算机实现的方法,所述方法的至少一部分由包括至少一个处理器的移动计算设备来执行,所述方法包括:
从远程服务器中检索存储在位于所述移动计算设备上的只读系统映像内的至少一个系统级服务的数字签名更新,其中:
所述系统级服务被配置为在所述移动计算设备初始化期间被加载;
所述移动计算设备包括只读分区和可写分区,所述只读分区包括所述只读系统映像;
将所述数字签名更新安装在位于所述移动计算设备上的所述可写分区内的预定义位置中而不改变其中存储了所述系统级服务的所述只读系统映像;
在所述移动计算设备初始化期间,执行存储在所述只读系统映像内的更新服务;
通过所述更新服务,执行安装了所述数字签名更新的所述可写分区内的所述数字签名更新,而非执行存储在所述只读系统映像内的所述系统级服务内的所述数字签名更新。
2.根据权利要求1所述的计算机实现的方法,其中所述系统级服务包括下列中的至少一者:
文件,所述文件被配置为在所述移动计算设备初始化期间被加载;
库,所述库被配置为在所述移动计算设备初始化期间被加载;
API,所述API被配置为在所述移动计算设备初始化期间被加载;
计算机可执行指令,所述计算机可执行指令被配置为在所述移动计算设备初始化期间被加载;
守护进程,所述守护进程被配置为在所述移动计算设备初始化期间被执行;
引导装载程序
内核驱动程序;
服务,所述服务嵌入所述只读系统映像中。
3.根据权利要求1所述的计算机实现的方法,所述方法还包括:
搜索预定义位置中的更新,并且响应于搜索预定义位置中的更新,识别所述数字签名更新;
其中执行所述可写分区内的所述数字签名更新包括响应于在搜索所述预定义位置中的所述数字签名更新之后识别所述数字签名更新,执行所述可写分区内的所述数字签名更新。
4.根据权利要求1所述的计算机实现的方法,其中:
所述移动计算设备包括ANDROID设备;
所述系统级服务包括特定于ANDROID平台的原生服务;并且
所述可写分区包括存储ANDROID更新的“/data”分区。
5.根据权利要求4所述的计算机实现的方法,其中所述只读系统映像包括存储在所述ANDROID设备的只读“/system”分区中的映像。
6.根据权利要求1所述的计算机实现的方法,所述方法还包括,在安装所述系统级服务的所述数字签名更新后,终止所述系统级服务并执行所述数字签名更新。
7.根据权利要求6所述的计算机实现的方法,其中执行所述数字签名更新包括下列中的至少一者:
立即执行所述数字签名更新;
在所述移动计算设备初始化时执行所述数字签名更新。
8.根据权利要求1所述的计算机实现的方法,其中所述更新服务包括所述系统级服务的父进程
9.根据权利要1所述的计算机实现的方法,其中执行所述数字签名更新包括使用执行模来执行所述数字签名更新,所述执行模块能够访问所述只读分区和所述可写分区。
10.根据权利要求1所述的计算机实现的方法,所述方法还包括,通过所述更新服务从以下服务中的至少一者接收所述数字签名更新的通知:
所述系统级服务;
附加服务。
11.根据权利要求1所述的计算机实现的方法,所述方法还包括:
检测在所述更新服务执行所述数字签名更新之后所述移动计算设备初始化失败;
确定所述数字签名更新造成所述初始化失败;
作为重新初始化所述移动计算设备的一部分,执行存储在所述只读系统映像的所述系统级服务,而非执行所述可写分区内的所述数字签名更新。
12.根据权利要求11所述的计算机实现的方法,所述方法还包括:
响应于检测到在所述更新服务执行所述数字签名更新之后所述移动计算设备初始化失败,将有关所述初始化失败的信息存储到所述可写分区内的日志中;
其中确定所述数字签名更新造成所述初始化失败包括基于存储在所述日志中的所述信息,确定所述数字签名更新造成所述初始化失败。
13.一种用于更新只读系统映像内的系统级服务的系统,所述系统包括:
存储在移动计算设备的存储器中的检索模块,所述检索模块:
从远程服务器中检索存储在位于所述移动计算设备上的只读系统映像内的至少一个系统级服务的数字签名更新,其中:
所述系统级服务被配置为在所述移动计算设备初始化期间被加载;
所述移动计算设备包括只读分区和可写分区,所述只读分区包括所述只读系统映像;
将所述数字签名更新安装在位于所述移动计算设备上的所述可写分区内的预定义位置中而不改变其中存储了所述系统级服务的所述只读系统映像;
存储在存储器中的初始化模块,所述初始化模块在所述移动计算设备初始化期间执行存储在所述只读系统映像内的更新服务;
存储在存储器中的执行模块,所述执行模块执行安装了所述数字签名更新的所述可写分区内的所述数字签名更新,而非执行存储在所述只读系统映像内的所述系统级服务内的所述数字签名更新;
至少一个物理处理器,所述物理处理器执行所述检索模块、所述初始化模块和所述执行模块;
其中所述更新服务包括所述执行模块。
14.根据权利要求13所述的系统,所述系统还包括:
存储在存储器中的分区模块,所述分区模块识别所述可写分区;
存储在存储器中的识别模块,所述识别模块识别所述数字签名更新;
其中所述更新服务包括所述分区模块和所述识别模块。
15.一种非暂态计算机可读介质,其包括一个或多个计算机可执行指令,当由计算设备的至少一个处理器执行时,所述指令使所述计算设备:
从远程服务器中检索存储在位于移动计算设备上的只读系统映像内的至少一个系统级服务的数字签名更新,其中:
所述系统级服务被配置为在所述移动计算设备初始化期间被加载;
所述移动计算设备包括只读分区和可写分区,所述只读分区包括所述只读系统映像;
将所述数字签名更新安装在位于所述移动计算设备上的所述可写分区内的预定义位置中而不改变其中存储了所述系统级服务的所述只读系统映像;
在所述移动计算设备初始化期间,执行存储在所述只读系统映像内的更新服务;
通过所述更新服务,执行安装了所述数字签名更新的所述可写分区内的所述数字签名更新,而非执行存储在所述只读系统映像内的所述系统级服务内的所述数字签名更新。

说明书全文

用于更新只读系统映像内的系统级服务的系统和方法

技术领域

[0001] 本发明涉及一种计算机实现的方法和系统,更具体地,涉及用于更新只读系统映像内的系统级服务的计算机实现的方法和系统。

背景技术

[0002] 移动设备运营商和制造商通常会运送带有只读出厂设置系统映像的移动计算设备。这些系统映像一般包括运行及操作移动计算设备所需的设置、配置、软件操作系统等等。在一些情况下,设备运营商和制造商可允许所选的开发者(如安全软件供应商)在该图像中嵌入服务。虽然开发者可以通过运营商或制造商的空中下载(OTA)更新来更新这些服务,但是此更新过程可能既麻烦又缓慢,并且可能无法让开发者及时修复严重的漏洞。此外,由于OTA更新往往涉及重新闪存设备,因此该更新过程可能意味着要承担固有的险,这有可能导致更新失败,进而可能会使得设备不可用并且/或者造成设备上的关键应用程序发生故障。最后,虽然开发者可以为已重装或“已获取系统权限”的系统映像提供更新,但该过程可能损害设备完整性,并且在一些情况下,阻止已获取系统权限的设备连接到运营商网络。
[0003] 因此,本公开认识到需要更新只读系统映像内系统级服务的更加快速有效的机制并解决了这一需求。

发明内容

[0004] 如将在下文更加详细地描述,本发明整体涉及用于通过执行来自可写分区的对系统级服务的更新,而非执行存储在只读系统映像中的系统级服务来更新存储在只读系统映像中的系统级服务的系统和方法。在一个例子中,用于完成这种任务的计算机实现的方法可包括:(1)在移动计算设备初始化期间,执行存储在位于移动计算设备上的只读系统映像内的更新服务,(2)通过该更新服务,识别位于移动计算设备上的可写分区,(3)通过该更新服务,为至少一个系统级服务识别在可写分区内的数字签名更新,该至少一个系统级服务存储在只读系统映像中,并且被配置为在移动计算设备初始化期间被加载,以及然后(4)通过该更新服务,执行可写分区内的数字签名更新而非执行存储在只读系统映像中的系统级服务。
[0005] 在一些例子中,该计算机实现的方法还可包括:(1)从远程服务器中检索该数字签名更新,以及(2)将该数字签名更新存储在可写分区内的预定义位置中。在至少一个实施例中,该方法还可包括(1)定期搜索可写分区中的更新并且/或者(2)定期查询远程服务器中的更新。
[0006] 该计算机实现的方法还可包括,先通过验证数字签名更新的数字签名来确定数字签名更新是安全的,再执行数字签名更新。在至少一个例子中,验证数字签名更新的数字签名可包括验证该数字签名更新的真实性和/或完整性。
[0007] 在一些实施例中,该计算机实现的方法还可包括,识别系统级服务的数字签名更新后,终止系统级服务并执行数字签名更新。在一个例子中,执行数字签名更新可包括:(1)立即执行数字签名更新以及/或者(2)当移动计算设备初始化时,执行数字签名更新。
[0008] 在该计算机实现的方法的一些例子中,更新服务可包括系统级服务的父进程。在这些例子中,该计算机实现的方法还可包括,在识别系统级服务的数字签名更新之前,(1)通过更新服务,为更新服务识别其在可写分区内的数字签名更新,(2)通过更新服务,为更新服务验证数字签名更新,以及然后(3)通过更新服务,为更新服务执行数字签名更新。
[0009] 在该计算机实现的方法的一个实施例中,识别数字签名更新可包括通过更新服务从(1)系统级服务和/或(2)附加服务接收数字签名更新的通知。该计算机实现的方法还可包括:(1)通过更新服务,识别至少一个附加系统级服务的更新,(2)通过更新服务确定,因为无法验证附加系统级服务的更新的数字签名,所以附加系统级服务的更新是不安全的,以及(3)通过更新服务,执行附加系统级服务,而非执行附加系统级服务的更新。
[0010] 在一个实施例中,该计算机实现的方法还可包括(1)检测在更新服务执行数字签名更新之后移动计算设备初始化失败,以及然后(2)将有关初始化失败的信息存储到可写分区内的日志中。当移动计算设备重新初始化时,该方法还可包括(3)根据存储在日志中的信息,确定系统级服务的数字签名更新造成初始化失败,以及(4)执行存储在只读系统映像中的系统级服务,而非执行可写分区内的数字签名更新。
[0011] 在一个实施例中,用于实施上述方法的系统可包括初始化模,该初始化模块在移动计算设备初始化期间执行存储在位于移动计算设备上的只读系统映像内的更新服务。更新服务可包括识别位于移动计算设备上的可写分区的分区模块。更新服务还可包括识别模块,该识别模块为至少一个系统级服务识别其在可写分区内的数字签名更新,该至少一个系统级服务存储在只读系统映像中,并且被配置为在移动计算设备初始化期间被加载。
更新服务还可包括执行模块,该执行模块执行可写分区内的数字签名更新,而非执行存储在只读系统映像中的系统级服务。该系统还可包括至少一个物理处理器,该至少一个物理处理器被配置为执行初始化模块和更新服务的各个模块。
[0012] 相应计算机可读介质可包括一个或多个计算机可读指令,当由计算设备的至少一个处理器执行时,这些计算机可读指令可使计算设备在移动计算设备初始化期间执行存储在位于移动计算设备上的只读系统映像内的更新服务。这些计算机可读指令还可使计算设备通过更新服务识别位于移动计算设备上的可写分区。这些计算机可读指令还可使得计算设备通过更新服务为至少一个系统级服务识别其在可写分区内的数字签名更新,该至少一个系统级服务存储在只读系统映像中,并且被配置为在移动计算设备初始化期间被加载。此外,这些计算机可读指令可使计算设备通过更新服务执行可写分区内的数字签名更新,而非执行存储在只读系统映像中的系统级服务。
[0013] 来自上述实施例中的任何一者的特征可根据本文所述的一般原理彼此结合地使用。通过结合附图权利要求阅读下面的详细描述,将会更充分地理解这些和其他实施例、特征和优点。

附图说明

[0014] 附图示出了多个示例性实施例并且为说明书的一部分。这些附图结合下面的描述展示并且说明本发明的各种原理。
[0015] 图1为用于更新只读系统映像内的系统级服务的示例性系统的框图
[0016] 图2为能够更新只读系统映像内的系统级服务的示例性移动计算设备的框图。
[0017] 图3为用于更新只读系统映像内的系统级服务的示例性方法的流程图
[0018] 图4为用于更新只读系统映像内的系统级服务的示例性多分区存储设备的框图。
[0019] 图5为能够实施本文描述和/或示出的实施例中的一者或多者的示例性计算系统的框图。
[0020] 图6为能够实施本文描述和/或示出的实施例中的一者或多者的示例性计算网络的框图。
[0021] 在全部附图中,相同引用字符和描述指示类似但未必相同的元件。虽然本文所述的示例性实施例易受各种修改和替代形式的影响,但在附图中以举例的方式示出了特定实施例并且将在本文详细描述。然而,本文所述的示例性实施例并非旨在限于所公开的特定形式。相反,本发明涵盖落在所附权利要求范围内的所有修改形式、等同形式和替代形式。

具体实施方式

[0022] 本发明整体涉及用于更新只读系统映像内的系统级服务的系统和方法。如将在下文更加详细地阐释,本文所述的系统和方法可为更新存储在只读系统映像内的原生可执行文件提供及时有效的进程。具体地讲,通过将原生可执行文件的更新存储在可写分区内,然后执行这些更新,而非执行存储在只读系统映像内的原始原生可执行文件,本文所述的系统和方法可避免有风险的更新进程(例如OTA更新),并且可为开发者提供可在未获取系统权限、未改变或未损害只读系统映像完整性的情况下执行的安全且易于使用的进程。
[0023] 下文将结合图1至图2提供用于更新只读系统映像内的系统级服务的示例性系统的详细描述。也将结合图3和图4提供相应计算机实现方法的详细描述。此外,将分别结合图5和图6提供能够实现本文所述实施例中的一者或多者的示例性计算系统和网络体系结构的详细描述。
[0024] 图1为用于更新只读系统映像内的系统级服务的示例性系统100的框图。如该图所示,示例性系统100可包括用于执行一个或多个任务的一个或多个模块102。例如,以及如将在下文更加详细地阐释,示例性系统100可包括初始化模块104,该初始化模块在移动计算设备初始化期间执行存储在位于移动计算设备上的只读系统映像内的更新服务。示例性系统100还可包括分区模块106,该分区模块识别位于移动计算设备上的可写分区。此外,示例性系统100可包括识别模块108,该识别模块为至少一个系统级服务识别其在可写分区内的数字签名更新,该至少一个系统级服务存储在只读系统映像中,并且被配置为在移动计算设备初始化期间被加载。示例性系统100还可包括验证模块110,该验证模块通过验证数字签名更新的数字签名来确定数字签名更新是安全的。示例性系统100还可包括执行模块112,该执行模块执行可写分区内的数字签名更新,而非执行存储在只读系统映像中的系统级服务。
[0025] 在一些实施例中,示例性系统100还可包括检索模块114,该检索模块从远程服务器中检索数字签名更新,并将该数字签名更新存储在可写分区内的预定义位置中。示例性系统100还可包括故障安全模块116,该故障安全模块避免执行阻止移动计算设备初始化的数字签名更新。尽管例示为独立元件,但图1中的模块102中的一者或多者可表示单个模块或应用程序的部分。
[0026] 在某些实施例中,图1中的模块102中的一者或多者可表示一个或多个软件应用程序或程序,当通过计算设备执行时所述软件应用程序或程序可使计算设备执行一个或多个任务。例如,并且如将在下文更详细地描述,模块102中的一者或多者可表示存储并且被配置为在一个或多个计算设备上运行的软件模块,所述计算设备诸如为图2中示出的设备(例如,移动计算设备202和/或更新服务器206)、图5中的计算系统510和/或图6中的示例性网络体系结构600的部分。图1中的模块102中的一者或多者也可表示被配置为执行一个或多个任务的一台或多台专用计算机的全部或部分。
[0027] 如图1所示,示例性系统100还可包括一个或多个数据库,诸如更新数据库120。在一个例子中,更新数据库120可被配置为存储系统级服务的更新,所述系统级服务存储在移动计算设备(诸如图2中的移动计算设备202)上的只读系统映像中。在至少一个实施例中,更新数据库120可表示存储在更新服务器206上的数据库,而更新服务器206可被配置为经由网络204向移动计算设备202提供更新。
[0028] 更新数据库120可表示单个数据库或计算设备的组成部分或者多个数据库或计算设备。例如,更新数据库120可表示图2中更新服务器206的一部分、图5中计算系统510,和/或图6中示例性网络体系结构600的多个部分。作为另外一种选择,图1中的更新数据库120可表示能够通过计算设备访问的一个或多个物理独立设备,诸如图2中的移动计算设备202和/或更新服务器206、图5中的计算系统510、和/或图6中示例性网络体系结构600的多个部分。
[0029] 图1中的示例性系统100可以多种方式来实现。例如,示例性系统100的全部或一部分可表示图2中的示例性系统200的部分。如图2所示,系统200可包括经由网络204与更新服务器206通信的移动计算设备202。
[0030] 在一个实施例中,当由移动计算设备202的至少一个处理器和/或更新服务器206执行时,图1中的一个或多个模块102可促进移动计算设备202和/或更新服务器206更新只读系统映像中的系统级服务。例如,以及如将在下文更加详细地描述,初始化模块104可在移动计算设备202的初始化期间使移动计算设备202执行存储在位于移动计算设备202上的只读系统映像内的更新服务。然后分区模块106可使移动计算设备202识别位于移动计算设备202上的可写分区。然后识别模块108可使移动计算设备202识别位于移动计算设备202上的可写分区内的数字签名更新208。然后验证模块110可使移动计算设备202通过验证数字签名更新208的数字签名来确定数字签名更新208是安全的。最后,执行模块112可使移动计算设备202执行可写分区内的数字签名更新208,而非执行存储在只读分区内的系统级服务。
[0031] 在一个实施例中,检索模块114可使移动计算设备202从更新服务器206中检索数字签名更新208,并将该数字签名更新存储在可写分区内的预定义位置中。此外,故障安全模块116可使移动计算设备202避免执行阻止移动计算设备202初始化的数字签名更新。
[0032] 移动计算设备202通常表示能够读取计算机可执行指令的任何类型或形式的计算设备。移动计算设备202的例子包括但不限于笔记本电脑平板电脑、蜂窝电话、个人数字助理(PDA)、多媒体播放器、嵌入式系统、这些设备中一者或多者的组合、图5中的示例性计算系统510、或任何其他合适的计算设备。
[0033] 更新服务器206通常表示能够存储系统级服务的更新,如数字签名更新208,并向移动计算设备提供所述更新的任何类型或形式的计算设备。更新服务器206的例子包括但不限于被配置为提供各种数据库服务和/或运行某些软件应用程序的应用程序服务器和数据库服务器。在至少一个例子中,响应于来自移动计算设备202的对于数字签名更新208的请求,更新服务器206可向移动计算设备202提供该数字签名更新。在另一个例子中,更新服务器206可被配置为定期向移动计算设备202提供更新。
[0034] 网络204通常表示能够促进通信或数据传输的任何介质或体系结构。网络204的例子包括但不限于内联网、广域网(WAN)、局域网(LAN)、个人区域网(PAN)、互联网、电线通信网(PLC)、蜂窝网络(例如,全球移动通信系统(GSM))、图6中的示例性网络体系结构600等等。网络204可使用无线或有线连接来促进通信或数据传输。在一个实施例中,网络204可促进移动计算设备202与更新服务器206之间的通信。
[0035] 图3为用于更新只读系统映像内的系统级服务的示例性计算机实现的方法300的流程图。图3中示出的步骤可通过任何合适的计算机可执行代码和/或计算系统执行。在一些实施例中,图3中示出的步骤可通过图1中的系统100、图2中的系统200、图4中的存储设备400、图5中的计算系统510和/或图6中的示例性网络体系结构600的部分的组件中的一者或多者执行。
[0036] 如图3所示,在步骤302中,本文所述的一个或多个系统可在移动计算设备初始化期间执行存储在位于移动计算设备上的只读系统映像内的更新服务。例如,初始化模块104可以,作为图2中移动计算设备202的一部分,在移动计算设备202的初始化期间执行存储在位于移动计算设备202上的只读系统映像内的更新服务。
[0037] 如本文所用,结合移动计算设备202使用术语“初始化”时,该术语通常是指由移动计算设备202执行的任何类型或形式的引导进程。例如,术语“初始化”可以指在移动计算设备202上执行的用于启动和/或引导移动计算设备202的任何进程的任何部分。术语“初始化”也可以指使得移动计算装置202做好准备运行操作系统中的应用程序的任何进程或进程的任何部分。
[0038] 在一些例子中,术语“初始化”可以指用于引导移动计算设备202的一系列步骤。此类步骤的例子可包括但不限于(按任何顺序)加载“引导装载程序”、进行任何类型的开机自检(POST)、加载并执行内核和/或操作系统、检测硬件设备和加载设备驱动程序、加载低级应用程序编程接口(API)及系统库、加载和执行低级系统服务(例如ANDROID设备上的Zygote服务)、执行初始化进程和/或文件(例如ANDROID设备的“init”进程和“init.rc”文件)、执行内核守护进程、装载文件系统、加载系统服务和/或核心应用程序,和/或进行初始化、配置、引导和/或运行移动计算设备202所需的任何其他合适步骤或步骤的组合。
[0039] 本文所用的短语“更新服务”一般指能够对存储在移动计算设备202上的系统级服务提供更新的任何类型的进程。在一些例子中,此更新服务可包括在一个或多个计算设备(例如更新服务器206和/或移动计算设备202)上执行的一个或多个进程和/或步骤。此更新服务还可包括用于向移动计算设备202提供更新的任何类型的文件、库、代码、系统、服务、进程等或其组合。在至少一个实施例中,此更新服务可包括由一个或多个模块102(例如分区模块106、识别模块108、验证模块110、执行模块112、检索模块114和/或故障安全模块116)执行的一个或多个步骤或进程。
[0040] 本文所用的短语“只读系统映像”一般指存储在不可写移动计算设备上的任何类型的系统映像。短语“只读系统映像”可指各种配置下的各种系统映像,例如图4中的只读系统映像404。在一些例子中,短语“只读系统映像”可指存储在移动计算设备202的只读分区(例如ANDROID的“/system”分区)上的任何类型或形式的系统映像。在这些例子中,如果没有将只读系统映像“获取系统权限”或重新装载到可写分区,则可能通常无法写入、无法修改和/或无法配置该只读系统映像。
[0041] 只读系统映像可包含引导、运行和/或一般情况下使用移动计算设备所需的文件、进程、代码、库、服务、内核、操作系统等。只读系统映像还可包含由第三方开发者(如安全软件供应商)提供的嵌入式系统级服务。在一些例子中,只读系统映像可表示已由移动计算设备202的制造商或运营商配置好的出厂映像,因此包含特定于该制造商或运营商的设置、软件、服务、驱动程序等。在一些实施例中,只读系统映像可以通过OTA更新进行更新。
[0042] 图4示出同时包含只读分区402和可写分区414的示例性存储设备400。在一个例子中,存储设备400可表示移动设备的存储设备(例如ANDROID设备中的内部存储设备),所述移动设备诸如为移动计算设备202和/或计算系统510。在该例子中,只读分区402内的只读系统映像404可包含在设备初始化期间执行和/或加载系统级服务(例如加载器服务408和/或集线器服务410,如下文所详述)的初始化文件406。如将在下文更加详细地描述,在一些例子中,加载器服务408和/或集线器服务410可表示本文所述的“更新服务”。
[0043] 本文所述的系统可以多种方式执行步骤302。在一个例子中,本文所述的系统可在整个初始化过程中初始化更新服务。例如,初始化模块104可表示被配置为在初始化期间执行和/或加载系统级服务的初始化进程(例如ANDROID的“init”进程)并可执行作为该进程一部分的更新服务。具体地讲,初始化模块104可表示解析初始化文件(例如图4中的初始化文件406)的初始化进程并可执行在初始化文件中发现的条目(例如加载器服务408和/或集线器服务410的条目)。例如,更新服务可表示初始化文件(例如ANDROID的init.rc)中的服务条目。在该例子中,初始化模块104可通过执行服务条目指向的进程来执行更新服务。
[0044] 在一些实施例中,初始化模块104可由只读系统映像(例如图4中只读分区402内的只读系统映像404)执行,并可执行来自同一只读系统映像的更新服务。在其他实施例中,在移动计算设备202初始化期间,初始化模块104可使用适合用于执行更新服务的任何其他进程来执行更新服务。
[0045] 本文所述的系统可在移动计算设备202初始化期间的任何时候执行更新服务。例如,初始化模块104可在移动计算设备202的初始化进程开始时(如,紧随内核初始化后)、初始化的最终步骤期间(如,在加载高级应用程序和服务期间)或初始化期间的任何其他时间执行更新服务。在一些实施例中,更新服务可包括任何配置下的一个或多个文件、可执行文件、计算机可执行指令、二进制文件和/或库。在这些实施例中,执行更新服务可包括执行在此类配置中发现的一个或多个计算机可执行指令。
[0046] 如图3所示,在步骤304中,本文所述的系统可通过更新服务识别位于移动计算设备上的可写分区。例如,分区模块106可,作为图2中移动计算设备202的一部分,识别位于移动计算设备202上的可写分区(例如图4中的可写分区414)。
[0047] 在本发明中,短语“可写分区”一般指位于任何类型或形式的计算机可读存储设备上可被写入或修改的任何分区。在一些实施例中,短语“可写分区”可指允许改变文件和/或目录的分区。在某些例子中,位于移动计算设备202上的各种应用程序和服务可能能够通过将文件保存到可写分区,将程序、软件和/或更新安装到分区,在分区上保存用户设置和配置,在分区上存储日志和其他数据,以及执行修改或改变可写分区上数据的任何其他操作或进程,来修改可写分区。在一些例子中,短语“可写分区”可指存储对服务、文件、库、应用程序等的更新的分区(例如ANDROID的“/data”分区)。
[0048] 本文所述的系统和方法可以多种方式执行步骤304。在一个例子中,分区模块106可搜索移动计算设备202上的一个或多个存储设备中的可写分区。在另一个例子中,分区模块106可搜索存储设备上的预定义位置中的可写分区。在一些实施例中,分区模块106可通过检查由移动计算设备202的初始化进程发现的分区来识别可写分区。例如,被配置为装载文件系统的引导进程可在移动计算设备202的初始化期间发现多个分区。在该例子中,分区模块106可通过访问引导进程发现的分区数据来执行步骤304。
[0049] 如图3所示,在步骤306中,本文所述的系统可通过更新服务,为只读系统映像内的至少一个系统级服务识别其在可写分区内的数字签名更新。例如,识别模块108可,作为图2中移动计算设备202的一部分,为移动计算设备202的只读系统映像内的系统级服务识别其在移动计算设备202的可写分区内的数字签名更新208。
[0050] 本文所用的短语“数字签名更新”一般指已使用数字签名(例如数字签名418和/或数字签名422)签署的任何类型或形式的更新(例如图4中的加载器更新416和/或集线器更新420)。此类更新的例子包括但不限于系统级服务更新、系统级库更新、系统级文件和/或二进制文件更新、系统级守护进程更新、系统映像更新、初始化进程更新、初始化文件更新和/或任何其他合适类型或形式的更新。此外,本文所用的术语“数字签名”一般指用于证明数字对象真实性和/或完整性的任何类型或形式的方案。数字签名可使用各种加密算法和方案进行加密,例如RSA、DSA、ECDSA、EIGamal签名方案、Schnorr签名、Pointcheval-Stern签名、Rabin签名、基于配对的方案(例如BLS)、不可否认签名、聚集签名和/或任何其他类型或形式的合适算法和/或方案。数字签名的例子可包括但不限于验证数字对象完整性的签名、验证数字对象作者的签名、验证数字对象完整性及作者二者的签名和/或可用于以任何方式证明数字对象安全性的任何其他类型或形式的签名。
[0051] 在一些例子中,数字签名更新和数字签名可存储在同一文件中。作为另外一种选择,数字签名和数字签名更新也可作为独立的文件存储。例如,数字签名更新及其对应的数字签名可作为独立文件存储在可写分区内的独立位置中。
[0052] 本文所用的短语“系统级服务”一般指移动计算设备202原生的任何类型的服务。系统级服务的例子可包括但不限于任何类型或形式的原生文件、进程、二进制文件、计算机可执行指令和/或它们的任意组合。“系统级服务”也可指存储在只读系统映像中的原生服务。在一个例子中,全部或部分模块102可表示存储在移动计算设备202的只读系统映像上的系统级服务。
[0053] 短语“系统级服务”也可指被配置为在移动计算设备初始化期间被加载的任何类型的原生服务。此类服务可包括已被专设计和/或配置为在初始化期间执行的进程、文件、库、API和/或计算机可执行指令。例如,全部或部分模块102可被专门配置为在移动计算设备202初始化期间被加载。
[0054] 在一些例子中,短语“系统级服务”也可指为了使移动计算设备202初始化而必须执行的服务或进程和/或在执行高级应用程序和服务前必须执行的服务或进程。短语“系统级服务”也可指需要访问较低级系统和服务并且因而被配置为在移动计算设备202初始化期间被加载的服务。在一些实施例中,短语“系统级服务”可指被配置为在移动计算设备202初始化期间执行的守护进程(即,后台进程)。
[0055] 在一些例子中,系统级服务可包括特定于移动平台的各种原生服务,所述移动平台例如ANDROID平台(如ANDROID 4.0)。原生ANDROID系统级服务的例子可包括但不限于引导装载程序、基于LINUX的内核、内核驱动程序(例如音频驱动程序、显示驱动程序、usb驱动程序等)、“init”进程、“init.rc”文件、Zygote进程、Dalvik虚拟机、ANDROID运行时核心库、系统库(例如SQLite、SGL、SSL、libc、OpenGL等)和/或应用程序框架(例如窗口管理器、活动管理器、视图系统、XMPP服务、包管理器等)。此外,这些ANDROID系统级服务可纳入各种ANDROID只读系统映像(例如nexus的“razor”出厂映像,如ANDROID 4.3 JSS15Q和JSS15R)中。
[0056] 在一些例子中,短语“系统级服务”可指在嵌入移动计算设备202的只读系统映像中的原生服务框架内并且被配置为在移动计算设备202初始化时被加载的服务。例如,安全软件开发者可将安全服务和工具的框架(例如图4中的加载器服务408和集线器服务410)嵌入(出于安全考虑)被配置为在移动计算设备202初始化时执行的只读系统映像中。在一些实施例中,只读系统映像可包括由各个第三方开发者提供的各种其他框架、服务、文件等。
[0057] 本文所述的系统和方法可以多种方式执行步骤306。在一个实施例中,本文所述的系统可(1)从远程服务器中检索数字签名更新,以及(2)将数字签名更新存储在可写分区内的预定义位置中。例如,检索模块114可从更新服务器206中检索图4中的加载器服务408的更新(例如加载器更新416)并将其存储在可写分区414中。在该例子中,识别模块108可通过搜索可写分区414内的预定义位置识别加载器更新416。在一些例子中,该预定义位置可为可写分区414内的目录或文件夹,检索模块114可将加载器更新416存储到此目录或文件夹中。
[0058] 在一些实施例中,本文所述的系统可(1)定期搜索可写分区中的更新并且/或者(2)定期查询远程服务器中的更新。例如,识别模块108可定期搜索可写分区内的预定义位置中的更新。在一些实施例中,识别模块108可按多种时间间隔搜索预定义位置,例如一天一次、一周一次、一月一次、一天多次等,也可按任何其他合适的时间安排或间隔进行。相似地,在一些实施例中,检索模块114可定期查询更新服务器206中的更新。例如,识别模块114可按多种时间间隔查询更新服务器206,例如一天一次、一周一次、一月一次、一天多次等,也可按任何其他合适的时间安排或间隔进行。
[0059] 在至少一个实施例中,本文件所述的系统可识别通过数字签名更新的更新服务通知从(1)系统级别服务和/或(2)其他服务接收的数字签名更新。例如,识别模块108可通过从加载服务408和/或其他服务(比如接线器服务410)接收通知识别加载更新416,比如配置用来通知更新的其他软件模块(比如识别模块108)的服务或进程。在一些例子中,系统级服务可以是其他服务的父进程(比如加载器服务408可表示集线器服务410的父进程)。在其他例子中,系统级服务可以是其他服务的子进程
[0060] 如图3所示,在步骤308中,本文件所述的系统可通过更新服务,执行可写分区内的数字签名更新,而非执行存储在只读系统映像中的系统级服务。例如,执行模块112可,作为图2中移动计算设备202的一部分,执行数字签名更新208,而非执行存储在只读系统映像中的系统级服务。
[0061] 本文所述的系统和方法可以多种方式执行步骤308。例如,执行模块112可在识别模块108识别数字签名更新208后的任何时候执行数字签名更新208。在一个实施例中,执行模块112可在识别模块108识别数字签名更新208后立即执行该数字签名更新。在另一个实施例中,执行模块112可等到下一次移动计算设备202初始化时执行数字签名更新208。
[0062] 在一些实施例中,本文所述系统可避免执行会阻止移动计算设备初始化的数字签名更新。例如,本文所述系统在执行步骤308所述的数字签名更新后可(1)检测移动计算设备初始化失败,并且之后(2)将有关初始化失败的信息保存到可写分区的日志中。当移动计算设备重新初始化时,本文件所述系统可再次(3)根据日志中存储的信息确定对系统级服务的数字签名更新造成了初始化失败,且可(4)执行存储在只读系统映像中的系统级服务,而非执行可写分区中的数字签名更新。具体而言,故障安全模块116可检测在执行模块112执行数字签名更新208后移动计算设备202初始化失败。之后故障安全模块116可将有关初始化失败的信息存储在初始化日志122中。当移动计算设备202重新初始化时,故障安全模块116可根据初始化日志122中存储的信息确定数字签名更新208造成了初始化失败。之后故障安全模块116可执行系统级服务,而非执行数字签名更新208。
[0063] 在不同的实施例中,本文所述的系统可在执行数字签名更新前通过验证数字签名更新的数字签名确定数字签名是安全的。例如,验证模块110可通过验证数字签名更新208的数字签名确定数字签名更新208是安全的。类似地,加载器服务408可通过验证数字签名422确定集线器更新420是安全的。
[0064] 本文所述的系统可以多种方式验证数字签名(并因此验证数字签名的相关更新)。在一个例子中,本文所述的系统可通过使用数字签名更新发布者提供的公用密匙对数字签名更新的相关数字签名成功解密,来验证数字签名更新的真实性。例如,对于图4中的加载器更新416,验证模块110可通过使用加载器更新416发布者提供的公用密匙对相应数字签名418成功解密,来验证加载器更新416的真实性。
[0065] 在另一个例子中,本文所述的系统可通过验证与数字签名更新相关的数字签名中密码杂凑来验证数字签名更新的完整性。例如,对于图4中的集线器更新420,验证模块110可通过(1)计算集线器更新420的密码校验和或杂凑,(2)使用集线器更新420发布者提供的公用密匙对数字签名422进行解密以获得密码杂凑424,并且之后(3)确定密码杂凑424是否匹配计算得出的杂凑,来验证集线器更新420的完整性。在发布者没有占用集线器更新420后,通过本方法验证数字签名422可验证集线器更新420没有被修改或篡改。
[0066] 在本文所述系统的一些实施例中,更新服务可为系统级服务的父进程。例如,更新服务可构成安全软件供应商提供的服务框架的一部分。在该例中,加载器服务408可表示本文所述的更新服务,所述更新服务继而又可加载和监测集线器服务410。在一些实施例中,集线器服务410可表示本文所述的系统级服务,在其他实施例中系统级服务可表示集线器服务410的子进程。
[0067] 在更新服务为系统级服务的父进程的实施例中,本文所述的系统在识别系统级服务的数字签名更新之前可(1)通过更新服务为更新服务识别可写分区内的数字签名更新,(2)通过更新服务为更新服务验证数字签名更新,并且(3)通过更新服务为更新服务执行数字签名更新。例如,加载器服务408可识别加载器更新416,验证数字签名418,之后执行加载器更新416。
[0068] 在不同的实施例中,本文所述的系统在识别系统级服务的数字签名更新之后可终止系统级服务并执行数字签名更新。例如,集线器服务410可识别集线器更新420并通知其加载器服务408。相应的,加载器服务408可终止集线器服务410并改为执行集线器更新420。
[0069] 在一些例子中,集线器服务410可为多个子进程的父进程,所述多个子进程包括实时更新服务。在该例子中,实时更新服务可被配置为从更新服务器206中检索更新并将所述更新储存在可写分区414中。实时更新服务也可通知集线器服务410下载集线器服务410的子进程更新的时间。在该例子中,集线器服务410随后可终止子进程并接着执行子进程更新。
[0070] 在一些实施例中,在终止系统级服务后,本文所述的系统可直接执行数字签名更新或在移动计算设备初始化时执行数字签名更新。例如,加载器服务408可在终止集线器服务410后立即执行集线器更新420。作为另外一种选择,加载器服务408可在终止集线器服务410后,等到移动计算设备202重新初始化后才执行集线器更新420。
[0071] 在一些例子中,本文所述的系统可通过仅执行经过验证的更新来确保系统安全。例如,本文所述的系统可(1)通过更新服务,识别被配置为在移动计算设备初始化期间被加载的至少一个附加系统级服务的更新,(2)通过更新服务确定,因为无法验证附加系统级服务的更新的数字签名,所以附加系统级服务的更新是不安全的,以及随后(3)通过更新服务,执行附加系统级服务,而非执行附加系统级服务的更新。具体地讲,集线器服务410可包括子进程并可识别该子进程的数字签名更新。接着集线器服务410可尝试验证子进程更新的数字签名,并可发现由于种种原因而无法验证子进程的数字签名。例如,集线器服务410可发现子进程更新的校验和或加密杂凑(类似于密码杂凑424)是不一致的,并且根据该不一致性可确定此更新不安全,原因是此更新已从其原形式发生变动。然后集线器服务410可执行子进程,而非执行子进程更新。
[0072] 在一个例子中,前面段落所述的子进程也可经过数字签署,并且可将用于对子进程数字签名解密的公用密钥纳入只读系统映像404中。在该例子中,在执行子进程前,集线器服务410可通过使用公用密匙验证子进程的数字签名来确定子进程是安全的。由此,集线器服务410可验证子进程是安全的,原因是其并未被修改。在不同的实施例中,只读系统映像404可包含用于验证只读系统映像404和/或储存在只读系统映像404中的系统级服务的真实性和安全性的各种公用密匙和数字签名。此类公用密匙和数字签名可帮助检测只读系统映像404是否被以降低其安全性和/或完整性的方式修改(如,“已获取系统权限”)。
[0073] 在一些例子中,初始化进程、加载器服务408和集线器服务410可表示被配置为在移动计算设备202上作为后台进程运行的守护进程。在这些例子中,这些进程和服务可在移动计算设备202运行的任何时候执行本发明所述的步骤。例如,在移动计算设备202初始化后,集线器服务410可继续监测安全服务的框架(可能全部均为集线器服务410的子进程)。如果这些安全服务中的一项服务的更新被识别,那么集线器服务410可自行终止然后通过加载器服务408重新启动。
[0074] 在一个实施例中,加载器服务408可被配置为重新启动集线器服务410,但次数有限,且在达到预定义的重新启动次数上限后,加载器服务408可等到移动计算设备202重新初始化后才重新启动集线器服务410。在一些实施例中,当集线器服务410识别到更新时,集线器服务410可等到下一次移动计算设备202初始化时重新启动。
[0075] 下文将提供有关上文图3所示进程的具体例子。在该例子中,在移动计算设备202初始化期间,初始化进程(例如ANDROID的“init”进程)可通过解析初始化文件406并执行在该文件中发现的条目执行加载器服务408。加载器服务408一旦执行,便可搜索其在可写分区414上的预定义位置内的更新。如果加载器服务408识别到更新,例如加载器更新416,则加载器服务408可尝试验证更新的数字签名。如果更新验证成功,则加载器服务408可执行最新版本的加载器服务408,而这个最新版本在此例子中则为加载器更新416。如果加载器服务408未能验证更新,那么加载器服务408可不执行更新。
[0076] 加载器服务408(或加载器服务408的更新版本,视情况而定)在检查自身更新后,可通过搜索可写分区414上的预定义位置检查集线器服务410的更新。在该例子中,在通过搜索预定义位置识别集线器更新420后,加载器服务408可通过验证密码杂凑424确定集线器更新420是安全的,并且可执行集线器更新420而非执行集线器服务410。在其他例子中,如果无法验证密码杂凑424,那么加载器服务408可执行集线器服务410,而非执行集线器更新420。集线器服务410(或集线器服务410的更新版本,视情况而定)可随后检查可写分区414中一个或多个子进程的更新。如果发现这些子进程中的一者或多者的更新,那么集线器服务410可执行这些子进程的更新,而非执行这些子进程的原生版本。
[0077] 如上文结合图3中的方法300所述,移动设备开发者想要为其在只读分区(例如,ANDROID设备的“/system”分区)内分配的原生二进制文件提供更新时,他们通常必须等到用运营商或制造商OTA更新来闪存设备后才能进行。开发者可能想要一种对这些通常发布缓慢、有风险的OTA更新的替代方案。一种解决方案包括重新装载或“获取系统权限”只读系统映像,但这样做可能破坏移动设备的完整性,并且在一些情况下,还可能阻止设备连接到运营商网络。
[0078] 本发明可通过从可写分区(例如,ANDROID设备上的“/data”分区)中执行原生二进制文件的更新,而非执行原生二进制文件本身来克服这些问题。如上文说明书中所详述,这可通过以下过程来完成:从服务器中检索数字签名更新,并且将该数字签名更新安装到可写分区上的预定义位置中。执行数字签名更新之前,更新服务可通过验证此更新的数字签名来确保此更新是安全的。如果移动设备在执行更新后引导失败,那么可将有关该失败引导的信息保存在可写分区内的日志中,以便将来可跳过有问题的更新。通过执行这些步骤,本发明可提供用于更新只读分区上的低级服务而无需重新闪存分区和/或移动设备的安全解决方案。在一些例子中,该解决方案可扩展为包括可为存储在只读分区内的所有系统级服务和原生二进制文件提供更新的“母”进程(如,ANDROID的“init”进程)。这些解决方案继而可允许开发者及时提供关键服务的更新、消除用OTA更新闪存移动设备的固有风险并且通过提供更好的支持和更可靠的服务来增加销量。
[0079] 图5为能够实施本文描述和/或示出的实施例中的一者或多者的示例性计算系统510的框图。例如,计算系统510的全部或一部分可执行和/或作为一种装置用于单独地或与其他元件结合来执行本文所述的步骤中的一者或多者(诸如图3所示步骤中的一者或多者)。计算系统510的全部或一部分也可执行和/或作为一种装置来执行本文描述和/或示出的任何其他步骤、方法或过程。
[0080] 计算系统510在广义上表示能够执行计算机可读指令的任何单处理器或多处理器计算设备或系统。计算系统510的例子包括但不限于工作站、笔记本电脑、客户端侧终端、服务器、分布式计算系统、手持式设备或任何其他计算系统或设备。在其最基本的配置中,计算系统510可包括至少一个处理器514和系统存储器516。
[0081] 处理器514通常表示能够处理数据或解译和执行指令的任何类型或形式的处理单元。在某些实施例中,处理器514可接收来自软件应用程序或模块的指令。这些指令可使处理器514执行本文描述和/或示出的一个或多个示例性实施例的功能。
[0082] 系统存储器516通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。系统存储器516的例子包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、闪存存储器或任何其他适用的存储器设备。尽管不是必需的,但在某些实施例中,计算系统510可包括易失性存储器单元(诸如系统存储器516)和非易失性存储设备(诸如,主要存储设备532,如下详述)两者。在一个例子中,图1的模块102中的一者或多者可加载到系统存储器516中。
[0083] 在某些实施例中,除处理器514和系统存储器516之外,示例性计算系统510还可包括一个或多个组件或元件。例如,如图5所示,计算系统510可包括存储器控制器518、输入/输出(I/O)控制器520和通信接口522,它们中的每一者都可通过通信基础结构512互连。通信基础结构512通常表示能够促进计算设备的一个或多个组件之间的通信的任何类型或形式的基础结构。通信基础结构512的例子包括但不限于通信总线(诸如工业标准体系结构(ISA))、外围组件互连(PCI)、PCI Express (PCIe)或类似的总线)和网络。
[0084] 存储器控制器518通常表示能够处理存储器或数据或者控制计算系统510的一个或多个组件之间的通信的任何类型或形式的设备。例如,在某些实施例中,存储器控制器518可通过通信基础结构512来控制处理器514、系统存储器516和I/O控制器520之间的通信。
[0085] I/O控制器520通常表示能够协调和/或控制计算设备的输入和输出功能的任何类型或形式的模块。例如,在某些实施例中,I/O控制器520可控制或促进计算系统510的一个或多个元件之间的数据传输,所述元件诸如处理器514、系统存储器516、通信接口522、显示适配器526、输入接口530和存储接口534。
[0086] 通信接口522在广义上表示能够促进示例性计算系统510与一个或多个附加设备之间的通信的任何类型或形式的通信设备或适配器。例如,在某些实施例中,通信接口522可促进计算系统510与包括附加计算系统的专用或公共网络之间的通信。通信接口522的例子包括但不限于有线网络接口(诸如网络接口卡)、无线网络接口(诸如无线网络接口卡)、调制解调器和任何其他合适的接口。在至少一个实施例中,通信接口522可通过与网络(诸如互联网)的直接链接来提供与远程服务器的直接连接。通信接口522还可通过例如局域网(诸如以太网网络)、个人区域网、电话或电缆网络、蜂窝电话连接、卫星数据连接或任何其他合适的连接来间接提供此类连接。
[0087] 在某些实施例中,通信接口522还可表示主机适配器,该主机适配器可被配置为通过外部总线或通信信道来促进计算系统510与一个或多个附加网络或存储设备之间的通信。主机适配器的例子包括但不限于小型计算机系统接口(SCSI)主机适配器、通用串行总线(USB)主机适配器、电气与电子工程师协会(IEEE)1394主机适配器、高级技术附件(ATA)、并行ATA (PATA)、串行ATA (SATA)和外部SATA (eSATA)主机适配器、光纤通道接口适配器、以太网适配器等。通信接口522还可允许计算系统510参与分布式或远程计算。例如,通信接口522可接收来自远程设备的指令或将指令发送到远程设备以供执行。
[0088] 如图5所示,计算系统510还可包括至少一个显示设备524,该显示设备524通过显示适配器526耦合到通信基础结构512。显示设备524通常表示能够以可视方式显示显示适配器526转发的信息的任何类型或形式的设备。类似地,显示适配器526通常表示被配置为转发来自通信基础结构512(或来自缓冲器,如本领域所已知)的图形、文本和其他数据以在显示设备524上显示的任何类型或形式的设备。
[0089] 如图5所示,示例性计算系统510还可包括通过输入接口530耦合到通信基础结构512的至少一个输入设备528。输入设备528通常表示能够向示例性计算系统510提供输入(由计算机或人生成)的任何类型或形式的输入设备。输入设备528的例子包括但不限于键盘、指示设备、语音识别设备或任何其他输入设备。
[0090] 如图5所示,示例性计算系统510还可包括主要存储设备532和通过存储接口534耦合到通信基础结构512的备份存储设备533。存储设备532和533通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。例如,存储设备532和533可为磁盘驱动器(例如,所谓的硬盘驱动器)、固态驱动器、软盘驱动器、磁带驱动器、光盘驱动器、闪存驱动器等等。存储接口534通常表示用于在计算系统510的存储设备532和533与其他组件之间传输数据的任何类型或形式的接口或设备。在一个例子中,图1的更新数据库120可存储在主要存储设备532中。
[0091] 在某些实施例中,存储设备532和533可被配置为对被配置为存储计算机软件、数据或其他计算机可读信息的可移除存储单元执行读取和/或写入。合适的可移除存储单元的例子包括但不限于软盘、磁带、光盘、闪存存储器设备等。存储设备532和533还可包括允许将计算机软件、数据或其他计算机可读指令加载到计算系统510内的其他类似结构或设备。例如,存储设备532和533可被配置为读取和写入软件、数据或其他计算机可读信息。存储设备532和533还可为计算系统510的一部分,或者可为通过其他接口系统进行访问的独立设备。
[0092] 可将许多其他设备或子系统连接到计算系统510。相反地,无需图5中示出的所有组件和设备都存在,亦可实践本文描述和/或示出的实施例。上文提及的设备和子系统也可通过不同于图5所示的方式互连。计算系统510也可采用任何数量的软件、固件和/或硬件配置。例如,本文所公开的一个或多个示例性实施例可被编码为计算机可读存储介质上的计算机程序(也称为计算机软件、软件应用程序、计算机可读指令或计算机控制逻辑)。短语“计算机可读存储介质”通常指能够存储或携带计算机可读指令的任何形式的设备、载体或介质。计算机可读存储介质的例子包括但不限于传输型介质,诸如载波,和非暂态型介质,诸如磁存储介质(例如,硬盘驱动器和软盘)、光存储介质(例如,光盘(CD)或数字视频盘(DVD))、电子存储介质(例如,固态驱动器和闪存介质)和其他分配系统。
[0093] 可将包含计算机程序的计算机可读存储介质加载到计算系统510中。然后可将计算机可读存储介质上存储的全部或一部分计算机程序存储在系统存储器516中和/或存储设备532和533的各个部分中。当由处理器514执行时,加载到计算系统510中的计算机程序可使处理器514执行和/或作为一种装置用于执行本文描述和/或示出的示例性实施例中的一者或多者的功能。除此之外或作为另外一种选择,可在固件和/或硬件中实施本文描述和/或示出的示例性实施例中的一者或多者。例如,计算系统510可被配置为用于实施本文所公开的示例性实施例中的一者或多者的专用集成电路(ASIC)。
[0094] 图6为示例性网络体系结构600的框图,其中客户端系统610、620和630以及服务器640和645可耦合到网络650。如上文所详述,网络体系结构600的全部或一部分可执行和/或作为一种装置用于单独地或与其他元件结合来执行本文所公开的步骤中的一者或多者(诸如图3所示的步骤中的一者或多者)。网络体系结构600的全部或一部分也可用于执行和/或作为一种装置用于执行本公开中阐述的其他步骤和特征。
[0095] 客户端系统610、620和630通常表示任何类型或形式的计算设备或系统,诸如图5中的示例性计算系统510。类似地,服务器640和645通常表示被配置为提供各种数据库服务和/或运行某些软件应用程序的计算设备或系统,诸如应用程序服务器或数据库服务器。网络650通常表示任何电信或计算机网络,包括例如内联网、WAN、LAN、PAN或因特网。在一个例子中,客户端系统610、620和/或630和/或服务器640和/或645可包括图1的系统100的全部或一部分。
[0096] 如图6所示,一个或多个存储设备660(1)-(N)可直接连接到服务器640。类似地,一个或多个存储设备670(1)-(N)可直接连接到服务器645。存储设备660(1)-(N)和存储设备670(1)-(N)通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。在某些实施例中,存储设备660(1)-(N)和存储设备670(1)-(N)可以表示被配置为使用各种协议(诸如网络文件系统(NFS)、服务器消息块(SMB)或通用互联网文件系统(CIFS))与服务器640和645进行通信的网络附接存储(NAS)设备。
[0097] 服务器640和645也可以连接到存储区域网络(SAN)架构680。SAN架构680通常表示能够促进多个存储设备之间的通信的任何类型或形式的计算机网络或体系结构。SAN架构680可促进服务器640和645与多个存储设备690(1)-(N)和/或智能存储阵列695之间的通信。SAN架构680还可通过网络650以及服务器640和645以这样的方式促进客户端系统610、
620和630与存储设备690(1)-(N)和/或智能存储阵列695之间的通信:设备690(1)-(N)和阵列695呈现为客户端系统610、620和630的本地连接设备。与存储设备660(1)-(N)和存储设备670(1)-(N)相同,存储设备690(1)-(N)和智能存储阵列695通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。
[0098] 在某些实施例中,并参照图5的示例性计算系统510,通信接口,诸如图5中的通信接口522,可用于在每个客户端系统610、620和630与网络650之间提供连接。客户端系统610、620和630能够使用例如网页浏览器或其他客户端软件来访问服务器640或645上的信息。此类软件可允许客户端系统610、620和630访问由服务器640、服务器645、存储设备660(1)-(N)、存储设备670(1)-(N)、存储设备690(1)-(N)或智能存储阵列695托管的数据。尽管图6示出了使用网络(诸如互联网)来交换数据,但本文描述和/或示出的实施例并非仅限于互联网或任何特定的基于网络的环境。
[0099] 在至少一个实施例中,本文所公开的一个或多个示例性实施例中的全部或一部分可被编码为计算机程序并加载到服务器640、服务器645、存储设备660(1)-(N)、存储设备670(1)-(N)、存储设备690(1)-(N)、智能存储阵列695、或它们的任意组合上并加以执行。本文所公开的一个或多个示例性实施例中的全部或一部分也可被编码为计算机程序,存储在服务器640中,由服务器645运行,以及通过网络650分配到客户端系统610、620和630。
[0100] 如上文所详述,计算系统510和/或网络体系结构600的一个或多个组件可执行和/或作为一种装置用于单独地或与其他元件结合来执行用于更新只读系统映像内的系统级服务的示例性方法的一个或多个步骤。
[0101] 虽然上述公开内容使用特定框图、流程图和例子阐述了各种实施例,但每个框图组件、流程图步骤、操作和/或本文描述和/或示出的组件可使用多种硬件、软件或固件(或其任何组合)配置单独和/或共同地实施。此外,包含在其他组件内的组件的任何公开内容应当被视为在本质上是示例性的,因为可实施许多其他体系结构来实现相同功能。
[0102] 在一些例子中,图1中的示例性系统100的全部或一部分可表示云计算环境或基于网络的环境的部分。云计算环境可以通过互联网提供各种服务和应用程序。这些基于云的服务(例如软件即服务、平台即服务、基础结构即服务等)可以通过网页浏览器或其他远程接口进行访问。本文所述的各种功能可以通过远程桌面环境或任何其他基于云的计算环境提供。
[0103] 在各种实施例中,图1中的示例性系统100的全部或一部分可促进基于云的计算环境内的多租户应用。换句话讲,本文所述的软件模块可配置计算系统(例如,服务器)以促进本文所述功能中的一者或多者的多租户应用。例如,本文所述软件模块中的一者或多者可对服务器进行编程以允许两个或更多个客户端(例如,顾客)共享正在服务器上运行的应用程序。以这种方式编程的服务器可在多个顾客(即,租户)之间共享应用程序、操作系统、处理系统和/或存储系统。本文所述模块中的一者或多者还可为每个顾客分割多租户应用程序的数据和/或配置信息使得一个顾客不能访问另一个顾客的数据和/或配置信息。
[0104] 根据各种实施例,图1中的示例性系统100的全部或一部分可在虚拟环境中实现。例如,本文所述模块和/或数据可在虚拟机内驻存和/或执行。如本文所用,短语“虚拟机”通常指由虚拟机管理器(例如,超级管理程序)从计算硬件中抽象出来的任何操作系统环境。
除此之外或作为另外一种选择,本文所述的模块和/或数据可在虚拟化层内驻存和/或执行。如本文所用,短语“虚拟化层”通常指覆盖操作系统环境和/或从操作系统环境中抽象出来的任何数据层和/或应用层。虚拟化层可由软件虚拟化解决方案(例如,文件系统过滤器)管理,软件虚拟化解决方案将虚拟化层呈现为就好像它是底层基本操作系统的一部分。例如,软件虚拟化解决方案可将最初定向至基本文件系统和/或注册表内的位置的调用重定向至虚拟化层内的位置。
[0105] 在一些例子中,图1中的示例性系统100的全部或一部分可表示移动计算环境的部分。移动计算环境可由多种移动计算设备来实现,这些设备包括移动电话、平板电脑、电子书阅读器、个人数字助理、可穿戴计算设备(例如,具有头戴式显示器的计算设备、智能手表等),等等。在一些例子中,移动计算环境可具有一个或多个显著特征,包括(例如)对电池供电的依赖、在任何给定时间只呈现一个前台应用程序、远程管理特征、触摸屏特征、(例如,由全球定位系统、陀螺仪加速度计等提供的)位置和移动数据、限制对系统级配置的修改和/或限制第三方软件检查其他应用程序的行为的能力的受限平台、限制应用程序的安装的控制装置(例如,仅安装来源于经批准的应用程序商店的应用程序),等等。本文所述的各种功能可被提供用于移动计算环境和/或可与移动计算环境交互。
[0106] 此外,图1中的示例性系统100的全部或一部分可表示一个或多个信息管理系统的部分,与一个或多个信息管理系统交互,使用由一个或多个信息管理系统产生的数据,以及/或者产生被一个或多个信息管理系统使用的数据。如本文所用,短语“信息管理”可以指数据的保护、组织和/或存储。信息管理系统的例子可包括但不限于存储系统、备份系统、存档系统、复制系统、高可用性系统、数据搜索系统、虚拟化系统等。
[0107] 在一些实施例中,图1中的示例性系统100的全部或一部分可表示一个或多个信息安全系统的部分,生成受一个或多个信息安全系统保护的数据,以及/或者与一个或多个信息安全系统通信。如本文所用,短语“信息安全”可以指对受保护数据的访问控制。信息安全系统的例子可包括但不限于提供受管理的安全服务的系统、数据丢失防护系统、身份认证系统、访问控制系统、加密系统、政策遵循系统、入侵检测与防护系统、电子发现系统等等。
[0108] 根据一些例子,图1中的示例性系统100的全部或一部分可表示一个或多个端点安全系统的部分,与一个或多个端点安全系统通信,以及/或者受一个或多个端点安全系统保护。如本文所用,短语“端点安全”可以指保护端点系统以避免未授权和/或不合法的使用、访问和/或控制。端点保护系统的例子可包括但不限于反恶意软件系统、用户认证系统、加密系统、保密系统、垃圾邮件过滤服务,等等。
[0109] 本文描述和/或示出的过程参数和步骤序列仅通过举例的方式给出并且可根据需要改变。例如,虽然本文示出和/或描述的步骤可以特定顺序示出或讨论,但这些步骤不必按示出或讨论的顺序来执行。本文描述和/或示出的各种示例性方法也可省略本文描述或示出的步骤中的一者或多者,或除了所公开的那些步骤之外还包括附加步骤。
[0110] 虽然本文已经在全功能计算系统的背景中描述和/或示出了各种实施例,但这些示例性实施例中的一者或多者可作为各种形式的程序产品来分配,而不考虑用于实际进行分配的计算机可读存储介质的特定类型。本文所公开的实施例也可使用执行某些任务的软件模块来实施。这些软件模块可包括脚本、批处理文件或可存储在计算机可读存储介质上或计算系统中的其他可执行文件。在一些实施例中,这些软件模块可将计算系统配置为执行本文所公开的示例性实施例中的一者或多者。
[0111] 此外,本文所述的模块中的一者或多者可将数据、物理设备和/或物理设备的表示从一种形式转换为另一种形式。例如,本文所述的模块中的一者或多者可识别存储在只读系统映像内的系统级服务,并随后通过执行可写分区内的数字签名更新而非执行存储在只读系统映像内的系统级服务来将系统级服务转换为其更新版本。除此之外或作为另外一种选择,本文所述模块中的一者或多者可通过在计算设备上执行、在计算设备上存储数据和/或以其他方式与计算设备交互,来将处理器、易失性存储器、非易失性存储器和/或物理计算设备的任何其他部分从一种形式转换为另一种形式。
[0112] 提供前面描述的目的是使本领域的其他技术人员能够最好地利用本文所公开的示例性实施例的各种方面。该示例性描述并非旨在是详尽的或局限于所公开的任何精确形式。在不脱离本发明精神和范围的前提下,可进行许多修改和变化。本文所公开的实施例在所有方面均应被视为示例性的而非限制性的。应当参考所附权利要求及其等同形式来确定本发明的范围。
[0113] 除非另有说明,否则在本说明书和权利要求中所用的术语“连接到”和“耦合到”(以及其衍生形式)应当理解为允许直接和间接(即通过其他元件或组件)连接。此外,在本说明书和权利要求中所用的术语“一”或“一个”应当理解为表示“…中的至少一者”。最后,为了易于使用,在本说明书和权利要求中所用的术语“包括”和“具有”(以及其衍生形式)与词语“包含”可互换并且与词语“包含”具有相同含义。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈