同态加密中的一些技术概念

再线性化

用于解决密文乘法导致密文长度增长的问题。

在LWE同态方案中,LWE加密算法具有天然的加法同态,为了使得其再满足乘法同态,将密文乘法定义为密文的张积,用对应的密钥的张积进行解密,将会使得结果满足乘法同态性。但这样的结果是每次乘法将会导致密文长度增加,如果LWE密文长度为 n n n,那么每次乘法后密文都会增长 n 2 / 2 n^2/2 n2/2,因此需要解决密文长度增加的问题。

方案大致是,将解密函数表示为一个关于密文 c c c的一个多变元多项式 f s k ( c ) f_{sk}(c) fsk(c),其中 c c c的各项是该多项式的变元,密钥 s k sk sk的各项是多项式的系数。密文乘法之后,密钥中的各项次数会从1次变为2次,如 s = ( s 1 , s 2 ) s=(s_1,s_2) s=(s1,s2),同态乘法后将变为 s ⊗ s = ( s 1 s 1 , s 1 s 2 + s 2 s 1 , s 2 s 2 ) s\otimes s = (s_1s_1,s_1s_2+s_2s_1,s_2s_2) ss=(s1s1,s1s2+s2s1,s2s2),此时用一个长度与 s s s长度相同的新密钥 t t t s ⊗ s s \otimes s ss中的各项加密,就可以将“2次”密钥转化为“1次”密钥,从而得到一个新的密文,长度与原密文基本接近,且使用 t t t对新密文解密和使用 s ⊗ s s \otimes s ss对密文 c 1 ⊗ c 2 c_1 \otimes c_2 c1c2解密结果一样。

维数-模约减

用于压缩解密电路的深度,得解密电路深度小于有限次同态加密的电路深度。

我们知道,同态加密方案中,要使用同态解密达到控制噪声的话,解密电路的深度需要小于同态加密的电路深度(噪声上限所允许的电路深度)。因为解密运算在电路模型上也是和同态运算相同的加法和乘法,那么如果解密电路比同态加密的电路大,那一定会由于噪声过大而导致无法正确解密。要想达到”全同态“,也就是要达到同态解密之后还能再进行同态运算,这样就可以一次同态运算接着一次同态解密运算来达到“全同态”。
若在再线性化中,将新密钥 t t t的长度取为比正常密文长度小,就能获得更小长度的密文(此为维数约简),同时如果再进一步将新密钥的模取为比正常密文的模更小(此为模数约简),就可以实现降低解密电路深度。

密钥交换

是再线性化技术的优化版本,该技术用于控制密文维数的增长。
给出维数是 n 1 n_1 n1的密文 c 1 c_1 c1和密钥 s 1 s_1 s1,以及其目标密钥 ( 1 , s 2 ) (1,s_2) (1,s2)(维数是 n 2 + 1 n_2+1 n2+1),输出结果是密文 c 2 c_2 c2,对应密钥是 ( 1 , s 2 ) (1,s_2) (1,s2),两个密文对应的明文是一样的,如果让 s 2 s_2 s2的维数小于 s 1 s_1 s1的,那么就能在密文乘积后约减密文的维数,转换为正常的密文维数。

模交换(Modulus Switching)

该技术用于约减密文里的噪声,管理噪声的增长。
假定密文初始噪声为 B B B,模 q ≈ B k q \approx B^k qBk(也就是噪音上限)。经过一次乘法电路后噪声增加为 B 2 B^2 B2,通过 log ⁡ k \log k logk层乘法后,噪声达到上限。如果采用模交换技术,每次乘法之后对密文除以 B B B,对 B 2 B^2 B2来说相当于把它约减回 B B B,同时将密文长度缩小为原来的 1 / B 1/B 1/B,则新密文的模变为 q / B q/B q/B。依次下去,每次噪声都被“拉回”原来的大小 B B B,而模依次递减形成一个由高到低的阶梯型, q / B 2 , q / B 3 , ⋯   , q / B k − 1 q/B^2,q/B^3,\cdots,q/B^{k-1} q/B2,q/B3,,q/Bk1,这样可以执行的乘法深度就近似为 k − 1 k-1 k1,对比 log ⁡ k \log k logk,能够实现的深度显著提高。

Bootstrapping

该技术主要是用来刷新密文噪声。
把一个满噪音的FHE的密文加密进另一个FHE密文中,并且同态计算FHE的解密算法,把里层的密文解密还原为原文,就能获得一个全新的低噪音FHE密文。

一次bootstrapping的过程

  1. 首先生成多组密钥(以两组为例) ( p k 1 , s k 1 ) , ( p k 2 . s k 2 ) (pk_1,sk_1),(pk_2.sk_2) (pk1,sk1),(pk2.sk2)
  2. 假定明文为 m m m,首先用第一组密钥进行加密得到 E n c p k 1 ( m ) Enc_{pk_1}(m) Encpk1(m),初始得到的噪声很低,随着不断的同态计算将得到一个达到噪声临界值的密文 C f ( m ) = E n c p k 1 ( f ( m ) ) C_{f(m)} = Enc_{pk_1}(f(m)) Cf(m)=Encpk1(f(m)),也就是说如果再进行一次同态计算就将导致解密失败。
  3. 接着,将这个密文用 p k 2 pk_2 pk2进行加密得到 E n c p k 2 ( C f ( m ) ) Enc_{pk_2}(C_{f(m)}) Encpk2(Cf(m))
  4. 然后使用一个加密后的密钥 E n c p k 2 ( s k 1 ) Enc_{pk_2}(sk_1) Encpk2(sk1),和 E n c p k 2 ( C f ( m ) ) Enc_{pk_2}(C_{f(m)}) Encpk2(Cf(m)) 进行 s k 1 sk_1 sk1下的同态解密运算 D e c s k 1 ( C f ( m ) ) Dec_{sk_1}(C_{f(m)}) Decsk1(Cf(m))。这样一来可以得到 E n c p k 2 ( D e c s k 1 ( C f ( m ) ) ) = E n c p k 2 ( C f ( m ) ) Enc_{pk_2}(Dec_{sk_1}(C_{f(m)})) = Enc_{pk_2}(C_{f(m)}) Encpk2(Decsk1(Cf(m)))=Encpk2(Cf(m)),这样一来,当前的噪声已经不是达到限度的那个噪声了,而是一次同态运算后产生的新的噪声,也就变相的削弱了噪声。

同理,可以继续嵌套这个过程,等到每一波同态计算噪音极限后,再次Bootstrapping来计算更复杂的函数。
当然,这里存在一个小缺点,那就是在生成参数的时候需要事先准备好Bootstrapping的链条,即生成公钥私钥对 { p k i , s k i } \{pk_i,sk_i\} {pki,ski},并且公开对应的私钥 s k i sk_i ski加密在下的密文 p k i + 1 pk_{i+1} pki+1。所以作为第三方,我们仍然不能计算任意深度的电路,因为计算的深度在进行公共参数生成的阶段已经被决定好了。
解决方案可以使用循环密钥,以双密钥的系统来说 ( p k 1 , s k 1 ) , ( p k 2 . s k 2 ) (pk_1,sk_1),(pk_2.sk_2) (pk1,sk1),(pk2.sk2),同时公开在 p k 2 pk_2 pk2加密下的 s k 1 sk_1 sk1 p k 1 pk_1 pk1加密下的 s k 2 sk_2 sk2,然后无限循环即可。
还可以使用一组密钥即可完成,也就是公开 p k 1 pk_1 pk1加密下的 s k 1 sk_1 sk1,接着循环调用即可。

上述Bootstrapping过程称为Circuit Bootstrapping,还有一种Gate Bootstrapping,即每当进行一次最简单的同态计算,就进行一轮的Bootstrapping把噪声值还原到进行计算前的量,这个可以在应用层之下实现Bootstrapping。

当然,上述的密钥循环的安全性是未知的,目前还没有被证明是安全的,这也叫做循环安全假设。

参考

初探全同态加密之四:Bootstrapping的原理与实现
全同态加密知识体系整理
陈智罡,王箭,宋新霞.全同态加密研究[J].计算机应用研究,2014,31(06):1624-1631.

### 加法同态加密与RC4算法的区别 #### RC4算法特性 RC4属于流加密算法,主要用于对称加密场景。其特点是速度快,在软件环境中表现尤为突出。该算法通过伪随机生成器产生一系列密钥流并与明文逐位异或操作完成加密过程[^2]。 #### 加法同态加密特性 加法同态加密则是一类特殊形式的公钥加密机制,允许第三方在不知道解码秘钥的情况下直接对两个已编码数值执行加法运算并获得正确结果。这种性质使得可以在不暴露敏感信息的前提下进行计算处理[^1]。 ### 加法同态加密与RC4算法之间的区别 - **应用场景差异** - RC4适用于需要快速高效地保护大量数据传输安全性的场合;而加法同态加密更侧重于隐私保护下的数据分析和云计算环境中的应用。 - **工作原理不同** - RC4依赖于内部状态更新以及字节级别的XOR操作来进行加密/解密转换; - 而加法同态加密则是基于复杂的数学结构(如大整数幂运算),并且能够保持特定算术关系不变性。 - **安全性考量** - 尽管RC4曾经广泛应用于SSL/TLS协议之中,但由于存在若干弱点已被认为不再推荐作为新项目的选择; - 反之,加法同态加密由于涉及更为严谨的安全假设和技术实现路径,通常被认为提供了更高的安全保障水平。 ### 加法同态加密与RC4算法之间是否存在联系? 实际上两者间并没有直接关联: - RC4是一个典型的对称加密方案成员之一,主要关注点在于如何有效地混淆消息内容而不考虑后续可能的操作需求; - 加法同态加密作为一种非传统意义上的加密方式,则特别强调即使是在加密状态下也能保留某些类型的逻辑运算能力——这显然超出了RC4的设计初衷和发展方向。 因此可以说这两者代表了完全不同的设计理念和技术路线,并不存在实质性的交集或者相互依存之处。 ```python # 这里提供一段简单的Python代码展示RC4基本流程 def rc4_encrypt(key, plaintext): S = list(range(256)) j = 0 key_length = len(key) # 初始化S盒 for i in range(256): j = (j + S[i] + key[i % key_length]) % 256 S[i], S[j] = S[j], S[i] keystream = [] i = j = 0 for _ in range(len(plaintext)): i = (i + 1) % 256 j = (j + S[i]) % 256 S[i], S[j] = S[j], S[i] K = S[(S[i] + S[j]) % 256] keystream.append(K) ciphertext = bytes([p ^ k for p,k in zip(plaintext.encode(), keystream)]) return ciphertext.hex() print(rc4_encrypt('Key', 'Plaintext')) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值