21 个重大版本

0.22.0 2024 年 7 月 18 日
0.20.0 2024 年 5 月 10 日
0.19.0 2024 年 3 月 4 日
0.18.0 2023 年 10 月 10 日
0.6.0 2021 年 11 月 5 日

#1270 in 密码学

Download history 4/week @ 2024-04-25 134/week @ 2024-05-09 10/week @ 2024-05-16 5/week @ 2024-05-23 3/week @ 2024-05-30 5/week @ 2024-06-06 3/week @ 2024-06-13 157/week @ 2024-06-20 19/week @ 2024-06-27 133/week @ 2024-07-04 1/week @ 2024-07-11 113/week @ 2024-07-18 7/week @ 2024-07-25

120 个月下载量
用于 2 crates

Apache-2.0

1MB
20K SLoC

BBS 和 BBS+ 签名

实现了 BBS 和 BBS+ 签名。

BBS+ 签名根据论文:基于强迪菲-赫尔曼假设的匿名证明重新审视。提供

  • 签名创建和验证,签名在 G1 群组中,公钥在 G2 群组中,反之亦然。
  • 签名和对应消息在 G1 群组中的知识证明,因为这样更高效。

BBS 签名根据论文:重新审视 BBS 签名。提供

  • 签名创建和验证,签名在 G1 群组中,公钥在 G2 群组中。
  • 签名和对应消息的知识证明。实现的协议与论文中提到的略有不同。修改是在 Schnorr 证明部分进行的,以便允许使用案例,如证明消息(在零知识中)之间的相等性(在相同/不同的签名之间)或证明关于消息的谓词(在零知识中)。有关更多详细信息,请参阅相应模块的文档。

基于论文 用于分布式匿名凭证签发的阈值 BBS+ 签名 的阈值签名协议有三个阶段(不是通信轮次):1. 这是随机数生成阶段 2. 这是乘法发生阶段 3. 在这个阶段,第 1 和 2 阶段的输出以及要签名的消息用于生成签名。从签名者的角度来看,这一阶段是非交互式的,因为他们不仅相互之间不交互。

请注意,只有第三阶段需要知道消息,因此前两个阶段可以被视为预计算,可以主动执行,因此第一阶段和第二阶段是MPC协议的在线阶段,第三阶段是离线阶段。其次,由于签名者之间的通信时间很可能是门控签名中的瓶颈,第一阶段和第二阶段支持批量处理,这意味着要生成n个签名,只需执行一次第一阶段和第二阶段,尽管输入更大。然后进行n次第三阶段的执行以生成签名。还假设各方已完成DKG以及基本OT并在开始第一阶段之前存储了其结果。BBS和BBS+的实现共享相同的乘法阶段和基本OT阶段,但BBS+的第一阶段稍微便宜一些,因为BBS+需要2个随机域元素,而BBS只需要1个。

模块

  1. BBS和BBS+签名参数和密钥生成模块 - setup。BBS的签名参数与BBS+略有不同,但公钥相同。
  2. BBS+签名模块 - signature
  3. BBS+签名知识证明模块 - proof
  4. BBS签名模块 - signature_23
  5. BBS签名知识证明模块 - proof_23
  6. BBS签名知识证明模块,实现如附录B - proof_23_cdl
  7. BBS签名知识证明模块,实现如附录A - proof_23_ietf
  8. 门控BBS和BBS+签名 - threshold

实现尝试使用与论文中相同的变量名,因此在某些地方违反了Rust的命名约定。

许可证:Apache-2.0

依赖项

~7–18MB
~189K SLoC