我正在努力实施加密算法。
我正在使用锁定的内存页来将敏感数据(例如密钥和中间值)锁定在RAM中(永远不会将它们写入交换)。请参阅mmap(2)。
有什么方法可以保护CPU寄存器和其他“中间”内存不被写入交换?
这是一个如何发生这种情况的例子:
加密过程正在运行。另一个过程将在下一步运行。发生上下文切换(此时所有寄存器都放在某处进入RAM)。然后,放置这些寄存器的存储器页面被交换到磁盘。
这是一个潜在的问题,不是吗?
(我是否过度设计了这个?)
一个明显的解决方案是让算法检查交换是否加密,当然。