加密区块链数据库详解(第一部分)

2020-07-17 13:09 栏目:经验之谈 来源:网络整理 查看()

块链数据库是一个存储系统,它结合了区块链和数据库的属性,如分散、防篡改、低查询延迟和支持复杂查询。随着它们被广泛采用,人们对他们管理的数据的保密性的担忧也将增加。许多项目使用区块链存储敏感数据,如电子医疗保健和财务记录、法律文件和客户数据。

在本文中,我们讨论了我们的新论文《加密的区块链数据库》,其中我们设计了一个端到端加密的区块链数据库,以支持需要存储和查询敏感数据的分散应用程序。特别是,我们关注于我们所谓的块链加密多重映射(EMM),它可以用来实例化各种NoSQL区块链数据库,如键值存储或文档数据库。

密码学领域的关键是端到端加密数据库的设计。更广泛地说,这是加密数据的搜索问题。该字段称为加密搜索。关于这个领域的介绍,请参考布朗大学加密系统实验室的这一系列博客文章。特别是,第五篇文章描述了标准/集中式EMM的构建(本文中称为加密数据库(EDB))。

加密多重映射

NoSQL数据库因其简单性、可扩展性和高性能保证,近年来在数据库行业中的地位越来越突出。多种NoSQL数据库,例如键值存储(例如,动态数据库)和文档数据库(例如,蒙古数据库),可以用多映射数据结构来实例化。多重映射是将标签映射到值元组的字典的推广。它们支持获取和放置操作,并且可以存储或检索与给定标签的标签相关联的值的元组。加密多重映射(EMM)是一种端到端的加密多重映射,它支持获取和放置操作,但过度加密加密数据。因为可以使用多个映射来表示NoSQL数据库,所以由区块链设计加密的NoSQL数据库本质上与区块链设计的EMM相同。

老朋友

设计区块链EMM有两种主要方式。首先是设计一个专门支持EMM的新区块链。这种方法的优点是EMM和区块链可以一起设计,以优化性能。第二种方法是设计一个传统的友好解决方案,因为它可以在现有的区块链上使用。这种方法的优势在于,区块链EMM可以在多个平台上构建,而无需构建新的区块链。然而,第二种方法有一些挑战:

1.我们如何在区块链存储数据结构?特别是,如何存储加密的多重映射数据结构?大多数现有的区块链被设计用来存储金融交易或智能合同的状态,但它们不是任意的数据结构。

2.由于区块链是防篡改的,我们如何更新EMM,尤其是如何添加/删除数据?

另一个简单的解决方案如下:每次更新时,我们可以从区块链读取整个EMM,进行必要的更改,然后将其写回全新的EMM。这是查询正确性的理想解决方案,因为每个查询总是从最新的EMM读取。然而,这种解决方案对于更新操作来说效率极低,因为每个更新操作都必须读回和写回整个结构。因此,我们还需要考虑以下第三个挑战:

如何针对查询和更新复杂性设计高效的区块链EMM?

在描述我们的区块链EMM建筑之前,让我们讨论第一个挑战——。第二个和第三个挑战更加困难,所以我们将在详细描述构造本身时解决它们。

在区块链存储任何数据结构

大多数区块链(如比特币、以太网、阿尔冈兰特)允许用户在交易中存储任意数据。因为在单个事务中只能存储有限数量的数据,所以大型数据结构必须在多个事务中拆分。然后问题变成了:

我们如何将这些事务联系在一起以构建任意的数据结构?

要回答这个问题,首先要注意,事务可以通过在较新的事务中存储先前事务的“地址”来链接。有了这个特性,我们将在区块链之上覆盖一个数据结构,这样我们就可以更新和查询数据结构,而无需对后端(区块链)进行任何修改。下面,我们提供一个简单的例子来展示如何覆盖一个链接列表。为了存储值为V=(v1,vn)上,我们执行以下操作(有关此过程的说明,请参考图1):

1.将每个值vi与存储vi-1的前一事务的地址ri-1连接起来。

2.用vi || ri-1创建一个新交易,并将其发送到区块链。这将生成ri,即新交易的地址。

3.对所有值重复此操作。

4.最后,存储与客户最后一次交易的地址rn。

要读取值,请执行以下操作:

1.发送rn到区块链以恢复值vn和地址rn-1。

2.然后使用rn-1恢复vn-1和rn-2。

3.继续此过程,直到读取完所有值。

加密区块链数据库详解(第一部分)

同样,我们可以在区块链上覆盖更复杂的数据结构,比如二叉树。这可以通过将两个地址连接到每个值来实现:一个地址用于它的左子代,一个地址用于它的右子代。如图2所示。

加密区块链数据库详解(第一部分)

智能合同的局限性

对于支持智能合同的区块链,另一种方法可能是将整个数据结构存储为智能合同的状态,并将查询和更新操作实现为智能合同。不幸的是,这种方法有两个主要的局限性。首先,它不是通用的,因为(1)许多区块链不支持智能合同(如比特币),以及(2)许多智能合同平台不保持跨交易状态(如Algorand)。第二个限制与使用这种平台的成本有关。事实上,智能契约平台不仅需要为存储数据和代码付费,还需要为执行代码付费;代码越复杂,成本越高。请注意,我们在区块链叠加数据结构的第一种方法不仅通用,而且成本更低,因为我们可以将数据存储在交易中而不是智能合同中,并且不需要在区块链执行任何代码。

在本系列的下一部分,我们将描述在区块链存储动态emm的三种方案,每种方案都实现了查询、添加和删除效率之间的不同权衡。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发