全同态加密(FHE)的硬件加速研究在简化计算任务和复杂计算任务场景下均取得了一定进展,但距离全面实用化仍存在差距,具体分析如下:
不考虑Bootstrapping的场景当计算目标较简单,密文在同态计算过程中积累的噪声增量有限,无需使用Bootstrapping时,FHE主要进行同态加法、同态乘法和同态移位操作,尤其是计算量最大的同态乘法操作,硬件加速效果显著:
- FPGA平台:HEAX表明FPGA平台上的CKKS的同态乘法操作比纯软件实现快100 - 200倍,有两个数量级的提升。公开文献中HEAX的实验数据最有参考价值,从中可知CKKS做一次同态乘法需要0.01ms - 0.02ms。又因为CKKS使用SIMD编码,同态乘法相当于$Napprox4000$次同态的浮点数乘法,因此单次(同态)浮点数乘法耗时$2.5times 10^{-6}-5times 10^{-6}$ms。
- ASIC平台:F1是ASIC平台上的一个硬件架构,实验结果表明比纯软件实现快了至少14,000倍,和HEAX相比,性能也增长了148 - 190倍。不过F1只有RLT仿真模型并没有实体的ASIC流片实验,论文中的实验结果仅供参考。
- GPU平台:GPU平台下的同态乘法性能逊色不少,最好的结果是做一次CKKS同态乘法(相当于65536次加密状态下的浮点数乘法)需7.96ms,比FPGA平台上的结果慢了两个数量级。
- CPU - FPGA异构计算:Intel的方案本质是CPU - FPGA的异构计算,让CPU执行FHE的整体算法框架,让FPGA加速Keyswtich、NTT和inverse NTT这四类运算。Intel将FPGA硬件加速功能抽象成C++ APIs,用户只需要提供FHE或者基于FHE更复杂的应用的软件实现,做较小的改动即可实现FHE硬件加速,但公开资料未提供实际性能数据。
通过对比硬件加速后的同态乘法与现代CPU进行非加密状态下的浮点数乘法性能可知,通过硬件加速,同态乘法的实际性能已经和非同态乘法相当,满足实用化需求。由此可进一步得出结论:对于计算深度有限的计算任务,FHE已经具备了实用化特性。
考虑Bootstrapping的场景当计算目标较复杂时(比如神经网络的随机梯度下降训练),FHE的基本操作不够用,必须支持Bootstrapping,目前不同硬件平台的加速情况如下:
- ASIC平台:做一次Bootstrapping大约耗时14 - 70ms。在此基础上做(同态)逻辑回归训练大约需要2ms,做一次(同态)深度神经网络训练需要460s。和直接在CPU上实现(同态)逻辑回归训练和(同态)深度神经网络训练的结果相比,速度上大约有5000倍的提升。
- FPGA平台:FPGA平台上做一次Bootstrapping比lattigo纯软件实现快了200多倍,比主流的GPU实现快了1.5倍。有研究通过近似公式估算FPGA平台上Bootstrapping的耗时为187ms,同时直接给出了单次同态乘法耗时为1.71ms。由此可见在硬件加速平台上,Bootstrapping的计算时间比同态乘法慢了至少两个数量级,虽然这个结果比软件平台上Bootstrapping比同态乘法慢四个数量级的结论已经有了非常大的提升,但没有改变Bootstrapping计算复杂度制约了FHE在复杂计算任务上的实用化这个结论。
- GPU平台:目前GPU平台上做一次CKKS Bootstrapping最好的结果需要328ms,比纯软件实现快了200多倍,由此可知目前FPGA实现和GPU实现的Bootstrapping性能大致相当。另外,TFHE最重要的GPU实现工作cuFHE在NVIDIA Titan Xp显卡上做一次Bootstrapping需要0.5ms。
- 聚焦加速第三代FHE Bootstrapping:还有一些工作聚焦加速以TFHE为代表的第三代FHE Bootstrapping,针对单个门运算的Bootstrapping。其中FPGA实现的最好结果来自FPT,做一次Bootstrapping需要0.66ms;ASIC实现的Matcha做一次Bootstrapping需要0.2ms。和最好的软件实现TFHE - rs做一次Bootstrapping需9ms相比,硬件实现在计算速度上有一个数量级以上的提高。
不同硬件平台在全同态加密中的性能表现存在差异,FPGA和ASIC在特定操作上加速效果显著,GPU则相对较弱。总体而言,对于简单计算任务,FHE已具备实用化特性;对于复杂计算任务,虽然硬件加速提升了Bootstrapping性能,但计算复杂度仍制约其实用化。