格密码:如何找最近的格点(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.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【微信小程序开发】深入学习小程序开发之功能扩展和优化

前言 随着移动互联网的快速发展&#xff0c;微信小程序作为一种轻量级应用&#xff0c;已经逐渐成为许多企业和个人进行业务推广和服务提供的重要平台本文将详细介绍 微信小程序开发的功能扩展和优化&#xff0c;帮助开发者更好地提升小程序的用户体验和性能。 一、功能扩展 …

【qt】opencv导入pro

我的sdk0文件夹在opencv003项目下&#xff0c;使用opencv451 INCLUDEPATH $$PWD/sdk0/opencv/includeCONFIG(release, debug|release) {LIBS -L$$PWD/sdk0/opencv/lib/ -lopencv_world451opencv.files $$PWD/sdk0/opencv/bin/opencv_world451.dllopencv.path $$OUT_PWD/Re…

Shopify绑定Facebook收费吗?付款方式是什么?-站斧浏览器

Shopify绑定Facebook收费吗&#xff1f; 答案是&#xff1a;Shopify绑定Facebook并不收取额外费用。Shopify和Facebook之间的绑定是免费的&#xff0c;卖家可以充分利用这一功能来扩展他们的在线业务。通过将商店与Facebook Page相连接&#xff0c;卖家可以将产品目录同步到Fa…

【EI会议征稿通知】2024年机器学习与智能计算国际学术会议(MLIC 2024)

2024年机器学习与智能计算国际学术会议&#xff08;MLIC 2024&#xff09; 2024 International Conference on Machine learning and intelligent computing 智能计算与机器学习被广泛应用于大数据分析、人工智能、智能制造、智能交通、智能电网、智慧城市、智慧医疗、金融科…

imx6ull基于Linux 5.10.19移植OV2640驱动过程记录及问题解决

硬件使用正点原子的阿尔法开发板&#xff0c;摄像头原理图如下&#xff1a; OV2640是淘宝上买的0v2640模组&#xff0c;如下&#xff1a; 添加设备树节点如下&#xff1a; &i2c2 {clock-frequency <100000>;pinctrl-names "default";pinctrl-0 <&am…

gazebo怎样快速导入其他机器人及其配置

只要拿过来100块钱&#xff0c;我就告诉你我花了1天才偶然找到的内容哈哈&#xff0c;请留言

Thumbnail AI:让图片处理更智能

一、产品介绍 Thumbnail AI是一款基于人工智能技术的图片处理软件&#xff0c;能够快速、准确地生成各种尺寸的缩略图。这款软件非常适合用于网站建设、广告设计、电商等领域&#xff0c;能够大大提高图片处理效率。 二、应用场景 网站建设&#xff1a;在网站建设中&#xff…

在海绵城市建设中,低功耗遥测终端有哪些独特的优势?

近年来&#xff0c;随着物联网技术的迅猛发展&#xff0c;数据监测和传输已经成为各行各业不可或缺的环节。在诸多特殊环境中因供电问题、潮湿、不便进入等诸多原因&#xff0c;需要一款功耗低、数据传输稳定&#xff0c;防潮抗锈蚀的低功耗遥测终端。 为满足这一需求&#xf…

对谈美的:「速沸」心智如何成就爆款电火锅?

​ 「魔镜对谈」将不定期访谈行业大咖、品牌负责人&#xff0c;通过行业观察、用户分析、爆品拆解等内容分享富有价值的消费洞见。本期访谈魔镜邀请到美的生活电器事业部-调理电器总经理张进&#xff0c;为我们拆解美的电火锅如何洞察市场、通过「速沸」心智打造电火锅赛道爆品…

mysql清空并重置自动递增初始值

需求&#xff1a;当上新项目时&#xff0c;测试环境数据库导出来的表id字段一般都有很大的初始递增值了&#xff0c;需要重置一下 先上代码&#xff1a; -- 查看当前自动递增值 SHOW CREATE TABLE table_name; -- 重建自动递增索引&#xff08;可选&#xff09; ALTER TABLE t…

基于爬虫和Kettle的豆瓣电影的采集与预处理

一&#xff1a;爬虫 1、爬取的目标 将豆瓣电影网上的电影的基本信息&#xff0c;比如&#xff1a;电影名称、导演、电影类型、国家、上映年份、评分、评论人数爬取出来&#xff0c;并将爬取的结果放入csv文件中&#xff0c;方便存储。 2、网站结构 图1豆瓣网网站结构详…

数据聚合、自动补全、数据同步、es集群

目录 数据聚合 聚合的分类 DSL实现bucket聚合 DSL实现Metrics聚合 RestAPI实现聚合 多条件聚合 带过滤条件的聚合 自动补全 安装拼音分词器 自定义分词器 completion suggester查询 修改索引库数据结构 RestAPI实现自动补全查询 实现搜索框自动补全 数据同步 数…

Redis:原理速成+项目实战——Redis实战7(优惠券秒杀+细节解决超卖、一人一单问题)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理速成项目实战——Redis实战6&#xff08;封装缓存工具&#xff08;高级写法&#xff09;&&缓存总…

【IEEE会议征稿通知】第五届计算机视觉、图像与深度学习国际学术会议(CVIDL 2024)

第五届计算机视觉、图像与深度学习国际学术会议&#xff08;CVIDL 2024&#xff09; 2024 5th International Conference on Computer Vision, Image and Deep Learning 第五届计算机视觉、图像与深度学习国际学术会议&#xff08;CVIDL 2024&#xff09;定于2024年4月19-21日…

深度卷积神经网络

目录 1.AlexNet 2. 代码实现 1.AlexNet (1)特征提取 (2)选择核函数来计算相关性&#xff1a;怎么判断在高维空间里面两个点是如何相关的&#xff0c;如果是线性模型就是做内积。 (3)凸优化问题 (4)漂亮的定理 丢弃法的作用就是因为模型太大了&#xff0c;使用它来对模型做…

四、C++运算符(5)逻辑运算符

作用&#xff1a;用于根据表达式的值返回真值或假值 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> using namespace std; int main() {//逻辑运算符 非&#xff01;int a 10;int b 20;//在c中除了0都是真cout << !a << end…

Inis博客系统本地部署结合内网穿透实现远程访问本地站点

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总…

数据库读写分离设计方案

一、什么是读写分离 数据库读写分离是一种架构模式&#xff0c;其中数据库系统被配置为将读操作&#xff08;查询&#xff09;和写操作&#xff08;插入、更新、删除&#xff09;分别路由到不同的数据库实例或节点。读操作通常由从节点&#xff08;或只读节点&#xff09;处理&…

太强了!腾讯开源!多模态AppAgent自主操作智能手机应用程序!

AppAgent是一款基于大型语言模型&#xff08;LLMs&#xff09;的新型多模态智能代理框架&#xff0c;专为操作智能手机应用而设计。它结合了GPT-4V的先进视觉理解能力&#xff0c;通过“眼睛”观察手机界面&#xff0c;模仿人类的点击和滑动交互方式来学习操作应用程序。这种方…

「JavaSE」类和对象1

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;快来卷Java啦 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 类和对象 &#x1f349;类的定义&#x1f34c;类的实例化 &#x1f349;this引用&#x1f349;对象的构造及初始化&#x1f34c;…