分布式密钥生成(DKG)是一种去中心化加密协议,允许多方共同生成共享公私钥对,私钥以秘密共享方式分布,避免单点信任问题。DKG在门限签名、加密及安全多方计算中至关重要,广泛应用于区块链的共识、状态承诺和抗MEV等场景。其核心优势在于无需可信机构,确保安全性。随着门限密码学的普及,DKG成为关键研究方向。当前研究多聚焦独立设置,但区块链应用需链上验证门限签名,要求智能合约直接访问DKG公钥,推动了对可验证链上公钥的DKG方案的需求。
这篇博文重点介绍了一个新问题:区块链的 DKG ,它要求通过 DKG 流程生成的最终公钥必须在区块链上可用,以便进行链上验证。在此,DKG 协议应该与使用它的(目标)区块链的网络假设无关。具体而言,设计必须是异步的,以确保所用区块链系统的网络假设保持不变。此外,DKG 协议最好能够生成字段元素机密,以确保与广泛使用的门限密码系统(例如 BLS 签名、ECDSA、EdDSA、El Gamal 加密或 Boneh-Franklin 基于身份的加密)兼容。现有的独立异步 DKG 协议可以通过先执行 DKG,然后将最终公钥发布到链上来适应区块链。然而,这种方法继承了底层异步 DKG 的高通信和计算成本,并且由于需要多个共识实例而增加了轮次复杂度。此外,它还需要更大的链上存储空间来发布公钥。 而非交互式 DKG 协议虽然可以实现最小的轮次复杂度,但通常会产生大量的链上存储和高昂的计算开销。在本篇博文中,我们介绍了一种简单高效的区块链高阈值 DKG。我们的解决方案利用区块链本身来解决 DKG 问题。实际上,我们利用区块链本身来解决区块链上的 DKG 问题。具体而言,我们依靠区块链内置的共识 / 排序机制来解决核心集一致性 (ACS) 问题,该问题识别出正确共享秘密的经销商集合。此外,我们使用随机信标(大多数区块链上普遍提供的服务)对经销商小组委员会进行抽样,从而提高效率。我们的第一个关键想法是利用区块链内置的共识机制来解决 ACS 问题。在我们的 DKG 协议中,我们在秘密共享阶段使用点对点通道进行消息交换,从而避免了除 ACS 之外的共识原语。至关重要的是,区块链只使用一次——用于解决 ACS 并发布最终的 DKG 公钥——从而显著降低了轮次复杂度。现有的独立 DKG 方法需要所有参与方充当秘密共享的经销商,从而导致高昂的通信和计算成本。在本研究中,我们利用在 Supra、Algorand 和 Aptos 等区块链上广泛使用的可公开验证且不可预测的随机信标,以高概率(基于超几何分布)选出一个由 n 个节点组成的诚实多数派委员会。我们将这样的诚实多数派委员会称为 “氏族” 。这些“氏族”节点充当秘密共享的经销商和验证者。这种基于委员会的方法使我们能够在确保安全性的同时显著降低开销。我们首先探索一些利用随机信标和区块链内置共识机制构建直觉的稻草人方案。然后,我们将介绍高效的 DKG 协议。自始至终,我们将整个 n 个参与方集合称为一个部落 (tribe) 。 使用随机信标,我们可以选出一个交易者家族,并让他们通过非交互式公开可验证的秘密共享方案进行秘密共享。其中,交易者只需将公开可验证的加密份额向量(PVSS 向量)发布到区块链上即可达成共识(如下图所示)。然后,可以使用区块链输出的一组 fc+1 有效 PVSS 向量来派生公钥和相应的私钥 fc < n⁄2 表示家族中拜占庭参与方的数量。这种方法的轮复杂度较低,但会导致更高的链上存储成本 kncn ,并且每个参与方至少需要 ncn ,其中 k 是安全参数。由于链上存储成本高,因此这种方法并不可取。
可以通过让交易者将 PVSS 向量传播给部落并收集数据可用性证明 (PoA) 来优化链上存储,从而确保至少有一方以较高的概率收到 PVSS 向量。之后,该 PoA 会被提交到区块链进行共识,以便稍后检索有效的 PVSS 来建立 DKG 密钥,如上图所示。然而,这种方法仍然会导致链上存储成本为 knc+ nc2(使用多重签名时),并且每方计算成本至少为 ncn 。为了降低计算成本,我们可以基于简化的 VSS 协议进行构建,其中交易者单独分发秘密份额,并承诺提供秘密共享多项式的系数。此承诺允许各方验证其收到的份额的正确性。如果各方的份额与承诺一致,则各自向交易者返回承诺签名。交易者收集法定人数的有效签名,并仅向未提供签名的各方公开可验证的秘密份额加密。如果存在法定人数的有效签名,并且缺失份额的加密有效,则交易者被接受。值得注意的是,各方仅验证缺失签名的加密,从而降低了计算开销。然而,这种方法仍然需要将承诺发送给所有各方,因此需要 nc 个交易者进行至少 knc2n 次链下通信。我们改进了简化 VSS 方法,以在保持计算效率的同时最大限度地减少通信。在我们的协议中,经销商 Pj 直接向每一方 Pj 发送其秘密份额 sj,i 无需任何承诺(步骤 1)。相反,经销商 Pj 生成一个个人承诺 gs j,i,对其进行签名并将签名返回给经销商(步骤 2)。然后,经销商收集一定数量的签名,并为未提供签名的各方构建一个加密向量。此外,经销商对秘密共享多项式的评估做出承诺(即 gs j,0..., gs j,n),并将关于个人承诺、加密和承诺的一定数量的签名仅提交给氏族中的各方(步骤 3)。如果氏族中至少有fc+1 方验证了这些组件,则经销商的秘密共享被视为有效。这种方法将 ncn 个经销商的通信减少到 knc2n 。此外,只有部落成员需要验证加密,导致每个部落派对的计算开销为 ncn ,而所有其他派对仅执行 nc 次计算。
秘密共享阶段结束后,有效的秘密共享实例必须发布到区块链上以供共识 / 排序。然
而,直接发布这些实例会产生高昂的链上存储成本。为了缓解这一问题,我们致力于最大限度地减少区块链交互。为此,我们选出一个由 na ( na<< nc) 个参与方组成的小家族,并以高概率确保至少有一方是诚实的。只有这些小家族成员负责在区块链上发布信息,从而在保持正确性的同时降低存储开销。
部落各方验证加密、签名和承诺,并向家族各方发送投票(步骤 4)。家族成员构建一个元 DKG 实例,该实例聚合了至少 fc+1 个有效秘密共享实例的信息。具体而言,元 DKG 包含承诺的 Merkle 根以及每个实例的加密向量。此外,它还包含部落成员投票形式的证明,确保至少有一位诚实方已接收并验证每个秘密共享实例。然而,由于包含 nc2 个签名,元 DKG 的大小可能会增长到 knc + nc2 ,从而导致链上发布成本高昂。相反,我们将元 DKG 传播给部落,并在使用多重签名时收集大小仅为 k + nc 的可用性证明 (PoA)(步骤 5 和 6)。在我们的协议中,只有元 DKG 的 PoA 会发布在区块链上(步骤 7)。一旦区块链输出第一个有效的 PoA,部落成员就会将其与相应的元 DKG 一起检索,然后检索所有承诺和加密。然后,他们使用纠删码以通信高效的方式将聚合的承诺和加密分发给部落中的所有参与方。所有参与方都将使用聚合加密来计算最终的密钥。总体而言,我们的协议实现了knc2n + nanc3 + n2 的场外通信复杂度, kna + nanc 的链上存储复杂度,并在 11 轮内终止,同时容忍 f < n⁄3 拜占庭故障。我们评估了我们的协议,并将其与 Das 等人提出的用于解决区块链 DKG 问题的 SOTA 独立 DKG 协议进行了比较。我们的实验在拥有 2 个 vCPU 的机器上进行,这些机器分布在 8 个地理分布的 GCP 区域。如下图所示,我们的协议比 SOTA 方法实现了更快的完成速度。图中的乐观情况是指执行过程中,交易执行者收集所有参与方的签名,从而无需部落节点生成和验证加密。在常规情况下,交易执行者收到 n-f 个签名并为其余 f 个参与方生成加密。在上述评估中,大部分时间都花在了加密操作上,这些操作可以通过更多计算资源并行化。我们通过并行化大部分加密计算和验证来增强实现效果。当部署在相同的 8 个地理分布的 GCP 区域,并在配备 32 个 vCPU 的机器上时,我们观察到 DKG 的完成时间显著缩短。当 n=256n = 256n=256 时,我们的协议在常规情况下大约需要 11 秒完成,在乐观情况下大约需要 6 秒完成,这证明了我们解决方案的可扩展性。
(本文为【Supra 中文】原创内容,未经账号授权,禁止随意转载;如需转载,请在公众号消息栏发送“转载”关键字获得相关信息)Supra 是一个具备原生预言机和 VRF 等功能并实现跨链互操作的中间服务层——Intralayer。旨在链接 L1 和 L2,为开发者社区提供全面的中间服务,为保护未来金融市场和推动 Web3 应用落地而打造的高速、安全、可扩展的跨链互操作核心基础设施。【Supra 中文】也将持续为读者提供更有价值、更有深度的区块链行业内容跟干货。一文详解丨以太坊扩容方案:OP vs ZK Rollup