格密码学习笔记(四):格上公认难题

news2025/7/29 23:11:37

文章目录

  • 最短向量问题
  • 最近向量问题
  • 最短线性无关向量问题
  • 基于格的可靠信息传输
  • CVP问题的两种版本
  • ADD问题规约到SIVP问题上
  • 致谢

最短向量问题

格的每个量都定义了一个对应的计算问题。对于第一连续极小 λ 1 \lambda_1 λ1而言,其对应的计算问题为最短向量问题

定义 (Shortest Vector Problem,SVP)最短向量问题,给定一个基为 B \bm{B} B的格 L ( B ) \mathcal{L}(\bm{B}) L(B),找到一个非零格向量 B x \bm{Bx} Bx,使得其长度最多为 ∥ B x ∥ ≤ λ 1 \| \bm{Bx} \| \leq \lambda_1 Bxλ1,其中 x ∈ Z k \bm{x} \in \mathbb{Z}^k xZk

在这里插入图片描述

以上图为例,基向量 ( b 1 , b 2 ) (\bm{b}_1, \bm{b}_2) (b1,b2)可以不是最短基向量,如果它们很长,那么此时为了找到最短格向量必须枚举所有格点,从而找到 ( 5 b 1 − 2 b 2 ) (5\bm{b}_1 - 2\bm{b}_2) (5b12b2)这个向量。对于多维格,目前没有SVP的多项式可行解法,也没有对应放松问题的多项式可行解法。

SVP的放松问题 SVP γ \text{SVP}_\gamma SVPγ

定义 (Shortest Vector Problem, SVP γ \text{SVP}_\gamma SVPγ)最短向量问题,给定一个基为 B \bm{B} B的格 L ( B ) \mathcal{L}(\bm{B}) L(B),找到一个非零格向量 B x \bm{Bx} Bx,使得其长度最多为 ∥ B x ∥ ≤ γ λ 1 \| \bm{Bx} \| \leq \gamma \lambda_1 Bxγλ1,其中 x ∈ Z k \bm{x} \in \mathbb{Z}^k xZk

在这里插入图片描述

举一个例子,如果 γ \gamma γ值取2,问题就变成在浅红色超球体表面找到一个格点。

最近向量问题

定义 (Closest Vector Problem,CVP)最近向量问题,给定一个格 L ( B ) \mathcal{L}(\bm{B}) L(B)和一个目标点 t \bm{t} t,找到一个格向量 B x \bm{Bx} Bx,使得它与目标点之间的距离小于 μ \mu μ,即 ∥ B x − t ∥ ≤ μ \| \bm{Bx} - \bm{t} \| \leq \mu Bxtμ

在这里插入图片描述

同样,由于这里的基向量可以非常长,所以必须穷举格点。

CVP的放松问题 CVP γ \text{CVP}_\gamma CVPγ

定义 (Closest Vector Problem, CVP γ \text{CVP}_\gamma CVPγ)最近向量问题,给定一个格 L ( B ) \mathcal{L}(\bm{B}) L(B)和一个目标点 t \bm{t} t,找到一个格向量 B x \bm{Bx} Bx,使得它与目标点之间的距离小于 μ \mu μ,即 ∥ B x − t ∥ ≤ γ μ \| \bm{Bx} - \bm{t} \| \leq \gamma\mu Bxtγμ

最短线性无关向量问题

定义 (Shortest Independent Vectors Problem,SIVP)最短独立向量问题,给定一个格 L ( B ) \mathcal{L}(\bm{B}) L(B),找到 n n n个线性独立的格向量,使得这些向量的长度都要小于或等于第 n n n连续极小 λ n \lambda_n λn,即 max ⁡ i ∥ B x i ∥ ≤ λ n \max_i \| \bm{B}\bm{x}_i \| \leq \lambda_n maxiBxiλn

在这里插入图片描述

以上图为例,若 n = 2 n=2 n=2,则画出 λ 2 \lambda_2 λ2对应的超球体,在该超球体内找到2个线性无关向量。

SIVP的放松问题 SIVP γ \text{SIVP}_\gamma SIVPγ

定义 (Shortest Independent Vectors Problem, SIVP γ \text{SIVP}_\gamma SIVPγ)最短独立向量问题,给定一个格 L ( B ) \mathcal{L}(\bm{B}) L(B),找到 n n n个线性独立的格向量,使得这些向量的长度都要小于或等于第 n n n连续极小 λ n \lambda_n λn,即 max ⁡ i ∥ B x i ∥ ≤ γ λ n \max_i \| \bm{B}\bm{x}_i \| \leq \gamma \lambda_n maxiBxiγλn

基于格的可靠信息传输

这个不是密码方案,而是格编码理论里的东西。通过这里例子,可以简单了解CVP、SVP和SIVP的简单应用。

发送者将消息 m m m编码为格上的点 B x \bm{Bx} Bx,将其传输给接收方。由于传输信道不稳定,受到噪声干扰,接收方只能收到 t \bm{t} t。为了得到正确的 m m m,接收方通过求解CVP问题恢复出 B x \bm{Bx} Bx,然后通过求解SVP问题得到 λ 1 \lambda_1 λ1,接着判断 ∥ B x − t ∥ < λ 1 / 2 \| \bm{Bx} - \bm{t} \| < \lambda_1/2 Bxt<λ1/2是否成立(注意,若矫正距离等于 λ 1 / 2 \lambda_1 / 2 λ1/2,则 t \bm{t} t有2个候选格点,这两个候选格点组成最短格向量,此时 t \bm{t} t是没有意义的,需要发送者重新传输消息)。

最后,SIVP问题在这里也有所适用。如果在传输的过程中为了压缩数据而使用了向量量化(Vector Quantization),在重建向量的时候则需要用到SIVP的解来修复误差,从而避免量化失真。这些简单了解一下即可

在这里插入图片描述

CVP问题的两种版本

再次系统性的定义一下CVP问题。

定义 给定一个格 L \mathcal{L} L,一个随机点 t \bm{t} t,以及一个距离 d d d,假定 μ ( t , L ) ≤ d \mu(\bm{t}, \mathcal{L}) \leq d μ(t,L)d,CVP问题即求解一个合理的格点 B x \bm{Bx} Bx使得这个格点到 t \bm{t} t的距离小于或等于 d d d

  • BDD(Bounded Distance Decoding)问题
    BDD问题规定了 d < λ 1 ( L ) / 2 d < \lambda_1(\mathcal{L}) / 2 d<λ1(L)/2。此时,问题至多只有一个解,并且就是距离 t \bm{t} t最近的格点。

  • ADD(Absolute Distance Decoding)问题
    ADD问题规定了 d ≥ λ 1 ( L ) / 2 d \geq \lambda_1(\mathcal{L}) / 2 dλ1(L)/2。此时,问题至少会有一个解,但是不一定是距离 t \bm{t} t最近的格点。

下图给出了各种困难问题之间的联系,大致分为3类。其中,SIVP和ADD是等价的,可用于构造单向函数公钥加密等密码学应用。

在这里插入图片描述

ADD问题规约到SIVP问题上

注意:下文是一个“不太准确”的规约,主要介绍思路,后面章节再对此进行详细介绍。

在这里插入图片描述

已知SIVP问题的解 V = { v 1 , … , v n } \bm{V} = \{ \bm{v}_1, \dots, \bm{v}_n \} V={v1,,vn},求解ADD问题。由于是最短线性无关向量,所以可以把整个格空间划分成很多个小区域,接着看 t \bm{t} t落在哪个小区域,对其取整得到相应的格点即可作为ADD问题的解。

如下图所示,假设每个小区域的最大边长度为 λ n \lambda_n λn,每条边都是最大边;对于正交格而言,小区域的直径为 n λ n \sqrt{n} \lambda_n n λn;小区域的直径最大长度不会超过 n λ n n\lambda_n nλn,即半径存在一个上限,有 ∑ i 1 2 ∥ v i ∥ ≤ ( n / 2 ) λ n ≤ n μ \sum_i \frac{1}{2} \| \bm{v}_i \| \leq (n/2) \lambda_n \leq n\mu i21vi(n/2)λnnμ。而 t \bm{t} t到小区域各顶点的距离不会超过半径,这个半径可以用来确定ADD的 d d d值。

在这里插入图片描述

(未完待续)

致谢

  • Simons格密码公开课官网

Mathematics of Lattices - Simons Institute for the Theory of Computing

  • 哔哩哔哩中英双语视频(字幕组:重庆大学大数据与软件学院 后量子密码研究小组)

【中英字幕】Simons格密码讲座第1讲:格的数学定义_哔哩哔哩_bilibili

  • Steven的密码学笔记

Lattice学习笔记02:格中难题

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

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

相关文章

idea 2020 常用配置

激活步骤 本机环境信息如下 名称版本操作系统MacOS Mojave 10.14.6IDEAUltimate 2020.3激活时间2023/03/07 更新 Reposity 【Intellij IDEA】- 【Preferences…】- 【Plugins】- 【Manage Plugin Repositories】 添加新的repository https://plugins.zhile.io下载 Eval Re…

java进阶—线程安全问题

线程安全问题&#xff0c;就涉及到一个资源共享&#xff0c;资源共享很好理解&#xff0c;就是多个线程同时操作一个资源池 就比如&#xff0c;快五一了&#xff0c;12306 购票&#xff0c;假设从北京到上海的 高铁票 一共只有200 张&#xff0c;现在3个人同时在线抢票&#x…

【ONE·C || 程序编译简述】

总言 C语言&#xff1a;程序编译相关。    文章目录总言1、程序的翻译环境和运行环境1.1、简述1.2、翻译环境&#xff1a;程序编译与链接1.2.1、简介&#xff1a;程序如何从.c文件形成.exe可执行程序1.2.2、过程说明1.3、运行环境2、预处理详解2.1、预定义符号2.2、#define2.…

参考文献怎么查找,去哪里查找?一篇文章讲明白这些问题

在我们撰写论文查找参考文献时&#xff0c;往往不知道从哪里入手&#xff0c;本文小编就针对下面这三个方面给大家详细讲解下&#xff1a; 一、查找参考文献方法 二、参考文献资料查找网站 三、参考文献格式规范 一、查找参考文献方法&#xff1a; 1、知网全球最大的中文数据…

DBeaver连接mysql、oracle数据库

1. DBeaver连接mysql 1&#xff09; 下载DBeaver https://dbeaver.io/download/&#xff0c;并安装 2) 新建数据库连接 3&#xff09;选择mysql驱动程序 4&#xff09;填写连接设置内容 5&#xff09;点击 “编辑驱动设置”&#xff0c;并填写相关信息 6&#xff09;选择本地…

九龙证券|朝着双向开放稳步前进――从沪深港通全面扩容看资本市场对外开放

2023年春天的资本商场&#xff0c;高水平双向敞开的步履益发铿锵。 伴随着沪深买卖所互联互通股票标的规划扩展规矩正式对外发布&#xff0c;3月13日&#xff0c;内地与香港资本商场行将迎来史上最大规划双向扩容——沪深股通标的股票合计将添加1034只&#xff0c;调整后沪股通…

Web前端学习:六 -- 练习小总结

1、背景颜色透明度写法&#xff1a; background&#xff1a;rgba(R&#xff0c;G&#xff0c;B&#xff0c;Alpha透明度) 透明度范围&#xff1a;0–1&#xff0c;1完全不透明&#xff0c;0完全透明 2、伪类 hovar&#xff1a; 当鼠标接触该元素是&#xff0c;显示另一种样…

安恒信息java实习面经

目录1.Java ME、EE、SE的区别&#xff0c;Java EE相对于SE多了哪些东西&#xff1f;2.jdk与jre的区别3.说一下java的一些命令&#xff0c;怎么运行一个jar包4.简单说一下java数据类型及使用场景5.Map跟Collection有几种实现&#xff1f;6.面向对象的特性7.重载和重写的区别8.重…

ElasticSearch 在Java中的各种实现

ES JavaAPI的相关体系&#xff1a; 词条查询 所谓词条查询&#xff0c;也就是ES不会对查询条件进行分词处理&#xff0c;只有当词条和查询字符串完全匹配时&#xff0c;才会被查询到。 等值查询-term 等值查询&#xff0c;即筛选出一个字段等于特定值的所有记录。 【SQL】 s…

工业物联网“杀手级”应用—预测性维护

一、预测性维护的必要性 随着新一轮科技革命和产业变革的兴起&#xff0c;工业物联网、大数据、人工智能等技术正与经济社会各领域加速渗透融合。由于市场竞争对精细化成本管控的要求&#xff0c;设备的重要性越来越凸显&#xff0c;设备的维护对策也必然从响应式维护&#xf…

[Java·算法·中等]LeetCode31. 下一个排列

每天一题&#xff0c;防止痴呆题目示例分析思路1题解1分析思路2题解2&#x1f449;️ 力扣原文 题目 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、…

LearnOpenGL-入门-9.摄像机

本人刚学OpenGL不久且自学&#xff0c;文中定有代码、术语等错误&#xff0c;欢迎指正。 此篇有点难理解&#xff0c;但是学完会对FPS第一人称3D摄像机的实现有深刻的理解 我写的项目地址&#xff1a;https://github.com/liujianjie/LearnOpenGLProject LearnOpenGL中文官网&a…

一、Java类加载机制

文章目录什么是类的加载&#xff1f;类的生命周期加载连接[验证、准备、解析]初始化结束生命周期类加载器类加载方式双亲委派机制自定义类加载器总结--类加载什么是类的加载&#xff1f; 类的加载指的是将类的.class文件中的二进制数据读入到内存中&#xff0c;将其放在运行时…

Git的SSH密钥配置

Git的SSH密钥配置简记Githttps和ssh的区别基本需求SSH密钥类型ED25519 SSH 密钥RSA SSH 密钥查看您是否有现有的 SSH 密钥对设置流程设置user name和emailssh密钥配置检查是否存在ssh Key创建新的ssh key将ssh密钥添加到您的Git帐户验证您是否可以连接使用Git有一段时间了&…

代码随想录-51-110.平衡二叉树

目录前言题目1.求高度和深度的区别节点的高度节点的深度2. 本题思路分析&#xff1a;3. 算法实现4. pop函数的算法复杂度5. 算法坑点前言 在本科毕设结束后&#xff0c;我开始刷卡哥的“代码随想录”&#xff0c;每天一节。自己的总结笔记均会放在“算法刷题-代码随想录”该专…

OpenCV入门(五)快速学会OpenCV4文字绘制边界填充

OpenCV入门&#xff08;五&#xff09;快速学会OpenCV4文字绘制&边界填充 1.文字绘制 OpenCV中除了提供绘制各种图形的函数外&#xff0c;还提供了一个特殊的绘制函数&#xff0c;即在图像上绘制文字。 这个函数是putText()&#xff0c;它是命名空间cv2中的函数&#xff…

(二十三)操作系统-多生产者·多消费者问题

文章目录一、问题描述二、问题分析1. 关系分析2. 整理思路三、实现1. 代码2.如果不要互斥信号量3. 将盘子&#xff08;缓冲区&#xff09;容量设为2四、总结一、问题描述 桌子上有一只盘子&#xff0c;每次只能向其中放入一个水果。爸爸专向盘子中放苹果&#xff0c;妈妈专向盘…

用强化学习神包trl轻松实现GPT2可控文本生成

来源&#xff1a;投稿 作者&#xff1a;Sally can wait 编辑&#xff1a;学姐 模型github: lvwerra/trl: Train transformer language models with reinforcement learning. (github.com)https://github.com/lvwerra/trl 这个项目是复现 ”Fine-Tuning Language Models from H…

C++vector 简单实现

一。概述 vector是我们经常用的一个容器&#xff0c;其本质是一个线性数组。通过对动态内存的管理&#xff0c;增删改查数据&#xff0c;达到方便使用的目的。 作为一个线性表&#xff0c;控制元素个数&#xff0c;容量&#xff0c;开始位置的指针分别是&#xff1a; start …

Hive---拉链表

拉链表 文章目录拉链表定义用途案例全量流程增量流程合并过程第一步第二步第三步案例二&#xff08;含分区&#xff09;创建外部表orders增量分区表历史记录表定义 拉链表是一种数据模型&#xff0c;主要是针对数据仓库设计中表存储数据的方式而定义的&#xff0c;顾名思义&am…