一种基于变色龙哈希函数的许可链构造及管控方法与流程

文档序号:15963436发布日期:2018-11-16 23:02阅读:469来源:国知局
本发明涉及网络安全
技术领域
:,具体涉及一种基于变色龙哈希函数的许可链构造及管控方法。
背景技术
:区块链的概念是在2008年首次正式被提出,它可以用于实现去中心化环境下的公共账本和不可更改的交易记录。在技术上,区块链常常被划分为无许可(permissionless)链和许可(permissioned)链。无许可链又称为公有链,指的是以比特币为代表的完全去中心化环境下,任何节点均可参与区块的审计和验证。许可链包括联盟链和私有链,指的是仅仅授权一部分验证节点参与验证审计区块,特点是部分去中心化。目前大多数商业应用仍然基于许可链,以金融业为例,该链中任何参与节点的身份都是已知的(如对应某一家金融机构)。这是由于银行拒绝与任何未经授权的一方交易,因此,向任何节点都开放的公有链显然不能满足金融业务的需求。从法律角度上讲,以比特币为代表的虚拟货币和区块链系统,在赋予各个节点公平性、匿名性和不可篡改性的同时,也形成了法律无法监管的灰色地带,造成的结果是滋生恐怖、犯罪和破坏金融秩序,这是无法容忍的。因此,急需一种机制容许区块链在合理范围内将非法内容或错误交易信息进行修改。此外,该机制必须满足高效可行,而不是以区块链分叉作为代价,如著名的以太币dao事件。为了高效的实现区块链区块内容可修改,我们需要使用到变色龙哈希函数(chameleonhash)。2016年,ateniese等人在《redactableblokchain》一文中提出基于变色龙哈希函数的可被编辑的区块链技术,然而该方法远不能得到实用,原因是该方法仅仅提出了编辑区块的设想,许多关键问题没有解决,包括:(1)如何构造该区块链;(2)如何编辑区块的交易记录;(3)如何定义区块链的编辑策略或逻辑;(4)使用何种共识算法等。技术实现要素:本发明的目的在于:为解决无法对许可链中的非法内容或错误交易信息进行修改而带来法律无法监管造成犯罪以及金融秩序遭到破坏的问题,提供了一种基于变色龙哈希函数的许可链构造及管控方法。本发明采用的技术方案如下:一种基于变色龙哈希函数的许可链构造及管控方法,包括以下步骤:步骤1.定义链管控机理并根据链管理机理初始化许可链;步骤2.向许可链中添加新的区块;步骤3.根据链管控机理监督许可链中的区块,对不符合链管控机理的区块进行管控。进一步地,所述链管控机理包括区块格式和区块管控条件,其中,区块格式包括区块头和区块体,所述区块头包括版本号version、上一个区块的哈希值pre-hash、随机数nonce、工作量证明难度值complex、时间戳timestamp、merkle哈希树根节点root、变色龙随机数r,变色哈希值g;所述区块体包括多个交易记录组成的交易记录集tran-set。进一步地,所述区块管控条件为区分正常区块和异常区块的标准,将符合区块管控条件中任一要求的区块记为异常区块;所述区块管控条件包括:(1)有关国家安全和网络空间安全;(2)有关违法乱纪、恐怖犯罪;(3)有关个人或单位的重大隐私泄露;(4)有关虚假或错误的交易;(5)由于人为或者机器错误造成的错误。进一步地,所述步骤1中,初始化许可链的具体步骤如下:步骤1.1.选择抗碰撞哈希函数h和变色龙哈希函数g;步骤1.2.向许可链中接入节点,并选取部分节点作为验证节点;步骤1.3.根据变色龙哈希函数g计算得到哈希密钥hk和哈希限门tk,根据选取的验证节点的个数对哈希限门tk进行拆分成碎片,所有验证节点均掌握其中一个碎片;步骤1.4.根据区块格式、抗碰撞哈希函数h、变色龙哈希函数g、哈希密钥hk和哈希限门tk定义用于计算区块的哈希值的ch-pow算法;步骤1.5通过链管控机理、抗碰撞哈希函数h、变色龙哈希函数g、ch-pow算法和dbft算法生成创世区块。进一步地,所述链管控机理还包括区块管控操作,所述区块管控操作的方法为:执行dbft算法并联合所有验证节点对异常区块内的内容进行管控。进一步地,所述步骤2的具体步骤如下:步骤2.1.根据ch-pow算法计算验证节点的nonce值;步骤2.2.根据任一验证节点的nonce值,将网络中当前一段时间内区块的交易记录进行打包形成新的区块;步骤2.3.通过验证节点检验新的区块的正确性,若检验通过,则将该新的区块添加至许可链尾部;若检验失败,则丢弃该新的区块。进一步地,所述变色龙哈希函数g包含三个子算法,分别为:(1)密钥生成算法:输入一个安全参数a,输出哈希密钥hk和哈希限门tk;(2)变色龙哈希算法:输入哈希密钥hk、随机数r和一个任意长度的消息m,输出一个变色哈希值g;(3)碰撞算法:输入变色哈希值g、哈希限门tk和一个任意长度的消息m',输出一个随机数r'。进一步地,所述步骤3的具体步骤如下:步骤3.1.根据异常区块的交易记录集tran-set生成新的交易记录集tran-set',并将包含有交易记录集tran-set'的请求修改内容在网络中传播,进入步骤3.2;步骤3.2.验证节点接收修改请求内容,并根据链管控机理判断修改请求内容是否合法,若合法,则进入步骤3.3;若不合法,则丢弃该修改请求内容;步骤3.3.所有验证节点根据dbft算法进行表决,若所有验证节点能达成共识,则进入步骤3.4;若所有验证节点不能达成共识,则丢弃该修改请求内容;步骤3.4.所有验证节点根据掌握的哈希限门tk碎片共同参与变色龙哈希函数g的计算,将该解记作r',进入步骤3.5;步骤3.5.所有验证节点将交易记录集tran-set'中每一笔交易记录作为叶节点,计算merkle哈希树的根节点root',根据r'和root'在许可链上查找对应的目标区块,并用r'、root'和tran-set'替换异常区块中对应的值。进一步地,所述链管控机理还包括管控要求,所述管控要求包括修改后的交易记录集tran-set'中的每一笔交易记录都需要满足以下所有要求:(1)每一笔交易记录正确可信;(2)每一笔交易记录不会导致双花;(3)每一笔交易记录不会导致用户账户余额为负;(4)交易记录集tran-set’中每一笔交易record′i(1≤i≤n)作为叶节点输入,计算merkle哈希树得到的输出值root'应该与修改前的root值相同;所述管控要求还包括修改后得到的区块应该满足以下每一个要求:(1)许可链保持一致性;(2)修改后的区块的参数必须正确。进一步地,根据链管控机理监督许可链中的区块的方法为:将链管控机理写入智能合约,智能合约周期性的检查网络中的区块是否符合区块管控条件,若网络中任意区块的交易记录集中某一笔交易记录符合区块管控条件,则将符合区块管控条件的区块即为异常区块。综上所述,由于采用了上述技术方案,本发明的有益效果是:1、本发明中,通过定义链管控机理,实现全节点对区块上恶意信息和错误交易信息的全局实时监控,任何普通节点(即访问节点)均可以向验证节点举报错误的区块,通过构建许可链,实现若干验证节点对整个许可链的管控,在弱中心(或称为部分去中心化)的环境下,实现对许可链网络的可管控,所有验证节点通过计算变色龙哈希碰撞算法和dbft算法,对区块进行有效的修改,实现了许可链的安全和可管控的特性。2、本发明中,通过定义链管控机理再初始化许可链,再根据链管控机理监督许可链中的区块,对不符合链管控机理的区块进行管控,便于动态和高效的管控许可链中的区块,提高了许可链的安全性。3、本发明中,通过使用基于变色龙哈希函数的工作量证明(ch-pow)算法作为区块确认的共识算法,通过合法修改区块里的交易记录,高效的实现了数据可控,确保了许可链的安全运行。4、本发明中,将链管控机理写入智能合约,并且使用基于拜占庭容错(dbft)算法作为区块修改的共识算法,通过验证节点投票的方式实现了高效的机制可控。5、本发明中,通过链管理员动态维护的验证节点名单和dbft算法,实现了验证节点的动态准入机制,从而实现了验证节点可控。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1为本发明的整体流程示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。实施例1本发明较佳实施例提供的一种基于变色龙哈希函数的许可链构造及管控方法,包括以下步骤:步骤1.定义链管控机理并根据链管理机理初始化许可链。步骤2.向许可链中添加新的区块。步骤3.根据链管控机理监督许可链中的区块,对不符合链管控机理的区块进行管控。其中,链管控机理包括区块格式和区块管控条件。区块格式包括区块头和区块体,且区块大小为1m。区块头包括版本号version、上一个区块的哈希值pre-hash、随机数nonce、工作量证明难度值complex、时间戳timestamp、merkle哈希树根节点root、变色龙随机数r,变色哈希值g;区块体包括多个交易记录组成的交易记录集tran-set,交易记录集的表现形式为:tran_set={recordi}1≤i≤n,其中,i表示交易记录集中每笔交易记录的下标,n表示交易记录集中交易记录的个数。区块管控条件为区分正常区块和异常区块的标准,区块管控条件包括:(1)有关国家安全和网络空间安全;(2)有关违法乱纪、恐怖犯罪;(3)有关个人或单位的重大隐私泄露;(4)有关虚假或错误的交易,如:是否导致双花(doublespending),是否导致账户余额为负;(5)由于人为或者机器错误造成的错误,如:账号错误、交易时间错误。若网络中任一区块的交易记录集中某一交易记录符合区块管控条件,则将符合区块管控条件中任一要求的区块记为异常区块。步骤1中,初始化许可链的具体步骤如下:步骤1.1.选择抗碰撞哈希函数h和变色龙哈希函数g。选取的抗碰撞哈希函数h即为系统哈希函数。变色龙哈希函数g包含三个子算法,分别为:(1)密钥生成(gkeygen)算法:输入一个安全参数a,输出哈希密钥hk和哈希限门tk。(2)变色龙哈希(ghash)算法:输入哈希密钥hk、随机数r和一个任意长度的消息m,输出一个变色哈希值g。(3)碰撞(gcol)算法:输入变色哈希值g、哈希限门tk和一个任意长度的消息m',输出一个随机数r',使得ghash(m’,hk,r’)=g。步骤1.2.向许可链中接入节点,并选取部分节点作为验证节点。首先,链管理员通过一套身份验证机制接入节点加入网络,并选取部分节点作为验证节点,剩余部分作为访问节点。验证节点有权对区块进行审计和验证,访问节点用于读取许可链上的内容。然后,链管理员保存所有验证节点的节点名单,并实时的维护用于节点动态准入机制的节点名单。步骤1.3.根据密钥生成算法计算得到哈希密钥hk和哈希限门tk,根据选取的验证节点的个数对哈希限门tk进行拆分成碎片,所有验证节点均掌握其中一个碎片。链管理员选择一个安全参数a作为输入,执行密钥生成算法得到公开的哈希密钥hk和哈希限门tk。将哈希密钥hk公开,以门限秘密共享的方式将哈希限门tk拆分成多个碎片并安全的发送给所有验证节点,使各个验证节点均掌握哈希限门tk的其中一部分。步骤1.4.根据区块格式、抗碰撞哈希函数h、变色龙哈希算法ghash、哈希密钥hk和哈希限门tk定义用于计算区块的哈希值的ch-pow(基于变色龙哈希函数的工作量证明)算法。ch-pow算法的计算公式如下:h=h(version‖prehash‖nonce‖complex‖ghash(transet‖root‖timestamp,hk,r))其中,h表示系统哈希函数h,ghash表示变色龙哈希算法ghash,version表示区块的版本号,prehash表示前一个区块的哈希值,complex表示工作量证明难度值,transet表示区块的交易记录集,root表示区块的merkle哈希树根节点,timestamp表示区块的时间戳即区块生成的时间,hk表示公开的哈希密钥hk,r表示区块的变色龙随机数。其中,难度值由系统根据挖矿的难度对其自动调整;变色龙随机数为区块生成初期,节点随机产生。任意节点反复执行ch-pow算法作为其工作量证明。通过验证节点反复选择nonce来计算区块的哈希值h即为挖矿的一个过程,当得到的哈希值h满足工作量证明的目标值要求(例如:目标值为以多个0开头的哈希值)时,即为挖到一个矿,该nonce为该节点工作量证明的一个解。链管控机理还包括区块管控操作和管控要求,区块管控操作的方法为:执行dbft算法并联合所有验证节点对异常区块内的任意多个交易记录进行修改,同时修改异常区块对应的merkle哈希树根节点root和时间戳timestamp。管控要求包括修改后的交易记录集tran-set'中的每一笔交易记录都需要满足以下所有要求:(1)每一笔交易记录正确可信,即交易双方都签名确认的交易;(2)每一笔交易记录不会导致双花(doublespending),即同一笔钱用于两笔交易;(3)每一笔交易记录不会导致用户账户余额为负;(4)交易记录集tran-set’中每一笔交易record′i(1≤i≤n)作为叶节点输入,计算merkle哈希树得到的输出值root'应该与修改前的root值相同。管控要求还包括修改后得到的区块应该满足以下每一个要求:(1)许可链保持一致性,即异常区块被修改后,其哈希值h'应该与为修改前的区块的哈希值相同;(2)修改后的区块的参数必须正确,即:version、pre-hash、nonce、complex和旧区块应保持一致性,root'、tran-set'和timestamp'应为修改后的值。步骤1.5通过链管控机理、抗碰撞哈希函数h、变色龙哈希函数g、ch-pow算法和dbft算法生成创世区块。将dbft(拜占庭容错)算法、ch-pow算法、抗碰撞哈希函数h、变色龙哈希函数g、链管控机理、一个指向由链管理员动态维护的验证节点名单的指针、时间戳、版本号、创世哈希值写入创世区块中。其中,创世哈希值由系统自身设定,时间戳和版本号的值由节点填写。当有新的节点得到链管理员的授权时,链管理员更新验证节点名单,将被撤销的验证节点掌握的碎片交由新的节点掌握,从而实现验证节点的动态准入机制。生成创世区块后,链管理员在网络中广播创世区块。步骤2的具体步骤如下:步骤2.1.验证节点反复执行ch-pow算法,找到符合工作量证明要求的nonce值。步骤2.2.根据任一验证节点的nonce值,将网络中当前一段时间内区块的交易记录进行打包形成新的区块。根据验证节点计算得到的nonce值和创世区块的格式,将网络中当前一段时间内的交易记录进行打包并填入至新的区块中,将各条交易记录集成的交易记录集放在区块体内,将计算得到的nonce值放在区块头内,并将新的区块在网络中传播。打包形成的交易记录集中包含了当前一段时间内网络中的用户的交易信息,还额外包含了一笔手续费,且手续费越高的区块越能尽快的得到确认。步骤2.3.通过验证节点检验新的区块的正确性,若检验通过,则将该新的区块添加至许可链尾部;若检验失败,则丢弃该新的区块。任意验证节点均可检验新的区块的正确性,检验的内容包括但不限于:(1)交易签名的正确性;(2)区块的变色哈希值g是否满足g=ghash(transet‖root‖timestamp‖hk‖r);(3)区块的哈希值h是否正确,即判断该区块包含的内容计算得到的哈希值与区块头中的哈希值是否一致。若检验通过,则将该新的区块添加至许可链尾部,同时,验证节点继续寻找满足工作量证明的目标值要求的nonce值,即验证节点在该区块后面继续挖矿;若检验失败,则丢弃该新的区块。当两个及其以上的验证节点均找到了不同的满足工作量证明的要求的nonce值时,许可链将发生分叉,此时,仍遵从长链最优的原则。即:各个验证节点可以选择在它们中任一一个发布的区块后面继续挖矿,但是系统只遵循最长的链。因此,如果某个验证节点后面跟的区块较少了,这条分叉就自动被抛弃。步骤3中,根据链管控机理监督许可链中的区块的方法为:将链管控机理写入智能合约,智能合约周期性的检查网络中的区块是否符合区块管控条件,若网络中任意区块的交易记录集中某一笔交易记录符合区块管控条件,则将符合区块管控条件的区块即为异常区块。步骤3的具体步骤如下:步骤3.1.根据异常区块的交易记录集tran-set生成新的交易记录集tran-set',并将包含有交易记录集tran-set'的请求修改内容在网络中传播,进入步骤3.2。当任一节点(验证节点或访问节点)发现区块中存在异常的交易记录时,通过对异常区块内的任意多个交易记录修改生成新的交易记录集tran-set',将(tran-set',h,reason)作为修改请求在网络中广播。其中,h表示该异常区块的哈希值,reason表示请求修改的原因和依据。步骤3.2.验证节点接收修改请求内容,并根据链管控机理判断修改请求内容是否合法,若合法,则进入步骤3.3;若不合法,则丢弃该修改请求内容。验证节点在接收到修改请求后,根据创世区块中定义的链管控机理中的区块管控条件判断修改请求是否合法。步骤3.3.所有验证节点根据dbft算法进行表决,若所有验证节点能达成共识,则进入步骤3.4;若所有验证节点不能达成共识,则丢弃该修改请求内容。由于dbft算法支持动态准入机制,因此,具有表决权的验证节点均来自于节点名单。即:实时加入的新的验证节点可参与新一轮的验证,而已经被撤销的验证节点没有表决权。步骤3.4.所有验证节点根据掌握的哈希限门tk碎片共同参与变色龙哈希算法ghash的计算,将该解记作r',进入步骤3.5。每一个验证节点将通过门限秘密共享的方式得到的tk碎片作为输入,共同参与计算gcol算法的解r',计算公式如下:r′=gcol(transet′||root′||timestamp′,tk,g)其中,最终得到的r'是一个满足ghash算法的随机值,即r'可以满足:ghash(transet‖root‖timestamp,hk,r)=g=ghash(transet′||root′||timestamp′,hk′,r′)由此可知,修改后的区块的哈希值没有发生变化,区块内容得到了合法的修改。步骤3.5.所有验证节点将交易记录集tran-set'中每一笔交易记录作为叶节点,计算merkle哈希树的根节点root',根据(r',root')在许可链上查找对应的目标区块,并用新的(r',root',tran-set')替换目标区块中的(r,root,tran-set)。从而完成了对异常区块的修改,任何节点均可读取修改后的区块内容。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1