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

目录

一. 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.rhkb.cn/news/238206.html

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

相关文章

【Linux】应用与驱动交互及应用间数据交换

一、应用程序与 Linux 驱动交互主要通过以下几种方式: 1. 系统调用接口(System Calls): 应用程序可以通过系统调用,如 open(), read(), write(), ioctl(), 等来与设备驱动进行交互。这些调用最终会通过内核转发到相应的驱动函数…

感染嗜肺军团菌是什么感觉?

记录一下最近生病的一次经历吧,可能加我好友的朋友注意到了,前几天我发了个圈,有热心的朋友还专门私信了我说明了他自己的情况和治疗经验,感谢他们。 ​ 那么关于这次生病的经历,给大家分享一下。 首先,这次…

解锁 JavaScript 数组的强大功能:常用方法和属性详解(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

70.网游逆向分析与插件开发-角色数据的获取-自动化助手UI显示角色数据

内容参考于:易道云信息技术研究院VIP课 上一个内容:利用技能点属性分析角色数据基址-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:367aa71f60b…

C++ 完成Client分页显示log

分页显示t_log 1、获取用户的输入 1.1、写一个Input成员函数&#xff0c;处理输入进来的语句 std::string XClient::Input() {//清空缓冲//cin.ignore(4096, \n);string input "";for (;;){char a getchar();if (a < 0 || a \n || a \r)break;cout <<…

蓝桥杯准备

书籍获取&#xff1a;Z-Library – 世界上最大的电子图书馆。自由访问知识和文化。 (zlibrary-east.se) 书评&#xff1a;(豆瓣) (douban.com) 一、观千曲而后晓声 别人常说蓝桥杯拿奖很简单&#xff0c;但是拿奖是一回事&#xff0c;拿什么奖又是一回事。况且&#xff0c;如果…

LeetCode讲解篇之78. 子集

文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个start变量记录当前从哪里开始遍历搜索nums 搜索过程的数字组合加入结果集 然后从start下标开始遍历nums&#xff0c;更新start&#xff0c;递归搜索 直到搜索完毕&#xff0c;返回结果集 题解代码 class …

wxWidgets实战:使用mpWindow绘制阻抗曲线

选择模型时&#xff0c;需要查看model的谐振频率&#xff0c;因此需要根据s2p文件绘制一张阻抗曲线。 如下图所示&#xff1a; mpWindow 左侧使用mpWindow&#xff0c;右侧使用什么&#xff1f; wxFreeChart https://forums.wxwidgets.org/viewtopic.php?t44928 https://…

npm run dev,vite 配置 ip 访问

启动项目通过本地 ip 的方式访问 方式一.通过修改 package.json "scripts": {"dev": "vite --host 0.0.0.0",}, 方式二.通过修改 vite.config.ts export default defineConfig({plugins: [vue(), vueJsx()],server: { // 配置 host 与 port 方…

AI大模型学习笔记二

文章目录 一、Prompt Engineering1&#xff09;环境准备 二、LangChain&#xff08;一个框架名字&#xff09;三、Fine-tuning&#xff08;微调&#xff09; 一、Prompt Engineering 1&#xff09;环境准备 ①安装OpenAI库 pip install --upgrade openai附加 安装来源 pyth…

DDNS-GO配置使用教程

环境&#xff1a;openwrt 下载地址&#xff1a;Releases jeessy2/ddns-go GitHub 下载 ssh至openwrt根目录&#xff0c;根据你的处理器选择要下载的版本&#xff0c;我是路由器&#xff0c;选择的是 ddns-go_5.7.1_linux_arm64.tar.gz wget github链接 安装 tar -zxvf…

基于STM32的CMT液晶屏控制器驱动程序设计与优化

本文以STM32微控制器为基础&#xff0c;设计并优化了一个用于控制CMT液晶屏的驱动程序。在设计过程中&#xff0c;我们首先介绍了液晶屏的基本工作原理&#xff0c;包括CMT液晶屏的结构和信号传输机制。然后&#xff0c;我们详细讨论了STM32微控制器的GPIO、SPI和DMA模块的特性…

Windows下面基于pgsql15的备份和恢复

一、基础备份 1.创建一个文件用来存储备份数据 2.备份指令 $CurrentDate Get-Date -Format "yyyy-MM-dd" $OutputDirectory "D:\PgsqData\pg_base\$CurrentDate" $Command "./pg_basebackup -h 127.0.0.1 -U postgres -Ft -Pv -Xf -z -Z5 -D $O…

分布形态的度量_峰度系数的探讨

集中趋势和离散程度是数据分布的两个重要特征,但要全面了解数据分布的特点&#xff0c;还应掌握数据分布的形态。 描述数据分布形态的度量有偏度系数和峰度系数, 其中偏度系数描述数据的对称性,峰度系数描述与正态分布的偏离程度。 峰度系数反映分布峰的尖峭程度的重要指标. 当…

书生·浦语大模型实战营笔记(四)

Finetune模型微调 直接使用现成的大语言模型&#xff0c;在某些场景下效果不好&#xff0c;需要根据具体场景进行微调 增量预训练&#xff1a;投喂垂类领域知识 陈述形式&#xff0c;无问答&#xff0c;即只有assistant 指令跟随&#xff1a;system-user-assistant XTuner …

【Git】本地仓库管理远程库(GitHub)——clone(下载)、commit(添加到本地仓库)、push(提交到远程仓库)、pull(拉取)操作

目录 使用远程仓库的目的将本地仓库同步到git远程仓库 1.克隆远程仓库(clone)2.新建一个文件3.将工作区的文件添加到暂存区4.将暂存区的文件添加到本地仓库(commit)5.提交(同步)到远程仓库(push)6.远程库拉取到本地库(pull)7.团队协作开发和跨团队协作开发(开源项目) 使用远程…

CSS 圆形分割按钮动画 带背景、图片

<template><view class="main"><view class="up"> <!-- 主要部分上 --><button class="card1"><image class="imgA" src="../../static/A.png"></image></button><butt…

Blazor 的基本原理探索

背景 为了提升开发效率&#xff0c;关键是对js不够熟悉&#xff0c;所以要使用C#进行全栈的开发&#xff0c;使用了mudblazor和radzen blazor&#xff0c;以及可能会用到其他的blazor组件&#xff0c;所有很有必要对blazor有个比较全面的不求甚解&#xff0c;其基本原理以及bl…

MVC设计模式和与三层架构的关系

MVC设计模式和与三层架构的关系 MVC是一种设计模式&#xff0c;将软件按照模型、视图、控制器来划分&#xff1a; M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为数据承载Bean&#x…

快速了解VR全景拍摄技术运用在旅游景区的优势

豆腐脑加了糖、烤红薯加了勺&#xff0c;就连索菲亚大教堂前都有了“人造月亮”&#xff0c;在这个冬季&#xff0c;“尔滨”把各地游客宠上了天。面对更多的游客无法实地游玩&#xff0c;哈尔滨冰雪世界再添新玩法&#xff0c;借助VR全景拍摄技术对冬季经典冰雪体验项目进行全…