斯坦福密码学 —— 02流密码

02流密码

密码

由加密和解密两个算法E、D组成,也可以定义为一个三元组 ( K , M , C ) (\mathcal{K},\mathcal{M},\mathcal{C}) (K,M,C):(密钥空间,明文空间,密文空间)
E通常为一个随机算法,D是确定算法

有效

可以自己决定什么是有效,例如:多项式时间、特定时间

一次性密码本 The One Time Pad

明文空间 = 密文空间 = { 0 , 1 } n \{0,1\}^n { 0,1}n

c : = E ( k , m ) = k ⊕ m c:=E(k,m)=k \oplus m c:=E(k,m)=km
m = D ( k , c ) = k ⊕ c m=D(k,c)=k \oplus c m=D(k,c)=kc

缺点:密钥需要与明文一样长,因此在实际中很难使用,如果Alice能够安全传输密钥给Bob,那她一定可以安全传输同样长度的明文给Bob

密码的安全性

密码无法揭露明文的任何信息,一个密文c,由明文 m 1 m_1 m1 m 2 m_2 m2加密得来的概率是一样的,即无法由密文反推出明文

密钥在密文空间中均匀分布: k ⟵ R K k\stackrel{R}{\longleftarrow} \mathcal{K} kRK(R表示Random、均匀分布)

证明:

对任意的 m , c m,c m,c E ( k , m ) = c E(k,m)=c E(k,m)=c 的概率等于所有能够使其成立的 k k k,除以总的 k k k的个数,即:

P r [ E ( k , m ) = c ] = # k e y s , k ∈ K , s . t . E ( k , m ) = c ∣ K ∣ Pr[E(k,m)=c]=\tfrac{\#keys,k\in \mathcal{K}, s.t.E(k,m)=c}{|\mathcal{K}|} Pr[E(k,m)=c]=K#keys,kK,s.t.E(k,m)=c 可以看出只需要分子是一个常数,即为完美安全(key就是k)

在一次性密码本中,由于 c = k ⊕ m ⇒ k = c ⊕ m c=k \oplus m \Rightarrow k=c \oplus m c=kmk=cm,k是唯一的

因此一次性密码本实际上是完美安全的,没有唯密文攻击

对于完美安全的密码,密钥空间的大小 ≥ \geq 明文空间的大小: ∣ K ∣ ≥ ∣ M ∣ |\mathcal{K}| \geq |\mathcal{M}| KM

流密码

由于一次性密码本虽然是完美安全,但是不实用。于是基于一次性密码本的思想,改造出了流密码

idea:把随机的key替换成伪随机的。流密码不是完美安全的,因为密钥比明文短

PRG(伪随机数发生器):取一个随机种子s,把它映射成一个很长的比特序列,比如种子可能只有128位,但可以扩展成很长的字符串。

函数G本身没有随机性,它是一个可以有效计算的确定性函数,唯一有随机性的东西是随机种子s。输出应该是“看起来随机的”。
PRG的性质:
不可预测性:可预测指的是,给定一段序列,推算出后面一位的概率 > = 1 / 2 + ϵ , ϵ > = 1 / 2 30 >=1/2+\epsilon,\epsilon>=1/2^{30} >=1/2+ϵ,ϵ>=1/230
( ϵ < = 1 / 2 80 \epsilon <= 1/2^{80} ϵ<=1/280 时被认为是可忽略的)

可忽略和不可忽略

ϵ ( λ ) = 1 / 2 λ \epsilon(\lambda)=1/2^\lambda ϵ(λ)=1/2λ:negligible
ϵ ( λ ) = 1 / λ 1000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值