gpt4 book ai didi

等效的 CryptProtectMemory 的 Linux

转载 作者:IT王子 更新时间:2023-10-29 00:48:37 28 4
gpt4 key购买 nike

当我的进程内存将被调出时,我试图保护我的内存中数据免受交换文件读取。

我知道 Windows SDK 中的 CryptProtectMemory() 可用于加密内存缓冲区。

我在 Linux 上找不到这样的功能,请知道的人告诉我。

我们可以使用 mlock() 这样内存就不会被调出,但这是否意味着我的 secret 是安全的?

最佳答案

Linux 中与 CryptProtectMemory() 最接近的等效项是 gcry_malloc_secure()libgcrypt 中。分配的安全内存将被锁定在内存中; gcry_free() 会将其置零并解除分配。其他加密库也有类似的调用,例如模板 secure_vector在牡丹。

另一种方法确实是使用较低级别的 POSIX 调用 mlock()在整个缓冲区上。不过,将缓冲区归零的负担由您承担。您必须手动调用 memset() ) 当不再使用缓冲区或程序终止时。

CryptProtectMemory() 似乎与上述两种方法略有不同:它创建一个小的随机 session key 并使用它来加密缓冲区。好处是您只需要锁定并最终清零 key 所在的非常小的页面,而不是整个缓冲区。如果缓冲区非常大,那可能会有所不同。但是,我们将无法操作或处理缓冲区中的数据。当 secret 数据可交换时,还有一个小时间窗口。

关于等效的 CryptProtectMemory 的 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12052942/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com