2个版本
0.1.1 | 2021年11月29日 |
---|---|
0.1.0 | 2021年6月4日 |
#396 in 内存管理
14KB
89 行
钠分配器
Rust Allocator
类型,使用 Sodium 的加密内存工具分配内存。
需要nightly Rust,因为 Allocator
API 尚未稳定。
此库实现了 SodiumAllocator
,这是一个 Allocator
,它使用 sodium_malloc
和相应的 sodium_free
函数来管理内存。在内存中管理敏感数据时,我们可以采取一些步骤来帮助加强我们的软件以防止泄露这些秘密。
Sodium的 sodium_malloc
实现将许多这些加固步骤引入内存管理过程:分配的内存放置在页面边界末尾,紧跟着是一个保护页(标记为不可访问的内存区域,任何尝试访问它都将导致程序终止)。在分配的内存之前放置一个哨兵,任何对哨兵的修改在释放时都会被检测到,这同样会导致程序终止,并在其前面放置一个保护页。使用 sodium_mlock
指示操作系统不要将内存交换到磁盘或将其包含在核心转储中。
当使用 SodiumAllocator
释放内存时,将调用 sodium_free
函数,该函数会在标记内存为空闲之前安全地将内存清零。这意味着对于使用 SodiumAllocator
分配的类型,无需实现 Zeroize
或类似的 Drop
实现来在不再使用时清零内存:它在释放时将自动清零。
此库不适用于用作通用分配器或全局分配器:此API的开销比Rust的标准分配器大得多,且实现中更可能遇到错误。它仅用于分配敏感数据类型,例如需要存储在内存中的密钥或密码。
安全/漏洞披露
如果您在sodium-alloc中找到漏洞,请立即联系@tom25519.pm@me
并提供详细信息。
我的age公钥(首选)是
age1gglesedq4m2z9kc7urjhq3zlpc6qewcwpcna7s0lwh8k2c4e6fxqf3kdvq
我的PGP公钥指纹为0x4712EC7C9F404B14
,可在keyserver.ubuntu.com、pgp.mit.edu或Github找到。
许可证
根据以下任一许可证授权
- Apache License, Version 2.0 (LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的任何贡献,旨在包含在作品中,将按上述方式双授权,不附加任何额外条款或条件。
依赖项
~2–3.5MB
~27K SLoC