首页 > 解决方案 > GMP 为中间计算创建的对象是否保留在内存中?

问题描述

我正在尝试使用 GMP 6.2.1 作为用于加密的长整数计算的后端。最好的做法是不要留下任何敏感计算的痕迹超过需要的时间。因此,我想确保 GMP 不会在内存中留下任何内容,但在文档中找不到任何关于它的内容。

我是否正确假设内存中存在两种可能的不需要值的来源:

  1. 将数字重新分配到更大的内存部分。可能由于自我分配而发生,例如mpz_mul (x, x, x);.
  2. GMP 函数内部的中间计算,它们以某种方式与这些函数的操作数或输出相关。

虽然似乎可以通过正确设计客户端代码来避免重新分配,但中间变量困扰着我,至少是那些在堆上分配的变量。GMP在这方面是否有任何明确的保证?

标签: cmemorymemory-managementcryptographygmp

解决方案


GMP为密码学提供了一些低级功能,特别是让您可以控制分配。

对于更高级别的功能,您没有得到任何保证,但您仍然可以通过自定义分配和配置临时分配来改进默认值。


推荐阅读