Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
T-Backdoor — 研究代码实现了T-Backdoor,即针对脉冲神经网络的时序触发后门攻击,使用速率、延迟和抖动触发器,无需空间扰动。 | Kitploit
工具/GitHubGitHub/sisl-uri/t-backdoor
机器学习论文与研究学习与教育AI 安全对抗性攻击
GitHubsisl-uri/t-backdoor

T-Backdoor

研究代码实现了T-Backdoor,即针对脉冲神经网络的时序触发后门攻击,使用速率、延迟和抖动触发器,无需空间扰动。

查看仓库
142天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

论文示例代码:'T-Backdoor: Exploiting Temporal Redundancy in Neuromorphic Data for Spike-preserving Backdoor Attacks on SNNs'

摘要

后门攻击是对深度神经网络(DNN)的严重安全威胁,而在脉冲神经网络(SNN)中仍很大程度上未被充分探索。现有攻击主要引入时空触发器,导致中毒样本的脉冲分布相对于其干净对应样本产生偏差。为解决这一局限性,本工作提出了一种针对 SNN 的新型后门攻击,称为 \textbf{T-Backdoor},它使用纯时间触发器(如 \textit{Rate}、\textit{Latency} 和 \textit{Jitter})运行,不引入任何空间扰动,使得脉冲分布的偏移显著更难被检测。通过在三个基准神经形态数据集(N-MNIST、CIFAR10-DVS 和 N-Caltech101)上进行大量实验,并针对七种基线后门防御方法进行评估,我们证明 T-Backdoor 在单目标和多目标设置下均实现了近乎完美的 100% 攻击成功率(ASR),且干净准确率仅有轻微下降,同时对现有的后门检测和缓解技术保持鲁棒。

仓库结构

root@kitploit:~
├── models.py                          # Architectures for all datasets (shared)
├── datasets.py                        # Neuromorphic dataset loading (shared)
│
├── main_single.py                     # 1. Single-target entry point
├── single_poisoned_dataset.py         #    Trigger implementations + loaders
├── single_utils.py                    #    Train/eval loop, saving, plots
├── single_target.sh                   #    Paper runs
│
├── main_multi_target.py               # 2. Multi-target entry point
├── multi_target_poisoned_dataset.py   #    Per-target parameter assignment
├── multi_target_utils.py              #    Per-target ASR tracking, saving
├── multi_target.sh                    #    Paper runs
│
├── main_mtmt.py                       # 3. Multi-trigger multi-target entry point
├── mtmt_poisoned_dataset.py           #    Per-target trigger-type config
├── mtmt_utils.py                      #    Per-target ASR tracking, saving
└── mtmt.sh                            #    Paper runs

环境要求

  • Python 3.11
  • 支持 CUDA 的 GPU(CPU 也可运行,但速度慢到不切实际)
root@kitploit:~
python -m venv venv
source venv/bin/activate

pip install torch torchvision          # CUDA build matching your driver
pip install spikingjelly
pip install numpy scipy matplotlib seaborn tqdm

报告结果所用的参考环境:

数据集设置

下载原始神经形态数据集,并将每个数据集放在 data/ 下各自的子目录中, 目录名必须与 --dataset 的值完全一致:

root@kitploit:~
data/
├── mnist/       # N-MNIST
├── cifar10/     # CIFAR10-DVS
├── caltech/     # N-Caltech101
└── gesture/     # DVS128-Gesture

⚠️ data/ 必须是工作目录中的实际目录

使用方法

1. 单目标(main_single.py)

一个触发器,一个目标类别。

root@kitploit:~
python main_single.py --dataset cifar10 --type latency --delay_frames 1 \
    --T 10 --epochs 100 --epsilon 0.1 --data_dir 'data/'

核心参数

触发器特定参数

设置 --epsilon 0.0 可训练一个干净基线模型。


2. 多目标(main_multi_target.py)

一种触发器类型,N 个目标类别通过触发器的参数值区分。

root@kitploit:~
# Latency: delay 1 -> class 0, delay 3 -> class 1, delay 5 -> class 2
python main_multi_target.py --dataset mnist --type latency --n_targets 3 \
    --trigger_labels 0 1 2 --delay_params 1 3 5 \
    --epsilon 0.2 --T 10 --epochs 10 --data_dir 'data/'

各目标参数。 可以显式给出,或让它们通过 np.linspace 在一个范围内自动分配。 显式列表的长度必须为 --n_targets,并会覆盖范围参数。

自动分配的整数参数(latency、jitter_fixed)通过递增冲突值进行去重, 因此不会有两个目标共享同一个值。

对于 static,各目标通过哪些帧携带补丁来区分——区分它们的是时间轴, 而非补丁外观。

每个 epoch 都会打印各目标的 ASR,以及干净准确率。


3. 多触发器多目标(main_mtmt.py)

每个目标使用不同的触发器类型。

root@kitploit:~
python main_mtmt.py --dataset mnist --T 10 --n_targets 5 \
    --target_types latency latency rate rate jitter_fixed \
    --trigger_labels 0 1 2 3 4 \
    --latency_delays 1 2 --rate_scales 0.5 2.0 --jitter_fixed_shifts 3 \
    --epsilon 0.3 --epochs 100 --data_dir 'data/'

各类型参数列表。 每个列表为该类型的每个目标提供一个条目——使用 --target_types latency latency rate rate jitter_fixed 时,你传入两个延迟、两个速率 和一个交换数:

省略某个列表时,会从匹配的 *_min / *_max 范围自动分配。

内置预设(未给出 --target_types 时使用):

  • --n_targets 3 — static(帧 0..T/3)、latency(--delay)、rate(--scale_factor)
  • --n_targets 5 — 两个 static(不同帧组和位置)、两个 latency (--delay、--delay_2)、一个 rate

任何其他 --n_targets 值都需要 --target_types。


输出

每次运行都会向一个共享 CSV 写入一行,并生成一个自包含的实验目录。

触发器参数会被编码到目录名中(df1 = 延迟 1,sf0.1 = 速率 0.1,ns3 = 3 次交换),因此仅在某个触发器参数上不同的运行不会互相覆盖。


致谢

本代码库的部分内容改编自 Gorka Abad 等人的 Sneaky Spikes 仓库,该仓库伴随论文 "Sneaky Spikes: Uncovering Stealthy Backdoor Attacks in Spiking Neural Networks with Neuromorphic Data"(NDSS 2024)。我们感谢作者公开其代码。


引用

如果您发现本工作对您的研究有用,请考虑引用:

root@kitploit:~
@article{miah2026tbackdoor,
  title   = {T-Backdoor: Exploiting Temporal Redundancy in Neuromorphic Data for Spike-preserving Backdoor Attacks on SNNs},
  author  = {Miah, Abdullah Arafat and Vu, Kevin and Bi, Yu},
  journal = {arXiv},
  year    = {2026}
}

联系方式

如有关于代码的问题或疑问,请提交 GitHub issue 或联系:

  • Abdullah Arafat Miah — [email protected]
  • Yu Bi — [email protected]
下载工具
包版本
Python3.11.10
torch2.11.0+cu128
torchvision0.26.0+cu128
numpy2.2.6
scipy1.16.0
matplotlib3.8.4
seaborn0.13.2
spikingjelly从源码安装的最新版本
参数默认值描述
--datasetgesturemnist、cifar10、caltech、gesture
--typestaticstatic、moving、smart、latency、rate、jitter、jitter_fixed
--epsilon0.1训练集中被投毒的比例
--trigger_label0目标类别
--T10仿真时间步数
--epochs10训练轮数
--batch_size16批大小
--lr0.001学习率
--lossmsemse 或 cross
--optimadamadam 或 sgd
--amp关闭启用自动混合精度
--seed42随机种子
--data_dirdata/数据集根目录
--save_pathexperiments_single输出根目录
--model_pathNone从预训练检查点开始
参数默认值适用于
--delay_frames2latency — 延迟帧数
--scale_factor0.5rate — <1 更慢,>1 更快
--n_shift3jitter_fixed — 交换的帧对数量
--trigger_size0.1static/moving/smart — 补丁大小占宽度的比例
--postop-leftstatic — top-left、top-right、bottom-left、bottom-right、middle、random
--polarity3static/moving/smart — 0=黑色,1=深蓝色,2=绿色,3=浅蓝色
--n_masks2smart — 候选区域数量
--least关闭smart — 以最不活跃区域为目标,而非最活跃区域
--most_polarity关闭smart — 使用该区域中最活跃的极性
参数默认值描述
--typeratestatic、latency、rate、jitter、jitter_fixed
--n_targets3目标类别数量
--trigger_labels[0..n-1]显式目标标签;长度必须等于 --n_targets
--epsilon0.1总预算,在各目标间平均分配
触发器显式自动范围自动默认值
latency--delay_params 1 3 5--delay_min、--delay_max1 … T//2
rate--rate_params 0.3 0.6 0.9--rate_min、--rate_max0.1 … 6.0
jitter--jitter_params 0.05 0.15 0.25--jitter_std_min、--jitter_std_max0.05 … 0.3
jitter_fixed--nshift_params 1 3 5--n_shift_min、--n_shift_max1 … max(n_shift_min+1, T//4)
static——T 被拆分为 n_targets 个帧组
参数默认值描述
--n_targets3目标数量;3 和 5 有内置预设
--target_typesNone每个目标的触发器类型 — static、latency、rate、jitter、jitter_fixed。长度必须等于 --n_targets。会覆盖预设
--trigger_labels[0..n-1]目标标签
--epsilon0.2总预算,在各目标间平均分配
参数适用于
--latency_delays 1 2每个 latency 目标
--rate_scales 0.5 2.0每个 rate 目标
--jitter_fixed_shifts 3每个 jitter_fixed 目标
--jitter_stds 0.1 0.3每个 jitter 目标
--static_positions top-left bottom-right每个 static 目标
--static_polarities 3 1每个 static 目标
设置汇总 CSV实验目录
单目标<save_path>/results.csv<dataset>_<type>_<eps>_<size>_<param>_<seed>/
多目标<save_path>/multi_target_results.csvmulti_<type>_<dataset>_<n>targets_<labels>_eps<eps>_<params>_seed<seed>/
MTMT<save_path>/mtmt_results.csvmtmt_<dataset>_<n>t_<params>_eps<eps>_seed<seed>/