佐治亚理工学院的一组研究人员开发了一种概念验证侧通道攻击,允许从一个解密文件中为现代版本的OpenSSL提取加密密钥。
研究人员能够在几秒钟内从处理器无意中产生的移动设备模拟信号中检索加密密钥,而无需对设备进行物理访问。私有RSA加密密钥是从加密软件程序OpenSSL(特别是1.1.0g版本)中提取的。
“这种方法是在两个移动电话和一个嵌入式系统上使用电磁发射来演示的,并且在固定窗口RSA实现中只有一次解密后,它恢复了足够的秘密指数位,以便能够非常有效地(在几秒钟内)重建完整的私人RSA密钥。”研究人员在USENIX 上发表的研究论文中说。
侧信道攻击会提取一些敏感信息,比如加密密钥,从计算设备的电子活动中产生的电子活动的信号,以及它们执行计算时的信号。可发起侧通道攻击的技术有许多种,包括使用缓存,分支预测器或模拟信号。
在实验示例中,研究人员对两部Android手机和一块嵌入式系统板发起了PoC攻击,所有ARM处理器的频率都在800MHz到1.1GHz之间。这些频率包含在低于1,000美元的商用紧密的软件无线电(SDR)接收器(如Ettus B200-mini)的信号捕获功能中。研究人员将接收器放置得“非常近”,但没有与未打开的手机壳进行物理接触(对于嵌入式系统板,他们将探头放置在距离大约8英寸的位置); 从那里,他们能够捕获来自处理器的电磁信号。
“该攻击在模幂运算期间从模拟信号中恢复指数的位,这些信号是由处理器无意产生的,因为它执行构造指数中每个'窗口'的值的恒定时间代码,而不是对应于平方的信号/乘法和表查找操作期间的乘法运算和/或缓存行为,“研究人员解释说。
目前研究者的技术能正确地从信号中恢复了95.7%到99.6%(取决于目标系统)的秘密指数位。当指数的位仅从整数大小的组(数十位)中的指数获得,而不是一次获得一位时,这个问题就可以得到缓解。
“这种缓解措施是有效的,因为它迫使攻击者尝试从一个简短的信号片段中恢复数十比特,而不是为每个单独的位提供单独的信号片段。”缓解措施已被提交给OpenSSL,并于5月20日将一个集成补丁合并到OpenSSL源代码的“主”分支中。实现将需要相应地更新其代码。