#chacha20-poly1305 #poly1305 #aead #chacha20 #crypto #cha-cha20-poly1305

crypto_api_chachapoly

crypto_api 实现ChaCha20-IETF、Poly1305 和 ChachaPoly-IETF

11 个版本

0.5.0 2021年10月7日
0.4.3 2020年7月16日
0.4.2 2019年12月9日
0.3.0 2019年11月27日
0.1.7 2019年3月12日

#977 in 密码学

Download history 1789/week @ 2024-03-14 1437/week @ 2024-03-21 1562/week @ 2024-03-28 2049/week @ 2024-04-04 1837/week @ 2024-04-11 1998/week @ 2024-04-18 1860/week @ 2024-04-25 1718/week @ 2024-05-02 1757/week @ 2024-05-09 918/week @ 2024-05-16 1237/week @ 2024-05-23 1476/week @ 2024-05-30 1642/week @ 2024-06-06 1103/week @ 2024-06-13 1197/week @ 2024-06-20 1068/week @ 2024-06-27

5,215 monthly downloads
5 个 (3 直接)crate中使用

BSD-2-Clause OR MIT

51KB
872

docs.rs License BSD-2-Clause License MIT crates.io Download numbers AppVeyor CI dependency status

crypto_api_chachapoly

欢迎使用 crypto_api_chachapoly 🎉

关于

此crate实现了IETF版本的ChaCha20、XChaCha20、Poly1305ChachaPoly-IETF AEAD构造和XChachaPoly。

安全性

⚠️ 以下是一些警告:此库尚未经过审计 – 使用风险自负!⚠️

然而我们力求从一开始就做到正确 – 此库不使用不安全Rust,遵循KISS原则,对各种测试向量进行了测试,并仅使用恒定时间实现。

测试向量

所有实现都通过所有参考测试向量,并假定在角落案例中也能产生正确的结果。我们还使用API测试向量(用于测试输入验证)和失败测试向量来测试我们的MAC验证。

针对sodiumoxide进行模糊测试

git仓库包含一个名为fuzz的子crate,它可以生成随机输入并测试此crate和sodiumoxide是否产生相同的结果。

可以通过克隆git仓库,进入"fuzz/"目录并运行cargo run --release来运行。crate使用所有可用的CPU线程,只有当出现意外不同的结果时才会停止。您还可以指定随机生成和大小测试输入的最大长度;只需将TEST_VECTOR_LIMIT设置为环境变量。 如果您发现意外的不同结果,请复制整个输出并在GitHub上创建一个新问题!😊

恒定时间实现

所有实现都设计为不受时间侧信道攻击的影响,通过在恒定时间内执行所有依赖密钥的计算来实现

有关常数时间实现的更多信息,请参阅此处此处

内存卫生

crypto_api_chachapoly不尝试从内存中删除敏感内容。然而,所有敏感内容都存储在堆分配的内存中,因此如果您使用的是MAProper之类的擦除内存分配器,它们将被删除。

使用擦除内存分配器是个好主意,因为Rust使得跟踪底层内存管理变得相当困难 – 另一方面,内存分配器可以看到堆上发生的所有事情,并相应地处理。

依赖关系

由于此代码实现了crypto_api,因此它依赖于crypto_api-crate。否则,它无依赖。

依赖关系