具体实施方式
本公开阐述了用于使用一个或多个访问图来访问数据项的方法。本发明是按如下方式来组织的。部分A描述了用于提供对数据项的离线访问的说明性系统。部分B描述了说明部分A的系统的操作的说明性方法。部分C描述了可以被用来实现部分A和B所描述的特征的任何方面的说明性处理功能。
作为正文前的图文,一些附图是在一个或多个结构组件(各自称为功能、模块、特征、元件等等)的上下文中来描述概念的。附图所示出的各种组件可以以任何方式来实现,例如,通过软件、硬件(例如,离散逻辑组件等等)、固件等等,或这些实现的任何组合。在一种情况下,附图中所示出的将各种组件分离为不同的单元可以反映在实际实现中使用对应的不同的组件。可另选地,或者另外,附图中所示出的任何单个组件都可以通过多个实际组件来实现。可另选地,或者另外,对附图中的任何两个或更多单独的组件的描绘可以反映由单一实际组件所执行的不同的功能。要依次讨论的图15提供了关于附图所示出的功能的一个说明性实现的更多细节。
其他附图以流程图形式描述了概念。以此形式,某些操作被描述为构成以某一顺序执行的不同的框。这样的实现是说明性的,非限制性的。可以将此处所描述的某些框分组在一起,并在单一操作中执行,可以将某些框分解为多个组件框,还可以以不同于此处所示出的顺序来执行某些框(包括以并行方式执行框)。流程图所示出的框可以通过软件、硬件(例如,离散逻辑组件等等)、固件、手动处理等等,或这些实现的任何组合来实现。
至于术语,短语“被配置成”包含任何类型的功能可以被构建来执行已标识的操作的任何方式。功能可以被配置成使用,例如,软件、硬件(例如,离散逻辑组件等等)、固件等等,和/或其任何组合来执行操作。
术语“逻辑”包含用于执行任务的任何功能。例如,流程图中所示出的每一个操作都对应于用于执行该操作的逻辑组件。操作可以使用,例如,软件、硬件(例如,离散逻辑组件等等)、固件等等,和/或其任何组合来执行操作。
A.说明性系统
A.1.系统概述
图1示出了用于控制对数据项的访问权限的说明性电子系统100(简称为“系统”)。术语“数据项”应该从广义上理解。数据项是指任何实体出于任何理由希望保护的任何信息单元。数据项可以涉及文档项、图像项、视频项、音频项、代码文件项、标签语言项等等,或其任何组合。此外,数据项可以涉及更加包含性的项的一部分,如文档内的页面,代码文件内的对象或子例程等等。
系统100通过控制实体可以访问数据项的条件来保护数据项。下列公开将可以接收数据项的实体称为“接收方”。在某些情况下,接收方可以是指为各种目的接收和消费数据项的用户或用户组。可另选地,或另外,接收方可以是指接收数据项的计算功能。对于什么可以构成在此处所使用的接收方没有限制。
图1标识了系统100的两个主要组件:图信息分发(GID)模块102和接收器模块104。GID模块102通过向接收器模块104发送简洁的与访问相关的信息的包来操作。接收器模块104使用与访问相关的信息来访问数据项。接收器模块104可以表示多个接收器模块(未示出)中的一个。每一个接收器模块都可以与为任何目的试图访问数据项的任何类型的接收方相关联。例如,接收器模块104可以表示由人接收方操作的计算设备。
图2是说明哪些可以构成与访问相关的信息的媒介。为便于理解,在进一步说明图1之前,将讨论此图。
图2描绘了访问图(202,204,…206)的集合。每一个访问图都提供关于特定主题或尺度的信息。例如,一个访问图可以提供关于一个机构内的报告职责的信息。此访问图被称为与报告相关的访问图。另一个访问图可以描述一个机构内的单元。此访问图被称为与单元相关的访问图。另一个访问图可以描述一个机构内的角色等等。此访问图被称为与角色相关的访问图。对于哪些可以构成访问图没有限制。在一个特定和非限定性的情况下,访问图中的节点可以定义各自的访问类。
可以制定项访问策略,这是由访问图(202,204,…206)表达的信息组合。例如,策略可以指定数据项对于在一个机构的特定单元u内具有特定角色r的接收方是访问的,其中,角色信息被相对于与角色相关的访问图标识,单元信息被相对于与单元相关的访问图标识。
访问图内的信息可以被表示为节点的集合。例如,与报告相关的访问图可包括对应于机构内的成员的节点。此外,访问图可包括将节点连接在一起的链接(或边)。例如,在与报告相关的访问图中,与经理相关联的节点可包括连接到与经理的雇员相关联的节点的链接。这样的访问图可以构成有向图,只要连接节点的链接具有方向性。例如,与经理相关联的节点包括“指向”与经理的雇员相关联的链接。在此示例中,这样的访问图可以采取包括父子关系的节点的层次结构的形式。但是,其他访问图可以采用组织节点的其他方式。
图2还示出了在不同的层次结构中表达节点之间的关系的图之间的关系信息208。例如,图之间的关系信息208可包括将与报告相关的访问图中的经理节点连接到与单元相关的的访问图内的特定单元节点的链接。总起来说,访问图(202,204,…206)和图之间的关系信息208定义节点结构。术语“节点结构信息”是指描述节点结构内的节点和这些节点的互连的信息。
如下文参考随后的图比较详细地描述的,节点结构中的每一个节点都可包括加密密钥(K)和与其相关联的标签(L)。密钥(K)描述了可以通过任何类型的密码算法来生成的非公共信息。密钥可以被接收方用来获取对与密钥相关联的节点的访问。标签(L)描述表示节点的公共信息。此外,连接任何两个节点i和j的每一个链接都包括与其相关联的公共标志。要依次描述的图3提供了关于说明性节点结构中的密钥、标签,以及标志之间的说明性关系的附加信息。
密钥信息共同地指在节点结构内所使用的密钥。标签信息是指在节点结构内所使用的标签。标志信息是指在节点结构内所使用的标志。通用术语“图信息”包含诸如节点结构信息、密钥信息、标签信息,以及标志信息之类的关于节点结构的各种特征的信息。
图2还示出了可以使用一个或多个链接将数据项210与节点结构相关联。更具体而言,数据项210可以被视为节点,如同节点结构内的任何其他节点。如此,数据项210可包括私钥以及与其相关联的公共标签。更具体而言,与数据项210相关联的密钥构成可以被接收器模块104用来解密数据项的内容密钥(Kd)。此外,将数据项210连接到节点结构的其余部分的链接可包括一个或多个与其相关联的标志。链接信息212对应于指定数据项210如何连接到节点结构的上文所描述的信息。
与访问相关的信息是指与链接信息212一起的图信息(包括节点结构信息、密钥信息、标签信息,以及标志信息)。以下面更详细地描述的方式,系统100将与访问相关的信息的简洁包传递到接收器模块104。接收器模块104使用与访问相关的信息来访问它有权接收的数据项。接收器模块104通过使用所提供的与访问相关的信息来从图中揭示附加的密钥信息,有效地遵循通过所述节点结构的路径来执行此任务,所述路径最终通向与“找寻”的数据项相关联的内容密钥。被转发到接收器模块104的与访问相关的信息被视为简洁的,因为它提供允许接收器模块104跟踪到数据项210的路径的足够的信息,但是,不必作为整体包含与节点结构相关联的与访问相关的信息的全部。
利用关于访问图的使用的上述引导性讨论,现在返回到图1。从GID模块102开始,此模块包括(或可以被概念化为包括)执行个别功能的许多组件。一个或多个图提供方(106,108,…110)提供用于构成(图2的)节点结构的访问图信息。例如,一个图提供方可以对应于提供关于一个机构内的成员的信息的人力资源实体。因此,此图提供方可以充当为与报告相关的访问图提供信息的源。此处对可以与GID模块102进行交互的图提供方的类型没有限制。一个或多个图提供方可以表示相对于GID模块102独立的实体。可另选地,或另外,一个或多个图提供方可以由与GID模块102相关联的同一个实体来管理。
一个或多个提供方界面(112,114,…116)与各自的图提供方(106,108,…110)进行交互。提供方界面(112,114,…116),例如,从各自的图提供方(106,108,…110)接收访问图信息。提供方界面(112,114,…116)可以使用任何类型的方法来接收访问图信息,如图提供方(106,108,…110)独立地向提供方界面(112,114,…116)发送访问图信息的推技术,提供方界面(112,114,…116)从图提供方(106,108,…110)请求访问图信息的拉技术等等。在执行此交互时,提供方界面(112,114,…116)可以适应图提供方(106,108,…110)所使用的不同的协议。
提供方界面(112,114,…116)可以将访问图信息格式化为具有一致格式的各个访问图。然后,提供方界面(112,114,…116)可以将访问图存储在主要访问图存储118中。总起来说,访问图可以构成节点结构,如参考图2所讨论的。也可以补充节点结构以包括链接不同的访问图之间的节点的图之间的关系信息208。此外,节点结构可以保存指出节点结构的不同的部分的起源的信息。例如,节点结构可以维护指出与报告相关的访问图中的节点起源于人力资源实体的信息。
图管理器模块120执行涉及在主要访问图存储118中提供的节点结构的各种功能。例如,图管理器模块120可以将密钥信息、标签信息,以及标志信息添加到节点结构中。如参考图2所说明的,密钥信息和标签信息对应于与节点结构中的个别节点相关联的私钥和公共标签。标志信息对应于与节点结构内的节点之间的边相关联的公共标志。稍后的附图将说明如何将密钥信息、标签信息,以及标志信息关联在一起。在每一次对节点结构更新时,例如,当从图提供方(106,108,…110)接收到新的信息,图管理器模块120都可以重新计算密钥信息、标签信息,以及标志信息。
图管理器模块120也可以在选择要被发送到接收器模块104的图信息的简洁包中起作用。从功能上看,图管理器模块120通过选择仅足以允许接收器模块104访问适当的数据项的一组图信息来执行此任务。如此,知道要被访问的数据项是控制哪些图信息适于发送到接收器模块104的一个因素。一般而言,图管理器模块120可以不必作为整体发送与节点结构相关联的整组图信息。如此,图管理器模块120可以试图避免将图信息的过度包括或过度确定的包发送到接收模块104。
如上文所描述的,接收器模块104可以表示多个接收器模块(未示出)中的一个。每一个接收器模块(以及相关联的接收方)可以具有对整组图信息的不同的部分的个别授权。因此,GID模块102可以将图信息的不同的包发送到不同的各自的接收器模块。
提供方同步器模块122与接收器模块104的互补接收器同步器模块124进行交互,以将图信息发送到接收器模块104。再次,图信息可包括节点结构信息、密钥信息、标签信息,以及标志信息的简洁包。提供方同步器模块122可以以任何基础提供图信息。在一种情况下,提供方同步器模块122周期性地发送图信息,如一天一次,或一小时一次等等。可另选地,或另外,提供方同步器模块122基于触发事件来发送图信息。一个这样的触发事件可以对应于从图提供方(106,108,…110)接收到新访问图信息的指示。另一个触发事件可以对应于来自接收器模块104的对于图信息的表达的请求等等。对于提供方同步器模块122可以用来向接收器模块104发送图信息的协议没有限制。
在一种实现中,提供方同步器模块122可以在它确定接收器模块104有权接收图信息之后向接收器模块104发送图信息。例如,对于节点结构中的每一个节点,提供方同步器模块122可以确定接收器模块104是否有权接收该节点的私钥。如果有,则提供方同步器模块122可以授权将该密钥传播到接收器模块104。为执行此任务,提供方同步器模块122可以咨询适当的图提供方(106,108,…110)。例如,假设正被讨论的节点描述是从人力资源实体收集的信息。在此情况下,提供方同步器模块122可以咨询此特定图提供方以确定接收方是否有权接收此节点的私钥。提供方同步器模块122可以使用在节点结构中捕捉的连接性信息来标识节点结构的不同部分的源。
为执行上面的功能,提供方同步器模块122可以执行映射操作,该操作将接收方与节点结构中的考虑中的节点相关。例如,假设考虑中的节点起源于与单元相关的访问图。提供方同步器模块122可以确定正在操作接收器模块104的人p是否与由考虑中的节点所表示的单元相关联。提供方同步器模块122可以通过咨询图提供方(其是考虑中的节点的源),或通过咨询映射信息的某种其他源,来作出此确定。
项提供方模块126执行向接收器模块104发送一个或多个数据项的任务。在一种情况下,系统100可以集成GID模块102和项提供方模块126,以便项项提供方模块126表示GID模块102内的功能模块。在另一种情况下,系统100可以将GID模块和项提供方模块126实现为两个单独的单元(可以由同一个实体或不同的各自的实体来管理它们)。此外,可以在不同的各自的位置或相同的位置实现GID模块102和项提供方模块126。在任何情况下,项提供方模块126都可以与GID模块102进行交互以执行其功能。虽然未示出,但是,系统100可包括多个项提供方模块。例如,每一个项提供方模块126都可以从各自的创作实体或发布实体提供数据项。一个或多个项提供方模块也可以与接收器模块104位于同一本地环境内。
项提供方模块126执行与向接收器模块104提供数据项相关联的各种功能。例如,项提供方模块126可以使用内容密钥(Kd)将原始数据项128加密为已加密的数据项130。项提供方模块126也可以将数据项链接到节点结构。在这样做时,系统100将数据项当作访问类节点,正如节点结构中的起源于各种访问图的其他节点一样。
项提供方模块126可以与图管理器模块120一起工作,以定义表征与数据项相关联的节点(例如,“数据节点”)的信息。例如,节点可包括内容密钥Kd和公共标签Ld。此外,项提供方模块126可以与图管理器模块120一起工作,以添加一个或多个标志,以描述将数据项连接到节点结构的链接。如参考图2所讨论的,链接和标志在此统称为链接信息。在一种情况下,数据项构成节点结构内的虚拟节点。在此方法中,数据项以及其链接信息与节点结构中的其他节点分开存储(由访问图定义)。链接信息虚拟地将数据项链接到节点结构。
最后,项提供方模块126将已加密的数据项130与链接信息一起提供到接收器模块104。系统100可以使用不同的协议来将数据项和链接信息发送到接收器模块104。在一种情况下,可以使用提供方同步器模块122来将数据项和链接信息提供到接收器模块104。在另一种情况下,项提供方模块126可以使用独立的信息路径(以及可能,独立通信协议)来将数据项和链接信息发送到接收器模块104。将数据项和链接信息传输到接收器模块104的动作可以使用任何方法,如基于推的方法(其中,项提供方模块126启动传输),基于拉的方法(其中,接收器模块104通过请求它来启动传输)等等。
GID模块102和项提供方模块126可以可任选地加密它们发送到接收器模块104的与访问相关的信息。例如,GID模块102和项提供方模块126可以使用与特定接收方相关联的密钥信息来加密它发送到该接收方的与访问相关的信息,从而降低未经授权的实体可以访问与访问相关的信息的风险。
现在转向接收器模块104,接收器模块104包括本地访问图存储132。本地访问图存储132存储如由接收器同步器模块124接收到的由GID模块102所发送的图信息。本地访问图存储132也可以可任选地存储由项提供方模块126发送给它(直接或间接地)的已加密的数据项和链接信息。如上文所描述的,图信息和链接信息构成允许接收器模块104访问数据项的与访问相关的信息的经济包。
项访问模块134构成使用图信息和链接信息来实际执行访问数据项的任务的代理。为执行此任务,项访问模块134依赖于路径查找器模块136。路径查找器模块136使用图信息和链接信息来确立通过节点结构来检索数据项的内容密钥(Kd)的路径。一旦被访问,项访问模块134可以使用内容密钥来解密数据项以提供经解密的数据项138。关于项访问模块134和路径查找器模块136操作的方式的附加信息将被推迟到下面的部分A.2。除由图信息和链接信息(统称为“与访问相关的信息”)所定义的约束之外,许可证可以控制接收器模块104对数据项的访问。例如,许可证可以设置用户被允许使用与访问相关的信息来访问数据项的时长。
接收器模块104随着时间的推移更新图信息和链接信息,例如,周期性地或以任何其他基础。因此,本地访问图存储132可以维护与访问相关的信息的多个版本。接收器模块104可以使用不同的策略来管理和使用不同版本的与访问相关的信息。在一种情况下,接收器模块104可以保留与访问相关的信息的旧的(非当前)版本,准许接收器模块104访问链接到旧的与访问相关的信息的对应的旧的(以前接收到的)数据项。然而,在一种情况下,接收器模块104可以禁止使用旧的与访问相关的信息来访问链接到与访问相关的信息的比较新的版本的新接收到的数据项。
在一种情况下,GID模块102和项提供方模块126可以在每一次更新与访问相关的信息时发送与访问相关的信息的完整的副本。在另一种情况下,GID模块102和项提供方模块126可以在每一次更新时发送增量。这些增量可以有选择地提供与访问相关的信息中的相对于与访问相关的信息的最近先前的版本已经变化的部分。可以使用其他策略来提供和维护与访问相关的信息。
概括地说,分发到接收器模块104的与访问相关的信息有效地表示控制对数据项的访问的策略考虑。通过预先分发此与访问相关的信息,GID模块102预先实施由与访问相关的信息所表达的策略考虑。此方面允许接收器模块104以离线操作模式访问和消费数据项。在离线操作模式下,接收器模块104不需要访问集中式策略基础结构以确定它是否被授权访问数据项。因此,此方法在其中接收器模块104没有对集中式报告基础结构的访问权限的那些环境中特别有益(虽然该方法可以用于任何环境中)。
可另选地,GID模块102(或某种其他访问控制服务)也可以提供在线处理功能140。在线处理功能140以在线操作模式控制对数据项的访问。例如,应来自接收器模块104的请求,在线处理功能140通过引用中心存储的策略考虑(未示出)来确定接收器模块104是否有权接收数据项。如果在线处理功能140确定接收器模块104被授权接收数据项,则可以提供使用许可证等等。
在一种实现中,系统100可以使用在线模式或者离线模式来作出访问决定。取决于各种上下文因素,系统100可以在这些模式之间选择。例如,如果在线处理功能140可用,接收器模块104可以依赖于此模块作出决策。如果在线处理功能140不可用,则接收器模块104可以基于存储在其本地访问图存储132中的预先分发的与访问相关的信息来在离线模式下操作。在另一种情况下,接收器模块104可以试图在离线模式下访问数据项。如果由于某种原因它不能在离线模式下执行此功能,则它可以试图使用在线模式来访问数据项。用于组合在线模式和离线模式的其他策略也是可以的。
就物理实现而言,GID模块102可以与可被一个或多个接收器模块104访问的计算机实现的服务相关联。例如,GID模块102可以通过一个或多个服务器类型的计算机、一个或多个数据存储等等来实现。GID模块102可以在单一站点提供或可以分布在多个站点上。项提供方模块126可以同样与计算机实现的服务相关联。该服务可以与GID模块102集成或者与GID模块102分开实现(至少部分地)。
接收器模块104可以与用于访问数据项的任何类型的功能相关联。在一种情况下,接收器模块104可以表示由人接收方操作的计算设备,如通用计算机、膝上型计算机、个人数字助理类型的设备、移动电话设备、游戏控制台等等。接收方可以操作计算设备以任何目的访问任何应用环境中的数据项。
在另一种情况下,接收器模块104可以表示用于访问数据项的计算机实现的本地服务。例如,接收器模块104可以通过一个或多个本地服务器类型的计算机、数据存储等等来实现。一个或多个最终用户类型的接收方可以与这样的本地服务进行交互,以消费可通过本地服务访问的数据项。GID模块102和接收器模块104的其他实现也是可以的。
网络(未示出)可以耦合GID模块102和接收器模块104。网络可以对应于广域网(例如,因特网)、局域网、点到点连接等等,或其任何组合。网络可以通过硬连线的链路、无线链路、路由器、名称服务器、网关等等的任何组合来实现。网络可以由任何协议或协议组合来管制。
A.2.说明性链接策略
图3-10提供关于节点结构内的节点之间的可能的关系的更多细节。因此,这些图形阐明接收器模块104如何可以使用与访问相关的信息的有限的集合来最终“到达”与它试图访问的数据项相关联的节点。这允许接收器模块104访问与数据项相关联的内容密钥(Kd),然后使用内容密钥来解密数据项。用比喻,可以将揭示内容密钥的过程比作跟踪节点结构中的通向内容密钥的路径,连续地揭示沿着该途径的中间密钥。
从图3开始,此图示出了用于使用与父节点相关联的密钥来导出与链接的子节点相关联的密钥的通用策略。此策略基于Mikhail J.Atallah等人所著的“Dynamic and Efficient Key Management for Access Hierarchies(动态和有效的访问层次的密钥管理)”(Proceedings of the 12th ACMConference on Computer and Communications(第12届计算机和通信ACM会议上的会刊),2005,pp.190-202)。
更具体而言,图3示出了有向图中的四个节点(302、304、306,以及308)。节点304和306是相对于父节点302的子节点。节点308是相对于父节点304和306的子节点。假设,在派生开始时,给接收方提供与父节点302相关联的密钥(K1)。还给接收方提供与所有节点相关联的公共标签(L1,L2,L3,L4),以及将节点连接在一起的公共标志(y12,y13,y23,y34)。
接收方可以分别导出与节点304、306,以及308相关联的所有其他密钥(K2、K3、K4),给定上述“种子”信息。首先,任何两个链接的节点i和j之间的任何标志(其中,i是j的父),可以呈现形式yij=Kj XOR H(Ki,Lj),其中,yij是链接节点i和j的边的标志值,Ki是与节点i相关联的密钥,Kj是与节点j相关联的密钥,Lj是与节点j相关联的公共标签,“XOR”是指逻辑“异或”运算,而H(Ki,Lj)是指Ki和Lj的散列(通过任何类型的散列算法来提供)。给定此表达式,接收方可以计算与节点304相关联的密钥K2,以及与节点306相关联的密钥K3。获得了K2或者K3,接收方可以生成与节点308相关联的密钥K4。以此方式,接收方可以通过从K1的初始种子密钥开始揭示密钥,(以及与节点和边相关联的公共信息),连续地沿着节点的层次结构往下走。请注意,不需要给接收方提供节点结构中的所有密钥,只需K1。
进一步请注意,在一种实现中,接收方不被允许使用与后代节点相关联的密钥来导出与父节点相关联的密钥。例如,假设给接收方提供了密钥K2,但不提供密钥K1。在此情况下,由于散列函数的本性,密钥K2无法用于导出密钥K1。同样,被提供了密钥K2的接收方不能使用节点结构来导出密钥K3,反之亦然。
图1-2和4-15呈现了图3所示出的方法没有暗示的对图3所示出的密钥派生方法的改进。
例如,图4示出了用于将数据项402与访问图406中的节点404相关联的方法。假设,例如,节点404标识与报告相关的访问图406内的雇员p。在此情况下,标志ypd可以被用来表达节点404和数据项402之间的链接。标志可以采取ypd=Kd XOR H(Kp,Ld)的形式,其中,Kd是与数据项402相关联的密钥(例如,对应于数据项402的内容密钥),Kp是与节点404相关联的密钥,而Ld是指与数据项402相关联的公共标签。如此,给定了ypd、Kp,以及Ld,接收方可以计算密钥Kd。如上文所描述的,数据项402可以被视为虚拟节点,只要数据项402和标志ypd不必与节点结构(与访问图相关联的)的其他节点存储在一起。
图5示出了用于将第一访问图504中的节点502与另一个访问图508中的节点506相关联的方法。假设,例如,节点502对应于与单元相关的访问图504内的单元u,而节点506标识与报告相关的访问图508内的雇员p。在此情况下,标志ypu可以被用来表达人p节点506和单元u节点502之间的链接。标志可以采取ypu=Ku XOR H(Kp,Lu)的形式,其中,Ku是与单元u节点502相关联的密钥,Kp是与人p节点506相关联的密钥,而Lu是指与单元u节点502相关联的公共标签。如此,给定了ypu、Kp,以及Lu,接收方可以计算Ku。
图6示出了数据项602可以与节点结构中的两个或更多节点相关联的方法。例如,数据项602与第一访问图606中的节点604和另一个访问图610中的节点608相关联。假设,例如,节点604对应于与角色相关的访问图606内的角色r,而节点608标识与单元相关的访问图610内的单元u。在此情况下,标志yur,d可以表达与角色r节点604和单元u节点608相关联的策略因素的逻辑组合。即,标志yur,d可以指定,如果接收方与角色r和单元u两者都相关联,接收方有权访问数据项602,因此,拥有这些节点(604,608)的对应的密钥。标志可以采取yur,d=Kd XOR H((Ku XOR Kr),Ld)的形式,其中,Kd是与数据项602相关联的密钥,Kr是与角色r节点604相关联的密钥,Ku是与单元u节点608相关联的密钥,而Ld是指与数据项602相关联的公共标签。这里,单一标志表示两个链接,例如,将数据项602与角色r节点604连接的链接,以及将数据项602连接到单元u节点608连接的链接。给定了yur,d、Kr、Ku以及Lu,接收方可以计算Kd。图6示出了对于两个策略因素的逻辑AND运算,但是,图6所示出的方法可以被扩展以对于两个以上的策略因素执行逻辑AND运算。
图7示出了数据项702可以以上文对于图6所描述的方式使用逻辑AND组合与节点结构中的两个或更多节点相关联的方法。即,数据项702可以耦合到第一访问图706中的节点704和另一个访问图710中的节点708。假设,例如,节点704对应于与角色相关的访问图706内的角色r,而节点708标识与单元相关的访问图710内的单元u。再次,标志yur,d可以将节点704和708的逻辑组合表达为yur,d=Kd XOR H((Ku XOR Kr),Ld),其中,此表达式中的项如上所述。另外,图7还示出了访问图714(如与报告相关的访问图)的节点712(如人节点p)可以使用标志ypd=Kd XOR H(Kp,Ld)连接到数据项702,其中,Kd是与数据项702相关联的密钥,Kp是与人p节点712相关联的密钥,而Ld是指与数据项702相关联的公共标签。事实上,图7所示出的关系表达了如果:a)接收方具有角色r并属于单元u;或者b)接收方对应于人p,则接收方可以访问数据项702。如此,给定:a)yur,d、Kr、Ku,以及Ld,或者,b)ypd、Kp,以及Ld,接收方可以计算Kd。
图8示出了其中可以使用两个逻辑AND运算来将节点结构中的三个节点与数据项802相关联的示例。即,数据项802连接到第一访问图806(如与报告相关的访问图)中的节点804(如人p节点)。数据项802还连接到另一个访问图810(如与角色相关的访问图)中的节点808(如角色r节点)。数据项802还连接到另一个访问图814(如与单元相关的访问图)中的节点812(如单元u节点)。在此情况下,标志ypr,d可以表达如果接收方对应于具有角色r的人p,接收方有权访问数据项802。标志yur,d表达如果接收方具有角色r并附属于单元u,接收方可以可另选地访问数据项802。标志ypr,d可以采取ypr,d=Kd XOR H((Kp XOR Kr),Ld)的形式,而标志yur,d可以采取yur,d=Kd XOR H((Ku XOR Kr),Ld)的形式,其中,这些表达式中的术语如上所述。如此,给定:a)ypr,d、Kr、Kp,以及Lu,或者,b)yur,d、Kr、Ku,以及Lu,接收方可以计算Kd。
图9与图8的类似之处在于,数据项902连接到第一访问图906(如与报告相关的访问图)中的节点904(如人p节点),以及另一个访问图910(如与单元相关的访问图)中的另一个节点(如单元u节点)。另外,图9还示出了随对本地许可功能912的批准,进行对数据项902的访问。在一种情况下,本地许可功能912可以表示相对于图1的在线处理功能140对于接收器模块104更加本地的任何类型的功能。例如,接收器模块104可以将本地许可功能912实现为接收器模块104的组件。可另选地,接收器模块104可以访问实现本地许可功能912的单独的模块。例如,本地许可功能912可以通过被视为相对于接收器模块104是本地的一个或多个服务器类型的计算设备来实现。(在这方面,提供数据项902的项提供方模块126可以相对于接收器模块104是远程的或者本地的。)
本地许可功能912可以应用任何类型的策略考虑来确定接收器模块104是否有权访问数据项902。如果符合这些策略考虑,则本地许可功能912可以将许可密钥K1提供到接收器模块104。许可密钥K1表示除从GID模块102向接收器模块104提供的一组许可密钥(例如,Kr和Ku)之外所提供的密钥。
在一种实现中,本地许可功能912可以可任选地将其决定基于本质上是上下文的一个或多个策略考虑,如由一个或多个上下文因素914所表示的。只作为一个代表性的示例,本地许可功能912可包括标识移动接收器模块104的当前位置的位置确定功能(例如,GPS功能)。本地许可功能912可以作为位置确定功能的输出的函数来生成密钥K1。例如,如果接收器模块104在其中接收器模块104被授权接收数据项902的某一地理区域内,则本地许可功能912可以生成密钥K1。此示例只是可以被用来将本地许可考虑应用到对接收器模块104在任何给定时间是否有权访问数据项902的确定的各种策略考虑的说明。
图9示出了密钥K1可以以任何方式与节点结构中的其他节点组合以表达控制对数据项902的访问的复杂条件。例如,图9中的标志(yp1,d和yu1,d)指出,如果:a)接收方与雇员p相关联,并被授予了密钥K1;或者b)接收方附属于单元u,并被授予了密钥K1,则接收器模块104可以访问数据项902。应用于GPS情况,这些表达式可以表达,如果接收方在给定地理区域内,并且是人p或者附属于单元u,则他或她有权接收数据项902。这只是一个示例。可以形成其他链接以表达将本地许可功能912链接到访问图的节点结构的其他逻辑关系。
在一种情况下,本地许可功能912可以内部执行用于计算数据项902的内容密钥Kd的散列操作。在此方法中,由本地许可功能912所生成的内容密钥K1不必在由本地许可功能912所定义的访问控制周边的外面释放。这有助于阻止未经授权的实体访问内容密钥K1,最终访问数据项902。
本地许可功能的使用表示对实施权限管理策略的任务的混合解决方案。即,在一种方法中,接收器模块104通过引用在线处理功能140来确定它是否被允许访问数据项902。在线处理功能140通过引用集中式策略考虑来作出授权决定。在另一种方法中,接收器模块104通过引用存储在本地访问图存储132中的预先分发的与访问相关的信息来确定接收方是否有权访问数据项。结果,与访问相关的信息表达控制对数据项的访问的预先实施的策略考虑组。在图9中,接收器模块104依赖于对本地许可功能912的动态分析(“运行时”,可能,上下文相关的),以及反映在与访问相关的信息中的预先实施的策略考虑两者。因此,图9的实现是完全依赖于动态许可服务的第一解决方案和完全依赖于预先分发的与访问相关的信息的第二解决方案之间的混合。
图10呈现了组合参考前面的图形阐述的一些原理的示例。此示例示出了两个访问图。第一(最顶端的)访问图对应于与报告相关的访问图。此访问图标识一个机构内的成员以及其成员之间的报告链接。例如,与报告相关的访问图指出,unit21的雇员报告到unit21的经理,unit21的经理报告到unit2的经理,而unit2的经理报告到起决定作用的机构经理。
第二(最底层的)访问图对应于与单元相关的访问图。此访问图标识机构内的单元以及这些单元之间的关系。例如,与单元相关的访问图指出,unit22是unit2的一部分,而unit2是整个机构的一部分。在两个图中,假定与任何子节点相关联的数据项对其链接的祖先节点可用。鉴于此特征,与单元相关的访问图被颠倒(“上下倒置”),以确保子单元被给予对对于它们的各自的父单元可用的数据项的访问。
假设有许多将与报告相关的访问图的节点连接到与单元相关的访问图的节点的图之间的链接。例如,链接可以从与报告相关的访问图的unit22经理节点指向与单元相关的访问图的unit22节点。图管理器模块120可以将标志yu22m,u22=Ku22 XOR H(Ku22m,Lu22)指定到此链接,其中,Ku22是指与unit22节点相关联的密钥,Ku22m是指与unit22经理节点相关联的密钥,而Lu22是指与unit22节点相关联的公共标签。进一步假设,数据项1002与使用标志yu2,d=Kd XOR H(Ku2,Ld)的unit2节点相关联,其中,Kd是指与数据项1002相关联的密钥(其对应于用于解密数据项1002的内容密钥),Ku2是指与unit2节点相关联的密钥,而Ld是指与数据项1002相关联的公共标签。图信息以及与这些访问图相关联的链接信息可以被用来接收与数据项1002相关联的内容密钥Kd。可以通过基本上遵循访问图中的链接,从接收方拥有私钥的节点开始,来执行此任务。
一般而言,图10所示出的链接信息的类型可以被用来表达节点结构中的节点之间的替换的关系。例如,经理可以对一个机构的另一个部分具有特殊关系,该关系没有反映在从图提供方(106,108,…110)接收到的标准访问图信息中。可以使用链接以及对应的标志来表达此关系。这样的链接可以表达特定访问图内的或两个不同的访问图之间的替换的关系。
路径查找器模块136(图1的)执行发现通过由一个或多个访问图所定义的节点结构的路径以定位接收方被授权访问的所希望的数据项的角色。可以使用任何类型的图搜索算法来发现此路径。在一种情况下,路径查找器模块136可以通过首先标识接收方拥有其密钥的节点来发现可用的路径。这些节点表示起始点。然后,路径查找器模块136可以遵循从这些起始节点发出的路径,标识最终链接到数据项的那些路径。路径查找器模块136也可以更有效地应用各种算法(如广度优先算法等等)来对节点结构进行搜索。
GID模块102的图管理器模块120可以生成图信息以减轻图循环发生。在图循环中,路径查找器模块136可以被“粘”在节点结构内的不在一个数据项结束的循环中。为减轻此现象,图管理器模块120可以在节点结构中提供降低图循环的风险的附加的节点。
B.说明性过程
图11-14是示出了图1的系统100的操作的过程。由于在部分A已经描述了构成系统100的操作的基础的原理,在此部分以概述的方式说明某些操作。
图11是根据一个说明性实现的提供图1的系统100的操作的总览的过程。
在框1102中,GID模块102向接收方提供图信息。图信息可包括节点结构信息(其描述由一个或多个访问图所提供的节点结构的一部分),标签信息(其提供与节点结构中的节点相关联的一组公共标签),标志信息(其提供与节点结构中的边相关联的一组标志),以及密钥信息(其提供接收方有权接收的一组秘密密钥,密钥与节点结构中的各自的节点相关联)。
在框1104中,项提供方模块126向接收方提供数据项。利用内容密钥(Kd)加密数据项。
在框1106中,项提供方模块126可以向接收方提供链接信息。链接信息描述数据项如何与节点结构相关联。链接信息和数据项可以与节点结构分开存储,如此,将数据项确立为节点结构的虚拟节点。链接信息本身可包括描述数据项如何链接到节点结构的一个或多个标志。
在框1108中,接收器模块104接收图信息、已加密的数据项,以及链接信息。
在框1110中,接收器模块104使用接收到的信息来发现节点结构内的通向与数据项相关联的内容密钥(Kd)的路径。
在框1112中,接收器模块104使用导出的内容密钥(Kd)来解密数据项。
图12是说明了如何可以使用图1的GID模块102来生成图信息的过程。
在框1202中,GID模块102从一个或多个图提供方(106,108,…110)接收访问图信息。例如,一个这样的图提供方可以对应于人力资源实体,该实体提供可以被用来填充与报告相关的访问图的信息。
在框1204中,GID模块102将它接收到的访问图信息形成为多个访问图,然后,将访问图存储在主访问图存储118中。总起来说,访问图中的节点定义节点结构。
在框1206中,GID模块102的图管理器模块120生成与节点结构相关联的密钥、标签,以及标志。框1206导致生成图信息。如上所述,图信息可包括节点结构信息、密钥信息、标签信息,以及标志信息。
图13是说明了如何可以使用图1的GID模块102来向接收方提供图信息的过程。
在框1302中,GID模块102确定接收方是否具有接收图信息的权限。例如,假设图信息的发布涉及节点结构内的一个或多个节点。GID模块102可以确定接收方是否被授权访问与这些节点相关联的信息,因此,接收方是否被授权接收与这些节点相关联的密钥。GID模块102可以通过咨询与节点结构中的涉及的节点相关联的一个或多个图提供方(106,108,…110)来作出此确定。节点结构保存指出节点结构中的节点的源的链接。
在框1304中,GID模块1304确定适于发送到接收方的图信息集。如上文所讨论的,包括允许接收方访问数据项的该图信息包可能是适当的,但是,不以别的方式过度包括。
在框1306中,GID模块102的提供方同步器模块122向接收方提供图信息。
图14是说明了如何可以使用图1的GID模块102来向接收方与链接信息一起提供数据项的过程。
在框1402中,项提供方模块126可以利用内容密钥(Kd)来加密数据项。
在框1404中,项提供方模块126可以确定哪些策略考虑将用于控制对数据项的访问。因而这又确定数据项链接到节点结构的方式,如一个或多个标志所定义的。第一类型的标志可以使用单一链接将数据项链接到节点结构。第二类型的标志可以使用两个或更多链接将数据项链接到节点结构。后一类型的标志可以被用来表达两个或更多策略因素之间的逻辑AND运算。与数据项相关联的标签和标志构成链接信息。
在框1406中,系统100可以与链接信息一起存储已加密的数据项。如上文所描述的,系统100可以与节点结构分开地存储数据项和链接信息;此方面使数据项变为节点结构的虚拟链接。
在框1408中,系统100可以向接收方提供数据项和链接信息。
C.代表性的处理功能
图15阐述了可以被用来实现上文所描述的功能的任何方面的说明性电气数据处理功能1500。参考图1,例如,图15所示出的处理功能1500的类型可用于实现系统100的任何方面,如GID模块102、接收器模块104等等。在一种情况下,处理功能1500可以对应于包括一个或多个处理设备的任何类型的计算设备。
处理功能1500可包括诸如RAM 1502和ROM 1504之类的易失性和非易失性存储器,以及一个或多个处理设备1506。处理功能1500还可任选地包括诸如硬盘模块、光盘模块等等之类的各种介质设备1508。当处理设备1506执行由存储器(例如,RAM 1502、ROM 1504或在别处)维护的指令时,处理功能1500可以执行上文所标识的各种操作。更一般而言,指令及其他信息可以存储在任何计算机可读介质1510上,包括,但不仅限于,静态存储器存储设备、磁存储设备、光存储设备等等。术语“计算机可读介质”还包含多个存储设备。术语“计算机可读介质”还包含,例如,通过有线、电缆、无线传输等等,从第一位置传输到第二位置的信号。
处理功能1500还包括用于接收来自用户的各种输入(通过输入模块1514),以及用于向用户提供各种输出(通过输出模块)的输入/输出模块1512。一个特定的输出机制可包括呈现模块1516和相关联的图形用户界面(GUI)1518。处理功能1500还可以包括用于通过一个或多个通信管道1522与其他设备交换数据的一个或多个网络接口1520。一个或多个通信总线1524可通信地将上文所描述的组件耦合在一起。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。