2.1 概念
线性密码分析由Matsui于1993年提出,是一种已知明文攻击。它试图寻找S盒输入比特和输出比特之间一个概率性的线性近似关系。如果存在一个线性关系,其成立的概率 \(p ≠ 1/2\),那么偏差 \(|p - 1/2|\) 越大,攻击就越有效。
非线性度则衡量了S盒的输出与所有线性函数和仿射函数之间的距离
2.2 严谨的数学定义
首先,我们将S盒的每个输出比特函数看作一个布尔函数 \(f: F_2^n → F_2\)
-
线性函数与仿射函数:\(n\)元线性函数是所有形式为 \(L_ω(x) = ω·x\)(点积模2)的函数,其中\(ω ∈ F_2^n\)是掩码。仿射函数是线性函数异或一个常数\(c\),即 \(A(x) = ω·x \bigoplus c\)。全体\(n\)元仿射函数的集合记为 \(A_n\)
-
汉明距离:两个布尔函数\(f\)和\(g\)之间的汉明距离 \(d_H(f, g)\) 是使得 \(f(x) ≠ g(x)\) 的输入\(x\)的个数
-
布尔函数的非线性度:定义为该布尔函数与所有仿射函数之间的最小汉明距离:
\[N_f = min_{l ∈ A_n} d_H(f, l) \]直观上,它表示\(f\)与“最近”的线性/仿射函数有多不像
-
S盒的非线性度:对于一个S盒,其非线性度定义为它所有非零线性组合输出布尔函数的非线性度的最小值
\[N_S = min_{ω ∈ F_2^m \ {0}} N_{f_ω} \]其中 \(f_ω(x) = ω·S(x)\),是S盒输出的一个线性组合
-
或者定义集合 \(N_S(u, v) = \{ x \in GF(2)^n \mid u \cdot x = v \cdot S(x) \}\)为S盒的非线性度
2.3 密码学意义与理想值
- 值越大越好:\(N_S\)的值越大,意味着S盒的输出与任何线性函数都相差甚远,线性分析就越难找到有效的近似
- 理想情况:存在一类称为Bent函数的布尔函数,可以达到最大的非线性度 \(2^{n-1} - 2^{n/2-1}\)(当\(n\)为偶数时)。然而,Bent函数不是平衡的,这不适用于S盒的所有分量函数
- 上界:对于平衡的\(n\)元布尔函数,其非线性度上界为 \(2^{n-1} - 2^n{n/2-1}\)。AES的S盒各分量函数的非线性度为112,非常接近8-bit平衡函数的上界120,表现出极强的非线性
2.4 计算方法与 Walsh谱
walsh谱:https://www.cnblogs.com/luminescence/p/19165492
非线性度通常通过计算布尔函数的Walsh-Hadamard变换(Walsh谱) 来得到
Walsh变换定义为:
它衡量了函数\(f(x)\)与线性函数\(ω·x\)的相关性。
非线性度与Walsh谱的关系为:
因此,计算非线性度就转化为计算Walsh谱绝对值的最大值。
2.5 权衡与应用
在实际的密码设计中,差分均匀度和非线性度并非孤立存在,设计者需要在它们之间,以及与其他指标(如代数次数、代数免疫度、实现效率)之间进行精妙的权衡。
-
AES的S盒:是权衡艺术的典范。它基于有限域\(GF(2⁸)\)上的逆运算(\(x → x⁻¹\))和一个仿射变换构造而成。这种组合使其同时具备了:
- 极低的差分均匀度:4
- 很高的非线性度:112
- 高代数次数:7
从而能有效抵抗差分、线性和代数攻击。
-
对立与统一:有时提高一个指标可能会轻微削弱另一个指标。设计者的目标是找到一个“甜蜜点”,使得两个指标都足够强大,足以抵御已知的攻击
2.6 例题
S盒函数真值表
| x | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
|---|---|---|---|---|---|---|---|---|
| s(x) | 011 | 111 | 010 | 100 | 001 | 101 | 000 | 110 |
N(u,v)计算
我们计算u = 100的一部分
不同v值下,u·x与v·s(x)的对应关系:
| v | x=000 S(x)=011 | x=001 S(x)=111 | x=010 S(x)=010 | x=011 S(x)=100 | x=100 S(x)=001 | x=101 S(x)=101 | x=110 S(x)=000 | x=111 S(x)=110 |
|---|---|---|---|---|---|---|---|---|
| 000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 001 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
| 010 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
| 011 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 |
| 100 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 |
| 101 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
| 110 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
| 111 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
| \(u\times x\) | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
比较\(u·x\)与\(v·s(x)\)可得分别为\(4,4,2,6,4,4,2,2\)