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

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

C# 类和继承(抽象类)

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

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

AspectJ 在 Android 中的完整使用指南

一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

什么是VR全景技术

VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...