格密码基础:SIS问题的困难性

news2024/11/18 6:36:33

目录

一. SIS问题的困难性

二. SIS问题归约的性质

2.1 2004年 [MR04]

2.2 2008年 【GPV08】

2.3 2013年【MP13】

三. 归约证明

3.1 核心理解

3.2 归约步骤

3.3 性质理解


一. SIS问题的困难性

推荐先阅读:

格密码基础:SIS问题的定义与理解-CSDN博客

借鉴1996年Ajtai的工作,大量的工作开始研究最坏情况下的SIS问题的困难性。SIS问题中一共有四个参数n,q,\beta,m,需要满足如下:

m=poly(n)\quad \beta>0\quad q>\beta\cdot poly(n)

如果能以不可忽略的概率解决SIS问题,那么就可以在随机的n维格上,解决近似GapSVP和SIVP问题。此处的近似因子取值为:

\gamma=\beta\cdot poly(n)

GapSVP:decisional approximate shortest vector problem,判定性近似最短向量问题

SIVP: approximate shortest indenpendent vectors problem

需要注意的是m和q的值会极大影响SIS问题的困难性,而且根据归约准则,当范数上限\beta值越大时,GapSVP和SIVP问题的近似因子也会变大。整个多项式时间复杂度的归约分成两步:

  1. 假设存在一个oracle可以解决SIS问题
  2. 利用此oracle尝试在任意n维格上解决近似的GapSVP和SIVP问题

二. SIS问题归约的性质

理论上,我们希望归约时的模q和近似因子(approximation factor)\gamma越小越好,因为这样可以产生更小的实例(instance)和密码学的公私钥,以及更强的网络安全性保证。接下来,我们来看几个SIS问题归约时重要的发展历程:

2.1 2004年 [MR04]

在2004年,Micciancio 和 Regev引入了格上高斯分布和调和分析(harmonic analysis),从而导出了格密码中重要的概念,叫做光滑参数(smoothing parameter),写做:

\eta(L)

如果在格点周围外加一个噪声,该噪声分布服从高斯分布。当分布的方差大于格的光滑参数时,离散的格点就可以变成连续的均匀分布。对于光滑参数有一种直观的形式化语言,如下:

The amount of Gaussian error needed to “smooth out” the discrete structure of a lattice.

借助此理论便可以产生均匀且随机的SIS实例,从而对任意输入的格均满足推论。在此论文中,近似因子的取值为:

\gamma=\beta\cdot \tilde O(\sqrt n)

当选择合适的\beta值时,近似因子可取:

\gamma=\tilde O(n)

此时模q可取:

q=\beta\cdot \tilde O(n\sqrt m)

可以看到以上两者的取值都相对较小。

2.2 2008年 【GPV08】

在2008年,Gentry, Peikert 和Vaikuntanathan将模数q的值优化到:

q=\beta\cdot \tilde O(\sqrt n)

此时的近似因子与2004年的工作类似:

\gamma=\beta\cdot \tilde O(\sqrt n)

此论文创新性提出了离散高斯分布(discrete Gaussian),待会我们会简单分析此理论。

2.3 2013年【MP13】

在2013年,Micciancio 和 Peikert将模数q优化到:

q=\beta\cdot n^\epsilon

其中\epsilon为大于0的常数。

如果把n^\epsilon看成固定的常数的话,此时的q已经是最优的了。因为SIS问题中,总存在平凡解就是q。

借助卷积引理(convolution lemma),在利用SIS的oracle进行归约时,此理论需要使用到l_\infty范数,而不是常规的l_2范数。

三. 归约证明

SIS问题的困难性涉及到最坏情况和平均情况(worst case/average case)的归约证明。该归约的思路:给定任意n维格L的格基B,已知一个平均情况的SIS的oracle,目标是解决SIVP问题。

在这里简单解释下近似的SIVP问题:

给定近似因子\gamma=poly(n),尝试找出n个线性独立的格向量,它们的长度都小于:

\gamma\cdot \lambda_n(L)

3.1 核心理解

首先输入格基B,从此格中随机选择一部分独立的格向量S,也就是:

S\subseteq L

将此处的S看成一个矩阵。接着利用SIS oracle不断对该矩阵进行归约运算,使其长度至少缩短一半以上,也就是:

||S'||\leq \frac{||S||}{2}

备注:此处矩阵的长度代表其中最长向量的长度,也就是:

||X||=max_i||x_i||\quad X=\lbrace x_i\rbrace

不断迭代重复,直到最终的结果符合SIVP问题的要求。

3.2 归约步骤

第一步:取样

借助格L上的离散高斯分布,采样出m个随机的格点,形成集合S,也就是:

v_i\in L

这些初始向量不会太长。接着将这m个向量形成矩阵V

第二步:形成SIS oracle的输入

运算得到:

a_i=B^{-1}v_i\quad mod\ qZ^n

重复运算m次,由此可得:

A=B^{-1}V\quad mod\ qZ^{n\times m}

需要注意的是,因为v_i是格点,所以B^{-1}v_i一定是整数的。

接着从此时的矩阵A输入到SIS的oracle中。

第三步:运算

SIS的oracle会输出一个解,也就是:

z\in Z^m

那么可得:

v=Vz/q

很明显发现此时的向量长度在变小。

3.3 性质理解

(1)SIS oracle分析

根据以上归约过程,给定一个矩阵A,z为其SIS问题的答案。因为v_i是格点,所以可得:

v_i=Ba_i\quad mod\ qL

由此可运算:

所以可得以下运算出的v为L格点:

v=Vz/q\in L

SIS求解出的z长度是有上限的,也就是:

||z||\leq \beta

在产生向量v时,使其满足:

||v_i||\leq ||S||\cdot poly(n)

两者结合可得:

||Vz||\leq ||S||\cdot \beta\cdot poly(n)

当我们选择模数q如下:

q=\beta\cdot poly(n)

即可以得到:

||v||=||Vz||/q\leq ||S||/2

第一轮迭代完成。

(2)矩阵A均匀分布

借助光滑参数,v_i在一定条件下均匀分布:

\gamma\geq \beta\cdot poly(n)\geq q

也就是:

v_i\quad mod\ qL\quad L/qL

此处说明v在模qL上为均匀分布,再根据:

a_i=B^{-1}v_i

B是确定的,也就是a和v之间是双射运算,所以可得矩阵A也是均匀分布(严格来讲应该是跟均匀分布不可区分)。

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

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

相关文章

数据仓库(3)-模型建设

本文从以下9个内容,介绍数据参考模型建设相关内容。 1、OLTP VS OLAP OLTP:全称OnLine Transaction Processing,中文名联机事务处理系统,主要是执行基本日常的事务处理,比如数据库记录的增删查改,例如mysql、oracle…

C++面试宝典第19题:最长公共前缀

题目 编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串""。说明:所有输入只包含小写字母a-z。 示例1: 输入: ["flower", "flow", "flight"]输出: "fl" 示例2: 输入: ["dog",…

进阶Docker2:数据卷和挂载目录

目录 准备 删除容器 创建并运行一个容器 数据卷(Volumes) 挂载数据卷 虚拟机端口映射 挂载目录(Bind mounts) 挂载目录 挂载文件 部署在线项目 docker 在容器中管理数据主要有两种方式: - 数据卷&#xff0…

第一次在RUST官方论坛上留言发布我的Rust板箱

第一次在RUST官方论坛上发帖子,有点紧张~地址在这里: 【My Rust Crate】obtains linux local information - The Rust Programming Language Forum (rust-lang.org)

codeforces (C++ Satisfying Constraints)

题目: 翻译: 思路: 1、找到最大的下限min 2、找到最小的上限max 3、则max-min1满足1、2约束条件的个数 4、max-min1减去约束条件3的个数,即为最终答案 5、如果min大于max,则结果为0,不存在满足约束条件的数…

BuildRoot配置RTL8822CE WIFIBT模块(WIFI部分)

TinkerBoard2主板自带的无线模块为RTL8822CE,PCIe接口 之前在风火轮下载的Linux源码编译出来的BuildRoot根文件系统没有相关的驱动文件 [rootrk3399:/]# find . -name *.ko [rootrk3399:/]# lsmod Module Size Used by Not tainted [rootrk33…

流星全自动网页生成系统重构版源码

流星全自动网页生成系统重构版源码分享,所有模板经过精心审核与修改,完美兼容小屏手机大屏手机,以及各种平板端、电脑端和360浏览器、谷歌浏览器、火狐浏览器等等各大浏览器显示。 为用户使用方便考虑,全自动网页制作系统无需繁琐…

专业课140总分410+大连理工大学852信号与系统考研经验电子信息与通信

通过将近一年的复习,今年如愿以专业140分,总分410被大连理工录取,回望这一年复习还是有很多做的不足,整理了一下自己复习的经验,希望可以对后面报考大连理工的同学有所帮助。●政治: 真心建议大家至少暑假…

android.os.NetworkOnMainThreadException

问题 android.os.NetworkOnMainThreadException详细问题 核心代码如下: import android.os.Bundle;import androidx.appcompat.app.AppCompatActivity;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ja…

(菜鸟自学)搭建虚拟渗透实验室——安装Ubantu 8.10 靶机

安装Ubantu 8.10 靶机 新建虚拟机 选择Ubuntu系统 网络适配器模式选用桥接模式 镜像选用ubuntu8.10版本 点击“开启此虚拟机”以开始安装Ubuntu Linux系统 安装ubuntu 首先需要选择安装时的语言,这里选择“中文(简体)” 选择“安装…

Jenkins-Maven Git

整合Maven 安装GIT #更新yum sudo yum update #安装git yum install git 安装Maven插件,在插件管理中心: 配置仓库 配置密码认证 我们可以在这个目录下看到Jenkins 帮我们拉取了代码 /env/liyong/data/docker/jenkins_mount/workspace/maven-job 配置maven打包…

FL studio V21.3.2304 最新中文版激活版百度网盘

FL Studio是一款非常专业的水果音乐制作软件,软件功能齐全,拥有编曲、剪辑、录音、混音等功能,可以满足用户的各种音乐制作需求。软件已经成功破解,全中文的软件界面,去除了试用时间限制,有需要的快来下载吧…

第十三讲 单片机驱动彩色液晶屏 bin档的烧录方法

单片机驱动TFT彩色液晶屏系列讲座 目录 第一讲 单片机最小系统STM32F103C6T6通过RA8889驱动彩色液晶屏播放视频 第二讲 单片机最小系统STM32F103C6T6控制RA8889驱动彩色液晶屏硬件框架 第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化 第四讲 单片机驱动彩色液晶屏 控…

【自控实验】1. 线性系统串联超前校正实验

本科课程实验报告,有太多公式和图片了,干脆直接转成图片了 仅分享和记录,不保证全对 串联超前校正实验:频域设计计算(校正装置),时域观察验证(校正结果) 使用matlab中的simulink进行仿真

343. 整数拆分(动态规划)

题目: 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 10 输出…

01 SpringMVC的快速理解

1.1 如图所示,SpringMVC负责表述层(控制层Controller)实现简化! SpringMVC的作用主要覆盖的是表述层,例如: 请求映射、数据输入、视图界面、请求分发、表单回显、会话控制、过滤拦截、异步交互、文件上传…

【Python数据可视化】matplotlib之增加图形内容:设置图例、设置中文标题、设置网格效果

文章传送门 Python 数据可视化matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

雪花算法及Java实现

一、全局唯一ID介绍 1、背景 现如今越来越多的公司都在用分布式、微服务,那么对应的就会针对不同的服务进行数据库拆分,然后当数据量上来的时候也会进行分表,那么随之而来的就是分表以后id的问题。 例如之前单体项目中一个表中的数据主键id…

10.抽象工厂模式

江湖上再也没人找林家的麻烦了。因为林平之一怒之下将辟邪剑谱公诸天下。一下子印出去几万份,江湖上人人都能轻而易举的得到这本无尚武学;然而江湖人士却陷入深深的矛盾之中: 不练,别人练了,分分钟秒杀你;练…

Qt QSlider滑动条控件

文章目录 1 属性和方法1.1 值1.2 方向1.3 步长1.4 信号和槽 2 实例2.1 布局2.2 代码实现 QSlider是滑动条控件,滑动条可以在一个范围内拖动,并将其位置转换为整数 最常见的应用就是视频播放器中的进度条 1 属性和方法 QSlider继承自QAbstractSlider&…