DKG refresh
不同步骤的内容
在密钥刷新过程中,每个阶段的主要任务是确保参与者能够在不更改公共密钥的情况下更新他们的私钥份额。这个过程类似于初始的密钥生成过程,但目的是在保持公钥不变的前提下,刷新私钥份额以增强系统的安全性。以下是每个阶段的详细说明:
DKGStep1
在这个步骤中,参与者准备刷新他们的密钥份额:
- 生成新的私钥份额 (
ui):如果参与者在指定的刷新列表中(devoteList),他们会根据拉格朗日插值重新计算自己的私钥份额。如果不在列表中,他们的私钥份额将设置为 0。 - 应用 Feldman 门限方案:使用新的私钥份额和 Feldman 门限方案,参与者计算一组新的验证者(
verifiers)和秘密分享(shares)。 - 计算和广播承诺:参与者计算包含新验证者坐标的承诺,并将这些承诺发送给其他所有参与者。这确保了所有参与者都可以验证后续步骤中收到的秘密分享。
DKGStep2
在收到第一步中其他参与者发送的承诺后,参与者执行以下操作:
- 存储和验证承诺:参与者存储从其他参与者接收到的承诺,并准备用于验证第三步中收到的秘密分享。
- 生成并发送零知识证明:为了证明他们确实拥有对应的新私钥份额,每个参与者生成一个零知识证明(使用 Schnorr 协议)。然后,他们将这个证明连同自己的秘密分享和承诺的见证(
witness)发送给其他所有参与者。
DKGStep3
这是密钥刷新过程的最后一步,参与者完成以下任务:
- 验证收到的信息:使用第一步中收到的承诺,验证第二步中收到的每个参与者的秘密分享和零知识证明的有效性。
- 计算新的私钥份额和公钥:通过组合所有有效的秘密分享来更新自己的私钥份额。同时,使用所有参与者的验证者信息来重新计算公钥,确保它与之前的公钥相同,验证公钥的一致性。
- 输出结果:如果所有验证都成功,并且新计算的公钥与旧公钥相同,这表明密钥刷新成功。每个参与者都得到了新的私钥份额,而公钥保持不变。
这个三步过程确保了在整个密钥刷新过程中,公钥的不变性和私钥份额的安全更新,从而增强了系统的整体安全性。
DKG refresh 流程图
下面是一个使用 Mermaid 语法描述的密钥刷新过程的流程图。Mermaid 是一种基 于文本的图表工具,可以通过简单的文本描述来生成图表。这个流程图展示了密钥刷新过程中的三个主要步骤(DKGStep1, DKGStep2, DKGStep3)以及它们之间的信息流。
这个流程图详细描述了在密钥刷新过程中,每个参与者如何计算新的私钥份额、生成验证者和秘密分享、创建和发送承诺、接收和存储承诺、生成和验证零知识证明、以及最终计算新的私钥份额和验证公钥的一致性。这个图表帮助理解整个密钥刷新过程的步骤和逻辑。
刷新为什么可以保证公钥不变,私钥变?
