Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
libgcrypt安全存储器_C_Cryptography_Libgcrypt - Fatal编程技术网

libgcrypt安全存储器

libgcrypt安全存储器,c,cryptography,libgcrypt,C,Cryptography,Libgcrypt,从libgcrypt手册: Libgcrypt使用一个称为安全内存的概念,它是 为存储敏感数据而预留的内存。因为这样的记忆是一种记忆 由于资源稀缺,需要提前将其设置为固定大小。 此外,大多数操作系统对如何实现这一点都有特殊要求 可以使用安全内存。例如,可能需要 将应用程序安装为“setuid(root)”以允许分配 记忆。 […]如果您必须保护内存中的密钥或其他信息 防止被换出磁盘并启用自动覆盖 对于已使用和已释放的内存,您需要[…] 我对这种安全内存的工作原理有点困惑。我正在开发一种软件,该软

从libgcrypt手册:

Libgcrypt使用一个称为安全内存的概念,它是 为存储敏感数据而预留的内存。因为这样的记忆是一种记忆 由于资源稀缺,需要提前将其设置为固定大小。 此外,大多数操作系统对如何实现这一点都有特殊要求 可以使用安全内存。例如,可能需要 将应用程序安装为“setuid(root)”以允许分配 记忆。 […]如果您必须保护内存中的密钥或其他信息 防止被换出磁盘并启用自动覆盖 对于已使用和已释放的内存,您需要[…]

我对这种安全内存的工作原理有点困惑。
我正在开发一种软件,该软件可以对aes256 cbc文件进行加密,同时还可以计算IV+密文的MAC(hmac,带有sha512),因此我必须使用安全内存来存储敏感信息。
关于“安全内存”的概念,我不理解的是:

  • 假设我有:
    unsignedchar*key;key=malloc(32)。库如何知道此变量希望安全内存为“malloced”
  • “自动覆盖释放的内存”意味着
    free(key)
    将被擦除,因此在释放指针之前,我不需要记忆设置内存

  • 只需继续阅读您复制和粘贴的同一页:

    这里有一些关于如何初始化库的示例

    一般来说,安全内存是用mlock锁定的,因此无法调出


    库当然不知道在程序的其他地方有malloc调用,请查看它的文档以了解如何使用它。

    我想你不会使用
    malloc
    free
    来管理安全内存,而是使用其他机制。我不知道你在说什么:(我是libgcrypt的新手!我是n00b:dr(完全)TM永远是规则!