无噪声全同态加密方案

无噪声的全同态加密

摘要

在这篇论文中,作者提出了一种新颖的完全同态加密方案,该方案在$\mathbb{Z}_N$和 $\mathbb{Z}_N^h$之间运行,能够任意执行加法和乘法运算。新方案是紧凑的,对任意两个密文执行的每次操作(加法或乘法)都会生成一个没有相关噪声的新密文。因此,该方案无需任何自举过程或噪声减少技术来刷新密文。据作者所知,目前尚不存在使用$\mathbb{Z}_N$作为明文集合的任何现有完全、部分或层次化同态加密方案,因此该新密码系统已被实现,并且其性能已与恒等编码进行了比较。

关键词
紧凑的,完整的同态加密,无噪声,向量空间

引言

一个同态加密方案是一种具有某种程度的称为延展性的性质的方案。加密方案的延展性是指能够以一个或多个密文作为输入,并生成一个新的密文,该新密文表示对参与运算的密文所对应的明文应用某个已知函数后结果的加密。

例如,一种加密方案允许通过计算两个对应密文的某个函数$f$来得到两个明文之和的加密结果,则该方案具有一定程度的延展性。即使所使用的函数$f$是像RSA密码系统(Rivest, Shamir, & Adleman, 1978)中那样的乘法运算,此类方案也被称为加法同态方案。

同样,一种允许计算两个明文乘积的加密结果的加密方案也具有一定程度的延展性,并被称为乘法同态方案。

许多加密方案表现出这两种延展性或同态性之一。著名的例子包括Goldwasser-Micali(Goldwasser, & Micali, 1982年),它是一个加法同态密码系统,以及ElGamal(ElGamal, 1985),它是一个乘法同态密码系统,但同时具备这两种延展性的实用加密方案却很少见。这种既支持加法同态又支持乘法同态的方案被称为完全同态加密方案,因为它们能够实现对密文数据进行任意函数的计算。这是该方案所能达到的最高程度的延展性。

在本文中,作者设计了一种新颖的完全同态密码系统,该系统具有执行任意数量加法和乘法操作而不向结果密文引入噪声的性质。本文其余部分组织如下:背景部分概述了全同态加密方案,并强调了它们的优点和缺点;方案部分提出了一种新颖的无噪声全同态加密方案(NFHE),并证明了其同态性质;安全性分析部分分析了所提方案的安全性,讨论了该方案在何种条件下是安全的,并列举了一些对手可能尝试用以攻破NFHE密码系统的攻击方法;接下来的部分介绍了该方案在私有信息检索中的直接应用;在性能分析部分,作者展示了他们的全同态加密方案与恒等编码相比的比较结果;最后,最后一节对本文进行了总结。

背景

首个完全同态加密方案

第一个完全同态方案由克雷格·盖内特在2009年的哲学博士论文中提出(盖内特,2009a)。盖内特构建首个同态加密方案的方法后来被称为盖内特蓝图,迄今为止,据作者所知,这是生成完全同态加密方案的唯一方法。该蓝图由以下描述的两个主要步骤组成。

构造一个带噪声的部分同态加密方案

一个部分同态加密方案,或SHE方案,是一种密码系统,由于每个密文都关联有一个称为噪声的量,该噪声会随着每次操作而增长,从而导致解密无法保证在噪声超过某个阈值时正常工作,因此对密文上可执行的操作数量有限制。盖内特(Gentry, 2009a)在其论文中提出了一个仅使用整数的此类方案的基本示例,作为“玩具示例”,随后Van Dijk、盖内特、哈莱维和瓦昆塔纳坦(Van Dijk, Gentry, Halevi, & Vaikuntanathan, 2010)通过使用近似GCD问题将其改进为安全版本。该方案在文献中也被称为DGHV,其核心是将一个比特$x$加密为 $E(x) = x + 2r + pq$,其中$r$和$q$是随机值,而$p$是该方案的秘密密钥。解密过程极为简单,即 $\Delta(c) = (c \mod p) \mod 2$。在此示例中,噪声即为$2r$的值。实际上,可以看出,为了使解密正确进行,$2r$的值必须小于秘密密钥。还可以观察到,两个密文的和会产生一个噪声等于两个噪声之和的新密文。同样地,当密文相乘时,噪声也会相乘。这直接意味着可在密文上执行的操作数量受限,因此该方案可评估的电路深度也受到限制。

使构造方案可自举

由于噪声会随着操作而增长,为何不能简单地刷新密文?刷新一个密文意味着用一个加密相同值但噪声处于安全且小得多水平的密文,替换掉当前噪声 dangerously 高的密文,就像新生成的密文所关联的噪声那样。

密文。这个是盖内特想要实现的目标,因为如果有一种方法可以刷新、或者用盖内特的术语来说,“重新加密”密文,那么可执行的操作数量就不再受限,因为可以在每次操作后刷新密文。

为了实现这一目标,盖内特提出了一个开创性的巧妙想法:同态地评估部分同态加密方案的解密电路,输入为需要刷新的密文以及对秘密密钥的加密。

为了使刷新(或重新加密)能够正常工作,仍然需要确保解密电路可以被正确计算,即在计算过程中噪声不会超过阈值。这通常通过盖内特所称的“压缩”来实现。压缩是一种技术,它简化解密电路,使其能够在使用部分同态加密方案时进行计算而不会超出任何噪声阈值。然而,该技术的问题在于其基于一个尚未得到充分研究的困难性假设,即“稀疏子集和问题”(SSSP)是困难的(Gentry, 2009a; Gentry et al., 2009b)。SSSP 问题是判断某个整数集合是否包含一个非空的稀疏整数子集,这些整数之和为零。一旦该方案能够正确计算其自身的解密电路,则称其为可自举的(Gentry, 2009a)。盖内特在他的哲学博士论文(Gentry, 2009a)中证明,一个可自举的方案可以计算任意深度的电路,从而实现了长期以来追求的完全同态性质。

后续同态加密方案

在盖内特取得突破之后,所有后续的全同态加密方案不过是上述盖内特蓝图的某种实例化。

每个方案都内在地需要一个部分同态加密方案和自举过程,而当某些工作声称摆脱了自举时,实际上仅实现了层次化HE,正如本节后面将看到的,这并不是真正的全同态加密。

盖内特蓝图的一个实例化示例由斯马特和弗卡特伦在(斯马特,& 弗卡特伦,2010)中描述。他们的方案基于数域中的素理想,能够加密比特以及二元多项式。作者将他们的方案与盖内特的工作(盖内特,2009a)进行了比较,并声称其具有更小的密钥和密文,从而能够更高效地实现全同态加密。然而,在该实例化方案中,仍然需要通过自举将部分同态加密方案转化为全同态加密方案。

Coron et al. 在(Coron et al., 2011)中提出了对整数上的全同态加密方案DGHV(Van Dijk et al., 2010)的改进。在原始的DGHV方案中,公钥是一组关于零的加密,从中选择一个子集以帮助计算消息的加密。在(Coron et al., 2011)中提出的改进在于,将 DGHV方案中公钥的每个元素视为一个关于零的加密与一个关于一的加密的乘积。因此,(Coron et al., 2011)中的新公钥被选择为包含成对$(x,y)$其中$x$是关于零的加密,$y$是关于一的加密。可以看出,如果新公钥包含$2N$个整数($N$对),那么原始公钥包含$N^2$个元素,由所有关于零的加密与关于一的加密相乘的组合构成。该改进的代价是依赖于近似GCD问题的一个更强的困难性假设。

在(Brakerski,& Vaikuntanathan,2011年)中提出了盖内特蓝图的一个实例。该实例基于环上误差学习(RLWE)问题的困难性构建了一个完全同态加密方案,根据作者的说法,其优点在于可归约到理想格上的最坏情况问题。作者在(Brakerski,& Vaikuntanathan,2011年)中的另一个重要贡献是证明了他们的方案具有某种循环安全性质,这使得该方案成为首个实现此性质的部分同态加密方案,意味着该方案可以加密其秘密密钥的多项式函数。循环安全性的主要效果是使公钥的大小与所涉及电路的大小无关。最后,由于作者使用了与盖内特相同的压缩技术,因此他们的方案存在同样的弱点,即依赖于SSSP假设。

在初始蓝图提出两年后,盖内特和哈莱维在(Gentry, & Halevi, 2011年)中提出了盖内特方案的一个略有不同的版本,其中关于SSSP是困难的假设已经被消除,并通过以一种允许使用乘法同态加密的方式表达解密电路来替代,以ElGamal (ElGamal, 1985)为例,在同态评估解密电路的一部分过程中使用。这无疑是一个改进,但无论是否采用压缩,所谓计算代价高昂的自举仍然是不可避免的。

布拉克斯基等人(2014)提出了一种基于LWE和RLWE问题的层次化全同态加密方案,该方案无需自举。然而,层次化FHE并非完全的FHE,它仅意味着该方案能够评估任意电路,前提是事先进行了充分的参数化。但一旦参数确定,总可以构造出更深的电路,使得该方案无法正确评估。层次化HE的主要优势在于不再需要自举,因为该方案被专门设计为支持特定的电路深度,且不会超过噪声阈值。

布拉克斯基和瓦昆塔纳坦继续发表了另一项工作(Brakerski, & Vaikuntanathan, 2014),其中他们提出了一种基于格上已知困难问题安全性而非理想格的安全性的部分同态加密方案,因为理想格是一个相对较少被研究的领域。(Brakerski, & Vaikuntanathan, 2014) 中作者的第二个贡献是,他们最终摆脱了对 SSSP 困难性的依赖,采用了一种称为维度-模数缩减的技术,该技术能够将一个密文转换为具有更小解密多项式次数的等效密文,但噪声更高,从而在一定程度上保持相同的安全级别。该方案仍依赖于自举和循环安全假设才能转化为全同态加密方案。据称该全同态加密方案相当高效,因为它生成的密文更小。作者使用它实现了一个私有信息检索协议。

在基于整数的全同态加密背景下,崔恩和施特勒在(Cheon, & Stehlé, 2015年)中消除了SSSP困难性假设。在这篇论文中,作者通过证明存在一个近似GCD问题的变体,其困难性至少与带误差学习问题(LWE)相当,从而改进了DGHV密码系统。作者将该近似 GCD问题变体的困难性作为安全基础,用以构建改进后的密码系统。在此密码系统中,一个比特$m$被加密为$c = q\lfloor p/2 \rfloor + m + 2r$其中 $\lfloor p/2 \rfloor$表示最接近 $p/2$的整数。作者声称,与DGHV相比,他们不仅获得了更好的安全性假设,还实现了更优的渐近效率。

最后,为了理解研究人员在消除自举方面所面临的巨大困难,王(Wang, 2015)发表了一篇文章,其中他指出2015年发表的两项工作(Liu, 2015;Yagisawa, 2015)声称已消除了自举或噪声缩减,但实际上“显然是不安全的”。

应用示例

全同态加密具有广泛的应用。例如,(Wood, 2018)的工作使用全同态加密对医疗数据执行机器学习计算,考虑到此类数据的隐私性和敏感性,这种方法非常理想。类似的研究也在(Chen et al., 2018a)中进行,作者使用全同态加密在加密数据上训练逻辑回归模型。同年,陈等人在(Chen, Huang, Laine, & Rindal, 2018b)中提出了一种基于全同态加密的私有集合交集问题变体的解决方案。另一个全同态加密应用的例子见于(Rønne, Atashpendar, Gjøsteen, & Ryan, 2019),其中作者使用全同态加密改进了Juels等人(Juels, Catalano, & Jakobsson, 2010)提出的抗胁迫投票协议。

方案

在本节中,作者正式定义了他们的无噪声完全同态加密方案(NFHE)并证明了其同态性质。在这篇论文中,所有随机变量都选自一个均匀分布。

加法同态方案

上下文

设$p$和$q$为两个在$\lambda$位上编码的(通常为= 512)素数,且$h \geq 2$。数值$N=pq=$连同$h$是公开的,而将$N$分解为$p$和$q$的过程则被保密。

明文的集合是有限环 $\mathbb{Z}_p$,配备模 $N$ 的加法和乘法,分别记为“+”和“.”(引号仅用于清晰说明)。

在论文的其余部分,除非另有明确说明,所有对$\mathbb{Z}_p$或$\mathbb{Z}_N$元素的加法和乘法操作均在模$p$下进行,使得这些操作在任何时刻的结果始终是来自 ${0, 1, …, p-1}$。当此类操作由某人执行,而此人没有秘密模数$p$时,将使用公开模数 $N$来计算所需的操作。

密文的集合是有限向量空间 $\mathbb{Z}_N^h$。这意味着所有密文都具有如下形式:$(\alpha_1, \alpha_2, …, \alpha_h)$其中 $\forall i \in {1, …, h}, \alpha_i \in \mathbb{Z}_N$。$\mathbb{Z}_N^h$其上配备通常的加法运算,即按分量相加,也记为+,其形式化定义如下:
$$
\forall A, B \in \mathbb{Z}_N^h \text{ 使得:}
A = (\alpha_1, \alpha_2, …, \alpha_h) \text{ and } B = (\beta_1, \beta_2, …, \beta_h)
$$
有:
$$
A + B = (\alpha_1 + \beta_1, \alpha_2 + \beta_2, …, \alpha_h + \beta_h)
$$
作者还定义了从 $\mathbb{Z}_N \times \mathbb{Z}_N^h$ 到 $\mathbb{Z}_N^h$ 的通常标量乘法如下:
$$
\forall \alpha \in \mathbb{Z}_N, \forall A \in \mathbb{Z}_N^h \text{ 使得:}
A = (\alpha_1, \alpha_2, …, \alpha_h)
$$
有:
$$
\alpha A = (\alpha \cdot \alpha_1, \alpha \cdot \alpha_2, …, \alpha \cdot \alpha_h)
$$

密钥生成

这个方案的密钥由素数$p$和$q$以及来自 $\mathbb{Z}_p^h$的一个随机元素$K = (x_1, x_2, …, x_h)$组成。需要注意的是,在这篇论文的其余部分,秘密密钥一词仅指元素$K$。

加密

加密过程的输出密文 $\mathcal{E} K(m)$ 也记为 $\mathcal{E}(m)$ where $m \in \mathbb{Z}_N$由以下使用秘密密钥 $K = (x_1, x_2, …, x_h)$表示的等价关系所刻画,其中
$$
\forall i \in {1, …, h}, x_i \in {0, 1}
$$
$$
C = \mathcal{E}(m) \Leftrightarrow \sum
{i=1}^{h} x_i \alpha_i = m
$$
根据上述定义,该密码系统是概率性的。这意味着每个明文都有多种可能的加密方式,而对一个明文进行加密则是在其加密方式中随机选择一种。

为了生成$m \in \mathbb{Z} N$的加密,遵循以下步骤:
1. 生成一个随机元素 $C = (\alpha_1, \alpha_2, …, \alpha_h)$ 在 $\mathbb{Z}_N^h$ 上。这是通过生成 $h$ 个随机来自集合的整数 ${0, 1, …, N-1}$;
2. 设 $m_1 = \sum
{i=1}^{h} x_i \alpha_i$;
3. 如果 $m_1 = m$ 那么输出 $C$ 作为 $m$ 的加密;
4. 如果 $m_1 \neq m$ 那么选择一个随机索引 $j \in {1, …, h}$ 使得 $x_j \neq 0$,将 $C$ 的分量$\alpha_j$ 替换为 $\alpha_j + (m - m_1)x_j^{-1}$ 并输出 $C$,其中 $x_j^{-1}$ 是 $x_j$ 模 $p$ 的逆元,即 $x_j \cdot x_j^{-1} = 1 \mod p$。新的 $m_2 = \sum_{i=1}^{h} x_i \alpha’_i$ 现在等于 $m$,这意味着 $C$ 现在是 $m$ 的一个有效加密。

解密

令 $C = (\alpha_1, \alpha_2, …, \alpha_h) \in \mathbb{Z} N^h$ 为一个密文。对应的明文通过解密函数$\Delta$如下获得:
$$
\Delta(C) = \sum
{i=1}^{h} x_i \alpha_i
$$

正确性

让我们证明 $\forall m \in \mathbb{Z}_N$ 有 $D(E(m)) = m$ 对于 $\mathcal{E}(m)$.

根据定义,$\mathcal{E}(m)$ can output any ciphertext $C = (\alpha_1, \alpha_2, …, \alpha_h) \in \mathbb{Z} N^h$,使得:
$$
\sum
{i=1}^{h} x_i \alpha_i = m
$$
令$C$为该输出,这意味着$\mathcal{E}(m) = C$。

因此,可以写成:
$$
D(E(m)) = D(C) = \sum_{i=1}^{h} x_i \alpha_i = m
$$
这证明了该方案的正确性。

密文之间的等价关系

作者将任意两个密文$A$和$B$之间的二元关系$\approx$定义如下:
$$
A \approx B \Leftrightarrow \Delta(A) = \Delta(B)
$$
关系$\approx$具有以下性质:
1. 自反性: $\forall A \in \mathbb{Z}_N^h$ 有 $\Delta(A) = \Delta(A)$ 因此 $A \approx A$;
2. 对称性: $\forall A, B \in \mathbb{Z}_N^h$ 使得 $A \approx B \Leftrightarrow \Delta(A) = \Delta(B) \Leftrightarrow \Delta(B) = \Delta(A) \Leftrightarrow B \approx A$;
3. 传递性: $\forall A, B, C \in \mathbb{Z}_N^h$ 使得 $A \approx B$ 且 $B \approx C$ 有 $\Delta(A) = \Delta(B)$ and $\Delta(B) = \Delta(C)$ which means that $A \approx C$。

这意味着$\approx$是在密文环上定义的一个等价关系。

加法性质

设 $\mathcal{E}(a) = (\alpha_1, \alpha_2, …, \alpha_h)$ 且 $\mathcal{E}(b) = (\beta_1, \beta_2, …, \beta_h)$为分别对$a$和$b$的加密其中 $a, b \in \mathbb{Z} N$, 意味着 $\sum {i=1}^{h} x_i \alpha_i = a$ 且 $\sum_{i=1}^{h} x_i \beta_i = b$ 那么有:
$$
D(\mathcal{E}(a) + \mathcal{E}(b)) = D((\alpha_1 + \beta_1, \alpha_2 + \beta_2, …, \alpha_h + \beta_h)) = \sum_{i=1}^{h} x_i (\alpha_i + \beta_i) = \sum_{i=1}^{h} x_i \alpha_i + \sum_{i=1}^{h} x_i \beta_i = a + b = D(\mathcal{E}(a + b))
$$
这意味着:
$$
\mathcal{E}(a) + \mathcal{E}(b) \approx \mathcal{E}(a + b) \quad (1)
$$
换句话说,这个方案是加法同态的。这意味着可以使用$a$的加密和$b$的加密来计算$a + b$的加密。获得$a + b$的加密的过程是按照(1)中建议的,对$a$和$b$的加密进行向量加法。

这个结果可以推广到任意密文的和,使得有:
$$
\sum_{i=1}^{n} \mathcal{E}(a_i) \approx \mathcal{E}\left( \sum_{i=1}^{n} a_i \right) \quad (2)
$$
其中 $\forall i \in {1, …, n}, a_i \in \mathbb{Z}_N$.

特别地,这个结果也证明了标量乘法是同态的。设$\alpha$为一个标量,$a$为一个明文(实际上标量和明文属于同一个环$\mathbb{Z} N$)。于是有:
$$
\mathcal{E}(\alpha \cdot a) \approx \sum
{i=1}^{\alpha} \mathcal{E}(a) \approx \alpha \cdot \mathcal{E}(a)
$$
并且因此,有:
$$
\mathcal{E}(\alpha \cdot a) \approx \alpha \cdot \mathcal{E}(a) \quad (3)
$$

公钥加密

除了到目前为止所看到的密码系统的公开元素外,作者还给出了一个公开的加密值1,他们将其记为$\mathcal{E} {pub}(1)$:
$$
\mathcal{E}
{pub}(1) = (\alpha_1, \alpha_2, …, \alpha_h)
$$
这意味着:
$$
\sum_{i=1}^{h} x_i \alpha_i = 1
$$
这个加密可以用来获得任何一个元素的加密$a \in \mathbb{Z} N$如下面的公式所述,利用标量乘法的乘法性质:
$$
\mathcal{E}
{pub}(a) = a \cdot \mathcal{E}_{pub}(1) \quad (4)
$$
这些公开的加密是因为它们在私有信息检索(PIR)应用部分中所起的重要作用而被给出的。

完全同态加密方案

设 $M = (x_{ij}) \in \mathbb{Z}_N^{h \times h}$ 为对称矩阵,其 $(i,j)^{th}$ element of $M$ (which is equal to $(j,i)^{th}$ element since $M$ is symmetric) is an encryption of $x_i x_j$,其中 $x_i$ 和 $x_j$ 分别为秘密密钥 $K = (x_1, x_2, …, x_h)$的第 $i^{th}$ 和 $j^{th}$ 个分量。

作者在$N$以及$(i,j)^{th}$ element by its value $\mathcal{E}(x_i x_j)$。注意,尽管元素 $\mathcal{E}(x_i x_j)$ 是公开的,所有的 $x_i$ 其中 $i \in {1, …, h}$ 仍然是秘密的。

为了将上述定义的加法同态加密方案转换为完全同态加密密码系统,作者通过以下乘法操作$\mathbb{Z} N^h$赋予密文向量空间
$$
\forall A, B \in \mathbb{Z}_N^h \text{ 使得:}
A = (\alpha_1, \alpha_2, …, \alpha_h) \text{ and } B = (\beta_1, \beta_2, …, \beta_h)
$$
有:
$$
A \times B = \sum
{1 \leq i,j \leq h} (\alpha_i \cdot \beta_j) \cdot \mathcal{E}(x_i x_j)
$$
如上所定义的乘法是可交换的。可以通过一种直接的方式来证明:
$$
A \times B = \sum_{1 \leq i,j \leq h} (\alpha_i \cdot \beta_j) \cdot \mathcal{E}(x_i x_j) = B \times A
$$
设 $a$ 和 $b$ 分别为 $A$ 和 $B$ 对应的明文。那么有:
$$
\mathcal{E}(a) \times \mathcal{E}(b) = (\alpha_1, \alpha_2, …, \alpha_h) \times (\beta_1, \beta_2, …, \beta_h) = \sum_{1 \leq i,j \leq h} (\alpha_i \cdot \beta_j) \cdot \mathcal{E}(x_i x_j)
$$
$$
\approx \mathcal{E}\left( \sum_{1 \leq i,j \leq h} (\alpha_i \cdot \beta_j) \cdot x_i x_j \right) \approx \mathcal{E}\left( \left( \sum_{i=1}^{h} \alpha_i x_i \right) \cdot \left( \sum_{j=1}^{h} \beta_j x_j \right) \right) = \mathcal{E}(a \cdot b)
$$
这带来了一个目标:
$$
\mathcal{E}(a) \times \mathcal{E}(b) \approx \mathcal{E}(a \cdot b) \quad (5)
$$
结合(1),(5)确立了乘法的同态性质,并使密码系统完全同态。

公钥完全同态方案

迄今为止提出的方案是一个对称密码系统。为了将其转换为公开密钥密码系统,可以使用类似于Van Dijk等人在(Van Dijk et al., 2010)中使用的技术,即发布一组对零的加密作为公钥。对于本方案而言,公钥PK由一组$S_0$对0的加密组成。这意味着$S_0$中的每个元素$a$满足$a \approx \mathcal{E}(0)$

要加密一个元素$m$在$\mathbb{Z} N$上,使用公开的密钥时,需从$S_0$中随机选择一个子集$S$,并将其与$m$的公开加密$\mathcal{E} {pub}(m)$相加。然后可得到$m$的一个加密,如下所示:
$$
\mathcal{E} {PK}(m) = \mathcal{E} {pub}(m) + \sum_{a \in S} a \quad (6)
$$

安全性分析

在本节中,作者讨论了他们的方案在何种条件下是安全的,并介绍了一些对手可能尝试用来破解密码系统的攻击。

唯密文攻击

唯密文攻击是一种攻击方式,对手可以访问一组密文,但无法获得对应的明文。在此模型中,对手可以尝试以下两种方法。

恢复私钥

该密码系统中的秘密密钥是来自 $\mathbb{Z}_p^h$ 的一个秘密元素 $K$。这意味着有 $p^h$ 种可能的密钥。并且由于 $p$ 是在 $\lambda$ 位上编码的,因此可能性的数量为 $2^{\lambda h}$,对于 $\lambda \geq 512$ 和 $h \geq 2$,远远超出了任何暴力攻击的范围。

检索明文

在这个方案中,$\mathbb{Z}_N^h$ 的任意元素都可以被视为某个 $a \in \mathbb{Z}_N$ 的有效密文 $\mathcal{E}(a)$。但加密过程 $\mathcal{E}$ 仅输出可能密文数量中的一部分。这些生成密文的一个显著性质是,它们看起来几乎就像是从 $\mathbb{Z}_N^h$ 中随机抽取的。事实上,每个密文首先作为来自 $\mathbb{Z}_N^h$ 的随机元素生成,然后在某个随机分量上经历一次修改。这使得从一组生成的密文中提取任何信息(在没有对应明文的情况下)等同于从随机生成的 $\mathbb{Z}_N^h$ 元素中提取信息,从而使该方案能够抵御任何唯密文攻击。

已知明文攻击

在本节中,作者讨论了一些可能的已知明文攻击。在此模型下,对手可以访问一组密文及其对应的明文,但他/她无法控制要解密的密文,也无法控制可访问的密文数量。

假设对手已经成功获取了 $n$ 个密文及其对应的明文。这可以被视为一个包含 $n$ 个线性方程的系统,如下所示:
$$
\begin{cases}
\sum_{i=1}^{h} x_i \alpha_{1i} = m_1 \
\sum_{i=1}^{h} x_i \alpha_{2i} = m_2 \
\vdots \
\sum_{i=1}^{h} x_i \alpha_{ni} = m_n
\end{cases}
$$
其中 $x_i$ 是需要发现的未知变量。

如果参数 $p$ 是公开的情况

如果参数 $p$ 是已知的,通过高斯消元法可以在多项式时间内求解该方程组,且攻击者只需要 $h$ 个独立的方程即可求解该系统。

引理1 :任意选择的 $h$ 个密文几乎必然表示 $h$ 个独立的方程。
证明 :容易证明,随机选择的 $h$ 个密文表示 $h$ 个独立方程的概率由以下公式给出:
$$
P = \prod_{i=1}^{h-1} \left(1 - \frac{i}{N}\right)
$$
当 $h = 2^{10}$ 和 $N = 2^{20}$ 增大时,上述方程中的 $P \approx 0.99999904$ 迅速趋近于 1。例如,当 $1 - P < 10^{-6}$ 成立。这意味着可以安全地假设,任意给定的 $h$ 个随机选取的密文几乎肯定是独立的。

从上述引理可以推断,当 $p$ 已知时,为了保持安全,密码系统泄露的已知明文的密文数量不得超过 $h-1$ 个。

引理2 :如果 $p$ 是公开的,则对手可以获得 $h$ 个独立方程。
证明 :这可以通过费马小定理如下完成。

攻击者选择一个随机密文 $(\alpha_1, \alpha_2, …, \alpha_h) \in \mathbb{Z}_N^h$,令 $a$ 为这个密文的解密结果,这意味着 $(\alpha_1, \alpha_2, …, \alpha_h) \approx \mathcal{E}(a)$。$a$ 的值当然不被攻击者所知。

攻击者计算 $\mathcal{E}(a^{p-1})$ 使用乘法矩阵并获得一个密文 $(\beta_1, \beta_2, …, \beta_h)$。

费马小定理指出,对于任意素数 $p$ 和任意不是 $p$ 的倍数的整数 $x$,有 $x^{p-1} \equiv 1 \mod p$。应用于这种情况,可以写出:
$$
a^{p-1} \equiv 1 \mod p
$$
这意味着:
$$
\mathcal{E}(a^{p-1}) \approx \mathcal{E}(1)
$$
这也意味着:
$$
\mathcal{E}(a)^{p-1} \approx \mathcal{E}(1)
$$
意味着:
$$
(\beta_1, \beta_2, …, \beta_h) \approx \mathcal{E}(1)
$$
这给出了以下方程:
$$
\sum_{i=1}^{h} x_i \beta_i = 1
$$
攻击者用尽可能多的随机密文重复相同的过程,从而特别地可以获得 $h$ 个独立的方程。

由引理1和引理2可推知,当 $p$ 已知时,对手可以轻松获得一个包含 $h$ 个独立方程的系统,使用高斯消元法求解并恢复秘密密钥:
$$
K = (x_1, x_2, …, x_h)
$$

参数 $p$ 为私有

在该密码系统的正式描述中,参数 $p$ 是私有的。一方面,这使得费马小定理攻击无法实现,从而使作者重新控制了他们提供给对手的方程数量。另一方面,使 $p$ 为私有后,对手在尝试求解本节前面描述的 $n$ 个方程组时,别无选择,只能在模 $N$ 下进行运算。

引理3 :当 $p$ 未知时,求解作者提出的模 $p$ 下 $n$ 个独立方程的系统是一个难解问题。
证明 :假设存在一个算法 $\mathcal{A}$ 能够在模 $p$ 意义下以多项式时间求解任意给定的 $n$ 个独立方程系统。这意味着该算法能够求解以下由一个方程组成的系统:$(N - p) \cdot x \equiv 1 \mod p$。这意味着 $\mathcal{A}$ 能够找到 $(N - p)^{-1} \mod p$。由于该数模 $p$ 的逆元实际上就是 $p^{-1}$,这意味着 $\mathcal{A}$ 能够找到 $p$,换句话说即分解 $N$,这与本文所采用的当 $N$ 很大时因式分解问题难以解决的普遍假设相矛盾。

引理2使得攻击者别无选择,只能尝试求解模 $N$ 的系统以恢复秘密密钥。

假设攻击者已经解出了模 $N$ 的系统,并获得了以下结果:
$$
\begin{cases}
y_1 = x_1 + k_1 p \
y_2 = x_2 + k_2 p \
\vdots \
y_n = x_n + k_n p
\end{cases}
$$
其中 $x_i \in {0, 1, …, p-1}$ 是需要恢复的,$k_i$ 是未知数字。

引理4 :从求解初始系统模 $N$ 后得到的系统中恢复秘密密钥组件是一个难解的问题。
证明 :这个问题的难解性直接源于 Van Dijk 等人(2010)中用作安全性基础的近似 GCD 问题的困难性。

由引理2和引理3可推知,在不知道 $p$ 的情况下,对手无法基于前述的 $n$ 个方程系统恢复秘密密钥。那么剩下的问题是:能否通过足够多的独立方程来恢复 $p$?

引理5 :参数 $p$ 可以通过 $h+1$ 个独立方程在多项式时间内恢复。
证明 :假设攻击者拥有 $h+1$ 个密文 $c_1, c_2, …, c_{h+1}$ 对应于明文消息 $m_1, m_2, …, m_{h+1}$,则该系统可以用以下两个方程描述:
$$
A \cdot (x_1, x_2, …, x_h)^t = (m_1, m_2, …, m_h)^t \mod p
$$
and:
$$
B \cdot (x_1, x_2, …, x_h)^t = (m_1, m_2, …, m_{h+1})^t \mod p
$$
其中 $A$ 是由行 $c_1, c_2, …, c_h$ 定义的方阵,$B$ 是由行 $c_1, c_2, …, c_{h+1}$ 如下所述定义的方阵。

如果 $\forall i \in {1, …, h+1}, c_i = (\alpha_{i1}, \alpha_{i2}, …, \alpha_{ih})$,那么:
$$
A =
\begin{pmatrix}
\alpha_{11} & \alpha_{12} & \cdots & \alpha_{1h} \
\alpha_{21} & \alpha_{22} & \cdots & \alpha_{2h} \
\vdots & \vdots & \ddots & \vdots \
\alpha_{h1} & \alpha_{h2} & \cdots & \alpha_{hh}
\end{pmatrix}
$$
$$
B =
\begin{pmatrix}
\alpha_{11} & \alpha_{12} & \cdots & \alpha_{1h} \
\alpha_{21} & \alpha_{22} & \cdots & \alpha_{2h} \
\vdots & \vdots & \ddots & \vdots \
\alpha_{(h+1)1} & \alpha_{(h+1)2} & \cdots & \alpha_{(h+1)h}
\end{pmatrix}
$$
正如人们所注意到的,两个矩阵 $A$ 和 $B$ 之间的唯一区别在于最后一行。前 $h-1$ 行是相同的。

如果攻击者能够在 $\mathbb{Z} N$ 矩阵 $A$ 和 $B$ 中进行逆运算,则可以计算出以下矩阵 $C$:
$$
C = A^{-1} \cdot (m_1, m_2, …, m_h)^t - B^{-1} \cdot (m_1, m_2, …, m
{h+1})^t \mod N
$$
$C$ 是一个由 $h$ 行组成的单列矩阵。容易证明 $C$ 的所有 $h$ 个元素都是 $p$ 的倍数,因此可以通过计算这些元素的最大公约数来恢复 $p$。

由引理4可推断,若攻击者能够获取 $h+1$ 个独立的密文(产生独立的方程),则他可以恢复 $p$ 并应用费马小定理攻击来获得秘密密钥。

作者指出,攻击者已经拥有一个由公开加密的数字 1 所表示的方程:$\mathcal{E} {pub}(1)$。所有其他 $\mathbb{Z}_N$ 元素的公开加密只是 $\mathcal{E} {pub}(1)$ 的标量倍数,因此不会向系统添加任何额外的独立方程。因此,为了防止这种通过获取 $p$ 来发动的攻击,作者将其方案限制为最多 $h$ 个已知明文的密文,包括 $\mathcal{E} {pub}(1)$,以便所得系统包含不超过 $h$ 个独立方程,其中包括由 $\mathcal{E} {pub}(1)$ 提供的方程。这将确保攻击者没有足够的方程来求解该系统,在高斯消元后仍然至少保留一个自由变量。暴力破解这个自由变量是不可行的,因为这相当于从 $2^\lambda$ 种可能性中选出正确答案,而这个数量是 $2^{512}$ 对于 $\lambda = 512$。

基于乘法矩阵的攻击

作者意识到乘法矩阵本身会泄露一些关于秘密密钥的信息。作者的目标是,这些给出的信息不足以恢复秘密密钥。

乘法矩阵可以被视为一个 $\frac{h(h+1)}{2}$ 个二次方程的系统:
$$
\forall i, j \in {1, …, h}, i \leq j, \sum_{k=1}^{h} \alpha_k x_i x_j = x_i x_j
$$
让我们考虑 $h = 2$ 的最简单情况。这个系统在这种情况下由三个方程组成,可以写成:
$$
\begin{cases}
\alpha_1 x_1^2 + \alpha_2 x_1 x_2 = x_1^2 \
\beta_1 x_1 x_2 + \beta_2 x_2^2 = x_1 x_2 \
\gamma_1 x_1^2 + \gamma_2 x_2^2 = x_2^2
\end{cases}
$$
如果假设 $\alpha_2 \neq 0$ 那么有:
$$
x_2 = \frac{x_1 - \alpha_1 x_1^2}{\alpha_2 x_1}
$$
将第三个方程中的进行替换,可得:
$$
\gamma_1 x_1^2 + \gamma_2 \left(\frac{x_1 - \alpha_1 x_1^2}{\alpha_2 x_1}\right)^2 = \left(\frac{x_1 - \alpha_1 x_1^2}{\alpha_2 x_1}\right)^2
$$
假设秘密密钥的所有元素都不等于零,则可以写成:
$$
\alpha_2 \gamma_1 x_1^2 + \gamma_2 (1 - \alpha_1 x_1)^2 = (1 - \alpha_1 x_1)^2
$$
这导致了以下二次方程:
$$
x_1^2 (\alpha_2 \gamma_1 - \alpha_1^2 \gamma_2) + x_1 (2 \alpha_1 \gamma_2) + (\gamma_2 - 1) = 0
$$
为了解决这个方程,攻击者将不得不找到满足以下在模 $p$ 下的方程的自然数 $r$:
$$
r^2 = (\alpha_2 \gamma_1 - \alpha_1^2 \gamma_2)^{-1} (1 - \gamma_2)
$$
由于攻击者没有 $p$,他/她所能做的就是计算模 $N$ 下的这个平方根。在本文所述的情况下,计算一个数对一个大合数模的平方根被认为是一个困难问题,在文献中被称为二次剩余性问题。例如,Goldwasser-Micali 密码系统(Goldwasser, & Micali, 1982年)的安全性正是基于这个问题。

在 $h = 2$ 的先前情况下,攻击者仅使用了乘法矩阵提供的方程。如果还考虑公开加密数字 1 所提供的方程,则 $h$ 必须至少等于 3。

当 $h \geq 3$ 时,可以安全地认为,通过乘法矩阵恢复秘密密钥在计算上是不可行的。

选择密文攻击

从前面讨论的攻击可以看出,该密码系统对选择密文攻击并不安全。在这种模型中,对手可以访问任意数量由其自行选择的密文的解密结果。这与作者所设定的安全规则相矛盾,即为了保持安全性,不能泄露超过 $h$ 个已知明文的密文。

应用 To 私有信息检索

在本节中,作者将私有信息检索视为其密码系统的直接应用。

考虑一个包含 $n$ 个记录的数据库。一个谨慎的用户希望获取索引为 $r$ 的记录,而不让任何人(包括数据库服务器)知道该用户请求的是哪条记录。

为此,用户发送两次加密:
- 一个加密 $\mathcal{E}(r)$ 在所需记录的索引 $r$ 上;
- 一个元素模逆元的加密 $(\prod_{k \neq r} (r - k))^{-1}$ 可以写成:
$$
\text{inv}(r) = \left( \prod_{k \neq r} (r - k) \right)^{-1}
$$
服务器接收这两个加密,并使用它们来计算数据库中每条记录的定位器,如下所示:
$$
\text{localizer}(j) = L_j = \mathcal{E} {pub}(1) \times \prod {k \neq j} (\varepsilon - (k - j))
$$
作者注意到服务器使用公开的加密方式对 $k$ 进行加密 $\varepsilon_{pub}(k)$。

可以很容易地证明定位器 $L_j$ 具有以下性质:
$$
\text{If } j = r \text{ then } L_j \approx \mathcal{E}(1), \text{ Else } L_j \approx \mathcal{E}(0)
$$
通过观察:
$$
L_j \approx \frac{\prod_{k \neq r} (r - k)}{\prod_{k \neq j} (j - k)}
$$
服务器认为每条记录被划分为 $\lambda$ 位的块。每个块可以看作来自 $R_j$ 的一个 $\mathbb{Z} N^h$ 元素。服务器通过计算以下和,盲地提取数据库的第 $r^{th}$ 条记录:
$$
R_r = \sum
{j=1}^{n} \text{localizer}(j) \times R_j \quad (7)
$$
其中 $R_j$ 是该记录的当前数据块,包含 $\lambda$ 位。上述和运算重复执行以获得记录的每个数据块。

但由于服务器不知道所需记录的长度,因此和运算会按照所需记录为最长记录的情况进行重复。其他记录将用零填充。得到的结果发送给客户端进行解密。

客户端使用其密钥解密接收到的密文并获得所需的记录。

性能分析

在本节中,作者展示了他们的完全同态加密方案与身份编码的比较结果。

在他们的实现中,作者使用了 $\lambda = 512$,这意味着 $p$ 和 $q$ 都被生成为在 512 位上编码。这个 PIR 从包含 20 条记录的数据库中检索一条记录。安全参数 $h$ 被选择为等于 2。

作者选择将他们的密码系统与身份编码进行比较:$\mathcal{E} {id}$ 其将每个消息 $m$ 映射为其自身:$\mathcal{E} {id}(m) = m$

显然,$\mathcal{E}_{id}$ 不是一个密码系统,因为它是显然不安全的,但作者们决定将他们的密码系统与其进行比较,因为它代表了性能方面的下限,即任何密码系统都无法达到的水平。

为了比较他们的无噪声全同态加密方案(NFHE)与恒等编码 $\mathcal{E}_{id}$,作者们使用了上一节中描述的私有信息检索协议。结果如表1所示。

列 NFHE/$\mathcal{E}_{id}$ 表示作者方案的执行时间与恒等编码执行时间之间的比率。可以看出,如果取所见四个情况的平均值,该方案比恒等编码大约慢 75 倍。

结论

在这篇论文中,作者提出了一种新颖的完全同态加密方案,该方案在有限环 $\mathbb{Z}_p$ 和有限向量空间 $\mathbb{Z}_N^h$ 之间运行。这个密码系统的创新性源于两个原因。首先,据作者所知,这是第一个使用 $\mathbb{Z}_p$ 作为明文集合的完全同态加密方案,其中 $p$ 是一个较大的数。其次,更重要的是,这是第一个能够在密文上执行任意操作而无需在一定数量的操作后对其进行刷新的加密方案,这得益于其无噪声性质。尽管这一优势是以密文集合受限为代价的,但这并不妨碍该方案在私有信息检索等应用中的使用。

表1. NFHE 与 $\mathcal{E}_{id}$ 的比较

$\mathcal{E}_{id}$ NFHE NFHE/$\mathcal{E}_{id}$
密钥生成 - 0.514 秒 -
加密 - 78 ms -
解密 - 0.59 ms -
加法 1.2 ms 84.4 ms 70
乘法 2.1 ms 166.5 ms 79
PIR (20 records) 0.97 s 73.8 s 75.9
提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论进行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习和研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法进行了智能调整,提高控制精度和稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能和输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习和修改: 通过阅读模型中的注释和查阅相关文献,加深对BP神经网络与PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值