#elliptic-curve #general #zero-knowledge-proofs #extremely #interface #curv #onboard

curv-lsc

Curv提供了一个非常简单的接口来注册新的椭圆曲线。使用这个库进行通用椭圆曲线密码学。

2个版本

0.1.2 2022年11月17日
0.1.0 2022年11月17日

#1932 in 加密学


用于 2 crates

MIT 许可证

380KB
8K SLoC

Build Status Latest version Docs License dependency status

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

安全性

该库由Kudelski security于2月19日审计。报告可以在此处找到。没有发现关键问题,所有发现的问题都已修复。

代码由几位其他密码学家独立审查。特别感谢来自奥尔胡斯大学的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 的支持是实验性的,不应在生产环境中使用。对于此 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
~171K SLoC