读完paper,谈谈感想# Stock
y*d
1 楼
对于好学的同学,可以去这个地方看paper和相关信息
https://spectreattack.com/
其他同学可以听我掰一掰(不保证正确)
首先,要说这两种攻击都是非常聪明、非常赞的!读这两个idea,让人眼前一亮,有如
醍醐灌顶!
话说从头,在大约60年代的时候,IBM发明了一个让CPU跑得更快的技术,叫做out of
order (OOO) execution。过了几十年了,这个东东大概还是处理器设计里面最复杂、
最tricky的那一块。
OOO有一个加强版叫做branch prediction。这次发现的两个漏洞里,有一个用了OOO,
另一个用了branch prediction。
OOO可以在不提高频率的前提下,让单线程的程序跑得更快,但是代价是成本高(占用
大片芯片面积)耗电多。
因为成本的原因,过去只有高大上的处理器才用得起OOO。IBM很贵的main frame在60年
代就用了。叉86要到90年代才上Superscala,大概是486的时候才用上OOO,branch
prediction要奔腾才有。ARM大概是最近两年才有的OOO。
现在,基本上常见的CPU都已经有OOO和branch prediction了。GPU没有用OOO,所以这
次不受影响。
等到INTC,AMD,ARM搞OOO的时候,IBM的专利(如果有的话)大概早就过期了。这几家的
设计师,在上大学的时候,当然也都学过IBM的OOO设计。所以,基本上,就是直接照抄
了。
https://en.wikipedia.org/wiki/Tomasulo_algorithm
OOO会执行一些本来按照正常程序逻辑不会执行到的指令,这是这个技术的known issue
。但是这些指令的执行结果最终会被丢掉。所以,过去几十年没人觉得这是一个问题。
(除了耗电)
最近几年,有人发明了一些技术,可以通过指令的side effect(而不是指令的结果)
来读出内存里的内容。那些被OOO执行了的,不该执行的指令,虽然结果被丢掉了,但
是有些side effect却可以被detect到。攻击者可以通过这些side effect来找出那些被
丢掉的结果。
这次的两种攻击方式里,第一种用了intc的一个特色设计,让OOO把恶意指令当作操作
系统指令来执行。虽然,恶意指令的结果被丢掉了(攻击者看不到),但是恶意指令的
side effect却可以被测试到。这样,攻击者可以让恶意指令去读你电脑里任何想读的
内容(比如你的bitcoin钱包的的私钥),然后通过这些Side effect把信息传递出来。
第二种利用了branch prediction,来诱导正常的程序(包括操作系统,或者比特币钱
包软件)执行本来不该执行的指令,然后同样通过检测这些指令的side effect来读取
受保护的数据。
结论,
1. 这个东西的root cause是OOO的side effect(特别是污染cache)。因为所有现代
CPU(intc,amd,arm,qcom,aapl)的OOO设计都是跟IBM学的,所以都有这个问题。
2. 如何利用OOO的side effect进行攻击,需要一些奇思妙想,但是潜在的方法一定不
止现在发现的这两个。
3. AMD和ARM对第一种攻击免疫,因为第一种攻击需要用到INTC的特色设计。但是第二
种攻击可以攻击AMD/ARM等等一切现代CPU。所以,AMD的声明是非常非常misleading的
4. 第二种攻击的难度比第一种高,也相对好防一点。这就是AMD今天得瑟的本钱。但是
如第二条所说,现在是潘多拉的盒子被打开了。我估计第三种、第四种攻击很快就会被
发明出来,AMD并不会比INTC更安全。因为根本的root cause是半个世纪前IBM就放进去
了。AMD不过是50步笑百步而已。
5. 这次这个事情,对于IT行业overall应该是个好事,因为有些人要被迫升级电脑手机
了。带来一票刚需。
6. 近期AMD估计会比INTC表现稍好一点,但是我不建议版友因此压注AMD。能够更有效
地攻击AMD的方法迟早会被发明出来。
7. 对于不造处理器的厂家,比如造显卡、内存、主板、显示屏啥的,应该算是个利好
吧。
8. 一个用了半个世纪,被人研究烂了的东西,一样可以有很严重的bug。BITCOIN这种
才发明了不到10年的东西,大家还是悠着点,别把身家押上去。
https://spectreattack.com/
其他同学可以听我掰一掰(不保证正确)
首先,要说这两种攻击都是非常聪明、非常赞的!读这两个idea,让人眼前一亮,有如
醍醐灌顶!
话说从头,在大约60年代的时候,IBM发明了一个让CPU跑得更快的技术,叫做out of
order (OOO) execution。过了几十年了,这个东东大概还是处理器设计里面最复杂、
最tricky的那一块。
OOO有一个加强版叫做branch prediction。这次发现的两个漏洞里,有一个用了OOO,
另一个用了branch prediction。
OOO可以在不提高频率的前提下,让单线程的程序跑得更快,但是代价是成本高(占用
大片芯片面积)耗电多。
因为成本的原因,过去只有高大上的处理器才用得起OOO。IBM很贵的main frame在60年
代就用了。叉86要到90年代才上Superscala,大概是486的时候才用上OOO,branch
prediction要奔腾才有。ARM大概是最近两年才有的OOO。
现在,基本上常见的CPU都已经有OOO和branch prediction了。GPU没有用OOO,所以这
次不受影响。
等到INTC,AMD,ARM搞OOO的时候,IBM的专利(如果有的话)大概早就过期了。这几家的
设计师,在上大学的时候,当然也都学过IBM的OOO设计。所以,基本上,就是直接照抄
了。
https://en.wikipedia.org/wiki/Tomasulo_algorithm
OOO会执行一些本来按照正常程序逻辑不会执行到的指令,这是这个技术的known issue
。但是这些指令的执行结果最终会被丢掉。所以,过去几十年没人觉得这是一个问题。
(除了耗电)
最近几年,有人发明了一些技术,可以通过指令的side effect(而不是指令的结果)
来读出内存里的内容。那些被OOO执行了的,不该执行的指令,虽然结果被丢掉了,但
是有些side effect却可以被detect到。攻击者可以通过这些side effect来找出那些被
丢掉的结果。
这次的两种攻击方式里,第一种用了intc的一个特色设计,让OOO把恶意指令当作操作
系统指令来执行。虽然,恶意指令的结果被丢掉了(攻击者看不到),但是恶意指令的
side effect却可以被测试到。这样,攻击者可以让恶意指令去读你电脑里任何想读的
内容(比如你的bitcoin钱包的的私钥),然后通过这些Side effect把信息传递出来。
第二种利用了branch prediction,来诱导正常的程序(包括操作系统,或者比特币钱
包软件)执行本来不该执行的指令,然后同样通过检测这些指令的side effect来读取
受保护的数据。
结论,
1. 这个东西的root cause是OOO的side effect(特别是污染cache)。因为所有现代
CPU(intc,amd,arm,qcom,aapl)的OOO设计都是跟IBM学的,所以都有这个问题。
2. 如何利用OOO的side effect进行攻击,需要一些奇思妙想,但是潜在的方法一定不
止现在发现的这两个。
3. AMD和ARM对第一种攻击免疫,因为第一种攻击需要用到INTC的特色设计。但是第二
种攻击可以攻击AMD/ARM等等一切现代CPU。所以,AMD的声明是非常非常misleading的
4. 第二种攻击的难度比第一种高,也相对好防一点。这就是AMD今天得瑟的本钱。但是
如第二条所说,现在是潘多拉的盒子被打开了。我估计第三种、第四种攻击很快就会被
发明出来,AMD并不会比INTC更安全。因为根本的root cause是半个世纪前IBM就放进去
了。AMD不过是50步笑百步而已。
5. 这次这个事情,对于IT行业overall应该是个好事,因为有些人要被迫升级电脑手机
了。带来一票刚需。
6. 近期AMD估计会比INTC表现稍好一点,但是我不建议版友因此压注AMD。能够更有效
地攻击AMD的方法迟早会被发明出来。
7. 对于不造处理器的厂家,比如造显卡、内存、主板、显示屏啥的,应该算是个利好
吧。
8. 一个用了半个世纪,被人研究烂了的东西,一样可以有很严重的bug。BITCOIN这种
才发明了不到10年的东西,大家还是悠着点,别把身家押上去。