4 个版本 (2 个破坏性更新)
0.3.1 | 2021年10月25日 |
---|---|
0.3.0 | 2020年10月29日 |
0.2.0 | 2020年10月1日 |
0.1.0 | 2020年9月22日 |
#1861 in 密码学
每月151次下载
用于 pvss
2.5MB
54K SLoC
ECCoxide -- Rust椭圆曲线密码学
通用椭圆曲线密码学
设计空间
该软件包的目标是提供所有必要的椭圆曲线密码学功能,以便进行实验和编写新的协议,基于有合理保证的模块。
有限域基本算术所需的原语由形式化编写/生成的Rust模块 fiat-crypto 提供,旨在提供正确、安全且固定时间函数以实现这些有限域。
一些其他部分已经通过算法生成,以便增加支持的特性数量并减少提供各种曲线的完整功能集所需的工作,但没有任何保证是最快的。
该软件包依赖于以下优先级列表
使其工作,然后使其安全,然后使其快速
最后,我们依靠其他算术工具(例如sage和magma)提供对预期值的进一步保证。
曲线
目前,大多数SEC2曲线通过fiat-crypto支持
- p256r1, p256k1, p384r1, p521r1
- p190r1, p190k1: 不特别推荐,因为大小原因
特殊情况
- p224k1: p=5 mod 8,使用替代方法进行sqrt计算
- p224r1: p=1 mod 8,使用tonelli shanks算法进行sqrt计算
可选地,有人可以通过启用sec2-small功能启用190位以下的SEC2曲线(112位到160位),但这些曲线的大小太小,不适合正常设置。此外,这些曲线使用通用后端num-traits和num-bigint,既不快也不安全。
未来计划包括支持ed25519、ed448、curve9767和其他edwards曲线,也许还有其他。
常见问题解答
Q: 使用形式化生成的模块会使这个软件包更安全吗?A: 不,虽然它提高了基本保证的正确性,但它也基于假设正确的模型。它还依赖于rust/llvm编译器不引入各种优化/代码更改,这些更改可能会破坏某些属性(例如固定时间)并最终还有大量粘合代码被手动编写,以提供高级可用的ECC。
⚠️ 声明
这不是一个可直接用于生产代码的软件包。请参阅TODO.md。