卢比 - 拉科夫伪随机置换生成器的简化与推广解读
1. 引言
在密码学领域,伪随机置换生成器的构建是一个重要的研究方向。早期,Luby和Rackoff受数据加密标准(DES)的轮结构启发,提出了从伪随机函数生成器构建伪随机置换生成器的方法。这一研究引发了众多后续工作。本文旨在基于局部随机函数的概念,对Luby和Rackoff的结果进行简化和推广,为概率理论和复杂性理论在密码学中的关系提供新的见解。
局部随机性是理论计算机科学中的一个重要概念。直观地说,如果对于任意最多包含k个参数的集合,从一个函数族中随机选择的函数在这些参数上的函数值是独立且均匀分布的,那么这个函数族就是k度局部随机的。类似地,如果对于随机选择的种子,序列生成器生成的任意k个(或更少)数字的子集是完全随机的,那么该序列生成器就是k度局部随机的。
2. 术语
为了更好地理解后续内容,先明确一些术语:
- ({0,1}^n):表示长度为n的二进制字符串集合。
- (F^n):表示从({0,1}^n)到({0,1}^n)的所有(2^{n^2})个函数的集合。
- (P^n):(F^n)中所有置换函数(即可逆或一对一的函数)的子集。
- (f_1 \circ f_2):表示函数(f_1)和(f_2)的复合,即(f_1 \circ f_2(x) = f_2(f_1(x)))。
- (a \parallel b):表示两个二进制字符串(a)和(b)的连接。
- (a \oplus b):当(a)和(b)长度相同时,表示它们的逐位异或。
- ([a]_t):表示字符串(a)的最右边t位。
- (x \in_R S):表示从集合或多重集(S)中随机选择一个对象(x),每个对象被选中的概率相等。
- 伪随机数(或位)生成器(PRNG)、伪随机函数生成器(PRFG)和伪随机置换生成器(PRPG)的定义可参考相关文献。
- 超多项式函数:对于每个多项式(Q),当(n)足够大时,函数(f : \mathbb{N} \to \mathbb{N})满足(f(n) > Q(n))。
- (#S):表示集合或多重集(S)的基数,本文中的对数均以2为底。
3. 卢比 - 拉科夫伪随机置换生成器
Levin给出了从任意单向函数构建PRNG的方法,Goldreich、Goldwasser和Micah则提出了从PRNG构建PRFG的方法。然而,伪随机函数通常不可逆,不能直接用于块加密。Luby和Rackoff考虑了从安全的PRFG构建安全的块加密算法,即伪随机置换生成器的问题。
受DES的轮结构启发,Luby和Rackoff定义了一个映射(H : F^n \times F^n \times F^n \to P^{2n}),将(F^n)中的每个三元函数映射到(P^{2n})中的一个置换。具体来说,对于一个(2n)位字符串(L \parallel R),定义(f \in P^{2n})为(f(L \parallel R) = R \parallel [L \oplus f(R)]),这对应于DES的一轮。对于函数列表(f_1, \cdots, f_d \in F^n),定义(\Phi(f_1, \cdots, f_d) = f_1 \circ \cdots \circ f_d)。
Luby和Rackoff考虑了通过神谕电路区分从(F^{2n})中随机选择的函数和从(\Phi(F^n, F^n, F^n))中随机选择的函数的问题。神谕电路(C^{2n})是一种带有神谕门的电路,神谕门的输入和输出均为(2n)位,电路中的所有神谕门都对(F^{2n})中的同一个固定函数进行求值。
主要引理 :设(C^{2n})是一个具有k个神谕门且没有输入值重复到神谕门的神谕电路,则不存在一组k个参数(无论是否自适应选择,是否不同),使得以这些参数作为神谕门输入的神谕电路能够满足(\vert P[C^{2n}(f) = 1 : f \in_R \Phi(F^n, F^n, F^n)] - P[C^{2n}(f) = 1 : f \in_R F^{2n}] \vert > k^2 / 2^n)。
引理1的证明 :设(f_1)、(f_2)和(f_3)是从(F^n)中随机选择的函数,(f = \Phi(f_1, f_2, f_3))。对于(1 \leq i \leq k),令(z_i = L_i \parallel R_i)为(f)的k个参数,并定义(S_i)、(T_i)和(V_i)。当(E_S)((S_1, \cdots, S_k)不同)和(E_T)((T_1, \cdots, T_k)不同)事件都发生时,(f(z_1), \cdots, f(z_k))是完全随机的,此时(f)的行为就像从(F^{2n})中随机选择的函数。因此,区分概率的上界由(1 - P[E_S \cap E_T])决定。
(\overline{E_S \cap E_T})是({S_i = S_j})((1 \leq i < j \leq k))和({T_i = T_j})((1 \leq i < j \leq k))事件的并集。根据概率的性质,多个事件并集的概率上界为各事件概率之和。对于(i \neq j),有(P[S_i = S_j] \leq 2^{-n}),同理(P[T_i = T_j] \leq 2^{-n})。右边式子的总项数为(2\binom{k}{2} = k(k - 1) < k^2),从而证明了引理1。
下面是相关流程的mermaid流程图:
graph TD;
A[开始] --> B[随机选择f1,f2,f3];
B --> C[定义f = Φ(f1,f2,f3)];
C --> D[输入k个参数z1...zk];
D --> E[计算Si,Ti,Vi];
E --> F{ES和ET是否都发生};
F -- 是 --> G[f行为像随机函数];
F -- 否 --> H[计算区分概率上界];
H --> I[结束];
G --> I;
4. 随机函数和局部随机函数
随机函数(r : {0,1}^n \to {0,1}^n)为所有参数(x \in {0,1}^n)分配独立且完全随机的值(r(x) \in {0,1}^n)。随机函数的简单实现方式是使用表,这需要在预计算阶段生成(n2^n)个随机位,并使用(n2^n)位的内存来存储表。另一种实现方式是作为一个设备,当输入一个之前未出现过的参数时,生成一个随机输出并存储该参数和输出的对;当输入一个之前计算过的参数时,输出存储的值。这种实现方式在需要对最多t个参数进行求值时,需要(2tn)位的内存和最多(2tn)个随机位,但每个参数的计算时间为(O(\log t))。
由于随机性通常是一种昂贵且有限的资源,并且函数求值时间和内存需求对参数数量的依赖往往难以忍受,因此局部随机函数的概念变得尤为重要。
定义1 :一个函数族(F_Z = {f_z : z \in Z}),其中(f_z : {0,1}^n \to {0,1}^m),如果对于({0,1}^n)的任意子集({x_1, \cdots, x_k}),当(z)从(Z)中随机选择时,(f_Z(x_1), \cdots, f_Z(x_k))在({0,1}^m)上均匀分布且联合统计独立,则该函数族是具有密钥空间(Z)的((n, m, k))局部随机函数(LRF)。
对于LRF,存在一些重要的命题:
|命题|内容|
| ---- | ---- |
|命题2|设(p_0, \cdots, p_{k - 1})是随机选择的(n)位字符串,函数(p : {0,1}^n \to {0,1}^n : x \mapsto p(x) = p_{k - 1}x^{k - 1} + \cdots + p_1x + p_0)(所有量都视为有限域(GF(2^n))中的元素表示)是具有最小密钥空间(Z = {0,1}^{kn})的((n, n, k)) LRF。|
|命题3|存在((n, m, k)) LRF的条件是(\vert Z \vert \geq \frac{mk}{n + \log \vert Z \vert});不存在((n, 1, k)) LRF的条件是(k > \frac{2(\vert Z \vert + n + 1)}{n - \log \vert Z \vert + 1})。|
为了用LRF表述关于PRFG和PRPG的结果,需要对LRF的概念进行两种推广。首先,需要放松任意k个函数值完全随机的条件,引入第四个参数(\epsilon),定义((n, m, k, \epsilon))局部随机函数。
卢比 - 拉科夫伪随机置换生成器的简化与推广解读
5. 基于局部随机函数的结果解释与推广
将前面关于卢比 - 拉科夫伪随机置换生成器的结果基于局部随机函数进行解释,可以发现其本质上是关于局部随机函数的一个结果。
从局部随机函数的角度来看,当考虑从(\Phi(F^n, F^n, F^n))中随机选择的函数(f)和从(F^{2n})中随机选择的函数时,引理1表明对于任意的(k)个参数,(f)在这些参数上的行为与完全随机函数的行为差异不大。这意味着(\Phi(F^n, F^n, F^n))中的函数在一定程度上具有局部随机性。
具体来说,当(E_S)和(E_T)事件都发生时,(f)在(k)个参数上的输出就像完全随机函数的输出一样。而(1 - P[E_S \cap E_T])的上界限制了区分(f)和完全随机函数的可能性。这与局部随机函数的定义相呼应,即对于有限个参数,函数的输出表现出随机的特性。
下面通过一个表格来对比(\Phi(F^n, F^n, F^n))中的函数和完全随机函数在(k)个参数上的性质:
| 性质 | (\Phi(F^n, F^n, F^n))中的函数 | 完全随机函数 |
| ---- | ---- | ---- |
| 输出随机性 | 在(E_S)和(E_T)发生时接近随机 | 完全随机 |
| 区分概率 | 上界为(1 - P[E_S \cap E_T]) | 无区分可能 |
基于局部随机函数的概念,还可以对卢比 - 拉科夫的结果进行推广。例如,可以考虑不同的参数设置,如改变(n)、(m)、(k)的值,或者引入前面提到的(\epsilon)参数,研究在不同条件下函数的局部随机性质。
6. 局部随机函数的进一步应用及块密码设计策略
局部随机函数在理论计算机科学和密码学中有许多进一步的应用,同时也为块密码的设计提供了新的策略。
6.1 局部随机函数的进一步应用
- 密码协议设计 :在一些密码协议中,需要保证某些函数在有限个输入上的随机性,以确保协议的安全性。局部随机函数可以满足这一需求,通过选择合适的参数(n)、(m)、(k)和(\epsilon),可以设计出满足特定安全要求的函数。
- 数据隐私保护 :在数据处理过程中,为了保护数据的隐私,可以使用局部随机函数对数据进行处理。例如,对数据的某些特征进行随机化处理,使得在有限个查询下,无法获取到关于数据的敏感信息。
下面是一个局部随机函数在密码协议设计中的应用流程的mermaid流程图:
graph TD;
A[开始] --> B[选择合适的局部随机函数参数];
B --> C[生成局部随机函数];
C --> D[将函数应用于密码协议];
D --> E{协议是否满足安全要求};
E -- 是 --> F[协议完成];
E -- 否 --> B;
6.2 基于局部随机函数的块密码设计策略
传统的块密码设计通常基于复杂的结构和算法,而局部随机函数为块密码设计提供了一种新的思路。可以通过构建具有局部随机性质的函数来设计块密码,使得在有限个输入下,密码的加密结果表现出随机的特性,从而提高密码的安全性。
具体的设计步骤如下:
1.
选择参数
:根据安全需求和性能要求,选择合适的(n)、(m)、(k)和(\epsilon)参数。
2.
构建局部随机函数
:根据前面提到的命题和定义,构建具有所需局部随机性质的函数。
3.
设计块密码结构
:将局部随机函数融入到块密码的结构中,例如可以将其应用于轮函数的设计。
4.
安全性分析
:对设计的块密码进行安全性分析,验证其在不同攻击下的安全性。
通过这种方式设计的块密码,在有限个输入下能够提供较好的随机性,从而增强了密码的抗攻击能力。
综上所述,局部随机函数为伪随机置换生成器的研究和块密码的设计提供了新的视角和方法。通过对局部随机函数的深入研究和应用,可以进一步推动密码学领域的发展。
51

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



