云计算云计算FPGA的重大安全隐患:无需漏洞也能攻破( 二 )


【云计算云计算FPGA的重大安全隐患:无需漏洞也能攻破】 这篇论文的全文和大会报告 , 已上传至知识星球“老石谈芯 - 进阶版” , 请于文末扫码进入星球查看 。
简单来说 , 攻击者可以在FPGA上实现一些消耗大量功耗的电路 , 由此会引发芯片上电压的下降 。 由于使用同一个FPGA的用户共享芯片上的供电网络 , 这种电压下降会波及到FPGA上其他用户的设计区域 。 值得注意的是 , 这种利用电压进行攻击的方式会无视多租户之间相互独立的逻辑区域 。
一旦电压下降过大 , 就会带来很多问题 。 其中最主要的问题 , 就是会造成电路延时的增加 。 这样一来 , 原本时序收敛的设计就不能满足时序 , 从而造成各种错误的功能和计算结果 。
例如 , 对于常见的加法运算来说 , 它的关键路径取决于最长进位传播(carry propagation)的时间 。 正因此 , FPGA中内置了固化的进位链结构 , 以提高进位传播的速度 。 然而 , 一旦电路延时增加 , 可能会导致时钟沿到来时 , 加法的进位尚未完成传播 , 由此导致计算结果出现重大误差 。
下图就是一个行波进位加法器(Ripple Carry Adder)的例子 , 它计算四位二进制加法1111 + 0001时 , 应该得到二进制数10000(十进制16) , 但由于电压降低导致延时增加 , 使得进位未能传播到最高位 , 最终得到的结果是00000 。
云计算云计算FPGA的重大安全隐患:无需漏洞也能攻破
本文插图
耗电单元(Power Waster)
可以看到 , 这种电压攻击的关键 , 就是在FPGA上实现某种可以消耗大量功耗的电路 。 数字电路的一个重要知识点是 , 动态功耗和所谓的开关速率(switch activity)呈线性相关 , 也就是下面这个公式中的f 。 因此只要实现一个能高速进行状态切换的电路 , 就能消耗大量功耗 。
云计算云计算FPGA的重大安全隐患:无需漏洞也能攻破
本文插图
基于此 , 这种耗电模块事实上非常简单 , 可以直接用一阶环形振荡器实现 , 见下图 。
云计算云计算FPGA的重大安全隐患:无需漏洞也能攻破
本文插图
实验表明 , 当例化28000个这样的环形振荡器时 , 每个振荡器可以消耗2.2mW的功耗 , 并由此带来芯片上电压的迅速下降 。 在下图中可以看到 , 50微秒之内 , 离这些耗电单元最近区域的电压(黑线)就由1.1V下降到0.85V左右 。 如果离耗电单元稍远 , 也会出现不同程度的电压下降 , 甚至在芯片的边缘部分也会受到波及 。
云计算云计算FPGA的重大安全隐患:无需漏洞也能攻破
本文插图
使用这种电压攻击的方法 , 除了可以对其他用户的电路功能造成破坏之外 , 还可以用来窃取其他用户的加密信息 。 例如 , Tessier教授就展示了如何破解并获取RSA算法的私钥 。 简单来说 , 有一种名为中国剩余定理(CRT , 也称为孙子定理)的算法 , 在实现RSA计算时可以得到4倍的性能提升 。 然而 , 如果在这个过程中通过电压攻击的方法引入错误的计算结果 , 就会简单的反推出RSA的私钥 , 并且这个过程与RSA密钥长度无关 , 且只需要一次迭代就可以完成 。 这个过程的具体细节在本文不再赘述 , 有兴趣的读者可以在知识星球“老石谈芯进阶版”或微博与我互动讨论 。
云计算云计算FPGA的重大安全隐患:无需漏洞也能攻破
本文插图
《孙子算经》中的物不知数问题
FPGA电压攻击的防治策略
如前文所述 , 这种基于大量耗电单元、并导致芯片电压下降和电路延时增加的攻击方式 , 会对使用FPGA的全部用户都造成影响 , 而且不受设计区域划分的限制 。 与之前介绍过的StarBleed漏洞不同 , 这种攻击方法并不利用FPGA芯片本身的设计缺陷 , 而是利用了FPGA的特点 , 大量例化耗电单元并实施攻击 。 因此这种方法理论上适用于任何FPGA 。


推荐阅读