一种基于SGX的公证人跨链数据安全保护系统及方法

文档序号:30496046发布日期:2022-06-22 04:35阅读:113来源:国知局
一种基于SGX的公证人跨链数据安全保护系统及方法
一种基于sgx的公证人跨链数据安全保护系统及方法
技术领域
1.本发明涉及区块链跨链技术数据安全保护领域,特别涉及一种基于sgx的公证人跨链数据安全保护系统及方法。


背景技术:

2.区块链技术最初设计目的是解决电子支付中过度依赖可信第三方的问题。区块链融合了p2p网络、分布式计算等成熟技术,并结合密码学哈希函数、公钥加密、数字签名和零知识证明等技术,成了一种全新的分布式基础架构和计算范式。
3.当前,区块链技术已经从金融领域逐步渗透到政务、司法、物流、保险等其他应用领域。各行业区块链应用交易规模在不断增长,同时不同区块链应用之间的业务协同需求也随之增长,引来了不同链之间巨大的数据和价值流通需求。然而,不同链间无法快速互通的现象普遍存在,导致新的“区块链孤岛”显现,区块链行业生态割裂,网络碎片化严重,链间数据转移与价值流通受到严重阻碍,这将制约着区块链在全社会的大规模应用。
4.为实现更广泛的链间数据转移与价值流通,跨链技术出现了。它是在不同的区块链间转移数据的技术,是实现区块链互联互通、提升区块链互操作性与可扩展性的重要技术手段。例如,若在实际应用中需要将公有链与联盟链搭配使用,则需要引入跨链系统在这两类区块链间实现数据的转移与通信。近年来,跨链技术引起学术界与业界的关注,得到了一定程度的发展。虽然目前跨链技术展现出了一定程度的应用效果,但相关技术还不够成熟,实际应用中暴露出不少缺陷,如安全性依赖于外部中继节点、不能应对中继节点对跨链数据的篡改、性能较为低下等。可见,跨链技术的改进有显著的现实意义,业界对于更完善的跨链技术有迫切的需要。
5.公证人机制是一种常见的跨链技术,和传统的交易所工作模式类似,公证人机制是通过引入可信的第三方(即中继节点)进行跨链消息的验证和转发。当在不同的区块链系统中进行资产兑换和转移时,选举一个或者多个组织作为公证人来自动或者请求式监听不同链上的事件,并通过特定共识算法对事件是否发生达成共识,最后及时做出响应。现有的公证人机制跨链系统普遍假设大多数公证人是诚实的。但在实际应用中,跨链系统内的公证人节点一般较少,且由中心化机构运营,若受到黑客入侵或公证人运营者相互勾结,则可以轻易地篡改跨链数据并欺骗目标链,危害到链间数据转移的安全。因此,现有公证人机制跨链系统的“诚实大多数”假设存在明显的安全隐患。
6.intel sgx(software guard extensions)是英特尔提出的一项基于硬件的扩展指令和安全保护机制。sgx通过应用程序隔离技术帮助保护使用中的代码和数据。该技术允许用户态及内核态代码将特定内存区域设置为私有区域,此区域也被称作安全区(enclave)。安全区中的内容受到保护,不能被本身以外的任何进程存取,包括以更高权限级别运行的进程。通过保护特定代码和数据免遭修改,开发人员可以在其应用程序中建立受信任的执行模块,提高应用程序的安全性。
7.现已有一些基于sgx的跨链系统。然而,现有系统普遍忽视了公证人本身作恶的可
能,仍然保留对中继节点的“诚实大多数”信任假设,并未利用sgx技术解决该问题。这些系统往往借助sgx来避免跨链数据泄露或提升隐私性,但无法抵抗中继节点对跨链数据的恶意篡改。
8.实际上,借助sgx,可将跨链中继节点的核心功能代码置于受保护的安全区内运行,避免这部分代码逻辑被主动地(公证人相互勾结)或被动地(公证人节点被黑客入侵)篡改,并在安全区内对跨链数据的真实性和完整性实施验证,从而保证中继节点无法作恶,消除“诚实大多数”信任假设,保障链间数据转移的安全。因此,很有必要提出基于sgx的公证人跨链数据安全保护系统及方法。


技术实现要素:

9.针对现有公证人跨链数据保护方法的不足,本发明首先提供一种基于sgx 的公证人跨链数据安全保护方法。通过引入sgx硬件保护机制,并对公证人跨链数据转移的全过程实施验证,本方法可有效保障链间数据转移的安全。
10.本发明的具体技术方案如下:
11.一种基于sgx的公证人跨链数据安全保护系统,包括:
12.跨链控制智能合约,其部署在区块链上,包括源链和目标链上的跨链控制智能合约;
13.中继节点,是运行在链下的程序,负责跨链数据从源链到目标链的传递,包括运行在安全区外的不可信部分和安全区内的可信部分。
14.所述源链上的跨链控制智能合约,负责接受注册跨链管道(由源智能合约地址、目标智能合约地址、可信中继节点钱包地址列表组成的三元组),并接受源智能合约的跨链请求(包含跨链数据、目标链、目标智能合约信息)。当有多个可信中继节点接入时,需要负责在不同中继节点间分配跨链任务。
15.所述目标链上的跨链控制智能合约,负责接受注册跨链管道,接受中继节点的跨链交易,验证跨链数据是否经由已注册的跨链管道传输,并调用或通知目标智能合约,向其提供跨链数据。
16.所述中继节点不可信部分,包括区块链全节点、跨链请求监听模块、交易广播模块。区块链全节点负责同步源链和目标链的全部历史区块;跨链请求监听模块负责监听源链上新发生的跨链请求,并下载相应的跨链数据和目标链信息,提供给中继节点可信部分;交易广播模块负责接收中继节点可信部分构建好的跨链交易,并将其发布到目标链上。
17.所述中继节点可信部分,包括数据验证模块和交易构建模块。数据验证模块负责接收中继节点不可信部分传入的跨链数据、目标链、目标智能合约信息,在验证其真实性和完整性后将这些数据提供给交易构建模块;交易构建模块负责构建将跨链数据上传到目标链的交易,用只存在于安全区内部的私钥签名后提供给中继节点不可信部分的交易广播模块。
18.在本发明的一个优选实施方案中,跨链控制智能合约只与其他智能合约交互,而不能被用户直接调用。需要使用本系统的智能合约开发者,应该首先与选定的一个中继节点进行远程认证,确保该节点可信,再向本系统注册跨链管道。在源链上的跨链控制智能合约中注册跨链管道时,必须由该跨链管道中指定的源智能合约发起调用;在目标链上的跨
链控制智能合约中注册跨链管道时同理。
19.本发明要求注册“跨链管道”后才能提交跨链请求,意在解决以下问题:本系统需要用户自行实施远程认证来挑选可信的中继节点,并向跨链控制智能合约指定想要让哪个可信中继节点来中继自己的跨链数据。然而,用户不应该等到跨链时再指定中继节点(即:不应该在跨链数据中捎带可信中继节点钱包地址),因为一个恶意的中继节点(它甚至可能没有运行在sgx里面)可以欺骗目标链自己就是用户指定的可信中继节点(即:修改跨链数据中捎带的可信中继节点为自己),而目标链无法验证。所以,需要事先在源链和目标链上注册跨链管道。该注册过程应该是由需要用到本跨链系统的智能合约发起,而不是由任意用户发起。
20.在本发明的一个优选实施方案中,跨链请求(包含跨链数据、目标链、目标智能合约信息等)将被发布到一个以太坊事件中。数据验证模块将从硬盘上读取区块链全节点同步的源链历史区块,据此来验证跨链请求监听模块传入的跨链数据是否真实、未经篡改。该过程分为两步(以以太坊为例):首先,通过工作量证明等方式,判断本地保存的是有效的源链区块;然后,借助区块头中的bloom 过滤器字段,判断跨链请求对应的事件确实存在于源链中。
21.在本发明的一个优选实施方案中,中继节点可信部分在初始化时将在安全区内部生成目标链的公私钥对,导出对应的钱包地址。该钱包地址作为跨链管道三元组的一个成员,保存在源链和目标链的跨链控制智能合约中。中继节点交易构建模块使用这一私钥签署发布到目标链上的交易。这样,可避免交易内容被中继节点不可信部分篡改,目标链跨链控制智能合约也可以通过这个钱包地址验证跨链交易确实来自于用户信任的中继节点。
22.基于相同的发明构思,本发明还提供一种基于sgx的公证人跨链数据安全保护方法,其包括如下步骤:
23.(1)中继节点初始化,在安全区内生成目标链公私钥及对应的钱包地址;用户通过远程认证选定可信的中继节点并获取其钱包地址;
24.(2)注册跨链管道,用户向源链和目标链的跨链控制智能合约注册跨链管道,包含源智能合约地址、目标智能合约地址、可信中继节点钱包地址列表信息;
25.(3)中继跨链数据,用户在源链上提交跨链请求后,由中继节点将跨链数据传输到目标链上。
26.步骤(3)中,中继跨链数据的过程包括:
27.(3-a)提交跨链请求:源智能合约向源链上的跨链控制智能合约提交跨链请求,指定跨链数据、目标链、目标智能合约等信息;
28.(3-b)监听新跨链请求:中继节点跨链请求监听模块监听到新发生的跨链请求,从区块链上获取到待跨链数据等信息,传递给中继节点的数据验证模块;
29.(3-c)验证待跨链数据:中继节点的数据验证模块验证待跨链数据确实存在于源链中,且未经篡改,将该数据传递给中继节点的交易构建模块;
30.(3-d)发布待跨链数据:中继节点的交易构建模块创建将待跨链数据发布到目标链上的交易,并使用只存在于安全区内部的私钥签名,将交易传递给中继节点的交易广播模块;
31.(3-e)向目标链发布交易:中继节点的交易广播模块向目标链发布这笔交易;
32.(3-f)目标链上的跨链控制智能合约接收到交易,验证交易来自于已注册的跨链管道的可信中继节点钱包地址,调用目标智能合约提供跨链数据;
33.(3-g)中继节点向源链上的跨链控制智能合约报告跨链任务已完成。
34.与现有技术相比,本发明拥有以下优势:
35.1)不依赖于对中继节点的“诚实大多数”假设:本方明对跨链数据传输的全过程都进行了验证,保证了数据不会被恶意的中继节点篡改,有效保障链间数据转移的安全性。具体而言,本发明在三个易受恶意节点攻击的环节进行了保护:从源链下载待跨链数据时,本系统验证了该数据确实来自源链上;待跨链数据在安全区中处理时,本系统借助远程认证,可让用户验证安全区内运行的是公开代码的实例,因此不会作恶;跨链交易被发布到目标链上时,本系统保证了交易内容不会被篡改,且确实来自于用户信任的中继节点。
36.2)具有较好的普适性:本发明的原理通用性高,不局限于某一种特定的区块链,可以依据具体需求适配多种不同的区块链系统;
37.3)可解决中继节点的单点故障问题:本系统对于运行中继节点的设备没有特殊要求,仅需支持sgx即可,允许多个中继节点接入跨链系统中。用户可选择多个信任的中继节点,从而确保某个节点故障时也能正常完成跨链。
附图说明
38.图1为基于sgx的公证人跨链数据安全保护系统结构和工作流程示意图;
39.图2为中继节点初始化的流程示意图;
40.图3为中继跨链数据的流程示意图;
41.图4为数据验证模块验证跨链数据的流程示意图;
42.图5为本系统使用的主要数据结构示意图;
43.图6为实际应用中用户与本系统的交互流程示意图。
具体实施方式
44.下面结合附图和实施例对本发明进行进一步详细描述。需要指出的是,所给出图示和文字描述仅起范例作用,所有基于此的修改应当全部视为在本发明范围内。
45.如图1所示,本发明基于sgx的公证人跨链数据安全保护系统包括以下六个模块:
46.1.跨链控制智能合约,运行在需要应用本跨链系统的区块链上,包括源链和目标链。跨链控制智能合约负责管理跨链任务。
47.其中,部署在源链上的跨链控制智能合约接受注册跨链管道,并接受源智能合约的跨链请求,此外,在有多个可信中继节点接入本系统时,还需要在不同中继节点间分配跨链任务。
48.部署在目标链上的跨链控制智能合约接受注册跨链管道,接受中继节点的跨链交易,验证跨链数据是否经由已注册的跨链管道传输,并调用或通知目标智能合约,向其提供跨链数据。
49.2.区块链全节点,运行在中继节点的安全区外,属于不可信部分。区块链全节点负责同步源链和目标链的全部历史区块,保存在本地存储中。这些区块数据将被其它模块用于验证跨链数据的真实性和完整性。跨链请求监听模块和交易广播模块也需要借助区块链
全节点来读写对应的区块链。
50.3.跨链请求监听模块,运行在中继节点的安全区外,属于不可信部分。跨链请求监听模块借助区块链全节点来获取源链上的最新区块,监控源链上新发生的跨链请求。当有新的跨链请求被分配到本中继节点处理时,将会下载相应的跨链数据和目标链信息,传递给数据验证模块。
51.4.数据验证模块,运行在中继节点的安全区内,属于可信部分。数据验证模块接受跨链请求监听模块传入的跨链数据和目标链信息,并利用区块链全节点同步的源链历史区块来验证传入的跨链数据是否真实、未经篡改。在以太坊上实施本系统时,该过程分为两步:首先,通过工作量证明等方式,判断本地保存的是有效的源链区块;然后,借助区块头中的bloom过滤器字段,判断跨链请求对应的事件确实存在于源链中。在验证成功后,将跨链数据传递给交易构建模块。
52.5.交易构建模块,运行在中继节点的安全区内,属于可信部分。交易构建模块负责构建将跨链数据上传到目标链的交易。在中继节点初始化时,安全区内将会生成一对目标链的公私钥及对应的钱包地址,该私钥受到安全区保护。交易构建模块使用该私钥对交易进行签名,并传递给交易广播模块。
53.6.交易广播模块,运行在中继节点的安全区外,属于不可信部分。交易广播模块接收交易构建模块构建好的跨链交易,并通过区块链全节点将交易发布到目标链上。
54.本发明基于sgx的公证人跨链数据安全保护方法包括以下步骤:
55.(1)中继节点初始化,其流程如图2所示,包括:
56.(1-1)启动中继节点安全区外的各个模块,包括区块链全节点、跨链请求监听模块、交易广播模块;区块链全节点开始同步源链和目标链的历史区块;
57.(1-2)检查系统环境对于sgx的支持,通过后进入下一步骤,否则,将进行环境修复,如通过软件控制方式开启计算机的sgx支持。若修复失败,则发出对应的警告等待管理员处理,若检查结果表明计算机系统不支持sgx,则终止中继节点初始化,并给出对应的提示,告知用户该系统无法运行;
58.(1-3)在sgx支持检查通过后,将按照以下步骤初始化安全区:
59.(1-3a)测量安全区内预定运行的代码和数据预计占用空间,根据安全区内预定运行的代码数据、sgx硬件信息、当前时间等交叉生成验证信息和访问密钥;
60.(1-3b)为安全区分配对应内存空间,上载运行所需代码和数据(包括数据验证模块和交易构建模块的相关代码),之后删除安全区外部内存中的相应数据,保证这部分数据只存在于安全区内;
61.(1-3c)在安全区内生成目标链的公私钥及对应的钱包地址,私钥封存于安全存储区内;
62.(1-4)智能合约开发者通过sgx提供的远程认证服务验证安全区内运行未经篡改的公开代码实例,确认该中继节点可信,获得该中继节点的钱包地址,向跨链控制智能合约注册跨链管道,如图5中的(a)所示,所述的跨链管道是由源智能合约地址、目标智能合约地址、可信中继节点钱包地址列表组成的三元组。该步骤也可在中继节点初始化完成后随时进行。
63.完成上述步骤后,中继节点就已经进入待命状态,可以接受源链上的跨链任务。
64.(2)中继跨链数据,其流程如图3所示,包括:
65.(2-1)提交跨链请求。当源链上的智能合约需要将数据传递到目标链时,向源链上的跨链控制智能合约提交跨链请求。如图5中的(b)所示,跨链请求包括跨链数据、目标链、目标智能合约信息。本系统接受的跨链数据是原始的二进制数据,不限定其格式或编码,由使用本系统的目标智能合约负责解析跨链数据。
66.接收到跨链请求后,源链的跨链控制智能合约将检查是否存在对应于源智能合约地址和目标智能合约地址的跨链管道,若存在,则发出一个事件(以以太坊为例),如图5中的(c)所示,该事件主题为系统内事先定义的标识符(如“crosschain”),事件数据包含了跨链请求和指定的中继节点。
67.(2-2)监听到跨链请求。运行在中继节点安全区外的跨链请求监听模块,借助区块链全节点来获取源链上的最新区块,并遍历区块内每笔交易的事件列表。若发现由源链跨链控制智能合约发出的事件,且指派的中继节点为自己,则获取相应的跨链请求及对应的区块高度,并传递给数据验证模块;
68.(2-3)数据验证模块验证跨链数据,其流程如图4所示,包括:
69.(2-3a)验证本地保存的历史区块。运行在中继节点安全区内的数据验证模块读取本地由区块链全节点同步的源链历史区块。这些历史区块来自系统的不可信部分,因此需要验证。验证方法是依据工作量证明,从创世区块开始逐一检查区块是否有效。在首次验证完成后,数据验证模块可将本次验证过的最新区块的区块高度及哈希封存于本地安全存储区内,下一次验证时就可以从这个区块开始验证,而不必再从创世区块开始;
70.(2-3b)验证跨链数据来自源链区块。跨链数据保存在源链的事件中,如果需要获取事件数据用于验证,需要在安全区内建立区块链状态数据库并执行对应的交易,这将造成巨大的开销和庞大的可信计算基(tcb)。作为一个折中方案,本系统使用源链区块头中的bloom过滤器字段(如以太坊的logsbloom字段) 来判断给定的事件是否真实存在于源链区块中。
71.若上述验证通过,则将跨链数据、目标链、目标智能合约信息传递给交易构建模块。
72.(2-4)构建跨链交易。运行在中继节点安全区内的交易构建模块生成一笔调用目标链跨链控制智能合约的交易,该交易的参数中携带了跨链数据。交易构建模块读取由安全区保护的目标链私钥对该交易进行签名,并传递给交易广播模块;
73.(2-5)发布跨链交易。运行在中继节点安全区外的交易广播模块借助区块链全节点将这笔跨链交易发布到目标链的网络中;
74.(2-6)接受跨链数据。目标链上的跨链控制智能合约将检查收到的跨链交易,验证源智能合约地址、目标智能合约地址、中继节点钱包地址是否与已存在的跨链管道一致。若验证通过,即意味着这条跨链数据是由用户信任的中继节点传输,并且未经篡改。随后,跨链控制智能合约将调用目标智能合约,并向其传递跨链数据。最后,目标链跨链控制智能合约发出事件,表明跨链完成。
75.(2-7)标记跨链任务完成。中继节点监听到目标链跨链控制智能合约发出完成事件后,调用源链跨链控制智能合约,标记本次跨链任务完成。为避免恶意的中继节点未完成任务就标记完成,该过程应采用与(2-3)~(2-5)步类似的流程,由中继节点可信部分先验
证目标链上确实发出了完成事件,再签署发布到源链的交易,最后由不可信部分广播该交易。
76.下面以实际应用中的一个例子说明用户与本跨链系统的交互过程。如图6 所示,是一个跨链商品销售系统,包括a链上的销售智能合约和b链上的物流管理智能合约。终端用户通过销售智能合约购买商品,成功付款后,a链上的销售智能合约通过本跨链系统将用户的订购信息传递给b链上的物流管理智能合约,从而可以在b链上管理商品的配送流程。这个例子包括了两个交互流程:
77.(1)智能合约开发者注册跨链管道;
78.(2)终端用户购买商品。
79.流程(1)中,注册跨链管道的过程包括:
80.(1-1)销售智能合约开发者与中继节点进行远程认证,确认该节点可信;
81.(1-2)该开发者获取中继节点的钱包地址;
82.(1-3)该开发者调用销售智能合约,发起跨链管道注册。销售智能合约将验证此操作只能由本合约的开发者或管理员发起;
83.(1-4)销售智能合约调用a链上的跨链控制智能合约,注册跨链管道;
84.(1-5)~(1-8)为物流管理智能合约开发者进行上述相同的操作流程,不再赘述。
85.流程(2)中,终端用户购买商品的过程包括:
86.(2-1)用户调用a链上的销售智能合约,发起一笔购买;
87.(2-2)销售智能合约判断本次交易是否合法(如金额是否足够),通过后向跨链控制智能合约提交跨链请求,表明希望向b链的物流管理智能合约传递本次交易的订购信息;
88.(2-3)中继节点监听到跨链请求,获取跨链数据;
89.(2-4)中继节点将跨链数据发布到b链上;
90.(2-5)b链的跨链控制智能合约接收到跨链数据,将其提供给物流管理智能合约。后者将开始处理与本次订购信息相关的物流情况。
91.至此,整个交互流程结束。
92.以上所述的实施例对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的具体实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1