当前位置: 首页 > 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=‘复…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...