格密码:LWE设计公钥密码系统

目录

一. LWE公私钥对

二. 怎么加密?

三. 怎么解密?

四. 正确性分析

五. 安全性


在格密码中,LWE(Learning With Errors)问题非常重要,本文章将介绍一些基于LWE设计的公钥密码方案,并详细讨论这些方案是如何运行的。

这些方案讲重点关注IND-CPA安全(不可区分性-选择明文攻击安全)。IND-CPA安全简单来讲就是,窃听者获得公钥和密文,不会学习到关于明文的任何信息。基于LWE问题也可以用来设计全同态加密,此处就不作过多拓展。

一. LWE公私钥对

一些公共参数:格维度为n,模数为q,噪声分布为\chi,且每个数均为整数,样本个数为m。

私钥比较简单,先说私钥。LWE问题中的秘密s\in Z_q^n即为私钥。很明显私钥的尺寸为\tilde O(n)

样本个数为m\approx (n+1)logq,这样取的话可以平衡安全性和效率,感兴趣可以看Regev原始的LWE论文。

有一个概念叫LWE分布A_{s,\chi},其中s代表秘密,\chi代表噪声分布,如下:

(\bar a_i,b_i=\langle s,\bar a_i\rangle+e_i)\in Z^{n+1}_q

需要注意的是,其中e_i的值较小。

这个代表一个样本,如果把m个样本组合在一起,\bar a_i是n维,组合成矩阵\bar An\times m维。b_i为1维,组合后为m\times 1维向量,也就是:

b^t=s^t\bar A+e^t \quad mod\ q

LWE问题的困难性告诉我们将b和A公开也不会泄露s和e的信息,由此可将A和b作为公钥如下:

A=\begin{bmatrix} \bar A\\ b^t \end{bmatrix}\in Z_q^{(n+1)\times m}

很明显公钥的尺寸为\tilde O(n^2)

我们知道在一般的公钥密码系统中,公钥和私钥之前是有关系的。在LWE公钥密码方案中,我们来看一个有意思的计算:

(-s,1)^t\cdot A=e^t\approx 0\quad (mod\ q)

二. 怎么加密?

取一个明文比特\mu\in Z_2=\lbrace 0,1\rbrace。密码学中加密的过程一定要引入随机数,此处也不例外,我们需要随机取m维向量x\in \lbrace 0,1\rbrace^m,利用公钥A进行加密如下:

c=A\cdot x+(0,\mu\cdot \lfloor\frac{q}{2}\rceil)\in Z_q^{n+1}

需要注意上面的“0”是一个N维的向量。其实这个加密过程有一个很专业的英语表达,在这里分享给大家:

“take a random subset-sum of the LWE samples”:矩阵A就是LWE样本,x向量只能取0或1,所以其本质就是有些位置取该样本,有些不取。最后再相加,则是所谓的子集和。

“appropriately encodes the message bit in the last coordinate”:这个就更好理解了,因为明文比特\mu就是放在最后一个位置。

很明显,该密文长度为\tilde O(n)

矩阵A中\bar A是随机的,b^t是伪随机的,所以最终的公钥矩阵A也是伪随机的。

了解SIS(Short Integer Solution)问题的小伙伴知道,这个加密的过程其实跟求SIS单向函数非常类似。刚好此处简单介绍下SIS单向函数的正向计算。根据单向函数的定义,正向计算是简单的。给定随机的矩阵A\in Z^{n\times m}_q,输入一个非零的向量z\in Z^m,且满足||z||\leq \beta,计算如下:

f_A(z)=Az\in Z_q^n

三. 怎么解密?

加密肯定要用私钥s,当然实际运算如下:

(-s,1)^t\cdot c

将密文的表达式带入:

(-s,1)^t\cdot c=(-s,1)^t\cdot A\cdot x+\mu\cdot\lfloor \frac{q}{2}\rceil

根据私钥与公钥的关系(-s,1)^t\cdot A=e^t,带入可得:

(-s,1)^t\cdot A\cdot x+\mu\cdot\lfloor \frac{q}{2}\rceil=e^t\cdot x+\mu\cdot\lfloor \frac{q}{2}\rceil

LWE的要求告诉我们e^t非常小,且x又只能取0或1,所以第一个数与第二个数相差悬殊,可得:

e^t\cdot x+\mu\cdot\lfloor \frac{q}{2}\rceil\approx \mu\cdot\lfloor \frac{q}{2}\rceil

解密的人最后只需要看该值是接近\lfloor \frac{q}{2}\rceil还是接近0,便可以判断明文比特是1还是0.

当然,发展到今天,仅仅只加密一个比特未免效率过低。其实也可以将明文比特从Z_p中选,后续只需要将以上方案中的q/2替代成q/p即可,当然需要保证q/p足够大。

四. 正确性分析

解密是否成功的关键在于\langle e,x\rangle不能太大,那么到底有什么限制呢?

只需要误差处于0和q/2的平均值即可,也就是:

\langle e,x\rangle\in Z\leq \frac{q}{4}

实现起来难吗?

最直观的无非是,让q尽量大一些,让噪声分布的取值尽可能小一点,让维度m尽可能小一点。

在这里,我们用格密码最喜欢用的离散的高斯分布举一个例子。

假如噪声分布\chi=D_{Z,r},其中\chi代表噪声分布,D代表离散的高斯分布。有关离散高斯分布的介绍,可以看这篇博客:

格密码:离散高斯与子高斯分布-CSDN博客

Z代表整数格,r代表离散高斯分布的标准差。

学习过概率论的小伙伴都知道,如果向量e服从高斯分布,x\in\lbrace 0,1\rbrace^m,那么\langle e,x\rangle也为高斯分布,并且其标准差的上限为r\sqrt m

高斯分布越往两边,概率越小。密码学追求概率的渐近值,也就是\langle e,x\rangle的长度小于r\sqrt{mln(1/\epsilon)/\pi}的概率大于等于1-2\epsilon。简单翻译下就是,\langle e,x\rangle的长度极大可能性小于r\sqrt{mln(1/\epsilon)/\pi}

举个例子。令r=O(\sqrt n),q=\tilde O(n),LWE的噪声分布有一个很有意思的量,叫误差率(error rate),计算如下:

\alpha=\frac{r}{q}=\frac{1}{\tilde O(\sqrt n)}

五. 安全性

密码安全性证明,常用归约和"hybrid argument",等以后有时间再补上吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/234686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle怎样才算开启了内存大页?

oracle怎样才算开启了内存大页? 关键核查下面三点: 1./etc/sysctl.conf vm.nr_hugepages16384这是给了32G,计划sga给30G,一般需多分配2-4G sysctl -p生效 看cat /proc/meminfo|grep Huge啥结果? 这种明显是配了…

蓝牙物联网开发与应用:五大核心应用场景!

蓝牙技术在物联网中的五大核心应用场景 1、智能家居 通过蓝牙连接智能家居设备,如智能灯泡、智能插座、智能恒温器等,可以实现远程控制、语音控制等功能,提高家居的智能化程度和便利性。 2、智能穿戴设备 蓝牙技术可以连接智能手表、智能手…

01AVue入门(持续学习中)

1.使用AVue开发简单的前端页面直接简单到起飞,他是Element PlusVueVite开发的,不需要向元素的前端代码一样一个组件要传很多参数,他可以使用Json文本来控制我们要传入的数据结构来决定显示什么 //我使用的比较新,我们也可以使用cdn直接使用script标签直接引入 2.开发中遇到的坑…

共享目录搭建

【linux系统】 1.sudo yum install nfs-utils 或 sudo apt install nfs-common 问题:如果apt install nfs-common报错dpkg: error processing package rpcbind (--configure) 解决方法:删除所有信息之后update sudo mv/var/lib/dpkg/info/ /va…

鸿蒙ArkTS语言介绍与TS基础法

1、ArkTS介绍 ArkTS是HarmonyOS主力应用开发语言,它在TS基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等响应的能力,让开发者以更简洁、更自然的方式开发跨端应用。 JS 是一种属于网络的高级脚本语言,已经被广泛用…

【ITK库学习】使用itk库进行图像配准:“Hello World”配准(一)

目录 1、itkImageRegistrationMethod / itkImageRegistrationMethodv42、itkTranslationTransform3、itkMeanSquaresImageToImageMetric / itkMeanSquaresImageToImageMetric44、itkRegularStepGradientDescentOptimizerv / itkRegularStepGradientDescentOptimizerv4 图像配准…

MyBatis的ORM!!!

首先你要明白为什么使用ORM:我们看一个示例,我们发现我们要声明的pojo类中的属性名和数据库中的字段名不一致,这时就需要我们使用MyBatis的ORM。 首先还是准备工作: 1.创建Maven工程,还没有配置Maven的和还不会的去看这…

2023年12月20日学习总结

今日to do list: 学习kaggle中store sales中的dart forcasting🎯 大概搜集一个声纹识别的报告(老师给的新项目😭) 学习时不刷手机 okkkkkkkkkkkkkk 开始👍 1. 时间序列预测- a complete guide 总结一下这…

mysql创建用户和赋权

1.创建用户 CREATE USER new_userlocalhost IDENTIFIED BY user_password; “localhost"只允许本地连接,而”%"允许所有IP地址都可以连接到服务器。 2.赋权 GRANT ALL PRIVILEGES ON database_name.* TO new_userlocalhost; FLUSH PRIVILEGES; 3.给…

【C++初阶】学习string类的模拟实现

目录 前言:一、创建文件和类二、实现string类2.1 私有成员和构造函数2.2 析构函数2.3 拷贝构造函数2.3.1 写法12.3.2 写法2 2.4 赋值重载函数2.4.1 写法12.4.2 写法2 2.5 迭代器遍历访问2.6 下标遍历访问2.7 reserve2.8 resize2.9 判空和清理2.10 尾插2.10.1 尾插字…

计算机组成原理综合2

21、和外存储器相比,内存储器的特点是________。C A. 容量大、速度快、成本低 B. 容量大、速度慢、成本高 C. 容量小、速度快、成本高 D. 容量小、速度快、成本低 22、某计算机字长16位,存储器容量64KB,若按字编址&#xf…

diffusers-Inpainting

原文链接:添加链接描述 白色mask区域仅使用生成出来的,非白色mask区域使用原始影像,但是图像有点不平滑 import PIL import numpy as np import torchfrom diffusers import AutoPipelineForInpainting from diffusers.utils i…

Ubuntu 常用命令之 gzip 命令用法介绍

gzip 是一个在 Linux 和 Unix 系统中常用的文件压缩工具。它的名字来源于 GNU zip,作为一个自由软件,它是 GNU 项目的一部分。gzip 命令通常用于压缩文件,以节省磁盘空间,或者减小文件的大小,以便于网络传输。 gzip 命…

音视频直播核心技术介绍

直播流程 采集: 是视频直播开始的第一个环节,用户可以通过不同的终端采集视频,比如 iOS、Android、Mac、Windows 等。 前处理:主要就是美颜美型技术,以及还有加水印、模糊、去噪、滤镜等图像处理技术等等。 编码&#…

网络基础介绍

1.网线制作 1.1 网线制作需要的工具 网线 网线钳 水晶头 测试仪 ​编辑 1.2 网线的标准 1.3 网线的做法 2.集线器&交换机&路由器的介绍 3.OSI七层模型 4.路由器的设置 4.1 常见的路由器设置地址 4.2 常见的路由器账号密码 4.3 登录路由器 设置访客网…

管理类联考——数学——真题篇——按知识分类——代数——数列

【等差数列 ⟹ \Longrightarrow ⟹ 通项公式: a n a 1 ( n − 1 ) d a m ( n − m ) d n d a 1 − d A n B a_n a_1(n-1)d a_m(n-m)dnda_1-dAnB an​a1​(n−1)dam​(n−m)dnda1​−dAnB ⟹ \Longrightarrow ⟹ A d , B a 1 − d Ad&#x…

从零开始构建高效的网校平台:在线教育系统源码的开发指南

随着科技的不断发展,在线教育在现代社会中变得愈发重要。本文将为您提供一份详尽的指南,从零开始构建高效的网校平台,覆盖在线教育系统源码的关键开发步骤。 第一步:明确需求和目标 在开始之前,明确您的网校平台的需…

软件测试工程师的职业发展方向

一、软件测试工程师大致有4个发展方向: 1 资深软件测试工程师 一般情况,软件测试工程师可分为测试工程师、高级测试工程师和资深测试工程师三个等级。 达到这个水平比较困难,这需要了解很多知识,例如C语言,JAVA语言&#xff0c…

《opencv实用探索·二十一》人脸识别

Haar级联分类器 在OpenCV中主要使用了两种特征(即两种方法)进行人脸检测,Haar特征和LBP特征。用的最多的是Haar特征人脸检测。 Haar级联分类器是一种用于目标检测的机器学习方法,它是一种基于机器学习的特征选择方法,…

【JAVA】仓库、货架、货物

当前只有添加、查询,没有删除和修改部分: import java.util.LinkedList;class Goods {String id;String name;int price;public Goods(String id, String name, int price) {this.id id;this.name name;this.price price;}Overridepublic String toS…