• 深度好文 | 机器智能的安全之困


    我们终其一生,都在寻找各自的终极答案。我们无时无刻,无不希望能在自己从事的领域离真相更近一步,哪怕是一小步。对威胁的对抗、对情报的研判、对数据的分析、对知识的理解、对智能的追寻、对内心的挖掘、对人性的洞察、对生命的顿悟、对世界的认知、对宇宙的探索,归根结底都是对真相的渴望。

    安全的真相是什么?安全的过去是人与人的对抗,安全的现状是攻击者加攻击机器对抗防御者加防御机器。而未来安全的终局,一定是机器与机器的自主对抗。从这个角度来看,安全的本质其实是智能体之间的知识对抗,智能可以是碳基的智能,也可以是硅基的智能。到终局那一天我们有没有「搞清楚安全」显得一点都不重要,重要的是到那一天我们亲手锻造的机器智能,作为人类智能的延伸,注定是会早于我们一步,提前触达安全的真相。

    通用技术与人类发展

    技术是人类自身能力的延伸,发明技术是人类最大的天赋。早在现代智人出现之前,早期的原始人就发明了各种技术,使得他们在与其他动物的生物竞争中更占优势。而在人类历史进程中,生产力和经济水平的一次次跃迁,背后的核心推动力是一代又一代通用技术(GPTs General Purpose Technologies)的发明。通用技术通过对已有经济结构和社会结构的影响,彻底影响着人类的发展进程。

    通用技术是单一可识别的基础性共性技术,目前为止人类历史上只有二十来种技术可被归类为通用技术,这些技术具有如下几个特点:

    • 「无处不在」通用技术有着各种各样的使用用途以及大量广泛的使用场景;
    • 「持续改进」随着时间的推移,通用技术不断在改进使用成本也不断降低;
    • 「驱动创新」通用技术使技术创新和技术发明更加容易,催生更多新产品。

    从新石器时代农业革命,对动植物的驯化技术、文字书写技术,到18-19世纪第一次工业革命,蒸汽引擎技术、工厂系统、铁路系统……,到第二次工业革命,内燃机技术、电力技术、汽车技术、飞机技术……,再到20世纪信息革命,计算机、互联网、生物科技等。通用技术的发明间隔时间越来越短、密集程度越来越高、影响范围也越来越大、生产力的提升也越来越快。

    同一时代各种通用技术之间的技术衔接产生的协同效应,更是对生产力提升、经济发展、促进创新起到了叠加推动的作用。蒸汽时代,蒸汽引擎提供动力能源,铁路网连接各个物理空间传输钢铁等物资,应用到各种机器系统。电气时代,中央电站提供电力能源,电力网连接各个物理空间传输电流,应用到各类电气系统。

    信息时代,个人电脑(或服务器)提供计算能力,互联网连接传输数据,连接各个数字空间的信息系统。而在智能时代,通用计算(云边端等各类计算形态)提供计算能力,物理空间和数字空间的边界会越来越模糊形成融合空间,万物互联网连接融合空间中的各个智能系统。不同的时代,通用技术之间有着相似的协同方式。蒸汽时代给机器以动能,电力时代给机器以电能,信息时代给机器以数据,智能时代给机器以知识。

    机器智能的历史发展

    在所有通用技术中,机器智能又是最为特殊的一种通用技术,这是人类第一次发明让机器能自主获取知识的技术,也是人类第一次有能力打造非碳基体系的智能体。

    1882年2月一个寒冷的下午,年轻的尼古拉·特斯拉完成了困扰其5年的交流电发电机设想,欣喜若狂地感叹道「从此之后人类不再是重体力劳动的奴役,我的机器将解放他们,全世界都将如此」。

    1936年,为证明数学中存在不可判定命题,24岁的艾伦·图灵提出「图灵机」的设想,1948年在论文《 INTELLIGENT MACHINERY》中描绘了联结主义的大部分内容,紧接着在1950年发表《COMPUTING MACHINERY AND INTELLIGENCE》,提出了著名的「图灵测试」。同年,马文·明斯基与其同学邓恩·埃德蒙建造了世界上第一台神经网络计算机。

    1955年冯·诺伊曼接受了耶鲁大学西里曼讲座的邀请,讲稿内容后来汇总成书《THECOMPUTER AND THE BRAIN》。1956年,约翰·麦卡锡在达茅斯学院夏季学术研讨会上首次提出了「Aritificial Intelligene」的概念。至此,机器智能的历史序幕正式拉开,符号主义(Symbolism)、联结主义(Connectionism)、行为主义(Actionism)三大流派相继形成。

    机器智能发展至今,经历了几次浪潮和寒冬,三大主义也各自起起落落。50年代起,以专家系统、经典机器学习为代表的符号主义长期占据统治地位。相比之下联结主义则历经了一波三折,从感知机的提出到80年代反向传播的发表,再到深度学习借助算力与数据大获成功,到2018年三巨头Geoffrey Hinton、Yann LeCun、Yoshua Bengio获得图灵奖,最后才变得炙手可热。而以强化学习为代表的行为主义在2016年AlphaGo、AlphaZero的横空出世之后大获关注,更是被誉为通向通用机器智能的必经之路。

    人类智能的演化经历了上百万年,机器智能演化迄今为止也才六十余年。尽管通用机器智能依旧还很遥远,但今天机器智能在很多领域已经逐渐超过了人类智能。过去这六十年,数据计算能力、数据存储能力、数据传输能力都至少提升了1000万倍。同时数据资源的增长速度,更是远远超过摩尔定律增长的速度,预计到2020年全球数据总量能达到40ZB。机器智能今天已经到达通用技术爆炸的一个关键节点,同时在其他通用技术的协同作用下,这一次通用技术引发的变革会比以往任何一次都来得更剧烈。

    数据驱动到智能驱动

    「商业智能与智能商业」、「安全智能与智能安全」……类似这样的词还有很多,二者之间核心的区别前者是单点的智能,后者是全局的智能,前者是基于数据驱动,而后者是基于智能驱动。「数据驱动」与「智能驱动」看似相似但却有着根本性的区别,最本质的不同是背后决策主体的不同。「数据驱动」最终还是依赖人类来做决策,数据只是提供了能够做出更好决策的辅助判断信息,而「智能驱动」则是机器取代人类直接做在线决策。

    人类大脑受认知偏见的影响一直是生命进化的结果。受限于人脑信息传输带宽和信息处理速度的限制,从早期狩猎者阶段开始,人类就逐步形成了基于简单启发式的推理决策系统,规避了处理大量信息的高额成本。这使得人类在处于各种危险的环境时能够快速、几乎无意识地做出决策,文明才得以延续至今。然而,快速和几乎无意识的决策并非意味着总是最佳甚至是准确的决策。

    启发式的方法通过遗传,成为刻入我们大脑中预先加载的认知偏差,这些「偏见」以偏离理性客观的方式影响人类的决策。直到「数据驱动」时代的来临,丰富海量的在线数据为更好的决策提供了辅助判断的依据。我们用通用计算、海量数据处理技术,将数据量减少到人脑可消化的摘要范围之内,用于各种应用场景下的辅助决策。

    「数据驱动」相比以往基于「直觉驱动」或「经验驱动」有着无法比拟的优势,但人类在这其中仍然扮演着「中央处理器」的决策主体,这依然存在着局限性。人脑处理器的吞吐量限制,无法处理全量原始数据,只能将全量数据资源变为「汇总数据」或「摘要数据」,进而再从其中提取知识。这个过程注定是伴随着信息量的损失,从而会丢掉全量数据中的部分隐含关系、数据模式以及数据背后的洞察。

    「智能驱动」是让机器智能直接做线上决策,无论是决策效率、规模程度、客观程度还是进化成长速度,都是「数据驱动」所无法比拟的。「智能驱动」是直接从全量数据资源中提取全量知识,然后运用全量知识直接进行全局决策。「数据驱动」本质上是汇总数据加人类智能,「智能驱动」的本质则是全量数据加机器智能。

    然而现实的现状是在业务场景中我们大量的决策连「数据驱动」都还没做到,更谈不上「智能驱动」。机器智能实现「感知」只是第一步,实现「决策」则是更为关键的一步,现阶段的机器智能正如丘吉尔的一句话「Now this is not the end, it is not even the beginning of the end.But it is perhaps the end of beginning」。那么,到底什么才是真正的机器智能系统?

    智能系统的核心范式

    真正意义上的智能系统,实例的核心范式一定有如下几个组成部分:感知体系、认知体系、决策体系、行动体系。同时,一个智能系统的实例,一定离不开与环境的交互,过去我们总是过多的强调和关注系统内在本身,却容易忽视与环境交互的作用。

    感知体系的作用是对环境进行观测和沉淀,产出的是数据。一切数据的产生都源于对环境的观测和沉淀,观测和沉淀背后的动机是我们测量、记录、分析世界的渴望。信息时时刻刻存在于环境中(数字空间或物理空间),在不同的场景下,我们用硬件、软件、算法的方式,将其「数据化」。硬件有如传感器、摄像头等,软件如日志记录器、数据采集器等,算法如各类智能视觉算法、智能语音算法等。终有一天,我们能够将一切物理空间都数据化,将物理空间完完全全映射到数据空间。

    认知体系的作用是对数据进行归纳和总结,提炼出知识。人类理解的知识一定是要用自然语言表达,而对机器而言,用能够代表问题空间的数据集进行训练,再用训练好的「模型」来在新的数据空间中进行推理。只要是能解决特定目标任务,无论其表现形态是向量、图谱还是自然语言,其实都是知识,特征空间的表达本身就是一种知识。

    决策体系的作用是对目标任务进行规划和决策,生成对目标任务的策略。行动体系根据策略执行具体动作,和环境进行交互、对环境产生影响。动作作用于环境后形成反馈,反馈又促进感知体系感知更多的数据,进而持续获取更多的知识,对目标任务作出更好的决策,形成闭环持续迭代进化。

    从这个角度来看,机器智能的本质,实质是一种观测环境沉淀数据、归纳数据提炼知识、规划目标在线决策、作出行动影响环境的自主机器。机器智能是一种自主机器,而自主机器与过去自动化机器的最大区别在于其能否自主获取解决目标任务的知识。

    单体智能到群体智能

    今天大多数的智能系统,都是一个个孤立分布的单体智能实例,解决的相应也是一个个孤立分布的单体问题。云计算的本质是「计算在线」,大数据的本质是「数据在线」,而机器智能最终也需要实现让智能在线,让智能实例之间进行自主在线交互。

    单个智能实例都是由「感知-认知-决策-行动」的体系构成的自主系统,有着自己的世界表征形式,能自主完成自身的目标任务。在同一个动态复杂的博弈环境之中,实例与实例之间通过互联实现在线,彼此存在相互作用,可以合作、竞争,可以竞合并存,也可以既不合作也不竞争。一个实例的策略变化不光会影响自身的环境,也会影响其他实例的策略变化。

    对于合作的多个智能实例之间,可以选择共享数据、知识、策略或动作,协调协作以完成更为复杂的目标任务,共同形成更为高阶的智能实例。当单位空间内智能实例的覆盖密度足够大的时候,单体智能开始向群体智能演进。

    智能与安全的四象限

    安全是所有技术中最为特殊的一种,严格意义上甚至或许都不能称「安全」为一门技术。早在人类还未发明任何技术之前,安全就已经伴随着人类的各种活动。迄今为止,没有任何一种技术是安全领域独有或者说从安全领域长出来的,但安全从来都是与其他技术相伴相生、相辅相成。

    任何一门通用技术,与安全的结合都有如下四种方式。机器智能技术也不例外,纵向是「给智能以安全」和「给安全以智能」,横向是「攻击视角」和「防御视角」。给智能以安全,是指机器智能技术本身会带来新的安全问题,一种是机器智能自身脆弱性导致的安全问题,一种是机器智能引发周边场景衍生出的安全问题。给安全以智能,是指将机器智能应用于安全场景,攻击者利用机器智能赋能攻击,防御者利用机器智能赋能防御。

    而在这四个象限中,新技术与安全发生交集的时间和发展的成熟程度又有所不同。攻击者相比防御者而言,有更强的动机和利益,所以攻击相关的象限通常都会更容易去探索新技术去接纳新技术。防御者总是滞后,也总是容易沉迷于旧技术和人工经验营造出的安全假象中,导致第四象限总是发展最滞后最缓慢的一个象限。当然,这与防御视角自身的属性与困境也有直接关系。

    机器智能的安全之困

    围棋是简单的复杂游戏,而安全是复杂的简单游戏。1994年,认知科学家Steven Pinker在《The Language Instinct》中写道「对机器智能而言,困难的问题是易解的,简单的问题是难解的」。「简单的复杂问题」指的是问题空间是闭合的,但是问题本身却又有较高的复杂度,「复杂的简单问题」指的是问题空间是是无限开放式的,但问题本身却并没有很高的复杂度。今天机器智能技术在「简单的复杂问题」的领域,往往都比人类会更强,但对于「复杂的简单问题」,泛化界限引起的维数灾难,机器智能往往都会失效。

    安全是一个典型的「复杂的简单问题」,莫拉维克悖论在安全领域更为明显。高度不确定性是安全最大的特点,安全自身最大的困境就是如何去应对「未知的未知」。很多时候我们问题都没定义清楚问题就冲上去说要用机器智能解决问题,这是绝大多数机器智能在安全领域失效的主要原因。今天在安全领域,不太需要去突破智能技术的天花板,亟待解决的反而是「定义清楚问题」,即如何闭合掉问题空间。

    安全的问题空间通常都是无界的,同时问题空间对应的正负样本的样本空间却又严重的不对称。「未知的未知」引起的负向数据(如攻击数据、风险数据等)的严重缺乏导致特征空间的不对称,进而导致特征空间无法真正表征问题空间。「模型」是已有数据空间下关于世界的假设,并且用于在新的数据空间下进行推理。今天机器智能技术已经能很好的解决表示输入和输出之间的非线性复杂关系,但对于样本空间与问题空间存在的巨大鸿沟却依然比较乏力。

    20世纪六十年代,贝尔-拉帕杜拉安全模型(Bell-La Padula )指出「当仅当系统开始于安全的状态,且一直不会落入非安全状态,它才是安全的」。由于安全的本质是对抗,对抗的存在导致安全领域的机器智能模型多数都逃不过的「上线即衰减」的命运。在训练集上表现良好的模型,对于大规模的现实环境,从上线那一刻起就在引起对抗升级,进而不断跌入失效的状态。模型衰减和封闭系统中的熵增一样,是一个必然。

    同时,安全场景中对检测结果的准确性、结果可解释性都高度敏感。机器智能相比于传统安全中经常使用的基于规则、基于策略的检测技术,优势在于其强大的表征能力,但同时其不可解释性、模糊性导致推理结果在决策场景下无法直接使用,这也是今天很多智能安全系统大都只在做「感知」,至多也只是做辅助决策的原因。

    然而这些都还不是最大的「困」,机器智能在安全领域最大的「困」是思维模式上的困局。安全的思维模式是「守正出奇」,而机器智能的思维模式是「Model The World」。这两种思维模式之间不仅存在巨大的差异,也异常难调和。一方面极少有人能同时驾驭这两种思维方式,另一方面把两种思维的人放到一起也极难协作起来,本质原因是缺少桥梁来衔接安全问题到算法问题之间的相互转换和定义。

    问题空间之困、样本空间之困、推理结果之困、对抗衰减之困、思维模式之困,这些问题导致了今天绝大多数现实中的智能安全系统的表现都差强人意。或者也可以说得更悲观一点,今天在安全领域,迄今为止还没有真正意义的智能安全系统。

    真正的智能安全系统

    先来说说通用安全场景下的通用数据范式。柏拉图学派认为「我们感知的世界是洞穴里面墙壁上的投影」,现象世界都是理性世界的倒影,理性世界才是世界的本质或本原。「洞穴比喻」意味着存在一个外在的客观的知识体系,不依赖人类的认知而存在,人类探索知识的过程就是不断从现实世界的现象观察中,摸索、推测这个客观知识体系的过程。亚里士多德进一步奠定了本体论最初的思想,定义其为研究「存在」的科学,是形而上学的基本分支。再到17世纪,哲学家郭克兰纽 (R. Goclenius) 首次提出「Ontology」一词,再到20世纪60年代,机器智能领域开始引入Ontology的思想,之后又进一步演化出语义网、知识图谱等。

    安全中的对抗本质是知识的对抗,获取知识更多的一方就能拥有更多的不对称优势。无论是威胁分析、情报研判、攻击检测、事件溯源……本质都是在探索知识的一个过程,这就是为什么Palantir的Gotham、IBM的I2、UEBA、各种威胁情报产品等等背后都不约而同或多或少借鉴了Ontology思想的根本原因。

    而安全场景下的通用数据范式,也离不开Ontology。实体、属性、行为、事件、关系,通过这五大元数据类型,可以构建出所有安全场景中的数据架构(无论是基础安全、业务安全、数据安全、公共安全、城市安全……注:公共安全领域也单独关注「轨迹」这一类元数据类型,因「轨迹」是一种特殊的「行为」数据,故这里统一都合并成行为)。

    • 实体:实体是客观存在并可以与其他对象区分开来的对象;
    • 属性:属性即为标签,是描述实体的表述,对实体抽象方面的刻画;
    • 行为:行为是实体在特定时间、空间下发出的动作;
    • 事件:事件是一定时空或条件下所认识到的可识别的事情;
    • 关系:关系是实体与其他实体之间的关联程度与表述。

    安全领域绝大多数沉淀的源数据都是行为类数据,无论是网络流量日志、主机命令日志、业务日志、摄像头数据流、感知设备数据流……,这些都是行为数据。而实体、属性、关系、事件的产生都是从行为数据中进行萃取,通过对不同的行为数据运行不同的 Function 来产生。

    当 Function 是生成事件的时候,即为安全检测问题,包括攻击检测、威胁检测、风险检测、异常检测等等。绝大多数安全检测问题的原子范式都可以抽象为Y=F(X),其中X是实体的行为数据,Y是检测结果,F是检测模型。F可以是基于规则、基于策略、词法语义、统计检测、机器学习、深度神经网络等等,Y可以是正常、异常、攻击或者未知。

    更为复杂的检测场景也都可以通过一个个基本F与各类算子组装编排而成。每一种类型的F都有其优势和劣势,有不同的最优使用场景,并不存在一种绝对先进绝对领先的检测技术。事实上算法在安全检测中最应该关注的不是去做检测模型本身,而是能否自主化的根据各种场景生成最优的检测模型,并能自主化持续迭代检测模型。

    真正意义上的智能安全系统一定也是具备感知体系、认知体系、决策体系和行动体系,同时和环境形成反馈闭环。感知体系至少包括异常感知器、攻击感知器、漏报感知器和误报感知器。「异常感知器」的作用一方面是保持感知「未知的未知」的能力,另一方面是利用「通过定义正常来寻找异常」的思想来解「样本空间之困」的问题。「攻击感知器」的作用是在异常数据的基础上去检测攻击,为了解「推理结果之困」的同时,也大大缩减推理结果误报漏报范围。「漏报感知器」和「误报感知器」是为了去解「对抗衰减之困」。由此可以看出,整个行业内大家最常关注的「用算法做攻击检测」,其实只是做了智能系统当中感知体系里很小的一小步。

    认知体系沉淀的是跟安全相关的各种知识,至少包括正常知识、攻击知识、漏报知识、误报知识。安全知识可以是基于专家规则、向量、模型、图谱、自然语言等等,但无论是哪种形态,一定都是精细化个性化的「千人千面」的知识。即对每一个受保护对象(如用户、系统、资产、域名、数据等),沉淀形成适用于该受保护对象的一套感知异常、攻击、漏报、误报的知识。决策体系当中至少包含对目标任务的拦截策略、各类模型的上线下线等策略等,能自主决策哪些行为该拦截,哪些模型已经衰减该重训练该替换等。

    行动体系当中是各类作用于环境的动作,如放行、阻断、重训练、发布等等。一个真正的智能安全 instance 里面包了含成千上万的 agent ,每一个 agent 只作用于其对应的受保护对象。最后,「问题空间之困」的解法是将开放的问题空间收敛为一个个小的闭合的风险场景,一方面靠的是四个感知器的级连形成的纵深检测,另一方面靠的就是「千人千面」的 agent 。

    机器智能重塑新安全

    安全领域发展至今,一直处于问题消灭得少概念却造得不少的阶段,亟待利用新技术去真正解决旧问题。机器智能在各个行业的炙手可热,同样也引起了安全行业的追捧。但今天安全领域的智能能力参差不一的同时,又难以分辨其真假。以至于但凡用了一丁点算法的,都会宣称「基于人工智能的XX安全系统」。同早年的智能驾驶领域一样,今天的智能安全也亟需统一的分级标准,用以明确不同级别智能安全技术之间的差异性。「安全的本质是智能体的对抗」,故根据自主对抗的程度,我们将智能安全划分为L0~5共如下6个级别:

    • L0级别为「人工对抗」,即完全没有任何机器智能的能力,完全由防御者人工雨攻击者进行对抗,对抗操作、感知判断、任务支援全都由人工进行。
    • L1级别为「辅助对抗」,由机器完成已知攻击的攻击检测和攻击防御,其余的操作(如感知未知威胁、感知漏报、感知误报等)由人类进行。
    • L2级别为「低度自主对抗」,由机器完成已知攻击攻击检测和攻击防御,并具备能感知未知威胁或误报漏报,其余由人类操作。
    • L3级别为「中度自主对抗」,由机器完成所有的对抗操作(攻击检测、攻击防御、主动感知未知威胁、误报漏报主动感知、对抗升级自动学习),根据系统要求,人类在适当的时候进行应答(中间过程必须需要人类参与)。
    • L4级别为「高度自主对抗」,由机器完成所有的对抗操作,根据系统要求,人类不一定提供所有的应答(中间过程非必须有人类参与),但只能作用于限定的特定的安全场景(如网络域、主机域等)。
    • L5级别为「完全自主对抗」,由机器完成所有的对抗操作,根据系统要求,人类不一定提供所有的应答,不限定特定的场景,作用于全域范围。

    不同于智能驾驶技术,不同的 Level 采用的是完全不同的技术栈,智能安全中的 L0~5 是需要逐步往上构建往上发展。按照这个划分,今天行业内绝大部份的安全系统都是L1 的系统,极少一部分能达到 L2,但还没有真正意义上的L3及以上的智能安全系统。随着级别往上走,能够将防御者从低水平对抗中逐步释放出来,能更加关注高级对抗,L3是个分水岭,有望在5年内实现。「始于围棋终于安全」,机器智能在安全领域的终局是什么?网络层、主机层、应用层、业务层、数据层都分别有各自的智能实例,不同层的实例在线互联,实现真正意义的协同防御与情报共享。当智能「Intelligence」和情报「Intelligence」融合的那一天,才是真正的「Intelligence Remodels New Security」。

    目前阿里云智能安全实验室正在多个领域打造L3级别的智能安全系统,致力于智能技术在云安全中的应用,现招聘安全算法专家和安全数据专家,寻志同道合者一起探索打造「智能重塑新安全」。目前在不到一年的时间,已经取得了一定的阶段性成果:

    • LTD 攻击检测算法入选人工智能顶会 IJCAI 2019「Locate Then Detect:Web Attack Detection viaAttention-Based Deep Neural Networks」;
    • WAF AI 内核助力阿里云 WAF 入选 2019 Gartner Web 应用防火墙魔力象限,算法能力被评为强势;
    • Anti-Bot AI 内核助力阿里云爬虫风险管理入选 2018Forrester Bot Management 竞争者象限;
    • 内容安全算法助力阿里云在国家级重保活动中平稳度过,无任何风险外漏;
    • 上线[XDATA]安全数据内核、[XID]核心数据资产、[XService]智能安全服务、[弦+]安全知识引擎等一系列安全数据平台服务产品,上线百亿级节点千亿级边的复杂网络和图计算应用;上线QPS千万级的复杂流计算应用。

    简历投递:qiaomu.sqm@alibaba-inc.com

    本文作者:云安全专家

    原文链接

    本文为云栖社区原创内容,未经允许不得转载。

  • 相关阅读:
    CentOS7.6配置ip
    查看当前用户下没有主键也没有唯一性索引的表
    C++ 开机自动启动
    C++ 判断是文件还是文件夹
    Duilib热键
    c++将字符转换成字符串
    duilib中各控件响应的消息类型
    Duilib程序添加托盘图标显示
    C++打开文件夹
    C++获取驱动盘句柄
  • 原文地址:https://www.cnblogs.com/zhaowei121/p/11835864.html
Copyright © 2020-2023  润新知