IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 全同态加密:BFV -> 正文阅读

[区块链]全同态加密:BFV

参考文献:

  1. O. Regev. On lattices, learning with errors, random linear codes, and cryptography. In H. N. Gabow and R. Fagin, editors, STOC, pages 84–93. ACM, 2005. Full version in J. ACM 56(6), 2009.
  2. V. Lyubashevsky, C. Peikert, and O. Regev. On Ideal Lattices and Learning with Errors over Rings. In Advances in Cryptology - EUROCRYPT 2010, volume 6110 of Lecture Notes in Computer Science, pages 1–23. Springer, 2010. Full version of the paper available upon request from authors.
  3. Z. Brakerski. Fully Homomorphic Encryption without Modulus Switching from Classical GapSVP. IACR Cryptology ePrint Archive, 2012:78, 2012.
  4. Fan J, Vercauteren F. Somewhat practical fully homomorphic encryption[J]. Cryptology ePrint Archive, 2012.

Regev Scheme

2009 年,Regev 提出了第一个基于 LWE 的加密方案。方案如下:

在这里插入图片描述

LPR Scheme

在 Regev Scheme 中,明文空间是 Z 2 \mathbb Z_2 Z2?,使用 most significant bit encoding。我们可以容易地修改它,使得密码方案基于 RLWE 问题,明文空间为 R t , ? t ≥ 2 R_t,\, t \ge 2 Rt?,t2 ,只需把 δ = ? q / 2 ? \delta = \lfloor q/2 \rceil δ=?q/2? 替换为 Δ = ? q / t ? \Delta = \lfloor q/t \rceil Δ=?q/t? 即可。方案如下:

在这里插入图片描述

BFV

Brakerski Scheme

Without Modulus Switching

此方案是基于 LWE 的。对于 Regev Scheme,如果将向量 s , c s,c s,c 写成增广形式,那么有 < c , s > = q / 2 ? m + e + q I <c,s> = q/2 \cdot m+e+qI <c,s>=q/2?m+e+qI,其中 ∣ e ∣ ≤ E < q / 4 |e| \le E < q/4 eE<q/4 I ∈ Z I \in \mathbb Z IZ 是个整数,密文 c c c 的分量取值范围是 ( ? q / 2 , q / 2 ] (-q/2,q/2] (?q/2,q/2]

考虑分数密文(fractional ciphertext) c ’ = c / q c’ = c/q c=c/q,那么
< c ′ , s > = 1 2 ? m + e ′ + I <c',s> = \frac{1}{2} \cdot m + e' + I <c,s>=21??m+e+I

其中噪音 ∣ e ′ ∣ ≤ E / q = ? < 0.25 |e'| \le E/q = \epsilon < 0.25 eE/q=?<0.25 是个小数,密文 c ’ c’ c 的各个分量的取值范围是 ( ? 1 / 2 , 1 / 2 ] (-1/2,1/2] (?1/2,1/2]

同态加法 c a d d = c 1 + c 2 c_{add} = c_1+c_2 cadd?=c1?+c2?,有:
< c 1 + c 2 , ? s > = < c 1 , s > + < c 2 , s > = 1 2 m + ( e 1 + e 2 ) m o d ?? 1 \begin{aligned} <c_1+c_2,\, s> &= <c_1,s> + <c_2,s> \\ &= \frac{1}{2} m + (e_1+e_2) \mod 1 \end{aligned} <c1?+c2?,s>?=<c1?,s>+<c2?,s>=21?m+(e1?+e2?)mod1?

同态乘法 c m u l t = 2 ? c 1 ? c 2 c_{mult} = 2 \cdot c_1 \otimes c_2 cmult?=2?c1??c2?,有:
< 2 ? c 1 ? c 2 , ? s ? s > = 2 ? < c 1 , s > ? < c 2 , s > = 1 2 m 1 m 2 + 2 ( e 1 I 2 + e 2 I 1 ) + e 1 m 2 + e 2 m 1 + 2 e 1 e 2 m o d ?? 1 \begin{aligned} <2 \cdot c_1 \otimes c_2,\, s \otimes s> &= 2 \cdot <c_1,s> \cdot <c_2,s> \\ &= \frac{1}{2} m_1m_2 + 2(e_1I_2 + e_2I_1) + e_1m_2 + e_2m_1 + 2e_1e_2 \mod 1 \end{aligned} <2?c1??c2?,s?s>?=2?<c1?,s>?<c2?,s>=21?m1?m2?+2(e1?I2?+e2?I1?)+e1?m2?+e2?m1?+2e1?e2?mod1?

其中 ∣ I 1 ∣ , ∣ I 2 ∣ |I_1|,|I_2| I1?,I2? 的界约为 ∥ s ∥ 1 \|s\|_1 s1?,所以 c m u l t c_{mult} cmult? 中的噪声的界为 O ( ∥ s ∥ 1 ) ? ? O(\|s\|_1) \cdot \epsilon O(s1?)??。由于 Regev Scheme 中的私钥取自均匀分布,因此 ∥ s ∥ 1 ≈ n q \|s\|_1 \approx nq s1?nq,模数 q q q 是安全参数 n n n 的指数级。而其他噪声 e 1 m 2 + e 2 m 1 ≤ 2 t ? e_1m_2+e_2m_1 \le 2t \epsilon e1?m2?+e2?m1?2t? 2 e 1 e 2 ≤ 2 ? 2 2e_1e_2 \le 2\epsilon^2 2e1?e2?2?2 的占比很小。因此,主要噪声就是 2 ( e 1 I 2 + e 2 I 1 ) 2(e_1I_2 + e_2I_1) 2(e1?I2?+e2?I1?)

为了减小噪声,需要要减小私钥的 l 1 l_1 l1? 范数。我们可以对解密电路做二进制分解binary decomposition),令 s = ∑ j 2 j s ( j ) s = \sum_j 2^j s^{(j)} s=j?2js(j),其中 s ( j ) s^{(j)} s(j) 的各个元素是 s s s 的各个元素的第 j j j 比特。那么,解密电路化为:
< c , s > = ∑ j 2 j < c , s ( j ) > = < ( c , ? 2 c , ? ? ? ) , ?? ( s ( 0 ) , ? s ( 1 ) , ? ? ? ) > \begin{aligned} <c,s> &= \sum_j 2^j <c,s^{(j)}> \\ &= <(c,\, 2c,\, \cdots),\,\, (s^{(0)},\, s^{(1)},\, \cdots)> \end{aligned} <c,s>?=j?2j<c,s(j)>=<(c,2c,?),(s(0),s(1),?)>?

那么,我们就将 s s s 下的密文 c c c,转化为了 ( s ( 0 ) , ? s ( 1 ) , ? ? ? ) (s^{(0)},\, s^{(1)},\, \cdots) (s(0),s(1),?) 下的密文 ( c , ? 2 c , ? ? ? ) (c,\, 2c,\, \cdots) (c,2c,?)

二进制私钥的 l 1 l_1 l1? 范数至多是其维度,即 O ( n ? log ? q ) = O ( p o l y ( n ) ) O(n \cdot \log q) = O(poly(n)) O(n?logq)=O(poly(n)),因此噪声增长是多项式级别的。也就是说,我们不必使用 BGV 中的模切换技术了!

在代码实现时,由于浮点数精度问题,我们将密文放大 q q q 倍。实质上是用 Z q \mathbb Z_q Zq? 上的整数运算,来模拟 R / Z R/\mathbb Z R/Z 上的浮点数运算:令 y i = ? q x i ? y_i = \lfloor qx_i \rceil yi?=?qxi??,那么
y 1 + y 2 ≈ ? q ( x 1 + x 2 ) ? ? ( y 1 ? y 2 ) / q ? ≈ ? q ? x 1 ? x 2 ? \begin{aligned} y_1+y_2 \approx \lfloor q(x_1+x_2) \rceil\\ \lfloor (y_1 \cdot y_2)/q \rceil \approx \lfloor q \cdot x_1 \cdot x_2 \rceil \end{aligned} y1?+y2??q(x1?+x2?)??(y1??y2?)/q??q?x1??x2???

这样,同态加法为 c 1 + c 2 c_1+c_2 c1?+c2?,同态乘法为 ? 2 / q ? c 1 ? c 2 ? \lfloor 2/q \cdot c_1 \otimes c_2 \rceil ?2/q?c1??c2??

有趣的是,此时的 Brakerski Scheme 的加解密算法与 Regev Scheme 完全一致。

Scale Invariant LHE / FHE

于是,我们可以实现 scale invariant L-homomorphic scheme: BGV 中的计算复杂的 “refresh” 过程,被更简单的 key switching 取代。

本方案中使用 BGV 的向量解压和密钥切换过程,

在这里插入图片描述
在这里插入图片描述

Brakerski Scheme 如下:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

同态运算后,密文中携带的噪声为:

在这里插入图片描述

为了实现 L-homomorphic,需要噪声分布 χ \chi χ 的界 B B B 满足:
q / B ≥ ( O ( n log ? q ) ) L + O ( 1 ) q/B \ge (O(n \log q))^{L+O(1)} q/B(O(nlogq))L+O(1)

由于解密电路的深度为 O ( log ? n + log ? log ? q ) O(\log n + \log \log q) O(logn+loglogq),因此为了满足 Bootstrapping 的运算条件,需要
q / B ≥ ( n log ? q ) O ( log ? n + log ? log ? q ) q/B \ge (n \log q)^{O(\log n + \log \log q)} q/B(nlogq)O(logn+loglogq)

从而实现出一个 fully homomorphic encryption scheme

Fan-Vercauteren Scheme

Relinearisation

此方案将上述的基于 LWE 的 Brakerski Scheme 移植到了 RLWE 上。

在 LPR 方案中,环 R = Z [ x ] / ( f ( x ) ) R=\mathbb Z[x]/(f(x)) R=Z[x]/(f(x)),一般选取 f ( x ) = x 2 n + 1 f(x)=x^{2^n}+1 f(x)=x2n+1 为分圆多项式。在 FV Scheme 中,做优化 s , u ← R 2 s,u \leftarrow R_2 s,uR2?(不再取自 χ \chi χ),其他的与 LPR 相同。

密文形如 c = ( c 0 , ? c 1 ) ∈ R 2 c=(c_0,\, c_1) \in R^2 c=(c0?,c1?)R2,密钥形如 s ′ = ( 1 , s ) ∈ R 2 s'=(1,s) \in R^2 s=(1,s)R2,那么解密过程可以视作是一次函数的求值
< c , s ′ > = c 0 + c 1 s = c ( s ) = Δ ? m + v + q ? r <c,s'> = c_0 + c_1 s = c(s) = \Delta \cdot m+v + q \cdot r <c,s>=c0?+c1?s=c(s)=Δ?m+v+q?r

其中 r ∈ R r \in R rR,噪音大小为 ∥ v ∥ ≤ 2 δ R B 2 + B \|v\| \le 2 \delta_R B^2 + B v2δR?B2+B,这里
δ R = m a x { ∥ a ? b ∥ ∥ a ∥ ? ∥ b ∥ : ? a , b ∈ R } \delta_R = max\{ \frac{\|a \cdot b\|}{\|a\| \cdot \|b\|}:\, a,b \in R\} δR?=max{a?ba?b?:a,bR}

扩张因子expansion factor of R R R),其中的 ∥ a ∥ = max ? i ∣ a i ∣ \|a\|=\max_i |a_i| a=maxi?ai?无穷范数

同态加法就是多项式加法 c t a d d = c t 1 + c t 2 ct_{add} = ct_1+ct_2 ctadd?=ct1?+ct2?,那么
[ ( c t 1 + c t 2 ) ( s ) ] q = Δ ? [ m 1 + m 2 ] t + v 3 [(ct_1+ct_2)(s)]_q = \Delta \cdot [m_1+m_2]_t + v_3 [(ct1?+ct2?)(s)]q?=Δ?[m1?+m2?]t?+v3?

这里噪声 ∥ v 3 ∥ \|v_3\| v3? 的增长是线性的。

同态乘法就是多项式乘法 c m u l t = t / q ? c t 1 ? c t 2 c_{mult} = t/q \cdot ct_1 \cdot ct_2 cmult?=t/q?ct1??ct2?,那么
[ ( t / q ? c t 1 ? c t 2 ) ( s ) ] q = Δ ? [ m 1 ? m 2 ] t + v 3 [(t/q \cdot ct_1 \cdot ct_2)(s)]_q = \Delta \cdot [m_1 \cdot m_2]_t + v_3 [(t/q?ct1??ct2?)(s)]q?=Δ?[m1??m2?]t?+v3?

这里噪声 ∥ v 3 ∥ \|v_3\| v3? 的增长因子粗略的是 2 ? t ? δ R 2 ? ∥ s ∥ 2\cdot t\cdot \delta_R^2 \cdot \|s\| 2?t?δR2??s

类似于 BV 方案的张量积让密文规模扩大,需要执行密钥切换过程,以降低其规模。在 FV 方案中的多项式乘积让密文的成为二次函数。我们需要执行重线性化Relinearisation)过程,使得密文保持为一次多项式:令 c t = [ c 0 , c 1 , c 2 ] ct = [c_0, c_1, c_2] ct=[c0?,c1?,c2?],寻找 c t ′ = [ c 0 ′ , c 1 ′ ] ct' = [c_0', c_1'] ct=[c0?,c1?],使得
[ c 0 + c 1 ? s + c 2 ? s 2 ] q = [ c 0 ′ + c 1 ′ ? s + r ] q [c_0+c_1 \cdot s+c_2 \cdot s^2]_q = [c_0'+c_1' \cdot s+r]_q [c0?+c1??s+c2??s2]q?=[c0?+c1??s+r]q?

要保证噪声的无穷范数 ∥ r ∥ \|r\| r 很小。可以设置重线性化密钥relinearisation key)为:
r l k = ( [ ? ( a 0 ? s + e 0 ) + s 2 ] q , ? a 0 ) rlk = ([-(a_0 \cdot s+e_0)+s^2]_q,\, a_0) rlk=([?(a0??s+e0?)+s2]q?,a0?)

其中 e 0 ← χ e_0 \leftarrow \chi e0?χ a 0 ← R q a_0 \leftarrow R_q a0?Rq?。注意到 r l k [ 0 ] + r l k [ 1 ] ? s = s 2 + e 0 rlk[0]+rlk[1] \cdot s = s^2+e_0 rlk[0]+rlk[1]?s=s2+e0?,那么令
c t ′ = ( c 0 + r l k [ 0 ] ? c 2 , ? c 1 + r l k [ 1 ] ? c 2 ) ct' = (c_0+rlk[0] \cdot c_2,\, c_1+rlk[1] \cdot c_2) ct=(c0?+rlk[0]?c2?,c1?+rlk[1]?c2?)

得到 r = e 0 ? c 2 ∈ R r=e_0 \cdot c_2 \in R r=e0??c2?R,但是由于 c 2 ∈ R q c_2 \in R_q c2?Rq?,所以噪声 r r r 过大。需要降低 ∥ c 2 ∥ \|c_2\| c2? 或者 ∥ r ∥ \|r\| r

方案一

c 2 c_2 c2? T T T 进制分解,从而降低范数 ∥ c 2 ∥ \|c_2\| c2?,令 c 2 = ∑ i = 0 l ? 1 T i ? c 2 ( i ) c_2 = \sum_{i=0}^{l-1} T^i \cdot c_2^{(i)} c2?=i=0l?1?Ti?c2(i)?,其中 l = ? log ? T ( q ) ? l = \lceil\log_T(q) \rceil l=?logT?(q)?

对应的,设置重线性化密钥为:
r l k = { ( [ ? ( a i ? s + e i ) + T i ? s 2 ] q , ? a i ) : ? i = 0 , 1 , ? ? , l ? 1 } rlk = \{ ([-(a_i \cdot s+e_i) + T^i \cdot s^2]_q,\, a_i):\, i =0,1,\cdots,l-1 \} rlk={([?(ai??s+ei?)+Ti?s2]q?,ai?):i=0,1,?,l?1}

那么,新密文是
c 0 ′ = [ c 0 + ∑ i r l k [ i ] [ 0 ] ? c 2 ( i ) ] q , ?? c 1 ′ = [ c 1 + ∑ i r l k [ i ] [ 1 ] ? c 2 ( i ) ] q c_0' = \left[ c_0 + \sum_i rlk[i][0] \cdot c_2^{(i)} \right]_q,\,\, c_1' = \left[ c_1 + \sum_i rlk[i][1] \cdot c_2^{(i)} \right]_q c0?=[c0?+i?rlk[i][0]?c2(i)?]q?,c1?=[c1?+i?rlk[i][1]?c2(i)?]q?

此时, r = ∑ i c 2 ( i ) ? e i r = \sum_i c_2^{(i)} \cdot e_i r=i?c2(i)??ei?,base T T T 越小,则范数 ∥ r ∥ \|r\| r 越小,但 r l k rlk rlk 越大,计算速度也越慢。注意到重线性化所引入的噪声 r r r 独立于密文噪声,为了保持良好的同态能力,应使得 r r r 不大于做密文噪声太多。

Dynamic Relinearisation:选取一个尽可能小的 T T T 计算出 r l k rlk rlk,如果多次乘法后密文的噪声增大,那么就可以从中提取出恰当的 T k T^k Tk r l k rlk rlk,来加速重线性化过程。

方案二

使用模切换,在一个大的模 p ? q p \cdot q p?q 上运算,然后使用除法降低范数 ∥ r ∥ \|r\| r,令重线性化密钥为:
r l k = ( [ ? ( a 0 ? s + e 0 ) + p ? s 2 ] p ? q , ? a 0 ) rlk = ([-(a_0 \cdot s+e_0) + p \cdot s^2]_{p \cdot q},\, a_0) rlk=([?(a0??s+e0?)+p?s2]p?q?,a0?)

其中 a 0 ← R p ? q a_0 \leftarrow R_{p \cdot q} a0?Rp?q? e ← χ ′ e \leftarrow \chi' eχ,这里的分布 χ ′ ≠ χ \chi' \neq \chi χ=χ 是新分布。如果 p ? q = q k , ? k ∈ R p \cdot q=q^k,\, k \in \mathbb R p?q=qk,kR ∥ χ ∥ < B \|\chi\|<B χ<B,那么需要 ∥ χ ′ ∥ = B k > α 1 ? k ? q k ? k ? B k \|\chi'\| = B_k > \alpha^{1-\sqrt k} \cdot q^{k-\sqrt k} \cdot B^{\sqrt k} χ=Bk?>α1?k ??qk?k ??Bk ? α ≈ 3.758 \alpha \approx 3.758 α3.758 是常数,以保证安全性不损失。

那么,
c 0 ′ ′ = [ ? c 2 ? r l k [ 0 ] p ? ] q , ?? c 1 ′ ′ = [ ? c 2 ? r l k [ 1 ] p ? ] q c_0'' = \left[ \left\lfloor \frac{c_2 \cdot rlk[0]}{p} \right\rceil \right]_q,\,\, c_1'' = \left[ \left\lfloor \frac{c_2 \cdot rlk[1]}{p} \right\rceil \right]_q c0′′?=[?pc2??rlk[0]??]q?,c1′′?=[?pc2??rlk[1]??]q?

容易验证 c 0 ′ ′ + c 1 ′ ′ ? s = c 2 ? s 2 + r c_0''+c_1'' \cdot s = c_2 \cdot s^2 + r c0′′?+c1′′??s=c2??s2+r,那么新密文就是 c t ′ = ( c 0 + c 0 ′ ′ , ? c 1 + c 1 ′ ′ ) ct' = (c_0+c_0'',\, c_1+c_1'') ct=(c0?+c0′′?,c1?+c1′′?),其中 ∥ r ∥ < q ? B k ? δ R p + δ R ? ∥ s ∥ + 1 2 \|r\| < \dfrac{q \cdot B_k \cdot \delta_R}{p} + \dfrac{\delta_R \cdot \|s\| + 1}{2} r<pq?Bk??δR??+2δR??s+1?,整数 p p p 越大,那么范数 ∥ r ∥ \|r\| r 越小,但计算速度越慢。

Dynamic Relinearisation:选取一个足够大的 p p p 计算出 r l k rlk rlk,如果多次乘法后密文的噪声增大,那么可以从中提取出 p ′ ∣ p p'|p pp r l k rlk rlk,来加速重线性化过程。

SHE / FHE

我们可以实现基于 RLWE 的 somewhat homomorphic encryption scheme,

在这里插入图片描述
在这里插入图片描述

同态运算后,密文中携带的噪声为:

在这里插入图片描述

为了实现 L-homomorphic,需要噪声分布 χ \chi χ 的界 B B B 满足:
4 ? δ R L ? ( δ + 1.25 ) L + 1 ? t L ? 1 < ? q B ? 4 \cdot \delta_R^L \cdot (\delta+1.25)^{L+1} \cdot t^{L-1} < \left\lfloor \frac{q}{B} \right\rfloor 4?δRL??(δ+1.25)L+1?tL?1<?Bq??

为了实现 FHE,只需使得解密电路的深度小于 L L L 即可。环 R q R_q Rq? 上的多项式运算的深度,计算挺麻烦的,没仔细看 \( ̄︶ ̄)/

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:02:40  更:2022-10-31 12:03:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:30:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码