25、向量函数与覆盖序列:理论、性质及在密码分析中的应用

向量函数与覆盖序列:理论、性质及在密码分析中的应用

引言

在密码学领域,向量函数和覆盖序列的研究对于设计和分析密码系统至关重要。本文将深入探讨向量函数的覆盖序列相关性质,包括其稳定性、在组合与拼接函数中的应用,以及如何利用覆盖序列构建鉴别器进行密码分析。

覆盖序列的基本性质
  • 推论3 :设 $F$ 是一个 $(n, m)$ - 函数,$(\phi, \psi)$ 是 $F$ 的一个覆盖序列。假设 $\phi$ 在 $F_{2}^{n}$ 上不等于零函数,$\psi$ 在 $F_{2}^{m*}$ 上不等于零函数,则有:
    1. 对于每个向量 $u \in F_{2}^{n}$,存在 $v \in F_{2}^{m*}$ 使得 $\chi_{F}(u, v) = 0$。
    2. 对于每个向量 $v \in F_{2}^{m}$,存在向量 $u \in F_{2}^{n}$ 使得 $\chi_{F}(u, v) = 0$。
  • 证明思路
    • 第一点证明 :假设存在向量 $u \in F_{2}^{n}$ 使得对于所有 $v \in F_{2}^{m*}$ 都有 $\chi_{F}(u, v) \neq 0$,根据定理 2 可推出 $\psi(b)$ 对于所有非零向量 $b$ 都等于 0,这与 $\psi$ 的假设矛盾。
    • 第二点证明 :假设存在向量 $v \in F_{2}^{m}$ 使得对于所有 $u \in F_{2}^{n}$ 都有 $\chi_{F}(u, v) \neq 0$,根据定理 2 可推出 $\phi(a)$ 对于所有向量 $a \in F_{2}^{n}$ 都等于 0,这与 $\phi$ 的假设矛盾。

注意事项 :在推论 3 的第一个假设中排除了 $v = 0$ 的情况,因为该值对函数 $F$ 没有提供有用信息。对于任何 $(n, m)$ - 函数 $F$,当 $u \neq 0$ 时,$\chi_{F}(u, 0) = 0$;当 $u = 0$ 时,$\chi_{F}(u, 0) = 2^{n}$。如果接受 $v = 0$,则第一个假设对于每个非零向量 $u$ 都显然成立。

根据推论 3,如果一个 $(n, m)$ - 函数 $F$ 有一个覆盖序列 $(\phi, \psi)$,且 $\psi$ 在 $F_{2}^{m*}$ 上不是零函数,那么对于每个向量 $u \in F_{2}^{n}$,存在其坐标函数的一个非零线性组合 $\sum_{i \leq m} v_{i}f_{i}$,使得它与布尔线性函数 $x \to u \cdot x$ 的和是平衡的。对于任何平衡函数 $F$ 尤其如此,因为如果 $(\phi, \psi)$ 是非平凡的,那么 $\psi$ 具有此性质。

覆盖序列的稳定性

在某些情况下,可以从函数定义中涉及的函数的覆盖序列推导出由组合或拼接定义的函数的覆盖序列。这一性质对于研究 $M_{n,m}^{ }$ 中的元素的覆盖序列特别有用,并且它意味着 $M_{n,m}^{ }$ 中的某些置换不能用作迭代分组密码中的轮函数。

  • 命题13 :设 $F: F_{2}^{n} \to F_{2}^{m}$ 和 $G: F_{2}^{m} \to F_{2}^{k}$ 是两个函数,分别具有覆盖序列 $(\phi, \psi)$ 和 $(\psi, \theta)$,则 $(\phi, \theta)$ 是 $G \circ F$ 的覆盖序列。
  • 证明过程

    • 对于每对 $(x, a) \in F_{2}^{n} \times F_{2}^{n}$,记 $D_{a}F(x)$ 为 $b$,则 $D_{a} G \circ F = (D_{b}G)(F(x))$。
    • 对于每对 $(x, c) \in F_{2}^{n} \times F_{2}^{k}$,有 $\sum_{a \in F_{2}^{n}, D_{a} G \circ F = c} \phi(a) = \sum_{b \in F_{2}^{m}, (D_{b}G)(F(x)) = c} \left(\sum_{a \in F_{2}^{n}, D_{a}F(x) = b} \phi(a)\right)$。
    • 因为对于每对 $(x, b) \in F_{2}^{n} \times F_{2}^{m}$,有 $\sum_{a \in F_{2}^{n}, D_{a}F(x) = b} \phi(a) = \psi(b)$,所以 $\sum_{a \in F_{2}^{n}, D_{a} G \circ F = c} \phi(a) = \sum_{b \in F_{2}^{m}, (D_{b}G)(F(x)) = c} \psi(b)$。
    • 令 $y = F(x)$,则 $\sum_{a \in F_{2}^{n}, D_{a} G \circ F = c} \phi(a) = \sum_{b \in F_{2}^{m}, D_{b}G(y) = c} \psi(b)$。
    • 由于 $(\psi, \theta)$ 是 $G$ 的覆盖序列,所以对于每对 $(y, c) \in F_{2}^{m} \times F_{2}^{k}$,$\sum_{b \in F_{2}^{m}, D_{b}G(y) = c} \psi(b)$ 取值为常数 $\theta(c)$,从而得到 $\sum_{a \in F_{2}^{n}, D_{a}G \circ F(x) = c} \phi(a) = \theta(c)$。
  • 命题14 :设 $F’$ 是一个 $(r + s, p)$ - 函数,$T$ 是一个 $(s, m - p)$ 函数,具有覆盖序列 $(\phi’, \psi’)$。假设存在 $\phi: F_{2}^{r} \times F_{2}^{s} \to R$ 和 $\psi: F_{2}^{p} \to R$,使得对于每个 $a’ \in Supp \phi’ \subseteq F_{2}^{s}$,$F’$ 具有覆盖序列 $(\phi(\cdot, a’), \psi)$。定义 $\phi’‘(a, a’) = \phi(a, a’)\phi’(a’)$ 和 $\psi’‘(b, b’) = \psi(b)\psi’(b’)$,则函数 $F(x, y) = (F’(x, y), T(y))$ 具有覆盖序列 $(\phi’‘, \psi’‘)$。

  • 证明过程
    • 对于每对 $(x, y) \in F_{2}^{r} \times F_{2}^{s}$ 和每个元素 $(a, a’) \in F_{2}^{r} \times F_{2}^{s}$,有 $D_{(a, a’)}F(x, y) = (D_{(a, a’)}F’(x, y), D_{a’}T(y))$。
    • 对于每对 $(x, y) \in F_{2}^{r} \times F_{2}^{s}$ 和每个元素 $(b, b’) \in F_{2}^{p} \times F_{2}^{m - p}$,有 $\sum_{(a, a’) \in F_{2}^{r} \times F_{2}^{s}, D_{(a, a’)}F(x, y) = (b, b’)} \phi(a, a’)\phi’(a’) = \sum_{a’ \in F_{2}^{s}, D_{a’}T(y) = b’} \phi’(a’) \left(\sum_{a \in F_{2}^{r}, D_{(a, a’)}F’(x, y) = b} \phi(a, a’)\right)$。
    • 因为对于每个 $a’ \in Supp \phi’$,$F’$ 具有覆盖序列 $(\phi(\cdot, a’), \psi)$,所以 $\sum_{a \in F_{2}^{r}, D_{(a, a’)}F’(x, y) = b} \phi(a, a’) = \psi(b)$。
    • 因此,$\sum_{(a, a’) \in F_{2}^{r} \times F_{2}^{s}, D_{(a, a’)}F(x, y) = (b, b’)} \phi(a, a’)\phi’(a’) = \psi(b) \sum_{a’ \in F_{2}^{s}, D_{a’}T(y) = b’} \phi’(a’)$。
    • 由于 $T$ 具有覆盖序列 $(\phi’, \psi’)$,所以上式等于 $\psi(b)\psi’(b’)$,即 $F$ 具有覆盖序列 $(\phi’‘, \psi’‘)$。
覆盖序列在 $M_{n,m}^{*}$ 中的应用
  • 推论4 :设 $F$ 是一个属于 $M_{r + s,m}^{*}$ 的 $(r + s, m)$ - 函数,定义为 $F(x, y) = (F’(x, y), T(y))$,其中 $F’$ 属于 $M_{r + s,p}$ 并满足命题 12 的假设,$T$ 是一个 $(s, m - p)$ 函数。则 $F$ 具有覆盖序列 $(\delta_{F_{2}^{r} \times {0}}, 2^{r - p} \delta_{F_{2}^{p} \times {0}})$。如果 $p = r$ 且 $m - p = s$(即 $F$ 是一个 $(r + s, r + s)$ - 函数),则 $F$ 具有覆盖序列 $(\delta_{F_{2}^{r} \times {0}}, \delta_{F_{2}^{r} \times {0}})$。
  • 证明过程
    • 显然,$T$ 具有覆盖序列 $(\phi’, \psi’) = (\delta_{0}, \delta_{0})$。
    • 根据命题 12,函数 $F’ \in M_{r + s,p}$ 具有覆盖序列 $(\delta_{F_{2}^{r} \times {0}}, 2^{r - p}) = (\delta_{F_{2}^{r} \times F_{2}^{s}}(\cdot, 0), 2^{r - p})$,可重写为 $(\phi(\cdot, 0), \psi)$。
    • 由命题 14 可知,$F$ 具有覆盖序列 $(\delta_{F_{2}^{r} \times {0}}, 2^{r - p} \delta_{F_{2}^{p} \times {0}})$。
覆盖序列与鉴别器

在迭代分组密码的分析中,鉴别器起着关键作用。下面将介绍鉴别器的概念以及如何利用覆盖序列构建鉴别器。

最后一轮攻击中的鉴别器概念
  • 迭代分组密码的定义 :考虑一个由 $(n, n)$ - 函数组成的族 $(F_{k}) {k \in K}$,其中 $K$ 是轮密钥空间。具有块大小 $n$、$R$ 轮和轮函数 $F {k}$ 的迭代分组密码的加密函数定义为:$x^{(i)} = F_{k_{i}}(x^{(i - 1)})$,其中 $x^{(0)}$ 是明文,$x^{(R)}$ 是密文。
  • 最后一轮攻击 :大多数已知或选择明文攻击是分治法,先恢复最后一轮密钥,因此称为最后一轮攻击。在最后一轮攻击中,考虑简化密码,即去掉原始密码最后一轮得到的密码,对应函数 $G_{R - 1} = G_{(k_{1}, \cdots, k_{R - 1})} = F_{k_{R - 1}} \circ \cdots \circ F_{k_{1}}$。
  • 鉴别器的定义 :设 $P_{n}$ 表示 $F_{2}^{n}$ 的所有置换的集合,$F$ 是 $P_{n}$ 的一个子集。对于 $F$ 相对于 $F_{2}^{n}$ 的一个子集 ${x_{0}, \cdots, x_{N}}$ 的鉴别器是一个函数 $D: (F_{2}^{n})^{N + 1} \to F_{2}$,满足存在 $\epsilon > 0$ 使得 $|Pr_{f \in R F}[D(f(x_{0}), \cdots, f(x_{N})) = 1] - Pr_{\pi \in R P_{n}}[D(\pi(x_{0}), \cdots, \pi(x_{N})) = 1]| > \epsilon$。
利用覆盖序列的鉴别器

如果简化密码 $G_{(k_{1}, \cdots, k_{R - 1})}$ 对于所有选择的密钥 $(k_{1}, \cdots, k_{R - 1})$ 都具有相同的覆盖序列 $(\phi, \psi)$,则可以定义鉴别器 $D$ 如下:
- 鉴别器定义 :$D: (F_{2}^{n})^{N + 1} \to F_{2}$,其中 $N$ 是集合 $Supp \phi = {a_{1}, \cdots, a_{N}}$ 的基数,$D$ 定义为 $D(y_{0}, \cdots, y_{N}) = 1 \Leftrightarrow \forall b \in Supp \psi, \sum_{1 \leq i \leq N, a_{i} \in Supp \phi, y_{0} + y_{i} = b} \phi(a_{i}) = \psi(b)$。
- 工作原理 :设 $x_{0}, x_{1}, \cdots, x_{N}$ 是对应于明文 $x, x + a_{1}, \cdots, x + a_{N}$ 的 $N + 1$ 个密文。因为 $G_{(k_{1}, \cdots, k_{R - 1})}$ 对于所有选择的密钥 $(k_{1}, \cdots, k_{R - 1})$ 都具有覆盖序列 $(\phi, \psi)$,所以对于所有选择的密钥 $(k_{1}, \cdots, k_{R - 1})$,有 $\forall b \in Supp \psi, \sum_{1 \leq i \leq N, G_{k_{1}, \cdots, k_{R - 1}}(x) + G_{k_{1}, \cdots, k_{R - 1}}(x + a_{i}) = b} \phi(a_{i}) = \psi(b)$。在最后一轮攻击中,如果猜测的轮密钥 $k$ 等于 $k_{R}$,则 $F_{k}^{-1}(x_{0}), F_{k}^{-1}(x_{1}), \cdots, F_{k}^{-1}(x_{N})$ 分别等于 $G_{k_{1}, \cdots, k_{R - 1}}(x), G_{k_{1}, \cdots, k_{R - 1}}(x + a_{1}), \cdots, G_{k_{1}, \cdots, k_{R - 1}}(x + a_{N})$,此时 $D(y_{0}, \cdots, y_{N}) = 1$。

覆盖序列在密码系统中的稳定性
  • 平衡函数与覆盖序列 :为了用于密码设计,$(n, n)$ - 函数 $F_{k_{i}}$ 必须是平衡的,因此它们至少有一个覆盖序列。如果轮密钥通过加法引入,并且存在一个轮密钥 $k’$ 使得 $F_{k’}$ 具有覆盖序列 $(\phi, \psi)$,则对于其他任何轮密钥 $k \in K$,$(\phi, \psi)$ 仍然是 $F_{k}$ 的覆盖序列。
  • 证明过程 :若轮密钥通过加法引入,则存在一个 $(n, n)$ - 函数 $F$ 使得对于所有 $k \in K \subseteq F_{2}^{n}$ 和所有向量 $x \in F_{2}^{n}$,有 $F_{k}(x) = F(x + k)$。因为 $F_{k’}$ 具有覆盖序列 $(\phi, \psi)$,所以它满足某个关系(这里假设为关系 23),这意味着 $F$ 对于所有向量 $x + k’ \in F_{2}^{n}$ 也满足该关系,即对于所有向量 $x \in F_{2}^{n}$ 满足该关系,所以 $F$ 以及所有函数 $F_{k}: x \to F(x + k)$ 都具有覆盖序列 $(\phi, \psi)$。
总结

本文详细介绍了向量函数的覆盖序列的性质、稳定性以及在密码分析中的应用。通过对覆盖序列的研究,我们可以更好地理解向量函数的特性,为密码系统的设计和分析提供有力的工具。特别是利用覆盖序列构建的鉴别器,为最后一轮攻击提供了新的思路和方法。在实际应用中,需要进一步研究如何更有效地利用这些性质和方法,提高密码系统的安全性和抗攻击能力。

流程图
graph TD;
    A[迭代分组密码] --> B[最后一轮攻击];
    B --> C[简化密码];
    C --> D[鉴别器];
    E[覆盖序列] --> D;
    D --> F[恢复最后一轮密钥];
表格
概念 描述
覆盖序列 用于描述向量函数的一种序列,具有特定的性质和稳定性
鉴别器 用于区分简化密码和随机置换的函数,可利用覆盖序列构建
最后一轮攻击 一种密码分析方法,先恢复最后一轮密钥
简化密码 去掉原始密码最后一轮得到的密码

向量函数与覆盖序列:理论、性质及在密码分析中的应用

鉴别器在密码分析中的作用机制

鉴别器在密码分析的最后一轮攻击中扮演着核心角色,其作用机制基于对简化密码和随机置换的区分。在实际攻击场景中,鉴别器的输入是与选择明文对应的密文,通过对这些密文进行特定的计算和判断,来确定猜测的轮密钥是否正确。

  • 具体操作流程
    1. 选择明文并获取密文 :攻击者选择 $N + 1$ 个明文 $x, x + a_1, \cdots, x + a_N$,经过加密后得到对应的密文 $x_0, x_1, \cdots, x_N$。
    2. 猜测轮密钥 :攻击者对最后一轮密钥 $k_R$ 进行猜测,得到猜测的轮密钥 $k$。
    3. 计算逆函数值 :计算 $F_k^{-1}(x_0), F_k^{-1}(x_1), \cdots, F_k^{-1}(x_N)$,分别记为 $y_0, y_1, \cdots, y_N$。
    4. 应用鉴别器 :将 $y_0, y_1, \cdots, y_N$ 输入鉴别器 $D$,根据鉴别器的定义判断 $D(y_0, \cdots, y_N)$ 的值。如果 $D(y_0, \cdots, y_N) = 1$,则猜测的轮密钥 $k$ 可能是正确的;否则,猜测的轮密钥错误。
覆盖序列与密码系统安全性的关系

覆盖序列的存在和性质对密码系统的安全性有着重要影响。在密码设计中,平衡的 $(n, n)$ - 函数是必需的,因为它们至少有一个覆盖序列。然而,某些覆盖序列的存在可能会使密码系统容易受到攻击。

  • 覆盖序列导致的安全风险 :如果一个密码系统中的轮函数具有特定的覆盖序列,并且这些覆盖序列在不同的轮密钥下保持不变,那么攻击者可以利用这些覆盖序列构建鉴别器,从而进行最后一轮攻击。例如,在一些密码系统中,轮密钥通过加法引入,如果存在一个轮密钥 $k’$ 使得 $F_{k’}$ 具有覆盖序列 $(\phi, \psi)$,那么对于其他任何轮密钥 $k \in K$,$(\phi, \psi)$ 仍然是 $F_{k}$ 的覆盖序列。攻击者可以利用这个特性,对简化密码进行分析,找到合适的鉴别器,进而恢复最后一轮密钥。
提高密码系统安全性的建议

为了提高密码系统的安全性,需要采取一些措施来避免覆盖序列带来的安全风险。

  • 多样化覆盖序列 :设计轮函数时,应尽量使不同轮密钥下的覆盖序列不同。可以通过引入更复杂的密钥调度算法,使得轮函数在不同的轮密钥下表现出不同的特性,从而增加攻击者构建鉴别器的难度。
  • 增加非线性 :提高轮函数的非线性程度可以减少覆盖序列的规律性。非线性函数的覆盖序列更难以预测和分析,从而降低了攻击者利用覆盖序列进行攻击的可能性。
  • 定期更新密码算法 :随着密码分析技术的不断发展,旧的密码算法可能会逐渐变得不安全。因此,定期更新密码算法,采用新的设计理念和技术,可以提高密码系统的安全性。
实际案例分析

以 AES 和 DES 为例,这两个经典的分组密码在设计和应用中都考虑了覆盖序列和鉴别器的问题。

  • AES :AES 的轮函数具有较高的非线性和复杂性,通过使用 S 盒等非线性组件,使得轮函数的覆盖序列难以分析。此外,AES 的密钥调度算法也比较复杂,不同轮密钥下的轮函数表现出不同的特性,增加了攻击者构建鉴别器的难度。
  • DES :DES 虽然是一个较早期的分组密码,但它也采取了一些措施来提高安全性。例如,DES 的轮函数通过置换和替换操作,增加了函数的非线性。然而,随着密码分析技术的发展,DES 逐渐被发现存在一些安全漏洞,其中一些漏洞与覆盖序列和鉴别器有关。
总结与展望

本文深入探讨了向量函数的覆盖序列的性质、稳定性以及在密码分析中的应用。通过对覆盖序列的研究,我们了解到它在密码系统的设计和分析中具有重要作用。利用覆盖序列构建的鉴别器为最后一轮攻击提供了新的方法和思路,但同时也给密码系统的安全性带来了挑战。

在未来的研究中,我们需要进一步探索如何更有效地利用覆盖序列的性质,提高密码系统的安全性和抗攻击能力。例如,可以研究如何设计具有更复杂覆盖序列的轮函数,以及如何开发更强大的鉴别器来检测和防范潜在的攻击。此外,还可以结合其他密码分析技术,如线性攻击、差分攻击等,综合提高密码系统的安全性。

流程图
graph TD;
    A[提高密码系统安全性] --> B[多样化覆盖序列];
    A --> C[增加非线性];
    A --> D[定期更新密码算法];
    B --> E[复杂密钥调度算法];
    C --> F[使用非线性组件];
    D --> G[采用新设计理念];
表格
提高安全性的措施 具体方法
多样化覆盖序列 设计复杂的密钥调度算法
增加非线性 使用 S 盒等非线性组件
定期更新密码算法 采用新的设计理念和技术
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值