Feistel结构自设计分组密码的安全性分析
SEF v2 分组密码安全性分析报告
摘要
本报告针对SEF v2分组密码算法的安全性进行了深入评估。该算法采用16轮Feistel网络结构,轮函数融合了AES S-Box替换层与MDS矩阵线性扩散层。通过构建差分分布表(DDT)、线性逼近表(LAT)以及积分测试,验证了该算法对抗差分攻击、线性攻击及积分攻击的强度。分析结果表明,SEF v2在仅3-4轮迭代后即达到极高的安全阈值,16轮的设计提供了充足的安全余量,可有效抵御现有主流密码分析手段。
代码仓库:https://gitee.com/cloud-lumiere/Secure-Enhanced-Feistel
算法结构概述
SEF v2基于Feistel结构,将128位数据分为左右两部分 \(L_0\) 和 \(R_0\)。第 \(i\) 轮的变换如下:
参数
- 结构类型:平衡 Feistel 结构
- 分组长度:128 位(64 位半块)
- 密钥长度:128 位
- 轮数设计:16 轮
- 轮函数类型:SPN-like 结构
组件 - S盒:使用 AES S-Box(8×8 双射)
- 扩散层:8×8 MDS 矩阵(GF(2⁸) 上)
- 密钥扩展:类似 AES-128 的密钥扩展
- 轮常数:16 个 64 位轮常数
其中轮函数 \(F\) 的核心步骤包括:
- 密钥加:\(X = R \oplus K_i\)
- 非线性替换:\(Y = \text{SBox}(X)\)
- 线性扩散:\(Z = M_{MDS} \times Y\) (在GF(2^8)上)
- 轮常数加:\(W = Z \oplus RC_i\)
分析配置
分析方法
| 分析类型 | 测试方法 | 测试轮数 | 关键指标 |
|---|---|---|---|
| 差分分析 | DDT构建+束搜索 | 1-4轮 | 差分概率 |
| 线性分析 | LAT构建+束搜索 | 1-4轮 | 相关系数 |
| 积分分析 | 平衡性测试 | 1-6轮 | 平衡字节 |
测试环境
- 测试次数:差分/线性多次采样,积分4次重复
- 数据复杂度:差分/线性使用束搜索,积分使用256明文集合
- 评估标准:攻击复杂度 ≥ 2¹²⁸ 为安全阈值
差分分析
理论基础
差分攻击利用输入差分 \(\Delta X\) 导致特定输出差分 \(\Delta Y\) 的概率。
算法的安全性依赖于高概率差分特征的稀缺性。
代码实现与分析
代码 ddt1.py 构建了S-Box的差分分布表,并使用束搜索寻找最佳路径。
def build_sbox_ddt() -> List[List[int]]:
ddt = [[0] * 256 for _ in range(256)]
for x in range(256):
sx = AES_SBOX[x]
for y in range(256):
sy = AES_SBOX[y]
dx = x ^ y
dy = sx ^ sy
ddt[dx][dy] += 1
return ddt
关键发现:
- S-Box特性:AES S-Box的最大单轮差分概率仅为 \(4/256 = 2^{-6}\)。
- 多轮搜索结果:
- 1轮:单字节活跃,最大概率 \(2^{-6}\)。
- 2轮:经过MDS矩阵扩散,活跃字节增多,概率约为 \(2^{-54}\)。
- 3轮:全状态活跃,最佳路径概率降至约 \(1.262 \times 10^{-29}\) (即 \(2^{-96}\))。
公式推导:
若每一轮的有效活跃S-盒数量为 \(k\),单个S-盒最大概率为 \(p_{max}\),则 \(r\) 轮后的概率上界为:
由于MDS矩阵的扩散性,第3轮后 \(k_i \approx 8\)(全活跃)。3轮累计概率:
(注:实际搜索结果为 \(2^{-96}\),虽优于上界但远低于安全阈值 \(2^{-80}\))。
安全性结论
SEF v2 的3轮概率 \(2^{-96}\) 已远低于攻破所需的数据复杂度。对于16轮版本,差分攻击所需的密文对数量将超过 \(2^{128}\),算法抗差分攻击能力极强。
线性分析
理论基础
线性攻击寻找输入掩码 \(\Gamma_{in}\) 和输出掩码 \(\Gamma_{out}\),使得:
其中 \(\epsilon\) 为线性偏差。
代码实现与分析
代码 lat1.py 计算了线性逼近表,并分析掩码传播。
def build_sbox_lat() -> List[List[int]]:
lat = [[0] * 256 for _ in range(256)]
for a in range(256):
for b in range(256):
count = 0
for x in range(256):
linear_value = dot_product(a, x) ^ dot_product(b, AES_SBOX[x])
if linear_value == 0:
count += 1
lat[a][b] = count - 128 # 存储偏差项 (count - 128)
return lat
关键发现:
- S-Box特性:AES S-Box的最大线性偏差为 \(\pm 32\)(即 \(\epsilon_{max} = 2^{-3}\))。
- 多轮累积:
- 2轮累积优势(log2|corr|)约为 -30。
- 4轮累积优势降至约 -72。
公式推导:
根据Matsui的线性堆积引理,假设各轮独立,多轮累积偏差 \(\epsilon_{total}\) 满足:
转换为对数优势 \(Adv = \log_2 |\epsilon|\):
对于16轮,若每轮保持较优的偏差传播,总优势将极其微小。攻击所需的数据复杂度约为 \(|\epsilon_{total}|^{-2}\)
安全性结论
线性攻击的复杂度与偏差的平方成反比。当累积优势低于 -64 时,攻击复杂度将超过 \(2^{128}\)。SEF v2 在4轮时已达 -72,因此 16轮设计对线性攻击完全免疫。
积分/平方分析
理论基础
积分攻击通过选取特定属性的明文集合(如一个字节遍历所有值,其余固定),观察经若干轮加密后输出字节的平衡性(即集合内所有值的异或和是否为0)。
代码实现与分析
代码 integral.py 验证了字节的平衡性。
def bytes_xor_accumulate(values: List[Block128]) -> List[int]:
acc = [0] * 16
for v in values:
b = split_128bit_to_bytes(v)
for i in range(16):
acc[i] ^= b[i]
return acc
关键发现:
- 第1-2轮:所有输出字节保持平衡(和为0)。
- 第3轮:仅左半部分(前8字节)保持平衡。
- 第4轮:所有字节的平衡性均被破坏(和不为0)。
Feistel结构影响:平衡特性可保持 n-1 轮
- 区分器存在轮数:3轮
- 最小安全轮数:4轮(无积分区分器)
- 推荐安全轮数:6轮(完全抵抗积分攻击)
安全性结论
积分区分器在第4轮失效。由于Feistel结构的特性及MDS矩阵的强扩散,输入集合的结构在经过多轮混合后完全消失。SEF v2 的16轮迭代完全防御积分攻击。
综合评估
| 分析维度 | 理论安全阈值 (近似) | SEF v2 实际表现 (3-4轮) |
|---|---|---|
| 差分分析 | \(P < 2^{-80}\) | \(P \approx 2^{-96}\) (3轮) |
| 线性分析 | \(\epsilon< 2^{-64}\) | \(\epsilon\approx 2^{-72}\) (4轮) |
| 积分分析 | 存在平衡字节 | 无平衡字节 (4轮) |
各类攻击对比
| 攻击类型 | 最小安全轮数 | 推荐轮数 |
|---|---|---|
| 差分攻击 | 4轮 | 8轮 |
| 线性攻击 | 4轮 | 8轮 |
| 积分攻击 | 4轮 | 6轮 |
| 综合评估 | 4轮 | 8轮 |
组件安全性贡献
| 组件 | 安全性贡献 | 抗攻击类型 | 改进建议 |
|---|---|---|---|
| AES S-Box | 高非线性、低差分/线性概率 | 差分、线性、代数 | 无,已最优 |
| MDS矩阵 | 强扩散性、高分支数 | 差分、线性、积分 | 可优化系数 |
| 轮常数 | 破坏对称性 | 滑动、相关密钥 | 增强非线性 |
| Feistel结构 | 实现简单、解密相同 | 结构攻击 | 增加轮数弥补 |
与标准算法的比较
| 特性 | SEF v2 (16轮) | AES-128 (10轮) | 3DES (48轮) |
|---|---|---|---|
| 结构 | Feistel+SPN | SPN | Feistel |
| S盒 | AES S-Box | AES S-Box | DES S-Box |
| 扩散 | MDS矩阵 | MixColumns | 置换 |
| 实际轮数 | 16轮 | 10轮 | 48轮 |
性能预估
| 操作 | 单轮复杂度 | 16轮总复杂度 | 性能预估 |
|---|---|---|---|
| S盒查表 | 8次/轮 | 128次 | 极快 |
| MDS矩阵 | 64次乘法 | 1024次乘法 | 中等 |
| 密钥扩展 | 类似AES | 一次 | 快 |
| 总吞吐量 | - | ~40-60 cycles/byte | 良好 |

浙公网安备 33010602011771号