完美保密加密
-
在本节课程中,我们学习信息论意义上的安全——完美保密。完美保密的安全在理论上是无需前提假设的,但其存在一些实践上的局限性,即完美中的不完美。本节将学习若干“等价”的完美保密定义,从中体会看似不同的定义却存在相同的本质,以及理解定义的角度对理解定义是至关重要的。
-
目录
-
回顾加密词法
-
以小写字母表示一个具体值,用花体字母表示一个集合,用大写字母表示随机变量
-
密钥,明文,密文分别为k∈K,m∈M,c∈Ck \in \mathcal{K}, m \in \mathcal{M}, c \in \mathcal{C}k∈K,m∈M,c∈C.
-
密钥生成,加密算法,解密算法分别为k←Gen,c:=Enck(m),m:=Deck(c)k \gets \mathsf{Gen}, c:= \mathsf{Enc}_k(m), m:= \mathsf{Dec}_k(c)k←Gen,c:=Enck(m),m:=Deck(c).
-
加密方案: Π=(Gen,Enc,Dec)\Pi = (\mathsf{Gen}, \mathsf{Enc}, \mathsf{Dec})Π=(Gen,Enc,Dec).
-
随机变量: K,M,CK, M, CK,M,C 对应密钥,明文,密文.
-
概率: Pr[K=k],Pr[M=m],Pr[C=c]\Pr[K=k], \Pr[M=m], \Pr[C=c]Pr[K=k],Pr[M=m],Pr[C=c],随机变量为某一个具体值的概率。
-
-
完美保密(Perfect Secrecy)定义
-
直觉:敌手知道明文上的概率分布,例如,敌手知道明文是一个真或假问题的答案:真、假,并且知道两种答案的概率。敌手也知道加密方案。敌手要根据密文确定明文中的答案。如果加密方案是安全的,则密文应该对敌手猜测答案没有任何效果,即根据密文来猜测答案和不知道密文猜测答案对敌手来说是一样的。
-
从概率的角度看,某个明文被发送的后验似然(posteriori likehood)应该与该明文被发送的先验概率(priori probability)没有差别。
-
定义:在M\mathcal{M}M上Π\PiΠ是完美保密的,若对于M\mathcal{M}M上的任意概率分布, ∀m∈M\forall m \in \mathcal{M}∀m∈M 与 ∀c∈C\forall c \in \mathcal{C}∀c∈C , 且 Pr[C=c]>0\Pr[C = c] > 0Pr[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].
-
上面的公式表示,给定密文的条件下,明文的概率分布与预先知道的相同,即知道密文对猜测明文没有帮助。
-
下面看一个例子,这个方案是完美保密的吗?For M=K={0,1},Enck(m)=m⊕k\mathcal{M}=\mathcal{K} = \{ 0,1 \} , \mathsf{Enc}_k(m)= m \oplus kM=K={0,1},Enck(m)=m⊕k. 这里的⊕\oplus⊕是异或。
-
尽管这个方案看起来很简单(可能是最简单的),但答案是肯定的,是完美保密。下面我们来证明。
-
-
一比特上的完美保密
-
这里给出一个与课件不同的例子,课件上是
-
这里假设M\mathcal{M}M上的概率分布是Pr[M=1]=p\Pr[M=1] = pPr[M=1]=p和Pr[M=0]=1−p\Pr[M=0]= 1-pPr[M=0]=1−p,计算$ \Pr[M=1 | C=0] $。
- 注意:加密事件逻辑是从明文和密钥得到密文,而不是相反的。
-
根据贝叶斯定理:
Pr[M=1∣C=0]=Pr[C=0∣M=1]⋅Pr[M=1]/Pr[C=0] \Pr[M=1 | C=0] = \Pr[C=0 | M=1] \cdot \Pr[M=1] / \Pr[C=0]Pr[M=1∣C=0]=Pr[C=0∣M=1]⋅Pr[M=1]/Pr[C=0]
=Pr[M⊕K=0∣M=1]⋅p/(Pr[C=0∣M=1]⋅Pr[M=1]+Pr[C=0∣M=0]⋅Pr[M=0]) = \Pr[M \oplus K =0 | M=1] \cdot p / (\Pr[C=0 | M=1] \cdot \Pr[M=1]+\Pr[C=0 | M=0] \cdot \Pr[M=0]) =Pr[M⊕K=0∣M=1]⋅p/(Pr[C=0∣M=1]⋅Pr[M=1]+Pr[C=0∣M=0]⋅Pr[M=0])
=Pr[1⊕K=0]⋅p/(Pr[1⊕K=0]⋅p+Pr[0⊕K=0]⋅(1−p)) = \Pr[1 \oplus K = 0] \cdot p / (\Pr[1 \oplus K = 0] \cdot p +\Pr[0 \oplus K = 0] \cdot (1-p)) =Pr[1⊕K=0]⋅p/(Pr[1⊕K=0]⋅p+Pr[0⊕K=0]⋅(1−p))
=12p/(12p+12(1−p))=p=Pr[M=1] = \frac{1}{2} p / (\frac{1}{2}p + \frac{1}{2}(1-p)) = p = \Pr[M=1]=21p/(21p+21(1−p))=p=Pr[M=1]
-
注意:Pr[1⊕K=0]=12≠Pr[M=1,C=0]=p⋅12\Pr[1 \oplus K = 0] = \frac{1}{2} \neq \Pr[M=1, C=0] = p \cdot \frac{1}{2}Pr[1⊕K=0]=21=Pr[M=1,C=0]=p⋅21
-
这里需要理解到,只要密钥是均匀随机的,密文的概率分布不受明文的概率分布的影响(注意密文不独立于明文,而是由明文和密钥一起决定的),密文不会携带明文的统计模式,从而安全。
-
-
完美保密定义的等价公式
- 在完美保密加密方案中,密文的先验概率等于其后验概率,即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]\Pr[C=c | M=m] \cdot \Pr[M=m] / \Pr[C=c] = \Pr[M=m]Pr[C=c∣M=m]⋅Pr[M=m]/Pr[C=c]=Pr[M=m]
- 应用贝叶斯定理,左边等于 Pr[M=m∣C=c]⋅Pr[C=c]/Pr[C=c]=Pr[M=m∣C=c]\Pr[M=m | C=c] \cdot \Pr[C=c] / \Pr[C=c] = \Pr[M=m | C=c]Pr[M=m∣C=c]⋅Pr[C=c]/Pr[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]
- 从左到右证明略。
- 从另一个方向思考,密文出现概率根据明文概率分布和密钥概率分布以及加密算法可以预先计算。给定任意明文,对加密结果的预期与预先计算结果是一样。
-
完美不可区分性(Perfect Indistinguishability)
- Pr[C=c∣M=m0]=Pr[C=c∣M=m1]\Pr[C=c | M=m_0] = \Pr[C=c | M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1]
- 在完美保密加密方案中,任意两个明文加密后为相同密文的概率是相同的。换句话说,无论用什么明文,加密后得到相同密文的概率是相同的。证明见幻灯片。
- 不可区分是什么意思?任意明文加密成某个密文的概率都相同,攻击者无法区分出密文是由哪个明文加密得到的,具体见后面的窃听者不可区分实验。
-
一次一密(One-Time Pad (Vernam’s Cipher))
- 将明文以比特串的形式与相同长度的密钥按位异或得到密文。解密时将密文与密钥按比特异或得到明文。这种加密方案称为“一次一密”。
- 是一种完美保密的加密方案,道理和前面给出的一个比特异或加密的例子一样。证明见幻灯片。
- 问题:除了一次一密,还有没有其它实现完美保密的方案?
-
完美保密的局限性
- 很容易观察到一次一密加密方案中密钥需要和明文一样长,难以存储和分享。把比特串长度换一个表达方式,换成比特串数量——比特串所构成空间的规模,意味着密钥数量需要和明文数量一样多。
- 那如果密钥长度比明文短,或者说密钥数量比明文少,能否实现完美保密?答案是否定的。要实现完美保密一定需要密钥空间大于等于明文空间,即∣K∣≥∣M∣|\mathcal{K}| \ge |\mathcal{M}|∣K∣≥∣M∣。
- 采用反证法证明,假设密钥数量比明文数量少∣K∣<∣M∣|\mathcal{K}| < |\mathcal{M}|∣K∣<∣M∣,则不可能实现完美保密。
- 将从一个密文ccc解密得到的所有明文集合,表示为M(c)=def{m^∣m^=Deck(c) for some k^∈K}\mathcal{M}(c) \overset{\text{def}}{=} \{ \hat{m} | \hat{m} = \mathsf{Dec}_k(c)\ \text{for some}\ \hat{k} \in \mathcal{K} \}M(c)=def{m^∣m^=Deck(c) for some k^∈K}。
- 对于一个密钥kkk,最多有个一个明文mmm使得m=Deck(c)m = \mathsf{Dec}_k(c)m=Deck(c)。这是因为如果有多个明文的话,就根本不是一个加密方案。
- 因此,从一个密文解密出来的明文数量不会超过密钥数量,也就不超过明文总数: ∣M(c)∣≤∣K∣<∣M∣|\mathcal{M}(c)|\le |\mathcal{K}| < |\mathcal{M}|∣M(c)∣≤∣K∣<∣M∣.
- 那么,一定存在一个明文m′m'm′是无法由ccc解密出来的,即 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′]。因此,不是完美保密。
- 尽管有这个局限性,但一次一密也可以用在实践中,例如美国和苏联之间的“Red line”。
-
二次加密:真实世界案例
- c⊕c′=(m⊕k)⊕(m′⊕k)=m⊕m′.c\oplus c'=(m\oplus k)\oplus (m'\oplus k)=m\oplus m'.c⊕c′=(m⊕k)⊕(m′⊕k)=m⊕m′.
- 如果一个密钥用了两次,那么敌手会得到两次明文的异或值,这显然不是完美保密了,而且根据异或值结合之前学习的自然语言统计模式分析可以破解出明文。
- 一个例子真实世界例子是,在MS-PPTP协议中,通信双方采用同一个密钥来加密双向相互发送的两个消息。
- 改进方法是双方各两个方向(分别作为源和目的)的通信使用不同的密钥。
-
香农定理(Shannon’s Theorem)
- 前面的完美保密相关定义的可操作性不高,原因是不容易直接获得明文概率分布。香农定理使得完美保密的可操作性得到了很大提高。
- 当明文空间、密钥空间和密文空间规模相同时,加密方案是完美保密的,当且仅当满足两个条件:
- (1)每个密钥是从密钥空间中均匀随机生成的;
- (2)对于任意明文和密文对,存在唯一的密钥使得该明文加密成该密文。
- 证明见幻灯片。
-
香农定理的例题
- 请根据香农定理来分析。
- 讲义中通常不给出例题答案
-
窃听不可区分实验(Eavesdropping Indistinguishability Experiment)
这里引入密码学中最重要的思想实验:存在一个挑战者,挑战敌手不能破解加密方案,并配合敌手做一个实验。
-
敌手根据自己的策略选择两个不同的长度相同的明文,并发送给挑战者;
-
挑战者随机挑选其中一个明文,并新生成一个密钥,用加密方案来加密选中的明文,得到密文(称为一个挑战),并将密文发送给敌手;
-
敌手根据收到的密文,猜测哪一个明文被加密了。如果猜对了,则敌手在这次实验中成功。
实验中的一个重点在于实验可重复足够多次。每次实验中挑战者都是生成新的密钥。
-
-
敌手不可区分(Adversarial Indistinguishability)
- 下面给出一个新的完美保密的定义:对于完美保密的加密方案,在窃听不可区分实验中,任意敌手成功的概率等于1/2。
- 1/2是敌手采用瞎猜策略时成功的概率。因此,完美保密也意味着任意敌手在实验中不会获得比瞎猜更好的结果,或者说敌手获得密文后也不会比瞎猜策略获得更大的优势。后面还会反复学习这一概念。
- 直觉理解为什么是敌手不可区分是一个完美保密的等价定义:
- 无论明文如何分布,也无论敌手如何挑选两个明文,在实验中由挑战者随机二选一,明文空间缩减为二,每个明文被选中的概率为1/2。
- 如果加密方案是完美保密的,则敌手获得密文后猜测明文的后验似然也是1/2。
- 如果加密方案不是完美保密的,则意味着敌手可以利用某个明文和密文获得比瞎猜更大的优势,则敌手成功的概率不等于1/2。
- 例子:其中∥\|∥表示比特串连接,LSB表示最高有效位。如果你觉得是完美保密,请指出其和一次一密的关系;否则,请说明在不可区分实验中敌手如何成功。
-
总结
- 完美保密 = 完美不可区分 = 敌手不可区分
- 知道密文对猜测明文没有帮助
- 给定明文对推测密文没有帮助
- 任意明文加密成某个密文的概率是相同的
- 完美保密是可获得的。一次一密。
- 香农定理(可操作的完美保密)
- 完美保密 = 完美不可区分 = 敌手不可区分
本文探讨了信息论意义上的安全——完美保密的概念及其定义。介绍了完美保密的基本原理,包括直觉理解、数学定义及其等价形式。讨论了一次一密加密方案作为完美保密的实例,并分析了其实现限制。

1904

被折叠的 条评论
为什么被折叠?



