12、密码学中的组合器相关性与DES算法分析

密码学中的组合器相关性与DES算法分析

1. DES算法相关研究

在密码学领域,DES(Data Encryption Standard)算法一直是研究的重点。对于DES算法,有一个重要的问题是其生成器是否完备。研究表明,对于群 $G$ 与 $A_{64}$ 的关系,通过分析可知,$G$ 中每个元素的循环表示与仿射群 $Afl(V,J)$ 中某个元素相同。特别地,$G$ 中每个元素的不动点数量必定是集合 ${0, 2^0, 2^1, \cdots, 2^{64}}$ 中的元素,因为仿射映射的不动点(若存在)构成仿射子空间。从引理6可知,$G$ 中存在一个元素恰好有 $5 \cdot 2^{19}$ 个不动点,这在阿贝尔情形下会产生矛盾,从而证明了假设 $G \neq A_{64}$ 是错误的。

由此得到推论4:由DES的 $n$ 轮函数(使用独立子密钥)生成的群 $G_{(n)}$ 等于 $A_{64}$($n = 2, 3, \cdots$)。证明过程如下:
- 显然,$G_{(n)}$ 是 $G$ 的传递子群。
- 所有置换 $\phi_k$ 和 $\psi_k$ 也属于 $G_{(n)}$。
- 由于引理4、引理5、推论2和引理6的证明仅使用了 $\phi_k$ 和 $\psi_k$ 这些群元素,所以可以用证明 $G = A_{64}$ 的相同方法证明 $G_{(n)} = A_{64}$。

这一结果表明,一轮DES置换的结构和当前的S盒并不会限制通过组合可获得的可能置换的数量。因为生成的交错群 $A_{64}$ 是一个大型单群,并且在 $V_{64}$ 上是本原的,所以可以排除DES算法中一些可想象的密码分析“捷径”。

此外,虽然证明基于置换的各种特殊性质,但也有可能找到其他S盒,替换后能得到与定理1相同的最终结果。对于推论4,人们可能期望16轮DES密码置换集也能生成交错群,但由于DES密钥调度的影响,这仍是一个开放问题。

2. 带记忆组合器的相关性分析

在密码学的另一个方面,对于带记忆的组合器的相关性分析也十分重要。常见的将多个线性反馈移位寄存器(LFSRs)组合用于伪随机序列生成的方法是使用无记忆函数,但这种结构容易受到分治相关攻击。为了提高抗相关性攻击的能力,可以使用带记忆的布尔函数。

2.1 带记忆的通用二进制组合器

一个具有任意数量 $M$ 个记忆位的通用二进制组合器是一个顺序电路,由以下公式定义:
- 下一状态向量布尔函数 $G: GF(2)^{N + M} \to GF(2)^M$。
- 输出布尔函数 $f: GF(2)^{N + M} \to GF(2)$。
- 状态向量 $s_t = (s_{1t}, \cdots, s_{Mt})$ 在时间 $t$ 的值,$s_0$ 是初始状态。
- 输入序列 ${x_t} = {(x_{1t}, \cdots, x_{Nt})}$ 是一个 $N$ 维向量输入序列,由 $N$ 个二进制序列 ${x_{it}}$($1 \leq i \leq N$)组成,输出二进制序列为 ${y_t}$。

为了研究该组合器的相关性,假设输入序列是相互独立、平衡(均匀分布)且独立的随机二进制序列。对于密码学应用,输出序列也需要是平衡且独立的,这等价于输出函数 $f(x, s)$ 对于每个 $s$ 都是平衡的。

2.2 带记忆组合器的相关性性质

考虑任意向量布尔函数 $f: GF(2)^n \to GF(2)^m$,它由 $m$ 个分量布尔函数组成,即 $f = (f_1, \cdots, f_m)$。设 $z = f(x, y)$,其中 $x \in GF(2)^{n_1}$,$y \in GF(2)^{n_2}$,$n = n_1 + n_2$,且 $x$ 和 $y$ 是统计独立的平衡随机变量。可以建立以下性质:
- 性质1 :向量布尔函数 $f(x)$ 是平衡的,当且仅当它的所有非零线性组合的分量函数都是平衡的。
- 性质2 :向量布尔函数 $f(x, y)$ 与 $x$ 统计独立(或对于每个 $x$ 是平衡的),当且仅当 $f$ 的每个非零线性组合的分量函数与 $x$ 的每个非零线性函数统计独立(或对于每个 $x$ 是平衡的)。
- 性质3 :布尔函数 $f(x)$ 和平衡布尔函数 $g(x)$(例如非零线性函数)统计独立,当且仅当它们的和是平衡的。
- 性质4 :向量布尔函数 $f(x, y)$ 与 $x$ 统计独立(或对于每个 $x$ 是平衡的),当且仅当 $f$ 的非零线性组合的分量函数不能表示为 $x$ 的非零线性函数(线性函数)与 $(x, y)$ 的非平衡布尔函数的和。

对于具有 $M$ 个记忆位的通用二进制组合器,通过上述性质可以证明以下定理:设通用二进制组合器的输出函数 $f(x, s)$ 对于每个 $s$ 都是平衡的,那么存在一个有效依赖于 $y_t$ 的线性函数 $L_0(y_t, y_{t - 1}, \cdots, y_{t - M})$,它可以表示为一个有效依赖于 $x$ 的线性函数 $L_1(x_t, x_{t - 1}, \cdots, x_{t - M})$ 与一个非平衡布尔函数 $\epsilon(x_t, x_{t - 1}, \cdots, x_{t - M}, s_{t - M})$ 的和,且该布尔函数与 $s_{t - M}$ 统计独立。

这个定理本质上表明,对于具有 $M$ 个记忆位的通用二进制组合器,存在一个最多 $M + 1$ 个连续输出的非零线性函数与最多 $M + 1$ 个连续输入的非零线性函数相关。给定这两个线性函数,就可以应用为无记忆组合器开发的标准密码分析方法来重构输入序列所涉及的所有LFSRs的初始状态。

3. 线性近似与相关性攻击

为了找到带记忆组合器中输出和输入的相关线性函数对,采用线性近似的方法。

3.1 线性近似过程
  • 分解函数 :将输出函数 $f$ 和下一状态函数 $G$ 的每个分量函数分解为线性函数和非平衡布尔函数的和。若被分解的函数是平衡的,则线性函数是非零的,且根据性质3,它与非平衡函数统计独立;若被分解的函数是非平衡的,则可以选择线性函数为零。分解后,基本方程使用矩阵表示为:
  • $s_t = A s_{t - 1} + B x_t + u(x_t, s_{t - 1})$
  • $y_t = C s_{t - 1} + D x_t + e(x_t, s_{t - 1})$
    其中向量被视为单列矩阵,$A$、$B$、$C$ 和 $D$ 是二进制矩阵,$u$ 和 $e$ 是非平衡布尔函数。
  • 线性近似 :将上述方程视为带记忆的通用二进制线性组合器(即二进制线性顺序电路,LSC)的基本方程。使用二进制序列的生成函数表示(通常称为形式幂级数或D变换)来求解这些方程。设 $S = \sum_{t = 0}^{\infty} s_t z^t$,$X = \sum_{t = 0}^{\infty} x_t z^t$,$U = \sum_{t = 0}^{\infty} u_t z^t$,$E = \sum_{t = 0}^{\infty} e_t z^t$,$Y = \sum_{t = 0}^{\infty} y_t z^t$,则方程可转化为:
  • $(zA - I)S = BX + U$
  • $Y = CS + DX + E$
    求解可得:
  • $S = (zA - I)^{-1}(BX + U)$
  • $Y = C(zA - I)^{-1}(BX + U) + DX + E$

其中 $\det(zA - I) = p(z)$ 是 $z$ 的非零多项式,次数最多为 $\text{rank} A \leq M$,它是 $A$ 的特征多项式的倒数,矩阵 $(zA - I)^{\text{adj}}$ 的元素是 $z$ 的次数最多为 $M - 1$ 的多项式。

3.2 相关性攻击

在假设噪声函数 $\epsilon$ 是非平衡的情况下,分析方程对于输入序列统计重构的判别潜力。假设每个输入序列 ${x_{it}}$ 由具有反馈多项式 $F_i(z)$($1 \leq i \leq N$)的LFSR生成,且 $F_i(z)$ 两两互质。
- 整体重构 :使用方程可以统计重构所有满足 $h_{ik} \neq 0$(至少存在一个 $k$,$0 \leq k < M$)且 $F_i(z)$ 不整除 $h_i(z)$ 的输入序列 ${x_{it}}$。
- 个体重构 :可以采用一种改进的方法来重构单个输入序列。将方程两边乘以所有在方程中有效出现的 $F_j(z)$($j \neq i$)的乘积 $F_i’(z)$,得到一个类似于原方程的分解方程,若得到的噪声函数 $\epsilon’$ 是非平衡的且 $F_i(z)$ 不整除 $h_i(z)$,则原则上可以重构 ${x_{it}}$。

需要注意的是,所描述的分解过程只有在得到的噪声函数与零函数的相关系数的绝对值足够大时,才能实现有效的重构。为了最大化整体相关系数的绝对值,应该用具有最大绝对相关系数的线性函数来近似输出函数和下一状态函数的分量。若使用沃尔什变换,确定这些函数需要 $O((M + 1)(M + N)2^{M + N})$ 的时间复杂度,若许多函数仅依赖于输入和状态变量的子集,时间复杂度可以显著降低。

综上所述,通过对DES算法和带记忆组合器的研究,我们在密码学的安全性分析和攻击方法上有了更深入的理解。对于DES算法,其生成器的完备性为密码系统的设计提供了理论支持;而对于带记忆组合器的相关性分析和攻击方法,有助于我们评估密码系统在面对相关攻击时的安全性,并为改进密码系统提供方向。

以下是一个简单的mermaid流程图,展示带记忆组合器线性近似和相关性攻击的主要步骤:

graph LR
    A[带记忆组合器] --> B[函数分解]
    B --> C[线性近似方程]
    C --> D[求解方程]
    D --> E[相关性分析]
    E --> F{噪声函数非平衡?}
    F -- 是 --> G[重构输入序列]
    F -- 否 --> H[调整近似]
    H --> C

表格总结带记忆组合器的相关性质:
|性质|描述|
|----|----|
|性质1|向量布尔函数 $f(x)$ 平衡的充要条件是所有非零线性组合的分量函数平衡|
|性质2|向量布尔函数 $f(x, y)$ 与 $x$ 统计独立的充要条件是每个非零线性组合的分量函数与 $x$ 的非零线性函数统计独立|
|性质3|布尔函数 $f(x)$ 和平衡布尔函数 $g(x)$ 统计独立的充要条件是它们的和平衡|
|性质4|向量布尔函数 $f(x, y)$ 与 $x$ 统计独立的充要条件是其非零线性组合的分量函数不能表示为 $x$ 的非零线性函数与非平衡布尔函数的和|

列表总结线性近似过程的步骤:
1. 分解输出函数和下一状态函数为线性函数和非平衡布尔函数的和。
2. 将分解后的方程视为线性顺序电路的基本方程。
3. 使用生成函数表示求解方程。

密码学中的组合器相关性与DES算法分析

4. 线性近似过程的详细分析

在前面提到的线性近似过程中,分解函数和求解方程是关键步骤。下面对这些步骤进行更详细的分析。

4.1 函数分解的深入探讨

函数分解是线性近似的基础。对于输出函数 $f$ 和下一状态函数 $G$ 的每个分量函数,分解为线性函数和非平衡布尔函数的和,这一过程基于带记忆组合器的相关性性质。当函数是平衡时,线性函数的选择要保证其与非平衡函数统计独立,这是为了后续能准确地构建线性近似模型。

例如,假设一个简单的情况,$N = 2$,$M = 1$,输出函数 $f(x_1, x_2, s)$ 可以表示为 $f(x_1, x_2, s)=a_1x_1 + a_2x_2 + a_3s+u(x_1, x_2, s)$,其中 $a_1, a_2, a_3$ 是二进制系数,$u(x_1, x_2, s)$ 是非平衡布尔函数。如果 $f$ 是平衡的,那么 $a_1x_1 + a_2x_2 + a_3s$ 是非零的,并且与 $u(x_1, x_2, s)$ 统计独立。

4.2 方程求解的细节

在将分解后的方程转化为矩阵形式后,使用生成函数表示求解方程。对于方程 $(zA - I)S = BX + U$ 和 $Y = CS + DX + E$,求解过程涉及到矩阵运算和多项式运算。

首先,求 $(zA - I)^{-1}$ 是关键步骤。根据矩阵理论,$(zA - I)^{-1}=\frac{(zA - I)^{\text{adj}}}{\det(zA - I)}$,其中 $\det(zA - I) = p(z)$ 是 $z$ 的非零多项式,次数最多为 $\text{rank} A \leq M$,矩阵 $(zA - I)^{\text{adj}}$ 的元素是 $z$ 的次数最多为 $M - 1$ 的多项式。

例如,当 $M = 2$ 时,$A=\begin{bmatrix}a_{11}&a_{12}\a_{21}&a_{22}\end{bmatrix}$,则 $(zA - I)=\begin{bmatrix}za_{11}-1&za_{12}\za_{21}&za_{22}-1\end{bmatrix}$,$\det(zA - I)=(za_{11}-1)(za_{22}-1)-za_{12}za_{21}$,$(zA - I)^{\text{adj}}=\begin{bmatrix}za_{22}-1&-za_{12}\-za_{21}&za_{11}-1\end{bmatrix}$。

然后,$S = (zA - I)^{-1}(BX + U)$ 可以进一步展开为多项式形式,再代入 $Y = CS + DX + E$ 中得到 $Y$ 关于 $X$ 等的表达式。

5. 相关性攻击的实际应用与挑战

在实际应用中,相关性攻击虽然为密码分析提供了一种有效的方法,但也面临着一些挑战。

5.1 实际应用场景

在密码系统中,当使用带记忆组合器来组合多个LFSRs生成伪随机序列时,相关性攻击可以用于评估系统的安全性。例如,在一些流密码生成器中,通过找到输出和输入的相关线性函数对,可以尝试重构LFSRs的初始状态,从而破解密码系统。

假设一个流密码系统由3个LFSRs通过带记忆组合器组合而成,使用相关性攻击方法,分析输出序列和输入序列的相关性,若能找到相关的线性函数对,就可以尝试重构这3个LFSRs的初始状态,进而恢复出加密的明文。

5.2 面临的挑战
  • 噪声函数平衡性问题 :在相关性攻击中,噪声函数的平衡性是关键。如果噪声函数是平衡的,那么无法有效地利用相关线性函数对来重构输入序列。然而,在实际情况中,很难保证噪声函数一定是非平衡的,因为它可能是多个非平衡函数的和,且这些非平衡函数不一定统计独立,这就增加了攻击的难度。
  • 计算复杂度问题 :确定具有最大绝对相关系数的线性函数来近似输出函数和下一状态函数的分量,若使用沃尔什变换,时间复杂度为 $O((M + 1)(M + N)2^{M + N})$。当 $M$ 和 $N$ 较大时,计算复杂度会非常高,这在实际应用中可能是不可行的。
6. 未来研究方向

基于以上的研究和分析,未来在密码学领域关于DES算法和带记忆组合器的研究可以朝着以下几个方向发展。

6.1 DES算法的进一步优化

虽然已经证明了DES的 $n$ 轮函数(使用独立子密钥)生成的群 $G_{(n)}$ 等于 $A_{64}$,但DES密钥调度的影响还需要进一步研究。可以探索如何优化DES的密钥调度算法,以提高密码系统的安全性,同时降低计算复杂度。

6.2 带记忆组合器的改进
  • 设计更安全的组合器 :研究如何设计带记忆组合器,使得输出序列与输入序列的相关性更难被发现。可以从组合器的结构和函数设计入手,例如设计新的输出函数和下一状态函数,提高组合器对相关性攻击的抵抗能力。
  • 降低相关性攻击的有效性 :研究如何降低噪声函数的平衡性对相关性攻击的影响,或者开发新的方法来处理平衡噪声函数的情况。

表格总结未来研究方向:
|研究方向|具体内容|
|----|----|
|DES算法优化|研究优化DES密钥调度算法,提高安全性和降低计算复杂度|
|带记忆组合器改进|设计更安全的组合器,降低相关性攻击的有效性|

列表总结相关性攻击面临的挑战及应对思路:
1. 噪声函数平衡性问题:研究处理平衡噪声函数的方法,或者设计组合器使噪声函数更易呈现非平衡性。
2. 计算复杂度问题:探索降低计算复杂度的算法,例如寻找更高效的线性函数近似方法。

以下是一个mermaid流程图,展示相关性攻击在实际应用中的主要流程:

graph LR
    A[密码系统(带记忆组合器)] --> B[收集输出序列和输入序列数据]
    B --> C[分析相关性,寻找线性函数对]
    C --> D{找到相关线性函数对?}
    D -- 是 --> E{噪声函数非平衡?}
    E -- 是 --> F[尝试重构LFSRs初始状态]
    F --> G{重构成功?}
    G -- 是 --> H[破解密码系统]
    G -- 否 --> I[调整分析方法]
    I --> C
    E -- 否 --> I
    D -- 否 --> I

通过对DES算法和带记忆组合器的深入研究,我们不仅了解了它们的相关理论和分析方法,还明确了未来研究的方向和面临的挑战。这将有助于推动密码学领域的发展,提高密码系统的安全性。

先展示下效果 https://pan.quark.cn/s/a4b39357ea24 遗传算法 - 简书 遗传算法的理论是根据达尔文进化论而设计出来的算法: 人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因。 遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。 进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择、杂交等。 搜索算法的共同特征为: 首先组成一组候选解 依据某些适应性条件测算这些候选解的适应度 根据适应度保留某些候选解,放弃其他候选解 对保留的候选解进行某些操作,生成新的候选解 遗传算法流程 遗传算法的一般步骤 my_fitness函数 评估每条染色体所对应个体的适应度 升序排列适应度评估值,选出 前 parent_number 个 个体作为 待选 parent 种(适应度函数的值越小越好) 从 待选 parent 种 中随机选择 2 个个体作为父方和母方。 抽取父母双方的染色体,进行交叉,产生 2 个子代。 (交叉概率) 对子代(parent + 生成的 child)的染色体进行变异。 (变异概率) 重复3,4,5步骤,直到新种(parentnumber + childnumber)的产生。 循环以上步骤直至找到满意的解。 名词解释 交叉概率:两个个体进行交配的概率。 例如,交配概率为0.8,则80%的“夫妻”会生育后代。 变异概率:所有的基因中发生变异的占总体的比例。 GA函数 适应度函数 适应度函数由解决的问题决定。 举一个平方和的例子。 简单的平方和问题 求函数的最小值,其中每个变量的取值区间都是 [-1, ...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值