【发布时间】:2013-02-02 16:51:11
【问题描述】:
来自 libgcrypt 手册:
Libgcrypt 使用一个称为安全内存的概念,它是一个 为存储敏感数据预留的内存。因为这样的记忆是 稀缺资源,需要提前设置成固定大小。 此外,大多数操作系统对如何执行此操作都有特殊要求 可以使用安全内存。例如,可能需要 将应用程序安装为“setuid(root)”以允许分配此类 记忆。 [...] 如果您必须保护您的密钥或内存中的其他信息 防止被换出到磁盘并启用自动覆盖 使用和释放的内存,你需要[...]
我对这个安全内存的工作原理有点困惑。
我正在开发一个软件,它可以进行 aes256-cbc 文件加密,它还计算 IV+CIPHERTEXT 的 MAC(带 sha512 的 hmac)所以我 必须使用安全内存来存储敏感信息。
我对“安全内存”的概念不了解的是:
- 假设我有这个:
unsigned char *key; key = malloc(32);。库如何知道该变量希望安全内存被“分配”? -
“自动覆盖释放的内存”意味着
free(key)将被删除,所以我不需要在释放指针之前memset内存吗?
【问题讨论】:
-
我假设您不会使用
malloc和free来管理安全内存,而是使用其他一些机制。 -
我不知道你在说什么 :( 我是 libgcrypt 的新手!
标签: c cryptography libgcrypt