来自libgcrypt手册:
Libgcrypt使用了一个名为“安全内存”的概念,它是为存储敏感数据而预留的内存区域。因为这样的内存是一个稀缺的资源,所以它需要预先设置到一个固定的大小。此外,大多数操作系统对如何使用安全内存有特殊的要求。例如,可能需要将应用程序安装为“setuid(Root)”,以允许分配这样的内存。..。如果您必须保护您的密钥或内存中的其他信息不被交换到磁盘,并启用自动覆盖已使用和释放的内存,您需要.
对于这个安全的内存是如何工作的,我有点困惑。
我正在开发一个软件,可以对sha512文件进行加密,并计算IV+CIPHERTEXT的MAC (hmac ),因此i必须使用安全内存来存储敏感信息。
对于“安全内存”的概念,我不理解的是:
unsigned char *key; key = malloc(32);。库如何知道这个变量希望安全内存被“调出”?free(key)将被擦除,所以在释放指针之前我不需要设置内存,对吗?发布于 2013-02-02 20:07:20
只需继续阅读您复制和粘贴的同一页:http://www.gnupg.org/documentation/manuals/gcrypt/Initializing-the-library.html
下面是如何初始化库的示例。
一般来说,安全的内存是用mlock锁定的,所以不能分页。
库当然不知道程序其他地方的malloc调用,请查看它的文档以了解如何使用它。
https://stackoverflow.com/questions/14664147
复制相似问题