格密码:如何找最近的格点(CVP问题)

目录

一. 摘要

二. 介绍

2.1 简单的CVP问题

2.2 Gram-Schmidt向量

2.3 KZ基

三. 格密码的基本符号

四. CVP问题的发展

五. 如何解决CVP问题

5.1 随机取整算法

5.2 Babai算法+随机取整

5.3 小结

六. 推荐论文


一. 摘要

本文章将解释如何利用随机取整算法(randomized rounding)来找最近的格向量(closest lattice vector),其中最近指的是欧几里得范数(Euclidean norm)最小。将该问题总结如下:

给定格基,给出任意向量x(不在格点上),如何采用启发式算法大概率找到离其最近的格点?

该算法的运行时间取决于:

  1. x离最近格点的距离大小
  2. 格基的质量

二. 介绍

2.1 简单的CVP问题

格密码有一个基本问题叫做最近向量问题,如下指的是同一类:

最近向量问题:closest lattice vector problem 或者nearest lattice point problem,简称CVP问题。

格上CVP问题是NP-hard的,也就是没有多项式时间复杂度的算法能解决此类问题,只有指数时间复杂度的算法才能解决。但是,如果给该类问题外加一些限制的话,可能会变得简单。

Furst和Kannan发现了一类问题,叫做子集和问题,跟CVP问题有异曲同工之妙。如果给CVP问题如下限制的话,那么该问题就可以被解决:

v离格点的距离小于最短Gram-Schmidt向量的一半

在该条件下,很明显,满足条件的格点只有一个。

推荐阅读:

【格密码】最近平面算法解决CVP问题(1)-CSDN博客

2.2 Gram-Schmidt向量

Gram-Schmidt算法可以将任意向量转为正交向量。给定一个格基b_1,\cdots,b_n,正交后的向量叫Gram-Schmidt向量,写做b_1^\dag,\cdots,b_n^\dagb_i垂直于向量空间b_1,\cdots,b_{i-1}的分向量即为b_i^\dag.

2.3 KZ基

KZ基的全称是Korkin-Zolotarev基,最早由Lagarias等人提出。它们发现了最短的Gram-Schmidt向量与格上最短向量(SVP问题)之间的关系:

最短的Gram-Schmidt向量大于等于3/2n倍的最短向量长度。

接下来,我们将演示一个算法,其复杂度为:

n^{k^2+O(1)}

如果以下条件满足的话,那么可以找到离v最近的格向量:

实数点v离格的距离小于最短Gram-Schmidt向量长度的k倍。

也就是当解码半径变大时,时间复杂度也在增大。效率和正确率需要相互平衡。

三. 格密码的基本符号

n个向量b_1,\cdots,b_n,其形成的向量空间为V(b_1,\cdots,b_n),其形成的格记为L(b_1,\cdots,b_n)

输入点x以及格基b_1,\cdots,b_n,尝试输出:

y\in L(b_1,\cdots,b_n)

使得如下最小:

|x-y|

该问题的本质就是BDD问题,其时间复杂度为:

n^{|x-y|^2/min_i|b_i^\dag|^2}

很明显,当x离格的距离比最小的Gram-Schmidt向量的长度大太多,那么该算法的复杂度即为多项式时间复杂度。

四. CVP问题的发展

Kannan提出解决CVP问题的算法复杂度为n^n,其中n代表格的维度。当k<o(\sqrt n)时,本文章的算法就相当于对该算法进行了优化。

当k<1/2时,解决CVP问题的算法复杂度会直接降低到多项式水平。

回顾定理:

给定格基,给出任意向量v,v到格点的距离一定小于Gram-Schmidt向量长度和的一半。

如果实数点v距离格点近,但又不是那么近,会出现什么情况?

五. 如何解决CVP问题

5.1 随机取整算法

可以借助随机取整算法(random rounding)来将一个实数变为整数。这里随机指的是5取整的话,可能会变成其他整数。

我们将该算法记作randRound_c(r)。其中c为下标,r为输入。

将r写做r=p+a,其中p代表整数,a代表小数,也就是:

0\leq a<1

借鉴网络安全领域的离散高斯分布,来看一个特殊的表达:

s=\sum_{i\geq 0}e^{-c(a+i)^2}+\sum_{i\geq 0}e^{-c(b+i)^2}

根据高斯函数的性质,易得:

将该不等式的右边写做s(c),也就是:

s(c)=\sum_{i\geq 0}(e^{-ci^2}+e^{-c(1+i)^2})

当把此算法结合原始的Babai算法时,则可以出现比较好的结果。

5.2 Babai算法+随机取整

将寻找最近格点的算法记作near_A(x,d),其中A为下标代表公共参数,x代表输入,d代表维度。如果x为零向量的话,那么d=0。换句话说,向量x位于空间V(b_1,\cdots,b_d)内。

第一步:将x投影到b_d^\dag的分向量记为r_db_d^\dag

第二步:生成参数c,如下:

c_d=A|b_d^\dag|^2

这一步的c就是上个算法中的c

第三步:r_d进行随机取整,如下:

\lambda_d=randRound_{c_d}(r_d)

第四步:形成x',如下:

x'=x+(\lambda_d-r_d)b_d^\dag

d维结束,接着继续重复计算d-1维即可,此时可得:

near_A(x'-\lambda_db_d,d-1)+\lambda_db_d

5.3 小结

定理1

x'-\lambda_db_d位于空间V(b_1,\cdots,b_{d-1})内。

证明如下:

定理2

x和x'之间的差为(\lambda_d-r_d)b_d^\dag

定理3

对于任意向量满足:

x\in V(b_1,\cdots,b_d)

该算法near_A(x,n)可以输出一个向量满足:

很明显该向量y在格点上,而且该格点满足:

证明:

根据算法的定义,x'如下:

根据归纳假设,d-1维的算法输出的格点y'满足:

由此可得:

带入即可得:

定理4

假定\hat y为格点,x为实数点。以上算法输出\hat y的概率为:

所以要想输出最近的格点,可能需要调用算法多次,让后从这些样本中挑选出最近的。理论上,只有样本足够大,其中肯定包含最近的向量。算法调用的次数取决于三个值:x离格点的距离,1/s的值,参数A的取值。

如果将算法实例化,那么对应的概率为:

实际上借助decision tree,可以将其转为确定性算法。

六. 推荐论文

(1)格上CVP问题介绍

L. Babai, "On Lovhsz' lattice reduction and the nearest lattice point problem," Combinatorica (1986), pp. 1-13.

(2)介绍闵可夫斯基凸体定理

R. Kannan, "Minkowski's convex body theorem and integer programming," Mathematics o] Operations Research, vol. 12 (1987), pp. 415-440.

(3)介绍KZ基

J. C. Lagarias, H. W. Lenstra, and C. P. Schnorr, "Korkin-Zolotarev Bases and successive minima ofa lattice and its reciprocal lattice," Combinatorica (1990), pp. 333-348.

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

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

相关文章

设计模式-数据映射模式

设计模式专栏 模式介绍模式特点应用场景技术难点代码示例Java实现数据映射模式Python实现数据映射模式 数据映射模式在spring中的应用 模式介绍 数据映射模式是一种将对象和数据存储映射起来的数据访问方式。具体来说&#xff0c;对一个对象的操作会映射为对数据存储的操作。这…

应急管理蓝皮书 |《应急预案数字化建设现状和发展建议》上篇

《应急预案数字化建设现状和发展建议》&#xff1a;297-313页 导读&#xff1a;《中国应急管理发展报告》系列蓝皮书由中央党校&#xff08;国家行政学院&#xff09;应急管理培训中心&#xff08;中欧应急管理学院&#xff09;联合社会科学文献出版社研创出版&#xff0c;本着…

2023一带一路暨金砖国家技能发展与技术创新大赛“网络安全”赛项省选拔赛样题卷②

2023金砖国家职业技能竞赛"网络安全" 赛项省赛选拔赛样题 2023金砖国家职业技能竞赛 省赛选拔赛样题第一阶段&#xff1a;职业素养与理论技能项目1. 职业素养项目1. 职业素养项目2. 网络安全项目3. 安全运营 第二阶段&#xff1a;安全运营项目1. 操作系统安全配置与加…

electron+vue网页直接播放RTSP视频流?

目前大部分摄像头都支持RTSP协议&#xff0c;但是在浏览器限制&#xff0c;最新版的浏览器都不能直接播放RTSP协议&#xff0c;Electron 桌面应用是基于 Chromium 内核的&#xff0c;所以也不能直接播放RTSP&#xff0c;但是我们又有这个需求怎么办呢&#xff1f; 市场上的方案…

07- OpenCV:模糊图像

目录 一、模糊原理 二、模糊的相关处理方法&#xff1a; 1、均值滤波&#xff08;归一化盒子滤波&#xff09; 2、高斯滤波&#xff08;正态分布的形状&#xff09; 3、中值模糊 4、双边模糊算法&#xff08;美容软件&#xff09; 5、相关代码&#xff1a; 6、几种模糊算法的比…

docker常用指令

一、目录 docker 指令 1. 创建镜像 2. 保存镜像 3. 加载镜像 4. 删除容器 5. 删除镜像 6. 查看容器日志 7. 查看docker 占用内存情况 8. 查看docker 根目录(安装路径) 9. 创建一个容器 二、实现 docker指令 1 创建镜像 docker commit fd69960ed65f jyf&#xff1a;0.0.1保…

VM无法连接U盘

打开Ubuntu系统的文件夹 找到以 .vmx结尾的文件 搜索 usb.restrictions.defaultAllow的选项 讲 FALSE 改成 TRUE

提升测试效率,轻松并行运行测试——探秘Pytest插件pytest-xdist

在软件开发中&#xff0c;测试是确保代码质量的重要一环。然而&#xff0c;随着项目规模的增大&#xff0c;测试用例的数量也随之增多&#xff0c;测试的执行时间可能成为一个瓶颈。为了解决这个问题&#xff0c;Pytest提供了丰富的插件生态系统&#xff0c;其中 pytest-xdist …

对象存储MinIO的简介与部署

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 相关文章推荐&#xff1a; 记录一次跨越16个月的minio版本升级与数据迁移 MinIO集群怎么接入Prometheus监控&#xff1f;(上) Mi…

一个完整的流程表单流转

1.写在前面 一个完整的流程表单审批&#xff08;起表单-->各环节审批-->回退-->重新审批-->完成&#xff09;&#xff0c;前端由Vue2jsElement UI升级为Vue3tsElement Plus&#xff0c;后端流程框架使用Flowable&#xff0c;项目参考了ruoyi-vue-pro(https://gite…

【2024】OAK智能深度相机校准教程

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是Ash…

Dubbo的SPI机制

Dubbo SPI的基本工作流程&#xff1a; 加载扩展点配置&#xff1a;Dubbo SPI首先会加载所有的扩展点配置&#xff0c;这些配置通常是在META-INF/dubbo目录下的properties文件中定义的。每个配置文件的名称就是扩展点接口的全限定名&#xff0c;文件内容是扩展点实现的键值对&am…