Shannon理论——笔记1
引言
- 我们知道有这样几个评价密码体制安全性的常用的准则:
- 计算安全性
- 可证明安全性
- 无条件安全性
- 其中无条件安全性允许无限的计算资源、无限的计算时间,所以不能用计算复杂性的观点来研究。
- 研究无条件安全性的合适框架是概率论,我们将在后文进行讨论
概略
- Shannon的思想对密码学的研究产生了巨大影响,那么这些究竟意味什么呢
- 本文主要打算介绍如下概念、思想
- 完善保密性
- 熵
- 伪密钥和唯一解距离
- 乘积密码体制
完善保密性
- 通俗地讲,完善保密性就是说攻击者Oscar不能通过观察密文获得明文的任何信息
- 推测明文为某种情况的概率不会因为知道密文而改变
定义:
一个密码体制具有完善保密性,如果对于任意的 x ∈ P \mathcal{x\in P} x∈P和 y ∈ C \mathcal{y\in C} y∈C,都有 P r [ x ∣ y ] = P r [ x ] Pr[x|y]=Pr[x] Pr[x∣y]=Pr[x]。也就是说,给定密文 y y y,明文 x x x的后验概率等于明文 x x x的先验概率
- 一般的完整保密性
- 对于任意固定的
x
∈
P
\mathcal{x\in P}
x∈P。由Bayes定理,有:对每个
y
∈
C
\mathcal{y\in C}
y∈C,我们有
P
r
[
y
∣
x
]
=
P
r
[
y
]
>
0
Pr[y|x]=Pr[y]>0
Pr[y∣x]=Pr[y]>0(概率为零的情况可以直接从定义域中去掉)。
- 也就是说,在完善保密密码体制下,对于某固定明文,密文有限集中的任意元素都存在是由此明文被加密后的结果的可能
- 因此,对于每个 y ∈ C \mathcal{y\in C} y∈C,一定至少存在一个密钥 K K K,满足 e k ( x ) = y e_k(x)=y ek(x)=y。这样就有 ∣ K ∣ ≥ ∣ C ∣ \mathcal{|K|\geq |C|} ∣K∣≥∣C∣。
- 又因为在任意一个密码体制中,加密函数是单射的,所以一定有 ∣ C ∣ ≥ ∣ P ∣ \mathcal{|C|\geq |P|} ∣C∣≥∣P∣。
- 于是我们得到
- 在一个完善保密密码体制中, ∣ K ∣ ≥ ∣ C ∣ ≥ ∣ P ∣ \mathcal{|K|\geq |C|\geq |P|} ∣K∣≥∣C∣≥∣P∣
- 对于任意固定的
x
∈
P
\mathcal{x\in P}
x∈P。由Bayes定理,有:对每个
y
∈
C
\mathcal{y\in C}
y∈C,我们有
P
r
[
y
∣
x
]
=
P
r
[
y
]
>
0
Pr[y|x]=Pr[y]>0
Pr[y∣x]=Pr[y]>0(概率为零的情况可以直接从定义域中去掉)。
- 需要注意的是,上一步讨论的是完善保密密码体制所具备的必要条件,并不能作为判定依据
- 关于判定依据,当 ∣ K ∣ = ∣ C ∣ = ∣ P ∣ \mathcal{|K|=|C|=|P|} ∣K∣=∣C∣=∣P∣时,Shannon最早提出了一个性质:
定理
假设密码体制 ( P , C , K , E , D ) \mathcal{(P,C,K,E,D)} (P,C,K,E,D)满足 ∣ K ∣ = ∣ C ∣ = ∣ P ∣ \mathcal{|K|=|C|=|P|} ∣K∣=∣C∣=∣P∣。该密码体制是完善保密的 ⟺ \iff ⟺每个密钥被使用的概率都是 1 ∣ K ∣ \cfrac{1}{|\mathcal{K}|} ∣K∣1,并且 ∀ x ∈ P a n d y ∈ C , ∃ ! K , s . t . e K ( x ) = y \forall \mathcal{x\in P}\,and \,\mathcal{y\in C},\exist!K,\,\,s.t.\;\,\, e_K(x)=y ∀x∈Pandy∈C,∃!K,s.t.eK(x)=y
熵
- 度量信息不确定性
- 值越大,表示的不确定性越大
- 对于随机变量X,其熵表示为H(X)
定义
假设随机变量 X \mathbf{X} X在有限集合X上取值,则随机变量 X \mathbf{X} X的熵定义为 H ( X ) = − ∑ x ∈ X P r [ x ] l b P r [ x ] H(\mathbf{X})=-\sum_{x\in X}\mathrm{Pr[x]lbPr[x]} H(X)=−x∈X∑Pr[x]lbPr[x]
- 比如当X只有一种可能取值时(即取该值的概率为1),其熵为0
熵的性质
-
0
≤
H
(
X
)
≤
l
b
n
,
其
中
n
=
∣
X
∣
0\leq H(\mathbf{X})\leq \mathrm{lb}\,\,n,\quad其中n=|X|
0≤H(X)≤lbn,其中n=∣X∣
- 可由Jenson不等式证得
- H ( X , Y ) ≤ H ( X ) + H ( Y ) H(\mathbf{X,Y})\leq H(\mathbf{X})+H(\mathbf{Y}) H(X,Y)≤H(X)+H(Y),当且仅当 X , Y \mathbf{X,Y} X,Y统计独立时等号成立
定义
假设 X , Y \mathbf{X,Y} X,Y是两个随机变量。对于 Y \mathrm{Y} Y的任何固定值y,得到一个 X \mathrm{X} X上的条件概率分布;记相应的随机变量为 X ∣ y \mathbf{X}|y X∣y,显然 H ( X ∣ y ) = − ∑ x P r [ x ∣ y ] l b P r [ x ∣ y ] H(\mathbf{X}|y)=-\sum_x\mathrm{Pr[x|y]lb\,Pr[x|y]} H(X∣y)=−x∑Pr[x∣y]lbPr[x∣y]定义条件熵 H ( X ∣ Y ) H(\mathbf{X|Y}) H(X∣Y)为熵 H ( X ∣ y ) H(\mathbf{X}|y) H(X∣y)取遍所有y的加权平均值。计算公式为 H ( X ∣ Y ) = − ∑ y ∑ x P r [ y ] P r [ x ∣ y ] l b P r [ x ∣ y ] H(\mathbf{X|Y})=-\sum_y\sum_x\mathrm{Pr[y]Pr[x|y]lb\,Pr[x|y]} H(X∣Y)=−y∑x∑Pr[y]Pr[x∣y]lbPr[x∣y]条件熵度量了 Y \mathbf{Y} Y揭示的 X \mathbf{X} X的平均信息量
- H ( X , Y ) = H ( Y ) + H ( X ∣ Y ) ≤ H ( Y ) + H ( X ) H(\mathbf{X,Y})= H(\mathbf{Y})+H(\mathbf{X|Y})\leq H(\mathbf{Y})+H(\mathbf{X}) H(X,Y)=H(Y)+H(X∣Y)≤H(Y)+H(X)等式成立当且仅当 X , Y \mathbf{X,Y} X,Y统计独立
伪密钥和唯一解距离
预备知识
-
密钥含糊度
- H ( K ∣ C ) H(\mathbf{K|C}) H(K∣C):度量了给定密文下密钥的不确定性
-
H
(
C
∣
K
,
P
)
=
0
\mathbf{H(C|K,P)}=0
H(C∣K,P)=0
- 因为密钥和明文唯一决定密文
-
H
(
P
∣
K
,
C
)
=
0
\mathbf{H(P|K,C)}=0
H(P∣K,C)=0
- 因为密钥和密文唯一决定明文
-
K
,
P
\mathbf{K,P}
K,P是统计独立的
⟹
H
(
K
,
P
)
=
H
(
K
)
+
H
(
P
)
\implies H(\mathbf{K,P})= H(\mathbf{K})+H(\mathbf{P})
⟹H(K,P)=H(K)+H(P)
- 因为密钥是在Alice知道明文之前选取的,所以可以合理地假设密钥、明文是统计独立的随机变量
- 值得注意的是,尽管密钥和密文唯一决定明文,但我们并不能像上一步那样认为 K , C \mathbf{K,C} K,C是统计独立的
定理
设 ( P , C , K , E , D ) \mathcal{(P,C,K,E,D)} (P,C,K,E,D)是一个密码体制,那么 H ( K ∣ C ) = H ( K ) + H ( P ) − H ( C ) H(\mathbf{K|C})=H(\mathbf{K})+H(\mathbf{P})-H(\mathbf{C}) H(K∣C)=H(K)+H(P)−H(C)
伪密钥
- 密码分析的基本目的是确定密钥
- 考虑唯密文攻击,对于Oscar而言,它可以得到多个密钥
- 通过这些密钥对某些明文加密得到Oscar所唯一知道的密文,这一过程在计算上是可行的
- 但这样的明文不一定都有意义,很多可能只是杂乱的字母的组合而已,这部分对应的密钥可直接被Oscar排除
- 但仍可能会有多个密钥,其对应明文在一个语言体系下都是有意义的,并非杂乱的字母组合
- 在这些密钥中,只有一个密钥是正确的
- 那些可能的但不正确的密钥称为 伪密钥
唯一解距离
定义
一个密码体制的唯一解距离定义为使得伪密钥的期望数等于零的 n n n的值,记为 n 0 n_0 n0,即在给定的足够的计算时间下分析者能唯一计算出密钥所需密文的平均值
-
可以看出,伪密钥的存在对密文的破译造成了障碍
-
伪密钥数越小,破译自然越方便
-
所以我们的目的就是推导伪密钥的期望数的下界
- 为什么是期望数?
- 因为所拥有密文的不同会造成伪密钥数的不同
- 所以对所有这些值的期望的描述才能更好地描述背后的密码体制
- 为什么是期望数?
-
伪密钥的期望数如何表示?
- 给定
y
∈
C
n
y\in \mathcal{C}^n
y∈Cn,定义
K
(
y
)
=
{
K
∈
K
:
∃
x
∈
P
n
,
s
.
t
.
P
r
[
x
]
>
0
,
e
k
(
x
)
=
y
}
K(y)=\{K\in \mathcal{K}:\exist x\in \mathcal{P}^n,s.t.\,\,\mathrm{Pr[x]}>0,e_k(x)=y\}
K(y)={K∈K:∃x∈Pn,s.t.Pr[x]>0,ek(x)=y}
- 即
K
(
y
)
K(y)
K(y)是密文为
y
y
y的可能密钥的集合
- 这里可能的含义需要格外注意
- 在这些密钥下 y y y对应的明文有意义
- 否则对应密钥可以直接被排除,便无所谓可能了
- 这里可能的含义需要格外注意
- 即
K
(
y
)
K(y)
K(y)是密文为
y
y
y的可能密钥的集合
- 于是 y y y对应的伪密钥数目为 ∣ K ( y ) ∣ − 1 |K(y)|-1 ∣K(y)∣−1
- 伪密钥的平均数目(期望)为 s n ‾ = ∑ y ∈ C n P r [ y ] ( ∣ K ( y ) ∣ − 1 ) = ∑ y ∈ C n P r [ y ] ∣ K ( y ) ∣ − ∑ y ∈ C n P r [ y ] = ∑ y ∈ C n P r [ y ] ∣ K ( y ) ∣ − 1 \begin{aligned} \overline{s_n}&=\sum_{y\in \mathcal{C}^n}\mathrm{Pr[y]}(|K(y)|-1)\\ &=\sum_{y\in \mathcal{C}^n}\mathrm{Pr[y]}|K(y)|-\sum_{y\in \mathcal{C}^n}\mathrm{Pr[y]}\\ &=\sum_{y\in \mathcal{C}^n}\mathrm{Pr[y]}|K(y)|-1 \end{aligned} sn=y∈Cn∑Pr[y](∣K(y)∣−1)=y∈Cn∑Pr[y]∣K(y)∣−y∈Cn∑Pr[y]=y∈Cn∑Pr[y]∣K(y)∣−1
- 给定
y
∈
C
n
y\in \mathcal{C}^n
y∈Cn,定义
K
(
y
)
=
{
K
∈
K
:
∃
x
∈
P
n
,
s
.
t
.
P
r
[
x
]
>
0
,
e
k
(
x
)
=
y
}
K(y)=\{K\in \mathcal{K}:\exist x\in \mathcal{P}^n,s.t.\,\,\mathrm{Pr[x]}>0,e_k(x)=y\}
K(y)={K∈K:∃x∈Pn,s.t.Pr[x]>0,ek(x)=y}
-
如前所述,唯一解距离为使得 s n ‾ = 0 \overline{s_n}=0 sn=0的 n n n的值
-
想要找到这个 n 0 n_0 n0,就要考虑 s n ‾ \overline{s_n} sn与 n n n之间的关系
-
如何建立与 n n n的联系?
- 回顾
s
n
‾
\overline{s_n}
sn的关系式
- 其与每个密文y的概率以及y下可能密钥集的大小有关
- 而由前述知识,密钥集大小
∣
K
(
y
)
∣
|K(y)|
∣K(y)∣的对数是熵
H
(
K
∣
y
)
H(\mathbf{K}|y)
H(K∣y)的上限
- 这为我们提供了一条向外建立联系的思路
- 联立: s n ‾ + 1 = ∑ y ∈ C n P r [ y ] ∣ K ( y ) ∣ ∑ y ∈ C n P r [ y ] H ( K ∣ y ) = H ( K ∣ C n ) \begin{aligned} \overline{s_n}+1=&\sum_{y\in \mathcal{C}^n}\mathrm{Pr[y]}|K(y)|\\ &\sum_{y\in \mathcal{C}^n}\mathrm{Pr[y]}H(\mathbf{K}|y)=H(\mathbf{K|C}^n) \end{aligned} sn+1=y∈Cn∑Pr[y]∣K(y)∣y∈Cn∑Pr[y]H(K∣y)=H(K∣Cn)
- 于是 H ( K ∣ C n ) = ∑ y ∈ C n P r [ y ] H ( K ∣ y ) ≤ ∑ y ∈ C n P r [ y ] l b ∣ K ( y ) ∣ ≤ l b ∑ y ∈ C n P r [ y ] ∣ K ( y ) ∣ ≤ l b ( s n ‾ + 1 ) \begin{aligned} H(\mathbf{K|C}^n)&=\sum_{y\in \mathcal{C}^n}\mathrm{Pr[y]}H(\mathbf{K}|y)\\ &\leq \sum_{y\in \mathcal{C}^n}\mathrm{Pr[y]}\mathrm{lb}|K(y)|\\ &\leq \mathrm{lb}\sum_{y\in \mathcal{C}^n}\mathrm{Pr[y]}|K(y)|\\ &\leq \mathrm{lb}(\overline{s_n}+1) \end{aligned} H(K∣Cn)=y∈Cn∑Pr[y]H(K∣y)≤y∈Cn∑Pr[y]lb∣K(y)∣≤lby∈Cn∑Pr[y]∣K(y)∣≤lb(sn+1)
- 回顾
s
n
‾
\overline{s_n}
sn的关系式
-
而由预备知识中定理 H ( K ∣ C n ) = H ( K ) + H ( P n ) − H ( C n ) H(\mathbf{K|C}^n)=H(\mathbf{K})+H(\mathbf{P}^n)-H(\mathbf{C}^n) H(K∣Cn)=H(K)+H(Pn)−H(Cn)
-
由于自然语言中各字符间并非毫无关联,引入如下概念:
定义
自然语言 L L L的的熵(每字母) H L = lim n → ∞ H ( P n ) n H_L=\lim_{n\to \infty}\frac{H(\mathbf{P}^n)}{n} HL=n→∞limnH(Pn)
语言L的冗余度定义为 R L = 1 − H L l b ∣ P ∣ R_L=1-\frac{H_L}{\mathrm{lb}|\mathcal{P}|} RL=1−lb∣P∣HL
- 可知
H
L
H_L
HL是属于一种自然语言
L
L
L的固有性质,它度量了这种语言的每个字母的平均熵,一个随机语言具有熵
l
b
∣
P
∣
\mathrm{lb}|\mathcal{P}|
lb∣P∣
- 同时,这也提供了一种对 H ( P n ) H(\mathbf{P}^n) H(Pn)的估计
- 有 { H ( P n ) ≈ n H L = n ( 1 − R L ) l b ∣ P ∣ H ( C n ) ≤ n l b ∣ C ∣ \begin{cases} H(\mathbf{P}^n)\approx nH_L=n(1-R_L)\mathrm{lb}|\mathcal{P}|\\ H(\mathbf{C}^n)\leq n\mathrm{lb}|\mathcal{C}| \end{cases} {H(Pn)≈nHL=n(1−RL)lb∣P∣H(Cn)≤nlb∣C∣
- 所以,如果 ∣ C ∣ = ∣ P ∣ |\mathcal{C}|= |\mathcal{P}| ∣C∣=∣P∣有 l b ( s n ‾ + 1 ) ≥ H ( K ∣ C n ) = H ( K ) + H ( P n ) − H ( C n ) ≥ H ( K ) − n R L l b ∣ P ∣ \mathrm{lb}(\overline{s_n}+1)\geq H(\mathbf{K|C}^n)=H(\mathbf{K})+H(\mathbf{P}^n)-H(\mathbf{C}^n) \geq H(\mathbf{K})-nR_L\mathrm{lb}|\mathcal{P}| lb(sn+1)≥H(K∣Cn)=H(K)+H(Pn)−H(Cn)≥H(K)−nRLlb∣P∣
- 考虑等概率选取密钥的情况,此时 H ( K ) = l b ∣ K ∣ H(\mathbf{K})=\mathrm{lb}|\mathcal{K}| H(K)=lb∣K∣,有
定理
假设 ( P , C , K , E , D ) \mathcal{(P,C,K,E,D)} (P,C,K,E,D)是一个密码体制, ∣ C ∣ = ∣ P ∣ |\mathcal{C}|= |\mathcal{P}| ∣C∣=∣P∣并且密钥是等概率选取。设 R L R_L RL表示明文的自然语言的冗余度,那么给定一个充分长(长为n)的密文串,伪密钥的期望数满足 s n ‾ ≥ ∣ K ∣ ∣ P ∣ n R L − 1 \overline{s_n}\geq \frac{|\mathcal{K}|}{|\mathcal{P}|^{nR_L}}-1 sn≥∣P∣nRL∣K∣−1
- 在这种情况下,我们可以得到
n
0
≈
l
b
∣
K
∣
R
L
l
b
∣
P
∣
n_0 \approx \frac{\mathrm{lb}|\mathcal{K}|}{R_L\mathrm{lb}|\mathcal{P}|}
n0≈RLlb∣P∣lb∣K∣
- 这意味着,给定的密文串的长度至少为25时,通常解密才是唯一的
- 至此,关于唯一解距离的求解已经讨论结束
- 值得注意的是,所求结果并不一定准确,而且运算中的符号连接很多都是不等号,但这样的求得的唯一解距离实际上也可以标明一个密码系统的好坏
- 唯一解距离越长,密码系统越好
- 当唯一解距离为无穷大时,系统称为理想保密系统
- 此时Oscar便无法从众多“可能”的密钥中得到真正正确的密钥
- 而实际上由于自然语言的复杂性,目前没有任何一种分析方法可以做到
乘积密码体制
- 即通过“乘积”组合密码体制