文章目录
- [一 密码学形式化分析与可证明安全基础](#一 密码学形式化分析与可证明安全基础)
-
- [1.1 密码算法的形式化描述](#1.1 密码算法的形式化描述)
- [1.2 完善保密性的定义和等价定义](#1.2 完善保密性的定义和等价定义)
- [1.3 完美不可区分性](#1.3 完美不可区分性)
- [1.4 敌手不可区分性](#1.4 敌手不可区分性)
- [1.5 一次一密(Vernam加密)](#1.5 一次一密(Vernam加密))
- [1.6 一次一密达到完善保密](#1.6 一次一密达到完善保密)
- [1.7 完善保密的局限](#1.7 完善保密的局限)
- [二 m、k和c之间的对应关系](#二 m、k和c之间的对应关系)
-
- [2.1 香农完美安全与确定性加密](#2.1 香农完美安全与确定性加密)
-
- [2.1.1 加密时的对应关系](#2.1.1 加密时的对应关系)
- [2.1.2 解密时的对应关系](#2.1.2 解密时的对应关系)
- [2.2 现代密码学:概率加密](#2.2 现代密码学:概率加密)
-
- [2.2.1 加密时的对应关系](#2.2.1 加密时的对应关系)
- [2.2.3 解密时的对应关系](#2.2.3 解密时的对应关系)
- [2.3 (K,M,r,C)关系总结](#2.3 (K,M,r,C)关系总结)
- [2.4 核心结论](#2.4 核心结论)
- [2.5 完善保密方案的特性](#2.5 完善保密方案的特性)
- [三 香农定理](#三 香农定理)
-
- [3.1 证明逻辑梳理](#3.1 证明逻辑梳理)
- [3.2 各空间之间的关系](#3.2 各空间之间的关系)
- [3.3 香农定理的正式证明](#3.3 香农定理的正式证明)
一 密码学形式化分析与可证明安全基础
1.1 密码算法的形式化描述
-
一个加密方案可由三个算法来定义: G e n Gen Gen、 E n c Enc Enc和 D e c Dec Dec,以及明文空间M( ∣ M ∣ > 1 |M|>1 ∣M∣>1)。
-
密钥产生算法 G e n Gen Gen是一种概率算法,输出密钥 K K K, K K K根据一定的概率分布来选取。用 K K K表示密钥空间,即由 G e n Gen Gen输出的所有可能的密钥集合,而且 K K K必须是有穷的。加密算法可能是概率的,以至于 E n c k ( m ) Enc_k(m) Enck(m)多次运行时可能输出不同的密文。
-
加密算法 E n c Enc Enc输入一个密钥 k ∈ K k\in K k∈K和一个明文 m ∈ M m \in M m∈M,然后输出一个密文 c c c,加密过程可以定义为 c = E n c k ( m ) c=Enc_k(m) c=Enck(m)。
-
c ← E n c k ( m ) c← Enc_k(m) c←Enck(m)表示明文 m m m用密钥 k k k加密得到密文 c c c的概率过程(如果Enc是确定的,记为 c : = E n c k ( m ) c:= Enc_k(m) c:=Enck(m))。对于所有可能的 k ∈ K k\in K k∈K和 m ∈ M m \in M m∈M,用C表示所有可能的由 E n c k ( m ) Enc_k(m) Enck(m)输出的密文集合。解密算法 D e c Dec Dec通过输入密钥 k ∈ K k \in K k∈K和密文 c ∈ C c\in C c∈C,输出明文 m ∈ M m \in M m∈M。
-
解密算法 D e c Dec Dec 接收密钥 k k k 和密文 c c c,输出明文 m m m。为确保方案的正确性, D e c Dec Dec 是确定性的,记为 m : = D e c k ( c ) m := Dec_k(c) m:=Deck(c)。
-
密钥空间 K \mathcal{K} K、明文空间 M \mathcal{M} M 和密文空间 C \mathcal{C} C 上的概率分布。密钥 K K K 的分布由密钥生成算法 Gen 的输出来确定(通常假设 Gen 从 K \mathcal{K} K 中均匀随机选择密钥)。对于 k ∈ K k \in \mathcal{K} k∈K,用 Pr [ K = k ] \Pr[K = k] Pr[K=k] 表示 Gen 输出 k k k 的概率( K K K 是表示密钥值的随机变量)。对于 m ∈ M m \in \mathcal{M} m∈M,用 Pr [ M = m ] \Pr[M = m] Pr[M=m] 表示明文为 m m m 的概率。
-
实际上,明文是根据某种分布选择的(而非固定),这意味着从敌手角度看,不同消息有不同的发送概率。例如,敌手可能知道加密的明文是 "attack tomorrow" 或 "don't attack" 中的一个,且知道明文为 "attack tomorrow" 的概率是 0.7,为 "don't attack" 的概率是 0.3,即 Pr [ M = attack tomorrow ] = 0.7 \Pr[M = \text{attack tomorrow}] = 0.7 Pr[M=attack tomorrow]=0.7, Pr [ M = don't attack ] = 0.3 \Pr[M = \text{don't attack}] = 0.3 Pr[M=don't attack]=0.3。
-
密钥 K K K 和明文 M M M 分布独立,即密钥和明文是独立选择。因为密钥在明文确定前已被选定(如通信双方共享)。此外, K K K 的分布由加密方案本身确定(由 Gen 确定),但 M M M 的分布可能随通信方变化。
-
对于 c ∈ C c \in \mathcal{C} c∈C,用 Pr [ C = c ] \Pr[C = c] Pr[C=c] 表示密文为 c c c 的概率。对于给定的加密算法 E n c Enc Enc,密文空间 C \mathcal{C} C 上的分布完全取决于 K \mathcal{K} K 和 M \mathcal{M} M 上的分布。
1.2 完善保密性的定义和等价定义
- 定义2.1 明文空间为 M \mathcal{M} M的加密方案 ( Gen , Enc , Dec ) (\text{Gen}, \text{Enc}, \text{Dec}) (Gen,Enc,Dec)是完善保密加密 ,若对 M \mathcal{M} M上任意的概率分布,任何明文 m ∈ M m \in \mathcal{M} m∈M、任何密文 c ∈ C c \in \mathcal{C} c∈C且 Pr [ C = c ] > 0 \Pr[C = c] > 0 Pr[C=c]>0,有
Pr [ M = m ∣ C = c ] = Pr [ M = m ] \Pr[M = m | C = c] = \Pr[M = m] Pr[M=m∣C=c]=Pr[M=m]
- 先验概率:事情还没有发生,根据以往的经验来判断事情发生的概率。是"由因求果"的体现。
- 后验概率:事情有多种原因,判断事情的发生是由哪一种原因引起的。是"由果求因。
- 引理2.2(完善保密性的一个等价定义) 明文空间为 M \mathcal{M} M的加密方案 ( Gen , Enc , Dec ) (\text{Gen}, \text{Enc}, \text{Dec}) (Gen,Enc,Dec)是完善保密加密,当且仅当对于任意 M \mathcal{M} M上的概率分布,任意一个明文 m ∈ M m \in \mathcal{M} m∈M,和任意一个密文 c ∈ C c \in \mathcal{C} c∈C,有
Pr [ C = c ∣ M = m ] = Pr [ C = c ] \Pr[C = c | M = m] = \Pr[C = c] Pr[C=c∣M=m]=Pr[C=c]
证明(充分条件)选定一个 M \mathcal{M} M上的分布,对于任意的 m ∈ M m \in \mathcal{M} m∈M和 c ∈ C c \in \mathcal{C} c∈C,有
Pr [ C = c ∣ M = m ] = Pr [ C = c ] \Pr[C = c | M = m] = \Pr[C = c] Pr[C=c∣M=m]=Pr[C=c]
在等式两边同时乘以 Pr [ M = m ] / Pr [ C = c ] \Pr[M = m]/\Pr[C = c] Pr[M=m]/Pr[C=c],得
Pr [ C = c ∣ M = m ] ⋅ Pr [ M = m ] Pr [ C = c ] = Pr [ M = m ] \frac{\Pr[C = c | M = m] \cdot \Pr[M = m]}{\Pr[C = c]} = \Pr[M = m] Pr[C=c]Pr[C=c∣M=m]⋅Pr[M=m]=Pr[M=m]
根据贝叶斯(Bayes)定理,等式左边等于 Pr [ M = m ∣ C = c ] \Pr[M = m | C = c] Pr[M=m∣C=c]。因此, Pr [ M = m ∣ C = c ] = Pr [ M = m ] \Pr[M = m | C = c] = \Pr[M = m] Pr[M=m∣C=c]=Pr[M=m],该加密方案是完善保密加密方案。
1.3 完美不可区分性
-
完美不可区分性(Perfect indistinguishability)是完善保密加密 的等价表述:密文分布 C \mathcal{C} C独立于明文。具体而言,对于任意明文 m ∈ M m \in \mathcal{M} m∈M,用 C ( m ) \mathcal{C}(m) C(m)表示其对应的密文分布(该分布由密钥选择和加密算法的随机性决定)。若对于任意 m 0 , m 1 ∈ M m_0, m_1 \in \mathcal{M} m0,m1∈M,有 C ( m 0 ) \mathcal{C}(m_0) C(m0)与 C ( m 1 ) \mathcal{C}(m_1) C(m1)的分布相同,则密文不包含任何明文信息,即无法区分 m 0 m_0 m0和 m 1 m_1 m1对应的密文(因分布一致)。
-
完美不可区分性:密文中不包含任何明文信息。
-
引理2.3 明文空间为 M \mathcal{M} M的加密方案 ( Gen , Enc , Dec ) (\text{Gen}, \text{Enc}, \text{Dec}) (Gen,Enc,Dec)是完善保密加密,当且仅当对于任意 M \mathcal{M} M上的概率分布,任意 m 0 , m 1 ∈ M m_0, m_1 \in \mathcal{M} m0,m1∈M,以及任意 c ∈ C c \in \mathcal{C} c∈C,满足:
Pr [ C = c ∣ M = m 0 ] = Pr [ C = c ∣ M = m 1 ] \Pr[C = c | M = m_0] = \Pr[C = c | M = m_1] Pr[C=c∣M=m0]=Pr[C=c∣M=m1]
证明引理2.3
必要性证明:假设此加密方案是完善保密加密,并且选定明文 m 0 , m 1 ∈ M m_0, m_1 \in \mathcal{M} m0,m1∈M和密文 c ∈ C c \in \mathcal{C} c∈C。由引理2.2可得:
Pr [ C = c ∣ M = m 0 ] = Pr [ C = c ] = Pr [ C = c ∣ M = m 1 ] \Pr[C = c | M = m_0] = \Pr[C = c] = \Pr[C = c | M = m_1] Pr[C=c∣M=m0]=Pr[C=c]=Pr[C=c∣M=m1]
充分性证明:假设对任意 M \mathcal{M} M上的概率分布,每个 m 0 , m 1 ∈ M m_0, m_1 \in \mathcal{M} m0,m1∈M和每个 c ∈ C c \in \mathcal{C} c∈C,满足 Pr [ C = c ∣ M = m 0 ] = Pr [ C = c ∣ M = m 1 ] \Pr[C = c | M = m_0] = \Pr[C = c | M = m_1] Pr[C=c∣M=m0]=Pr[C=c∣M=m1]。选定某个 M \mathcal{M} M上的分布,对任意的 m 0 ∈ M m_0 \in \mathcal{M} m0∈M与 c ∈ C c \in \mathcal{C} c∈C,定义 p = def Pr [ C = c ∣ M = m 0 ] p \stackrel{\text{def}}{=} \Pr[C = c | M = m_0] p=defPr[C=c∣M=m0],由于对所有 m m m,有 Pr [ C = c ∣ M = m ] = Pr [ C = c ∣ M = m 0 ] = p \Pr[C = c | M = m] = \Pr[C = c | M = m_0] = p Pr[C=c∣M=m]=Pr[C=c∣M=m0]=p,于是有
Pr [ C = c ] = ∑ m ∈ M Pr [ C = c ∣ M = m ] ⋅ Pr [ M = m ] = ∑ m ∈ M p ⋅ Pr [ M = m ] = p ⋅ ∑ m ∈ M Pr [ M = m ] = p = Pr [ C = c ∣ M = m 0 ] \begin{align*} \Pr[C = c] &= \sum_{m \in \mathcal{M}} \Pr[C = c | M = m] \cdot \Pr[M = m] \\ &= \sum_{m \in \mathcal{M}} p \cdot \Pr[M = m] \\ &= p \cdot \sum_{m \in \mathcal{M}} \Pr[M = m] \\ &= p \\ &= \Pr[C = c | M = m_0] \end{align*} Pr[C=c]=m∈M∑Pr[C=c∣M=m]⋅Pr[M=m]=m∈M∑p⋅Pr[M=m]=p⋅m∈M∑Pr[M=m]=p=Pr[C=c∣M=m0]
因为 m 0 m_0 m0是任意选择的,所以对所有 c ∈ C c \in \mathcal{C} c∈C和 m ∈ M m \in \mathcal{M} m∈M,都有 Pr [ C = c ] = Pr [ C = c ∣ M = m ] \Pr[C = c] = \Pr[C = c | M = m] Pr[C=c]=Pr[C=c∣M=m]成立。由引理2.2,可以得出此加密方案是完善保密的。
1.4 敌手不可区分性
-
完美安全的定理及性质并不适合直接应用于安全性证明,所以引入了完美不可区分。完美不可区分性描述了加密方案最理想的状态,即在敌手看到密文后,得不到关于明文的任何信息。
-
敌手不可区分性是以形式化实验的方式描述的完美不可区分性。
-
敌手不可区分性定义基于敌手 A \mathcal{A} A的"实验",并且形式化定义 A \mathcal{A} A不可达能力,即A无法区分密文来自哪个明文加密。"实验"的本质是敌手和虚拟的测试者之间的游戏,敌手试图破解密码方案,测试者希望指导敌手是否成功。
实验 P r i v K e a v PrivK^{eav} PrivKeav只考虑加密的秘密密钥和窃听敌手(敌手只能获取密文 c c c并试图确定有关明文的信息)。该实验适用于任意加密方案 π = ( G e n , E n c , D e c ) \pi=(Gen,Enc,Dec) π=(Gen,Enc,Dec),明文空间为 M M M,任意敌手为 A A A,用 P r i v K e a v PrivK^{eav} PrivKeav表示一个给定 π \pi π和 A A A的实验。
窃听不可区分实验 PrivK A , Π eav \text{PrivK}^{\text{eav}}_{\mathcal{A}, \Pi} PrivKA,Πeav:
(1) 敌手 A \mathcal{A} A给出一对信息 m 0 , m 1 ∈ M m_0, m_1 \in \mathcal{M} m0,m1∈M。
(2) Gen \text{Gen} Gen产生一个随机密钥 k k k,并且从 { 0 , 1 } \{0, 1\} {0,1}中随机选择一个比特 b b b( b ← { 0 , 1 } b \leftarrow \{0, 1\} b←{0,1})。然后,计算密文 c ← Enc k ( m b ) c \leftarrow \text{Enc}_k(m_b) c←Enck(mb)并交给 A \mathcal{A} A。
(3) A \mathcal{A} A输出一个比特 b ′ b' b′。
(4) 如果 b ′ = b b' = b b′=b,定义实验的输出为1,否则为0。如果输出为1,用 PrivK A , Π eav = 1 \text{PrivK}^{\text{eav}}_{\mathcal{A}, \Pi} = 1 PrivKA,Πeav=1表示,此时称 A \mathcal{A} A成功。
- 在窃听不可区分实验中,敌手 A \mathcal{A} A(敌手 A \mathcal{A} A的计算能力不受限制)的目标是猜测实验中随机选定的比特 b b b。当 A \mathcal{A} A的猜测值 b ′ b' b′与 b b b一致时,实验即告成功。值得注意的是,即便 A \mathcal{A} A仅通过随机猜测 b ′ b' b′,也能以 1 / 2 1/2 1/2的概率成功。因此,我们关注的核心问题是: A \mathcal{A} A能否设计出策略,使猜测成功的概率超过 1 / 2 1/2 1/2?
- 基于这一观察,可以给出完善保密加密的另一种定义:如果不存在任何敌手 A \mathcal{A} A,能够以大于 1 / 2 1/2 1/2的概率成功猜测 b b b,那么该加密方案即为完善保密加密。
定义2.4 明文空间为 M \mathcal{M} M的加密方案 ( Gen , Enc , Dec ) (\text{Gen}, \text{Enc}, \text{Dec}) (Gen,Enc,Dec)为完善保密加密,当且仅当对于所有敌手都满足
Pr [ PrivK A , Π eav = 1 ] = 1 2 \Pr[\text{PrivK}^{\text{eav}}_{\mathcal{A}, \Pi} = 1] = \frac{1}{2} Pr[PrivKA,Πeav=1]=21
1.5 一次一密(Vernam加密)
令 a ⊕ b a \oplus b a⊕b表示把二进制串 a a a和二进制串 b b b按比特位异或( a = a 1 , ⋯ , a l a = a_1, \cdots, a_l a=a1,⋯,al, b = b 1 , ⋯ , b l b = b_1, \cdots, b_l b=b1,⋯,bl,则 a ⊕ b = a 1 ⊕ b 1 , ⋯ , a l ⊕ b l a \oplus b = a_1 \oplus b_1, \cdots, a_l \oplus b_l a⊕b=a1⊕b1,⋯,al⊕bl)。
(1) 令整数 l > 0 l > 0 l>0,设明文空间 M \mathcal{M} M,密钥空间 K \mathcal{K} K和密文空间 C \mathcal{C} C都等于 { 0 , 1 } l \{0, 1\}^l {0,1}l(长度为 l l l的二进制比特串的集合)。
(2) 密钥产生算法 Gen \text{Gen} Gen从 K = { 0 , 1 } l \mathcal{K} = \{0, 1\}^l K={0,1}l中依据均匀分布选择一个二进制比特串( 2 l 2^l 2l个串空间中任何一个被选中的概率都为 2 − l 2^{-l} 2−l)。
(3) 加密算法 Enc \text{Enc} Enc:给定一个密钥 k ∈ { 0 , 1 } l k \in \{0, 1\}^l k∈{0,1}l和一个明文 m ∈ { 0 , 1 } l m \in \{0, 1\}^l m∈{0,1}l,输出 c : = k ⊕ m c := k \oplus m c:=k⊕m。
(4) 解密算法 Dec \text{Dec} Dec:给定一个密钥 k ∈ { 0 , 1 } l k \in \{0, 1\}^l k∈{0,1}l和一个密文 c ∈ { 0 , 1 } l c \in \{0, 1\}^l c∈{0,1}l,输出 m : = k ⊕ c m := k \oplus c m:=k⊕c。
1.6 一次一密达到完善保密
在讨论"一次一密"的安全性前,我们注意到每个 k k k和 m m m都满足 Dec k ( Enc k ( m ) ) = k ⊕ k ⊕ m = m \text{Dec}_k(\text{Enc}_k(m)) = k \oplus k \oplus m = m Deck(Enck(m))=k⊕k⊕m=m,所以"一次一密"是一个正确的加密方案。
- "一次一密"是完善保密加密,给定密文 c c c,敌手无法指导由哪个原始密文 m m m加密得到。由于所有明文被加密的机会均等,因而 c c c没有泄露任何被加密明文 m m m的信息。
- 某个密钥k满足 c = E n c k ( m ) c=Enc_k(m) c=Enck(m),也就是 k = m ⊕ c k=m \oplus c k=m⊕c
定理2.6 "一次一密"是完善保密加密。
证明 选定明文空间 M \mathcal{M} M上的分布,选定任意一个 m ∈ M , c ∈ C m \in \mathcal{M}, c \in \mathcal{C} m∈M,c∈C。"一次一密"有
Pr [ C = c ∣ M = m ] = Pr [ M ⊕ K = c ∣ M = m ] \Pr[C = c | M = m] = \Pr[M \oplus K = c | M = m] Pr[C=c∣M=m]=Pr[M⊕K=c∣M=m]
= Pr [ m ⊕ K = c ] = Pr [ K = m ⊕ c ] = 1 2 l = \Pr[m \oplus K = c] = \Pr[K = m \oplus c] = \frac{1}{2^l} =Pr[m⊕K=c]=Pr[K=m⊕c]=2l1
由于对所有分布和所有 m m m都成立,所以对于任意 M \mathcal{M} M上的概率分布,每个 m 0 , m 1 ∈ M m_0, m_1 \in \mathcal{M} m0,m1∈M和每个 c ∈ C c \in \mathcal{C} c∈C,满足
Pr [ C = c ∣ M = m 0 ] = 1 2 l = Pr [ C = c ∣ M = m 1 ] \Pr[C = c | M = m_0] = \frac{1}{2^l} = \Pr[C = c | M = m_1] Pr[C=c∣M=m0]=2l1=Pr[C=c∣M=m1]
由引理2.3可得,一次一密是完善保密加密。
- "一次一密"有很多缺陷,最突出的是需要密钥和明文有一样的长度 。意味着必须安全地存储一个很长的密钥,在实践中问题较大且通常是不可能的。另外,其应用受到限制,如当希望发送很长消息的时候,很难保证安全地存储一个很长的密钥 。此外,如果明文消息对应英语文本,则给两个足够长消息的异或值,就可能通过频率分析得到明文消息。
1.7 完善保密的局限
- 证明所有完善保密加密方案的密钥空间至少要和明文空间一样大。如果密钥空间由固定长度的密钥组成,明文空间由固定长度的明文组成,则意味着密钥至少要和明文一样长。因此,长密钥的问题并不是"一次一密"专有,而是所有完善保密加密的内在问题。
二 m、k和c之间的对应关系
2.1 香农完美安全与确定性加密
2.1.1 加密时的对应关系
- 在确定性模型下,同一个明文,不同密钥 → \to →不同密文 。
- 对于固定的明文 𝑀,当密钥 𝐾 遍历整个密钥空间时,密文 𝐶=𝑀⊕𝐾 也会遍历整个密文空间。每一个 𝐾 都对应一个唯一的 𝐶。因此,不可能出现两个不同的密钥加密同一个明文得到同一个密文的情况。
- 不同明文,不同密钥 → 可能得到相同密文 。
- 考虑明文 𝑀 1 𝑀_1 M1 和 𝑀 2 𝑀_2 M2 ( 𝑀 1 ≠ 𝑀 2 𝑀_1≠𝑀_2 M1=M2),以及密钥 𝐾 1 𝐾_1 K1 和 𝐾 2 𝐾_2 K2 ( 𝐾 1 ≠ 𝐾 2 𝐾_1≠𝐾_2 K1=K2)。如果 𝐶 = 𝑀 1 ⊕ 𝐾 1 = 𝑀 2 ⊕ 𝐾 2 𝐶=𝑀_1⊕𝐾_1=𝑀_2⊕𝐾_2 C=M1⊕K1=M2⊕K2,那么可以得到 𝑀 1 ⊕ 𝑀 2 = 𝐾 1 ⊕ 𝐾 2 𝑀_1⊕𝑀_2=𝐾_1⊕𝐾_2 M1⊕M2=K1⊕K2。由于 𝐾_1 和 𝐾_2 是独立随机的,对于任意给定的 𝑀 1 𝑀_1 M1 和 𝑀_2,总存在满足上述等式的密钥对 ( 𝐾 1 , 𝐾 2 ) (𝐾_1,𝐾_2 ) (K1,K2)。所以,有可能出现这种情况。
2.1.2 解密时的对应关系
- 解密操作 M = C ⊕ K M=C \oplus K M=C⊕K。对于一个给定的密文-密钥对 ( 𝐶 , 𝐾 ) (𝐶,𝐾) (C,K),解密结果 𝑀 𝑀 M是唯一确定的。
- 但是,对于一个给定的密文 𝐶 𝐶 C,存在多个密钥可以将其"解密"成有意义的(或无意义的)明文。例如,对于密文 C C C,密钥 K 可以解密出 M,而另一个密钥 K ′ = K ⊕ M ⊕ M ′ K^′=K⊕M⊕M^′ K′=K⊕M⊕M′ 可以将其解密成另一个完全不同的明文 M ′ M^′ M′。攻击者拿到 C C C后,无法判断哪一个 ( K , M ) (K,M) (K,M) 组合是真实的,因为所有组合在理论上都是可能的。
- 香农完美安全定理 指出,要实现完美保密,必须满足 ∣ 𝒦 ∣ ≥ ∣ M ∣ ∣𝒦∣≥∣ℳ∣ ∣K∣≥∣M∣。在一次性密码本中,等号成立。这种"多对一"的映射关系(一个密文对应多个明文-密钥对)是完美安全的数学基础。
2.2 现代密码学:概率加密
- 现代密码算法(如AES-CBC、RSA-OAEP等)通常工作在概率加密模式 下。加密算法在每次运行时,会引入一个随机数(通常称为初始化向量IV或随机种子)。即使相同的明文和密钥,每次加密也会产生不同的密文,这彻底改变了明文、密钥和密文之间的对应关系。加密函数记为:
𝐶 = 𝐸 𝑛 𝑐 ( 𝐾 , 𝑀 , 𝑟 ) r 是随机数 𝐶=𝐸𝑛𝑐(𝐾,𝑀,𝑟) \\ r 是随机数 C=Enc(K,M,r)r是随机数
2.2.1 加密时的对应关系
- 同一个明文,使用同一个密钥,不同的随机数 𝑟 𝑟 r → \to → 不同的密文 。
- 随机数𝑟是加密函数的一个直接输入,它改变加密过程的"状态"或"模式",导致输出完全不同。这是概率加密的核心特征,它有效地隐藏明文的模式。
- 同一个明文,使用不同的密钥,相同或不同的随机数 𝑟 𝑟 r → \to → 几乎必然得到不同的密文
- 密钥是加密算法的核心参数。对于设计良加的密算法,密钥的微小变化都会导致输出密文的巨大差异(雪崩效应)。虽然从纯数学角度看,存在两个不同密钥产生相同密文的可能性(即密钥冲突),但对于现代密码算法(如AES),这种概率微乎其微,在计算上是不可行的。因此,在实践中我们可以认为不可能发生。
- 不同的明文,使用不同的密钥,相同或不同的随机数 𝑟 𝑟 r → \to → 有可能得到相同的密文
- 最复杂的一种情况。由于引入了随机数 r,整个加密过程的输入空间 ( K , M , r ) (K,M,r) (K,M,r) 变得非常大。而密文空间的大小通常是固定的(例如, A E S AES AES的输出是 128 128 128位的块)。根据鸽巢原理,必然存在多个不同的 ( K , M , r ) (K,M,r) (K,M,r) 三元组映射到同一个密文 C C C。
2.2.3 解密时的对应关系
- 解密函数通常记为: 𝑀 = 𝐷 𝑒 𝑐 ( 𝐾 , 𝐶 ) 𝑀=𝐷𝑒𝑐(𝐾,𝐶) M=Dec(K,C)
- 解密函数不需要随机数 𝑟。因为正确的 𝑟 𝑟 r 通常已经被嵌入到密文 𝐶 𝐶 C 中(例如,IV作为密文的一部分传输)。
- 给定正确的密文 𝐶 𝐶 C和正确的密钥 𝐾 𝐾 K → \to → 唯一地、确定的、正确的明文 𝑀 。
- 解密算法是设计良好的确定性过程。只要输入正确的 ( K , C ) (K,C) (K,C) 对,它就能逆向恢复出加密时使用的随机数 r r r的效应,并输出唯一的原始明文 M M M。
- 给定一个密文 𝐶 𝐶 C,错误的密钥 𝐾 ′ ( 𝐾 ′ ≠ 𝐾 ) 𝐾^′ (𝐾^′≠𝐾) K′(K′=K) → \to →可能解密失败,也可能得到看似合理但错误的明文。
- 解密失败:算法在解密过程中可能检测到错误,从而明确返回一个错误。
- 得到错误明文:算法可能成功完成解密流程,但输出一个杂乱无章或看似合理但实际上是错误的明文。对于攻击者来说,在没有真实明文对比的情况下,无法判断这个输出是否正确。
- 给定一个密文 C**,存在多个密钥可以将其解密成有意义的明文吗?**
- 答案 :是的,理论上存在,但实践中找不到。
2.3 (K,M,r,C)关系总结
| 情况 | 确定性加密(如理论上的OTP) | 概率加密(如AES-CBC) |
|---|---|---|
| 同一 M M M,同一 K K K | 总是同一 C C C | 不同 C C C(因随机数 r r r 不同) |
| 同一 M M M,不同 K K K | 总是不同 C C C | 几乎总是不同 C C C(计算上不可行冲突) |
| 不同 M M M,不同 K K K | 可能得到同一 C C C | 可能得到同一 C C C |
| 解密:给定 ( C , K ) (C, K) (C,K) | 唯一 M M M | 唯一 M M M(如果 K K K 正确) |
| 解密:给定 C C C | 存在多个 ( K , M ) (K, M) (K,M) 对 | 存在多个 ( K , M ) (K, M) (K,M) 对,但计算上找不到 |
2.4 核心结论
- 无论是香农的理想模型还是现代的概率加密,其安全性的一个共同数学基础是:一个密文 𝐶 背后对应着多个可能的明文-密钥对。
- 在信息论安全(如OTP)中,这种对应是均匀且无限的,攻击者即使拥有无限算力也无法区分。
- 在计算安全(如AES)中,由于引入了随机数和巨大的密钥空间,这种对应关系在计算上是"隐藏"的。攻击者凭借有限的算力,无法在合理时间内从所有可能的对应关系中找出正确的那一个,或者找到另一个能产生有意义的明文的密钥。
2.5 完善保密方案的特性
定理2.7 设 ( Gen , Enc , Dec ) (\text{Gen}, \text{Enc}, \text{Dec}) (Gen,Enc,Dec)是明文空间为 M \mathcal{M} M的一个完善保密加密方案, K \mathcal{K} K的密钥空间由 Gen \text{Gen} Gen决定,则 ∣ K ∣ ≥ ∣ M ∣ |\mathcal{K}| \geq |\mathcal{M}| ∣K∣≥∣M∣。
证明 采用反证法只需证明,如果 ∣ K ∣ < ∣ M ∣ |\mathcal{K}| < |\mathcal{M}| ∣K∣<∣M∣,则这个加密方案不是完善保密加密。
假设 ∣ K ∣ < ∣ M ∣ |\mathcal{K}| < |\mathcal{M}| ∣K∣<∣M∣, M \mathcal{M} M为均匀分布且设密文 c ∈ C c \in \mathcal{C} c∈C有非零概率( 0 ≠ Pr [ M = m ′ ] 0 \neq \Pr[M = m'] 0=Pr[M=m′]), M ( c ) \mathcal{M}(c) M(c)是所有密文 c c c解密而得可能明文的集合:
M ( c ) = def { m ^ ∣ m ^ = D e c k ^ ( c ) , 对于部分 k ^ ∈ K } \mathcal{M}(c) \stackrel{\text{def}}{=} \{\hat{m} \mid \hat{m} = Dec_{\hat k}(c), \text{对于部分} \hat{k} \in \mathcal{K}\} M(c)=def{m^∣m^=Deck^(c),对于部分k^∈K}
显然有 ∣ M ( c ) ∣ ≤ ∣ K ∣ |\mathcal{M}(c)| \leq |\mathcal{K}| ∣M(c)∣≤∣K∣,因为对于每个明文消息 m ^ ∈ M ( c ) \hat{m} \in \mathcal{M}(c) m^∈M(c),至少可以确定一个密钥 k ^ ∈ K \hat{k} \in \mathcal{K} k^∈K使得 m ^ = Dec k ^ ( c ) \hat{m} = \text{Dec}_{\hat{k}}(c) m^=Deck^(c)。(假设 Dec \text{Dec} Dec是确定的)由于假设 ∣ K ∣ < ∣ M ∣ |\mathcal{K}| < |\mathcal{M}| ∣K∣<∣M∣,这就意味着有一些 m ′ ∈ M m' \in \mathcal{M} m′∈M出现 m ′ ∉ M ( c ) m' \notin \mathcal{M}(c) m′∈/M(c)。但是
Pr [ M = m ′ ∣ C = c ] = 0 ≠ Pr [ M = m ′ ] \Pr[M = m' | C = c] = 0 \neq \Pr[M = m'] Pr[M=m′∣C=c]=0=Pr[M=m′]
所以这个方案不是完善保密加密。
三 香农定理
-
香农在完善保密加密的研究中,提出了一个重要性质:当明文、密钥、密文集合大小相等( ∣ K ∣ = ∣ M ∣ = ∣ C ∣ |\mathcal{K}| = |\mathcal{M}| = |\mathcal{C}| ∣K∣=∣M∣=∣C∣)时,密钥必须均匀随机选择(像"一次一密"),确保每个明文和密文之间有唯一密钥映射。这个定理是验证加密方案是否完善保密的有力工具。
-
我们假设明文和密文都有非零概率。定理关注 ∣ K ∣ = ∣ M ∣ = ∣ C ∣ |\mathcal{K}| = |\mathcal{M}| = |\mathcal{C}| ∣K∣=∣M∣=∣C∣的特殊情况。由于密钥空间不小于明文空间( ∣ K ∣ ≥ ∣ M ∣ |\mathcal{K}| \geq |\mathcal{M}| ∣K∣≥∣M∣),密文空间也必须不小于明文空间,否则会出现多个明文映射到同一密文的问题。因此,当三者大小相等时,加密效率最高。
-
定义 2.8(香农定理) 设加密方案 ( G e n , E n c , D e c ) (Gen,Enc, Dec) (Gen,Enc,Dec)的明文空间为 M M M,且 ∣ K ∣ = ∣ M ∣ = ∣ C ∣ |K| = |M| = |C| ∣K∣=∣M∣=∣C∣,则当且仅当下列条件成立时,此方案是完善保密加密。
(1) 由 Gen \text{Gen} Gen产生的任意密钥 k ∈ K k \in \mathcal{K} k∈K的概率都是 1 / ∣ K ∣ 1/|\mathcal{K}| 1/∣K∣。
(2) 对任意明文 m ∈ M m \in \mathcal{M} m∈M和任意密文 c ∈ C c \in \mathcal{C} c∈C,只存在唯一的密钥 k ∈ K k \in \mathcal{K} k∈K使得 Enc k ( m ) = c \text{Enc}_k(m)=c Enck(m)=c。
3.1 证明逻辑梳理
证明的核心逻辑可以简化为以下关键点:
- 条件(2)的充分性:
- 含义: 对于任何密文 c c c和任何明文 m m m,都存在且仅存在一个密钥 k k k,使得用 k k k加密 m m m能得到 c c c。
- 为什么能证明完善保密?
- 因为对于任何密文 c c c,它可能 来自任何 明文 m m m(因为总有一个密钥 k k k能实现这个映射)。
- 同时,对于任何明文 m m m和密文 c c c,只有唯一 一个密钥 k k k能实现这个映射。
- 再加上条件(1)(所有密钥被选中的概率相同),这就意味着每个明文被加密成 c c c的概率是均等的。这和"一次一密"的原理一样,从而保证了完善保密。
- 条件(2)的必要性(当 ∣ M ∣ = ∣ K ∣ = ∣ C ∣ |\mathcal{M}| = |\mathcal{K}| = |\mathcal{C}| ∣M∣=∣K∣=∣C∣时):
- 含义: 当明文、密钥、密文空间大小相等时,必须满足条件(2)。
- 为什么必须这样?
- 假设不满足条件(2),即存在某个密文 c c c,要么:
- 情况A: 有些明文 m m m无法通过任何密钥加密成 c c c。
- 情况B: 有些明文 m m m可以通过多个 不同密钥加密成 c c c。
- 这两种情况都会破坏完善保密。因为:
- 在情况A中,如果某个明文 m ′ m' m′无法加密成 c c c,那么看到 c c c时,就可以排除 m ′ m' m′是明文,这就泄露了信息。
- 在情况B中,如果某个明文 m m m可以通过多个密钥加密成 c c c,那么 m m m成为明文的可能性就会高于 其他只能通过一个密钥加密成 c c c的明文,这也泄露了信息。
- 因此,为了不泄露信息(即实现完善保密),必须保证每个明文 m m m和每个密文 c c c之间有且仅有一个 密钥 k k k能实现映射,也就是必须满足条件(2)。
- 假设不满足条件(2),即存在某个密文 c c c,要么:
- 密钥等概率选取的必要性:
- 含义: 所有密钥被选中的概率必须相同(即条件(1))。
- 为什么必须这样?
- 如果密钥被选中的概率不均等 ,那么某些密钥对应的明文被加密成某个密文 c c c的概率就会高于其他密钥对应的明文。
- 这同样会泄露信息,破坏完善保密。
- 因此,为了实现完善保密,密钥必须被等概率选取。
3.2 各空间之间的关系
- 在关于完美保密性的证明过程中,对于选定的明文 m m m,考虑遍历所有密钥 k ∈ K k \in K k∈K并使用加密函数 E ( k , m ) E(k, m) E(k,m)生成密文。令** S m = { E ( k , m ) ∣ k ∈ K } S_m = \{E(k, m) \mid k \in K\} Sm={E(k,m)∣k∈K}表示当固定 m m m时所有可能生成的密文集合**,即"输出空间"。密文空间 C C C是所有可能密文的集合。证明中涉及两个关键点:
-
输出空间是密文空间的子集 :由于每个生成的密文都属于 C C C,因此 S m ⊆ C S_m \subseteq C Sm⊆C,这意味着 ∣ S m ∣ ≤ ∣ C ∣ |S_m| \leq |C| ∣Sm∣≤∣C∣。
-
完美保密性要求输出空间覆盖整个密文空间 :完美保密性的定义要求对于任意密文 c ∈ C c \in C c∈C和任意明文 m m m,必须存在至少一个密钥 k k k使得 E ( k , m ) = c E(k, m) = c E(k,m)=c。对于每个 m m m,有 C ⊆ S m C \subseteq S_m C⊆Sm,这意味着 ∣ S m ∣ ≥ ∣ C ∣ |S_m| \geq |C| ∣Sm∣≥∣C∣。
结合以上两点, ∣ S m ∣ ≤ ∣ C ∣ |S_m| \leq |C| ∣Sm∣≤∣C∣和 ∣ S m ∣ ≥ ∣ C ∣ |S_m| \geq |C| ∣Sm∣≥∣C∣,因此 ∣ S m ∣ = ∣ C ∣ |S_m| = |C| ∣Sm∣=∣C∣,即输出空间 S m S_m Sm与密文空间 C C C大小相等。这意味着对于每个明文 m m m,加密函数 E ( k , m ) E(k, m) E(k,m)在密钥 k k k遍历密钥空间时能够生成整个密文空间。
- 密钥空间与明文空间的关系 :对于每个 m m m,加密函数 E ( k , m ) E(k, m) E(k,m)是从 K K K到 C C C的映射,且 ∣ S m ∣ = ∣ C ∣ |S_m| = |C| ∣Sm∣=∣C∣。由于每个密钥只能映射到一个密文,但多个密钥可能映射到同一个密文(即可能存在多个密钥 k k k使得 E ( k , m ) = c E(k, m) = c E(k,m)=c),因此 ∣ K ∣ ≥ ∣ S m ∣ = ∣ C ∣ |K| \geq |S_m| = |C| ∣K∣≥∣Sm∣=∣C∣;另一方面,完美保密性还要求密文空间大小至少与明文空间大小相同(即 ∣ C ∣ ≥ ∣ M ∣ |C| \geq |M| ∣C∣≥∣M∣),最终得到 ∣ K ∣ ≥ ∣ M ∣ |K| \geq |M| ∣K∣≥∣M∣。密钥空间的大小必须大于或等于明文空间的大小,即 ∣ K ∣ ≥ ∣ M ∣ |K| \geq |M| ∣K∣≥∣M∣。
- 多个密钥的情况 :在证明中,"至少找到一个密钥 k k k"并不排除存在多个密钥的情况。实际上,对于给定的 c c c和 m m m,可能存在多个 k k k满足 E ( k , m ) = c E(k, m) = c E(k,m)=c。在完美保密加密方案中,密钥数量的多寡取决于加密函数的设计,但只要满足上述条件,即可保证完美保密性。
总之,在证明过程中,通过输出空间与密文空间的大小关系,我们得出它们必须相等,这是完美保密性的一个关键性质。
3.3 香农定理的正式证明
- 当前证明的情况是密钥、明文和密文三个空间是相等的 ,得到的结果是只有一个密钥可以把一个明文加密成指定的密文,但是如果密钥空间大于明文或密文空间,那么也有可能找到多于一个的密钥。这些情况都是符合完美保密定义要求的。
- 定理2.7 设 ( Gen , Enc , Dec ) (\text{Gen}, \text{Enc}, \text{Dec}) (Gen,Enc,Dec)是明文空间为 M \mathcal{M} M的一个完善保密加密方案, K \mathcal{K} K的密钥空间由 Gen \text{Gen} Gen决定,则 ∣ K ∣ ≥ ∣ M ∣ |\mathcal{K}| \geq |\mathcal{M}| ∣K∣≥∣M∣。
设 ( Gen , Enc , Dec ) (\text{Gen}, \text{Enc}, \text{Dec}) (Gen,Enc,Dec)为定理中的加密方案。假设 Enc \text{Enc} Enc为确定算法。首先证明如果 ( Gen , Enc , Dec ) (\text{Gen}, \text{Enc}, \text{Dec}) (Gen,Enc,Dec)是完善保密加密,那么条件(1)和条件(2)成立。根据定理2.7,不难发现对于每个 m ∈ M m \in \mathcal{M} m∈M和 c ∈ C c \in \mathcal{C} c∈C至少存在一个密钥 k ∈ K k \in \mathcal{K} k∈K满足 Enc k ( m ) = c \text{Enc}_k(m) = c Enck(m)=c。(否则, Pr [ M = m ∣ C = c ] = 0 ≠ Pr [ M = m ] \Pr[M = m | C = c] = 0 \neq \Pr[M = m] Pr[M=m∣C=c]=0=Pr[M=m]。)选定 m m m,考虑集合 { Enc k ( m ) } k ∈ K \{\text{Enc}k(m)\}{k \in \mathcal{K}} {Enck(m)}k∈K,根据刚才的证明, ∣ { Enc k ( m ) } k ∈ K ∣ ≥ ∣ C ∣ |\{\text{Enc}k(m)\}{k \in \mathcal{K}}| \geq |\mathcal{C}| ∣{Enck(m)}k∈K∣≥∣C∣。(因为任意 c ∈ C c \in \mathcal{C} c∈C都存在一个 k ∈ K k \in \mathcal{K} k∈K满足 Enc k ( m ) = c \text{Enc}_k(m) = c Enck(m)=c。)另外,很明显有 ∣ { Enc k ( m ) } k ∈ K ∣ ≤ ∣ C ∣ |\{\text{Enc}k(m)\}{k \in \mathcal{K}}| \leq |\mathcal{C}| ∣{Enck(m)}k∈K∣≤∣C∣。得出结论
∣ { Enc k ( m ) } k ∈ K ∣ = ∣ C ∣ |\{\text{Enc}k(m)\}{k \in \mathcal{K}}| = |\mathcal{C}| ∣{Enck(m)}k∈K∣=∣C∣
既然 ∣ K ∣ = ∣ C ∣ |\mathcal{K}| = |\mathcal{C}| ∣K∣=∣C∣,于是 ∣ { Enc k ( m ) } k ∈ K ∣ = ∣ K ∣ |\{\text{Enc}k(m)\}{k \in \mathcal{K}}| = |\mathcal{K}| ∣{Enck(m)}k∈K∣=∣K∣。这意味着没有两个不同的密钥 k 1 , k 2 ∈ K k_1, k_2 \in \mathcal{K} k1,k2∈K满足 Enc k 1 ( m ) = Enc k 2 ( m ) \text{Enc}{k_1}(m) = \text{Enc}{k_2}(m) Enck1(m)=Enck2(m)。由于 m m m是任意选择的,故对于任意 m m m和 c c c,都存在至少一个密钥 k ∈ K k \in \mathcal{K} k∈K满足 Enc k ( m ) = c \text{Enc}_k(m) = c Enck(m)=c。综上所述(即存在至少一个密钥,且至多一个密钥),得到条件(2)。
对于任意 k ∈ K k \in \mathcal{K} k∈K有 Pr [ K = k ] = 1 / ∣ K ∣ \Pr[K = k] = 1/|\mathcal{K}| Pr[K=k]=1/∣K∣。设 n = ∣ K ∣ n = |\mathcal{K}| n=∣K∣, M = { m 1 , ⋯ , m n } \mathcal{M} = \{m_1, \cdots, m_n\} M={m1,⋯,mn}(其中, ∣ M ∣ = ∣ K ∣ = n |\mathcal{M}| = |\mathcal{K}| = n ∣M∣=∣K∣=n),并且选定密文 c c c。标注密钥为 k 1 , ⋯ , k n k_1, \cdots, k_n k1,⋯,kn以至于对于任意 i i i( 1 ⩽ i ⩽ n 1 \leqslant i \leqslant n 1⩽i⩽n)都有 Enc k i ( m i ) = c \text{Enc}{k_i}(m_i) = c Encki(mi)=c成立。这种标注可以实现是因为对任意密文 c c c和 m i m_i mi,都存在一个唯一的密钥 k i k_i ki,满足 Enc k i ( m i ) = c \text{Enc}{k_i}(m_i) = c Encki(mi)=c。此外对于不同的明文 m i , m j m_i, m_j mi,mj,其密钥也不同(否则可能会出现解密结果不确定)。由完善保密加密,得到对任意 i i i有
Pr [ M = m i ] = Pr [ M = m i ∣ C = c ] \Pr[M = m_i] = \Pr[M = m_i | C = c] Pr[M=mi]=Pr[M=mi∣C=c]
= Pr [ C = c ∣ M = m i ] ⋅ Pr [ M = m i ] Pr [ C = c ] = \frac{\Pr[C = c | M = m_i] \cdot \Pr[M = m_i]}{\Pr[C = c]} =Pr[C=c]Pr[C=c∣M=mi]⋅Pr[M=mi]
= Pr [ K = k i ] ⋅ P r [ M = m i ] Pr [ C = c ] = \frac{\Pr[K = k_i] \cdot Pr[M = m_i]}{\Pr[C = c]} =Pr[C=c]Pr[K=ki]⋅Pr[M=mi]
其中第二个等式是由贝叶斯定理得来的,第三个等式由前面的标注得到的(即 k i k_i ki是 m i m_i mi映射到 c c c的唯一密钥)。
综上所述,对于任意 i i i,
Pr [ K = k i ] = Pr [ C = c ] \Pr[K = k_i] = \Pr[C = c] Pr[K=ki]=Pr[C=c]
因此,对于所有 i i i和 j j j, Pr [ K = k i ] = Pr [ C = c ] = Pr [ K = k j ] \Pr[K = k_i] = \Pr[C = c] = \Pr[K = k_j] Pr[K=ki]=Pr[C=c]=Pr[K=kj],所有密钥等概率选取。得到结论:密钥选择服从均匀分布。也就是说,对任意密钥 k k k,满足 Pr [ K = k i ] = 1 / ∣ K ∣ \Pr[K = k_i] = 1/|\mathcal{K}| Pr[K=ki]=1/∣K∣,得证。
下面证明充分条件。假设所有密钥出现的概率满足 1 / ∣ K ∣ 1/|\mathcal{K}| 1/∣K∣,并且对于任意 m ∈ M m \in \mathcal{M} m∈M和任意 c ∈ C c \in \mathcal{C} c∈C都有唯一密钥 k ∈ K k \in \mathcal{K} k∈K满足 Enc k ( m ) = c \text{Enc}_k(m) = c Enck(m)=c。这意味着可立刻得出:对于所有 m m m和 c c c,有
Pr [ C = c ∣ M = m ] = 1 ∣ K ∣ \Pr[C = c | M = m] = \frac{1}{|\mathcal{K}|} Pr[C=c∣M=m]=∣K∣1
与 M \mathcal{M} M上的概率分布无关。因此,对于任意 M \mathcal{M} M上的概率分布,任意 m , m ′ ∈ M m, m' \in \mathcal{M} m,m′∈M,任意 c ∈ C c \in \mathcal{C} c∈C都满足
Pr [ C = c ∣ M = m ] = 1 ∣ K ∣ = Pr [ C = c ∣ M ′ = m ′ ] \Pr[C = c | M = m] = \frac{1}{|\mathcal{K}|} = \Pr[C = c | M' = m'] Pr[C=c∣M=m]=∣K∣1=Pr[C=c∣M′=m′]
所以根据引理2.3可知,这个加密方案是完善保密加密。