我想防止我的本地托管公司可能盗窃我的 Web 应用程序(源代码 + 数据库),由于某种原因我不完全信任(但别无选择,只能使用他们提供的,到目前为止,最好的延迟在这里)。
我打算用 加密一个分区cryptsetup
,并将 web 目录 + 数据库文件存储在那里。
唯一的问题是我必须在每次重新启动时解锁分区(甚至是不受控制的分区),然后才能启动 Web 和数据库服务器;但我想我现在已经准备好接受它了。
然而,据我所知,加密密钥按原样存储在内存中,并且可以在对机器进行物理访问的情况下读取,甚至可以从使用冷启动攻击的专用机器上读取。在虚拟机上,我想这更简单,因为管理程序可以拍摄整个服务器状态(存储 + RAM)的快照。
据我所知,进行内存转储并随时找到加密密钥应该很容易。
有什么办法可以防止这种情况发生吗?
我知道控制虚拟机管理程序会给试图窃取数据的人带来巨大的优势,因此我并不是在这里寻找完美的解决方案。但我宁愿尽可能地让访问数据变得困难,这样花时间和资源来获取它们在经济上是不可行的。
我在这里并不乐观,因为加密密钥必须以某种形式存储在内存中以进行解密,但我希望我错过了一些东西。
编辑 - 澄清
从我下面的评论中:
我确信托管公司的管理程序不会以任何方式进行修改以执行任何恶意操作;他们的业务是托管,不是偷东西,而且公司比较值得信赖。我试图防止有人贿赂员工向他们出售数据快照。只要加密密钥无法从库存管理程序可以执行的任何快照中恢复,我认为该解决方案对于我的用例来说已经足够好了。