SGX内存访问控制
下图是Foreshadow Slide里面的图,EPCM是EPC内存访问控制的其中一环,EPC访问控制(广义上如此。狭义上的EPC访问控制应该就只是单纯的EPCM所作的访问控制了)还包含了页表访问控制、PRM的访问控制等。
这张图说明了,首先查走页表,如果走页表出问题,那么就#PF。
然后检查如果不是Enclave模式,那么就不允许访问PRM(PRM是系统软件也无权访问的地方,Abort Page)。
如果是Enclave模式使用了非ELRANGE的内存,那么确保物理地址不在PRM中,不然无权访问(Abort Page)。
如果是Enclave模式,并且VA在ELRANGE中,那么就要求PA在EPC中,不然就#PF。如果PA在EPC中,就需要和EPCM之前记录在册的VA-PA等信息进行匹配,匹配了才放行。
所以EPC的访问控制包含了页表访问控制、PRM访问控制、EPCM访问控制这三大类。
多了一层虚拟机的内存访问控制如下图所示(来自于Foreshadow NG,多了一层EPT,即虚拟机所用到的GPA->HPA的Extended Page Table),下图中相较于上图部分细节省略了。
下图是AsyncShock中画的图,比上面两张图简略。