【技术分享】(全)同态加密底层算子NTT的FPGA加速





隐私计算




数据已经成为数字经济时代最重要的生产要素,成为企业和机构的核心资产,而数据价值的体现则是数据的隐私保护。传统的面向静态数据保护的安全手段已经没法知足数据在跨企业、跨机构之间流通的需求。隐私计算做为新兴技术为数据的安全流动提供了新的可能性,即便在数据融合、计算的过程当中,也能够保证数据的隐私。git


密码学是隐私计算技术一个重要的方向,其中使用较为普遍的几个领域为安全多方计算(secure Multi-Party Computation),同态加密(Homomorphic Encryption)和零知识证实(Zero-Knowledge Proof)。这三种密码学技术分别适用于不一样的场景,技术上也有不一样的优劣势。所以在具体的解决方案中每每是多种技术的组合在不一样的环境下,知足不一样的需求。github


安全多方计算(MPC)是由图灵奖得到者姚期智院士于1982年提出的概念。经过将近40年的发展,在理论和工程上都获得了长足的进步。以秘密分享(Secret Sharing),混淆电路(Garbled Circuit)和不经意传输(Oblivious Transfer)等技术为主的MPC协议中(从广义的概念上来看,同态加密和零知识证实也能够归于安全多方计算的范畴),每每网络通讯上的代价要大于计算的代价在合适的网络条件下基于上述技术的MPC协议的实际性能也能知足许多实际的需求。web





同态加密




同态加密(HE)是Ron Rivest, Leonard Adleman, 以及Michael L. Dertouzo在1978年提出的概念。与传统的加密算法的区别在于,除了加密和解密算法以外,还支持同态计算算法。即,能够在密文上进行计算,计算后解密可等价于先解密后计算。同态加密具备很是多的应用,一个典型的应用就是安全外包计算,以下图。因为同态加密对于网络通讯的要求较低,所以也能够作为MPC的一个组件来支持不一样的协议。算法


 


同态计算有多种分类。加法同态加密(只能支持加法的同态操做,好比Paillier),乘法同态加密(只能支持乘法的同态操做,好比ElGamal),深度受限的同态加密(能够同时支持加法和乘法,可是电路的深度有限制,好比BGV/BFV/CKKS/TFHE等),全同态加密(能够支持全部的计算,加法和乘法,同时深度不受限制,好比BGV/BFV/CKKS/TFHE + Boostrapping)。安全


全同态加密(Fully Homomophic Encryption)一直被称为密码学的圣杯,直到2009年才由Craig Gentry给出第一个基于格理论的方案。此后几乎全部的全同态加密方案都是在该框架下进行优化和改良。在Craig Gentry的开创性工做之上,(全)同态加密方案在算法性能上有了极大的提高,而且已经开始应用到隐私机器学习、深度学习等领域。微信


虽然算法上的性能有了很大提升,可是同态加密的计算复杂度仍然很是高。与明文的操做相比,密文同态的操做要超出4-5个数量级。如何从硬件的角度对同态加密算法进行加速已经成为很是迫切的需求,性能的提高也直接推进同态加密在各种复杂场景的应用。网络





数论变换NTT




几乎如今全部的具有复杂同态计算能力的(全)同态加密算法都是基于格理论(Lattice)的。其安全性都可基于Learning With Error(LWE)或者Ring Learning With Error(RLWE)这两类困难问题上。从表现来看,这类同态加密算法的基本操做都会涉及到维数较大的整系数多项式的加法和乘法对于基本操做的性能提高,能够直接提高整个加密方案的性能,甚至提高倍数还具备放大效应。app


平凡的算法计算两个N次多项式的加法的复杂度为O(N),乘法的复杂度为O(N2),所以多项式乘法是基本操做中更耗性能一个操做。为提高多项式乘法的计算性能,经常使用的作法是采用数论变换(Number-Theoretic Transform,NTT),能够将乘法的复杂度降为O(NlogN)框架


NTT 其实是傅立叶变换(FFT)的一个变种,其优点在于能够直接对整数进行处理,无需考虑浮点数中的存储以及精度问题。另外对大整数(针对同态的场景)的运算能够经过中国剩余定理转换为多个独立的小素数的NTT,所以该算法也很是适合FPGA的并行优化。dom





NTT的FPGA加速




NTT中最重要的部分为蝶形运算

为在FPGA中实现蝶形预算,矩阵元设计专门的处理单元(Processing Element,PE以及与之匹配的交换网络,结合状态机等组成一个完整的NTT模块。多个NTT模块经过链接器(connector)与片外存储(off chip memory)DDR进行交互。


除此以外,矩阵元在第一版的NTT加速的框架中,进行了如下几点的优化:


  • 驱动层,接口层进行了优化,使用了QDMA等方法,极大的下降了数据在Host端与FPGA端的传输耗时。传输的时间仍然占整个计算时间的70%左右,传输时间仍然还有优化的空间。

  • 针对多NTT模组,经过大量测试,获取不一样数量NTT模组并行时系统的性能数据。最后肯定了资源占用/性能提高最为合适的模组数目,矩阵元硬件加速框架目前含有4个NTT模组,每一个NTT模组含有16个PE。

  • 在FPGA端,多NTT模组并行时对片外存储(off chip memory)的操做会产生读写冲突。NTT模组数目越多,读写冲突越严重。矩阵元在这方面也作了相应的优化处理,减小读写冲突。


矩阵元硬件加速框架采用Xilinx Alveo U250加速卡,Host端CPU为Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz。目前的性能数据以下。其中 为多项式维度,模数为51比特的q = 0x7FFFFFFFE0001UL,CPU的NTT实现使用目前较快的软件库 NFLlib (https://github.com/quarkslab/NFLlib)。



系统资源占用数据以下:



LUT

Look-Up Table 查找表

LUTRAM

Look-Up Table Random Access Memory 查找表内存

FF:

Flip Flop 触发器

BRAM

Block Random Access Memory 块内存

URAM

Ultra RAM Ultra 内存

DSP

Digital Signal Processor 数字信号处理器


总体而言,当前版本的NTT计算FPGA加速倍数在25倍左右。目前状态看,在算法和工程上还具备必定的优化空间,特别是在数据传输时间上的优化,资源的使用也可进一步减小,并行化进一步提升等等。





后续规划




NTT只是(全)同态加密算中最为基础、最为底层的操做。矩阵元在第一版NTT的基础上将持续优化基础算子的性能。同时将逐步实现更为高阶的操做,好比加密、解密和同态操做,最终实现对(全)同态加密的总体硬件加速支持。并应用在隐私机器学习、深度学习等同态加密的相关场景中,知足性能要求。


最终矩阵元的(全)同态加密硬件加速将配合Rosetta(https://github.com/LatticeX-Foundation/Rosetta)隐私AI计算框架,一块儿提供完备的软硬一体化解决方案。



本文分享自微信公众号 - GDG(GDG_Shanghai)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索