Leveled mode of TFHE

参考文献:

  1. [CGGI16] Chillotti I, Gama N, Georgieva M, et al. Faster fully homomorphic encryption: Bootstrapping in less than 0.1 seconds[C]//Advances in Cryptology–ASIACRYPT 2016: 22nd International Conference on the Theory and Application of Cryptology and Information Security, Hanoi, Vietnam, December 4-8, 2016, Proceedings, Part I 22. Springer Berlin Heidelberg, 2016: 3-33.
  2. [CGGI17] Chillotti I, Gama N, Georgieva M, et al. Faster packed homomorphic operations and efficient circuit bootstrap** for TFHE[C]//International Conference on the Theory and Application of Cryptology and Information Security. Cham: Springer International Publishing, 2017: 377-408.
  3. [CGGI20] Chillotti I, Gama N, Georgieva M, et al. TFHE: fast fully homomorphic encryption over the torus[J]. Journal of Cryptology, 2020, 33(1): 34-91.
  4. [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.
  5. 加权自动机:在 Semirings 上建模-CSDN博客
  6. GSIS/GLWE & LUT/Automata & Blind Rotate-CSDN博客
  7. Multi-value & Large-LUT PBS-CSDN博客

文章目录

  • Random Functions via LUT
    • Horizontal Packing
    • Vertical Packing
  • Arithmetic Operations via WFA
    • MAX
    • Multiplication
  • TBSR counter for Multi-addition
    • BSR
    • TBSR encryption
  • Combining leveled with bootstrapping

Random Functions via LUT

正如 [GINX16] 的设计,任意的函数 f : B d → T s f:\mathbb B^d \to \mathbb T^s f:BdTs 可以表示为 s s s 个长度 2 d 2^d 2d 的列表,也就是 [ f j ( x ) ] j ∈ [ s ] , x ∈ [ 2 d ] [f_j(x)]_{j \in [s],\, x \in [2^d]} [fj(x)]j[s],x[2d]。我们可以利用 Mux-based OBDD,根据 x = ∑ i x i 2 i x=\sum_i x_i2^i x=ixi2i 做二叉树查询获得 f j ( x ) f_j(x) fj(x) 的值。

[CGGI17] 提出了两种打包方式,

  • 水平打包(Horizontal packing):它仅利用 CMux Gate,可以并行执行 N N N 个相同 x x x 的 LUT 的查询
  • 垂直打包(vertical packing):它同时使用 CMux Gate 以及 Blind Rotation,加速了单个 LUT 的查询

假设 σ j , h \sigma_{j,h} σj,h 是子函数 f j , j ∈ [ s ] f_j,j \in [s] fj,j[s] 在位置 h ∈ [ 2 d ] h \in [2^d] h[2d] 的数值,如图所示

在这里插入图片描述

Horizontal Packing

因为子函数都是在相同的 x x x 上求值的,所以可以使用同一个控制位。

我们固定 h ∈ [ 2 d ] h \in [2^d] h[2d],并行加密各个 f j , j ∈ [ s ] f_j, j\in [s] fj,j[s] 的 LUT,
d h ∈ R L W E K ( ∑ j σ j , h X j ) d_h \in RLWE_K\left(\sum_j \sigma_{j,h} X^j\right) dhRLWEK(jσj,hXj)
接着使用 x i ∈ B x_i \in \mathbb B xiB 作为控制位,其密文是:
C i ∈ R G S W K ( x i ) C_i \in RGSW_K(x_i) CiRGSWK(xi)
利用 CMux Gate 运算, c t ′ = ( 1 − C ) ⊠ c t 0 + C ⊠ c t 1 ct' = (1-C) \boxtimes ct_0 + C \boxtimes ct_1 ct=(1C)ct0+Cct1,去执行 OBDD 挑选出 d h d_h dh 的值,它就包含了 f j ( x ) , j ∈ [ s ] f_j(x),j\in [s] fj(x),j[s] 的结果,最后分别提取出来。

一般来说 s ≤ N s \le N sN,因此只需要单个 RLWE 密文就可以打包 ∑ j σ j , h X j \sum_j \sigma_{j,h} X^j jσj,hXj,但是并行度也只有 s s s。如果 s = k N s=kN s=kN,那么就需要 k k k 个 RLWE 密文,并行度是最大的 N N N

Vertical Packing

这个技术可用于较长的 LUT 的查询。假设 δ = log ⁡ N \delta=\log N δ=logN,我们将长度 2 d 2^d 2d 的 LUT 顺序划分为 2 d − δ = 2 d / N 2^{d-\delta}=2^d/N 2dδ=2d/N 个长度为 N = 2 δ N=2^\delta N=2δ 的 Box。易知这些 Box 的索引是高位 ( x d − 1 , ⋯ , d δ ) (x_{d-1},\cdots,d_{\delta}) (xd1,,dδ),而 Box 内部的索引是低位 ( x δ − 1 , ⋯ , x 0 ) (x_{\delta-1},\cdots,x_0) (xδ1,,x0)

我们固定 j ∈ [ s ] j \in [s] j[s],利用 2 d / N 2^d/N 2d/N 个 RLWE 密文加密各个 Box,
d j , k ∈ R L W E K ( ∑ i σ j , i + N k X i ) d_{j,k} \in RLWE_K(\sum_i \sigma_{j,\,i+Nk} X^i) dj,kRLWEK(iσj,i+NkXi)
使用高位 ( x d − 1 , ⋯ , d δ ) (x_{d-1},\cdots,d_{\delta}) (xd1,,dδ) 作为选择 Box 的控制位,使用低位 ( x δ − 1 , ⋯ , x 0 ) (x_{\delta-1},\cdots,x_0) (xδ1,,x0) 作为旋转 Box 的控制位。无论是 OBDD 还是 Rotation,其控制位的密文都是:
C i ∈ R G S W K ( x i ) C_i \in RGSW_K(x_i) CiRGSWK(xi)
先 OBDD 查询出 f j ( x ) f_j(x) fj(x) 所在的 Box,再 Rotate 将它旋转到常数项,提取出来。

在这里插入图片描述

它和 [GBA21] 的区别是:

  1. Vertical Packing 将高精度 LUT 顺序拆分为多个 LUT,按照二进制,从高位到低位,使用 Leveled GSW 计算 CMux-based OBDD,选择出某一个 LUT,最后执行一次 PBS 得到计算结果
  2. Combine PBS 也将高精度 LUT 顺序拆分为多个 LUT,按照 t t t 进制,从低位到高位,使用 PBS 计算出各个 LUT 的值,再用 Pri-KS 组合成若干个新的 LUT,继续迭代 PBS 直到得到最终结果

Arithmetic Operations via WFA

对于布尔运算,基于 Mux Gate 的有限自动机(FA)就足够了。但是对于多比特的算术运算,则需要加权的有限自动机(WFA)。

在这里插入图片描述

在 [CGGI17] 中,固定 Σ = B \Sigma=\mathbb B Σ=B,让每一个 word 都仅对应单个路径(也就是 det-WFA),所有的 words 都是可接受的(一条从始到终的路径)。半环加法是无用的,而半环乘法是 ( S , ⊗ ) = ( T N [ X ] , + ) (S,\otimes) = (\mathbb T_N[X], +) (S,)=(TN[X],+)

对于某种算术运算,构建对应的 det-WFA,使得路径重量分别为 w ( σ ) = f ( x = σ ) w(\sigma) = f(x=\sigma) w(σ)=f(x=σ)

  • 对于每个状态 q ∈ Q q \in Q qQ,在时刻 j j j 的值解密到 RLWE 密文 c j , q c_{j,q} cj,q

  • 给定一个单词 σ = σ 0 ⋯ σ d − 1 ∈ B d \sigma=\sigma_0\cdots\sigma_{d-1} \in \mathbb B^d σ=σ0σd1Bd,每个字母加密到 RGSW 密文 C i C_i Ci

  • 从时刻 d d d 向前回溯,初始设置 c d , q = R L W E ( 0 ) c_{d,q}=RLWE(0) cd,q=RLWE(0)

  • 读取了字母 σ j \sigma_j σj,假设 det-WFA 中存在一对 transitions,形如 ( q , 0 , v 0 , q 0 ) (q,0,v_0,q_0) (q,0,v0,q0) ( q , 1 , v 1 , q 1 ) (q,1,v_1,q_1) (q,1,v1,q1),那么计算
    c j , q = C M u x ( C j , c j + 1 , q 0 + R L W E ( v 0 ) , c j + 1 , q 1 + R L W E ( v 1 ) ) c_{j,q} = CMux(C_j,\, c_{j+1,q_0}+RLWE(v_0),\, c_{j+1,q_1}+RLWE(v_1)) cj,q=CMux(Cj,cj+1,q0+RLWE(v0),cj+1,q1+RLWE(v1))

  • 一直回溯到 c 0 , I c_{0,I} c0,I,我们就得到了 w ( σ ) w(\sigma) w(σ) 的值

MAX

对于 x = ∑ i x i 2 i x=\sum_i x_i2^i x=ixi2i y = ∑ i y i 2 i y=\sum_i y_i2^i y=iyi2i,从高到低依次比较各个比特,

在这里插入图片描述

Multiplication

构建 Schoolbook 算法,使用 states 来追踪 partial sum,使用 transitions 来修改这些 sums,

在这里插入图片描述

TBSR counter for Multi-addition

为了更高效的计算 multi-addition,[CGGI17] 提出了 BSR(Bit Sequence Representation)计数器,它可以计算:比特提取、自增、整除。

BSR

二的幂次分圆环的维度是 N N N,设置 p = log ⁡ N p=\log N p=logN,我们让 B j , k ( l ) , j ∈ [ 0 , p ] , k , l ∈ Z B_{j,k}^{(l)}, j \in [0,p],k,l \in \mathbb Z Bj,k(l),j[0,p],k,lZ 表示整数 k + l k+l k+l 的第 j j j 比特(little-endian signed binary representation)。那么,

  • B 0 ( 0 ) = ( 0 , 1 , 0 , 1 , ⋯ ) B_0^{(0)}=(0,1,0,1,\cdots) B0(0)=(0,1,0,1,) 是 2-periodic 序列(周期为 2)
  • B 1 ( 0 ) = ( 0 , 0 , 1 , 1 , ⋯ ) B_1^{(0)}=(0,0,1,1,\cdots) B1(0)=(0,0,1,1,) 是 4-periodic 序列,其他的类似
  • B j ( l ) B_j^{(l)} Bj(l) 就是 B j ( 0 ) B_j^{(0)} Bj(0) 平移了 l l l 位置,不改变周期
  • 因此, B j ( l ) B_j^{(l)} Bj(l) 都是 2 j 2^j 2j-antiperiodic 序列(周期为 2 j + 1 2^{j+1} 2j+1,前一半和后一半反对称)

易知,
( B 0 , k ( l ) , B 1 , k ( l ) , ⋯ , B p , k ( l ) ) 2 = [ l + k ] 2 N ∈ [ − N , N − 1 ] (B_{0,k}^{(l)}, B_{1,k}^{(l)}, \cdots, B_{p,k}^{(l)})_2 = [l+k]_{2N} \in [-N,N-1] (B0,k(l),B1,k(l),,Bp,k(l))2=[l+k]2N[N,N1]
我们将 p p p 个(截断长度 N N N 的)周期的比特流记为 B S R ( l ) : = [ B 0 ( l ) , ⋯ , B p ( l ) ] ∈ { 0 , 1 } p × N BSR(l):=[B_0^{(l)}, \cdots, B_p^{(l)}] \in \{0,1\}^{p\times N} BSR(l):=[B0(l),,Bp(l)]{0,1}p×N

提取

  1. 第一列的 p p p 个比特就表示了整数 [ l ] 2 N [l]_{2N} [l]2N

自增

  1. 给定 B S R ( l ) = [ u 0 , ⋯ , u p ] BSR(l) = [u_0,\cdots,u_p] BSR(l)=[u0,,up],其中 l ∈ [ 0 , N − 1 ] l \in [0,N-1] l[0,N1]
  2. 设置 v j , k = u j , k + i v_{j,k} = u_{j,k+i} vj,k=uj,k+i,也就是序列 u j u_j uj 左移 i i i
  3. 输出 B S R ( l + i ) = [ v 0 , ⋯ , v p ] BSR(l+i) = [v_0,\cdots,v_p] BSR(l+i)=[v0,,vp]

整除

  1. 给定 B S R ( l ) = [ u 0 , ⋯ , u p ] BSR(l) = [u_0,\cdots,u_p] BSR(l)=[u0,,up],其中 l ∈ [ 0 , N − 1 ] l \in [0,N-1] l[0,N1]
  2. 设置 v j , k = u j + 1 , 2 k , j ∈ [ 0 , p − 1 ] v_{j,k} = u_{j+1,2k}, j \in [0,p-1] vj,k=uj+1,2k,j[0,p1],也就是删除最低比特,其他比特简单右移
  3. 设置 v p , k = 0 , k ∈ [ 0 , N / 2 ] v_{p,k}=0, k \in [0,N/2] vp,k=0,k[0,N/2],因为 ⌊ l / 2 ⌋ < N / 2 \lfloor l/2 \rfloor < N/2 l/2<N/2,于是 ⌊ l / 2 ⌋ + k \lfloor l/2 \rfloor+k l/2+k 的符号位一定是零
  4. 设置 v p , k = u p , 2 ( k − N / 2 ) , k ∈ [ N / 2 , N − 1 ] v_{p,k}=u_{p,2(k-N/2)},k \in [N/2,N-1] vp,k=up,2(kN/2),k[N/2,N1],因为 u p u_p up 先是 N − l N-l Nl 0 0 0 再是 l l l 1 1 1,而目标 v p v_p vp 应该是 N − ⌊ l / 2 ⌋ N-\lfloor l/2 \rfloor Nl/2 0 0 0 再是 ⌊ l / 2 ⌋ \lfloor l/2 \rfloor l/2 1 1 1,恰好是对应的
  5. 输出 B S R ( ⌊ l / 2 ⌋ ) = [ v 0 , ⋯ , v p ] BSR(\lfloor l/2 \rfloor) = [v_0,\cdots,v_p] BSR(⌊l/2⌋)=[v0,,vp]

如图所示:

在这里插入图片描述

在同态运算下,[CGGI17] 将 BSR 的低 p p p 位的序列加密为 μ i = ∑ k 1 / 2 ⋅ u j , k X k \mu_i = \sum_k 1/2\cdot u_{j,k}X^k μi=k1/2uj,kXk,符号位的序列加密为 μ p = ∑ k ( 1 / 2 ⋅ u p , k − 1 / 4 ) X k \mu_p = \sum_k (1/2\cdot u_{p,k}-1/4)X^k μp=k(1/2up,k1/4)Xk

整除运算为:

在这里插入图片描述

TBSR encryption

将 BSR 序列加密到 RLWE 密文中,同态地计算 BSR 上定义的运算。[CGGI17] 要求 l ∈ [ 0 , N − 1 ] l \in [0,N-1] l[0,N1],但是原本 BSR 的运算是 ( m o d 2 N ) \pmod{2N} (mod2N) 的,这是因为 ( X N + 1 ) (X^N+1) (XN+1) 导致反循环,他们只用一半的空间来避免。

在这里插入图片描述

利用它,我们可以搭建出 multi-addition 或者 multiplication 的教科书算法,

在这里插入图片描述

Combining leveled with bootstrapping

因为 RGSW 和 RLWE 的外积结果是 RLWE,而 RLWE 再提取为 LWE,因此我们需要将 LWE 提升到 RGSW 的手段。这需要 circuit bootstrapping,也就是对组成 RGSW 密文的那些 RLWE 所依赖的 LWE 分别自举,然后使用 Priv-KS 和 Pub-KS 转化为 RLWE 并组装成 RGSW 密文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/776672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌浏览器驱动Chromedriver(114-120版本)文件以及驱动下载教程

ChromeDriver 官方网站 GitHub || GoogleChromeLabs/chrome-for-testing Chrome Driver 113-125_JSONChrome for Testing availability 123-125 zip 白月黑羽 Python基础 | 进阶 | Qt图形界面 | Django| 自动化测试 | 性能测试 |JS语言 | JS前端 |原理与安装

蓝桥杯嵌入式学习笔记(6):IIC程序设计

目录 前言 1. IIC基本原理 2. 电路原理 3. 代码编程 3.1 预备工作 3.2 AT24C02写读功能编写 3.2.1 AT24C02写操作实现 3.2.2 AT24C02读操作实现 3.3 MCP4017写读功能编写 3.3.1 MCP4017写操作实现 3.3.2 MCP4017读操作实现 3.4 main.c编写 3.4.1 头文件引用 3.4.…

蓝桥杯每日一题(floyd算法)

4074 铁路与公路 如果两个城市之间有铁路t11&#xff0c;公路就会t2>1,没铁路的时候t1>1,公路t21。也就是公路铁路永远都不会相等。我们只需要计算通过公路和铁路从1到n最大的那个即可。 floyd是直接在数组上更新距离。不需要新建dis数组。另外一定要记得把邻接矩阵初始…

【数据结构】链表习题之环形链表的约瑟夫问题

&#x1f451;个人主页&#xff1a;啊Q闻 &#x1f387;收录专栏&#xff1a;《数据结构》 &#x1f389;道阻且长&#xff0c;行则将至 前言 今天这道题目时牛客上的题目&#xff0c;名为环形链表的约瑟夫问题&#xff0c;很有趣的的一道题目 环形链表的约瑟…

vue中实现超出一行 展开和收起的功能

html中: <divclass="txttype"ref="txttype"style="margin-bottom: 6px":class="hidetext == true ? hidetext : "><div style="width: 96%"><el-tagtype="info"style="margin-right: 10px&…

SpringBoot在线电影订票系统实战开发教程及源码之手把手教你做一个在线电影订票系统(带参考论文)

今天发布的是一款基于SpringBoot脚手架开发的在线电影订票系统实战开发教程和完整源码&#xff0c;这里强调一下&#xff1a;本系统基于springboot脚手架开发&#xff0c;如果还没学习脚手架的话先去学习脚手架&#xff0c;不然学不懂这个电影订票系统哦&#xff0c;重要的事说…

2024河北石家庄矿业矿山展览会|河北智慧矿山展会|河北矿博会

2024中国&#xff08;石家庄&#xff09;国际矿业博览会      时间&#xff1a;2024年7月4-6日 地点&#xff1a;石家庄国际会展中心.正定      随着全球经济的持续增长和矿产资源需求的不断攀升&#xff0c;矿业行业正迎来前所未有的发展机遇。作为矿业领域的盛会&…

蓝桥OJ3510 冶炼金属(暴力+二分)

冶炼金属 学习了b站Turing_Sheep的思路 一、暴力模拟 思路&#xff1a; b[i] a[i] / v b[1] a[1] / v b[2] a[2] / v .... b[n] a[n] / v 以上列举中v要满足所有的记录&#xff0c;但凡一个记录不满足&#xff0c;v就不满足题意。 从小到大列举v,设置v最大为1e6 设置一个标…

Codeup_4054:问题 B: DFS or BFS?

目录 Problem DescriptionInputOutputSample InputSample Output原题链接解题思路经验总结代码实现&#xff08;C&#xff09; Problem Description 说好了&#xff0c;题目不黑人。 给你一个8*8的矩阵&#xff0c;你的初始位置是左下角方格&#xff08;用’U’表示&#xff…

如何用Flask中的Blueprints构建大型Web应用

本文分享自华为云社区《构建大型Web应用Flask中的Blueprints指南》&#xff0c;作者&#xff1a; 柠檬味拥抱。 什么是Blueprints&#xff1f; 什么是Blueprints&#xff1f; Blueprints是Flask中的一种模式&#xff0c;用于将应用程序分解为可重用的模块。每个蓝图实际上是…

ADB 安装与操作命令详解及用法大全

目录 ADB定义 ADB安装 Windows系统&#xff1a; macOS系统&#xff1a; Linux系统&#xff1a; ADB常用命令 ADB定义 ADB&#xff08;Android Debug Bridge&#xff09;是一个多功能命令行工具&#xff0c;它允许开发者与连接的Android设备或模拟器进行通信。 ADB提供了…

时序数据库IoTDB:功能详解与行业应用

一文读懂时序数据库 IoTDB。 01 为什么需要时序数据库 解释时序数据库前&#xff0c;先了解一下何谓时序数据。 时序数据&#xff0c;也称为时间序列数据&#xff0c;是指按时间顺序记录的同一统计指标的数据集合。这类数据的来源主要是能源、工程、交通等工业物联网强关联行业…

蓝牙耳机哪个品牌的好?2024年精选硬核机型推荐

​随着时代的进步和潮流的演进&#xff0c;人们对蓝牙耳机的需求已不再局限于音质&#xff0c;舒适度也成为了关键考量。下面&#xff0c;我将为你推荐五款既舒适又性能出色的蓝牙耳机。 一、如何挑选蓝牙耳机&#xff1f;&#xff08;重点码住&#xff09; 1.选择知名大品牌&…

【PostgreSQL】- 1.1 在 Debian 12 上安装 PostgreSQL 15

官方说明参考 &#xff08;原文 PostgreSQL&#xff1a;Linux 下载 &#xff08;Debian&#xff09;&#xff09; 默认情况下&#xff0c;PostgreSQL 在所有 Debian 版本中都可用。但是&#xff0c; Debians 的稳定版本“快照”了特定版本的 PostgreSQL 然后在该 Debian 版本的…

1.4.1 着色器

着色器&#xff08;Shader&#xff09;是运行在GPU上的小程序&#xff0c;这些小程序为图形渲染管线的某个特定部分而运行&#xff0c;从基本意义上来说&#xff0c;着色器只是一种把输入转化为输出的程序。 一、着色器类QOpenGLShaderProgram QOpenGLShaderProgram是Qt中对着…

关于vite+vue3引入tailwind框架的正确方式

首先可以明确的知道,只按照官网的配置是会导致样式不加载或者加载不生效等问题的。 正确的处理方案 1.首先按照官网的指示安装 npm install -D tailwindcss postcss autoprefixer npx tailwindcss init2.然后项目根目录创建postcss.config.js文件 module.exports {plugins: …

如何部署cobbler批量安装的服务端

cobbler批量安装 cobbler简介 Cobbler是一个Linux服务器安装的服务&#xff0c;可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机&#xff0c;同时还可以管理DHCP&#xff0c;DNS等。 Cobbler可以使用命令行方式管理&#xff0c;也提供了基于Web的界面管理工…

C++ 迭代器与反向迭代器

目录 一&#xff0c;什么是迭代器 1&#xff0c;定义 2&#xff0c;迭代器的设计思维 3&#xff0c;迭代器种类 二&#xff0c;迭代器与容器 1&#xff0c;容器中的迭代器 2&#xff0c;迭代器失效问题 三&#xff0c;迭代器的类型萃取&#xff08;traits&#xff09; …

Python函数、参数变量详细介绍

Python函数概述 在Python中&#xff0c;函数是组织好的、可重复使用的代码块&#xff0c;用于实现单一或相关联功能。函数能提高应用的模块性和代码的重复利用率。除了内建函数外&#xff0c;Python还支持用户自定义函数。 定义函数 自定义函数使用 def 关键字开始定义。函数…

sdwan本地组网分析

随着数字化转型的深入发展&#xff0c;企业对网络架构的要求也不断提高。SDWAN&#xff08;软件定义广域网&#xff09;作为一种创新的网络技术&#xff0c;正在逐渐受到企业的关注和采用。SDWAN本地组网技术可以帮助企业快速搭建高效稳定的企业网络架构&#xff0c;提升企业的…