0.1.0 |
|
---|
#4 in #onboard
380KB
8K SLoC
Curv
Curv 提供了一个非常简单的接口来添加新的椭圆曲线。使用此库进行通用椭圆曲线密码学。
该库内置了对一些有用的操作/原语的支持,例如可验证的秘密共享、承诺方案、零知识证明以及简单的双方协议,如ECDH和抛硬币。该库支持序列化和反序列化,可在高级代码中用于实现网络。
用法
要使用 curv
包,请将以下内容添加到您的 Cargo.toml 中
[dependencies]
curv-kzen = "0.9"
该包将可用作 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 security 进行了审计。报告可以在 此处 找到。没有发现任何关键问题,所有发现的问题都已修复。
代码由几位其他密码学家独立审查。特别感谢来自奥尔胡斯大学的 Claudio Orlandi。
总的来说,该库的安全性强烈依赖于所使用的底层库的安全性。我们只选择了作为其他大型项目一部分使用的库,并经过了严格的审计/审查。
该库并非对旁路攻击免疫,但已经做出了相当大的努力来捕获尽可能多的此类攻击(请参阅审计报告)。
构建
使用 cargo build
构建一切,包括曲线实现、密码原语、BigInt等。
大整数实现
该库支持几种大整数实现,并且可以轻松地在它们之间切换。您可以通过指定一个功能来选择您喜欢的任何一种。
-
rust-gmp-kzen,使用GMP绑定,需要在机器上安装GMP。默认使用。
-
num-bigint,Rust的纯大整数实现。为了使用它,在Cargo.toml中添加
[dependencies.curv-kzen] 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。
开发过程 & 联系方式
此库由ZenGo-X维护。非常欢迎贡献!除了GitHub问题和PR,您也可以通过邮件联系,或加入ZenGo X Telegram进行代码和研究的讨论。
依赖项
~9MB
~172K SLoC