ParkWardRR/wbaes-squisher-cryptanalysis

GitHub: ParkWardRR/wbaes-squisher-cryptanalysis

基于 Rust 和 Go 的白盒 AES 密码学分析框架,利用几何挤压变换与差分计算分析绕过非线性编码并提取密钥。

Stars: 0 | Forks: 0

# wbaes-squisher-cryptanalysis ![许可证](https://img.shields.io/badge/license-Blue_Oak-blue.svg) ![构建](https://img.shields.io/badge/build-passing-brightgreen) ![Go 版本](https://img.shields.io/badge/Go-1.21+-00ADD8?logo=go) ![Rust 版本](https://img.shields.io/badge/Rust-1.70+-orange?logo=rust) ![状态](https://img.shields.io/badge/status-active-success) ## 概述 White-Box AES 实现试图通过将加密密钥深度嵌入到混淆的查找表和非线性编码中来隐藏它们。标准的差分故障分析 (DFA) 或 BGE 攻击有时可以提取这些密钥,但它们通常难以应对复杂的、交织的多字节编码。 **Squisher Cryptanalysis** 框架引入了一种新颖的几何方法来进行 White-Box 提取。通过分析整个执行块(span-7 边界)上的输入输出依赖关系,该算法将复杂的非线性编码“挤压”到低维空间中,迫使隐藏的密码学不变量在数学上暴露出来。 本仓库提供了用于执行繁重组合挤压矩阵运算的核心 Rust 引擎,以及用于将攻击集成到模拟目标 trace 的灵活 Go 包装器。 ## 架构 ``` graph TD A[Input Trace Data] --> B(Trace Preprocessing) B --> C{Span-7 Boundary Analysis} C --> D[Dependency Matrix Construction] D --> E((Gaussian Elimination over GF 2)) E --> F[Non-linear Encoding Bypass] F --> G[Extract Cryptographic Invariants] ``` ## 科学基础 该攻击利用了复合 White-Box 表中的结构缺陷。如果编码 $E(x)$ 将字节映射到混淆状态,Squisher 算法会通过注入目标输入并观察由此产生的输出 diff,系统地探索碰撞空间。通过构建依赖矩阵并在 GF(2) 上执行高斯消元法,非线性组件将被完全绕过。 ## 功能 - **大规模 Span 分析:** 能够解析跨越多个 S-box 边界的编码。 - **DCA 集成:** 原生接入差分计算分析 (DCA) pipeline。 - **高性能 Rust 核心:** 组合数学运算通过原生 Rust 后端加速。 ## 用法 请参阅提供的测试套件(例如 `squisher_attack_test.go`),以获取有关如何初始化引擎并向其提供 trace 数据的示例。 ``` engine := squisher.NewEngine() engine.FeedTrace(mockData) key, err := engine.Extract() ``` ## 许可证 本软件基于 [Blue Oak Model License 1.0.0](LICENSE) 提供。 ## 概念解析 想象一个密码锁,它的表盘上没有数字,而是有一些奇怪的符号。此外,转动一个表盘会以不可预测的方式随机移动其他三个表盘(这就是“非线性编码”在软件中的表现)。传统的开锁方法之所以失效,是因为你无法隔离单一动作的影响。 **Squisher** 方法通过绘制出表盘之间所有可能的关系来解决这个问题。通过不断地转动它们并准确记录它们是如何交互的(构建一个庞大的依赖矩阵),它利用高级数学有效地“挤压”或抵消掉那些随机的偏移。一旦这些噪声在数学上被抹平,底层的标准密码锁就会显露出来,从而让我们能够直接读出组合(即密钥)。
标签:Go, Ruby工具, Rust, 云资产清单, 可视化界面, 密码分析, 情报收集, 日志审计, 漏洞研究, 白盒密码学, 网络流量审计, 逆向工程, 通知系统