使用元数据完整性验证器验证元数据树的制作方法

文档序号:16168643发布日期:2018-12-07 21:46阅读:194来源:国知局
使用元数据完整性验证器验证元数据树的制作方法

本申请要求2012年8月15日提交的题为“Protocols for Reading and Writing Electronic Medical Data Asynchronously in an Untrusted Cloud Storage”的美国临时专利申请No. 61/683,702以及2012年8月15日提交的题为“Metadata Tree Journaling with Access Right Revocation in an Electronic Medical Cloud Data Store”的美国临时专利申请No. 61/683,705的优先权。这些申请的公开通过引用被并入本文中。



背景技术:

电子健康记录(EHR)可以使得医疗保健参与者(例如,患者、医疗保健提供者、付款人和研究员)能够改善护理协调和对健康信息的访问。尽管EHR可以有助于对医疗保健信息的访问,但是医疗保健信息的共享可能涉及许多复杂的技术和法律问题。技术问题可能包括如何提供对不同参与者的并发访问以及如何根据需要撤销参与者的访问。这些问题对于缺乏资源和专业知识来实现这种共享同时确保医疗保健信息的一致性、私密性和安全性的医疗保健参与者来说可能是难以负担的。

附图说明

图1A-1C是示出电子健康记录储存处理环境的实例的框图。

图2是示出在加密的数据储存装置中的元数据树日志和加密的电子健康记录的一个实例的框图。

图3是示出元数据树节点的一个实例的框图。

图4A-4B是示出元数据树日志的实例的框图。

图5是示出元数据汇总树的一个实例的框图。

图6是示出医疗保健参与者系统的一个实例的框图。

图7是示出元数据完整性验证器系统的一个实例的框图。

图8是示出在并发处理环境中使用元数据树访问加密的电子健康记录的一个实例的示意图。

图9是示出在并发处理环境中使用元数据树储存加密的电子健康记录的一个实例的示意图。

图10是示出具有嵌入的密钥撤销信息的元数据树的一部分的一个实例的框图。

具体实施方式

在下面的详细描述中,参考附图,这些附图形成了该详细描述的一部分,在这些图中借助图示示出了其中可以实施所公开的主题的特定实施例。应当理解可以利用其它实施例,并且可以在不脱离本公开的范围的情况下做出结构或逻辑改变。因此,下面的详细描述不是以限制性意义进行的,并且本公开的范围由所附权利要求限定。

本文描述的实施例提供一种电子健康记录(EHR)储存处理环境,其使得能够在医疗保健参与者(例如,患者、医疗保健提供者、付款人和研究员)之间安全、无缝地共享EHR。所述环境包括储存患者的加密的EHR的加密的数据储存装置和储存每个患者的元数据树日志的元数据树储存装置。每个元数据树日志可以用于重建对应患者的元数据树,其提供对加密的数据储存装置中的患者的EHR的映射。每个患者的元数据树日志可以由被授权的医疗保健参与者(例如医疗保健提供者)访问以允许所述参与者访问并储存患者的EHR。

所述环境还包括用于支持并发读取和写入对患者的元数据树日志的访问的元数据完整性验证器。元数据完整性验证器储存元数据树的完整性信息,其代表元数据树的提交状态。医疗保健参与者系统使用完整性信息来确保由元数据树日志重建元数据树的一致且最新的版本。

元数据储存装置使用日志记录机制储存每个元数据树日志,所述日志记录机制提供只附加且不可变的储存框架。医疗保健参与者系统从元数据储存装置访问患者的元数据树日志,使用该日志和来自验证器的完整性信息重建元数据树,并且使用完整性信息验证重建的元数据树。使用验证的元数据树,医疗保健参与者系统从加密的数据储存装置访问加密的EHR和/或将EHR储存到加密的数据储存装置。当储存加密的EHR时,医疗保健参与者系统还使用日志记录机制更新元数据储存装置上的元数据树日志,并且更新验证器上的完整性信息。

所述环境使用加密的EHR的记录密钥、元数据树的节点的节点密钥以及元数据树的结构的元数据树密钥来控制对EHR的访问。在加密的数据储存装置中储存加密的EHR的医疗保健参与者使用记录密钥来加密EHR。这些参与者还将对应加密的EHR的节点添加到元数据树。所述节点包括对利用对应节点密钥加密的对应加密的EHR的引用。还使用元数据树密钥对元数据树的结构加密以将对元数据树的访问限制到具有元数据树密钥的患者的被授权的医疗保健参与者。

一个或多个医疗保健参与者可以管理患者的元数据树的不同子树。为了管理子树,参与者管理子树中的对应节点的节点密钥以授予和撤销对患者的其他被授权的医疗保健参与者的访问。参与者通过将所选的节点和记录密钥提供给另一参与者来授予访问。参与者通过旋转(rotating)节点密钥并且将撤销信息嵌入元数据树的对应节点中来撤销访问。在密钥撤销之后,其访问已经被撤销的参与者将不能访问在撤销之后储存的加密的EHR或者将新的加密的EHR储存到加密的数据储存装置。然而,被撤销的参与者将继续能够访问在撤销之前储存的加密的EHR。

如本文所使用的,术语“医疗保健参与者”(也称为“参与者”)指的是患者、医疗保健提供者、付款人、研究员或其他在患者的医疗保健过程中涉及的合适的人,其产生和/或使用对应于患者的医疗保健信息。术语“患者”指的是从医疗保健提供者接收至少一个医疗保健服务的人。术语“医疗保健提供者”(也称为“提供者”)指的是将至少一个医疗保健服务提供给患者的人和/或机构。

术语“电子健康记录”(EHR)指的是由医疗保健参与者产生并以电子格式储存在至少一个机器可读的储存介质上的一组医疗保健信息。术语“加密的电子健康记录”指的是已经利用记录密钥加密的电子健康记录。

术语“元数据”指的是描述至少一个记录(例如电子健康记录)的一组信息。术语“元数据树”指的是包括元数据的一组节点,其中每个节点具有与该组中的至少一个其他节点的指定关系。术语“元数据树日志”指的是由只附加、不可变的日志记录机制创建的数据结构,用于储存元数据树的节点。

术语“记录密钥”指的是用于加密和解密患者的EHR的加密密钥。术语“节点密钥”指的是用于加密和解密患者的元数据树中的节点的一部分的加密密钥。术语“元数据树密钥”指的是用于加密和解密患者的元数据树的至少一部分的加密密钥。

图1A是示出电子健康记录储存处理环境10的一个实例10A的框图。环境10A包括电子健康记录(EHR)储存装置20和一组医疗保健参与者系统30(1)-30(m),其中m是大于或等于2的整数。环境10A使用EHR储存装置20和参与者系统30提供创建、访问、储存、管理以及共享患者的EHR的能力。

EHR储存装置20包括数据访问前端(front)22、加密的数据储存装置24和元数据储存装置26。数据访问前端22与参与者系统30通信以管理对加密的数据储存装置24和元数据储存装置26的访问。加密的数据储存装置24储存患者的加密的EHR,其是由参与者系统30产生和提供的。加密的EHR由参与者系统30使用记录密钥来加密和解密。加密的数据储存装置24包括任何合适类型、数目和/或配置的机器可读的储存介质以储存加密的EHR。由于EHR被加密并且由于加密的数据储存装置24不储存EHR的加密密钥(即记录密钥),因此加密的数据储存装置24可以是或者可以不是可信的数据储存装置(例如,加密的数据储存装置24可以由一个或多个不可信的第三方拥有或操作)。

元数据储存装置26储存每个患者的元数据树日志(例如图2中所示的元数据树日志60),其是由一个或多个被授权的参与者系统30产生和提供的。元数据储存装置26实施日志记录机制以便为元数据树日志提供储存框架,其中日志记录机制是只附加且不可变的。如将在下面另外详细描述的,每个元数据树日志可以由参与者系统30使用来重建对应患者的元数据树(例如图2中所示的元数据树70),其提供对加密的数据储存装置24中的患者的EHR的映射。

图2是示出在加密的数据储存装置24中的元数据树日志60和加密的电子健康记录80的一个实例的框图。元数据树日志60包括节点62,其中节点62包括提交节点72、74和76以及未提交节点79。提交节点72、74和76共同形成元数据树70,其可以由参与者系统30重建。元数据树70代表针对对应的加密的EHR 80的具有根节点72、任何数目的中间节点74以及叶节点76的分层树结构。根节点72可以包括标识患者的信息,中间节点74代表EHR 80的逻辑分组(例如由提供者或者依据患者信息的类别(例如处理条件)来分组),以及叶节点76包括对加密的数据储存装置24中的对应的加密的EHR 80的引用78。引用78由参与者系统30用来访问加密的数据储存装置24中的加密的EHR 80。

图3是示出元数据树节点62的一个实例的框图。元数据树节点62包括节点标识符91、父标识符92、参与者标识符93、名称94、版本95、类型96、逻辑计数器97、密钥旋转信息98和引用78。节点标识符91是节点62的全局唯一标识符,以及父标识符92是节点62的父节点的节点标识符91。参与者标识符93是标识创建节点62的医疗保健参与者的信息。名称94是给予创建节点62的医疗保健参与者的名称。版本95是节点62的版本号。类型96是节点62的类型,例如新的、更新后的或密钥撤销。逻辑计数器97是代表在父节点下面的节点62的编号顺序的计数器值(例如在中间节点74(即叶节点76的父节点)下面的第i个叶节点76的逻辑计数器97将是i)。密钥旋转信息98包括可以用于标识节点62的任何子节点的被撤销的节点密钥的信息。引用78标识加密的数据储存装置24中的加密的EHR 80的位置。

如本文所涉及的,用新的类型96标示的元数据树节点62将被称为新节点62。用更新后的类型96标示的元数据树节点62将被称为更新后的节点62,以及用密钥撤销的类型96标示的元数据树节点62将被称为撤销节点62。

在元数据树节点62的其他实例中,可以在元数据树节点62中储存其他合适的信息,例如时间戳、创建节点62的医疗保健参与者的数字签名以及创建对应于节点62的加密的EHR 80的医疗保健参与者的数字签名。

由元数据储存装置26实施的日志记录机制允许非附属提供者(例如,在不同的、不相关的业务实体下实行的提供者)并发地将更新储存到元数据储存装置26。日志记录的只附加和不可变性特性确保当更新节点62时,元数据树日志60储存原始节点62和更新后的节点62两者。

元数据储存装置26可以实施任何合适类型的日志记录机制,例如如图4A的实例中所示的完整的元数据树日志记录或如图4B的实例中所示的递增的元数据树日志记录。

在图4A的实例中,元数据储存装置26A实施完整的元数据树日志记录,其中由参与者系统30执行的每个写操作将整个更新后的元数据树70储存到元数据储存装置26A中的元数据树日志60A。由此,如图4A中所示,第一个写操作利用针对该写操作的附加节点62将整个元数据树70(1)储存到元数据树日志60A。类似地,第n个写操作利用针对该写操作的附加节点62将整个元数据树70(n)储存到元数据树日志60A。

在图4B的实例中,元数据储存装置26B实施递增的元数据树日志记录,其中由参与者系统30执行的每个写操作将针对该写操作的附加节点62储存到元数据储存装置26B中的元数据树日志60B,而没有重新储存先前储存在日志60B中的节点62。由此,如图4B中所示,第一个写操作将针对该写操作的附加节点62(1)储存到元数据树日志60B。类似地,第p个写操作将针对该写操作的附加节点62(P)储存到元数据树日志60B。

返回参考图1A,使用元数据树密钥来加密由元数据储存装置26储存的每个元数据树70的结构部分(即,至少每个树70的每个节点62中的节点标识符91、父标识符93和参与者标识符94)。该元数据树加密允许环境10A将对患者的元数据树70的访问限制到具有元数据树密钥的患者的被授权的医疗保健参与者。元数据树密钥可以是由患者产生的患者特定的密钥。元数据树密钥可以例如当患者向医疗保健参与者注册时被提供给该医疗保健参与者,或者被从一个医疗保健参与者(例如初级护理医师)提供给另一个医疗保健参与者(例如咨询医师)。

每个元数据树70的其他部分(即至少每个节点62中的引用78)由产生节点62的参与者系统30利用节点密钥另外加密。该节点密钥加密防止未经授权的医疗保健参与者获得对加密的数据储存装置24中的加密的EHR的引用78,并由此防止未经授权的医疗保健参与者从加密的数据储存装置24访问加密的EHR。节点密钥可以是由参与者产生的参与者特定的密钥。节点密钥可以被从将加密的EHR 80和对应节点76储存在元数据树70中的医疗保健参与者提供到另一医疗保健参与者,以允许所述另一医疗保健参与者解密节点76中的引用78并由此定位在加密的数据储存装置24中的加密的EHR 80。

包括患者、医疗保健提供者、付款人、研究员和在患者的医疗保健过程中涉及的其他合适的人的参与者(未示出)与对应的参与者系统30交互以使用对应的数据访问适配器32与EHR储存装置20通信以便创建、访问、储存、管理和共享患者的EHR。每个数据访问适配器32与EHR储存装置20上的数据访问前端22通信以访问加密的数据储存装置24和元数据储存装置26。

环境10A还包括在参与者系统30(1)上实施的用于支持并发读取和写入对患者的元数据树日志60的访问的元数据完整性验证器34。元数据完整性验证器34储存代表元数据树70的提交状态的元数据树70的完整性信息150(在图7中示出)。参与者系统30使用从元数据完整性验证器34访问的完整性信息150来确保从元数据树日志60重建元数据树70的一致且最新的版本。由此,元数据完整性验证器34确保由参与者系统30基于元数据树70的有效版本执行读取和写入对加密的数据储存装置24的访问。

完整性信息150包括在元数据树日志60中的最近提交的元数据树的哈希和元数据汇总树(在图5中被示为元数据汇总树100)。哈希和汇总由参与者系统30产生作为将加密的EHR储存到加密的数据储存装置24以及将对应节点62添加到元数据树70的过程的一部分。由于在完整性信息150中的哈希和元数据汇总树代表元数据树70的提交状态,因此哈希还将被称为提交的哈希,并且元数据汇总树还将被称为提交的元数据汇总树。

可以根据元数据树70的中序遍历产生完整性信息150中的哈希,其中中序遍历是使用元数据树70中的每个节点62的逻辑计数器97被确定的。在一个实例中,可以根据元数据树70的整个中序遍历产生哈希。

在另一个实例中,自根节点72(在等式2中称为)开始,可以根据根节点72的哈希使用等式1计算的初始值。

等式1

然后使用逻辑计数器97执行树70的中序遍历,其中在每个节点74和76(在等式2中称为)处,使用等式1更新值Hcurrent。

等式2

在该遍历的最后节点74或76的哈希被包括在中之后,最后的记录整个元数据树70的哈希。

完整性信息150中的元数据汇总树100记录如图5的实例中所示的基于逻辑计数器97的元数据树70的节点62的排序。元数据汇总树100中的每个节点102对应于元数据树70中的节点62并且分别包括对应节点62的逻辑计数器97和参与者标识符93的副本107和103。

在环境10A中,参与者系统30从参与者系统 30(1)上的元数据完整性验证器34访问完整性信息150并且将完整性信息150提供给参与者系统 30(1)上的元数据完整性验证器34。参与者系统 30(1)可以例如对应于患者的初级护理医师或者与该患者有关系的另一参与者。在图1B中所示的环境10的另一个实例10B中,参与者系统30通过数据访问前端22从元数据完整性验证器34访问完整性信息150并且将完整性信息150提供给元数据完整性验证器34。

在图1C中所示的环境10的又一个实例10C中,元数据完整性验证器34可以分布在两个或更多个参与者系统30上作为元数据完整性验证器34(1)-34(m)。在该实例中,每个元数据完整性验证器34(1)-34(m)储存由参与者系统30的对应参与者管理的元数据树70的对应子树的哈希和元数据汇总树。所述哈希和元数据汇总可以如上所述使用对应子树而不是整个元数据树70的中序遍历来产生。

如下面参考图6-9另外详细描述的,参与者系统30从元数据储存装置26访问患者的元数据树日志60,使用日志60和来自元数据完整性验证器34的完整性信息150重建元数据树70,以及使用完整性信息150验证重建的元数据树70。使用验证的元数据树70,参与者系统30从加密的数据储存装置24访问加密的EHR 80和/或将EHR 80储存到加密的数据储存装置24。当储存加密的EHR 80时,参与者系统30还使用日志记录机制更新元数据储存装置26上的元数据树日志60,并且更新元数据完整性验证器34上的完整性信息150。

可以用任何合适类型、数目和配置的处理系统来实施环境10、EHR储存装置20和参与者系统30,所述处理系统均包括用于执行一个或多个存储器中储存的指令的一个或多个处理器。特别地,在一些实施例中可以使用不同的处理系统来实施数据访问前端22、加密的数据储存装置24和元数据储存装置26。参与者系统30的实例在图6中被示出并且在下面被另外详细描述。另外,任何合适类型、数目和配置的有线和/或无线网络设备(未示出)可以用于允许处理系统进行通信。

图6是示出医疗保健参与者系统30的一个实例的框图。参与者系统30包括一组一个或多个处理器122、存储器系统124和至少一个通信设备126,所述一组一个或多个处理器122被配置用于执行在存储器系统124中储存的一组指令。处理器122、存储器系统124和通信设备126使用一组互连128进行通信,该组互连128包括任何合适类型、数目和/或配置的控制器、总线、接口和/或其他有线或无线连接。

参与者系统30代表任何合适的处理设备或处理设备的一部分,例如服务器计算机、膝上型计算机、平板电脑、台式计算机、具有处理能力的移动电话(即智能电话),或另一合适类型的具有处理能力的电子设备。每个处理器122被配置用于访问和执行在存储器系统124中储存的指令并且访问存储器系统124中的数据以及将数据储存在存储器系统124中。存储器系统124包括任何合适类型、数目和配置的易失性或非易失性机器可读的储存介质,其被配置用于储存指令和数据。在存储器系统124中的机器可读的储存介质的实例包括硬盘驱动器、随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器驱动器和卡,以及其他合适类型的磁盘和/或光盘。机器可读的储存介质被认为是物品或制造品的一部分。物品或制造品指的是一个或多个已制造的部件。通信设备126包括任何合适类型、数目和/或配置的通信设备,其被配置用于允许参与者系统30跨越一个或多个有线或无线网络进行通信。

图7是示出实施元数据完整性验证器34的元数据完整性验证器系统140的一个实例的框图。元数据完整性验证器系统140包括一组一个或多个处理器142、存储器系统144和至少一个通信设备146,所述一组一个或多个处理器142被配置用于执行在存储器系统144中储存的一组指令。处理器142、存储器系统144和通信设备146使用一组互连148进行通信并且如上面分别针对处理器122、存储器系统124和通信设备126所描述的那样被构造和操作,该组互连148包括任何合适类型、数目和/或配置的控制器、总线、接口和/或其他有线或无线连接。

如上面参考图1A-1C所提到的,元数据完整性验证器系统140可以与单个参与者系统30集成,如图1A中所示,可以与参与者系统30分开,如图1B中所示,或者可以分布在两个或更多个参与者系统30上,如图1C中所示。

返回参考图6,数据访问适配器32包括指令,所述指令当被处理器122执行时使得处理器122执行数据访问适配器32的功能,这将现在参考图8-10被描述。

图8是示出在并发处理环境中使用元数据树70(n)或70访问加密的EHR 80的一个实例的示意图。参考图6和8,数据访问适配器32通过数据访问前端22从元数据储存装置26访问患者12的元数据树日志60,如由箭头151指示的。元数据储存装置26通过数据访问前端22将元数据树日志60提供给参与者系统30,如由箭头152指示的。在利用如图4A中所示的完整的元数据树日志记录的实施例中,由元数据储存装置26提供的元数据树日志60包括最新的完整的元数据树70(n)。在利用如图4B中所示的递增的元数据树日志记录的实施例中,由元数据储存装置26提供的元数据树日志60包括在元数据树日志60中储存的所有节点62。

数据访问适配器32从元数据完整性验证器34访问元数据树日志60的完整性信息150,如由箭头153指示的。元数据完整性验证器34将完整性信息150提供给参与者系统30,如由箭头154指示的。

数据访问适配器32使用完整性信息150从元数据树日志60重建元数据树70,如由箭头155指示的。在利用图4A中所示的完整的元数据树日志记录的实施例中,数据访问适配器32使用元数据树密钥132解密最新的完整的元数据树70(n)。数据访问适配器32由中序遍历重建元数据树70(n)并且除去使用元数据汇总树100(图5中所示)标识的任何未提交的节点62。数据访问适配器32将未提交的节点62标识为其逻辑计数器97和参与者标识符93不匹配元数据汇总树100中的对应节点102中的逻辑计数器107和参与者标识符103的那些节点62。例如,如果具有相同逻辑计数器97的两个节点62出现在元数据树70(n)中,数据访问适配器32除去其在元数据汇总树100中的对应节点102中的参与者标识符103不匹配的节点62。

在利用图4B中所示的递增的元数据树日志记录的实施例中,数据访问适配器32使用元数据树密钥132解密来自元数据树日志60的所有节点62并且使用中序遍历重建具有所有节点62的元数据树70。数据访问适配器32除去其逻辑计数器97和参与者标识符93不匹配元数据汇总树100中的对应节点102中的逻辑计数器107和参与者标识符103的任何未提交的节点62。例如,如果具有相同逻辑计数器97的两个节点62出现在完整的元数据树70中,数据访问适配器32除去其在元数据汇总树100中的对应节点102中的参与者标识符103不匹配的节点62。

数据访问适配器32使用完整性信息150验证重建的元数据树70,如由箭头156指示的。在从重建的元数据树70(n)或70除去未提交的节点62之后,数据访问适配器32产生包括元数据树70(n)或70的本地哈希(例如,如在上面的实例中描述的元数据树70(n)或70的中序遍历的哈希)的本地完整性信息134,并且比较该本地哈希与来自完整性信息150的提交的哈希。如果本地哈希不同于提交的哈希,则数据访问适配器32确定重建的树70(n)或70无效(即,不是元数据树日志60中的最一致或最新的元数据树),并且重复箭头151-156的功能,如由箭头157指示的。例如,对元数据树日志的写入可能发生在发生箭头151和153的功能的时间之间。一旦本地哈希与提交的哈希相同,则数据访问适配器32确定重建的树70(n)或70有效。

数据访问适配器32确定对应于加密的EHR 80的重建的元数据树70(n)或70中的节点76,如由箭头158指示的。数据访问适配器32使用节点密钥136解密节点76,所述节点密钥136可以已经被产生在参与者系统30内作为将节点76储存在元数据树日志60中的一部分或者由将节点76储存在元数据树日志60中的另一参与者系统30提供给参与者系统30。通过解密节点76,数据访问适配器32从节点76解密引用78,以允许从加密的数据储存装置24访问期望的加密的EHR 80。

数据访问适配器32通过数据访问前端22从加密的数据储存装置24访问加密的EHR 80,如由箭头159指示的。加密的数据储存装置24通过数据访问前端22提供期望的加密的EHR 80,如由箭头160指示的。数据访问适配器32储存加密的EHR 80并使用记录密钥139将加密的EHR 80解密成解密的EHR 138,如由箭头161指示的。记录密钥139可以已经被产生在参与者系统30内作为将加密的EHR 80储存在加密的数据储存装置24中的一部分或者由将加密的EHR 80储存在加密的数据储存装置24中的另一参与者系统30提供给参与者系统30。数据访问适配器32可以显示或以另外的方式将解密的EHR 138输出给参与者。

图9是示出在并发处理环境中使用元数据树70(n)或70储存加密的EHR 80的一个实例的示意图。参考图6、8和9,数据访问适配器32执行图8的箭头151-157的功能直到重建的元数据树70(n)或70有效为止,如由箭头171指示的。数据访问适配器32针对EHR 138的节点76确定元数据树70(n)或70中的定位,如由箭头172指示的。

数据访问适配器32使用记录密钥139将EHR 138加密成加密的EHR 80,如由箭头173指示的。记录密钥139可以由参与者系统30产生作为将加密的EHR 80储存在加密的数据储存装置24中的一部分或者由管理包括节点76的元数据树70(n)或70的子树的另一参与者系统30提供给参与者系统30。

数据访问适配器32通过数据访问前端22将加密的EHR 80提供给加密的数据储存装置24,如由箭头174指示的。数据访问适配器32通过数据访问前端22更新元数据储存装置26中的元数据树日志60,如由箭头148指示的。

在利用如图4A中所示的完整的元数据树日志记录的实施例中,数据访问适配器32通过创建具有对储存的加密的EHR 80的引用78的节点76并且将节点76添加到元数据树70(n)以形成更新后的元数据树70(N+1)来更新元数据树日志60。数据访问适配器32利用节点密钥136加密节点76,利用元数据树密钥132加密更新后的元数据树70(N+1),以及将加密的、更新后的元数据树70(N+1)提供给元数据储存装置26中的元数据树日志60。

在利用如图4B中所示的递增的元数据树日志记录的实施例中,数据访问适配器32通过创建具有对储存的加密的EHR 80的引用78的节点76并且利用节点密钥136加密节点76来更新元数据树日志60。数据访问适配器32将加密的节点76提供给元数据储存装置26,而没有提供元数据树70,以将加密的节点76附加到元数据树日志60。数据访问适配器32还将节点76添加到元数据树70以允许针对更新后的元数据树70产生本地完整性信息134。

利用完整的和递增的元数据树日志记录两者,数据访问适配器32可以产生节点密钥136作为更新元数据树日志60的一部分或者可以从管理其中添加了节点76的元数据树70(n)中的子树的另一参与者系统30接收节点密钥136。

数据访问适配器32试图将更新后的元数据树70(N+1)或70提交给元数据完整性验证器34,如由箭头176指示的。为了这样做,数据访问适配器32针对元数据树70(N+1)或70产生本地完整性信息134,其包括元数据树70(N+1)或70的哈希(例如,如上面的实例中描述的元数据树70(N+1)或70的中序遍历的哈希)和元数据树70(N+1)或70的元数据汇总树100。数据访问适配器32将本地完整性信息134连同来自提交的完整性信息150的提交的哈希一起提供给元数据完整性验证器34。

响应于从数据访问适配器32接收本地完整性信息134和提交的哈希,元数据完整性验证器34比较来自数据访问适配器32的提交的哈希与在元数据完整性验证器34上的提交的完整性信息150中储存的提交的哈希。如果来自数据访问适配器32的哈希匹配在元数据完整性验证器34上储存的哈希,则元数据完整性验证器34将本地完整性信息134提交给在元数据完整性验证器34上的提交的完整性信息150,并且将成功状态提供给数据访问适配器32,如由箭头177指示的。

如果来自数据访问适配器32的哈希不匹配在元数据完整性验证器34上储存的哈希,则元数据完整性验证器34不将本地完整性信息134提交给在元数据完整性验证器34上的提交的完整性信息150,并且将拒绝状态提供给数据访问适配器32。例如,另一参与者系统30可以已经在发生箭头171和176的功能的时间之间将不同的更新后的元数据树70(N+1)或70提交给元数据树日志60。数据访问适配器32重复箭头171-177的功能,如由箭头178指示的,直到更新后的元数据树70(N+1)或70由元数据完整性验证器34成功提交为止。

在上面的实例中,数据访问适配器32可以包括运行记录(logging)服务以记录由数据访问适配器32执行的元数据储存装置26的每次读取和写入的读取和写入进度。如果数据访问适配器32在对元数据储存装置26执行读取或写入操作的同时变成不可操作的(例如崩溃),则数据访问适配器32访问运行记录以便当它变得可操作时恢复任何未完成的读取或写入操作。

如上面所提到的,不同的参与者可以使用不同的参与者系统30管理元数据树70的不同子树。为了管理子树,参与者管理子树中的对应节点74和76的节点密钥以授予和撤销对患者的其他被授权的医疗保健参与者的访问。参与者通过将所选的节点和记录密钥提供给另一参与者来授予访问。参与者通过旋转节点密钥并且将撤销信息嵌入元数据树的对应节点中来撤销访问。

为了撤销其他参与者访问元数据树70的子树,数据访问适配器32通过更新该子树的父节点74中的密钥旋转信息98(例如,通过将撤销的节点密钥的哈希添加到密钥旋转信息98)并且将撤销节点76(即具有设置为密钥撤销的类型96的节点)添加到父节点74下面来将密钥撤销信息嵌入在元数据树70中。数据访问适配器32使用图9中所示以及上面所描述的功能171和175-178来更新具有更新后的父节点74和撤销节点76的元数据树日志60并提交更新后的元数据树70(N+1)或70。

在密钥撤销之后,其不具有更新后的节点密钥的参与者将不能够访问对应于在撤销之后被储存到加密的数据储存装置24的子树的加密的EHR 80或者将对应于该子树的新的加密的EHR 80储存到加密的数据储存装置24。然而,被撤销的参与者将继续能够访问在撤销之前储存到加密的数据储存装置24的加密的EHR 80。

图10是示出具有嵌入的密钥撤销信息的元数据树70的一部分的一个实例的框图。在图10的实例中,已经针对父节点74(1)出现两个单独的密钥撤销,如由撤销节点76(3)和76(5)指示的。用于加密和解密节点76(1)和76(2)的节点密钥的第一版本被撤销,如由撤销节点76(3)指示的,并且用于加密和解密节点76(4)的节点密钥的第二版本被撤销,如由撤销节点76(5)指示的。用于加密和解密节点76(6)的节点密钥的第三版本保持活动。当第一版本被撤销时,执行第一撤销的数据访问适配器32将密钥旋转信息98添加在子树的父节点74(1)中以指示节点密钥的第一版本被撤销(例如通过将节点密钥的第一版本的哈希添加到密钥旋转信息98)。类似地,执行第二撤销的数据访问适配器32将密钥旋转信息98添加在子树的父节点74(1)中以指示节点密钥的第二版本被撤销(例如通过将节点密钥的第二版本的哈希添加到密钥旋转信息98)。

在图10的实例中,具有节点密钥的第一版本的参与者系统30可以访问节点76(1)和76(2),但不可以访问节点76(4)和76(6),并且不可以将新节点76添加在父节点74(1)下面。具有节点密钥的第二版本的参与者系统30可以访问节点76(1)、76(2)和76(4),但不可以访问节点76(6),并且不可以将新节点76添加在父节点74(1)下面。具有节点密钥的第三版本的参与者系统30可以访问节点76(1)、76(2)、76(4)和76(6),并且将新节点76添加在父节点74(1)下面。

为了实施密钥撤销,数据访问适配器32检查父节点74(1)中的密钥旋转信息98以确定在参与者系统30上的节点密钥是否已经被撤销。例如,数据访问适配器32可以确定节点密钥的哈希是否在密钥旋转信息98中。如果是,则数据访问适配器32仅允许读取在节点密钥的撤销之前创建的对节点76的访问并且不允许新节点76添加到父节点74(1)下面。如果不是,则数据访问适配器32确定节点密钥未被撤销并且允许读取所有节点76以及将新节点76添加到父节点74(1)下面。

在上面的实施例中,记录密钥可以基于患者密钥、提供者标识符和节点62在对应于加密的EHR 80的元数据树70中的位置为每个加密的EHR 80唯一地产生。每个患者密钥是对对应患者唯一的加密密钥,并且每个提供者标识符代表可以结合患者密钥用于为提供者的每个患者产生提供者密钥的信息。所述位置代表在元数据树70中的完全限定路径(即统一资源标识符(URI))。提供者可以根据提供者密钥和对应位置产生每个记录密钥。患者可以通过访问提供者标识符和元数据树70、使用患者密钥和提供者标识符产生提供者密钥以及使用提供者密钥和节点62在对应于期望的加密的EHR 80的元数据树70中的位置产生记录密钥,来产生记录密钥。

上面的实施例可以有利地支持对患者的元数据树日志的并发读取和写入协议,同时确保参与者可以重建元数据树的一致且最新的版本。所述实施例提供并发性而不使用锁定,以允许所述实施例被缩放。另外,所述实施例不要求加密的数据储存装置或元数据储存装置是可信的实体。此外,所述实施例提供根据需要撤销访问权限的机制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1