Multi-value PBS

参考文献:

  1. CIM19\] Carpov S, Izabachène M, Mollimard V. New techniques for multi-value input homomorphic evaluation and applications\[C\]//Topics in Cryptology--CT-RSA 2019: The Cryptographers' Track at the RSA Conference 2019, San Francisco, CA, USA, March 4--8, 2019, Proceedings. Springer International Publishing, 2019: 106-126.

  2. GBA21\] Guimarães A, Borin E, Aranha D F. Revisiting the functional bootstrap in TFHE\[J\]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2021: 229-253.

  • [Multi-value PBS](#Multi-value PBS)
    • [Test polynomial factorization](#Test polynomial factorization)
    • [Homomorphic LUT](#Homomorphic LUT)
  • [Combine PBS](#Combine PBS)
    • [Tree-based PBS](#Tree-based PBS)
    • [Chain-based PBS](#Chain-based PBS)
    • [Improving building blocks](#Improving building blocks)
      • [Base-aware Key-Switching](#Base-aware Key-Switching)
      • [Multi-Value Extract](#Multi-Value Extract)

Multi-value PBS

CIM19\] 分析了 FHEW 和 TFHE 的自举程序,发现: 1. FHEW 使用 ACC 计算 X b − s T a X\^{b-s\^Ta} Xb−sTa,然后使用关于 F F F 的 Test Vector 作用到 ACC 上(多项式数乘),将 LUT 旋转为常数项是 F ( m ) F(m) F(m) * 优点:盲旋转获得的 ACC,可以作用到关于不同 F F F 的多个 TV 上 * 缺点:由于 ACC 和 TV 的乘法,**噪声增长依赖于 TV 的范数** 2. TFHE 直接把这个 Test Vector 嵌入到初始的 ACC 中,计算过程中将它旋转 X b − s T a X\^{b-s\^Ta} Xb−sTa 使得常数项是 F ( m ) F(m) F(m) * 优点:公开的 TV 直接初始嵌入到了 ACC 里,输出的噪声独立于 TV 范数 * 缺点:**每次 PBS 只能计算单个函数** 总体来说,FHEW-like 的 LUT 计算步骤是:选取合适的 T V F TV_F TVF,使得 T V F ( X ) ⋅ X m ≡ F ( m ) + R ( X ) ( m o d Φ 2 N ( X ) ) TV_F(X) \\cdot X\^m \\equiv F(m) + R(X) \\pmod{\\Phi_{2N}(X)} TVF(X)⋅Xm≡F(m)+R(X)(modΦ2N(X)) 其中 R ( X ) R(X) R(X) 的常数项为零, F ( m ) F(m) F(m) 是常数项。其中的 X m X\^m Xm 是在 ACC 中同态计算的, T V F TV_F TVF 根据需要加密(**电路隐私**)或不加密(公开的电路)。 注意 FHEW-like 不支持 LWE/RLWE 密文之间的 BGV-like 乘法, * TFHE 可以之间将 T V F TV_F TVF 加密在 RLWE-based ACC 中。 * 但是 FHEW 需要将 T V F TV_F TVF 加密在 RGSW 内,使用**外积** 来计算乘积(同态的模结构)。如果仅知道它的 RLWE 密文,还需要使用 \[CGGI20\] 的**电路自举**(多个 Gate PBS 求出若干 LWE 拼接成 GSW)。 ### Test polynomial factorization 为了综合 FHEW 和 TFHE 的优点,\[CIM19\] 提出将 Test Vector 分解为两部分,一部分(独立于 F F F)初始加密在 ACC 内,另一部分(依赖 F F F)最后最用到 ACC 上。 确切地说,给定任意的**反循环函数** F : Z 2 N → Z 2 N F: \\mathbb Z_{2N} \\to \\mathbb Z_{2N} F:Z2N→Z2N(编码了待计算的 f : Z s → Z t f:\\mathbb Z_s \\to \\mathbb Z_t f:Zs→Zt),Test Vector 对应的多项式为: T V F ( X ) = F ( 0 ) − ∑ i = 1 N − 1 F ( N − i ) ⋅ X i ∈ Z \[ X \] TV_F(X) = F(0) - \\sum_{i=1}\^{N-1} F(N-i) \\cdot X\^i \\in \\mathbb Z\[X\] TVF(X)=F(0)−i=1∑N−1F(N−i)⋅Xi∈Z\[X

我们简记 T V F ( X ) TV_F(X) TVF(X) 的各项系数为 t i ∈ Z 2 N t_i \in \mathbb Z_{2N} ti∈Z2N

我们做如下分解:
τ ⋅ T V ( 0 ) ( X ) ⋅ T V ( 1 ) ( X ) ≡ T V F ( X ) ( m o d Φ 2 N ( X ) ) \tau \cdot TV^{(0)}(X) \cdot TV^{(1)}(X) \equiv TV_F(X) \pmod{\Phi_{2N}(X)} τ⋅TV(0)(X)⋅TV(1)(X)≡TVF(X)(modΦ2N(X))

CIM19\] 设置 τ = 1 / 2 \\tau = 1/2 τ=1/2 以及 T V ( X ) = ∑ i X i TV(X) = \\sum_i X\^i TV(X)=∑iXi,计算出 T V F ( 1 ) ( X ) TV_F\^{(1)}(X) TVF(1)(X) 系数: t 0 ′ = t 0 + t N − 1 ,    t k ′ = t k − t k − 1 , ∀ k ≥ 1 t_0' = t_0+t_{N-1},\\,\\, t_k' = t_k-t_{k-1},\\forall k \\ge 1 t0′=t0+tN−1,tk′=tk−tk−1,∀k≥1 其实也可以令 τ \\tau τ 是多项式 T V F TV_F TVF 系数的最大公因子,这使得 T V F ( 1 ) ( X ) TV_F\^{(1)}(X) TVF(1)(X) 的范数更小些。 ![在这里插入图片描述](https://file.jishuzhan.net/article/1738304328608780290/e820c4656549783bbe533403eae5433a.webp) 几何解释: 1. 将 T V ( 0 ) TV\^{(0)} TV(0) 嵌入到 ACC 内,它测试的是消息的 MSB,分别输出 ± τ \\pm \\tau ±τ 2. 用 T V F ( 1 ) TV_F\^{(1)} TVF(1) 作用到 ACC 上,它将上述的结果做了**线性组合** t i ′ X i t_i'X\^i ti′Xi,最终输出 F ( m ) F(m) F(m) 对于待计算的反循环函数 f : Z s → Z q f:\\mathbb Z_s \\to \\mathbb Z_q f:Zs→Zq, s , q ∣ 2 N s,q \\mid 2N s,q∣2N,令 r ( m ) : = ⌊ m ⋅ t / 2 N ⌉ r(m):=\\lfloor m \\cdot t/2N \\rceil r(m):=⌊m⋅t/2N⌉ 是缩放舍入函数,那么设置 F = f ∘ r F = f \\circ r F=f∘r,构造出 T V F ( 1 ) ( X ) TV_F\^{(1)}(X) TVF(1)(X),\[CIM19\] 证明了 ∥ T V F ( 1 ) ( X ) ∥ 2 2 ≤ s ⋅ ( q − 1 ) 2 \\Big\\\| TV_F\^{(1)}(X) \\Big\\\|_2\^2 \\le s \\cdot (q-1)\^2 TVF(1)(X) 22≤s⋅(q−1)2 ### Homomorphic LUT 现在,我们利用分解出的单个 τ ⋅ T V ( 0 ) \\tau \\cdot TV\^{(0)} τ⋅TV(0) 和若干个 T V F i ( 1 ) TV\^{(1)}_{F_i} TVFi(1),执行 multi-value PBS, ![在这里插入图片描述](https://file.jishuzhan.net/article/1738304328608780290/5a51194483d931e53a3057f97f906311.webp) 其中最花费时间的 step 3 是公共部分,仅执行一次。根据不同的 F i F_i Fi,多次执行 step 4,输出同一个消息 m m m 的不同函数值 F i ( m ) F_i(m) Fi(m)。 ![在这里插入图片描述](https://file.jishuzhan.net/article/1738304328608780290/5488bc07c47d86de6a722157f0d77789.webp) 为了计算 multi-value 布尔函数 f : Z 2 r → Z 2 t f:\\mathbb Z_2\^r \\to \\mathbb Z_2\^t f:Z2r→Z2t,由于 T V F ( 1 ) TV_F\^{(1)} TVF(1) 范数的约束,\[CIM19\] 将它分解为多个函数 f 1 , ⋯ f t : Z 2 r → Z 2 f_1,\\cdots f_t: \\mathbb Z_{2\^r} \\to \\mathbb Z_2 f1,⋯ft:Z2r→Z2 其中 f i f_i fi 的 domain 是整环 Z s , s = 2 r \\mathbb Z_s,s=2\^r Zs,s=2r,range 是整环 Z q , q = 2 \\mathbb Z_q,q=2 Zq,q=2,从而有 ∥ T V F ( 1 ) ∥ 2 2 ≤ 2 r \\\| TV_F\^{(1)} \\\|_2\^2 \\le 2\^r ∥TVF(1)∥22≤2r 为了方便布尔值和整环之间的转换 ϕ : ( m 0 , ⋯   , m r − 1 ) ∈ Z 2 r ↦ m ∈ Z 2 r \\phi: (m_0,\\cdots,m_{r-1})\\in \\mathbb Z_2\^r \\mapsto m \\in \\mathbb Z_{2\^r} ϕ:(m0,⋯,mr−1)∈Z2r↦m∈Z2r,以及为了计算**任意的布尔函数** ,\[CIM19\] 将 m ∈ Z 2 r m \\in \\mathbb Z_{2\^r} m∈Z2r 缩放为 m / 2 r + 1 ∈ \[ 0 , 0.5 ) m/2\^{r+1} \\in \[0,0.5) m/2r+1∈\[0,0.5) 加密在 TFHE 密文中(**MSB 强制为零** ),同时把 m i ∈ Z 2 m_i \\in \\mathbb Z_2 mi∈Z2 缩放为 m i / 2 r + 1 m_i/2\^{r+1} mi/2r+1,从而实现 PBS 的输入输出之间的连接。 ![在这里插入图片描述](https://file.jishuzhan.net/article/1738304328608780290/0982e3f59c569bd309aeb53e5efce086.webp) 对于 `6-bits to 6-bits` PBS,此方案的计算时间为 `1.57 秒`(相较于 Gate PBS 的 `10 ms` 简直太慢了吧)。 ## Combine PBS 随着 LUT 的精度提高(相位空间 Z q \\mathbb Z_q Zq,编码消息空间 Z t \\mathbb Z_t Zt),为了留出足够的纠错冗余(区间长度 Δ ≈ q / t \\Delta \\approx q/t Δ≈q/t 大于噪声规模),不得不增大 ACC 的维度。 ![在这里插入图片描述](https://file.jishuzhan.net/article/1738304328608780290/baa22d3b450a376e3e155c8e0c8f9df4.webp) \[GBA21\] 提出可以**将单个高精度 LUT 切分为多个很小的 LUT**,迭代地计算出最终的查表结果。因为只需要 PBS 支持低精度 LUT 即可,从而避免参数规模的扩大。 他们给出了两种组合方法:树型组合(PBS 结果是 LUT)、链式组合(PBS 结果是 Seletor) ![在这里插入图片描述](https://file.jishuzhan.net/article/1738304328608780290/bfb78b2fd8e5f125e28bdfb0dd0b08c6.webp) ### Tree-based PBS 设置数字分解基底 B B B,让 ACC 仅支持 t = B t=B t=B 的明文空间(LUT 的各个数值在 RLWE 系数上连续重复 N / B N/B N/B 次), * 输入数据 m ∈ Z B d m \\in \\mathbb Z_{B\^d} m∈ZBd,将它分解为 ∑ i m i ⋅ B i \\sum_i m_i\\cdot B\^i ∑imi⋅Bi,分别加密为 c i = L W E ( m i ) c_i=LWE(m_i) ci=LWE(mi) * 对于高精度函数 f : Z B d → Z B f: \\mathbb Z_{B}\^d \\to \\mathbb Z_B f:ZBd→ZB(并行 d d d 个函数),对应的 B d B\^d Bd-size LUT,将它**顺序拆分** 为 B d − 1 B\^{d-1} Bd−1 个区间,作为 B B B-size LUT * 易知各个 LUT 都以 m 0 m_0 m0 作为 Selector,因此执行 PBS 获得 B d − 1 B\^{d-1} Bd−1 个消息 f ( x 0 = m 0 , ⋯   ) f(x_0=m_0,\\cdots) f(x0=m0,⋯) 的 LWE 密文 * 将它们**顺序打包** 为 B d − 2 B\^{d-2} Bd−2 个 B B B-size LUT(通过 Functional Key-Switch),继续使用 m 1 m_1 m1 作为 Selector 执行 PBS,计算出 f ( x 0 = m 0 , x 1 = m 1 , ⋯   ) f(x_0=m_0,x_1=m_1,\\cdots) f(x0=m0,x1=m1,⋯) 的 LWE 密文 * 迭代执行,最终会输出 f ( m 0 , m 1 , ⋯   , m d − 1 ) f(m_0,m_1,\\cdots,m_{d-1}) f(m0,m1,⋯,md−1) 的 LWE 密文 注意到**第一层的各个 LUT 是明文列表** ,并且作用在相同的 m 0 m_0 m0 上,因此可以使用 \[CIM19\] 的 Multi-value PBS,仅执行一次盲旋转。但是**输出的 LUT 被加密在了 RLWE 内** (包含了 m 0 m_0 m0 的信息),因此 Test Vetor 作用到 ACC 上需要利用外积。因为电路自举太慢了,所以 \[GBA21\] 对于后续的计算不再使用 Multi-value PBS 技术,仅仅使用 TFHE 的方式挨个计算。 ![在这里插入图片描述](https://file.jishuzhan.net/article/1738304328608780290/7dbe0b172e9e5b231ee462a461045282.webp) 对于特殊结构的函数 f f f,它可能连续的小区间内的数值是**常数** 或者**线性函数** ,从而某些小的 LUT 可以被简化掉(但是泄露的电路信息,不过不会泄露消息本身)。对于 **Sigmoid**,它的两端基本是常数(简单设置常数密文),中间基本是线性函数(利用 LWE 的线性同态),其余的部分是非线性的(利用 PBS 计算)。 ![在这里插入图片描述](https://file.jishuzhan.net/article/1738304328608780290/a6d010335b2dc20111317c59f283bdb3.webp) ### Chain-based PBS 上述的 Tree-based PBS 是通用结构,但是噪声增长比较大。\[GBA21\] 推广了之前某个工作的整数比较算法,给出了链式组合结构: * 依旧是将 m m m 分解为 m i m_i mi,将高精度 LUT 使用某种复杂的方式分解为 d d d 个很小的 LUT * 首先 c 0 c_0 c0 执行 PBS 获得 c ˉ \\bar c cˉ,将它和 c 1 c_1 c1 做线性组合后,被用作下一个 LUT 的 Selector(而非 LUT),利用这些 Selector 迭代处理各个 LUT 它的噪声更小,但是更加适合 **carry-like logics**(例如:比较、算术加法、算术乘法)。 \[GBA21\] 并没有详细描述 Chain-based PBS 的具体流程。高精度 LUT 到底怎么分解的?Selector 的线性组合又是怎么确定的?完全没有写。 ### Improving building blocks #### Base-aware Key-Switching 在 Tree-based PBS 中,需要使用 Functional Key-Switch,将上一层的 B B B 个 LWE 打包为一个 ACC 密文。由于 ACC 中需要留足冗余区间,导致其中**包含大量的连续重复的系数**,因此这个特殊的 KS 过程可以被专门优化: ![在这里插入图片描述](https://file.jishuzhan.net/article/1738304328608780290/132cf1b2bb1ac7fed00113f23989e453.webp) 使用空间换时间的策略,\[GBA21\] 将 KS 的规模扩大了 B B B 倍,但是同态线性解密时,不再需要计算较慢的多项式数乘,而是简单的内积(常数多项式数乘的加和)。 #### Multi-Value Extract 此外为了降低数乘的噪声,因为**加和的方差** 为 σ x + y 2 = σ x 2 + σ y 2 + 2 ρ σ x σ y \\sigma_{x+y}\^2 = \\sigma_x\^2+\\sigma_y\^2+2\\rho\\sigma_x\\sigma_y σx+y2=σx2+σy2+2ρσxσy,其中 ρ \\rho ρ 是相关系数。如果计算数乘, * 给定一个 X X X 它是 x x x 附近的随机变量,那么 ρ = 1 \\rho=1 ρ=1,从而 σ n x 2 = n 2 σ x 2 \\sigma_{nx}\^2=n\^2\\sigma_x\^2 σnx2=n2σx2 * 如果给定 X 1 , ⋯   , X n X_1,\\cdots,X_n X1,⋯,Xn 它们是 x x x 附近的独立变量,则有 ρ = 0 \\rho=0 ρ=0,就仅是 σ n x 2 = n σ x 2 \\sigma_{nx}\^2=n\\sigma_x\^2 σnx2=nσx2 根据 TFHE 的启发式假设,ACC 的各个系数使用了独立的高斯噪声,因此我们可以将 x x x 对应区间的 b b b 项加起来,作为数乘 b x bx bx 的结果。这要求噪声规模更小一点,从而 PBS 输出的 ACC 常数项附近的半径 b / 2 b/2 b/2 区间内都加密相同的数值。 ![在这里插入图片描述](https://file.jishuzhan.net/article/1738304328608780290/a84e0f052e8bf05eb11ece7fef6b9961.webp) 不幸的是,\[GBA21\] 在实验中**并没有观察到**噪声增长从平方降低而线性,并且实际噪声水平比 TFHE 估计的还要偏大。因此系数之间存在的相关性,事实上会影响到自举过程。

相关推荐
新讯网13 分钟前
PinkWallet如何打通数字资产与传统金融的最后一公里
金融·区块链
赵青临的辉5 小时前
基础数学:线性代数与概率论在AI中的应用
人工智能·线性代数·概率论
weixin_387002157 小时前
使用GmSSL v3.1.1实现SM2证书认证
算法·安全·区块链·密码学·ssl
学术交流16 小时前
2025年金融创新、区块链与信息技术国际会议(FRCIT 2025 2025)
论文阅读·金融·区块链·论文笔记
CryptoRzz1 天前
印度尼西亚数据源对接技术指南
开发语言·python·websocket·金融·区块链
Alessio Micheli2 天前
基于几何布朗运动的股价预测模型构建与分析
线性代数·机器学习·概率论
HappyAcmen2 天前
线代第二章矩阵第八节逆矩阵、解矩阵方程
笔记·学习·线性代数·矩阵
Alessio Micheli2 天前
奇怪的公式
笔记·线性代数
kngines2 天前
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.3 风险指标可视化监控
postgresql·数据分析·区块链·逾期率·不良贷款率·客户信用评分
拾忆-eleven3 天前
区块链+农业:从田间到餐桌的信任革命
区块链·智能合约