详解语义安全(semantically secure)

目录

一. 引入

二. 密文与明文

2.1 通俗性理解

2.2 定理

2.3 定理理解

三. 语义安全的第一个版本

3.1 基本理解

3.2 定理

3.3 定理理解

四. 语义安全的第二个版本

4.1 直观解释

4.2 小结


一. 引入

密码学中安全加密要求:敌手(adversary)根据密文(ciphertext)不能推导出关于明文(plaintext)的任何信息。

本文将重点介绍语义安全(semantic security)的理解。

二. 密文与明文

2.1 通俗性理解

密码学的目标:密文不会泄露明文的任何一比特信息。

Enc:加密方案

Dec:解密方案

Gen:产生密钥。在不外加条件的情况下,通常认为Gen算法输出的密钥为n比特的均匀分布。

Message:明文。l比特可写作:

在理想条件下,攻击者在拿到密文后,猜测明文m的第i个比特(可以写做m^i)的概率为1/2.也就等同于胡乱猜测。

2.2 定理

PPT:probabilistic polynomial-time algorithm 概率多项式时间算法

negl:negligible 可忽略函数

假定某对称加密方案的明文是固定长度的,写做:

明文的长度为l,第i位比特。

给定任意的PPT敌手A,以下式子是满足的:

通常认为明文m与密钥k是均匀分布的:

需要注意的是,敌手A是具有随机性的。加密算法Enc也是有随机性的。

2.3 定理理解

证明过程比较繁琐,建议了解的小伙伴略过此部分。

本小节给出一个有意思的安全性归约证明(proofs by reduction)。

对于密文Enc(m),如果敌手可以确定出明文的第i个比特会发生什么?

换句话说,如果有两个明文m0与m1,这两个明文的第i个比特不一样。敌手就可以区分出这两个明文对应的密文。很明显这违反了我们加密的目标。

密码学需要构造两个敌手A和A',通过归约证明,来验证安全性。

引入一个PPT的敌手A,以及比特i:

第一个集合I0代表所有第i个比特为0的比特串:

第二个集合I1代表所有第i个比特为0的比特串:

明文m0要么来自于I0,要么来自于I1.而且两者的概率肯定是相等的。由此可得:

两个概率均代表敌手猜对的概率。

接下来我们构建另外一个敌手A'

第一步:均匀选取m0与m1,如下:

第二步:给定密文c。将密文c输入到敌手A的程序中:

如果A输出0,那么b'=0;如果A输出1,那么b'=1.

因为A是多项式时间的,所以A'也是多项式时间的。

对于敌手A'来讲,将其试验的结果表示为:

核心:当A成功时,A'也就成功了。由此可得:

第一个概率代表A'的试验输出1,也就是A'成功的概率;

第二个概率代表A成功的概率;

第三行代表分成两种情况;

第四行代表猜对明文m的第i个比特。

因为密码方案(Enc,Dec)是安全的。所以A'成功的概率是不会优于1/2,也就是:

最终可得敌手A不会猜出明文m的任意1比特信息:

三. 语义安全的第一个版本

3.1 基本理解

更进一步的目标:给定明文m的分布D,我们希望没有PPT敌手可以从密文学习到关于明文m的任意函数f信息。

我们希望给定密文Enc(m),敌手正确计算f(m);

敌手根据m的分布,直接计算f(m);

我们希望这两者的概率是一样的。也就是密文并没有起到任何辅助的作用,这样才能满足密码学的要求。

3.2 定理

(Enc,Dec):固定明文长度的对称加密方案,其中明文长度为l

明文的分布为D:

A与A'均为PPT算法

函数f定义为:

以下两个概率相减是可忽略的:

第一个概率:明文m是根据分布D选取的,密钥k是n长的均匀分布。算法A与加密Enc本身会引入随机性。

第二个概率:明文m是根据分布D选取的,算法A'会引入随机性。

3.3 定理理解

证明过程比较繁琐,建议了解的小伙伴略过此部分。

假定有两种明文。第一个是从分布D中随机选取,第二个是全为1的比特串,也就是:

Enc_k(m)\quad Enc_k(1^l)

如果加密方案是安全的,那么PPT敌手无法区分这两个密文。

接下来我们按密码学的语言来进行解释。

从分布D中选取m0.

确定m1为:

密文c可以是对m0进行加密,也可以是对m1进行加密。

将该密文输入到算法A中。如果A可以输出f(m),那么试验结果为0.

情况1:给定对m的加密,输出f(m)

情况2:给定对全为1的加密,输出f(m)

这两者其实是相等的。

四. 语义安全的第二个版本

本小节介绍是最全面的版本。

4.1 直观解释

明文为任意分布,可以由某些多项式时间算法产生Samp

可以允许敌手额外获取某些关于明文的信息h(m)。

消息的长度是任意的,该长度敌手可获取。|m|代表明文的长度

综上目前有两个多项式时间可计算的函数f与h

语义安全要求以下表达式是可忽略的:

明文输入依靠算法:

密钥k均匀选取,Enc和A,还有A'本身具有随机性。

第一个概率理解:敌手A拥有密文Enc(m),外部信息h(m)。尝试猜测f(m)的值

第二个概率理解:A'的目标也是尝试猜测f(m)的值,但只知道m的长度与h(m)的值。

语义安全要求A和A'猜测的概率是相等的。

换句话说,语义安全要求密文Enc(m)不会泄露关于f(m)的任何信息。

4.2 小结

语义安全跟不可区分安全是等效的。

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

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

相关文章

串(4/6)

目录 1. 串的概念及应用实例 1.1 串的定义 1.2 应用实例 2. 串的基本操作 2.1 创建和读取 2.2 串的拼接 2.3 串的比较 2.4 插入和删除 2.5 查找子串 3. 串的存储结构及实现 3.1 顺序存储结构 3.2 链式存储结构 3.3 存储结构的选择 4. 串的模式匹配算法 4.1 朴素匹…

Hive3:常用的内置函数

1、查看函数列表 -- 查看所有可用函数 show functions; -- 查看count函数使用方式 describe function extended count;2、数学函数 -- round 取整,设置小数精度 select round(3.1415926); -- 取整(四舍五入) select round(3.1415926, 4); -- 设置小数精度4位(四…

应急响应-DDOS-典型案例

某单位遭受DDoS攻击事件如下 事件背景 2019年2月17日,某机构门户网站无法访问,网络运维人员称疑似遭受DDoS攻击,请求应急响应工程师协助。 事件处置 应急响应工程师在达到现场后,通过查看流量设备,发现攻击者使用僵…

汇编语言:call、call far ptr、call word ptr、call dword ptr、call 寄存器

引言 call指令是转移指令,CPU执行call指令,进行两步操作: (1)将当前IP或当前CS和IP压入栈中 (2)转移。call指令不能短转移,除此之外,call指令转移的方法跟jmp指令的原理…

Java流程控制09:练习题:打印三角形

本节视频链接:https://www.bilibili.com/video/BV12J41137hu?p44&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5https://www.bilibili.com/video/BV12J41137hu?p44&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 通过嵌套for循环可以实现打印三角形&#xff…

使用C#禁止Windows系统插入U盘(除鼠标键盘以外的USB设备)

试用网上成品的禁用U盘的相关软件,发现使用固态硬盘改装的U盘以及手机等设备,无法被禁止,无奈下,自己使用C#手搓了一个。 基本逻辑: 开机自启;启动时,修改注册表,禁止系统插入USB存…

银河麒麟服务器操作系统Kylin-Server-V10-SP3-2403-Release-20240426-x86_64安装步骤

银河麒麟服务器操作系统 Kylin-Server-V10-SP3-2403-Release-20240426-x86_64安装步骤 一、准备工作1. 下载ISO镜像2. 制作安装介质3. 设置BIOS 二、安装过程1. 启动系统2. 选择安装语言3. 选择安装配置4. 配置root密码与创建用户5. 开始安装6. 重启系统7. 同意许可协议 三、系…

通义千问( 四 ) Function Call 函数调用

4.2.function call 函数调用 大模型在面对实时性问题、私域知识型问题或数学计算等问题时可能效果不佳。 您可以使用function call功能,通过调用外部工具来提升模型的输出效果。您可以在调用大模型时,通过tools参数传入工具的名称、描述、入参等信息。…

C语言(16)——初识单链表

1.链表的概念及结构 概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 结构图: 补充说明: 1、链式机构在逻辑上是连续的,在物理结构上不⼀定连续 2、…

Oracle Java JDK 21 下载地址及安装教程

Oracle JDK 21 官方地址 https://www.oracle.com/java/technologies/downloads/#java21 1. Linux 版本 ARM64 Compressed Archive https://download.oracle.com/java/21/latest/jdk-21_linux-aarch64_bin.tar.gz ARM64 RPM Package https://download.oracle.com/java/21/late…

Python爬虫图片:从入门到精通

在数字化时代,图片作为信息传递的重要媒介之一,其获取和处理变得越来越重要。Python作为一种功能强大且易于学习的编程语言,非常适合用来编写爬虫程序,帮助我们自动化地从互联网上获取图片资源。本文将从基础到高级,详…

【qt】跳转到另一个界面

如何在一个界面跳转到另一个界面呢? 1.具体步骤 1.先新建一个界面 2.选择qt设计师界面 3.选择W 4.新界面名称 5.界面设计 因为我们要实现通信,需要一个发送信息栏,一个发送按钮,一个清空发送栏按钮 6.实现跳转 我们可以参…

python 已知x+y=8 求x*y*(x-y)的最大值

先用导数求解 已知xy8 求xy(x-y)的最大值 令y8-x 则 f(x)x⋅(8−x)⋅(x−(8−x))x⋅(8−x)⋅(2x−8) 导数方程为 f(x)-3x^2 24x - 32 求方程 − 3 x 2 24 x − 32 0 -3x^2 24x - 32 0 −3x224x−320 的根。 首先,我们可以尝试对方程进行因式分解。观察…

Airtest 的使用

Airtest 介绍 Airtest Project 是网易游戏推出的一款自动化测试框架,其项目由以下几个部分构成 Airtest : 一个跨平台的,基于图像识别的 UI 自动化测试框架,适用于游戏和 App , 支持 Windows, Android 和 iOS 平台&#xff0c…

鸿蒙应用程序框架基础

鸿蒙应用程序框架基础 应用程序包基础知识应用的多Module设计机制Module类型 Stage模型应用程序包结构开发态包结构编译包形态发布台包结构选择合适的包类型 应用程序包基础知识 应用的多Module设计机制 **支持模块化开发:**一个应用通常会包含多种功能&#xff0…

为什么MCU I2C波形中会出现的脉冲毛刺?

在I2C的波形中,经常会发现有这样的脉冲毛刺,会被认为是干扰或者器件不正常。 看到这个波形时,可以先数一下出现在第几个clock的位置,如果出现在第9个clock的低电平期间,就不是干扰或者器件异常导致。 在I2C的协议中&a…

虎牙驶入快车道

撰稿 | 多客 来源 | 贝多财经 一份Q2财报,狠狠打脸了那些唱反调的人,特别是故意唱衰直播和游戏公司的一些TMT观察者。 同时,直播平台如何健康转型实现可持续发展,游戏相关服务业务应该怎么做增量,虎牙的这份财报也给…

【Kubernetes】虚拟 IP 与 Service 的代理模式

虚拟 IP 与 Service 的代理模式 1.userspace 代理模式2.iptables 代理模式3.IPVS 代理模式 由于 Service 的默认发布类型是 ClusterlP,因此也可以把 ClusterIP 地址叫作 虚拟 IP 地址。在 Kubernetes 创建 Service 时,每个节点上运行的 kube-proxy 会自动…

golang基于WMI获取所有外接硬盘(USB,移动硬盘)信息

golang基于WMI获取所有外接硬盘(USB,移动硬盘)信息 package mainimport ("fmt""regexp""github.com/StackExchange/wmi""github.com/shirou/gopsutil/v3/disk" )// 定义 WMI 类结构体 type Win32_LogicalDiskToPartition struct {Ant…

高数4.2 积分方法-换元积分法

1. 第一类换元积分法 2. 第二类换元积分法