本项目实现了一个带“加密聚合 + 一致性审计 + 投毒检测”的联邦学习原型,包含 TA / DO / CSP / ASP 等参与方,用于验证安全聚合与鲁棒检测在联邦场景下的可行性与开销。
- TA(Trusted Authority):生成 Paillier 参数、管理每轮
R_t、分发 DO 基础私钥并做门限分片。 - DO(Data Owner):本地训练模型,使用派生密钥加密上传;参与 SafeMul 第2轮并提供掉线恢复分片。
- CSP(Cloud/Server):聚合密文并解密;执行一致性审计、投毒检测;负责 SafeMul 第1/3轮。
- ASP(Audit Server):审计辅助方,提供密文修正项,协助 CSP 进行单点审计。
EfficiencyTest.py:加密流程联邦仿真(含审计、SafeMul、投毒检测)CorrectnessTest.py:明文训练与检测(正确性/可解释性对照)
本文重点介绍 命令行参数(parser) 的使用方式。
--num-rounds:联邦轮次--num-do:在线 DO 数--model-size:模型参数维度--model-name:模型名称(cnn / lenet / resnet20)--dataset-name:数据集(mnist / cifar10 / cifar100)--partition-mode:数据划分模式(iid / mild / extreme)--initial-params-path:初始全局参数文件
--train-batch-size:训练 batch--train-max-batches:每轮最大 batch 数--eval-each-round:每轮是否评估--eval-batch-size:评估 batch--eval-batches:评估 batch 上限--bn-calib-batches:BN 校准批数(ResNet)
--orthogonal-vector-count:正交向量数量--refresh-orthogonal-each-round:是否每轮刷新正交向量--safe-mul-block-size:SafeMul 分块大小(<=0 不分块)
--attack-type:untarget 攻击类型(stealth/random/signflip/lie_stat)--attack-round-untarget:untarget 攻击轮次(all / 单轮 / 多轮)--attack-lambda:放大系数--attack-sigma:random 攻击噪声--attack-do-id:攻击 DO id(逗号分隔)--attack-rounds:label flip 轮次(all / 逗号)--source-label/--target-label/--poison-ratio--bd-enable/--bd-target-label/--bd-ratio/--bd-trigger-size/--bd-trigger-value
--enable-all-detection:是否启用投毒检测--enable-compressed-detect:启用压缩向量检测(ResNet20)--detection-methods:检测方法选择
取值:all/multi/geo/cluster/ 组合如multi,geo
--audit-round:审计轮次--audit-do-id:审计 DO id(逗号分隔)--audit-simulate-dropout:模拟掉线--audit-simulate-mismatch:SafeMul 与加密不一致
--rounds:训练轮次--num-do:DO 数--model-name/--dataset-name--batch-size/--max-batches--partition-mode:iid / mild / extreme
--poison-do-id:攻击 DO 列表(逗号)--source-label/--target-label/--poison-ratio--attack-type:untarget 攻击类型(stealth/random/signflip/lie_stat)--attack-round-untarget:触发轮次(all / 单轮 / 多轮)--attack-lambda/--attack-sigma--bd-enable/--bd-target-label/--bd-ratio/--bd-trigger-size/--bd-trigger-value
--enable-all-detection--enable-compressed-detect--proj-block-size:正交投影分块--refresh-orthogonal-each-round--detection-methods:检测方法选择(同上)
--save-path:保存目录--initial-params-path--eval-batch-size/--eval-batches--bn-calib-batches
仅启用 Multi-Krum:
python EfficiencyTest.py --detection-methods multi仅启用 GeoMedian:
python CorrectnessTest.py --detection-methods geo启用全部检测:
python EfficiencyTest.py --detection-methods all