如果没有正式验证在ring0中运行的程序,如何确保安全性?可以在没有不同用户空间内核空间的情况下使用VM吗?
答案 0 :(得分:1)
问题有些令人困惑,但我会尽力回答。
在大多数人理解的情况下,以特权模式运行任何不受信任的代码不太可能是“安全的”。但是,正如您所猜测的那样,可以使用类似于虚拟机的东西来缓和不受信任的进程在该环境中可以采取的操作。这是现代“管理程序”运行的原则 - 通过某些“监视器”软件或硬件来控制对硬件(或存储器)的访问。
也就是说,如果您采用这种方法,可能会出现非常需要对虚拟机进行形式验证的情况。否则,恶意构造的程序似乎可能找到逃离虚拟机的方法,或使虚拟机以不合需要的方式运行。
解决这个问题的一个合理的现代方法是使用携带代码的证明,其中一段不受信任的代码带有机器可检查的证据,证明它根据某些安全策略行事。此时所有主机操作系统需要检查代码的证明(合理的计算上廉价的操作),然后运行该代码是安全的,无需虚拟化它或进行任何运行时检查。