当前位置: 首页 > news >正文

同态加密和SEAL库的介绍(八)性能

        本篇会对比三种加密方案,同时每种方案配置三种参数。即九种情况下的各个操作的性能差异,为大家选择合适的方案和合适的参数提供参考。表格中所有时长的单位均为微妙,即 1 \, s = 10^6 \, microsecond 。
        当然数据量比较大,为了方便大家查找,按照不同级别标题进行了区分,便于跳转。

注意

        本篇所写的测试数据,仅具有相对意义(即不同性能的计算机跑出来时长有差异),不能简单的作为衡量标准。同时,不同的加密参数导致的性能差异较大,加密的数据不同也会影响操作的性能,所以具体情况还是要自己进行实验。
        示例中所有操作,均为执行了十次后取的平均值。并且主要会对比不同方案,不同 poly_modulus_degree 下的性能差异,但是 coeff_modulus 的设置也是适当匹配 poly_modulus_degree 大小的。即不同参数设置差异较大,变量不是唯一的。

一、加密参数展示

1.1 三种 BFV 方案参数

1.2 三种 BGV 方案参数

1.3 三种 CKKS 方案参数

二、产生密钥效能对比

        不同例子中,密钥产生的时长首先是需要考虑的。尤其是Galois密钥,可能会占用大量内存,这在受限系统中可能是个问题,应该尝试一些更大的测试运行,并观察它们对内存池分配大小的影响。
        下面比较时长差异较大的 relinearization keys 和 Galois keys。

2.1 relinearization keys

4096819216384
BFV22359131629880082
BGV24174144649977182
CKKS23205135087893252

2.2 Galois keys

4096819216384
BFV471257322943123322354
BGV517306359257625117895
CKKS478956314280623158120

三、编解码

编码这里 BFV 和 BGV 采用的都是 Batch Encoder,CKKS采用的是CKKSEncoder。

3.1 编码

4096819216384
BFV56211982513
BGV55112262687
CKKS39701109735688

3.2 解码

4096819216384
BFV69412172591
BGV60412192683
CKKS68402339186703

四、加解密

4.1 加密

4096819216384
BFV2880790978325499
BGV33401111285398689
CKKS2639482988297074

4.2 解密

4096819216384
BFV815528594111851
BGV58872164583201
CKKS2234818534076

五、加法

        加法这里只统计了密文加密文的加法函数,因为和明文加密文函数的差异不大,并且和乘法相比,加法时间更短,也基本没有噪声损失。故选择算法时,尽量用加法来减少乘法次数。

4096819216384
BFV1907764831280
BGV1992776030592
CKKS1976785030895

六、乘法

5.1 明文乘密文

4096819216384
BFV785932869142946
BGV39701589463479
CKKS2254866834371

5.2 密文乘密文

4096819216384
BFV1056313921501626688
BGV54892152685366
CKKS54202182986503

5.3 平方

4096819216384
BFV731872729061137618
BGV46461731968582
CKKS43421713368566

七、旋转

6.1 行旋转 - 一步

4096819216384
BFV21078111939718794
BGV28039138755791834
CKKS22252117407726842

6.2 行旋转 - 随机步长

        这里用随机函数,生成一个步数,旋转记录时长,即十次旋转的都不同,最后取平均。当然只是为了比对单步的行旋转,说明多步需要更多的时间。 

4096819216384
BFV863873907852855098
BGV1160925369963550023
CKKS833905173973339613

6.3 列旋转

4096819216384
BFV211123907852855098
BGV27963137158789150

八、重新线性化

4096819216384
BFV21106111579715234
BGV27121134387775288
CKKS21871115797726314

九、Rescale

因为 rescale 操作只在CKKS方案中进行,这里虽然不比较,但是列出来供大家参考:

4096819216384
CKKS37131901779439

十、总结

这里简单总结几点我发现的规律:

  1. 同一方案下,操作的时长并不是跟着 poly_modulus_degree 的倍数,成倍数增长,故槽的数量大了,虽然一次能处理的数据更多,时间代价会更大
  2. CKKS 和 BFV 方案相比,编解码时间长了,但是乘法时间更短,尤其是密文乘密文;
  3. 直接旋转 n步长 的时间是快于一次转一个转 n次的;
  4. 密文乘密文 的时间成本要明显大于 明文乘密文,故尽量采用明文乘法;
  5. 重新线性化的时间成本并不低,虽然减少了密文长度,但是其代价也是要纳入考量的;
  6. 这里的参数大小配置是相适应的,但是要想获得最优性能,还是应该根据自己的数据和算法,定制一个合理的噪声预算和算法顺序。

        总结就是,用同态加密实现功能不难,但是在保证正确性的前提下提高效能是个要具体情况具体设计的问题,需要花功夫花时间取钻研的。

相关文章:

同态加密和SEAL库的介绍(八)性能

本篇会对比三种加密方案,同时每种方案配置三种参数。即九种情况下的各个操作的性能差异,为大家选择合适的方案和合适的参数提供参考。表格中所有时长的单位均为微妙,即 。 当然数据量比较大,为了方便大家查找&#xff0c…...

华为OD-D卷数的分解

给定一个正整数n,如果能够分解为m(m > 1)个连续正整数之和,请输出所有分解中,m最小的分解。 如果给定整数无法分解为连续正整数,则输出字符串"N"。 输入描述: 输入数据为一整数,范围为(1, 2^3…...

rk3588 low_delay_net_display注意事项

low_delay_net_display例子默认只支持YUV420和RGB888,如果需要支持YUV422,请添加下面部分: rk3588_nvr/build/app/low_delay_net_display$ git diff v4l2HdmiRX.cpp diff --git a/app/low_delay_net_display/v4l2HdmiRX.cpp b/app/low_delay_net_displa…...

Spring Boot 快速入门样例【后端 3】

Spring Boot 入门:从零到一构建你的第一个应用 Spring Boot 作为一个流行的Java框架,以其“习惯优于配置”的理念极大地简化了Spring应用的开发和部署过程。本文将带你一步步创建一个简单的Spring Boot应用,从环境准备到项目创建,…...

Linux云计算 |【第二阶段】NETWORK-DAY2

主要内容: VLAN技术、TRUNK模式、链路聚合、路由器 一、VLAN技术应用 广播域指接受同样广播消息的节点的集合,如在该集合中的任何一个节点传输一个广播帧,则所有其它能收到这个帧的节点都被认为是该广播帧的一部分; 交换机的所有…...

Java面试题(基础篇)③

目录 一, 与 equals 的区别? 二,接口和抽象类的区别? 三,请说出几个常见的异常? 四,请问你对Java 反射有了解吗? 五,浅拷贝和深拷贝区别? 一&#xff0c…...

Qt动态调用 - QMetaObject::invokeMethod

QMetaObject::invokeMethod 动态调用是 Qt 的元对象系统的一项强大功能,它允许在运行时通过名称调用槽函数、信号和普通成员函数。 这种能力对于构建灵活和可扩展的应用程序非常有用,比如插件系统或脚本接口。 动态调用方法 Qt 提供了 QMetaObject::i…...

html+css+js网页设计 星享咖啡6个页面(带js) ui还原度90%

htmlcssjs网页设计 星享咖啡6个页面(带js) ui还原度90% 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等…...

docker上传镜像至阿里云

1、安装wsl2 WSL2安装(详细过程) 2、安装docker Docker在Windows下的安装及使用 3、创建私人阿里云镜像库 如何创建私人阿里云镜像仓库?(保姆级) 4、如何删除容器 (1) 查找正在使用该图像的容器 docker ps -a --filte…...

POS刷卡开发源码之语音播报-CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、终端语音提醒的好处 1. 增强信息传递的有效性:在人们忙碌或者注意力分散时,语音提醒能够直接穿透噪音和干扰,确保重要信息被准确接收。 2. 提高操作的便捷性:用户无需停下手中的工作去查看屏幕或阅读文字,直接通过…...

jupyter notebook魔法命令

%xmode 魔法命令来控制异常报告: 输入魔法命令:在 IPython 或 Jupyter Notebook 的一个新单元格中,输入以下命令之一来设置异常报告模式: 切换到 Plain 模式(简洁输出): %xmode Plain切换回 Con…...

Mysql事件

1:查询全局事件开关是否启动 SHOW VARIABLES LIKE %sche%; 关闭状态!!!去开启如果已开启忽略 set global event_scheduler ON; ojbk 2:创建事件 step1: 链接打开自己的数据库 step2: 找…...

Unity Console 窗口输出对齐

起因:做了个工具在console窗口罗列一些信息,基本结构是 [ 文件名 :行号 ],因为文件,行号长度不一,想要做到如下效果。 初步尝试,用以下方法: string format "{0,-10} …...

leetcode198_打家劫舍

思路 动态规划 func rob(nums []int) int {if len(nums) < 2 {return nums[0]}// dp[i] 表示到第i家为止&#xff0c;小偷能够偷窃到的最高金额dp : make([]int, len(nums))dp[0] nums[0]dp[1] max(nums[0], nums[1])for i:2; i<len(nums); i {if nums[i] dp[i-2] &…...

C# 串口通讯怎么防止数据丢失

串口通信&#xff08;Serial Communication&#xff09;是计算机与设备之间进行数据交换的一种方式。在C#中进行串口通信时&#xff0c;防止数据丢失可以采取以下一些措施&#xff1a; 1.校验和&#xff08;Checksum&#xff09;&#xff1a;在发送数据时&#xff0c;计算数据的…...

【机器学习】BP神经网络中的链式法则:解开智能背后的数学奥秘

在浩瀚的机器学习领域中&#xff0c;BP&#xff08;反向传播&#xff09;神经网络如同一座桥梁&#xff0c;连接着复杂的数据世界与智能的彼岸。而这座桥梁的基石之一&#xff0c;便是链式法则&#xff08;Chain Rule&#xff09;——一个看似简单却蕴含无限智慧的数学原理。今…...

MyBatis 基本操作 - 注解版

目录 一&#xff0c;查询 - select 1.1 全列查询 1.2 指定列查询 1.3 赋值问题 方法一&#xff1a;起别名 方法二&#xff1a;结果映射 方法三&#xff1a;添加配置 二&#xff0c;新增 - Insert 2.1 使用对象插入 2.2 获取主键 三&#xff0c;删除 - Delete 四&am…...

专业比例阀放大器配套选型

比例阀放大器作为液压系统中的关键组件&#xff0c;其技术选型对于保障系统的精确控制、稳定性和长期可靠性至关重要。下面将深入探讨比例阀放大器的技术选型要点&#xff0c;确保选型能满足特定的应用需求和系统性能要求&#xff1a; 兼容性与安装方式 阀型匹配&#xff1a;…...

Springboot 多数据源整合的三种方式

上链接&#xff1a;Springboot 多数据源整合的三种方式_springboot整合多数据源-CSDN博客...

【科研笔记】中国知网高级检索与专业检索针对同一检索内容返回的结果对比

中国知网高级检索与专业检索针对同一检索内容返回的结果对比 文献检索文献差集文献检索 预检索“复杂网络”和“事故”相关主题的文献,在高级检索界面中搜寻的结果如下,期刊选择为中文核心及以上,共检索138条文献 然后以专业检索,构建检索式“ (SU=‘事故’) AND (SU=‘复…...

微信小程序连接大模型:百川2-13B赋能智能客服小程序开发

微信小程序连接大模型&#xff1a;百川2-13B赋能智能客服小程序开发 最近在做一个宠物用品商城的小程序&#xff0c;老板提了个需求&#xff0c;想给用户加个24小时在线的智能客服&#xff0c;能回答一些关于宠物喂养、商品咨询的常见问题。一开始想用传统的规则问答&#xff…...

oicq 高级技巧:如何构建企业级 QQ 机器人应用架构

oicq 高级技巧&#xff1a;如何构建企业级 QQ 机器人应用架构 【免费下载链接】oicq Tencent QQ Bot Library for Node.js 项目地址: https://gitcode.com/gh_mirrors/oi/oicq oicq 是一个基于 Node.js 的 QQ 协议库&#xff0c;专为构建稳定、高效的 QQ 机器人应用而设…...

基于单细胞测序技术的细胞通讯分析方法及其应用

一、细胞通讯与单细胞测序技术的研究意义多细胞生物由不同类型的细胞构成一个开放的社会。在这一社会中&#xff0c;单个细胞之间必须协调其行为&#xff0c;因此建立有效的通讯联络机制至关重要。细胞通讯是指一个细胞发出的信息通过介质传递至另一个细胞&#xff0c;并引发相…...

3PEAK思瑞浦 TPW4052-TR TSSOP16 模拟开关/多路复用器

特性模拟开关电压&#xff1a;3.3V、5V、10V、5V低导通电阻&#xff1a;在 Vs 4.5V 或 9V 时典型值为 50Ω&#xff1b;在 Vs 4.5V 时典型值为 60Ω&#xff1b;在 VS 3V 时典型值为 300Ω带宽&#xff1a;200 MHz快速开关时间&#xff1a;ΔtON 60 ns&#xff0c;tOFF 50…...

C++新手避坑指南:从‘恶魔轮盘赌‘代码看常见编程误区

C新手避坑指南&#xff1a;从"恶魔轮盘赌"代码看常见编程误区 当你第一次尝试用C复刻一个像"恶魔轮盘赌"这样的小游戏时&#xff0c;很容易陷入一些典型的编程陷阱。让我们通过分析这个游戏的实现代码&#xff0c;来揭示那些C初学者常犯的错误&#xff0c;…...

PADS Layout VX.1.2设计规则全解析:从安全间距到布线优化的实战技巧

PADS Layout VX.1.2设计规则全解析&#xff1a;从安全间距到布线优化的实战技巧 在高速PCB设计领域&#xff0c;规则约束如同交通信号灯般重要——它们决定了电流的"通行权"和"避让规则"。作为Mentor Graphics旗下的经典工具&#xff0c;PADS Layout VX.1…...

VSCode插件Console Ninja详解:把DevTools搬进编辑器,调试效率翻倍

作为前端/Node.js开发者&#xff0c;我们每天都会和console.log打交道——调试时写日志、看输出、找错误&#xff0c;却总被“切换窗口”困扰&#xff1a;一边是VSCode编辑器&#xff0c;一边是浏览器DevTools或终端&#xff0c;来回切换不仅打断思路&#xff0c;还浪费大量时间…...

嵌入式必看学习路线

嵌入式学习路线第一阶段:C语言基础(必须扎实)数据类型&#xff1a;字符型&#xff08;char&#xff09;、短整型&#xff08;short&#xff09;、整型&#xff08;int&#xff09;、 长整型&#xff08;long&#xff09;、超长整形&#xff08;long long&#xff09;、&#xf…...

北大团队改造DeepSeek注意力,速度快四倍还不丢精度

听雨 发自 凹非寺量子位 | 公众号 QbitAI就在大家都急头白脸地等待DeepSeek-V4的时候&#xff0c;冷不丁一篇新论文引起了网友们的注意——提出新稀疏注意力机制HISA&#xff08;分层索引稀疏注意力&#xff09;&#xff0c;突破64K上下文的索引瓶颈&#xff0c;相比DeepSeek正…...

LN3608 2A 高效率升压 DC/DC 电压调整器

■ 产品概述 LN3608 是一款微小型、高效率、升压型 DC/DC 调整器。电路由电流模 PWM 控制环路&#xff0c;误差放大器&#xff0c;斜波补偿电路&#xff0c;比较器和功率开关等模块组成。该芯片可在较宽负载范围内高效稳定的工作&#xff0c;内置一个 4A 的功率开关和软启动保护…...