尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
A Gentle Introduction to Lattice-Based Cryptography 第四章:容错学习(LWE)问题 部分练习题
《A Gentle Introduction to Lattice-Based Cryptography》格密码学温和入门是密码学界知名学者、滑铁卢大学University of Waterloo教授Alfred Menezes编写的一份高质量开源讲义。这份讲义专门为高年级本科生和初入学的研究生设计旨在用最通俗易懂、循序渐进的方式揭开后量子密码学Post-Quantum Cryptography, PQC中“格密码”的神秘面纱。练习 4.1编写一个程序寻找满足以下实例的所有解思路对于这种小规模的 LWE 实例我们依旧可以使用暴力搜索。但是如果同时搜索共种可能和共种可能总的组合数会达到。我们可以利用公式的等价变形来极大缩减搜索空间由于误差向量 $e$ 的每一个分量都必须落在临界的区间内即模 $53$ 意义下的。我们只需要对秘密向量的所有可能进行网格搜索只需搜索万个点对每个候选的计算出对应的误差。检查这个的每个分量是否都满足临界条件。如果满足则该为可行解对应的也能直接算出来。完整代码如下所示import numpy as np # 1. 初始化输入数据 A np.array([ [24, 4, 37], [51, 41, 17], [ 2, 11, 13], [44, 52, 50], [ 1, 0, 2] ]) b np.array([5, 3, 12, 10, 6]) m 5 n 3 q 53 B 2 # 2. 生成 s 的全部搜索空间 # s 的每个分量取值在 [0, q-1] s_vals np.arange(q) # 使用 meshgrid 生成 3 维网格并重塑为 (53^3, 3) grid np.meshgrid(s_vals, s_vals, s_vals, indexingij) S_space np.stack(grid, axis-1).reshape(-1,3) # 3. 批量计算并求解误差 e # 计算 A * s (mod q) # A 形状为 (5, 3)S_space.T 形状为 (3, 148877) - AS 形状为 (5, 148877) AS np.dot(A, S_space.T) % q # 计算误差 e (b - As) (mod q)结果形状为 (5, 148877) E_space (b.reshape(-1,1) - AS) % q # 4. 筛选满足短整数约束的列 # 在模 53 意义下满足 |e_i| 2 的合法误差取值集合为 {0, 1, 2, 51, 52} vaild_errors [0, 1, 2, q-2, q-1] # 使用 np.isin 检查 E_space 中每个元素是否在合法集合中 # np.isin 得到一个形状相同的布尔矩阵再用 np.all(..., axis0) 确保该列的所有 5 个误差全都合规 mask1 np.isin(E_space, vaild_errors) mask np.all(mask1, axis0) # 5. 输出最终解 (s, e) matching_s S_space[mask] matching_e E_space[:, mask].T # 将模 53 下的误差 [51, 52] 映射回负数 [-2, -1] 便于直观观察 matching_e_mapped np.where(matching_e q // 2, matching_e - q, matching_e) print(f共找到 {len(matching_s)} 组解\n) for i in range(len(matching_s)): print(f解对 {i1}:) print(f s {matching_s[i]}) print(f e {matching_e_mapped[i]})练习 4.2寻找满足以下实例的所有解具体思路可以参考上一题的解题思路import numpy as np # 1. 初始化数据 A np.array([ [ 5, 22, 14, 47], [45, 25, 17, 49], [39, 14, 26, 51], [31, 9, 46, 24] ]) b np.array([36, 14, 46, 30]) q 53 B 3 # 边界 beta 3 # 2. 生成短秘密 s 的搜索空间 s_vals np.array(range(-B, B 1)) # [-3, -2, -1, 0, 1, 2, 3] grid np.meshgrid(s_vals, s_vals, s_vals, s_vals, indexingij) S_space np.stack(grid, axis-1).reshape(-1,4) # 3. 批量计算误差 e AS np.dot(A, S_space.T) % q E_space (b.reshape(-1,1) - AS) % q # 4. 筛选合格的误差 e # 合法误差值在 [-3, 3] 区间模 53 映射为 {0, 1, 2, 3, 50, 51, 52} vaild_errors [0, 1, 2, 3, q-3, q-2, q-1] mask np.all(np.isin(E_space, vaild_errors),axis0) # 5. 输出结果 matching_s S_space[mask] matching_e E_space[:, mask].T matching_e_mapped np.where(matching_e q // 2, matching_e - q, matching_e) print(f共找到 {len(matching_s)} 组解\n) for i in range(len(matching_s)): print(f解对 {i1}:) print(f s {matching_s[i]}) print(f e {matching_e_mapped[i]})
RELATED

相关推荐

智慧出入口管理系统是什么?如何提升园区人车通行管理效率

智慧出入口管理系统是什么?如何提升园区人车通行管理效率

**出入口管理是园区、商业场所、学校及医疗机构等场景中基础设施管理的重要组成部分。**传统管理模式下,入口主要承担基础通行功能,依赖道闸、门体及人工值守完成车辆与人员的进出管控。随着管理场景日趋复杂、通行规模持续扩大,单纯依靠人工…

📅 2026/9/10 17:32:50
深入解析TMS320F2838x I2C驱动:从寄存器到Driverlib函数映射与实战

深入解析TMS320F2838x I2C驱动:从寄存器到Driverlib函数映射与实战

1. 项目概述与核心价值在嵌入式开发,尤其是工业控制、电机驱动和数字电源这些对实时性和可靠性要求极高的领域,与外部传感器、存储芯片或从设备通信是家常便饭。I2C总线因其简洁的两线制(SDA数据线、SCL时钟线)和软件可寻址的多主…

📅 2026/9/10 17:33:20
Freeze.rs快速上手:3分钟生成你的第一个EDR绕过Payload

Freeze.rs快速上手:3分钟生成你的第一个EDR绕过Payload

Freeze.rs快速上手:3分钟生成你的第一个EDR绕过Payload 【免费下载链接】Freeze.rs Freeze.rs is a payload toolkit for bypassing EDRs using suspended processes, direct syscalls written in RUST 项目地址: https://gitcode.com/gh_mirrors/fr/Freeze.rs …

📅 2026/9/10 18:09:26
MORE NEWS

更多资讯

📰

Java聊天系统设计与实现:Socket多线程并发编程实战

简介:面向需要学习 Java 网络编程、完成课程设计或毕业设计的开发者,这一基于 Java 的聊天系统设计与实现资源提供了从客户端到服务器端的完整方案。资源包大小约 518KB,内含源代码、系统运行截图、项目报告和使用说明文档,覆盖用…

📰

DouK-Downloader 完整教程:三步快速批量下载抖音和 TikTok 作品

DouK-Downloader 完整教程:三步快速批量下载抖音和 TikTok 作品 【免费下载链接】TikTokDownloader 抖音 / TikTok 平台作品下载/数据采集工具 项目地址: https://gitcode.com/GitHub_Trending/ti/TikTokDownloader 从一个真实需求说起 假设你现在有个任务&…

📰

Spring Boot外卖点餐系统实战:角色权限、订单状态机与部署排错全解析

简介:这是一份面向毕业设计场景的Spring Boot外卖点餐系统完整项目,适合计算机相关专业学生用于课程设计、毕业设计或项目答辩参考。后台采用Spring Boot框架,前端页面使用Vue,数据库为MySQL,运行环境JDK1.8&#xff0…

📰

G-Helper 完全指南:华硕笔记本性能控制如何做到轻量又够用

G-Helper 完全指南:华硕笔记本性能控制如何做到轻量又够用 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook…

📰

YOLO-IOD: Towards Real Time Incremental Object Detection——迈向实时增量目标检测

论文针对增量目标检测任务,提出了一个基于YOLO框架的实时解决方案。以下是其核心研究内容的全面总结: 一、研究背景与问题 任务定义:增量目标检测要求模型在持续学习新类别时,不遗忘旧类别知识。 现有局限:主流IOD方…

📰

第六篇:Sim2Real 深度解析——如何让仿真中的智能体走进现实

第六篇:Sim2Real 深度解析——如何让仿真中的智能体走进现实 一、为什么仿真成功不代表现实可用 机器人在仿真环境中完成任务,到了现实环境却可能立即失败。这种差异称为 Reality Gap。 其来源至少包括六类: 1. 视觉差异 光照和阴影&#xff…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬