#elliptic-curve #secret-sharing #zero-knowledge-proofs #ecdh #general #verifiable #scheme

sn_curv

Curv提供了一种极简单的接口来引入新的椭圆曲线。使用此库进行通用椭圆曲线密码学。

1 个不稳定版本

0.10.1 2024年3月19日

#1426加密学

Download history 119/week @ 2024-03-14 166/week @ 2024-03-21 15/week @ 2024-03-28 4/week @ 2024-04-04 756/week @ 2024-04-18 704/week @ 2024-04-25 1578/week @ 2024-05-02 2038/week @ 2024-05-09 2887/week @ 2024-05-16 1549/week @ 2024-05-23 3687/week @ 2024-05-30 1659/week @ 2024-06-06 1860/week @ 2024-06-13 1219/week @ 2024-06-20 692/week @ 2024-06-27

5,901 每月下载量
用于 7 个crate(2 个直接使用)

MIT 许可证

375KB
8K SLoC

Curv

Curv提供了一种极简单的接口来引入新的椭圆曲线。使用此库进行通用椭圆曲线密码学。

该库内置了对一些有用的操作/原语的支持,例如可验证的秘密共享、承诺方案、零知识证明以及简单的两方协议(如ECDH和硬币翻转)。该库提供了序列化和反序列化支持,可在高级代码中用于实现网络。

使用方法

要使用curv crate,请在您的Cargo.toml中添加以下内容

[dependencies]
sn_curv = "0.10.1"

该crate将以curv名称提供,例如

use curv::elliptic::curves::*;

当前支持的椭圆曲线

曲线 低级库 曲线描述
Secp256k1 rust-secp256k1 bitcoin wiki
P-256 RustCrypto NIST.FIPS.186.4
Ed25519 cryptoxide BDLSY11
Ristretto curve25519-dalek ristretto group
BLS12-381 bls12-381 BLS12-381 For The Rest Of Us

安全性

该库于2月19日由Kudelski安全进行了审计。报告可以在此处找到。未发现任何关键问题,且所有发现的问题都已修复。

代码由其他几位密码学家独立审查。特别感谢来自奥尔胡斯大学的Claudio Orlandi

总的来说,该库的安全性强烈依赖于所使用的低级库的安全性。我们只选择了作为其他大型项目一部分并经过大量审计/审查的库。

该库并非对侧信道攻击免疫,但已经付出了相当大的努力来尽可能地捕捉此类攻击(参见审计报告)。

构建

使用cargo build构建包括曲线实现、加密原语、BigInt等在内的所有内容。

大整数实现

该库支持几个大整数实现,并且可以轻松地在它们之间切换。您可以通过指定功能来选择您喜欢的任何一个。

  • rust-gmp-kzen,使用GMP绑定,需要在机器上安装GMP。默认使用。

  • num-bigint,Rust的纯大整数实现。要使用它,请在Cargo.toml中添加

    [dependencies.sn_curv]
    version = "0.8"
    default-features = false
    features = ["num-bigint"]
    

    警告: num-bigint支持是实验性的,不应在生产环境中使用。对于此大整数实现,我们使用的是不被认为是安全的质数生成器。

示例

该库包含一些基本示例以供您开始。要运行它们: cargo run --example EXAMPLE_NAME -- CURVE_NAME 例如: cargo run --example proof_of_knowledge_of_dlog -- secp256k1

文档

要构建文档,请使用

cargo doc
RUSTDOCFLAGS="--html-in-header katex-header.html" cargo doc --no-deps --open

许可证

Curv采用MIT许可证发布。有关更多信息,请参阅LICENSE

贡献

请随时克隆并修改此项目。欢迎提交拉取请求。

依赖项

~13MB
~192K SLoC