【现代密码学基础】详解完美安全与不可区分安全

目录

一. 介绍

二. 不可区分性试验

三. 不可区分性与完美安全

四. 例题

五. 小结


一. 介绍

敌手完美不可区分,英文写做perfect adversarial indistinguishability,其中adversarial经常被省略不写,在密码学的论文中经常被简称为IND安全。

完美不可区分与香农的完美安全是类似的。该定义来源于一个被动窃听的敌手试验:给敌手一个密文,然后让敌手猜测明文来源于可能得两个中的哪一个。这个过程其实也可以用计算安全来衡量。

二. 不可区分性试验

敌手A首先随意选择两个明文,如下:

m_0,m_1\in M

接着借助Gen算法产生密钥k,利用该密钥对其中的一个明文进行加密。当然此过程明文的选择需要相等的概率。

接着将该密文给敌手A,让他猜测哪一个明文被加密了。如果猜对了,则认为敌手A成功了。

如果敌手成功的概率不会好于1/2,那么认为该加密方案时完美不可区分的。其实,对于任意的加密方案,敌手都可以采用随机均匀的方法进行猜测,这个时候成功的概率即为1/2,不可区分性要求敌手的攻击策略不会优于随机猜测。

注意此处的不可区分性并没有限制敌手的计算能力(computational power)。

将加密方案形式化表达为:

\Pi=(Gen,Enc,Dec)

将消息空间表示为M,令A代表敌手,可以抽象成一个确定性的算法,由此可将如上的试验定义为:

PrivK_{A,\Pi}^{eav}

试验的具体步骤如下:

注意区分敌手A输出1,代表m1.

试验输出1,代表敌手猜测成功,两者是完全不一样的。

三. 不可区分性与完美安全

在不可区分性试验中,当敌手A随机猜测时,那么他成功的概率就是1/2.完美不可区分性则要求敌手A没有更好的其他策略了。

将以上的过程总结为形式化的定义,如下:

当一个方案是完美不可区分时,那么它也是完美安全的。两者可以互推。

四. 例题

假定某维吉尼亚密码(Vigenere cipher)的明文空间是双子母串。密钥周期可能是1也可能是2,两者均匀选择,如下:

T=\lbrace 1,2\rbrace

请证明该维吉尼亚密码不是完美不可区分的。

解:

利用\Pi代表该维吉尼亚密码,要想证明该密码方案不是完美不可区分的,其本质则是证明不可区分性试验输出1的概率大于1/2,如下:

接下来我们来详细解释该实验如何展开。

让敌手A执行如下步骤:

第一步:输出两个明文,如下:

m_0=aa\quad m_1=ab

在收到挑战密文c后,如下:

c=c_1c_2

分成两种情况,敌手输出不同的值:如果发现c1=c2,那么输出0;否则输出1

接下来计算该实验成功的概率可能有些繁琐,但是思想是很直接的。计算如下:

第一个等号:将试验成功分成两种不同的情况,对应两个条件概率

第二个等号:试验成功则是敌手输出的b和实际选择的b相同

以上b代表到底选择哪个明文,当然要求此过程明文的选择是均匀随机比特串。

当敌手输出0时,说明两个密文字母相等。此时b=0,明文m0=aa,也就是c1=c2.出现此种现象有两种可能性:

当密钥的周期为1时,对应的概率为1/2

当密钥的周期为2时,且第一个密钥和第二个密钥相等的概率可计算为:

\frac{1}{2}\frac{1}{26}

由此可计算当b=0时,敌手A输出0的概率为:

当b=1时,如果要求c1=c2,也就是敌手依旧输出0,由于明文字母是不一样的,所以要求此时的密钥周期必定为2,此时只有一种情况可以实现,所以可以计算为:

第一个等号:从互补的情况开始思考

第二个等号:1/2代表密钥周期为2,1/26代表:26(1/26)(1/26)

将两者进行合并可得:

很显然该方案不是完美不可区分的。

五. 小结

密码学可分为密码编码学和密码分析学。前者研究如何编解码信息,实现网络安全通信与传输;后者研究如何破译密码或其实现,寻找传输的薄弱环节,二者对立统一、相互促进.

密码编码学

密码编码学主要研究解决信息安全中的机密性、数据完整性、认证、身份识别、可控性及不可抵赖性等问题中的一个或几个。按照加密方式,密码体制可分为对称加密和非对称加密。前者用同一密钥加解密信息,密钥通常需要通过安全的方式分配给通信双方;后者用不同的密钥加解密信息,可将其中一项密钥作为公钥公开,仅将私钥妥善保管即可实现安全通信。

作为密码编码学的重要组成部分,密码算法的安全性和算法设计至关重要。对密码算法的安全性要求主要包括计算安全性、可证明安全性、无条件安全性等,其侧重点有所不同,主要特征如下:

(1)计算安全性:

指用目前算力无法在规定时间内攻破密码算法来说明密码体制的安全性。虽然目前没有被证明计算安全的密码算法,但其可操作性强使得计算安全性成为常用的密码算法评价标准。然 而,计算安全性仅说明密码算法的安全性和可计算问题相关,无法证明密码算法绝对安全

(2)可证明安全性:

指用多项式规约技术形式化证明密码体制的安全性。它通过有效的转化将对密 码算法的攻击规约为可计算问题的求解。

(3)无条件安全性:

指攻击者在计算资源无限的情况下,密码算法也无法被攻破。密码算法设计的基本原则是加密算法应有不可预测性,主要体现在:1)密码算法需要有较高的线性复杂度,即仅依据密文信息,攻击者很难用统计学方法分析明密文间的关系,从而重现加解密过程;2)加解密流程应足够“混乱”和“扩散”,即通过扩散处理使得加密元素之间相互影响,输入中任何微小的变化都会造成输出改变.

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

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

相关文章

视频增强修复Topaz Video AI

Topaz Video AI是一款强大的视频增强软件,利用人工智能技术对数千个视频进行训练,结合多个输入视频的帧信息来提高素材的分辨率。该软件可将视频的分辨率提高到最高8K,并保持真实的细节和运动一致性。同时,它还能自动修复视频中的…

Linux系统CPU持续飙高,如何排查?

一、检查CPU使用率 首先在Linux系统中检查CPU使用率。可以通过在命令行中输入top或htop命令来查看当前系统中各个进程的CPU使用率。如果CPU使用率大于80%,则可以考虑进行排查。 $ top 二、检查系统负载 另外可以使用uptime命令来查看系统的平均负载情况。 $ upti…

DiffMIC:融合局部和全局分析,基于扩散模型的医学图像分类方法

DiffMIC:基于扩散模型的医学图像分类方法 DiffMIC的核心思想糖尿病视网膜病变分级 网络结构去噪扩散模型:提升特征清晰度双粒度条件引导(DCG):融合局部和全局分析条件特定的最大均值差异(MMD)正…

【Java】JDBC练习

JDBC练习 环境准备 -- 删除tb_brand表 drop table if exists tb_brand; -- 创建tb_brand表 create table tb_brand (-- id 主键id int primary key auto_increment,-- 品牌名称brand_name varchar(20),-- 企业名称company_name varchar(20),-- 排序字段ordered …

C++设计模式之 模板方法模式

【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是模板方法模式(第18种设计模式) 模板方法模式&#xff0…

《Linux高性能服务器编程》笔记02

Linux高性能服务器编程 参考 Linux高性能服务器编程源码: https://github.com/raichen/LinuxServerCodes 豆瓣: Linux高性能服务器编程 文章目录 Linux高性能服务器编程第06章 高级I/O函数6.1 pipe函数6.2 dup函数和dup2函数6.3 readv 函数和writev 函数6.4 sendfile 函数6.…

基于SSM的KTV包厢管理系统(有报告)。Javaee项目,ssm项目。

演示视频: 基于SSM的KTV包厢管理系统(有报告)。Javaee项目,ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过…

软件测试|sqlalchemy一对一关系详解

简介 SQLAlchemy 是一个强大的 Python ORM(对象关系映射)库,它允许我们将数据库表映射到 Python 对象,并提供了丰富的关系模型来处理不同类型的关系,包括一对一关系。在本文中,我们将深入探讨 SQLAlchemy …

后台管理系统: 数据可视化基础

数据可视化简单理解&#xff0c;就是将数据转换成易于人员辨识和理解的视觉表现形式&#xff0c;如各种 2D 图表、3D 图表、地图、矢量图等等。 例如Excel等等 canvas <canvas> 标签只是图形容器&#xff0c;相当于一个画布&#xff0c;canvas 元素本身是没有绘图能力…

算法常用思路总结

思路 1. 求数组中最大最小值思路代码 2. 计算阶乘思路&#xff1a;代码&#xff1a; 3. 得到数字的每一位思路代码 4. 计算时间类型5. 最大公约数、最小公倍数6. 循环数组的思想题目&#xff1a;猴子选大王代码 补充经典例题1. 复试四则运算题目内容题解 2. 数列求和题目内容题…

安防监控系统EasyCVR平台用户调用设备参数,信息不返回是什么原因?

安防视频监控系统EasyCVR视频综合管理平台&#xff0c;采用了开放式的网络结构&#xff0c;平台能在复杂的网络环境中&#xff08;专网、局域网、广域网、VPN、公网等&#xff09;将前端海量的设备进行统一集中接入与视频汇聚管理&#xff0c;平台支持设备通过4G、5G、WIFI、有…

限流算法之流量控制的平滑之道:滑动时间窗算法

文章目录 引言简介优点缺点样例样例图样例代码 应用场景结论 引言 在互联网应用中&#xff0c;流量控制是一个重要的组件&#xff0c;用于防止系统过载和保护核心资源。常见的限流算法包括固定窗口算法和滑动时间窗算法。本文将重点介绍滑动时间窗算法&#xff0c;并分析其优缺…

掌握虚拟化:PVE平台安装教程与技术解析

&#x1f31f;&#x1f30c; 欢迎来到知识与创意的殿堂 — 远见阁小民的世界&#xff01;&#x1f680; &#x1f31f;&#x1f9ed; 在这里&#xff0c;我们一起探索技术的奥秘&#xff0c;一起在知识的海洋中遨游。 &#x1f31f;&#x1f9ed; 在这里&#xff0c;每个错误都…

Windows系统下使用docker-compose安装mysql8和mysql5.7

windows环境搭建专栏&#x1f517;点击跳转 win系统环境搭建&#xff08;十四&#xff09;——Windows系统下使用docker安装mysql8和mysql5.7 文章目录 win系统环境搭建&#xff08;十四&#xff09;——Windows系统下使用docker安装mysql8和mysql5.7MySQL81.新建文件夹2.创建…

结构体的使用和结构体指针的定义注意事项

1、使用背景 由于想把不同地方的三个变量数据存放在一个结构体中&#xff0c;并且调用W25QXX_Write((u8*)p,FLASH_SIZE-100,SIZE); //从倒数第100个地址处开始,写入SIZE长度的数据。调用flash写数据函数&#xff0c;其参数为指针地址&#xff0c;于是需要定义一个结构体和指向结…

最小二乘法拟合二维点

方法1&#xff1a;使用np.polyfit()函数进行拟合 import numpy as np import matplotlib.pyplot as plt# 模拟数据 x np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) y np.array([1, 3, 2, 4, 7, 10, 11, 15, 17, 20])# 使用多项式拟合&#xff0c;这里选择二次多项式 coefficie…

C++——函数的定义

1&#xff0c;概述 作用&#xff1a;将一段经常使用的代码封装起来&#xff0c;减少重复代码 一个较大的程序&#xff0c;一般分为若干个程序块&#xff0c;每个模块实现特定的功能。 2&#xff0c;函数的定义 函数的定义一般主要有五个步骤&#xff1a; 1&#xff0c;返回…

macOS修改默认时区显示中国时间

默认时区不是中国,显示时间不是中国时间 打开终端 ,删除旧区,并复制新时区到etcreb sudo -rm -rf /etc/localtime sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 重启系统后时间显示为中国时间

日志记录logging

文章目录 1. logging基础使用1.1 日志的6个级别1.2 logging.basicConfig1.3 案例 2. logging的高级应用2.1 记录器Logger2.2 处理器- Handler2.3 格式器- Formatter2.4 创建关联2.4 案例 3.在项目中的应用3.1 定义全局使用的logger对象3.2 使用案例 参考 1. logging基础使用 1…

【Linux】配置dns主从服务器,能够实现正常的正反向解析

​​​​​​1、首先&#xff0c;在主服务器上配置DNS解析器。打开配置文件/etc/named.conf&#xff0c;添加以下内容&#xff1a; zone"example.com" IN {type master;file "example.com.zone";allow-transfer { slave_ip_address: }; };zone"xx.16…