论文旅游网站建设/google中文搜索引擎
参考文献:
- [NL11] Naehrig M, Lauter K, Vaikuntanathan V. Can homomorphic encryption be practical?[C]//Proceedings of the 3rd ACM workshop on Cloud computing security workshop. 2011: 113-124.
- [GC15] Geihs M, Cabarcas D. Efficient integer encoding for homomorphic encryption via ring isomorphisms[C]//Progress in Cryptology-LATINCRYPT 2014: Third International Conference on Cryptology and Information Security in Latin America Florianópolis, Brazil, September 17–19, 2014 Revised Selected Papers 3. Springer International Publishing, 2015: 48-63.
- [CS16] Costache A, Smart N P. Which ring based somewhat homomorphic encryption scheme is best?[C]//Topics in Cryptology-CT-RSA 2016: The Cryptographers’ Track at the RSA Conference 2016, San Francisco, CA, USA, February 29-March 4, 2016, Proceedings. Springer International Publishing, 2016: 325-340.
- [CSVW17] Costache A, Smart N P, Vivek S, et al. Fixed-point arithmetic in SHE schemes[C]//Selected Areas in Cryptography–SAC 2016: 23rd International Conference, St. John’s, NL, Canada, August 10-12, 2016, Revised Selected Papers 23. Springer International Publishing, 2017: 401-422.
- [CJLL17] Cheon J H, Jeong J, Lee J, et al. Privacy-preserving computations of predictive medical models with minimax approximation and non-adjacent form[C]//Financial Cryptography and Data Security: FC 2017 International Workshops, WAHC, BITCOIN, VOTING, WTSC, and TA, Sliema, Malta, April 7, 2017, Revised Selected Papers 21. Springer International Publishing, 2017: 53-74.
- [CLPX18] Chen H, Laine K, Player R, et al. High-precision arithmetic in homomorphic encryption[C]//Cryptographers’ Track at the RSA Conference. Cham: Springer International Publishing, 2018: 116-136.
- [BGGJ20] Boura C, Gama N, Georgieva M, et al. Chimera: Combining ring-lwe-based fully homomorphic encryption schemes[J]. Journal of Mathematical Cryptology, 2020, 14(1): 316-338.
文章目录
- BGV-big-number
- Bit Coefficient Encoding
- Ring Isomorphism Encoding
- BFV-big-number
- New Level FHE
- Fractional Encoder
- odd base
- even base
- Result
BGV-big-number
类似于 [HS00] 的 NTRU 优化技巧,[GC15] 提出了 Ring Isomorphism Encoding 编码方案,使用形如 p = x − b p=x-b p=x−b 的明文模数,给出了高精度整数的 BV/BGV 变体。
Bit Coefficient Encoding
[NL11] 给出了 BFV 的代码实现。除此之外,它还给出了如何把平凡的消息空间(整数、比特串)的编码到明文多项式环 R p = Z p [ x ] / ( x N + 1 ) R_p=\mathbb Z_p[x]/(x^N+1) Rp=Zp[x]/(xN+1)。这种编码方案,被 [GC15] 称为 BCE 编码。
BCE.Encode:给定 n n n 比特的整数 m m m,二进制分解,编码为多项式:
p m ( x ) = ∑ i = 0 n − 1 m i x i p_m(x) = \sum_{i=0}^{n-1} m_ix^i pm(x)=i=0∑n−1mixi
BCE.Decode:就是 m = p m ( 2 ) m = p_m(2) m=pm(2),多项式求值。
运算就是多项式加法/多项式乘法,
- 对于 l l l 个整数的连续加法,需要 p > l p>l p>l
- 对于 l l l 个整数的连续乘法,需要 N > n l N>nl N>nl,并且 p > n l − 1 p>n^{l-1} p>nl−1
Ring Isomorphism Encoding
但是 BCE 的两个空间并非同构,因此需要追踪是否越界 p p p 以及 x n + 1 x^n+1 xn+1
[GC15] 提出了另一种编码方式: 明文多项式环 R p = Z [ x ] / ( x N + 1 , p ) R_p=\mathbb Z[x]/(x^N+1,p) Rp=Z[x]/(xN+1,p),其中的 p ∈ Z [ x ] p \in \mathbb Z[x] p∈Z[x] 是多项式(不必是常数)。
特别地,对于 a ∈ Z a \in \mathbb Z a∈Z,映射 ϕ : Z [ x ] / ( x n + 1 , x − a ) → Z / ( a n + 1 ) \phi: \mathbb Z[x]/(x^n+1,x-a) \to \mathbb Z/(a^n+1) ϕ:Z[x]/(xn+1,x−a)→Z/(an+1) 定义为
f ( x ) + ( x n + 1 , x − a ) ↦ f ( a ) + ( a n + 1 ) f(x)+(x^n+1,x-a) \mapsto f(a) + (a^n+1) f(x)+(xn+1,x−a)↦f(a)+(an+1)
容易验证 ϕ \phi ϕ 是两个整环的同构映射。
对于不同的 a a a,环 R p R_p Rp 可以同构于:整环、有限域、整环直积,代码实现的效率也有差异。方便起见,[GC15] 选取了 p = x − 2 p=x-2 p=x−2,此时 R p ≅ Z 2 n + 1 R_p \cong \mathbb Z_{2^n+1} Rp≅Z2n+1 环同构。我们需要约束下 R p R_p Rp 的代表元的范围,
T n = { a ( x ) = ∑ i = 0 n − 1 a i x i : a i ∈ { 0 , ± 1 } } T_n = \{a(x) = \sum_{i=0}^{n-1} a_ix^i:a_i \in \{0,\pm 1\} \} Tn={a(x)=i=0∑n−1aixi:ai∈{0,±1}}
易知 ∣ T n ∣ = 3 n > 2 n + 1 |T_n| = 3^n>2^n+1 ∣Tn∣=3n>2n+1,从而这个集合包含了全部的 R p R_p Rp 代表元。例如, 2 x 2 + x + 1 ≡ ( x − 2 ) x 2 + 2 x 2 + x + 1 ≡ x 3 + x + 1 ( m o d x − 2 ) 2x^2+x+1 \equiv (x-2)x^2 + 2x^2+x+1 \equiv x^3 + x + 1\pmod{x-2} 2x2+x+1≡(x−2)x2+2x2+x+1≡x3+x+1(modx−2)(取模 p = x − 2 p=x-2 p=x−2 时,并非是把高次项都消除,而是要将较大的系数消除,多项式次数甚至会更高了)。
RIE.Encode:给定整数 z ∈ Z z \in \mathbb Z z∈Z,取值范围 [ − 2 n − 1 , ⋯ , 0 , ⋯ , 2 n − 1 ] [-2^{n-1},\cdots,0,\cdots,2^{n-1}] [−2n−1,⋯,0,⋯,2n−1]
-
寻找 z i ∈ { 0 , ± 1 } z_i \in \{0,\pm1\} zi∈{0,±1},满足
z ≡ ∑ i = 0 n − 1 z i 2 i ( m o d 2 n + 1 ) z\equiv \sum_{i=0}^{n-1} z_i 2^i \pmod{2^n+1} z≡i=0∑n−1zi2i(mod2n+1)并且要使得 ∑ i ∣ z i ∣ \sum_i |z_i| ∑i∣zi∣ 最小化
-
编码为多项式
m ( x ) = ∑ i = 0 n − 1 z i x i m(x) = \sum_{i=0}^{n-1} z_i x^i m(x)=i=0∑n−1zixi可以验证 ϕ : m ( x ) → z \phi:m(x) \to z ϕ:m(x)→z 成立
RIE.Decode:给定多项式 m ∈ R p m \in R_p m∈Rp(系数不一定还是 { 0 , ± 1 } \{0,\pm 1\} {0,±1} 的)
- 多项式求值 z ′ = m ( 2 ) ( m o d 2 n + 1 ) z' = m(2) \pmod{2^n+1} z′=m(2)(mod2n+1),取值范围 [ 0 , ⋯ , 2 n ] [0,\cdots,2^n] [0,⋯,2n]
- 当 z ′ > 2 n − 1 z'>2^{n-1} z′>2n−1 时,输出 z ′ − ( 2 n + 1 ) z'-(2^n+1) z′−(2n+1)(负数)
- 否则,直接输出 z ′ z' z′(正数)
因为 R p ≅ Z a n + 1 R_p \cong \mathbb Z_{a^n+1} Rp≅Zan+1,因此 RIE 码字的同态运算是自然的(不必担心 p p p 和 x n + 1 x^n+1 xn+1 是否溢出):多项式加法就是整数加法、多项式乘法就是整数乘法。此外,如果 a n + 1 a^n+1 an+1 可以分解为一些互素的因子 n 1 , ⋯ , n t n_1,\cdots,n_t n1,⋯,nt,那么就有 CRT 分解(SIMD 槽)
R p ≅ Z a n + 1 ≅ ∏ i = 1 t Z n i R_p \cong \mathbb Z_{a^n+1} \cong \prod_{i=1}^t \mathbb Z_{n_i} Rp≅Zan+1≅i=1∏tZni
对于 RLWE-based BGV 方案,
- 密文的代数结构是 R q L R_{q_L} RqL,密文模数 q L q_L qL 是素数的乘积(常数多项式)
- 明文的代数结构是 R p R_p Rp,明文模数 p = x − 2 p=x-2 p=x−2 是个多项式
对于加密、解密、同态运算、秘钥切换,除了把 ( m o d p ) \pmod p (modp) 替换为了 ( m o d x − b ) \pmod{x-b} (modx−b),这个 BGV 变体的计算方式都是与原始方案一样的。略微修改 BGV 的模切换算法,就可以适应这个明文模数。算法 s c a l e ( c , q , q ′ , p ) scale(c,q,q',p) scale(c,q,q′,p),
- 对于密文模数 q ′ < q q'<q q′<q,满足 q ≡ q ′ ≡ 1 m o d p q \equiv q' \equiv 1 \mod p q≡q′≡1modp
- 从 R q R_q Rq 提升到 Q [ x ] \mathbb Q[x] Q[x],计算 y = ( q ′ / q ) c ∈ Q [ x ] y = (q'/q)c \in \mathbb Q[x] y=(q′/q)c∈Q[x]
- 寻找多项式 c ′ ∈ Z [ x ] c' \in \mathbb Z[x] c′∈Z[x],满足如下条件
- 保持解密正确性:只需满足 c ′ ≡ c ( m o d x n + 1 , x − 2 ) c' \equiv c \pmod{x^n+1,x-2} c′≡c(modxn+1,x−2)
- 最小化舍入噪声:使得系数向量的距离 ∥ y − c ′ ∥ ∞ \|y-c'\|_\infty ∥y−c′∥∞ 最小化
可以证明,对于 p = x − 2 p=x-2 p=x−2,舍入噪声的规模为 ∥ y − c ′ ∥ ∞ ≤ 1.5 \|y-c'\|_\infty \le 1.5 ∥y−c′∥∞≤1.5
BFV-big-number
[CLPX18] 将上述的 RIE 应用到了 B/FV 方案上,得到了高精度整数的 B/FV 变体,并且给出了有理数的编码方案(分数格式)。另外它利用 [CS16] 提出的平均情况下的启发式噪声上界(heuristic upper bounds for the noise growth),评估了这个 BFV 变体的噪声增长(原始 B/FV 使用最坏的噪声估计,参数很不紧)。
New Level FHE
类似于 BCE,我们令消息空间 M = [ − ⌈ b n / 2 ⌉ , ⌊ b n / 2 ⌋ ] ∩ Z M = [-\lceil b^n/2 \rceil, \lfloor b^n/2 \rfloor] \cap \mathbb Z M=[−⌈bn/2⌉,⌊bn/2⌋]∩Z(大小为 b n + 1 b^n+1 bn+1 的对称区间)。那么,对于任意的 m ∈ M m \in M m∈M,总是存在至少一个短的多项式 m ^ ( x ) ∈ Z [ x ] \hat m(x) \in \mathbb Z[x] m^(x)∈Z[x],满足 deg m ^ ≤ n − 1 \deg \hat m \le n-1 degm^≤n−1 以及 ∥ m ^ ∥ ∞ ≤ ( b + 1 ) / 2 \|\hat m\|_\infty \le (b+1)/2 ∥m^∥∞≤(b+1)/2(如果系数大小约束为 b / 2 b/2 b/2 则只能表示 b n b^n bn 个元素),使得 m ^ ( b ) = m ( m o d b n + 1 ) \hat m(b)=m \pmod{b^n+1} m^(b)=m(modbn+1)
我们设置明文模数 p = x − b ∈ Z [ x ] p=x-b \in \mathbb Z[x] p=x−b∈Z[x],密文模数 q ∈ Z q \in \mathbb Z q∈Z,BFV 工作的多项式环 R = Z [ x ] / ( x n + 1 ) R=\mathbb Z[x]/(x^n+1) R=Z[x]/(xn+1),其中 n n n 是二的幂次。那么,
R / p R ≅ Z / ( b n + 1 ) Z m ^ ( x ) ↦ m = m ^ ( b ) R/pR \cong \mathbb Z/(b^n+1)\mathbb Z\\ \hat m(x) \mapsto m=\hat m(b) R/pR≅Z/(bn+1)Zm^(x)↦m=m^(b)
可以验证, p = x − b p=x-b p=x−b 在分圆数域 Q [ x ] / ( x n + 1 ) \mathbb Q[x]/(x^n+1) Q[x]/(xn+1) 中的逆元为:
p − 1 = − 1 b n + 1 ( x n − 1 + b x n − 2 + ⋯ + b b n − 1 ) ∈ Q [ x ] p^{-1} = -\dfrac{1}{b^n+1} (x^{n-1} + bx^{n-2} + \cdots + b^{b^{n-1}}) \in \mathbb Q[x] p−1=−bn+11(xn−1+bxn−2+⋯+bbn−1)∈Q[x]
因此,我们定义
Δ b : = ⌊ q p ⌉ = ⌊ − q b n + 1 ( x n − 1 + b x n − 2 + ⋯ + b b n − 1 ) ⌉ ∈ Z [ x ] \Delta_b := \left\lfloor \dfrac{q}{p} \right\rceil = \left\lfloor -\dfrac{q}{b^n+1} (x^{n-1} + bx^{n-2} + \cdots + b^{b^{n-1}}) \right\rceil \in \mathbb Z[x] Δb:=⌊pq⌉=⌊−bn+1q(xn−1+bxn−2+⋯+bbn−1)⌉∈Z[x]
构造出 BFV 变体,
-
秘钥:私钥 s k = s ∈ R sk=s \in R sk=s∈R,公钥 p k = ( p 0 , p 1 ) ∈ R q 2 pk=(p_0,p_1) \in R_q^2 pk=(p0,p1)∈Rq2,满足 p 0 + p 1 s = e ≈ 0 ( m o d q ) p_0+p_1s = e\approx 0 \pmod{q} p0+p1s=e≈0(modq)
-
加密:消息 m ∈ M m \in M m∈M 是有界的整数,编码为多项式 m ^ ( x ) ∈ R p \hat m(x) \in R_p m^(x)∈Rp,短随机带 r ∈ R r \in R r∈R,中心离散高斯 e 0 , e 1 ∈ R e_0,e_1 \in R e0,e1∈R,
c t : = ( [ Δ b ⋅ m ^ + p 0 r + e 0 ] q , [ p 1 r + e 1 ] q ) ∈ R q 2 ct := ([\Delta_b \cdot \hat m + p_0r + e_0]_q, [p_1r + e_1]_q) \in R_q^2 ct:=([Δb⋅m^+p0r+e0]q,[p1r+e1]q)∈Rq2 -
解密:密文 c t = ( c 0 , c 1 ) ct=(c_0,c_1) ct=(c0,c1),计算
m ^ = ⌊ x − b q [ c 0 + c 1 s ] q ⌉ ∈ R p \hat m = \left\lfloor \dfrac{x-b}{q} [c_0+c_1s]_q \right\rceil \in R_p m^=⌊qx−b[c0+c1s]q⌉∈Rp输出 m = m ^ ( b ) ∈ M m = \hat m(b) \in M m=m^(b)∈M
-
加法:输入 c t 0 , c t 1 ct_0,ct_1 ct0,ct1,输出 c t a d d = c t 0 + c t 1 ct_{add} = ct_0 + ct_1 ctadd=ct0+ct1
-
乘法:输入 c t 0 = ( c 0 , c 1 ) , c t 1 = ( d 0 , d 1 ) ct_0=(c_0,c_1),ct_1=(d_0,d_1) ct0=(c0,c1),ct1=(d0,d1),计算 c t m u l t ′ = ( c 0 ′ , c 1 ′ , c 2 ′ ) ∈ R q 3 ct_{mult}'=(c_0',c_1',c_2') \in R_q^3 ctmult′=(c0′,c1′,c2′)∈Rq3,其中
c 0 ′ = [ ⌊ x − b q ( c 0 d 0 ) ⌉ ] q c 1 ′ = [ ⌊ x − b q ( c 0 d 0 + c 1 d 0 ) ⌉ ] q c 2 ′ = [ ⌊ x − b q ( c 1 d 1 ) ⌉ ] q \begin{aligned} c_0' &= \left[\left\lfloor \dfrac{x-b}{q} (c_0d_0) \right\rceil\right]_q\\ c_1' &= \left[\left\lfloor \dfrac{x-b}{q} (c_0d_0+c_1d_0) \right\rceil\right]_q\\ c_2' &= \left[\left\lfloor \dfrac{x-b}{q} (c_1d_1) \right\rceil\right]_q\\ \end{aligned} c0′c1′c2′=[⌊qx−b(c0d0)⌉]q=[⌊qx−b(c0d0+c1d0)⌉]q=[⌊qx−b(c1d1)⌉]q然后执行 Relinearize 操作,得到 c t m u l t ∈ R q 2 ct_{mult} \in R_q^2 ctmult∈Rq2
我们采取启发式的噪声估计,规范嵌入范数(Canonical Embedding Norm)定义为
∥ a ∥ ∞ c a n : = ∥ ( a ( ζ m i ) ) i ∈ Z m ∗ ∥ ∞ \|a\|_\infty^{can} := \|(a(\zeta_m^i))_{i \in \mathbb Z_m^*}\|_\infty ∥a∥∞can:=∥(a(ζmi))i∈Zm∗∥∞
其中 ζ m ∈ C \zeta_m \in \mathbb C ζm∈C 是本原单位根。它有良好的性质,
- 适合评估乘积的范数, ∥ a ⋅ b ∥ ∞ c a n ≤ ∥ a ∥ ∞ c a n ⋅ ∥ b ∥ ∞ c a n \|a \cdot b\|_\infty^{can} \le \|a\|_\infty^{can} \cdot \|b\|_\infty^{can} ∥a⋅b∥∞can≤∥a∥∞can⋅∥b∥∞can
- 约束了 L1 范数的下界, ∥ a ∥ ∞ c a n ≤ ∥ a ∥ 1 \|a\|_\infty^{can} \le \|a\|_1 ∥a∥∞can≤∥a∥1
- 约束了无穷范数的上界, ∥ a ∥ ∞ ≤ c m ⋅ ∥ a ∥ ∞ c a n \|a\|_\infty \le c_m \cdot\|a\|_\infty^{can} ∥a∥∞≤cm⋅∥a∥∞can,其中 c m = ∥ C R T m − 1 ∥ ∞ c_m=\|CRT_m^{-1}\|_\infty cm=∥CRTm−1∥∞ 是只和 m m m 有关的环常数(ring constant)
启发式的,如果 a ∈ R Q a \in R_\mathbb Q a∈RQ 的各个系数是根据标准差 σ \sigma σ 独立采样的,那么以压倒性概率满足 ∥ a ∥ ∞ c a n ≤ 6 σ n \|a\|_\infty^{can} \le 6 \sigma\sqrt n ∥a∥∞can≤6σn,除了 e r f c ( 6 ) ≈ 2 − 55 erfc(6) \approx 2^{-55} erfc(6)≈2−55 的小尾巴。
-
同态加法的噪声,
∥ E r r ( v a d d ) ∥ c a n ≤ ∥ E r r ( v 1 ) ∥ c a n + ∥ E r r ( v 2 ) ∥ c a n \|Err(v_{add})\|^{can} \le \|Err(v_{1})\|^{can} + \|Err(v_{2})\|^{can} ∥Err(vadd)∥can≤∥Err(v1)∥can+∥Err(v2)∥can -
同态乘法的噪声,
∥ E r r ( v m u l t ) ∥ c a n ≲ 14 ( b + 1 ) n max { ∥ E r r ( v 1 ) ∥ c a n , ∥ E r r ( v 2 ) ∥ c a n } \|Err(v_{mult})\|^{can} \lesssim 14(b+1)n\max\{\|Err(v_{1})\|^{can},\|Err(v_{2})\|^{can}\} ∥Err(vmult)∥can≲14(b+1)nmax{∥Err(v1)∥can,∥Err(v2)∥can}
Fractional Encoder
类似于 SEAL 的思路,[CLPX18] 也是采用基于分数的有理数编码器,而非基于缩放的有理数编码器,[CSVW17] 证明了这两种有理数编码器同构,但是后者需要追踪 scale 的大小。
抽象地,分数编码器是 ( P , E n c o d e , D e c o d e ) (P,Encode,Decode) (P,Encode,Decode),其中 P ⊆ Q P \subseteq \mathbb Q P⊆Q 是有限子集,编码函数 E n c o d e : P → M Encode:P \to M Encode:P→M,解码函数 D e c o d e : M → P Decode: M \to P Decode:M→P,我们要求:
-
编码器是可逆的( E n c o d e Encode Encode 是单射, D e c o d e Decode Decode 是左逆),
D e c o d e ( E n c o d e ( x ) ) = x , ∀ x ∈ P Decode(Encode(x)) = x,\forall x \in P Decode(Encode(x))=x,∀x∈P -
具有同态的性质,
E n c o d e ( x + y ) = E n c o d e ( x ) + E n c o d e ( y ) E n c o d e ( x y ) = E n c o d e ( x ) ⋅ E n c o d e ( y ) Encode(x+y) = Encode(x)+Encode(y)\\ Encode(xy) = Encode(x)\cdot Encode(y) Encode(x+y)=Encode(x)+Encode(y)Encode(xy)=Encode(x)⋅Encode(y)
设置 M = Z / ( b n + 1 ) Z M = \mathbb Z/(b^n+1)\mathbb Z M=Z/(bn+1)Z,定义编码函数为
E n c o d e ( x y ) = x y − 1 ( m o d b n + 1 ) Encode\left(\dfrac{x}{y}\right) = xy^{-1} \pmod{b^n+1} Encode(yx)=xy−1(modbn+1)
现在,我们需要选择合适的 P P P(比如 g c d ( y , b n + 1 ) ≠ 1 gcd(y,b^n+1) \neq 1 gcd(y,bn+1)=1 就明显不可逆),并构造对应的解码函数,使得它们满足我们要求的可逆、同态的性质。
odd base
假如 b ∈ Z b \in \mathbb Z b∈Z 是奇数,设置
P = { c ⋅ b n / 2 + d b n / 2 : c , d ∈ [ − b n / 2 − 1 2 , b n / 2 − 1 2 ] ∩ Z } P = \left\{ \dfrac{c \cdot b^{n/2} + d}{b^{n/2}}: c,d \in \left[-\dfrac{b^{n/2}-1}{2},\dfrac{b^{n/2}-1}{2}\right] \cap \mathbb Z \right\} P={bn/2c⋅bn/2+d:c,d∈[−2bn/2−1,2bn/2−1]∩Z}
可以证明,上述定义的 E n c o d e : P → M Encode: P \to M Encode:P→M 是单射,其中 ( b n / 2 ) − 1 = − b n / 2 ( m o d b n + 1 ) (b^{n/2})^{-1} = -b^{n/2} \pmod{b^n+1} (bn/2)−1=−bn/2(modbn+1)
定义它的左逆,对于 z ∈ E n c o d e ( P ) z \in Encode(P) z∈Encode(P),
D e c o d e ( z ) = [ z ⋅ b n / 2 ] b n + 1 b n / 2 Decode(z) = \dfrac{[z \cdot b^{n/2}]_{b^n+1}}{b^{n/2}} Decode(z)=bn/2[z⋅bn/2]bn+1
可以验证 ( P , E n c o d e , D e c o d e ) (P,Encode,Decode) (P,Encode,Decode) 满足我们的抽象要求。
even base
假如 b ∈ Z b \in \mathbb Z b∈Z 是偶数,由于证明编码函数是单射的限制,需要把整数部分 c c c 或者小数部分 d d d 的位数降低一位(没看懂里面的 b / ( b − 1 ) b/(b-1) b/(b−1) 代表什么意思)。我们把 d d d 减少到 n / 2 − 1 n/2-1 n/2−1 位,那么
P = { c ⋅ b n / 2 − 1 + d b n / 2 − 1 : c ∈ [ − ( b n / 2 − 1 ) b 2 ( b − 1 ) , ( b n / 2 − 1 ) b 2 ( b − 1 ) ] ∩ Z , d ∈ [ − ( b n / 2 − 1 − 1 ) b 2 ( b − 1 ) , ( b n / 2 − 1 − 1 ) b 2 ( b − 1 ) ] ∩ Z } P = \left\{ \dfrac{c \cdot b^{n/2-1} + d}{b^{n/2-1}}: c \in \left[-\dfrac{(b^{n/2}-1)b}{2(b-1)},\dfrac{(b^{n/2}-1)b}{2(b-1)}\right] \cap \mathbb Z,\,\, d \in \left[-\dfrac{(b^{n/2-1}-1)b}{2(b-1)},\dfrac{(b^{n/2-1}-1)b}{2(b-1)}\right] \cap \mathbb Z \right\} P={bn/2−1c⋅bn/2−1+d:c∈[−2(b−1)(bn/2−1)b,2(b−1)(bn/2−1)b]∩Z,d∈[−2(b−1)(bn/2−1−1)b,2(b−1)(bn/2−1−1)b]∩Z}
可以证明,上述定义的 E n c o d e : P → M Encode: P \to M Encode:P→M 是单射,其中 ( b n / 2 − 1 ) − 1 = − b n / 2 + 1 ( m o d b n + 1 ) (b^{n/2-1})^{-1} = -b^{n/2+1} \pmod{b^n+1} (bn/2−1)−1=−bn/2+1(modbn+1)
定义它的左逆,对于 z ∈ E n c o d e ( P ) z \in Encode(P) z∈Encode(P),
D e c o d e ( z ) = [ z ⋅ b n / 2 − 1 ] b n + 1 b n / 2 − 1 Decode(z) = \dfrac{[z \cdot b^{n/2-1}]_{b^n+1}}{b^{n/2-1}} Decode(z)=bn/2−1[z⋅bn/2−1]bn+1
可以验证 ( P , E n c o d e , D e c o d e ) (P,Encode,Decode) (P,Encode,Decode) 满足我们的抽象要求。
Result
使用正则电路(regular circuit): A A A 层加法, 1 1 1 层乘法,迭代 L L L 轮,整数范围 [ − L , L ] [-L,L] [−L,L],来评估 BFV-big-number 的效率。
原始 BFV,采取 [CJLL17] 的 NAF 编码器,
本文的高精度 BFV 变体,
相关文章:

FHE 的高精度算术:BGV-big、BFV-big
参考文献: [NL11] Naehrig M, Lauter K, Vaikuntanathan V. Can homomorphic encryption be practical?[C]//Proceedings of the 3rd ACM workshop on Cloud computing security workshop. 2011: 113-124.[GC15] Geihs M, Cabarcas D. Efficient integer encoding…...

基于SpringBoot的在线笔记系统
技术介绍 🔥采用技术:SpringSpringMVCMyBatisJSPMaven 🔥开发语言:Java 🔥JDK版本:JDK1.8 🔥服务器:tomcat 🔥数据库:mysql 🔥数据库开发工具&…...

UE4 使用材质后期 制作玻璃有雨效果
效果展示,其实这是一个动画效果 以上为所有逻辑 拿到TexCoord给到Panner,Time和Speed都是通过下面计算而来,后面讲,再拿到时间和速度值过后,加上扰动值,最后取G值,因为雨事从上而下的动…...

笔记检验(一):笔记检验概述
文章目录 一、 笔迹的概念及成分(一) 笔迹的概念(二) 笔迹的成分 二、 笔迹检验的概念、任务及作用(一) 笔迹检验的概念(二) 笔迹检验的任务(三) 笔记检验的作…...

NOIP2023模拟6联测27 C. 点餐
NOIP2023模拟6联测27 C. 点餐 题目大意 有 n n n 种菜品,每样菜品有 a i , b i a_i , b_i ai,bi 假设有某位顾客点了 k k k 样菜品,那么价格为 ∑ i 1 k a p i max i 1 k b p i \sum_{i 1}^k a_{p_i}\max_{i 1}^kb_{p_i} ∑i1kapi…...

简单聊聊远程协同运维定义以及优势-行云管家
很多新人小伙伴对于远程协同运维不是很了解,今天我们就来简单聊聊远程协同运维定义以及优势。 远程协同运维定义 远程协同运维其实非常容易理解,主要是指计算机系统技术服务工程相关的人员通过局域网或者是其他网络对于它来进行连接,共同远…...

Ortec974A EPICS IOC程序
Ortec974A设备介绍,请见Ortec -- 974A 四通道100-MHz计时器/计数器_ortec974a_EPICS Technical的博客-CSDN博客 1) 创建一个用户存放这个IOC程序结构的目录: rootorangepi4-lts:/usr/local/EPICS/program# mkdir ortec974A rootorangepi4-l…...

JS-文件下载,实现在ios也是下载 而不是预览,
需求 通过A链接的方式,把从后台获取到的文件下载到本地,实现在移动端,PC端都能下载 问题 通过ajax请求后端生成的文件流之后,创建BLOB文件进行下载,在PC端和移动安卓端都可以实现下载到本地和对应的手机,而在IOS端的…...

Leetcode.275 H 指数 II
题目链接 Leetcode.275 H 指数 II mid 题目描述 给你一个整数数组 c i t a t i o n s citations citations ,其中 c i t a t i o n s [ i ] citations[i] citations[i] 表示研究者的第 i i i 篇论文被引用的次数, c i t a t i o n s citations citat…...

代码随想录Day40-单调栈:力扣第496e、503m、42h、84h题
496e. 下一个更大元素 I 题目链接 代码随想录文章讲解链接 方法一:单调栈哈希表 用时:13m52s 思路 维护一个栈底到栈顶是单调递减的栈,从后往前遍历数组nums2,更新栈。nums2当前元素nums2[i]的下一个更大元素就是栈顶元素&am…...

Git窗口打开vim后如何退出编辑(IDEA/Goland等编辑器)
最近在学习git高级操作过程中,遇到了一下问题: 我在学习Git合并多个commit为一个的时候,需要输入一个命令 git rebase -i HEAD~2 这说明已经是编辑模式了。当我写好后,我还按照原来在linux上的按下ESC键,但是只是光…...

【CSDN 每日一练 ★★☆】【二叉树/BSF】二叉树的层序遍历
【CSDN 每日一练 ★★☆】【二叉树/BSF】二叉树的层序遍历 二叉树 BSF 题目 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,nul…...

Golang | Zinx学习笔记(一)
参考 http://zinx.me/ https://www.kancloud.cn/aceld/zinx/1960213 https://www.yuque.com/aceld/tsgooa/gx01meg5ow4pftac 说明 zinx是一个基于Golang的轻量级并发服务器框架。 目前zinx已经在很多企业进行开发使用,具体使用领域包括:后端模块的消息中转、长链…...

【Java 进阶篇】在Java Web应用中获取ServletContext对象详解
在Java Web应用开发中,ServletContext对象扮演着重要的角色,它允许你在整个Web应用程序中存储和共享数据。ServletContext对象是Servlet容器提供的一种用于管理Web应用程序的全局信息的方式。本文将详细探讨ServletContext对象的概念、用途以及如何在Jav…...

负债6W,依靠这个项目副业6个月还清欠款,还多存了10W+
真不敢想象负债6W“走投无路”的我还能通过副业逆天翻盘,6个月还清欠款,还让我多了10W存款,现在小日子也是相当滋润,吃穿不愁,不用过多为生计而奔波操劳。 仅代表个人收益 网盘下载地址:【安卓软件】音魔变…...

快速了解ClickHouse!
简介 ClickHouse是一个开源列式数据库管理系统(DBMS),用于在线分析处理(OLAP): 列式存储:与传统的行式数据库不同,ClickHouse以列的形式存储数据,这使得在分析大量数据时…...

PythonWEB
文章目录 前端简介1. 什么是网页2. 网页的组成3. 网页的优势4. 前端三剑客5. 编写步骤6. HTTP协议 HTML51. HTML介绍2. 元素3. 使用4. 基本结构解析5. 常用标签文本标签容器标签列表标签表格标签表单标签 对于文件数据的提交需要满足以下两个条件:6. 标签分类 前端简…...

【工具问题】IDEA每次关闭的时候都会弹框显示closing project,然后弹框持续很久就像卡住了
idea关闭的时候出现问题 问题展示为什么会出现这种情况怎么解决 问题展示 我idea已经关闭了,但是这个弹框要持续很久才能关闭 为什么会出现这种情况 我的plugins原本是加载不出来的,所以我按照网上说法去做 怎么解决 file->setting,再如图选择…...

从瀑布模式到水母模式:ChatGPT如何赋能软件研发全流程
文章目录 前言内容简介作者简介专家推荐读者对象直播预告 前言 计算机技术的发展和互联网的普及,使信息处理和传输变得更加高效,极大地改变了金融、商业、教育、娱乐等领域的运作方式。数据分析、人工智能和云计算等新兴技术,也在不断地影响和…...

类变量/方法、main语法、代码块
一.类变量和方法 思维导图概览: 1.1类变量(静态变量) 1.什么叫做类变量/方法? ——给类中的成员属性或成员方法加上static关键字进行修饰,类变量/方法也叫做静态变量/方法,静态变量/方法被类的自身所有对…...

[SHCTF 校外赛道] crypto
终于都结束了,这些新生赛太漫长了。不过这个也还是有些难度的,好多整不来。抓紧时间整理一下。 week1 第1周基本是古典密码,古典和现代最大的区别是古典全靠猜,现在都是数学 立正 wl hgrfhg 4gNUx4NgQgEUb4NC64NHxZLg636V6CDBi…...

vue3从基础到入门(一)
文章目录 简介提升使用创建脚手架vite 常用Composition APIsetuprefreactive函数响应式vue2响应式vue3实现响应式 reactive对比ref注意计算属性computed函数 监视watch函数watchEffect函数 生命周期hook函数toRef 简介 2020年9月18日,Vue.js发布3.0版本,…...

枚举类型 表示不同的 HTTP 状态码和相应的错误消息
java web业务中经常用常量来表示不同的 HTTP 响应状态,比如 public enum AppHttpCodeEnum {// 成功段0SUCCESS(200,"操作成功"),// 登录段1~50NEED_LOGIN(1,"需要登录后操作"),LOGIN_PASSWORD_ERROR(2,"密码错误"),// TOKEN50~100TOKEN_INVALID…...

SAP 使用cl_gui_timer自动刷新屏幕的用法详解 <转载>
原文链接:https://blog.csdn.net/SAPmatinal/article/details/130483382 SAP 使用cl_gui_timer自动刷新屏幕的用法详解 这个类在初始化的时候会设置一个定时间隔,每隔这个时间就会触发一次FINISHED事件。利用这个类的特性,可以实现很多东西&…...

golang中的Interface接口 类型断言、接口赋值、空接口的使用、接口嵌套
Interface整理 文章目录 Interface整理接口嵌套接口类型断言类型判断 type-switch使用方法集与接口空接口实例 接口赋值给接口 接口是一种契约,实现类型必须满足它,它描述了类型的行为,规定类型可以做什么。接口彻底将类型能做什么࿰…...

使用设计模式省去大量的if-elsef分支
1.测试类 Testpublic void test7() {/*** 使用设计模式前*///模拟入参String name "?";if("张三".equals(name)){System.out.println("按照张三的策略执行的任务!");}else if ("李四".equals(name)){System.out.println("按照李…...

Tomcat安装与配置文件解读
简介 Tomcat是Apache软件基金会(Apache Software Foundation)项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在…...

计算机网络重点概念整理-第一章 计算机网络概述【期末复习|考研复习】
计算机网络复习系列文章传送门: 第一章 计算机网络概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层 第七章 网络安全 计算机网络整理-简称&缩写 文章目录 前言一、计算机网络概述1.1 计算机网络的定义:1.2 计算机网…...

Day 11 python学习笔记
模块 内置模块 random random:随机数模块 我们可以在解释器中看到其蕴含的方法 接下来我解释一些常用的方法: random.random( ) random.random( ) 返回0-1的随机数 [0,1) >>> random.random() 0.364183511476754 random.randint(n,m) r…...

HarmonyOS鸿蒙原生应用开发设计- 图标库
HarmonyOS设计文档中,为大家提供了独特的图标库,开发者可以根据需要直接引用。 图标库可以分为双色图标、填充图标、线性图标。具体分为 键盘、箭头、连接状态、媒体、人、设备、索引、通信、文件、物体与工具等。 整体分类 开发者直接使用官方提供的图标…...