半同态加密算法Smart-Vercauteren论文解析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


论文题目:
Fully Homomorphic Encryption with RelativelySmall Key and Ciphertext Sizes

摘要

我们提出了一个完全同态的加密方案,它的密钥和密码大小都比较小。我们的结构与Gentry的结构相同,从 "SWHE "同态的方案中产生一个完全同态的方案。对于有点同态的方案,公钥和私钥由两个大整数组成(其中一个由公钥和私钥共享),密码文本由一个大整数组成。因此,我们的方案比Gentry的原始方案具有更小的信息扩展和密钥大小。此外,我们的方案允许在任何二特征域上进行高效的完全同态加密。


1. 引言

长久以来,完全同态的公钥加密方案一直是密码学的 “圣杯”。在去年,这个问题被Gentry[7,8]利用理想格子的特性解决了。各种加密方案都使用了格子,有时只是为了争论其安全性(如NTRU[11]),在其他情况下,格子对理解方案算法的工作原理至关重要(如[9])。Gentry的全同态方案就属于后一种情况。在本文中,我们提出了一个完全同态的方案,它可以用代数数域的基本理论来描述,因此我们不需要格子来理解其加密和解密操作。然而,我们的方案确实属于这样一类方案,其最知名的攻击是基于格子的。

在高层次上,我们的方案非常简单,主要是由一个整数 N N N作为参数(还有其他参数,但不太重要)。公钥由一个素数 p p p和一个以 p p p为模数的整数 α α α组成。私钥由一个整数 z z z(如果我们要加密比特)或一个 N − 1 N-1 N1次的整数多项式 Z ( x ) Z(x) Z(x)组成(如果我们要加密 N − 1 N-1 N1次的一般二进制多项式)。为了加密一个信息,我们把信息编码为一个二进制多项式,然后通过添加两次小的随机多项式使信息随机化。为了获得密码文本,所产生的多项式被评估为 α α α模数 p p p。因此,密码文本只是一个整数模数 p p p(不管我们是在加密比特还是 N − 1 N-1 N1次的二进制多项式)。

在我们知道信息是单比特的情况下,为了解密,我们将密码文本乘以 z z z,然后除以 p p p,然后将这个有理数四舍五入到最接近的整数值,然后从密码文本中减去这个结果。然后通过减少这个中间结果来恢复明文的模数。当我们解密一个二进制多项式时,我们遵循同样的程序,但这次我们乘以多项式 Z ( x ) Z(x) Z(x)并除以 p p p,以获得一个有理多项式。将这个多项式的系数四舍五入到最接近的整数,从原始密码文本中减去,再减去 2 2 2的模数,就能再次恢复明文。

2. 简介

2.1 符号

给定一个多项式 g ( x ) = ∑ i = 0 t g i x i ∈ Q [ x ] g(x)=\sum^t_{i=0}g_ix^i \in \mathbb Q[x] g(x)=i=0tgixiQ[x],我们定义2范数和 ∞ \infty 范数为:
∣ ∣ g ( x ) ∣ ∣ 2 = ∑ i = 1 t g i 2 a n d ∣ ∣ g ( x ) ∣ ∣ ∞ = m a x ∣ g i ∣ , i = 0 , . . . , t ||g(x)||_2 = \sqrt{\sum^t_{i=1}g_i^2} \quad and \quad ||g(x)||_{\infty} = max|g_i|,i=0,...,t ∣∣g(x)2=i=1tgi2 and∣∣g(x)=maxgi,i=0,...,t

对于一个正值 r r r,我们定义了两种相应类型的以原点为中心的 “球”。
在这里插入图片描述
我们得到一个通用的含义 B 2 , N ( r ) ⊂ B ∞ , N ( r ) \mathcal B_{2,N}(r) \subset \mathcal B_{\infty,N}(r) B2,N(r)B,N(r) B ∞ , N ( r ) ⊂ B 2 , N ( N , r ) \mathcal B_{\infty,N}(r) \subset \mathcal B_{2,N}(\sqrt{N},r) B,N(r)B2,N(N ,r)。同时,我们定义半球为:
在这里插入图片描述
本文中所有对奇数 m m m的还原都被定义为在 [ − ( m − 1 ) / 2 , . . . , ( m − 1 ) / 2 ] [-(m-1)/2,...,(m-1)/2] [(m1)/2,...,(m1)/2]范围内产生一个值。符号 a ← b a←b ab,意味着将左边的值分配给右边的值。而 a ← R A a←_RA aRA,其中 A A A是一个集合,意味着用均匀分布从集合 A A A中选择一个。

2.2 数域中的理想

由于我们方案的基本运作是基于一个数域中的素数理想,我们首先回顾一下一些基本属性。关于所需的基本计算数论的介绍,见[4]。[公式]

假设 K K K是一个数域 Q ( θ ) \mathbb Q(θ) Q(θ),其中 θ θ θ N N N次不可约多项式 F ( x ) ∈ Z [ x ] F(x)∈\mathbb Z[x] F(x)Z[x]的根。考虑整数环 O K \mathcal O_K OK内的方程阶 Z [ θ ] \mathbb Z[θ] Z[θ]。对于我们的参数选择,我们通常有 O K = Z [ θ ] \mathcal O_K=\mathbb Z[θ] OK=Z[θ],但在一般情况下不需要这样做。我们的方案适用于 Z [ θ ] \mathbb Z[θ] Z[θ]中假定与索引 [ O K : Z [ θ ] ] [\mathcal O_K:\mathbb Z[θ]] [OK:Z[θ]]共质的理想,因此与在 O K O_K OK中工作没有什么区别。这些理想可以用两种方式中的一种表示,即用一个 N N N维的 Z Z Z基或用一个双元素的 Z [ θ ] \mathbb Z[θ] Z[θ]基。当把一个理想 a a a表述为 N N N Z Z Z基时,我们给出N个元素 γ 1 , . . . , γ N ∈ Z [ θ ] \gamma_1,...,\gamma _N∈\mathbb Z[θ] γ1,...,γNZ[θ] a a a中的每个元素都由 γ 1 , . . . , γ N γ_1,...,γ_N γ1,...,γN生成的 Z Z Z模表示。通常的做法是把这个基表述为一个 n × n n×n n×n矩阵。然后将矩阵设为 ( γ i , j ) (γ_{i,j}) (γi,j),其中我们设定 γ i = ∑ j = 0 N − 1 γ i , j θ j γ_i=\sum^{N-1}_{j=0}γ_{i,j}θ^j γi=j=0N1γi,jθj,即我们采取面向行的表述。对这个基础进行Hermite Normal Form (HNF,埃尔米特正规形式)将产生一个下三角基础,其中对角线 ( d 1 , . . . , d N ) (d_1,...,d_N) (d1,...,dN)满足 d i + 1 ∣ d i d_{i+1}|d_ i di+1di。请注意,基的HNF的最后一个属性只适用于对应于理想的矩阵[5](他们使用不同的方向)。

然而,每一个这样的理想也可以用一个 Z [ θ ] Z[θ] Z[θ]基来表示,这个基由两个元素组成, 〈 δ 1 , δ 2 〉 〈δ_1,δ_2〉 δ1,δ2。对于位于有理素数 p p p之上的理想,很容易写出一个理想的双元素表示。如果我们将 F ( x ) F(x) F(x)的模数 p p p分解成不可还原的多项式
在这里插入图片描述
那么,对于 p p p不除以 [ O K : Z [ θ ] ] [\mathcal O_K:\mathbb Z[θ]] [OK:Z[θ]],除以 p Z [ θ ] p\mathbb Z[θ] pZ[θ]的素数理想是由两个元素表示的
在这里插入图片描述
我们定义 p i p_i pi的剩余度等于多项式 F i ( x ) F_i(x) Fi(x)的度数 d i d_i di。对 p i p_i pi的还原产生了一个同态性
在这里插入图片描述
我们将对残余度为1的素理想特别感兴趣。如果 χ ∈ Z [ θ ] \chi∈\mathbb Z[θ] χZ[θ]是由 χ = ∑ i = 0 N − 1 c i θ i χ=\sum^{N-1}_{i=0}c_iθ^i χ=i=0N1ciθi给出的,那么同构 ι p \iota_p ιp就对应于α中的多项式 χ ( θ ) χ(θ) χ(θ)的评价,而 α α α p p p 的模数。

给定一个形式为 〈 p , θ − α 〉 〈p, θ-α〉 p,θα的素数理想,相应的HNF表示法的构造非常简单,而且与两元素表示法密切相关,我们现在将展示。我们需要对 2 N × N 2N×N 2N×N的矩阵进行行还原
在这里插入图片描述
其中 F ( x ) = ∑ i = 0 N F i x i F(x)=\sum^N_{i=0}F_ix^i F(x)=i=0NFixi。不难看出,上述矩阵的HNF由以下公式给出

在这里插入图片描述
其中第一列中的所有整数,在第二行和以后,都是以 p p p为模数的。

3 Somewhat同态方案

在本节中,我们将介绍我们的同态方案并分析哪些参数集解密有效。为了简化演示,我们在这一点上将方案介绍为仅加密 P = { 0 , 1 } \mathcal P=\{0,1\} P={0,1}中的元素的方案。

3.1 实现方案

一个有点同态的加密方案由五种算法组成:{KeyGen,Encrypt,Decrypt,Add,Mult}。 我们将依次描述每一个; 请注意,最复杂的阶段是 KeyGen。 该方案由三个值 ( N 、 η 、 μ ) (N、η、μ) (Nημ)参数化。 一组典型的参数是 ( N , 2 N , N ) (N,2^{\sqrt N},\sqrt N) (N,2N ,N )。稍后我们将返回讨论这些值的大小对安全级别 λ λ λ 和方案性能的影响。

KeyGen():
设置明文空间为 P = { 0 , 1 } \mathcal P=\{0,1\} P={0,1}
选择一个 N N N次不可约多项式 F ( x ) ∈ Z [ x ] F(x)∈\mathbb Z[x] F(x)Z[x]
重复:
在这里插入图片描述
直到 p p p 是素数
D ( x ) ← g c d ( G ( x ) , F ( x ) ) D(x)←gcd(G(x),F(x)) D(x)gcd(G(x),F(x)) 超过 F p [ x ] \mathbb F_p[x] Fp[x]
α ∈ F p α∈\mathbb F_p αFp 表示 D ( x ) D(x) D(x) 的唯一根
Q [ x ] \mathbb Q[x] Q[x] 上应用 XGCD 算法得到 Z ( x ) = ∑ i = 0 N − 1 z i x i ∈ Z [ x ] Z(x)=\sum^{N−1}_{i=0}z_ix_i∈\mathbb Z[x] Z(x)=i=0N1zixiZ[x] 使得
在这里插入图片描述
B ← z 0 ( m o d 2 p ) B←z_0(mod \quad 2p) Bz0(mod2p)
公钥是 P K = ( p , α ) PK=(p, α) PK=(p,α),而私钥是 S K = ( p , B ) SK=(p, B) SK=(p,B)
在这里插入图片描述


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大连米兰哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值