一种基于同态加密的区块链的即时执行方法与流程

文档序号:18476435发布日期:2019-08-20 21:09阅读:127来源:国知局
一种基于同态加密的区块链的即时执行方法与流程

本申请涉及区块链技术领域,具体而言,涉及一种基于同态加密的区块链的即时执行方法。



背景技术:

multipleatomicchain(简称mac,多原链)是开发在比特币和以太坊之外的第三种区块链底层生态系统,致力于拓展区块链技术的商业应用边界和技术边界,让大众用户用户能够真实的感受到区块链技术的价值,让区块链不在停滞于学术理论层面而是更加直接的应用到开发应用的实践中去,多原链的开发将是商业应用和区块链技术碰撞的火花,也是对区块链现有技术的一种挑战,跳跃出了现有技术领域思维,为区块链3。0生态应用体系的开创先锋。多原链系统中,可以通过价值传输协议来实现点对点的价值转移,高性能、高吞吐量、快速安全是多原链的特性,从而用多原链的底层构建出一个支持多个行业领域(金融、物联网、供应链、社交、游戏、电商、溯源、交易等)的去中心化的场景应用开发生态平台。

在多原链的公链(publicblockchain系统中,全世界任何人都可读取、任何人都能发送交易且交易能获得有效确认、任何人都能参与其中共识过程的区块链(共识过程决定哪个区块可被添加到区块链中和明确当前状态)。作为中心化或者准中心化信任的替代物,公共区块链的安全由“加密数字经济”采取工作量证明机制或权益证明机制等方式,将经济奖励和加密数字验证结合了起来,并遵循着一般原则:每个人从中可获得的经济奖励,与对共识过程作出的贡献成正比。这些区块链通常被认为是“完全去中心化”的。

在区块链公有链中,每一个参与者都能够获得完整的数据备份,所有交易数据都是公开和透明的,这个区块链的优势特点,但另一方面,对于很多区块链应用方来说,这个特点又是致命的。因为很多时候,不仅仅用户本身希望他的帐户隐私和交易信息被保护,就商业机构来说,很多帐户和交易信息更是这些机构的重要资产和商业秘密,不希望公开分享給同行。为了解决区块链的隐私保护问题,我们采用了同态加密、环签名方式。

同态加密:同态加密是一种无需对加密数据进行提前解密就可以执行计算的方法。它提供了一种急需的方法,能够在原有基础上使用区块链技术。通过使用同态加密技术在区块链上存储数据可以达到一种完美的平衡,不会对区块链属性造成任何重大的改变。也就是说,区块链仍旧是公有区块链。然而,区块链上的数据将会被加密,因此照顾到了公有区块链的隐私问题,同态加密技术使公有区块链具有私有区块链的隐私效果。

对区块链上金额数值进行加法同态加密,验证节点在不需要知道交易金额的具体数值或者其他任何隐藏信息的情况下,可以对密文进行正确的加法操作,这样区块链上所有的用户余额和交易金额都以同态密文的形式存在,除了拥有私钥的可信第三方机构外,所有节点都只能验证交易而无法得知具体数值,这将有效的保护用户的账户隐私。

当前有关区块链的加密方法主要由客户端生成公钥和私钥,将私钥发送给代理服务器,将数据加密并托管给存储服务器,然后客户端向存储服务器发送定序指令,存储服务器做同态减运算并将结果发送给代理服务器,最后代理服务解密定密文的序,并将结果加密后通过存储服务器发送给客户端,客户端解密得到明文。该方法存在的不足之处是:客户端将私钥直接交给代理服务器,导致代理服务器可以完全替代客户端,会带来致命的隐私泄露问题;仅由单一的客户端来完成密文的定序,应用范围过于狭小,不利于推广和使用;交易发生服务器和交易接受服务器可以合谋并且易受到攻击,带来很大的安全问题。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种基于同态加密的区块链的即时执行方法。

本申请请求保护一种基于同态加密的区块链的即时执行方法,其特征在于:

1)数据拥有者将全文数据以及关联的元数据提供给数据分发者,交易发起方和交易接受方使用pkcs数字加密算法生成密钥对,参与协作的多个交易发起方和交易接受方,对需要共享的数据利用同态加密算法进行加密,然后将加密后的数据进行输出,利用安全多方计算技术,将事先设计好的算法融合,进行协作计算将公钥的哈希值作为身份id,元数据存储在区块链网络上,全文数据存储在云服务网络上;

2)交易发起方将执行近似重复数据检测,如果检测未通过,数据将被拒绝分发,设备完成登记操作将信息记录到区块链网络中;

3)如果检测通过,元数据将在区块链网络中被分发,同时全文数据将在云服务网络中被分发,用户向智能合约账户发送设备关联交易建立与设备间的联系,获取设备的读取权限和操作权限;

4)交易接受方可以通过查询区块链获得元数据,通过元数据从云服务网络获取全文数据,之后用户对设备的操作均以交易形式完成,包括远程控制、设备查询;

5)节点在接收到交易后,首先对交易的签名进行验证,多参与方联合生成协作参数,验证加密后的密文数额在交易的输入和输出相等,在此之后执行智能合约对交易发起方和交易接受方的权限进行判断,对具有可读或可写权限的交易发起方和交易接受方的账户执行响应或写入操作。

本发明使用区块链对各业务节点进行分级链接,通过平台对数据交换进行记录,保证数据交换记录真实可靠不可篡改,同时对数据分发问题,结合区块链中跨链与即时执行合约的技术,提出基于区块链的数据分发系统,改变了传统数据分发模式,使得数据源与数据使用者直接进行交互,减少了中间商赚取的差价,并通过奖励金激励措施,促进了系统维护这对系统安全、稳定等性能的维护。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了根据本发明一种基于同态加密的区块链的即时执行方法的流程示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

参照附图1,根据本发明一种基于切换网络拓扑方式的区块链共识方法的流程示意图;

本发明请求保护一种基于同态加密的区块链的即时执行方法,其特征在于:

1)数据拥有者将全文数据以及关联的元数据提供给数据分发者,交易发起方和交易接受方使用pkcs数字加密算法生成密钥对,参与协作的多个交易发起方和交易接受方,对需要共享的数据利用同态加密算法进行加密,然后将加密后的数据进行输出,利用安全多方计算技术,将事先设计好的算法融合,进行协作计算将公钥的哈希值作为身份id,元数据存储在区块链网络上,全文数据存储在云服务网络上;

2)交易发起方将执行近似重复数据检测,如果检测未通过,数据将被拒绝分发,设备完成登记操作将信息记录到区块链网络中;

3)如果检测通过,元数据将在区块链网络中被分发,同时全文数据将在云服务网络中被分发,用户向智能合约账户发送设备关联交易建立与设备间的联系,获取设备的读取权限和操作权限;

4)交易接受方可以通过查询区块链获得元数据,通过元数据从云服务网络获取全文数据,之后用户对设备的操作均以交易形式完成,包括远程控制、设备查询;

5)节点在接收到交易后,首先对交易的签名进行验证,多参与方联合生成协作参数,验证加密后的密文数额在交易的输入和输出相等,在此之后执行智能合约对交易发起方和交易接受方的权限进行判断,对具有可读或可写权限的交易发起方和交易接受方的账户执行响应或写入操作,奖励金被用来鼓励资源提供者共享冗余内存和带宽资源作为交易流的缓存节点。

进一步地,通过信息加密方对待加密的明文进行全同态加密后进行签名,以加密后的密文公开向云服务网络中所有节点分发验证请求,交易发起方新建一份通道合约,并与交易接受方协商,指定双方交纳到支付通道的押金,并且双方对合约进行签名授权,区块链全网的验证节点进行交易信息的验证,并维护公共账户。

在交易用户之间建立支付通道,合约需要规定交易双方提交的押金,并且需要双方签名。合约需要规定转账金额,并且拥有唯一序列号,用于防止交易作弊;带条件余额合约主要用于通过跨节点多跳支付中,合约除了规定了和普通余额合约一样的字段,同时也有带条件字段,只有在满足条件的情况下,才能解锁资金。带条件余额合约保证了交易的跨节点多跳支付的安全性,即在没有拿到填充条件之前,支付路径上的中间节点无法获得对应资金。同时,合约用于对带条件余额合约的填充,合约包含了对应余额合约的条件索引,以及需要传入的参数,并且需要补充方签名。

进一步地,合约是用于交易用户之间建立支付通道的,合约规定了交易双方的身份,以及交易双方存入支付通道的押金。其中成员变量主要涉及到交易双方的用户实例引用,我们默认将交易发起方设置为user1。对应于合约的设计,这里我们不需要单独设计签名字段,因为用户签名都包含在了用户类中;另外,成员变量还包括双方存入支付通道的押金金额。

classpasscontract(smartcontract):

/**传入参数:交易用户1,交易用户2,押金1,押金2**/

def__init__(self,user1:user,user2:user,bail1,bail2):

#继承父类初始化方法

smartcontract.__init__(self)

#初始化类属性

self.user1=user1

self.user2=user2

self.bail1=bail1

self.bail2=bail2

优选的,所述交易发起方和交易接受方使用pkcs数字加密算法生成密钥对,参与协作的多个交易发起方和交易接受方,对需要共享的数据利用同态加密算法进行加密,然后将加密后的数据进行输出,具体包括:

数据终端节点解析用户的命令并将其发送给数据服务节点,数据服务节点根据解析结果进行检索;

参与企业数据共享的用户将自己准备好的数据通过同态加密算法进行加密,并加入相关的数字标签,根据最开始的数据请求要求,准备将相关数据通过加密的安全通道进行传输。

交换的密钥是由ecc等非对称密码算法生成的密钥对中的公钥,而私钥每个节点单独保存,不暴露给任何人,这样保证通信的安全性;d-h密钥交换协议的对称加解密体现在:通信双方通过协商素数p及其对应的原始根、彼此暴露自己的公钥文件给对方,最终确定下来的会话密钥k是一个对称密钥,在本次会话的后续部分将直接使用这一对称密钥,极大地提升了效率,但不失去安全性。从解决对称密钥如何安全传输的角度来看:d-h算法就是不用传递对称密钥,而通信双方最终确定了本次的对称会话密钥。

交易发起方和交易接受方可以分别设置为警示(alert)、秘密(confidential)和绝密(topconfidential)三级安全等级。当交易发起方对交易接受方发出访问请求时,系统将交易发起方和交易接受方的安全等级进行比较,随后在模型里比对该操作是否合法和安全。

当安全等级为confidential的交易发起方访问安全等级为topconfidential的交易接受方时,匹配简单安全规则(simplesecurityrule),表示交易发起方对交易接受方可以执行写但不可以执行读操作。

当安全等级为confidential的交易发起方访问安全等级为confidential的交易接受方时,匹配强星属性(strongstarproperty),表示交易发起方对交易接受方可以执行读和写操作。

当安全等级为confidential的交易发起方访问安全等级为alert的交易接受方时,匹配星属性(starproperty),表示交易发起方对交易接受方可以执行读但不可以执行写操作。

由此可以保证信息按照梯度安全标签进行单向流动,从而实现高等级数据的保密性。

所述交易发起方将执行近似重复数据检测,如果检测未通过,数据将被拒绝分发,设备完成登记操作将信息记录到区块链网络中,具体包括:

将交易发起方和交易文件的等级等信息存储在区块链中,将访问规则存储在链码中,安装到各个节点上;数据文档的存储可由用户选择明文存储或密文存储,如果选择明文存储则系统采用明文方式保存,校验用户名和签名信息,若签名信息为明文,则校验签名信息;如果选择密文存储,系统采用全同态加密的方式进行加密,并存储加密后的密文,采用全同态加密的方法对数据文档进行加密将预定义的用户和文件的等级、权限模板以及用户的访问规则写入即时执行合约中,并安装到各个节点上;

客户端通过调用链码完成用户等级的分配并将信息记录到区块链中,在后台服务中获取全部数据后,设备账户将其打包记录到区块链账本中以供用户端随时查询信息;

客户端通过调用链码完成相应密级文件的创建,并将信息记录到区块链中;交易发起方需要访问不同密级的文件时,通过调用链码查询自己的权限,从而满足预定义的规则。

多原链技术团队独创全点互通通讯协议,权限diy,在遵循多原链平台协议前提下可自己制定应用内部点对点通讯、应用包之间直线通讯、应用a内部与应用b内部直线通讯、通过公链桥接通讯。以实现合约、代币及业务流程的多样性和灵活性。

因为拥有独自的底层框架,实现了跨链交易简单化。举个例子:a为x平台的店铺,b为x商家台的另一家店铺,c为y的一家店铺若想实现a→b之间交易,完全可以由x平台内数据流通来实现。而若想实现a→c或者b→c之间交易,则需要x商家平台和y商家平台通过api或者其他桥梁来互通数据,数据实现流通流程会比较复杂,而且要经过两家平台共同实现。而a→c之间的交易即多原链内部来实现即可。

优选的,所述如果检测通过,元数据将在区块链网络中被分发,同时全文数据将在云服务网络中被分发,用户向智能合约账户发送设备关联交易建立与设备间的联系,获取设备的读取权限和操作权限,具体包括:

调用交易执行入口合约的执行函数,将发送方地址、接收方地址、调用的函数名等交易属性作为参数,调用的格式需转换为exe格式;即时执行合约开始执行,其执行的逻辑为依次调用执行合约,判断该笔交易的权限,得到最终的执行结果;将返回结果的exe格式转换为正常的字符串格式,根据执行结果判断该笔交易能否上链。

异步通讯策略在并行处理技术中,任务之间的信息通讯通常采用2种策略,异步通讯策略和同步通讯策略,由此引出了异步并行算法和同步并行算法.所谓同步并行算法就是在执行过程中的数个任务,会有某个任务在某段处于等待状态,直到另一个任务完成某一段运算后,它才能被激活,而在异步并行算法中就不存在这种现象,任务间的通讯是通过全局变量(共享数据)进行的,不像在同步算法中有任务间的依赖关系,各任务间可不必等待输入,而是根据当前从全局变量得到的信息,可以不断地执行任务和中断获取数据,因而异步算法可以带来的优点就是避免任务间的同步通讯开销,从而改善加速比.然而区块链环境仅支持同步通讯机制,同一通道连接的2个节点进程(任务)只有当分别处于输入/输出准备就绪状态时才能发生通讯,否则已经处于就绪状态的进程(任务)(不管是输入进程还是输出进程)将一直处于等待通讯状态.

从交易验证机制角度出发,目前我们mac做以下几种优化处理方式:a.分片处理(sharding),总体思路是每个节点只处理一部分交易,比如一部分账户发起的交易,从而减轻节点的计算和存储负担。

b.闪电网络(lightningnetwork)和状态通道(statechannels),这两种策略是保持底层的区块链协议不变,尽可能将交易放到链外执行,通过改变协议用法的方式来解决扩展性问题。在这种策略下,分布式账本上只是记录粗粒度的账本,而真正细粒度的双边或有限多边交易明细,则不作为交易记录在分布式账本上。

c.多原链设计了独有的账户区块链和交易区块链,当有新的银行成立或者原有银行需要进行扩展时,可以设立账户区块链来解决;当交易量较大时,系统可以增加交易区块链来增加处理速度,通过这两种途径来解决可扩展性方面的需求。通过算法的创新以及联盟链的部署使得吞吐量等性能得到大幅的提升,当前延时已能够控制在秒级别,吞吐量达万笔每秒,单节点的存储空间需求也能够进行相应的优化与压缩,性能瓶颈已经被突破。

进一步地,所述交易接受方可以通过查询区块链获得元数据,通过元数据从云服务网络获取全文数据,之后用户对设备的操作均以交易形式完成,包括远程控制、设备查询,具体包括:

获取每个数据文件的少量可验证的元数据信息来代表数据本身,使用这些元数据来构建区块链,以此来解决区块链冗余的问题,当存储服务器对某个交易数据分块进行操作的时候,此操作发生的相关信息都会被监控和记录并生成一条事务信息;事务信息里面包括操作节点id、操作类型、操作数据文件位置、操作数据文件大小、时间戳以及默克尔根哈希值等有价值的信息,处于隐私和安全的考虑,在将元数据插入到区块链之前其进行加密处理。

该环境需要使用的配置文件包括:

/hyperconfigure/transaction-sdk-java/src/testsdkintegration/point-base/point-base.xml(point的基础配置文件)

/hyperconfigure/transaction-sdk-java/src/testsdkintegration/docker-composeone.xml(1个orderer节点1个ca节点1个组织2个point节点的配置文件)

/hyperconfigure/transaction-sdk-java/src/testsdkintegration/docker-compose-couchone.xml(2个couchdb配置文件)

/hyperconfigure/transaction-sdk-java/src/testsdkintegration/chaincodeendorsementpolicyone.xml(背书策略配置文件)

a.point-base.xml文件point-base.xml文件主要设置每个point都要配置的基本内容。主要包括使用的镜像名称、环境变量、工作目录和命令。

配置point-base.xml文件使用hyperconfigure/transaction-point镜像。

环境变量配置主要包括:日志级别、是否使用背书节点、选举、以及成员身

份提供者msp的目录、tls的根证书目录,本节点的证书、密钥目录等。

b.docker-composeone.xml文件

docker-composeone.xml文件主要包含了1个ca、1个orderer节点、2个point节点配置,链码和工具configtxlator容器的镜像配置。ca配置主要包括使用的镜像、环境变量、对网络各节点提供服务的端口、自己使用的证书和密钥、需要挂载的数据卷和生成的容器名称等等。orderer节点配置包括生成的容器名称、使用的镜像、工作目录、挂载的数据卷、对外提供服务的端口、相关环境变量等等。

point节点配置包括pointbase.xml文件含有的公共内容和区别于其它point的配置信息,主要包括生成的容器名称、挂载的数据卷、服务端口和环境变量等,环境变量中设置了point节点的id、地址、gossip端点和节点使用的mspid等等。

c.docker-compose-couchone.xml文件

主要为2个point节点设置各自使用的数据库,包括数据库使用的镜像名称、生成的容器名称以及数据库提供服务的端口等信息。

d.chaincodeendorsementpolicyone.xml文件chaincodeendorsementpolicyone.xml文件主要配置背书策略,例如需要某个、某些或全部成员的认证签名。

e.启动transaction命令

上述配置文件准备好后通过docker-compose-fdocker-composeone.xml-fdocker-compose-couchone.xmlup命令启动transaction网络,使用dockerps可以查看启动的容器使用的镜像、提供服务的端口等信息,此时还没有安装链码

进一步地,所述节点在接收到交易后,首先对交易的签名进行验证,多参与方联合生成协作参数,验证加密后的密文数额在交易的输入和输出相等,在此之后执行智能合约对交易发起方和交易接受方的权限进行判断,对具有可读或可写权限的交易发起方和交易接受方的账户执行响应或写入操作,具体包括:

由信任同一个根证书的多个成员组成,在网络中,一个交易数据的成员可以代表一个交易数据进行签名等操作,同一个交易数据的成员具有相类似的身份和权限;

交易数据由交易数据名、id、msp、密码库、策略和锚节点位置信息构成;

通道之间的数据彼此隔离,多个交易数据可以加入到同一通道中,以更方便的交换数据。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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