异常,热切和电子
例外是起点
考虑以下伪代码:
x =读取(memory_location_of_os_where_secret_lies)//将导致异常
y = arr [x * 4096] //读取其他基于x的本地内存
CPU的渴望
虽然,第一行是一个例外,并且它永远不应该读取操作系统(OS)内存。 由于在微操作中破坏了指令的优化,在系统发现这是非法访问并清除/删除/清除x的值之前,x仅包含了很小一部分时间的神圣OS内存的值。 。
同时,无论您是否相信,下一行都可以执行了,并且它还可以在操作系统清除x的值并引发异常之前执行。 因此,如果x的值为's',则CPU将访问内存arr ['s'* 4096]。
电子会发热
y的值也将在x被清除后很快被清除,因此攻击者无法再读取x或y。 要知道x的值,我们将检查高速缓存行,并以某种方式猜测x将会是什么。 随后访问arr ['s'* 4096]地址将激活缓存命中中的特定位。 通过检查所有高速缓存地址中哪个地址为“热”,我们可以找到“ s” * 4096的值。然后我们从中进行简单的数学运算并得到“ s”。 接下来,我们一次又一次地执行操作,得到“ e”,“ c”,“ r”,“ e”,“ t”。
From: https://hackernoon.com/meltdown-in-a-nutshell-bda0b79f84a2