sharafu-sblsec/affine-gf2-cipher-solver

GitHub: sharafu-sblsec/affine-gf2-cipher-solver

该工具利用 GF(2) 线性代数和高斯消元法,从结构退化为仿射变换的脆弱分组密码中恢复明文,解决 CTF 密码学挑战。

Stars: 0 | Forks: 0

# CTF 仿射 GF(2) 密码求解器 这是一个针对 CTF 挑战的求解器,通过利用其意外产生的在 **GF(2)** 上的仿射结构,从易受攻击的分组密码中恢复明文。 本仓库包含报告中使用的漏洞利用脚本: 该挑战密码乍看之下似乎是安全的,因为它使用了: * 依赖于密钥的 S-Box * 比特置换 * 100 轮加密 * 自定义哈希构造 然而,每个组件在 GF(2) 上要么是**线性的**,要么是仿射的,导致整个密码退化为单一的仿射变换: ``` E(x) = Mx \oplus c ``` 求解器重建该变换,并通过在 GF(2) 上求解线性方程组来恢复原始明文。 ## 功能 * 验证 S-Box 是否为仿射。 * 重建完整的 `256 × 256` 仿射矩阵。 * 恢复仿射常量向量。 * 在 GF(2) 上使用高斯消元法。 * 无需暴力破解即可恢复明文。 ## 用法 ``` python3 solver.py ``` 目标摘要: ``` 1d6a2172025e1858754075123b6658532d1a4e775e1f43336e227d5a4529734f ``` ## 攻击概述 1. 验证 S-Box 是否满足: ``` S(a ⊕ b) = S(a) ⊕ S(b) ⊕ S(0) ``` 2. 恢复仿射常量: ``` c = E(0) ``` 3. 加密所有基向量以重建矩阵 `M`。 4. 求解: ``` Mx = y ⊕ c ``` 在 GF(2) 上使用高斯消元法。 5. 恢复原始明文。 ## 完整技术分析 有关漏洞、数学背景和攻击方法的完整说明,请阅读完整的分析文章: ### [密码分析:使用 GF(2) 线性代数恢复仿射加密方案](https://apt2002.medium.com) ## 免责声明 本仓库仅供教育和研究目的。它演示了当缺乏非线性时,看似复杂的密码学构造是如何失效的。 在生产系统中,请始终使用标准化且经过同行评审的密码学原语。

如果您觉得这个项目有用,请考虑为该仓库点赞 (star)。

标签:GF(2)线性代数, Python, 密码分析, 密码学, 手动系统调用, 无后门, 漏洞利用脚本, 逆向工具