无需先解密出明文文件才可以编辑加密数据,也无需完工后再加密回去,这就是全球顶尖的加密技术——同态加密,但性能一直是这种技术的最大问题。最近,由于IBM重写了其C++同态加密库,加解密速度最高可提升75倍。

同态加密是用于在不解密数据的情况下直接操作加密数据的一种技术。这种技术可让敏感操作更加安全。比如说,公司企业可以加密托管在云端的数据库,并直接对加密记录进行操作而无需先将记录解密成明文,避免了明文记录泄露的风险。IBM早在多年前即已展开同态加密研究,并在3年前发布了其 HElib C++ 库第一版。但直到2016年,该技术都还存在性能瓶颈,巨大的性能开销让人无奈至极。

IBM同态加密技术重大突破,加解密速度可提升75倍

同态加密的发明者克雷格•金特里(Craig Gentry)带领IBM的研究团队进行了一系列同态加密尝试。最初的时候,同态加密的数据处理速度比明文操作慢“100万亿倍”,后来在16核服务器上执行,速度就提升了200万倍,但还是比明文操作慢很多。因此,IBM继续改进HElib,其发布在GitHub上的最新版就重新实现了 同态线性变换 ,性能得到极大提升,速度加快了15-75倍。

国际密码学研究协会的一篇论文中,IBM密码研究团队的谢•哈勒维(Shai Halevi)和纽约大学库朗数学研究所教授维克多•舒普阐述了速度提升的方法。

论文中写道:“目前的HElib线性变换算法中,大量时间耗在加密向量间的数据转移上。”线性变换通过“特殊自同构”实现(自同构是将对象映射到自身的同时保持其全部结构的一种数学操作),其计算开销由自同构的循环次数决定。

论文写道:“这种自同构应用到密文上的主要开销其实就是‘密钥交换’的开销:密文中每个环元素都应用了自同构后(该操作开销很小),我们就得到了与‘错误’密钥相对的加密密文;使用该自同构特定公钥中的数据,也就是所谓的‘密钥交换矩阵’,我们可以将密文转换回相对于‘正确’密钥的加密密文。”所以,性能提升中的主要目标是,减少自同构数量,降低每个自同构的开销。

通俗点讲,新库运用了新的自同构计算策略(速度提升15-20倍);很多必要计算都经过了重构;有些计算甚至被移出了该库的主循环(再添6-8倍的提速)。因为密钥交换矩阵的存在,同态加密的公钥构造开销也十分高昂。每个矩阵都会在公钥里添个几MB数据,而HElib的公钥中可能含有几百个这种矩阵。研究人员称,常见操作中,他们可以将矩阵体积减小33-50%。

HElib项目还处于研究阶段。正如其GitHub页面上声明的:“现阶段,本库主要面向研究同态加密及其使用的研究人员。目前HElib还相当低级,最好把它看做‘面向HE的汇编语言’。