Spectre Attacks信息泄漏机制简述
https://spectreattack.com/spectre.pdf (IV. VARIANT 1)
前置:cpu访问过的内存会被装进cache,被cache过的地址读取速度显著高于未cache的
下面是一个很简单的判断逻辑,泄漏过程将会围绕这个逻辑展开:
简单来说就是如果x小于array1_size,就读取array2中array1[x] * 4096下标对应的数值,赋值到y。
现代cpu为了提高执行效率,一般会使用预测执行。在本例中体现为如果cache中没有array1_size的值,cpu会在从内存中取array1_size的过程中猜测分支,提前运行,如果等取回来后发现x符合条件就可以直接返回结果,如果不符合就弃用刚刚的预测,重新走另外一条分支。问题在于在这个过程中,array2[array1[x]* 4096]实际上是被访问了的,即便它不符合条件,其对应地址也已经被装载进了cache中。
通过这一个特性,我们可以计算x来指定array1[x]为array附近地址的某一秘密值k。接着,array2[k*4096]对应的地址被访问且被装载进cache,通过扫描各地址的访问时延即可获得k的值。
评论已关闭