【现代密码学】笔记6--伪随机对象的理论构造《introduction to modern cryphtography》
- 写在最前面
- 6 伪随机对象的理论构造
写在最前面
主要在 哈工大密码学课程 张宇老师课件 的基础上学习记录笔记。
内容补充:骆婷老师的PPT
《introduction to modern cryphtography》–Jonathan Katz, Yehuda Lindell(现代密码学——原理与协议)中相关章节
密码学复习笔记 这个博主好有意思
初步笔记,如有错误请指正
快速补充一些密码相关的背景知识
6 伪随机对象的理论构造
-
本节学习如何设计基于单向函数存在的假设从理论上构造PRG、PRF、PRP这三个伪随机对象。
-
目录:单向函数(One-Way Function),从OWF到PRP
-
概览
- 现代密码学的贡献之一是,单向函数的存在等价于所有(有意义的)私钥密码学的存在;
- 我们学习一系列密码学对象的构造过程:从OWF构造核心断言(HCP),构造RPG,构造PRF,构造PRP,构造安全私钥加密方案,而安全私钥加密方案就是一个OWF,从而形成一个闭环;
-
单向函数(One-Way Functions (OWF))
- 单向函数是一个正向易于计算(多项式时间),而逆向难以计算(无多项式时间);
- 下面的单向函数定义是由姚期智提出的;
- 求逆实验 I n v e r t A , f ( n ) \mathsf{Invert}_{\mathcal{A},f}(n) InvertA,f(n):
- 随机产生输入 x ← { 0 , 1 } n x \gets \{0,1\}^n x←{0,1}n. 计算 y : = f ( x ) y := f(x) y:=f(x). 注:挑战 y y y是由随机产生的 x x x得到的,而不是直接随机挑选一个 y y y;
- A \mathcal{A} A 以 1 n 1^n 1n 和 y y y (挑战)作为输入,并输出 x ′ x' x′.
- 实验成功 I n v e r t A , f ( n ) = 1 \mathsf{Invert}_{\mathcal{A},f}(n) = 1 InvertA,f(n)=1 ,如果 f ( x ′ ) = y f(x')=y f(x′)=y, 否则 0. 注:这里不需要 x ′ = x x'= x x′=x;
- OWF/OWP的定义 [Yao]
-
定义:多项式时间算法 M f M_f Mf 和 A \mathcal{A} A.
一个函数 f : { 0 , 1 } ∗ → { 0 , 1 } ∗ f\;:\; \{0,1\}^* \to \{0,1\}^* f:{0,1}∗→{0,1}∗ 是单向函数,如果满足:
易于计算: ∃ \exists ∃ M f M_f Mf: ∀ x , M f ( x ) = f ( x ) \forall x, M_f(x) = f(x) ∀x,Mf(x)=f(x). 注:这里说明计算不需要用原本的函数,只要结果相同就可以
难以求逆: ∀ \forall ∀ A \mathcal{A} A, ∃ n e g l \exists\;\mathsf{negl} ∃negl 使得, Pr [ I n v e r t A , f ( n ) = 1 ] ≤ n e g l ( n ) \Pr[\mathsf{Invert}_{\mathcal{A},f}(n)=1] \le \mathsf{negl}(n) Pr[InvertA,f(n)=1]≤negl(n) 或者 Pr x ← { 0 , 1 } n [ A ( f ( x ) ) ∈ f − 1 ( f ( x ) ) ] ≤ n e g l ( n ) . \Pr_{\substack{x \gets \{0,1\}^n}}[\mathcal{A}(f(x)) \in f^{-1}(f(x))] \le \mathsf{negl}(n). Prx←{0,1}n[A(f(x))∈f−1(f(x))]≤negl(n).
-
注:后半部分是难以求逆的另一种表达
- 若干候选的单向函数
- 乘法与分解(Multiplication and factoring): f m u l t ( x , y ) = ( x y , ∥ x ∥ , ∥ y ∥ ) f_{\mathsf{mult}}(x,y)=(xy,\|x\|,\|y\|) fmult(x,y)=(xy,∥x∥,∥y∥), x x x 和 y y y 是相同长度的质数;注:后面会学习RSA问题
- 模平方和平方根(Modular squaring and square roots): f s q u a r e ( x ) = x 2 m o d N f_{\mathsf{square}}(x)=x^2\bmod N fsquare(x)=x2modN;注:也被应用于公钥密码学
- 离散指数与对数(Discrete exponential and logarithm): f g , p ( x ) = g x m o d p f_{g,p}(x)=g^x\bmod p fg,p(x)=gxmodp;注:后面将学习DH密钥交换协议
- 子集和问题(Subset sum problem): f ( x 1 , … , x n , J ) = ( x 1 , … , x n , ∑ j ∈ J x j ) f(x_1,\dotsc,x_n,J)=(x_1,\dotsc,x_n,\sum_{j \in J} x_j) f(x1,…,xn,J)=(x1,…,xn,∑j∈Jxj);注:子集和问题判定是否存在一个子集中元素之和为给定的值
- 密码学安全哈希函数(Cryptographically secure hash functions):稍后会学习;
- 单向函数例题
- 单向函数的理由在于,如果 f ′ f' f′不是单向的,那么 f f f也不是;
- 不是单向函数的理由在于, f ′ f' f′可以容易求逆;
- 另外,要注意求逆实验是从随机挑选的 x x x得到 y y y,并不能直接指定 y y y;
- 核心断言 Hard-Core Predicates (HCP)
- 一个函数 h c : { 0 , 1 } ∗ → { 0 , 1 } \mathsf{hc}\; : \; \{0,1\}^* \to \{0,1\} hc:{0,1}∗→{0,1} 是一个函数 f f f的核心断言( hard-core predicate),如果
- (1) h c \mathsf{hc} hc 可在多项式时间计算;
- (2) ∀ \forall ∀ 概率多项式时间 A \mathcal{A} A, ∃ n e g l \exists\; \mathsf{negl} ∃negl 使得 Pr x ← { 0 , 1 } n [ A ( f ( x ) ) = h c ( x ) ] ≤ 1 2 + n e g l ( n ) . \Pr_{\substack{x \gets \{0,1\}^n}}[\mathcal{A}(f(x)) = \mathsf{hc}(x)] \le \frac{1}{2} + \mathsf{negl}(n). Prx←{0,1}n[A(f(x))=hc(x)]≤21+negl(n).
- 注:核心断言可以理解为根据函数的输出最难推断的关于输入的一个比特信息,任意敌手算法与随机猜测相比几乎没有差异。
- 对于任意OWF的HCP [Goldreich and Levin]
- 定理: f f f是一个OWF。那么,存在一个OWF g g g 并与 g g g 伴随着一个HCP g l gl gl。
- 问题: g l ( x ) = ⨁ i = 1 n x i \mathsf{gl}(x) = \bigoplus^{n}_{i=1} x_i gl(x)=⨁i=1nxi 是任意OWF的HCP吗? 答案是否定的,例如一个单向函数输出的最后一个比特就是输入按位异或的结果;
- 证明: g ( x , r ) = def ( f ( x ) , r ) g(x,r) \overset{\text{def}}{=} (f(x), r) g(x,r)=def(f(x),r), for ∣ x ∣ = ∣ r ∣ |x| = |r| ∣x∣=∣r∣, 并定义 g l ( x , r ) = def ⨁ i = 1 n x i ⋅ r i \mathsf{gl}(x,r) \overset{\text{def}}{=} \bigoplus^{n}_{i=1} x_i \cdot r_i gl(x,r)=def⨁i=1nxi⋅ri。 其中, r r r 是一个随机串。
- 说明: g l \mathsf{gl} gl就是从 x x x中随机选择若干比特异或结果作为核心断言。即便敌手根据输出推断出 x x x中若干比特的信息,但仍不能推断出(由 r r r来)随机挑选的任意若干比特信息(核心断言),否则意味着敌手可以求出整个 x x x。
- 从OWP到PRG:Blum-Micali Generator
- 定理: f f f 是一个OWP并且 h c \mathsf{hc} hc 是一个 f f f 的 HCP 。那么, G ( s ) = def ( f ( s ) , h c ( s ) ) G(s) \overset{\text{def}}{=} (f(s), \mathsf{hc}(s)) G(s)=def(f(s),hc(s)) 构造了一个 PRG 带有扩展因子 ℓ ( n ) = n + 1 \ell(n) = n+1 ℓ(n)=n+1,并且 ∀ \forall ∀ 多项式 p ( n ) > n p(n) > n p(n)>n, ∃ \exists ∃ 一个 PRG 带有扩展因子 ℓ ( n ) = p ( n ) \ell(n) = p(n) ℓ(n)=p(n)。
- 定理成立的理由有两点:
- 因为 f f f为排列(这很重要,不能是非排列的函数),那么当 s s s随机生成时, f ( s ) f(s) f(s)也是均匀随机的, G ( s ) G(s) G(s)的头部也就是随机的;
- 根据 f ( s ) f(s) f(s)难以推断核心断言 h c ( s ) \mathsf{hc}(s) hc(s),这正是伪随机生成器的伪随机性的判断依据:下一比特不可预测性。
- 从PRG到PRF [Goldreich, Goldwasser, Micali]
- 定理:如果存在一个PRG带有扩展因子 ℓ ( n ) = 2 n \ell(n) = 2n ℓ(n)=2n,那么存在一个PRF。
- F k ( x 1 x 2 ⋯ x n ) = G x n ( ⋯ ( G x 2 ( G x 1 ( k ) ) ) ⋯ ) , G ( s ) = ( G 0 ( s ) , G 1 ( s ) ) . F_k(x_1x_2\cdots x_n) = G_{x_n}(\cdots(G_{x_2}(G_{x_1}(k)))\cdots), G(s)=(G_0(s),G_1(s)). Fk(x1x2⋯xn)=Gxn(⋯(Gx2(Gx1(k)))⋯),G(s)=(G0(s),G1(s)).
- 以密钥 k k k为PRG的种子生成随机串,并将该随机串对半分为两个子串 G 0 ( s ) , G 1 ( s ) G_0(s),G_1(s) G0(s),G1(s);再以每个子串作为种子分别生成两个新的子串;由此,构造一个以密钥(种子)为根的二叉树,每个叶子节点对应伪随机函数的一个输出,从输入到输出的映射就是从根到叶子的一条分支,根据输入每个比特值来选择分叉:0为左,1为右;
- 例如, F k ( 011 ) = G 1 ( G 1 ( G 0 ( k ) ) ) F_k(011) = G_1(G_1(G_0(k))) Fk(011)=G1(G1(G0(k)));以 k k k为根,根据第一个比特选择左分支,接着选择右分支,右分支。
- PRF随机性来自于PRG的随机性。
- 从PRF到PRP [Lucy, Rackoff]
- Feistel网络可以将一个 n n n比特的PRF转变为一个 2 n 2n 2n比特的PRP,有以下定理
- 定理:一个3轮的Feistel网络可将一个PRF转变为一个PRP。
- 定理:一个4轮的Feistel网络可将一个PRP转变为一个strong PRP。
- 说明:
- 首先,Feistel网络本身特性是排列,因此证明上述定理成立的关键在于,证明伪随机性;伪随机性来自与每轮的mangler函数是PRF,其输出是一个独立的随机值。
- 对于为什么至少需要3轮?首先可以观察到如果只有1轮,则不是伪随机的,因为 R 0 R_0 R0被直接输出为 L 1 L_1 L1;如果只有2轮,也不是随机的,因为只改变 L 0 L_0 L0来翻转1个比特,那么 R 2 R_2 R2也只翻转1个比特。当3轮时,上述两个情况不会发生,并且输出结果 L 3 , R 3 L_3, R_3 L3,R3都是经过了PRF结果得到的。
- 必要的假设
- 前面的理论说明OWP的存在是安全加密方案的充分条件,同时我们还可以证明OWP的存在也是安全加密方案的必要条件。
- 定理:假设存在OWP,那么存在PRG,PRF,PRP和CCA安全私钥加密方案。
- 如何构造CCA安全的加密方案将在后面学习。
- 命题:如果存在窃听者不可区分私钥加密方案,那么存在一个OWF。
- 证明: f ( k , m , r ) = def ( E n c k ( m , r ) , m ) f(k,m,r) \overset{\text{def}}{=} (\mathsf{Enc}_k(m,r),m) f(k,m,r)=def(Enck(m,r),m),其中 ∣ k ∣ = n , ∣ m ∣ = 2 n , ∣ r ∣ = ℓ ( n ) |k|=n, |m|=2n, |r|=\ell(n) ∣k∣=n,∣m∣=2n,∣r∣=ℓ(n)。
- 从破解加密方案问题 A ′ \mathcal{A}' A′规约到单向函数求逆问题 A \mathcal{A} A。规约的关键之一在于将挑战密文和一个明文 c ∥ m 0 c\|m_0 c∥m0 作为 A \mathcal{A} A求逆的输入。当求拟成功时, A ′ \mathcal{A}' A′输出0;否则,输出1。当 m 0 m_0 m0被加密,则破解加密方案意味着可求逆;当 m 1 m_1 m1被加密,则破解加密方案意味着没有成功求逆,概率为 1 − 1 / 2 n 1-1/2^n 1−1/2n。
- 总结
- OWF意味着安全私钥加密方案,安全私钥加密方案意味着OWF。