当前位置: 首页 > 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个参数…...

接口测试中缓存处理策略

在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

基于服务器使用 apt 安装、配置 Nginx

🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

条件运算符

C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中&#xff0…...