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

目录

一. 介绍

二. 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.mzph.cn/news/621435.shtml

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

相关文章

【数据结构】排序算法

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f38f;排序的定义 &#x1f38f;排序的稳定性 &#x1f4cc;稳定性的定义 &#x1f4cc;稳定性的意义 &#x1f38f;内排序与外排序 &#x1f38f;八大内排…

GitHub图床搭建

1 准备Github账号 如果没有Github账号需要先在官网注册一个账号 2 创建仓库 在github上创建一个仓库&#xff0c;随便一个普通的仓库就行&#xff0c;选择公共仓库 3 github token获取 github token创建方式可以参考下面的方式&#xff1a; https://www.xichangyou.com/6…

c/c++中static的用法

概述 static&#xff1a; 作为c/c的关键字之一&#xff0c;具有多种含义和应用&#xff0c;static 关键字可用于声明变量、函数、类数据成员和类函数。默认情况下&#xff0c;在所有块的外部定义的对象或变量具有静态持续时间和外部链接。 静态持续时间意味着&#xff0c;在程…

MT1138-MT1150总结

1. 判断闰年方法 year%40&&year%400&#xff01;0||year%4000 #include<bits/stdc.h> using namespace std;int day(int year,int mouth){if(mouth1||mouth3||mouth5||mouth7||mouth8||mouth10||mouth12){return 31;}else if(mouth4||mouth6||mouth9||mouth11)…

Golang 三数之和 leetcode15 双指针法

三数之和 leetcode15 知识补充&#xff1a; map的key值必须是可以比较运算的类型&#xff0c;不可以是函数、map、slice map记录 失败&#xff01;超出限制 //得到结果后再去重 失败&#xff01; func threeSum(nums []int) [][]int {L : len(nums)var intT stringresult : […

python使用贪心算法求最大整数问题

对于使用贪心算法的一个比较经典的问题&#xff0c;主要是为了解决最大整数的拼接问题&#xff0c;如果给定一个列表&#xff0c;这个列表中所包括的是一些非负整数&#xff0c;如果对这些整数进行组合&#xff0c;怎样才能组合出一个最大的整数&#xff0c;这里要注意一个问题…

1.2MATLAB数据类型和常用函数

MATLAB数据类型 数据类型表示范围整型 无符号整数8位无符号整数00000000~11111111 &#xff08;0~-1&#xff09;16位无符号整数32位无符号整数64位无符号整数带符号整数8位带符号整数10000000~01111111 (~)最左边的1表示符号负号16位带符号整数32位带符号整数64位带符号整数浮…

解决No module named ’torch._six‘问题

如果是 deepspeed &#xff0c;解决方法&#xff1a; deepspeed 安装 Windows deepspeed 安装 Windows-CSDN博客

【C++】内联函数

前言 在C语言中&#xff0c;我们学习过宏的用法。宏通常被用于进行简单的文本替换来执行一系列的操作&#xff0c;比如一些简单的运算。使用宏可以避免函数调用时建立栈帧的开销&#xff0c;提高程序的性能。我们首先来写一个实现加法功能的宏&#xff1a; #define ADD(x, y)…

【我的RUST库】get_local_info 0.2.2发布

0.2.2增加在cargo上的github链接&#xff0c;地址&#xff1a; get_local_info - crates.io: Rust Package Registry

物理学如何推动生成式 AI 的发展

一、说明 许多尖端的生成式 AI 模型都受到物理学概念的启发。在本指南中&#xff0c;我们将从高层次上了解物理学如何推动人工智能的进步。不同的领域经常交叉授粉重要概念&#xff0c;这有助于推动其进步。数学概念为物理学的进步奠定了基础;物理学中的概念经常启发经济学的框…

紫外加速老化试热冲击试验箱

紫外加速老化试热冲击试验箱是用于测试产品在高低温环境下的适应性以及性能表现的实验设备。其功能特点主要包括以下几个方面&#xff1a; 1. 温度控制&#xff1a;冷热冲击试验箱能够提供高温、低温以及常温的测试环境&#xff0c;并且可以快速地实现温度的转换和控制。这使得…

高效办公:如何通过在文件名称右边添加关键字提升工作效率

在繁忙的办公环境中&#xff0c;经常要处理大量的文件和资料。那如何管理和查找这些文件呢&#xff0c;常见的方法有在文件名称右边添加关键字。下面来看云炫文件管理器如何通过在文件名称右边添加关键字来提升工作效率。 在文件名称右边添加关键字前后效果图。 文件名批量添加…

老卫带你学---leetcode刷题(38. 外观数列)

38. 外观数列 问题 给定一个正整数 n &#xff0c;输出外观数列的第 n 项。 「外观数列」是一个整数序列&#xff0c;从数字 1 开始&#xff0c;序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列&#xff1a; countAndSay(1) “1” c…

P5461 赦免战俘题解

题目 现有2n2n(n≤10) 名作弊者站成一个正方形方阵等候kkksc03的发落。kkksc03决定赦免一些作弊者。他将正方形矩阵均分为4个更小的正方形矩阵&#xff0c;每个更小的矩阵的边长是原矩阵的一半。其中左上角那一个矩阵的所有作弊者都将得到赦免&#xff0c;剩下3个小矩阵中&…

AC修炼计划(AtCoder Beginner Contest 334)A~G

传送门&#xff1a;UNIQUE VISION Programming Contest 2023 Christmas (AtCoder Beginner Contest 334) - AtCoder A题是最最基础的语法题就不再讲解。 B - Christmas Trees 该题虽然分低&#xff0c;但我觉得还是很不错的。 给你 l 和 r &#xff0c;设满足题意的数字是x则…

检查是否是类的对象实例

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 题目描述 请你编写一个函数&#xff0c;检查给定的值是否是给定类或超类的实例。 可以传递给函数的数…

Linux学习之网络编程3(高并发服务器)

写在前面 Linux网络编程我是看视频学的&#xff0c;Linux网络编程&#xff0c;看完这个视频大概网络编程的基础差不多就掌握了。这个系列是我看这个Linux网络编程视频写的笔记总结。 高并发服务器 问题&#xff1a; 根据上一个笔记&#xff0c;我们可以写出一个简单的服务端…

52. N 皇后 II

这道题我认为关键是建立好行列之间的数组col&#xff0c;表示第i行第col[i]列 i从0到n-1开始遍历&#xff08;已经保证了不同行&#xff09;&#xff0c;在每次遍历中判断每一列&#xff08;相当于判断这一行中&#xff0c;皇后应该放在哪一列&#xff09; 判断函数valid的规…

七、HorizontalPodAutoscaler(HPA)

目录 一、HPA概述&#xff1a; 二、HPA工作机制&#xff1a; 三、HPA流程: 四、HPA API对象: 五、示例&#xff1a; 1、基于CPU的HPA 2、常见问题&#xff1a; 3、基于内存的HPA 一、HPA概述&#xff1a; Horizontal Pod Autoscaler&#xff0c;中文就是水平自动伸缩可…