Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
T-Backdoor — スパイキングニューラルネットワークに対する時間的トリガーバックドア攻撃であるT-Backdoorを実装した研究コード。空間的摂動を用いず、rate、latency、jitterトリガーを利用する。 | Kitploit
ツール/GitHubGitHub/sisl-uri/t-backdoor
機械学習論文と研究学習と教育AIセキュリティ敵対的攻撃
GitHubsisl-uri/t-backdoor

T-Backdoor

スパイキングニューラルネットワークに対する時間的トリガーバックドア攻撃であるT-Backdoorを実装した研究コード。空間的摂動を用いず、rate、latency、jitterトリガーを利用する。

リポジトリを見る
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}といった純粋に時間的なトリガーのみを用いて動作し、空間的な摂動を一切導入しないため、スパイク分布のシフトを検出することが著しく困難になる。3つのベンチマーク神経形態データセット(N-MNIST、CIFAR10-DVS、N-Caltech101)での広範な実験と、7つのベースラインバックドア防御手法に対する評価を通じて、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)

1つのトリガー、1つのターゲットクラス。

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)

1つのトリガータイプで、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)は、衝突時にインクリメントすることで重複排除されるため、2つのターゲットが同じ値を共有することはない。

static の場合、ターゲットはどのフレームがパッチを運ぶかによって分離される — パッチの外観ではなく時間軸がそれらを区別する。

ターゲットごとの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/'

タイプごとのパラメータリスト。 各リストはそのタイプのターゲットごとに1つのエントリを持つ — --target_types latency latency rate rate jitter_fixed の場合、2つの遅延、2つのレート、1つのシフトを渡す:

リストを省略すると、対応する *_min / *_max 範囲から自動割り当てされる。

組み込みプリセット(--target_types が指定されていない場合に使用):

  • --n_targets 3 — static(フレーム 0..T/3)、latency(--delay)、rate(--scale_factor)
  • --n_targets 5 — 2つの static(異なるフレームグループと位置)、2つの latency(--delay、--delay_2)、1つの 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>/