迭代的 CKKS 高精度自举

参考文献:

  1. [KDE+23] Kim A, Deryabin M, Eom J, et al. General bootstrapping approach for RLWE-based homomorphic encryption[J]. IEEE Transactions on Computers, 2023.
  2. [BCC+22] Bae Y, Cheon J H, Cho W, et al. Meta-bts: Bootstrap** precision beyond the limit[C]//Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security. 2022: 223-234.

文章目录

  • BTS for CKKS
  • Meta-BTS

BTS for CKKS

目前存在多种 CKKS 自举算法,它们的目标是将密文 c t ( s ) = m ∈ R q ct(s)=m \in R_q ct(s)=mRq 转换为 c t ′ ( s ) = m ′ ∈ R Q ′ ct'(s)=m' \in R_{Q'} ct(s)=mRQ,使得 Q ′ > q Q' > q Q>q 以及 ∥ m − m ′ ∥ ∞ \|m-m'\|_\infty mm 误差很小。假设 q ∣ Q q|Q qQ,那么易知 c t ( s ) = m + q I ∈ R Q ct(s) = m+qI \in R_Q ct(s)=m+qIRQ,从而一个关键运算就是同态模约简。注意 CKKS 自举的目标是提升密文模数,而非减小噪声规模;事实上 CKKS 自举会引入额外的噪声,造成一定的精度损失。

  • [CHKKS18] 第一次给出了 CKKS 自举算法,它先用三角函数近似模约简,接着再用 Taylor 级数去近似三角函数,框架为:

    1. StC, 将消息从明文槽切换到系数上,为模数提升做准备
    2. ModRaise, 执行模数提升,获得 m + q I ∈ R Q m+qI \in R_Q m+qIRQ
    3. CtS, 将消息从系数切换回明文槽,为模约简做准备
    4. EvalMod, 使用多项式近似模约简函数,获得 m ′ ∈ R Q ′ m' \in R_{Q'} mRQ
  • [CCS19] 和 [HK20] 采用相同的思路,但是将 Taylor 级数替换为了 Chebyshev 插值,降低了近似多项式的度数,所需的乘法深度降低

  • [LLK+21] 和 [JM22] 将三角函数近似替换为 Inverse Sine 以及 Sine 级数,降低了三角函数的近似误差

  • [JM20] 和 [LLK+22] 直接对模约简做多项式近似,分别使用 Lagrange 插值以及最小二乘法,消除了中间的三角函数导致的近似误差,从而提高自举的精度

  • [BMTH21] 提出了 double-hoisting BSGS 的矩阵乘算法,使得 RNS-CKKS 的 StC 和 CtS 的速度更快

  • [KDE+23] 使用 FHEW/TFHE 自举 CKKS,可以获得较高的自举精度。然而 FHEW/TFHE 很难兼容批处理技术,因此对于大规模数据的自举效率很低。

在很多应用场景中,需要计算乘法深度很大的高精度的浮点数运算,因此高精度的 CKKS 自举算法是必要的。然而,为了更高的自举精度,就要减小噪声和模数的比值,出于安全考量就必须提高环的维度。为了达到 100 比特的精度,最先进的 [LLK+22] 需要 N = 2 17 N=2^{17} N=217,并且明文是稀疏的;[KDE+23] 可以在较小规模的参数下实现较高的自举精度,但是计算性能很差。

Meta-BTS

[BCC+22] 提出可以将 BTS 作为黑盒,首先对输入的密文 c t ( s ) = m ∈ R q ct(s)=m \in R_q ct(s)=mRq 做一次自举来提升模数 c t ′ ( s ) = m + e ∈ R Q ′ ct'(s)=m+e \in R_{Q'} ct(s)=m+eRQ,可以计算出 [ c t ′ ( s ) ] q − c t ( s ) = e ∈ R q [ct'(s)]_q-ct(s)=e \in R_q [ct(s)]qct(s)=eRq通过对 Bootstrapping error 再迭代 k − 1 k-1 k1 次自举以消除它,从而提高自举的精度。在 OpenFHE 中提供了 k = 2 k=2 k=2 的实现,可以将自举精度加倍。

首先我们需要定义 BTS 的精度:令 CKKS 加密的消息 m ⃗ \vec m m 的范数上界是 2 r 2^r 2r,假设自举程序的噪声 e ⃗ \vec e e 的范数上界是 2 − n 2^{-n} 2n,那么这之间的 r + n r+n r+n 比特就是准确值。我们称 r = 0 r=0 r=0 的 BTS 是标准的,也就是 m ⃗ \vec m m 是范围 ( − 1 , 1 ) (-1,1) (1,1)带符号尾数,自举后的有效位数是 n n n 比特。指数信息是额外的明文标记,并不是缩放因子 Δ > 2 n \Delta > 2^n Δ>2n,后者将有限精度的尾数变成一个大整数。

在这里插入图片描述

BTS Standardization:假设某个 BTS 是非标准的,缩放因子 Δ \Delta Δ,输入界 2 r 2^r 2r,自举精度 r + n r+n r+n,那么只需要调整为 Δ ′ = Δ ⋅ 2 r \Delta'=\Delta \cdot 2^r Δ=Δ2r 用于消息编码,那么新的 BTS 就是标准的,且自举精度不变。

现在,我们已经有了一个标准 BTS 算法,可以用它构造出更高精度的 BTS,算法如下:

在这里插入图片描述

基础的 B T S ( 1 ) BTS^{(1)} BTS(1) 是标准的,并且它的自举精度 n n n 是已知的。我们不是输入 c t ( m , q ) ct(m,q) ct(m,q),而是输入 Level 更高的密文 c t ( 2 n m , 2 n q ) ct(2^n m, 2^n q) ct(2nm,2nq),其中 ∥ m ∥ ∞ < 1 \|m\|_\infty<1 m<1,然后对缩放 2 n 2^n 2n 后的密文执行 BTS 接着乘以 2 n 2^n 2n 得到 c t 3 ct_3 ct3,这些操作使得我们可以获得加密了放大 2 n 2^n 2n 倍的自举噪声 2 − 1 e 1 2^{-1}e_1 21e1 的密文 c t 5 ct_5 ct5,其中压倒性概率 ∥ e 1 ∥ ∞ < 1 \|e_1\|_\infty < 1 e1<1,假设舍入噪声很小 ∥ 2 n e r s + e 1 ∥ ∞ < 1 \|2^ne_{rs}+e_1\|_\infty<1 2ners+e1<1,于是我们就可以对 c t 5 ct_5 ct5 应用 B T S ( 1 ) BTS^{(1)} BTS(1) 提升它的模数到和 c t 3 ct_3 ct3 相同,从而消除了噪声 e 1 e_1 e1(但添加了第二次 BTS 的噪声 2 − n e 2 2^{-n}e_2 2ne2)。

算法执行过程中密文的变化:

在这里插入图片描述

容易将上述的 BTS 推广到任意的 k ≥ 2 k \ge 2 k2,得到精度为 k n kn kn 的自举算法。我们利用 B T S ( 1 ) BTS^{(1)} BTS(1) 搭建出的 B T S ( k ) BTS^{(k)} BTS(k) 作为黑盒去自举密文,再用 B T S ( 1 ) BTS^{(1)} BTS(1) 对前者的自举噪声继续自举以消除它,就可以搭建出精度更高的 B T S ( k + 1 ) BTS^{(k+1)} BTS(k+1)

在这里插入图片描述

注意到输入密文的模数从 q q q 提升到了 2 k n ⋅ q ≤ Q r e m 2^{kn} \cdot q \le Q_{rem} 2knqQrem,因此固定参数的某个 B T S ( 1 ) BTS^{(1)} BTS(1) 它的迭代次数 k k k 存在上界。假设基础的 BTS 性能是 P E R F B T S ( 1 ) = ( n , Q r e m / q , t ) PERF_{BTS^{(1)}} = (n,Q_{rem}/q,t) PERFBTS(1)=(n,Qrem/q,t),那么迭代 k k k 次之后的性能为:
P E R F B T S ( k ) = ( k n ,    Q r e m 2 ( k − 1 ) n q , k t ) PERF_{BTS^{(k)}} = \left(kn,\,\, \frac{Q_{rem}}{2^{(k-1)n}q},kt\right) PERFBTS(k)=(kn,2(k1)nqQrem,kt)
迭代次数越多,那么自举精度越高,同时剩余的乘法深度也就越小。当自举后的乘法深度为 1 1 1 时就达到最高的自举精度,设置缩放因子为 Δ = Q r e m / 2 ( k − 1 ) n q \Delta={Q_{rem}}/{2^{(k-1)n}q} Δ=Qrem/2(k1)nq,三元秘密的重量为 h h h,则同态乘法的精度损失为 log ⁡ O ( N h ) \log O(\sqrt{Nh}) logO(Nh ),为了在无界运算中保持至少 k n kn kn 比特的精度,我们列出如下的不等式:
k n ≤ Δ − log ⁡ N h kn \le \Delta - \log\sqrt{Nh} knΔlogNh
最终可以得到 Meta-BTS 的自举精度上界:

在这里插入图片描述

与其他 CKKS-BTS 对比,Meta-BTS 可以将某个固定精度的自举算法转化为更高精度的自举,因此所需的参数规模更小。为达到相同的自举精度 n n n,可以将 n n n 切分为 n / k n/k n/k 的迭代,执行效率会更高。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java基础概念 7-计算机中的数据存储

目录 Java基础概念 7-计算机中的数据存储 计算机的存储规则 进制 十进制:0123456789 二进制:01 常见的进制 不同进制在代码中的表现形式 计算机为什么用二进制存储数据? 进制之间的转换 任意进制转十进制 公式: 系数*基数的权次幂 相加 二进制转十进制** 八进制转…

基于springboot+vue的智能无人仓库管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

Java电梯模拟升级版

Java电梯模拟升级版 文章目录 Java电梯模拟升级版前言一、UML类图二、代码三、测试 前言 在上一版的基础上进行升级&#xff0c;楼层采用享元模式进行升级&#xff0c;并对楼层对象进一步抽象 一、UML类图 二、代码 电梯调度器抽象类 package cn.xx.evevator;import java.ut…

cuda WSL2 无需单独安装

https://docs.nvidia.com/cuda/wsl-user-guide/index.html 这个写的很详细

正则化解决过拟合

拟合 蓝色的圈代表数据&#xff0c;红色的线和绿色的线分别代表我们学习到的曲线。 绿色曲线相对红色曲线更加平滑。绿色曲线才是我们想要的&#xff0c;红色曲线从某种程度上讲是过拟合的&#xff0c;可以从图上看到他的误差是很小的&#xff0c;每个点的误差都是很小很小的。…

纯css+html实现拟态开关按钮面板

适合智能家居的开关面板UI 参考&#xff1a;https://drams.framer.website/

网络聊天室

Ser.c #include<myhead.h> #define SER_IP "192.168.159.148" #define SER_PORT 6666//因为客户端发送给服务器的消息是不同类型&#xff0c;所以定义结构体比较方便 typedef struct msg_TYPE {char type; // L:登录  C:聊天  Q:退…

flowable的java class task,也叫服务任务

源码地址12级程序猿-新年正当红/flowable-ui和服务任务 启动flowable-ui-app 浏览器输入下面的地址 http://localhost:8080/flowable-ui/#/ 在服务任务这里设置java类的路径 com.dmg.flowabledemo.task.MyServiceTask 当请假任务完成之后&#xff0c;自动触发这个服务任务…

网络信息安全:nginx漏洞收集(升级至最新版本)

网络&信息安全&#xff1a;nginx漏洞收集&#xff08;升级至最新版本&#xff09; 一、风险详情1.1 nginx 越界写入漏洞(CVE-2022-41742)1.2 nginx 缓冲区错误漏洞(CVE-2022-41741)1.3 nginx 拒绝服务漏洞&#xff08;CNVD-2018-22806&#xff09; 二、nginx升级步骤 &…

奥壹oelove婚恋交友v10.0_10.1情感导师插件_商城插件SQL数据库导入升级方法

大家注意哈奥壹oelove的系统默认是不含情感导师插件和商城系统的&#xff0c;这两个插件需要再官方独立购买&#xff0c;有幸公司付钱购买了系统及两套商业插件&#xff0c;可以看我昵称找我注明CSDN我已经把数据库及模板文件提取出来了&#xff0c;先说下数据库把&#xff0c;…

基于Mindspore,通过Resnet50迁移学习实现猫十二分类

使用平台介绍 使用平台&#xff1a;启智AI协作平台 使用数据集&#xff1a;百度猫十二分类 数据集介绍 有cat_12_train和cat_12_test和train_list.txt train_list.txt内有每张图片所对应的标签 Minspore部分操作科普 数据集加载 Mindspore加载图片数据集就直接调整成这种…

uniapp H5 $el.querySelectorAll is not a function

在监听是否在可视区域遇到问题&#xff08;网页端&#xff09; 解决方案 <view class"container"> ...省略 业务代码... </view>参考 &#xff1a; https://blog.csdn.net/qq_18841969/article/details/134620559

狼人杀 (狼人) 个人理解玩法

今天 我们来说说 狼人杀游戏 每个板子都有的一个角色 狼人 因为 动物园板子 平民被换成了 羊驼 所以 狼人也是唯一一个所有板子都有的角色 狼人的技能非常简单 每天晚上 可以袭击一名玩家 如果没有特殊情况 被袭击的玩家天亮时会直接出局 特殊情况包括 比较典型的有 守卫的盾…

Matter 笔记1-环境准备,编译

不要远程登录Ubuntu输入以下命令&#xff0c;原因&#xff1a;ubuntu/linux上的http代理设置 1. 准备 1.1 工具 Ubuntu 22.04 LTSClash 里General的端口设置到ubuntu 的网络设置里 1.2 代码 这里使用芯科整理过的代码 git clone https://github.com/SiliconLabs/matter.…

Redis线程模型解析

引言 Redis是一个高性能的键值对&#xff08;key-value&#xff09;内存数据库&#xff0c;以其卓越的读写速度和灵活的数据类型而广受欢迎。在Redis 6.0之前的版本中&#xff0c;它采用的是一种独特的单线程模型来处理客户端的请求。尽管单线程在概念上似乎限制了其扩展性和并…

实验笔记之——Gaussian Splatting SLAM配置与测试

之前博客对基于3DGS的SLAM进行了调研 学习笔记之——3D Gaussian Splatting及其在SLAM与自动驾驶上的应用调研_3d gaussian splatting slam-CSDN博客文章浏览阅读3.2k次&#xff0c;点赞40次&#xff0c;收藏58次。论文主页3D Gaussian Splatting是最近NeRF方面的突破性工作&a…

腾讯云服务器运行yum检测超级慢问题

公司使用腾讯云服务器。最近买的几台服务器使用yum命令安装或 更新软件特别慢。如下图&#xff1a; 从图中看出网络速度极慢。 大约要等5-10分钟检测和更新配置完毕&#xff0c;进入到软件下载界面下载软件速度就快了。 琢磨了一下&#xff0c;连接慢并不是连接不上。查看yum…

第 125 场 LeetCode 双周赛题解

A 超过阈值的最少操作数 I 排序然后查找第一个大于等于 k 的元素所在的位置 class Solution { public:int minOperations(vector<int> &nums, int k) {sort(nums.begin(), nums.end());return lower_bound(nums.begin(), nums.end(), k) - nums.begin();} };B 超过阈…

后台组件-语言包

<groupId>org.qlm</groupId><artifactId>qlm-language</artifactId><version>1.0-SNAPSHOT</version> 平台提供多语言支持&#xff0c;以上为语言包&#xff0c;提供后台多语言支持。首批实现&#xff1a; public class LanguageConstan…

《操作系统真相还原》读书笔记二:环境搭建 xshell连接virtualbox

修改 sshd_config 使用 vi /etc/ssh/sshd_config命令进入sshd服务配置&#xff0c;键盘输入i进行编辑&#xff0c;将监听端口、监听地址前的 # 号去除&#xff0c;开启允许远程登录&#xff0c;开启使用用户名密码来作为连接验证。修改完成&#xff0c;按一下Esc&#xff0c;输…