10 个版本
0.11.4 | 2023年12月8日 |
---|---|
0.11.3 | 2023年10月5日 |
0.11.2 | 2023年9月12日 |
0.10.2 | 2021年10月18日 |
0.1.0 |
|
#31 in 密码学
333,381 monthly downloads
用于 894 个 crates (37 直接使用)
240KB
3K SLoC
schnorrkel
Schnorrkel 在 Ristretto 压缩 Ed25519 点上实现 Schnorr 签名,以及相关的协议,如 HDKD、MuSig 和可验证随机函数 (VRF)。
Ristretto 大致实现了 Mike Hamburg 的 Decaf 论文的第7节,为 Ed25519 曲线的2-torsion free点提供作为素数阶群。 (相关)
我们采用 merlin 的 类型特定的哈希方法 策略,并具有良好的领域分离。这些方法封装了 Mike Hamburg 的 STROBE128 构造,后者基于 Keccak。
在实践中,我们所有的方法都消耗一个 merlin::Transcript
,开发人员可以通过向特定上下文构建器提供数据轻松创建。但我们同时也支持 &mut merlin::Transcript
,正如 merlin
包所偏好的。我们将在未来利用这一点,以更好地使 schnorrkel 符合 dalek 生态系统中的零知识证明工具。
我们根据Dimitrios Papadopoulos、Duane Wessels、Shumon Huque、Moni Naor、Jan Včelák、Leonid Rezyin和Sharon Goldberg在"Making NSEC5 Practical for DNSSEC"(使NSEC5对DNSSEC实用)中的模型来构建VRF本身。我们注意到,Trevor Perrin提出的V(X)EdDSA签名方案基本上与NSEC5结构相同。此外,VRF支持单个签名者合并使用相同密钥对生成的多个VRF输出,这与Alex Davidson在"Privacy Pass - The Math"(隐私通行证 - 数学)和Alex Davidson、Ian Goldberg、Nick Sullivan、George Tankersley和Filippo Valsorda在"Privacy Pass: Bypassing Internet Challenges Anonymously"(隐私通行证:匿名绕过互联网挑战)中提到的"DLEQ Proofs"(DLEQ证明)和"Batching the Proofs"(批处理证明)部分相类似。
除了某些简单的顺序VRF构建之外,我们目前仅支持Schnorr多签名的三轮MuSig,因为所有其他Schnorr多签名都有一定的问题。在未来,我们应该开发如5.1节第21页https://eprint.iacr.org/2018/417中提到的mBCJ等安全方案,尽管mBCJ本身是通过拥有证明来工作的,而一个线性化变体听起来更适用。
还有C、JavaScript和Python的局部绑定。
依赖项
约2-3.5MB
约75K SLoC