当前位置: 首页 > news >正文

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通常用于构建最基本的加密和密钥交换方案。
2Ring-LWE(环LWE)Ring-LWE是对标准LWE的一种重要扩展,它将LWE问题定义在一个环(如多项式环)上,从而减少了计算复杂度和存储需求。Ring-LWE广泛用于构建高效的加密方案,如全同态加密(FHE)。
3Module-LWE(模LWE)Module-LWE是LWE问题的另一种扩展形式,它涉及模上的子空间。Module-LWE在某些特定的应用场景下可以提供更好的效率和安全性。
4Regev’s LWE-based Encryption由Oded Regev提出的基于LWE的公钥加密方案,是最早的基于LWE的加密方案之一。该方案的安全性依赖于LWE问题的困难性。
5GGH(Gentry-Gorbunov-Halevi) Cryptosystem由Craig Gentry、Shai Halevi和Vinod Vaikuntanathan提出。GGH方案具有较好的效率和灵活性,适用于多种应用场景。
6NTRUEncrypt虽然NTRUEncrypt主要基于格的近似最短向量问题(SVP),但它也可以看作是一种LWE的变体。NTRUEncrypt是一种高效的公钥加密方案,适用于资源受限的设备。
7TFHE(Torus Fully Homomorphic Encryption)基于环LWE的全同态加密方案,具有极高的效率和灵活性,适用于实时加密计算。
8FrodoKEM基于LWE的密钥封装机制(KEM),设计用于抗量子计算的安全通信。它具有中等的安全性和效率,适用于广泛的实际应用。
9Kyber基于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 环境下&#xff0c…...

使用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个参数…...

6.qsqlquerymodel源码分析

目录 继承关系入口浅析qsqlquery刷新数据 扩展列或者移除列以及取别名读取数据与增减行读取数据 下一章节:如何使用qsqlquerymodel 与 qtableview实现自定义表格 继承关系 qsqlquerymodel 继承与qabstracttablemodel 入口 负责填充数据 void QSqlQueryModel::s…...

【人工智能】ChatGPT多模型感知态识别

目录 ChatGPT辅助细化知识增强!一、研究背景二、模型结构和代码任务流程一:启发式生成 三、数据集介绍三、性能展示实现过程运行过程训练过程 ChatGPT辅助细化知识增强! 多模态命名实体识别(MNER)最近引起了广泛关注。…...

2.ARM_ARM是什么

CPU工作原理 CPU与内存中的内容: 内存中存放了指令,每一个指令存放的地址不一样,所需的内存空间也不一样。 运算器能够进行算数运算和逻辑运算,这些运算在CPU中都是以运算电路的形式存在,一个运算功能对应一种运算电…...

深入学习指针(5)!!!!!!!!!!!!!!!

文章目录 1.回调函数是什么?2.qsort使用举例2.1使用qsort函数排序整形数据2.2使用sqort排序结构数据 3.qsort函数的模拟实现 1.回调函数是什么? 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针(地址)作为参数传递…...

离散无记忆信道

目录 离散无记忆信道输入概率输出概率联合分布概率信道逆向概率一些记号示例1示例2 离散无记忆信道 离散:输入输出字母表都是有限的 无记忆:输出字符 d i d_i di​ 被接收到的概率只依赖于当前的输入 c i c_i ci​, 而与前面的输入无关。 一个离散无记…...

【STM32】项目实战——OV7725/OV2604摄像头颜色识别检测(开源)

本篇文章分享关于如何使用STM32单片机对彩色摄像头(OV7725/OV2604)采集的图像数据进行分析处理,最后实现颜色的识别和检测。 目录 一、什么是颜色识别 1、图像采集识别的一些基本概念 1. 像素(Pixel) 2. 分辨率&am…...

《AI产品经理手册》——解锁AI时代的商业密钥

在当今这个日新月异的AI时代,每一位产品经理都面临着前所未有的挑战与机遇,唯有紧跟时代潮流,深入掌握AI技术的精髓,才能在激烈的市场竞争中独占鳌头。《AI产品经理手册》正是这样一部为AI产品经理量身定制的实战宝典,…...

ArcGIS 地理信息系统 任意文件读取漏洞复现

0x01 产品简介 ArcGIS是由美国Esri公司研发的地理信息系统(GIS)软件,它整合了数据库、软件工程、人工智能、网络技术、云计算等主流的IT技术,旨在为用户提供一套完整的、开放的企业级GIS解决方案,它包含了一套带有用户界面组件的Windows桌面应用。可以实现从简单到复杂的…...

11.07学习

一、三中代码解决鸡兔同笼问题 1.直接解方程 #include <stdio.h> int main() { int heads, feet, chickens, rabbits; printf("请输入总头数&#xff1a;"); scanf("%d", &heads); printf("请输入总脚数&#xff1a;"); scanf(…...

【JavaEE】常见锁策略、CAS

目录 常见的锁策略 乐观锁 vs 悲观锁 重量级锁 vs 轻量级锁 自锁锁和挂起等待锁 读写锁 可重入锁 vs 不可重入锁 公平锁 vs 非公平锁 CAS ABA问题 synchronized几个重要的机制 1、锁升级 2、锁消除 3、锁粗化 常见的锁策略 乐观锁 vs 悲观锁 乐观锁和悲观锁是锁的…...