假定你希望知道你老板最近在哪里出差,但是按照公司规定,你是无法知道老板行
踪的。所以你决定尝试窃取这个秘密。
于是,你给老板的秘书打电话说“你能不能帮我查下老板的日程,看看老板在哪里出差,
再帮我去公司客户关系管理系统里面查下,看看那边我名下近期需要拜访的重点客户,
这些可能是需要老板帮忙拜访的。”
秘书很敬业,先是查了老板的日程,发现老板在台北;然后又花了几分钟时间从客户关
系管理系统里把近期需要拜访的台北重点客户名单拿出来。这时,她突然反应过来你是
不应该知道老板现在在哪里的。于是她回电话告诉你“不好意思,我觉得你不应该了解
老板去了哪里。”
你回复道:“那好吧,忘记刚才的一切,现在我想查询一下有哪些台北、台中、台南、
台西的重点客户是我近期需要拜访的?”
因为秘书刚刚已经从系统里查到了台北对应的客户,并且你有权限了解这些,她立即就回
答你:“近期需要拜访的台北重点客户有A,B,C…….”,几分钟后,她再补充:“近期需
要拜访的台中、台南、台西重点客户…….”
通常情况下,从系统里面调取出这些信息需要好几分钟,但是秘书能立即告诉你台北的客
户信息,于是你就知道刚才她在客户关系管理系统里查询的地点是台北,所以你就可以推
测得到老板是在台北出差。最终,秘密就这样泄露了。
CPU执行的过程,有一个很重要的加速优化技术叫做“speculative execution”, 其实就
和以上比喻中秘书的工作方式一样, 她只有在告诉你结果的时候,才发现你不应该了解
这个信息。但是此时,通过下一步执行结果的速度变化, 仍然有可能暴露重要的信息,
这就是所谓的”time based side channel attack(基于时间的旁路攻击)”。
Intel的CPU在服务器市场可能占据了99%,一旦它出了问题,就意味着有很多服务
器上的敏感数据都可能泄露。 因此这是一次非常严重的安全事故,有可能比Heartbleed
更严重。
所以,似乎也解释了为啥软件更新后会引起性能的下降。