当前位置 博文首页 > zmrlinux:《A Graduate Coursse in Applied Cryptography》chap

    zmrlinux:《A Graduate Coursse in Applied Cryptography》chap

    作者:[db:作者] 时间:2021-09-10 16:44

    《A Graduate Coursse in Applied Cryptography》chapter 3 ?Stream ciphers (1)

    原文教材:

    ????????Boneh D, Shoup V. A Graduate Course in Applied Cryptography[J].

    ? ? ? ? 该书项目地址(可以免费获取):http://toc.cryptobook.us/

    ????????系列博客为对该教材的学习笔记(只包括我认为重要的东西)。
    ?

    3.1 Pseudo-random generators?

    引言:由之前的一次一密加密方案,我们知道一次一密是能够实现完美保密的,但是缺点也很明显,每次需要存储与明文相等长度的秘钥。但是,在实际的应用中我们往往着重研究语义安全(完美保密的弱化概念)方案。允许秘钥长度小于明文的长度,然而,问题来了。符合语义安全的秘钥该如何生成?

    问题:如何生成一个合适的短秘钥?或者说与一次一密中随机数秘钥相类似安全的的秘钥?

    解决方案:伪随机数生成器(Pseudo-random generator)是一种生成随机数的工具,该工具以一个随机种子信息seed为输入,输出一个指定长度的随机数,即将随机种子信息S映射到随机空间L上。

    形式化定义

    伪随机数生成器,将种子空间S映射到输出空间R。S 和 R 在此处是可预测长度的。一般情况下,我们对随机数生成器随机数的输入输出长度是预先控制的。如果伪随机数生成器G(S)输出的随机数与真正的随机数是计算不可区分的,那么 我们就认为该随机数生成器是良好的、安全的。

    安全性描述:(所有密码学工具都需要有安全性描述,数学困难问题原语一般不这么说

    凡是密码学工具都有其安全性模型与定义,而安全模型与定义的描述一般通过某种(类)敌手的攻击行为来描述,实际上安全模型是各类敌手恶意行为的抽象,此处该书定义PRG的安全模型(攻击游戏)为:

    与前文定义的语义安全模型类似,设计两个实验,随着b = 0 或者1 ,敌手与不同的挑战者交互。定义W0事件为当运行的是实验0时输出1的概率,定义W1事件为当运行的是实验1时输出1的概率。显然,W0 我们可以认为是敌手失败的概率,W1我们可以认为是敌手成功的概率。那么,敌手的优势即为|W0 - W1|的概率。为什么?因为对于敌手而言,不论与这两个挑战者哪一个进行交互,其成功概率直觉上是1/2,如果敌手掌握了相关的秘密信息能够有效的区分两个实验的挑战者,那么其优势|W0-W1|一定是一个不可忽略的值。【这里有一个问题,为什么要这么定义W1与W0?为甚不定义W0为敌手在b=0时输出0的概率?此时该概率描述的是敌手在实验0下成功猜测的概率,W1为敌手在实验1下成功猜测的概率。如果这么定义W0与W1,而我们知道,实验1等价一次一密,敌手的优势为0。那么|W0-W1|描述的是敌手攻击可能有优势方案的概率减去无优势方案的概率,也是描述敌手成功概率的一种方式?此时其成功概率与比特猜测版本的语义安全定义类似。如果想要明白这个问题的答案,还需要从本书提到的语义安全定义说起,在本书Attack Game 2.1处,类似上文提到的,使用两个实验来描述敌手的优势,此时我们需要明确,这两个实验是独立的,并且敌手是具有相同攻击能力的,并非是同一个敌手发起的攻击。那么敌手的优势直接可以用两个实验中敌手输出1的差值来表示。此时,我们不要关注到底01代表的是敌手获胜还是失败的问题,我们只需要明白,敌手在这个两个实验中输出1的概率到底是多少。如果敌手没有优势那么敌手输出1的概率就是二分之一,当敌手具有优势时其输出1的概率的差值将一定不为0,而是受其优势影响的值。

    安全定义:

    3.2 Stream cipher: encryption with a PRG?

    引言:当我们具有一个安全的伪随机数发生器后,我们就可以稳定的生成安全的秘钥了,然后就可以使用该秘钥实现加密了。

    加密方案:

    ? ? ? ?加密方选择种子s,使用秘钥生成器G(s),生成秘钥然后运行一次一密算法,得到密文。解密方同样有相同的种子s,使用秘钥生成器G(s),生成秘钥然后解密,描述如下:

    ? ? ? ? ? ? ? ? ? ? ? ?

    安全模型:

    如果G是一个安全的PRG,那么流密码方案就是语义安全的。问题来了,如何证明该定理是成立的?

    ? ? ? ?首先,我们要注意一个问题,我们的终极目的是证明该加密协议是安全的,由于该协议比较简单,直觉上我们知道该协议是从一次一密方案修改过来的,那么这个方案最可能与一次一密方案区别的地方就是秘钥的产生。如果这个秘钥生成器是安全的,那么我们就可以认为该方案也是安全的。这个安全定理的核心在于证明:敌手A攻击该加密方案的优势 与 存在一个敌手B攻击PRG的优势相同,即为下式:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    那么,如何证明这个等式成立?或者说我们如何将这两个优势(概率)联系起来,并证明相等?这就是安全证明的核心内容。

    直觉上,如何联系敌手A和敌手B,最为常用或者可能的方式就是,通过调用的方式,也就是常说的安全规约,如何构建这个过程是比较困难的。

    构造证明第一步:

    ? ? ? ? 我们已经有了证明的目标,证明这两个概率相等就行了。此时,我们忘记安全规约等以前具备的可证明安全知识,我们就仅仅从一种比较自然的思路来考虑这个安全证明的过程。

    ? ? ? ? 考虑等式的左边,敌手A? 对 该具体的加密方案进行攻击,我们已经获得了关于语义安全的基本定义,语义安全定义如下:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? ? 上图只是一个标准的语义安全的游戏描述,但是具体的方案应该还有修改和变化。我们的方案与这个原始的语义安全定义还有一定的区别,最大的区别是我们这个流密码的加密方案

    使用了伪随机数生成器G。所以我们得到两个不同的游戏Game0 和 Game1。在Game0中使用伪随机数生成器G,在Game1中使用一个真随机数。在Game0中,有效的刻画了敌手的行为,其攻击优势即为敌手的优势。在Game1中使用一个真随机数,很显然此处的方案就是一个一次一密方案,敌手此时不具备任何的优势(如果我们能证明敌手不能区分这两个游戏,那么该加密方案与一次一密不可区分,其实也能证明方案是安全的)。不过我们此时的目的是,证明该方案是语义安全的。

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ?

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? ? ?此时,我们已经将我们的方案与语义安全敌手A联系了起来。

    构造证明第二步:

    ? ? ? ? ?此时,我们考虑的右边部分,即为敌手B攻击我们加密方案PRG的过程。并且考虑到我们的最终安全证明目标,如果能用敌手B来调用敌手A,并利用敌手A和其自身的能力来攻击该加密方案,那么这个安全证明过程就很顺利了。如果敌手B能够借助敌手A去攻击该流密码加密方案,如果B不能成功,这也就意味着流密码加密方案是可以抵抗语义安全敌手的。至此逻辑闭环,证明逻辑闭合。但是,这里有一些细节问题,敌手B要能够准确、正确的调用A来攻击该流密码加密方案。

    构造证明第三步:

    ? ? ? ? 综合构造证明的第一步与第二步,我们得到如下的证明结构:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???

    整个证明过程描述如下:

    ? ? ? ? ? ? ? ?

    总结一下:

    ? ? ? ? ? ?目的是证明3.3成立。

    ? ? ? ? ? ? 1.根据语义安全的标准定义,我们得到了PRG语义安全定义及等式:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    ? ? ? ? ? ?2.由语义安全定义知道B的优势此时为

    ? ? ? ? ? ?3.根据实验设计我们得到 p0 = Pr[W0] , p1 = Pr[W1]。

    ? ? ? ? ? ?4.由上式得到3.3式是成立的。

    开放小问题:

    ? ? ? ? 是否可以直接证明Game0 和 Game1 不可区分,达到证明安全的目的?

    ? ? ? ? 答:从上文我用蓝色 和 红色 字体讨论的部分可知,Game0 和 Game1可以理解为独立的两个游戏,那么由敌手优势的描述SSadv = |W1 - W0| 为可忽略的值来看,这不仅仅意味着敌手的优势是可忽略的,也意味着这两个游戏不可区分。

    单词表:

    stretche: <v.n> 伸展,延长,舒展;

    bias:<n> <adj><vt> 偏见;偏斜

    exploit: <vt>开发,开拓; <n>英雄事迹,奇遇

    geared:<adj,n> 适应

    cardinality<n> 基数,优势

    property<n>性质,性能,所有权

    urged to: 激励,怂恿

    cs