CN107548493B - 保护有向无环图 - Google Patents
保护有向无环图 Download PDFInfo
- Publication number
- CN107548493B CN107548493B CN201580039467.XA CN201580039467A CN107548493B CN 107548493 B CN107548493 B CN 107548493B CN 201580039467 A CN201580039467 A CN 201580039467A CN 107548493 B CN107548493 B CN 107548493B
- Authority
- CN
- China
- Prior art keywords
- node
- dag
- user
- key
- cryptographically secure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0822—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/368—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
- G06F13/37—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a physical-position-dependent priority, e.g. daisy chain, round robin or token passing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0866—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2463/00—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
- H04L2463/062—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying encryption of the keys
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Storage Device Security (AREA)
Abstract
描述一种用于保护有向无环图(DAG)的方法和装置。在一个实施例中,描述一种用于加密DAG的算法,所述算法在给定起始节点(入口点)、用于该节点的节点密钥和在图中遍历的路径的情况下使实现加密DAG,其中密钥被存储在DAG的边上而不是在DAG的节点上。在DAG的边上而不是在DAG的节点上存储密钥使实现DAG的有效查询以及节点具有可改变的多个父而不影响该节点与不变的父的关系的能力。为在DAG内创建的每个节点生成唯一的且在密码上随机的密钥(在本文中有时被称为唯一的节点密钥)。节点密钥对其生成所为的节点以及还有离开该节点的任何边进行加密。节点密钥不与节点一起存储。相反,节点密钥被存储在到用父节点的节点密钥加密的节点的入边(来自其父节点的边)上。在根节点的情况下,存在来自DAG外部的隐含的边,在那里存储根节点的节点密钥。
Description
相关申请的交叉引用
本申请要求2014年5月22日提交的美国临时申请号62/002,127的权益,藉此通过引用将其并入。
技术领域
本发明的实施例涉及有向图的领域;并且更具体地,涉及保护有向无环图。
背景技术
计算机科学中的图是定义完善且被充分理解的概念。有向无环图(DAG)是不具有有向循环的有向图,并且由节点和有向边的集合形成,其中每个边将一个节点连接到另一个。在DAG中,存在根节点,根节点是没有入边的节点,并且可以从根节点到达图中的所有其它节点。该根节点的标识符(ID)被存储在图本身外部的某处,以在查询时用作到图的入口点。
存在图加密的一些变型,所述变型尝试为通用图维持高水平的灵活性,但是在有向无环图(DAG)的情况下大多数不是有效的。例如,存在基于公共查询的预计算索引的系统,使得查询可以用删除假阳性的结果集的进一步过滤来生成期望结果的超集。
附图说明
可以通过参考用于图示本发明的实施例的附图和以下描述来最佳地理解本发明。在图中:
图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图示可在一些实施例中使用的示例性计算机系统。
具体实施方式
在以下描述中,阐述许多具体细节。然而,理解的是,可在没有这些具体细节的情况下实践本发明的实施例。在其它实例中,未详细示出公知的电路、结构和技术,以便不模糊对本描述的理解。有了包括的描述,本领域技术人员将能够实现适当的功能性而无需过度的实验。
在说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所述的实施例可包括特定特征、结构或特性,但是可能不是每个实施例都必然地包括特定特征、结构或特性。此外,这样的短语不必然地指代相同的实施例。此外,当结合实施例描述特定特征、结构或特性时,主张其在本领域技术人员的知识内,以结合其它实施例实现这样的特征、结构或特性,无论是否明确描述。
在以下描述和权利要求中,可使用术语“耦合”和“连接”连同其派生词。应当理解的是,这些术语不旨在作为彼此的同义词。“耦合”用于指示两个或更多个元件,其可与或可不与彼此直接物理或电气接触,与彼此协作或交互。“连接”用于指示在与彼此耦合的两个或更多个元件之间的通信的建立。
描述一种用于保护有向无环图(DAG)的方法和装置。在一个实施例中,描述一种用于加密DAG的算法,所述算法在给定起始节点(入口点)、用于该节点的节点密钥和在图中遍历的路径的情况下使实现加密DAG,其中密钥被存储在DAG的边上而不是在DAG的节点上。在DAG的边上而不是在DAG的节点上存储密钥使实现DAG的有效查询以及节点具有可改变的多个父而不影响该节点与不变的父的关系的能力。为在DAG内创建的每个节点生成唯一的且在密码上随机的密钥(在本文中有时被称为唯一的节点密钥)。节点密钥对其生成所为的节点以及还有离开该节点的任何边进行加密。节点密钥不与节点一起存储。相反,节点密钥被存储在到用父节点的节点密钥加密的节点的入边(来自其父节点的边)上。在根节点的情况下,存在来自DAG外部的隐含的边,在那里存储根节点的节点密钥。
在一个实施例中,本文描述的DAG表示文件系统,其中每个节点表示关于文件夹或文件的元数据(例如,名称、大小、创建时间戳、修改时间戳、访问控制列表/许可、只读标记、隐藏文件标记、其它专用数据等)。文件系统可以是基于云的文件系统。本文所述的安全DAG允许用元数据的有效管理来实现基于云的文件系统存储解决方案,并且同时不能访问与所存储的文件和文件夹相关的任何文件数据或敏感信息。DAG上的查询是使用已经遍历的路径进行的,在文件系统的情况下,所述路径是用户已经导航到其中的文件夹的有序列表。
使用本发明的实施例,在诸如将节点连接到新的父节点同时可能地移除其到现有的父的连接(例如,在DAG表示文件系统的情况下的移动操作中)之类的公共操作中发现效率。在这样的情况下,仅仅需要创建单个新边(不是新节点),并且仅仅需要执行用新的父节点的节点密钥加密用于正被移动的节点的现有节点密钥。
图1图示根据本发明的实施例保护的示例性DAG 100。DAG 100包括在根节点110处开始的若干节点和边,根节点110具有隐含的入边140。为用户生成DAG 100,或者DAG 100属于用户。隐含的边140存储为用户生成的唯一的加密密钥,在图中被称为用户密钥UK1。该用户密钥UK1也是用于根节点110的节点密钥。在一个实施例中,用用户的凭证加密(例如,用用户的密码加密)用户密钥,并且将用户密钥持久地存储在与根节点110的ID相关联的DAG的外部。用户密钥UK1还用于加密根节点110的内容。
根节点110是用于节点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)的边上。
节点120是用于节点125和130的父节点。为节点125生成唯一的在密码上安全的随机密钥(在图中被称为节点密钥K3),并且为节点130生成唯一的在密码上安全的随机密钥(在图中被称为节点密钥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)的边上。
图2是图示根据一个实施例的示例性安全DAG系统200的框图。安全DAG系统200包括密钥生成器210、安全DAG模块220、数据存储230和DAG 240。安全DAG模块220执行用于保护DAG的操作中的许多,如将在本文后面更详细地描述的。安全DAG模块220接收请求250以执行将在本文后面更详细地描述的不同类型的操作(例如,向系统添加新用户,向DAG添加节点,从DAG移除节点,移动DAG内的节点,与另一用户共享DAG的节点)。作为这些操作中的一些的部分,安全DAG模块220可请求密钥生成器210生成255唯一的、在密码上安全的密钥。例如并且如将在本文后面更详细地描述的,安全DAG模块220可请求密钥生成器210为正在DAG 240中创建的节点生成唯一的、在密码上安全的密钥。数据存储230存储260 DAG 240的根节点ID以及用于属于DAG 240的用户的用户密钥。根节点ID充当到DAG 240中的入口点。当遍历DAG 240时,安全DAG模块220从数据存储230检索265根节点ID和用户密钥。安全DAG模块220对DAG 240执行如将在本文后面更详细地描述的操作270(例如,向DAG 240添加节点,从DAG 240移除节点,移动DAG 240中的节点,遍历DAG 240,以及共享DAG 240中的节点)。虽然图2图示单个DAG 240,但是应当理解的是,可存在属于若干不同用户的正由安全DAG模块220管理的许多不同DAG。
安全DAG系统200在一些实施例中可以是本地客户端计算设备(例如,台式计算机、膝上型计算机、平板计算机、智能电话、机顶盒、游戏控制台、可穿戴计算机等)的部分。在其它实施例中,安全DAG系统200可以是在基于云的文件系统中操作的服务器计算设备的部分,其中客户端计算设备发送对于将对其DAG执行的操作的请求,并且被返回来自基于云的文件系统的数据。
图3图示根据一个实施例的DAG 100的示例性数据结构表示。应当理解的是,图3中图示的数据结构表示是示例性的,并且本发明不限于用于表示DAG的任何特定数据结构。如图3中所图示,节点表310包括用于节点标识符的列和用于数据的列。节点表310中的每一行标识DAG 100中的节点和存储在节点中的数据。例如,节点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(表示为UK1(K1)),边150从节点110开始并且去往节点115并存储用用户密钥UK1加密的节点密钥K2(表示为UK1(K2)),边155从节点120开始并且去往节点125并存储用节点密钥K2加密的节点密钥K3(表示为K2(K3)),并且边160从节点120开始并且去往节点130并存储用节点密钥K2加密的节点密钥K4(表示为K2(K4))。
图4是图示根据一个实施例的当用户注册利用安全有向无环图的服务或账户时执行的示例性操作的流程图。将参照其它图的示例性实施例来描述这个和其它流程图的操作。然而,应当理解的是,流程图的操作可以由除了参照这些其它图讨论的那些之外的本发明的实施例来执行,并且参照这些其它图讨论的本发明的实施例可以执行与参照流程图讨论的那些不同的操作。
在操作410处,从用户接收请求以针对服务创建帐户,这可包括为用户建立凭证,诸如用于所述服务的用户名和密码。例如,安全DAG模块220可接收请求以创建用户。流程然后移动到操作415,其中为用户生成适于期望的公开密钥密码术类型的公开/私有密钥对。流程然后移动到操作420,其中为用户生成被称为用户密钥的唯一的在密码上安全的随机密钥,并且用所述用户密钥加密用户的凭证。例如,安全DAG模块220请求密钥生成器210为用户生成用户密钥。流程然后移动到操作425,其中安全DAG模块220在DAG 240中为用户创建新的根节点,并且用生成的用户密钥加密根节点的内容。流程然后移动到操作430,其中根节点标识符与用户密钥一起被存储在DAG外部。例如,安全DAG模块220使根节点ID和用户密钥被存储在数据存储230中。
向DAG添加节点
图5是图示根据本发明的实施例的在向受保护DAG添加节点时执行的示例性操作的流程图。在操作510处,安全DAG模块220接收请求以在DAG 240中为用户创建新节点(N)。该请求为新节点指定路径。通过参照图1的示例的方式,正在创建节点120。可结合想要创建或存储信息的用户而从用户接收请求。例如,在其中DAG表示文件系统的实施例中,可从正在文件系统中创建文件夹(目录)或文件的用户接收请求。流程然后移动到操作515。
在操作515处,安全DAG模块220使通过使用密钥生成器210来创建用于新节点(N)的唯一的在密码上安全的密钥(K)。密钥生成器210可以是在密码上安全的伪随机数生成器。流程然后移动到操作520,其中安全DAG模块220在DAG 240中为新节点(N)创建节点。例如关于图1,创建节点120,包括在图3的节点表310中添加条目。
流程然后移动到操作525,其中安全DAG模块220用为节点(N)创建的密钥(K)加密正被添加的节点(N)的内容。例如关于图1,用为节点120生成的节点密钥K2加密节点120的内容。应当理解的是,加密节点内容被存储在节点上,加密和解密节点的密钥不被存储在节点上。
流程然后移动到操作530,其中安全DAG模块220基于在请求中提供的路径来确定新添加的节点(N)的父节点(PN)。例如关于图1,节点120的父节点是根节点110。流程然后移动到操作535。
在操作535处,安全DAG模块220在DAG 240中创建从新创建的节点(N)的父节点(PN)到新创建的节点(N)的边。例如关于图1,创建从根节点110到节点120的边150,并且在边表320中为创建的边添加条目。
流程然后移动到操作540,其中安全DAG模块220遍历从根节点到新创建的节点(N)的父节点(PN)的路径,以确定父节点(PN)的节点密钥(PK)。父节点(PN)的节点密钥以加密形式(用其父节点的节点密钥加密,或者在父节点是根节点的情况下用用户密钥加密)存储在从其父节点到其自身的边上。例如,参照图1,120的父节点(其是根节点110)的节点密钥以加密形式(由用户密钥UK1加密)存储在边140上。将关于图9更详细地描述当遍历路径时执行的操作。流程从操作540移动到操作545。
在操作545处,安全DAG模块220用父节点(PN)的节点密钥(PK)为新创建的节点(N)加密节点密钥(K)。例如关于图1,节点120的节点密钥K2用其父节点的节点密钥(用户密钥UK1)加密。
流程然后移动到操作550,其中安全DAG模块220在从父节点(PN)到新创建的节点(N)的边上存储用父节点(PN)的节点密钥(PK)为新创建的节点(N)加密节点密钥(K)的结果。例如关于图1,边150存储用用户密钥UK1加密节点120的节点密钥K2的结果。
从DAG移除节点
图6是图示根据本发明的实施例的当从受保护DAG移除节点时执行的示例性操作的流程图。在操作610处,安全DAG模块220接收请求以从DAG 240移除节点(N)。该请求指定待移除的节点(N)的路径。该请求可随着用户想要从图删除信息而被接收。例如,在其中DAG240表示文件系统的实施例中,可从想要删除文件系统中的文件夹或文件的用户接收请求。流程然后移动到操作615。
在操作615处,安全DAG模块220基于提供的路径确定待移除的节点(N)的父节点(PN)。如果不存在父节点(即,待移除的节点是根节点),则从DAG移除所有节点和边。然而,在存在父节点的情况下,仅从DAG移除某些节点和边。流程移动到操作620,其中安全DAG模块220确定在节点(N)下方的所有节点和边(正被移除的节点的子)(如果有的话)。例如,如果图1的节点120正被移除,则安全DAG模块220确定节点125和130以及边155和160在节点120下方。流程然后移动到操作625,其中安全DAG模块220从DAG 240移除以下内容:来自DAG240的节点(N)、从父节点(PN)到节点(N)的边以及在节点(N)的路径下方的任何节点和边。
与另一用户共享节点
在一些实施例中,用户能够与另一用户共享他们的节点。例如,在其中安全DAG表示基于云的文件系统的实施例中,第一用户可以选择他们的文件系统中的任何点(例如,目录或文件)来与一个或多个其他用户共享。在一些实施例中,接收共享文件或文件夹的用户可选择在他们自己的客户端设备上安装共享文件或文件夹,并且通过访问在他们的操作系统内的文件和文件夹的通常方式来访问共享文件或文件夹。在一些实施例中,进行共享的用户可对共享设置访问限制,并且对于不同的用户可能是不同的(例如,只读、修改、完全控制等)。
图7图示根据本发明的实施例的用于多个用户的多个受保护DAG,其中第一用户与第二用户共享节点。图7图示关于图1图示和描述的安全DAG 100以及属于第二用户的安全DAG 700。安全DAG 700包括具有隐含的入边720的根节点710,隐含的入边720存储为属于安全DAG 700的用户生成的唯一的加密密钥,在图7中被称为用户密钥UK2,用户密钥UK2是用用于属于安全DAG 700的用户的凭证加密的。该用户密钥UK2也是用于根节点710的节点密钥。在一个实施例中,用户密钥UK2是用第二用户的凭证加密的(例如,用用户的密码加密),并且与根节点710的ID相关联地被持久地存储在DAG 700外部。用户密钥UK2还用于加密根节点710的内容。根节点110是用于节点715的父节点。为节点715生成唯一的在密码上安全的随机密钥(在图中被称为节点密钥K5)。节点密钥K5用于加密节点715的内容。节点密钥K5是用用于根节点710的节点密钥(用户密钥UK2)加密的,并且结果被存储在从根节点710到节点715的边725上。除了节点密钥K5的(用用户密钥UK2加密的)加密版本之外的节点密钥K5不被持久地存储在从其父节点(根节点710)到其创建所为的节点(节点715)的边上。
在某一时刻,属于安全DAG 100的用户选择了与属于安全DAG 700的用户共享与节点120相关联的数据(以及节点120的子节点的固有地任何数据)。图8是图示根据一个实施例的在具有安全DAG的系统中当第一用户选定了与第二用户共享数据时执行的示例性操作的流程图。在操作810处,安全DAG模块220接收请求以与第二用户(用户2)共享第一用户(用户1)的节点(N)。该请求指定要共享的节点。参照图7,属于安全DAG 100的用户已经请求与属于安全DAG 700的用户共享节点120的该数据。流程然后移动到操作815。
在操作815处,安全DAG模块220遍历DAG中从根节点到正被共享的节点(N)的路径,以确定用于节点(N)的节点密钥(K)。用于正被共享的节点(N)的节点密钥(K)被存储在来自处于加密状态(用父节点的节点密钥加密或者在父节点是根节点的情况下用用户密钥加密)的其父节点的其入边上。例如参照图1,用于节点120的节点密钥以加密形式(用根节点110的节点密钥加密)被存储在边150上。流程然后移动到操作820。
在操作820处,安全DAG模块220为第二用户(该用户意图接收共享数据)生成指示第一用户想要与第二用户共享数据的消息。该消息包括用于正被共享的节点(N)的节点密钥(K)以及用第二用户的公共密钥加密的正被共享的节点(N)的节点ID(例如,该消息包括加密的结果([K,NodeID_N],Public_Key_User2)。操作然后流动到操作825,其中安全DAG模块220使向第二用户传送消息。例如,可向第二用户发送电子邮件或其它通信,第二用户然后可选择是否接受共享。
流程然后移动到操作830,在一些实施例中该操作是可选的,其中安全DAG模块220导致指定第一用户已经允许第二用户访问待存储的节点(N)的所有权关系。在一些实施例中,第一用户可撤销给予第二用户的对节点(N)的访问。
图9是图示根据一个实施例的在具有安全DAG的系统中响应于第一用户选定与第二用户共享数据而执行的示例性操作的流程图。在操作910处,安全DAG模块220接收用第二用户的公开密钥加密的消息,该消息指示第一用户想要与第二用户共享数据。虽然未被描述为流程的部分,但是第二用户可能已经选定接受共享。流程然后从操作910移动到操作915,其中安全DAG模块220用用于第二用户的私有密钥解密消息,该消息揭示正被共享的节点的节点ID和用于正被共享的节点的密钥节点。例如关于图7,用用于第二用户的私有密钥解密消息揭示节点120的节点ID和节点120的节点密钥K2。流程然后移动到操作920。
在操作920处,安全DAG模块220确定路径以在DAG 700中为第二用户放置共享。在一个实施例中,路径被自动地放置在DAG 700的根节点下。在另一个实施例中,路径由第二用户选择。在图7的示例中,共享被放置在根节点710下。因此在图7的示例中,根节点710是正被共享的节点(节点120)的父节点。流程然后移动到操作925。
在操作925处,安全DAG模块220遍历路径以确定用于在DAG 700中为第二用户共享的节点的父节点的节点密钥。例如参照图7,安全DAG模块220遍历路径并且确定用于根节点710(其是正被共享的节点的父节点)的节点密钥。在图7的示例中,用于根节点710的节点密钥是用户密钥UK2。流程然后移动到操作930。
在操作930处,安全DAG模块220在DAG中为第二用户创建从父节点(PN)到共享节点(N)的边。例如参照图7,创建从根节点710到节点120的边730。流程然后移动到操作935,其中安全DAG模块220用用于在DAG 700中为第二用户共享的节点的父节点的节点密钥加密用于正被共享的节点的节点密钥(K)。例如参照图7,节点密钥K2用用户密钥UK2加密。流程然后移动到操作940,其中安全DAG模块220在从父节点(PN)到共享节点(N)的边上存储用用于正被共享的节点的父节点的节点密钥加密用于正被共享的节点的节点密钥(K)的结果。例如参照图7,边730存储用用户密钥UK2加密的节点密钥K2。
应当理解的是,当节点被与另一用户共享时,共享节点的任何子节点(如果有的话)也被共享。例如参照图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的内容。
虽然图9已经被描述为由相同的安全DAG模块(例如,在连接到多个客户端设备的服务器上)执行,但是可能在不同于进行共享的客户端计算设备的客户端计算设备上本地地执行操作。换句话说,在一些实施例中,关于图8和9描述的操作在中心位置中(诸如在云中)被执行;在其它实施例中,关于图8描述的操作在第一客户端计算设备中被执行,并且关于图9描述的操作在第二客户端计算设备中被执行。
图10图示根据一个实施例的在节点120已被共享之后的DAG 700的示例性数据结构表示。应当理解的是,图10中图示的数据结构表示是示例性的,并且本发明不限于用于表示DAG的任何特定数据结构。如图10中所图示,节点表1010示出:节点710存储用用户密钥UK2加密的数据(表示为UK2(数据)),并且节点715存储用节点密钥K5加密的数据(表示为K5(数据))。边表1020示出:隐含的边720从隐含的节点开始并且去往节点710并存储用用于用户的凭证加密的用户密钥UK1,边725从节点710开始并且去往节点715并存储用用户密钥UK2加密的节点密钥K5(表示为UK2(K5)),并且边730从节点710开始并且去往节点120并存储用用户密钥UK2加密的节点密钥K2(表示为UK2(K2))。
移动节点
在一些实施例中,用户能够将节点移动到安全DAG的不同部分。例如,在其中安全DAG表示基于云的文件系统的实施例中,用户可以选择将文件夹或文件移动到文件系统中的另一位置。移动节点将导致创建到新节点的连接,并且仅仅需要创建单个新边(不是新节点本身),并且仅需要执行用新的父节点的节点密钥加密用于正被移动节点的现有节点密钥。
图11图示根据本发明的实施例的在图7中图示的受保护DAG,其中节点已被移动。如图11中所图示,正将节点120从在直接在根节点110下方的子节点移动成为在节点115下的子节点。创建从新的父节点115到正被移动的节点(120)的新边165。新边165存储由新的父节点115的节点密钥K1加密的节点120的节点密钥K2。边150被从DAG 100移除。移动操作不影响节点120从属于DAG 100的用户到属于DAG 700的用户的共享。
图12图示根据一个实施例的在已经根据图11移动节点120之后的DAG 100的示例性数据结构表示。应当理解的是,图12中图示的数据结构表示是示例性的,并且本发明不限于用于表示DAG的任何特定数据结构。如图12中所图示,节点表1210与节点表310相同,并且仅仅改变了边表1220中到节点120的边。
图13是图示根据一个实施例的执行以移动受保护DAG中的节点的示例性操作的流程图。在操作1310处,安全DAG模块220接收请求以移动节点(N)。该请求可从用户接收。例如,在其中DAG表示文件系统的实施例中,该请求可作为用户将文件夹或文件移动到文件结构中的另一位置的结果而被接收。例如参照图11,正将节点120从直接在根节点110下移动成为直接在节点115下。该请求指定用于移动(从和到)的路径。流程然后移动到操作1315,其中安全DAG模块220遍历从根节点到正被移动的节点(N)的路径,以确定用于该节点的节点密钥(K)。例如参照图11,遍历从根节点110到节点120的路径,以确定用于节点120的节点密钥(K),该节点密钥是节点密钥120。节点密钥120以加密形式(用用户密钥UK1加密)存储在边150上。流程然后移动到操作1320。
在操作1320处,安全DAG模块220基于提供的路径确定用于正被移动的节点(N)的新的父节点(PN)。例如关于图11,新的父节点(PN)是节点115。流程然后移动到操作1325,其中安全DAG模块220在DAG中创建从新的父节点(PN)到正被移动的节点(N)的边。例如参照图11,创建从节点115到节点120的新边165。流程然后移动到操作1330。
在操作1330处,安全DAG模块220遍历从根节点到新的父节点(PN)的路径,以确定用于新的父节点的节点密钥(PK)。用于新的父节点的节点密钥(PK)存储在其入边(用其父节点的节点密钥加密,或者在新的父节点是根节点的情况下,用用户密钥加密)上。例如关于图11,用于新的父节点115的节点密钥存储在用用户密钥UK1加密的其入边145上。流程然后移动到操作1335。
在操作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移除从旧的父节点到正被移动的节点的边。
遍历图形
图14是图示根据一些实施例的用于遍历受保护DAG的示例性操作的流程图。在操作1410处,安全DAG模块220接收对节点(N)处的数据的请求,其中该请求指示路径。在其中安全DAG表示文件系统的情况下,该请求可作为用户导航到他们的文件系统内的文件夹或文件的结果而被接收。该请求指示路径。作为贯穿该流程图的示例,该请求指示对图1的节点125处的数据的请求。流程然后移动到操作1415。
在操作1415处,安全DAG模块220确定用于进行请求的用户的用户密钥。例如,安全DAG模块220用提供的用户的凭证解密存储在用于用户的根节点的隐含的入边上的数据,提供的用户的凭证可能已经连同对数据的请求一起被提供,或者已经在时间上更早地被提供。例如关于图1,安全DAG模块220使用用户凭证解密存储在隐含的边140上的数据以揭示用户密钥UK1。
假设确定了用于用户的用户密钥(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不是最后的路径段。
在操作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。
在操作1450处,安全DAG模块220捕获存储在节点(P)上的数据。例如关于图1,安全DAG模块220捕获存储在节点125上的数据,该数据是用节点密钥K3加密的加密数据。流程然后移动到操作1455,其中安全DAG模块220使用在从节点(P-1)到节点(P)的最终边上找到的密钥来解密捕获的数据。例如参照图1,安全DAG模块220使用节点密钥K2解密节点125的捕获的数据以揭示节点125的内容。
应当理解的是,在其中在节点处存储所请求的数据的情况下,不需要访问沿着路径的所有节点,仅仅访问边和最终节点。
虽然图14图示当请求的数据在节点处时用于遍历DAG的示例性操作,但是当请求的数据是以加密形式存储在边上的节点密钥时,执行遍历路径和解密的类似操作。例如,当向图添加节点时,以迭代方式遍历从根节点到正添加的节点的父节点的路径以揭示该父节点的节点密钥。
如图15中所图示,是数据处理系统的形式的计算机系统1500包括与处理系统1520、电源1525、存储器1530和非易失性存储器1540(例如,硬驱、闪存、相变存储器(PCM)等)耦合的(一个或多个)总线1550。(一个或多个)总线1550可通过如本领域中公知的各种桥、控制器和/或适配器彼此连接。处理系统1520可从存储器1530和/或非易失性存储器1540检索(一个或多个)指令,并且执行所述指令以实行本文所述的操作。总线1550将以上组件互连在一起,并且还将那些组件互连到显示控制器和显示设备1570、输入/输出设备1580(例如,NIC(网络接口卡)、光标控件(例如,鼠标、触摸屏、触摸板等)、键盘等)和可选的(一个或多个)无线收发器1590(例如,蓝牙、WiFi、红外等)。在一个实施例中,在计算机系统1500上实现安全DAG系统200。
如本文所述,指令可以指代被配置成执行某些操作或具有预定功能性的硬件(诸如专用集成电路(ASIC))的特定配置或被存储在于非暂时性计算机可读介质中体现的存储器中的软件指令。因此,可以使用在一个或多个电子设备(例如,客户端计算设备、服务器)上存储和执行的代码和数据来实现图中所示的技术。这样的电子设备使用计算机可读介质(诸如非暂时性计算机可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)和暂时性计算机可读通信介质(例如,电、光、声或其它形式的传播信号——诸如载波、红外信号、数字信号)来存储和传送(在内部和/或通过网络与其它电子设备)代码和数据。另外,这样的电子设备典型地包括耦合到一个或多个其它组件(诸如一个或多个存储设备(非暂时性计算机可读存储介质)、用户输入/输出设备(例如,键盘、触摸屏和/或显示器)和网络连接)的一组一个或多个处理器。该组处理器和其它组件的耦合典型地通过一个或多个总线和桥(也被称为总线控制器)。因此,给定的电子设备的存储设备典型地存储用于在该电子设备的一组一个或多个处理器上执行的代码和/或数据。当然,本发明的实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。
虽然已经根据若干实施例描述了本发明,但是本领域技术人员将认识到,本发明不限于所述的实施例,可以在所附权利要求的精神和范围内用修改和变更来实施本发明。因此本描述被视为例证性的而不是限制性的。
Claims (18)
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.根据权利要求10所述的非暂时性机器可读存储介质,其中所述非暂时性机器可读存储介质进一步提供指令,所述指令在由处理器执行时使所述处理器实行以下操作:
接收对第一节点处的数据的请求,其中该请求指示从第一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所述的非暂时性机器可读存储介质,其中所述路径由第二用户选择。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462002127P | 2014-05-22 | 2014-05-22 | |
US62/002127 | 2014-05-22 | ||
US14/719287 | 2015-05-21 | ||
US14/719,287 US10164774B2 (en) | 2014-05-22 | 2015-05-21 | Securing a directed acyclic graph |
PCT/US2015/032288 WO2015179830A1 (en) | 2014-05-22 | 2015-05-22 | Securing a directed acyclic graph |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107548493A CN107548493A (zh) | 2018-01-05 |
CN107548493B true CN107548493B (zh) | 2020-11-24 |
Family
ID=54554872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580039467.XA Active CN107548493B (zh) | 2014-05-22 | 2015-05-22 | 保护有向无环图 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10164774B2 (zh) |
EP (1) | EP3146438B1 (zh) |
JP (1) | JP6698078B2 (zh) |
CN (1) | CN107548493B (zh) |
WO (1) | WO2015179830A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9479421B2 (en) * | 2014-09-10 | 2016-10-25 | Cisco Technology, Inc. | Dynamic installation of local storing mode paths in a non-storing low-power and lossy network |
US10698877B2 (en) * | 2017-05-12 | 2020-06-30 | Microsoft Technology Licensing, Llc | High-performance naming service using an optimistic-concurrency-control in-memory database |
US10713086B2 (en) | 2018-09-04 | 2020-07-14 | Zhongwei Wu | Asynchronous directed acyclic map based distributed transaction network |
CN109885259B (zh) * | 2019-02-21 | 2022-05-06 | 缀初网络技术(上海)有限公司 | 基于有向无环图的轻量级容量证明方法及存储介质 |
US11397825B2 (en) | 2019-08-09 | 2022-07-26 | Kyndryl, Inc. | Encrypted knowledge graph |
US11169979B2 (en) * | 2019-12-31 | 2021-11-09 | Intuit, Inc. | Database-documentation propagation via temporal log backtracking |
CN112836078B (zh) * | 2021-02-20 | 2021-10-22 | 山东省计算中心(国家超级计算济南中心) | 一种图上最短路径安全查询方法、装置、系统及存储介质 |
US12026264B2 (en) | 2021-07-17 | 2024-07-02 | International Business Machines Corporation | Secure query processing on graph stores |
US20230169085A1 (en) * | 2021-11-30 | 2023-06-01 | Intuit Inc. | Multitenancy in extract, transform, load (etl) pipeline orchestration tools |
CN115865953B (zh) * | 2023-02-17 | 2023-05-16 | 广州合利宝支付科技有限公司 | 一种基于跨境支付的分布式存储系统 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06175905A (ja) * | 1992-12-03 | 1994-06-24 | Fujitsu Ltd | 暗号化ファイル共有方法 |
SG77163A1 (en) | 1998-03-06 | 2000-12-19 | John Francis Chong | A method of implementing an acyclic directed graph structure using a relational database |
CA2369304A1 (en) * | 2002-01-30 | 2003-07-30 | Cloakware Corporation | A protocol to hide cryptographic private keys |
US8335915B2 (en) | 2002-05-14 | 2012-12-18 | Netapp, Inc. | Encryption based security system for network storage |
US7096216B2 (en) * | 2002-07-20 | 2006-08-22 | Microsoft Corporation | Performing operations on a set of objects in a database system |
US7593532B2 (en) | 2004-04-22 | 2009-09-22 | Netapp, Inc. | Management of the retention and/or discarding of stored data |
US7853018B2 (en) * | 2005-11-10 | 2010-12-14 | Atallah Mikhail J | Method and apparatus for hiding a private key |
US7895666B1 (en) | 2006-09-01 | 2011-02-22 | Hewlett-Packard Development Company, L.P. | Data structure representation using hash-based directed acyclic graphs and related method |
US8256010B2 (en) * | 2009-04-01 | 2012-08-28 | Microsoft Corporation | Providing access to a data item using access graphs |
US8363662B2 (en) | 2010-03-19 | 2013-01-29 | Cisco Technology, Inc. | Alternate down paths for directed acyclic graph (DAG) routing |
US8451744B2 (en) | 2010-08-16 | 2013-05-28 | Cisco Technology, Inc. | Partitioning directed acyclic graph (DAG) topologies |
GB2486462B (en) | 2010-12-16 | 2019-04-24 | Maidsafe Found | Distributed file system |
JP2012205088A (ja) | 2011-03-25 | 2012-10-22 | Toshiba Corp | ノード及びグループ鍵更新方法 |
TWI546695B (zh) * | 2011-12-15 | 2016-08-21 | 萬國商業機器公司 | 刪除儲存系統中之內容 |
-
2015
- 2015-05-21 US US14/719,287 patent/US10164774B2/en active Active
- 2015-05-22 EP EP15795620.2A patent/EP3146438B1/en not_active Not-in-force
- 2015-05-22 CN CN201580039467.XA patent/CN107548493B/zh active Active
- 2015-05-22 WO PCT/US2015/032288 patent/WO2015179830A1/en active Application Filing
- 2015-05-22 JP JP2017514392A patent/JP6698078B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
US20150341167A1 (en) | 2015-11-26 |
CN107548493A (zh) | 2018-01-05 |
WO2015179830A1 (en) | 2015-11-26 |
EP3146438A4 (en) | 2017-12-20 |
EP3146438B1 (en) | 2020-10-14 |
EP3146438A1 (en) | 2017-03-29 |
US10164774B2 (en) | 2018-12-25 |
JP2017517773A (ja) | 2017-06-29 |
JP6698078B2 (ja) | 2020-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107548493B (zh) | 保护有向无环图 | |
US11044088B2 (en) | System and method for rotating client security keys | |
JP6856626B2 (ja) | マルチユーザクラスタアイデンティティ認証のための方法および装置 | |
JP6941183B2 (ja) | データのトークン化 | |
JP6700294B2 (ja) | データの安全を確保するためのシステムおよび方法 | |
US9697366B1 (en) | Use of generic (browser) encryption API to do key exchange (for media files and player) | |
CN109314705B (zh) | 使用组加密密钥的用于大规模可伸缩动态多点虚拟私有网络的系统、装置和方法 | |
US20160050193A1 (en) | System and methods for secure communication in mobile devices | |
US20180302400A1 (en) | Authenticating access to an instance | |
US10826895B1 (en) | System and method for secure authenticated user session handoff | |
US9384359B2 (en) | Information firewall | |
CN109347839B (zh) | 集中式密码管理方法、装置、电子设备及计算机存储介质 | |
CN111132150A (zh) | 一种保护数据的方法、装置、存储介质和电子设备 | |
EP2429146A1 (en) | Method and apparatus for authenticating access by a service | |
JP2016212293A (ja) | クラウド環境にデータを保存する情報処理装置、端末装置および保存方法 | |
US11019033B1 (en) | Trust domain secure enclaves in cloud infrastructure | |
WO2016018298A1 (en) | Key search token for encrypted data | |
Lee et al. | A secure index management scheme for providing data sharing in cloud storage | |
US20180013755A1 (en) | Logon using master password or turn-varying password | |
US11368442B2 (en) | Receiving an encrypted communication from a user in a second secure communication network | |
CN105518696B (zh) | 对数据存储器执行操作 | |
KR102398380B1 (ko) | 키 교환 방법 및 시스템 | |
Kashyap et al. | Crypto multi tenant: an environment of secure computing using cloud sql | |
JP2016051250A (ja) | 機能制御システム、方法、設定情報管理装置、利用者端末及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |