安全性归约(构造 1)

文章目录

  • OWF
  • PRG
  • PRF
  • Hash

OWF

  1. I I I 是多项式可列举的指标集,若 f f f I I I 上的非全域(弱)单向函数,令
    g ( x ) : = f ( x ′ ) ,   g ′ ( x ) : = f ( x ′ ) ∥ x ′ ′ g(x):=f(x'),\, g'(x):= f(x')\|x'' g(x):=f(x),g(x):=f(x)x

    其中 x = x ′ ∥ x ′ ′ ∈ { 0 , 1 } ∗ x=x'\|x'' \in \{0,1\}^* x=xx{0,1},且 ∣ x ′ ∣ = max ⁡ { n ∈ I : n ≤ ∣ x ∣ } |x'|=\max\{n \in I:n \le |x|\} x=max{nI:nx}

    那么 g , g ′ g,g' g,g 都是全域(弱)单向函数。默认(弱)单向函数是全域的。

  2. f f f 是(弱)单向函数,某多项式 p ( ⋅ ) p(\cdot) p() 满足 ∣ f ( x ) ∣ ≤ p ( ∣ x ∣ ) |f(x)| \le p(|x|) f(x)p(x),令
    f ′ ( x ) : = f ( x ) ∥ 1 ∥ 0 p ( ∣ x ∣ ) − ∣ f ( x ) ∣ ∈ { 0 , 1 } p ( ∣ x ∣ ) + 1 f ′ ′ ( x ) : = f ′ ( x ′ ) ,   x = x ′ ∥ x ′ ′ ,   ∣ x ∣ = p ( ∣ x ′ ∣ ) + 1 \begin{aligned} f'(x) &:= f(x) \| 1 \| 0^{p(|x|)-|f(x)|} \in \{0,1\}^{p(|x|)+1} \\ f''(x) &:= f'(x'),\, x=x'\|x'',\,|x| = p(|x'|)+1 \end{aligned} f(x)f(x):=f(x)10p(x)f(x){0,1}p(x)+1:=f(x),x=xx,x=p(x)+1

    那么 f ′ f' f长度正则的(弱)单向函数, f ′ ′ f'' f保长的(弱)单向函数。默认(弱)单向函数是保长的。

  3. 存在不是单向函数的弱单向函数。设 f f f 是单向函数,令
    g ( x ) = { x ′ ∥ f ( x ′ ′ ) , x ′ = 0 log ⁡ 2 n x ′ ∥ x ′ ′ , x ′ ≠ 0 log ⁡ 2 n g(x) = \left\{ \begin{aligned} x'&\|f(x''), && x' = 0^{\log_2 n}\\ x'&\|x'', && x' \neq 0^{\log_2 n}\\ \end{aligned} \right. g(x)={xxf(x),x,x=0log2nx=0log2n

    其中 x = x ′ ∥ x ′ ′ x=x'\|x'' x=xx x ∈ { 0 , 1 } n x \in \{0,1\}^n x{0,1}n x ′ ∈ { 0 , 1 } log ⁡ 2 n x'\in \{0,1\}^{\log_2 n} x{0,1}log2n,那么最多只有占比 1 / n 1/n 1/n 的实例是难以求逆的。

    那么 g g g 不是单向函数,可以证明它是弱单向函数。

  4. 单向函数存在    ⟺    \iff 弱单向函数存在。设 f : { 0 , 1 } n → { 0 , 1 } n f:\{0,1\}^n \to \{0,1\}^n f:{0,1}n{0,1}n 是弱单向函数,存在多项式 t ( ⋅ ) t(\cdot) t(),使得
    g ( x 1 , ⋯   , x t ( n ) ) = ( f ( x 1 ) , ⋯   , f ( x t ( n ) ) ) g(x_1,\cdots,x_{t(n)}) = (f(x_1),\cdots,f(x_{t(n)})) g(x1,,xt(n))=(f(x1),,f(xt(n)))

    是单向函数。基本思路就是 lim ⁡ n → ∞ ( 1 − 1 / p ( n ) ) t ( n ) → n e g l ( n ) \underset{n \to \infty}{\lim} (1-1/p(n))^{t(n)} \to negl(n) nlim(11/p(n))t(n)negl(n),但归约时更复杂些;因为敌手的策略不一定会对各分量独立选取的输入的像做回应。

  5. 单向函数存在,那么存在 O ( n 2 ) O(n^2) O(n2) 时间内可计算的单向函数。任意常数 c > 2 c > 2 c>2,设 g g g 是可在 O ( n c ) O(n^c) O(nc) 时间内求解的 OWF,令
    f ( x ′ ∥ x ′ ′ ) = x ′ ∥ g ( x ′ ′ ) f(x'\|x'') = x'\|g(x'') f(xx)=xg(x)

    其中 ∣ x ′ ∣ = n c − n |x'| = n^c-n x=ncn ∣ x ′ ′ ∣ = n |x''|=n x=n,那么 ∣ x ∣ = n c |x|=n^c x=nc g ( x ) g(x) g(x) 可在 O ( ∣ x ′ ′ ∣ c ) = O ( ∣ x ∣ 2 ) O(|x''|^c) = O(|x|^2) O(xc)=O(x2) 内求解。

  6. 如果单向函数存在,那么 N P ≠ P NP \neq P NP=P。令 f f f 是单向函数,且 ∣ x ∣ ≤ p ( ∣ f ( x ) ∣ ) |x| \le p(|f(x)|) xp(f(x)),定义语言
    L f : = { ( y , x ′ ) : ∃ x ′ ′ , ∣ x ′ ∥ x ′ ′ ∣ ≤ p ( y ) , f ( x ′ ∥ x ′ ′ ) = y } L_f := \{(y,x'): \exist x'', |x'\|x''| \le p(y), f(x'\|x'')=y\} Lf:={(y,x):x,xxp(y),f(xx)=y}

    那么 L f ∈ N P L_f \in NP LfNP,可以证明 L f ∉ P L_f \not\in P LfP

  7. 如果 N P ≠ P NP \neq P NP=P,那么存在在某些实例上难以求逆的函数。存在 L ∈ N P − P L \in NP-P LNPP,令
    f ( x , w ) : = { 1 ∥ x , ( x , w ) ∈ R ( L ) 0 ∥ x , ( x , w ) ∉ R ( L ) f(x,w) := \left\{ \begin{aligned} 1&\|x, && (x,w) \in R(L)\\ 0&\|x, && (x,w) \notin R(L)\\ \end{aligned} \right. f(x,w):={10x,x,(x,w)R(L)(x,w)/R(L)

    那么 f f f 是可有效计算的函数,且存在至少一点 ( x , w ) (x,w) (x,w) 难以求逆(最坏意义下的困难性,不一定是 OWF)。

    单向函数需要平均意义下的困难性,此时 f ( x , w ) f(x,w) f(x,w) 就是弱单向函数了。

  8. 存在原像的任意一比特都不是硬核谓词的单向函数。设 f : { 0 , 1 } n → { 0 , 1 } n f:\{0,1\}^n \to \{0,1\}^n f:{0,1}n{0,1}n 是单向函数,令
    g ( x ) = f ( x − j ′ ) ∥ x j ′ ∥ x ′ ′ g(x) = f(x'_{-j})\|x'_j\|x'' g(x)=f(xj)xjx

    其中 ∣ x ′ ∣ = n + 1 |x'|=n+1 x=n+1 ∣ x ′ ′ ∣ = log ⁡ 2 ( n + 1 ) |x''|=\log_2(n+1) x=log2(n+1),而 x j ′ x_j' xj 表示第 j j j 比特, x − j ′ x'_{-j} xj 表示去掉第 j j j 比特,这里 j = i n t ( x ′ ′ ) j=int(x'') j=int(x)

    那么, g g g 的定义域被划分为 n + 1 n+1 n+1 块,第 j j j 块的函数值泄露 x ′ x' x 的第 j j j 比特。任意确定性函数 b ( x ) b(x) b(x) 都不可能成为通用硬核谓词,但给定的一个单向函数可以有确定性硬核。

  9. Goldreich-Levin 定理存在有硬核的单向函数。设 f f f 是单向函数,构造另一个单向函数
    g ( x , r ) = f ( x ) ∥ r g(x,r) = f(x)\|r g(x,r)=f(x)r

    其中 ∣ x ∣ = ∣ r ∣ |x|=|r| x=r,那么 b ( x , r ) = < x , r > ( m o d 2 ) b(x,r) = \pmod 2 b(x,r)=<x,r>(mod2) g g g 的硬核谓词。这里的 b ( x , r ) b(x,r) b(x,r)通用硬核

    归约证明时,将求逆 f ( x ) f(x) f(x) 的算法 B B B 归约到求解 b ( x , r ) b(x,r) b(x,r) 的算法 A A A 上,

    • P r [ A = 1 ] = 1 Pr[A=1]=1 Pr[A=1]=1 时, B B B 可直接调用用 n n n A A A 计算 b ( x , e i ) b(x,e_i) b(x,ei),从而恢复出各个分量 x i x_i xi
    • P r [ A = 1 ] ≥ 1 − n e g l ( n ) Pr[A=1] \ge 1-negl(n) Pr[A=1]1negl(n) 时, B B B 可直接用 n n n 次随机化的 b ( x , r ) ⊕ b ( x , e i ⊕ r ) b(x,r) \oplus b(x,e_i \oplus r) b(x,r)b(x,eir) 恢复出各个分量 x i x_i xi
    • P r [ A = 1 ] ≥ 3 / 4 + 1 / p ( n ) Pr[A=1] \ge 3/4+1/p(n) Pr[A=1]3/4+1/p(n) 时, B B B 可统计 t t t 次随机化的 b ( x , r ) ⊕ b ( x , e i ⊕ r ) b(x,r) \oplus b(x,e_i \oplus r) b(x,r)b(x,eir),用 major 恢复出各个分量 x i x_i xi
    • P r [ A = 1 ] ≥ 1 / 2 + c ,   c < 1 / 4 Pr[A=1] \ge 1/2+c,\, c<1/4 Pr[A=1]1/2+c,c<1/4 时, B B B 可先猜测 t t t σ = b ( x , r ) \sigma=b(x,r) σ=b(x,r),统计 t t t 次随机化的 σ ⊕ b ( x , e i ⊕ r ) \sigma \oplus b(x,e_i \oplus r) σb(x,eir),用 major 恢复出各个分量 x i x_i xi
    • P r [ A = 1 ] ≥ 1 / 2 + 1 / p ( n ) Pr[A=1] \ge 1/2+1/p(n) Pr[A=1]1/2+1/p(n) 时, B B B 可先随机选取 l l l s s s,猜测它们的 σ = b ( x , s ) \sigma=b(x,s) σ=b(x,s),然后构造出两两独立的 t t t ( r , τ = b ( x , r ) ) (r,\tau = b(x,r)) (r,τ=b(x,r)),统计 t t t 次随机化的 τ ⊕ b ( x , e i ⊕ r ) \tau \oplus b(x,e_i \oplus r) τb(x,eir),用 major 恢复出各个分量 x i x_i xi
  10. 素因子分解假设下, { f m u l t ( x , y ) = x y } \{f_{mult}(x,y)=xy\} {fmult(x,y)=xy} 是弱单向函数簇,其中难以求逆的实例占比至少为 1 / 4 n 2 1/4n^2 1/4n2

  11. 离散对数假设下, { f i ( x ) = g x } \{f_i(x)=g^x\} {fi(x)=gx} 是单向函数簇。

  12. RSA 假设下, { f N , e ( x ) = x e ( m o d N ) } \{f_{N,e}(x)=x^e \pmod N\} {fN,e(x)=xe(modN)} 是单向函数簇。

PRG

  1. 如果 l ( n ) = n + 1 l(n)=n+1 l(n)=n+1 的 PRG 存在,那么任意多项式 l ( n ) = p ( n ) l(n)=p(n) l(n)=p(n) 的 PRG 也存在。设 G 0 G_0 G0 l ( n ) = n + 1 l(n)=n+1 l(n)=n+1 的 PRG,构造
    σ i ∥ s i = G 0 ( s i − 1 ) ,   ∣ s i ∣ = ∣ s i − 1 ∣ = n \sigma_i \| s_i = G_0(s_{i-1}),\, |s_i|=|s_{i-1}|=n σisi=G0(si1),si=si1=n

    那么 G p ( s 0 ) = σ 1 ⋯ σ p ( n ) G_p(s_0) = \sigma_1 \cdots \sigma_{p(n)} Gp(s0)=σ1σp(n) 也是 PRG。归约过程中使用混合技术。

  2. 如果 OWP 存在,那么 PRG 存在。令 f f f 是 OWP, b b b 是硬核,那么
    G 1 ( s ) = b ( s ) ∥ f ( s ) G_1(s) = b(s)\|f(s) G1(s)=b(s)f(s)

    是扩张因子 l ( n ) = n + 1 l(n)=n+1 l(n)=n+1 的 PRG。归约过程很简单。

    然后构造
    σ i = b ( s i − 1 ) ,   s i = f ( s i − 1 ) \sigma_i = b(s_{i-1}),\, s_i = f(s_{i-1}) σi=b(si1),si=f(si1)

    那么 G p ( s 0 ) = σ 1 ⋯ σ p ( n ) G_p(s_0) = \sigma_1 \cdots \sigma_{p(n)} Gp(s0)=σ1σp(n) 就是 l ( n ) = p ( n ) l(n)=p(n) l(n)=p(n) 的 PRG。归约过程中采用逆序, D ′ D' D 为了计算 y = f ( x ) y=f(x) y=f(x) 的原像的硬核 b ( x ) b(x) b(x),猜测 D D D 的预测位置 i i i,设置 s i − 1 = y s_{i-1}=y si1=y,然后 s i − j = f ( s i − j + 1 ) = f j − 1 ( y ) = f j ( x ) s_{i-j}=f(s_{i-j+1})=f^{j-1}(y)=f^j(x) sij=f(sij+1)=fj1(y)=fj(x),直到 s 0 = f i ( x ) s_0=f^i(x) s0=fi(x);设置 s i , s i + 1 , ⋯ ← U n s_i,s_{i+1},\cdots \leftarrow U_n si,si+1,Un,以为 D D D 提供相同分布。

  3. PRG 存在    ⟺    \iff OWF 存在。设 G : { 0 , 1 } n → { 0 , 1 } 2 n G:\{0,1\}^n \to \{0,1\}^{2n} G:{0,1}n{0,1}2n 是伪随机生成器,令
    f ( x 0 , x 1 ) = G ( x 0 ) f(x_0,x_1) = G(x_0) f(x0,x1)=G(x0)

    那么 f f f 是单向函数。而从 OWF 构造出 PRG 很困难,需要先构造出 false-entropy-generator,然后构造出 pseudoentropy-generator,最后才构造出 PRG。

  4. Rabin 函数:二次剩余假设下, { f N ( x ) = x 2 m o d    p , x ∈ Z N ∗ } \{f_N(x)=x^2 \mod p,x \in \mathbb Z_N^*\} {fN(x)=x2modp,xZN} Q R N QR_N QRN 上单向置换,且 l s b ( x ) lsb(x) lsb(x) 是硬核。

PRF

  1. PRG 存在,那么 PRF 存在。设 G : { 0 , 1 } d → { 0 , 1 } 2 d G: \{0,1\}^d \to \{0,1\}^{2d} G:{0,1}d{0,1}2d 是 PRG,记做 G ( s ) = G 0 ( s ) ∥ G 1 ( s ) G(s)=G_0(s)\|G_1(s) G(s)=G0(s)G1(s),那么由 s s s 指定的函数 f s : { 0 , 1 } → { 0 , 1 } d f_s:\{0,1\} \to \{0,1\}^d fs:{0,1}{0,1}d
    f s ( x ) = G x ( s ) f_s(x) = G_x(s) fs(x)=Gx(s)

    是最简单的 PRF,可编码为长度为 2 d 2d 2d 的序列。

  2. GGM 方法:设 G : { 0 , 1 } d → { 0 , 1 } 2 d G: \{0,1\}^d \to \{0,1\}^{2d} G:{0,1}d{0,1}2d 是 PRG,记做 G ( s ) = G 0 ( s ) ∥ G 1 ( s ) G(s)=G_0(s)\|G_1(s) G(s)=G0(s)G1(s),那么由 s s s 指定的函数 f s : { 0 , 1 } l → { 0 , 1 } d f_s:\{0,1\}^l \to \{0,1\}^d fs:{0,1}l{0,1}d 构造如下
    s x 1 = G x 1 ( s ) ,   s x 1 ⋯ x i = G x i ( s x 1 ⋯ x i − 1 ) s_{x_1} = G_{x_1}(s),\, s_{x_1 \cdots x_{i}} = G_{x_i}(s_{x_1 \cdots x_{i-1}}) sx1=Gx1(s),sx1xi=Gxi(sx1xi1)

    那么 f s ( x ) = s x 1 ⋯ x l = s x f_s(x) = s_{x_1 \cdots x_l} = s_x fs(x)=sx1xl=sx 是 PRF,可编码为长度为 d ⋅ 2 l d \cdot 2^l d2l 的序列。归约过程使用混合技术。

  3. 复合定理:如果 G ′ G' G 是 PRG, F n F_n Fn 是 GGM 构造的 PRF,那么 G ′ ( F n ( ⋅ ) ) G'(F_n(\cdot)) G(Fn()) 是 PRF。归约时,先后证明 G ′ ∘ F n ≡ c G ′ ∘ R F n G' \circ F_n \overset{c}{\equiv} G' \circ RF_n GFncGRFn R F n ≡ c G ′ ∘ R F n RF_n \overset{c}{\equiv} G' \circ RF_n RFncGRFn,采用通用编码,使用混合技术。

  4. PRF 存在,那么 OWF 存在。设 f k f_k fk 是 PRF,那么 f ( k , x ) = x ∥ f k ( x ) f(k,x)=x\|f_k(x) f(k,x)=xfk(x) 就是 OWF。

    因此,PRF 存在    ⟺    \iff OWF 存在    ⟺    \iff PRG 存在。

  5. Naor-Reingold 的 PRF 构造:DDH 假设下, { G a ( b ) = ( g b , g a b ) } \{G_a(b)=(g^b,g^{ab})\} {Ga(b)=(gb,gab)} 具有 PRG 的性质(但 a a a 是保密的)。设置私钥 a = ( a 0 , a 1 , ⋯   , a l ) a=(a_0,a_1,\cdots,a_l) a=(a0,a1,,al),基于 GGM 方法和 { G a } \{G_a\} {Ga},得到
    F a ( x ) = g a 0 ∏ i = 1 l a i x i F_a(x) = g^{a_0 \prod_{i=1}^l a_i^{x_i}} Fa(x)=ga0i=1laixi

    那么 { F a } \{F_a\} {Fa} 是 PRF。

  6. NR 方法:设 S : { 0 , 1 } 2 n → { 0 , 1 } n S:\{0,1\}^{2n} \to \{0,1\}^{n} S:{0,1}2n{0,1}n 是伪随机合成器, f s 1 : { 0 , 1 } → { 0 , 1 } n    ⟺    s 0 ∥ s 1 ← R U 2 n f_s^1:\{0,1\} \to \{0,1\}^n \iff s_0\|s_1 \leftarrow_R U_{2n} fs1:{0,1}{0,1}ns0s1RU2n 是最简单的随机函数。令 k = 2 l k=2^l k=2l,那么由 s = s 0 ∥ s 1 ← U n ⋅ 2 l s=s_0\|s_1 \leftarrow U_{n \cdot 2^l} s=s0s1Un2l 指定的函数 f s k : { 0 , 1 } k → { 0 , 1 } n f_s^k: \{0,1\}^k \to \{0,1\}^n fsk:{0,1}k{0,1}n 构造如下
    f s k ( x ) = { S ( f s 0 k / 2 ( x 0 ) ,   f s 1 k / 2 ( x 1 ) ) , k > 1 s x , k = 1 f_{s}^k(x) = \left\{ \begin{aligned} S(f_{s_0}^{k/2}(x_0),\, f_{s_1}^{k/2}(x_1)),&& k>1\\ s_x,&& k=1 \end{aligned} \right. fsk(x)={S(fs0k/2(x0),fs1k/2(x1)),sx,k>1k=1

    那么 f s k ( x ) f_s^k(x) fsk(x) 是 PRF,可编码为长度为 n ⋅ 2 k n \cdot 2^k n2k 的序列。归约过程使用混合技术。

  7. 若 trapdoor OWP 存在,那么 weak PRF 存在。设 { g t } t ∈ I \{g_t\}_{t \in I} {gt}tI 是单向陷门置换, D n D_n Dn 是值域上的抽样算法, b ( ⋅ ) b(\cdot) b() 是其硬核,令
    f t ( x ) = b ( g t − 1 ( D n ( x ) ) ) f_t(x) = b(g_t^{-1}(D_n(x))) ft(x)=b(gt1(Dn(x)))

    其中 D n ( x ) D_n(x) Dn(x) 意为使用 x x x 作为输入随机带,那么 f t { 0 , 1 } n → { 0 , 1 } f_t \{0,1\}^n \to \{0,1\} ft{0,1}n{0,1} 是弱 PRF。

  8. 若 weak PRF 存在,那么伪随机合成器存在。设 { f n } n ∈ N \{f_n\}_{n \in \mathbb N} {fn}nN 是弱 PRF, I I I 是抽样算法,令 S n : { 0 , 1 } ∗ × { 0 , 1 } ∗ → { 0 , 1 } ∗ S_n:\{0,1\}^* \times \{0,1\}^* \to \{0,1\}^* Sn:{0,1}×{0,1}{0,1}
    S n ( x , y ) = f I ( y ) ( x ) S_n(x,y) = f_{I(y)}(x) Sn(x,y)=fI(y)(x)

    其中 I ( y ) I(y) I(y) 意为使用 y y y 作为输入随机带,那么 S n S_n Sn 是伪随机合成器。归约过程中采取混合技术,将方阵 { S n ( x i , y j ) } i , j = 1 k \{S_n(x_i,y_j)\}_{i,j=1}^k {Sn(xi,yj)}i,j=1k U n k 2 U_{nk^2} Unk2 按列混合,前 i i i 列取自前者,后 k − i k-i ki 列取自后者。

  9. CDH 假设下,函数簇 { S p , g , r ( x , y ) = < g x y , r > } \{S_{p,g,r}(x,y)=\} {Sp,g,r(x,y)=<gxy,r>} 上的均匀分布 S D H = { S n } S_{DH}=\{S_n\} SDH={Sn},是伪随机合成器。

  10. f f f 是 PRF,Feistel 置换定义为
    D f ( L , R ) = ( R ,   L ⊕ f ( R ) ) D_f(L,R) = (R,\, L \oplus f(R)) Df(L,R)=(R,Lf(R))

    那么两轮 Feistel F n = D f s 2 ∘ D f s 1 F_n = D_{f_{s_2}} \circ D_{f_{s_1}} Fn=Dfs2Dfs1 是 weak PRP

  11. Luby-Rackoff 的 PRP 构造

    • f s 1 , f s 2 , f s 3 f_{s_1},f_{s_2},f_{s_3} fs1,fs2,fs3 是 PRF,三轮 Feistel F n = D f s 3 ∘ D f s 2 ∘ D f s 1 F_n = D_{f_{s_3}} \circ D_{f_{s_2}} \circ D_{f_{s_1}} Fn=Dfs3Dfs2Dfs1 是 PRP
    • f s 1 , f s 2 , f s 3 , f s 4 f_{s_1},f_{s_2},f_{s_3},f_{s_4} fs1,fs2,fs3,fs4 是 PRF,四轮 Feistel F n = D f s 4 ∘ D f s 3 ∘ D f s 2 ∘ D f s 1 F_n = D_{f_{s_4}} \circ D_{f_{s_3}} \circ D_{f_{s_2}} \circ D_{f_{s_1}} Fn=Dfs4Dfs3Dfs2Dfs1 是 strong PRP
  12. Naor-Reingold 的 PRP 构造

    • pairwise independent 置换簇:置换簇 { H k : D k → D k } k \{H_k:D_k \to D_k\}_k {Hk:DkDk}k,对于任意 x ≠ y , z ∈ D x \neq y,z \in D x=y,zD,都有
      P r k ← R K [ H k ( x ) ⊕ H k ( y ) = z ] ≤ n e g l ( n ) \underset{k \leftarrow_R K}{Pr}[H_k(x)\oplus H_k(y)=z] \le negl(n) kRKPr[Hk(x)Hk(y)=z]negl(n)

    • { H t } \{H_t\} {Ht} 是两两独立置换簇,设 f , g f,g f,g 是 PRF,那么 F n = D g ∘ D f ∘ H t F_n = D_g \circ D_f \circ H_t Fn=DgDfHt 是 PRP

    • { H t } \{H_t\} {Ht} 是两两独立置换簇,设 f , g f,g f,g 是 PRF,那么 F n = H t 2 ∘ D g ∘ D f ∘ H t 1 F_n = H_{t_2} \circ D_g \circ D_f \circ H_{t_1} Fn=Ht2DgDfHt1 是 strong PRP

  13. Puncturable PRF(可穿孔伪随机函数):函数簇 { f k } \{f_k\} {fk},随机密钥 k k k,给定穿孔密钥 k x ∗ k_{x^*} kx,在某点 x ∗ x^* x 上的函数值不可计算(与均匀分布计算不可区分),其他点 x ≠ x ∗ x \neq x^* x=x 的函数值可有效计算。使用 GGM 可以构造 Puncturable PRF。

  14. Constrained PRF(受限的伪随机函数):函数簇 { f k } \{f_k\} {fk},随机密钥 k k k,给定电路 C C C 的相关密钥 k C k_C kC,在满足 C ( x ) = 1 C(x)=1 C(x)=1 的点上的函数值可有效计算,其他点不可计算(与均匀分布计算不可区分)。使用 GGM 和 NR 可以构造某些简单电路的 Constrained PRF。

Hash

  1. Damgard 迭代结构:设 F = { f s : { 0 , 1 } t → { 0 , 1 } l } s F=\{f_s:\{0,1\}^t \to \{0,1\}^l\}_s F={fs:{0,1}t{0,1}l}s 是固定长度的 CRHF,构造任意长度的 CRHF h s : { 0 , 1 } ∗ → { 0 , 1 } l ( ∣ s ∣ ) h_s:\{0,1\}^* \to \{0,1\}^{l(|s|)} hs:{0,1}{0,1}l(s)

    • m m m 划分为长度为 t − l − 1 t-l-1 tl1 的若干块 m 1 ∥ ⋯ ∥ m k m_1\|\cdots\|m_k m1mk,最后一块 padding 0 0 0
    • 设置 d = ∣ m ∣ ( m o d t − l − 1 ) d=|m| \pmod{t-l-1} d=m(modtl1)(就是 padding 之前的 ∣ m k ∣ |m_k| mk),编码为二进制写入 m k + 1 m_{k+1} mk+1
    • 计算 h 1 = f s ( 0 l ∥ 0 ∥ m 1 ) h_1 = f_s(0^l\|0\|m_1) h1=fs(0l0m1),然后迭代计算 h j = f s ( h j − 1 ∥ 1 ∥ m j ) h_j = f_s(h_{j-1}\|1\|m_j) hj=fs(hj11mj),输出 h s ( m ) = h k + 1 h_s(m) = h_{k+1} hs(m)=hk+1
  2. Merkle-Damgard 迭代结构:设 f : { 0 , 1 } c + b → { 0 , 1 } c f:\{0,1\}^{c+b} \to \{0,1\}^c f:{0,1}c+b{0,1}c g : { 0 , 1 } c → { 0 , 1 } n g:\{0,1\}^c \to \{0,1\}^n g:{0,1}c{0,1}n,构造 h : { 0 , 1 } ∗ → { 0 , 1 } n h:\{0,1\}^* \to \{0,1\}^n h:{0,1}{0,1}n

    • m m m 划分为长度为 b b b 的若干块 m 1 ∥ ⋯ ∥ m t m_1\|\cdots\|m_t m1mt,最后一块 padding 0 0 0
    • 设置 h 0 = I V ∈ { 0 , 1 } c h_0 = IV \in \{0,1\}^c h0=IV{0,1}c,迭代计算 h i = f ( h i − 1 , m i ) h_{i}=f(h_{i-1},m_i) hi=f(hi1,mi),输出 h ( m ) = g ( h t ) h(m)=g(h_t) h(m)=g(ht)

    f f f 是 CRHF,那么 h h h 也是 CRHF。归约时,依次比较两个链条的中间状态,直到找到第一个相同的位置,从而给出 f f f 的碰撞。

  3. 基于 Claw-free 置换的 CRHF:设 { f i 0 , f i 1 } i ∈ I \{f_i^0,f_i^1\}_{i \in I} {fi0,fi1}iI { 0 , 1 } l ( ∣ i ∣ ) \{0,1\}^{l(|i|)} {0,1}l(i) 上的 Claw-free 的置换对,任意的 s ∈ I s \in I sI u ∈ { 0 , 1 } l u \in \{0,1\}^l u{0,1}l,构造 h s , u ( m ) h_{s,u}(m) hs,u(m) 如下,
    h s , u ( m ) = f s m 1 ∘ ⋯ ∘ f s m k ( u ) ,   ∣ m ∣ = k h_{s,u}(m) = f_s^{m_1} \circ \cdots \circ f_s^{m_k}(u),\, |m|=k hs,u(m)=fsm1fsmk(u),m=k

    归约证明时,注意设置 u = f s b ( u ′ ) u=f_s^b(u') u=fsb(u),其中 b ← U 1 b \leftarrow U_1 bU1 u ′ ← U l u' \leftarrow U_l uUl,为了抓住在一对碰撞 m 0 , m 1 m_0,m_1 m0,m1 m 0 m_0 m0 m 1 m_1 m1 前缀的情况。

  4. Merkle Tree:设 h : { 0 , 1 } 2 l → { 0 , 1 } l h: \{0,1\}^{2l} \to \{0,1\}^{l} h:{0,1}2l{0,1}l 是 CRHF,定义 CRHF H : { 0 , 1 } ∗ → { 0 , 1 } l H:\{0,1\}^* \to \{0,1\}^l H:{0,1}{0,1}l 为一颗二叉树,叶子是 m m m 的各个分块的摘要 h ( m i ) h(m_i) h(mi),中间节点是两个孩子的摘要 h ( h L , h R ) h(h_L,h_R) h(hL,hR),迭代到根节点 H ( m ) H(m) H(m)。归约证明时,两棵不同的树 H ( m 0 ) = H ( m 1 ) H(m_0)=H(m_1) H(m0)=H(m1),深度优先搜索一个两棵树的摘要不同的节点,那么其父节点上就出现 h h h 的碰撞。

  5. 若 OWF 存在,那么 UOWHF 存在。从 OWF 到 Regular OWF 到 OWP 到 UOWHF 到 Claw-free Trapdoor Permutation 到 Signature,构造方案很麻烦。

  6. Composition lemma:设 H 1 , ⋯   , H l H_1,\cdots,H_l H1,,Hl 是 UOWHF,那么它们的复合 H = H 1 ∘ ⋯ ∘ H l H = H_1 \circ \cdots \circ H_l H=H1Hl 也是 UOWHF。

  7. 若抗第二原像的 Hash 函数存在,那么 UOWHF 存在。设 F F F 是抗第二原像的,那么 { H k ( x ) = F ( k ⊕ x ) } k \{H_k(x) = F(k \oplus x)\}_k {Hk(x)=F(kx)}k 是 UOWHF。

  8. UOWHF( r r r) 经过 r + 1 r+1 r+1 轮 MD 迭代后是 UOWHF。设 { H s } \{H_s\} {Hs} 是 UOWHF( r r r),得到 M D r + 1 ( H s ) ( ⋅ ) MD_{r+1}(H_s)(\cdot) MDr+1(Hs)() 是 UOWHF。归约时,对于一对碰撞 m ≠ m ′ m \neq m' m=m,依次比较两者 MD 的链接变量,找到第一个相同的位置,便得到了 H s H_s Hs 的一对碰撞 H s ( h j − 1 ∥ m j ) = H s ( h j − 1 ′ ∥ m j ′ ) H_s(h_{j-1}\|m_j)=H_s(h'_{j-1}\|m'_j) Hs(hj1mj)=Hs(hj1mj)。接着,为了将 H s H_s Hs 的 UOW( r r r) 归约到 M D r + 1 ( H s ) MD_{r+1}(H_s) MDr+1(Hs) 的 UOW,需要 A ′ A' A 先从 A A A 那里获得 m m m,再与 C h Ch Ch 交互 r r r 次计算出 x i = h i − 1 ∥ m i x_i=h_{i-1}\|m_i xi=hi1mi,然后猜测一个碰撞位置 j ∗ j^* j。获得 s s s A A A 自己就可以任意计算 H s H_s Hs 了,为 A A A 模拟 UOWHF 的挑战游戏,得到 A A A 的回应 m ′ m' m,若恰好 j ∗ = j j^*=j j=j,那么就攻击成功。概率损失 1 / r 1/r 1/r 是多项式级别。

  9. 对于任意的 r r r,CRHF 是 UOWHF( r r r);对于任意的 r 1 > r 2 r_1>r_2 r1>r2,UOWHF( r 1 r_1 r1) 是 UOWHF( r 2 r_2 r2);UOWHF( 0 0 0) 就是 UOWHF

  10. 两两独立 Hash 函数存在:令 { h a , b : F → F } \{h_{a,b}: \mathbb F \to \mathbb F\} {ha,b:FF} 是有限域上的函数,其中 h a , b ( x ) = a x + b h_{a,b}(x) = ax+b ha,b(x)=ax+b(信息论安全的 one-time MAC),那么 { h a , b } \{h_{a,b}\} {ha,b} 就是两两独立的。

你可能感兴趣的:(基础密码学,算法,信息安全,区块链,密码学)