我正在实现一个加密消息的小程序。 为此,我使用 Libsodium。
我需要动态分配敏感数据,为此我使用 Libsodium 函数,
我阅读了文档,对于一些疑问,我在互联网上询问,但我发现我的答案越来越怀疑,所以:
sodium_malloc()
和 sodium_free()
是动态内存分配和清理的函数,同时也考虑到了安全性?
通过安全性,我的意思是,在内存中动态分配的数据不能被尝试访问我的程序正在使用的用
sodium_malloc
分配的内存区域的其他程序读取和/或覆盖;当我在释放内存之前调用 sodium_free
时,它会被覆盖。
在内存中动态分配的数据无法被尝试访问使用odium_malloc 分配的内存区域的其他程序读取和/或覆盖
别开玩笑了,记忆就是记忆。任何拥有足够权限的人都可以随意读取和更改你的记忆。
当我在释放内存之前调用 sodiu_free 时,它会被覆盖
这部分是真的,免费后会归零。
我知道这是一篇 2 年前的帖子,但对于从谷歌来到这里的任何人来说,你可能想尝试一下
sodium_mprotect_noaccess(void *ptr);
sodium_mprotect_readonly(void *ptr);
sodium_mprotect_writeonly(void *ptr);