现代密码学2.1--完美安全和完美不可区分/Perfectly secret, Perfectly indistinguishable
现代密码学2.1--完美安全和完美不可区分/Perfectly secret, Perfectly indistinguishable
- 完美安全
- 定义
- 定理
- 完美不可区分
- 实验过程定义
- 完美不可区分定义
- 定理
博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。
《现代密码学》第一章所介绍的古典密码,全都已经被破解了。之前由于没有正式的定义、精确的假设,无法证明一个密码方案是否具有严格的安全性。在第二章第一节中,《现代密码学》介绍了对抗具有无限算力的攻击者,也能被证明是安全的密码方案的定义,这样的密码方案被称为是完美安全的;而针对攻击者而言,密码方案的完美不可区分是等价于完美安全的。
完美安全
定义
对于信息空间M\mathcal{M}M上的每一种概率分布,所有信息m∈Mm\in \mathcal{M}m∈M,所有密文c∈Cc\in \mathcal{C}c∈C,如果Pr[C=c]>0Pr[C=c]>0Pr[C=c]>0,都满足Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m]。
也就是,密文c∈Cc\in \mathcal{C}c∈C不会透露任何关于明文m∈Mm \in \mathcal{M}m∈M的信息,完美地隐藏了关于被加密明文mmm的所有信息。
定理
如果对于∀m,m′∈M,∀c∈C\forall m,m'\in \mathcal{M},\forall c\in \mathcal{C}∀m,m′∈M,∀c∈C,都有Pr[EncK(m)=c]=Pr[EncK(m′)=c]Pr[Enc_K(m)=c]=Pr[Enc_K(m')=c]Pr[EncK(m)=c]=Pr[EncK(m′)=c],那么这个信息空间是M\mathcal{M}M的密码方案是完美安全的。
证明:
要证明“密码方案是完美安全的”,即证满足“Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m]”。
- Pr[M=m]=0Pr[M=m]=0Pr[M=m]=0,则Pr[M=m∣C=c]Pr[M=m|C=c]Pr[M=m∣C=c]肯定也是0,那么有Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m];
- Pr[M=m]>0Pr[M=m]>0Pr[M=m]>0,
贝叶斯定理得Pr[M=m∣C=c]=Pr[C=c∣M=m]⋅Pr[M=m]Pr[C=c]Pr[M=m|C=c]=\frac{Pr[C=c|M=m]\cdot Pr[M=m]}{Pr[C=c]}Pr[M=m∣C=c]=Pr[C=c]Pr[C=c∣M=m]⋅Pr[M=m],
=Pr[C=c∣M=m]⋅Pr[M=m]∑m′∈MPr[C=c∣M=m′]⋅Pr[M=m′]=\frac{Pr[C=c|M=m]\cdot Pr[M=m]}{\sum_{m'\in \mathcal{M}}Pr[C=c|M=m']\cdot Pr[M=m']}=∑m′∈MPr[C=c∣M=m′]⋅Pr[M=m′]Pr[C=c∣M=m]⋅Pr[M=m],(1)
因为Pr[EncK(m)=c]=Pr[EncK(m′)=c]Pr[Enc_K(m)=c]=Pr[Enc_K(m')=c]Pr[EncK(m)=c]=Pr[EncK(m′)=c],所以Pr[C=c∣M=m]=Pr[C=c∣M=m′]Pr[C=c|M=m]=Pr[C=c|M=m']Pr[C=c∣M=m]=Pr[C=c∣M=m′],
那么(1)式可写为=Pr[M=m]∑m′∈MPr[M=m′]=Pr[M=m]=\frac{Pr[M=m]}{\sum_{m'\in \mathcal{M}}Pr[M=m']}=Pr[M=m]=∑m′∈MPr[M=m′]Pr[M=m]=Pr[M=m]
完美不可区分
首先,定义某个实验过程,在此实验的基础上,定义完美不可区分。
实验过程定义
攻击者A\mathcal{A}A选择两个明文m,m′∈Mm,m'\in \mathcal{M}m,m′∈M,传给加密方。加密方随机选择一个比特b∈{0,1}b\in \{0,1\}b∈{0,1},通过加密方案Π\PiΠ进行加密,得到一个密文c←Enck(mb)c\leftarrow Enc_k(m_b)c←Enck(mb),传回给A\mathcal{A}A。此时,攻击者A\mathcal{A}A猜测加密方选择的比特是b′b'b′。如果b′=bb'=bb′=b,那么PriKA,Πeav=1PriK_{\mathcal{A},\Pi}^{eav}=1PriKA,Πeav=1;反之,攻击者A\mathcal{A}A猜错,PriKA,Πeav=0PriK_{\mathcal{A},\Pi}^{eav}=0PriKA,Πeav=0。
完美不可区分定义
如果对于所有的攻击者A\mathcal{A}A,信息空间为M\mathcal{M}M的密码方案Π\PiΠ都满足Pr[PriKA,Πeav=1]=12Pr[PriK_{\mathcal{A},\Pi}^{eav}=1]=\frac{1}{2}Pr[PriKA,Πeav=1]=21,那么称这种密码方案Π\PiΠ是完美不可区分的。
也就是,对于攻击者而言,这种密码方案加密不同明文,效果都是一样的。
定理
密码方案Π\PiΠ是完美不可区分的,当且仅当Π\PiΠ是完美安全的。
证明:互相规约。
用形式化表示,
完美安全是"Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m]",
完美不可区分是"Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1]",
现在要证"Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m]"↔\leftrightarrow↔"Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1]"
先证"Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1]"↔\leftrightarrow↔"Pr[C=c∣M=m]=Pr[C=c]Pr[C=c|M=m]=Pr[C=c]Pr[C=c∣M=m]=Pr[C=c]"
- 从左到右(特殊→\rightarrow→一般):"Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1]"→\rightarrow→"Pr[C=c∣M=m]=Pr[C=c]Pr[C=c|M=m]=Pr[C=c]Pr[C=c∣M=m]=Pr[C=c]"
Pr[C=c]=∑m∈MPr[C=c∣M=m]⋅Pr[M=m]Pr[C=c]=\sum_{m\in \mathcal{M}}Pr[C=c|M=m]\cdot Pr[M=m]Pr[C=c]=∑m∈MPr[C=c∣M=m]⋅Pr[M=m]
因为Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1],所以我们可以令Pr[C=c∣M=mi]=αPr[C=c|M=m_i]=\alphaPr[C=c∣M=mi]=α,那么
Pr[C=c]=∑m∈Mα⋅Pr[M=m]=α⋅∑m∈MPr[M=m]=αPr[C=c]=\sum_{m\in \mathcal{M}}\alpha \cdot Pr[M=m]=\alpha \cdot \sum_{m\in \mathcal{M}}Pr[M=m]=\alphaPr[C=c]=∑m∈Mα⋅Pr[M=m]=α⋅∑m∈MPr[M=m]=α
即Pr[C=c]=α=Pr[C=c∣M=m]Pr[C=c]=\alpha =Pr[C=c|M=m]Pr[C=c]=α=Pr[C=c∣M=m] - 从右到左(一般→\rightarrow→特殊):"Pr[C=c∣M=m]=Pr[C=c]Pr[C=c|M=m]=Pr[C=c]Pr[C=c∣M=m]=Pr[C=c]"→\rightarrow→"Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1]"
因为对于所有的明文信息m∈Mm\in \mathcal{M}m∈M,都有Pr[C=c∣M=m]=Pr[C=c]Pr[C=c|M=m]=Pr[C=c]Pr[C=c∣M=m]=Pr[C=c],所以Pr[C=c∣M=m0]=Pr[C=c]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c]=Pr[C=c∣M=m1]
- 从左到右(特殊→\rightarrow→一般):"Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1]"→\rightarrow→"Pr[C=c∣M=m]=Pr[C=c]Pr[C=c|M=m]=Pr[C=c]Pr[C=c∣M=m]=Pr[C=c]"
再证"Pr[C=c∣M=m]=Pr[C=c]Pr[C=c|M=m]=Pr[C=c]Pr[C=c∣M=m]=Pr[C=c]"↔\leftrightarrow↔"Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m]"
Pr[C=c∣M=m]=Pr[M=m∣C=c]⋅Pr[C=c]Pr[M=m]=Pr[C=c]Pr[C=c|M=m]=\frac{Pr[M=m|C=c]\cdot Pr[C=c]}{Pr[M=m]}=Pr[C=c]Pr[C=c∣M=m]=Pr[M=m]Pr[M=m∣C=c]⋅Pr[C=c]=Pr[C=c]
→Pr[M=m∣C=c]Pr[M=m]=1\rightarrow \frac{Pr[M=m|C=c]}{Pr[M=m]}=1→Pr[M=m]Pr[M=m∣C=c]=1
→Pr[M=m∣C=c]=Pr[M=m]\rightarrow Pr[M=m|C=c]=Pr[M=m]→Pr[M=m∣C=c]=Pr[M=m]
现代密码学2.1--完美安全和完美不可区分/Perfectly secret, Perfectly indistinguishable相关推荐
- 斯坦福Dan Boneh密码学——01 香农密码与完美安全
斯坦福Dan Boneh密码学--01 香农密码与完美安全# 网安专硕,在导师推荐下,本周开始学习斯坦福大学Dan Boneh教授的密码学教材,全英文900页,密码学真的太难入门了..读教材的同时做了 ...
- 【现代密码学基础Introduction to Modern Cryptography】02 完美性加密(perfectly secret encryption)
[现代密码学基础Introduction to Modern Cryptography]02 完美性加密(perfectly secret encryption) Perfect secrecy 1. ...
- c语言编程 完美数,用完美数的数字之美激发学生学习C语言编程的兴趣
崔孝凤 摘要:对于c语言的初学者来说,激发出学习c语言的兴趣至关重要,该文通过探讨完美数的多种实现方法的案例教学,同时列举完美数特有性质,激发学生的学习兴趣,提高教学质量. 关键词:c语言;完美数;案 ...
- 乐视2能刷原生android,乐视2高通版(S2) 魔趣OS 安卓9 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
刷机包说明: 刷机之前请实现解锁BootLoader,并刷入TWRP专用版 本ROM也适用于小米红米以及魅族手机账户锁手机 如果你是账户锁手机,刷入魔趣ROM后将不再有锁 基于魔趣OS刷机包制作,纯净 ...
- 乐max2魔趣android7.0,乐视Max2 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
刷机包说明: 刷机之前请实现解锁BootLoader,并刷入TWRP专用版 本ROM也适用于小米红米以及魅族手机账户锁手机 如果你是账户锁手机,刷入魔趣ROM后将不再有锁 基于魔趣OS刷机包制作,纯净 ...
- slxrom+v.21+原生android+4.2,红米4高配版 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
刷机包说明: 刷机之前请实现解锁BootLoader,并刷入TWRP专用版 本ROM也适用于小米红米以及魅族手机账户锁手机 如果你是账户锁手机,刷入魔趣ROM后将不再有锁 基于魔趣OS刷机包制作,纯净 ...
- slxrom+v.21+原生android+4.2,小米MIX2S 魔趣OS 安卓9 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
刷机包说明: 刷机之前请实现解锁BootLoader,并刷入TWRP专用版 本ROM也适用于小米红米以及魅族手机账户锁手机 如果你是账户锁手机,刷入魔趣ROM后将不再有锁 基于魔趣OS刷机包制作,纯净 ...
- 红米3 android原生系统,红米3 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
刷机包说明: 刷机之前请实现解锁BootLoader,并刷入TWRP专用版 本ROM也适用于小米红米以及魅族手机账户锁手机 如果你是账户锁手机,刷入魔趣ROM后将不再有锁 基于魔趣OS刷机包制作,纯净 ...
- slxrom+v.21+原生android+4.2,红米Note4X高通版 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
刷机包说明: 刷机之前请实现解锁BootLoader,并刷入TWRP专用版 本ROM也适用于小米红米以及魅族手机账户锁手机 如果你是账户锁手机,刷入魔趣ROM后将不再有锁 基于魔趣OS刷机包制作,纯净 ...
最新文章
- 用两个堆栈来实现队列
- map传参上下文赋值的问题
- HBA driver for linux
- rhel5.5下安装awstats实现网站流量监控
- 柳传志与马云绸缪宏观经济“冬天影子”
- Dubbo(一)之简介
- Black Box(POJ 1442·TREAP实现)
- 剑指offer25-合并两个排序的链表
- SMP、NUMA、MPP(Teradata)体系结构介绍
- 为企业量身定制IT资产管理解决方案(一)
- ssh配置公钥_CentOS配置SSH免密登陆
- 计算机二级C语言知识点
- 哈夫曼编码C++实现
- 【typecho插件】typecho邮箱插件LoveXiaozhou是一款Typecho邮件通知类插件、小周
- html 样式 tab键 空格,设置Visual Studio2013的TAB键为4个空格
- conda deactivate python3_无法访问conda环境中的activate、deactivate或conda
- MSN群每周讨论之快速估算和管理
- SNMP介绍, OID及MIB库
- 谷歌浏览器默认显示在最前面解决方式
- 2000亿合作背后:苏宁易购如何成为海尔“兄弟”
热门文章
- 怎么样使用git克隆网站上的代码到本地文件夹(快捷)
- jQuery的核心函数
- 这个省到2025年,PUE>1.3存量大型数据中心将全部腾退关停!
- 各色“独特的”数据中心安置法,藏太深了!
- 为什么要完成量子计算机,我们为啥要量子计算机?
- mysql 1084_[LeetCode]1084. 销售分析III(Mysql,having+聚合函数)
- python在开头声明全局变量_全局变量声明Python
- c# vscode 配置_使用VSCode开发C#项目
- 成功解决for循环语句中,后几次循环输出数据一直全部为空
- HighNewTech:支付宝全球首发5G手机,四大逆天功能(防骗三折叠气味识别自由飞)!