繁体   English   中英

防止RAM分页到交换区域(mlock)

[英]Prevent RAM from paging to swap area (mlock)

有没有办法从Python调用POSIX mlock函数 mlock的作用是禁用交换某些对象。

我知道在保护加密密钥方面还存在其他问题,我只想知道如何将它们包含在RAM中。

对于CPython,没有好的答案,不涉及编写Python C扩展,因为mlock适用于页面,而不是对象。 即使你使用ctypes检索所需的地址和mlock -ed他们都通过ctypes mlock调用,你就会有一个时间确定何时地狱mlock以及何时munlock 您需要知道所有受保护数据类型的内存地址和大小; 因为mlock的工作原理上的网页,你必须仔细跟踪多少个对象在任何给定的网页目前(因为如果你只是mlockmunlock盲目,有一个以上的东西在一个页面锁定,第一munlock将解锁所有这些; mlock/munlock是一个布尔标志,它不计算锁定和解锁的数量)。

即使你管理它,你仍然会在数据获取和mlock之间进行竞争,在此期间可以将数据写入交换。

你可以通过仔细使用mmap模块和memoryview来部分避免这些问题( mmap为你提供内存页面, memoryview引用表示内存而不复制它,因此ctypes可以用于mlock页面),但是你必须构建这一切都是从零开始。

简而言之,Python并不像你想要的那样关心交换或内存保护; 它信任交换文件被配置为您所需的安全性(例如禁用或加密),既不提供额外保护也不提供您需要添加的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM