如果错过了5月发布的OpenSSL更新,赶紧回去打上:佐治亚理工学院的安全团队利用智能手机处理器无线信号恢复出了OpenSSL密钥,擦身而过的一瞬间,2048位的RSA密钥便被盗了。
好消息是,该名为“One&Done”的攻击针对的是去年11月发布的 OpenSSL 1.1.0g,而该版协议使用的库此后已经更新过了。
研究人员只需要一个相对廉价的简易 Ettus USRP B200 迷你接收器(售价低于1000美元)来捕捉三星Galaxy手机放出的无线信号噪音,一部阿尔卡特Ideal手机,一台 A13-OLinuXino 单板计算机,就可以进行该攻击。
佐治亚理工学院的声明中,该团队阐述称,该攻击是首个无需利用缓存计时或缓存组织的OpenSSL破解。
讽刺的是,该攻击点是因为之前OpenSSL指数运算处理中潜在的边信道漏洞而产生的。为抵御对OpenSSL指数依赖平方乘序列的攻击,人们之前采用了所谓的“固定窗口取幂”例程。
OpenSSL GitHub 上的一条评论阐述了该漏洞:
将在今年Usenix安全大会上亮相的One&Done攻击,利用了电磁辐射来恢复构造BN_mod_exp_consttime窗口值时通过BN_is_bit_set获得的比特位的值。
该位上数值不同,电磁信号会略有改变,而由于对该位的查询被高度规律的运算执行操作所包围(固定时蒙哥马利乘法),该攻击能够从随该位数值变化的信号中分离出这(非常简短)的一部分。
佐治亚理工学院团队恢复出该位数值变化的成功率高于90%,并使用了改良版的“分支与整合”方法来恢复出整个RSA密钥。
好消息是,该攻击的缓解措施不仅相对简单,还能提升OpenSSL的性能——可以略微缩短取幂运算的执行时间。
我们的缓解基于同时获取到一个窗口的所有比特位,而不是一次抽取一个比特。对攻击者而言,这意味着要从信号中抽取的值有数十亿种可能性,而可用于恢复的信号样本数量却还是跟最初做二进制(单比特)决策时所用的相同。
“固定窗口取幂”例程论文地址:
https://pdfs.semanticscholar.org/bbc0/523ea9fa38e67dc7dc9069724c48d6160211.pdf