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 密码学
120 个月下载量
用于 2 crates
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个。
模块
- BBS和BBS+签名参数和密钥生成模块 -
setup
。BBS的签名参数与BBS+略有不同,但公钥相同。 - BBS+签名模块 -
signature
- BBS+签名知识证明模块 -
proof
- BBS签名模块 -
signature_23
- BBS签名知识证明模块 -
proof_23
- BBS签名知识证明模块,实现如附录B -
proof_23_cdl
- BBS签名知识证明模块,实现如附录A -
proof_23_ietf
- 门控BBS和BBS+签名 -
threshold
实现尝试使用与论文中相同的变量名,因此在某些地方违反了Rust的命名约定。
许可证:Apache-2.0
依赖项
~7–18MB
~189K SLoC