TenSEAL库之CKKS参数介绍及代码示例

CKKS是一种支持有限次同态运算的加密方法,特别在于它对复数的支持。该方案涉及明文多项式的编码和解码,以及利用缩放因子处理浮点数精度。CKKS的关键参数包括多项式度数影响计算精度和密文大小,以及系数模决定安全性和运算次数。此外,它有四种密钥,包括私钥、公钥、重线性化密钥和伽罗瓦密钥,用于解密、加密和优化计算过程。

CKKS介绍

CKKS是一个可以实现有限次同态运算的加密方案,支持同态加法和同态乘。CKKS和其他同态加密方案的最大的区别就是,CKKS是直接支持复数的,当然也包括实数。但是,CKKS是一种近似同态计算,得到的结果是一个近似值,并不是准确值。

CKKS将复数向量首先编码成明文多项式,然后对明文多项式加密。解密的结果再解码成复数向量。CKKS具体的编码过程使用的是多项式的正规嵌入,也就是,明文多项式在单位根上的值就是实际的明文。

CKKS可以进行对称加密,也可以进行非对称加密(公钥加密),一般默认使用的是公钥加密。

CKKS的参数

由于CKKS是一个近似的同态,所以需要在开始的时候指定精度,或者说叫做缩放因子。在进行明文的编码的时候,由于是浮点数(有小数部分),所以乘上缩放因子,再配合射入操作,得到一个整数系数的明文多项式。CKKS实际的密文域是整系数多项式环。然后在解码的时候除以缩放因子得到原来的明文。

所以缩放因子的大小,决定了计算的精度。

CKKS还需要指定多项式的度数,也就是多项式的最高次数是多少。在TenSEAL的实现中,多项式的度数只能是2的整数次幂,比如1024,2048,4096,……

多项式的度数决定了明文多项式的系数的个数,同时也决定了一个密文可以打包多少个明文。也就是一个密文的明文向量是多长。度数越大,那么一个密文可以打包的明文就越多,通常是多项式度数的一半。

显然,多项式的度数也决定了密文的大小。多项式的度数越大,就需要更多的数来表示这个多项式,也就意味着密文会更大。

同时,多项式的度数越大,那么每一次运算需要的时间就越长,计算的效率就越低。

不过,正因为如此,多项式的度数越大,那么加密的安全性就越高。

CKKS的另一个参数是系数模的大小,这是一个向量。由于CKKS支持的是层级的同态加密,也就是可以执行的同态运算的次数是有限的(没有自举的时候)。由于噪声会随着运算的进行不断增加,所以CKKS在每次进行乘法运算都会进行一次模交换操作,密文多项式的系数模从一个较大的素数p变到q。所以每一次乘法会消耗一个素数。所以CKKS需要传入一个指定素数大小的

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值