LWE算法分类及基本加解密算法示例
LWE(Learning With Errors)算法是一种基于格(lattice)的密码学原语,广泛应用于构建抗量子计算的加密方案。LWE算法的安全性基于最坏情况下的格问题(如最短向量问题SVP和最近向量问题CVP),这些问题的求解在经典计算机上被认为是困难的。由于LWE的安全性和灵活性,它已经被标准化并应用于实际的密码学协议和系统中,尤其是在需要抗量子计算的场景下。
LWE算法的特点主要包括:
(1)抗量子攻击:LWE算法被认为是抗量子计算的,即即使量子计算机出现,它仍然能够提供安全保障。这与基于因子分解(如RSA)或离散对数问题(如DSA、ECC)的传统加密算法不同。
(2)引入错误分布:LWE算法引入了一个小量的随机误差(errors),这些误差通常来自一个离散高斯分布。误差的引入使得直接求解LWE问题变得非常困难。
(3)可用于构建各种密码学原语:LWE可以用来构建多种密码学原语,包括公钥加密(Public Key Encryption)、密钥交换(Key Exchange)、签名方案(Signature Schemes)和全同态加密(Fully Homomorphic Encryption)等。
(4)参数灵活性:LWE算法允许通过调整参数(如模数q、误差分布的标准差σ、向量维度n等)来平衡安全性和效率。不同的应用场景可能需要不同的参数设置。
(5)可证明安全:在适当的参数选择下,LWE问题可以被证明是困难的,从而为基于LWE的加密方案提供可证明的安全性。
LWE算法目前包括多种类型变体,简要如下表所列。
| 序号 | 名称 | 特点 |
| 1 | 标准LWE(Standard LWE) | 最原始的LWE问题定义,涉及一个秘密向量和一个小误差项的线性方程。标准LWE通常用于构建最基本的加密和密钥交换方案。 |
| 2 | Ring-LWE(环LWE) | Ring-LWE是对标准LWE的一种重要扩展,它将LWE问题定义在一个环(如多项式环)上,从而减少了计算复杂度和存储需求。Ring-LWE广泛用于构建高效的加密方案,如全同态加密(FHE)。 |
| 3 | Module-LWE(模LWE) | Module-LWE是LWE问题的另一种扩展形式,它涉及模上的子空间。Module-LWE在某些特定的应用场景下可以提供更好的效率和安全性。 |
| 4 | Regev’s LWE-based Encryption | 由Oded Regev提出的基于LWE的公钥加密方案,是最早的基于LWE的加密方案之一。该方案的安全性依赖于LWE问题的困难性。 |
| 5 | GGH(Gentry-Gorbunov-Halevi) Cryptosystem | 由Craig Gentry、Shai Halevi和Vinod Vaikuntanathan提出。GGH方案具有较好的效率和灵活性,适用于多种应用场景。 |
| 6 | NTRUEncrypt | 虽然NTRUEncrypt主要基于格的近似最短向量问题(SVP),但它也可以看作是一种LWE的变体。NTRUEncrypt是一种高效的公钥加密方案,适用于资源受限的设备。 |
| 7 | TFHE(Torus Fully Homomorphic Encryption) | 基于环LWE的全同态加密方案,具有极高的效率和灵活性,适用于实时加密计算。 |
| 8 | FrodoKEM | 基于LWE的密钥封装机制(KEM),设计用于抗量子计算的安全通信。它具有中等的安全性和效率,适用于广泛的实际应用。 |
| 9 | Kyber | 基于LWE的密钥交换协议,设计用于抗量子计算的安全通信。它具有较高的效率和安全性,已经被标准化并广泛应用于实际系统。 |
下面给出一个简单LWE算法加解密示例(LWE属于非对称密码算法,采用明文公钥加密,密文私钥解密)。
首先给出参数说明:
n(明文的bit位长度,这里我们简单点取n=4)
q(模数取q=67)
e(随机误差向量,元素随机取0-1。e在构造公私钥对时使用,取e = [[0], [1], [1], [0]])
s(随机密钥(私钥),随机取s = [[14], [33], [55], [35]])
A(随机nxn矩阵,A也是在构造公私钥对时使用,取A = [[28, 64, 20, 27], [34, 56, 36, 27], [47, 43, 64, 51], [36, 20, 4, 1]])
b(公钥向量,b = (A * s + e) % q = [[60], [24], [13], [12]])
下面可以使用LWE算法对明文m(b'0100')加密,公钥为(A,b,n,q),具体加密过程如下步骤:
(1)将明文m转换成0-1矩阵形式,转换后的m=[[0], [1], [0], [0]]
(2)生成随机nxn矩阵,x = [[4, 0, 4, 4], [1, 2, 4, 4], [1, 2, 1, 2], [0, 2, 4, 2]]
(3)生成随机误差,e1 = [[0], [1], [0], [1]]
(4)计算c1 = (x * A) % q = [[42, 39, 17, 48], [26, 26, 29, 21], [14, 58, 30, 0], [60, 56, 1, 59]]
(5)计算c2 = (x * b + e1 + m*(q//2)) % q = [[5], [41], [11], [58]]
(6)密文即为c1||c2
私钥为s,具体解密过程如下步骤:
(1)计算t = (c2 - c1 * s) % q = [[4], [40], [3], [7]]
(2)依次处理t矩阵中每个元素tt,round(2*tt/q)%2
(3)得到p = [[0], [1], [0], [0]],即还原明文为b'0100',解密完成。
相关文章:
LWE算法分类及基本加解密算法示例
LWE(Learning With Errors)算法是一种基于格(lattice)的密码学原语,广泛应用于构建抗量子计算的加密方案。LWE算法的安全性基于最坏情况下的格问题(如最短向量问题SVP和最近向量问题CVP)&#x…...
【论文阅读】Learning dynamic alignment via meta-filter for few-shot learning
通过元滤波器学习动态对齐以实现小样本学习 引用:Xu C, Fu Y, Liu C, et al. Learning dynamic alignment via meta-filter for few-shot learning[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2021: 5182-5191. 论文…...
蓝牙 SPP 协议详解及 Android 实现
文章目录 前言一、 什么是蓝牙 SPP 协议?SPP 的适用场景 二、SPP的工作流程1. 蓝牙设备初始化2. 设备发现与配对3. 建立 SPP 连接4. 数据传输5. 关闭连接 三、进阶应用与常见问题蓝牙连接中断与重试机制数据传输中的延迟与错误处理电池消耗和蓝牙优化 总结 前言 蓝…...
系统学习领域驱动设计-感悟-高尚名词篇
高尚名词 高尚名词通俗意思知识消化开发代码过程中的业务理解持续学习团队角度,持续沉淀文档沉淀业务理解,教会更多的新人,不让某些员工掌握知识壁垒...
人工智能(AI)和机器学习(ML)技术学习流程
目录 人工智能(AI)和机器学习(ML)技术 自然语言处理(NLP): Word2Vec: Seq2Seq(Sequence-to-Sequence): Transformer: 范式、架构和自注意力: 多头注意力: 预训练、微调、提示工程和模型压缩: 上下文学习、思维链、全量微调、量化、剪枝: 思维树、思维…...
<Project-20 YT-DLP> 给视频网站下载工具 yt-dlp/yt-dlp 加个页面 python web
介绍 yt-dlp Github 项目:https://github.com/yt-dlp/yt-dlp A feature-rich command-line audio/video downloader 一个功能丰富的视频与音频命令行下载器 原因与功能 之前我用的 cobalt 因为它不再提供Client Web功能,只能去它的官网使用。 翻 redd…...
【Android】Gradle 7.0+ 渠道打包配置
声明 该配置主要解决打包apk/aab需要动态修改渠道字段,方便区分渠道上架国内商店。 暂不支持批量打包(7.4版本无法通过只修改outputFileName的形式批量处理) 因为构建时需要拷贝/创建Output,然后修改outputFileName才能处理批量打包,但拷贝/创建在高版本中失效了。 目前的…...
Web应用性能测试工具 - httpstat
在数字化时代,网站的性能直接影响用户体验和业务成功。你是否曾经在浏览网页时,遇到加载缓慢的困扰?在这个快速变化的互联网环境中,如何快速诊断和优化Web应用的性能呢?今天,我们将探讨一个强大的工具——h…...
MySQL 【流程控制】函数
目录 1、CASE 语句用于流程控制中的多分支情况。 2、IF() 函数根据测试条件是否为真分别返回指定的值。 3、IFNULL() 函数,如果第一个参数为 NULL,返回第二个参数,否则返回第一个参数。 4、NULLIF() 函数根据两个参数是否相等决定返回 NUL…...
python 天气数据可视化
Python爬取天气数据及可视化分析 https://blog.csdn.net/weixin_69423932/article/details/135184643...
【HarmonyOS Next】数据本地存储:@ohos.data.preferences
【HarmonyOS Next】数据本地存储:ohos.data.preferences 在开发现代应用程序时,数据存储是一个至关重要的过程。应用程序为了保持某些用户设置、应用状态以及其他小量数据信息通常需要一个可靠的本地存储解决方案。在 HarmonyOS Next 环境下,…...
使用BaGet快速搭建nuget服务
BaGet是基于 asp.net core编写的一个轻量级的 nuget管理服务,安装部署非常简单。 * Nuget版本号规范:https://learn.microsoft.com/zh-cn/nuget/concepts/package-versioning。 环境准备 下载 BaGet安装包。 https://loic-sharma.github.io/BaGet/ 下…...
基于Zynq FPGA的雷龙SD NAND存储芯片性能测试
文章目录 前言一、SD NAND特征1.1 SD卡简介1.2 SD卡Block图 二、SD卡样片三、Zynq测试平台搭建3.1 测试流程3.2 SOC搭建 四、软件搭建五、测试结果六、总结 前言 随着嵌入式系统和物联网设备的快速发展,高效可靠的存储解决方案变得越来越重要。雷龙发展推出的SD NA…...
【功能介绍】信创终端系统上各WPS版本的授权差异
原文链接:【功能介绍】信创终端系统上各WPS版本的授权差异 Hello,大家好啊!今天给大家带来一篇关于信创终端操作系统上WPS Office各版本(不包括政务版、企业版等)之间的差异的文章。WPS Office作为国内广泛使用的办公软…...
Neo4j 和 Python 初学者指南:如何使用可选关系匹配优化 Cypher 查询
Neo4j 和 Python 初学者指南:如何使用可选关系匹配优化 Cypher 查询 查询需求分析目标查询结构 编写 Cypher 查询查询解析OPTIONAL MATCH 和 COALESCE 的作用 在 Python 中使用 Neo4j 驱动执行查询使用 neo4j 驱动的 Python 示例代码代码解析示例输出 总结 在使用 N…...
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
前言 在当前激烈的市场竞争中,创新和效率成为企业发展的核心要素之一。在这种背景下,如何保证产品和服务的稳定性、可靠性以及高效性就显得尤为重要。 而在软件开发过程中,性能测试是一项不可或缺的环节,它可以有效的评估一个系…...
(vue3)在Pinia Store中正确使用Vue I18n
引言 在Vue 3和Pinia的开发过程中,我们经常需要在store中使用国际化(i18n)功能。然而,这个看似简单的任务可能会导致一些棘手的问题。本文将深入探讨在Pinia store中使用Vue I18n时可能遇到的挑战,解释问题的根源&…...
如何开发查找附近地点的微信小程序
我开发的是找附近卫生间的小程序。 在现代城市生活中,找到一个干净、方便的公共卫生间有时可能是一个挑战。为了解决这个问题,我们可以开发一款微信小程序,帮助用户快速找到附近的卫生间。本文将介绍如何开发这样一款小程序,包…...
三格电子——电梯监测状态项目
方案介绍...
C#-运算符重载
关键词:operator 语法: public static void operator 运算符(参数列表){} 作用:让自定义类或结构体对象,可以使用运算符进行运算 注意: 参数的数量:与所重载的运算符的运算规则有关。如加法只能有2个参数…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
