【格密码基础】旋转格的性质

目录

一. 回顾ZSVP问题

二. 基于ZSVP问题的密码系统

三. 格基旋转与Gram矩阵

四. 补充矩阵QR分解

4.1 矩阵分解

4.2 举例


前序文章请参考:

【格密码基础】详解ZSVP问题-CSDN博客

一. 回顾ZSVP问题

根据之前的讨论我们知道解决ZSVP问题的计算复杂度为:

2^{\frac{n}{2}+o(n)}

在实际应用中,可利用随机算法将ZSVP问题归约到y-SVP或者y-uSVP问题,其中\gamma\geq 1。在2023年论文[Duc23]中,出现了一个确定性的算法,没有近似因子。也就是直接从ZSVP问题归约到SVP问题。但遗憾的是,归约前格维度为n,归约后为n/2.

 L´eo Ducas. Provable lattice reduction of Zn with blocksize n=2. Cryptology ePrint Archive, Paper 2023/447, 2023. https://eprint.iacr.org/2023/447. 5, 27

在本文章中,我们重点关注将格Z^n旋转后的格。

二. 基于ZSVP问题的密码系统

众所周知,如果ZSVP问题是困难的,那么就可以设计新的公钥密码方案(public key encryption)。

另外有两个显然可得的优点:

  1. Z^n旋转格非常的简单;
  2. 对应的格困难性假设也比较特别

在格Z^n中,任意两个相邻的格点距离为1,所以其译码半径(unique decoding radius)为1/2.另外,根据格密码的基础概念,格Z^n的行列式(determinant)也为1.

如果想设计一个比格Z^n更稠密的格,则可以选择:

Z^n\oplus \alpha Z^n

其中\alpha为缩放因子。选取不同的值,格的稠密程度也不一样。

当然利用ZSVP问题除了可以形成加密方案外,还可以形成签名方案(signature scheme)以及零知识证明(zero-knowledge proof).

在这些方案中,无一例外,都会涉及到worst case到average case的证明。当然也可以利用攻击算法来破解这些方案,比如对偶(dual)攻击。

其实在严格的格密码证明中,可证明安全的格基该怎么选一直是一个问题。目前学者很喜欢用离散高斯基(discrete Gaussian bases)。

由此便出现了接下来要讲的格基旋转。

三. 格基旋转与Gram矩阵

将格Z^n的格基进行正交变换之后的基记为格基B,其也可以看成Z^n旋转格的格基。

实际应用时,这种正交变换怎么选?

最直接的肯定是均匀且随机的选取了:

R\in O_n(R)

一方面,我们现在对格基矩阵B做一个运算,可以得到:

B^TB

在另一方面,我们先把格基做一个旋转,得到RB,接着再做同样的运算:

(RB)^TRB=B^TR^TRB=B^TB

很神奇,前后结果是一样的。其实实际上Gram矩阵就是:

G=B^TB

在以上我们将旋转矩阵R隐藏了。或者换句话说,Gram矩阵是抗旋转的(rotation independent)。

这个矩阵非常优秀,每个元素的值一定为整数(平方效果)。

由此我们又给出一个新的格密码困难问题:

给定矩阵G,且满足:

G=B^TB

求出特定的整数矩阵B\in Z^{n\times n}

这个问题也是困难的,更进一步将这个问题本质还是ZSVP问题的变式情况。

现在我们尝试思考一个问题,以上旋转格中旋转角度该怎么选?

一种方法是对Gram矩阵进行Cholesky分解。

另一种方法是满足如下等式:

B'=RB

上式子中,B'是上三角矩阵,R为正交变换R\in O_n(R)。根据矩阵QR分解的理解,以上等式中B'和B是一一对应的。实际上在格基的LLL约化算法中,也出现了QR分解。

由此可见QR分解的重要性,接下来我们将补充QR分解。

四. 补充矩阵QR分解

4.1 矩阵分解

如果一个矩阵m行n列,则可以认为该矩阵包含n个m维的列向量。

假如矩阵A有3列,则包含3个列向量,记为a,b,c

采用正交化的思想,可以将矩阵A变为一个正交矩阵Q,也就是包含3个列向量,记为q_1,q_2,q_3。通常转化为后的这3个列向量都是标准的正交向量,也就是长度均为1.

熟悉线性代数的同学都知道,这种变换过程也可以用一个矩阵来衡量。也就是矩阵A通过乘以另外一个矩阵,可以变为矩阵Q。

更加具体化,向量a可以用向量q_1表示;向量b可以用q_1,q_2表示;向量c可以用q_1,q_2,q_3表示。

来看一张投影图:

向量a与q1共线;

向量a,b与q1,q2共面;

同理,向量a,b,c与q1,q2,q3共体。

从图中,我们可以看出可以将向量b用分量q1,,q2来表示,具体分析如下:

同理向量c也可以用q1,q2和q3来表示,即为:

将以上转化过程表示为矩阵的运算则为:A=QR,如下:

其中R为上三角矩阵(upper triangular)。

4.2 举例

请将如下矩阵A进行QR分解,并写出计算过程:

解:

将矩阵A的第一列记作向量a,第二列为向量b,第三列为向量c,如下:

第一步:找出正交矩阵Q

已知q1与向量a共线,且长度为1.那么很明显可得:

q_1=(\frac{1}{\sqrt 2},0,\frac{1}{\sqrt 2})

接着去掉向量b在q1上的分量,可得:

将向量B标准化,使其长度为1,可得q2:

接着去掉向量c在q1和q2上的分量,可得:

可以发现向量C的长度本身就为1,所以无需标准化长度,可直接得到q3.

综合以上正交矩阵Q便可得:

第二步:计算上三角矩阵R

接着根据QR分解的公式,可分别计算:

q_1^Ta=\sqrt 2

q_1^Tb=\frac{1}{\sqrt 2}

q_2^Tb=\frac{1}{\sqrt 2}

q_1^Tc=\sqrt 2

q_2^Tc=\sqrt 2

q_2^Tc=\sqrt 2

由此,矩阵A完整的QR分解如下:

补充一个有意思的性质:上三角矩阵R的对角线处有个三个元素,其实对应着向量a,B,C的长度(q1,q2,q3标准化前的长度)。

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

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

相关文章

一款IM即时通讯聊天系统源码,包含app和后台源码

一款IM即时通讯聊天系统源码 聊天APP 附APP,后端是基于spring boot开发的。 这是一款独立服务器部署的即时通讯解决方案,可以帮助你快速拥有一套自己的移动社交、 企业办公、多功能业务产品。可以 独立部署!加密通道!牢牢掌握通…

您需要了解的欧盟网络弹性法案

了解CRA包含的内容以及如何遵守。 什么是CRA? 《网络弹性法案》(CRA)是即将出台的欧盟法规,旨在确保在欧盟销售的所有数字产品和服务(如连接到互联网的软件和硬件)都采用强大的网络安全措施。 该法案要求…

【数据结构与算法】选择排序篇----详解直接插入排序和哈希排序【图文讲解】

欢迎来到CILMY23的博客 🏆本篇主题为:【数据结构与算法】选择排序篇----详解直接插入排序和哈希排序 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux…

Chrome浏览器的Profile数据内容简介

前文简介了Chrome存储的账密/Cookie数据:一段代码读取Chrome存储的所有账号密码和Cookie 本文再扩展介绍一下Chrome存储的其它一些隐私数据。 注:因为业务需要,简单调研了一些基本内容和存储路径,没有深入去研究,有啥…

新160个crackme - 002-abexcm5

运行分析 猜测需要输入正确序列号 PE分析 32位,ASM程序,无壳 静态分析 ida shift F12 ,发现字符串定位主函数 分析主函数 lstrcat:拼接字符串 lstrcmpiA:比较字符串 动态调试 serial输入123456调试 发现序列号…

Codeforces Round 957 (Div. 3)(A~D题)

A. Only Pluses 思路: 优先增加最小的数&#xff0c;它们的乘积会是最优,假如只有两个数a和b&#xff0c;b>a&#xff0c;那么a 1&#xff0c;就增加一份b。如果b 1&#xff0c;只能增加1份a。因为 b > a&#xff0c;所以增加小的数是最优的。 代码: #include<bi…

Spring Boot集成groovy快速入门Demo

1.什么是groovy&#xff1f; Groovy 是构建在 JVM 上的一个轻量级却强大的动态语言&#xff0c;它结合了 Python、Ruby 和 Smalltalk 的许多强大的特性。 Groovy 就是用 Java 写的&#xff0c;Groovy 语法与 Java 语法类似&#xff0c;Groovy 代码能够与 Java 代码很好地结合&…

STM32MP135裸机编程:定时器内核时钟频率计算方法

0 工具准备 STM32MP13xx参考手册 1 定时器内核时钟频率计算方法 1.1 定时器分组 STM32MP135的定时器按照时钟源不同分成了三组&#xff0c;如下&#xff1a; APB1: APB2: APB6&#xff1a; 1.2 定时器内核时钟频率计算方法 APB1DIV是APB1的分频系数&#xff0c;APB2DIV、…

python双下划线怎么打

连续按键盘上的“shift_”键两次即可&#xff0c;不同编辑器可能显示会不太一样。像图1中那样没连起来也是对的&#xff0c;没有语法错误。

基于python豆瓣电影爬虫数据可视化分析推荐系统(完整系统源码+数据库+详细文档+论文+详细部署教程)

文章目录 基于python豆瓣电影爬虫数据可视化分析推荐系统&#xff08;完整系统源码数据库详细文档论文详细部署教程&#xff09;一、 选题背景二、研究目的三、开发技术介绍1、Django框架2、LDA3、机器学习推荐算法4、大数据爬虫5、大数据Echarts可视化 四、系统设计思想五、部…

C++ | Leetcode C++题解之第235题二叉搜索树的最近公共祖先

题目&#xff1a; 题解&#xff1a; class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {TreeNode* ancestor root;while (true) {if (p->val < ancestor->val && q->val < ancestor->val) {anc…

贪心算法案例

1.买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔…

代码随想录算法训练营第31天|LeetCode 56. 合并区间、738.单调递增的数字、968.监控二叉树

1. LeetCode 56. 合并区间 题目链接&#xff1a;https://leetcode.cn/problems/merge-intervals/description/ 文章链接&#xff1a;https://programmercarl.com/0056.合并区间.html 视频链接&#xff1a;https://www.bilibili.com/video/BV1wx4y157nD 思路&#xff1a; 本题关…

SpringBoot新手快速入门系列教程十一:自动生成API文档,Springboot3.x集成SpringDoc

本次项目我们用Maven来做&#xff0c;最近发现gradle其实很多项目的支持比较差&#xff0c;所以项目还是用Maven来新建项目。对比了市面上的几种API生成第三方库&#xff0c;只有springdoc 是能够按照文档就能部署出来的。 官网&#xff1a; OpenAPI 3 Library for spring-bo…

链接追踪系列-04.linux服务器docker安装elk

[rootVM-24-17-centos ~]# cat /proc/sys/vm/max_map_count 65530 [rootVM-24-17-centos ~]# sysctl -w vm.max_map_count262144 vm.max_map_count 262144 #先创建出相应目录&#xff1a;/opt/dockerV/es/…docker run -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -d -p 92…

【流媒体】 通过ffmpeg硬解码拉流RTSP并播放

简介 目前RTSP拉流是网络摄像头获取图片数据常用的方法&#xff0c;但通过CPU软解码的方式不仅延时高且十分占用资源&#xff0c;本文提供了一种从网络摄像头RTSP硬解码的拉流的方法&#xff0c;并且提供python代码以便从网络摄像头获取图片进行后续算法处理。 下载ffmpeg F…

2024-07-15 Unity插件 Odin Inspector3 —— Button Attributes

文章目录 1 说明2 Button 特性2.1 Button2.2 ButtonGroup2.3 EnumPaging2.4 EnumToggleButtons2.5 InlineButton2.6 ResponsiveButtonGroup 1 说明 ​ 本章介绍 Odin Inspector 插件中有关 Button 特性的使用方法。 2 Button 特性 2.1 Button 依据方法&#xff0c;在 Inspec…

QT控件篇三

一、微调框 微调框&#xff08;QSpinBox&#xff09;是一个常用的Qt控件&#xff0c;允许用户通过增加或减少值来输入数字。分为两种, 整型-QSpinBox 浮点 QDoubleSpinBoxQSpinBox&#xff08;微调框&#xff09;的 setSingleStep 函数可以用来设置每次调整的步长&#xff08;…

【人工智能】人工智能与传统美工结合,AI美工的详细解析。

AI美工是一个结合了人工智能技术与美工设计的岗位&#xff0c;它利用AI工具和技术来辅助或完成美工设计的各项工作。以下是对AI美工的详细解析&#xff1a; 一、定义与职责 AI美工是指能够熟练使用AI工具和技术&#xff0c;如Midjourney、StableDiffusion等AIGC&#xff08;人…

2024安全行业大模型技术应用态势发展报告

以上是资料简介和目录&#xff0c;如需下载&#xff0c;请前往星球获取&#xff1a;https://t.zsxq.com/dH9bu