SIMD编码
在看SEAL库和HElib库中经常在编码中碰到打包(batch)技术,另外还提到了SIMD编码技术,有点困惑,编码、打包、SIMD到底有什么关系?
今天看到一篇文章,彻底读懂了SIMD编码,推荐【更新|Cheetah: 精简快速的安全两方DNN推理】
编码#
在CKKS方案中,因为明文空间在复数域上,简单的说一个明文就是一个复数向量,那么CKKS是基于RLWE问题,计算是在环上,也就是整数多项式上,所以在加密之前需要进行编码,将一个复数向量编码成一个整数多项式,然后在加密,进而计算。
那如何将一个复数向量编码为了整数多项式?
具体细节请参考:CKKS Part2: CKKS的编码和解码
BGV和BFV方案同样也是,都是基于RLWE问题,计算是在环上,不同的是他们的明文空间在整数域上,所以也需要编码,将其转化为一个整数多项式。
简单点说,CKKS中的编码:
1、首先通过一个映射,将复数向量转成实数多项式
2、然后通过放大实数多项式的系数,然后取整的操作,实现了实数多项式转整数多项式
新的编码技术#
由于已知的全同态加密方案一般不支持对有理数进行加密,因而本文需要建立连接有理数与整数的纽带。在不影响有理数精度的情况下,最简单的方法是将有理数乘以一个固定数 B 的幂,例如
这里和CKKS编码很像,要乘以一个缩放因子,放大有理数;然后进行一次乘法同态后,缩放因子变大,所以每进行一次乘法同态就需要除于一次B的幂,和CKKS中的rescaling(重缩放)很像啊
这里【1】给出了一种新的编码技术,可以将一个有理数编码为环上元素
batch技术#
使用了SIMD技术,从而实现了打包,即SIMD编码的过程。从编码上看,就是将一些明文(数
)打包为一个多项式,一次多项式计算,就是多个明文间的计算。能加快计算速度,提升效率!
下面简单的介绍一下:
选择合适的明文模数t,这里有一个环上的同构关系:明文空间
举个例子就是,一个常数多项式
所以使用这个打包技术能减少通信和计算开销。
1、首先将Y个明文以n为一组,划分成向量组
2、然后加密,得到Y/n的密文
待补充.....
SIMD编码#
SIMD(Simple Instruction Multiple Data)直接翻译是“单指令多数据”,网上搜索出来的大都是关于SIMD指令集,说该指令集支持向量化的数据并行,一个指令可以同时操作多个数据。听起来有那个打包的意思,但这是指令集,和编码有什么关系呢?
丢一个SIMD指令集在这,可以看看:
都说使用SIMD技术,可以提升效率,那SIMD到底是什么呢?
SIMD的发展#
1、Smart 与 Vercauteren [18] 首次利用 SIMD技术将单比特的全同态加密方案扩展为多比特的全同态加密方案,实现了对消息的并行处理。遗憾的是该方案要求主理想范数为素数,使得算法的密钥生成过程过于复杂。
2、2011 年,Gentry 和 Halevi [19] 提出一种运算速度更快的密钥生成算法,该算法抛弃了主理想范数为素数的假设。
3、Scholl 和 Smart [20] 将文献 [19] 的快速密钥生成算法由 2 次幂分圆域扩展到任意分圆域,其算法效率为原先方案的两倍。
4、2014 年,Smart等人 [21] 进一步对文献 [18] 的密钥生成算法进行优化,并介绍了如何进行参数设置以适用 SIMD 技术。
SIMD#
大多数全同态加密方案的明文空间为 2。当明文消息很大时,将导致消息的编码时间、加密时间及密文解密时间过长。为提高同态运算效率,可以利用 SIMD 技术 [21]将多个小明文编码-加密成一个密文。
说实话,截止到这里,我还是不太明白,下面内容大佬把SIMD编码介绍的很清楚!(有些小问题:打包的应该是
)
总结一下:
SIMD编码就是把一些数变成一个多项式,以上面为例就是:
(4,13)编码为x
(1,2)编码为2x-7
具体怎么编码的呢?
那怎么求f(x)呢?
1、首先分圆多项式
这里n=2,p=17,则
2、要对(4,13)编码,就是求f(x):
使用CRT求
3、那怎么解码呢?就是有f(x)了,怎么求(4,13)呢?
4、至于加法同态和乘法同态就是将编码后的多项式做相应计算,解码后相当于这些数做相应计算
满足同态性!
应用#
BGV方案#
参考:云外包密文查询和计算研究
packing1#
该小节是论文"A low latency framework for Secure neural network inference"中的一部分,描写SIMD的,在此记录。
(1)描述了一个使用"pack"技术的加法同态方案。"pack"即支持将多个明文数据打包到一个密文中,同态计算有以下操作:SIMDAdd(密文+密文)、SIMDScMult(密文*明文)、Perm(密文旋转)
(2)该方案主要包括以下算法:Enc(加密)、Dec(解密)、Eval(同态计算)。
(3)该方案需要满足两个安全性:IND-CPA安全,即在计算上无法区分两个不同的密文;函数安全,即Eval中的
(4)主要介绍方案的参数:m,是分圆多项式的阶,即
(5)一个打包密文中的slot个数为
(6)为了保证安全性,需要使得
(7)同态加法,两个密文(u和v)相加的运行时间为
(8)密文*明文,如果
(9)(Perm)密文旋转,给定一个映射
(10)(密文结构)n指slot得个数;q时密文空间大小,所以一个密文需要
(11)(密文旋转),这里的旋转映射
(12)密文旋转是一个"昂贵"的操作。一个旋转的耗费
参考#
【1 】Manual for using homomorphic encryption for bioinformatics
【18】 Fully homomorphic encryption with relatively small key and ciphertext
sizes
【19】Implementing Gentry’s fully-homomorphic encryption scheme
【20】Improved key generation for Gentry’s fully homomorphic encryption
scheme
【21】Fully homomorphic SIMD operations
作者:Hang Shao
出处:https://www.cnblogs.com/pam-sh/p/15928094.html
版权:本作品采用「知识共享」许可协议进行许可。
声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-02-23 2019 C笔试题