当前位置: 首页 > 科技观察

机器学习在网络安全领域的应用难点与对策

时间:2023-03-16 16:17:35 科技观察

网络安全领域特有的对抗属性给人工智能的应用带来了诸多困难,但我们并不认为这最终会阻止人工情报成为网络安全的武器。我们试图分析人工智能在网络安全应用中可能存在的困难,并尝试解决这些困难。基于机器学习和深度学习的网络安全应用研究是近年来网络安全领域的热门研究方向。从现有资料来看,安全专家在异常进程行为检测、恶意代码检测、网络入侵检测等方面进行了广泛的学术研究。但我们的直觉是,主流安全厂商并没有大规模部署和使用这些技术,市面上宣称使用机器学习和深度学习的安全产品也相当有限。与机器学习和深度学习在人脸识别、推荐系统、舆情监督等领域的大规模成功应用相比,它们在网络安全领域表现平平肯定有一些特殊的原因。本文将深入探讨机器学习、深度学习等技术在网络安全领域的应用面临的困难及相应的对策。虽然这些困难并未使机器学习和深度学习成为网络安全领域的不合适工具,但这些困难是业界未能大规模采用机器学习和深度学习技术的主要原因。同时,由于近年来的媒体报道往往夸大人工智能技术的成就,而忽视其缺陷和困难,显得有失偏颇。对此,决策者不应仅仅被其表面光彩所迷惑,而应该对人工智能技术有足够清晰的认识。希望本文能为这种理解提供一个可以探索的方向。注:为方便下文描述,下文将使用“人工智能系统”来指代依赖于机器学习或深度学习的安全防护或检测系统。难点一:确定一个真正需要使用人工智能的任务。当人工智能上升为国家战略,深度学习成为新兴技术。对于公司的决策层来说,应该考虑的是人工智能技术在公司发展的现阶段是否真的需要。首先,需要对人工智能技术有足够清晰和深入的理解。现阶段,人工智能的实施是以数据驱动的。优秀的人工智能是建立在海量行业数据的支撑之上的。其次,无论是AI开发还是应用阶段都是计算密集型的。虽然所需要的软硬件计算环境与传统的软件开发有很大的不同,但带来的收益还是比较可观的。以机器学习为代表的人工智能具有高效、自动化、可扩展等特点,可以在很大程度上替代日常事务的人工处理。在启动人工智能项目时,最大的挑战是如何确定一项真正需要使用人工智能技术并能够成功开发和实施的任务。对策决策者需要在了解人工智能的工作机制及其优缺点的基础上,思考并决定是否在具体任务中使用人工智能技术。在时间、成本、团队、可行性、预期效果等方面,需要重点考虑。机会。想想使用传统技术在解决具体任务时是否遇到了瓶颈和缺陷,然后需要开发下一代技术。对于这个任务,除了人工智能的解决方案,还有没有其他更有效、更方便的方法来解决。如无其他可行方案,是否已做好采用人工智能技术方案的相关数据收集工作,或可随时进行数据收集工作。只有充分思考了这些问题,才能基本确定是否采用人工智能技术来解决问题。人工智能不是灵丹妙药,而是一种有效但更复杂的灵丹妙药。成本。永远不要低估人工智能系统的成本。人工智能系统的开发和维护都需要大量的持续投入,包括算力资源、人力资源的投入,以及数据收集、组织和存储的成本。很多机构没有足够的资金来承担如此大规模的投资,导致项目中途流产,前期的努力付之东流;因此,在项目前期,需要慎重考虑是否有足够的能力承担应有的成本投资。团队。人工智能系统的软件工程团队包括问题领域的专家(主题专家)、数据科学家、数据架构师和其他专业人员。这些团队成员带来了构成人工智能系统核心的算法选择、模型构建、模型定制和数据管道管理方面的技能。它们共同控制着AI系统对性能、可扩展性、带宽、资源管理和版本控制的高要求。可行性。可行性评估要求决策者对特定任务的性质有足够深刻的理解。一项任务能否通过人工智能技术实现自动化,基本上取决于任务的性质、可收集的数据以及两者之间的关系。深度学习知名人士吴恩达曾提到一个经验法则:“如果一个普通人在做某项任务时能在不到一秒的时间内搞定,那么这个任务很可能可以通过AI.Technologyautomation,noworinthenearfuture”,那么对于网络安全领域来说,如果一个专业水平在平均水平以上的安全技术人员能够在短时间的思考之后想出某个任务,那么这个任务就有很有可能它也可以通过人工智能技术实现自动化。预期结果。对于预期效果的预测,前提是你对自己定义的任务和问题主题有足够清晰的认识。仔细思考并确定AI系统可接受的性能和效率下限,以便工程师可以快速接受指令并明确优化系统以实现这一目标。当然,优化后的系统难免会出现误报和漏报。因此,需要尽快确定任务对误报和漏报的敏感性、风险成本的范围和处置机制。人工智能系统也有被绕过的风险。对抗性在网络安全领域无处不在。为了避免对抗性样本的出现,如何保护人工智能系统免受攻击也是需要提前考虑的问题。难点二:数据泛滥,难以获得高质量的训练数据集。网络安全领域往往不缺数据。每天都有无数的攻击发生,安全厂商的后台数据库每天都可以记录无数的攻击数据。然而,仅仅依靠数据量不足以支撑人工智能系统的发展,这些数据中不可避免地存在着显着的冗余。数据质量是真正人工智能的基石。目前,人工智能还处于弱人工智能的发展阶段。人工智能来源于从海量数据中学习规则、模式、特征和经验。在机器学习支持的人工智能工程中,最大的性能改进通常来自更高质量的数据,而不是更复杂的算法。对于所有的人工智能系统,其训练数据集的质量包括三个层次:一是数据的多样性,要求采集的数据包含研究范围内的各类数据;二是数据的可靠性,即数据被准确识别为何种类型和属性的数据;三是数据量,即经过数据采集、清洗、处理和去重后可靠数据的数量。太少将无法训练出可靠的模型,尤其是在使用深度学习等具有许多参数的复杂模型时。数据的采集、清洗、标注、保护、监控和维护统称为人工智能项目的数据管理,贯穿于项目立项到项目落地、维护、迭代的全生命周期,将消耗大量的时间和精力。这占用了整个项目80%以上的时间。与其他领域不同,网络安全领域人工智能系统项目的数据管理成本更高、难度更大,主要有以下几个原因:(1)环境变化。一方面,环境的变化体现在业务的多样性,导致白样本的多样性;另一方面体现在对抗环境中,导致恶意样本的匹配;公开数据的有效性并不好。因为不同用户在不同场景下的数据是不一样的,所以公开数据的场景和你面对的环境和场景可能会有很大的不同,无法使用。算法工具通常是开源的,但好的数据集通常是专有的。在安全领域尤其如此。安全供应商倾向于“隐藏”与安全相关的数据,因此通常无法获得具有代表性和准确标记的数据(尤其是涉及流量数据时)。拥有大量高质量的特定领域数据集可以成为竞争优势的重要来源。(3).数据处理、清洗和标注都非常专业。人脸识别、猫狗分类、垃圾邮件等任务的数据标注,任何受过基础教育的人都可以完成,而网络安全是一个高度专业化的行业,网络安全检测相关的标注数据集需要专业的安全工程师。胜任的。(4)黑色样品种类稀少,采集困难。这对后续系统的可靠性影响很大。IBM的肿瘤学专家咨询系统WatsonforOncology因不安全的治疗方案和相关建议而被终止。经过研究,研究人员发现,由于该软件仅针对少数假设的癌症患者进行训练——而非实际患者数据,因此使用的黑色样本类型很少见,因此在可靠性方面存在严重问题。在网络安全领域,如果数据的黑样本不够全面,也会导致类似的可靠性问题。(5)非结构化数据。网络安全领域要处理的数据,无论是网络流量、恶意代码还是恶意文件,大多都是非结构化数据,而这种数据的处理要比结构化数据复杂和困难。(6)数据清洗难以实现自动化,工具较少。对策(一)商业合作框架下的数据共享。当然,前提是你已经积累了可观的数据,合作共享才有可能。网络安全领域的数据共享必须避免违反《网络安全法》等法律法规;(2)依托现有的检测工具,实现一定程度的数据自动采集和标注。现有的威胁检测工具对于相应的任务仍然具有相当的检测能力。如果将它们转化为自动化的标注工具,这个问题就可以得到相应的解决;(3)随时应变,随机应变。是先收集数据还是先确定任务主题,这个问题没有标准答案,不同的组织可能会有不同的选择。一些组织在收集大量数据之前不会考虑如何处理这些数据。其他组织首先确定任务,列出所需数据的类型,然后收集数据。为此目的,任何订单都是可能的。难点三:犯错误需要付出昂贵的代价在网络安全领域,人工智能常被应用于风险检测。与许多其他人工智能应用程序相比,风险检测错误的相对成本非常高。误报要求分析师花费大量时间检查报告的风险事件以确定它是否是良性的。即使是很小的误报率也会使风险监控系统失效。如表1所示,假设我们开发了一个准确率为99%的风险监控模型,这在众多人工智能系统中已经属于较高水平。然后,假设我们已经在某个场景中部署了模型。在部署过程中,生成了999,900个良性事件样本和100个恶性事件??样本。这是一个相对合理的假设。与正常事件相比,风险事件的发生始终是极小概率事件。.在此基础上,还会出现9999次误报,从而导致一系列后果:小到耗费分析人员的时间和成本,大到影响业务系统的正常运行。表1:99%准确度检测系统的警报数量一方面,误报造成的损害是直接的。绕过检测的风险可能导致被保护系统的直接破坏,??影响业务的正常开展,甚至严重破坏IT基础设施。我们认为,如此高的错误成本是安全厂商需要谨慎使用机器学习技术的最大原因。这让我们可以进一步比较人工智能误分类对其他领域的影响,比较起来或许更有启发意义。电子商务的推荐系统是人工智能应用最成功的领域之一。推荐系统很容易容忍错误,因为这些错误不会立即产生负面影响。虽然好的推荐可能会增加卖家的销售额,但坏的推荐除了失去交易机会并需要制定更具吸引力的推荐策略外,对消费者并无害处。相比之下,OCR技术也更容错。拼写和语法检查通常可用于清除明显的错误,使用统计语言模型将概率与结果相关联,并对OCR系统的初始输出进行后处理。此外,对用户进行了培训,这保证了在输出文本中存在差异时用户可以进行一定程度的手动校对。与人工验证安全事件告警相比,验证校对文本的识别结果不需要专业知识,成本和难度远低于验证安全告警。在不同的行业和不同的场景下,人类对人工智能在概率性能方面的期望是不同的(在安防行业,期望值高,容错率低),这也是为什么人工智能产品或技术在行业中不够普及的原因。网络安全领域。一般来说,网络安全检测系统对错误数据的容忍度比较严格。人工智能在其他领域的运用是在做加法,而人工智能在网络安全领域的运用更像是在做减法,挑战更大。表2:恶意软件检测算法研究的预测准确性另一个挑战是模型复杂性和效率之间的冲突。一般来说,为了得到错误率较低的模型,模型的复杂度不应该太低,因此对应的复杂模型需要大量的计算量。世界上没有免费的午餐。如表2所示,虽然更深入的特征可以带来更好的精度,但获取难度大,效率低。两者之间的权衡是一个巨大的挑战,尤其是在安全风险监控系统中,往往需要对风险进行快速、实时的响应。对策限制误报数量是任何威胁检测系统的首要任务。在减少错误的方向上最重要的一步是缩小系统的范围,即定义一个明确的检测目标。如果没有明确的目标,任何威胁检测系统都无法在不影响其检测率的情况下实现可容忍的误报量。此外,使用粗粒度特征在适当的时间间隔内聚合或平均特征也有助于减少误报。最后,我们可以通过在附加信息的支持下进行后处理来减少误报。如果我们发现自动化后处理不可行,我们仍然可以通过向分析师提供额外信息来加快人工审查过程,从而降低错误成本。难点四:人工智能系统本身是一个软件系统,难免存在漏洞可以被利用,也是天然的攻击目标,尤其是作为网络安全检测和防护系统的一部分时,可以考虑处于对抗环境中。相比之下,OCR系统的用户不会试图给输入添加噪音,甚至会主动提供更高质量的输入数据;淘宝用户不会有太大的动机去误导商品推荐系统,这对他们来说是没有用的。意义。然而,在网络安全领域,情况恰恰相反。那些破坏、绕过和欺骗人工智能检测系统的攻击者有足够的动机来实现他们的入侵目标。机器学习系统在对抗环境下的风险至少可以从三个层面体现出来。在数据层面,中毒攻击是典型的。投毒攻击主要是对人工智能系统在训练模型时所需的训练数据进行投毒,是一种破坏模型可用性和完整性的诱导攻击。攻击者注入一些精心伪造的恶意数据样本,这些样本通常具有错误的标签和攻击属性,破坏原始训练数据的概率分布,从而降低训练模型的分类或聚类精度,达到破坏训练模型的目的.由于实践中人工智能系统的原始训练数据大多是保密的,一般不容易被攻击者修改。然而,许多系统需要定期收集新数据以增强其适应性并进行再训练以更新模型。攻击者可以利用它。图1:中毒攻击模型级别示意图,模型绕过风险,即存在对抗样本攻击。攻击者生成一些可以绕过人工智能检测系统的对抗样本。这些是对抗样本,可以成功逃避安全系统的检测,实现对系统的恶意攻击,对系统的安全造成严重威胁。由于存在安全风险检测模型,人工智能系统模型的输入数据变化大,易变。我们很难限制要检测的恶意软件的大小,没有理由限制要检测的恶意代码样本的行数,也没有办法限制要检测的网络流量数据包的内容检测到,因此这为对抗性样本提供了更大的空间。这个层面的交锋是最容易发生的,也是人工智能探测系统在交锋中最薄弱的环境。交锋之下,新的攻击手段和攻击样本将层出不穷。因此,该模型应用于网络安全领域的迭代频率高于其他模型。领域要高得多。试想,几千年后,今天训练出来的猫狗分类模型在那个时候可能仍然可以使用,但是相应的恶意软件、木马文件、攻击流量也产生了许多超出当前模型能力的新形态。在框架层面,深度学习框架通常是复杂的软件,包含数十万代码和众多依赖,几乎不可避免地存在已知或未知的错误。在国家信息安全漏洞库中,可以查到2019年报告的8条tensorflow相关漏洞信息(如图2所示)。Torch、Caffe等框架也存在漏洞,这些框架的公共依赖包也存在很多漏洞,比如numpy、opencv。对此,相关安全研究已经重现了这些漏洞将导致的拒绝服务、绕过检测和系统损坏的风险。图2:Tensorflow历史漏洞因此,网络安全领域正在进行一场军备竞赛:攻击者和防御者各自改进自己的工具和技术,以响应对方设计的新技术。使用人工智能技术的反制措施实际上给攻击者带来了更多的攻击面,比如算法和数据。在保护方面,可以考虑以下几点:(1)严格限制模型的输入,对进入模型的样本设置过滤条件。过滤条件是根据任务的专家领域知识和模型训练过程中的设置来总结的。例如,识别php类webshel??ls的模型可以将输入设置为文件后缀为.php或.txt,内容包括(2)从模型本身训练其区分良性和恶意数据的能力。将已知的对抗样本或自建的对抗样本数据添加到模型的训练数据集中,然后训练模型。(3)在上线和部署之前,在对抗环境中测试和评估人工智能系统。在对抗场景或极端条件下测试系统,而不仅仅是正常的事件测试。例如,使用噪声数据训练和测试来评估模型的泛化能力和抗噪声能力,使用有毒数据来评估系统在对抗环境中的抵抗能力。当然,对抗环境带来的风险也不用太过担心,因为要绕过一个人工智能系统,攻击者需要付出大量的努力、时间和专业知识,这往往比绕过常规的要困难得多。规则。难点5:模型的可解释性以及如何拟合AI系统的输出比大多数其他系统需要更多的解释。由于人工智能系统引入的不确定性在用户的某些任务和场景中可能是无法接受的,所以往往需要与客户沟通做出这样的输出判断的依据和原因。在其他机器学习应用程序中,可解释性问题可能不那么重要。大多数用于图像类别识别的机器学习都可以忽略可解释性,因为图像属于什么类别是直观的,普通人很容易判断结果是对还是错。同样,垃圾邮件检测器将电子邮件分类为垃圾邮件是一项直观的任务,没有太多的解释空间。但是,作为安全风险检测应用,检测结果往往并不直观,至少对于非网络安全专业的客户来说,此时的解释输出是获得客户信任的必要工作。假设AI系统能够准确发现以前未知的Web服务器漏洞,仅上报为“主机的HTTP流量与正常配置文件不匹配”,即使其告警足够可信,运维人员也需要花费很多额外的努力来找出发生了什么。安全风险检测往往需要进一步指导相关人员快速评估和响应制定风险处置方案,而这一过程伴随着极高的错误成本。因此,对检测结果进行必要且正确的解释是安全风险检测应用的基本要求,同时也保证了其可用性。但是,这里的难点在于我们如何将人工智能系统输出的信息展示给用户,让他们能够正确的接收和理解这些信息,同时又不能展示太多的信息,以防暴露太多向竞争对手提供模型信息或被攻击者利用。更难的是,人工智能模型最初的解释是一个包含一系列检测逻辑的数学术语,比如变量超过给定的阈值,非建模人员不易理解,用途有限对于输出结果。如何将这些数学语义的解释与商业语义联系起来是一个更大的问题。对策(1)重新设计输出结果的可解释性。现有的机器学习和深度学习模型输出解释技术通常归因于特征。如果直接展示这些信息,很容易为竞争对手或攻击者变相提供模型。敏感信息会增加模型被绕过的风险。我们可以重新归纳结果的设计,与隐式模型相关的细节,尤其是数值相关的信息应该避免呈现,输出结果的可靠性和不确定性应该避免使用数值描述,我们可以用“低、中、高”分级表达。(2)解释结果最重要的方面是理解它们的来源。一个好的解释通常需要在非常低的层次上连接输入和输出。难点六:综合评估难对于网络安全领域的人工智能系统,设计出合理完整的评估方案并非易事。事实上,这可能比建立识别模型本身还要困难。综合评估中最重要的一步是获取适当的数据。在网络安全领域,评估AI系统的最大挑战是缺乏合适、公正且易于获得的足够规模的公共数据集。即使企业自建测试数据集,也难以获得足够全面的数据。以互联网流量为例,它是典型的网络安全检测对象。互联网流量是企业和组织的重要私有资源,不易共享。对于不同的组织和不同的业务,网络流量是多种多样的。小型实验室网络中的流量特征将与大型业务系统中的流量显着不同。即使在单个网络内,网络最基本的特征,如带宽、连接持续时间和应用组合,也可能表现出巨大的可变性,使其流量特征在短时间内(从几秒到几小时)不同。可能很大。更重要的是,大多数企业或组织不具备获得可观网络流量的条件。即使通过模拟采集,由于数据的真实性和相关性,也会对后续的人工智能系统产生不利影响。小环境分析得出的结论往往不能推广到大环境分析。因此,不完整的数据带来了对模型性能的不完整评价,即人工智能系统能检测到什么,不能检测到什么,可靠性如何,难以综合评价。对策不幸的是,目前还没有很好的解决评估数据缺乏的问题。与任何研究一样,需要承认自己的评估数据集可能存在的缺点。虽然困难,但有必要从各种环境中获取包含真实网络流量的数据集。理想情况下,我们从不同的网络中获取大量数据,因为没有一个数据集是完美的,所以在评估一个检测系统时,通常需要多个数据集来支持。证明系统可以学习适应不同的环境也需要使用来自多个来源的数据进行评估。对于类似于互联网流量多样性的问题,一种可行的方法是使用聚合。虽然流量特性在中小时间间隔内变化很大,但在较长时间段(几小时到几天,有时是几周)内观察到的流量特性往往更稳定。难点七:机器学习难以部署和维护。一个设计和开发良好的机器学习模块与现有安全防护系统的其他部分集成在一起,会带来一系列的问题和风险。首先是兼容性问题。机器学习和深度学习开发和部署工具的引入时间通常晚于实现其他现有安全系统模块的工具。Tensorflow是2015年推出的,而PyTorch是2017年才推出的,如果现有的保护系统已经运行了很多年,在集成中大概率存在底层技术不兼容的问题。二是安全业务流程的改变。目前水平的机器学习应用通常很难独立开发成成熟的安全防护应用。很多时候会涉及到与现有保护模块的互补和协作,这就需要重新设计相关的业务流程。最后是保护机器学习模块的完整性和可用性。这可能需要依靠现有系统来保护机器学习模块的核心组件免受损坏、篡改、盗窃等。因为对手获得的模型信息越多,绕过模型的成本越低,防护效果就越差。网络安全是一个瞬息万变的领域。攻击者会变,手段不会永远相同,编程语言会升级,攻击武器会层出不穷。只有相应地改变模型才能充分解决这些变化。所以从维护的角度来说,核心问题是更新频率高。在高频更新需求下,人工智能系统的变化率与整个系统的其他模块不一致。数据和模型经常变化,这意味着系统的其他部分也需要变化。收集数据,在需要的地方标记数据,并不断调查和了解网络安全状况将是维护ML工具的持续需求。在迭代过程中,我们将面临模型更新后系统能够识别和检测到无法检测到的威胁的问题。考虑图3中的简化模型,假设黑色圆圈是威胁样本,我们第一个模型F(X)的准确率是(3+4)/10=70%,我们将模型迭代到第二个模型G(X),其准确率为(5+4)/10=90%,准确率明显提升,但左下角的黑圈样本可以通过F(X)检测,但更高的准确率G(X)未被识别。这在机器学习项目中经常出现。由于算法的优化目标是对准确率等指定数据集做出全局最优解,在迭代过程中,可能由于数据集的增减或黑样本的增加,数据平衡和分布规律和之前不一样,或者模型的超参数被调整等等,都会改变模型的决策边界,导致这种情况的发生。图3:模型迭代效果示意图反制开发团队在架构设计上应充分考虑安全性、易用性、可靠性、性能、可扩展性等核心需求。尽可能实施松耦合的部署方案,可以扩展或替换以适应不可避免的数据和模型变化以及算法创新,从而减少每次更新对系统其他模块或系统基础设施的影响和变化。实现收集反馈的闭环,跟踪生产环境中人工智能系统的输出,形成反馈工作流,定期分析反馈检测结果和性能指标,发现薄弱环境,指导下一次迭代。只要有可能,应使用自动化方法来获取对系统输出的人工反馈并改进(即重新训练)模型。即时监控用户体验以及早发现问题,例如以系统延迟或准确性降低形式出现的性能下降。即使在低交互系统中,也要确保持续的人类参与,以监控计算机是否正在评估它无法编码的判断(实际、道德、伦理、可信、风险相关),以及是否有模型篡改或系统滥用的迹象。