现代密码学学习笔记(三)

上篇回顾:

  1. 一次一密是完善保密的,但因为有许多缺陷而无法广泛应用;
  2. 香农定理:①Gen产生任何密钥k的概率都是\frac{1}{|K|};②任意选择的明文m和密文c均能从密钥空间K中找到对应的k,满足Enc_{k}(m)=c.
  3. 密码学中计算方法:具体方法(量化(t,\varepsilon )-安全)和渐进方法(引入安全参数n和可忽略函数negl(n)

一、语义安全(不可区分与语义安全等价)

        直白理解:没有关于明文的任何有意义的信息泄露。

        h(m)表示敌手预先了解的关于明文的外部消息,f(m)表示敌手希望获取的关于明文的有意义的信息。

        加密方案是窃听者出现时语义安全的定义:如果对于任意敌手、任意明文分布、任意函数fh,一个敌手根据密文和h(m)获得f(m),,另一个敌手只根据h(m)获得f(m),则两个敌手成功概率之间的差异是可以忽略的。

二、伪随机性

        1.完善保密的局限性要求密钥和密文一样长,不可区分性是对完善保密的放松,那么伪随机是对真正随机性的放松,通过伪随机性的要求产生足够长但不完全随机的密钥。

        一个固定的字符串谈不上是否随机或伪随机,随机或伪随机指的是产生字符串的过程

        无法绝对地证明随机性。

        2.区分器(Distinguisher)[统计测试]

        一类判断是否随机的方法:从一个随机生成器中得到多个随机序列并进行一套统计测试。例如:一组生成好的字符串0和1的数量之差不应该太大且最长连续相同的字符不应该太长等。

        伪随机性意味着下一bit不可预测(next-bit unpredictable)。

三、伪随机生成器(Pseudorandom Generator, PRG

1.定义:令l(.)为多项式,G是一个确定的多项式时间算法,满足对于任意输入s\in \left \{ 0,1 \right \}^{n}G输出一个长度为l(n)的字符串,满足以下两个条件则称G是一个PRG:

延展\forall n,l(n)>n,只有生成更长的字符串才有意义,否则可以直接从种子中复制一段输出;

伪随机:对于任意PPT区分D,\left | Pr[D(r)=1]-Pr[D(G(s))=1] \right |\leq negl(n),其中,r是随机的,种子s随机的,l(.)是延长因子。意思是输出不同结果的概率差可以忽略。

2.充分种子空间(种子必须足够长来抵抗蛮力攻击)

蛮力攻击:如果给定无穷的时间,通过枚举所有的种子来产生所有串,则能以较高的概率区分伪随机串。

四、规约法和规约证明

1.规约法

        规约法是将一个问题A变换为另一个问题B,即A可以通过解决B来解决。A\leq _{m}B表示A可规约为B,如果B的解存在并且给定该解时A可解,其中m表示映射规约。即:解决A不能比解决B更难,因为A可以通过解决B来得到解决。

2.规约证明

        证明一个加密方案\Pi在假设X下是安全的,即破解该方案不可解。可将“解决假设X的算法
A{}'”规约到“破解\Pi的算法A”。

        先令一个PPT算法A能够以概率\varepsilon (n)破解\Pi。假设一个问题X是难以解决的,即不存在PPT算法来解决XA{}'是一个解决X的概率算法。

        规约:解决假设问题X可以通过破解\Pi,将A{}'规约到A,A{}'通过A作为子函数以\frac{1}{p(n)}解决问题X

        矛盾:若加密方案可以被有效破解,即\varepsilon (n)不可忽略,则A{}'可以以不可忽略的概率\frac{\varepsilon (n)}{p(n)}解决问题X,与假设矛盾,因此\varepsilon (n)一定可忽略。

五、构造安全的加密方案

1.一个安全的定长加密方案\Pi(窃听下不可区分)

G是一个带扩展因子l的伪随机发生器,\left | G(k) \right |=l(\left | k \right |),m\in \left \{ 0,1 \right \}^{l(n)},一个PRG以长度为n的密钥作为种子,输出与明文相同长度的pad。

  1. Gen:输入1^{n},均匀随机选择k\leftarrow \left \{ 0,1 \right \}^{n},输出密钥k
  2. Enc:输入一个密钥k\in \left \{ 0,1 \right \}^{n},以及明文m\in \left \{ 0,1 \right \}^{l(n)},加密方式和一次一密一样,输出密文c:=G(k)\bigoplus m
  3. Dec:解密方式也和一次一密一样,输入密钥k\in \left \{ 0,1 \right \}^{n}和密文c\in \left \{ 0,1 \right \}^{l(n)},最终输出解密的明文m:=G(k)\bigoplus c.

对该方案的评价:除了密钥更短并且用伪随机生成器生成比特串与明文异或,其他方面和一次一密相同,对敌手而言,该方案和一次一密完全相同,可以说该方案解决了一次一密密钥过长的问题。

2.对该定长加密方案的证明(类似于第二章的PrivK窃听不可区分实验)

        该方案的特别之处在于不需要生成密钥,而是以长度为n的密钥作为种子输出与明文相同长度的\omegac=\omega \bigoplus m_{b}。根据\omega的两种可能:

        ①当\omega是由G生成的,即伪随机串,敌手A面对的是\Pi

        ②当\omega是真随机串,则敌手A面对的就是一次一密\tilde{\Pi }

证明敌手A在实验中的成功概率可忽略:

①真随机串即一次一密:Pr[D(r)=1]=Pr[Privk_{A,\tilde{\Pi }}^{eav}(n)=1]=\frac{1}{2}

②当\omega为伪随机串G(k)Pr[D(r)=1]=Pr[Privk_{A,\Pi }^{eav}(n)=1]=\frac{1}{2}+\varepsilon (n)

①式-②式可得:Pr[D(r)=1]-Pr[D(G(k))=1]=\varepsilon (n)\leq negl(n)

所以\varepsilon (n)可以忽略。

3.输出长度可变的伪随机发生器

        G接受两个输入:种子s以及输出长度lG应当输出一个长度为l的伪随机字符串。

4.流密码(Stream Cipher)

      受一次一密方案的启发,通过将变长消息与密钥的异或进行加密。

        流密码方案:通过将多个消息“拼成”一个消息,与伪随机的密钥流进行异或加密。用一小段密钥产生加密明文所有密钥。(主要依靠硬件来实现)

        方案优点:逻辑简单,比分组密码(划分明文,每组分别加密)更快;

        方案缺点:难以做到安全。

5.CPAChosen-Plaintext Attacks)选择明文攻击

敌手具有获得其所选择明文对应密文的能力。oracle(预言机)敌手选择明文m传给加密者,加密者使用加密算法Enc_{k}(m)得到c返回给敌手,将这一过程看做一次查询,可进行任意多次且每次使用同样的密钥k

6.CPA不可区分实验Privk_{A,\Pi }^{eav}(n)

①提前生成密钥k\leftarrow Gen(1^{n}),为下一步提供加密预言机;

②敌手A被给予输入1^{n}和对加密函数Enc_{k}(.)的预言机访问(oracle access)A^{Enc_{k}(.)},输出相同长度的明文m_{0},m_{1}

③生成随机比特b\leftarrow \left \{ 0,1 \right \},将密文c\leftarrow Enc_{k}(m_{b})发送给A

A继续对Enc_{k}(.)进行访问,输出b{}',如果b=b{}',则A成功,Privk_{A,\Pi }^{eav}(n),否则输出0.

      其中,预言机是一个黑盒,只接受输入并返回输出。该实验与Privk_{A,\Pi }^{eav}(n)区别在于敌手始终可以访问加密预言机,可以根据明文和密文进行构造性的查询,因此CPA敌手更加强大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值