1
shansing 2020-04-18 22:56:19 +08:00
虚拟机既然模拟了完整的硬件环境,应该是可以读取内存的吧。你只提供虚拟机镜像文件吧?再不济 VirtualBox 是开源的,总有办法改个源码(如果不用插件,我不知道有没有)调试内存吧。
等一个专业回答。 |
3
Jirajine 2020-04-18 23:06:57 +08:00 via Android
当然可以,memory dump 是虚拟机的基本功能了,你再怎么加密也总要解密读到内存里,要确保安全只能物理隔离。
但谁会闲的蛋疼这么搞,重要的代码用编译型语言重写不费事吧,不过仍然不能确保你内存中的数据安全。 |
4
westoy 2020-04-18 23:10:52 +08:00
问题是流程正义的话, 你分发 debian 本身得把你的 debian 开源给对方啊.....当然你可以把你的程序加密或者写个启动文件远程加载来规避, 但是这套系统自带的加载系统本身也得开源啊.......所以对方很容易顺藤摸瓜搞到执行文件, 在不在虚拟机里有什么区别......
|
5
wzw OP |
7
jakezh 2020-04-18 23:22:34 +08:00 via iPhone
不懂就问,python 在内存里跑的也是编译后的字节码吧,跟编译型解释型有关系吗
|
8
vk42 2020-04-18 23:29:52 +08:00
对 Host 端来说虚拟机就是在裸奔。如果要应用对 OS 保密,可以看看 Intel 的 SGX 或 AMD 的 SEV
|
10
yzwduck 2020-04-18 23:43:28 +08:00 1
如果敌手能控制虚拟机,拍个快照就能保存所有内存信息,并且是没有加密的。里面肯定有:
1 、Python 代码在内存的缓存; 2 、LUKS 的 解密密钥。 从内存快照读出上述信息有一定难度,但完全可行。甚至还可以修改内存。 我觉得更容易的攻击方式是,虚拟机的 LUKS 是如何解密的?如果解密密钥放在虚拟机内,并且敌手能挂载虚拟磁盘的引导分区,那么密钥就很简单地读取出来, 不必折腾内存。 |
11
wzw OP @yzwduck #10 密钥是用 Go 来写的, Go 调用 yubikey,判断是否可以解密磁盘. 密钥在 Go 程序里面
|
12
yzwduck 2020-04-18 23:58:34 +08:00
如果敌手能够独立地运行虚拟机(比如拥有 yubikey ),理论上他就能够自行解密出所有内容,除非他卡在程序被混淆、自身技术不足等问题上。
|
16
wzw OP |
17
hanssx 302 天前
楼主最后怎么解决的,我最近也想这么弄。
|
19
hanssx 302 天前
|