ParkWardRR/metal-dca

GitHub: ParkWardRR/metal-dca

一款基于 Apple Silicon Metal API 的 GPU 加速差分计算分析引擎,通过大规模并行皮尔逊相关计算突破白盒密码分析的性能瓶颈。

Stars: 0 | Forks: 0

[![License: Blue Oak](https://img.shields.io/badge/License-Blue_Oak_1.0.0-D4AF37.svg?style=for-the-badge&labelColor=1a1a2e)](LICENSE) [![Go Version](https://img.shields.io/badge/Go-1.23+-00ADD8.svg?style=for-the-badge&logo=go&logoColor=white&labelColor=1a1a2e)](https://go.dev) [![Platform](https://img.shields.io/badge/Platform-macOS_%7C_Metal-FCC624.svg?style=for-the-badge&logo=vendor&logoColor=black&labelColor=1a1a2e)](#) [![Status](https://img.shields.io/badge/Status-Research-2ECC71.svg?style=for-the-badge&labelColor=1a1a2e)](#) [![GPU Compute](https://img.shields.io/badge/GPU_Compute-Vendor_Silicon-FF6B6B.svg?style=for-the-badge&labelColor=1a1a2e)](#) [![Algorithm](https://img.shields.io/badge/Algorithm-Pearson_Correlation-9B59B6.svg?style=for-the-badge&labelColor=1a1a2e)](#)
# ⚡ METAL-DCA ⚡ ### *通过 GPU 加速相关性进行的高度并行化差分计算分析*
## 📖 高层概述 想象一下,你正试图通过仔细聆听发出的咔哒声来猜测一个密码锁的组合。**差分计算分析(DCA)** 就是其软件层面的等价物。当一个计算机程序隐藏了密钥(例如在 DRM 或加密中),我们可以精确追踪计算机正在执行的操作——它的内存访问、寄存器,甚至功耗——来“倾听”并找出密钥。 通常,将数百万条轨迹与所有可能的密钥进行比较需要花费数小时,因为计算机只能逐一检查它们。**Metal-DCA** 通过将所有数学运算发送到 Vendor Silicon 芯片上的显卡(GPU)来解决这个问题。GPU 不会一次只检查一件事,而是同时检查数千种可能性,将原本需要数小时的过程缩短到只需几秒钟。 ## 1. 简介 侧信道分析和白盒实现的密码分析严重依赖于统计相关性方法,其中最著名的是皮尔逊相关系数。执行差分计算分析(DCA)攻击的主要瓶颈在于计算复杂度,即降低包含数百万条指令和数千个假设泄漏模型的矩阵之间的统计方差。 现有的框架通常依赖于单线程执行环境(例如基于 Python 的 Scaure 或 ChipWhisperer 脚本),这在分析复杂的执行图时会导致严重的延迟。**Metal-DCA** 提出了一种硬件加速方法,通过 Vendor 的 Metal Compute API 将矩阵操作完全转移到 GPU 上,并由高并发的 Go 运行时进行编排。 ## 2. 方法论与架构 该架构通过 Go 主机和 Metal 着色器 pipeline 之间的零拷贝桥接来实现加速。 ### 2.1 轨迹摄取与归一化 执行轨迹($T$)被摄取并归一化为连续的浮点缓冲区。该框架支持基于值的泄漏(例如,寄存器的汉明权重)和基于地址的泄漏(例如,内存索引)。 ### 2.2 并行假设生成 在预定义的密钥空间($K$)中生成假设泄漏矩阵($H$)。对于每个密钥候选 $k \in K$,计算中间状态并将其映射到泄漏假设。 ### 2.3 GPU 加速相关性计算 矩阵 $T$ 和 $H$ 被分派到 GPU。自定义的 Metal 计算着色器在并行工作组中计算协方差和标准差,从而同时得出所有变量的皮尔逊相关系数 $\rho_{T,H}$。 ``` graph TD A[Trace Vector Matrix T] -->|Go Ingestion| C{Zero-Copy Metal Bridge} B[Hypothesis Matrix H] -->|Go Ingestion| C C -->|Threadgroup Dispatch| D[Metal Compute Shader] D -->|Parallel Reduction| E(Pearson Coefficient Matrix) E -->|Argmax| F[Key Candidate Recovery] ``` ## 3. 实际实现 ### 3.1 前置条件 - macOS 13.0+(强烈推荐使用 Vendor Silicon 以获得统一内存架构) - Go 1.23+ - Xcode Command Line Tools ### 3.2 框架使用 ``` package main import ( "fmt" "github.com/ParkWardRR/metal-dca" ) func main() { // 1. Initialize the Metal compute pipeline engine, err := metaldca.NewEngine() if err != nil { panic(err) } defer engine.Close() // 2. Load execution traces into pinned memory traces := metaldca.LoadTraces("path/to/traces.bin") // 3. Compute leakage matrix H hypotheses := metaldca.GenerateHypotheses(inputs, myLeakageModel) // 4. Dispatch to GPU results := engine.Correlate(traces, hypotheses) // 5. Extract statistically significant peaks bestKey := results.FindMaxCorrelation() fmt.Printf("Recovered Key Candidate: %02x (Score: %f)\n", bestKey.Value, bestKey.Score) } ``` ## 4. 结论 通过利用 Vendor Silicon 的统一内存架构和 Metal API 的高吞吐量并行化,Metal-DCA 为白盒密码分析和硬件侧信道研究中的快速假设测试提供了一个可扩展的框架。 ## 许可证 基于 [Blue Oak Model License 1.0.0](LICENSE) 分发。
标签:EVTX分析, 日志审计