个人阅读笔记,如有错误欢迎指出
识别、防御联邦学习中的后门攻击
不在聚合器端实现检测后门,利用客户端私有数据的可用性进行后门检测
防御原理:在所有客户端用各自的数据以及先前被接受的全局模型在全局模型中进行中毒检测,若大量客户端验证全局模型时在某个类的数据中出现大量的错误分类,则可认定为此模型已经被攻击者投毒。
防御策略示意,当全局模型被大多数客户端认为被投毒后,服务器端则拒绝此次更新,全局模型不变,当全局模型被被大多数客户单认可时,则更新模型。
跨轮次信任:
在固定测试集上对最新的全局模型进行预测,并基于此预测决定拒绝阈值
如果当前模型超过估计差距,则被视为中毒并被丢弃
对早期模型的信任:
训练早期模型不稳定,注入的后门可以忽略不计
反馈回路:
设置仲裁阈值,若多数客户端在其本地数据集上验证后接受模型,则接受本轮更新,否则把前一轮的更新作为本轮更新
验证函数章节中有实例化的验证函数为例
处理恶意投票:
阈值的取值取决于能容忍的恶意客户端的数量,即
同时,保证诚实的客户端发现中毒模型,即超过设定阈值的客户端数量大于恶意客户端数量
从而有
由于数据的异质性,存在部分诚实客户端误判的情况,则,即可将阈值定为,而的值可由实验确定,因此可以得到和
总体防御算法:
验证原理:诚实客户端的更新在连续的几轮更新上不会显著影响模型在某些类上的正确率,而新注入的后门攻击会显著增加模型在某些分类上的错误率。如图
定义了两种误差参数,一是属于类y却被错误分类到其他类,另一个为不属于类y却被错误分类到类y,误差分别定义如下,以此来衡量模型是否可疑。
算法流程:
获取历史认为良好的个模型, 分别计算偏差值,随后计算当前模型的偏差值,使用异常检测算法Local Outlier Factor计算它的LOF值,若更新模型的LOF值大于先前正常模型的LOF均值,则认定为模型被投毒。
值的选取:足够大以获取稳定的参考值,足够小保证太旧的模型不在其中,测试不同大小的根据经验选取最优值。
攻击方法:使用模型替换攻击
实验分组:分为只客户端验证,clients-only(BAFFLE-C),只服务器端验证,server-only(BAFFLE-S)以及客户端、服务器端双重验证(BAFFLE)
数据集分配:即C-S%比例,为客户端以及服务器验证模型需要的数据集分配比例
攻击时间:
1.模型趋近于稳定后攻击与防御
2.模型尚未稳定就进行防御,随后进行攻击
实验结果:
的大小对假阳性率FP以及假阴性率FN的影响
的增加总会造成更高的假阴性率与更少的假阳性率。这可能是由于邻域中有太多的小异常值,从而降低了新更新的异常值因子。时在FEMNIST数据集中假阴性率为1,因此不能过小。具有反馈回路(即有客户端验证)性能优于近服务器验证。
阈值的大小对假阳性率FP以及假阴性率FN的影响
在CIFAR数据集中,改变对加过影响较大,在时,效果较好,且在这种情况下,BAFFLE以及BAFFLE-C的性能一般都优于BAFFLE-S。在FEMNIST数据集中,改变的值似乎不会影响在BAFFLE以及BAFFLE-C下的FP以及FN。
投毒时间影响:模型未稳定时投毒,并在后续继续投毒以及进行防御:
在CIFAR数据集中,早先的投毒会在良性的更新中被模型迅速遗忘,在后续的投毒中此防御方法也能检测出了每次投毒。
在FEMNIST数据集中,早先投毒影响也会逐渐减小,由于模型收敛过慢而不明显。在后续的投毒中此防御方法也仅有一次投毒未检测出。
防御自适应攻击,假设攻击者知道整个防御模型以及防御参数以及,攻击者手动对模型更新进行处理。(尽管实际很难实现)
将在攻击者认为低于阈值的投毒称为自适应投毒,结果表明BAFFLE的检测效果很好。BAFFLE-S有部分的假阳性以及假阴性率。
十个客户端的防御自适应攻击的实验
大多是都有5个或者更多的客户端拒绝了更新,也即最差时有五个客户端判断错误,即,由此可以估计最多可以忍受的攻击者数量,,求解得到。当时,,当时,nM<3.33n_M < 。
通信开销:
为节省通信开销,在客户端验证通过时,直接进行下一轮的训练,以减小通信开销,另外减小了客户端等待验证客户端验证的时间消耗。
通过模型压缩技术可以显著较小发送模型以及模型历史的通信开销。
能够与安全聚合兼容并且考虑到了客户端数据的异质性