CN116383894A - 基于可验证vdch函数的可修改联盟链性能优化方法 - Google Patents

基于可验证vdch函数的可修改联盟链性能优化方法 Download PDF

Info

Publication number
CN116383894A
CN116383894A CN202310360209.8A CN202310360209A CN116383894A CN 116383894 A CN116383894 A CN 116383894A CN 202310360209 A CN202310360209 A CN 202310360209A CN 116383894 A CN116383894 A CN 116383894A
Authority
CN
China
Prior art keywords
hash
node
collision
vdch
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310360209.8A
Other languages
English (en)
Inventor
杜学绘
吴翔宇
王娜
任志宇
单棣斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Information Engineering University of PLA Strategic Support Force
Original Assignee
Information Engineering University of PLA Strategic Support Force
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Information Engineering University of PLA Strategic Support Force filed Critical Information Engineering University of PLA Strategic Support Force
Priority to CN202310360209.8A priority Critical patent/CN116383894A/zh
Publication of CN116383894A publication Critical patent/CN116383894A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及区块链技术领域,特别涉及一种基于可验证VDCH函数的可修改联盟链性能优化方法,通过构建用于计算联盟链修改操作中哈希碰撞的可验证分布式变色龙哈希VDCH函数及用于在分布式环境下有序利用VDCH函数修改联盟链的基于可验证门限签名CVTSS共识协议;利用VDCH函数作为联盟链中哈希函数,并将CVTSS共识协议作为区块链节点修改数据阶段所需执行的共识协议,在区块链系统中基于VDCH函数和CVTSS共识协议来构建可修改联盟链。本发明能够保持联盟链系统的去中心化特性,可以让节点在不暴露子密钥的情况下相互验证碰撞份额的正确性,提升方案容错能力,避免对中本聪共识的依赖,提升共识修改过程效率,能够杜绝恶意节点滥用一次性变色龙密钥随意修改联盟链问题的发生。

Description

基于可验证VDCH函数的可修改联盟链性能优化方法
技术领域
本发明涉及区块链技术领域,特别涉及一种基于可验证VDCH函数的可修改联盟链性能优化方法。
背景技术
随着数字货币、开源公共区块链平台和其他一些衍生技术的普及,越来越多的人想要将区块链技术应用到企业或者政府业务中去。但是,公有链的效率太低、资源耗费大,且私有链的去中心化程度不高,无法发挥区块链技术的优势,所以公有链和私有链无法适用于当下的许多业务场景。在这种情况下,联盟链作为一种实用的区块链技术被提出,它兼顾了公有链的去中心化特性与私有链的高效和隐私性,为物流、制造和保险等领域的业务提供创新性和多样性。然而,随着技术发展和应用的深入,传统联盟链的不可修改性正在对许多业务产生不利影响,包括但不限于以下三个方面:不可修改性可能被滥用于恶意的目的,例如一些恶意用户可能在链上发布不良网站链接,影响青少年的健康成长。越来越多的基于联盟链的应用要求具有对数据进行一定程度的灵活编辑的能力。例如,存储在链上的数据可能涉及用户的隐私敏感信息,用户可能希望从链上删除他们的隐私数据。并且,一些无用的数据需要被删除,以节省终端设备的存储空间。相关数据保护条例的出台,对联盟链应用的合法性提出了挑战,因为不可修改性给非法数据的传播提供了便利。总而言之,在特定情况下,实现对联盟链上存储的数据进行可控的修改已经发展成为一项重要的要求。
目前,对链上数据进行可控修改的实现方式大致可分为两类:基于中本聪共识和基于变色龙哈希函数。在基于中本聪共识的可修改区块链方案中,节点依靠共同的规则来商定被编辑的区块的最终状态,一般是通过链上投票来进行,如果节点最终对区块的新状态达成一致,那么修改操作就会被诚实的节点所批准。然而,上述方案的共识延迟较高,无法适用于对效率要求较高的联盟链应用场景。在基于变色龙哈希函数的可修改区块链方案中,变色龙哈希函数是实现修改操作的关键。与一般的哈希函数不同的地方在于,变色龙哈希函数具有一对公私钥,计算哈希值时需要出示公钥。在没有私钥的情况下,无法在多项式时间内计算出哈希碰撞,但是对于掌管私钥的人来说,计算哈希碰撞则是非常容易的事情。因此,在基于变色龙哈希函数的可修改区块链方案中,掌管私钥的人可以在不破坏哈希链的情况下完成修改操作。
综上所述,从效率方面考虑,采用变色龙哈希函数构建可修改联盟链似乎是一种更优的解决方案。但是,现有的基于变色龙哈希函数的可修改区块链方案还存在以下三点问题:(1)现有方案要么将变色龙哈希函数的密钥交给一个节点保管,要么让多个节点通过安全多方计算协议将变色龙哈希函数的密钥拆分成多份,然后每个节点各自保管一份密钥份额。针对前者,存在中心化问题,与联盟链的去中心化理念相违背。而对于后者,现有方案在计算哈希碰撞阶段,节点之间无法相互验证各自生成的碰撞份额是否正确,只要有一个节点给出的碰撞份额不正确,则方案的安全性性就无法被保证。(2)攻击者可以从哈希碰撞里找到一次性变色龙密钥,并可利用一次性变色龙密钥对被修改过的数据进行任意修改,因此,系统的一致性无法被保证。(3)现有方案大多是基于公有链实现的,而公有链往往采用中本聪共识协议,共识效率比较低,不适用于对效率要求较高的联盟链系统。
发明内容
为此,本发明提供一种基于可验证VDCH函数的可修改联盟链性能优化方法,提升现有可修改联盟链共识效率。
按照本发明所提供的设计方案,提供一种基于可验证VDCH函数的可修改联盟链性能优化方法,包含:
构建用于计算联盟链修改操作中哈希碰撞的可验证分布式变色龙哈希VDCH函数及用于在分布式环境下有序利用VDCH函数修改联盟链的基于可验证门限签名CVTSS共识协议;
利用VDCH函数作为联盟链中哈希函数,并将CVTSS共识协议作为区块链节点修改数据阶段所需执行的共识协议,在区块链系统中基于VDCH函数和CVTSS共识协议来构建可修改联盟链。
作为本发明基于可验证VDCH函数的可修改联盟链性能优化方法,进一步地,构建VDCH函数中,利用Setup算法、Distribute算法、KeyGen算法、Hash算法、ShareGen算法、Adapt算法和ColVer算法来设置VDCH函数中用于计算哈希碰撞的算法,其中,Setup算法以安全参数为输入来生成系统公共参数,Distribute算法用于生成区块链节点私钥分量,KeyGen算法用于计算区块链节点私钥和VDCH函数公钥,Hash算法用于计算区块哈希值,ShareGen算法用于修改区块数据时被区块链节点调用来生成碰撞份额,ShareVer算法用于修改区块数据时被区块链节点调用来验证碰撞份额正确性,Adapt算法用于修改区块数据时被区块链节点调用来将若干合法碰撞份额聚合为完整哈希碰撞,ColVer算法用于验证哈希碰撞合法性。
作为本发明基于可验证VDCH函数的可修改联盟链性能优化方法,进一步地,利用Distribute算法生成区块链节点私钥分量,包含:
首先,当前区块链节点参与者随机构造多项式并秘密保管多项式系数;
接着,当前区块链节点参与者广播验证消息和自身标识符,为其他参与者计算对应的秘密份额,并通过秘密信道将秘密份额对应发送至其他参与者;
然后,当前区块链节点参与者接收其他参与者回应数据,并对回应数据正确性进行验证,依据验证结果,将验证不通过报告给区块链系统并申请移除验证不通过的其他参与者节点,验证通过后,依据回应数据来生成VDCH函数的私钥和公钥。
作为本发明基于可验证VDCH函数的可修改联盟链性能优化方法,进一步地,利用ShareVer算法验证碰撞份额正确性,包含:首先,依据参与者Pi生成的碰撞份额检查其他参与者计算的参与者编号是否一致,若一致,则继续检查(g,Xi,α,τi)是否为合法Diffie-Hellman元组,若为合法Diffie-Hellman元组,则判定计算的碰撞份额正确,否则,判定计算的碰撞份额错误,其中,g为生成元,Xi为参与者Pi的编号,α为依据VDCH函数公钥和随机因子利用哈希计算得到的用于防止VDCH函数秘钥泄露的自定义标识符,τi为依据参与者Pi初始化阶段随机选择的秘密值获取的元素值。
作为本发明基于可验证VDCH函数的可修改联盟链性能优化方法,进一步地,利用Adapt算法将若干合法碰撞份额聚合为完整哈希碰撞中,利用通过碰撞份额正确性验证通过的参与者,以参与者碰撞份额、新消息、就消息以及对应哈希值为输入通过聚合来获取完整的哈希碰撞。
作为本发明基于可验证VDCH函数的可修改联盟链性能优化方法,进一步地,利用ColVer算法验证哈希碰撞合法性中,针对给定的一对哈希碰撞,首先依据哈希碰撞对中的新旧消息利用哈希函数检查哈希碰撞的变色龙哈希值是否一致,并验证哈希碰撞中(g,hk,gε′,hkε′)是否为合法的Diffie-Hellman元组,如果检查和验证均通过,则认定哈希碰撞合法,否则认定哈希碰撞不合法,其中,hk、hkε′分别为哈希碰撞中利用随机因子ε′计算前后的变色龙哈希函数公钥,g、gε′分别为哈希碰撞中利用随机因子ε′计算前后的生成元。
作为本发明基于可验证VDCH函数的可修改联盟链性能优化方法,进一步地,构建的CVTSS共识协议中,由客户端构建request请求消息,并将其广播至全网;区块链节点收到request请求消息后,将该请求消息保存在肯定,并验证该请求消息的合法性,依据验证结果构造对该请求消息的prevote投票消息并广播至全网;其他区块链节点依据接收到的prevote投票消息进行投票统计,若请求消息的支持意见数≥预设数值t时,则节点依据共识轮次并利用哈希函数来计算主节点的节点编号,判断计算的节点编号是否与自身节点编号一致,若一致,则履行主节点职责,依据节点观察的全网节点对request请求消息意见来构建precommit消息并广播至全网;选择对request请求消息同意意见中前t个投票对应的节点计算哈希碰撞份额,依据计算得到的哈希碰撞份额来构建prepare消息并广播全网;节点收到prepare消息后,首先判断prepare消息是否来自于计算哈希碰撞份额的节点并验证prepare消息提供的哈希碰撞份额是否正确,若收到t个正确的prepare消息,则依据哈希碰撞份额对应的新随机值、新区块摘要值签名来计算commit消息并广播至全网;节点收到commit消息后,通过分析发送commit消息的节点是否成功计算哈希碰撞份额来判断commit消息合法性,如果任意节点收到t个合法commit消息,则节点讲commit消息中的新区快摘要值签名进行聚合并放入被请求消息修改的区块中,向客户端回复修改成功消息。
作为本发明基于可验证VDCH函数的可修改联盟链性能优化方法,进一步地,在区块链系统中基于VDCH函数和CVTSS共识协议来构建可修改联盟链中,区块链的区块头由哈希指针、默克尔根、证明和变色零哈希构成,其中,哈希指针指向前一个区块的变色龙哈希值,默克尔根存储由若干个交易数据组成的区块体的摘要信息,证明字段存储区块链节点对当前区块的投票信息,变色龙哈希中存储由变色龙哈希函数计算得到的区块变色龙哈希值和用于在修改区块数据时来保持变色龙哈希值不变的对应随机值,默克尔根存储的摘要信息中利用二叉树叶子存储所有交易数据的哈希值,通过每两片相邻的叶子联合运算来获取上层节点内容。
作为本发明基于可验证VDCH函数的可修改联盟链性能优化方法,进一步地,构建可修改联盟链中的合法新区块生成过程,包含:首先由共识协议指定的主节点将若干合法交易数据打包进一个新区块中并计算区块体的摘要信息,然后让区块的哈希指针指向当前链上的最后一个区块的变色龙哈希值;最后,主节点为新区块计算变色龙哈希值,并为区块摘要信息进行签名,将新区块和签名广播至其他节点,其他节点通过执行共识协议来验证新区块,通过验证过程中采纳新区块节点签名,若签名数量达到预设阈值,通过聚合采纳新区块节点签名来帅哥昵称完整签名,并将完整签名放入区块头的证明中。
作为本发明基于可验证VDCH函数的可修改联盟链性能优化方法,进一步地,构建可修改联盟链中的旧区块修改过程,利用哈希函数计算默克尔根中交易哈希值,并利用变色龙哈希函数计算区块哈希值,其中,旧区块被修改的数据限定为区块体中存储的交易数据,且旧区块交易数据修改后整个修改后的区块摘要信息对应修改,并利用证明字段存储修改后区块新摘要信息的完整签名。
本发明的有益效果:
本发明利用基于可验证密钥共享体制的安全多方计算协议共享变色龙密钥,保持联盟链系统的去中心化特性;同时,VDCH函数利用无交互式零知识证明协议计算和验证变色龙哈希碰撞份额,可以让节点在不暴露子密钥的情况下,相互验证碰撞份额的正确性,提升方案的容错能力;共识协议
Figure BDA0004164796240000051
为多个节点利用/>
Figure BDA0004164796240000052
函数协同计算变色龙哈希碰撞的过程提供协议支撑,避免对中本聪共识的依赖,提升共识修改过程的效率;同时,/>
Figure BDA0004164796240000053
协议将多个节点针对修改请求的共识结论聚合成门限签名,为修改结果提供签名证明,可以杜绝恶意节点滥用一次性变色龙密钥随意修改联盟链问题的发生。并进一步通过仿真实验验证本案方案即使在有恶意节点存在的情况下,依然可以完成修改操作,并且具有可接受的时间开销,可适用于对效率要求较高的企业或机构相关业务的联盟链系统。
附图说明:
图1为实施例中基于可验证VDCH函数的可修改联盟链的系统架构示意;
图2为实施例中
Figure BDA0004164796240000054
共识协议的基本共识过程示意;
图3为实施例中可修改联盟链中的区块结构示意;
图4为实施例中不同情况下关键协商阶段时间开销仿真示意;
图5为实施例中不同情况下
Figure BDA0004164796240000055
共识延迟示意。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
随着技术发展和人们需求的不断变化,联盟链与生俱来的不可修改性正在阻碍其被推广应用。例如,链上存储的失效数据无法被删除,错误数据不能被修改,极大地限制了联盟链的灵活性。但是,现有的可修改的区块链解决方案在去中心化、效率和容错性方面还有待提升。针对上述问题,本发明实施例,提供一种基于可验证VDCH函数的可修改联盟链性能优化方法,通过构建用于计算联盟链修改操作中哈希碰撞的可验证分布式变色龙哈希VDCH函数及用于在分布式环境下有序利用VDCH函数修改联盟链的基于可验证门限签名CVTSS共识协议;利用VDCH函数作为联盟链中哈希函数,并将CVTSS共识协议作为区块链节点修改数据阶段所需执行的共识协议,在区块链系统中基于VDCH函数和CVTSS共识协议来构建可修改联盟链。
本案可修改联盟链整体框架,如图1所示,存在两类实体:联盟链节点和客户端。其中,区块链节点对外暴露了多种接口,例如查询接口和请求接口等,供客户端与区块链进行互动。除此之外,节点还负责收集交易、验证交易、打包交易,执行变色龙哈希函数以及运行共识协议(例如Tendermint)生成新区块。当客户端通过请求接口发送修改区块链的请求时,节点验证请求的合法性,并通过
Figure BDA0004164796240000056
共识协议推动全网节点对请求达成一致的意见,然后选出一定数量的节点利用本文设计的分布式变色龙哈希函数/>
Figure BDA0004164796240000057
计算新数据的哈希碰撞,执行修改区块链的操作,并向客户端反馈结果。客户端是经过区块链系统身份验证的计算设备,它可以将交易数据发送给区块链节点,请求让数据上链,同时可以查阅区块链上存储的历史数据。此外,它能够向系统发送修改数据的请求,请求的合法性由区块链系统来验证。
从安全性角度考虑,可假设攻击者具有如下攻击能力:攻击者能够截取网络中节点之间发送的消息,但是攻击者无法攻破加密体制和签名体制,所以,无法成功篡改节点发送的消息。攻击者能够控制系统内的部分节点,但是所能控制的节点数量不超过阈值t-1。攻击者可以在多项式时间内解决DDH问题,但是无法解决DL和CDH问题。为此,本案实施例中,可验证的分布式变色龙哈希函数
Figure BDA0004164796240000061
可验证节点提供的碰撞份额的正确性,在保持联盟链去中心化特性的同时,提升方案的容错能力,基于可验证门限签名的共识协议
Figure BDA0004164796240000062
为多个节点利用/>
Figure BDA0004164796240000063
协同计算哈希碰撞的过程提供协议支撑,避免对中本聪共识的依赖,提高区块修改共识效率。
在联盟链构建中涉及到的数论问题,可设G是一个阶位q且生成元为g的循环乘法群,给出在G上定义的三个问题:
离散对数问题(DL):给定ga∈G,其中
Figure BDA0004164796240000064
计算a。
计算性Diffie-Hellman问题(CDH):给定g,ga,gb∈G,其中
Figure BDA0004164796240000065
计算gab
判定性Diffie-hellman问题(DDH):给定g,ga,gb,gc∈G,其中
Figure BDA0004164796240000066
判定等式c=ab是否成立。
如果在一个群G上,没有算法能够在多项式时间内解决CDH问题,但是存在一个算法
Figure BDA0004164796240000067
能够在多项式时间内以不可忽略的概率解决DDH问题,那么G可被认为是一个GapDiffie-Hellman(GDH)群。
现有变色龙哈希函数是一种具有密钥对的特殊哈希函数,对于不知道密钥的人来说,它是抗碰撞的,而密钥持有者可以轻松的计算出哈希碰撞。典型的变色龙哈希函数由以下五个算法组成:
Figure BDA0004164796240000068
算法以一个安全参数λ作为输入,得到公共参数:params←Setup(1λ)。为了方便起见,假设params是其他所有算法的隐性输入。/>
Figure BDA0004164796240000069
算法以公共参数params作为输入,输出哈希函数的一对公私钥:
(sk,pk)←KeyGen(params)。
Figure BDA00041647962400000610
给定一个消息m,然后将m与pk作为/>
Figure BDA00041647962400000611
算法的输入,输出m的变色龙哈希值:/>
Figure BDA00041647962400000612
其中r是一个随机值。
Figure BDA00041647962400000613
是一个确定性算法,用来验证哈希值的正确性。给定消息m和对应的哈希值(h,r)以及公钥pk,输出验证结果:/>
Figure BDA00041647962400000614
其中d∈{0,1},如果验证成功,则返回d=1。/>
Figure BDA0004164796240000071
算法以私钥sk、新消息m′、旧消息m以及对应的哈希值(h,r)作为输入,输出新的随机值:/>
Figure BDA0004164796240000072
对于变色龙哈希函数来说,它的正确性成立的条件是,对于任意的
Figure BDA0004164796240000073
和所有的$m,m'\in{\rm\mathcal{M}}$,都有/>
Figure BDA0004164796240000074
基于Schnorr的无交互式零知识证明协议可以在不暴露证明者的秘密值的情况下,让证明者向验证者证明自己拥有这个秘密值,本案实施例中的可验证分布式变色龙哈希函数中,可利用该协议验证节点计算的碰撞份额的正确性。基于Schnorr的无交互式零知识证明协议内容可描述如下:
证明者与验证者商定系统参数(G,g,q,H),其中,q是一个大素数,G是一个阶为q生成元为g的群,H是一个单向哈希函数。证明者从G中随机选一个x作为自己的私钥,然后将y=gx作为自己的公钥广播出去。接下来,验证者要在不知道x是什么的情况下验证证明者拥有x。
首先,证明者选择一个随机值r,并依次计算R=gr和c=H(R,y),以及s=xc+r,证明者将(R,s)发送给验证者,验证者计算e=H(R,y),并通过检查等式R=gsy-e是否成立来验证证明者是否知道x。其正确性可由下式证明:
R=gsy-e=gxc+r-xe=gxc+r-xc=gr=R
值得注意的是,在上面的过程里,证明者给出的c是通过哈希函数计算得来的,由于单向哈希函数的输出值会均匀分布在一个整数域内,所以,证明者在生成承诺R之前没有办法预测c。因此,证明者就不能通过设计c来愚弄验证者。
进一步地,本案实施例在构建VDCH函数中,利用Setup算法、Distribute算法、KeyGen算法、Hash算法、ShareGen算法、Adapt算法和ColVer算法来设置VDCH函数中用于计算哈希碰撞的算法,其中,Setup算法以安全参数为输入来生成系统公共参数,Distribute算法用于生成区块链节点私钥分量,KeyGen算法用于计算区块链节点私钥和VDCH函数公钥,Hash算法用于计算区块哈希值,ShareGen算法用于修改区块数据时被区块链节点调用来生成碰撞份额,ShareVer算法用于修改区块数据时被区块链节点调用来验证碰撞份额正确性,Adapt算法用于修改区块数据时被区块链节点调用来将若干合法碰撞份额聚合为完整哈希碰撞,ColVer算法用于验证哈希碰撞合法性。
其中,利用Distribute算法生成区块链节点私钥分量,可涉及为包含:当前区块链节点参与者随机构造多项式并秘密保管多项式系数;当前区块链节点参与者广播验证消息和自身标识符,为其他参与者计算对应的秘密份额,并通过秘密信道将秘密份额对应发送至其他参与者;当前区块链节点参与者接收其他参与者回应数据,并对回应数据正确性进行验证,依据验证结果,将验证不通过报告给区块链系统并申请移除验证不通过的其他参与者节点,验证通过后,依据回应数据来生成VDCH函数的私钥和公钥。利用ShareVer算法验证碰撞份额正确性,包含:首先,依据参与者Pi生成的碰撞份额检查其他参与者计算的参与者编号是否一致,若一致,则继续检查(g,Xi,α,τi)是否为合法Diffie-Hellman元组,若为合法Diffie-Hellman元组,则判定计算的碰撞份额正确,否则,判定计算的碰撞份额错误,其中,g为生成元,Xi为参与者Pi的编号,α为依据VDCH函数公钥和随机因子利用哈希计算得到的用于防止VDCH函数秘钥泄露的自定义标识符,τi为依据参与者Pi初始化阶段随机选择的秘密值获取的元素值。利用Adapt算法将若干合法碰撞份额聚合为完整哈希碰撞中,利用通过碰撞份额正确性验证通过的参与者,以参与者碰撞份额、新消息、就消息以及对应哈希值为输入通过聚合来获取完整的哈希碰撞。利用ColVer算法验证哈希碰撞合法性中,针对给定的一对哈希碰撞,首先依据哈希碰撞对中的新旧消息利用哈希函数检查哈希碰撞的变色龙哈希值是否一致,并验证哈希碰撞中(g,hk,gε′,hkε′)是否为合法的Diffie-Hellman元组,如果检查和验证均通过,则认定哈希碰撞合法,否则认定哈希碰撞不合法,其中,hk、hkε′分别为哈希碰撞中利用随机因子ε′计算前后的变色龙哈希函数公钥,g、gε′分别为哈希碰撞中利用随机因子ε′计算前后的生成元。
具体地,可验证的分布式变色龙哈希函数
Figure BDA00041647962400000812
函数的每个算法可描述如下:
1.
Figure BDA0004164796240000081
参与者Pi(i=1,...,n)以安全参数λ作为输入,运行/>
Figure BDA0004164796240000082
算法,得到公共参数(G,q,g),其中q是一个大素数,G是一个阶为q生成元为g的GDH群。然后Pi选择统一的抗碰撞的哈希函数H0:{0,1}*→G*和H1:/>
Figure BDA0004164796240000083
为了方便起见,接下来的算法都将(G,q,g,H0,H1)作为默认输入。
2.
Figure BDA0004164796240000084
参与者Pi(i=1,...,n)随机构造一个t-1次多项式/>
Figure BDA0004164796240000085
其中/>
Figure BDA0004164796240000086
由Pi秘密保管,然后广播验证消息ci,k
Figure BDA0004164796240000087
和自己的身份标识符/>
Figure BDA0004164796240000088
其中xi=fi(i)当成秘密值保管。Pi为系统内的其余参与者Pj(j∈{1,...,n}\{i})计算秘密份额/>
Figure BDA00041647962400000814
并通过秘密信道发送给Pj,其中/>
Figure BDA00041647962400000815
由Pi秘密保管。Pi在接收到其他节点发送来的秘密份额lj→i(j∈(1,...,n)\{i})后,通过检查等式/>
Figure BDA0004164796240000089
是否成立来验证秘密份额的正确性,如果不正确,则会报告给系统,申请移除参与者Pj,并让n=n-1。如果验证结果都通过了,则计算秘密值/>
Figure BDA00041647962400000810
将/>
Figure BDA00041647962400000811
和gsk作为/>
Figure BDA00041647962400000813
的私钥和公钥。注意,任意≥t个参与者可以通过贡献自己的秘密值/>
Figure BDA00041647962400000924
并利用拉格朗日插值法恢复出sk。
3.
Figure BDA0004164796240000091
假设前t个参与者P1,...,Pt被选中执行/>
Figure BDA0004164796240000092
算法,以它们的编号{X1,...,Xt}为输入。参与者Pi(i=1,...,t)计算自己的私钥/>
Figure BDA0004164796240000093
然后相应的公钥是/>
Figure BDA0004164796240000094
并向网络广播自己的公钥。任意一个参与者Pi在收到t个节点的公钥后,可以计算变色龙哈希函数的公钥/>
Figure BDA0004164796240000095
Figure BDA0004164796240000096
相应的,变色龙哈希函数的私钥是sk=sk1+…+skt,并且私钥对任何节点不可见。算法/>
Figure BDA0004164796240000097
最终输出/>
Figure BDA0004164796240000098
4.
Figure BDA0004164796240000099
给定消息m,参与者首先计算随机因子ε=H1(m,ts),其中ts代表时间戳,表示消息m到达系统时的时间。然后计算随机值r=(gε,hkε)和自定义标识符α=H0(ε,hk),α可以防止变色龙哈希函数的密钥被泄露。最后计算
Figure BDA00041647962400000910
将(m,r,h,α)作为消息m的变色龙哈希值并输出。
5.
Figure BDA00041647962400000911
假设前t个参与者P1,...,Pt被选中负责计算(m,r,h,α)的哈希碰撞。给定旧消息m、新消息m′以及自定义标识符α。Pi(i=1,...,t)计算si=ski·(H1(m)-H1(m′))+xi和/>
Figure BDA00041647962400000912
其中,xi是Pi在系统初始化阶段随机选择的秘密值。然后计算/>
Figure BDA00041647962400000922
最后,将(si,dii)作为Pi生成的碰撞份额并输出。
6.
Figure BDA00041647962400000913
任意参与者可对Pi(i∈{1,...,n})计算的碰撞份额(si,dii)进行验证。首先检查等式/>
Figure BDA00041647962400000914
与/>
Figure BDA00041647962400000915
是否成立。如果成立,则继续检查(g,Xi,α,τi)是否是合法的Diffie-Hellman元组,如果是合法的Diffie-Hellman元组,算法输出1,否则输出0,表明Pi的碰撞份额是错误的。
7.
Figure BDA00041647962400000916
假设参与者P1,...,Pt提供的碰撞份额通过了/>
Figure BDA00041647962400000923
算法的验证,则参与者Pi(i=1,...,t)计算/>
Figure BDA00041647962400000917
Figure BDA00041647962400000918
然后计算/>
Figure BDA00041647962400000919
将r′作为算法的输出。
其中,
Figure BDA00041647962400000920
可视为一次性密钥,给定新消息m″,可以通过一次性密钥计算新的哈希碰撞:/>
Figure BDA00041647962400000921
8.
Figure BDA0004164796240000101
验证给定的一对哈希碰撞(r,m,r′,m′),首先检查等式/>
Figure BDA0004164796240000102
是否成立,然后验证(g,hk,gε′,hkε′)是否是一个合法的Diffie-Hellman元组,如果以上验证都通过,则说明哈希碰撞计算成功,算法输出1,否则输出0。
下面通过如下理论来检验VDCH函数的安全性:
Lemma1任何参与者Pi(i=1,...,n)的身份标识符Xi都是可验证的。
Proof.当任意参与者Pi(i=1,...,n)构造好只有自己可知的t-1次多项式fi(x)后,计算并广播自己的身份标识符
Figure BDA0004164796240000103
其他参与者收到Pi的身份标识符Xi后,通过检查等式/>
Figure BDA0004164796240000104
验证其正确性。
Lemma2任意参与者通过执行
Figure BDA0004164796240000105
算法得到的公钥都是可验证的。
Proof.首先,任何节点Pi(i=1,...,n)已将验证信息ci,k(k=1,...,t-1)广播至全网,网络中的节点可以通过相互之间比较来检查ci,k(k=1,...,t-1)的一致性。所以,Pi无法伪造其他节点Pj(j=1,...,n)的私钥份额
Figure BDA00041647962400001011
因此,任意诚实的参与者在收到Pj(j=1,...,t)发送来的公钥后,执行以下验算步骤:首先计算/>
Figure BDA0004164796240000106
(由引理1可知,计算得到的uj是唯一的),然后计算/>
Figure BDA0004164796240000107
接着检查等式/>
Figure BDA0004164796240000108
是否成立,如果成立,则说明Pj发送的公钥是正确的,否则不正确。上述验证过程的正确性可由下式证明:
Figure BDA0004164796240000109
Lemma3任意诚实的参与者中都可以验证其他参与者Pi计算的碰撞份额(si,dii)的正确性。
Proof.参与者Pi(i=1,...,n)发送的碰撞份额(si,dii)的正确性证明过程如下:首先,验证者计算
Figure BDA00041647962400001010
并按下式进行验证
Figure BDA0004164796240000111
其正确性可由下式证明:
Figure BDA0004164796240000112
由Lemma1可知,Xi是不可伪造的,所以,si的正确性可通过上面的方式进行验证。进而由于α是公开的,所以di的正确性可以通过检查等式
Figure BDA0004164796240000113
是否成立来验证。对于τi,正确的τi应该等于/>
Figure BDA0004164796240000114
而α=H0(ω,hk)是GDH群G中的元素,因此α可以用gΔ来表示,其中,Δ是某个定值。所以,可以通过判断/>
Figure BDA0004164796240000115
是否是合法的Diffie-Hellman元组来验证τi的正确性,这相当于解决GDH群上的DDH问题,而这是容易实现的。
Lemma4在前述的威胁假设下,如果攻击者不知晓密钥,则
Figure BDA0004164796240000116
对于攻击者来说是抗碰撞的。
Proof.假设攻击者构造了一个多项式时间算法
Figure BDA0004164796240000117
能够以不可忽略的概率输出(m,r)和(m′,r′),使得/>
Figure BDA0004164796240000118
即gεαH(m)=gε′αH(m′),相当于/>
Figure BDA0004164796240000119
能够有效的计算出/>
Figure BDA00041647962400001110
这等同于在多项式时间内解决GDH群上的CDH问题,而攻击者不具有解决CDH问题的能力,因此假设不成立,所以/>
Figure BDA00041647962400001111
对于攻击者来说是抗碰撞的。
Lemma5至少需要t个节点的批准才能利用
Figure BDA00041647962400001112
计算哈希碰撞。
Proof.由Lemma4可知,在不知道密钥sk的情况下,
Figure BDA00041647962400001113
是抗碰撞的,而密钥
Figure BDA00041647962400001114
其中fi(x)是t-1次多项式。n个节点分别各自保管sk的秘密份额/>
Figure BDA00041647962400001115
根据拉格朗日插值法,至少需要t个节点贡献出自己的秘密份额才能恢复出密钥sk。因此,攻击者无法私自计算出密钥,因为它最多只能获得t-1个节点的秘密份额。所以,综上,要想计算哈希碰撞,则必须至少t个节点同意才行。
Lemma6
Figure BDA00041647962400001116
满足无密钥暴露的特性。
Proof.给定一对哈希碰撞(m,α,gε,hkε)和(m′,α,gε′,hkε′),攻击者计算
Figure BDA00041647962400001117
Figure BDA00041647962400001118
要想计算密钥sk,等同于解决GDH群上的DL问题,而攻击者不具备解决DL问题的能力,所以,/>
Figure BDA00041647962400001119
满足无密钥暴露的特性。
Figure BDA00041647962400001120
可以在去中心化条件下计算哈希碰撞,实现对联盟链的修改操作,但是如何让节点在分布式环境下有序地利用/>
Figure BDA0004164796240000121
修改联盟链是一个必须面对的现实问题。进一步地,本案实施例构建的CVTSS共识协议中,由客户端构建request请求消息,并将其广播至全网;区块链节点收到request请求消息后,将该请求消息保存在肯定,并验证该请求消息的合法性,依据验证结果构造对该请求消息的prevote投票消息并广播至全网;其他区块链节点依据接收到的prevote投票消息进行投票统计,若请求消息的支持意见数≥预设数值t时,则节点依据共识轮次并利用哈希函数来计算主节点的节点编号,判断计算的节点编号是否与自身节点编号一致,若一致,则履行主节点职责,依据节点观察的全网节点对request请求消息意见来构建precommit消息并广播至全网;选择对request请求消息同意意见中前t个投票对应的节点计算哈希碰撞份额,依据计算得到的哈希碰撞份额来构建prepare消息并广播全网;节点收到prepare消息后,首先判断prepare消息是否来自于计算哈希碰撞份额的节点并验证prepare消息提供的哈希碰撞份额是否正确,若收到t个正确的prepare消息,则依据哈希碰撞份额对应的新随机值、新区块摘要值签名来计算commit消息并广播至全网;节点收到commit消息后,通过分析发送commit消息的节点是否成功计算哈希碰撞份额来判断commit消息合法性,如果任意节点收到t个合法commit消息,则节点讲commit消息中的新区快摘要值签名进行聚合并放入被请求消息修改的区块中,向客户端回复修改成功消息。
具体低,为
Figure BDA0004164796240000122
共识协议在GDH群上构建的可验证门限签名方案/>
Figure BDA0004164796240000123
它主要由7个算法组成,其中的算法内容可设计如下:
1.
Figure BDA0004164796240000124
输入安全参数λ,得到公共参数(G,q,g,H),其中q是一个大素数,G是一个阶为q生成元为g的GDH群,H是一个抗碰撞的哈希函数H:{0,1}*→G*。为了方便描述,公共参数(G,q,g,H)是下面所有算法的隐性输入。
2.
Figure BDA0004164796240000125
参与者Pi(i=1,...,n)随机生成一个t-1次的多项式/>
Figure BDA0004164796240000126
其中/>
Figure BDA0004164796240000127
由Pi秘密保管,然后广播验证消息
Figure BDA0004164796240000128
接下来,Pi为其他参与者Pj(j∈{1,...,n}\{i})计算/>
Figure BDA00041647962400001213
并通过加密信道发送给Pj,Pj收到/>
Figure BDA00041647962400001214
后,通过检查等式/>
Figure BDA0004164796240000129
是否成立,来验证/>
Figure BDA00041647962400001215
的正确性。最后,Pi计算自己的私钥/>
Figure BDA00041647962400001210
和公钥/>
Figure BDA00041647962400001212
并将公钥广播出去。/>
Figure BDA00041647962400001211
作为群签名方案的主私钥,任意数量t-1个以上节点能够通过贡献自己的私钥(i,xi)恢复出x,y=gx则作为方案的主公钥。
3.
Figure BDA0004164796240000131
算法计算给定输入消息的哈希值h=H(m),并将h作为算法的输出。
4.
Figure BDA0004164796240000132
参与者Pi(i=1,...,n)对消息m进行签名,首先计算/>
Figure BDA0004164796240000133
然后计算/>
Figure BDA0004164796240000134
最后将(i,σi,hi)作为算法的输出。
5.
Figure BDA0004164796240000135
给定某个参与者Pi(i=1,...,n)的签名(i,σi),首先计算/>
Figure BDA0004164796240000136
然后检查(g,yi,h,σi)是否是Diffie-Hellman元组来判断签名的有效性(其中,yi是参与者Pi的公钥),如果是Diffie-Hellman元组,则说明签名有效,然后输出1,否则输出0。
6.
Figure BDA0004164796240000137
签名收集者/>
Figure BDA0004164796240000138
利用/>
Figure BDA0004164796240000139
算法验证节点投票签名的有效性,待收集到t个不同参与者的合法签名后,/>
Figure BDA00041647962400001310
计算完整的签名
Figure BDA00041647962400001311
并输出,其中/>
Figure BDA00041647962400001312
(假设前t个节点将合法的签名发给了/>
Figure BDA00041647962400001313
)。
7.
Figure BDA00041647962400001314
给定针对消息m的完整签名,任意参与者Pi(i=1,...,n)先计算/>
Figure BDA00041647962400001315
然后可通过检查(g,y,h,σ)是否是合法的Diffie-Hellman元组判断完整签名的有效性,其中y是/>
Figure BDA00041647962400001316
的主公钥,如果签名有效,则算法输出1,否则输出0。
在共识投票过程中各类消息及其正确性验证算法可描述如下:
reuest.request消息是由客户端构建的,它的结构是(REQUEST,num,cid,m,σcid)。其中,num表示与请求对应的唯一编号。cid表示客户端的身份标识符,区块链节点可以根据客户端的身份标识符找到与客户端对应的密钥证书等信息。m表示请求消息的具体内容(例如请求删除第37个区块里的第8条交易数据)。σcid表示客户端对请求消息的签名,节点可通过验证签名的正确性检查请求消息是否是由其他实体伪造的。
验证request消息的算法1过程:首先检查请求消息里的签名是否正确,然后检查修改请求是否满足预定义的修改规则
Figure BDA00041647962400001317
如果上述两步检查结果都正确,则返回1,表示客户端的请求合法,否则返回0。
prevote.prevote消息是区块链节点对request消息的投票,注意,投票分赞成票和反对票两类。prevote消息的结构为(PREVOTE,i,σcid,v,σpv)。其中,i表示生成prevote消息的节点编号。σcid是request消息中客户端对请求消息的签名,将该信息放入prevote消息中,可以让节点之间相互验证客户端发送的请求消息是否一致,避免因客户端作恶,给不同的节点发送不同的合法修改请求,导致节点修改区块链产生不一致性的问题。v表示节点是否同意修改请求,如果v=true,则表示同意,否则如果v=false,则表示不同意。σpv表示节点对prevote消息的签名,当v等于true时,
Figure BDA0004164796240000141
而当v等于false时,则/>
Figure BDA0004164796240000142
其中m和num是request消息里的字段,xi表示节点的私钥。
验证prevote消息的算法2过程:首先检查prevote消息里携带的客户端的签名是否合法,如果不合法,则返回3,表明节点发送的prevote消息有误。如果prevote消息里携带的客户端的签名是合法的,则将其与本地存储的request消息里的客户端签名进行比较,如果不一致,则返回0,说明客户端给不同的节点发送了不同的请求。以上检查都通过后,判断prevote消息是否携带支持修改请求的信息,如果返回的判断结果是1,则说明发送prevote消息的节点反对修改,如果返回结果是2,则说明支持修改。
precommit.precommit消息由系统内的主节点生成,主节点利用precommit消息来统一全网对修改请求的意见。但是,值得注意的地方是,主节点并不能左右全网节点对修改请求的意见。precommit消息的结构是
Figure BDA0004164796240000148
其中l是主节点的节点编号。σcmp是主节点利用/>
Figure BDA0004164796240000143
算法聚合至少t个σpv签名(prevote消息里节点的签名)得到的完整签名。/>
Figure BDA0004164796240000144
是主节点对precommit消息的签名。Ω是一个存放节点投票签名的集合,如果主节点收到了至少t个赞成修改的prevote消息,则主节点将这些消息里的(i,σpv)按照签名的大小顺序依次放入Ω中。如果主节点没有收到足够多赞成修改的投票,则让Ω等于/>
Figure BDA0004164796240000145
设置σcmp与Ω两个字段可以防止主节点撒谎。首先,主节点如果想谎称全网至少有t个节点反对修改,那么他可以让集合Ω等于一个空集,但是他无法提供至少t个有效的反对修改的投票签名,也就聚合不出合法的完整签名σcmp,因此撒谎失败。其次,主节点如果想谎称全网至少有t个节点支持修改,那么他将面临两个难题:他无法提供至少t个合法的支持修改的投票签名,也就是说,他无法往集合Ω中放入足够多的签名投票。他无法聚合出合法的完整签名σcmp。综上,主节点一旦撒谎,则能够被其他节点轻易发现。
验证precommit消息的算法3过程:首先检查precommit消息里的Ω是否等于
Figure BDA0004164796240000146
如果是/>
Figure BDA0004164796240000147
则验证完整签名σcmp是否合法,如果不合法,则返回0,说明主节点试图欺骗其他节点。如果签名合法,则返回2,说明客户端的请求没有获得法定数量的节点支持。如果Ω不是空集合,则同样需要验证完整签名σcmp的合法性,另外还要检查Ω集合中每个签名的合法性,如果存在不合法的签名,则说明主节点试图欺骗其他节点。如果所有签名都合法,则返回1,说明客户端的请求获得了法定数量的节点的支持。
prepare.prepare消息由负责计算哈希碰撞的节点生成,当收集齐t个合法的prepare消息后,就可以根据prepare消息提供的信息计算正确的哈希碰撞。prepare消息的结构是(PREPARE,i,(si,dii),σppl)。其中i是生成prepare消息的节点的编号,(si,dii)是节点调用
Figure BDA0004164796240000151
算法生成的碰撞份额。/>
Figure BDA0004164796240000152
是节点对prepare消息的签名。σl是主节点对precommit消息的签名,将该字段放入prepare消息中,是为了让其他节点相互验证主节点发送的precommit消息是否一致,尤其需要检查集合Ω是否一致,因为Ω事关如何选择计算哈希碰撞的节点。
验证prepare消息的算法4过程:首先检查prepare消息中提供的主节点对precommit消息的签名σl的合法性,如果不合法,则直接返回0,说明prepare消息不正确。如果
Figure BDA0004164796240000156
是合法的签名,则继续将其与本地存储的/>
Figure BDA0004164796240000155
进行比较,如果不一样,则说明主节点给不同的节点发送了不同的precommit消息,并返回2。在前面检查步骤都通过的基础上,继续检查prepare提供的碰撞份额是否合法,如果合法则返回1,否则返回0。
commit.commit消息由计算出了哈希碰撞的节点生成。commit消息的结构是(COMMIT,i,rnewcod)。其中,rnew是节点调用
Figure BDA0004164796240000153
算法计算出来的新随机值。i是构建commit消息的节点的节点编号。/>
Figure BDA0004164796240000154
是节点对commit消息的签名。σd是对区块摘要值的签名,注意是修改后的区块。
验证commit消息的算法5过程:首先检查节点对commit消息签名的合法性,如果不合法,则直接返回0,否则继续检查commit消息里携带的哈希碰撞是否正确,如果正确,返回1,否则返回0。
如图2所示,共识过程分为六个阶段,分别是Request、Pre-vote、Pre-commit、Prepare、Commit和Reply,每个阶段的过程如下:
Request.客户端构建request←(REQUEST,num,cid,m,σcid)消息,并将其广播至全网。
Pre-vote.区块链节点收到请求request后,将request消息保存在本地,然后调用算法1验证request消息的合法性,然后节点构造prevote←(PREVOTE,i,σcid,v,σpv)消息。其中,v与σpv的取值与算法1的输出结果有关。当算法1输出结果为1时,v=true,
Figure BDA0004164796240000161
如果算法输1出结果为0,则v=false,/>
Figure BDA0004164796240000162
之后,节点将prevote消息广播出去。当收到其他节点发送的prevote消息时,调用算法2对prevote消息进行检查。如果算法2返回的结果是0,则表示客户端给不同的节点发送了不同的修改请求,那么就终止本次共识过程。如果算法2返回结果是1,则表明发送该prevote的节点不支持客户端的修改请求。如果返回结果是2,则表明发送该prevote的节点支持客户端的修改请求。如果返回的结果是3,则表明该prevote消息是不合法的,直接丢弃。如果节点收到了至少t个意见相同(要么支持要么反对客户端的修改请求)的prevote消息,则进入Pre-commit阶段。
Pre-commit.只要节点进入到Pre-commit阶段,则说明在该节点的视野中,他看到了全网大部分节点(至少t个节点)对客户端修改请求的统一意见:要么反对,要么赞同。此时,进入到该阶段的节点开始计算主节点的编号
Figure BDA0004164796240000163
其中round表示共识的轮次,其初始值为0,每当主节点作恶或者宕机,进入下一轮共识的时候,round会自增1,n则表示系统内节点的总数。利用哈希函数计算主节点的节点编号,一方面可以让选择主节点的过程具有随机性,另一方面可以保证全网节点计算结果的一致性。之后,所有节点判断l是否与自己的编号一致,如果一致,则说明自己在这一轮共识中需要履行主节点的职责。假设/>
Figure BDA0004164796240000169
是主节点,那么它将构建/>
Figure BDA0004164796240000168
消息,其中,σcmp和Ω与它所观察到的全网节点对修改请求的意见相关。如果/>
Figure BDA00041647962400001610
收到了至少t个赞成修改的prevote消息,则将这些prevote消息里的签名(i,σpv)按照接收的时间顺序依次放入集合Ω中,并利用/>
Figure BDA0004164796240000164
算法将Ω里的所有签名聚合成完整签名σcmp。如果它收到了至少t个反对修改的prevote消息,则让/>
Figure BDA0004164796240000165
并利用/>
Figure BDA0004164796240000166
算法将t个反对修改的投票签名聚合成完整签名σcmp。最后,/>
Figure BDA00041647962400001611
广播precommit消息至全网。
Prepare.任意节点收到precommit消息后,调用算法3对precommit消息进行分析。如果算法3返回的结果是0,则说明主节点作恶,试图欺骗其他节点。那么此时收到precommit消息的节点就会将主节点作恶的证据广播至全网,当得到网络中大部分(至少t个节点)节点的响应后,则系统会回到Pre-commit阶段,然后计算round=round+1,接着计算新的主节点的编号
Figure BDA0004164796240000167
之后,新的主节点负向全网广播precommit消息。如果算法3返回的结果是1,则说明,系统内至少有t个节点赞成修改请求,那么选择Ω集合中前t个投票对应的节点负责计算哈希碰撞。负责计算哈希碰撞的节点Pi利用/>
Figure BDA0004164796240000171
算法计算自己的密钥对(ski,pki),然后模拟执行客户端的修改请求,得到修改前与修改后的区块的摘要值,接着调用/>
Figure BDA0004164796240000172
算法计算碰撞份额(si,dii),最后构建prepare←(PREPARE,i,(si,dii),σppl)消息并广播。如果算法3返回的结果等于2,则说明至少有t个节点反对修改请求,那么此时系统内的节点可以直接向客户端回复拒绝修改,然后结束共识进程。
Commit.当节点Pi(i=1,...,n)收到prepare消息后,首先判断它是否来自于负责计算哈希碰撞的节点,如果不是,则直接点丢弃,否则调用算法4对prepare消息进行分析。如果算法4返回结果是0,则说明prepare消息不正确,无法根据该消息提供的碰撞份额计算正确的哈希碰撞,需要重新找赞成修改请求的节点替换当前出现问题的节点。具体操作是先将不正确的prepare消息作为证据广播出去,然后等待其他节点的响应,当大部分(至少t个节点)节点认为需要更换节点时,则系统回退到Prepare阶段。如果这是本轮共识中第k次出现节点发送错误的prepare消息,则挑选Ω集合中第t+k个签名投票所对应的节点来代替犯错误的节点,然后负责计算哈希碰撞的节点重新计算密钥对和碰撞份额,继续共识过程。如果算法4返回1,则说明prepare消息携带的碰撞份额是正确的。如果收到t个正确的prepare消息,则节点利用
Figure BDA0004164796240000173
算法计算哈希碰撞对应的新随机值rnew,然后执行客户端的修改请求,得到修改后的新区块,并计算新区块的摘要值d,接着调用
Figure BDA0004164796240000174
算法为d计算签名σd。最后构建commit←(COMMIT,i,rnewcod)消息并广播。如果算法4返回2,则说明主节点在Pre-commit阶段广播了不一致的precommit消息,那么节点会将主节点广播的不一致的precommit消息作为证据广播至全网,等待其他节点的响应。如果大部分(至少t个节点)节点要求更换主节点,则节点执行与Prepare阶段中类似的换主操作。
Reply.当节点收到commit消息后,会调用算法5对commit消息进行分析。如果算法返回1,则说明发送commit消息的节点成功计算了哈希碰撞。如果算法返回0,则说明commit消息不合法。当任意节点收到t个合法的commit消息后,则会将commit消息中的签名σd聚合成一个完整的签名,并放入到被修改的区块中,最后向客户端回复修改成功的消息。
下面结合理论来分析
Figure BDA0004164796240000175
的安全性,并对/>
Figure BDA0004164796240000176
与/>
Figure BDA0004164796240000177
中门限值t给出推荐取值范围。
Lemma7恶意节点无法举报诚实的主节点。
Proof.分以下两种情况进行证明:主节点收到了足够多的赞成修改的合法投票,那么主节点在构造precommit消息时,会将这些投票放入到precommit消息的Ω集合中,那么,收到主节点的precommit消息的节点能够通过验证这些消息的合法性,得出主节点并没有作恶的结论,此时其他节点举报主节点都将不会成功。当主节点没有收到足够多的赞成修改的合法投票,则其在构造precommit消息时,precommit消息里的Ω将会是一个空集,此时恶意节点想要举报主节点,则必须拿出足够多的赞成修改的合法投票才行,但是恶意节点并没有足够的投票。
Lemma8当系统内存在f个恶意节点时,则3f+1是保证系统活性和安全性的最小的总结点数量。
Proof.
Figure BDA0004164796240000181
协议中通过节点之间的广播通信来相互之间验证共识消息的有效性。如果在广播过程中,有f个节点没有响应,这f个节点可能全是恶意节点,也可能全是诚实节点,还有可能是恶意节点与诚实节点各占一部分。相应的,那么在n-f个响应中,可能不存在恶意节点的响应,也可能存在f个或者少于f个恶意节点的错误响应。考虑最坏情况,n-f个响应中存在f个恶意节点的错误响应,那么想要通过n-f个响应达成正确的共识,则必须保证其中诚实节点的响应数量要大于恶意节点的响应数量,即n-f-f>f。因此,综上所述,n>3f才能保证系统的活性和安全性,在此情况下,n的最小取值是3f+1。
Lemma9假设系统内恶意节点的数量等于f,系统内节点总数为n,如果
Figure BDA0004164796240000184
想要满足活性,则t≤n-f。
Proof.反证法,假设t>n-f,则当f个恶意节点都故障,或者作恶,则剩余的节点永远无法计算哈希碰撞,
Figure BDA0004164796240000182
必然无法执行。
Lemma10CVTSS满足安全性的前提是2t-n>f。
Proof.假设存在两个具有t个节点的集合S1和S2,并且S1与S2的交集中没有非恶意节点,此时f个恶意节点同时加入到S1与S2中,并且S1产生的共识投票与S2产生的共识投票的意见相左,那么系统内就会可能发生部分节点执行修改操作,而另一部分节点拒绝修改的问题,此时系统的一致性无法保证。因此,为了保证系统的一致性,S1与S2的交集中必须要有非恶意节点,即
Figure BDA0004164796240000183
Lemma11在系统满足安全性的前提下,t的最小取值是2f+1。
Proof.由Lemma 8和Lemma 10可知,当系统需要保证安全性时,n≥3f+1且2t-n>f,当n取最小值3f+1时,推理可得,2t>4f+1,由于t与f都是整数,所以2t≥4f+1+1,t≥2f+1,所以,t的最小取值应当等于2f+1。
Figure BDA0004164796240000191
替换传统联盟链中的哈希函数,然后将/>
Figure BDA0004164796240000192
共识协议作为节点在修改数据阶段执行的共识协议。为了支持对区块中交易数据的修改操作,需要重新定义可修改联盟链中的区块结构。
具体地,在区块链系统中基于VDCH函数和CVTSS共识协议来构建可修改联盟链中,区块链的区块头由哈希指针、默克尔根、证明和变色零哈希构成,其中,哈希指针指向前一个区块的变色龙哈希值,默克尔根存储由若干个交易数据组成的区块体的摘要信息,证明字段存储区块链节点对当前区块的投票信息,变色龙哈希中存储由变色龙哈希函数计算得到的区块变色龙哈希值和用于在修改区块数据时来保持变色龙哈希值不变的对应随机值,默克尔根存储的摘要信息中利用二叉树叶子存储所有交易数据的哈希值,通过每两片相邻的叶子联合运算来获取上层节点内容。
参见图3所示,区块头由哈希指针(hp)、默克尔根(mr)、证明(proof)以及变色龙哈希(ch)四个部分构成。其中,hp是前一个区块的变色龙哈希值。mr存储区块体的摘要信息,区块体由若干个交易数据组成,所有交易数据的哈希值被存储在一个二叉树的叶子中,然后每两片相邻的叶子联合起来做一次哈希运算得到上层节点的内容,持续这样计算就可以得到根节点的哈希值,此哈希值就是mr存储的内容。注意,在计算mr的过程中所使用的哈希函数是传统的抗碰撞的哈希函数。proof字段存储了区块链节点对该区块的投票信息,以证明该区块里的内容没有被随意篡改。ch中存储了区块的变色龙哈希值和对应的随机值,哈希值由变色龙哈希函数计算得到,在需要修改区块数据的时候,可以通过调整随机值保持变色龙哈希值的不变。
众所周知,联盟链里的每个新区块都需要全网达成共识后才能上链,本案实施例中,进一步地,构建可修改联盟链中的合法新区块生成过程,首先,由共识协议(例如Tendermint共识协议)指定的主节点将若干合法交易数据打包进一个新区块中,并计算mr。然后让新区块的hp指向当前链上的最后一个区块的变色龙哈希值。最后,主节点执行以下步骤为新区块计算变色龙哈希值(h,r):d=H(hp,mr),
Figure BDA0004164796240000193
其中,H是一个抗碰撞的哈希函数,d被看作是区块的摘要信息。当新区块构建好以后,主节点利用
Figure BDA0004164796240000194
算法为d签名,然后将新区块和签名广播给其他节点。其他节点执行共识协议对新区块进行验证,采纳新区块的节点也需要为区块的摘要值d进行签名,当签名数量达到阈值t时,利用/>
Figure BDA0004164796240000195
算法将这些签名聚合成一个完整的签名σcmp,并将σcmp放入区块头的proof中。至此,一个完整且合法的新区块就被生成。
交易级的可修改区块链方案,变色龙哈希函数被用于构造交易的默克尔树,也就是说,每个交易的哈希值是变色龙哈希值,要修改区块中的某个交易时,只需要找到对应交易的哈希碰撞。但是随之而来的问题是,当某个区块中含有大量交易数据时,那么该区块还要存储计算这些交易的变色龙哈希值时算产生的随机数,这会增加存储开销。本案实施例中,构建可修改联盟链中的旧区块修改过程,交易的哈希值和默克尔根依然采用传统的哈希函数进行计算,只有区块的哈希值采用变色龙哈希函数进行计算。以图2中的区块结构为例,当交易tx#1被修改后,则hash#1也会跟着改变,最终区块的摘要值也会变得不一样,那么为了保持区块的变色龙哈希值不变,系统内的节点将合作计算新区块的哈希碰撞。
需要注意的是,本案的可修改区块链中,能够被修改的数据只有区块体中存储的交易数据,其他数据一旦被修改,那么在验证数据一致性时会失败,这也保证了区块链系统的安全性。另外,当交易数据被修改后,整个区块的摘要信息也会被改变,所以proof字段里存储对新摘要信息的完整签名。
尽管可修改联盟链打破传统联盟链数据不可修改的特性,但是,仅允许修改操作在可控的情况下被执行,依然可以保证联盟链数据的不可篡改性。本案中构建的可修改联盟链正是依靠分布式的变色龙哈希函数和共识协议实现对修改操作的控制。分布式变色龙哈希函数使得任何实体无法单独完成修改操作。而共识投票协议可以在即使有恶意节点存在的情况下,保证修改操作的规范性。同时,即使一次性密钥被泄露,任何实体都无法利用一次性密钥绕过共识投票对区块数据进行修改,因为如果修改操作没有经过
Figure BDA0004164796240000201
共识协议的批准,那么即使攻击者将区块数据从m改成了m′,并且利用一次性密钥计算出了对应的哈希碰撞,但是区块中的proof字段存储的依然是针对数据m的完整签名,而攻击者并不知晓/>
Figure BDA0004164796240000202
方案的主私钥,也就无法计算出合法的针对数据m′的签名,所以验证者可以通过验证proof字段里签名的合法性,轻易的得出区块数据是否被篡改过的结论。
为验证本案方案有效性,下面结合仿真实验数据做进一步解释说明:
1、复杂性分析
本案中分布式变色龙哈希函数
Figure BDA0004164796240000203
的复杂性分析会对系统的整体性能产生不可忽视的影响。将本案中VDCH与类似的方案进行对比分析,为了方便比较不同方案之间的复杂性,将在群中的一次乘法操作Tm作为复杂性分析的测量单位。Karati[31]等人在工业物联网环境的背景下,提出了、一种轻量级的无证书签名方案“Provably Secure andLightweight Certificateless Signature Scheme for IIoT Environments”,为了直观描述签名方案的计算开销,他们将椭圆曲线群上的求逆、加法等运算产生的开销与乘法运算所产生的开销进行了转换,例如一次求逆运算产生的开销约等于11.6次乘法操作产生的时间开销。表1给出了求逆运算等其他操作的复杂度与Tm之间的转换关系。
表1 Definitions and conversions of primitive operations
Figure BDA0004164796240000211
表2给出复杂性的分析对比结果,Huang等人提出的可修改区块链方案“BuildingRedactable Consortium Blockchain for Industrial Internet-of-Things”与Jia等人提出的方案“Redactable Blockchain From Decentralized Chameleon Hash Functions”在计算哈希值时与本文提出的VDCH产生的开销一样多,而Zhang等人的方案“Serving atthe Edge:A Redactable Blockchain with Fixed Storage”产生的开销则相对少一些。另外,在计算哈希碰撞时,本案与另外三种方案产生的开销都与节点的数量成正比,相比于其他方案多了验证碰撞份额这一步,所以
Figure BDA0004164796240000218
的复杂度相比于其他方案要高一些。如果与其他方案一样,没有验证碰撞份额这一步,则/>
Figure BDA0004164796240000219
的复杂度仅为(23k+34.6)Tm,但是其安全性则会降到与其他方案一样的程度。
表2 Complexity comparison between similar schemes
Figure BDA0004164796240000212
Denote:k as a number of nodes involved in computing hash collisions;
CDHP:Computational Diffie-Hellman Problem.
2、仿真实验
通过仿真实验评估本案中可修改联盟链的性能表现。具体来说,基于Tendermint搭建一个联盟链,联盟链节点被部署在两台工作站(Intel(R)Xeon(R)Gold 6248R,3.00GHz,32GB RAM,Ubuntu20.04)上,每个工作站上运行多个节点,节点运行的传统哈希算法被替换成了本文提出的分布式变色龙哈希函数
Figure BDA0004164796240000213
节点之间利用/>
Figure BDA0004164796240000214
共识协议对客户端发出的修改请求进行共识,并利用/>
Figure BDA0004164796240000215
计算哈希碰撞。客户端被部署在一台笔记本电脑(Intel(R)Core(TM)i7-8650U CPU@1.90GHz 16GB RAM Windows10)上。/>
Figure BDA0004164796240000216
Figure BDA0004164796240000217
中提到的门限值t参照Lemma11进行设置。
可修改联盟链方案需要节点在系统启动之初调用
Figure BDA0004164796240000221
Figure BDA0004164796240000222
算法共享密钥份额,通过测试在不同条件下密钥共享阶段所需的时间成本,如图4所示,(a)展示当系统中节点数量逐渐增加时,时间成本的变化情况(系统内的节点都是诚实节点)。由结果可知,密钥共享阶段的时间成本会随着节点数量的增加而增加,但是总体来说,产生的时间成本是可接受的。另外,(b)展示了当系统中存在恶意节点时,密钥共享过程所产生的时间开销,恶意节点在密钥共享阶段会故意发送错误的秘密份额。我们将系统内的节点总数设置为64,然后恶意节点的数量从3逐渐递增到21,保持恶意节点数不超过系统总节点数量的三分之一。由实验结果可知,当系统内恶意节点数量增加时,密钥共享阶段所需的时间反而更少,经过分析可以发现,因为/>
Figure BDA0004164796240000223
和/>
Figure BDA0004164796240000224
可以在密钥共享阶段有效发现发送错误秘密份额的节点,并且可以将这部分节点排除出去,这就变相地减少了真正参与密钥共享阶段的节点数量,所以,密钥共享阶段所需的时间也就相应有所减少。
相比于采用效率表现不佳的中本聪共识协议的可修改区块链方案,本案中可修改联盟链方案采用的
Figure BDA0004164796240000225
共识协议是一个确定性共识协议,确定性共识协议的共识延迟相对来说要更低,效率也更高。对/>
Figure BDA0004164796240000226
的共识延迟进行测试,具体来说,利用笔记本上的客户端,向工作站上运行的联盟链系统发送修改区块数据的请求,然后当系统接收到请求后,客户端开始计时,联盟链里的节点开始执行/>
Figure BDA0004164796240000227
协议对客户端的请求进行协商共识,直到客户端收到节点的反馈结果,计时结束,并计算本次共识所需的时间。为了保证计算结果的准确性,分别在不同情况下进行了1000次实验,然后求平均值作为实验结果,如图5所示。同时,客户端的修改请求都是合法的,也就是说,诚实的节点每次都会执行完整的
Figure BDA0004164796240000228
共识协议来对修改请求进行协商共识,不会因为客户端发送的修改请求不合法,而执行到Prepare阶段就终止共识进程。
图5中,(a)展示在系统节点总数不同的情况下
Figure BDA0004164796240000229
的共识延迟情况。可以发现,当系统内节点数量增加时,共识延迟也会逐渐增加,这是因为,节点增多,网络中每个节点需要处理的共识消息就会增加,通信开销和计算开销都会有所增加。另外,在系统内设置了恶意节点,并将系统内的节点总数设置为64,然后分别在恶意节点数量占系统总结点数量5%、10%、15%、20%、25%和30%情况下,测试了/>
Figure BDA00041647962400002210
的共识延迟变化情况。(b)展示实验结果,由结果可知,恶意节点的存在会对共识延迟产生不利影响,使得共识延迟会随着恶意节点数量的增加而增加,但是总体来说,产生的共识延迟是可接受的。而采用中本聪共识协议的可修改区块链方案,往往需要等待一个小时的时间才能最终确认修改结果被记录到链上,因此,/>
Figure BDA0004164796240000231
的共识延迟相对来说非常低。
本案实施例可以在可控的条件下实现对区块数据的合法修改,冲破不可修改性对推广联盟链应用所产生的阻力。与以往方案不同的地方在于,设计可验证的分布式变色龙哈希函数
Figure BDA0004164796240000232
使系统内的节点采用基于可验证密钥共享机制的多方安全计算协议共享变色龙密钥,且在修改联盟链时,/>
Figure BDA0004164796240000233
利用基于Schnorr的五交互式零知识证明协议来验证节点提供的碰撞份额的正确性,有效杜绝恶意节点作恶的可能,同时保持联盟链去中心化的特性。另外,为了让系统内的节点有序处理修改联盟链的请求,设计基于门限签名的共识协议/>
Figure BDA0004164796240000234
为多个节点利用/>
Figure BDA0004164796240000235
协同计算哈希碰撞的过程提供协议支撑,避免对中本聪共识的依赖,有效提高修改效率,同时门限签名技术可为每次的修改结果提供证明,解决一次性变色龙密钥泄露问题,保证联盟链数据的一致性。并通过理论分析和仿真实验进一步证明本案所提方案的有效性和安全性,具有较好的应用前景。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的各实例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已按照功能一般性地描述了各示例的组成及步骤。这些功能是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不认为超出本发明的范围。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如:只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种基于可验证VDCH函数的可修改联盟链性能优化方法,其特征在于,包含:
构建用于计算联盟链修改操作中哈希碰撞的可验证分布式变色龙哈希VDCH函数及用于在分布式环境下有序利用VDCH函数修改联盟链的基于可验证门限签名CVTSS共识协议;
利用VDCH函数作为联盟链中哈希函数,并将CVTSS共识协议作为区块链节点修改数据阶段所需执行的共识协议,在区块链系统中基于VDCH函数和CVTSS共识协议来构建可修改联盟链。
2.根据权利要求1所述的基于可验证VDCH函数的可修改联盟链性能优化方法,其特征在于,构建VDCH函数中,利用Setup算法、Distribute算法、KeyGen算法、Hash算法、ShareGen算法、Adapt算法和ColVer算法来设置VDCH函数中用于计算哈希碰撞的算法,其中,Setup算法以安全参数为输入来生成系统公共参数,Distribute算法用于生成区块链节点私钥分量,KeyGen算法用于计算区块链节点私钥和VDCH函数公钥,Hash算法用于计算区块哈希值,ShareGen算法用于修改区块数据时被区块链节点调用来生成碰撞份额,ShareVer算法用于修改区块数据时被区块链节点调用来验证碰撞份额正确性,Adapt算法用于修改区块数据时被区块链节点调用来将若干合法碰撞份额聚合为完整哈希碰撞,ColVer算法用于验证哈希碰撞合法性。
3.根据权利要求2所述的基于可验证VDCH函数的可修改联盟链性能优化方法,其特征在于,利用Distribute算法生成区块链节点私钥分量,包含:
首先,当前区块链节点参与者随机构造多项式并秘密保管多项式系数;
接着,当前区块链节点参与者广播验证消息和自身标识符,为其他参与者计算对应的秘密份额,并通过秘密信道将秘密份额对应发送至其他参与者;
然后,当前区块链节点参与者接收其他参与者回应数据,并对回应数据正确性进行验证,依据验证结果,将验证不通过报告给区块链系统并申请移除验证不通过的其他参与者节点,验证通过后,依据回应数据来生成VDCH函数的私钥和公钥。
4.根据权利要求2所述的基于可验证VDCH函数的可修改联盟链性能优化方法,其特征在于,利用ShareVer算法验证碰撞份额正确性,包含:首先,依据参与者Pi生成的碰撞份额检查其他参与者计算的参与者编号是否一致,若一致,则继续检查(g,Xi,α,τi)是否为合法Diffie-Hellman元组,若为合法Diffie-Hellman元组,则判定计算的碰撞份额正确,否则,判定计算的碰撞份额错误,其中,g为生成元,Xi为参与者Pi的编号,α为依据VDCH函数公钥和随机因子利用哈希计算得到的用于防止VDCH函数秘钥泄露的自定义标识符,τi为依据参与者Pi初始化阶段随机选择的秘密值获取的元素值。
5.根据权利要求2所述的基于可验证VDCH函数的可修改联盟链性能优化方法,其特征在于,利用Adapt算法将若干合法碰撞份额聚合为完整哈希碰撞中,利用通过碰撞份额正确性验证通过的参与者,以参与者碰撞份额、新消息、就消息以及对应哈希值为输入通过聚合来获取完整的哈希碰撞。
6.根据权利要求2所述的基于可验证VDCH函数的可修改联盟链性能优化方法,其特征在于,,利用ColVer算法验证哈希碰撞合法性中,针对给定的一对哈希碰撞,首先依据哈希碰撞对中的新旧消息利用哈希函数检查哈希碰撞的变色龙哈希值是否一致,并验证哈希碰撞中(g,hk,gε′,hkε′)是否为合法的Diffie-Hellman元组,如果检查和验证均通过,则认定哈希碰撞合法,否则认定哈希碰撞不合法,其中,hk、hkε′分别为哈希碰撞中利用随机因子ε′计算前后的变色龙哈希函数公钥,g、gε′分别为哈希碰撞中利用随机因子ε′计算前后的生成元。
7.根据权利要求1所述的基于可验证VDCH函数的可修改联盟链性能优化方法,其特征在于,构建的CVTSS共识协议中,由客户端构建request请求消息,并将其广播至全网;区块链节点收到request请求消息后,将该请求消息保存在肯定,并验证该请求消息的合法性,依据验证结果构造对该请求消息的prevote投票消息并广播至全网;其他区块链节点依据接收到的prevote投票消息进行投票统计,若请求消息的支持意见数≥预设数值t时,则节点依据共识轮次并利用哈希函数来计算主节点的节点编号,判断计算的节点编号是否与自身节点编号一致,若一致,则履行主节点职责,依据节点观察的全网节点对request请求消息意见来构建precommit消息并广播至全网;选择对request请求消息同意意见中前t个投票对应的节点计算哈希碰撞份额,依据计算得到的哈希碰撞份额来构建prepare消息并广播全网;节点收到prepare消息后,首先判断prepare消息是否来自于计算哈希碰撞份额的节点并验证prepare消息提供的哈希碰撞份额是否正确,若收到t个正确的prepare消息,则依据哈希碰撞份额对应的新随机值、新区块摘要值签名来计算commit消息并广播至全网;节点收到commit消息后,通过分析发送commit消息的节点是否成功计算哈希碰撞份额来判断commit消息合法性,如果任意节点收到t个合法commit消息,则节点讲commit消息中的新区快摘要值签名进行聚合并放入被请求消息修改的区块中,向客户端回复修改成功消息。
8.根据权利要求1所述的基于可验证VDCH函数的可修改联盟链性能优化方法,其特征在于,在区块链系统中基于VDCH函数和CVTSS共识协议来构建可修改联盟链中,区块链的区块头由哈希指针、默克尔根、证明和变色零哈希构成,其中,哈希指针指向前一个区块的变色龙哈希值,默克尔根存储由若干个交易数据组成的区块体的摘要信息,证明字段存储区块链节点对当前区块的投票信息,变色龙哈希中存储由变色龙哈希函数计算得到的区块变色龙哈希值和用于在修改区块数据时来保持变色龙哈希值不变的对应随机值,默克尔根存储的摘要信息中利用二叉树叶子存储所有交易数据的哈希值,通过每两片相邻的叶子联合运算来获取上层节点内容。
9.根据权利要求8所述的基于可验证VDCH函数的可修改联盟链性能优化方法,其特征在于,构建可修改联盟链中的合法新区块生成过程,包含:首先由共识协议指定的主节点将若干合法交易数据打包进一个新区块中并计算区块体的摘要信息,然后让区块的哈希指针指向当前链上的最后一个区块的变色龙哈希值;最后,主节点为新区块计算变色龙哈希值,并为区块摘要信息进行签名,将新区块和签名广播至其他节点,其他节点通过执行共识协议来验证新区块,通过验证过程中采纳新区块节点签名,若签名数量达到预设阈值,通过聚合采纳新区块节点签名来帅哥昵称完整签名,并将完整签名放入区块头的证明中。
10.根据权利要求8或9所述的基于可验证VDCH函数的可修改联盟链性能优化方法,其特征在于,构建可修改联盟链中的旧区块修改过程,利用哈希函数计算默克尔根中交易哈希值,并利用变色龙哈希函数计算区块哈希值,其中,旧区块被修改的数据限定为区块体中存储的交易数据,且旧区块交易数据修改后整个修改后的区块摘要信息对应修改,并利用证明字段存储修改后区块新摘要信息的完整签名。
CN202310360209.8A 2023-04-06 2023-04-06 基于可验证vdch函数的可修改联盟链性能优化方法 Pending CN116383894A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310360209.8A CN116383894A (zh) 2023-04-06 2023-04-06 基于可验证vdch函数的可修改联盟链性能优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310360209.8A CN116383894A (zh) 2023-04-06 2023-04-06 基于可验证vdch函数的可修改联盟链性能优化方法

Publications (1)

Publication Number Publication Date
CN116383894A true CN116383894A (zh) 2023-07-04

Family

ID=86976376

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310360209.8A Pending CN116383894A (zh) 2023-04-06 2023-04-06 基于可验证vdch函数的可修改联盟链性能优化方法

Country Status (1)

Country Link
CN (1) CN116383894A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116980189A (zh) * 2023-07-19 2023-10-31 苏州大学 一种面向分片联盟链的恶意节点检测方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116980189A (zh) * 2023-07-19 2023-10-31 苏州大学 一种面向分片联盟链的恶意节点检测方法

Similar Documents

Publication Publication Date Title
Bera et al. Designing blockchain-based access control protocol in IoT-enabled smart-grid system
Lu et al. Edge blockchain assisted lightweight privacy-preserving data aggregation for smart grid
Chai et al. CyberChain: Cybertwin empowered blockchain for lightweight and privacy-preserving authentication in Internet of Vehicles
CN115378604B (zh) 一种基于信誉值机制的边缘计算终端设备的身份认证方法
Xue et al. A distributed authentication scheme based on smart contract for roaming service in mobile vehicular networks
Azad et al. M2m-rep: Reputation system for machines in the internet of things
Dwivedi et al. Smart contract and IPFS-based trustworthy secure data storage and device authentication scheme in fog computing environment
Xia et al. Cryptanalysis and improvement of a group authentication scheme with multiple trials and multiple authentications
Rawat et al. A lightweight authentication scheme with privacy preservation for vehicular networks
Olakanmi et al. Trust-aware and incentive-based offloading scheme for secure multi-party computation in Internet of Things
Kumar et al. Ultra-lightweight blockchain-enabled RFID authentication protocol for supply chain in the domain of 5G mobile edge computing
CN116383894A (zh) 基于可验证vdch函数的可修改联盟链性能优化方法
Camacho et al. Strong accumulators from collision-resistant hashing
Zhang et al. A novel privacy protection of permissioned blockchains with conditionally anonymous ring signature
Longo et al. On the security of the blockchain BIX protocol and certificates
Yan et al. Blockchain-based verifiable and dynamic multi-keyword ranked searchable encryption scheme in cloud computing
Xu et al. An efficient identity authentication scheme with provable security and anonymity for mobile edge computing
Kumar et al. A secure and efficient authentication protocol for wireless applications in multi-server environment
Roy et al. An anonymity-preserving mobile user authentication protocol for global roaming services
Zhang et al. Efficient privacy protection authentication protocol for vehicle network in 5G
Yang et al. Blockchain-based conditional privacy-preserving authentication protocol with implicit certificates for vehicular edge computing
Gong et al. A threshold group signature scheme suitable for the Internet of Things
Ali et al. Certificateless signature-based authentication scheme for vehicle-to-infrastructure communications using bilinear pairing
Wu et al. Redactable consortium blockchain based on verifiable distributed chameleon hash functions
Egide et al. HAP-SG: Heterogeneous authentication protocol for smart grid

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination