现代密码学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′∈M​Pr[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′∈M​Pr[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∈M​Pr[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∈M​Pr[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​]
  • 再证"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相关推荐

  1. 斯坦福Dan Boneh密码学——01 香农密码与完美安全

    斯坦福Dan Boneh密码学--01 香农密码与完美安全# 网安专硕,在导师推荐下,本周开始学习斯坦福大学Dan Boneh教授的密码学教材,全英文900页,密码学真的太难入门了..读教材的同时做了 ...

  2. 【现代密码学基础Introduction to Modern Cryptography】02 完美性加密(perfectly secret encryption)

    [现代密码学基础Introduction to Modern Cryptography]02 完美性加密(perfectly secret encryption) Perfect secrecy 1. ...

  3. c语言编程 完美数,用完美数的数字之美激发学生学习C语言编程的兴趣

    崔孝凤 摘要:对于c语言的初学者来说,激发出学习c语言的兴趣至关重要,该文通过探讨完美数的多种实现方法的案例教学,同时列举完美数特有性质,激发学生的学习兴趣,提高教学质量. 关键词:c语言;完美数;案 ...

  4. 乐视2能刷原生android,乐视2高通版(S2) 魔趣OS 安卓9 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...

    刷机包说明: 刷机之前请实现解锁BootLoader,并刷入TWRP专用版 本ROM也适用于小米红米以及魅族手机账户锁手机 如果你是账户锁手机,刷入魔趣ROM后将不再有锁 基于魔趣OS刷机包制作,纯净 ...

  5. 乐max2魔趣android7.0,乐视Max2 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...

    刷机包说明: 刷机之前请实现解锁BootLoader,并刷入TWRP专用版 本ROM也适用于小米红米以及魅族手机账户锁手机 如果你是账户锁手机,刷入魔趣ROM后将不再有锁 基于魔趣OS刷机包制作,纯净 ...

  6. slxrom+v.21+原生android+4.2,红米4高配版 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...

    刷机包说明: 刷机之前请实现解锁BootLoader,并刷入TWRP专用版 本ROM也适用于小米红米以及魅族手机账户锁手机 如果你是账户锁手机,刷入魔趣ROM后将不再有锁 基于魔趣OS刷机包制作,纯净 ...

  7. slxrom+v.21+原生android+4.2,小米MIX2S 魔趣OS 安卓9 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...

    刷机包说明: 刷机之前请实现解锁BootLoader,并刷入TWRP专用版 本ROM也适用于小米红米以及魅族手机账户锁手机 如果你是账户锁手机,刷入魔趣ROM后将不再有锁 基于魔趣OS刷机包制作,纯净 ...

  8. 红米3 android原生系统,红米3 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...

    刷机包说明: 刷机之前请实现解锁BootLoader,并刷入TWRP专用版 本ROM也适用于小米红米以及魅族手机账户锁手机 如果你是账户锁手机,刷入魔趣ROM后将不再有锁 基于魔趣OS刷机包制作,纯净 ...

  9. slxrom+v.21+原生android+4.2,红米Note4X高通版 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...

    刷机包说明: 刷机之前请实现解锁BootLoader,并刷入TWRP专用版 本ROM也适用于小米红米以及魅族手机账户锁手机 如果你是账户锁手机,刷入魔趣ROM后将不再有锁 基于魔趣OS刷机包制作,纯净 ...

最新文章

  1. 用两个堆栈来实现队列
  2. map传参上下文赋值的问题
  3. HBA driver for linux
  4. rhel5.5下安装awstats实现网站流量监控
  5. 柳传志与马云绸缪宏观经济“冬天影子”
  6. Dubbo(一)之简介
  7. Black Box(POJ 1442·TREAP实现)
  8. 剑指offer25-合并两个排序的链表
  9. SMP、NUMA、MPP(Teradata)体系结构介绍
  10. 为企业量身定制IT资产管理解决方案(一)
  11. ssh配置公钥_CentOS配置SSH免密登陆
  12. 计算机二级C语言知识点
  13. 哈夫曼编码C++实现
  14. 【typecho插件】typecho邮箱插件LoveXiaozhou是一款Typecho邮件通知类插件、小周
  15. html 样式 tab键 空格,设置Visual Studio2013的TAB键为4个空格
  16. conda deactivate python3_无法访问conda环境中的activate、deactivate或conda
  17. MSN群每周讨论之快速估算和管理
  18. SNMP介绍, OID及MIB库
  19. 谷歌浏览器默认显示在最前面解决方式
  20. 2000亿合作背后:苏宁易购如何成为海尔“兄弟”

热门文章

  1. 怎么样使用git克隆网站上的代码到本地文件夹(快捷)
  2. jQuery的核心函数
  3. 这个省到2025年,PUE>1.3存量大型数据中心将全部腾退关停!
  4. 各色“独特的”数据中心安置法,藏太深了!
  5. 为什么要完成量子计算机,我们为啥要量子计算机?
  6. mysql 1084_[LeetCode]1084. 销售分析III(Mysql,having+聚合函数)
  7. python在开头声明全局变量_全局变量声明Python
  8. c# vscode 配置_使用VSCode开发C#项目
  9. 成功解决for循环语句中,后几次循环输出数据一直全部为空
  10. HighNewTech:支付宝全球首发5G手机,四大逆天功能(防骗三折叠气味识别自由飞)!