提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、安全目标
无条件安全(Unconditional Security):即使攻击者具有无限的计算资源,也无法攻破的密码体制,我们称这种密码体制是无条安全的。
攻击者能拿到所有可能的明文和密文对,在这种情况下,给定攻击者一个密文,依旧无法破解对应的明文是什么,称为无条件安全。
无条件安全又乘为完善保密:Perfect Secrecy
二、加密算法的定义
加密算法包括三个子算法:
-
密钥生成子算法(Gen)
算法输入:安全参数 n n n;算法输出:满足特定分布的密钥 k k k。 -
加密子算法(Enc)
算法输入:密钥 k k k和明文 m m m;算法输出:密文 c c c, c = E n c ( k , m ) c=Enc(k,m) c=Enc(k,m) -
解密子算法(Dec)
算法输入:密钥 k k k和密文 c c c;算法输出:明文 m m m, m = D e c ( k , c ) m=Dec(k,c) m=Dec(k,c)。
三、无条件安全的定义
⼀个加密算法 (Gen, Enc, Dec) 在明⽂空间
M
M
M上是⽆条件安全的,如果对于
M
M
M的每种概率分布,其中的每个消息
m
m
m和每个可能出现的密⽂
c
c
c,均满⾜如下条件:
P
r
[
𝑀
=
𝑚
∣
𝐶
=
𝑐
]
=
P
r
[
𝑀
=
𝑚
]
Pr[𝑀 = 𝑚|𝐶 = 𝑐] = Pr[𝑀 = 𝑚]
Pr[M=m∣C=c]=Pr[M=m]
解释:如果要满足无条件安全,则加密算法中,已知密文为
c
c
c的条件下且对应的明文为
m
m
m的概率必须等于明文
m
m
m在明文空间
M
M
M中出现的概率。下图为不符合无条件安全的举例:
这个例子中,就很明显不符合无条件安全的定义。
**定理:**⼀个加密算法 (Gen, Enc, Dec) 在明⽂空间
M
M
M上是⽆条件安全的,当且仅当对于
M
M
M的每种概率分布,其中的任意两个消息
m
0
m_0
m0和
m
1
m_1
m1,和每个可能出现的密⽂
c
c
c ,如下条件均满⾜:
P
r
[
𝐶
=
𝑐
∣
𝑀
=
𝑚
0
]
=
P
r
[
𝐶
=
𝑐
∣
𝑀
=
𝑚
1
]
Pr[𝐶 = 𝑐 |𝑀 = 𝑚_0] = Pr[𝐶 = 𝑐 |𝑀 = 𝑚_1]
Pr[C=c∣M=m0]=Pr[C=c∣M=m1]
证明如下:
四、敌手能力
唯密⽂攻击,已知明⽂攻击,选择明⽂攻击,选择密⽂攻击
唯密⽂攻击实验:
- 运⾏密钥⽣成算法Gen,确定密钥k
- 将加密任意的明⽂后发送给攻击者(可反复运⾏任意多次)
- 攻击者发送明⽂空间中的两条明⽂ m 0 m_0 m0和 m 1 m_1 m1(攻击者自己选的)
- 随机加密其中⼀条明⽂,并将对应密⽂发送给攻击者
- 将加密任意的明⽂后发送给攻击者(可反复运⾏任意多次)
- 攻击者根据密⽂猜测对应的明⽂是 m 0 m_0 m0还是 m 1 m_1 m1
定理: 如果加密⽅案在唯密⽂攻击下是完善保密的,那么攻击者猜对的概率是 1 / 2 1/2 1/2。