Introduction to modern cryptography 第二章阅读笔记


   本章大部分证明已略去,需要的读者请自行翻阅原书,或者可在评论区进行讨论。

随机数生成

  现代随机数生成算法共以下两步:

  • 得到一个高熵的数据池
  • 处理高熵数据用以生成比特流

  高熵数据池的构成需要不可预知的数据来源,如外部输入物理现象,前者可以是网络事件的延迟、后者可以是热放射周期。
  处理高熵数据以生成随机比特流的正式方式在以后讨论,此处仅简单介绍一种方法:假设数据池中有一不随机比特序列,其中 1 的出现概率为 p,0 出现的概率为 1 - p;此时我们选择当序列中出现 “01” 时输出 0、出现 “10” 时输出 1 (其余情况不输出),便可保证输出的比特序列是均匀的。
  注意,密码学中随机数生成器是有明确要求的,必须使用“为密码使用设计”的随机数生成器而不是通用随机数生成器,比如C语言中 stdlib.h 里的函数 rand( ) 并不满足密码学使用。

2.1 定义

  • M \mathcal{M} M:明文空间
  • K \mathcal{K} K:密钥空间。Gen 可能生成的所有密钥集合
  • C \mathcal{C} C:密文空间。Enc 可能生成的所有密文集合
  • Gen:密钥生成算法。根据某些分布生成密钥 k 的概率性算法
  • Enc:加密算法。输入 k ∈ K k \in \mathcal{K} kK m ∈ M m \in \mathcal{M} mM生成密文 c 的概率性算法,写作 c ← E n c k ( m ) c \leftarrow Enc_k(m) cEnck(m) (当为确定性算法时写作 c : = E n c k ( m ) c:= Enc_k(m) c:=Enck(m))
  • Dec:解密算法。输入 k ∈ K k \in \mathcal{K} kK c ∈ C c \in \mathcal{C} cC生成明文 m ∈ M m \in \mathcal{M} mM 的算法。满足 perfect correctness 的 Dec 可称为确定性解密算法,同时可记作 m ← E n c k ( c ) m \leftarrow Enc_k(c) mEnck(c)
  • perfect correctness:对于所有 k ∈ K k \in \mathcal{K} kK m ∈ M m \in \mathcal{M} mM 以及任何 Enc 生成的 c,可保证 D e c k ( c ) = m Dec_k(c) = m Deck(c)=m的概率为 1.
  • K K K: 表示 Gen 生成密钥取值的随机变量
  • M M M:表示被加密明文的随机变量,需要独立于 K K K
  • C C C:表示 Enc 输出密文的随机变量
  • P r [ K = k ] \mathrm{Pr}[K = k] Pr[K=k]:Gen 生成的密钥为 k 的概率
  • P r [ M = m ] \mathrm{Pr}[M = m] Pr[M=m]:明文取值于 m ∈ M m \in \mathcal{M} mM 的概率
  • P r [ C = c ] \mathrm{Pr}[C=c] Pr[C=c]:密文等于固定值 c 的概率

(1) Perfect Secrecy

  假定敌手知道 M M M 的概率分布,即敌手知道不同信息被发送的概率,同时敌手知道使用的加密方案,唯一不知道的是通信双方共享的密钥。敌手可窃听到通信双方的交流内容,即该攻击方式为仅密文攻击
  对于可实现完全保密(perfect secret)的密码方案,攻击者窃听到的密文需要对其识别明文没有任何帮助,即以被观察到的密文为条件,明文 m ∈ M m \in \mathcal{M} mM被发送的后验概率应该和 m 被发送的先验概率没有区别,即密文不会揭露明文的任何信息。

定义一(不可溯源) ----> DEFINITION 2.3

  对于明文空间 M \mathcal{M} M 的密码方案 (Gen, Enc, Dec),当对于 M M M 中所有的概率分布,每个明文 m ∈ M m \in \mathcal{M} mM 和每个满足 P r [ C = c ] > 0 \mathrm{Pr}[C=c] > 0 Pr[C=c]>0的密文 c ∈ C c \in \mathcal{C} cC,有:
P r [ M = m ∣ C = c ] = P r [ M = m ] \mathrm{Pr}[M = m | C = c] = \mathrm{Pr}[M = m] Pr[M=mC=c]=Pr[M=m]
  则可以说该密码方案是完全保密的,其中 c ∈ C c \in \mathcal{C} cC是为了保证条件概率基于零概率时间。

定义二(不可区分)

  此定义基于密文分布不依赖于明文,即对于任意两个明文 m , m ′ ∈ M m, m' \in \mathcal{M} m,mM, m 被加密时的密文分布要和 m’ 被加密的密文分布相同,公式表示如下:
P r [ E n c K ( m ) = c ] = P r [ E n c K ( m ′ ) = c ] \mathrm{Pr}[Enc_K(m) = c] = \mathrm{Pr}[Enc_K(m') = c] Pr[EncK(m)=c]=Pr[EncK(m)=c]
  其中概率是基于 K K K 的选择和 Enc 的随机性,同时以上概率都只基于加密方案,并不依赖于 M \mathcal{M} M的底层分布。以上情景表示密文中不包含明文相关的任意信息,即攻击者无法区分 m 和 m’ 的加密形式。

定理一 ----> LEMMA 2.5

  带有明文空间 M \mathcal{M} M 的加密方案 (Gen, Enc, Dec) 是完全保密的,当且仅当 M \mathcal{M} M 中的每个 m, m’ 和 C \mathcal{C} C 中的每个 c 都满足定义二中的公式。

(2) 完美不可区分性

  该部分为完全保密的另一等效概念。下面介绍敌对不可区分实验 P r i v K A , Π e v a \mathrm{PrivK}_{\mathcal{A}, \Pi }^{\mathrm{eva}} PrivKA,Πeva,其中 A \mathcal{A} A 表示敌对方, Π \Pi Π = (Gen, Enc, Dec) 表示明文空间为 M \mathcal{M} M 的密码方案:

  1. 敌手 A \mathcal{A} A 生成明文对 m 0 , m 1 ∈ M m_0,m_1 \in \mathcal{M} m0,m1M
  2. 使用Gen 生成密钥 k, 同时选定比特位 b ∈ { 0 , 1 } b \in \{0, 1\} b{0,1}。计算 c ← E n c k ( m b ) c \leftarrow Enc_k(m_b) cEnck(mb) 并将其发送至 A \mathcal{A} A,其中 c挑战密文
  3. A \mathcal{A} A 生成比特 b’
  4. 实验的输出被定义为:1,当 b’ = b; 反之为 0.当实验输出为1 时我们称 P r i v K A , Π e v a = 1 \mathrm{PrivK}_{\mathcal{A}, \Pi }^{\mathrm{eva}} = 1 PrivKA,Πeva=1 并称 A \mathcal{A} A 成功

定义一(不可溯源) ----> DEFINITION 2.6

  我们称明文空间 M \mathcal{M} M 的密码方案 Π \Pi Π = (Gen, Enc, Dec) 为完美不可区分的当且仅当对于每一个敌手 A \mathcal{A} A 都有
P r [ P r i v K A , Π e v a = 1 ] = 1 2 \mathrm{Pr}[\mathrm{PrivK}_{\mathcal{A}, \Pi }^{\mathrm{eva}} = 1] = \frac{1}{2} Pr[PrivKA,Πeva=1]=21

定理一 ----> LEMMA 2.7

  加密方案 Π \Pi Π完全保密的当且仅当其是完美不可区分的。

2.2 一次一密

  我们定义 a ⊕ b a \oplus b ab 表示两等长二进制串 a 和 b 的逐比特异或。在一次一密方案中,密钥是和明文等长的独立字串,密文只需明文和密钥逐比特异或便可得到。正式定义如下:

给定整数 l > 0 \mathscr{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 的二进制串)

  • Gen: 密钥生成算法根据均匀分布从密钥空间 K = { 0 , 1 } l \mathcal{K} = \{0, 1\}^l K={0,1}l选择一密钥
  • 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:=km
  • 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:=kc

  从正确性来看,对于每个密钥 k 和每段明文 m 都有 D e c k ( E n c k ( m ) ) = k ⊕ k ⊕ m = m Dec_k(Enc_k(m)) = k \oplus k \oplus m = m Deck(Enck(m))=kkm=m,即一次一密是有效的密码方案。

缺点

  • 密钥长度需要和明文一致
  • 密钥只能使用一次

2.3 完全保密的限制

  总的来说,完全保密要求密码方案的密钥空间至少和明文空间一样大。(另一限制是密钥只能使用一次)

2.4 香农的定理

  该定理首先密码方案 (Gen, Enc, Dec) 要求 ∣ M ∣ = ∣ K ∣ = ∣ C ∣ |\mathcal{M}| = |\mathcal{K}| = |\mathcal{C}| M=K=C,即三个空间大小一致,在此基础上当且仅当满足以下两点才可称该方案是完全保密的:

  1. 每个密钥 k ∈ K k \in \mathcal{K} kK 都是以 1 / ∣ K ∣ 1 / |\mathcal{K}| 1/∣K 的概率被 Gen 选中的
  2. 对于每个明文 m ∈ M m \in \mathcal{M} mM 和每个密文 c ∈ C c \in \mathcal{C} cC,存在唯一的密钥 k ∈ K k \in \mathcal{K} kK 使得 E n c k ( m ) \mathrm{Enc}_k(m) Enck(m) 的结果为 c
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值