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 2019年3月17日

#31 in 密码学

Download history 81517/week @ 2024-04-22 62643/week @ 2024-04-29 61398/week @ 2024-05-06 72522/week @ 2024-05-13 69572/week @ 2024-05-20 84860/week @ 2024-05-27 75900/week @ 2024-06-03 61283/week @ 2024-06-10 64833/week @ 2024-06-17 75886/week @ 2024-06-24 68326/week @ 2024-07-01 66768/week @ 2024-07-08 84163/week @ 2024-07-15 85887/week @ 2024-07-22 75336/week @ 2024-07-29 85409/week @ 2024-08-05

333,381 monthly downloads
用于 894 crates (37 直接使用)

BSD-3-Clause

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