一种基于可信环境的智能合约保护方法和系统与流程

文档序号:12908091阅读:289来源:国知局
一种基于可信环境的智能合约保护方法和系统与流程

本发明属于智能合约安全领域,更具体地,涉及一种基于可信环境的智能合约保护方法和系统。



背景技术:

智能合约(smartcontracts)是一套数字形式定义的承诺,对数字资产进行控制并规定了合约参与者的权利与义务,智能合约由计算机系统自动执行,智能合约的执行过程就是对数据的处理过程。本质上讲,智能合约就是使用计算机系统中如果-则(if-then)的方式与真实世界的财产进行交互。虽然智能合约概念提出较早,但是由于缺乏能够支持智能合约特性的系统或者技术,智能合约的目标难以实现。

区块链(blockchain)技术因为具有去中心化,交易过程透明且可追踪等特性被广泛的应用于金融领域,区块链的出现完美的解决了智能合约实现过程中的障碍。由于区块链具有去中心化,交易记录不可篡改并且可被追踪的特性,这些特性就保证了智能合约执行的公正性,并且区块链本身就是一个应用程序,智能合约就能够与它交互。区块链的出现使得智能合约快速发展,如今智能合约被广泛应用,并且成为了区块链技术的特性之一。

在区块链执行的智能合约通常包括部署以及执行两个阶段,在部署阶段创建者创建智能合约,并将智能合约部署到区块链之上,由于区块链的公开性,部署在区块链上的智能合约对所有人都是可见的。在执行阶段,区块链节点获取要执行的智能合约,之后获取处理的数据,并通常在类似于虚拟机的环境中让智能合约对数据进行处理,之后区块链节点对结果共识,将共识结果返回给创建方。

然而,现有的智能合约系统存在以下技术问题:首先,智能合约一旦部署在区块链之上,智能合约就要被公开,这就意味着智能合约能够被智能合约创建者以外的人看到,但是有些智能合约的创建者不想让别人看到智能合约的内容,这就涉及到版权问题,非常明显,当今智能合约系统不能够保护智能合约版权;其次,智能合约的执行环境类似于虚拟机,不能够抵抗恶意主机内核级别的信息窃取,意味着恶意攻击者可以获取智能合约,通过挖掘智能合约本身代码存在的漏洞,进而损害智能合约使用者的权益;第三,智能合约在执行之前,需要获取数据源提供的数据,但是当前执行智能合约的过程中并不能够对数据源提供的数据进行保护,攻击者可能将数据源提供的数据缓存到本地或者将数据进行转发,进而窃取数据源提供的数据。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种基于可信环境的智能合约保护方法和系统,其目的在于,解决现有智能合约系统中存在的容易出现智能合约信息泄漏而导致无法保护智能合约版权、智能合约使用者权益受损的技术问题,以及容易出现数据泄露而导致数据被窃取的技术问题。

为实现上述目的,按照本发明的一个方面,提供了一种基于可信环境的智能合约保护方法,其是应用在一种智能合约保护系统中,所述智能合约保护系统包括区块链节点、客户端和数据提供方,其特征在于,所述方法包括以下步骤:

(1)客户端创建智能合约,并在可信环境下对该智能合约进行哈希运算,使用对称加密算法对智能合约进行加密处理,并将加密处理后的智能合约部署在区块链上,以获得智能合约地址。

(2)区块链节点向客户端发送合约信息获取请求,客户端根据该信息获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入步骤(3),否则过程结束。

(3)客户端在可信环境中使用区块链节点提供的一次性公钥对步骤(1)中哈希运算的结果、对称加密智能合约过程使用的密钥、以及智能合约地址作为合约信息进行非对称加密,并将加密结果传送到区块链节点;

(4)区块链节点在可信环境中使用与一次性公钥对应的一次性私钥对加密结果进行非对称解密,并使用非对称加密算法对解密得到的对称密钥以及哈希值进行加密,连同智能合约地址一同存储在本地合约信息存储池;

(5)区块链节点从客户端获取其需要执行的智能合约地址,根据该智能合约地址获取区块链中对应的智能合约密文、以及步骤(4)中本地存储的合约信息,在可信环境中对合约信息进行非对称解密,以得到哈希运算的结果以及加密智能合约时使用的对称密钥,使用该对称密钥解密智能合约密文,并对解密后的智能合约进行哈希运算,判断得到的结果与哈希运算的结果是否一致,如果一致则进入步骤(6),否则过程结束。

(6)区块链节点向数据提供方发送数据获取请求,数据提供方根据该数据获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入步骤(7),否则过程结束。

(7)区块链节点将新的一次性公钥发送到数据提供方,数据提供方在可信环境中使用对称加密算法对数据获取请求对应的数据进行加密,使用新的一次性公钥对对称加密算法中的一次性对称密钥进行加密,并将加密后的数据和加密后的对称密钥发送到区块链节点;

(8)区块链节点将加密后的数据和加密后的对称密钥读入到可信环境中,并对可信环境的数据输出做出一定的限制,在可信环境中使用与一次性公钥对应的一次性私钥对加密后的一次性对称密钥进行非对称解密,使用解密后的一次性对称密钥对加密后的数据进行解密,并使用步骤(5)中解密后的智能合约对解密后的数据进行处理,以获得智能合约运算结果。

(9)区块链节点向客户端发送一次性对称密钥获取请求,客户端根据该一次性对称密钥获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入步骤(10),否则过程结束。

(10)区块链节点将新的一次性公钥发送到客户端,客户端在可信环境中产生一次性对称密钥,使用该新的一次性公钥对一次性对称密钥进行加密,并将加密结果发送到区块链节点;

(11)区块链节点在可信环境中使用与一次性公钥对应的一次性私钥对加密后的一次性对称密钥进行非对称解密,使用得到的一次性对称密钥对步骤(8)中得到的智能合约运算结果进行加密,并将加密结果在区块链节点之间进行共识;

(12)客户端获取共识的结果,并在可信环境中使用步骤(10)中的一次性对称密钥对共识的结果进行解密。

按照本发明的另一方面,提供了一种基于可信环境的智能合约保护方法,其是应用在一种智能合约保护系统中,所述智能合约保护系统包括区块链节点、客户端和数据提供方,所述方法包括以下步骤:

(1)客户端创建智能合约,并在可信环境下对该智能合约进行哈希运算,使用对称加密算法对智能合约进行加密处理,并将加密处理后的智能合约部署在区块链上,以获得智能合约地址。

(2)区块链节点向客户端发送合约信息获取请求,客户端根据该信息获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入步骤(3),否则过程结束。

(3)客户端在可信环境认证通过以后在可信环境中使用区块链节点提供的一次性公钥对步骤(1)中哈希运算的结果以及对称加密智能合约过程使用的密钥作为合约信息进行非对称加密,并将加密结果以及智能合约地址传送到区块链节点;

(4)区块链节点在可信环境中使用与一次性公钥对应的一次性私钥对加密结果进行非对称解密,并使用非对称加密算法对解密得到的对称密钥以及哈希值进行加密,连同智能合约地址一同存储在本地合约信息存储池。

(5)区块链节点从客户端获取其需要执行的智能合约地址,根据该智能合约地址获取区块链中对应的智能合约密文、以及步骤(4)中本地存储的合约信息,在可信环境中对合约信息进行非对称解密,以得到哈希运算的结果以及加密智能合约时使用的对称密钥,使用该对称密钥解密智能合约密文,并对解密后的智能合约进行哈希运算,判断得到的结果与哈希运算的结果是否一致,如果一致则进入步骤(6),否则过程结束。

(6)区块链节点向数据提供方发送数据获取请求,数据提供方根据该数据获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入步骤(7),否则过程结束。

(7)区块链节点将新的一次性公钥发送到数据提供方,数据提供方在可信环境中使用对称加密算法对数据获取请求对应的数据进行加密,使用新的一次性公钥对对称加密算法中的一次性对称密钥进行加密,并将加密后的数据和加密后的对称密钥发送到区块链节点;

(8)区块链节点将加密后的数据和加密后的对称密钥读入到可信环境中,并对可信环境的数据输出做出一定的限制,在可信环境中使用与一次性公钥对应的一次性私钥对加密后的一次性对称密钥进行非对称解密,使用解密后的一次性对称密钥对加密后的数据进行解密,并使用步骤(5)中解密后的智能合约对解密后的数据进行处理,以获得智能合约运算结果。

(9)区块链节点向客户端发送一次性对称密钥获取请求,客户端根据该一次性对称密钥获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入步骤(10),否则过程结束。

(10)区块链节点将新的一次性公钥发送到客户端,客户端在可信环境中产生一次性对称密钥,使用该新的一次性公钥对一次性对称密钥进行加密,并将加密结果发送到区块链节点;

(11)区块链节点在可信环境中使用与一次性公钥对应的一次性私钥对加密后的一次性对称密钥进行非对称解密,使用得到的一次性对称密钥对步骤(8)中得到的智能合约运算结果进行加密,并将加密结果在区块链节点之间进行共识;

(12)客户端获取共识的结果,并在可信环境中使用步骤(10)中的一次性对称密钥对共识的结果进行解密。

优选地,步骤(1)中使用的对称加密算法可以是des算法、3des算法、aes算法等。

优选地,步骤(3)中使用的非对称加密算法可以是rsa、elgamal、背包算法、rabin、d-h、ecc等。

按照本发明的另一方面,提供了一种基于可信环境的智能合约保护系统,其是应用在一种智能合约保护系统中,所述智能合约保护系统包括区块链节点、客户端和数据提供方,所述系统包括:

第一模块,其设置于客户端中,用于创建智能合约,并在可信环境下对该智能合约进行哈希运算,使用对称加密算法对智能合约进行加密处理,并将加密处理后的智能合约部署在区块链上,以获得智能合约地址。

第二模块,其设置于区块链节点中,用于向客户端发送合约信息获取请求,客户端根据该信息获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入第三模块,否则过程结束。

第三模块,其设置于客户端中,用于在可信环境中使用区块链节点提供的一次性公钥对第一模块中哈希运算的结果、对称加密智能合约过程使用的密钥、以及智能合约地址作为合约信息进行非对称加密,并将加密结果传送到区块链节点;

第四模块,其设置于区块链节点中,用于在可信环境中使用与一次性公钥对应的一次性私钥对加密结果进行非对称解密,并使用非对称加密算法对解密得到的对称密钥以及哈希值进行加密,连同智能合约地址一同存储在本地合约信息存储池;

第五模块,其设置于区块链节点中,用于从客户端获取其需要执行的智能合约地址,根据该智能合约地址获取区块链中对应的智能合约密文、以及第四模块中本地存储的合约信息,在可信环境中对合约信息进行非对称解密,以得到哈希运算的结果以及加密智能合约时使用的对称密钥,使用该对称密钥解密智能合约密文,并对解密后的智能合约进行哈希运算,判断得到的结果与哈希运算的结果是否一致,如果一致则进入第六模块,否则过程结束。

第六模块,其设置于区块链节点中,用于向数据提供方发送数据获取请求,数据提供方根据该数据获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入第七模块,否则过程结束。

第七模块,其设置于数据提供方中,用于接收区块链节点发送的新的一次性公钥,在可信环境中使用对称加密算法对数据获取请求对应的数据进行加密,使用新的一次性公钥对对称加密算法中的一次性对称密钥进行加密,并将加密后的数据和加密后的对称密钥发送到区块链节点;

第八模块,其设置于区块链节点中,用于将加密后的数据和加密后的对称密钥读入到可信环境中,并对可信环境的数据输出做出一定的限制,在可信环境中使用与一次性公钥对应的一次性私钥对加密后的一次性对称密钥进行非对称解密,使用解密后的一次性对称密钥对加密后的数据进行解密,并使用第五模块中解密后的智能合约对解密后的数据进行处理,以获得智能合约运算结果。

第九模块,其设置于区块链节点中,用于向客户端发送一次性对称密钥获取请求,客户端根据该一次性对称密钥获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入第十模块,否则过程结束。

第十模块,其设置于客户端中,用于接收区块链节点发送的新的一次性公钥,在可信环境中产生一次性对称密钥,使用该新的一次性公钥对一次性对称密钥进行加密,并将加密结果发送到区块链节点;

第十一模块,其设置于区块链节点中,用于在可信环境中使用与一次性公钥对应的一次性私钥对加密后的一次性对称密钥进行非对称解密,使用得到的一次性对称密钥对第八模块中得到的智能合约运算结果进行加密,并将加密结果在区块链节点之间进行共识;

第十二模块,其设置于客户端中,用于获取共识的结果,并在可信环境中使用第十模块中的一次性对称密钥对共识的结果进行解密。

按照本发明的另一方面,提供了一种基于可信环境的智能合约保护系统,其是应用在一种智能合约保护系统中,所述智能合约保护系统包括区块链节点、客户端和数据提供方,所述系统包括:

第一模块,其设置于客户端中,用于创建智能合约,并在可信环境下对该智能合约进行哈希运算,使用对称加密算法对智能合约进行加密处理,并将加密处理后的智能合约部署在区块链上,以获得智能合约地址。

第二模块,其设置于区块链节点中,用于向客户端发送合约信息获取请求,客户端根据该信息获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入第三模块,否则过程结束。

第三模块,其设置于客户端中,用于在可信环境认证通过以后在可信环境中使用区块链节点提供的一次性公钥对第一模块中哈希运算的结果以及对称加密智能合约过程使用的密钥作为合约信息进行非对称加密,并将加密结果以及智能合约地址传送到区块链节点;

第四模块,其设置于区块链节点中,用于在可信环境中使用与一次性公钥对应的一次性私钥对加密结果进行非对称解密,并使用非对称加密算法对解密得到的对称密钥以及哈希值进行加密,连同智能合约地址一同存储在本地合约信息存储池;

第五模块,其设置于区块链节点中,用于从客户端获取其需要执行的智能合约地址,根据该智能合约地址获取区块链中对应的智能合约密文、以及第四模块中本地存储的合约信息,在可信环境中对合约信息进行非对称解密,以得到哈希运算的结果以及加密智能合约时使用的对称密钥,使用该对称密钥解密智能合约密文,并对解密后的智能合约进行哈希运算,判断得到的结果与哈希运算的结果是否一致,如果一致则进入第六模块,否则过程结束。

第六模块,其设置于区块链节点中,用于向数据提供方发送数据获取请求,数据提供方根据该数据获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入第七模块,否则过程结束。

第七模块,其设置于数据提供方中,用于接收区块链节点发送的新的一次性公钥,在可信环境中使用对称加密算法对数据获取请求对应的数据进行加密,使用新的一次性公钥对对称加密算法中的一次性对称密钥进行加密,并将加密后的数据和加密后的对称密钥发送到区块链节点;

第八模块,其设置于区块链节点中,用于将加密后的数据和加密后的对称密钥读入到可信环境中,并对可信环境的数据输出做出一定的限制,在可信环境中使用与一次性公钥对应的一次性私钥对加密后的一次性对称密钥进行非对称解密,使用解密后的一次性对称密钥对加密后的数据进行解密,并使用第五模块中解密后的智能合约对解密后的数据进行处理,以获得智能合约运算结果。

第九模块,其设置于区块链节点中,用于向客户端发送一次性对称密钥获取请求,客户端根据该一次性对称密钥获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入第十模块,否则过程结束。

第十模块,其设置于客户端中,用于接收区块链节点发送的新的一次性公钥,在可信环境中产生一次性对称密钥,使用该新的一次性公钥对一次性对称密钥进行加密,并将加密结果发送到区块链节点;

第十一模块,其设置于区块链节点中,用于在可信环境中使用与一次性公钥对应的一次性私钥对加密后的一次性对称密钥进行非对称解密,使用得到的一次性对称密钥对第八模块中得到的智能合约运算结果进行加密,并将加密结果在区块链节点之间进行共识;

第十二模块,其设置于客户端中,用于获取共识的结果,并在可信环境中使用第十模块中的一次性对称密钥对共识的结果进行解密。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

(1)由于本发明采用了步骤(1)到步骤(5),客户端在可信环境内加密智能合约,并部署加密后的智能合约密文,同时区块链节点在可信环境内对智能合约密文解密。因此能够解决智能合约信息泄露导致的智能合约版问题以及智能合约使用者权益受损问题。

(2)由于本发明采用了步骤(6)到步骤(12),传输数据之前在可信环境内对数据加密,并且数据到达目的地之后在可信环境内解密并参与对应的运算并且对智能合约的输出进行限制。因此能够解决数据源提供的数据被窃取的问题。

(3)本发明的开销低:本发明对智能合约以及数据加解密采用对称加密算法加密,在兼顾安全性的同时能够减少加解密带来的性能开销。

附图说明

图1是本发明智能合约保护系统的架构图。

图2是本发明基于可信环境的智能合约保护方法的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

本发明整体思路在于,利用可信环境能够保障其内执行程序的完整性与机密性的特性,保护智能合约部署之前智能合约加密过程,保护智能合约的执行过程,保护智能合约输入数据以及计算结果数据加密过程,防止智能合约在部署阶段和执行阶段信息的泄露。

如图1所示,本发明基于可信环境的智能合约保护体系包括客户端(比如以太坊中创建智能合约的节点)、区块链节点(比如以太坊中执行智能合约的节点)、数据提供方(比如以太坊中提供输入数据的节点)、可信环境(比如sgx硬件创建的保护环境)、非可信环境、智能合约信息处理模块(a)、区块链节点信息传输模块(b)(比如以太坊中节点交互接口)、输入数据传输模块(c)、智能合约执行模块(d)、本地合约信息存储池(e)以及区块链智能合约存储池(f),客户端和区块链节点通信连接,数据提供方和区块链节点通信连接,区块链节点之间存在通信连接。

客户端用于部署智能合约,获取智能合约共识结果;

区块链节点用于获取客户端部署的智能合约,根据数据提供方提供的数据,运行智能合约并获取相应结果,并在区块链内对结果达成共识。

数据提供方用于给区块链节点提供运行智能合约时所需要的数据。

可信环境用于保障内部执行程序的完整性与机密性,其内部执行的程序对外部是不可见。

非可信环境与可信环境相相反,其内执行的程序不能够保证完整性与机密性。

如图2所示,本发明基于可信环境的智能合约保护方法,其是应用在一种智能合约保护系统中,该智能合约保护系统包括区块链节点、客户端和数据提供方,所述方法包括以下步骤:

(1)客户端创建智能合约,并在可信环境下对该智能合约进行哈希运算,使用对称加密算法对智能合约进行加密处理,并将加密处理后的智能合约部署在区块链上,以获得智能合约地址。

具体而言,本步骤中可信环境可以是sgx(softwareguardextensions)等技术创建的执行环境,在可信环境内执行操作之前要进行可信环境的创建,在可信环境内操作完成之后要注销可信环境。

本步骤中使用的对称加密算法可以是数据加密标准(dataencryptionstandard,简称des)算法、三次数据加密标准(tripledataencryptionstandard,简称3des)算法、高级加密标准(advancedencryptionstandard,简称aes)算法等。

(2)区块链节点向客户端发送合约信息获取请求,客户端根据该信息获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入步骤(3),否则过程结束。

具体而言,本步骤中的可信环境认证是通过签名的方式实现。

(3)客户端在可信环境中使用区块链节点提供的一次性公钥对步骤(1)中哈希运算的结果、对称加密智能合约过程使用的密钥、以及智能合约地址作为合约信息进行非对称加密,并将加密结果传送到区块链节点;

作为另一种实现方式,本步骤也可以为:

(3’)客户端在可信环境认证通过以后在可信环境中使用区块链节点提供的一次性公钥对步骤(1)中哈希运算的结果以及对称加密智能合约过程使用的密钥作为合约信息进行非对称加密,并将加密结果以及智能合约地址传送到区块链节点;

本步骤中使用的非对称加密算法可以是诸如rsa、elgamal、背包算法、rabin、d-h、椭圆曲线加密(ellipticcurvecryptosystems,简称ecc)等。

(4)区块链节点在可信环境中使用与一次性公钥对应的一次性私钥对加密结果进行非对称解密,并使用非对称加密算法对解密得到的对称密钥以及哈希值进行加密,连同智能合约地址一同存储在本地合约信息存储池。

具体而言,本地合约信息存储池中存储的内容如表1所示:

表1

(5)区块链节点从客户端获取其需要执行的智能合约地址,根据该智能合约地址获取区块链中对应的智能合约密文、以及步骤(4)中本地存储的合约信息,在可信环境中对合约信息进行非对称解密,以得到哈希运算的结果以及加密智能合约时使用的对称密钥,使用该对称密钥解密智能合约密文,并对解密后的智能合约进行哈希运算,判断得到的结果与哈希运算的结果是否一致,如果一致则进入步骤(6),否则表示完整性校验未通过,过程结束。

(6)区块链节点向数据提供方发送数据获取请求,数据提供方根据该数据获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入步骤(7),否则过程结束。

(7)区块链节点将新的一次性公钥发送到数据提供方,数据提供方在可信环境中使用对称加密算法对数据获取请求对应的数据进行加密,使用新的一次性公钥对对称加密算法中的一次性对称密钥进行加密,并将加密后的数据和加密后的对称密钥发送到区块链节点;

(8)区块链节点将加密后的数据和加密后的对称密钥读入到可信环境中,并对可信环境的数据输出做出一定的限制,在可信环境中使用与一次性公钥对应的一次性私钥对加密后的一次性对称密钥进行非对称解密,使用解密后的一次性对称密钥对加密后的数据进行解密,并使用步骤(5)中解密后的智能合约对解密后的数据进行处理,以获得智能合约运算结果。

具体而言,对数据输出的限制是通过设定一个数据量阈值,超过该数据量阈值部分的数据会进行收费,超出的越多,收费也就越高。

(9)区块链节点向客户端发送一次性对称密钥获取请求,客户端根据该一次性对称密钥获取请求与区块链节点进行可信环境认证,如果可信环境认证通过则进入步骤(10),否则过程结束。

(10)区块链节点将新的一次性公钥发送到客户端,客户端在可信环境中产生一次性对称密钥,使用该新的一次性公钥对一次性对称密钥进行加密,并将加密结果发送到区块链节点;

(11)区块链节点在可信环境中使用与一次性公钥对应的一次性私钥对加密后的一次性对称密钥进行非对称解密,使用得到的一次性对称密钥对步骤(8)中得到的智能合约运算结果进行加密,并将加密结果在区块链节点之间进行共识;

(12)客户端获取共识的结果,并在可信环境中使用步骤(10)中的一次性对称密钥对共识的结果进行解密。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1