【现代密码学基础】详解完美安全与香农定理

目录

一. 介绍

二. 完美安全的密钥与消息空间

三. 完美安全的密钥长度

四. 最优的完美安全方案

五. 香农定理

(1)理论分析

(2)严格的正向证明

(3)严格的反向证明

六. 小结


一. 介绍

一次一密方案,英语写做one time pad encryption scheme

一次一密方案可以实现完美安全(perfectly secret),但是这些方案是有局限性的,比如所有完美安全的方案密钥空间都要大于等于消息空间,这个定理待会我们会利用密码学专业术语进行证明。

如果假定密钥的长度固定,消息空间(message space)里的明文长度也固定的话,那么完美安全就要求密钥的长度大于等于消息的长度。当然,如果密钥和消息长度一样的话,就像一次一密那样,则是最优的情况。

除了这一个限制外,完美安全还要求密钥只能使用一次,具体证明则留给读者了。

二. 完美安全的密钥与消息空间

一个密码方案可以抽象成如下三个算法:

Gen,Enc,Dec

如果说该密码方案是完美安全的,他的消息空间为M,密钥空间为K,那么一定可得:

|K|\geq |M|

证明:

此处我们利用反证法。也就是证明,如果|K|<|M|,那么该方案一定不是完美安全的。

首先假定|K|<|M|。

不妨假设明文在M上是均匀分布的。从密文空间C中选择一个密文c,并且该密文的概率不为0,也就是:

c\in C

对于该密文c来讲,使用不同的密钥k可能会得到不同的明文。我们将所有的可能性形成一个集合称之为M(c),如下:

并不是每个密钥解密都有效,所以很容易可得该集合的空间小于等于密钥的空间,注意包含等于号就是恰好每个密钥都有效,那么可得:

|M(c)|\leq|K|

大家可以把该过程的解密算法看成是确定性算法(deterministic)。

根据我们的条件假设,密钥空间小于明文空间,也就是|K|<|M|,那么必然存在一部分的明文不在该集合中,也就是:

m'\in M\quad m'\notin M(c)

所以可得:

该概率代表已知密文c,不可能会解密得到m',因为你已经尝试了所有的密钥。

但是m'在明文空间中是有概率的,也就可以得到:

从敌手的角度来讲,这就是泄露的信息。在已知密文情况下,明文的信息被泄露了一部分。所以很明显该方案不是完美安全的。

三. 完美安全的密钥长度

以上讨论告诉我们,完美安全不能无限降低密钥的长度,也可以将其看成完美安全的局限性。当然,现如今总是会出现一些非密码学的文章解释说设计出了一个新的加密方案,方案是无法攻破的,并且实现了类似一次一密的安全性,而且密钥的长度还小于明文的长度。很明显这类说法要么就是非严格密码学的局外人,要么就是方案本身是错的。

四. 最优的完美安全方案

在香农(Shannon)对完美安全的解释工作中,他指出密钥生成算法Gen要从所有可能的密钥中均匀输出密钥,就像一次一密方案。对于任意的明文m和密文c,都会存在唯一的密钥来匹配m和c,这个和一次一密方案也很类似。

这些有用的特征都可以用来证明方案的完美安全。换句话说,明文,密文和密钥的尺寸都是相等的,也就是:

|M|=|K|=|C|

在之前的证明中,我们已经严格证明完美安全要求:

|K|\geq |M|

借助映射定理,要想解密算法不出错,则要保证密文空间要大于等于明文空间,也就是:

|C|\geq |M|

通过以上的这些讨论我们不难得出,最优的完美安全方案需要保证:

|M|=|K|=|C|

五. 香农定理

将加密方案表示成:

(Gen,Enc,Dec)

其中消息空间为M,且满足:

|M|=|K|=|C|

那么如果方案满足如下两个条件,则可以说明他是完美安全的:

(1)Gen从密钥空间中输出密钥k,如下:

k\in K

其对应的概率均相等,都为1/|K|

(2)任意选择明文m和密文c,也就是:

m\in M\quad c\in C

都能从密钥空间K中找到对应的密钥k,也就是:

k\in K

使其满足:

Enc_k(m)=c

需要将此处的Enc看成加密算法。

完整形式化的定理如下:

证明该定理:

遵循充分必要条件,该定理需要正向证明和反向证明。

(1)理论分析

首先需要根据给定的两个条件,来证明完美安全。首先观察条件2,因为总存在密钥k将对应的明文m和密文c对应,所以密文c和明文m可能存在任意的对应关系。又因为密钥是唯一存在的,且每个密钥的概率均相等,正如一次一密方案,完美安全则很容易被证明。

接着需要根据完美安全,来解释这两个条件成立。完美安全意味着,对任意的明文m和c都至少存在一个密钥使得他们互相对应,再根据:

|M|=|K|=|C|

可以证明对应的密钥只有唯一性存在,那么就很容易说明每个密钥被选取的概率都是相等的,否则完美安全则不成立。

(2)严格的正向证明

不失一般性,可假设加密算法Enc是确定性的。我们首先需要根据条件1和条件2来证明该密码方案是完美安全的。这个证明过程在此专栏的前面有介绍过。

从密文空间C中选取一个密文c,从明文空间M中选取一个明文m,也就是:

c\in C\quad m\in M

令k代表某唯一的密钥,且满足:

进一步可计算得到:

第一个等号:对应成功的关键在于密钥选择正确

第二个等号:条件1表明

此等式对任意的m和c都是成立的,那么可以直接得出该方案是完美安全的。

(3)严格的反向证明

现在我们已知是完美安全,需要证明条件1和2成立。

选取任意密文:

c\in C

一定会存在对应的明文m*满足:

这也就意味着对任意的明文:

m\in M

其概率均不为0,也就是:

那么进一步我们将明文写成集合的形式:

进一步可得:

接着很容易证明可得。

六. 小结

在网络安全领域,香农定理可用于证明给定的方案是否为完美安全。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【常用工具】7-Zip 解/压缩软件——基本使用方法

在实际日常工作或项目中&#xff0c;经常会遇到需要在window操作系统上压缩文件&#xff0c;在Linux操作系统上解压缩的场景&#xff0c;一款实用的压缩软件迫在眉睫&#xff0c;经过实际使用总结&#xff0c;7-Zip可以很好的解决很多压缩和解压缩问题&#xff0c;其基本使用方…

【音视频原理】音频编解码原理 ③ ( 音频 比特率 / 码率 | 音频 帧 / 帧长 | 音频 帧 采样排列方式 - 交错模式 和 非交错模式 )

文章目录 一、音频 比特率 / 码率1、音频 比特率2、音频 比特率 案例3、音频 码率4、音频 码率相关因素5、常见的 音频 码率6、视频码率 - 仅做参考 二、音频 帧 / 帧长1、音频帧2、音频 帧长度 三、音频 帧 采样排列方式 - 交错模式 和 非交错模式1、交错模式2、非交错模式 一…

精品基于Uniapp+springboot助农管理系统App农产品积分购物商城

《[含文档PPT源码等]精品基于Uniappspringboot助农管理系统App》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 后台框架&#xff1a;springboot、ssm 安卓…

spring-boot redis stream消息队列demo-及死信简单处理

Redis stream 是 Redis 5 引入的一种新的数据结构&#xff0c;它是一个高性能、高可靠性的消息队列&#xff0c;主要用于异步消息处理和流式数据处理。在此之前&#xff0c;想要使用 Redis 实现消息队列&#xff0c;通常可以使用例如&#xff1a;列表&#xff0c;有序集合、发布…

Leetcode刷题笔记题解(C++):1114. 按序打印(多线程)

思路&#xff1a; 保证A,B,C三个线程的顺序不会变&#xff0c;即优先级顺序的问题 A,B需要资源1&#xff0c;B,C需要资源2 A先占用资源1和资源2&#xff0c;A线程完了之后释放资源1不释放资源2&#xff0c;然后B线程占用资源1&#xff0c;A线程完了之后释放资源1和资源2&…

28个炫酷的纯CSS特效动画示例(含源代码)

CSS是网页的三驾马车之一&#xff0c;是对页面布局的总管家&#xff0c;2024年了&#xff0c;这里列出28个超级炫酷的纯CSS动画示例&#xff0c;让您的网站更加炫目多彩。 文章目录 1. 涌动的弹簧效果2. 超逼真的3D篮球弹跳&#xff0c;含挤压弹起模态3. 鼠标放div上&#xff0…

Cesium加载地图-高德影像

废话不多说&#xff0c;直接上代码 整体代码 <template><div id"cesiumContainer" style"height: 100vh;"></div><div id"toolbar" style"position: fixed;top:20px;left:220px;"><el-breadcrumb><…

PyTorch 中的nn.Conv2d 类

nn.Conv2d 是 PyTorch 中的一个类&#xff0c;代表二维卷积层&#xff08;2D Convolution Layer&#xff09;。这个类广泛用于构建卷积神经网络&#xff08;CNN&#xff09;&#xff0c;特别是在处理图像数据时。 基本概念 卷积: 在神经网络的上下文中&#xff0c;卷积是一种特…

xshell无法连接linux,查询本机ip时出现<NO-CARRIER,BROADCAST,MULTICAST,UP>

在用xshell连接虚拟机VMware中的linux时&#xff0c;发现昨天还能连通的&#xff0c;今天连接不了了 我寻思应该是网卡配置出问题了&#xff0c;就去终端ip addr试了一下&#xff0c;果然发现问题&#xff0c;ip 查看网卡ens33就发现出现ens33:<NO-CARRIER,BROADCAST,MULTI…

自然语言处理:transfomer架构

介绍 transfomer是自然语言处理中的一个重要神经网络结构&#xff0c;算是在传统RNN和LSTM上的一个升级&#xff0c;接下来让我们来看看它有处理语言序列上有哪些特殊之处 模型整体架构 原论文中模型的整体架构如下&#xff0c;接下来我们将层层解析各层的作用和代码实现 该…

java中aes加密解密工具类

java中aes加密解密工具类 字符串&#xff1a;{“DATA”:{“SJH”:“17600024168”,“DLZH”:“91510104MA67FPXR5T”,“DLMM”:“jhdz123456”,“DLSF”:“5”,“NSRSBH”:“91510104MA67FPXR5T”},“JRSF”:“23”} 加密后&#xff1a;y4mzmi3jta22aXeIPfEdzu8sgA9uy3OevaIY…

LSTM的多变量时间序列预测(北京PM2.5预测)

参考博客 文章目录 LSTM简介数据集简介数据预处理多元LSTM预测模型数据准备&#xff1a;定义和拟合模型评估模型 训练多个滞后时间步 LSTM简介 LSTM&#xff08;Long Short-Term Memory&#xff09;是一种特殊类型的循环神经网络&#xff08;RNN&#xff09;&#xff0c;它在处…

LeetCode:1706. 球会落何处(Java 模拟)

目录 1706. 球会落何处 题目描述&#xff1a; 实现代码与解析&#xff1a; 原理思路&#xff1a; 1706. 球会落何处 题目描述&#xff1a; 用一个大小为 m x n 的二维网格 grid 表示一个箱子。你有 n 颗球。箱子的顶部和底部都是开着的。 箱子中的每个单元格都有一个对角线…

【C语言/数据结构】排序(直接插入排序|希尔排序)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​​ 目录 插入排序 直接插入排序&…

【STM32】STM32学习笔记-Unix时间戳(41)

00. 目录 文章目录 00. 目录01. Unix时间戳02. UTC/GMT03. 时间戳转换04. C 标准库 <time.h>05. 时间相关函数示例5.1 time函数5.2 gmtime函数5.3 localtime函数5.4 mktime函数5.5 ctime函数5.6 asctime函数5.7 strftime函数 06. 预留07. 附录 01. Unix时间戳 •Unix 时…

GD32移植FreeRTOS+CLI过程记录

背景 之前我只在STM32F0上基于HAL库和CubeMX移植FreeRTOS&#xff0c;但最近发现国产化替代热潮正盛&#xff0c;许多项目都有国产化器件指标&#xff0c;而且国产单片机确实比意法的便宜&#xff0c;所以也买了块兆易创新的GD32F303开发板&#xff0c;试一试它的优劣。虽然GD…

HarmonyOS鸿蒙学习基础篇 - 通用事件

一、引言 HarmonyOS鸿蒙是华为推出的分布式操作系统&#xff0c;旨在为各种智能设备提供统一的操作系统。鸿蒙系统的一大特色是其强大的分布式能力&#xff0c;而通用事件则是实现这一能力的关键技术之一&#xff0c;本篇博客将介绍HarmonyOS鸿蒙中的通用事件。 二、 点击事件…

Vue深入学习4—指令和生命周期

1.Vue是怎么识别 v- 指令的&#xff1f; 首先将HTML结构解析成属性列表&#xff0c;存入到数组中&#xff0c;接着遍历数组中的每一个节点&#xff0c;获取到不同指令对应的方法。 // 将HTML看作真正的属性列表 var ndoeAttrs node.attributes; var self this; // 类数组对象…

使用chrome爬取URL数据的实战代码

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

JavaScript 执行上下文与作用域

执行上下文与作用域 ​ 执行上下文的概念在 JavaScript 中是颇为重要的。变量或函数的上下文决定了它们可以访问哪些数据&#xff0c;以及它们的行为。每个上下文都有一个关联的变量对象&#xff08;variable object&#xff09;&#xff0c; 而这个上下文中定义的所有变量和函…