《Introduction To Modern Cryptography》读书笔记二


《Introduction To Modern Cryptography》读书笔记二

本笔记纯粹个人读书习惯与相应见解,内容归纳完全出于个人需要与个人局限,如有修改意见(比如哪儿应该是值得加粗的重点),欢迎斧正,QQ:2570101165

二、 Perfectly Secret Encryption

上一章讲了古典密码,用很少的计算量就能攻破。

这章讲另一个极端——完美保密(perfectly secret),将从这个概念的定义和其应该满足的条件入手。

《Introduction To Modern Cryptography》读书笔记二

这章内容不是现代密码学!!!因为它只有1.4三个原则中的定义和证明,并没有依赖假设。虽然更简单但却因此有了局限性

改颜色方法1

改 颜 色 方 法 2 \color{blue} 改颜色方法2 改颜色方法2

改颜色方法3

2.1 Generating randomness

本章使用 包含随机选择算法的概率实验 来定义安全性并分析方案,所以本节先讨论一下适用于密码学应用的随机生成问题

在整本书中,我们将简单地假设各方都能获得无限的、独立的、无偏的随机比特。本节就是讨论实际操作时,这些随机比特怎么生成。

2.1.1 手工生成

例如:投掷一枚均匀的硬币(fair coin

缺点:不方便,规模小

2.1.2 现代方法

  1. 收集一个有大量高熵数据的数据池(高度不可预测,但不一定uniform)
  2. 对这些高熵数据进行处理,以产生一个几乎独立且无偏置的比特序列(必要的,为了uniform)

“uniform”我的理解是均匀、等概、足够随机

2.1.3 现代方法第一步の解释与补充

  1. 需要一个不可预测的数据来源。例如:1)敲击键盘、网络延迟、鼠标移动等外部输入;2)热/散射噪声或放射性衰变等物理现象
  2. 收集的数据可能远非uniform(我理解为可能带有明显的个性),但足够多的话也会有足够的熵
  3. 因特尔把这个实现在处理器上了

2.1.4 现代方法第二步の解释与补充

  1. 分清楚高熵和均匀的区别!!!

  2. 一个真实硬币(正面概率: p p p 反面概率: 1 − p 1-p 1−p)抛一千次得到的数据具有高熵,但是并不uniform

  3. 上述问题解决办法(高熵->uniform)

    • “0”:先正后反 概率: p ( 1 − p ) p(1-p) p(1−p)
    • “1”:先反后正 概率: ( 1 − p ) p (1-p)p (1−p)p

    一个想法:把正正和反反定义为第三态,即三进制。“第三态”出现的概率会大于其它两种,会不会和这个世界的量子层面的规律重合?这样做还能把将近一半废弃的数据重新利用起来

  4. 应该使用为加密而设计的随机数生成器,而不是不适合密码学应用的“通用”随机数生成器。例如:C语言stdlib.h库中的rand()函数不符合密码学安全要求(随机化种子一样,产生的随机数就一样,因此是一种伪随机)

5.6.4将继续涉及如何把高熵数据转化为uniform的比特串

2.1.5 补充:m序列的伪随机性

只能要求截获比周期短的一段时不会泄露更多信息,这样的序列称为伪随机序列

流密码中经常用,这儿仅作为联系与补充

1.基本概念介绍

  1. 游程

    例如00110111,前两个数字00,称为0的2游程;接着是11,是1的2游程;再下来是0的1游程和1的3游程

  2. GF(2)上周期为 T T T的序列 { a i } \left\{a_i\right\} {ai​}的自相关函数定义
    R ( τ ) = 1 T ∑ k = 1 T ( − 1 ) a k ( − 1 ) a k + τ , 0 ≤ τ ≤ T − 1 R(\tau)=\frac{1}{T}\sum_{k=1}^T(-1)^{a_k}(-1)^{a_{k+\tau}},\quad 0\leq\tau\leq T-1 R(τ)=T1​k=1∑T​(−1)ak​(−1)ak+τ​,0≤τ≤T−1
    定义中的和式表示序列 { a i } \left\{a_i\right\} {ai​}与 { a i + τ } \left\{a_{i+\tau}\right\} {ai+τ​}(序列 { a i } \left\{a_i\right\} {ai​}向后平移 τ \tau τ位得到)在一个周期内对应位相同的位数与对应位不同的位数之差。当 τ = 0 \tau=0 τ=0时, R ( τ ) = 1 R(\tau)=1 R(τ)=1;当 τ ≠ 0 \tau\neq0 τ​=0时,称 R ( τ ) R(\tau) R(τ)为异相自相关函数

2. Golomb的3个随机性公设

  1. 在序列的一个周期内,0与1的个数相差最多为1

  2. 在序列的一个周期内,长为1的游程占游程总数的 1 2 \frac{1}{2} 21​,长为2的游程占游程总数的 1 2 2 \frac{1}{2^2} 221​,…,长为 i i i的游程占游程总数的 1 2 i \frac{1}{2^i} 2i1​,…,且在等长的游程中0的游程个数和1的游程个数相等

  3. 异自相关函数是一个常数

    公设(1)说明 { a i } \left\{a_i\right\} {ai​}中0与1出现的概率基本上相同

    公设(2)说明0与1在序列中每一位置出现的概率相同

    公设(3)意味着通过对序列与其平移后的序列做比较,不能给出任何信息

3. 密码学角度的补充

  1. { a i } \left\{a_i\right\} {ai​}的周期相当大
  2. { a i } \left\{a_i\right\} {ai​}的确定在计算上是容易的
  3. 由密文及相应的明文的部分信息,不能确定整个 { a i } \left\{a_i\right\} {ai​}

4. ***扩展到n长m序列(随便看看就行)

  1. 在一个周期内,0与1出现的次数分别为 2 n − 1 − 1 2^{n-1}-1 2n−1−1和 2 n − 1 2^{n-1} 2n−1

  2. 在一个周期内,总游程数为 2 n − 1 2^{n-1} 2n−1;对 1 ≤ i ≤ n − 2 1\leq i\leq n-2 1≤i≤n−2,长为 i i i的游程有 2 n − i − 1 2^{n-i-1} 2n−i−1个,且0、1游程各半;长为 n − 1 n-1 n−1的0游程一个,长为 n n n的1游程一个

  3. { a i } \left\{a_i\right\} {ai​}的自相关函数为(证明略)
    R ( τ ) = { 1 , τ = 0 − 1 2 n − 1 − 1 , 0 < τ ≤ 2 n − 2 R(\tau)= \begin{cases} 1,\qquad\qquad\tau=0\\\\ -\frac{1}{2^{n-1}-1},\quad 0<\tau\leq2^n-2 \end{cases} R(τ)=⎩⎪⎨⎪⎧​1,τ=0−2n−1−11​,0<τ≤2n−2​

2.2 Definitions

2.2.1 前情回顾+概念补充

  1. 一个加密方案包含三个算法( G e n , E n c , D e c \mathrm{Gen,Enc,Dec} Gen,Enc,Dec)和一个有限的消息空间 M \mathcal{M} M( ∣ M ∣ > 1 \lvert\mathcal{M}\rvert>1 ∣M∣>1)

  2. G e n \mathrm{Gen} Gen是个概率(probabilistic)算法,它生成的全部密钥 k k k构成的(有限)集合称为密钥空间 K \mathcal{K} K

  3. E n c \mathrm{Enc} Enc也是一个概率算法(所以 E n c k ( m ) \mathrm{Enc}_k(m) Enck​(m)在多次运行时可能会输出不同的密文 c c c),我们用 c ← E n c k ( m ) c\leftarrow\mathrm{Enc}_k(m) c←Enck​(m)表示这个过程(如果 E n c \mathrm{Enc} Enc是确定性的,我们可以用 c : = E n c k ( m ) c:=\mathrm{Enc}_k(m) c:=Enck​(m)来强调), m ∈ M , k ∈ K m\in\mathcal{M},k\in\mathcal{K} m∈M,k∈K

    有一说一我没想到合适的例子(学长提示,很多用到随机数的公钥加密会用到,例如Elgamal加密算法)

    以后我们也可以用 x ← S x\leftarrow S x←S 来表示从集合 S S S中均匀挑选 x x x(uniform selection)

  4. 我们把 E n c k ( m ) \mathrm{Enc}_k(m) Enck​(m)的所有输出 c c c构成的集合称为 C \mathcal{C} C

  5. D e c \mathrm{Dec} Dec是一个不失一般性的确定性算法,完美正确性(perfect
    correctness)要求每次解密都百分百正确,即 m : = D e c k ( c ) m:=\mathrm{Dec}_k(c) m:=Deck​(c), c ∈ C , k ∈ K , m ∈ M c\in\mathcal{C},k\in\mathcal{K},m\in\mathcal{M} c∈C,k∈K,m∈M

    我认为这儿在强调解密的不二性

  6. K , M , C \mathcal{K},\mathcal{M},\mathcal{C} K,M,C的分布

    • P r [ K = k ] \mathrm{Pr}[K=k] Pr[K=k],取决于方案本身,即 G e n \mathrm{Gen} Gen算法
    • P r [ M = m ] \mathrm{Pr}[M=m] Pr[M=m],取决于应用方案的环境,与上面的 K K K是相互独立的
    • P r [ C = c ] \mathrm{Pr}[C=c] Pr[C=c],取决于上面两个因素

2.2.2 Perfect secrecy

背景:攻击者知道 m m m的概率分布 + 知道加密方案 + 仅不知道密钥 + 唯密文攻击

1. 定义1

P r [ M = m ∣ C = c ] = P r [ M = m ] P r [ C = c ] > 0 (2.1) \mathrm{Pr}[M=m\mid C=c]=\mathrm{Pr}[M=m]\qquad \mathrm{Pr}[C=c]>0 \tag{2.1} Pr[M=m∣C=c]=Pr[M=m]Pr[C=c]>0(2.1)
一个方案若满足等式2.1,则该方案是完美保密的

解释:消息m被发送的先验概率priori probability),与 以密文c被观察到为前提而推出消息m被发送 的后验概率posteriori probability)相同

即,密文不会透露任何关于底层明文的信息

2. 引理1

P r [ E n c K ( m ) = c ] = P r [ E n c K ( m ′ ) = c ] (2.2) \mathrm{Pr}[\mathrm{Enc}_K(m)=c]=\mathrm{Pr[\mathrm{Enc}_K(m')=c]} \tag{2.2} Pr[EncK​(m)=c]=Pr[EncK​(m′)=c](2.2)

一个方案对任意 m , m ′ ∈ M     c ∈ C m,m'\in\mathcal{M}\ \ \ c\in\mathcal{C} m,m′∈M   c∈C都满足等式2.2,则该方案是完美保密的

解释:密文的概率分布不依赖于明文

3. 引理1 → \rightarrow →定义1的证明

假设 P r [ M = m ] > 0 P r [ C = c ] > 0 \mathrm{Pr}[M=m]>0\quad\mathrm{Pr}[C=c]>0 Pr[M=m]>0Pr[C=c]>0,则有
P r [ C = c ∣ M = m ] = P r [ E n c K ( M ) = c ∣ M = m ] = P r [ E n c K ( m ) = c ] \mathrm{Pr}[C=c\mid M=m]=\mathrm{Pr}[\mathrm{Enc}_K(M)=c\mid M=m]=\mathrm{Pr}[\mathrm{Enc}_K(m)=c] Pr[C=c∣M=m]=Pr[EncK​(M)=c∣M=m]=Pr[EncK​(m)=c]

第一个等号:根据随机变量 C C C的定义;第二个等号:我们的前提条件就是 M = m M=m M=m,即明文已知

设:
δ c = def P r [ E n c K ( m ) = c ] = P r [ C = c ∣ M = m ] = P r [ E n c K ( m ′ ) = c ] = P r [ C = c ∣ M = m ′ ] \begin{aligned} \delta_c &\overset{\text{def}}=\mathrm{Pr}[\mathrm{Enc}_K(m)=c]=\mathrm{Pr}[C=c\mid M=m]\\ &=\mathrm{Pr}[\mathrm{Enc}_K(m')=c]=\mathrm{Pr}[C=c\mid M=m'] \end{aligned} δc​​=defPr[EncK​(m)=c]=Pr[C=c∣M=m]=Pr[EncK​(m′)=c]=Pr[C=c∣M=m′]​
则:
P r [ M = m ∣ C = c ] = P r [ C = c ∣ M = m ] ⋅ P r [ M = m ] P r [ C = c ] = P r [ C = c ∣ M = m ] ⋅ P r [ M = m ] ∑ m ′ ∈ M P r [ C = c ∣ M = m ′ ] ⋅ P r [ M = m ′ ] = δ c ⋅ P r [ M = m ] ∑ m ′ ∈ M δ c ⋅ P r [ M = m ′ ] = P r [ M = m ] ∑ m ′ ∈ M P r [ M = m ′ ]   =   P r [ M = m ] ′ ′ \begin{aligned} \mathrm{Pr}[M=m\mid C=c] &=\frac{\mathrm{Pr}[C=c\mid M=m]\cdot \mathrm{Pr}[M=m]}{\mathrm{Pr}[C=c]}\\ &=\frac{\mathrm{Pr}[C=c\mid M=m]\cdot \mathrm{Pr}[M=m]}{\sum_{m'\in\mathcal{M}}\mathrm{Pr}[C=c\mid M=m']\cdot \mathrm{Pr}[M=m']}\\ &=\frac{\delta_c\cdot\mathrm{Pr}[M=m]}{\sum_{m'\in\mathcal{M}}\delta_c\cdot\mathrm{Pr}[M=m']}\\ &=\frac{\mathrm{Pr}[M=m]}{\sum_{m'\in\mathcal{M}}\mathrm{Pr}[M=m']}\ =\ \mathrm{Pr}[M=m] \end{aligned}'' Pr[M=m∣C=c]​=Pr[C=c]Pr[C=c∣M=m]⋅Pr[M=m]​=∑m′∈M​Pr[C=c∣M=m′]⋅Pr[M=m′]Pr[C=c∣M=m]⋅Pr[M=m]​=∑m′∈M​δc​⋅Pr[M=m′]δc​⋅Pr[M=m]​=∑m′∈M​Pr[M=m′]Pr[M=m]​ = Pr[M=m]​′′

2.2.3 Perfect (adversarial) indistinguishability

前者从理论出发,后者从实验实践角度出发

1. The adversarial indistinguishability experiment P r i v K A , Π e a v \mathrm{PrivK}^\mathrm{eav}_{\mathcal{A},\Pi} PrivKA,Πeav​

Π = ( G e n , E n c , D e c ) \Pi=(\mathrm{Gen,Enc,Dec}) Π=(Gen,Enc,Dec)是带有消息空间 M \mathcal{M} M的加密方案, A \mathcal{A} A是敌人(形式上只是一个(有状态的)算法),eav我盲猜是eavesdrop

  1. A \mathcal{A} A输出一对消息$m_0,m_1\in $ M \mathcal{M} M

  2. G e n \mathrm{Gen} Gen生成一个密钥 k k k,再选择一个统一均匀的比特 b ∈ { 0 , 1 } b\in\left\{0,1\right\} b∈{0,1}。计算密文 c ← E n c k ( m b ) c\leftarrow\mathrm{Enc}_k(m_b) c←Enck​(mb​)并交给 A \mathcal{A} A。将 c c c称为挑战密文(challenge ciphertext)。

  3. A \mathcal{A} A输出一个比特 b ′ b' b′

  4. ① b ′ = b , o u t p u t = 1 ①b'=b,output=1 ①b′=b,output=1;

    ② b ′ ≠ b , o u t p u t = 0 b'\neq b,output=0 b′​=b,output=0;

    ③ o u t p u t = 1 , P r i v K A , Π e a v = 1 ③output=1,\mathrm{PrivK}^\mathrm{eav}_{\mathcal{A},\Pi}=1 ③output=1,PrivKA,Πeav​=1,即 A \mathcal{A} A攻击成功

    是 Π \Pi Π不是 ∏ \prod ∏

2. 定义2

当 Π \Pi Π对所有攻击者 A \mathcal{A} A,都能保证满足下式,则称该方案是完美不可区分(perfectly indistinguishable
P r i v K A , Π e a v = 1 2 (2.3) \mathrm{PrivK}^\mathrm{eav}_{\mathcal{A},\Pi}=\frac{1}{2} \tag{2.3} PrivKA,Πeav​=21​(2.3)

一个只会选一边的*都能猜对一半,而我们目的就是把所有人尽量变成*

3. 引理2

当且仅当加密方案 Π \Pi Π是完美不可区分时,该方案是完美保密的

4. 证明Vigenère不是完美不可区分

  1. 前提:假设消息空间是两个字符的字符串,密钥长度在 { 1 , 2 } \left\{1,2\right\} {1,2}中均匀等概选择

  2. A \mathcal{A} A执行以下操作

    • 输出明文 m 0 = a a , m 1 = a b m_0=aa,m_1=ab m0​=aa,m1​=ab

    • 得到挑战明文 c = c 1 c 2 c=c_1c_2 c=c1​c2​, c 1 = c 2 c_1=c_2 c1​=c2​时,输出0; c 1 ≠ c 2 c_1\neq c_2 c1​​=c2​时,输出1

      这儿的 c 1 c_1 c1​和 c 2 c_2 c2​表示单个字符

      这儿的输出是 A \mathcal{A} A的输出,不是实验的输出

  3. 攻击成功率的通用算法
    P r [ P r i v K A , Π e a v = 1 ] = 1 2 ⋅ P r [ P r i v K A , Π e a v = 1 ∣ b = 0 ] + 1 2 ⋅ P r [ P r i v K A , Π e a v = 1 ∣ b = 1 ] = 1 2 ⋅ P r [ A   o u t p u t s   0 ∣ b = 0 ] + 1 2 ⋅ P r [ A   o u t p u t s   1 ∣ b = 1 ] (2.4) \begin{aligned} &\mathrm{Pr}[\mathrm{PrivK}^\mathrm{eav}_{\mathcal{A},\Pi}=1]\\ &=\frac{1}{2}\cdot\mathrm{Pr}[\mathrm{PrivK}^\mathrm{eav}_{\mathcal{A},\Pi}=1\mid b=0]+\frac{1}{2}\cdot\mathrm{Pr}[\mathrm{PrivK}^\mathrm{eav}_{\mathcal{A},\Pi}=1\mid b=1]\\ &=\frac{1}{2}\cdot\mathrm{Pr}[\mathcal{A}\ \mathrm{outputs\ 0}\mid b=0]+\frac{1}{2}\cdot\mathrm{Pr}[\mathcal{A}\ \mathrm{outputs\ 1}\mid b=1] \end{aligned} \tag{2.4} ​Pr[PrivKA,Πeav​=1]=21​⋅Pr[PrivKA,Πeav​=1∣b=0]+21​⋅Pr[PrivKA,Πeav​=1∣b=1]=21​⋅Pr[A outputs 0∣b=0]+21​⋅Pr[A outputs 1∣b=1]​(2.4)

  4. 对于该例子本身

    • P r [ A   o u t p u t s   0 ∣ b = 0 ] = 1 2 + 1 2 ⋅ 1 26 ≈ 0.52 \mathrm{Pr}[\mathcal{A}\ \mathrm{outputs\ 0}\mid b=0]=\frac{1}{2}+\frac{1}{2}\cdot\frac{1}{26}\approx 0.52 Pr[A outputs 0∣b=0]=21​+21​⋅261​≈0.52

      ①密钥长度为1

      ②密钥长度为2,且密钥两个字符相同

    • P r [ A   o u t p u t s   1 ∣ b = 1 ] = 1 − P r [ A   o u t p u t s   0 ∣ b = 1 ] = 1 − 1 2 ⋅ 1 26 ≈ 0.98 \mathrm{Pr}[\mathcal{A}\ \mathrm{outputs\ 1}\mid b=1]=1-\mathrm{Pr}[\mathcal{A}\ \mathrm{outputs\ 0}\mid b=1]=1-\frac{1}{2}\cdot\frac{1}{26}\approx 0.98 Pr[A outputs 1∣b=1]=1−Pr[A outputs 0∣b=1]=1−21​⋅261​≈0.98

      明文选 a b ab ab,密文两个字符还能相同,仅当密钥长度为2且密钥的后一个字符比前一个字符大1(例如: b a , c b , d c ba,cb,dc ba,cb,dc等)

    • P r [ P r i v K A , Π e a v = 1 ] = 1 2 ⋅ ( 1 2 + 1 2 ⋅ 1 26 + 1 − 1 2 ⋅ 1 26 ) = 0.75 > 1 2 \mathrm{Pr}[\mathrm{PrivK}^\mathrm{eav}_{\mathcal{A},\Pi}=1]=\frac{1}{2}\cdot\Big(\frac{1}{2}+\frac{1}{2}\cdot\frac{1}{26}+1-\frac{1}{2}\cdot\frac{1}{26}\Big)=0.75>\frac{1}{2} Pr[PrivKA,Πeav​=1]=21​⋅(21​+21​⋅261​+1−21​⋅261​)=0.75>21​

2.3 The One-Time Pad

这个“一次(one-time)”我的理解:1. 一次性;2. 每个明密文对和一个密钥字符对应,即每个密钥字符用一次

2.3.1 结构1

  • 确定整数 l > 0 \mathscr{l}>0 l>0, M , K , C = { 0 , 1 } l \mathcal{M,K,C}=\left\{0,1\right\}^{\mathscr{l}} M,K,C={0,1}l(长度为 l \mathscr{l} l的二进制字符串)

    例如 { 0 , 1 } 3 = { 000 , 001 , 010 , 011 , 100 , 101 , 110 , 111 } \left\{0,1\right\}^3=\left\{000,001,010,011,100,101,110,111\right\} {0,1}3={000,001,010,011,100,101,110,111}

  • G e n \mathrm{Gen} Gen:从 { 0 , 1 } l \left\{0,1\right\}^{\mathscr{l}} {0,1}l(共 2 l 2^{\mathscr{l}} 2l个比特串)中均匀地随机选择一个作为密钥,每个比特串被选择的概率均为 2 − l 2^{-\mathscr{l}} 2−l

  • E n c :   c : = k ⊕ m \mathrm{Enc}:\ c:=k\oplus m Enc: c:=k⊕m

  • D e c :   m : = k ⊕ c \mathrm{Dec}:\ m:=k\oplus c Dec: m:=k⊕c

" ⊕ \oplus ⊕’'表示逐位异或(exclusive-or(XOR)),与二进制加减法等价( 1 ⊕ 1 = 0 , 1 ⊕ 0 = 1 , 0 ⊕ 1 = 1 , 0 ⊕ 0 = 0 1\oplus1=0,1\oplus0=1,0\oplus1=1,0\oplus0=0 1⊕1=0,1⊕0=1,0⊕1=1,0⊕0=0)

即 D e c k ( E n c k ( m ) ) = k ⊕ k ⊕ m = m \mathrm{Dec}_k(\mathrm{Enc}_k(m))=k\oplus k\oplus m=m Deck​(Enck​(m))=k⊕k⊕m=m

2.3.2 定理1

1. 阐述

The one-time pad encryption scheme is perfectly secret.

2. 证明

  1. 首先计算对于任意 c ∈ C , m ′ ∈ M c\in\mathcal{C},m'\in\mathcal{M} c∈C,m′∈M

P r [ C = c ∣ M = m ′ ] = P r [ E n c K ( m ′ ) = c ] = P r [ m ′ ⊕ K = c ] = P r [ K = m ′ ⊕ c ] = 2 − l \begin{aligned} \mathrm{Pr}[C=c\mid M=m']=\mathrm{Pr}[\mathrm{Enc}_K(m')=c]&=\mathrm{Pr}[m'\oplus K=c]\\ &=\mathrm{Pr}[K=m'\oplus c]\\ &=2^{-\mathscr{l}} \end{aligned} Pr[C=c∣M=m′]=Pr[EncK​(m′)=c]​=Pr[m′⊕K=c]=Pr[K=m′⊕c]=2−l​

P r [ C = c ] = ∑ m ′ ∈ M P r [ C = c ∣ M = m ′ ] ⋅ P r [ M = m ′ ] = 2 − l ⋅ ∑ m ′ ∈ M P r [ M = m ′ ] = 2 − l P r [ M = m ′ ] ≠ 0 \begin{aligned} \mathrm{Pr}[C=c]&=\sum_{m'\in\mathcal{M}}\mathrm{Pr}[C=c\mid M=m']\cdot\mathrm{Pr}[M=m']\\ &=2^{-\mathscr{l}}\cdot\sum_{m'\in\mathcal{M}}\mathrm{Pr}[M=m']\\ &=2^{-\mathscr{l}}\qquad \qquad \qquad \quad \quad \mathrm{Pr}[M=m']\neq0 \end{aligned} Pr[C=c]​=m′∈M∑​Pr[C=c∣M=m′]⋅Pr[M=m′]=2−l⋅m′∈M∑​Pr[M=m′]=2−lPr[M=m′]​=0​

举个我理解的 P r [ M = m ′ ] = 0 \mathrm{Pr}[M=m']=0 Pr[M=m′]=0的例子: l = 3 , m ′ = 1010 \mathscr{l}=3,m'=1010 l=3,m′=1010

  1. P r [ M = m ∣ C = c ] = P r [ C = c ∣ M = m ] ⋅ P r [ M = m ] P r [ C = c ] = 2 − l ⋅ P r [ M = m ] 2 − l = P r [ M = m ] \begin{aligned} \mathrm{Pr}[M=m\mid C=c] &=\frac{\mathrm{Pr}[C=c\mid M=m]\cdot \mathrm{Pr}[M=m]}{\mathrm{Pr}[C=c]}\\ &=\frac{2^{-\mathscr{l}}\cdot \mathrm{Pr}[M=m]}{2^{-\mathscr{l}}}\\ &=\mathrm{Pr}[M=m] \end{aligned} Pr[M=m∣C=c]​=Pr[C=c]Pr[C=c∣M=m]⋅Pr[M=m]​=2−l2−l⋅Pr[M=m]​=Pr[M=m]​

3. 补充

  1. 上世纪中期很多国家机关用这个方案,冷战时苏联和美国通信时就用过(red phone),一堆特工带着一个放着密钥的黑箱子,物 理 转 移

    这个男人可能就干过这事儿

《Introduction To Modern Cryptography》读书笔记二

  1. 缺点1:消息长度与时效性之间的冲突

    消息一长,就很难预测长度(上限),密钥就难确定。确定一个新的密钥很浪费时间,传输也是个问题。

  2. 缺点2:只有使用第一次时才绝对安全,用了两次就会出现下面这种情况:
    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′

    该结果就是两条消息的不同之处,很有可能会泄露一些信息,至少绝对不算完美保密了。苏联当年就是因为这个在英国和美国面前裸奔了几十年(VENONA 计划)

有缺点不代表one-time pad无效!!

2.4 Limitations of Perfect Secrecy

2.4.1 定理2

1. 阐述

如果 Π \Pi Π是完美保密方案,则 ∣ K ∣ ≥ ∣ M ∣ \lvert\mathcal{K}|\geq|\mathcal{M}\rvert ∣K∣≥∣M∣

任何完全保密的加密方案都必须有一个密钥空间,这个密钥空间至少与消息空间一样大。

2. 证明

反证法,假设 ∣ K ∣ < ∣ M ∣ \lvert\mathcal{K}|<|\mathcal{M}\rvert ∣K∣<∣M∣

  1. 令 M ( c ) \mathcal{M}(c) M(c)为密文 c c c解密后所有可能明文消息的集合,即:

M ( c ) = def { m ∣ m = D e c k ( c )   f o r   s o m e   k ∈ K } \mathcal{M}(c)\overset{\text{def}}=\left\{m\mid m=\mathrm{Dec}_k(c)\ \mathrm{for\ some\ }k\in\mathcal{K}\right\} M(c)=def{m∣m=Deck​(c) for some k∈K}

  1. 很显然 ∣ M ( c ) ∣ ≤ ∣ K ∣ \vert\mathcal{M}(c)\vert\leq \lvert\mathcal{K}| ∣M(c)∣≤∣K∣(“=”时,所有密钥加密后的结果都一样),且 ∣ K ∣ < ∣ M ∣ \lvert\mathcal{K}|<|\mathcal{M}\rvert ∣K∣<∣M∣,所以肯定存在 m ′ m' m′,有 m ′ ∈ M m'\in\mathcal{M} m′∈M但 m ′ ∉ M m'\notin\mathcal{M} m′∈/​M,则有:

P r [ M = m ′ ∣ C = c ] = 0 ≠ P r [ M = m ′ ] \mathrm{Pr}[M=m'\mid C=c]=0\neq\mathrm{Pr}[M=m'] Pr[M=m′∣C=c]=0​=Pr[M=m′]

​ 所以不是完美保密

书上原话:Recall that we may assume D e c \mathrm{Dec} Dec is deterministic.

我认为这儿是再次强调解密的不二性

表明one-time pad的缺点并不是特定于该方案,而是完全保密的固有限制。(长度与次数都是)

3. 辟谣

上述证明过程已经显示出完美保密的固有局限性,因此以后出现任何宣称自己用短密钥实现完美保密的均按神经病处理(理解妄想成打破密码学的能量守恒定律)

4. 补充+个人想法

  1. 虽然one-time pad是完美保密,但两者并不是完全等价的

  2. 如果所有密钥的长度都相同,并且消息空间由长度固定的所有字符串组成,这意味着密钥至少与消息一样长。(one-time pad的密钥长度是最优解)

    第4点马上再次提到

  3. 老师提到密钥空间大一般只是说防止暴力攻击,没提到这是完美保密的条件之一

  4. 加密其实就是打乱明密文映射的一个过程(如下)

  • 根本目的是打乱这个“

《Introduction To Modern Cryptography》读书笔记二

  • 移位密码(m和c代表单个字母)

    《Introduction To Modern Cryptography》读书笔记二

    密钥长度为1(26进制),密钥空间大小为26

    注意区分“space”和“length”之间的区别,下同

    所以只有在加密一个字母(26进制)时,移位密码是完美保密的

  • 单表代换密码(m和c代表单个字母)

    《Introduction To Modern Cryptography》读书笔记二

    密钥空间为 26 ! ≈ 2 88 26!\approx2^{88} 26!≈288,理论上很安全,那为什么实际不安全呢?

    因为没做到 the probability distribution of the ciphertext does not depend on the plaintext(P29倒数第10行),即密文不uniform

    当然移位密码也没做到

    此处建议回忆一下对该两种密码的攻击方式

  • 至于多表代换密码(m和c代表单个字母)

    可能会出现下面这种情况

    《Introduction To Modern Cryptography》读书笔记二

    设密钥长度为 l K l_K lK​,则密钥空间大小为 2 6 l K 26^{l_K} 26lK​;明文长度为 l M l_M lM​,明文空间大小为 2 6 l M 26^{l_M} 26lM​

    所以 l K ≥ l M l_K\geq l_M lK​≥lM​时,Vigenère密码是完美保密的(结合上面第2点)

    我觉得为one-time pad申请专利的Vernam(弗纳姆)就是个白嫖Vigenère的坏蛋(个人偏见)

  • 那如果 ∣ K ∣ > ∣ M ∣ \lvert\mathcal{K}|>|\mathcal{M}\rvert ∣K∣>∣M∣呢?

    可能会发生这种情况(m和c代表明密文本身)

    《Introduction To Modern Cryptography》读书笔记二

    即两个密钥加密某个明文得到一摸一样的结果(殊途同归),攻击者是不是会多条破解密文的道路?(更直观的说:以前必须找到 k 1 k_1 k1​才行,现在找到 k 1 , k 2 k_1,k_2 k1​,k2​甚至 k 3 k_3 k3​中的一个就能成功破解)是不是变得不安全了?

    应该不是,举个例子

    1. 明文:000;密文:111;密钥111(长度为3),密钥空间是 { 0 , 1 } 3 \left\{0,1\right\}^3 {0,1}3,盲猜猜对的概率的 1 8 \frac{1}{8} 81​
    2. 现在把密钥空间扩展到4位,即 { 0 , 1 } 4 \left\{0,1\right\}^4 {0,1}4(仍是低位用于加密)
    3. 那密钥可能为1111,0111,盲猜猜中的概率为 2 16 = 1 8 \frac{2}{16}=\frac{1}{8} 162​=81​。可以看出被破解的概率并没有发生本质改变
    4. 直观解释:通往正确的路确实多了,但通往错误的路也多了。况且你也不知道错误的道路从哪里通往哪里,参考联系2.3.也并没有更安全,还造成了密钥空间浪费(花冤枉钱修了一堆没用的路)

综上,一个密钥对应着一种随机的明密文映射关系。如果密钥比消息少的话,肯定会有部分映射关系可以排除,即减少了错误路线的数量

而攻击者一可以减少工作量,二可以从排除的路线中推导出一些额外信息,这些信息可能足以攻破该系统

2.5 *Shannon’s Theorem

香农就是这位大兄弟(苹果我放的)

《Introduction To Modern Cryptography》读书笔记二

2.5.1 阐述

  1. 前提: ∣ M ∣ = ∣ K ∣ = ∣ C ∣ \vert\mathcal{M}\vert=\vert\mathcal{K}\vert=\vert\mathcal{C}\vert ∣M∣=∣K∣=∣C∣

    理解这个“=”:看做完美保密的“最优解”(至少做到了不浪费)

  2. 条件

    • 每个密钥 k ∈ K k\in\mathcal{K} k∈K由算法 G e n \mathrm{Gen} Gen以(相等的)概率 1 / ∣ K ∣ 1/\vert\mathcal{K}\vert 1/∣K∣选择
    • F o r   e v e r y   m ∈ M   a n d   c ∈ C , t h e r e   e x i s t s   a   u n i q u e   k e y   k ∈ K   s u c h   t h a t   E n c k ( m )   o u t p u t s   c . For\ every\ m\in\mathcal{M}\ and \ c\in\mathcal{C},there\ exists\ a\ unique\ key\ k\in K\ such\ that\ \mathrm{Enc}_k(m)\ outputs\ c. For every m∈M and c∈C,there exists a unique key k∈K such that Enck​(m) outputs c.

    一个密钥唯一对应着一种随机的明密文映射关系,也意味着任何密文都可能是加密任何可能明文的结果

    示例如下图:

    《Introduction To Modern Cryptography》读书笔记二《Introduction To Modern Cryptography》读书笔记二《Introduction To Modern Cryptography》读书笔记二《Introduction To Modern Cryptography》读书笔记二

    下面这个我原来举的例子(m和c代表明密文本身)是错的!!(至少对一次一密钥来说)

    因为不同的密钥却有一组一样的明密文映射关系:e.g.: m 1   − > c 4   ( k 2 , k n ) m_1\ ->c_4\ (k_2,k_n) m1​ −>c4​ (k2​,kn​)

    《Introduction To Modern Cryptography》读书笔记二《Introduction To Modern Cryptography》读书笔记二《Introduction To Modern Cryptography》读书笔记二《Introduction To Modern Cryptography》读书笔记二
    3. 结论 在该前提下,满足以上两个条件的加密方案是完美保密的

2.5.2 证明

假设 E n c \mathrm{Enc} Enc是一个确定性算法(可以证明这样不失一般性)

理所当然地没太理解

1. 充分性

满足条件1,2—> perfectly secret

P r [ C = c ∣ M = m ] = P r [ K = k ] = 1 / ∣ K ∣ f o r E n c k ( m ) = c \mathrm{Pr}[C=c\mid M=m]=\mathrm{Pr}[K=k]=1/\vert\mathcal{K}\vert\qquad for\quad\mathrm{Enc}_k(m)=c Pr[C=c∣M=m]=Pr[K=k]=1/∣K∣forEnck​(m)=c

条件2保证 k k k是唯一密钥,条件1保证最后一个等号成立

所以
P r [ C = c ] = ∑ m ∈ M P r [ E n c K ( m ) = c ] ⋅ P r [ M = m ] = 1 / ∣ K ∣ \mathrm{Pr}[C=c]=\sum_{m\in\mathcal{M}} \mathrm{Pr}[\mathrm{Enc}_K(m)=c]\cdot\mathrm{Pr}[M=m]=1/\vert\mathcal{K}\vert Pr[C=c]=m∈M∑​Pr[EncK​(m)=c]⋅Pr[M=m]=1/∣K∣

注意是大写 K K K(下同),所以 P r [ E n c K ( m ) = c ] = 1 / ∣ K ∣ \mathrm{Pr}[\mathrm{Enc}_K(m)=c]=1/\vert\mathcal{K}\vert Pr[EncK​(m)=c]=1/∣K∣

该式子对于呈任何分布的 M \mathcal{M} M都成立

对于任何 P r [ M = m ] ≠ 0 \mathrm{Pr}[M=m]\neq0 Pr[M=m]​=0
P r [ M = m ∣ C = c ] = P r [ C = c ∣ M = m ] ⋅ P r [ M = m ] P r [ C = c ] = P r [ E n c K ( m ) = c ] ⋅ P r [ M = m ] P r [ C = c ] = ∣ K ∣ − 1 ⋅ P r [ M = m ] ∣ K ∣ − 1 = P r [ M = m ] \begin{aligned} \mathrm{Pr}[M=m\mid C=c] &=\frac{\mathrm{Pr}[C=c\mid M=m]\cdot \mathrm{Pr}[M=m]}{\mathrm{Pr}[C=c]}\\ &=\frac{\mathrm{Pr}[\mathrm{Enc}_K(m)=c]\cdot \mathrm{Pr}[M=m]}{\mathrm{Pr}[C=c]}\\ &=\frac{\vert\mathcal{K}\vert^{-1}\cdot \mathrm{Pr}[M=m]}{\vert\mathcal{K}\vert^{-1}}=\mathrm{Pr}[M=m] \end{aligned} Pr[M=m∣C=c]​=Pr[C=c]Pr[C=c∣M=m]⋅Pr[M=m]​=Pr[C=c]Pr[EncK​(m)=c]⋅Pr[M=m]​=∣K∣−1∣K∣−1⋅Pr[M=m]​=Pr[M=m]​

注意理解 P r [ C = c ∣ M = m ] = P r [ E n c K ( m ) = c ] \mathrm{Pr}[C=c\mid M=m]=\mathrm{Pr}[\mathrm{Enc}_K(m)=c] Pr[C=c∣M=m]=Pr[EncK​(m)=c],这儿的 M = m M=m M=m可不是给定的条件,因为 m m m是任取的(arbitrary)

所以该方案是完美保密的

2. 必要性

perfectly secret—>条件1,2成立(在 ∣ M ∣ = ∣ K ∣ = ∣ C ∣ \vert\mathcal{M}\vert=\vert\mathcal{K}\vert=\vert\mathcal{C}\vert ∣M∣=∣K∣=∣C∣ 的前提下)

2.1 证明条件2
  1. 对于任意 c ∈ C c\in\mathcal{C} c∈C,一定存在信息 m ∗ ∈ M m^*\in M m∗∈M满足 P r [ E n c K ( m ∗ ) = c ] ≠ 0 \mathrm{Pr}[\mathrm{Enc}_K(m^*)=c]\neq0 Pr[EncK​(m∗)=c]​=0

  2. 引理1暗含着对于所有 m ∈ M m\in M m∈M, P r [ E n c K ( m ) = c ] ≠ 0 \mathrm{Pr}[\mathrm{Enc}_K(m)=c]\neq0 Pr[EncK​(m)=c]​=0。换言之,令 M = { m 1 , m 2 , . . . } \mathcal{M}=\left\{m_1,m_2,...\right\} M={m1​,m2​,...},则对于每个 m i ∈ M m_i\in\mathcal{M} mi​∈M,都有一个非空集 K i ⊂ K \mathcal{K}_i\subset\mathcal{K} Ki​⊂K,当且仅当 k ∈ K i k\in\mathcal{K}_i k∈Ki​时, E n c k ( m i ) = c \mathrm{Enc}_k(m_i)=c Enck​(mi​)=c

  3. 当 i ≠ j i\neq j i​=j时, K i \mathcal{K}_i Ki​和 K j \mathcal{K}_j Kj​是不相交的,否则正确性会不成立

    一旦相交,就会变成一个密钥解密一个密文,得到两个不同明文的结果,和 D e c \mathrm{Dec} Dec是确定性算法这一事实相悖

  4. 又因为 ∣ K ∣ = ∣ M ∣ \vert\mathcal{K}\vert=\vert\mathcal{M}\vert ∣K∣=∣M∣,所以每个 K i \mathcal{K}_i Ki​里面只有一个元素 k i k_i ki​,条件2证毕。

2.2 证明条件1

根据引理1,易知:对于任意 m i , m j ∈ M m_i,m_j\in\mathcal{M} mi​,mj​∈M,可得
P r [ K = k i ] = P r [ E n c K ( m i ) = c ] = P r [ E n c K ( m j ) = c ] = P r [ K = k j ] \mathrm{Pr}[K=k_i]=\mathrm{Pr}[\mathrm{Enc}_K(m_i)=c]=\mathrm{Pr}[\mathrm{Enc}_K(m_j)=c]=\mathrm{Pr}[K=k_j] Pr[K=ki​]=Pr[EncK​(mi​)=c]=Pr[EncK​(mj​)=c]=Pr[K=kj​]
又因为 1 ≤ i , j ≤ ∣ M ∣ = ∣ K ∣ 1\leq i,j\leq\vert\mathcal{M}\vert=\vert\mathcal{K}\vert 1≤i,j≤∣M∣=∣K∣,且当 i ≠ j i\neq j i​=j时, k i ≠ k j k_i\neq k_j ki​​=kj​,这意味着每个密钥出现概率相同,即均为 1 / ∣ K ∣ 1/\vert\mathcal{K}\vert 1/∣K∣。条件1证毕。

2.5.3 补充

  1. 香农定理对于判断一个给定的系统是不是完美保密是很有帮助的

    • 条件1很容易检查

    • 条件2无需计算任何概率就可以被证明(或反驳)(与直接使用定义1相反)。

      所以我们设计方案的工作本质上就是尽可能让方案uniform来满足这两个条件?

  2. 该定理只适用于 ∣ M ∣ = ∣ K ∣ = ∣ C ∣ \vert\mathcal{M}\vert=\vert\mathcal{K}\vert=\vert\mathcal{C}\vert ∣M∣=∣K∣=∣C∣

    毕竟是大前提

2.6 英语积累

appendix	附录
justify		证明合法,是...的正当理由
unbiased	无偏置的,无偏见的,公正的
entropy		熵
sophisticated	见多识广的,老练的,复杂巧妙的
chip	芯片
dedicated	专用的
specification	详述
notation	符号
conditional probability	条件概率
prominent	卓越的,显著的,突出的
courier		送快递的人,情报员
notwithstanding	尽管如此
portion		部分;加大份量
inherent	固有的
optimal		最佳的
radically	根本地,彻底地
blatantly	公然地
in its own right	凭借自身能力,独立地
undetectably	不可检测地
random tape	Tape is a basic concept from Turing machines.The random tape is the tape with random bits on it.

概率图灵机

《Introduction To Modern Cryptography》读书笔记二

我认为把random tape理解成一串真随机比特就行了

2.7 课后练习(有时间再往完做吧…)

  1. 方法一:设 M , K , C = { 0 , 1 } 3 , c = 000 \mathcal{M,K,C}=\left\{0,1\right\}^3,c=000 M,K,C={0,1}3,c=000,则
    P r [ C = 000 ∣ M = 111 ] = ( P r [ E n c k = 000 ( 111 ) = 000 ] + P r [ E n c k = 001 ( 111 ) = 000 ] + P r [ E n c k = 010 ( 111 ) = 000 ] + P r [ E n c k = 011 ( 111 ) = 000 ] + P r [ E n c k = 100 ( 111 ) = 000 ] + P r [ E n c k = 101 ( 111 ) = 000 ] + P r [ E n c k = 110 ( 111 ) = 000 ] + P r [ E n c k = 111 ( 111 ) = 000 ] ) / ∣ K ∣ = 1 8 \begin{aligned} \mathrm{Pr}[C=000\mid M=111]=( &\mathrm{Pr}[\mathrm{Enc}_{k=000}(111)=000]+\mathrm{Pr}[\mathrm{Enc}_{k=001}(111)=000]+\\ &\mathrm{Pr}[\mathrm{Enc}_{k=010}(111)=000]+\mathrm{Pr}[\mathrm{Enc}_{k=011}(111)=000]+\\ &\mathrm{Pr}[\mathrm{Enc}_{k=100}(111)=000]+\mathrm{Pr}[\mathrm{Enc}_{k=101}(111)=000]+\\ &\mathrm{Pr}[\mathrm{Enc}_{k=110}(111)=000]+\mathrm{Pr}[\mathrm{Enc}_{k=111}(111)=000])/\vert\mathcal{K}\vert\\ =\frac{1}{8} \end{aligned} Pr[C=000∣M=111]=(=81​​Pr[Enck=000​(111)=000]+Pr[Enck=001​(111)=000]+Pr[Enck=010​(111)=000]+Pr[Enck=011​(111)=000]+Pr[Enck=100​(111)=000]+Pr[Enck=101​(111)=000]+Pr[Enck=110​(111)=000]+Pr[Enck=111​(111)=000])/∣K∣​
    同理,任取 m ∈ M , m ∈ M , P r [ C = c ∣ M = m ] = 1 8 m\in\mathcal{M},m\in\mathcal{M},\mathrm{Pr}[C=c\mid M=m]=\frac{1}{8} m∈M,m∈M,Pr[C=c∣M=m]=81​

    同理,令 M , K , C = { 0 , 1 } l , P r [ C = c ∣ M = m ] = 1 2 l \mathcal{M,K,C}=\left\{0,1\right\}^{\mathscr{l}},\mathrm{Pr}[C=c\mid M=m]=\frac{1}{2^{\mathscr{l}}} M,K,C={0,1}l,Pr[C=c∣M=m]=2l1​

    方法二:假设 ∣ M ∣ = ∣ K ∣ = ∣ C ∣ \vert\mathcal{M}\vert=\vert\mathcal{K}\vert=\vert\mathcal{C}\vert ∣M∣=∣K∣=∣C∣,令 K = { k 1 , k 2 , . . . k ∣ K ∣ } \mathcal{K}=\left\{k_1,k_2,...k_{\vert\mathcal{K}\vert}\right\} K={k1​,k2​,...k∣K∣​},设 E n c k i ( m ) = c i , i ∈ ( 1 , ∣ K ∣ ) , m ∈ M \mathrm{Enc}_{k_i}(m)=c_i,i\in(1,\vert\mathcal{K}\vert),m\in\mathcal{M} Encki​​(m)=ci​,i∈(1,∣K∣),m∈M
    P r [ C = c ∣ M = m ] = P r [ E n c K ( m ) = c ] = ∑ k i ∈ K P r [ E n c k i ( m ) = c ] ∣ K ∣ = ∑ k i ∈ K ∑ j = 1 ∣ K ∣ P r [ E n c k i ( m ) = c j ] ∣ K ∣ ⋅ ∣ K ∣ = ∑ k i ∈ K P r [ E n c k i ( m ) = c i ] ∣ K ∣ ⋅ ∣ K ∣      ( P r [ E n c k i ( m ) = c j ] = 0   f o r   j ≠ i ) = ∣ K ∣ ∣ K ∣ ⋅ ∣ K ∣ = 1 ∣ K ∣ \begin{aligned} \mathrm{Pr}[C=c\mid M=m] &=\mathrm{Pr}[\mathrm{Enc}_K(m)=c]\\ &=\sum_{k_i\in\mathcal{K}}\frac{\mathrm{Pr}[\mathrm{Enc}_{k_i}(m)=c]}{\vert\mathcal{K}\vert}\\ &=\sum_{k_i\in\mathcal{K}}\frac{\sum_{j=1}^{\vert\mathcal{K}\vert}\mathrm{Pr}[\mathrm{Enc}_{k_i}(m)=c_j]}{\vert\mathcal{K}\vert\cdot\vert\mathcal{K}\vert}\\ &=\sum_{k_i\in\mathcal{K}}\frac{\mathrm{Pr}[\mathrm{Enc}_{k_i}(m)=c_i]}{\vert\mathcal{K}\vert\cdot\vert\mathcal{K}\vert}\qquad\ \ \ \ (\mathrm{Pr}[\mathrm{Enc}_{k_i}(m)=c_j]=0\ for\ j\neq i)\\ &=\frac{\vert\mathcal{K}\vert}{\vert\mathcal{K}\vert\cdot\vert\mathcal{K}\vert}=\frac{1}{\vert\mathcal{K}\vert} \end{aligned} Pr[C=c∣M=m]​=Pr[EncK​(m)=c]=ki​∈K∑​∣K∣Pr[Encki​​(m)=c]​=ki​∈K∑​∣K∣⋅∣K∣∑j=1∣K∣​Pr[Encki​​(m)=cj​]​=ki​∈K∑​∣K∣⋅∣K∣Pr[Encki​​(m)=ci​]​    (Pr[Encki​​(m)=cj​]=0 for j​=i)=∣K∣⋅∣K∣∣K∣​=∣K∣1​​

    由此可见 G e n \mathrm{Gen} Gen算法从密钥空间均匀随机地选取不同密钥并不改变 P r [ C = c ∣ M = m ] \mathrm{Pr}[C=c\mid M=m] Pr[C=c∣M=m]的值

  2. TODO(我连Enc确定是什么意思都没理解)

  3. 设明文是1比特,密文是2比特,密钥是3比特,且满足下列算法
    c 0 = m 0 ⊕ k 0 c 1 = ( k 2 ∧ k 1 ) ⊕ m 0 ⊕ k 0 c_0=m_0\oplus k_0\\ c_1=(k_2\wedge k_1)\oplus m_0\oplus k_0 c0​=m0​⊕k0​c1​=(k2​∧k1​)⊕m0​⊕k0​
    如下图表格

    0 1
    (0,0,0) (0,0) (1,1)
    (0,0,1) (0,0) (1,1)
    (0,1,0) (0,0) (1,1)
    (0,1,1) (0,1) (1,0)
    (1,0,0) (1,1) (0,0)
    (1,0,1) (1,1) (0,0)
    (1,1,0) (1,1) (0,0)
    (1,1,1) (1,0) (0,1)
    \begin{table}
    	\begin{tabular}{r|c|c}
           & $0$ & $1$ \\
          \hline
          $(0,0,0)$ & $(0,0)$ & $(1,1)$ \\
          $(0,0,1)$ & $(0,0)$ & $(1,1)$ \\
          $(0,1,0)$ & $(0,0)$ & $(1,1)$ \\
          $(0,1,1)$ & $(0,1)$ & $(1,0)$ \\
          $(1,0,0)$ & $(1,1)$ & $(0,0)$ \\
          $(1,0,1)$ & $(1,1)$ & $(0,0)$ \\
          $(1,1,0)$ & $(1,1)$ & $(0,0)$ \\
          $(1,1,1)$ & $(1,0)$ & $(0,1)$
        \end{tabular}
    \end{table}
    
    实名举报Typora(暂时)画不了LaTeX表格
    

    P [ M = 0 ∣ C = ( 0 , 0 ) ] = P [ M = 0 ] ⋅ ( P [ K = ( 0 , 0 , 0 ) + P [ K = ( 0 , 0 , 1 ) + P [ K = ( 0 , 1 , 0 ) ] ) P [ C = ( 0 , 0 ) ] = P [ M = 0 ] ⋅ 3 8 6 16 = P [ M = 0 ] P [ M = 0 ∣ C = ( 0 , 1 ) ] = P [ M = 0 ] ⋅ P [ K = ( 0 , 1 , 1 ) P [ C = ( 0 , 1 ) ] = P [ M = 0 ] ⋅ 1 8 2 16 = P [ M = 0 ] . . . e t c . \begin{aligned} P[M=0\mid C=(0,0)]&=\frac{P[M=0]\cdot(P[K=(0,0,0)+P[K=(0,0,1)+P[K=(0,1,0)])}{P[C=(0,0)]}\\ &=\frac{P[M=0]\cdot\frac{3}{8}}{\frac{6}{16}}=P[M=0]\\ P[M=0\mid C=(0,1)]&=\frac{P[M=0]\cdot P[K=(0,1,1)}{P[C=(0,1)]}\\ &=\frac{P[M=0]\cdot\frac{1}{8}}{\frac{2}{16}}=P[M=0]\\ .\\.\\.\\ etc. \end{aligned} P[M=0∣C=(0,0)]P[M=0∣C=(0,1)]...etc.​=P[C=(0,0)]P[M=0]⋅(P[K=(0,0,0)+P[K=(0,0,1)+P[K=(0,1,0)])​=166​P[M=0]⋅83​​=P[M=0]=P[C=(0,1)]P[M=0]⋅P[K=(0,1,1)​=162​P[M=0]⋅81​​=P[M=0]​

    但是 3 8 = P [ C = ( 0 , 0 ) ] ≠ P [ C = ( 0 , 1 ) ] = 1 8 \frac{3}{8}=P[C=(0,0)]\neq P[C=(0,1)]=\frac{1}{8} 83​=P[C=(0,0)]​=P[C=(0,1)]=81​

    所以任取 c 0 , c 1 ∈ C c_0,c_1\in C c0​,c1​∈C,不能得到 P r [ C = c 0 ] = P r [ C = c 1 ] \mathrm{Pr}[C=c_0]=\mathrm{Pr}[C=c_1] Pr[C=c0​]=Pr[C=c1​]

  4. TODO

上一篇:IMP-00010: 不是有效的导出文件,头部验证失败。


下一篇:解决 Tomcat Server in Eclipse unable to start within 45 seconds 不能启动的问题