From Bingo to ADKG

Bingo: ADKG_i ()

:当前操作用户始终是用户

零、开始阶段:

  1. 初始化 prop dealer sigs 集合均为空
  2. 取任意的秘密值
  3. 作为dealer调用 BingoShare 分享 f+1 个秘密值
  4. 对于其他参与者 发来的 BingoShare 请求都进行参与

一、当用户 作为dealer完成 BingoShare 时:

  1. 将用户 添加到自己的集合
  2. 如果 集合中有f+1个用户,则
    1. 向所有人发送 proposal 消息:

二、如果从用户 处收到proposal 消息,则:

  1. 当集合 中每个用户k都作为dealer完成 BingoShare 时:

    向参与者 发送signature消息:

三、如果从其他某个参与者 收到signature消息,则:

  1. 如果自己的 prop 集合不为空 并且使用参与者 验证这条 sig 消息正确,则:

    1. 将参与者 和他的签名信息添加到自己收集的签名集合 中 ==抗量子生成协议==

    2. 如果收集到了其他 f+1 个人的签名,则:

      调用 , 并且调用 checkValidity 校验有效性

四、当VABA终止并输出结果 时:

  1. 当集合 中每个用户k都作为dealer完成 BingoShare 时:

    调用

五、当BingoSumExpAndRec终止并输出结果 时:

  1. 输出公钥 并终止

总结:

一旦某个参与方完成了至少 f+1 个消息发放者们的 BingoShare ,这个参与方就会要求另外 f+1 个参与方通过 proposal 消息验证这些 BingoShare 确实完成了。在完成所有这些消息发放者们的 BingoShare 后,各方在f + 1消息发放者们的集合上签字回复。

然后所有的参与者都会在一组有 f+1 个消息发放者们的集合上、和 f +1 个签字集合上达成一致,然后调用VABA。

上述过程正常情况下意味着至少有f+1方为消息发放者们提供了签名,那么至少有一个没有问题的参与方提供了签名。因此,这个没有错误的参与方完成了BingoShare,并且正常终止,每个没有错误的参与方最终也会这样做。各方然后等待 f+1 个消息发放者们的 BingoShare 完成。然后参与者 i 可以调用 BingoSumExpAndReci 输出pk和ski。

Bingo: VABA Leader Election()

注:当前操作用户始终是用户

零、开始阶段:

  1. 用户 初始化各集合为空集
  2. 用户 为每个其他参与方随机抽样一个秘密
  3. 作为 dealer 分三次调用 BingoShare 分享上述n个秘密 ==(为什么是3次,不懂?)==
  4. 对于其他参与者 发来的三次 BingoShare 请求都进行参与

一、如果完成了其他某个参与者 三次的BingoShare 请求,则:

  1. 将参与者 加入 集合中
  2. 如果 集合中有f+1个参与方,则
    1. 向所有人发送attach消息:

二、如果从其他某个参与者 收到attach消息,则:

  1. 如果收到的 集合是自己的 集合的子集,则

    向参与者 发送signature消息:

三、如果从其他某个参与者 收到signature消息,则:

  1. 如果自己的 attached 集合不为空 并且使用参与者 验证这条sig 消息正确,则:

    1. 将参与者 和他的签名信息添加到自己收集的签名集合

    2. 如果收集到了其他 f+1 个人的签名,则:

      调用 , 并且调用 checkValidity 校验有效性

四、当Gather协议输出集合 时:

  1. 中每一项的下标,即
  2. 广播indices消息:

五、当第一次从其他某个参与者 收到indices消息 时:

  1. 调用 并得到结果 ,并且等待自己的 调用输出结果时,

    对于 中的每个

    ​ 对于 中的每个 ,以作为秘密发放者终止的所有BingoShare调用时:====

    ​ 调用

六、如果BingoReconstructSum输出结果,则:

  1. 添加到集合

七、如果 不为空集,且 中每个参与方的评估结果都存在在 中时:

  1. 检查哪些参与方具有最大的关联值,并选择它作为领导者。====

Verifiable gather

the goal of Gather is to have some common core gather-set such that all parties output a super-set of this core.

For Verifiable Gather, the goal is to limit the power of the adversary to generate inconsistent outputs. Intuitively, for any gather-set produced by the adversary, if it passes some verification protocol, it must also be a super-set of the common core.

零、开始阶段:

  1. 初始化各集合
  2. 可靠广播消息

一、如果从用户 处收到消息 ,则:

  1. 添加到自己的 集合中,将用户 添加到自己的 集合中
  2. 如果 集合中已经有 个用户,则广播消息

二、如果从用户 处收到消息 ,并且 中元素个数大于 个,则:

  1. 当 收到的 是自己的 的子集的时候,即收到的集合中的用户的广播也已经被此用户收到时:

    将用户 添加到自己的 集合中

  2. 如果 集合中已经有 个用户,则广播消息

三、如果从用户 处收到消息 ,并且 中元素个数大于 个,则:

  1. 当 收到的 是自己的 的子集的时候,即收到的集合中的用户的广播也已经被此用户收到时:

    中每个用户 集合并起来,和用户 ,加入自己的集合

  2. 如果 集合中已经有 个用户,则输出集合 ,并且继续监听接受信息


From Bingo to ADKG
https://harrison-1eo.github.io/2023/09/04/Bingo_VABA_Leader_Election/
作者
Harrison
发布于
2023年9月4日
更新于
2023年9月23日
许可协议