买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】保护有向无环图_普契尼国际有限公司_201580039467.X 

申请/专利权人:普契尼国际有限公司

申请日:2015-05-22

公开(公告)日:2020-11-24

公开(公告)号:CN107548493B

主分类号:G06F13/36(20060101)

分类号:G06F13/36(20060101);G06F13/37(20060101);G06F15/173(20060101);H04L12/40(20060101)

优先权:["20140522 US 62/002127","20150521 US 14/719287"]

专利状态码:有效-授权

法律状态:2020.11.24#授权;2018.01.30#实质审查的生效;2018.01.05#公开

摘要:描述一种用于保护有向无环图(DAG)的方法和装置。在一个实施例中,描述一种用于加密DAG的算法,所述算法在给定起始节点(入口点)、用于该节点的节点密钥和在图中遍历的路径的情况下使实现加密DAG,其中密钥被存储在DAG的边上而不是在DAG的节点上。在DAG的边上而不是在DAG的节点上存储密钥使实现DAG的有效查询以及节点具有可改变的多个父而不影响该节点与不变的父的关系的能力。为在DAG内创建的每个节点生成唯一的且在密码上随机的密钥(在本文中有时被称为唯一的节点密钥)。节点密钥对其生成所为的节点以及还有离开该节点的任何边进行加密。节点密钥不与节点一起存储。相反,节点密钥被存储在到用父节点的节点密钥加密的节点的入边(来自其父节点的边)上。在根节点的情况下,存在来自DAG外部的隐含的边,在那里存储根节点的节点密钥。

主权项:1.一种用于保护第一有向无环图(DAG)的方法,包括:接收在第一DAG中创建第一节点的请求,其中该请求为第一节点指定路径;为第一节点创建第一个唯一的、在密码上安全的密钥;在第一DAG中创建第一节点;用为第一节点创建的第一个唯一的、在密码上安全的密钥加密第一DAG中的第一节点的内容;基于指定的路径确定在第一DAG中创建的第一节点的父节点;在第一DAG中创建从所述父节点到创建的第一节点的边;遍历从第一DAG的根节点到所述父节点的路径,以确定已经为所述父节点创建的第二个唯一的、在密码上安全的密钥;用第二个唯一的、在密码上安全的密钥加密第一个唯一的、在密码上安全的密钥;以及在从所述父节点到创建的第一节点的创建的边上存储用第二个唯一的、在密码上安全的密钥加密第一个唯一的、在密码上安全的密钥的结果,其中不在创建的第一节点本身上存储用于创建的第一节点的第一个唯一的、在密码上安全的密钥。

全文数据:保护有向无环图[0001]相关申请的交叉引用本申请要求2014年5月22日提交的美国临时申请号62002,127的权益,藉此通过引用将其并入。技术领域[0002]本发明的实施例涉及有向图的领域;并且更具体地,涉及保护有向无环图。背景技术[0003]计算机科学中的图是定义完善且被充分理解的概念。有向无环图(DAG是不具有有向循环的有向图,并且由节点和有向边的集合形成,其中每个边将一个节点连接到另一个。在DAG中,存在根节点,根节点是没有入边的节点,并且可以从根节点到达图中的所有其它节点。该根节点的标识符(ID被存储在图本身外部的某处,以在查询时用作到图的入口点。[0004]存在图加密的一些变型,所述变型尝试为通用图维持高水平的灵活性,但是在有向无环图(DAG的情况下大多数不是有效的。例如,存在基于公共查询的预计算索引的系统,使得查询可以用删除假阳性的结果集的进一步过滤来生成期望结果的超集。附图说明[0005]可以通过参考用于图示本发明的实施例的附图和以下描述来最佳地理解本发明。在图中:图1图不根据本发明的实施例保护的示例性DAG;图2是图示根据一个实施例的示例性安全DAG系统的框图;图3图示根据一个实施例的图1的DAG的示例性数据结构表示;图4是图示根据一个实施例的当用户注册利用安全有向无环图的服务或帐户时执行的示例性操作的流程图;图5是图示根据本发明的实施例的在向受保护DAG添加节点时执行的示例性操作的流程图;图6是图示根据本发明的实施例的当从受保护DAG移除节点时执行的示例性操作的流程图;图7图示根据本发明的实施例的用于多个用户的多个受保护DAG,其中第一用户与第二用户共享节点;图8是图示根据一个实施例的在具有安全DAG的系统中当第一用户选定了与第二用户共享数据时执行的示例性操作的流程图;图9是图示根据一个实施例的在具有安全DAG的系统中响应于第一用户选定与第二用户共享数据而执行的示例性操作的流程图;图10图示根据一个实施例的在已经共享节点之后在图7中图示的DAG的示例性数据结构表示;图11图示根据本发明的实施例的在图7中图示的受保护DAG,其中节点已被移动;图12图示根据一个实施例的在已经根据图11移动节点之后在图1中图示的DAG的示例性数据结构表示;图13是图示根据一个实施例的执行以移动受保护DAG中的节点的示例性操作的流程图;图14是图示根据一些实施例的用于遍历受保护DAG的示例性操作的流程图;以及图15图示可在一些实施例中使用的示例性计算机系统。具体实施方式[0006]在以下描述中,阐述许多具体细节。然而,理解的是,可在没有这些具体细节的情况下实践本发明的实施例。在其它实例中,未详细示出公知的电路、结构和技术,以便不模糊对本描述的理解。有了包括的描述,本领域技术人员将能够实现适当的功能性而无需过度的实验。[0007]在说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所述的实施例可包括特定特征、结构或特性,但是可能不是每个实施例都必然地包括特定特征、结构或特性。此外,这样的短语不必然地指代相同的实施例。此外,当结合实施例描述特定特征、结构或特性时,主张其在本领域技术人员的知识内,以结合其它实施例实现这样的特征、结构或特性,无论是否明确描述。[0008]在以下描述和权利要求中,可使用术语“耦合”和“连接”连同其派生词。应当理解的是,这些术语不旨在作为彼此的同义词。“耦合”用于指示两个或更多个元件,其可与或可不与彼此直接物理或电气接触,与彼此协作或交互。“连接”用于指示在与彼此耦合的两个或更多个元件之间的通信的建立。[0009]描述一种用于保护有向无环图DAG的方法和装置。在一个实施例中,描述一种用于加密DAG的算法,所述算法在给定起始节点入口点)、用于该节点的节点密钥和在图中遍历的路径的情况下使实现加密DAG,其中密钥被存储在DAG的边上而不是在DAG的节点上。在DAG的边上而不是在DAG的节点上存储密钥使实现DAG的有效查询以及节点具有可改变的多个父而不影响该节点与不变的父的关系的能力。为在DAG内创建的每个节点生成唯一的且在密码上随机的密钥在本文中有时被称为唯一的节点密钥)。节点密钥对其生成所为的节点以及还有离开该节点的任何边进行加密。节点密钥不与节点一起存储。相反,节点密钥被存储在到用父节点的节点密钥加密的节点的入边来自其父节点的边上。在根节点的情况下,存在来自DAG外部的隐含的边,在那里存储根节点的节点密钥。[0010]在一个实施例中,本文描述的DAG表示文件系统,其中每个节点表示关于文件夹或文件的元数据例如,名称、大小、创建时间戳、修改时间戳、访问控制列表许可、只读标记、隐藏文件标记、其它专用数据等)。文件系统可以是基于云的文件系统。本文所述的安全DAG允许用元数据的有效管理来实现基于云的文件系统存储解决方案,并且同时不能访问与所存储的文件和文件夹相关的任何文件数据或敏感信息。DAG上的查询是使用已经遍历的路径进行的,在文件系统的情况下,所述路径是用户已经导航到其中的文件夹的有序列表。[0011]使用本发明的实施例,在诸如将节点连接到新的父节点同时可能地移除其到现有的父的连接例如,在dag表示文件系统的情况下的移动操作中)之类的公共操作中发现效率。在这样的情况下,仅仅需要创建单个新边不是新节点),并且仅仅需要执行用新的父节点的节点密钥加密用于正被移动的节点的现有节点密钥。[0012]图1图示根据本发明的实施例保护的示例性DAG100AAG100包括在根节点110处开始的若干节点和边,根节点110具有隐含的入边140。为用户生成DAG100,或者DAG100属于用户。隐含的边140存储为用户生成的唯一的加密密钥,在图中被称为用户密钥UK1。该用户密钥UK1也是用于根节点110的节点密钥。在一个实施例中,用用户的凭证加密例如,用用户的密码加密)用户密钥,并且将用户密钥持久地存储在与根节点110的ID相关联的DAG的外部。用户密钥UK1还用于加密根节点110的内容。[0013]根节点11〇是用于节点115和120的父节点。为节点115生成唯一的在密码上安全的随机密钥在图中被称为节点密钥K1,并且为节点120生成唯一的在密码上安全的随机密钥在图中被称为节点密钥K2。节点密钥K1用于加密节点115的内容,并且节点密钥K2用于加密节点120的内容。用用于根节点110的节点密钥(用户密钥UK1加密节点密钥K1,并且结果被存储在从根节点110到节点115的边145上。除了节点密钥K1的(用用户密钥UK1加密的)加密版本之外的节点密钥K1不被持久地存储在从其父节点根节点110到其创建所为的节点节点115的边上。用用于根节点110的节点密钥(用户密钥UK1加密节点密钥K2,并且结果被存储在从根节点110到节点120的边150上。除了节点密钥K2的(用用户密钥UK1加密的)加密版本之外的节点密钥K2不被持久地存储在从其父节点根节点110到其创建所为的节点节点120的边上。[0014]节点120是用于节点125和130的父节点。为节点125生成唯一的在密码上安全的随机密钥在图中被称为节点密钥K3,并且为节点13〇生成唯一的在密码上安全的随机密钥在图中被称为节点密钥K4。节点密钥K3用于加密节点125的内容,并且节点密钥K4用于加密节点130的内容。用用于其父节点的节点密钥用于节点120的节点密钥K2加密节点密钥K3,并且结果被存储在从节点120到节点125的边155上。除了节点密钥K3的(用节点密钥K2加密的)加密版本之外的节点密钥K3不被持久地存储在从其父节点节点120到其创建所为的节点节点125的边上。用用于其父节点的节点密钥用于节点120的节点密钥K2加密节点密钥K4,并且结果被存储在从节点120到节点130的边160上。除了节点密钥K4的(用节点密钥K2加密的)加密版本之外的节点密钥K4不被持久地存储在从其父节点(节点120到其创建所为的节点节点130的边上。[0015]图2是图示根据一个实施例的示例性安全DAG系统2〇0的框图。安全DAG系统200包括密钥生成器21〇、安全DAG模块220、数据存储230和DAG240。安全DAG模块220执行用于保护DAG的操作中的许多,如将在本文后面更详细地描述的。安全DAG模块220接收请求250以执行将在本文后面更详细地描述的不同类型的操作例如,向系统添加新用户,向DAG添加节点,从DAG移除节点,移动DAG内的节点,与另一用户共享DAG的节点)。作为这些操作中的一些的部分,安全DAG模块220可请求密钥生成器210生成255唯一的、在密码上安全的密钥。例如并且如将在本文后面更详细地描述的,安全DAG模块220可请求密钥生成器210为正在DAG240中创建的节点生成唯一的、在密码上安全的密钥。数据存储230存储260DAG240的根节点ID以及用于属于DAG240的用户的用户密钥。根节点ID充当到DAG240中的入口点。当遍历DAG240时,安全DAG模块220从数据存储23〇检索2阳根节点ID和用户密钥。安全DAG模块220对DAG240执行如将在本文后面更详细地描述的操作270例如,向DAG240添加节点,从DAG240移除节点,移动DAG240中的节点,遍历DAG240,以及共享DAG240中的节点)。虽然图2图示单个DAG240,但是应当理解的是,可存在属于若干不同用户的正由安全DAG模块220管理的许多不同DAG。[0016]安全DAG系统200在一些实施例中可以是本地客户端计算设备例如,台式计算机、膝上型计算机、平板计算机、智能电话、机顶盒、游戏控制台、可穿戴计算机等的部分。在其它实施例中,安全DAG系统200可以是在基于云的文件系统中操作的服务器计算设备的部分,其中客户端计算设备发送对于将对其DAG执行的操作的请求,并且被返回来自基于云的文件系统的数据。[0017]图3图示根据一个实施例的DAG100的示例性数据结构表示。应当理解的是,图3中图示的数据结构表示是示例性的,并且本发明不限于用于表示DAG的任何特定数据结构。如图3中所图示,节点表310包括用于节点标识符的列和用于数据的列。节点表310中的每一行标识DAG100中的节点和存储在节点中的数据。例如,节点110存储用用户密钥UK1加密的数据表示为UK1数据),节点115存储用节点密钥K1加密的数据表示为K1数据),节点120存储用节点密钥K2加密的数据表示为K2数据),节点125存储用节点密钥K3加密的数据表示为K3数据),并且节点130存储用节点密钥K4加密的数据表示为K4数据)。边表320包括:标识边的起源的“从ID”列,标识边的目的地的“到ID”列,以及标识存储在该边上的数据的数据列。例如,隐含的边140从隐含的节点开始并且去往节点110并存储用用于用户的凭证加密的用户密钥UK1,边145从节点110开始并且去往节点115并存储用用户密钥UK1加密的节点密钥K1表示为UK1K1,边150从节点110开始并且去往节点115并存储用用户密钥UK1加密的节点密钥K2表示为UK1K2,边155从节点120开始并且去往节点125并存储用节点密钥K2加密的节点密钥K3表示为K2K3,并且边160从节点120开始并且去往节点130并存储用节点密钥K2加密的节点密钥K4表示为K2K4。[0018]图4是图示根据一个实施例的当用户注册利用安全有向无环图的服务或账户时执行的示例性操作的流程图。将参照其它图的示例性实施例来描述这个和其它流程图的操作。然而,应当理解的是,流程图的操作可以由除了参照这些其它图讨论的那些之外的本发明的实施例来执行,并且参照这些其它图讨论的本发明的实施例可以执行与参照流程图讨论的那些不同的操作。[0019]在操作410处,从用户接收请求以针对服务创建帐户,这可包括为用户建立凭证,诸如用于所述服务的用户名和密码。例如,安全DAG模块220可接收请求以创建用户。流程然后移动到操作415,其中为用户生成适于期望的公开密钥密码术类型的公开私有密钥对。流程然后移动到操作420,其中为用户生成被称为用户密钥的唯一的在密码上安全的随机密钥,并且用所述用户密钥加密用户的凭证。例如,安全DAG模块220请求密钥生成器210为用户生成用户密钥。流程然后移动到操作425,其中安全DAG模块220在DAG240中为用户创建新的根节点,并且用生成的用户密钥加密根节点的内容。流程然后移动到操作430,其中根节点标识符与用户密钥一起被存储在DAG外部。例如,安全DAG模块220使根节点ID和用户密钥被存储在数据存储230中。[0020]向DAG添加节点图5是图示根据本发明的实施例的在向受保护DAG添加节点时执行的示例性操作的流程图。在操作510处,安全DAG模块220接收请求以在DAG240中为用户创建新节点N。该请求为新节点指定路径。通过参照图1的示例的方式,正在创建节点120。可结合想要创建或存储信息的用户而从用户接收请求。例如,在其中DAG表示文件系统的实施例中,可从正在文件系统中创建文件夹(目录或文件的用户接收请求。流程然后移动到操作515。[0021]在操作515处,安全DAG模块220使通过使用密钥生成器210来创建用于新节点N的唯一的在密码上安全的密钥K。密钥生成器210可以是在密码上安全的伪随机数生成器。流程然后移动到操作520,其中安全DAG模块220在DAG240中为新节点N创建节点。例如关于图1,创建节点120,包括在图3的节点表310中添加条目。[0022]流程然后移动到操作525,其中安全DAG模块220用为节点N创建的密钥K加密正被添加的节点N的内容。例如关于图1,用为节点120生成的节点密钥K2加密节点120的内容。应当理解的是,加密节点内容被存储在节点上,加密和解密节点的密钥不被存储在节点上。[0023]流程然后移动到操作530,其中安全DAG模块220基于在请求中提供的路径来确定新添加的节点N的父节点PN。例如关于图1,节点120的父节点是根节点110。流程然后移动到操作535。[0024]在操作535处,安全DAG模块220在DAG240中创建从新创建的节点(N的父节点PN到新创建的节点N的边。例如关于图1,创建从根节点110到节点120的边150,并且在边表320中为创建的边添加条目。[0025]流程然后移动到操作540,其中安全DAG模块220遍历从根节点到新创建的节点N的父节点PN的路径,以确定父节点PN的节点密钥PK。父节点PN的节点密钥以加密形式用其父节点的节点密钥加密,或者在父节点是根节点的情况下用用户密钥加密存储在从其父节点到其自身的边上。例如,参照图1,120的父节点(其是根节点110的节点密钥以加密形式(由用户密钥UK1加密存储在边140上。将关于图9更详细地描述当遍历路径时执行的操作。流程从操作540移动到操作545。[0026]在操作545处,安全DAG模块220用父节点PN的节点密钥PK为新创建的节点N加密节点密钥K。例如关于图1,节点120的节点密钥K2用其父节点的节点密钥(用户密钥UK1加密。[0027]流程然后移动到操作550,其中安全DAG模块220在从父节点PN到新创建的节点N的边上存储用父节点PN的节点密钥PK为新创建的节点(N加密节点密钥K的结果。例如关于图1,边150存储用用户密钥UK1加密节点120的节点密钥K2的结果。[0028]从DAG移除节点图6是图示根据本发明的实施例的当从受保护DAG移除节点时执行的示例性操作的流程图。在操作61〇处,安全DAG模块220接收请求以从DAG240移除节点N。该请求指定待移除的节点N的路径。该请求可随着用户想要从图删除信息而被接收。例如,在其中DAG240表示文件系统的实施例中,可从想要删除文件系统中的文件夹或文件的用户接收请求。流程然后移动到操作615。[0029]在操作615处,安全DAG模块220基于提供的路径确定待移除的节点(N的父节点PN。如果不存在父节点(即,待移除的节点是根节点),则从DAG移除所有节点和边。然而,在存在父节点的情况下,仅从DAG移除某些节点和边。流程移动到操作620,其中安全DAG模块220确定在节点N下方的所有节点和边正被移除的节点的子)(如果有的话)。例如,如果图1的节点120正被移除,则安全DAG模块220确定节点125和130以及边155和160在节点12〇下方。流程然后移动到操作625,其中安全DAG模块220从DAG240移除以下内容:来自DAG240的节点N、从父节点PN到节点N的边以及在节点N的路径下方的任何节点和边。[0_]与另一用户共享节点在一些实施例中,用户能够与另一用户共享他们的节点。例如,在其中安全DAG表示基于云的文件系统的实施例中,第一用户可以选择他们的文件系统中的任何点例如,目录或文件来与一个或多个其他用户共享。在一些实施例中,接收共享文件或文件夹的用户可选择在他们自己的客户端设备上安装共享文件或文件夹,并且通过访问在他们的操作系统内的文件和文件夹的通常方式来访问共享文件或文件夹。在一些实施例中,进行共享的用户可对共享设置访问限制,并且对于不同的用户可能是不同的(例如,只读、修改、完全控制等。[0031]图7图示根据本发明的实施例的用于多个用户的多个受保护DAG,其中第一用户与第二用户共享节点。图7图示关于图1图示和描述的安全DAG100以及属于第二用户的安全DAG700。安全DAG700包括具有隐含的入边720的根节点710,隐含的入边720存储为属于安全DAG700的用户生成的唯一的加密密钥,在图7中被称为用户密钥UK2,用户密钥UK2是用用于属于安全DAG700的用户的凭证加密的。该用户密钥UK2也是用于根节点710的节点密钥。在一个实施例中,用户密钥UK2是用第二用户的凭证加密的例如,用用户的密码加密),并且与根节点710的ID相关联地被持久地存储在DAG700外部。用户密钥UK2还用于加密根节点710的内容。根节点110是用于节点715的父节点。为节点715生成唯一的在密码上安全的随机密钥在图中被称为节点密钥K5。节点密钥K5用于加密节点715的内容。节点密钥K5是用用于根节点710的节点密钥(用户密钥UK2加密的,并且结果被存储在从根节点710到节点715的边7¾上。除了节点密钥K5的(用用户密钥UK2加密的)加密版本之外的节点密钥K5不被持久地存储在从其父节点根节点710到其创建所为的节点节点715的边上。[0032]在某一时刻,属于安全DAG100的用户选择了与属于安全DAG700的用户共享与节点12〇相关联的数据(以及节点120的子节点的固有地任何数据)。图8是图示根据一个实施例的在具有安全DAG的系统中当第一用户选定了与第二用户共享数据时执行的示例性操作的流程图。在操作810处,安全DAG模块220接收请求以与第二用户(用户2共享第一用户(用户1的节点N。该请求指定要共享的节点。参照图7,属于安全DAG100的用户已经请求与属于安全DAG700的用户共享节点120的该数据。流程然后移动到操作815。[0033]在操作Slf5处,安全DAG模块220遍历DAG中从根节点到正被共享的节点N的路径,以确定用于节点N的节点密钥K。用于正被共享的节点N的节点密钥K被存储在来自处于加密状态(用父节点的节点密钥加密或者在父节点是根节点的情况下用用户密钥加密)的其父节点的其入边上。例如参照图1,用于节点120的节点密钥以加密形式(用根节点110的节点密钥加密被存储在边150上。流程然后移动到操作820。[0034]在操作82〇处,安全DAG模块220为第二用户(该用户意图接收共享数据生成指示第一用户想要与第二用户共享数据的消息。该消息包括用于正被共享的节点N的节点密钥K以及用第二用户的公共密钥加密的正被共享的节点N的节点id例如,该消息包括加密的结果([K,NodeID_N],Public_Key_User2。操作然后流动到操作825,其中安全DAG模块22〇使向弟二用尸传送消息。例如,可向第二用户发送电子邮件或其它通信,第二用户然后可选择是否接受共享。[0035]流程然后移动到操作83〇,在一些实施例中该操作是可选的,其中安全DAG模块220导致指定第一用户已经允许第二用户访问待存储的节点N的所有权关系。在一些实施例中,第一用户可撤销给予第二用户的对节点N的访问。[0036]图9是图示根据一个实施例的在具有安全DAG的系统中响应于第一用户选定与第二用户共享数据而执行的示例性操作的流程图。在操作910处,安全DAG模块220接收用第二用户的公开密钥加密的消息,该消息指示第一用户想要与第二用户共享数据。虽然未被描述为流程的部分,但是第二用户可能已经选定接受共享。流程然后从操作910移动到操作915,其中安全DAG模块220用用于第二用户的私有密钥解密消息,该消息揭示正被共享的节点的节点ID和用于正被共享的节点的密钥节点。例如关于图7,用用于第二用户的私有密钥解密消息揭示节点120的节点ID和节点120的节点密钥K2。流程然后移动到操作920。[0037]在操作920处,安全DAG模块220确定路径以在DAG700中为第二用户放置共享。在一个实施例中,路径被自动地放置在DAG700的根节点下。在另一个实施例中,路径由第二用户选择。在图7的示例中,共享被放置在根节点710下J此在图7的示例中,根节点710是正被共享的节点节点120的父节点。流程然后移动到操作925。[0038]在操作9¾处,安全DAG模块220遍历路径以确定用于在DAG700中为第二用户共享的节点的父节点的节点密钥。例如参照图7,安全DAG模块220遍历路径并且确定用于根节点710其是正被共享的节点的父节点)的节点密钥。在图7的示例中,用于根节点710的节点密钥是用户密钥UK2。流程然后移动到操作930。[0039]在操作930处,安全DAG模块220在DAG中为第二用户创建从父节点PN到共享节点N的边。例如参照图7,创建从根节点710到节点120的边730。流程然后移动到操作935,其中安全DAG模块M0用用于在DAG700中为第二用户共享的节点的父节点的节点密钥加密用于正被共享的节点的节点密钥〇〇。例如参照图7,节点密钥K2用用户密钥UK2加密。流程然后移动到操作940,其中安全DAG模块220在从父节点PN到共享节点N的边上存储用用于正被共享的节点的父节点的节点密钥加密用于正被共享的节点的节点密钥K的结果。例如参照图7,边730存储用用户密钥UK2加密的节点密钥K2。[0040]应当理解的是,当节点被与另一用户共享时,共享节点的任何子节点(如果有的话也被共享。例如参照图7,由于节点120被共享,所以节点125和130也被共享,因为它们是节点120的子节点。因此第二用户将不仅有权访问节点120的数据,而且有权访问节点125和130的数据。例如,如果第二用户想要访问节点130,将由安全DAG模块接收请求,该请求标识从第二用户的DAG的根节点710到第一用户的DAG的节点120并且然后到第二用户的节点130的路径。安全DAG模块将使用第二用户的用户凭证解密入边720以揭示用户密钥UK2,然后使用用户密钥UK2解密边730以揭示节点密钥K2,然后使用节点密钥K2解密边160以揭示节点密钥K4,并且最终使用节点密钥K4解密节点130的内容。[0041]虽然图9己经被描述为由相同的安全DAG模块例如,在连接到多个客户端设备的服务器上执行,但是可能在不同于进行共享的客户端计算设备的客户端计算设备上本地地执行操作。换句话说,在一些实施例中,关于图8和9描述的操作在中心位置中(诸如在云中)被执行;在其它实施例中,关于图8描述的操作在第一客户端计算设备中被执行,并且关于图9描述的操作在第二客户端计算设备中被执行。[0042]图10图示根据一个实施例的在节点120已被共享之后的DAG700的示例性数据结构表示。应当理解的是,图10中图示的数据结构表示是示例性的,并且本发明不限于用于表示DAG的任何特定数据结构。如图10中所图示,节点表1〇1〇示出:节点710存储用用户密钥UK2加密的数据表示为UK2数据),并且节点715存储用节点密钥K5加密的数据表示为K5数据)。边表1020示出:隐含的边720从隐含的节点开始并且去往节点710并存储用用于用户的凭证加密的用户密钥UK1,边725从节点710开始并且去往节点715并存储用用户密钥UK2加密的节点密钥K5表示为UK2K5,并且边730从节点710开始并且去往节点120并存储用用户密钥UK2加密的节点密钥K2表示为UK2K2。[0043]移动节点在一些实施例中,用户能够将节点移动到安全DAG的不同部分。例如,在其中安全DAG表示基于云的文件系统的实施例中,用户可以选择将文件夹或文件移动到文件系统中的另一位置。移动节点将导致创建到新节点的连接,并且仅仅需要创建单个新边不是新节点本身),并且仅需要执行用新的父节点的节点密钥加密用于正被移动节点的现有节点密钥。[0044]图11图示根据本发明的实施例的在图7中图示的受保护DAG,其中节点已被移动。如图11中所图示,正将节点120从在直接在根节点110下方的子节点移动成为在节点115下的子节点。创建从新的父节点115到正被移动的节点(120的新边165。新边165存储由新的父节点115的节点密钥K1加密的节点120的节点密钥K2。边150被从DAG100移除。移动操作不影响节点120从属于DAG100的用户到属于DAG700的用户的共享。[0045]图12图示根据一个实施例的在己经根据图11移动节点12〇之后的DAG100的示例性数据结构表示。应当理解的是,图12中图示的数据结构表示是示例性的,并且本发明不限于用于表示DAG的任何特定数据结构。如图12中所图示,节点表1210与节点表310相同,并且仅仅改变了边表1220中到节点120的边。[0046]图13是图示根据一个实施例的执行以移动受保护DAG中的节点的示例性操作的流程图。在操作1310处,安全DAG模块220接收请求以移动节点N。该请求可从用户接收。例如,在其中DAG表示文件系统的实施例中,该请求可作为用户将文件夹或文件移动到文件结构中的另一位置的结果而被接收。例如参照图11,正将节点120从直接在根节点11〇下移动成为直接在节点II5下。该请求指定用于移动从和到)的路径。流程然后移动到操作1315,其中安全DAG模块220遍历从根节点到正被移动的节点N的路径,以确定用于该节点的节点密钥00。例如参照图11,遍历从根节点110到节点120的路径,以确定用于节点120的节点密钥K,该节点密钥是节点密钥120。节点密钥120以加密形式(用用户密钥UK1加密存储在边150上。流程然后移动到操作1320。[0047]在操作1320处,安全DAG模块220基于提供的路径确定用于正被移动的节点N的新的父节点PN。例如关于图11,新的父节点PN是节点115。流程然后移动到操作1325,其中安全DAG模块22〇在DAG中创建从新的父节点PN到正被移动的节点N的边。例如参照图11,创建从节点115到节点120的新边165。流程然后移动到操作1330。[0048]在操作1330处,安全DAG模块220遍历从根节点到新的父节点PN的路径,以确定用于新的父节点的节点密钥PK。用于新的父节点的节点密钥(PK存储在其入边(用其父节点的节点密钥加密,或者在新的父节点是根节点的情况下,用用户密钥加密上。例如关于图11,用于新的父节点115的节点密钥存储在用用户密钥UK1加密的其入边145上。流程然后移动到操作1335。[0049]在操作1335处,安全DAG模块220用用于新的父节点PN的节点密钥PK加密用于正被移动的节点N的节点密钥K。流程然后移动到操作1340,其中安全DAG模块220在从新的父节点PN到正被移动的节点N的边上存储用用于新的父节点PN的节点密钥PK加密用于正被移动的节点(N的节点密钥K的结果。例如参照图11,安全DAG模块220用节点密钥K1加密节点密钥K2,并且在从节点115到节点120的边165上存储结果。流程然后移动到操作1345,其中安全DAG模块220移除从旧的父节点到正被移动的节点的边。[0050]遍历图形图14是图示根据一些实施例的用于遍历受保护DAG的示例性操作的流程图。在操作1410处,安全DAG模块220接收对节点N处的数据的请求,其中该请求指示路径。在其中安全DAG表示文件系统的情况下,该请求可作为用户导航到他们的文件系统内的文件夹或文件的结果而被接收。该请求指示路径。作为贯穿该流程图的示例,该请求指示对图1的节点125处的数据的请求。流程然后移动到操作1415。[0051]在操作1415处,安全DAG模块220确定用于进行请求的用户的用户密钥。例如,安全DAG模块220用提供的用户的凭证解密存储在用于用户的根节点的隐含的入边上的数据,提供的用户的凭证可能已经连同对数据的请求一起被提供,或者己经在时间上更早地被提供。例如关于图1,安全DAG模块220使用用户凭证解密存储在隐含的边140上的数据以揭示用户密钥UK1。[0052]假设确定了用于用户的用户密钥UK,流程然后移动到操作1425,其中安全DAG模块220遍历从用于用户的图的根节点开始的在安全DAG中提供的路径,并且在每个步骤处执行1430-1440的操作,其中(P是当前路径段,(P-1是先前路径段,并且P+1是下一路径段,并且其中根节点和用户密钥UK是当P等于零时的隐含的P-1段。在操作1430处,安全DAG模块220从节点P-1遍历到节点P,以捕获存储在节点P-1到节点P之间的边上的数据。例如关于图1,安全DAG模块220从根节点110遍历到节点120以捕获存储在边150上的数据。如先前所述,存储在边150上的数据是已经用用户密钥UK1加密的节点密钥K2。流程然后移动到操作1435,其中安全DAG模块220用用于节点P-1的节点密钥解密捕获的边数据以得到用于节点P的节点密钥。例如参照图1,安全DAG模块220使用用户密钥UK1解密存储在边150上的数据以揭示节点密钥K2。流程然后移动到操作1440,其中安全DAG模块220确定节点P是否是最后的路径段。如果它是最后的路径段,则流程移动到操作1450。如果它不是最后的路径段,则流程移动到操作1445。在访问对应于节点125的数据的示例中,节点120不是最后的路径段。[0053]在操作1445处,安全DAG模块220将当前路径段P设置为先前路径段P-1,并将下一路径段P+1设置为当前路径段P。流程然后移动回到操作1430。例如,关于图1,安全DAG模块220然后从节点120遍历到节点125以捕获存储在边155上的数据。存储在边155上的数据包括由节点密钥K2加密的节点密钥K3。在捕获存储在边155上的数据之后,安全DAG模块220使用节点密钥K2解密数据以揭示节点密钥K3。由于节点125是最后的路径段上的节点,于是流程将移动到操作1450。[0054]在操作1450处,安全DAG模块220捕获存储在节点P上的数据。例如关于图1,安全DAG模块220捕获存储在节点125上的数据,该数据是用节点密钥K3加密的加密数据。流程然后移动到操作1455,其中安全DAG模块220使用在从节点P-1到节点P的最终边上找到的密钥来解密捕获的数据。例如参照图1,安全DAG模块220使用节点密钥K2解密节点125的捕获的数据以揭示节点125的内容。[0055]应当理解的是,在其中在节点处存储所请求的数据的情况下,不需要访问沿着路径的所有节点,仅仅访问边和最终节点。[0056]虽然图14图示当请求的数据在节点处时用于遍历DAG的示例性操作,但是当请求的数据是以加密形式存储在边上的节点密钥时,执行遍历路径和解密的类似操作。例如,当向图添加节点时,以迭代方式遍历从根节点到正添加的节点的父节点的路径以揭示该父节点的节点密钥。[0057]如图15中所图示,是数据处理系统的形式的计算机系统1500包括与处理系统1520、电源1525、存储器1530和非易失性存储器1540例如,硬驱、闪存、相变存储器PCM等耦合的(一个或多个总线1550。(一个或多个总线1550可通过如本领域中公知的各种桥、控制器和或适配器彼此连接。处理系统1520可从存储器1530和或非易失性存储器1M0检索(一个或多个)指令,并且执行所述指令以实行本文所述的操作。总线155〇将以上组件互连在一起,并且还将那些组件互连到显示控制器和显示设备1570、输入输出设备1580例如,NIC网络接口卡)、光标控件例如,鼠标、触摸屏、触摸板等)、键盘等和可选的一个或多个无线收发器1590例如,蓝牙、WiFi、红外等)。在一个实施例中,在计算机系统1500上实现安全DAG系统200。[0058]如本文所述,指令可以指代被配置成执行某些操作或具有预定功能性的硬件诸如专用集成电路ASIC的特定配置或被存储在于非暂时性计算机可读介质中体现的存储器中的软件指令。因此,可以使用在一个或多个电子设备例如,客户端计算设备、服务器)上存储和执行的代码和数据来实现图中所示的技术。这样的电子设备使用计算机可读介质诸如非暂时性计算机可读存储介质例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)和暂时性计算机可读通信介质(例如,电、光、声或其它形式的传播信号一一诸如载波、红外信号、数字信号来存储和传送在内部和或通过网络与其它电子设备代码和数据。另外,这样的电子设备典型地包括耦合到一个或多个其它组件诸如一个或多个存储设备非暂时性计算机可读存储介质)、用户输入输出设备例如,键盘、触摸屏和或显示器和网络连接)的一组一个或多个处理器。该组处理器和其它组件的耦合典型地通过一个或多个总线和桥也被称为总线控制器)。因此,给定的电子设备的存储设备典型地存储用于在该电子设备的一组一个或多个处理器上执行的代码和或数据。当然,本发明的实施例的一个或多个部分可使用软件、固件和或硬件的不同组合来实现。[0059]虽然已经根据若干实施例描述了本发明,但是本领域技术人员将认识到,本发明不限于所述的实施例,可以在所附权利要求的精神和范围内用修改和变更来实施本发明。因此本描述被视为例证性的而不是限制性的。

权利要求:1.一种用于保护第一有向无环图DAG的方法,包括:接收在第一DAG中创建第一节点的请求,其中该请求为第一节点指定路径;为第一节点创建第一个唯一的、在密码上安全的密钥;在第一DAG中创建第一节点;用为第一节点创建的第一个唯一的、在密码上安全的密钥加密第一DAG中的第一节点的内容;基于指定的路径确定在第一DAG中创建的第一节点的父节点;在第一DAG中创建从所述父节点到创建的第一节点的边;遍历从第一DAG的根节点到所述父节点的路径,以确定已经为所述父节点创建的第二个唯一的、在密码上安全的密钥;用第二个唯一的、在密码上安全的密钥加密第一个唯一的、在密码上安全的密钥;以及在从所述父节点到创建的第一节点的创建的边上存储用第二个唯一的、在密码上安全的密钥加密第一个唯一的、在密码上安全的密钥的结果,其中不在创建的第一节点本身上存储用于创建的第一节点的第一个唯一的、在密码上安全的密钥。2.根据权利要求1所述的方法,进一步包括:接收对第一节点处的数据的请求,其中该请求指示从第一DAG的根节点到第一DAG的中间节点到第一DAG的第一节点遍历的路径;确定进行对第一节点处的数据的请求的用户的用户密钥;捕获存储在从所述根节点到所述中间节点的边上的数据;使用用户的用户密钥解密捕获的数据,该捕获的数据揭示用于所述中间节点的唯一的、在密码上安全的密钥;捕获存储在从所述中间节点到第一节点的边上的数据;使用用于所述中间节点的唯一的、在密码上安全的密钥解密捕获的数据,该捕获的数据揭示用于第一节点的第一个唯一的、在密码上安全的密钥;捕获存储在第一节点上的数据;以及使用第一个唯一的、在密码上安全的密钥解密存储在第一节点上的数据。3.根据权利要求1所述的方法,进一步包括:接收从第一DAG移除第二节点的请求,其中该请求为第二节点指定路径;基于为第二节点指定的路径,确定第二节点的父节点;确定在第二节点下方的所有节点和边;以及从第一DAG移除第二节点、在第一DAG中的从第二节点的父节点到第二节点的边以及在第二节点的路径下方的任何节点和边。4.根据权利要求1所述的方法,进一步包括:接收移动第一节点的请求,其中该请求指定第一节点当前位于的地方和第一节点将被移动的地方的路径;遍历从第一DAG的根节点到第一节点的路径,以确定为第一节点创建的第一个唯一的、在密码上安全的密钥;基于提供的路径确定用于第一节点的新的父节点;在第一DAG中创建从新的父节点到在其所移动的位置中的第一节点的边;遍历从第一DAG的根节点到新的父节点的路径,以确定新的父节点的第三个唯一的、在密码上安全的密钥;用第三个唯一的、在密码上安全的密钥加密第一个唯一的、在密码上安全的密钥;在从新的父节点到在其所移动的位置中的第一节点的创建的边上存储用第三个唯一的、在密码上安全的密钥加密第一个唯一的、在密码上安全的密钥的结果;以及在第一DAG中移除从第一节点的先前父节点到第一节点的边。5.根据权利要求1所述的方法,进一步包括:接收与第二用户共享第一用户的第三节点的请求,其中该请求指定将被共享的第三节占.遍历从第一DAG的根节点起的路径,以确定己经为第三节点创建的第三个唯一的、在密码上安全的密钥;生成用第二用户的公开密钥加密的消息,其中该消息指示第一用户想要与第二用户共享数据,并且其中该消息包括用于第三节点的第三个唯一的、在密码上安全的密钥以及用于第三节点的节点标识符;以及向第二用户传送所生成的消息。6.根据权利要求5所述的方法,进一步包括:存储所有权关系,该所有权关系指定第一用户己经允许第二用户访问第三节点。7.根据权利要求5所述的方法,进一步包括:接收用第二用户的公开密钥加密的消息,该消息指示第一用户想要与第二用户共享数据;用第二用户的私有密钥解密所述消息,其中解密的消息揭示用于第三节点的节点标识符以及第三个唯一的、在密码上安全的密钥;确定在用于第二用户的第二DAG中放置第三节点的路径;确定第二DAG中的第三节点的父节点;遍历从第二DAG的根节点到第二DAG中的第三节点的父节点的路径,以确定用于第二DAG中的第三节点的父节点的第四个唯一的、在密码上安全的密钥;在第二DAG中创建从第二DAG中的第三节点的父节点到第一DAG中的第三节点的边;用第四个唯一的、在密码上安全的密钥加密第三个唯一的、在密码上安全的密钥;以及从第二DAG中的第三节点的父节点到第一DAG中的第三节点的在第二DAG中创建的边上存储用第四个唯一的、在密码上安全的密钥加密第三个唯一的、在密码上安全的密钥的结果。8.根据权利要求7所述的方法,其中所述路径被确定为被放置在第二DAG的根节点下。9.根据权利要求7所述的方法,其中所述路径由第二用户选择。10.—种提供指令的非暂时性机器可读存储介质,所述指令在由处理器执行时将使所述处理器实行包括以下的操作:接收在第一有向无环图(DAG中创建第一节点的请求,其中该请求为第一节点指定路径;为第一节点创建第一个唯一的、在密码上安全的密钥;在第一DAG中创建第一节点;用为第一节点创建的第一个唯一的、在密码上安全的密钥加密第一DAG中的第一节点的内容;基于指定的路径确定在第一DAG中创建的第一节点的父节点;在第一DAG中创建从所述父节点到创建的第一节点的边;遍历从第一DAG的根节点到所述父节点的路径,以确定已经为所述父节点创建的第二个唯一的、在密码上安全的密钥;用第二个唯一的、在密码上安全的密钥加密第一个唯一的、在密码上安全的密钥;以及在从所述父节点到创建的第一节点的创建的边上存储用第二个唯一的、在密码上安全的密钥加密第一个唯一的、在密码上安全的密钥的结果,其中不在创建的第一节点本身上存储用于创建的第一节点的第一个唯一的、在密码上安全的密钥。11.根据权利要求11所述的非暂时性机器可读存储介质,其中所述非暂时性机器可读存储介质进一步提供指令,所述指令在由处理器执行时使所述处理器实行以下操作:接收对第一节点处的数据的请求,其中该请求指示从第一DAG的根节点到第一DAG的中间节点到第一DAG的第一节点遍历的路径;确定进行对第一节点处的数据的请求的用户的用户密钥;捕获存储在从所述根节点到所述中间节点的边上的数据;使用用户的用户密钥解密捕获的数据,该捕获的数据揭示用于所述中间节点的唯一的、在密码上安全的密钥;捕获存储在从所述中间节点到第一节点的边上的数据;使用用于所述中间节点的唯一的、在密码上安全的密钥解密捕获的数据,该捕获的数据揭示用于第一节点的第一个唯一的、在密码上安全的密钥;捕获存储在第一节点上的数据;以及使用第一个唯一的、在密码上安全的密钥解密存储在第一节点上的数据。12.根据权利要求11所述的非暂时性机器可读存储介质,其中所述非暂时性机器可读存储介质进一步提供指令,所述指令在由处理器执行时使所述处理器实行以下操作:接收从第一DAG移除第二节点的请求,其中该请求为第二节点指定路径;基于为第二节点指定的路径,确定第二节点的父节点;确定在第二节点下方的所有节点和边;以及从第一DAG移除第二节点、在第一DAG中的从第二节点的父节点到第二节点的边以及在第二节点的路径下方的任何节点和边。13.根据权利要求11所述的非暂时性机器可读存储介质,其中所述非暂时性机器可读存储介质进一步提供指令,所述指令在由处理器执行时使所述处理器实行以下操作:接收移动第一节点的请求,其中该请求指定第一节点当前位于的地方和第一节点将被移动的地方的路径;遍历从第一DAG的根节点到第一节点的路径,以确定为第一节点创建的第一个唯一的、在密码上安全的密钥;基于提供的路径确定用于第一节点的新的父节点;在第一DAG中创建从新的父节点到在其所移动的位置中的第一节点的边;遍历从第一DAG的根节点到新的父节点的路径,以确定新的父节点的第三个唯一的、在密码上安全的密钥;用第三个唯一的、在密码上安全的密钥加密第一个唯一的、在密码上安全的密钥;在从新的父节点到在其所移动的位置中的第一节点的创建的边上存储用第三个唯一的、在密码上安全的密钥加密第一个唯一的、在密码上安全的密钥的结果;以及在第一DAG中移除从第一节点的先前父节点到第一节点的边。14.根据权利要求11所述的非暂时性机器可读存储介质,其中所述非暂时性机器可读存储介质进一步提供指令,所述指令在由处理器执行时使所述处理器实行以下操作:接收与第二用户共享第一用户的第三节点的请求,其中该请求指定将被共享的第三节占.遍历从第一DAG的根节点起的路径,以确定已经为第三节点创建的第三个唯一的、在密码上安全的密钥;生成用第二用户的公开密钥加密的消息,其中该消息指示第一用户想要与第二用户共享数据,并且其中该消息包括用于第三节点的第三个唯一的、在密码上安全的密钥以及用于第三节点的节点标识符;以及向第二用户传送所生成的消息。15.根据权利要求14所述的非暂时性机器可读存储介质,其中所述非暂时性机器可读存储介质进一步提供指令,所述指令在由处理器执行时使所述处理器实行以下操作:存储所有权关系,该所有权关系指定第一用户已经允许第二用户访问第三节点。16.根据权利要求14所述的非暂时性机器可读存储介质,其中所述非暂时性机器可读存储介质进一步提供指令,所述指令在由处理器执行时使所述处理器实行以下操作:接收用第二用户的公开密钥加密的消息,该消息指示第一用户想要与第二用户共享数据;用第二用户的私有密钥解密所述消息,其中解密的消息揭示用于第三节点的节点标识符以及第三个唯一的、在密码上安全的密钥;确定在用于第二用户的第二DAG中放置第三节点的路径;确定第二DAG中的第三节点的父节点;遍历从第二DAG的根节点到第二DAG中的第三节点的父节点的路径,以确定用于第二DAG中的第三节点的父节点的第四个唯一的、在密码上安全的密钥;在第二DAG中创建从第二DAG中的第三节点的父节点到第一DAG中的第三节点的边;用第四个唯一的、在密码上安全的密钥加密第三个唯一的、在密码上安全的密钥;以及从第二DAG中的第三节点的父节点到第一DAG中的第三节点的在第二DAG中创建的边上存储用第四个唯一的、在密码上安全的密钥加密第三个唯一的、在密码上安全的密钥的结果。17.根据权利要求16所述的非暂时性机器可读存储介质,其中所述路径被确定为被放置在第二DAG的根节点下。18.根据权利要求16所述的非暂时性机器可读存储介质,其中所述路径由第二用户选择。

百度查询: 普契尼国际有限公司 保护有向无环图

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。

相关技术
相关技术
相关技术
相关技术