环式可编辑区块链的构建方法与流程

文档序号:19182698发布日期:2019-11-20 01:10阅读:327来源:国知局
本发明涉及网络安全领域,具体讲是环式可编辑区块链的构建方法。
背景技术
::区块链的概念是在2008年首次正式被提出,它可以用于实现去中心化环境下的公共账本和不可更改的交易记录。传统的区块链采用的是链式结构,即新的区块从链的尾部插入。然而,目前区块链面临着存储耗费和可扩展性的问题。即区块链的数据内容过于庞大,不便于存储,并且区块结构单一,无法较好的从链式结构上进行更进一步的扩展,从而支持更加多样化的服务和功能。为了解决这个问题,目前已有多个研究项目,如闪电支付链,用于解决区块链的支付慢和可扩展性问题,以太坊的研究用于扩展区块链,以支持更加多样化的设计和功能等。但目前的所有研究内容均是基于区块链的链式结构。2016年atenieseetal提出《redactableblokchain-or-rewirtinghistoryinbitcoinandfriends》,该文中提出了基于变色龙哈希函数的可被编辑的区块链技术,允许区块在保持哈希值不变的情况下,实现对问题区块的内容(如违法信息或者涉及非法交易)进行重新编辑,从而确保区块链安全可靠的运行。然而,该方案未具体提及如何在完全去中心的环境下实现区块内容的编辑。此外,该方案同样是基于传统的链式区块链,即新的区块从链的尾部插入。因此,一旦某部分区块需要进行重新编辑,则需要对该区块以后的所有区块链进行遍历,编辑所产生的计算耗费庞大(特别是考虑到当前区块链的长度,上万个区块链的遍历难度和复杂度问题)。此外,可编辑区块链基于传统的链式区块链,不能够获得更好的功能扩展。因此,基于上述原因,可编辑区块链的应用前景受限。技术实现要素:本发明提供了一种环式可编辑区块链的构建方法,在去中心的环境下,对区块链提供安全、高效的管理和编辑,并且通过环式结构为区块链提供更广泛的应用场景。本发明环式可编辑区块链的构建方法,包括:a.初始化:根据安全参数λ,通过哈希函数,输出系统公开参数p和初始区块b1(genesisblock);其中所述的安全参数λ是在系统初始化阶段,由初始化方根据需要输入的参数,该参数广泛的体现在现有的任何密码方案的设计中,是一个公知的参数,通常为所选择的密钥长度(如128256比特等)。初始化方可以是系统拥有者,也可以是需要运行该算法的用户等。b.生成密钥:根据所述的系统公开参数p,计算得到用户的私钥xi和公钥yi,其中1≤i≤n,n为生成区块链的区块的总数;所述的用户包括了任何矿工(负责区块链中交易确认和数据打包的角色)或者任何加入区块链网络的用户。c.生成环式可编辑区块链:将交易信息记录到区块中,各区块按生成时间排列,并将排列的最后一个区块与所述的初始区块b1相连,形成环式可编辑区块链rcn;根据所述环式可编辑区块链rcn得到公钥集合l={yi}1≤i≤n,其中每个区块bi对应一个所述的公钥yi,每个公钥yi对应一个所述的私钥xi。本发明通过环式的新型区块链结构,结合变色龙哈希函数,能够对区块链提供了高效的管理和编辑。在环式结构的支持下,能够实现对区块链进行批量的编辑,并且还支持对区块链上区块的批量删除。而且在执行完批量编辑后,区块链的环式结构仍然保持不变。通过环式结构为区块链提供更广泛的应用场景。例如,基于环或者群签名的应用场景皆可移植到以环结构的区块链上得以实现,如环签名、群签名、匿名投票等等。进一步的,通过区块链的环式结构,实现了对区块的批量编辑和删除,包括有:d.验证环式可编辑区块链:根据区块链的验证公式计算后输出验证结果;e.向环式区块链加入新区块:根据所述的环式可编辑区块链rcn和需要新加入的区块{b′i}n+1≤i≤n+k,计算后输出新的环式可编辑区块链rcn+k或加入失败的标识,其中k为需要加入的新区块的个数;f.编辑环式区块链:根据环式可编辑区块链rcn和用户的私钥集合{xi}1≤i≤n,通过重新计算每个区块新的变色龙随机值r′i,使每个区块的内容不同而变色龙哈希值相同,将原有的区块集合{bi}1≤i≤n编辑为新的区块集合{b′i}1≤i≤n,输出编辑后的环式可编辑区块链rc′n;g.环重构:从所述的环式可编辑区块链rcn中删除d个区块后,输出被重构的环式可编辑区块链rcn-d,其中d为环式可编辑区块链rcn上需被删除的区块个数,并且n-2>d。具体的,步骤a包括:a1.根据安全参数λ选择生成元为g且群阶数为q的群g;a2.设置哈希函数分别为:h1:{0,1}*→g和h2:{0,1}*→zq,其中,h1为第一哈希函数,作用是将0或1所组成任意长度的字符串{0,1}*映射到群g的一个任意元素上,*表示字符串{0,1}为任意长度,h2为第二哈希函数,作用是将0或者1所组成任意长度的字符串{0,1}*映射到由(0,1,…,q-1)元素所组成的q阶的整数群zq上,z表示整数群;a3.输出系统公开参数p=<g,q,g,h1,h2>;a4.生成初始区块b1,将所述的系统公开参数p写入初始区块b1。具体的,步骤b中所述计算用户的私钥xi和公钥yi为:根据所述的系统公开参数p,选择一个随机数作为用户的私钥xi,r表示从q阶的整数群zq中随机选择一个元素xi,根据所述私钥xi计算公钥具体的,步骤c包括:将当前时间段的交易信息打包,并记录到区块中,将区块{bi}1≤i≤n按生成时间的顺序排列,并将排列的最后一个区块bn与所述的初始区块b1相连,形成b1||…||bn||b1的首尾相连的环结构,然后通过计算{bi}1≤i≤n的哈希值,得到环式可编辑区块链其中,c1为以初始区块b1为环起点的计算参数,数组{bi,ri,βi}中的元素依次表示第i个区块bi的内容、变色龙随机值和普通随机值,表示l为生成区块的公钥集合,表示绑定最新的区块bn对应私钥xn的参数,其中h=h1(l),表示将公钥集合l通过第一哈希函数h1映射到群g上的一个元素,(u,v)为用于插入新区块的计算参数。具体的,所述计算{bi}1≤i≤n的哈希值为:c1.计算h=h1(l)和选择两个随机数计算初始区块b1的计算参数(u,v)为用于插入新区块的计算参数;c2.选择两个随机数其中i=(1,…,n-1),计算变色龙随机值和变色龙哈希值其中bi为第i个区块的内容,再计算区块bi+1的计算参数根据环结构收尾相连的特性,得到cn+1=c1;c3.计算第n个区块bn的随机数αn=(u-xncnmodq),βn=(v-xncnmodq),得到第n个区块bn的变色龙随机值在对区块链操作时,步骤d包括:对长度为n的环式可编辑块链其中,c1为初始区块b1的计算参数,数组{bi,ri,βi}中的元素依次表示第i个区块bi的内容、变色龙随机值和普通随机值,表示l为生成区块的公钥集合,表示绑定最新的区块bn对应私钥xn的参数,其中h=h1(l),表示将公钥集合l通过第一哈希函数h1映射到群g上的一个元素,(u,v)为用于插入新区块的计算参数;分别设置第一哈希函数h1:{0,1}*→g和第二哈希函数h2:{0,1}*→zq,q为群阶数,计算h=h1(l),h表示将公钥集合l通过第一哈希函数h1映射到群g上的一个元素,根据第i个区块bi的变色龙随机值αi=(u-xicimodq),ci为区块bi的计算参数;计算对应的变色龙哈希值和区块bi+1的计算参数然后验证等式:以及是否均成立,若成立则输出1,否则输出0。具体的,步骤e包括:e1.添加新的公钥至公钥集合l,生成新公钥集合l′=l||{yi}n+1≤i≤n+k,计算h′=h1(l′)和绑定最新的区块bn+k对应私钥xn+k新的参数得到区块b1新的计算参数g为生成元;e2.计算新的变色龙哈希值αi=(u-xicimodq),i=(1,…,n),然后计算区块bi+1新的计算参数βi=(v-xicimodq);e3.选择两个随机数i=(n+1,…,n+k),计算变色龙随机值和新的变色龙哈希值bi为第i个区块的内容,然后得到区块bi+1新的计算参数e4.对于i=n+k,计算区块bn+k对应的随机数αn+k=(u-xn+kc′n+kmodq),以及其对应的普通随机值βn+k=(v-xn+kc′n+kmodq),和对应的变色龙随机值e5.验证等式和是否均成立,若成立,则新区块{b′i}n+1≤i≤n+k成功加入,输出插入新区块{b′i}n+1≤i≤n+k后的环式可编辑区块链否则输出插入失败标识。具体的,步骤f包括:以长度为n、区块集合为{bi}1≤i≤n的环式可编辑区块链1≤i≤n,根据私钥集合{xi}1≤i≤n,计算新的变色龙随机值使每一个新的变色龙哈希值相同,即:然后输出新的长度为n、新的区块集合为{b′i}1≤i≤n的环式可编辑区块链具体的,步骤g中,从长度为n的环式可编辑区块链中删除d个区块,包括步骤:g1.计算环式可编辑区块链rcn删除了d个区块后,剩下的区块构成的新环式可编辑区块链的公钥集合l″=l\{yi}i≤|n-d|、h=h1(l″)和其中,xn-d-1表示所述的新环式可编辑区块链最前端区块对应的私钥,表示xn-d-1对应的参数;g2.根据h″=h1(l″),计算新环式可编辑区块链对应的私钥的参数并计算其中h″表示将新环式可编辑区块链的公钥集合l″通过第一哈希函数h1映射到群g上的一个元素,c″1为从新环式可编辑区块链上其中的一个区块为起点的计算参数,gu表示计算新环式可编辑区块链的变量,u和v分别为实现区块链环式结构的随机数;g3.分别计算新变色龙哈希值和i=(1,…,n-d-2),计算新环式可编辑区块链最前端区块对应的随机数αn-d-1=(u-xn-d-1c″n-d-1modq)、区块bn-d-1对应的普通随机值βn-d-1=(v-xn-d-1c″n-d-1modq),得到区块bn-d-1的变色龙随机值g4.验证等式和是否均成立,若成立,则表示区块链重构程工,输出重构后的新环式可编辑区块链否则,输出失败标识,。本发明环式可编辑区块链的构建方法,能够实现对区块进行批量编辑、加入或删除,并且能够通过如智能合约等自动化的执行方式有效提高区块链的编辑效率和降低了编辑难度,扩大了区块链的应用场景,以及提高了区块链的可扩展性。以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。附图说明图1为本发明环式可编辑区块链的构建方法的流程图。具体实施方式如图1所示本发明环式可编辑区块链的构建方法,包括:a.初始化:a1.根据安全参数λ选择生成元为g且群阶数为q的群g;a2.设置哈希函数分别为:h1:{0,1}*→g和h2:{0,1}*→zq,其中,h1为第一哈希函数,作用是将0或1所组成任意长度的字符串{0,1}*映射到群g的一个任意元素上,*表示字符串{0,1}为任意长度,h2为第二哈希函数,作用是将0或者1所组成任意长度的字符串{0,1}*映射到由(0,1,…,q-1)元素所组成的q阶的整数群zq上,z表示整数群;a3.输出系统公开参数p=<g,q,g,h1,h2>;a4.生成初始区块b1(genesisblock),将所述的系统公开参数p写入初始区块b1。b.生成密钥:计算用户的私钥xi和公钥yi:根据所述的系统公开参数p,选择一个随机数作为用户的私钥xi,r表示从q阶的整数群zq中随机选择一个元素xi,根据所述私钥xi计算公钥其中1≤i≤n,n为生成区块链的区块的总数;所述的用户包括了任何矿工(负责区块链中交易确认和数据打包的角色)或者任何加入区块链网络的用户。c.生成环式可编辑区块链:将当前时间段的交易信息打包,并记录到区块中,将区块{bi}1≤i≤n(n≥3,否则无法构成首尾相连的环)按生成时间的顺序排列,并将排列的最后一个区块bn与所述的初始区块b1相连,形成b1||…||bn||b1的首尾相连的环结构,然后通过计算{bi}1≤i≤n的哈希值,得到环式可编辑区块链其中,c1为以初始区块b1为环起点的计算参数,数组{bi,ri,βi}中的元素依次表示第i个区块bi的内容、变色龙随机值和普通随机值,表示绑定最新的区块bn对应私钥xn的参数,l={yi}1≤i≤n为生成区块的公钥集合,每个区块bi对应一个所述的公钥yi,每个公钥yi对应一个所述的私钥xi,h=h1(l),表示将公钥集合l通过第一哈希函数h1映射到群g上的一个元素,(u,v)为用于插入新区块的计算参数。其中计算{bi}1≤i≤n的哈希值为:c1.计算h=h1(l)和选择两个随机数计算初始区块b1的计算参数(u,v)为用于插入新区块的计算参数;c2.选择两个随机数其中i=(1,…,n-1),计算变色龙随机值和变色龙哈希值其中bi为第i个区块的内容,再计算区块bi+1的计算参数根据环结构收尾相连的特性,得到cn+1=c1;c3.计算第n个区块bn的随机数αn=(u-xncnmodq),βn=(v-xncnmodq),得到第n个区块bn的变色龙随机值通过区块链的环式结构,实现对区块的批量编辑和删除,包括有:d.验证环式可编辑区块链:对长度为n的环式可编辑块链其中,c1为初始区块b1的计算参数,数组{bi,ri,βi}中的元素依次表示第i个区块bi的内容、变色龙随机值和普通随机值,表示绑定最新的区块bn对应私钥xn的参数,l为生成区块的公钥集合,h=h1(l),表示将公钥集合l通过第一哈希函数h1映射到群g上的一个元素,(u,v)为用于插入新区块的计算参数;分别设置第一哈希函数h1:{0,1}*→g和第二哈希函数h2:{0,1}*→zq,q为群阶数,计算h=h1(l),将公钥集合l通过第一哈希函数h1映射到群g,根据第i个区块bi的变色龙随机值αi=(u-xicimodq),ci为区块bi的计算参数;计算对应的变色龙哈希值和区块bi+1的计算参数然后验证等式:以及是否均成立,若成立则输出1,否则输出0。e.向环式区块链加入新区块:向环式可编辑区块链rcn中加入新的区块{b′i}n+1≤i≤n+k,其中k为需要加入的新区块的个数,步骤为:e1.添加新的公钥至公钥集合l,生成新公钥集合l′=l||{yi}n+1≤i≤n+k,计算h′=h1(l′),计算绑定最新的区块bn+k对应私钥xn+k新的参数得到区块b1新的计算参数g为生成元;e2.计算新的变色龙哈希值αi=(u-xicimodq),i=(1,…,n),然后计算区块bi+1新的计算参数βi=(v-xicimodq);e3.选择两个随机数i=(n+1,…,n+k),计算变色龙随机值和新的变色龙哈希值bi为第i个区块的内容,然后得到区块bi+1新的计算参数e4.对于i=n+k,计算区块bn+k对应的随机数αn+k=(u-xn+kc′n+kmodq),以及其对应的普通随机值βn+k=(v-xn+kc′n+kmodq),和对应的变色龙随机值e5.验证等式和是否均成立,若成立,则新区块{b′i}n+1≤i≤n+k成功加入,输出插入新区块{b′i}n+1≤i≤n+k后的环式可编辑区块链否则输出插入失败标识0。f.编辑环式区块链:以长度为n、区块集合为{bi}1≤i≤n的环式可编辑区块链1≤i≤n,根据私钥集合{xi}1≤i≤n,计算新的变色龙随机值使每一个新的变色龙哈希值相同,即:由此可以在不影响区块哈希值一致性的前提下,对区块进行编辑。然后输出新的长度为n、新的区块集合为{b′i}1≤i≤n的环式可编辑区块链g.环重构:从长度为n的环式可编辑区块链中删除d个区块,n-2>d,步骤为:g1.计算环式可编辑区块链rcn删除了d个区块后,剩下的区块构成的新环式可编辑区块链的公钥集合l″=l\{yi}i≤|n-d|、h=h1(l″)和其中,xn-d-1表示所述的新环式可编辑区块链最前端区块对应的私钥,表示xn-d-1对应的参数;g2.根据h″=h1(l″),计算新环式可编辑区块链对应的私钥的参数并计算其中h″表示将新环式可编辑区块链的公钥集合l″通过第一哈希函数h1映射到群g上的一个元素,c″1为从新环式可编辑区块链上其中的一个区块为起点的计算参数,gu表示计算新环式可编辑区块链的变量,u和v分别为实现区块链环式结构的随机数;g3.分别计算新变色龙哈希值和i=(1,…,n-d-2),计算新环式可编辑区块链最前端区块对应的随机数αn-d-1=(u-xn-d-1c″n-d-1modq)、区块bn-d-1对应的普通随机值βn-d-1=(v-xn-d-1c″n-d-1modq),得到区块bn-d-1的变色龙随机值g4.验证等式和是否均成立,若成立,则表示区块链重构程工,输出重构后的新环式可编辑区块链否则,输出失败标识。通过环式的区块链结构,结合变色龙哈希函数,实现了对区块链提供了高效的管理和编辑,包括能够对区块链进行批量的编辑,还支持对区块链上区块的批量删除。而且在执行完批量编辑后,区块链的环式结构仍然保持不变。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1