文章目录
- 一、摘要
- 二、引言
-
- [1、FHE 一般分为三个逻辑部分](#1、FHE 一般分为三个逻辑部分)
- 2、噪声的管理
- [3. 贡献点](#3. 贡献点)
- [4. 文章思路](#4. 文章思路)
- 三、基础数学知识
- [四、基于 RLWE 的加密](#四、基于 RLWE 的加密)
-
- [1. LWE 问题](#1. LWE 问题)
- [2. RLWE 问题](#2. RLWE 问题)
- [3. RLWE 问题的难度和安全性](#3. RLWE 问题的难度和安全性)
- 五、加密方案
- [六、Somewhat Homomorphic Encryption](#六、Somewhat Homomorphic Encryption)
-
- [1. Addition](#1. Addition)
- [2. Multiplication](#2. Multiplication)
-
- [2.1 基本的乘法 (第一步)](#2.1 基本的乘法 (第一步))
- [2.2 重线性化 (第二步)](#2.2 重线性化 (第二步))
- [2.3 重线性化 (Version 1)](#2.3 重线性化 (Version 1))
一、摘要
- 本文将基于LWE问题的 Brakerski 完全同态方案移植到 R-LWE 中。
- 介绍了两个优化版本的 重线性化(relinearisation),它不仅拥有一个较小的重线性化密钥,而且具有更快的计算。
- 对于各种同态操作,如乘法、重线性化、bootstrapping 提供了一个详细但简单的分析,并给出了这些操作引起的 噪声的最坏情况界限。
- 介绍了通过 模数切换技巧 (modulus switching trick),大大简化了 bootstrapping 步骤的分析。
二、引言
1、FHE 一般分为三个逻辑部分
- 首先,构造一个 SWHE,它可以支持有限次的同态操作
- 然后,尽可能简化该方案的解密代价,通过 squashing
- 最后,通过 bootstrapping,获得具有固定固有噪声大小的密文
2、噪声的管理
所有现有的方案的共同特点,在加密过程中添加一个 小的"噪声"组件。 在密文上进行 同态计算将导致这些噪声增长,特别是 同态乘法,待到噪声增长到一定程度时,解密算法将失败。
Gentry的 bootstrapping 方法可以用来将密文中的噪声降低到 由解密电路的复杂性决定的固定级别。
- 在 Clear 的密文 (带有噪声 E) 上评估深度为 n 的电路会产生噪声为 E 2 n E^{2^n} E2n。
- 在之后的某篇文献中,将深度为 n 的电路的噪声降低到了 E n E^n En。
- 再之后,通过改进,深度为 n 的电路的噪声水平降低到了 E ⋅ c ( λ ) n E \cdot c(\lambda)^n E⋅c(λ)n
但是,这该是不足以支撑工业级使用。
3. 贡献点
- 它的简单性,由于我们采用了"接地气"的方法,因此任何多余的数学机制 (可能是非常优雅美丽的) 都被省略了。
- 将 Brakersk 的方案从 LWE 移植到 RLWE 中。
- 对各种同态运算进行了详细而简单的分析,并推导出了这些运算所引起噪声最坏情况的严格界限。
- 使用一个简单的模数转换技巧,我们简化了 bootstrapping 步骤的分析。
- 在此基础上,结合方案 [14],对方案进行了实际的安全分析,最终得到了给定安全级别的全同态方案的具体参数。
- 提供了两个新版本的重线化。
4. 文章思路
本文的其余部分组织如下:
- 第2节简要回顾了概率的符号表示和一些背景
- 第3节回顾了一个非常优雅的基于RLWE的加密方案,它将作为第4节描述的 somewhat 同态方案的基础
- 第5节分析了 bootstrapping 步骤,并确定了最小深度,在这个最小深度上,somewhat 同态方案可以被全同态化
- 第6节使用 Lindner 和 Peikert [14] 的分析来推导给定安全级别的全同态方案的参数
- 最后,第7节是本文的结论,并强调了正在进行的工作
三、基础数学知识
四、基于 RLWE 的加密
1. LWE 问题
先来简单概括一下 LWE 问题的基本思路:给定一个线性方程 A ⋅ s + e A \cdot s + e A⋅s+e,其中:
- A 是一个已知矩阵
- s 是未知的秘密向量
- e 是一个小的错误向量,通常是随机的
目标是通过已知的 A ⋅ s + e A \cdot s + e A⋅s+e 来恢复 s,即从带有噪声的线性方程中恢复秘密 s。
LWE 问题的难度在于:即使知道 A 和 A ⋅ s + e A \cdot s + e A⋅s+e,也无法有效地从中恢复出秘密 s(尤其当错误 e 是一个随机小数时)。这种难度是基于数学中的格问题。
2. RLWE 问题
RLWE 是 LWE 的一种改进形式,主要通过引入 环结构 来提高 计算效率。RLWE 问题可以表示为一下形式:
- 首先给定一些参数 :
- 一个环 R = Z [ x ] / ( f ( x ) ) R=Z[x]/(f(x)) R=Z[x]/(f(x)),其中 f(x) 是不可约多项式,通常选用的是环多项式 ϕ m ( x ) \phi_m(x) ϕm(x) ,他是某个整数 m 的 循环多项式 (即 分圆多项式)。
- 一个大整数 q,称为 模数,它用来定义环的商域 R q R_q Rq。
- 一个 秘密向量 s ∈ R q s \in R_q s∈Rq,它通常从某种分布 χ \chi χ(通常是离散高斯分布)中随机选择。
- χ \chi χ 是一个分布,用来生成噪声项 e,该噪声项是由环 R q R_q Rq 中的元素通过 χ \chi χ 随机生成的。
可以看出 R q R_q Rq 是一个模 q 的有限多项式环。
χ \chi χ 是生成噪声的概率分布,通常是离散分布。它用于为密文引入误差,从而使问题难以解密。在RLWE中,噪声是加密过程中非常重要的一部分。但是它通常是帮助从 R q R_q Rq 中随机取多项式元素的。有提到,"该噪声项是由环 R q R_q Rq 中的元素通过 χ \chi χ 随机生成的",这句话的含义是 e 是 R q R_q Rq 中的多项式元素。
- 加密过程 :
对于一个秘密向量 s 和一个随机选择的元素 a ∈ R q a \in R_q a∈Rq,选择一个噪声项 e ∈ χ e \in \chi e∈χ,加密的输出是一个二元组 ( a , [ a ⋅ s + e ] q ) (a, [a \cdot s + e]_q) (a,[a⋅s+e]q),其中:- a 是环 R q R_q Rq 中的一个随机元素。
- s ⋅ a s \cdot a s⋅a 是 s 和 a 的乘积,并且这个乘积是加上一个噪声项 e 后,再对模数 q 取模。
- RLWE 问题的任务 (Decision-RLWE Problem) :
判断该二元组是来自加密过程(即 ( a , [ a ⋅ s + e ] q ) (a, [a \cdot s + e]_q) (a,[a⋅s+e]q)),还是来自均匀分布 U ( R q 2 ) U(R^2_q) U(Rq2),即判断 a 和 ( a , [ a ⋅ s + e ] q ) (a, [a \cdot s + e]_q) (a,[a⋅s+e]q) 是不是随机选取的。 - 为什么 RLWE 很重要 :
- 加密安全性:抗量子攻击
- 高效的同态加密:RLWE 被广泛用于构造同态加密方案。RLWE 的结构使得这种加密技术变得更为高效。
- 环结构优化:与传统的 LWE 问题相比,RLWE 通过环结构优化了计算,减少了加密算法的计算开销,使其在实际应用中更具可操作性。
3. RLWE 问题的难度和安全性
RLWE 问题的安全性来自于 理想格(ideal lattices) 的 最短向量问题(SVP) ,这意味着 RLWE 问题是 计算上困难 的,且目前没有已知的高效算法能解决它。
RLWE 通过巧妙的数学结构,在保证加密安全性的同时,提供了处理噪声增长的可能性。
五、加密方案
1. LPR.ES 加密方案
上述的决策问题直接导致了以下的加密方案,作为 [15][1](#1) 扩展版中描述的加密系统。
- 明文空间 被设定为 R t R_t Rt,其中 t > 1 t>1 t>1 是一个整数
- Δ = ⌊ q / t ⌋ \Delta = \lfloor q/t \rfloor Δ=⌊q/t⌋ 并定义 r t ( q ) = q m o d t r_t(q)=q\ mod\ t rt(q)=q mod t,
- 显然我们有 q = Δ ⋅ t + r t ( q ) q=\Delta \cdot t + r_t(q) q=Δ⋅t+rt(q)。需要注意的是,q 和 t 不必是质数,也不要求 t 和 q 互质。
加密方案 LPR.ES 定义如下:
- LPR.ES.SecretKeyGen(1λ):
S a m p l e s ← χ O u t p u t s k = s Sample\ s \larr \chi \\Output\ sk=s Sample s←χOutput sk=s - LPR.ES.PublicKeyGen(sk):
S e t s = s k S a m p l e a ← R q , e ← χ O u t p u t p k = ( [ − ( a ⋅ s + e ) ] q , a ) Set\ s=sk\\Sample\ a \larr R_q,\ e \larr \chi\\Output\ pk=([-(a \cdot s+e)]_q,a) Set s=skSample a←Rq, e←χOutput pk=([−(a⋅s+e)]q,a) - LPR.ES.Encrypt(pk, m):
M e s s a g e m ∈ R t L e t p 0 = p k [ 0 ] , p 1 = p k [ 1 ] S a m p l e u , e 1 , e 2 ← χ R e t u r n c t = ( [ p 0 ⋅ u + e 1 + Δ ⋅ m ] q , [ p 1 ⋅ u + e 2 ] q ) Message\ m \in R_t \\Let\ p_0=pk[0],\ p_1=pk[1]\\Sample\ u,e_1,e_2 \larr \chi \\Return\ ct=([p_0 \cdot u+e_1+\Delta \cdot m]_q,[p_1 \cdot u+e_2]_q) Message m∈RtLet p0=pk[0], p1=pk[1]Sample u,e1,e2←χReturn ct=([p0⋅u+e1+Δ⋅m]q,[p1⋅u+e2]q) - LPR.ES.Decrypt(sk, ct):
S e t s = s k , c 0 = c t [ 0 ] , c 1 = c t [ 1 ] C o m p u t e [ ⌊ t ⋅ [ c 0 + c 1 ⋅ s ] q q ⌉ ] t Set\ s=sk,\ c_0=ct[0],\ c_1=ct[1]\\Compute\ [\lfloor \frac{t \cdot [c_0+c_1 \cdot s]_q}{q} \rceil]_t Set s=sk, c0=ct[0], c1=ct[1]Compute [⌊qt⋅[c0+c1⋅s]q⌉]t
2. Lemma 1 (引理 1)
为了证明当密文正确加密时解密是正确的,证明以下 引理 (Lemma) 。
使用上述加密方案 LPR.ES 的符号,并假设 ∣ ∣ χ ∣ ∣ < B ||\chi|| < B ∣∣χ∣∣<B,我们有:
c 0 + c 1 ⋅ s \] q = Δ ⋅ m + v ( 1 ) \[c_0+c_1 \\cdot s\]_q=\\Delta \\cdot m+v\\ \\ \\ \\ \\ \\ (1) \[c0+c1⋅s\]q=Δ⋅m+v (1) 通过上面给出的 c t 和 p k 可以计算出 \[ c 0 + c 1 ⋅ s \] q = Δ ⋅ m + ( e 1 + e 2 ⋅ s − e ⋅ u ) 然后用 v 表示 ( e 1 + e 2 ⋅ s − e ⋅ u ) 通过上面给出的ct 和pk可以计算出\\\\ \[c_0+c_1 \\cdot s\]_q=\\Delta \\cdot m+(e_1+e_2 \\cdot s-e \\cdot u)\\\\然后用\\ v\\ 表示\\ (e_1+e_2 \\cdot s-e \\cdot u) 通过上面给出的ct和pk可以计算出\[c0+c1⋅s\]q=Δ⋅m+(e1+e2⋅s−e⋅u)然后用 v 表示 (e1+e2⋅s−e⋅u)其中, ∣ ∣ v ∣ ∣ ≤ 2 ⋅ δ R ⋅ B 2 + B \|\|v\|\| \\le 2 \\cdot \\delta_R \\cdot B\^2+B ∣∣v∣∣≤2⋅δR⋅B2+B。这意味着当 2 ⋅ δ R ⋅ B 2 + B \< Δ / 2 2 \\cdot \\delta_R \\cdot B\^2 + B \< \\Delta /2 2⋅δR⋅B2+B\<Δ/2 时,解密正确,即当 ***噪声项 v 较小*** 时,解密过程就能正确进行。
> B 代表了噪声的 最大幅度,即在选择噪声分布 (这里是 χ \\chi χ) 时,通常会设定一个上界 B 来表示噪声项的可能范围。
可以看出来,如果可以使得 u 和 s 越小,则噪声 v 就会越小。这句话导致了下面的优化和相应的假设。
### 3. Optimisation/Assumption 1 (优化/假设 1)
我们将不从 χ \\chi χ 中采样 s , u s,u s,u,而是从 R 2 R_2 R2 中采样,即 ∣ ∣ s ∣ ∣ = ∣ ∣ u ∣ ∣ = 1 \|\|s\|\| = \|\|u\|\| = 1 ∣∣s∣∣=∣∣u∣∣=1。但是 e 1 , e 2 e_1,e_2 e1,e2 仍从 χ \\chi χ 中采样。这种情况下 ***Lemma 1*** 中的界限 ∣ ∣ v ∣ ∣ \|\|v\|\| ∣∣v∣∣ 变成了 B ⋅ ( 2 ⋅ δ R + 1 ) B \\cdot (2 \\cdot \\delta_R+1) B⋅(2⋅δR+1)。
> sk 只从 R~2~ 中采样,会不会有什么问题。
*** ** * ** ***
## 六、Somewhat Homomorphic Encryption
这一部分是 FHE 的前一个版本,是这篇文章的重点部分。在本节中,我们将基于 RLWE 的 ***LPR.ES*** 给出一个 SHE 方案 ***FV.SH*** 。
事实上,***FV.SH*** 和 ***LPR.ES*** 的密钥生成、加密、解密过程完全相同,只不过使用了上一章中的 优化/假设1 u , s ← R 2 u,s \\larr R_2 u,s←R2 进行优化。***FV.SH*** 对 ***LPR.ES*** 的主要优化是,补充了一个名为 ***rlk*** 的 ***重线性化密钥***,这是用来计算 ***同态乘法*** 的。
LPR.ES 方案的主要不变量由 ***公式 (1)*** 给出,即 Lemma 1 中的公式 (1),即 ***当我们将密文 ct 的元素视为多项式 ct(x) 的系数***,并在 s 中对该多项式进行评估时,我们得到:
\[ c t ( s ) \] q = \[ c 0 + c 1 ⋅ s \] q = Δ ⋅ m + v \[ct(s)\]_q = \[c_0+c_1 \\cdot s\]_q = \\Delta \\cdot m + v \[ct(s)\]q=\[c0+c1⋅s\]q=Δ⋅m+v通过这种方式,我们可以轻松恢复消息 m。利用这种解释,推导同态加法 ***FV.SH.Add*** 和同态乘法 ***FV.SH.Mul*** 就变得相对容易。
> c t ( s ) ct(s) ct(s) 就是 c 0 + c 1 ⋅ s c_0 + c_1 \\cdot s c0+c1⋅s,其中 s 是私钥 sk 这里从 R 2 R_2 R2 中获取。
> 为什么可以轻松恢复消息 m?为什么加法和乘法会变简单?
> 理解这个内容非常重要!!!!!!!!这涉及到下面的加法和乘法的理论推导。
> 由于对于这里的同态加密来说,对于每个密文,密钥 sk 是不变的,而 m , u , e 1 , e 2 m,u,e_1,e_2 m,u,e1,e2 的改变会导致 c t = \[ c t 0 , c t 1 \] ct=\[ct_0,ct_1\] ct=\[ct0,ct1\] 的改变。
> 这个将密文元素视为多项式系数的方法,也就是 ***用多项式来表示密文***,这个多项式的自变量是私钥 sk。同时,它也是解密算法中的核心内容。通过 ***在秘密值 s 上评估密文多项式*** ,能够 ***恢复*** 出加密前的消息 m(或者其近似值),并且还会有噪声项 v。
>
> * 在加法中,对于左边的多项式部分,直接相加并不会影响其结构。由于左边可以直接相加,所以右边的评估部分也直接相加即可。
> * 在乘法中,对于左边的多项式部分,直接相乘会导致产生一个新的项,通过适当的缩放、四舍五入和重线性化技术来处理结果。最终,乘法后的结果仍然是一个可以在秘密值 s 上进行评估的多项式。
>
> 整体思路就是,在 LPR.ES 方案的基础上,首先将加密的输出弄成 \[ c 0 + c 1 ⋅ s \] q = Δ ⋅ m + v \[c_0+c_1 \\cdot s\]_q = \\Delta \\cdot m + v \[c0+c1⋅s\]q=Δ⋅m+v 的形式,然后解密的过程就是对这个式子进行简单的解方程。关键就在于中间的同态操作如何进行。
### 1. Addition
假设有两个密文 c t 1 ct_1 ct1 和 c t 2 ct_2 ct2,其中:
\[ c t i ( s ) \] q = \[ c i , 0 + c i , 1 ⋅ s \] q = Δ ⋅ m i + v i ( i = 1 , 2 ) \[ct_i(s)\]_q = \[c_{i,0}+c_{i,1} \\cdot s\]_q = \\Delta \\cdot m_i + v_i\\ \\ \\ (i=1,2) \[cti(s)\]q=\[ci,0+ci,1⋅s\]q=Δ⋅mi+vi (i=1,2)那么可以很容易地看出:
\[ c t 1 ( s ) + c t 2 ( s ) \] q = \[ ( c 1 , 0 + c 2 , 0 ) + ( c 1 , 1 + c 2 , 1 ) ⋅ s \] q = Δ ⋅ \[ m 1 + m 2 \] t + v 1 + v 2 − ϵ ⋅ t ⋅ r \[ct_1(s) + ct_2(s)\]_q = \[(c_{1,0} + c_{2,0}) + (c_{1,1} + c_{2,1}) \\cdot s\]_q \\\\ = \\Delta \\cdot \[m_1 + m_2\]_t + v_1 + v_2 - \\epsilon \\cdot t \\cdot r \[ct1(s)+ct2(s)\]q=\[(c1,0+c2,0)+(c1,1+c2,1)⋅s\]q=Δ⋅\[m1+m2\]t+v1+v2−ϵ⋅t⋅r其中, ϵ = q t − Δ = r t ( q ) t \< 1 \\epsilon = \\frac{q}{t} - \\Delta = \\frac{r_t(q)}{t}\<1 ϵ=tq−Δ=trt(q)\<1,并且 m 1 + m 2 = \[ m 1 + m 2 \] t + t ⋅ r m_1 + m_2 = \[m_1 + m_2\]_t + t \\cdot r m1+m2=\[m1+m2\]t+t⋅r。注意 ∣ ∣ r ∣ ∣ ≤ 1 \|\|r\|\| \\le 1 ∣∣r∣∣≤1,这意味着 ***加法操作中噪声最多增加 t*** 。因此,可以定义 ***同态加法*** 操作为:
F V . S H . A d d ( c t 1 , c t 2 ) : = ( \[ c t 1 \[ 0 \] + c t 2 \[ 0 \] \] q , \[ c t 1 \[ 1 \] + c t 2 \[ 1 \] \] q ) FV.SH.Add(ct_1,ct_2) := (\[ct_1\[0\]+ct_2\[0\]\]_q,\\ \[ct_1\[1\]+ct_2\[1\]\]_q) FV.SH.Add(ct1,ct2):=(\[ct1\[0\]+ct2\[0\]\]q, \[ct1\[1\]+ct2\[1\]\]q)
> 关于上面公式中 − ϵ ⋅ t ⋅ r -\\epsilon \\cdot t \\cdot r −ϵ⋅t⋅r 是怎么来的:
>
> * ϵ \\epsilon ϵ 表示一个小于1的量,它是由于加法操作中出现的四舍五入误差。
> * t ⋅ r t \\cdot r t⋅r 是由于取模 t t t 时的误差项引入的 ***调整项*** 。这个误差项来源于 m 1 + m 2 m_1+m_2 m1+m2 和 t t t 之间的关系。
### 2. Multiplication
同态乘法包括两个步骤:
第一步相对简单,基本上是将多项式 c t 1 ( x ) ct_1(x) ct1(x) 和 c t 2 ( x ) ct_2(x) ct2(x) 相乘并按 t / q t/q t/q ***缩放 (scaling)*** 。然而,问题在于我们得到的密文包含了 3 个环元素,而不是 2 个。
第二步解决了这个问题,这一过程称为 ***"重线性化" (relinearisation)***。
#### 2.1 基本的乘法 (第一步)
首先,我们将密文 c t i ( x ) ct_i(x) cti(x) 在 s 上的评估写为:
c t i ( s ) = c i , 0 + c i , 1 ⋅ s = Δ ⋅ m i + v i + q ⋅ r i ct_i(s) = c_{i,0} + c_{i,1} \\cdot s = \\Delta \\cdot m_i + v_i + q \\cdot r_i cti(s)=ci,0+ci,1⋅s=Δ⋅mi+vi+q⋅ri
> 关于这里的表示,为什么比之前的表示多了一个 q ⋅ r i q \\cdot r_i q⋅ri:
>
> 实际上和取模相关,上面式子中的 c t i ( s ) ct_i(s) cti(s) 是对 q 取模的,如果将取模符号去掉,则需要加上一个 r i r_i ri 倍的 q q q,才能使等式成立。
简单计算表明 ∣ ∣ r i ∣ ∣ \< δ ⋅ ∣ ∣ s ∣ ∣ \|\|r_i\|\|\<\\delta \\cdot \|\|s\|\| ∣∣ri∣∣\<δ⋅∣∣s∣∣。然后我们将这些表达式相乘,得到:
( c t 1 ⋅ c t 2 ) ( s ) = c 0 + c 1 ⋅ s + c 2 ⋅ s 2 ( 2 ) = Δ 2 ⋅ m 1 ⋅ m 2 + Δ ⋅ ( m 1 ⋅ v 2 + m 2 ⋅ v 1 ) + q ⋅ ( v 1 ⋅ r 2 + v 2 ⋅ r 1 ) + v 1 ⋅ v 2 + q ⋅ Δ ⋅ ( m 1 ⋅ r 2 + m 2 ⋅ r 1 ) + q 2 ⋅ r 1 ⋅ r 2 (ct_1 \\cdot ct_2)(s) = c_0 + c_1 \\cdot s + c_2 \\cdot s\^2\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ (2)\\\\ = \\Delta\^2 \\cdot m_1 \\cdot m_2 + \\Delta \\cdot (m_1 \\cdot v_2 + m_2 \\cdot v_1)+q \\cdot (v_1 \\cdot r_2+v_2 \\cdot r_1)+v_1 \\cdot v_2 + q \\cdot \\Delta \\cdot (m_1 \\cdot r_2 + m_2 \\cdot r_1) + q\^2 \\cdot r_1 \\cdot r_2 (ct1⋅ct2)(s)=c0+c1⋅s+c2⋅s2 (2)=Δ2⋅m1⋅m2+Δ⋅(m1⋅v2+m2⋅v1)+q⋅(v1⋅r2+v2⋅r1)+v1⋅v2+q⋅Δ⋅(m1⋅r2+m2⋅r1)+q2⋅r1⋅r2上述表达式显示,为了恢复一个密文表示 \[ m 1 ⋅ m 2 \] t \[m_1 \\cdot m_2\]_t \[m1⋅m2\]t,我们需要按 1 / Δ 1/\\Delta 1/Δ 进行缩放,由于 Δ \\Delta Δ 不一定能整除 q,我们会得到由 ***最后一项*** 的四舍五入误差 (rounding error) 引起的 ***大噪声*** 。为了解决这个问题,我们将 ***按 t / q t/q t/q 进行缩放 (scaling)***。
> q 应该是要大于 t 的。
假设 c t 1 ( x ) ⋅ c t 2 ( x ) = c 0 + c 1 ⋅ x + c 2 ⋅ x 2 ct_1(x) \\cdot ct_2(x) = c_0 + c_1 \\cdot x + c_2 \\cdot x\^2 ct1(x)⋅ct2(x)=c0+c1⋅x+c2⋅x2,那么我们使用以下 ***近似*** :
t q ⋅ ( c t 1 ⋅ c t 2 ) ( s ) = ⌊ t ⋅ c 0 q ⌋ + ⌊ t ⋅ c 1 q ⌋ ⋅ s + ⌊ t ⋅ c 2 q ⌋ ⋅ s 2 + r a ( 3 ) \\frac{t}{q} \\cdot (ct_1 \\cdot ct_2)(s) = \\lfloor \\frac{t \\cdot c_0}{q} \\rfloor + \\lfloor \\frac{t \\cdot c_1}{q} \\rfloor \\cdot s + \\lfloor \\frac{t \\cdot c_2}{q} \\rfloor \\cdot s\^2 + r_a\\ \\ \\ \\ \\ \\ \\ \\ (3) qt⋅(ct1⋅ct2)(s)=⌊qt⋅c0⌋+⌊qt⋅c1⌋⋅s+⌊qt⋅c2⌋⋅s2+ra (3)这里引入了一个 ***近似误差 r a r_a ra*** ,其大小小于 ( δ ⋅ ∣ ∣ s ∣ ∣ + 1 ) 2 / 2 (\\delta \\cdot \|\|s\|\| + 1)\^2/2 (δ⋅∣∣s∣∣+1)2/2。
通过这些步骤,我们得到了一个密文,该密文表示乘法结果,但它的噪声已经增长,因此需要通过重线性化来恢复。
> r a r_a ra 表示在缩放和四舍五入过程中引入的 ***附加误差*** 。这通常是因为在进行密文乘积和缩放时,可能无法完全精确地恢复原始的乘积结果,导致误差的引入。
>
> r a r_a ra 通常是一个很小的量,表示在计算过程中引入的不可避免的噪声。
>
> 关于公式 c t 1 ( x ) ⋅ c t 2 ( x ) = c 0 + c 1 ⋅ x + c 2 ⋅ x 2 ct_1(x) \\cdot ct_2(x) = c_0 + c_1 \\cdot x + c_2 \\cdot x\^2 ct1(x)⋅ct2(x)=c0+c1⋅x+c2⋅x2 是怎么来的,实际上就是把 ***多项式表示的密文*** 相乘了。
如果我们写 m 1 ⋅ m 2 = \[ m 1 ⋅ m 2 \] t + t ⋅ r m m_1 \\cdot m_2 = \[m_1 \\cdot m_2\]_t + t \\cdot r_m m1⋅m2=\[m1⋅m2\]t+t⋅rm,则 ∣ ∣ r m ∣ ∣ \< ( t ⋅ δ R ) / 4 \|\|r_m\|\|\<(t \\cdot \\delta_R)/4 ∣∣rm∣∣\<(t⋅δR)/4。
同样地,如果我们写 v 1 ⋅ v 2 = \[ v 1 ⋅ v 2 \] Δ + Δ ⋅ r v v_1 \\cdot v_2 = \[v_1 \\cdot v_2\]_{\\Delta} + \\Delta \\cdot r_v v1⋅v2=\[v1⋅v2\]Δ+Δ⋅rv,则 ∣ ∣ r v ∣ ∣ \< ( E 2 ⋅ δ R ) / Δ \|\|r_v\|\|\<(E\^2 \\cdot \\delta_R)/ \\Delta ∣∣rv∣∣\<(E2⋅δR)/Δ。其中,E 是原始噪声项的界限, ∣ ∣ v i ∣ ∣ \< E \|\|v_i\|\|\
这里 R T R_T RT 是一个比较小的环。因为有提到 "将 c2 切分成若干 小范数的部分"。
- 假设2:
请注意,重线性化密钥 rlk 包含的 T i ⋅ s 2 T^i \cdot s^2 Ti⋅s2 的掩蔽版本 既不是 RLWE 分布的真实样本,也不是 T i ⋅ s 2 T^i \cdot s^2 Ti⋅s2 的真实加密。这个事实为我们的方案引入了一个额外的假设,即 在对手可以访问 rlk 的情况下,方案仍然是安全的 。
这个性质是一个 弱圆形安全性(weak circular security)。
如果我们现在定义:
c 0 ′ = [ c 0 + ∑ i = 0 l r l k [ i ] [ 0 ] ⋅ c 2 ( i ) ] q c 1 ′ = [ c 1 + ∑ i = 0 l r l k [ i ] [ 1 ] ⋅ c 2 ( i ) ] q ( 4 ) c_0' = [c_0 + \sum_{i=0}^{l}rlk[i][0] \cdot c_2^{(i)}]q\\\ \ \ \ \ \ \ \ \ \ c_1' = [c_1 + \sum{i=0}^{l}rlk[i][1] \cdot c_2^{(i)}]q\ \ \ \ \ (4) c0′=[c0+i=0∑lrlk[i][0]⋅c2(i)]q c1′=[c1+i=0∑lrlk[i][1]⋅c2(i)]q (4)那么我们可以计算:
c 0 ′ + c 1 ′ ⋅ s = c 0 + c 1 ⋅ s + c 2 ⋅ s 2 − ∑ i = 0 l c 2 ( i ) ⋅ e i m o d q c_0' + c_1' \cdot s = c_0 + c_1 \cdot s + c_2 \cdot s^2 - \sum{i=0}^{l}c_2^{(i)} \cdot e^i\ \ \ \ mod\ q c0′+c1′⋅s=c0+c1⋅s+c2⋅s2−i=0∑lc2(i)⋅ei mod q通过对两边应用 [ ⋅ ] q [\cdot]q [⋅]q 运算,我们最终得出:
r = ∑ i = 0 l c 2 ( i ) ⋅ e i r = \sum{i=0}^{l} c_2^{(i)} \cdot e_i r=i=0∑lc2(i)⋅ei上述推导还表明,T 对重线性化有以下影响:
- s
- On Ideal Lattices and Learning with Errors over Rings ↩︎