#constant-time #scicrypt #modular #integer #arithmetic #gmp #length

nightly scicrypt-bigint

实现 *大部分* 适用于模整数常数时间大整数的 scicrypt 库

2 个版本

0.7.1 2022 年 9 月 14 日
0.7.0 2022 年 9 月 11 日

#2014算法


3 个库中使用

MITLGPL-3.0+

77KB
1.5K SLoC

这是 scicrypt 的一部分。有关更多信息,请访问 scicrypt 库的主页。

此库实现了一个 BigInteger,其中大多数算术操作在指定大小的情况下都消耗恒定的时间。此库只不过是对 GMP 的低级常数时间函数的方便包装。

如果库未按预期工作,请考虑使用 --debug 运行,以触发 debug_assert!(),以检查某些低级函数的先决条件是否满足。

几乎所有函数都应在常数时间内运行,并且仅泄露关于输入长度的信息。这也适用于重载运算符(例如,等式是常数时间的)。某些函数 不是 常数时间的

  • 使用 from_string 从字符串初始化
  • partial_cmp_leaky
  • lcm_leaky
  • mod_u_leaky
  • set_bit_leakyclear_bit_leaky
  • is_probably_prime_leaky

为了使代码更容易阅读,可以在 UnsignedInteger 上调用 leak() 来获取一个支持重载运算符的 LeakyUnsignedInteger

我们对随机数生成不确定。此外,请注意,除法可能会泄露一些有关结果值大小的信息。

依赖关系

~21MB
~491K SLoC