原文及其作者如下
An Off-Chip Attack on Hardware Enclaves via the Memory Bus Dayeol Lee UC Berkeley Dongha Jung SK Hynix Ian T. Fang UC Berkeley Chia-Che Tsai Texas A&M University Raluca Ada Popa UC Berkeley
本文主要利用在CPU和DRAM之间的内存总线分析地址数据,进而推测密钥信息。因为涉及到内存总线分析,那么我们要保证在访问密钥代码时cache失效,这里描述了一个提高cache失效的方法。
缓存预热
首先,对于多路组相联的Cache,映射到同一组的物理页会发生冲突。那么如果目标程序执行之前,我们把密钥代码映射到的那一组Cache给冲满,那么当程序执行时就会发生冲突。如果密钥代码占用多个页,这多个页分布于不同的组,那么我们就需要进行预热多个组。这会带来很大的延迟,攻击会被检测到。下面作者提到缓存压缩技术。
缓存压缩
由于密钥页的分散,导致我们需要对多个组进行预热,那么试想如果将密钥相关的页都映射到同一个组,这样我们只需要预热一个组,大大加快了时间,甚至可以并行执行。具体来说通过操作系统权限,将密钥对应的逻辑页,映射到同一组,这样就可以加快预热。
不足
由于目标程序并不足够大,假设目标程序共50页,那么cache共25组,每组容纳100页,由于组相联的映射关系,这25组每一组会被均分2页,那么会出现即使我让密钥页映射到同一组,也只能有2页被占用,剩余的98页都是空白,如果我们去预热,需要填充98页,那么我们可以定义98页经常被访问的数据,然后让这个程序的页经过操作系统权限,映射到这一组。那么98页会被经常冲满,给我们的预热工作降低了难度。如果98页被冲满,我们只要保证密钥页没有进入缓存,将其冲出即可。
描述
以上描述基于论文背景,实际上程序在隔离区运行,具体细节可以看论文,这几个概念在文中比较难于理解。