公钥密码学(PKC)里的门限密钥生成方法
与基本签名机制类似,门限签名机制( )也分为两部分:
阈值密钥生成(-Key-Gen):根据安全参数构建分布式密钥生成协议DKG。 该协议运行并输出不同参与者拥有的公共公钥 pk 和私钥共享 ski,它们被聚集在一起。可以从阈值数量的私钥共享构建真正的私钥 sk。
门限签名(-Sig):基于分布式通信网络,每个参与者通过自己的私钥共享ski完成消息m的分布式协作签名,并输出最终可验证的签名Sig(sk,m)。 这个签名和个人用sk私钥签出的一模一样。 您可以使用基础签名机制中的验证功能进行本地验证,无需进行通信交互验证。
但大多数情况下,私钥份额的生成和分发将通过使用可信的中心节点()来实现。 秘密共享(秘密共享)是最简单的依赖中心节点的门限密钥生成方法。 基本原理是拉格朗日插值。 在(t,n)阈值构造中,将选择(t-1)功率。 随机多项式f,令f(0)=s,s为要共享的秘密值,然后将多项式曲线上的点si=f(i)分布到每个节点作为各自的秘密共享值。 简单来说,三点确定一条二次方程曲线( )。 为了解决中心作恶问题,人们不断探索基于承诺()的可验证秘密共享(VSS、PVSS),并将VSS应用于异步网络(BFT也尝试结合区块链系统中的PoW准入机制) AVSS)。 有很多优秀的、成熟的可以借鉴。 简单来说,()算法[C(M),D(M)]=Com(pk,M,r)其中pk是与承诺机制相关的公钥,M是所需承诺的原始值,r是随机骰子,算法输出的C是,D是需要保密的值。 在正式公开M之前,首先要公开M的承诺C,即先做一个你要公布的消息的大神。 保证并约束自己M不可被替换,并且对于M的受众或接收者来说,他们可以通过之前公布的承诺和验证算法来验证唯一性。 这里我们主要关注非交互式 VSS 实现。
此外,在过去的研究中,签名(Sig)的生成和验证大多是交互的,并且依赖于同步通信网络和广播信道( )。 在某些设置下,节点在收到特定消息后同时启动。 签署协议并严格遵守超时机制。 在互联网环境和区块链网络中,网络假设的限制是有限的。 因此,为了让门限系统成功运行,除了构建真正的DKG协议和非交互式签名机制外,还需要拥有商业级的网络系统和经过验证的成熟代码实现。 在这里,我们(Bytom)尝试在弱同步网络的假设下提出并构建一个门限签名分布式系统。 我们主要对网络模型、DKG构建、签名机制等方面进行一些创新的组合和应用,探索实际网络环境下的最小实用系统。 门限签名系统原型。
阈值系统是(t,k,n)型故障系统。 t表示网络的最大容错能力,k表示最小阈值,n是节点数量。 一般设置k>=t+1,但是这种网络()是无能为力的,所以在异步拜占庭网络中我们还是使用经典的设置k=nt & t
门限网络或通信模型是实现实用门限系统需要仔细考虑的关键点。 像这样构建的近乎异步的通信网络在实际情况中很少见。 一般来说,消息复杂度和通信轮次都会增加。 异步网络模型主要依靠接收消息的类型和数量进行判断,因为时间因素(基于时间)无法区分谁是慢节点,谁是恶意节点。 但这里我们更倾向于采用高效弱同步网络的假设,即消息延迟和时钟偏移有上限(实际上可以接受)但未知,渐近延迟是合理且有保证的(可以通过折衷方法处理) ; 它可以尝试单独处理崩溃等不同情况,例如设置指定时间内可容忍的崩溃阈值、允许诚实节点在崩溃后从指定状态恢复等; 并且假设网络故障总是可以修复并且所遭受的DoS攻击总是会停止; 最后,在构建通信路径时,可以使用PKI和外部CA来构建TLS链路,以及经典的RBC协议( )。
DKG是门限签名的核心环节,也是门限签名的第一阶段,负责完成门限密钥的生成和分发。 VSS是DKG的重要组成部分。 如上所述,VSS的基本原理是承诺机制,一般是基于构造一个C=mG+nH形式的承诺(这里我们省略了一些关于椭圆曲线群运算特性的定义和假设,可以简单理解为椭圆曲线计算),其中m来自关键构造多项式f(x)的系数,n来自额外构造的随机多项式h(x)的系数,承诺集{Ci, 0
真正的DKG需要去掉VSS中的中心,在分布式协作下生成秘密,以避免单点泄露的风险。 原理也很简单。 相当于n个节点选择秘密值并同时运行自己的VSS。 每个节点从其他节点收集秘密共享来完成组装。 组装的结果是真实私钥的份额,将各个合法节点分配的秘密值聚合起来形成最终构造的私钥,最后进行承诺验证。 这看起来很像 Multi-(MVBA)(一种广泛研究的共识协议算法,可以有效地就多个提案达成共识,具有多种变体,例如异步公共子集)。
然而,我们试图避免这种复杂的实现。 一般我们会选举节点来协调处理这些VSS的完成状态和最终共识,并定义顺序。 当大多数节点(nt)完成各自的VSS阶段并被所有其他诚实节点接受后,确认后,收集完成的VSS信息并重新组织成提案。 经过两轮全网广播后,每个节点将确定其最终的秘密份额。 因此,保障对于我们的系统来说非常关键。 如果DKG协议中的任何一方有恶意行为,协议将立即停止,即DKG需要保证所有参与者的诚实行为。 至此,属于不同参与者的公开阈值公钥和阈值私钥份额就构建完成了。
简单来说,签名阶段就是根据上面获得的密钥份额完成对自己的签名份额的签名,最后完成统一组装得到最终的门限签名。 -Sig阶段的具体实现与它所基于的数字签名算法有很大关系。 例如,算法在计算签名s值时所依赖的秘密值k在常数项中,s=kz(H(K||M)),因此可以简单地组合秘密值份额。 ECDSA中的秘密值k是非线性的,即s=(H(M)+zr)/k(其中r也是由k通过指数运算得到)。 存在两个秘密值(k和z)的乘法运算,因此每个节点仅仅拥有k个秘密值份额并不能完成最终签名值的组装。 需要对公式进行变形,重新定义组合秘密值kz,以分布式方式完成kz秘密份额的计算和分配。 它甚至需要使用安全的多方计算。 (完成kz结果的计算,输出kz的秘密份额给对应的参与者,同时不泄露各自的k和z份额),同态加密机制和零知识证明(范围证明),所以多方ECDSA阈值签名在实现和效率上会比较复杂。 现阶段,大多数研究都是针对实用的2-2解决方案。
无论使用ECDSA还是算法,核心问题仍然是基于DKG和多方计算的原理来生成和分发签名算法中所需的秘密值。 每个参与者根据自己的密钥份额和秘密值份额完成自己的签名。 过程,通过整体交互组装,最终获得最终的法律签名。 同样,如果无法达到足够的合法签名者阈值,签名协议将立即停止。 根据不同应用场景的需求,我们需要仔细研究用于实现门限签名机制的底层签名算法,如ECDSA、EdDSA、BLS等,不同签名算法对应的门限机制实现复杂度和效率是不同的。
此外,完整的门槛体系可能需要成员变更,原有的关键股份将需要新一轮的变更。 最直观的做法是引入循环的概念,通过同步网络和共识协议发起新一轮的加密。 密钥生成,生成新的主公钥和私钥共享,并使用超时机制防止阻塞。 成员变更和DKG是相对脆弱(或脆弱)的系统,任何成员失败或故障都会导致异常。 在实现中,我们利用状态机复制原理构建一个阈值(DKG)节点,并根据消息输入替换其自身的状态(例如 )。
随着组合应用场景需求的增加,门限密码学的成熟度不断提高。 尤其是随着高可靠代码实现的增多,以及复杂网络环境下系统架构的成熟,有望在价值网络中扮演“门神”的角色。 ”发挥着重要作用,也将推动零知识证明和同态加密技术的进一步场景化应用。 是当前区块链新技术领域中为数不多的值得深入研究和实际落地的研究方向之一。 现代密码学和价值网络相辅相成。 前者给予后者“神的保证”,后者给予前者“伟大的战场”。
比原链研究院刘秋山