作者:奶油。 | 来源:互联网 | 2023-08-11 16:49
继 Linux 5.13 后,Linux 5.14 也将支持创建秘密内存区域。
该功能通过 memfd_secret() 实现。memfd_secret() 是一个专门的系统调用,而不是 memfd_create() 的扩展,其目的是允许用户创建更安全的内存映射,而不是简单地允许基于文件的内存访问。根据描述,memfd_secret() 创建的秘密内存区域仅拥有进程可见,而不会映射到其他进程或内核页表。因此其可用于在 Linux 上为用户空间中的 OpenSSL 存储私钥,并减少私钥不受任何其他硬件加密保护时在系统内存中暴露的可能性。
这项工作起源于 IBM 工程师 Mike Rapoport,他在 2019 年为 Linux 内核内存管理代码提出了一个 "MAP_EXCLUSIVE" 标志,以支持只有拥有进程才能看到的映射,而 memfd_secret() 的秘密内存支持是对同一概念的进化。
目前,memfd_secret() 支持已于周五合并为 Andrew Morton 补丁的一部分。不过,该版本仍默认禁用对 memfd_secret() 的访问,需要在启动内核时打开 secretmem_enable 选项才能启用此功能。