Packed Ciphertexts in LWE-based Homomorphic Encryption:解读

本节内容记录阅读该论文的笔记

介绍#

首先,介绍了两种明文“打包”的方法:PVW和SV
image

PVW:对应论文(PVW:A framework for efficient and composable oblivious transfer),打包思想就是,将多个bit明文是为一个明文向量。

SV:对应论文(SV11:Fully homomorphic SIMD operations),打包思想:将多个明文通过“编码”插入到一个多项式上,转换成多项式的计算相当于这么多明文计算。多用于基于RLWE方案的。

Regev简介#

原paper:On lattices, learning with errors, random linear codes, and cryptography

加密单比特数据:系统参数qZ,明文比特b(0,1),私钥s和密文c都是向量Zn

加解密#

具体加解密参考:密码算法汇总

将明文b加密,密文是个向量,解密的私钥s也是向量,解密框架为:
z=<c,s>(modq)=k.q+b.q/2+e(modq),其中e,k是小整数,z的范围为[q/2,q/2],若|z|<q/4,则解密为0,否则为1。

同态计算#

(1)加法
Regev本身支持同态加法计算,即E(b1+b2)=c1+c2(modq)
(2)乘法
在该paper:(BV11a:Efficient fully homomorphic encryption from (standard) LWE)中给出同态乘法运算:
这里的“乘法”是张量积,满足:E(b1.b2)=(c1c2),并满足<s1,c2>.<s2,c2>=<s1s2,c1c2>

张量积:参考(点积、张量积和范数
image

下面就是如何构造乘法后的正确解密:
c=2/q.(c1c2)
则:z=<ss.c>=k.q+b1b2.q/2+e(modq),其中k,e也是相对较小的,所以参数选取适当的情况下,乘法后能正常解密!

可以看出,如果c1,c2是一个n维的向量的话,则c1c2是一个n2维的矩阵,若在此基础上再进行一次乘法,则新密文的维数为n4,可见存在一个问题:密文维数随着乘法次数而变大(指数级)。

所以需要一种方法去“降维”,即(BV11a)中给出的重线性化技术(re-linearization)将密文维数n2将为n

重线性化,实质上就是密钥交换技术(Key Switching),即给出两个密钥s,s,使用密钥交换技术将密钥s对应的密文转换为s对应的密文。密钥交换矩阵实际上包含用s加密的s,这是一个矩阵(密钥交换矩阵),其实也是将ss转换为s

打包“压缩”明文#

前面提到原始的Regev方案是加密单bit明文,密文和密钥都是向量,这样效率较低。

可以将多个密钥si按行组成一个矩阵S,可以加密一个明文向量b,解密时:z=S.c=k.q+b.q/2+e,其中k,e是小向量。(这里的密钥有多种?)

(1)打包明文的计算
还是和上面说的类似,加法(mod q),乘法通过张量积。

只不过在乘法后执行重线性化时有些变化:
假设c是一个高维的“打包”密文,对于每i个明文bibi,对应的密钥为sisi,现在如何进行重线性化呢?

选择一个合适的密钥交换矩阵(用si加密的sisi),可以将c转换为一个新的密文c,对应的密钥为 si

(2)其他计算
可以在“打包”明文基础上实现SIMD同态计算、密文置换(permutation),并且使用PVW方法进行密文置换比使用SV方法更有优势。

SV方法,是通过自同构(automorphisms)实现,但是需要其他计算;而PVW是通过密钥交换实现的。

密文置换:移动密文内的slot,实现密文置换,解密后相当于明文置换。

基础#

符号#

(1)范数
||v||1:欧式范数
||v||:无穷范数
image

具体参考:点积、张量积和范数

(2)其他符号
Zq:表示范围在[q/2,+q/2]内的整数
[a]q:表示amodq
a:表示四舍五入
aq:表示[a]q

LWE问题#

安全参数n,模数q>poly(n)χ表示均值为0,标准差为q/β的离散高斯分布,β=poly(n)

问:poly()表示什么意思?

关于LWE问题的困难性,在[Regev09]中给出了证明,表明能将LWE问题通过量子规约(quantum reductions)到n维格上的困难问题;在[Pei09]中给出了经典规约的方法(classical reductions)

SLWE#

即搜索版本的LWE(search-LWE):
对于(aiZqn,bi=[<s,ai>+ei]q)eiβ ,给出ai,bi,难以计算出s

DLWE#

即判绝版本的LWE(decision-LWE):
给出<aiZqn,biZqn>(aiZqn,bi=[<s,ai>+ei]q)是难以区分的

Regev方案#

一个基于LWE问题的公钥加密方案,这里给出了一个对称加密方案,可以通过范型变换(generic transformations)获得一个公钥加密方案。

范型变换?

明文空间Z2=(0,1),模数q,安全参数n,n=n+1

这里介绍对称加密方案

密钥生成#

密钥sχn,明文σZ2,选取aZqn,eχ(小向量)

加解密#

计算b=[σq/2<s,a>+e]q,输出密文(b,a)

解密:
计算d=[b+<s,a>]q=[σq/2+e]q,若d>q/4,则输出1,否则输出0。
解密成功的关键在于||e||<<q/4

上述解密可以看作:σ=[<s,c>]q/(q/2)2,其中s=(s|s),c=(b|a)都是n维向量。

<s,c>=kq+σq/2+e||<s,c>||<<q2,|k|<<q

以上基础的加密方案只需|e|<<q/4,下面在同态计算中,需要ke<<q

同态计算#

c1,c2是两个有效密文,分别对应的明文为b1,b2Z2,使用的密钥是s,从上面可知,满足:<s,ci>=kiq+biq/2+ei,其中ki,ei是很小的数。

(1)加法
对于c=[c1+c+2],满足<s,c>=kq+(b1b2)q/2+ei,其中k=k1+k2k1+k2±1<<qe=e1+e2<<q。(这里的加法是异或)

所以cb1+b2的有效加密。
(2)乘法
在【BV11】和【Bra12】中给出了Regev的乘法同态。

对于c=c1c2n2维向量),s=ss,有乘法:
image

这里的e多项式大于(polynomially (n) larger )e1,e2的,因为k1,k2是有范围的poly(n)

这里如何理解:polynomially larger?
见参考【1】
image
在这里的意思就是e/e1或者e/e2是有范围的!

下面将2/q.c四舍五入为整数向量,即求2/q.c=2/q.c+e,其中e是舍入误差,||e||1/2,则:
image

其中e是误差集合,k是一些整数,由于s=sse中元素很小,所以<s,e>也很小,且|e|<<q

最后令c=2/q.cq,满足:
image

其中e<<qk满足:
image

所以cb1b2的有效加密,密钥为s=ss

密钥交换#

上面可以看出,密文相乘后,维数扩张严重(指数级)。在【BV11a】中给出了方法-密钥交换技术,作用就是降维。

从上面密钥交换的简单介绍中,可知道主要功能:将一个维数为n2维的密文c,对应的密钥为s,转换为一个新的密文c,其维数为n,对应的密钥为s

下面介绍一种密钥交换的变体技术,相对更加简单。

(1)密钥交换需要一个密钥交换矩阵
密钥交换(s>s)可以看成:在密钥s下加密的s,详细点说:对于每一个s[i],构造一个公开的“计算密钥”wi(rational “ciphertext” ),满足:<s,wi>=kiq+s[i]+ei,其中k1是一个整数,|ei|poly(n)/q,将所有的wi按列组成一个nn2的矩阵W,满足s.W=kq+s+e,其中k是一个整数向量,||ei||poly(n)/q

(2)然后将高维密文转换为低维密文
给出一个n2维密文向量c满足:<s,c>=kq+b(q/2)+e,其中k是小整数,e<<q,bZ2。定义c=Wcq=Wc+e+kq,其中e是舍入误差,k是整数,则:
image

其中的e~是有界限的:
image

|e~|<<q,那么对于k~,有:
image

总的来说,对于维数为n的新密文c,满足<s,c>=k~q+b(q/2)+e~,其中k~,e~<<q,所以能够将一个高维n2密文c,转换为低维n的密文c,且对应的明文都是b,即新密文c是有效的加密,其中密钥是s

“打包”明文的计算#

介绍#

从上面可以看出,1bit的明文加密后的密文是n+1维,在【PVW08】中给出了一种“打包”明文的方法,提升计算效率,简单点说就是,mbit的明文加密后的密文是m=n+m

这里选取m个向量(m个大小为n的向量),即siχn,将其组成一个m.n的矩阵S(按行),之前使用的是n+1维的密钥向量s=(1|s),现在使用的是m.m的密钥矩阵S=(I|S),其中,I是i个m.m的单位矩阵。

上面是密钥生成,下面开始加解密:

(1)加密
对于明文bZ2m,即明文是一个比特串(向量),随机取向量zZqn,误差向量xχm,计算d=[b.q/2Sa+x]q,输出密文向量c=(d|a)Zqm

(2)解密
计算Sc=d+Sa=b.q/2+x(modq),对于计算结果(向量),观察其中每个元素,若元素大于q/4,则为1,否则为0。其中x中的每个元素远小于q,解密也可以表示为b=[Sc]q/(q/2)2

总的来说,对于密文c,对应密钥为S,有效的解密为:
image
其中k,x<<q

(3)同态计算
从加解密来看,对于两个密文c1,c2Zqm,分别对应明文是b1,b2Z2m,密钥为SZqm.m

密文相加c=[c1+c2]q,分别对应于明文(b1b2)

密文相乘c=[2/q.c1c2]q,分别对应明文b1b2Z2m(bitwise product,按位乘)。

密钥交换#

密钥交换是需要“计算密钥”(public key key-switching gadgets)的,利用计算密钥使得si>si,但是这样对于每一个密文转换(c>c),都需要一个计算密钥,我们想要的是使用一个计算密钥,将高维密文c(对应的密钥为s),转换为一个低维密文c(对应密钥为s)。

计算密钥能得到密钥交换矩阵W

密钥交换的“计算密钥”可以看作是用密钥s加密s构成的。具体来看,就是把si作为密钥,加密所有的si

这里的密钥交换矩阵W,满足SW=S+E(modq),其中E是误差矩阵。具体说,m=n+m,可以利用WQm.m2,将SZm.m2对应的密文转换为S=(I|S)Zm.m对应的密文,那W如何求呢?

image
上面比较重要的内容是:想要安全性高,那就要提升模数n的大小。

对于j(1,2,...,m2)s~jZm组成矩阵S(按列),aiZQn组成矩阵W(按行),ejZm是误差向量,计算dj=[2l.s~jSaj+ej]Q,输出wj=(dj|aj)T/2lQm,按行组成W

dj也可以表示为dj=2l.s~jSaj+ej+kQ,则满足:
image

也即是:
image
其中整数矩阵K和误差矩阵E满足Epoly(n)/q

总结#

给出一个高维密文c,对应密钥为S,利用密钥交换矩阵W,可得低维新密文c=Wcq,对应密钥为S,且解密后的明文是一样的。

若对于S.c=k.q+b(q/2)+eS.c=k.q+b(q/2)+e,需要满足k,e,k,e<<q

在一个Leveled-FHE方案中,需要提前生成多个互相独立的密钥矩阵Sk,使得在每次乘法后执行密钥交换,转换为新的密钥,所以在该方案中,乘法的次数就受限于密钥的个数。

image

安全性是基于LWE问题。上面的引理是在SS是独立关系的前提下,假如SS不是独立的,那这就依赖于“循环安全假设”(circular security)了。

密文置换#

使用以上技术,可以实现“压缩”版的SIMD同态计算,就是每计算一次相当于计算多次!
在密文计算量更大的需求下,“压缩”实为是一种好的实现,对于密文置换,可以利用密钥交换实现。

介绍#

什么是密文置换?

规定一种置换映射π()

对于一个密文c,对应密钥为S,解密后的密文为bZ2m,将其作用在π()上,得到c=π(c)。用S去解密c,会得到π(b)

使用密钥交换实现很简单:准备一个密钥交换矩阵W,可以得到将(π(S)>S)
对于π(c),对应密钥为π(S),解密明文为π(b),使用密钥交换,将其转换为一个新的密文c,对应的密钥为S,解密明文为π(b)

总结#

本文基于LWE问题,设计了一种PVW变体的压缩明文方案,这就类似于SV压缩方案,在环上的便利。

基于整数环和多项式环上的对比#

(1)基于多项上环比实数环的方案具有更好的渐进效率(asymptotic efficiency)
(2)两种情况下密文的大小大致相同:多项式环上的密文是一个多项式,其中包含O(n)个整数。
(3)对于密文乘法(tensor product multiplication),基于整数的密文大小扩大为O(n2)倍,基于多项式的密文大小仍是O(n)
(4)对于重线性化,基于整数的密钥交换矩阵为O(n3),基于多项式的密钥交换矩阵为O(n),基于整数上的计算会产生更多开销。
(5)对于密文中的“slot”个数,基于多项式的是由底层环结构决定的,基于整数的slot个数可以任意设置。
(6)在密文置换上,基于整数的比基于多项式更优。
(7)对于密钥交换,基于整数的比基于多项式的更方便和高效。

参考#

1、【论文阅读笔记】-针对RSA的短解密指数的密码学分析(Cryptanalysis of Short RSA Secret Exponents)
2、范数||x||(norm)笔记

作者:Hang Shao

出处:https://www.cnblogs.com/pam-sh/p/16271420.html

版权:本作品采用「知识共享」许可协议进行许可。

声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.

posted @   PamShao  阅读(693)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-05-17 SM9-签名
2021-05-17 SM9-加解密
2021-05-17 SM9-密钥封装
2020-05-17 VS2019 使用
2020-05-17 C:.c文件和.h文件的关系
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu