1 个不稳定版本
0.10.1 | 2024年3月19日 |
---|
#1426 在 加密学
5,901 每月下载量
用于 7 个crate(2 个直接使用)
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