《使用智能合约实现异构区块链之间的安全互操作性 》论文笔记

Gaby G.Dagher, Chandra L. Adhikari, and Tyler Enderson. “Towards Secure Interoperability between Heterogeneous Blockchains using Smart Contracts.” no. November (2017).



一、期刊及作者信息

作者信息:

  1. Gaby G. Dagher 博伊西州立大学。
  2. Chandra L. Adhikari 博伊西州立大学。
  3. Tyler Enderson 博伊西州立大学。

期刊信息:Future Technologies Conference(FTC)。

二、研究背景

区块链是一项新兴的技术,人们正在研究其相关概念,以求扩展区块链的使用方式。

1.研究现状(区块链相关研究)

a.侧链、软件连接器和互操作性

通过侧链实现多个区块链之间的互操作性是扩展可能实现的研究领域之一。固定侧链1,它允许在链之间直接双向转移资产,即代币或加密货币,而不需要交换。侧链通过发送到特殊地址的交易从父链接收资产,锁定父链上的资产以在侧链上使用。固定侧链随后能够利用父链协议的修改版本来利用资产,并且可以自由的将资产转移回父链。这种类型的区块链互操作性是有限的。只有资产以1对1的关系转移,而总资产的数量却没有增加。
作者在文章2中,研究区块链技术是否适合作为软件连接器,即不同组件(如管道或插座)之间的交互机制。此外,还确定了区块链特定链上和链外组件的设计决策,这影响了访问控制或数据存储等需求的可用性。

b.区块链作为访问控制

区块链已经看到了许多通过交易或智能合约合并各种访问控制方法的建议,这些交易或智能合约是基于传统的访问控制系统,或与传统的访问控制系统交互。有趣的是,作为一种使用访问控制的机制,区块链也被描述为物联网身份验证的解决方案。通常,在将区块链用于访问控制的提案中,交易或智能合同用于在发送方和接收方之间传递模糊的对称密钥。

c.隐私和数据存储

随着互联网世界中越来越多的个人和私人数据可用,有必要创建保护隐私的存储系统。虽然有一些方法可以返回维护隐私的数据查询,匿名技术可以发布数据,同时通过例如匿名或多样性来保护隐私信息,但使用区块链存储数据可以通过消除可能失败的第三方集中式可信机构来进一步保护隐私。
MedRec3是一个由麻省理工学院媒体实验室发布的项目,涉及公共区块链和多个智能合同,以保护和管理电子健康记录(EHR)。
Quorum4是由摩根大通银行组织的开源项目。


本文提出的解决方案在这些研究领域取得了进展,并通过部署公共和私有区块链上的合同来维护,以执行自主任务,如添加到文件的链接、注册患者或更改文件读取权限。作者在下表中总结了与作者建议密切相关的工作的比较信息。

表1


2.研究目的

在保持安全访问的同时实现数据机密性和隐私在包括医疗部门在内的各个领域都是至关重要的。区块链技术的去中心化和以太网智能合约的出现,这两大特性可以用来创建灵活、安全和更加可靠的新型数据共享和访问系统。作为概念证明,作者提出并实施了医疗数据记录管理系统,其中对医疗服务提供者数据库的访问通过私有区块链进行管理,仅对医疗服务提供者可用,患者通过公共区块链访问他们的医疗记录。此外,作者还为每个区块链开发了一套智能合同,以控制访问、管理存储并实现两个区块链之间的互操作性。

在文章中,作者研究了在异构区块链之间使用智能合约来实现数据共享和访问控制的安全互操作性。需要一种记录管理系统,该系统足够灵活,能够普遍访问文件,保护隐私,提供对个人信息的完全控制,并使患者能够确定哪些记录是可见的。
因此,作者提出并实施了医疗数据记录管理系统,其中对医疗服务提供者数据库的访问通过私有区块链(仅对医疗服务提供者可用)进行管理,患者通过公共区块链访问他们的医疗记录。直接存储在区块链的数据(如文件链接)是加密的,因此只有授权用户才能访问。此外,作者还为每个区块链开发智能合同,以控制访问和管理存储。每个智能合约可以在可互操作的公共和私有区块链上自主执行其他智能合约,以完成任务。纳入这种类型的记录管理有助于加强系统安全性,以便只有获得批准的各方才有权查看数据。


三、方案介绍

在这篇文章中,作者探讨了如何利用以太坊的区块链技术来实现智能合约进行安全文件访问的协议。该解决方案由智能合约组成,这些合约将敏感的输入数据从公共区块链传递到私有区块链,反之亦然。该方案利用私有区块链来防止未经授权的用户访问私有网络。为了实现安全性,方案创建了智能合约,例如确认合约(Verify Contract),它在允许访问指定文件之前运行多重验证过程。交易的结构和以太坊的交易标准相同,输入数据字段是必须的,而不是可选的,输入数据字段用于传递各种加密消息和敏感信息。

1.解决方案概述

该设计和结构采用了以太坊的公共和私有区块链、智能合约和本地数据库,为患者提供安全的电子健康记录访问。该方法允许患者通过区块链向其提供者的系统发送请求。以太坊区块链上的智能合约用于自动执行任务和实现访问控制。

假设一个简单的案例,患者试图访问其医疗记录文件。案例流程图如图,提供者和患者都已在此系统中注册。步骤如下:

  1. 提供者创建一个新报告。
  2. 将改报告插入到本地文件存储库(本地数据库)。
  3. 对于要链接的文件,将使用结构化参数调用文件连接器(File Linker)智能合约。(注:对于单个文件,每个链接都是唯一生成的。文件链接器成功执行后,将创建一个包含输入数据的交易。)
  4. 患者请求访问该文档。
  5. 生成文件访问请求,并调用请求验证(Request Validator)智能合约。
  6. 然后调用位于私有区块链中的验证请求(Verify Request)智能合约。该请求会调用验证请求(Verify Request)智能合约,并执行一个三步验证过程的算法来验证。
  7. 一旦通过验证,就会调用公共区块链上的通知合约(Notifier contract),将加密消息传递给请求者。这个加密消息包含指向该文件的实际链接。
  8. 成功执行通知合约(Notifier contract)后,将创建具有输入数据的交易。一旦交易到达公共区块链,用户将通过其以太钱包收到通知,然后以太钱包将解密加密链接,以获得指向文件的实际链接。


图片描述:所有带图案的绿色矩形都表示智能合约。橙色矩形表示交易,每个蓝色框表示链接到链中的前一个块的块。浅黄色方框代表公有区块链,粉色方框代表私有区块链。浅灰色框表示用户(患者)节点,浅绿色框表示提供者(医生)节点。


2.私有区块链中的文件注册

在患者请求查看文档之前,该文档需要先通过交易在私有区块链上注册。创建此交易时,提供者需要指定默认权限以及实际文件。以太地址用于标识初始权限。例如,如果为患者P生成新的医疗文件,则提供者将利用P的以太地址为P设置查看该文件的有效许可。所有敏感信息(如文件名和下载链接)在作为输入数据传递到文件链接器(File Linker)智能合约之前都会被加密。
下图中所示的本地数据库属于提供者的节点,其中保存了患者的文件名f,文件链接l和以太地址。提供者的接口负责使用公钥密码系统(例如ElGamal5)来生成映射到文件f的加密文件链接.
提供者的接口获得患者的公钥并使用它生成密文i.此外,使用单向散列函数(即SHA-256)对文件名f进行散列,以生成256位(32字节)散列。属于患者的报告是通过使用他/她的以太公共地址来确定的,该地址是交易输入数据的一部分。这些文本片段被格式化为单个数据片段,格式如下:[userEthAddress][File Link][hashOfFileName], userEthAddress是患者的以太地址,FileLink是文件的安全链接,hashOfFileName是文件名f的哈希散列。输入数据被传递到文件连接器(File Linker)智能契约中,从而产生与所提供的输入数据的交易。这个向交易中传入加密输入的过程被认为是创建了一个可由患者请求搜索的记录。

提供者在私有区块链上注册文件的过程
图片描述:提供者在私有区块链上注册文件的过程,首先创建一个新文件并将其存储在本地数据库中。步骤2、3、4、5、6和7准备向文件链接器智能合约的输入数据。一旦用输入数据调用文件链接器,它将在私有区块链上以交易的形式创建一条记录,指向指定的文件链接映射到指定患者的以太地址。在验证患者的请求时,此记录将是可搜索的。


3.患者对文件的访问请求

患者对文件进行访问请求时,为了验证患者是否被授权和注册,患者需要产生一个文件名的散列,然后使用其私钥对该散列进行签名。签名和文件名的散列合并在一起,为请求验证(Request Validator)智能合约创建输入数据。通过其以太网钱包,患者调用请求验证来生成一个交易,该交易将作为请求记录放在公共区块链。请求验证合约调用私有区块链中的验证请求合约,并将输入数据传递给它。此调用将在每个私有和公共区块链中产生一个交易。验证文件名的签名和散列是在智能合约内部进行的。
一旦所有步骤都得到验证,验证请求合同将向通知器智能合约发送加密消息,从而在公共和私有区块链中创建了一个交易。然后,通知器合约将会执行并创建一个涉及患者以太坊地址和由验证请求合约传递的消息的交易。该传递的消息包含访问使用ElGamal加密系统加密的文件的安全链接和患者的公钥。患者将会被告知请求的许可状态。

在这里插入图片描述
此图按时间顺序显示了用户请求访问系统中文件的流程。在这个阶段,该文件应该已经存放(注册)在私有区块链中。首先,患者将使用他的私钥来生成文件名散列的签名。完成步骤1到4后,将创建请求验证的输入数据。一旦请求验证合约调用验证请求合约,步骤3将开始,加密消息将被发送到通知器合约。无论请求是否有效,消息都将由通知器合约发送到用户的以太地址。最后,用户的API负责检查新消息,并通知用户请求结果。


4.智能合约的结构

为了实现互操作性,该方案共使用了五个智能合约:其中三个位于私有链,两个位于共有链。私有链上有 注册(Enroller)、请求验证(Request Validator)、文件链接(File Linker)智能合约,公有链上有 验证请求(Verify Request)和 通知(Notifier)智能合约。

在这里插入图片描述

系统中所有合同之间的交互。所有指向合约的黑色箭头表示它正被位于箭头起点的另一个合约调用。所有红色连接器都表示由于两个合约之间的调用而发生的交易。每个红色箭头要么进入公共区块链,要么进入私有区块链,这表明交易将驻留在指定的区块链上。由于显示的合约之间的调用,总共有两笔交易进入公共区块链,另外五笔交易进入私有区块链。


  1. 注册合约(Enroller Contract):该注册合约是当提供者将新患者注册到他们的系统中时执行的初始合约。每次调用注册器合约都将在私人区块链上发布一个交易,使其对私人区块链的成员可见。该交易在输入数据部分包括加密的患者敏感信息,这使得在需要时能够进行有效的搜索。由于交易位于在私人区块链,它比公共区块链更安全,防止公众查看私人交易详细信息。
  2. 文件连接合约( File Linker Contract):此合约的目的是确保新的安全链接映射到指定的文件。该合约的输入可以表示为P1、P2和P3,其中P1指的是患者的以太坊地址,P2代表链接的加密文本,P3是要链接的文件名的散列。在本合约成功执行后,将向包含P1、P2和P3的私有区块链发出交易。我们使用此信息搜索交易列表,以验证是否有有效用户请求访问。当提供程序链接文件时,每个文件都将使用每个安全链接。
  3. 请求验证合约(Request Validator Contract):这是一份在公有链所执行的全球合约。所有执行该合约的用户需要是以太坊公共网络中的一个节点。验证请求合同负责将输入数据安全地传递到位于我们系统的专用网络中的另一个合同。安全传递的输入数据的格式如下: 《signature》《hashOfFile》。签名验证的目的是验证发送请求的患者。文件的散列将用于搜索私有区块链中的交易。
  4. 验证请求合约(Verify Request Contract):这是另一份位于私有区块链中的合约,用于加强系统安全性。该合约负责验证所有输入,并通过检查所请求文件的权限来确定请求的有效性。它采用两个参数:患者传递的文件名的签名和其散列,然后使用一个使用三步验证过程的算法:
    (1)签名验证(Signature Validation):使用患者的公钥和文件名的散列进行验证通过的签名,以确认它确实是由该特定患者发送的。
    (2)注册验证(Verification of Registration):签名验证成功后,验证请求合约将调用注册者合约,该合约将验证地址是否已在私有网络中注册。
    (3)交易搜索(Transaction Search):此步骤包括通过扫描输入数据部分寻找以太地址和文件散列匹配,搜索位于私有区块链中的交易。最初,当提供者将文件插入系统时,会根据特定患者的以太地址授予查看该文档的权限。如果没有包含患者正在查找的文件名的散列及其地址的事务,那么这仅仅意味着系统中没有文档。因此,该请求将失败。但是,如果有一个交易具有文件名的散列和患者的正确地址,则验证请求合约将返回加密的安全链接。一旦找到交易,它就被视为有效的请求,并且该文件的加密安全链接将作为参数被发送到位于公共区块链中的通合约。
  5. 通知合约(Notifier Contract):该合约部署在公有区块链中,目的是在双方之间传递消息。它以接收者的地址和消息作为参数。当任何合约将消息与目的地址一起传递时,该合约将通过使用公共区块链上的输入数据创建交易来执行其任务。在这种情况下,请求者必须使用一个接口,该接口持续检查公有区块链,并在涉及患者的交易到达时通知患者。在该系统中,发布在公共区块链上的实际消息是加密的,并作为交易输入数据存储。通知合约从请求验证合约中获取加密的消息,并创建一个交易,将该消息作为输入数据传递。任何人都可以看到该加密消息,但只有拥有合适私钥的患者才能解密该消息并获得文件链接。患者打开通知后,他/她将能够使用他的接口解密链接,并按照解密的链接访问文件。

三、总结与讨论

在本文中,使用了两个异构区块链:私有和公共,以提供可互操作和安全的数据共享和访问控制。然而,这些区块链都是以太坊的区块链。文章提供的解决方案不支持混合系统,例如比特币区块链和以太坊区块链,因为这些平台使用不同的协议,并且比特币不支持智能合约。该方案要求使用相同类型的区块链,这个要求限制了当前不兼容的区块链之间的应用。此外,该方案的系统将数据存储在提供商的本地数据库中,这是区块链之外的一个单独的层。我们假设这个本地数据库存储了文件名、安全链接、患者的以太网地址和患者的公钥。只有在添加新文件和根据患者的有效请求检索安全链接时,提供者才会使用该数据库。
对于未来的工作,作者的目标是改进建议的系统,使其与 HIPAA6关于数据共享的规则兼容。此外,为了提高解决方案的健壮性和适应性,接下来将研究如何消除额外的数据层,即提供商的数据库,并将数据记录直接存储在私有区块链上。


  1. A. Back, M. Corallo, L. Dashjr, M. Friedenbach, G. Maxwell, A. Miller, A. Poelstra, J. Timón, and P . Wuille, “Enabling blockchain innovations with pegged sidechains,” URL:http://www.opensciencereview.com/papers/123/enablingblockchain innovations-with-pegged-sidechains, 2014. ↩︎

  2. X. Xu, C. Pautasso, L. Zhu, V . Gramoli, A. Ponomarev, A. B. Tran,and S. Chen, “The blockchain as a software connector,” in Software Architecture (WICSA), 2016 13th Working IEEE/IFIP Conference on.IEEE, 2016, pp. 182–191. ↩︎

  3. A. Ekblaw, A. Azaria, J. D. Halamka, and A. Lippman, “A case study for blockchain in healthcare:medrec prototype for electronic health records and medical research data,” 2016. ↩︎

  4. Quorum whitepaper [Online] . Available:https://github.com/jpmorganchase/quorum-docs/blob/master/Quorum%20Whitepaper%20v0.1.pdf ↩︎

  5. T. El Gamal, “A public key cryptosystem and a signature scheme based on discrete logarithms,” in Advances in Cryptology, 1985, pp. 10–18. ↩︎

  6. Health insurance portability and accountability act (hipaa). [Online].Available: https://www.hhs.gov/hipaa/ ↩︎

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值