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

【密码学基础】基于LWE(Learning with Errors)的全同态加密方案

学习资源:
全同态加密I:理论与基础(上海交通大学 郁昱老师)
全同态加密II:全同态加密的理论与构造(Xiang Xie老师)


现在第二代(如BGV和BFV)和第三代全同态加密方案都是基于LWE构造的,现在先进的全同态方案也都是基于LWE的,所以本文总结一下LWE的基础知识。
首先考虑,我们希望加密一个数 s s s, 现在用一系列的 a i a_i ai s s s进行加密,得到 a i s a_is ais,实际上通过求解最大公约数GCD就能求解出 s s s。但是,如果加上一个随机噪声 e i e_i ei,得到 a i s + e i a_is+e_i ais+ei,那么将难以求解出 s s s的值。这个过程就是我对LWE的简单理解,所谓error就是一个noise。

在这里插入图片描述

全同态加密的计算过程分为三步:密钥生成KeyGen、加密Enc、同态计算Eval、解密Dec。、

KeyGen:

在这里插入图片描述
首先构造出如上的等式, s ⋅ A + e = s A + e s\cdot A + e = sA+e sA+e=sA+e,然后得到公钥pk( − A -A A s A + e sA+e sA+e的拼接),以及私钥sk( s s s和1的拼接)。于是得到pk和sk满足相乘后的结果是随机噪声e(接近0)。

Enc:

加密用的公钥pk,r是一个只包含0或1的随机向量,m是待加密的信息(放在向量的最低位上)。
在这里插入图片描述
在这里插入图片描述

Dec:

解密用的私钥sk,和ct计算完内积后求mod 2得到解密结果。

在这里插入图片描述
正确性证明:
在这里插入图片描述
sk和pk相乘得到2e(KeyGen时满足的条件),然后和r做内积得到一个很小的偶数噪声,最终的结果就是m+很小的偶数噪声,于是通过mod 2就能将噪声消除,得到解密结果m。这也就是为什么构造的噪声是2e,而不是e,我的理解就是希望通过构造偶数的随机噪声,从而在解密时方便用mod 2的方式消除掉噪声。

安全性证明:

在这里插入图片描述
当pk是伪随机的,r具有足够高的熵(也就是随机性很强?)时,pk和pk乘r都是伪随机的。自然和带m的向量相加后,加密结果也是伪随机的。

在这里插入图片描述

下面是Xiang Xie老师的公式化描述:
加密公式:密文c = 公钥pk ✖️ 随机r + 明文m
解密公式:明文m = <密文sk, 私钥sk> mod q mod 2

在这里插入图片描述
在这个基础上,再mod 2就能解密出明文m的值。只要噪声够小,就能保证正确性。
这里有个需要区分的事情:以上 P K = ( A , b = A s ′ + 2 e ) PK=(A, b=As'+2e) PK=(A,b=As+2e)是BGV方案,BFV则是 P K = ( A , b = A s ′ + e ) PK=(A, b=As'+e) PK=(A,b=As+e),区别是BGV将信息编码在低位,而BFV将消息编码在高位(学习BFV的时候会说明)。

Eval(加法同态和乘法同态):

在这里插入图片描述
注意到同态加法或乘法都会带来显著的噪声累积,并且乘法是呈平方增长趋势。
然后说说如何解密同态乘的结果,下面的式子可以看到:两个密文做乘法,等价于密文和私钥分别先做tensor product,然后再做内积。因此,显然密文和私钥的大小都翻了一倍。Example是一个等价性的证明。

在这里插入图片描述

那么问题来了,如何将同态乘之后的密文大小和私钥大小都恢复回去呢?这就是Key Switching解决的问题。

下面是Xiang Xie老师的描述:

在这里插入图片描述

Key Switching

目标是将密文和私钥的大小恢复到线性大小。
在这里插入图片描述
现在求密文c1和c2的乘法:

在这里插入图片描述
在这里插入图片描述

以上过程基于比特分解这个概念:

在这里插入图片描述

下面是Xiang Xie老师的描述:

Key Switching的目标:将私钥 s ~ \tilde s s~下的 c ~ \tilde c c~ 转换为 私钥 s s s下的 c c c,并且 c ~ \tilde c c~ c c c都是加密的同一个明文。
这里有一个核心概念是Key Switching Key (KSK),也就是用私钥 s s s来加密 s ~ \tilde s s~

在这里插入图片描述
通过Key Switching过程,可以推导出私钥从 s ⊗ s s\otimes s ss变成了线性的 s s s,同时密文从 c ~ \tilde c c~变成了线性的 c c c。并且通过最后一行式子可以看出,Key Switching后的 ⟨ c , s ⟩ \langle c, s\rangle c,s和原来的 ⟨ c ~ , s ⊗ s ⟩ \langle \tilde c, s\otimes s\rangle c~,ss之间相差了一个噪声 2 c ~ T e ~ 2\tilde c^T\tilde e 2c~Te~,这部分是可以非常大的!所以到这里仍然没办法实现Key Switching。

这里引入了一个Gadget矩阵G:
在这里插入图片描述
于是,Key Switching的过程变成了下面这样:

在这里插入图片描述
此时,增加的误差就非常小了。
总结一下就是,通过Key Switching,原来私钥 s ~ = s ⊗ s \tilde s=s \otimes s s~=ss下的 c ~ = c ⊗ c \tilde c=c\otimes c c~=cc,被转换成了私钥 s s s下的 c c c,注意Key Switching后的 s , c s, c s,c都不是原来的值了(double check)。

在这里插入图片描述
对于BGV,加法的噪声线性增长,乘法的噪声平方增长,Key Switching虽然可以支持乘法了(限制sk变得特别大),但是实际上噪声是在原本乘法噪声基础上加了一个很小的噪声,总体也非常大。因此需要进一步降低这个噪声。

Modulus Reduction

在这里插入图片描述
到这里,通过LWE实现了很小深度的同态乘法和加法计算,key switching则是对每层用新的密钥,但是随着计算深度加深,噪声的扩大是爆炸性的,因此还不是一个levelled FHE(能计算指定深度的FHE)。
现在我们希望不借助bootstrapping,实现一个能计算一定深度的FHE,需要用到模数变换。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

暂时没太看懂中间的流程,简而言之就是将密文c从模q的域变换到模p的域上(p<<q),于是噪声等比例缩小,也就是大约缩小到原来的p/q倍。
下面是一个具体的例子:
如果不做Modulus Reduction,随着深度加深,噪声呈双指数趋势增长,level >= 3之后就会带来解密错误。
在这里插入图片描述
如果每个level上做Modulus Reduction,那么噪声也会被维持在一个绝对值范围内,代价就是模数会不断减小。

在这里插入图片描述

所以要想实现一个levelled FHE,可以设置一个模数 B d B^d Bd,然后就可以计算一个深度为 d d d的电路了(其中 B B B是刷新后密文的噪声上界)。计算完 d d d的深度后,模数应该是降低到 B B B,要保证此时解密不出错。BGV就是一种levelled FHE。

在这里插入图片描述

相关文章:

【密码学基础】基于LWE(Learning with Errors)的全同态加密方案

学习资源&#xff1a; 全同态加密I&#xff1a;理论与基础&#xff08;上海交通大学 郁昱老师&#xff09; 全同态加密II&#xff1a;全同态加密的理论与构造&#xff08;Xiang Xie老师&#xff09; 现在第二代&#xff08;如BGV和BFV&#xff09;和第三代全同态加密方案都是基…...

Linux - 基础开发工具(yum、vim、gcc、g++、make/Makefile、git)

目录 Linux软件包管理器 - yum Linux下安装软件的方式 认识yum 查找软件包 安装软件 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 vim命令模式各命令汇总 vim底行模式各命令汇总 vim的简单配置 Linux编译器 - gc…...

网络安全法律框架更新:最新合规要求与企业应对策略

网络安全法律框架的最新更新 近期&#xff0c;中国的网络安全法律框架经历了重要的更新。2022年&#xff0c;《网络安全法》迎来了首次修改&#xff0c;这一修订主要是为了与《数据安全法》和《个人信息保护法》等新实施的法律进行衔接协调&#xff0c;完善法律责任制度&#x…...

数仓工具—Hive语法之正则表达式函数

正则表达式函数 之前我们介绍过like rlike regexp 这些关键字,都是和匹配有关的,今天我们介绍一下hive 的REGEXP_REPLACE 和REGEXP_EXTRACT 函数,背景是使用Hive正则表达式函数提取数字 在我的其他文章中,我们已经看到了如何使用Hive正则表达式从字符串中提取日期值。正则…...

WKCTF 2024 easy_heap

很经典的house of orange unsortedbin attack FSOP 变量覆盖 不能 free&#xff0c;那首先想到就是 house of orange泄露Libc基址&#xff0c;然后unsortedbin attack。 但是只能show(8)&#xff0c;就不能用largebin的套路来泄露堆地址了&#xff0c;那怎么办呢&#xff1f; …...

SQL 多变关联使用子查询去重

不去重状态 select a.*,b.recon_amt from free_settlement_first aleft join free_settlement_second b on a.settlement_first_id b.settlement_first_id 有2条数据出现了重复 使用子查询去重 select a.*,b.recon_amt from free_settlement_first aleft join free_settlem…...

php表单提交并自动发送邮件给某个邮箱(示例源码下载)

只需要将以下代码内容进行复制即可用到自己的程序/API接口中&#xff1a; <?php if(!empty($_POST[is_post]) && $_POST[is_post]1){$url "https://www.aoksend.com/index/api/send_email";$name $_POST[name];$email $_POST[email];$subject $_POS…...

论文翻译:Large Language Models for Education: A Survey

目录 大型语言模型在教育领域的应用&#xff1a;一项综述摘要1 引言2. 教育中的LLM特征2.1. LLMs的特征2.2 教育的特征2.2.1 教育发展过程 低进入门槛。2.2.2. 对教师的影响2.2.3 教育挑战 2.3 LLMEdu的特征2.3.1 "LLMs 教育"的具体体现2.3.2 "LLMs 教育"…...

7.13实训日志

上午 学习网络安全的过程中&#xff0c;我们深入了解了网络的不同层面和技术&#xff0c;从表层网络到深网再到暗网&#xff0c;以及涉及的产业分类和技术工具。这些知识不仅帮助我们理解网络的复杂性&#xff0c;还揭示了如何应对和防范各种网络威胁。 首先&#xff0c;我们…...

【力扣】每日一题—第70题,爬楼梯

题目&#xff1a; 假设你正在爬楼梯。需要n阶你才能到达楼顶。 每次你可以爬1或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 思路&#xff1a; 我开始是写了一个函数计算爬一层和爬二层的个数&#xff0c;之后排列求和&#xff0c;但是超范围了&#xff0c…...

Docker修改国内镜像源

如果docker已将安装好 参考&#xff1a;https://github.com/cmliu/CF-Workers-docker.io sudo mkdir -p /etc/dockercd /etc/dockersudo vim daemon.json #输入以下内容 { "registry-mirrors": ["https://docker.fxxk.dedyn.io"] } #重启docker服务 su…...

安防监控视频平台LntonCVS视频融合共享平台智慧消防实现远程集中视频监控方案

近年来&#xff0c;电力系统内变电站着火事件频发&#xff0c;这对消防安全管理提出了严峻挑战。我国消防安全基础设施不完善、管理机制不健全、应急处置能力不足及公众消防安全意识淡薄等问题&#xff0c;严重制约了消防安全的提升。因此&#xff0c;加强变电站的消防安全管理…...

【大模型LLM面试合集】大语言模型架构_layer_normalization

2.layer_normalization 1.Normalization 1.1 Batch Norm 为什么要进行BN呢&#xff1f; 在深度神经网络训练的过程中&#xff0c;通常以输入网络的每一个mini-batch进行训练&#xff0c;这样每个batch具有不同的分布&#xff0c;使模型训练起来特别困难。Internal Covariat…...

OpenGL笔记八之EBO和EBO绘制流程

OpenGL笔记八之EBO和EBO绘制流程 —— 2024-07-07 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记八之EBO和EBO绘制流程1.EBO2.glDrawElements&#xff1a;如果使用了ebo&#xff0c;最后一个参数可以写03.glDrawElements&#xff1a;如果使用了e…...

maven——(重要)手动创建,构建项目

创建项目 手动按照maven层级建好文件夹&#xff0c;并写上java&#xff0c;测试代码和pom文件 构建项目 在dos窗口中执行如下命令 compile编译 当前maven仓库中什么都没有。 在pom所在层级下&#xff0c;执行&#xff1a; mvn compile 就开始显示下面这些&#xff0c;…...

数学建模·非线性规划

整型规划 适用于一个变量或多个变量的值只能是整型的情况 整形规划的分类 0-1背包问题 对于一个物品来说&#xff0c;只有选和不选两种情况 表现为单下标&#xff0c;单变量问题 例&#xff1a;建设学校问题 对于每个学校来说只有选和不选两种情况&#xff0c;在数学上我们用…...

SpringCloud第三篇(服务中心与OpenFeign)

p 文章目录 一、服务中心二、Nacos注册中心 一、服务中心 在上一章我们实现了微服务拆分&#xff0c;并且通过Http请求实现了跨微服务的远程调用。不过这种手动发送Http请求的方式存在一些问题。 试想一下&#xff0c;假如商品微服务被调用较多&#xff0c;为了应对更高的并发…...

Linux重要知识点

1. 命令行操作 Linux大多数操作都是通过命令行进行的。熟悉常用命令和脚本是使用Linux的基础。 基本命令&#xff1a;如 ls, cd, cp, mv, rm&#xff0c;这些命令用于文件和目录的管理。文件权限和管理&#xff1a;了解如何使用 chmod, chown, chgrp 等命令来管理文件权限和所…...

Unity宏和编辑器

宏&#xff1a;UNITY_EDITOR 等等 编辑器&#xff1a;Unity未运行时的状态 如何使用&#xff1a;#if UNITY_EDITOR 代码 #endif 什么情况下使用&#xff1a;包裹那些想要在编辑器模式下使用的代码 而在Unity运行时不会去调用的代码 AssetDatabase.LoadAssetAtPath&#xff08;路…...

计算机网络——网络层(概念及IP地址划分)

目录 网络层概念 网络层向上层提供的两种服务 虚电路 网络提供数据报服务 虚电路服务与数据报服务的对比 网络层的两个层面 分组传送到路由器的运作 对网络层进行分层 网际协议IP 虚拟互联网络 IP地址 IP地址及其表示方法 IP地址的计算方式 IP地址的结构 …...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...