[TIFS 2022] FLCert:可证明安全的联邦学习免受中毒攻击
FLCert: Provably Secure Federated Learning Against Poisoning Attacks | IEEE Journals & Magazine | IEEE Xplore
摘要
由于其分布式性质,联邦学习容易受到中毒攻击,其中恶意客户端通过操纵其本地训练数据和/或发送到云服务器的本地模型更新来毒害训练过程,从而使中毒的全局模型错误地分类许多不分青红皂白的测试输入或攻击者选择的输入。现有的防御主要利用拜占庭式的联合学习方法或检测恶意客户端。但是,这些防御措施没有针对中毒攻击的可证明的安全保证,并且可能容易受到更高级的攻击。在这项工作中,我们的目标是通过提出FLCert来弥合差距,FLCert是一个集成的联合学习框架,可以证明可以安全地抵御有限数量的恶意客户端的中毒攻击。我们的主要思想是将客户划分为组,使用任何现有的联邦学习方法为每组客户端学习全局模型,并在全局模型中获得多数票以对测试输入进行分类。具体来说,我们考虑了两种对客户端进行分组的方法,并相应地提出了两种 FLCert 变体,即 FLCert-P 在每个组中随机采样客户端,以及 FLCert-D 确定性地将客户端划分为不相交组。我们在多个数据集上的大量实验表明,我们的 FLCert 为测试输入预测的标签可证明不受有限数量的恶意客户端的影响,无论它们使用何种中毒攻击。
一、引言
联邦学习(FL)[18],[23]是一种新兴的机器学习范式,它使客户(例如,智能手机,物联网设备和组织)能够协作学习模型,而无需与云服务器共享其本地训练数据。由于其承诺保护客户本地培训数据的隐私以及新兴的隐私法规,如通用数据保护条例(GDPR),FL已被行业部署。例如,谷歌已经在Android Gboard上部署了FL用于下一个单词预测。现有的FL方法主要遵循单一全局模型范式。具体来说,云服务器维护一个全局模型,每个客户端维护一个本地模型。全局模型通过客户端和服务器之间的多次通信迭代进行训练。在每次迭代中,执行三个步骤:1)服务器将当前全局模型发送给客户端;2)客户端根据全局模型和本地训练数据更新本地模型,并将模型更新发送到服务器;3) 服务器聚合模型更新并使用它们来更新全局模型。然后使用学习的全局模型来预测测试输入的标签。
然而,这种单一全局模型范式容易受到中毒攻击。特别是,攻击者可以将假客户端注入 FL 或破坏正版客户端,我们称假客户端为恶意客户端。例如,攻击者可以使用功能强大的计算机来模拟许多假冒智能手机。此类恶意客户端可以通过仔细篡改发送到服务器的本地训练数据或模型更新来破坏全局模型。因此,损坏的全局模型对于正常测试输入 [6]、[10](称为非靶向中毒攻击)或某些攻击者选择的测试输入 [2]、[3](称为靶向中毒攻击)的准确性较低。例如,在非目标中毒攻击中,恶意客户端可以通过操纵其本地模型更新来偏离全局模型,使其与在没有攻击的情况下更新的方向相反[10]。在有针对性的中毒攻击中,当学习图像分类器时,恶意客户端可以在其本地训练数据中将带有某些条带的汽车重新标记为鸟类,并扩展发送到服务器的模型更新,以便全局模型错误地将带有条带的汽车预测为鸟 [2]。
已经提出了各种拜占庭稳健的FL方法来防御来自恶意客户端的中毒攻击。[4], [5], [32]。这些方法的主要思想是减轻客户模型更新中统计异常值的影响。它们可以绑定在没有恶意客户端的情况下学习的全局模型参数与在某些客户端变得恶意时学习的全局模型参数之间的差异。但是,这些方法无法证明测试输入的全局模型预测的标签不受恶意客户端的影响。事实上,研究表明,恶意客户端仍然可以通过仔细篡改发送到服务器的模型更新来大幅降低拜占庭鲁棒方法学习的全局模型的测试准确性[3],[6],[10]。
A. 我们的工作
在这项工作中,我们提出了FLCert,这是第一个可以证明对中毒攻击安全的FL框架。具体来说,给定n 客户,我们定义N 组,每个组都包含客户端的一个子集。特别是,我们设计了两种对客户端进行分组的方法,对应于FLCert的两个变体,即FLCert-P和FLCert-D,其中P和D分别代表概率和确定性。在 FLCert-P 中,每个N 组包括k 从n 客户端统一随机。请注意,总共有(nk) 可能的组,因此N 可以和(nk) 在 FLCert-P.在 FLCert-D 中,我们将n 客户进入N 确定性地不相交组。
对于每个组,我们使用任意 FL 算法(称为基本 FL 算法)与组中的客户端学习全局模型。总的来说,我们训练N 全球模型。给定测试输入x ,我们使用每个N 预测其标签的全局模型。我们表示n我 作为预测标签的全局模型的数量我 为x 并定义p我=n我n 哪里i=1,2,⋯,L .
我们的集成全局模型预测标签频率/概率最大的标签x .换句话说,我们的集成全局模型在N 用于预测标签的全局模型x .由于每个全局模型都是使用客户端子集学习的,因此当大多数客户端是良性的时,大多数全局模型都是使用良性客户端学习的。因此,多数票标签中的N 测试输入的全局模型不受有限数量的恶意客户端的影响,无论它们使用何种中毒攻击。
B. 理论
我们的第一个主要理论结果是,FLCert 可证明地预测了测试输入的相同标签x 当恶意客户端的数量不大于阈值时,我们称之为认证安全级别。我们的第二个主要理论结果是,我们证明了我们派生的认证安全级别是严格的,即,当没有对基础FL算法做出假设时,不可能推导出比我们更大的认证安全级别。请注意,对于不同的测试输入,认证安全级别可能不同。
C. 算法
计算我们认证的安全级别x 需要其最大和第二大标签频率/概率。对于 FLCert-P,当(nk) 很小(例如,n 客户是数十个组织[17]和k 很小),我们可以通过训练精确地计算最大和第二大标签概率N=(nk) 全球模型。但是,在以下情况下准确计算它们具有挑战性(nk) 很大。为了应对计算挑战,我们开发了一种随机算法,通过训练以概率保证来估计它们N≪(nk) 全球模型。由于这种随机性,FLCert-P实现了概率安全保证,即FLCert-P为测试输入输出不正确的认证安全级别,其概率可以设置为任意小。对于FLCert-D,我们训练N 全局模型并确定性地获取标签频率,使FLCert-D的安全保证具有确定性。
D. 评价
我们在来自不同领域的五个数据集上实证评估了我们的方法,包括三个图像分类数据集(MNIST-0.1 [20],MNIST-0.5 [20]和CIFAR-10 [19]),人类活动识别数据集(HAR)[1]和下一个单词预测数据集(Reddit)[2]。我们将MNIST和CIFAR中的训练示例分发给客户端以模拟FL场景,而HAR和Reddit数据集代表真实世界的FL场景,其中每个用户都是一个客户端。我们还评估了五种不同的基本FL算法,即FedAvg [23],Krum [4],Trimmed-mean[32],Median [32]和FLTrust [5]。此外,我们使用认证的准确性作为我们的评估指标,这是无论恶意客户端使用何种中毒攻击,方法都可以证明达到的测试准确性的下限。例如,我们的FLCert-D与FedAvg和N=500 当训练示例均匀分布在 81,1 个客户端且其中 000 个是恶意客户端时,可以在 MNIST 上达到 100% 的认证准确率。
总之,我们的主要贡献如下:
-
我们提出了FLCert,一个具有可证明的安全保证的FLCert框架,可以防止中毒攻击。具体来说,FLCert-P 提供概率安全保证,而 FLCert-D 提供确定性保证。此外,我们证明我们派生的认证安全级别是严格的。
-
我们提出了一种随机算法来计算FLCert-P的认证安全级别。
-
我们在来自不同领域的多个数据集和多个基本 FL 算法上评估 FLCert。我们的结果表明,FLCert在理论上和经验上都对中毒攻击是安全的。
二、相关工作
A. 联邦学习
客户端和服务器协作以迭代方式解决优化问题。具体来说,在训练过程的每次迭代中,执行以下三个步骤:1)服务器将当前全局模型广播给(子集)客户端;2)客户端将其本地模型初始化为接收的全局模型,使用随机梯度下降训练局部模型,并将本地模型更新发送回服务器;3)服务器聚合本地模型更新并更新全局模型。
B. 对FL的中毒攻击
最近的研究[2],[3],[6],[10],[24],[27]表明FL容易受到中毒攻击。 根据攻击者的目标,对FL的中毒攻击可以分为两类:非靶向中毒攻击[6],[10],[24],[27]和有针对性的中毒攻击[2],[3]。
1)非针对性中毒攻击:
非靶向中毒攻击的目标是降低学习到的全局模型的测试准确性。这些攻击旨在尽可能提高全局模型的不分青红皂白的测试错误率,这可以被视为拒绝服务(DoS)攻击。根据攻击的执行方式,非靶向中毒攻击有两种变体,即数据中毒攻击 [27] 和本地模型中毒攻击 [6]、[10]。数据中毒攻击会篡改恶意客户端上的本地训练数据,同时假设计算过程保持完整性。他们注入虚假的训练数据点,删除现有的训练数据点,和/或修改现有的训练数据点。本地模型中毒攻击篡改恶意客户端的计算过程,即直接篡改恶意客户端的本地模型或发送到服务器的模型更新。请注意,在 FL 中,任何数据中毒攻击都可以通过本地模型中毒攻击来实现。这是因为在每个恶意客户端上,我们始终可以将使用篡改的本地训练数据集训练的本地模型视为被篡改的本地模型。
2)有针对性的中毒攻击:
针对性中毒攻击旨在强制全局模型预测目标测试输入的目标标签,而其在非目标测试输入上的性能不受影响。目标中毒攻击中的目标测试输入可以是特定的测试输入 [3]、具有某些属性 [2] 的某些测试输入或嵌入了特定触发器的测试输入 [2]。如果目标测试输入是触发器嵌入的测试输入,则有针对性的中毒攻击也称为后门攻击。后门攻击旨在破坏全局模型,以便为嵌入预定义触发器的任何测试输入预测攻击者选择的目标标签。
C. 防御对FL中毒攻击
已经提出了许多防御措施[8],[14],[15],[16],[21],[22],[26],[28],[29],[30],以应对集中学习场景中的数据中毒攻击。 但是,它们不足以防御对FL的中毒攻击。特别是,经验防御[8],[22],[30]需要有关训练数据集的知识,出于隐私考虑,FL服务器通常无法使用这些知识。此外,可证明安全的防御 [14]、[15]、[16]、[21]、[26]、[28]、[29] 可以保证为测试输入预测的标签不受有限数量的中毒训练示例的影响。 但是,在 FL 中,单个恶意客户端可以毒害任意数量的本地训练示例,从而打破其假设。
拜占庭稳健的FL方法[4],[5],[32]利用拜占庭稳健的聚合规则来抵抗中毒攻击。他们分享了在聚合本地模型更新时减轻中毒攻击引起的统计异常值的影响的想法。例如,Krum [4] 选择具有最小平方欧几里得距离分数的单个模型更新作为新的全局模型更新;修剪平均值 [32] 计算修剪后模型更新参数的坐标平均值,并使用相应的平均值更新全局模型;中位数 [32] 通过计算局部模型更新的坐标中位数来更新全局模型;FLTrust [5] 利用一个小型干净数据集来计算服务器更新,并将其用作基线来引导对本地模型更新的信任。这些方法都有一个关键限制:它们无法提供可证明的安全保证,即,当存在中毒攻击时,它们无法确保用于测试输入的全局模型的预测标签保持不变。
另一种类型的防御侧重于检测恶意客户端并在聚合之前删除其本地模型 [10], [25], [33]。Shen等人[25]建议在本地模型上执行聚类以检测恶意客户端。Fang et al. [10] 提出了两种防御措施,即使用验证数据集根据它们对验证数据集上评估的错误率或损失值的影响来拒绝潜在的恶意本地模型。Zhang等人[33]提出通过检查模型更新的一致性来检测恶意客户端。这些防御在检测恶意客户端方面显示出一些经验有效性。但是,它们也无法提供可证明的安全保证。
Wang等人[28]提出了一种经过认证的后门攻击防御措施。最近的一项工作[31]将这种方法扩展到FL,并称之为CRFL。CRFL旨在证明针对特定后门攻击的鲁棒性[2],其中所有恶意客户端都使用后门本地训练数据集训练其本地模型,并在一次FL迭代中同时将其模型更新发送到服务器之前扩展其模型更新。他们表明,如果恶意客户端本地训练数据的变化幅度有限,则可以证明在这种特定攻击下学习的全局模型的准确性。但是,恶意客户端可以任意更改其本地训练数据。因此,单个恶意客户端可以通过使用中毒攻击而不是被视为特定的后门攻击来破坏其防御。相反,无论恶意客户端执行何种攻击,我们的 FLCert 都是可证明安全的。
相关文章:
[TIFS 2022] FLCert:可证明安全的联邦学习免受中毒攻击
FLCert: Provably Secure Federated Learning Against Poisoning Attacks | IEEE Journals & Magazine | IEEE Xplore 摘要 由于其分布式性质,联邦学习容易受到中毒攻击,其中恶意客户端通过操纵其本地训练数据和/或发送到云服务器的本地模型更新来毒…...
css3关键帧动画
CSS3关键帧动画是一种在网页设计中常用的技术,通过使用CSS3的关键帧动画功能,可以实现网页上各种形式的动画效果,例如淡入淡出、滑动、旋转、缩放等,这些动画效果可以让网页更加生动有趣,吸引用户的注意力,…...
在 macOS Mojave 之后的每一个版本中都隐藏着比特币白皮书(Bitcoin Whitepaper)
今天我在尝试解决打印机故障问题时,发现了自2018年Mojave版本以来,macOS都附带了一份Satoshi Nakamoto(即中本聪)的比特币白皮书PDF副本[1]。 我已经询问了十几位使用Mac的朋友,他们都确认macOS里面有这个文件。这个文…...
一文看懂SpringBoot操纵数据库
1.前言 很多同学进入公司就开始参与项目开发,大多数情况是对某个项目进行维护或者需求迭代,能够从0到1参与到项目中的机会很少,因此并没有多少机会了解某些技术的运行机制。换句话说,有的面试官在面试的时候就会探讨深层的技术问题…...
科普:java与C++的区别
Java与C是两种广泛使用的编程语言,它们在某些方面存在不同之处。本文将详细介绍Java与C的区别。 一、C与Java的历史 C语言是由Bjarne Stroustrup在20世纪80年代初期开发的一种面向对象编程语言,它是C语言的扩展。Java语言是由Sun Microsystems公司于20…...
突发!ChatGPT疯了!
数据智能产业创新服务媒体——聚焦数智 改变商业今天,笔者正常登录ChatGPT,试图调戏一下他。但是,突然震惊的发现,ChatGPT居然疯了。之所以说他是疯了,而不是崩溃了,是因为他还能回复我,但回…...
docker-compose容器编排使用详解+示例
文章目录一、docker-compose概述1、产生的背景2、核心概念3、使用的三个步骤4、常用命令二、下载安装1、官方文档2、下载3、卸载三、使用compose1、前置知识,将一个springboot项目打包为镜像2、编写docker-compose.yml文件3、启动docker-compose4、停止一、docker-c…...
可用的rtsp ,rtmp地址以及使用VLC和ffmpeg 播放视频流
可用的 rtmp地址: rtmp://ns8.indexforce.com/home/mystream 可用的 rtsp地址: rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4 可搭配VLC播放器使用,以及虚幻4 流媒体使用,实现直播效果 1.使用VLC 播放:https://www.vi…...
Python机器学习:朴素贝叶斯
前两天不知道把书放哪去了,就停更了一下,昨天晚上发现被我放在书包夹层里面了,所以今天继续开始学习。 首先明确一下啊,朴素贝叶斯是什么:朴素贝叶斯分类器是一种有监督的统计学过滤器,在垃圾邮件过滤、信…...
几个最基本软件的环境变量配置
在Windows中配置环境变量位置: 控制面板->系统和安全->系统。可以点击:“此电脑”->“属性”直接进入。 点击“高级系统设置”->【环境变量】。在这里可以看见用户变量和系统变量,如果你这台机器不是你一个人使用设置为用户变量…...
物业企业如何加快向现代服务业转型
近年来,随着人民生活水平的提高,人们对住宅质量提出更高的要求,在此前提下,全国各地涌现出了一些运用现代的计算机、控制与通信技术建设的智能化住宅小区。但是许多智能化住宅小区都存在建好了智能硬件环境却没有智能化的软件在上…...
java ssm人力资源系统Y3程序
1.系统登录:系统登录是员工访问系统的路口,设计了系统登录界面,包括员工名、密码和验证码,然后对登录进来的员工判断身份信息,判断是管理员还是普通员工。 2.系统员工管理:不管是超级…...
leetcode重点题目分类别记录(三)动态规划深入与素数理论
文章目录动态规划背包问题01背包抽象出求解目标尝试进程子问题拆分基本情况根据拆分过程定义dp数组与转移方程遍历顺序与状态压缩模板归纳题目应用变种提升组合问题多维01背包有特殊限制的01背包完全背包打家劫舍股票系列子序列类数位dp动态规划 背包问题 01背包 有C0-Cx件物…...
面试篇-学习Java多线程编程必备:深入理解volatile与synchronized
1. 概述 1.1 Volatile概述 Volatile是Java中的一种轻量级同步机制,用于保证变量的可见性和禁止指令重排。当一个变量被声明为Volatile类型时,任何修改该变量的操作都会立即被所有线程看到。也就是说,Volatile修饰的变量在每次修改时都会强制…...
后端系列文章
后端系列文章目录 缘由:无聊了,写点博客玩玩 注:该系列文章纯属个人见解,漏洞百出,大家看个乐就行了,别当真! 私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版,配图更多&…...
C++之AVL树
文章目录前言一、概念二、AVL树结点的定义三、AVL树的插入四、AVL树的旋转1.右单旋的情况以及具体操作抽象图h 0h 1h 2代码实现2.左单旋的情况以及具体操作抽象图代码实现3.右左双旋的情况以及具体操作抽象图h 0h 1h 23.左右双旋的情况以及具体操作抽象图5.总结6.完整实现…...
【ROS2指南-2】入门 turtlesim 和 rqt
目标:安装并使用 turtlesim 包和 rqt 工具为即将到来的教程做准备。 教程级别:初学者 时间: 15分钟 内容 背景 先决条件 任务 1 安装turtlesim 2 启动turtlesim 3 使用turtlesim 4 安装rqt 5 使用 rqt 6 重新映射 7 关闭turtlesim …...
Python 进阶指南(编程轻松进阶):四、起个好名字
原文:http://inventwithpython.com/beyond/chapter4.html 计算机科学中最困难的两个问题是命名事物、缓存失效引起错误."这个经典的笑话,出自利昂班布里克之手,并基于菲尔卡尔顿的一句话,包含了一个真理的核心:很…...
STL容器适配器之<priority_queue>
文章目录测试环境priority_queue介绍头文件模块类定义对象构造元素访问元素插入和删除容器大小迭代器其他函数测试环境 系统:ubuntu 22.04.2 LTS 64位 gcc版本:11.3.0 编辑器:vsCode 1.76.2 priority_queue介绍 容器适配器。支持在末端插入…...
线程——线程同步
案例:卖票 需求:某电影院目前正在上映国产大片,共有100张票,而它有三个窗口卖票,请设计一个程序模拟该电影院卖票 思路: 定义一个类SellTicket实现Runnable接口,里面定义一个成员变量ÿ…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
