机器学习(Machine Learning)的安全问题
最近看论文,看到了”对抗样本“的一些内容,然后又研究了一下其背后的东西,发现还有”机器学习的安全“这一问题,然后找了几篇博客看了一下,发现了篇2019年的比较有意思的文章,这里整理一下,方编译后查阅。
机器学习(Machine Learning)的安全问题
- 关于机器学习,每个人都忘记了什么
- 病毒软件的发展
- 安全业务的发展
- ML 是否需要安全?
- ML 安全的发展
- 我的机器学习系统会受到攻击吗?
- 威胁模型饼图
- 谁+为什么(WHO+WHY)
- 如何(HOW)
- 将威胁模型融为一体
- 参考文献
关于机器学习,每个人都忘记了什么
人工智能,更具体地说是机器学习,确实正在将科幻小说变为现实。看穿墙壁?通过视频猜测材料的物理特性?通过键盘声音估算击键次数?那么生成逼真的面孔、身体或诗歌呢?或者教机器画画?
现在,如果你真的去和人工智能/ML 领域的从业人员交谈,你可能会得到两种回答中的一种:
- 他们对人工智能/ML 所能做的事情感到无比兴奋,并正在研究下一个大的视觉/NLP/强化学习问题;
- 他们对我们这些愚蠢的人类正在建造的东西感到无比恐惧,并认为人工通用智能很快就会把人类变成一堆没用的回形针。
病毒软件的发展
让我们回顾历史,重温 PC 市场。第一台个人电脑(Altair 8800)发布于 1975 年,随后的 10 年里,个人电脑不断推陈出新,最终于 1984 年推出了我们现在看起来再熟悉不过的 “苹果 Macintosh”。随之而来的是一股爆炸性的应用浪潮,这股浪潮一直持续到整个 20 世纪 90 年代,直至 2000 年:
然而,大多数用户并不知道,恶意软件或 “恶意软件”市场正在发生类似的爆炸。
1989 年,罗伯特-莫里斯(Robert Morris)利用 Unix sendmail 进行实验,制作了一个可自我复制的蠕虫病毒,并将其发送到互联网上。最初只是一次实验,最后却成为了第一次 DoS 攻击,造成的损失估计在 10 万到 1 万美元之间,整个互联网的运行速度慢了好几天(当然,这在现在是不可想象的)。
随后,1989 年出现了第一次勒索软件攻击,1996 年出现了第一个 Linux 病毒(“Staog”),1998 年出现了第一个 AOL 木马。
后来,同样的情况也发生在移动领域:2007 年 iPhone 诞生之后,智能手机的应用出现了爆炸式增长:
…随后是移动恶意软件的爆炸式增长:
现在–机器学习怎么样?
尽管热闹非凡,但机器学习的产品化仍处于起步阶段。许多真正前沿的工作仍局限于研究实验室和大学,但即使从研究的角度来看,我们也可以开始看到一些相同的趋势。
按年份和领域分列的机器学习研究论文数量:
…VS “对抗式机器学习(adversarial machine learning)”(ML 版恶意软件)研究论文数量:
安全业务的发展
没那么快 好消息是,随着个人电脑占据我们的日常生活,黑客们开始入侵,另一个市场也同时发展起来,那就是安全解决方案市场。
第一款反病毒产品由 Andreas Lüning 和 Kai Figge 于 1987 年为 Atari ST 平台开发。同年,McAffee、NOD、Flu Shot 和 Anti4us 相继问世,并在随后的二十年中推出了更多产品:
随着移动恶意软件的快速增长,移动领域的安全厂商也出现了类似的爆炸式增长:
那么机器学习呢?
ML 是否需要安全?
下面是原文作者的原话:
过去,我曾在英国最大的金融科技公司之一 GoCardless 负责反欺诈和反洗钱工作。我的团队每年监管的交易额超过 100亿美元,我们一直在努力将骗子挡在 GC 的循环系统之外。很自然地,我们在某一时刻屈服于炒作,决定尝试机器学习。
让我当时感到惊讶的是,它竟然奏效了。事实上,效果非常好。摒弃传统的启发式方法,我们成功地将欺诈造成的资金损失减少了80%,并将涉嫌洗钱账户的检测率提高了 20 倍之多。 问题只有一个。
我们在我认为是 “关键”的地方部署了机器学习。我们交给算法的任务是不允许失败的,因为一旦失败,我们要么会损失一大笔钱,要么会被吊销金融执照。对于直接负责 GC安全的产品经理我来说,这两件事听起来都不太令人兴奋。
因此,我需要知道 ML 如何以及何时会失败。我们的模型如何被利用?它的内在漏洞在哪里?我如何知道 GoCardless 是否受到攻击?
对ML存在中毒攻击,即攻击者通过在训练过程中注入损坏的数据来影响模型的思维。ML存在对抗性的样本,以及ML模型是可以被精心设计的扰动的输入数据轻易误导的。
到 2019 年底,1/3 的企业将部署机器学习。这相当于你、我、我们的朋友和亲人每天使用的所有产品的1/3–在任何对机器学习工作原理一知半解的攻击者面前都是赤裸裸的。
是的,机器学习需要安全。
ML 安全的发展
ML 安全是一个非常新兴的领域,到目前为止基本上还不存在。如果说从上述研究中学到了什么,那就是任何没有数学博士学位的人都很难弄明白如何确保他们的 ML 安全(如今几乎没有任何解决方案,只有大量数学研究论文)。
考虑到我们即将把生命中的大部分时间托付给算法,作者认为“我们有责任确保安全,这是你的责任、我的责任,也是整个 ML 社区的责任”。
今天,我们可以做很多事情来构建更强大的 ML 模型。但更重要的是,我们需要转变观念–从 “不惜一切代价保证准确性 ”转变为更加平衡准确性与鲁棒性的方法“
我的机器学习系统会受到攻击吗?
威胁模型饼图
在 Calypso,当我们考虑威胁模型时,我们喜欢考虑三个独立的部分:
谁会攻击你?(WHO will attack you?) 一切从 “谁 ”开始。攻击者,对手,对方。定义 “谁 ”的工作可以变得超级简单,也可以变得超级困难。
一方面,你可以直接说 “黑客”。另一方面,这又能为你提供什么信息呢?“了解机器学习如何工作的黑客 "可能更好。“了解机器学习工作原理并有数学背景的黑客 "可能更好。围绕WHO的细节越多越好。
他们为什么要攻击你?(WHY will they attack you?) 为什么 “与 ”谁 "关系密切(下文将一并讨论)。
WHY 背后的想法很简单–他们可以黑你,但为什么要黑?这里面一定有他们想要的东西。赏金,奖励。同样,定义 “为什么 ”可以简单到说 “为什么不”(不建议),也可以难到说 “违反保密性,然后将从我的 ML 系统中提取的数据卖给 X 实体”(更好!)。
他们会如何攻击你?(HOW will they attack you?) 这是技术部分。既然知道了 “谁 ”和 “为什么 ”会攻击你,下一个问题就是 “如何 ”攻击你?
如果我们谈论的是机器学习,他们会在训练或推理过程中攻击你的 ML 吗?他们会掌握多少关于你的系统的信息?他们也许能黑进你的机器学习,但如果黑进你的数据管道更容易,他们会这么做吗?
让我们来详细了解一下。
谁+为什么(WHO+WHY)
WHO。从广义上讲,作者喜欢将对手视为“严肃”的级别。作者认为它是这样的:
- 聪明的研究人员/工程师在商业机器学习系统上闲逛
- 白帽参与赏金计划
- 彭斯特/红队队员进行测试
- 黑客活动家攻击商业机器学习系统以证明这一点
- 黑帽攻击商业机器学习系统以获得经济奖励(无论是通过实际部署漏洞还是在暗网市场上出售)
- 有组织的黑帽团体攻击商业机器学习系统(例如 Anonymous、The Shadow Brokers 和 Legion of Doom)
- 国家资助的组织(此时基本上是网络战)
重要的是要考虑你的对手有多严重,因为这决定了他们可能获得的知识和工具的种类,从而决定了你的防御水平。
现在是 “为什么”。作者任务“为什么 ”可以分为两个问题:
他们的目标是什么?
他们的动机是什么?
在回答目标问题时,我喜欢使用 CIA 三段论:
三要素–保密性(confidentiality)、完整性(integrity)和可用性(availability )–是指安全的三大支柱。如果你能保护所有这三个要素,你就拥有了安全保障。
保密(或隐私)攻击(Confidentiality (or privacy) attacks ) 旨在从您的 ML 系统中提取敏感信息。例如,攻击者可能想推断特定数据点(如您)是否属于特定训练数据集(如医院出院)的一部分。
完整性攻击(Integrity attacks) 会让您的 ML 模型出错,但重要的是,这种攻击不会声张。例如,攻击者可能想让你的分类器将恶意文件当作良性文件,而不影响其整体性能,这样你就永远不会注意到。在完整性攻击中,攻击者可以有多个子目标(从难到易):
- 源/目标错误分类(Source/target misclassification)–攻击者希望将一个特定类别(“恶意”)分类为另一个特定类别(“良性”)。
- 目标分类错误(Targeted misclassification)–攻击者希望将特定类别(“停止 ”标志)分类为任何其他类别(例如 “限速 60 ”或 “限速 45 ”或 “狗 ”或 “人 ”或其他。只要不停车就行)。
- 错误分类(Misclassification)–任何类别变成任何其他类别。这属于可用性攻击的范畴(如下)。
- 降低信任度(Confidence reduction)–攻击者希望你的模型失去信任度(当模型工作在阈值范围内时很有用,例如在欺诈评分的情况下)。
可用性攻击(Availability attacks) 的目的是让你的 ML 系统完全瘫痪。例如,如果在训练池中插入足够多的坏数据,那么模型学习的边界基本上就是垃圾,模型就会变得毫无用处。这是机器学习领域的 DOS 攻击。
除了攻击者的目标,还有攻击者的动机。这一点要主观得多,而且与WHO交织在一起。如果你是一个黑客组织,顾名思义,你想发表某种声明;如果你是一个黑帽子组织,你可能想获得经济利益。
如何(HOW)
技术部分。别人如何才能真正破解你的模型?(在此,将重点讨论 ML 特有的漏洞,而不包括传统的网络安全问题,如 ML 服务器上的 DDOS)。
我们可以从以下四个方面对 ML 攻击进行分类:
- 时机(训练/推理)
- 能力(白盒/黑盒/灰盒)
- 局限性(扰动距离/功能/领域/再训练频率)
- 替代方法
时机(Timing ) --这是指攻击发生在 ML 部署管道的哪个位置。这里有两大选择–训练时间和推理时间。
- 训练时的攻击意味着攻击者能够影响训练数据集(威力无限,但很难做到,而且有额外限制)。
- 推理时的攻击意味着攻击者只能扰乱直接输入(可能强大,也可能不强大,这取决于模型,但由于只需要一种注入修改输入的方法,因此更容易实施)。
能力(Capability )–指攻击者对 ML 系统内部的了解。具体来说
- 白盒(WhiteBox )攻击假定攻击者知道底层数据的分布(有可能获取部分数据)、模型的架构、使用的优化算法以及权重和偏差。
- 黑盒(BlackBox )攻击假定攻击者对 ML 系统一无所知(因此不知道上述任何内容)。它们可以分为两种类型:硬标签(攻击者只从分类器中获得预测标签)和置信度(攻击者从分类器中获得预测标签和置信度分数)。
- 灰盒(GreyBox )攻击介于两者之间。例如,攻击者可能知道模型是什么样的,但不知道底层数据是什么样的,反之亦然。
限制(Limitations ) 是指限制攻击者可以执行的操作的某些规则。这些确实是 ML 系统特定的。例如:
- 在图像中,将扰动空间限制为 “距离 ”度量是很常见的,通常是从 Li、L1 或 L2 规范中挑选出来的。关于这种方法是否合理,这里有一个有趣的争论(阅读这份长达 33 页的白皮书,了解更多信息)。
- 在恶意软件中,攻击者只能在特定位置以特定方式扰乱文件,否则文件将失去其恶意功能或完全崩溃。
- 在物理设备(卫星、汽车、无人机、监控摄像头)上部署的系统中,攻击者可能只能修改物理域中的输入。
- 在训练时的攻击中,攻击者需要做到两点:a) 系统根据新数据不断进行再训练(否则他们就无法注入不良数据);b) 系统从外部来源获取数据,最好不需要人工批准。
- 在隐私攻击中,攻击者一般需要一个没有查询限制并能输出置信度分数的公共端点。置信度分数的限制性特别强–例如,大多数反病毒产品只会告诉你它们认为该文件是 “恶意 ”还是 “良性”,而不会提供更多细节。
替代方案(Alternatives )–一个在安全领域工作了 25 年的人把攻击者形容为 “电”。他们总是选择阻力最小的路径。
这是一个重要的标准,很容易决定一个威胁模型的成败。攻击 ML 组件是否是攻击者达到目的的最简单方法?例如,如果目标是侵犯隐私,他们是否会费尽周折在你的分类器上建立影子模型来获取数据,或者是否有更容易利用的漏洞?
将威胁模型融为一体
让我们把它们汇集在一起:
现在,让我们来介绍一些术语。
在对抗式 ML(Adversarial ML )(ML 安全的学术层面)中,通常从 “WHY ”维度中提取 “Goal”(目标),从 “HOW”(如何)维度中提取 “Timing”(时机)来命名攻击。输出结果如下
- 规避攻击(Evasion attacks)(也称为 “对抗样本(adversarial examples)”) 无疑是最常见的攻击类型。它们发生在推理时,利用的是 ML 固有的漏洞(或者说是 “特征”?)
- 病毒攻击(Poisoning attacks) 发生在训练时间,目标有两个–完整性或可用性。攻击者可以在训练池中插入一些精心挑选的示例,从而在训练池中建立一个 “后门”(完整性),也可以插入大量的坏数据,使模型的边界基本上变得毫无用处(可用性)。在此了解有关机器学习中毒的所有信息。
- 隐私攻击(rivacy attacks) 可能是研究得最少的一种攻击,但尤其在今天,它是一种极其重要的威胁。在这种情况下,攻击者并不想干扰你的机器学习模型的工作,而是想从中提取可能是敏感的私人信息。有关隐私漏洞和修复方法,请阅读我的完整文章。
参考文献
What everyone forgets about Machine Learning
Will my Machine Learning System be attacked?
Poisoning attacks on Machine Learning
Privacy attacks on Machine Learning