Skip to content

Latest commit

 

History

110 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IOTWFST — IoT WFST Side-Channel Attack Framework

English | 简体中文

基于**加权有限状态转换器(WFST)图神经网络(GNN)**的物联网侧信道攻击框架,用于研究和评估 IFTTT / TAP(Trigger-Action Platform)等智能家居平台中用户自动化规则的隐私泄露风险。

⚠️ 本项目仅供学术研究与安全评估使用,请勿用于任何未经授权的攻击行为。

项目概述

本框架模拟一种跨应用侧信道攻击:攻击者利用 IFTTT / TAP 等平台的公开规则描述(Applet 名称、触发器与动作说明、流行度等元数据),结合部分已知设备的行为数据,推断用户的私有自动化规则(触发-动作对),从而揭示智能家居场景下用户行为模式的隐私泄露风险。

威胁模型

  • 攻击者能力:可观察到部分(已知)设备上公开可见的触发/动作事件流,可访问 TAP 平台的公开 Applet 描述与流行度数据;
  • 攻击目标:推断用户私有规则(Trigger → Action 对),包括级联规则(多设备动作链)与隐私规则(secretRule,从训练数据中剔除以模拟真实隐私场景);
  • 评估指标:Top-K 规则推断的召回率(Recall)与精确率(Precision)

两种推断方法

方法 入口 核心技术
WFST + 传统 ML main.py / main2.py 加权有向图 + scikit-learn(决策树 DT / 随机森林 RF / AdaBoost)
WFST + GNN mainGNN.py 图卷积网络(GraphSAGE / GCN / GAT)异构图链接预测

攻击流程

INIT → Dataset Generation → GNN Dataset Convert → Preprocess → Train → Attack + Evaluation
 ①         ②                      ③                    ④           ⑤           ⑥
  1. 环境初始化Init.py):随机选择设备与规则,划分攻击方已知/未知设备,构建设备对象图;
  2. 规则数据集生成RuleDatasetGenerator.py):构建含级联规则与隐私规则(secretRule)的攻击数据集;
  3. GNN 图转换GNNDataset.py):规则数据转换为 DGL 异构图(设备 = 节点,规则 = 带类型标签的边);
  4. 图预处理data_preprocess.py / data_splitter.py):节点 one-hot 编码、边特征、正负样本采样与 train/test 划分;
  5. 模型训练TAGNN.py / model.py / MLTraining.py):GNN 编码器 + MLP 链接预测器,或 DT/RF/AdaBoost 分类器;
  6. 攻击与评估AttackRule.py / EventAttack.py / output_result.py):Top-K 规则推断,计算召回率/精确率。

数据集

目录 内容
Applets/ 从 TAP 平台爬取的 55 个服务的 Applet 规则原始数据(CSV),含名称、描述、触发器、动作、设备与流行度
TA/ 54 个常用设备的 Trigger / Action / State 定义(Trigger.csv、Action.csv、State.ini)
TA_Popular/ 50 个热门设备的数据子集(对应 popularDeviceList.npy
TA_ALL/ 771 个全量设备数据
tools/ 辅助工具脚本(数据爬取、设备列表生成、GNN 测试、演示等)

运行实验时会自动生成 Environment/Attack/Model/log/result/ 等目录(已在 .gitignore 中忽略),无需手动创建。

快速开始

环境要求

  • Python 3.10+
  • macOS(Apple Silicon)或 Windows(NVIDIA / AMD / Intel GPU)或 Linux

安装

# macOS(Apple Silicon,自动启用 MPS 加速)
pip install -r requirements_macos.txt

# Windows(NVIDIA GPU 自动启用 CUDA)
pip install -r requirements_windows.txt

# 可选:Windows 上为 AMD / Intel GPU 启用 DirectML 加速
pip install torch-directml

运行

# GNN 实验(默认 kdn = 13~18,runNum = 100,结果写入 result/experimentGNN.csv)
python mainGNN.py

# ML 实验(决策树/随机森林/AdaBoost,结果写入 result/experiment.csv)
python main.py
python main2.py

# 测试 / 调参入口
python test.py

配置

编辑 TAWFST.ini

[INIT]
DeviceListName = popularDeviceList.npy   # 设备总列表
DeviceNumber = 20                        # 选取设备数量
RulesNumber = 50                         # 选取规则数量
KnownDevicesNumber = 20                  # 攻击方已知设备数(最少 3)
DatasetLength = 10000                    # 数据集长度
MLRuleNum = 2                            # ML 规则数量
modelNum = 4                             # ML 模型数量
userNum = 15                             # GNN 模拟用户数量
secretRuleNum = 10                       # 隐私规则数量

[ATTACK]
topK = 0.1                               # Top-K 边筛选比例
runNum = 100                             # 实验重复次数
maxDepth = 3                             # DFS 路径最大深度
topkPath = 5                             # 恢复规则路径的最大数量
ATWeight = 10000                         # 触发-动作硬连接权重
defaultWeight = 1                        # 规则默认权重
recoverNum = 2                           # ML 恢复数据集倍率
mslrate = 10                             # ML 恢复规则数量

硬件加速

框架通过 utils.get_device() 自动检测并使用最佳可用计算设备:

优先级: CUDA (NVIDIA) → MPS (Apple Silicon) → DirectML (AMD/Intel) → CPU
平台 GPU 厂商 自动使用的加速方式
Windows / Linux NVIDIA CUDA
macOS Apple Silicon MPS
Windows AMD / Intel DirectML(需安装 torch-directml
所有 无 GPU CPU

项目结构

IOTWFST/
├── mainGNN.py               # GNN 攻击实验主入口
├── main.py / main2.py       # ML 攻击实验入口(main2 使用 MLV2 变体)
├── test.py                  # 测试 / 调参入口
├── TAWFST.ini               # 主配置文件
├── requirements*.txt        # 平台环境依赖文件
│
├── Init.py                  # 环境初始化(设备 / 规则 / 已知设备划分)
├── AttackRule.py            # WFST 攻击规则推断(加权边图 + DFS 路径搜索)
├── RuleDatasetGenerator.py  # 规则数据集生成(含级联规则 / 隐私规则)
├── EventAttack.py           # 事件攻击推断
│
├── GNNDataset.py            # GNN 数据集构建(CSV → DGL 图 / PyG 数据集)
├── data_preprocess.py       # 图数据预处理(one-hot 编码、边特征、图构建)
├── data_splitter.py         # 训练 / 测试划分与正负样本采样
├── TAGNN.py                 # GNN 集中式训练主流程
├── model.py                 # GNN 模型定义(GraphSAGE / GCN / GAT + 链接预测器)
├── GNNTraining.py           # GNN 训练占位接口(实际训练在 TAGNN.py)
├── output_result.py         # GNN 推理输出(Top-K 规则推荐)
│
├── MLDatasetGenerator.py    # ML 数据集生成
├── MLTraining.py            # ML 模型训练(DT / RF / AdaBoost)
├── MLAttackStates.py        # ML 攻击状态推断(未知设备状态推测)
├── MLDatasetAttack.py       # ML 攻击数据集构建
│
├── utils.py                 # 工具函数(get_device / loss / AUC / MR)
├── allClass.py              # 基础类定义(Device / Trigger / Action / Event / Edge)
│
├── Applets/                 # TAP 平台规则原始数据(CSV)
├── TA/                      # 设备 Trigger / Action / State 定义
├── TA_ALL/  TA_Popular/     # 全量 / 热门设备数据集
├── tools/                   # 辅助工具脚本
│
├── Environment/             # 运行时生成:实验环境数据(gitignored)
├── Attack/                  # 运行时生成:攻击图 / 权重数据(gitignored)
├── Model/                   # 运行时生成:训练模型(gitignored)
├── result/                  # 实验结果 CSV
└── log/                     # 运行日志(gitignored)

输出结果

GNN 实验运行后写入 result/experimentGNN.csv(示例):

kdn recall precision GNN Recall GNN Precision
13 58.38% 79.76% 50.90% 9.98%
14 57.68% 83.42% 56.20% 11.02%
15 55.32% 86.80% 63.30% 12.41%
16 57.54% 87.24% 68.10% 13.35%
  • kdn:攻击方已知设备数量;
  • recall / precision:WFST 攻击规则推断的召回率与精确率;
  • GNN Recall / GNN Precision:GNN 链接预测(Top-K 规则推荐)的召回率与精确率。

ML 实验写入 result/experiment.csv,包含 DT / RF / AdaBoost 等模型的训练得分(score)、攻击得分(score_A)与状态攻击得分。

跨平台同步

通过 Git 同步到不同设备后,只需安装对应环境文件:

macOS:           pip install -r requirements_macos.txt
Windows + NVIDIA: pip install -r requirements_windows.txt
Windows + AMD:   pip install -r requirements_windows.txt && pip install torch-directml

代码会自动检测平台并使用最佳硬件加速方式。

免责声明

本项目仅用于学术研究与安全评估,目的在于揭示智能家居 Trigger-Action 平台中的隐私泄露风险,帮助平台与用户改进安全设计。请勿将其用于任何未经授权的场景。

License

暂未指定开源许可证。如有需要请与作者联系。

About

基于 WFST 与 GNN 的物联网侧信道攻击框架,研究 IFTTT/TAP 智能家居自动化规则的隐私泄露风险 | IoT WFST side-channel attack framework for evaluating smart-home rule privacy leakage on Trigger-Action Platforms

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages