热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

【密码学复习】【Chapter2】【完美保密】

第二章完美保密Part0任务证明一比特完美保密证明完美保密的等价公式证明完美保密等价不可区分性证明一次一密是完美保密证明完美保密的局限性Part1定义和基




第二章 完美保密

Part 0 任务


  • 证明一比特完美保密
  • 证明完美保密的等价公式
  • 证明完美保密等价不可区分性
  • 证明一次一密是完美保密
  • 证明完美保密的局限性

Part 1 定义和基本属性


  • 随机变量:




    K


    ,


    M


    ,


    C



    K, M, C


    K,M,C
  • 概率:




    Pr





    [


    K


    =


    k


    ]


    ,


    Pr





    [


    M


    =


    m


    ]


    ,


    Pr





    [


    C


    =


    c


    ]



    \Pr[K = k], \Pr[M = m], \Pr[C = c]


    Pr[K=k],Pr[M=m],Pr[C=c]

1.1 定义完美保密







  • M



    \mathcal{M}


    M上




    Π



    \Pi


    Π是完美保密的,若对于




    M



    \mathcal{M}


    M上的任意概率分布,







    m





    M



    \forall m \in \mathcal{M}


    ∀m∈M 与







    c





    C



    \forall c \in \mathcal{C}


    ∀c∈C , 且




    Pr





    [


    C


    =


    c


    ]


    >


    0



    \Pr[C = c] > 0


    Pr[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].

  • 某个明文被发送的后验似然与该明文被发送的先验概率没有差别


1.2 一比特上的完美保密







  • M


    =


    K


    =


    {


    0


    ,


    1


    }


    ,




    E


    n


    c



    k



    (


    m


    )


    =


    m





    k



    \mathcal{M}=\mathcal{K} = \{ 0,1 \} , \mathsf{Enc}_k(m)= m \oplus k


    M=K={0,1},Enck​(m)=m⊕k
  • 证明
  • 只要密钥是均匀随机的,那么密文的概率分布就不收明文概率分布的影响;
  • 虽然密文不独立与明文,但是密文是由明文和密钥共同决定的

1.3 完美保密的等价形式







  • Pr





    [


    C


    =


    c





    M


    =


    m


    ]


    =


    Pr





    [


    C


    =


    c


    ]



    \Pr[C=c | M=m] = \Pr[C=c]


    Pr[C=c∣M=m]=Pr[C=c]
  • 密文的先验概率等于其后验概率

1.4 完美不可区分性







  • Pr





    [


    C


    =


    c





    M


    =



    m


    0



    ]


    =


    Pr





    [


    C


    =


    c





    M


    =



    m


    1



    ]



    \Pr[C = c | M = m_0] = \Pr[C = c | M = m_1]


    Pr[C=c∣M=m0​]=Pr[C=c∣M=m1​]
  • 攻击者无法区分出密文是由哪个明文加密得到的

Part 2 一次一密 Vernam’s Cipher


  • 定义





    • M


      =


      K


      =


      C


      =


      {


      0


      ,


      1



      }


      l




      \mathcal{M} = \mathcal{K} = \mathcal{C} = \{0, 1\}^l


      M=K=C={0,1}l





    • k





      G


      e


      n



      k \leftarrow Gen


      k←Gen,以





      2






      l





      2^{-l}


      2−l的概率随机选择




      k



      k


      k





    • c


      :


      =


      E


      n



      c


      k



      (


      m


      )


      =


      k





      m



      c := Enc_k(m) = k \oplus m


      c:=Enck​(m)=k⊕m





    • m


      :


      =


      D


      e



      c


      k



      (


      c


      )


      =


      k





      c



      m := Dec_k(c) = k \oplus c


      m:=Deck​(c)=k⊕c
  • 证明其完美保密性

Part 3 完美保密的局限性


  • 密钥空间必须大于等于明文空间

  • 证明

  • 二次加密是错误的






  • c






    c






    =


    (


    m





    k


    )





    (



    m









    k


    )


    =


    m






    m







    c\oplus c'=(m\oplus k)\oplus (m'\oplus k)=m\oplus m'


    c⊕c′=(m⊕k)⊕(m′⊕k)=m⊕m′


Part 4 香农定理


  • 当明文空间、密钥空间和密文空间规模相同时,加密方案是完美保密的,当且仅当满足两个条件:
    • (1)每个密钥是从密钥空间中均匀随机生成的;
    • (2)对于任意明文和密文对,存在唯一的密钥使得该明文加密成该密文。

Part 5 窃听不可区分性


5.1 窃听不可区分实验




P


r


i


v



K



A


,


Π




e


a


v




(


n


)



PrivK_{\Alpha, \Pi}^{eav}(n)


PrivKA,Πeav​(n)


  • 定义


    1. 给敌手




      A



      \Alpha


      A指定





      1


      n




      1^n


      1n作为输入,(敌手在多项式时间内)输出一对等长的消息





      m


      0



      ,



      m


      1




      m_0, m_1


      m0​,m1​
    2. 产生随机密钥




      k





      G


      e


      n


      (



      1


      n



      )



      k \leftarrow Gen(1^n)


      k←Gen(1n),随机选择一个比特




      b





      {


      0


      ,


      1


      }



      b \leftarrow \{0, 1\}


      b←{0,1},计算密文




      c





      E


      n



      c


      k



      (



      m


      b



      )



      c \leftarrow Enc_k(m_b)


      c←Enck​(mb​)并交给




      A



      \Alpha


      A





    3. A



      \Alpha


      A输出一个比特





      b










      b^{\\'}


      b′
    4. 如果





      b









      =


      b



      b^{\\'} = b


      b′=b,则实验输出为




      1



      1


      1,否则为




      0



      0


      0。如果




      P


      r


      i


      v



      K



      A


      ,


      Π




      e


      a


      v




      (


      n


      )


      =


      1



      PrivK_{\Alpha, \Pi}^{eav}(n) = 1


      PrivKA,Πeav​(n)=1,则称敌手成功。
  • 注意:每次实验使用生成的密钥
    在这里插入图片描述


5.2 完美保密下的窃听不可区分性







  • Pr





    [


    P


    r


    i


    v



    k



    A


    ,


    Π




    e


    a


    v




    =


    1


    ]


    =



    1


    2




    \Pr[Privk_{\mathcal{A}, \Pi}^{eav} = 1] = \frac{1}{2}


    Pr[PrivkA,Πeav​=1]=21​


推荐阅读
  • libsodium 1.0.15 发布:引入重大不兼容更新
    最新发布的 libsodium 1.0.15 版本带来了若干不兼容的变更,其中包括默认密码散列算法的更改和其他重要调整。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有