【密码学基础】基于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。

在这里插入图片描述

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

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

相关文章

Git 快速上手

这个文档适用于需要快速上手 Git 的用户&#xff0c;本文尽可能的做到简单易懂 ❤️❤️❤️ git 的详细讲解请看这篇博客 Git 详解&#xff08;原理、使用&#xff09; 1. 什么是 Git Git 是目前最主流的一个版本控制器&#xff0c;并且是分布式版本控制系统&#xff0c;可…

合规与安全双重护航:ADVANCE.AI让跨境支付更无忧

近年来&#xff0c;随着全球化进程的加速和跨境贸易的蓬勃发展&#xff0c;跨境支付的需求大幅增加。根据Grand View Research的报告&#xff0c;2021年全球跨境支付市场规模估计为22.09万亿美元。到2025年&#xff0c;全球跨境支付市场预计将达到35.9万亿美元&#xff0c;较20…

rfid资产管理系统解决方案 rfid固定资产管理系统建设方案

在现代化的仓库储备中&#xff0c;仅仅完成对货物进出的简单批次处理已经不再足够&#xff0c;对库内货品的种类、数量、生产属性、垛位等信息的清晰记录变得至关重要。然而&#xff0c;传统的资产管理方式如条形码在长期使用中逐渐暴露出不耐脏、数据存储量小、读取间隔短、不…

优质可视化大屏模板+动态图表+科技感原件等

优质可视化大屏模板动态图表科技感原件等 软件版本&#xff1a;Axure RP 9 作品类型&#xff1a;高保真 作品内容&#xff1a; 1、大屏可视化模版&#xff08;100套&#xff09;&#xff1a;包含智慧城市、智慧社区、智慧园区、智慧农业、智慧水务、智慧警务、城市交通、电…

新加坡工作和生活指北:教育篇

文章首发于公众号&#xff1a;Keegan小钢 新加坡的基础教育在东南亚处于领先地位&#xff0c;这点基本是人尽皆知&#xff0c;但很多人对其教育体系只是一知半解&#xff0c;今日我们就来深入了解一下。 新加坡的学校主要分为三大类&#xff1a;政府学校、国际学校、私立学校。…

Python 中将字典内容保存到 Excel 文件使用详解

概要 在数据处理和分析的过程中,经常需要将字典等数据结构保存到Excel文件中,以便于数据的存储、共享和进一步分析。Python提供了丰富的库来实现这一功能,其中最常用的是pandas和openpyxl。本文将详细介绍如何使用这些库将字典内容保存到Excel文件中,并包含具体的示例代码…

Xterminal工具的安装与使用体验

Xterminal工具的安装与使用体验 一、Xterminal简介二、Xterminal核心特性三、Xterminal使用场景四、Xterminal下载地址五、Xterminal的基本使用5.1 设置仓库密码5.2 SSH连接5.3 Windows远程桌面5.4 笔记功能5.5 AI工具 六、总结 一、Xterminal简介 Xterminal是一款专为开发者设…

【Linux进阶】vim的用法

1.什么是vi/vim? 简单来说&#xff0c;vi是老式的文本编辑器&#xff0c;不过功能已经很齐全了&#xff0c;但是还是有可以进步的地方。vim则可以说是程序开发者的一项很好用的工具&#xff0c;就连 vim的官方网站&#xff08; http://www.vim.org&#xff09;自己也说vim是一…

独享代理VS共享代理,新手选择攻略

随着互联网的广泛普及和应用&#xff0c;涉及网络隐私、数据安全和网络访问控制的问题变得越来越重要。代理服务器作为一种常见的网络工具&#xff0c;可以在跨境电商、海外社媒、SEO投放、网页抓取等领域发挥作用&#xff0c;实现匿名访问并加强网络安全。在代理服务器类别中&…

Nginx在线安装与启动

Nginx在线安装与启动 系统环境&#xff1a;中科方德桌面操作系统 3.1 内核&#xff1a; SMP CDOS 4.9.25-11cdos44 (2019-12-20) x86_64 GNU/Linux 使用连接工具&#xff1a;FinalShell3.9.5.7 1、下载nginx sudo apt-get update2、安装命令 sudo apt-get install nginx安装…

occ geo

随笔 - 12 文章 - 18 评论 - 117 阅读 - 13万 opencascade造型引擎功能介绍 现今的CAD 系统大多通常都基于CAD 系统提供的二次开发包&#xff0c;用户根据要求定制符合自己要求的功能。AutoCAD就提供了AutoLISP、ADS 等都是比较通用的开发工具包。UG 也提供了多种二次开发…

【力扣: 15题: 三数之和】

15题: 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意: 答案中不可以包含重复的三元组。 …

小米摄像头黄灯常亮,小米摄像头不好用了刷机

我是MJSXJ05CM型号 一不小心更新了系统结果就不好用了&#xff0c;这种东西真是要小心&#xff0c;一不小心更新不成就成砖头了。 我按下面方法试了不好用&#xff0c;但是下载链接很多收藏一下!某种程度上说如果服务端故意发布一个错误镜像会导致很多摄像头变成砖头&#xff0…

名企面试必问30题(二十七)——你能为公司带来什么呢?

回答一&#xff1a; “首先&#xff0c;我具备扎实的软件测试专业知识和丰富的实践经验。我能够运用各种测试方法和工具&#xff0c;确保公司产品的质量&#xff0c;降低产品上线后的风险。 其次&#xff0c;我善于发现问题和解决问题。在测试过程中&#xff0c;我不仅能找出软…

桌面弄一个透明的记事本怎么弄?电脑桌面透明记事本

每次坐在电脑前&#xff0c;我总会被桌面上密密麻麻的图标和文件弄得眼花缭乱。多么希望能有一个透明的记事本&#xff0c;既能随时记录我的想法和任务&#xff0c;又不会遮挡我桌面上的其他内容。 有一天&#xff0c;我偶然发现了透明记事本工具。它不仅解决了我的记事本需求…

cf 7.9 div3

AProblem - A - Codeforces ac代码 #include<bits/stdc.h> typedef long long ll;#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) const ll N1e5; using namespace std;int main() {IOS;int t;cin>>t;while(t--){int sum,ansINT16_MAX;int a[3];for…

RK3588 Android12实现UVC输出功能详解

首先需要在相关部分添加uvc的功能&#xff0c;这里参考一下&#xff1a;rockchip rk3588添加uvc及uvc,adb的复合设备_uvc.gs6-CSDN博客 setprop sys.usb.config none;setprop sys.usb.config uvc 或者setprop sys.usb.config none;setprop sys.usb.config uvc,adb 使rk3588 进…

Python实现动态银河系:模拟旋转的银河动画

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame定义星系类主循环 完整代码 引言 银河系的旋转动画是一个迷人且富有挑战性的项目。通过模拟星系的旋转&#xff0c;我们可以更好地理解天文学现象&#xff0c;并创造出视觉上令人惊叹的效果。在这篇博客…

springboot考研培训机构管理系统-计算机毕业设计源码16042

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

【NLP】利用 RAG 模分块技术提升文档处理效能

将大型文档划分为较小的部分是一项至关重要但又复杂的任务&#xff0c;它对检索增强生成 (RAG) 系统的性能有重大影响。这些系统旨在通过结合基于检索和基于生成的方法&#xff0c;提高输出的质量和相关性。有效的分块&#xff0c;即将文档拆分为可管理的片段的过程&#xff0c…