【格密码基础】基于LWE问题的密码系统

目录

一. 介绍

二. LWE密码方案简单介绍

三. LWE经典归约

四. LWE性质

五. LWE的鲁棒性


一. 介绍

在2005年,Regev基于LWE问题提出了一个新的公钥密码方案。该方案可实现语义安全(semantic security),其中误差率(error rate)为:

\alpha=\tilde \Omega(1/\sqrt n)

其安全性可利用量子算法归约到近似GapSVP和SIVP问题,其中近似因子取:

\gamma=\tilde O(n^{3/2})

该方案借鉴了两个工作,一个是1997年Ajtai-Dwork的工作,一个是2003年Regev的工作。但相比之下有两大优点比较突出。

优点1:一般性(generality)

该方案依赖的最坏(worst case)情况是近似GapSVP和近似SIVP问题。在网路安全领域,还有一个问题叫近似unique-SVP问题,有时也简称为uSVP问题。该问题的结构性太强了,不太适合进行归约证明困难性。

优点2:效率更高

有关密码方案的效率,我们关注很多方面,比如公钥尺寸,以前的方案公钥尺寸是\tilde O(n^4),该方案是\tilde O(n^2)

每次加密一个明文比特,私钥和密文的尺寸是一样的为:

\tilde O(n)

相比以前的方案是:

\tilde O(n^2)

如果将该方案推广到多用户,情况则变得很有意思。2005年,Ajtai指出可以利用密码方案来实现公共随机性共享,但很遗憾还不能证明其符合最坏情况的安全性。如果此过程能实现的话,那么所有用户共享的随机比特串可设定为:

\tilde O(n^2)

此时每个用户的公钥尺寸为:

\tilde O(n)

二. LWE密码方案简单介绍

实际上Regev的基于LWE的密码方案和安全性证明都和Ajtai-Dwork的工作很类似,所以此处就简单解释下。

方案的私钥为s,格式如下:

s\in Z_q^n

很明显可以说明私钥尺寸为\tilde O(n)

公钥则是随机选取一些LWE样本,当然这些样本对应的秘密s是一样的,如下:

(a_i,b_i)

假定样本个数近似n个,那么很容易计算公钥尺寸为:

\tilde O(n^2)

加密时,选择加密一个比特。从刚才的公钥LWE样本中选择一部分子集,然后相加,最后把消息比特隐藏于结果的最后一位,很容易计算密文的尺寸为:

\tilde O(n)

那么怎么解密呢?

密文要么很接近垂直于(-s,1)的子空间,要么很远。拥有私钥的人,则可以区分,也就可以解密出比特0或者比特1

当然密码学中,要想说明语义安全是需要设定严格的安全性证明试验。在敌手看来,根据LWE问题的困难性,是无法区分真随机分布和LWE分布的。

而且在这种设计的密钥下加密,是loosy的,也就是密文和明文信息比特是统计独立的,那么敌手区分加密0和加密1的优势则是可忽略的。

详细的密码方案在“格密码专栏”中,后续会不断更新。

在2005年,Regev提出LWE之后,有关其额外的困难性定理就不断涌现出来,比如基于经典归约的,基于leaky密钥的,更小的误差,更小的模等等,接下来本文章将解释几个比较重要的提高和扩展。

三. LWE经典归约

Regev利用量子算法实现了最坏情况归约,在2009年Peikert去量子化(dequantized),利用经典算法也实现了归约。其格公钥密码也依赖于一般格(genaral lattice),该格的结构性没有那么强(相比unique shortest vectors)。设定LWE问题的错误率为\alpha,其困难性可以归约到最坏情况的近似GapSVP问题,其中近似因子为:

\gamma=\tilde O(n/\alpha)

量子归约到GapSVP和SIVP问题上,但目前经典归约只能到GapSVP问题。

经典归约要求模数得指数大小,也就是在LWE问题中q的范围满足:

q\geq 2^{n/2}

量子归约只需要多项式尺寸大小的模数,也就是:

q\geq 2\sqrt n/\alpha

当然其实经典归约也可以到q=poly(n)的尺寸,但是这时对应的不是标准的GapSVP问题类型。

为啥我们对模数q的大小这么关注呢?

大的模数意味着在表示LWE样本时,需要更多的比特,导致密钥的尺寸变大,密码系统的效率则降低。

虽然经典归约还有许多限制,但是并不妨碍利用LWE问题来构建有效的密码学方案。

四. LWE性质

在2009年,Pei和Lyubashevsky-Micciancio分别在两篇论文中证明了,利用经典归约已经近似因子等于poly(n)时,以下几个问题是等效的:

GapSVP,uSVP,BDD

这也就意味着,虽然说Ajtai-Dwork的密码系统最开始是依赖uSVP问题的,但其实也可以依赖于GapSVP问题。

在2013年,Brakerski等人认为需要平衡LWE问题的维度与模数。他们认为,在固定错误率\alpha的前提下,LWE问题的困难性可以用nlogq来衡量,也就是跟n和q都有关系。举个例子来解释为什么这个结论很有用。

比如说,Peikert认为LWE可归约到n维格上的GapSVP问题,此时模数q满足:

q\geq 2^{n/2}

如果我们将维度提升到n^2,那么模数就只需要q=poly(n)即可。

此方案的证明过程使用到了全同态(fully homomorphic encryption)中的密钥切换(key switching)和模归约(modulus reduction)。当然只是借鉴这些技术,实际上会更加复杂,因为需要产生对应的LWE样本,而不是单纯的拥有小误差的样本。

五. LWE的鲁棒性

robustness,通常翻译成鲁棒性。

已有的研究表明,及时敌手学习到了关于秘密和错误的一些额外信息,LWE问题依旧是困难的。

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

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

相关文章

【云原生】Docker的镜像创建

目录 1.基于现有镜像创建 (1)首先启动一个镜像,在容器里做修改 ​编辑(2)然后将修改后的容器提交为新的镜像,需要使用该容器的 ID 号创建新镜像 实验 2.基于本地模板创建 3&am…

单链表的删除

设存储元素ai的结点为q,要实现将结点q删除单链表的操作,其实就是将它的前继结点的指针绕过,指向它的后继结点即可。 我们所要做的,实际上就是一步,p->nextp->next->next,用q来取代p->next&…

蓝凌OA sysUiExtend.do 任意文件上传漏洞复现

0x01 产品简介 蓝凌核心产品EKP平台定位为新一代数字化生态OA平台,数字化向纵深发展,正加速构建产业互联网,对企业协作能力提出更高要求,蓝凌新一代生态型OA平台能够支撑办公数字化、管理智能化、应用平台化、组织生态化,赋能大中型组织更高效的内外协作与管理,支撑商业…

shallowRef与shallowReactive

shallowRef&#xff1a;浅层响应->整体重新赋新值才会触发更新&#xff0c;只改变单个属性不会触发更新 shallowReactive&#xff1a;浅层响应->第一层属性变化会触发更新&#xff0c;不是第一层属性不会触发更新 <template><div><h2>{{ person }}&l…

[docker] Docker的数据卷、数据卷容器,容器互联

一、数据卷&#xff08;容器与宿主机之间数据共享&#xff09; 数据卷是一个供容器使用的特殊目录&#xff0c;位于容器中。可将宿主机的目录挂载到数据卷上&#xff0c;对数据卷的修改操作立刻可见&#xff0c;并且更新数据不会影响镜像&#xff0c;从而实现数据在宿主机与容…

81.网游逆向分析与插件开发-背包的获取-装备栏数据结构的逆向分析

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;自动化助手显示物品数据-CSDN博客 然后游戏中有弓箭&#xff0c;弓箭有数量&#xff0c;可以作为突破口&#xff0c;也可以使用物品id 获取弓的方式 获取弓箭的方式 然后搜索250 然后搜索出一个 然后…

Spring和 Springboot的区别你了解吗

什么是Spring The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. 简单来说Spring framework为基于Java的企业应用程序提供了全面的编程和配置模型&am…

Linux零碎点

目录 Linux基础命令 1、who&#xff1a; 2、hostname&#xff1a; 3、ifconfig&#xff1a; 4、pwd&#xff1a; 5、cd&#xff1a; 6、exit&#xff1a; 7、shutdown&#xff1a; 8、ls&#xff1a; 9、创建文件夹&#xff1a; 10、touch&#xff1a; 11、cp&#…

在百度云免费配置SSL证书 http改https操作

以下以在百度智能云上的操作为例&#xff0c;并不是给他打广告 1.购买域名 2.到域名管理处&#xff0c;解析网址&#xff0c;添加,*,www,指向服务器IP&#xff0c; 此时就可以访问网址&#xff1a;http://www.域名.cn 3.但是浏览器会报不安全&#xff0c;所以需要配置SSL证书…

【手写数据库toadb】10 开发数据库内核开发阶段-数据库模型

数据库内核模型介绍 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方…

acrobat调整pdf的页码和实际页码保持一致

Acrobat版本 具体操作 现在拿到pdf的结构如下&#xff1a; pdf页码实际页码1-10页无页码数11页第1页 操作&#xff0c;选择pdf第10页&#xff0c;右键点击 具体设置 最终效果

web前端之ES6的实用深度解构赋值方法、复杂的解构赋值

MENU 前言解构对象解构数组解构混用 前言 ES6中允许按照一定模式&#xff0c;从数组和对象中提取值&#xff0c;对变量进行赋值&#xff0c;这被称为解构(Destructuring)。 使用解构赋值可以将复杂的代码整理的更加干净整洁。 解构对象 在没有使用解构之前&#xff0c;想要确定…

实习日志5

活字格图片上传功能&#xff08;批量&#xff09; 这个报错真的恶心&#xff0c;又看不了他服务器源码&#xff0c;接口文档又是错的 活字格V9获取图片失败bug&#xff0c;报错404-CSDN博客 代码BUG记录&#xff1a; 问题&#xff1a;上传多个文件的base64编码被最后一个文…

【oracle】oracle客户端及oracle连接工具

一、关于oracle客户端 1.1 Oracle Client 完整客户端 包含完整的客户端连接工具。 包很大&#xff0c;需要安装 1.2 instantclient 即时客户端 是 Oracle(R) 发布的轻量级数据库客户端&#xff0c;减少甚至只包含几个文件&#xff0c;您无需安装标准的客户端&#xff0c;就可以…

mybatis plus入门

mybatis plus入门 MyBatis-Plus 是 MyBatis 的一个增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。它继承了 MyBatis 原生的所有特性&#xff0c;并且做了深度的优化和扩展。以下是 MyBatis-Plus 的一些主要特性和功能&#…

视频渲染靠cpu还是显卡 会声会影视频渲染的作用是什么

视频渲染最占用的资源就是CPU&#xff0c;多核心多线程&#xff0c;这样才能渲染快。渲染可以在时间线上实时平滑预览&#xff0c;便于编辑&#xff0c;最终导出成片的时候速度也会快一些&#xff0c;渲染就是对每桢的图像进行重新优化的过程。 渲染的作用主要是能够保证使用者…

Layui技术积累

2024.01.24 1.Layui 栅格系统 在 Layui 的栅格系统中&#xff0c;屏幕尺寸的划分为&#xff1a; 中等屏幕&#xff08;md&#xff09;&#xff1a; 12 列小屏幕&#xff08;sm&#xff09;&#xff1a; 12 列极小屏幕&#xff08;xs&#xff09;&#xff1a; 12 列 不同的类名…

【java面试】Spring

目录 1. Spring 介绍1.1 Spring 的优点1.2 Spring 的缺点1.3 详细讲解一下核心容器&#xff08;spring context应用上下文) 模块 2. Spring俩大核心概念IOC&#xff0c;Inversion of Control&#xff0c;控制反转AOP(Aspect-OrientedProgramming)&#xff0c;面向切面编程Sprin…

海量数据场景下的热门算法题(算法村第十五关白银挑战)

从40亿中产生一个不存在的整数 给定一个输入文件&#xff0c;包含40亿个非负整数&#xff0c;请设计一个算法&#xff0c;产生一个不存在该文件中的整数&#xff0c;假设你有1GB的内存来完成这项任务。 进阶&#xff1a;如果只有10MB的内存可用&#xff0c;该怎么办&#xff1f…

Gradle学习笔记:Gradle的使用方法

文章目录 1.初始化项目2.构建脚本语言选择3.项目命名4.项目构建过程 1.初始化项目 创建一个test空文件夹&#xff0c;在该文件夹下打开终端&#xff0c;并执行命令&#xff1a;gradle init. 会有一个选项让你选择项目的类型。下面是每个选项的含义和用途&#xff1a; basic&am…