【问题标题】:libgcrypt secure memorylibgcrypt 安全内存
【发布时间】:2013-02-02 16:51:11
【问题描述】:

来自 libgcrypt 手册:

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

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

  1. 假设我有这个:unsigned char *key; key = malloc(32);。库如何知道该变量希望安全内存被“分配”?
  2. “自动覆盖释放的内存”意味着free(key)将被删除,所以我不需要在释放指针之前memset内存吗?

【问题讨论】:

  • 我假设您不会使用mallocfree 来管理安全内存,而是使用其他一些机制。
  • 我不知道你在说什么 :( 我是 libgcrypt 的新手!

标签: c cryptography libgcrypt


【解决方案1】:

继续阅读您复制和粘贴的同一页:http://www.gnupg.org/documentation/manuals/gcrypt/Initializing-the-library.html

有关于如何初始化库的示例。

一般来说,安全内存是用 mlock 锁定的,所以它不能被调出。

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

【讨论】:

  • 我是 n00b :D R(完全)TM 永远是规则!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 2014-05-10
  • 1970-01-01
  • 2013-12-03
  • 2015-02-27
  • 1970-01-01
相关资源
最近更新 更多