近几年门限密码学在区块链系统里开始逐渐被应用,分为门限加密和门限签名,一般见于随机预言机、防审查、减少通信复杂度、共识网络中防拜占庭以及作为分布式伪随机数生成器的重要原语,其优越的资产协同防盗特性也慢慢被新兴数字资产托管机制所重视,今天我们主要讨论公钥密码学里的门限签名机制。一种理想的门限签名系统是可以在异步的网络环境里做到容错容灾不可伪造,并且拥有极度可靠安全的消息传输通道,签名份额的生成和验证是完全非交互式的,在初始密钥阶段具备可以防止拜占庭行为的异步分布式密钥生成机制。
与基础签名机制类似,门限签名机制也分为两部分:
门限密钥生成:基于安全参数构造一种分布式密钥生成协议DKG,协议运行输出一个共同的公钥pk和分属不同参与方各自所有的私钥份额ski,聚集起满足阈值数量的私钥份额可以构建出真正的私钥sk。
门限签名:基于分布式通信网络,各参与方通过自己的私钥份额ski完成对消息m的分布式协作签署并输出最终的可验证签名Sig(sk,m),这个签名跟单独用sk私钥签出的一模一样,可以用所基于的基础签名机制里的验证函数进行本地验证,无需走通信交互验证
比原链钟立飞:MOV理论TPS值16000 将发行跨链稳定币:3月6日,比原链技术运营总监钟立飞做客币用宝“币圈APP小课堂”第7期时透露,比原链的二层扩展架构MOV在价值跨链、去中心化交易协议、稳定金融体系、去中心化借贷协议等DeFi领域有很大的创新和潜力。MOV当前的理论TPS值16000,跟ETH比性能上有优势,同时支持数字资产跨链。钟立飞强调MOV不会单独发币,后续会发行一种类似DAI的超额质押稳定币。在MOV生态内,普通投资者可以通过交易套利,可以抵押数字资产生息,当系统遇到系统性风险时,可以作为购买系统发行的债券来作为债权人,当系统恢复后,获得回报。[2020/3/6]
但是大多数情况下会通过使用一个可信的中心节点来实现私钥份额的生成和分发。沙米尔秘密分享是最简单的依赖中心dealer节点的门限密钥生成方法,基本原理是拉格朗日插值,在(t,n)门限构造中,dealer会选择一个(t-1)次方的随机多项式f,令f(0)=s,s即为要分享的秘密值,然后向每个节点分发该多项式曲线上的点si=f(i)作为各自的秘密份额值,简单来讲,三个点确定一个二次方程曲线。为了解决中心作恶问题,人们又不断探索了基于承诺的可验证秘密分享,以及应用于异步网络的VSS。有许多优秀成熟的commitmentscheme可以借鉴应用,简单来讲承诺算法=Com(pk,M,r)中pk是与承诺机制有关的公钥,M是要承诺的原始值,r是一个随机骰子,算法输出的C便是commitment,D则是需要秘密保管的decommitment值,在正式公开M之前先公开M的承诺C,即先对自己要公布的消息做个上帝担保,约束自己无法更换M,而对于M的受众或者接收者,它们可以通过之前公布的承诺和验证算法进行验证唯一性。这里我们主要关注非交互式的VSS实现。
声音 | 比原链运营总监杜超:熊市需多做交互 助推整个行业进步:比原链运营总监杜超在做主题为“矿业生财之道”讨论中表示,现在也希望能够让矿业和AI打通,当算力的收益下降时,将算力投入AI池,从而使得算力不会被浪费。现在熊市需要大家多做交互,将传统行业引入到区块链行业。而现在就有很多项目做得很好,是可以真正助推这个产业的。有时候用户的希望太高,短期内无法完成,实现需要时间。我们要做的就要看好并且等待。现在区块链行业内还有很多做技术的,时间应该可以给到一个很好的答案。[2019/3/11]
此外,在过往的研究里,签名的生成和验证大多是交互式的,并且依赖一个同步通信网络和广播通道,节点们在某种设定下接收到特定消息后便同时启动签名协议,并严格遵循超时机制。而在互联网环境和区块链网络里,对网络假设的限定是有限的,所以门限系统要成功运作除了需要构造真正的DKG协议和非交互式签名机制外,还需要具备商用级的网络系统以及被验证过的成熟代码实现。这里我们尝试提出并构建一种弱同步网络假设下的门限签名分布式系统,主要对网络模型、DKG构建、签名机制进行一些创新结合和应用,探索在实际网络环境里最小可实用的门限签名系统原型。
比原链段新星:本次EOS漏洞事件不难解决:5月29日,针对EOS漏洞事件,比原链CEO段新星在微博中表示,该漏洞是一个利用数组越界漏洞可导致内存溢出,获得超级权限覆盖掉WASM,填写新的可执行代码进去,进行恶意操作。这种漏洞很常见。BM第一次是加了Assert判定检查(很遗憾失效了,可能哪儿没修干净)其实也可以包一个安全函数来操作,我觉得这个漏洞倒不难改。[2018/5/29]
门限系统是一种型fault-tolerance系统,t代表网络最大容错,k代表最小门限值,n是节点数,一般设定k>=t+1,但这种对网络分区是无能为力的,所以在一个异步拜占庭网络里我们依然选用经典设定k=n-t&t<n/3去达成系统里的一个大多数共识。
门限网络或者通信模型是实现可实用门限系统需要认真考量的一个关键点。像HoneyBadgerBFT所构建的接近异步通信网络在现实案例中是少见的,一般会增加消息复杂度和通信轮次,异步网络模型主要依赖所接收到的消息类型和数量进行判断,因为时间因子并不能区分谁是慢节点谁是恶意节点。但在这里我们更倾向采用高效的弱同步网络假设,即消息延迟和时钟偏移有上限但未知,延迟的渐进是合理的,保障liveness;能够对crash、networkfailure、byzantine等不同情况尽量做到分开处理,比如设置规定时间内可容忍的crash阈值,对于诚实节点发生crash后能够从一个规定的状态恢复等;并且假设网络故障总能被修复、遭受的DoS攻击总会停止;最后在构建通信通路上可以借助PKI和外部CA构建TLS链接,以及借助经典的RBC协议。
比原链与追梦者基金旗下10个项目签定战略合作协议:比原链与追梦者基金旗下10个项目签定战略合作协议,包括闯奇科技、聚会玩、时空梭、创客区块链(MakerChain)、9000商学院、笔阁科技、钱到到、乡墅、Toumaps、画你都将在比原链上开发智能合约。[2017/12/21]
DKG是门限签名最为核心的环节也是第一阶段,负责完成门限密钥的生成和分发。VSS是DKG的重要组成部分。上面提到VSS的基本原理是承诺机制,一般基于Pedersencommitment,构造形如C=mG+nH的承诺,其中m来自密钥构造多项式f(x)系数,而n来自dealer另外构造的一个随机多项式h(x)的系数,承诺集合{Ci,0<i<t}是一种公开可获取的系数“证据”,用于证明dealer只承认一个合法的密钥多项式。各个参与方在获得dealer分发给自己的密钥份额f(i)和秘密值份额h(i)后,计算f(i)G+h(i)H,如果与对应的承诺值相等,则认为合法,如果不一致,则认为dealer出现作恶行为,开始向网络提交自己的抗议complaint,其他人可以进行验证,如果发现事实如此,则立即停止协议,如果其他人验证后发现该complaint不合法,则发起complaint的节点会被标记不可信。VSS过程简单来讲包括中心初始化密钥分发、构建承诺和重建密钥三部分内容,整个网络交互存在两轮全网广播达成一致,最终将密钥份额和承诺传递给每个参与节点,这里我们会定义三种消息类型用于标记多轮消息序列并携带足够的信息用于计算门限密钥。
比原链项目周报 开发和业务进展:开发进展:1. 调整reactor 结构,代码结构功能分离, 增加可配置挖矿问题;2.为提升core性能而改造utxo成为递增存储的模式, 并测试;3.完成了包含program的ivy模板合约的锁定解锁交易,并进行了相关的单元测试;4.整合accountDB和assetDB到walletDB(代码放在walletDB分支), 跟踪部分github上bytom issue并解决;5. 设计钱包管理方案及wallet, account, asset代码整理;6. [dev] PoW算法性能优化,理论证明的计算机验证已经完成, 写论文中;7.客户端产品UI设计和交互研究,完成基础交互原型图;8. block_keeper 中有个for 协成没有catch 住signal 信号 (issues#94);9. windows 平台编译不通过BUG (issues#153)。业务进展:1. 比原链CTO朗豫拜访西南交通大学密码学研究工作组,对关于AI PoW算法的证明和研发工作进行沟通和交流,预期将在月底前完成论文撰写并发表;2. 比原链CTO朗豫周六参加“Chainge“ 技术沙龙第三期-揭秘区块链发展, 演讲主题《从0到1开发公有链》,分享比原链开发的经验。[2017/12/12]
真正的DKG是需要去掉VSS里的那个中心,在分布式协作下生成秘密,避免单点泄漏风险,其原理也很简单,相当于n个节点同时各自选择秘密值并运行自己的VSS,每个节点收集来自其他节点的秘密份额完成组装,组装后的结果便是真正私钥的份额,而各个合法节点各自分发的秘密值聚合起来便是最终的构造私钥,最后在进行承诺验证。这似乎很像一个Multi-valuedValidatedByzantineAgreement(MVBA)protocol。
不过我们尽量避免这种复杂的实现,一般通过选举出Leader节点,统一协调处理这些VSS的完成情况和最终共识,定义序列,当大多数节点完成各自的VSS阶段并被其他所有诚实节点所确认后,Leader将这些已完成的VSS信息进行收集并重组提案,再经过两轮全网广播后,每个节点便会确定下各自最终的秘密份额,因此保障liveness对于我们的系统是十分关键的。如果DKG协议里任何一方出现恶意行为,协议都会立即停止,即DKG需要确保所有参与方的诚实行为。至此,一把公共的门限公钥和分属不同参与方的门限私钥份额便构造完毕。
签名阶段简单来讲是基于上面得到的密钥份额各自完成签署自己的签名份额,最后再完成统一组装,得到最终门限签名。Thresh-Sig阶段的具体实现与所基于的数字签名算法有很大关系,例如Schnorr算法在计算签名s值时所依赖的秘密值k在常数项,s=k-z(H(K||M)),所以可以简单的将秘密值份额相组。而ECDSA中秘密值k是非线性的,即s=(H(M)+zr)/k,存在两个秘密值的乘运算,所以各个节点不能仅通过拥有k秘密值份额来完成最终签名值的组装,需要对公式进行变形,重新定义组合秘密值kz,并分布式完成kz的秘密份额计算以及分发,甚至需要借助安全多方计算、同态加密机制以及零知识证明,因此多方的ECDSA门限签名在实现和效率上会比较复杂,现阶段以可实用的2-2方案研究居多。
不论是采用ECDSA还是Schnorr算法,最核心的问题依然是基于DKG和多方计算的原理去生成和分发签名算法中需要的秘密值,每个参与方基于各自的密钥份额和秘密值份额完成自己的签名过程,最后通过整体的交互组装获得最终的合法签名。同样的,如果无法达到足够门限阈值数量的合法签名方,签名协议也会立即停止。根据不同的应用场景需求,我们需要认真研究用于实现门限签名机制的底层签名算法,比如ECDSA、EdDSA、Schnorr、BLS等,不同的签名算法对应的门限机制实现复杂度和效率是不同的。
此外,一个完整的门限系统可能会有成员变更的需求,原有的密钥份额随之需要新一轮变更,最直观的做法是引入周期的概念,通过同步网络和共识协议发起新一轮密钥生成,产生新的主公钥和私钥份额,用超时机制防止阻塞。成员变更和DKG是一种比较精细的系统,任何一个成员fail或者fault都会引发状况外。在实现上我们用状态机复制原理构建门限节点,基于消息输入更换自身状态。
门限密码学随着结合应用场景的需求研究增多,不断完善自身成熟度,尤其是随着高度可靠的代码实现增多,随着复杂网络环境里的系统架构成熟,有希望在价值网络里扮演“门神”的重大作用,同时会促进对零知识证明、同态加密技术的进一步场景化应用,是当下区块链新技术领域为数不多值得深入研究和实战的研究方向。现代密码学与价值网络相辅相成,前者给予后者“上帝保障”,后者给予前者“伟大战场”。
比原链研究院刘秋杉
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。