区块链与秘密分享融合技术综述

2022-08-12 02:29刘百祥
计算机工程 2022年8期
关键词:拜占庭份额共识

张 亮,刘百祥

(1.复旦大学计算机科学技术学院上海市智能信息处理重点实验室,上海 200433;2.海南大学 网络空间安全学院(密码学院),海口 570228;3.上海区块链工程技术研究中心,上海 200433;4.复旦大学义乌研究院,浙江 义乌 322000)

0 概述

区块链以经济金融学、密码学、博弈论和计算机科学为支撑[1],近年来受到科技界和金融界的广泛关注,我国也将区块链列为一项互联网新型基础建设设施。早期的区块链系统仅采用密码学中的签名验签技术、哈希算法和一定的经济激励实现去中心化的数字货币功能。本质上,区块链是一个分布式的账本,即由多人共同对数据进行维护,保证数据在分布式场景下的一致性和正确性。早在1982 年,LAMPOR 等[2]就提出了分布式系统的共识问题,即拜占庭容错(Byzantine Fault Tolerance,BFT)协议。与最早的区块链(比特币[3])不同,从技术角度,拜占庭容错协议没有考虑经济刺激因素;从功能角度,拜占庭容错协议没有考虑交易的往来,因此没有形成一套类似比特币的数字货币系统;从规模角度,公有区块链允许参与者自由进出,而拜占庭容错协议具有准入门槛限制;从系统参与者角度,区块链和拜占庭容错协议均是多方协同合作,在无第三方权威和允许一定量恶意节点的前提下实现诚实参与者间的共识。

区块链的发展使得更多学者发现了区块链与拜占庭容错系统的相同点,使得两者的相关研究井喷式发展。秘密分享(Secret Sharing,SS)技术[4]在拜占庭容错系统的发展史上占据重要地位。秘密分享是指分发者将秘密拆分成多个份额并分别发送给分布式场景下的多个份额接收者(即份额持有者),当且仅当超过一定数量的份额持有者合作才能恢复出分发者的秘密。此后,可验证秘密分享(Verifiable SS,VSS)[5]和公开可验证秘密分享(Publicly VSS,PVSS)[6]技术相继被提出。

秘密分享技术的分布式和容错性特点使其在数据可用性和数据隐私领域得到广泛引用,而可验证性进一步使得数据能够不被篡改,从而保证了数据完整性。因此,可验证秘密分享技术的研究是数据安全领域的核心之一。通过合理的设计和应用,秘密分享技术可以实现无中心的多方协作与多方计算。秘密分享技术涵盖了信息安全的三要素——数据机密性、数据完整性和数据可用性,即C.I.A.。

区块链也是一种安全多方计算(Secure Multi-Party Computation,SMPC)系统。区块链与秘密分享技术的结合,使得许多基于密码学的应用能够快速得以实施。区块链在共识的达成、数据的存储和智能合约中均可以与秘密分享技术相结合,从而在提升区块链稳定性和效率的同时,丰富区块链的功能,使得更多基于密码学的产品落地。这两者的结合能使一些经典的应用场景得到更高效和便利的实现,如电子投票[7]、密钥管理[8]、数据恢复[9]等。

本文介绍秘密分享与区块链的融合研究,从共识层、合约层和存储层角度,结合秘密分享技术进行综述。虽然区块链近年来得到了迅速发展,但其在扩容性、共识速度、应用范围和存储冗余度等性能指标上仍存在不足。本文通过介绍秘密分享技术在区块链领域中的应用和融合,为区块链的优化和发展提供新的视角和思路。

1 背景知识

1.1 (公开)(可验证)秘密分享

在秘密分享协议中,n表示参与者个数,t表示门限值,0

秘密分享(SS)协议要求分发者诚实可信。可验证秘密分享协议在份额分发算法中添加承诺值,使得份额持有者可以根据份额和承诺值判定分发者的诚实性。相对于秘密分享,可验证秘密分享使得份额持有者可以发现秘密分发者是否向其发送了伪造的份额值。

在可验证秘密分享(VSS)协议中,份额是高度隐私信息,因此需要使用安全信道传输份额。为了能够在公开信道上传输份额,并且同时能被任何第三方验证,公开可验证秘密分享(Public VSS,PVSS)协议被提出和实现。在PVSS 协议中,份额使用份额持有者的公钥加密保护得到。通过添加非交互的零知识(Non-Interactive Zero-Knowledge,NIZK)证明,加密后的份额能在公开环境中被任何人验证其正确性。

图1 概括了秘密分享和可验证秘密分享在数据安全领域所具备的功能特性[10]。这些功能特性使得秘密分享技术成为构建安全多方计算协议的重要基础原语,也使得秘密分享与区块链的结合成为可能。

图1 (可验证)秘密分享在数据安全领域的功能特性Fig.1 Function characteristics of(verifiable)secret sharing in the field of data security

1.2 区块链系统

从技术栈角度,区块链系统的构建可以划分为存储层、网络层、共识层、智能合约层、应用层等5 个层级[1]:存储层采用合适的数据结构或数据库对交易、事务和区块进行高效的存储管理;网络层采用点对点网络通信协议实现节点间的数据传输,其中允许出现拜占庭节点的恶意行为;共识层采用分布式共识算法和激励机制,实现拜占庭容错能力并解决分布式一致性问题;智能合约层基于分布式共识下的合约运行环境,提供高级语言编译和运行接口以及相关的程序编译、执行环境;应用层提供用户可编程接口,使得技术人员能够简便自主地实现智能合约代码。

1.3 拜占庭容错

拜占庭容错(BFT)是指分布式系统具有容错性的特点,其起源于分布式系统中一个著名难题——拜占庭将军问题。构建拜占庭容错系统的难点在于,在存在恶意参与者的情况下,形成正确的共识困难度较高,并且需要同时满足安全性和活性:安全性是指所有诚实的参与者在所有决策中总是得到一致的共识结果;活性是指共识最终总是能达成,不会被恶意参与者中断。

1.4 安全多方计算

安全多方计算(SMPC)[11]是指在无可信第三方的情况下,如何安全地将不同参与者手中的数值作为输入,计算一个函数值的问题。区块链常被看作是一种安全多方计算协议或系统,而秘密分享通常作为安全多方计算的一种密码原语。秘密分享协议可以归纳为一组密码原语算法,协议中的秘密持有者通过网络分发份额,最后份额持有者通过网络协商达成份额是否分发成功的共识。区块链是一种遵循特定协议,具备存储、计算和可编程能力并且还在持续发展的系统。区块链系统中对等节点通过构建并广播消息,然后对历史数据在全网达成一致性的共识。

秘密分享协议和区块链系统都具有多方性、容错性、分布式存储,以及借助网络协商达成共识的特性。结合文献[12]对安全多方计算和区块链技术的对比,本文进一步对比了(公开)(可验证)秘密分享((P)(V)SS)协议、安全多方计算和区块链技术,如表1 所示,从中可以看出,秘密分享技术在安全多方计算和区块链中均具有重要作用。

表1 秘密分享、安全多方计算与区块链的对比Table 1 Comparison among(P)(V)SS,SMPC and blockchain

2 秘密分享与区块链共识的融合研究

2.1 共识算法的拜占庭容错性特点

比特币[3]使用工作量证明(Proof of Power,PoW)共识算法,一次性解决了区块链的多个问题:1)PoW算法解决了矿工节点和奖励对象的问题,只有一个成功完成工作量证明的节点才能具备合法打包权和接受系统的奖励;2)矿工的唯一性能够有效地解决“双花”问题,使金融系统无差错运行;3)根据最长链原则,要想对区块链系统进行控制,需要对历史上所有的交易进行重新打包和重新挖矿,而这被认为在经济上是不可行的;4)PoW 系统中的任意节点可以任意加入和退出,并且对系统中的其他节点不产生影响。

文献[13-14]通过将PoW 共识算法提供的无争议性和安全性与拜占庭容错协议相关联,从而证明区块链也是一种具备拜占庭容错性的状态机副本模型系统。在PoW 共识算法中,当矿工节点宣布对最新区块ak←b 的打包权时,其不仅是对最新区块b 的声明,也是对历史区块{a1,a2,…,ak−1}的再次确认。由于多个矿工在某一段时间内可能都成功地找到了PoW 要求的工作量证明,根据最长链原则,唯一的矿工的工作在全网形成共识,从而体现安全性。由于所有的矿工都是独立工作的,根据PoW 算法的要求和复杂度系数调整,诚实参与者完成工作量证明并公之于众,同时得到所有诚实节点的确认和认可,即保证活性。

区块链中的PoW 算法与经典拜占庭容错(BFT)协议有紧密联系。表2 总结了PoW 算法和BFT 协议在实现区块链共识算法时的差异。

表2 PoW 算法与BFT 协议的对比Table 2 Comparison between PoW algorithm and BFT protocol

文献[15]指出,对拜占庭容错共识算法的扩容研究方案包含并行处理事务、使用可信硬件、设置代理委员会、选取密码学原语和优化通信网络拓扑结构。近年来,越来越多的研究使用秘密分享技术优化具备拜占庭容错性的共识算法。随着区块链的持续发展,研究者提出了非对称拜占庭容错共识算法[16]。非对称拜占庭容错共识算法起源于非对称信任,即在分布式系统中,每个参与者根据自己已获得的信息判断其他参与者是否诚实可信。可信随机数是解决拜占庭容错共识算法中公平问题的基础,在此方面,文献[16-17]使用秘密分享技术构建可信随机源,保证了随机数的可获得性。

2.2 秘密分享与拜占庭容错协议

秘密分享协议和拜占庭容错协议均具有容错性。通常,一次秘密分享协议的运行只有单一的分发者,而拜占庭容错协议往往要求所有节点对等。因此,秘密分享协议常作为构建拜占庭容错协议的子步骤或子环节。许多具备拜占庭容错特性的协议,如可验证随机数信标(Beacon)协议[18-19]和分布式密钥生成DKG 协议[20],通过让每个参与者在每个轮次中分别调用一次秘密分享协议,从而达到去中心化的目的。不同的通信信道和敌手模型对拜占庭容错协议的效率和安全性有巨大影响,拜占庭容错协议通常使用VSS 或PVSS 协议来验证消息发送者的诚实性,并提升消息在协议中的恢复能力。

拜占庭容错协议通常直接达成对某一明文的共识,而明文不能有效地保护数据的隐私。鉴于此,文献[21]提出VSSR(VSS Recovery)协议应用到拜占庭容错协议中,从而构建了一个私有的基于键值对的PBFT协议[22]。

不仅秘密分享技术可以改善具有拜占庭容错能力的协议,具备拜占庭容错能力的协议也可以促进秘密分享协议的研究。在秘密的份额被分享之后,随着时间推移,多个份额被恶意节点持有的概率将增大。在恶意节点结合超过门限值的份额前,秘密持有者需要定时更新份额,只要攻击者访问少于设定的阈值,系统就会保持安全,使得攻击者只有较少的时间来破坏秘密分享体制。

主动式秘密分享(Proactive Secret Sharing,PSS)[23]是对秘密分享的一种扩展,被用于加强秘密分享者秘密的安全性。在PSS 协议中,秘密份额的更新过程由份额持有者发起,每个份额持有者各自构造一个随机的多项式,并执行秘密分享的分发过程,最后每个份额持有者更新手中的份额值。用此方法可避免攻击者通过收集足够的旧的份额值来恢复秘密。相对于同步情况下的PSS 协议,APSS(Asynchronous PSS)协议[24]更能抵抗DoS 攻击和动态敌手攻击,异步情况下的PSS 更实用和贴近真实网络情况。虽然网络模型更切实,但是APSS 协议[24]借助互联网实现通信并达到网络节点中的共识,其通信量复杂度达到了指数级别。

2.3 秘密分享对PoS 共识的贡献

PoW 共识需要消耗大量电力,在此背景下,引申出了权益证明(Proof of Stake,PoS)共识算法[25]。PoS 设计思想不是通过做工作量证明,而是通过抵押权益体现对区块链系统的忠诚,最后从共识算法中分得红利。由于区块链的所有规则都是公开透明的,因此如何有效地制定激励机制显得尤为重要。其中,为了体现公平原则,可信赖的随机数至关重要。因为在透明机制下不能按照已知的信息来分配挖出的矿,否则所有参与者都将对系统发起攻击,最大化自己从系统中获取的利润。比特币系统通过PoW 算法和最长链原则解决了该问题。PoS 共识算法则是为解决耗能耗电的PoW 算法而被提出。

区块链中的PoS 共识算法与Beacon 协议是一对孪生问题[25-26]。事实上,PoW 共识算法根据哈希值的随机性来选取最终的矿工,拥有算力高的节点成为矿工的概率更高。文献[25]指出PoS 共识算法的一个重大挑战是设计好的方法在分布式系统中实现领导节点的公平和随机选取。Beacon 的研究是为了防范恶意节点通过概率分析和协议模拟影响协议的公平性和随机性,甚至破坏系统的可用性。为了实现区块链系统中PoS 相关的共识,PVSS 技术得到广泛研究和应用。

由于PVSS 技术的多方协同性和公开可验证性,因此其经常被用于构建Beacon 协议,进而实现PoS 共识算法的核心思想。Ouroboros[25]、SCRAPE[27]、RandShare[28]、Hydrand[26]等系统均依托点对点网络模型,使用PVSS 作为底层密码原语技术实现Beacon 协议,这些协议均可进一步用于实现权益证明共识算法。图2 描述了基于PVSS 协议生成Beacon 协议的一般流程,其中,每个轮次后n个参与者都会得到一个共同的公开可验证随机数。

图2 基于PVSS 实现Beacon 协议的一般流程Fig.2 General procedure of Beacon protocol implementation based on PVSS

通过使用不同的(P)VSS 协议和假设不同的网络通信模型,Ouroboros[25]、SCRAPE[27]、RandShare[28]、Hydrand[26]和Dfinity[9]实现的Beacon 协议也具有不同的性质和复杂度。对上述方法实现的Beacon 协议进行对比,如表3 所示。其中:n是系统中的节点个数;c是对系统分组后的组成员节点个数;Hydrand[26]通过在每一个轮次中选取一个领导节点,模仿同步条件下的拜占庭容错协议过程实现Beacon 协议。通过对比可知,Hydrand[26]通信、计算和验证复杂度较高,并且具备良好的活性/随机性,但是,该系统假设的是同步的网络通信模型。

表3 不同Beacon 协议的对比Table 3 Comparison among different Beacon protocols

3 秘密分享与智能合约的融合研究

智能合约是一段代码,与传统的程序代码不同,为了体现区块链的不可篡改、可追溯以及公开透明性,智能合约的代码和数据通常是公开的。智能合约代码运行和数据沉淀(即写入区块链)都是在区块链共识之上的。从比特币的脚本到图灵完备执行环境,智能合约使得任意可以计算的问题都能够得以解决。总体而言,在无须可信第三方存在的情况下,区块链的智能合约提供了两大功能,即公开透明的存储和计算。本节将从区块链合约层和秘密分享体制中找到结合点:一方面,分析区块链智能合约如何为秘密分享体制的实现带来便捷;另一方面,发掘基于区块链智能合约和秘密分享技术的应用场景。

3.1 基于智能合约的秘密分享体制

区块链的智能合约由一组代码组成,这段代码具有公开透明性。采用零知识证明方法可以保护合约参与者的身份信息和敏感隐私数据。

原始的秘密分享技术需要借助隐蔽安全的信道将秘密持有者生成的份额传递给其他人。PVSS 等技术通过对份额进行加密处理,使其可以在公开的信道上传递和存储,同时保证份额在传递过程中的机密性。PVSS 使用了非交互的零知识证明技术用于证明被加密份额的正确性。在零知识证明中,验证者可以将加密后的份额上传到区块链,从而使得区块链能自动判断加密后份额的正确性。智能合约提供了公开透明的存储和计算能力,将其与PVSS 相结合,可以有效提高系统性能。

区块链智能合约除了能实现PVSS 协议之外,还可以为支持公开验证的秘密分享协议提供服务。文献[29]使用智能合约技术实现了一种无中心的分层秘密分享(Hierarchical Secret Sharing,HSS)体制。通常份额持有者具有层级的关系,因此通过多次运行秘密分享体制,可以使秘密能够实现多层级的管理。在HSS 体制中:一方面,智能合约承担着可信验证者的角色;另一方面,通过智能合约,协议能够使用抵押来要求参与者正确地遵守协议。文献[29]基于以太坊测试网络验证了其方案的可行性,并给出了以太坊Gas 消耗和算法执行时间消耗。相较于非基于区块链智能合约的HSS 协议,该文协议仅需1 轮通信,同时具备可验证性和公平性且无须可信第三方。

图3 显示了基于智能合约构造秘密分享协议的流程。其中:分发者在分发过程中通过智能合约实现份额的分发和验证;份额持有者在秘密恢复过程中通过智能合约实现秘密的重建;智能合约可以提供公开验证计算、可信存储、激励机制等服务。

图3 基于智能合约实现秘密分享协议的过程Fig.3 Procedure of secret sharing protocol implementation based on smart contract

3.2 智能合约和秘密分享结合的应用

目前,区块链技术已经从加密货币发展成为一项可编程的分布式基础设施,区块链上的程序也被称为智能合约。秘密分享协议可以结合一些应用场景,在智能合约之中实现并应用。

传统的电子投票系统需要依赖中心化的服务器来保证系统的完整性和安全性,然而中心化的服务器本身容易带来很多其他的问题,如单节点故障、信息泄露、贿选问题等。文献[30-31]均结合应用了秘密分享、同态加密和区块链智能合约实现电子投票系统。HSIAO 通过初始化5 台计票服务器,每一个投票者将投票信息分成5 份,其中任意3 份可以恢复出对应的原始值,从而避免了单节点故障问题。区块链智能合约提供了公开透明的存储和计算,使得参与者能够对计票过程进行审计,提升了投票过程的公平性。

区块链智能合约在数据保护方面存在不足,为提升智能合约的安全性和隐私性,文献[32]开发了基于安全多方计算的智能合约平台。该平台包括3 个层级:合约层,计算层和群组通信层。在合约层,提供了智能合约的框架描述,包含实现流程、语言结构和语法;在计算层,通用的线性秘密分享技术被用来保护参与者的输入和保证计算的正确性;在群组通信层,非阻塞的广播协议基于非阻塞的消息传递接口和拜占庭容错协议实现,具备异步的具有节点故障容错的网络通信服务。在该文研究中,秘密分享技术被用于构建安全多方计算协议,实现了群组合作中的信息隐私保护。

在医疗领域,结合使用区块链智能合约和秘密分享协议的研究也广泛流行。文献[33]提出一种使用区块链存储和智能合约验证计算的医疗数据共享解决方案。由于医疗数据具有极高的隐私性要求,而区块链提供的是公开透明的存储,为克服数据被窃取和监听的困难,该方案在系统中增加了用户和群组进行秘密分享的软件层。

一项具体的分布式应用的实施,可以证明基于区块链的智能合约技术具有可行性。然而,智能合约还可以进一步抽象成为一种无中心、可交互、可执行程序的对象。将智能合约和秘密分享相结合,对网络安全或密码学领域将有进一步的贡献。

文献[34]基于区块链的智能合约提出CHURP协议,并实现了主动式的秘密分享技术,其使用非对称二元多项式得到份额更新过程中的门限值,并使用高效的多项式承诺协议防止初始化失败,同时表明链上通信、计算的高成本性,引入基于点对点网络的链下通信,从而降低协议成本,提高可用性。该文附录指出,所提协议可用于智能合约认证,即通过构建共享密钥,使得基于智能合约即可生成门限签名,从而提供授权服务。

文献[35]使用基于区块链智能合约的秘密分享技术实现具备“时间意识”的秘密管理方案。由于门限秘密分享和区块链都具有去中心化的特性,因此该方案中“时间”不会被某一个或几个操控而导致秘密提前泄露。区块链智能合约一方面提供了高效的计算能力和公共的数据存放平台,另一方面基于以太坊区块链的代币奖励诚实行为和惩罚恶意行为,从而提高了系统的安全性。

文献[36]使用区块链实现公共通告栏和公开验证者,基于DH 交换加密和VSS 协议实现分布式密钥生成ETHDKG 协议。在ETHDKG 中,份额密文信息、争议信息、密钥恢复信息均通过智能合约传递,并且这些信息的正确性要经过智能合约的验证。值得注意的是,ETHDKG 采用的DH 交换加密和VSS 协议并没有构成非交互的PVSS 协议,因为该方案中加密后的份额并不能由任何第三方来检验,而需要等份额持有者解密后来判断。如果份额持有者解密后发现份额有误,可构造非交互的零知识证明来“抱怨”秘密分发者,而不泄露自己的份额值。

4 秘密分享与区块链存储的融合研究

4.1 公共通告栏

由于共识效率低下,对于分布式节点,获得具备一致性、可用性的数据是困难的,因此研究者提出公共通告栏[37]的概念。公共通告栏具有活性和持久性的特点:活性是指任意恶意的用户无法阻止诚实的用户获取通告栏上的信息;持久性是指公共通告栏上的信息和数据不能被恶意篡改。许多基于秘密分享的多方协议[27,38]和分布式应用[39]基于公共通告栏进行实现。通过假设公共通告栏,分布式协议可以规避共识协议的讨论,并获得较低的通信复杂度。

文献[40]指出,在现实世界中,由于人为因素,可能出现计算不公开透明的问题,从而导致不公平现象。该文基于可信硬件和公共通告栏的技术实现安全的多方计算解决方案,其在可信硬件内执行秘密分享协议,实现了见证者解密。

在区块链技术落地之前,公共通告栏通常作为一种假设。随着近来区块链的持续发展,尤其是支持通用数据存储的区块链系统,如比特币、以太坊、IPFS(Interplanetary File System)等,使得公共通告栏技术得以实现。以比特币为例,该区块链系统即是基于点对点通信、多数节点诚实性、数字签名技术、随机预言机等假设实现公共通告栏。

4.2 区块链系统存储优化

区块链又称为分布式记账技术。分布式存储系统的显著特征是将所有的数据以副本的形式分布式地存储在不同的服务器中。因此,分布式存储是分布式记账的应有之意,也是共识的必要条件,更是区块链数据公开透明的基石。区块链中保存所有数据的节点称为全节点。比特币的发明者考虑到普通的个人电脑、手持设备计算能力和存储能力有限,为这些轻量级设备设计了可以使用的客户端,又称为轻节点,提出了简易支付验证(Simple Payment Verification,SPV)技术。由于区块链系统采用Merkle 树的数据结构对交易进行管理,因此降低了交易正确性的验证成本并提升了查询速度,使得轻节点虽不能参与共识(即不能进行挖矿),但能够参与交易的发起和查询,以及交易准确性的验证。

随着越来越多区块链事务和交易的生成,区块链系统数据存储量与日俱增。为减少区块链数据的存储量,除SPV 技术外,基于编码技术[41-42]、分布式文件存储系统[43]和多项式承诺技术[44]等许多相关研究被提出。本节介绍采用秘密分享技术的门限特性来降低存储数据冗余度的研究。

文献[45]提出了分布式存储区块链(Distributed Storage Blockchain,DSB)技术。在DSB 中,每个节点仅存储所有数据的一部分,显著降低了区块链单节点的数据存储量。在该方案中,区块链的节点被划分为不同的区域,每一个区域有一组对应的公私钥对(PK,SK)。每个区域的区块数据均用PK 加密保护,SK在区域内用秘密分享协议,由区域内的每个节点保管其中的一个份额。加密后的区块数据使用信息分发算法(Information Dispersal Algorithm,IDA)同样分布式地存储在区域内的节点中。在之后的工作中,文献[46]进一步提高了数据的完整性,同时分析了存储消耗和数据丢失率的关系,以及数据恢复消耗和安全性的关系。为解决DSB 技术中当节点发起DoS 攻击时会引起巨大网络通信开销的问题,文献[47]提出了局部秘密分享(Local Secret Sharing,LSS)的概念。LSS 是一种层次化的秘密分享技术,图4 体现了其中的层级关系。LSS 包含一个全局秘密和多个局部子秘密,并且由部分子秘密能够恢复出全局秘密。LSS与HSS类似,但HSS 强调的是全局秘密的分层管理,而LSS 中局部秘密需要用于恢复子秘密。

图4 LSS 协议的层级关系Fig.4 Hierachical relationship in LSS protocol

在文献[45]提出的DSB 协议中,全局秘密和局部子秘密采用不同的秘密分享多项式,存储开销较大,而文献[47]提出的LSS 协议仅需维护一套多项式,能够使得密钥存储开销减半,同时也优化了密钥恢复的网络通信开销。LSS 是基于局部可修复码(Locally Recoverable Code,LRC)技术实现的。在编码理论中,通常通过添加修复码位来校正错误位。在全局秘密管理中,文献[47]使用Shamir 秘密分享协议,将份额分发给所有的参与者节点。在局部子秘密的管理中,LSS 协议对每一个区域利用LRC 技术的编码多项式应对一个节点故障的情况。

虽然文献[46-47]均使用秘密分享技术降低了区块链存储冗余度,但是区块链中的区块可能由数千笔交易构成,从而导致区块也非常大,往往远大于一个大整数。当一个区块被切分成多个切片再进行秘密分享时,会导致需要存储大量的中间信息。鉴于此,文献[37]提出了使用多值秘密分享(Multi-Secret Sharing,MSS)的区块链存储优化方案。该方案先将原始的区块链切片,然后采用递归调用Shamir 秘密分享协议的方式,重复利用秘密分享产生的中间结果,从而减少了所需的中间辅助变量,最终优化了存储效率。

表4 对比了传统区块链[3]以及文献[46-47]方案的单节点存储消耗、恢复区块时通信量和系统容错能力。假设区块占用空间大小不超过η,区块头占用空间大小不超过q(η和q均用整数表示),ρ是访问其他子区域的额外开销,n是总节点数,t是分区的节点数或门限值。虽然通过文献[46-47]方案能够对区块链系统存储带来优化,但往往只适用于节点相对固定的区块链系统,即联盟链。

表4 存储开销、恢复区块时通信量和容错性的对比Table 4 Comparison of storage cost,communication traffic in block recovery and fault tolerance

4.3 基于区块链存储和秘密分享的服务

将区块链的分布式容错存储和秘密分享技术相结合,能够提供许多信息安全所需的服务。这些服务对密码体制的功能、云计算、物联网等应用的效率和可用性均具有重要作用。

除了在区块链本身的存储解决方案上进行优化,区块链本身也是一个分布式的存储数据库。一些其他区块链项目,如StoreJ[48],使用区块链来存放加密后的隐私数据信息,用于防止个人信息丢失,从而保护个人隐私。由于区块链的透明性,StoreJ 中的节点可能通过收集和整合数据对加密的隐私数据发起密文攻击,从而降低隐私数据的安全性。文献[49]提出一种使用秘密分享和区块链的点对点网络在线存储的方案,而不使用区块链直接存放加密数据。该方案使用秘密分享技术,通过将秘密拆分成份额,利用点对点网络分布式地储存在网络内存中,而利用区块链保存那些拥有份额的节点列表。由于点对点网络本身的异构性和变动性,区块链中的列表数据会通过共识算法使得每个人的隐私数据保留在网络中。在这样的点对点网络中,个人通过其ID 和密码授权获得个人私有数据的权限,通过区块链中的节点列表得知应该向点对点网络中的哪些节点获取数据。

IPFS 是另一个存储类的区块链项目,主要提供解决大文件大数据的存储方案。IPFS 同样仅提供透明的存储。为了保护数据的机密性和用户的隐私,文献[10]使用秘密分享技术、IPFS 存储和以太坊实现了一种透明传输、可确权、可访问控制的文件共享方案。在该方案中,文件所有者首先将文件上传至IPFS 中,然后得到IPFS 返回的文件哈希值。文件所有者用智能合约记录IPFS 中对其文件存储的所有节点,并使用秘密分享技术将哈希值分散到上述节点中,最后将加密后的秘密份额上传至区块链中。

在云数据管理方面,文献[50]借助区块链去中心化存储和计算的特性,将云数据的访问控制能力部署在智能合约中,从而构建了无中心的云数据管理模式。同时,为了从云服务器上将加密云数据的密钥和云数据分离开来,该文使用了秘密分享技术分布式地管理密钥。但是,该方案需要加入一种新的区块链节点——“主节点”来进行存储秘密分享的密钥。在物联网领域,文献[51]为了解决智慧城市中个人管理海量隐私数据的问题,提出通过区块链存储和管理云服务商的访问权限,并使用秘密分享技术分布式地管理用户个人隐私信息。

5 未来展望

中心化系统由于单点共识,因而具备高吞吐率和高响应率,而去中心化系统能够解决对等协作方之间的不信任问题并提高容错能力。在计算机硬件条件和网络环境均不断优化的背景下,中心化系统的性能和效率快速增长,而去中心化系统的吞吐率由于低效的共识却提升甚微。秘密分享协议通常是为了构建具有容错性或者去中心化的系统,秘密分享和区块链两者独立或关联的研究还有诸多可以推进的探索方向。一方面,随着秘密分享技术及其对应安全多方计算应用的介入,区块链有了新的探索方向,包括基于拜占庭容错协议的区块链、基于权益证明的区块链、区块链存储优化、基于区块链的安全多方计算等;另一方面,由于对区块链的理论支撑或应用场景的需要,秘密分享协议相关的技术有着更为细分的发展方向,包括VSS、PVSS、PSS、APSS、VSSR、LSS、MSS 等。表5 对比了秘密分享相关协议的特点和用途。

表5 秘密分享相关协议对比Table 5 Comparison of related secret sharing protocols

制约分布式或去中心化系统共识的重要原因在于协议的高复杂度,尤其在分布式节点数量快速增长的情况下。未来可从以下方面入手进行更深入的研究:

1)在分布式场景下,为了达成共识,需要考量每个节点或所有节点需要执行的计算量,即计算复杂度。由于在分布式场景中,通常还考虑了可能存在未知的恶意节点或损坏节点,因此协议的设计还包括了必要的验证计算,验证所花费的计算量也属于计算复杂度。基于拜占庭容错或PoS 的协议和共识算法通常会在每一轮共识中选取一个“领导”(leader)推进协议,leader 对各参与者传输值的计算复杂度及其网络传输时延最终决定了平均的共识进度。此外,当传输值还需要进行隐私保护时,通常需要结合SS 协议,尤其是PVSS 协议。此时,由于PVSS 协议采用了NIZK 证明,因此参与者节点还需要对证明进行验证,从而可能增加计算复杂度。

2)在分布式场景中为了达成共识,需要考量整个网络的通信量,即通信复杂度。网络通信内容既可以是正常的协议所需的数据,也可以是恶意节点为破坏信息系统而伪造的数据。在区块链系统中,数据和块通常是经过签名认证过的,从而避免了DDoS 攻击。在基于拜占庭容错或PoS 共识的系统中,通常每个参与者节点都需要发出各自的信息以对最后的共识做出贡献,从而使得网络通信复杂度至少达到O(n2),并且不诚实的节点可能故意偏离协议规定,从而引起较高的网络通信复杂度。上文讨论的公共通告栏能够在一定程度上降低协议的通信复杂度,但是高效构建公共通告栏也是一项值得继续探究的问题。

3)为了达成某种协议的共识,节点间需要进行足够的通信协商轮次。由于网络有延时性,因此低轮次的网络通信对于达成共识更具备现实价值。相对于VSS 协议,PVSS 协议数据可以采取公共通信信道并可以接受任何人的验证,因此,PVSS 往往只需要一次性分发份额,而不需要参与解决份额相关的争议。在基于(P)VSS 实现的DKG 协议和Beacon 协议中,通信轮次都是重要指标,而不同的DKG 协议和Beacon 协议的设计可以产生不同的区块链模型和共识算法。通过对比不同的拜占庭容错共识协议,可以看出通信轮次和网络通信量之间通常存在权衡和折中。

4)网络模型包括同步模型、半同步模型和异步模型,不同的通信模型假设会决定协议可能存在不同的漏洞和受到不同类型的攻击,因此,协议也需要有相对应的处理方式。同步模型是一种较强的假设,优点是协议设计者可以借助一些其他工具(如公共通告栏),缺点是可能受到一些由于攻击者利用网络时延差而发起的网络攻击。异步或者半同步通信模型能够更好地模拟真实的互联网环境,但通常对应的协议需要更高的网络通信复杂度或更多的通信轮次,甚至牺牲一部分活性或安全性。

5)可重配置性是指分布式系统中节点是否可以自由进出。比特币系统的工作量证明不需要依赖其他节点的信息和数据,可以由节点根据历史区块链数据独立完成,因此节点自由度高,可以自由进出。基于拜占庭容错或PoS 共识的协议通常假设固定节点数量和一定比例之内的恶意节点数量,节点间需要通过协作确定最终的共识,恶意节点加入或诚实节点离开可能使得诚实和恶意节点比例失衡,最终使得系统为恶意节点所控制,并且节点的进出本身就需要达成共识,即何种节点可以进出,何时可以进出,因此,基于拜占庭容错或PoS 共识的协议往往缺乏可重配置性。基于主动式秘密分享的协议致力于解决份额变化或参与节点变化,具有解决可重配置性问题的潜力。此外,Dfinity 团队提出的公开可验证可重新分发的秘密分享协议(Public Verifiable Resharing Scheme,PVRS)[53]也使解决可重配置性问题获得了突破性进展。因此,PVRS 的研究也有待进一步深入,同时PSS 和PVRS 的联系及区别也有待发掘。

6)容错能力是指分布式系统中可以容忍的损坏和恶意节点比例以及发掘恶意行为的能力。容错比例越高、发掘恶意行为能力越强说明容错能力越强。由于通常会假设恶意节点具有共谋性,因此为了避免恶意节点占据压倒性优势,需要假定诚实节点数多于恶意节点数,可推断出恶意节点比例通常小于1/2。SS 协议中分发者可以是恶意的,因此VSS 被提出用于解决分发者的信任问题,提升容错能力。PVSS 协议更是允许任何人均可以验证分发者的诚实性,使得分布式系统具备更好的公开性和透明性。

7)区块链存储优化,即基于区块链信息存储冗余度高的客观现实,在保证安全的情况下,降低区块链全网的存储能力。本文第4 节介绍了研究人员在相关领域做出的贡献,然而这些研究成果还没有被应用到主流的区块链系统中。存储优化(单节点的存储量减少)可能影响节点校验区块的能力和用户访问区块链数据的便捷性。因此,如何设计兼顾存储优化和功能完整性的区块链,也是具有研究价值的课题。

8)区块链共识算法[54]决定了区块链应用的公信力、吞吐率、扩容能力等,而优良的共识算法应着重考虑协议复杂度、可重配置性、容错能力、存储优化等指标。为了获得更优的区块链共识算法,应继续深入研究秘密分享相关协议。此外,通过使用秘密分享实现分片技术[55],对节点进行分组管理也可以提升共识效率。

6 结束语

区块链是一种基于经济学和密码学的去中心化系统。区块链的透明计算和存储特性降低了信任成本,去中心化特点提升了容错能力。而秘密分享是构建分布式系统和去中心化协议的基础技术,融合应用秘密分享技术可使区块链得到进一步发展。本文从信息安全三要素角度,指出区块链系统和秘密分享技术存在高度契合,分别阐述区块链、秘密分享及安全多方计算等基础理论知识,并进一步介绍秘密分享技术与区块链共识层、合约层和存储层相结合的研究成果。在未来,许多基于秘密分享的多方协作协议均能通过区块链以较低成本实现。同样,秘密分享也能为区块链技术发展带来重要的探索方向——更多基于秘密分享的区块链共识、智能合约及存储的研究将被提出和实现。

猜你喜欢
拜占庭份额共识
共识 共进 共情 共学:让“沟通之花”绽放
拜占庭元素的艺术特征及在现代服装设计中的应用
澳大利亚可再生能源首次实现供给全国负荷的50.4%
论思想共识凝聚的文化向度
拜占庭帝国的绘画艺术及其多样性特征初探
商量出共识
《西方史学通史》第三卷“拜占庭史学”部分纠缪
拜占庭之光
什么是IMF份额
“慢养孩子”应成社会普遍共识