ericyoc/3d_printer_sidechannel_poc

GitHub: ericyoc/3d_printer_sidechannel_poc

该项目提供了一套完整的研究流水线,用于评估FDM 3D打印机在开启AMNC防护后,声学与振动旁路通道的信息泄露风险。

Stars: 0 | Forks: 0

# 3D 打印机中的旁路攻击绕过防护 [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/) [![Google Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/) [![数据集: Zenodo](https://img.shields.io/badge/dataset-Zenodo%2013329934-blue.svg)](https://zenodo.org/records/13329934) ## 概述 本代码库包含了论文 **"Side-Channel Attacks Bypass Protection in 3D Printers"** 的完整研究 pipeline —— 这是对 Active Motor Noise Cancellation (AMNC) 作为抵御 FDM 3D 打印机声学和振动旁路分析的硬件对策的首次实证评估。 **核心发现:** AMNC 中和了声学旁路(12.50% 的准确率,处于 8.33% 的随机基线水平),但未能覆盖振动通道。振动通道仍然能够对打印对象进行分类:**使用汇总统计约为 31%**,而**使用全序列时间模型约为 61%**。该信号是由 amplitude 驱动的,且具有设备特异性,不支持完整的几何重建。 ## 结果摘要 | 方法 | 准确率 | 备注 | |---|---|---| | 随机猜测 (1/12) | 8.33% | 基线 | | 声学 (开启 AMNC) | 12.50% | ≈ 随机水平 —— AMNC 中和了声学 | | 振动 —— 汇总,混合 | 31.25% | 置换 *p* = 0.005 | | 振动 —— A1 Mini 内部 | 36.11% | 设备特异性 | | 振动 —— P1P 内部 | 47.22% | 设备特异性 | | 振动 —— 全序列时间(有序) | **60.65%** | 最强结果 | | 时间 —— 乱序控制 | 32.64% | 证实了序列结构 | 有序(60.65%)与乱序(32.64%)时间模型之间约 28 个百分点的差距,证实了存在与打印进程相关的真实序列成分。 ## 振动通道携带的信息 特征消融实验将信号定位到振动 **amplitude**,而非波形形状: | 特征子集 | 准确率 | |---|---| | 全部 15 个汇总特征 | 31.25% | | 仅幅度 (12) | 29.17% | | 仅频率 (3) | 6.25% | | 仅 std + rms (6) | 27.08% | Top 特征 (RF,平均不纯度减少):`Z_mean`, `Z_rms`, `Y_p2p`, `Y_std`, `Z_p2p` —— 全部为 amplitude 统计量。 ## 数据集 我们使用了 **Madamopoulos–Tsoutsou 2024 数据集**(开放获取): - **打印机:** Bambu Lab P1P (core-XY) 和 A1 Mini (bed-slinger) —— 均配备了 AMNC - **对象:** 12 个几何形状多样化的模型(直线、圆形、圆弧 toolpaths) - **记录:** 144 组同步的音频 + 加速度计数据对(每台打印机 72 组) - **格式:** `.mp3` / `.caf` 音频,`.csv` 加速度计(X, Y, Z 轴),`.gcode` ground truth ## 代码库结构 ``` ├── 3D_Printer_SideChannel_Study.ipynb # Main Google Colab notebook └── figures/ # Publication figures (PNG, 300 DPI) ├── fig1_accuracy.png # Accuracy by method ├── fig2_amplitude_vs_shape.png # Amplitude vs frequency ablation ├── fig3_temporal_order.png # Ordered vs order-shuffled temporal ├── fig4_feature_importance.png # Top vibration features ├── fig5_confusion.png # Confusion matrix (pooled vibration) └── fig6_crossprinter.png # Cross-printer transfer ``` ## 实验设计 该 pipeline 运行了五项分析: 1. **AMNC 下的声学** —— 在激活 AMNC 的情况下对声学特征进行分类,外加一个模拟陷波滤波器和品质因数扫描 2. **振动 —— 汇总特征** —— 混合及单打印机内部的对象分类 3. **特征消融** —— 将 amplitude 与频率内容隔离 4. **全序列时间模型** —— 有序与乱序的准确率对比 5. **跨打印机迁移** —— 在一台打印机上训练,在另一台上测试 ## 方法 ### 记录配对 每次记录会话将其音频与自身的加速度计捕获数据存储在一起。每个音频文件都与其 **自身会话文件夹中** 的 `.csv` 捕获数据配对,产生 144 组独立的音频-振动数据对(每台打印机的每个对象 6 组)。每次记录被视为一个带标签的样本,并且源自同一次记录的所有样本都被分在一组,以确保同一次记录不会被拆分到不同的交叉验证 fold 中。 ### 特征提取 | 通道 | 特征 | 维度 | |---|---|---| | 声学 | 13 个 MFCC + 频谱质心/带宽/滚降点/ZCR (mean + std) | 32 | | 振动(汇总) | mean、std、RMS、peak-to-peak、主导 FFT 频率 × 3 个轴 | 15 | | 振动(时间) | 分段 std/RMS/p2p/主导频率 × 3 个轴,120 个有序分段 | 120 × 12 | ### AMNC 防御模拟 AMNC 被建模为针对步进电机谐振的陷波滤波器组: - **中心频率:** 120, 180, 240, 300, 360 Hz - **品质因数:** Q = 30(在 Q ∈ {15, 30, 60} 处检查灵敏度) - **实现:** `scipy.signal.iirnotch` (二阶 IIR) AMNC 滤波器灵敏度(声学准确率):Q15 = 13.19%, Q30 = 9.72%, Q60 = 10.42% —— 在所有设置下均接近随机水平。 ### 分类 - **汇总特征:** Random Forest(200 个估计器),StandardScaler pipeline - **时间特征:** 在完整的 120 步序列上应用膨胀 1D-CNN,在 3 个随机种子上取平均值 - **消融:** Gradient Boosting, SVM (RBF, C=10), KNN (k=5) - **验证:** 分组 5-fold 交叉验证(每次记录一个样本) ### 统计检验 - 比例的 Wilson 置信区间 - 针对 8.33% 随机基线(1/12 个类别)的单侧二项式检验 - 标签置换零假设(200 次置换) - 时间模型的乱序控制 ## 消融结果 在振动汇总特征(混合)上的分类器消融: | 分类器 | 准确率 (%) | |---|---| | Random Forest | 31.25 | | Gradient Boosting | 21.53 | | SVM (RBF) | 9.03 | | KNN (k=5) | 11.11 | 跨打印机迁移(振动):A1 Mini → P1P = 11.11%,P1P → A1 Mini = 12.50% —— 接近随机水平,证实了其设备特异性。 ## 应用与安全影响 - **AMNC 仅是一项针对声学的防御措施。** 它中和了其目标通道,但对结构振动毫无影响。要缓解振动通道,需要采取专门的措施 —— 底盘级别的隔离(阻尼脚垫、防振支架)、使运动与 toolpath 几何形状去相关的随机化步进加速曲线,或者主动振动掩盖 —— 每种措施都会在打印质量、速度或硬件成本之间进行权衡。 - **设备特异性是一种防御手段。** 振动特征无法在不同打印机架构之间迁移(跨打印机准确率为 11–12.5%),因此异构打印机群会增加攻击者的单设备校准成本,并提供同构打印机群所不具备的天然部分保护。 - **有限的威胁。** 所展示的能力是封闭集的*识别* —— 确认已知设计集合中的哪一个位于打印床上 —— 而非对未知几何形状的重建。这支持针对已知设计目录的监控或间谍活动。时间结果表明,与几何相关的信息留存到了振动通道中,这使得重建(例如,利用 AMNC 未能抑制的磁性/电源通道)成为自然的攻击升级路径。 ## 环境配置与复现 ### 依赖要求 ``` pip install librosa scikit-learn pandas numpy matplotlib seaborn scipy pydub statsmodels zenodo-get pymupdf torch ``` ### Google Colab(推荐) 1. 在 Google Colab 中打开 `3D_Printer_SideChannel_Study.ipynb` 2. 挂载你的 Google Drive 3. notebook 会将数据集从 Zenodo 下载到 `MyDrive/3dprinter_sidechannel/` 4. 结果和图表将保存到 `MyDrive/3dprinter_sidechannel/results_v2/` 5. 按顺序运行所有单元格 ### 本地执行 ``` git clone https://github.com//3dprinter-sidechannel cd 3dprinter-sidechannel pip install -r requirements.txt # 从 https://zenodo.org/records/13329934 手动下载 dataset # 在 notebook cell 2 中更新 DRIVE_BASE path jupyter notebook 3D_Printer_SideChannel_Study.ipynb ``` ## 引用 请引用该数据集: ``` @misc{madamopoulos2024_zenodo, author = {Madamopoulos, Christos and Tsoutsos, Nektarios Georgios}, title = {{3D} Printer Audio and Vibration Side Channels}, year = {2024}, publisher = {Zenodo}, doi = {10.5281/zenodo.13329934} } ``` ## 许可证 该数据集在 Zenodo 上受其自身的 CC BY 4.0 许可证约束。
标签:3D打印, Apex, NoSQL, Python, 侧信道攻击, 信号处理, 凭据扫描, 无后门, 机器学习, 硬件安全, 逆向工具