Learning With Error(LWE)问题学习

news/2024/5/22 3:35:59/文章来源:https://blog.csdn.net/qq_43271194/article/details/126852827

概念

又称误差还原,容错学习问题,即已知一个矩阵AAA以及一个向量,求解
b^=Ax+e\hat{b}=A x+e b^=Ax+e
这里eee是一个固定数值范围内随机采集的一个随机噪音向量,所以这个问题就转化为通过AAAb^\hat{b}b^来还原最初的未知向量xxx
可以理解为:需要找到一组系数,使得一组基向量的线性组合无线逼近目标向量,使用噪音误差的大小来定义我们需要距离目标向量有多近。

分类
一般分为两类,决策LWE(简称为DLWE)的设定和搜索LWE(简称为SLWE)基本相同。唯一不同的是,SLWE最后的问题是需要我们找到sss,而DLWE只需要让我们辨别看到的b^=As+e\hat b = As+eb^=As+e到底是LWE问题中的误差乘积还是一个随机生成的向量。

搜索LWE问题(Search LWE Problem)

关键概念
在这里插入图片描述
LWE(n,m,q,xB):SearchVersionLetA←RZqm×n,s←RZq,e←RxBGiven(A,As+e),finds′∈Zqns.t.∥As′−(As+e)∥∞≤BLWE\left(n, m, q, x_{B}\right): Search Version\\ Let A \stackrel{R}{\leftarrow} \mathbb{Z}_{q}^{m \times n}, s \stackrel{R}{\leftarrow} \mathbb{Z}_{q}, e \stackrel{R}{\leftarrow} x_{B} \\ Given (A, A s+e) , find s^{\prime} \in \mathbb{Z}_{q}^{n} s.t. \left\|A s^{\prime}-(A s+e)\right\|_{\infty} \leq B LWE(n,m,q,xB):SearchVersionLetARZqm×n,sRZq,eRxBGiven(A,As+e),findsZqns.t.As(As+e)B
帮助理解:
这里开始定义了四个重要的参数,

  • mmm代表线性方程组有多少个方程,
  • nnn代表了每个方程中有多少个未知数。
  • qqq则是有限域的大小,一般来说这会是一个足够大的素数。
  • 误差噪音取值上限BBB的大小决定问题中需要找到的解距离实际取值b^\hat{b}b^可以相差多少。
  • RRR代表随机选取。

结合各个参数的含义,则LWE问题的定义就是给定矩阵AAA与误差乘积As+eAs+eAs+e,如何能够搜索出(search)一个合理的As′As^{\prime}As,使得得到的向量和问题给定的As+eAs+eAs+e之间的误差不能超过误差上限BBB

可以理解为:给定矩阵AAA以及带有误差的结果As+eAs+eAs+e还原出未知的向量sss

来看看这些个参数会如何影响LWE问题的难度

  • 如果系统中的未知变量越多那么,问题将越难,也就是增大nnn的大小会增加LWE问题的难度,nnn也被称为LWE问题的安全参数。
  • mmm可以看作nnn的多项式倍数,如果可用的方程组越多,那么解出未知向量就会容易一些。
  • qqq也可以看作nnn的多项式倍数
  • 误差BBB需要比qqq小很多,这样找到正确的解老说会相对简单。

决策LWE问题(Decisional LWE Problem)

在解决证明一个困难问题的安全性的时候,我们一般都会使用决策版本的LWE问题(Decisional LWE)

LWE(n,m,q,xB):DecisionalVersionLet⁡A←RZqm×n,s⟵RZq,e←RxB,v⟵RZqm.Distinguish(A,As+e)from(A,v).L W E\left(n, m, q, x_{B}\right) : Decisional Version\\ \operatorname{Let} A \stackrel{R}{\leftarrow} \mathbb{Z}_{q}^{m \times n}, s \stackrel{R}{\longleftarrow} \mathbb{Z}_{q}, e \stackrel{R}{\leftarrow} x_{B}, v \stackrel{R}{\longleftarrow} \mathbb{Z}_{q}^{m} .\\ Distinguish (A, A s+e) from (A, v) . LWE(n,m,q,xB):DecisionalVersionLetARZqm×n,sRZq,eRxB,vRZqm.Distinguish(A,As+e)from(A,v).
只能看到两个值,AAAb^\hat bb^,需要辨别出看到的到底是一个LWE问题实例b^=As+e\hat b = As+eb^=As+e,还是一个随机变量vvv
由于LWE问题本身就是困难的,所以从As+eAs+eAs+e中提取出未知变量xxx来是很困难的,也就是,在我们眼中As+eAs+eAs+e和一个随机变量其实没多大区别,没法获取有价值的信息。
一般来说参数一个个生成比较费力,所以一般都指定一个参数例如nnn然后交给一个函数f(n)f(n)f(n)来生成其他参数的输出,只要保证参数生成符合要求即可。

Regev加密算法

这是一个基于DLWE(决策性LWE问题)的格密码学中的公钥加密系统

具体内容

在这里插入图片描述

正确性验证
将解密部分计算展开
x~=c1−c0⋅s=rTb+q/2⋅x−rTAs=rT(As+e)−rTAs+q/2⋅x=rTe+q/2⋅x\begin{array}{c} \tilde{x}=c_{1}-c_{0} \cdot s \\ =r^{T} b+q / 2 \cdot x-r^{T} A s \\ =r^{T}(A s+e)-r^{T} A s+q / 2 \cdot x \\ =r^{T} e+q / 2 \cdot x \end{array} x~=c1c0s=rTb+q/2xrTAs=rT(As+e)rTAs+q/2x=rTe+q/2x
在这里插入图片描述
把有限素数域所有数字连接起来形成一个环状结构,当需要加密一个bit的时候,把这个bit映射到环上去,0代表环的一头(即0),1代表环的另一头(即q/2)。我们叠加的噪音就等于是把这个映射的点往上或者往下位移了一部分,这样只要噪音的大小不过分(低于q/4),我们就可以通过看这个值到底在环的哪一侧来判断这个bit的具体取值了。但是一旦叠加噪音超过了临界值,那么就无法判断bit的值了。
在这里插入图片描述
假如,噪音变大了,就有可能导致误差上限超过临界值,一旦超过,那么0和1极有可能映射到相同的点上去,那就导致解密失败。
在这里插入图片描述

参考

格密码学与LWE问题(强推!)
On Lattices, Learning with Errors,
Random Linear Codes, and Cryptography(Regev)

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

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

相关文章

android studio2021.3.1 最新xposed模块编写指南

前言 最新的xposed框架已经从xposed到Edxposed再到Lsposed,虽然xposed的api依然是通用的82版本,但现在网上大多数的在android studio上配置xposed的教程已经有点落后了,因此写下这篇来记录自己安装的流程。lsposed如何安装可以看我之前的小米…

CPU 和 CPU Core 有啥区别?多核 CPU?多个 CPU?单核 CPU 为何也支持多线程呢?

由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。 CPU 组成 CPU 全…

JavaSE --- 学Java你应该知道的历史

目录 一. Java的历史 1. Java的发明人詹姆斯高斯林 2. Java的logo 3. java的发展 二. Java 语言的特性 🐖🐖🐖🐖如果喜欢!!🐂🐂🐂🐂 🐖&#x1f4…

创建PyQt项目需要配置三个的External Tools

1. Qt Designer:Qt设计器 Qt Designer D:\PyQtLearning\venv\Lib\site-packages\QtDesigner\designer.exe $ProjectFileDir$ 2. PyUIC:将.ui文件转换为.py文件 PyUIC D:\PyQtLearning\venv\Scripts\pyuic5.exe -o $FileNameWithoutExtension$.py $Fi…

Apache HBase API及备份与还原

一、Apache HBase API Apache HBase也适用于多个外部API。有关更多信息,请参阅Apache HBase外部API(将在下一节的内容中介绍)。 有关使用本机HBase API的信息,请参阅User API Reference和HBase API章节。 示例: 使…

JVM-2.垃圾回收

目录 一、如何判断对象可以回收 1.1 引用计数法 1.2 可达性分析算法 二、五种引用 2.1 强引用 2.2 软引用(SoftReference) 2.3 弱引用(WeakReference) 2.4 虚引用(PhantomReference) 2.5 终结器引…

07 hook学习01

hook学习01Hooks理解useStateuseEffect自定义hook函数Hooks理解 react组件分为类组件和函数组件 函数组件是一个更加匹配react的设计理念UI f(data),利于逻辑拆分与重用的组件表达形式,而之前的函数组件是不可以有自己的状态的,为了能让函…

第二章:微服务架构构建

第二章&#xff1a;微服务架构构建 2.1&#xff1a;IDEA新建project工作空间 父工程步骤 New Project 聚合总父工程名字 Maven版本选择 字符编码 注解生效激活 Java编译版本选择8 父工程pom文件 <?xml version"1.0" encoding"UTF-8"?&g…

谷粒商城 nacos

下载nacos&#xff1a;https://github.com/alibaba/nacos/releases启动 startup.cmd -m standalone依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></depende…

(附源码)计算机毕业设计ssm大学生健康系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Vue学习第37天——.sync修饰符、$attrs和$listeners属性的使用场景和案例

目录一、.sync修饰符作用使用场景使用方法案例.sync修饰符的优势二、$attrs作用使用场景使用方法案例$attrs注意点三、$listeners作用使用场景使用方法案例$listeners注意点一、.sync修饰符 作用 之前组件进行双向绑定时&#xff0c;需要通过proos进行父传子&#xff0c;再通…

Python 实现DNS查询放大攻击

查询放大攻击的原理是&#xff0c;通过网络中存在的DNS服务器资源&#xff0c;对目标主机发起的拒绝服务攻击&#xff0c;其原理是伪造源地址为被攻击目标的地址&#xff0c;向DNS递归服务器发起查询请求&#xff0c;此时由于源IP是伪造的&#xff0c;固在DNS服务器回包的时候&…

六自由度模拟飞行C++教程

六自由度模拟飞行C教程 带引导、控制和导航 课程英文名&#xff1a;Flight Dynamics in Six Degrees of Freedom 此视频教程共14.5小时&#xff0c;中英双语字幕&#xff0c;画质清晰无水印&#xff0c;源码附件全 下载地址 百度网盘地址&#xff1a;https://pan.baidu.com…

云原生|kubernetes|k8s集群测试时的一些基本操作

前言&#xff1a; kubernetes集群作为一个能够明显提升生产力的工具&#xff0c;还是需要多多练习一些基本操作的&#xff0c;我说的基本操作主要是针对基本的测试环节而不是生产环境下的操作。例如&#xff0c;在生产环境下用命令行启动一个pod并通过NodePort把这个pod运行的…

前端性能优化 - 华为面试题

前端性能优化面试题 前端性能优化总体来说分为 &#xff1a;优化请求、打包优化、代码优化 。 文章目录前端性能优化面试题Ⅰ、如何优化请求图片方面① 精灵图 ② 小图标 Base64③ 图片懒加载④ 图标库 采用 svg请求内容方面 ① 减少请求内容大小 ②更改请求方式③ 防抖节流④…

PyCharm 的初始设置

PyCharm 的官方网站地址&#xff1a;https://www.jetbrains.com/pycharm/ 教育版下载地址&#xff1a;https://www.jetbrains.com/pycharm-edu/download/#sectionlinux 专业版下载地址&#xff1a;https://www.jetbrains.com/pycharm/download/#sectionlinux 1、恢复 PyCharm …

视觉里程计

2D-2D&#xff1a;对极几何 C0, C1分别是两个位置中相机的光心&#xff0c;也就是针孔相机模型中的针孔 P是空间中的一个三维点&#xff0c;p0, p1分别是P点在不同成像平面上对应的像素点 C0-C1-P-p0-p1他们都是在同一个平面上的&#xff0c;你可以想象C0-C1-P组成的平面是一个…

5_循环神经网络 RNN

RNN什么是RNN序列数据处理序列数据的神经网络RNN弊端LSTM什么是RNN 循环神经网络RNN用于语言分析, 序列化数据。 序列数据 有一组序列数据 data 0,1,2,3. 在当预测 result0 的时候,我们基于的是 data0, 同样在预测其他数据的时候, 我们也都只单单基于单个的数据. 每次使用的…

零基础小白复现Java 若依项目

若依项目1 概述2 环境配置3 打包项目4 导入项目5 配置项目数据库连接&#xff0c;数据源配置6 然后运行代码1 概述 RuoYi-Vue 是一个 Java EE 企业级快速开发平台&#xff0c;基于经典技术组合&#xff08;Spring Boot、Spring Security、MyBatis、Jwt、Vue&#xff09;&#x…

redis常用命令,redis入门,启动redis,启动哨兵

Redis服务器默认使用6379号端口&#xff0c;通过–port参数可以自定义端口号&#xff1a; 正确停止Redis的方式应该是向Redis发送SHUTDOWN命令&#xff0c;方法为&#xff1a; Redis可以妥善处理SIGTERM信号&#xff0c;所以使用kill Redis进程的PID也可以正常停止Redis&#…