这个问题是针对 Unix 和 Linux 的。但它也是编程和安全性。
我的程序将通过几种方式之一(解密密码文件、询问代理等)获得一个清晰的密码或解密密钥,我想确保它在使用后可以从内存中删除之前无法写入交换空间它。我认为这意味着获得不可交换的地址空间。但这通常需要 root 权限,而我的程序需要以非 root 身份运行。这可以在 Unix 中便携地完成吗?在 Linux 中有希望吗?
将系统配置为没有交换空间不是一种选择,因为程序的用户可能没有这样的权限,虽然这可能会使系统更安全,但并非所有系统都可以这样做。
我可以在 C 中完成这部分,尽管在 Python3 中完成它的方法也很好。
我的非 root进程可以获得一些非交换页面以确保安全吗?
我可以防止这个过程被暂停吗? 最好退出而不是写入交换的明确密码。
在 Linux 上使用 mlock http://linux.die.net/man/2/mlock
mlock() 和 mlockall() 分别将调用进程的部分或全部虚拟地址空间锁定到 RAM 中,防止该内存被分页到交换区域。
手册页有更多详细信息。
归档时间: |
|
查看次数: |
898 次 |
最近记录: |