Skip to content

Week 2:完美安全、流密码、分组密码

完美安全

定义

对于在空间 (K,M,C) 上的算法E,对于任意的 m1,m2M,|m1|=|m2| ,任意的 cC ,都有:

#{kK:E(k,m1)=c}|K|=#{kK:E(k,m2)=c}|K|=1|K|

解释:对于任意两个等长的明文m1m2,以及任意一个密文c,使用随机选择的密钥加密m1得到c的概率,等于使用随机选择的密钥加密m2得到c的概率,且都等于1|K|

就是说对于任意一条明文,在对于一个密钥对应的密文空间映射中,每一个密文出现的概率都是均等的。

One-Time Pad

对于一次一密来说,当|K||M|时,既密钥长度大于等于明文长度时,一次一密可以达到完美安全。

为什么当密钥长度小于明文长度时不完美安全

假设|K|<|M|,则存在m1,m2M,|m1|=|m2|,使得m1k=m2k,即m1=m2,与m1m2矛盾。

为什么Two-Time Pad不安全

C1M1KC2M2KC1C2=M1M2

则由于编码大多是ASCII编码,则可以通过M1M2的关系进行破解。

流密码

由于在工程实现中,一次一密要求的KM显然难以实现,所以引入了伪随机数生成器PRNG来扩展密钥以求近似一次一密的效果。

PRG的安全性:不可预测性(Unpredictable)

对于算法G:{0,1}s{0,1}n,其中s<n,如果对于任意的i<n,给定G(k)1,G(k)2,...,G(k)i,无法以非忽略概率预测出G(k)i+1,则称G是不可预测的。

既对于已知前一个比特或者前n个比特,预测出下一个比特的概率是否大于1/2。

Pr[A(G(k)1,,i)=G(k)i+1]12+ε

ε=1232时,认为是不可预测的。

123410

更多定义

PRG的安全性:不可区分性(Indistinguishability)

伪随机数生成器的定义

125740

既在真随机数空间 {0,1}n中,伪随机数只占据其中一个子集。

统计测试

125740

定义

假设G:k{0,1}n ,既G是一个生成n比特的随机数生成器,并且存在一个统计测试A,定义:

PRGadv[A,G]=|Pr[A(G(k))=1]Pr[A(r)=1]|[0,1]
  • 如果优势Adv接近1,则说明G(k)r很容易区分,G不是一个好的伪随机数生成器。
  • 如果优势Adv接近0,则说明G(k)r很难区分,G是一个好的伪随机数生成器。

则如果对于任意的统计测试A,优势PRGadv是可忽略的,则称PRG是安全的具有不可区分性的

Add-on

125740

125740

语义安全

对于在空间 K,M,C 上的加密算法E:

E是完美安全的,当: {E(k,m1)}={E(k,m2)} , 既密文的分布概率是完全相等的

E是语义安全的,当: {E(k,m1)}{E(k,m2)} , 既密文的分布概率是计算性不可区分的

分组密码

PRFPRP

125740

PRFPRP的区别在于,PRP是一个双射函数,既每一个输入对应唯一的输出,每一个输出也对应唯一的输入,而PRF则没有这个要求。

125740

安全的PRF

125740

安全的PRF

125740

安全的PRP

125740

安全的PRP

既对于一个安全的PRP,攻击者无法区分它和一个随机置换。