格密码基础:SIS问题的定义与理解

news2025/4/23 0:14:01

目录

一. 介绍

二. SIS问题定义

2.1 直观理解

2.2 数学定义

2.3 基本性质

三. SIS与q-ary格

四. SIS问题的推广

五. Hermite标准型

六. 小结


一. 介绍

short interger solution problem短整数解问题,简称SIS问题。

1996年,Ajtai首次提出SIS问题,由此设计出了单向函数(one-way function),抗碰撞的哈希函数(collision resistant hash function),身份验证方案(identification scheme),数字签名(digitao signatures)等等。这些在网络安全领域,可以被称之为minicrypt原语。

本文章将介绍SIS问题,探究它与最坏情况格问题的关系,研究其基本的性质以及密码学中的应用。

二. SIS问题定义

2.1 直观理解

SIS问题的抽象代数表达形式:

在一个有限但足够大的加法群(additive group)中,所有的元素都是均匀且随机可以被取到的,如何寻找一种整数倍的组合,使他们的和为0,且要求这种组合的足够短。这个问题是困难的。

如果给出一些参数,问题会变得更加距离。

给出一个正整数n和q,由此形成群:

z_q^n

给定一个正实数\beta,从群中抽取m个样本。

在以上这些参数中,m有的时候会被省略不写,n是我们通常所说的安全参数(比如n>100),要求q\beta与n之间呈现多项式关系,且满足:

q>\beta

2.2 数学定义

给定m个均匀随机的n维向量a_i\in Z_q^n,将他们作为矩阵的列,由此形成A\in Z_q^{n\times m}。如何寻找一个非零的整数向量z\in Z^m,且范数满足||z||\leq \beta,使其满足:

理解:

f_A(z)可以看成SIS函数,A为公开的下标。很明显该函数正向计算容易,逆向计算z困难。

2.3 基本性质

(1)z的长度

如果不限定向量z的长度,那么可以直接借助高斯消元法(Gaussian elimination)找出一个答案z。另外z的上限肯定满足:

\beta<q

如果不限定的话,则会出现很多平凡解(trivial),比如:

z=(q,0,\cdots,0)\in Z^m

(2)扩展矩阵

将矩阵A可以扩展为:

[A|A']

原来的z增加后续的0即可,此时解z的范数是不会改变的。简单来讲就是,当m增大时,SIS问题会变得简单。当n增加时,SIS问题会变得困难。

(3)参数的取值范围

向量z的范数上限\beta以及向量a_i的样本个数m都需要足够大,来保证问题至少有解。根据鸽子洞理论(pigeonhole argument),我们考虑一个临界值如下:

m>nlog q

此时向量x\in\lbrace 0,1\rbrace^m的空间至少大小为:

2^m=2^{nlogq}=q^n

说明在Z^n_q中至少有两个重复的解,也就是存在不同的x,x'满足:

Ax=Ax'\in Z_q^n

将两者相减可得:

A(x-x')=0

换句话说z=x-x',且其范围是:

z=x-x'\in\lbrace 0,\pm1\rbrace^m

也就是保证了SIS问题的有解性。也就是SIS问题中的参数需要满足:

\beta\geq \sqrt{\bar m}\quad m\geq \bar m\quad \bar m=nlogq

(4)抗碰撞的SIS函数

将此处小整数解定义为只能取0或1,那么可形成如下函数族:

\lbrace f_A:\lbrace 0,1\rbrace^m\to Z_q^n\rbrace

假定SIS问题是困难的,说明找不到其对应的短整数解z,也就找不到两个不同的x使其函数相等,也就是:

x,x'\in\lbrace 0,1\rbrace^m\quad f(x)\neq f(x')

当然此处的小整数不仅仅只能取0和1,推广其他较小的范围也可以。

三. SIS与q-ary格

网络安全领域有一个很有意思的m维整数格,叫做q-ary垂直格。SIS问题可以看成平均情况的短向量问题,如下:

很明显qZ^m是其子格。

借鉴编码理论(coding theory),此处的矩阵A可以看成q-ary垂直格的校验矩阵。SIS问题与SVP问题之间的关系:

均匀随机选择A,SIS问题的本质就是在q-ary垂直格L^\bot(A)上找到一个足够短的非零向量。

四. SIS问题的推广

SIS问题的推广也可以称之为inhomogeneous版本。也就是当均匀且随机选择矩阵A和向量u时,尝试找出如下等式足够短的整数解x:

Ax=u\in Z_q^n

如果不限定向量的长度,此方程所有的解可以构成陪集格(lattice coset),如下:

L_u^\bot(A)=c+L^\bot(A)

其中c\in Z^m,为方程的解。

选择合适的参数,推广后的SIS问题和原来的SIS问题是等效的。

五. Hermite标准型

原始的SIS问题中的矩阵A为n行m列,我们可以把该矩阵切成两个块状矩阵,一个矩阵是n行n列,一个矩阵是n行m-n列,由此可得:

A=[A_1|A_2]\in Z_q^{n\times m}

很明显A1矩阵为方阵,可以直接求逆。接着我们对A进行变换可得:

将In作为可忽略的子矩阵。因为矩阵A2是均匀随机的,与A1是互相独立的,可得\bar A也是均匀且随机的。也就是以下两个矩阵的SIS问题的解是相同的:

A\quad [I_n|\bar A]

所以可得矩阵A和\bar A是互相等效的。

其实这个地方对矩阵的变换,类似于网络安全纠错码(error-correcting code)中对称的生成矩阵。

六. 小结

随着网络安全的快速发展,能够抵抗量子计算攻击且支持数据隐私保护和安全处理的密码算法是目前的迫切需求。基于格的密码体制被普遍认为能够抵抗量子计算攻击,所以其研究近十年来发展迅速。从格算法应用于分析非格公钥密码体制如背包密码体制、RSA 体制的安全性,发展到基于格计算困难问题的密码体制设计,再到基于格计算困难问题设计全同态加密体制。

针对格中SVP问题的求解,第一个格基约化算法是在1982年提出的 LLL算法。该算法可以在多项式时间内,输出近似短向量。LLL算法也是至今唯一可以证明是多项式时间运行的格基约化算法。LLL算法的提出对格理论的研究,特别是公钥密码算法分析起到了很大的推动作用,另外 LLL算法在计算代数和计算数论等领域也有广泛的应用,已被公认为是20世纪最重要的算法之一。

推荐阅读:

格密码LLL算法:如何解决最短向量SVP问题(1)-CSDN博客

格密码LLL算法:如何解决最短向量SVP问题(2)_lll算法复杂度-CSDN博客

格密码LLL算法:如何解决最短向量SVP问题(3)(完结篇)-CSDN博客

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

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

相关文章

Unity Shader 属性的定义

Unity Shader 属性的定义 什么是材质球 人的衣服 什么是shader 决定材质跟灯光的作用 Property 若是把shader看作class&#xff0c;那么Property就可以看成成员变量 属性定义的通用格式 Properites{ Property[Property…] } ep:定义一个int&#xff1a; name("dis…

LLM漫谈(三)| 使用Chainlit和LangChain构建文档问答的LLM应用程序

一、Chainlit介绍 Chainlit是一个开源Python包&#xff0c;旨在彻底改变构建和共享语言模型&#xff08;LM&#xff09;应用程序的方式。Chainlit可以创建用户界面&#xff08;UI&#xff09;&#xff0c;类似于由OpenAI开发的ChatGPT用户界面&#xff0c;Chainlit可以开发类似…

基于TCP的全双工网络编程实践

首先我们先了解一下什么是全双工通信&#xff1f; 全双工数据通信允许数据同时在两个方向上传输&#xff0c;因此&#xff0c;全双工通信相当于是两个单工通信方式的结合&#xff0c;它要求发送设备和接收设备都有独立的接收和发送能力。 TCP服务端代码&#xff1a; #includ…

最新地图下载器(支持切片和矢量数据下载)

一、应用背景 在当今数字时代&#xff0c;地图下载器成为了越来越多人的必备工具。地图下载器可以帮助人们在没有网络的情况下使用地图&#xff0c;也可以帮助人们快速下载大量地图数据&#xff0c;方便日常生活和旅行。本文将介绍地图下载器的基本功能及其在不同场景下的应用。…

RSIC-V“一芯”学习笔记(二)——Linux入门教程

文章目录 一、前言二、Busybox套件三、重要的追踪工具——strace四、Shell五、正则表达式六、重定向&#xff08;多次输入测试时&#xff09;七、一些组合命令八、自动化脚本九、学会查阅十、亲&#xff08;yuan&#xff09;近(li) bai du十一、不要逃避困难十二、重视小问题 一…

springboot集成jsp

首先pom中引入依赖包 <!--引入servlet--> <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId> </dependency> <!--引入jstl标签库--> <dependency><groupId>javax.servle…

关闭免费版pycharm社区版双击shift时出现的搜索框

Pycharm 在双击 shift 的时候总是弹出搜索框&#xff0c;但作为中国玩家&#xff0c;经常需要双击 shift 循环切换中英文。这就很困恼。 下面就解决这个问题。单独关闭双击shift的功能。 步骤 1.左上角 File -> Settings 2. 如图&#xff0c;输入‘advan’ 找到高级设置&…

Tomcat解压打包文件和并部署

一、文件压缩和上传解压 1.本地打包好dist.tar.gz文件 2.通过xftp拖拽上传到知道文件夹下,或者通过命令: cp dist.tar.gz /path/to/destination/folder注:将dist.tar.gz复制到 /path/to/destination/folder文件夹下,该文件夹只是举个例子怎么复制和解压! 3.进入/path/…

基于TCP的半双工网络编程实践

首先我们先了解一下什么是半双工通信&#xff1f; 半双工数据传输允许数据在两个方向上传输&#xff0c;但是在某一时刻&#xff0c;只允许数据在一个方向上传输&#xff0c;它实际上是一种切换方向的单工通信。 TCP服务端代码&#xff1a; #include <stdio.h> #inclu…

AI手写数字识别(二)

理解代码 上文主要介绍了人工智能模型的集成过程。人工智能模型的正确集成&#xff0c;是我们案例中人工智能应用开发的核心步骤。但要让一个人工智能应用顺利地被使用&#xff0c;除了集成模型之外的一些工作也是必不可少的&#xff0c;比如处理输入的数据&#xff0c;进行界…

Redis:原理速成+项目实战——Redis实战9(秒杀优化)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理速成项目实战——Redis实战8&#xff08;基于Redis的分布式锁及优化&#xff09; &#x1f4da;订阅专栏&…

瑞_Java开发手册_(三)单元测试

&#x1f64a;前言&#xff1a;本文章为瑞_系列专栏之《Java开发手册》的单元测试篇。由于博主是从阿里的《Java开发手册》学习到Java的编程规约&#xff0c;所以本系列专栏主要以这本书进行讲解和拓展&#xff0c;有需要的小伙伴可以点击链接下载。本文仅供大家交流、学习及研…

使用MATLAB连接USRP

文章目录 前言一、本地环境二、前期准备1、MATLAB版本、labview版本、UHD 版本对应关系2、下载 GNU Radio Companion3、确定 USRP UHD 版本①、下载一个 USRP 硬件驱动程序②、确认 MATLAB 的 UHD 版本 三、下载 USRP 通信工具箱支持包四、使用 MATLAB 连接 USRP 前言 本文记录…

MySQL基础应用之DDL、DCL、DML、DQL

文章目录 前言一、sql基础应用二、列、表属性1、列属性2、表属性 三、sql学习记录---DDL应用之数据库定义语言1、建库规范2、创建库并设置字符集、校验规则3、查看数据库4、删除数据库5、修改数据库字符集 四、sql学习记录---DDL应用之表定义语言1、建表规范2、建表3、查询建表…

Unity中URP中的光照简介

文章目录 前言URP下的光照在Unity中的设置1、主灯设置2、额外灯设置3、反射光设置 前言 我们在这篇文章开始了解URP下的光照。 URP下的光照在Unity中的设置 1、主灯设置 主灯可以选择 禁用 或 逐像素 光照 当选择逐像素光照的主灯后 Cast Shadows&#xff1a;可以选择开启 或…

设计模式之解释器模式【行为型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

汽车塑料零件透光率测试仪

塑料透光率测试仪在汽车制造及测试领域中应用广泛&#xff0c;主要用于测量各种玻璃、塑料、薄膜和透明或半透明材料的可见光透射率。 在汽车制造过程中&#xff0c;塑料透光率测试仪可用于检测塑料部件的透光性能。透光率是评估材料质量的重要指标之一&#xff0c;对于汽车的安…

【ArcGIS Pro微课1000例】0057:未安装所需的Microsoft驱动程序

文章目录 一、错误提示二、解决办法1. Excel转表2. Excel转csv一、错误提示 ArcGIS Pro添加Excel数据时,提示未安装所需的Microsoft驱动程序,如下图所示: 二、解决办法 1. Excel转表 在选择输入表时,可能会提示未安装所需的 Microsoft 驱动程序。 这是因为要在 ArcGIS P…

Python 分支结构案例-个人所得税计算器

个人所得税的计算方法&#xff08;旧版&#xff09;如下表&#xff1a; 要使用代码根据工资计算税后收入&#xff0c;可以用分支结构编写一个计算器&#xff1a; """ example018 - 个人所得税&#xff08;旧版算法&#xff09;计算器Author: 不在同一频道上的呆…

Springboot项目Nacos做配置中心

Springboot项目Nacos做配置中心 说明安装2.Springboot整合使用Nacos3.问题处理 说明 文档参考 Nacos Spring Boot 安装 查看nacos镜像 docker search nacos 下载镜像 docker pull nacos/nacos-server启动naocs镜像 docker run --env MODEstandalone --name nacos -d -p 8…