我正在用c++编写一个服务器,它将处理将发送敏感数据的安全连接。
我们的目标是永远不会在内存之外的任何地方以未加密的形式保存数据,并将其保存在内存中定义的空间中(在不再需要时将其覆盖)
分配一大块内存并用它来存储敏感数据是否足够,并确保数据不会泄漏?
发布于 2011-03-21 04:15:48
出自tool that handles passwords手册
mlock()是否是保护敏感信息的适当方式也存在争议。根据POSIX的说法,mlock()-ing一个页面guarantees that it in memory (对于实时应用很有用),并不是说它不在交换中(对于安全应用很有用)。加密的交换分区(或无交换分区)可能是更好的解决方案。
然而,Linux做了guarantee that it is not in the swap,并专门讨论了安全应用程序。它还提到:
但请注意,笔记本电脑和某些台式电脑上的挂起模式会将系统内存的副本保存到磁盘上,而不管内存锁定情况。
发布于 2011-03-21 04:58:40
为什么不使用SELinux呢?那么,除非你告诉它可以,否则任何进程都不能访问其他东西。
我认为如果你要保护一个处理敏感数据的程序,你应该从一个安全的操作系统开始。如果操作系统不够安全,那么您的应用程序就无法修复它。
也许在使用SELinux时,你不需要在你的应用程序中做任何特殊的事情,使你的应用程序更小、更简单、更安全?
发布于 2011-03-21 03:38:27
你想要的是将内存的某个区域锁定到RAM中。请参阅mlock(2)的手册页。
https://stackoverflow.com/questions/5370497
复制相似问题