一、完善保密性
(一)完善保密的加密方案
加密算法包括三个子算法,
1 密钥生成子算法(Gen)
(不确定,随机,概率算法)
算法输入:安全参数n;算法输出:满足特定分布的密钥k
2 加密子算法(Enc)
算法输入:密钥k和明文m;算法输出:密文c,c=Enc(k,m)
3 解密子算法(Dec)
算法输入:密钥k和密文c;算法输出:明文m,m=Dec(k,c)
正确性:Dec(k,Enc(k,m))=m
(二)无条件安全
即完善保密:即使攻击者具有无限的计算资源,也无法攻破密码体制。即可以拿到所有可能的密文对,也无法破译明文,密文不能泄露明文任何信息。
如选择明文攻击,攻击者能够知道所有可能的明文密文对,但拿到一个密文时,仍不能知道明文。即可知范围无限大,但未知范围不会被缩减。
定义:
(无条件,即概率论中的条件概率,无条件)
如:
唯密文攻击下,代换密码均不为无条件安全。
如果是已知明文攻击,无法达到无条件安全的反例更容易找到。
等价定义
1 反之仍成立,Pr[C=c|M=m]=Pr[C=c],即已知一个明文,和不知道此明文的情况下,知道密文的概率是一样的。
2 定理:
3 唯密文攻击(eav):
攻击实验PrivK
对于无条件安全,猜对概率应为0.5。→完美不可区分
注:多项式次在无条件安全下即无限多次。
(三)一次一密
符合无条件安全,每次的密钥不同
缺点:
1 密钥长度和明文、密文长度一样,即|K|=|m|=|c|
2 管理密钥过于复杂
3 密钥只使用一次
定理:如果某方案为完善保密加密方案,则密钥空间
≥
\geq
≥明文空间,即
二、计算安全
(一)计算安全
由于无条件安全不易实现,一次一密过于麻烦,所以基本使用有条件安全–计算安全。
- 计算安全:
攻击者具有有限的计算资源,很难攻破密码体制
计算安全放松要求,攻击者的攻击能力和密码系统的防守能力都有下降。一个不再有无限资源,一个不再能完全抵抗。即在计算安全的实验中敌手猜中明文的概率比1/2稍大些。
-
有限的计算资源
算法的计算资源:时间复杂度和空间复杂度。O表示法。
将敌手视作一个算法,该算法时间复杂度为O(nc),n是安全参数,公开的,密钥长度,c是一个常数
敌手是概率多项式时间(PPT)的算法。
敌手利用有限的计算资源,不能遍历所有的密钥,但还是有可能攻破算法,只是攻破概率可忽略不计。 -
很难攻破
即攻破密码算法的概率可忽略(注意无条件安全概率为0)。
可忽略函数negl(n):极限是趋近于0的函数,如2-n。.
- 两个可忽略函数的和仍是可忽略函数
- 常数与可忽略函数的积是可忽略函数
意味着敌手重复多项式次的攻击仍然无法将成功概率有效提升。例如:
(二)计算安全的加密方案
- 加密方案
{0,1}*,任意长度的,0和1组成的比特串;
- 唯密文攻击
概率为Pr[ P r i v K A , Π e a v ( n ) = 1 PrivK^{eav}_{A,Π}(n)=1 PrivKA,Πeav(n)=1] ≤ \leq ≤ 1 2 \frac{1}{2} 21 +negl(n)。
即如果加密方案在唯密文攻击下是计算安全的,那么敌手猜中明文的概率比1/2稍大些,不超过1/2+negl(n)。
密码算法是Π。