发明内容
根据本公开的第一方面,提供了一种控制对与在计算设备上配置的应用相关联的应用数据的访问的方法,所述方法包括:针对与所述应用相关联的多个访问级别中的每一个访问级别存储数据,所述数据包括对与相应访问级别相关联的一个或多个凭证的组合加以指示的第一数据和与所述相应访问级别相对应的访问级别密钥,所述访问级别密钥是通过与所述相应访问级别相关联的所述一个或多个凭证的组合加密的;基于所述第一数据确定所述多个访问级别中与所述应用可用的一个或多个凭证的组合相对应的访问级别;使用所述应用可用的所述一个或多个凭证的组合来对所存储的数据中的与所确定的访问级别相对应的访问级别密钥进行解密;以及至少部分地使用与所确定的访问级别相对应的经解密的访问级别密钥来提供对与所述应用相关联并且与所确定的访问级别相对应的经加密的应用数据的访问。
根据一些实施例,针对所确定的访问级别,所存储的数据包括与所述多个访问级别中从属于所确定的访问级别的一个或多个访问级别相对应的一个或多个访问级别密钥,所述一个或多个访问级别密钥中的每个访问级别密钥是使用与所确定的访问级别相对应的访问级别密钥加密的,所述方法包括:使用与所确定的访问级别相对应的经解密的访问级别密钥来对与从属于所确定的访问级别的所述一个或多个访问级别相对应的所述一个或多个访问级别密钥进行解密;以及至少部分地使用与从属于所确定的访问级别的所述一个或多个访问级别相对应的所述一个或多个经解密的访问级别密钥来提供对与所述应用相关联并且与所述一个或多个从属访问级别相对应的经加密的应用数据的访问。
根据一些实施例,针对与所述应用相关联的所述多个访问级别中的每一个访问级别,所存储的数据包括与相应访问级别相对应的一个或多个应用数据密钥,所述一个或多个应用数据密钥中的每个应用数据密钥是通过与所述相应访问级别相对应的访问级别密钥加密的,所述方法包括:使用与所确定的访问级别相对应的经解密的访问级别密钥来对与所确定的访问级别相对应的所述一个或多个应用数据密钥进行解密;以及使用所述一个或多个经解密的应用数据密钥来对与所述应用相关联并且与所确定的访问级别相对应的经加密的应用数据进行解密。
根据一些实施例,针对与所述应用相关联的所述多个访问级别中的每一个访问级别,所存储的数据包括与相应访问级别相对应的一个或多个应用数据密钥,所述一个或多个应用数据密钥中的每个应用数据密钥是通过与所述相应访问级别相对应的访问级别密钥加密的,所述方法包括:使用与所确定的访问级别相对应的经解密的访问级别密钥来对与所确定的访问级别相对应的所述一个或多个应用数据密钥进行解密;使用与从属于所确定的访问级别的所述一个或多个访问级别相对应的所述一个或多个经解密的访问级别密钥来对与从属于所确定的访问级别的所述一个或多个访问级别相对应的所述一个或多个应用数据密钥进行解密;使用所述一个或多个经解密的应用数据密钥来对与所述应用相关联并且与所确定的访问级别相对应的经加密的应用数据进行解密;以及使用与从属于所确定的访问级别的所述一个或多个访问级别相对应的所述一个或多个经解密的应用数据密钥来对与所述应用相关联并且与从属于所确定的访问级别的所述一个或多个访问级别相对应的经加密的应用数据进行解密。
根据一些实施例,所存储的数据包括通过与同所述应用相关联的最高访问级别相对应的访问级别密钥加密的主密钥和通过所述主密钥加密的与同所述应用相关联的最高访问级别相对应的访问级别密钥,所述方法包括:响应于用来创建在与所述应用相关联的最高访问级别之上的新访问级别的指令,在所述应用处接收与所述新访问级别相对应的一个或多个凭证的新组合;部分地基于在应用处接收到的所述一个或多个凭证的新组合,生成与所述新访问级别相对应的新访问级别密钥;使用与同所述应用相关联的最高访问级别相对应的访问级别密钥来对所述主密钥进行解密;使用经解密的主密钥来对与所述新访问级别相对应的所述新访问级别密钥进行加密;以及将经加密的新访问级别密钥与所述新访问级别相关联地存储在所存储的数据中。
根据一些实施例,所述方法还包括:使用与所述新访问级别相对应的新级别密钥来对经解密的主密钥进行加密;以及将经加密的主密钥与所述新访问级别相关联地存储在所存储的数据中。
根据一些实施例,用来创建新访问级别的指令是从远离所述计算设备的服务器接收的。
根据一些实施例,所述第一数据包括指示所述一个或多个凭证的组合的元数据。
根据本公开的第二方面,提供了一种非暂时性计算机可读存储介质,包括计算机可执行指令,所述计算机可执行指令当由处理器执行时,使计算设备执行控制对与配置在所述计算设备上的应用相关联的应用数据的访问的方法,所述方法包括:针对与所述应用相关联的多个访问级别中的每一个访问级别存储数据,所述数据包括对与相应访问级别相关联的一个或多个凭证的组合加以指示的第一数据和与所述相应访问级别相对应的访问级别密钥,所述访问级别密钥是通过与所述相应访问级别相关联的所述一个或多个凭证的组合加密的;基于所述第一数据确定所述多个访问级别中与所述应用可用的一个或多个凭证的组合相对应的访问级别;使用所述应用可用的所述一个或多个凭证的组合来对所存储的数据中的与所确定的访问级别相对应的访问级别密钥进行解密;以及至少部分地使用与所确定的访问级别相对应的经解密的访问级别密钥来提供对与所述应用相关联并且与所确定的访问级别相对应的经加密的应用数据的访问。
根据一些实施例,针对所确定的访问级别,所存储的数据包括与所述多个访问级别中从属于所确定的访问级别的一个或多个访问级别相对应的一个或多个访问级别密钥,所述一个或多个访问级别密钥中的每个访问级别密钥是使用与所确定的访问级别相对应的访问级别密钥加密的,所述方法包括:使用与所确定的访问级别相对应的经解密的访问级别密钥来对与从属于所确定的访问级别的所述一个或多个访问级别相对应的所述一个或多个访问级别密钥进行解密;以及至少部分地使用与从属于所确定的访问级别的所述一个或多个访问级别相对应的所述一个或多个经解密的访问级别密钥来提供对与所述应用相关联并且与所述一个或多个从属访问级别相对应的经加密的应用数据的访问。
根据一些实施例,针对与所述应用相关联的所述多个访问级别中的每一个访问级别,所存储的数据包括与相应访问级别相对应的一个或多个应用数据密钥,所述一个或多个应用数据密钥中的每个应用数据密钥是通过与所述相应访问级别相对应的访问级别密钥加密的,所述方法包括:使用与所确定的访问级别相对应的经解密的访问级别密钥来对与所确定的访问级别相对应的所述一个或多个应用数据密钥进行解密;使用所述一个或多个经解密的应用数据密钥来对与所述应用相关联并且与所确定的访问级别相对应的经加密的应用数据进行解密。
根据一些实施例,针对与所述应用相关联的所述多个访问级别中的每一个访问级别,所存储的数据包括与相应访问级别相对应的一个或多个应用数据密钥,所述一个或多个应用数据密钥中的每个应用数据密钥是通过与所述相应访问级别相对应的访问级别密钥加密的,所述方法包括:使用与所确定的访问级别相对应的经解密的访问级别密钥来对与所确定的访问级别相对应的所述一个或多个应用数据密钥进行解密;使用与从属于所确定的访问级别的所述一个或多个访问级别相对应的所述一个或多个经解密的访问级别密钥来对与从属于所确定的访问级别的所述一个或多个访问级别相对应的所述一个或多个应用数据密钥进行解密;使用所述一个或多个经解密的应用数据密钥来对与所述应用相关联并且与所确定的访问级别相对应的经加密的应用数据进行解密;以及使用与从属于所确定的访问级别的所述一个或多个访问级别相对应的所述一个或多个经解密的应用数据密钥来对与所述应用相关联并且与从属于所确定的访问级别的所述一个或多个访问级别相对应的经加密的应用数据进行解密。
根据一些实施例,所存储的数据包括通过与同所述应用相关联的最高访问级别相对应的访问级别密钥加密的主密钥和通过所述主密钥加密的与同所述应用相关联的最高访问级别相对应的访问级别密钥,所述方法包括:响应于用来创建在与所述应用相关联的最高访问级别之上的新访问级别的指令,在所述应用处接收与所述新访问级别相对应的一个或多个凭证的新组合;部分地基于在应用处接收到的所述一个或多个凭证的新组合,生成与所述新访问级别相对应的新访问级别密钥;使用与同所述应用相关联的最高访问级别相对应的访问级别密钥来对所述主密钥进行解密;使用经解密的主密钥来对与所述新访问级别相对应的所述新访问级别密钥进行加密;以及将经加密的新访问级别密钥与所述新访问级别相关联地存储在所存储的数据中。
根据权利要求12所述的非暂时性计算机可读存储介质,其中,所述方法还包括:使用与所述新访问级别相对应的新级别密钥来对经解密的主密钥进行加密;以及将经加密的主密钥与所述新访问级别相关联地存储在所存储的数据中。
根据一些实施例,用来创建新访问级别的指令是从远离所述计算设备的服务器接收的。
根据一些实施例,所述第一数据包括指示所述一个或多个凭证的组合的元数据。
具体实施方式
图1是示出了根据实施例的包括应用110的计算设备100的示意图,该应用110被配置为选择性地提供对应用数据114的访问。应用110被配置为与配置在计算设备100上的操作系统124进行交互,并且包括应用运行时间112(即,由操作系统124执行的运行时间进程)以及存储在计算设备100的持久性存储器(未示出)中的应用数据114和管理数据116。应用数据114包括在执行期间由应用运行时间112使用或生成的数据。应用数据114包括多个数据结构114-1至114-4(以下称为“容器”),其中应用数据114可以被隔离并以经加密格式安全地存储在所述多个数据结构114-1至114-4中,以防止未经授权的访问。在这方面,将应用数据114隔离到多个容器114-1至114-4中可以基于为应用数据114定义的多个数据类别,如下面更详细地讨论的。类似地,管理数据116可以包括数据结构(以下称为“管理容器”),在该数据结构中存储了用于控制与应用110相关联的配置和功能的数据。
应用运行时间112使用本领域已知的加密技术(如由美国国家标准与技术研究所建立的高级加密标准(AES)中规定的那些技术)将应用数据114安全地存储在容器114-1至114-4中。在这种上下文中,每个安全容器114-1至114-4表示配置在非易失性存储器中并与应用110相关联的安全存储区域。每个安全容器114-1至114-4可以采用包括锁定状态和解锁状态的多种状态(以下称为“锁状态”)。当处于锁定状态时,存储在容器114-1至114-4中的应用数据114被加密,并且不能由相关联的应用运行时间112或在计算设备100上运行的任何其他进程访问。相反,当容器114-1至114-4处于解锁状态时,存储在容器114-1至114-4中的应用数据114被解密(例如,明文),并且可以由对应的应用运行时间112访问。每个容器114-1至114-4的加密和解密由应用运行时间112使用对应于相应容器114-1至114-4的密码密钥(以下称为“容器密钥”或“应用数据密钥”)来执行。容器密钥是根据应用运行时间112可用的一个或多个凭证的组合导出的,如下面更详细地讨论的。在这方面,应当理解,可以通过应用运行时间112独立地控制多个容器114-1至114-4中的每一个的锁状态。
如上所述,应用110为应用数据114中的数据定义多个数据类别。每个数据类别与相应的容器114-1至114-4相关联,容器114-1至114-4进而提供应用运行时间112可用于存储应用数据114的一个或多个数据结构。在图1所示的特定示例中,容器114-1存储“类别A”数据,容器114-2存储“类别B”数据,容器114-3存储“类别C”数据,容器114-4存储“类别D”数据。
应用运行时间112被配置为根据相关联的数据类别以及由应用110在非易失性存储设备中存储的策略数据118中定义的一个或多个策略来管理每个容器114-1至114-4的锁状态。具体地,分别存储在容器114-1至114-4中的每个类别的数据与策略数据118中定义的访问级别相关联。例如,访问策略可以将类别A数据定义为访问级别0(在图1中称为“L0”),将类别B数据定义为访问级别1(在图1中称为“L1”),将类别C数据定义为访问级别2(在图1中称为“L2”),并且将类别D数据定义为访问级别3(在图1中称为“L3”)。在这种上下文中,L0访问级别表示访问策略中定义的最低敏感性访问级别,L3访问级别表示访问策略中定义的最高敏感性访问级别。根据一些实施例,由策略数据118定义的访问策略还可以定义默认访问级别,所述默认访问级别应用于策略数据118中没有针对其明确定义访问级别的数据类别。
与应用110相关联的策略数据118还定义了凭证策略,该凭证策略指定访问每个相应访问级别所需的凭证的组合。例如,凭证策略可以定义:在不需要任何凭证的情况下可以访问与L0访问级别相关联的应用数据114(即,存储在容器114-1中的类别A数据),当计算设备100连接到特定局域网(以下称为“LAN凭证”)时可以访问与L1访问级别相关联的应用数据114(即,存储在容器114-2中的类别B数据),当用户将特定密码(以下称为“密码凭证”)提供给应用时可以访问与L2访问级别相关联的应用数据114(即,存储在容器114-3中的类别C数据),以及当应用运行时间112有权访问密码凭证和LAN凭证的组合(即,凭证的组合)时可以访问与L3访问级别相关联的应用数据114(即,存储在容器114-4中的类别D数据)。
如上所述,使用与相应容器114-1至114-4相对应的容器密钥对存储在容器114-1至114-4中的每一个中的应用数据114进行加密和解密。容器密钥作为密钥数据120安全地存储在与应用110相关联的非易失性存储器中。具体地说,根据反映由策略数据118定义的访问级别策略和凭证策略的结构,将容器密钥存储在密钥数据120中。换句话说,密钥数据120被配置为使得在假定对与策略数据118中定义的特定访问级别相对应的凭证的特定组合的访问的情况下,应用运行时间112能够根据密钥数据120获取指派给与特定访问级别或更低访问级别相对应的数据类别的容器114-1至114-4中的每一个的容器密钥,但是不能根据密钥数据120获取指派给高于特定访问级别的访问级别处的数据类别的任何容器114-1至114-4的凭证密钥。例如,密钥数据120可以被配置为使得在假定对与L2访问级别相对应的凭证的组合的访问的情况下,应用运行时间112能够访问容器114-1(即,类别A应用数据)、容器114-2(即,类别B应用数据)和容器114-3(即,类别C应用数据)的容器密钥,但不能访问容器114-4的凭证密钥(即类别D应用数据)。在这种上下文中,当前可用于应用运行时间112的一个或多个凭证可以被称为“认证状态”,与给定的凭证组合相对应的访问级别可以被称为“当前访问级别”,并且低于当前访问级别的每个访问级别可以被称为“从属访问级别”。
如上所述,应用110的认证状态取决于在需要对应用数据114的访问时可用于应用运行时间112的一个或多个凭证。在这方面,应用运行时间112被配置为利用由操作系统124提供的一个或多个接口126来接收和存储(例如,在非易失性存储器中)一个或多个凭证。例如,应用运行时间112可以利用一个或多个接口126来接收来自计算设备100的用户的输入(即,“用户凭证”)、关于计算设备100或操作系统124的状态或配置的信息(即,“配置凭证”)或关于计算设备100的当前环境的信息(即,“环境凭证”)。
根据一些实施例,应用110包括多个应用编程接口(API),其包括客户端侧API122-1、解锁API 122-2和存储API 122-3。客户端侧API 122-1提供使应用运行时间112能够执行以下操作的功能:查询每个容器114-1至114-4的当前解锁状态,请求一个或多个容器114-1至114-4的锁定状态的改变,并且如果需要,提示计算设备100的用户提供针对特定访问级别所需的一个或多个凭证。类似地,解锁API 122-2被配置为根据应用110的当前认证状态和在策略数据118中定义的并在密钥数据120中反映的访问级别策略来管理对一个或多个容器114-1至114-4的访问。存储API 122-3被配置为根据与要存储的数据相关联的数据类别来管理容器114-1至114-4中的应用数据114的存储。
图2A和2B是示出了根据实施例的存储在策略数据118中的数据的示例性结构的示意图。具体地,图2A示出了定义应用110的访问策略的第一策略数据结构210的示例。图2B示出了定义凭证策略的第二策略数据结构220的示例,如上参考图1所讨论的。在图2A所示的示例中,第一策略数据结构210采取诸如数据库表的表的形式,其中表的第一列212-1对应于数据类别,表的第二列212-2对应于访问级别。类似地,该表的行214-1至214-4中的每一行对应于指派给图1的相应容器114-1至114-4的数据类别。因此,根据图2A所示的示例,行214-1指定类别A数据被指派给访问级别L0,行214-2指定类别B数据被指派给访问级别L1,行214-3指定类别C数据被指派给访问级别L2,行214-4指定类别D数据被指派给访问级别L3。如上面关于图1所讨论的,访问策略还可以定义在图2A中由行214-5反映的默认访问级别,默认访问级别指定L2是应用的默认访问级别。
图2B所示的第二策略数据结构220也采用表的形式,其中第一列222-1对应于访问级别,第二列222-2对应于针对相应访问级别所需的凭证或凭证组合。类似地,该表的行224-1至224-4中的每一行对应于为图1的应用110定义的访问级别。因此,根据图2B所示的示例,行224-1指定对访问级别L0应用数据的访问不需要凭证,行224-2指定对访问级别L1应用数据的访问需要LAN凭证(以下称为“L1凭证组合”),行224-3指定对访问级别L2应用数据的访问需要密码凭证(以下称为“L2凭证组合”),并且行224-4指定对访问级L3应用数据的访问需要LAN凭证和密码凭证(以下称为“L3凭证组合”)。
如上参考图1所讨论的,密钥数据120以反映策略数据118中定义的访问策略和凭证策略的方式安全地存储容器114-1至114-4的容器密钥。在这方面,图3A和3B分别示出了第一密钥数据结构300和第二密钥数据结构320,用于根据图2A和2B的数据结构210和220中分别定义的访问策略和凭证策略来安全存储容器114-1至114-4的容器密钥。在这方面,第一密钥数据结构300采用用于存储与图2A的策略数据结构210中定义的相应访问级别L0至L3相对应的多个访问级别密钥的表的形式。第一密钥数据结构300包括指定数据结构300的版本标识符的第一行302和指定与图1的计算设备100相对应的设备标识符的第二行304。第一密钥数据结构300还包括与策略数据结构210中定义的每个访问级别L0至L3相对应的多行306-0至306-3。在这方面,每一行306-0至306-3存储密钥数据,密钥数据包括由相应访问级别的凭证组合加密的相应访问级别的访问级别密钥、以及适合于标识该相应访问级别的凭证组合的元数据,其中对应的凭证组合被指定在数据结构220中定义的凭证策略中。在图3A所示的示例中,对应于L0访问级别的行306-0存储L0访问级别密钥的未加密副本,而不存储任何凭证元数据(因为在数据结构220中定义的凭证策略指定对L0访问级别数据的访问不需要凭证)。相比之下,分别对应于L1至L3访问级别的行306-1至306-3存储由相应访问级别的凭证组合加密的相应访问级别的访问级别密钥、以及用于标识相应访问级别的凭证组合的凭证元数据。具体地,存储在行306-1中的密钥数据306-1A包括使用对应于L1访问级别的凭证组合(C1)加密的L1访问级别密钥(EC1(LevelKey_L1));存储在行306-2中的密钥数据306-2A包括使用对应于L2访问级别的凭证组合(C2)加密的L2访问级别密钥(EC2(LevelKey_L2));以及存储在行306-3中的密钥数据306-3A包括使用对应于L3访问级别的凭证组合(C3)加密的L3访问级别密钥(EC3(LevelKey_L3))。
针对第一密钥数据结构300中的每个访问级别(针对其的凭证组合在数据结构220中定义的凭证策略中指定)(即访问级别L1、L2和L3)存储的元数据包括指定与相应访问级别相对应的凭证组合的凭证类型、凭证盐(salt)和凭证散列的数据。凭证类型提供关于凭证组合中的凭证的类型、以及如何对凭证进行组合和正确处理以用于对应的访问级别密钥的解密的指示。凭证散列(使用相应凭证盐)指定特定凭证组合的散列值,并且用于识别当前认证状态是否包括对应于相应访问级别的凭证组合。因此,在本示例中,存储在行306-1中的凭证元数据306-1B包括指定L1访问级别的凭证类型(CredentialType_L1)、凭证盐(CredentialSalt_L1)和凭证散列(CredentialHash_L1)的数据;存储在行306-2中的凭证元数据306-2B包括指定L2访问级别的凭证类型(CredentialType_L2)、凭证盐(CredentialSalt_L2)和凭证散列(CredentialHash_L2)的数据;以及存储在行306-3中的凭证元数据306-3B包括指定L3访问级别的凭证类型(CredentialType_L3)、凭证盐(CredentialSalt_L3)和凭证散列(CredentialHash_L3)的数据。
图3B是示出了第二密钥数据结构320的示意图,其采用用于分别存储容器114-1至114-4的多个容器密钥的表的形式。在本示例中,第二密钥数据结构320包括指定数据结构320的版本标识符的第一行322和指定恢复数据的第二行324,其将在下面更详细地讨论。第二密钥数据结构320还包括与存储在策略数据结构210中的访问策略中定义的每个访问级别L0至L3相对应的多行326-0至326-3。在这方面,每行306-0至306-3存储由相应访问级别的访问级别密钥加密的与相应访问级别相对应的容器密钥,并且存储由当前行的访问级别的访问级别密钥加密的相应访问级别以下的每个从属访问级别的访问级别密钥。具体地,行326-0在容器密钥数据326-0A中存储由L0访问级别密钥(ELevelKey_L0[ContainerKey_A])加密的类别A容器114-1的容器密钥,但是不存储从属访问级别的任何访问级别密钥,因为L0是为应用110定义的最低访问级别。行326-1在容器密钥数据326-1A中存储由L1访问级别密钥(ELevelKey_L1[ContainerKey_B])加密的类别B容器114-2的容器密钥,并且在访问级别密钥数据326-1B中存储由L1访问级别密钥(ELevelKey_L1[LevelKey_L0])加密的L0级别访问密钥。类似地,行326-2在容器密钥数据326-2A中存储由L2访问级别密钥(ELevelKey_L2[ContainerKey_C])加密的类别C容器114-3的容器密钥,并且在访问级别密钥数据326-2B中存储由L2访问级别密钥(ELevelKey_L2[LevelKey_L0])加密的L0访问级别密钥和由L2访问级别密钥(ELevelKey_L2[LevelKey_L1])加密的L1访问级别密钥。最后,行326-3在容器密钥数据326-3A中存储由L3访问级别密钥(ELevelKey_L3[ContainerKey_D])加密的类别D容器114-4的容器密钥,并且在访问级别密钥数据326-3B中存储由L3访问级别密钥(ELevelKey_L3[LevelKey_L0])加密的L0访问级别密钥、由L3访问级别密钥(ELevelKey_L3[LevelKey_L1])加密的L1访问级别密钥和由L3访问级别密钥(ELevelKey_L3[LevelKey_L2])加密的L2访问级别密钥。
简要参考图1,在一些实施例中,存储在管理数据116中的管理容器也可以被指派给特定访问级别并使用对应的管理容器密钥进行加密。在图3B所示的实施例中,管理数据116被指派给L2访问级别,并且管理容器密钥作为由L2访问级别密钥(ELevelKey_L2[MgtContainerKey])加密的管理密钥326-2C数据存储在数据结构320的行326-2中。因此,在当前认证状态包括L2凭证组合时,应用运行时间112能够访问存储在管理数据116中的管理容器。
如上所述,在一些实施例中,第二密钥数据结构320可以包括恢复数据324,其使得能够在用户忘记与针对应用定义的最高访问级别相对应的凭证组合的情况下恢复存储在容器114-1至114-4中的经加密的数据。在该示例中,恢复数据包括针对应用定义的最高访问级别(即,针对图3B所示的示例的L3访问级别)的访问级别密钥(EMCK(LevelKey_L3))的副本,所述访问级别密钥由远离计算设备100存储的密码密钥(EMCK)(以下称为“主容器密钥”)来加密。因此,当将主容器密钥提供给应用110(例如,在由远程服务器发起的重置操作中)时,应用运行时间112能够对存储在恢复数据324中的L3访问级别密钥进行解密,重新获得对存储在行326-0至326-3中的容器密钥的访问,并根据需要生成新的访问级别密钥集合。
以类似的方式,行326-3还可以存储由L3访问级别密钥(ELevelKey_L3(MCK))加密的主容器密钥的副本,使得如果应用110被重新配置为指定比当前最高访问级别(L3)更高的新访问级别,则应用运行时间112能够根据主密钥数据332-3D(假设当前认证状态包括L3凭证组合)获取主容器密钥,并且可选地,在恢复数据324中存储由主容器密钥(ELevelKey_L4(MCK))加密的L4访问级别密钥的副本,而不需要从远程服务器请求主容器密钥。
图4是示出了由图1的应用110执行的方法400的流程图,用以根据策略数据118中定义的策略和密钥数据120控制对与应用110相关联的应用数据114的访问。首先,应用运行时间112确定应用110的当前凭证状态[步骤402]。在这方面,步骤402可以例如响应于接收到一个或多个凭证而执行,或响应于来自应用运行时间112的用来访问应用数据114的请求而执行。接下来,应用运行时间112访问存储在第一密钥数据结构300中的凭证元数据,并确定与当前认证状态相关联的最高访问级别[步骤404]。接下来,应用运行时间112使用对应的凭证组合来对存储在第一密钥数据结构300中并且与所确定的访问级别相对应的访问级别密钥进行解密[步骤406]。一旦与所确定的访问级别相对应的访问级别密钥已被解密,应用运行时间112就使用访问级别密钥来对与所识别的访问级别相对应的容器密钥进行解密[步骤408]并且对相对于所确定的访问级别的所有从属访问级别的访问级别密钥进行解密[步骤410]。接下来,应用运行时间112使用在步骤410获得的从属访问级别密钥来对与从属访问级别相关联的容器密钥进行解密[步骤412]。最后,应用运行时间112使用在步骤408和412获得的容器密钥来对应用数据114中的对应容器114-1至114-4进行解密,并提供对存储在其中的应用数据114的访问。
根据一些实施例,可以响应于用来存储或访问与特定数据类别相关联的数据的请求来执行图4的方法400。在这种情况下,应用运行时间112可以在步骤404确定当前认证状态是否包括对应于特定数据类别的凭证组合。如果当前认证状态不包括所需的凭证组合,则应用运行时间112可以提示用户提供一个或多个附加凭证,或通知用户对所需的访问级别的访问不可用。
根据一些实施例,应用110可以安装在处于非活动状态的计算设备100上。在这样的实施例中,密钥数据120可以作为应用110的激活过程的一部分并且根据策略数据118中定义的策略生成。在这方面,应用运行时间112可以被配置为针对如存储在策略数据118中的凭证策略中指定的一个或多个凭证提示计算设备100的用户。在接收到一个或多个凭证之后,应用运行时间112根据凭证策略生成多个访问级别密钥并根据访问策略生成多个容器密钥,并创建第一密钥数据结构300。一旦已经生成了访问级别密钥,应用运行时间112就通过使用访问级别密钥并根据在策略118中定义的访问策略对多个容器密钥进行加密,来生成图3B所示的第二密钥数据结构320。一旦生成了容器密钥,就可以创建或初始化相应的容器114-1至114-4以存储应用数据114。
如上所述,根据一些实施例,存储在管理数据116中的管理容器可被指派给特定访问级别,并由对应的访问级别密钥进行加密。因此,在当前认证状态不允许访问指派给管理容器的访问级别时,应用运行时间112不能访问存储在管理数据116中的配置设置。为了解决这个问题,如图5的实施例所示,应用110可以被配置有指派给最低访问级别(L0)的单独的控制数据130。根据这样的实施例,无论当前认证状态如何,控制数据130都可以由应用运行时间112访问。以这种方式,控制数据130可以用于存储低敏感性配置数据,其确保所规定的最低级别的配置数据一直可用于应用。例如,在应用110由远程服务器管理的情况下,控制数据可以包括发起与远程服务器的通信会话所需的一个或多个凭证,从而确保远程服务器可以关于应用执行临界操作(例如,初始化应用数据114的远程擦除),即使管理容器116保持处于锁定状态。应当理解,存储在控制数据130中的凭证可以仅允许适用于L0访问级别的管理功能的有限子集,而管理数据116可以用于所存储的凭证,其允许应用发起与远程服务器的相对较少限制的通信会话。
根据一些实施例,应用110可以生成与在策略数据118中定义的相应访问级别相对应并由存储在密钥数据120中的对应访问级别密钥加密的一个或多个日志128-1至128-4,如图6所示。对访问级别特定的日志记录的包括确保应用110能够存储核查和调试信息,而不管应用110的当前认证状态如何。如果需要,则日志128-1至128-4可以根据需要进行聚合并上传到远程服务器。
在一个用例中,计算设备100采用便携式计算设备的形式。在图7中示意性地示出了根据实施例的便携式计算设备700的示例。便携式计算设备700可以例如采取蜂窝电话、智能电话、个人数字助理(PDA)、平板计算机、可穿戴计算设备、笔记本计算机等的形式。便携式计算设备700包括屏幕702,屏幕702可以是用于从用户接收输入的触摸屏。备选地或另外地,便携式计算设备700可以包括物理键盘(未示出),其可以与便携式计算设备700集成为一体,或者无线地或通过有线连接与便携式计算设备700连接。便携式计算设备700还包括处理器704、非易失性(即,持久的)存储组件706(例如硬盘驱动器或固态驱动器)和随机存取存储器(RAM)708形式的易失性(即非持久)存储组件。处理器与操作系统相关联地执行已从非易失性存储设备706加载的存储在随机存取存储器708中的指令。这些指令具有实现应用710的一个或多个进程的形式,例如上文参考图1至6所述的应用110。随机存取存储器708也由处理器704上运行的进程用作用于存储和访问电子信号形式的数据的装置,其中在执行该进程期间使用该数据。操作系统提供用于存储、修改和访问保存在非易失性存储设备706中的文件(诸如与上文参考图1至图6所述的应用110相关联的应用数据114)的文件系统。文件系统可以经由操作系统对在处理器704上运行的其他进程可访问。在处理器704上运行的进程还处理经由屏幕702或键盘(未示出)等获得的用户输入。便携式计算设备700还包括网络接口714(或多个网络接口),其允许在处理器704上运行的进程经由通信使用有线和/或无线连接向其他设备和/或服务器发送数据并从其他设备和/或服务器接收数据。通常,网络接口714以软件和硬件(例如,网络接口控制器)的组合来实现,以向处理器704上运行的进程提供必要的网络连接。网络接口714的示例包括Wi-FiTM接口和/或使用诸如全球移动通信系统(GSM)、通用移动电信系统(UMTS)、码分多址(CDMA)、长期演进(LTE)等的标准的蜂窝无线电。便携式计算设备700还可以包括本地通信接口716,诸如蓝牙TM接口或NFCTM接口。本地通信接口716还可以以软件和硬件的组合来实现,并提供与便携式计算设备700附近的一个或多个附加计算设备的连接。
根据一些实施例,提供操作系统的接口126可以提供用于经由计算设备100所提供的一个或多个硬件功能来接收数据的功能。例如,由操作系统124提供的接口之一可以提供用于经由计算设备100的触摸屏、键盘、指针设备、指纹扫描仪、相机或麦克风接收用户输入的功能。此外,由操作系统124提供的另一个接口可以提供用于获得关于设备正在操作的当前环境的信息(例如计算设备的位置(例如,经由计算设备100的GPS模块)、或者计算设备连接到的当前网络)的功能。如上所述,应用运行时间112可以与由操作系统124提供的一个或多个接口126进行通信,以接收用于对应用数据114进行解锁的一个或多个凭证。在这方面,一个或多个凭证可以包括由计算设备100的用户输入的密码或密码凭证、诸如计算设备100的用户的指纹扫描、语音扫描或虹膜扫描之类的生物特征凭证、诸如经由与计算设备100相关联的触摸屏或相机输入的姿态之类的姿态凭证或者诸如计算设备100当前连接到的LAN的网络标识符之类的环境凭证。从上述实施例可以理解,术语“凭证的组合”包含单个凭证或多个凭证。
如上所述,应用110所存储的应用数据114可以包括在执行期间由应用运行时间112使用或生成的任何数据。因此,显而易见的是,术语“应用数据”包括广泛的数据类型和数据格式。例如,应用数据114可以包括文本数据、电子邮件数据、图像数据、音频数据和/或视频数据、或其任何组合。类似地,应用数据114可以根据应用的使用包括公司数据和/或个人数据。
根据一些实施例,由图2B的第二策略数据结构220定义的凭证策略可以可选地为一个或多个访问级别指定多个备选凭证组合。例如,对于给定的访问级别,策略数据结构220可以包括指定用于给定访问级别的多个相应备选凭证组合的多行。在该示例中,第一密钥数据结构300将类似地包括用于给定访问级别的多行,其中每行对应于在第二策略数据结构220中指定的相应备选凭证组合。以这种方式,应用运行时间112能够确定当前认证状态是否包括针对特定访问级别定义的备选凭证组合之一,并对对应的经加密的访问级别密钥进行解密。
应当理解,上面参考图1至图7讨论的方法和技术的至少一部分可以使用存储在计算机可用存储介质上以由计算设备执行的软件指令来实现。作为示例,计算机程序产品的实施例包括用来存储计算机可读程序的计算机可用存储介质,计算机可读程序当在计算设备上执行时使得计算设备执行操作,如本文中前面所描述的。此外,实施例可以以从计算机可用或计算机可读介质可获得的计算机程序产品的形式体现,计算机可用或计算机可读介质提供程序代码,程序代码供计算设备或任何指令执行系统使用或与之结合使用。出于描述的目的,计算机可用或者计算机可读介质可以是任何能够包含、存储、传送、传播或者传输程序的任何装置,所述程序供指令执行系统、装置或设备使用或者与与之结合使用。该装置可以是暂时性的或非暂时性的计算机可读介质。例如,计算机可用或计算机可读介质可以是电子的、磁性的、光学的、电磁的、红外的或半导体系统(或装置或设备)、或者是传播介质。计算机可读介质的示例包括:半导体或固态存储器、磁带、可拆卸式计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘。光盘的当前示例包括压缩光盘只读存储器(CD-ROM)、压缩盘光读取/写入(CD-R/W)和数字多功能光盘(DVD)。
上述实施例应被理解为本发明的说明性示例。设想了本发明的另外的实施例。应当理解,结合任一个实施例描述的任何特征都可以单独使用,或与所描述的其他特征组合使用,并且还可以与任何其它实施例或任何其他实施例的任何组合的一个或多个特征组合使用。此外,在不脱离所附权利要求中限定的本发明的范围的情况下,也可以采用上面未描述的等同物和修改。