# 计算机安全中机器学习的经验与禁忌:Dos and Don’ts of Machine Learning in Computer Security
31st USENIX Security Symposium (USENIX Security 2022) (CCF A 类)
⭐⭐⭐
发表时间:10 August 2022
原文链接:https://www.usenix.org/conference/usenixsecurity22/presentation/arp
# 摘要
《Dos and Don'ts of Machine Learning in Computer Security》就特别直白,翻译过来就是“机器学习在计算机安全中的‘该做与不该做’”。
在计算机安全领域用机器学习,坑太多了! 很多时候,我们辛辛苦苦做出来的模型,在实验室里看着效果贼好,一到真实世界就“拉胯”,甚至根本没用。
如果我们用的机器学习模型本身就有缺陷,或者评估方法不靠谱,那我们就是在“自欺欺人”。
# 核心思想
数据是万恶之源(P1 采样偏差 & P2 标签不准确):数据集来源不好就完蛋!
测试集是底线,不能碰!(P3 数据窥探 & P5 偏置参数选择):调参不能看测试集!!!!
模型学到了啥?别光看结果!(P4 虚假关联):避免刻板印象,看学习的结果如何
评估要严谨,别被数字骗了!(P7 不恰当的性能指标 & P8 基线错误率谬误):要多考虑几个指标,精确率和召回率
实验室不是真实世界!(P9 仅限实验室评估):考虑真实情况
别忘了攻击者!(P10 不恰当的威胁模型):攻击是会学习和进化的,要考虑防止绕过
# 研究方法
第一步:找坑。 作者先是凭经验和文献,总结出了10个常见的“坑”。
第二步:验坑。 他们找了过去10年顶级安全会议的30篇论文
第三步:填坑。 作者自己动手,在四个不同的安全场景(比如手机恶意软件检测、漏洞发现)里,故意制造或者模拟这些“坑”,然后看看模型表现会差多少。
# 总结
1、花时间理解数据集,理解并做好数据清洗。
2、不可以用测试集
3、多问为什么?学到了什么?是不是要学的?是不是学错了?
4、准确率不是唯一标准,要结合多个数据看。
总而言之就要考虑:数据集评估、模型评估、鲁棒性设计
# 我的理解
这篇论文不是提出一个新的模型,而是在提醒安全领域使用机器学习时,很多“高准确率”可能是假的。作者真正关心的是:模型到底有没有学到安全问题本身,还是只是学到了数据集里的偏差、标签错误、实验设置漏洞。
# 对我研究的启发
如果我后面做入侵检测、恶意流量检测或漏洞检测实验,不能只追求模型分数更高,而要重点检查:
数据集是否真实、干净、代表实际场景。
训练集、验证集、测试集是否严格隔离。
模型是否可能学到了无关特征。
评价指标是否适合安全任务,不能只看准确率。
是否考虑攻击者会绕过模型。
实验结果是否能迁移到真实环境。
在计算机安全里用机器学习,最危险的不是模型效果差,而是模型看起来很好、其实学错了东西。