传统的网络安全防护手段主要是通过单点的网络安全设备,随着网络攻击的方式和手段不断的变化,大数据和人工智能技术也在最近十年飞速地发展,网络安全防护也逐渐开始拥抱大数据和人工智能。传统的安全设备和防护手段容易形成数据孤岛,一种设备只能解决某一方面的问题,基于已有特征进行匹配,未将数据进行集中、组合和关联,缺乏有效的上下文分析,无法进行深度分析,无法发现未知或隐蔽的威胁。通过大数据和人工智能的方法,可以将各种网络安全相关的数据集中关联和分析,这是网络安全分析的长期发展方向。
网络安全大数据这块也经历了很多年发展,但是在工程实践中,针对网络安全问题的防护还是存在很多欠缺的地方,市场这块也集中在监管类的安全大数据产品,运营类安全大数据市场需求偏少。结合自己对网络安全大数据的了解,主要从几下几个方面谈谈自己的看法:
● 数据对接成本高
涉及到不同厂商、不同设备的数据对接,缺乏统一的数据对接标准和规范,都是历史遗留的问题,不光是技术升级的成本,还涉及到厂商设备升级的费用问题,毕竟天下没有免费的午餐,项目本身的协调成本大于技术维护成本。
● 检测能力普遍不足
目前各大厂商对安全大数据的宣传是解决未知和隐蔽的高级可持续性威胁,但是基于产品应用的情况来看,很多远远满足不了这个宣传策略。那问题点在哪里了,站在我思考的角度来看,还是出在数据问题上,目前接入的一些网络安全设备数据,本质上还是接入的基于特征匹配的部分日志数据,而基于主机、服务器、程序等实体对象操作行为数据和流量数据偏少。应当摒弃过渡依赖基于特征匹配的思路,而应当从数据的选择上就要考虑需要基于原始行为和原始流量的数据进行分析,避免部分特征匹配的数据成为分析的干扰源。
● 业务理解程度不够
网络安全大数据产品目前主要还是以相关国家标准进行建设,重点还是停留在合规监管层面,产品研发更多地在按标准依葫芦画瓢,以达到国家相关部门的测评为准则,其实国家相关部门出的标准和测试都是基于单点的思路和规则,没有从整体和全局的角度去系统性测试产品,很多厂商为了应付测试也钻了空子。正常情况下,应当是和相关部门、企业一起结合实际的网络安全防护场景进行研究,以攻为守,基于业务需求进行建模,以满足实用实战为导向。
● 系统和运营未有效结合
很多部门、企业建设了网络安全大数据相关的系统,仅仅只停留在应付上级主管部门检查的层面,没有很好利用系统,没有专门的网络安全人员进行运营管理。就好比军工厂交付武器给军队,如何将武器的作用发挥至最大化,如何改进武器适应战场,还得练兵备战,与人的意志结合,将武器效能最大化。安全大数据系统也一样,必须有专业的网络安全人员进行运营和管理,将系统的作用最大化,提升安全大数据系统练兵备战的能力。
下面谈谈我的整个安全大数据框架和思路,大致框架如下图所示:
安全大数据总体过程包括数据采集、数据接入、数据预处理、数据存储、数据分析、结果展示,各行各业大数据分析都是这个思路和流程,只是需要处理的问题不一样,我们面向的是网络安全大数据这块。
● 数据采集(数据来源)
数据是基础,必须接入更多的安全相关数据,安全大数据一方面是要解决基于已知特征的数据分析,更重要方面是要解决未知或隐蔽的威胁,那就要弄清底层逻辑是什么。基于已知特征数据这块,目前存在一个点就是不同厂商的安全设备的能力不一样,无法从根本上规避它提供数据的准确性。那有一个重要的核心点就是需要什么样的数据,从什么方面去挖掘和分析威胁,任何事物都是运动的,我们可以变化中寻求最优解,网络威胁也一样。我们应当获取每个实体最原始的行为数据,从动机和行为入手,不能忽视最合适的数据源。
● 数据接入
需要考虑的是多种数据源接入和时间同步问题,为什么要考虑这个问题,因为有些数据之间有相互关联,多种数据在时间序列上来看,就够成了一定的可疑数据块,这就是全局与个体的关系,威胁行为任何时刻都有可能发生,能提前感知就能减少风险。很多厂商在做产品设计的时候,忽略了数据接入的重要性。根据业务场景需求,一定要弄清每种业务场景需要的数据源接入原则,从时间、数据量上要周全考虑,并不是所有业务场景,所有的数据接入都是一致性要求,这个必须要区别对待,具体问题具体分析。
● 数据预处理
需要对接入的数据进行批量、快速处理满足需求,如何预处理数据,这个需要考虑的点也是要根据业务场景来定义。通过逆向方式分析,以结果为导向,从数据分析和存储要求进行定义,剔除干扰和多余数据,减少数据分析时系统的开销。
● 数据存储
采用基于开源的大数据技术框架,每个公司的技术实现都大同小异,重点需要考虑的是数据的写入和查询效率,数据的备份恢复问题。
● 数据分析
大数据分析的前提是要借助流式计算引擎,目前主流厂商都是选择Flink。数据分析的前提是要有具体的业务场景,再基于业务场景进行业务建模,再根据业务模型确定采用什么技术方案实现业务需求。一般会从普通规则、动态基线、机器学习、深度学习等技术方法去实现,通过普通规则去匹配,也可以运用基线比较方法,也可以使用机器学习和深度学习的方法进行异常行为分析。
下面重点讲一下机器学习和深度学习相关的数据分析方法。首先我们理清几个概念,模型、算法、数据、训练程序的关系。
模型就是根据数据训练出来的一段程序,针对某一业务场景需求,系统程序调用模型,输入数据,得出分析结果。那模型一般如何训练了?那就可以分为系统外训练和系统内训练了。
系统外训练就是与现有系统独立,互不干涉,有专门的训练环境,模型训练好了,导入现有系统升级进行使用,再通过现有系统使用情况进行评估和反馈,不断的在训练环境进行训练,这样形成一个闭环反馈机制。
系统内训练就是基于现有系统数据进行训练,模型训练好了,系统程序直接进行调用,差不多是个半自动化的过程,同时网络安全运营人员也可以根据人为的经验和现有模型的结果不断的去分析和标记数据,借助人的作用不断去强化训练这个模型,这样系统就包括两部分功能,一部分是业务使用,一部分是基于现有业务数据在系统内不断训练模型,不断地智能验证效果,减少人为过多地干预,这样安全运营人员和系统就深度绑定了,因为安全大数据产品设计过程中,要充分考虑和借助专业的网络安全人员来训练模型,说个题外话,网络安全人员不能脱离人工智能相关的技术。
算法是核心,基于业务场景的分析,解决客户什么问题,考虑周全之后,确定需要分析的数据源,希望达到的预期效果,选择合适的人工智能算法,算法也不是可以解决所有问题,它是根据不同的问题有对应的算法,一旦确定了算法,在训练过程中不能随便去变更算法,那这样之前的训练就白废了。
数据是基础,往往网络安全的数据问题是个难点,很多场景很难找到合适的样本数据,比如说客户提供一个新场景,自己觉得可以用哪种算法来实现,但是样本数据满足不了要求。对数据的整合和规范,这个是网络安全采用人工智能学习的一个难点和未来必须要解决的方向。
训练程序顾名思义就是训练模型的程序,这个也不存在技术难点。
● 结果展示
将存储和分析结果数据如何进行展示,这个也是一个重点,以什么方式传递给用户很关键。安全大数据主要是通过机器进行数据分析直接得出结果,还有基于原始数据的结果。一定要基于这两方面的结果数据进行考虑,因为机器和程序分析的始终无法代替人的大脑思考,况且人脑思考问题和决策也不能保证万无一失。所以说在产品设计的时候,一定要基于两方面的考虑:一是要支持原始数据的查询和统计,用户根据自己的安全经验进行分析,就像刑侦人员基于自己的经验进行办案一样,任何办案技术加持情况下,也离不开侦查员的分析,任何精确制导和火炮打击情况下,在特定情况下也离不开特种兵的目标引导;二是基于机器和程序分析的结果进行展示和二次分析验证,机器永远只是辅助人类进行思考和决策。
网络安全的本质在于对抗 ,对抗的本质在于攻防两端能力的较量,在于人性的较量,道高一尺,魔高一丈,魔高一尺,道高一丈,此消彼长,网络安全永不停步,现在很多产品的设计脱离了攻防对抗的本质,不管是物理隔离的涉密网、互联网都离不开攻防对抗的思路,应当将红蓝对抗的经验和数据应用到产品中,进攻是最好的防守,没有攻防数据的支撑,人工智能在网络安全分析中的应用也是巧妇难为无米之炊。网络安全离不开人性研究、攻防对抗、云计算、大数据及人工智能的加持。道阻且长,行则将至,行而不辍,未来可期。