安全对人工智能的需求——从机器学习到机器创造
安全人员需要担心被人工智能取代工作吗?
安全人员需要担心被人工智能取代工作吗? 今天又被问到了这个问题。望着学生焦急期待的眼神,作为在安全圈工作二十多年的老司机,我觉得颇有感触,并且有话要说。
1. 二十几年前入学时被分在人工智能班,到毕业正赶上一波人工智能的谷底。
当年想必同班同学们都恨不得把“人工智能”几个字从毕业证里抠下去 … 做语音识别,自然语言理解,图像识别的同学们绝口不提人工智能。我也在大四做了逃兵,早早跳槽去了网络系统组,懵懂而幸运地去做了网络安全。
今非昔比,人工智能的新一轮浪潮来了。 这次带头的是深度学习技术。 当下深度学习技术在视觉,语音中的广泛应用,对自动驾驶的促进,AlphaGo 对人类棋手的碾压以及其不断的进化,深度学习技术大有一统天下的味道。 在我们安全行业,这种情景也不例外。 我认识的好多安全研究的新老朋友,听说都在用深度学习这把刀子,在各种安全问题上乱捅。
人工智能的其它分枝,尤其是传统机器学习和遗传算法,其实在安全的一些子领域里早就大有所为。特别是在异常行为检测,信息分类等场景中。 最近很多老朋友也都翻出家底儿,展示自己在安全领域中应用人工智能的悠久历史。
与此同时,机器自动攻防,自动漏洞挖掘与利用也变成了行业关注的方向。 美国DARPA举办了CGC全自动攻防挑战赛,国内奇虎360与永信至诚也办了RHG机器自动攻防比赛,赛宁XCTF也在全球率先创办的人机协同CTF比赛。 在当下这个时间段上,年轻的安全人员担忧未来行业前景,担心安全人员的饭碗不保,应该可以理解。
2. 在说说我的观点前,先扔下两个事实。
一个是去年CGC决赛后的人机安全对抗结果。 2016 DEFCON CTF 决赛总共15只战队,CGC冠军 Mayhem 系统最后垫底,输给了14个人类战队。
当然这只是场比赛,比赛第一天Mayhem接口还有问题。但是不要忘记比赛内容是为机器专门设计的,比赛运行在与现实任务有相当差别的简化环境。当然其它战队也有自动系统,对机器在安全对抗的角色我会后续讨论。 不管怎样,这个结果至少说明机器离人类安全战队还有段距离。
另一个事实是顶尖安全人员的身价最近还在持续飙升。我怎么知道的?如果你是业内非技术人员,你可以向你们的HR求证。 安全技术人员的话,自己水平不错的可以直接数数自己手里的offer,猎头公司没找你估计是你没更新领英页面。
3. 回到开篇的问题,我先稍稍做个改动 — 哪些安全问题,深度学习还没搞定?
直接的答案是 — 大部分安全问题都没被深度学习搞定。 安全是一个很广的领域,这里集中说说在安全领域里 深度学习目前最不擅长的。
我个人认为深度学习目前最不擅长的是安全行业中的一个最核心的技术 — 也就是黑客中的“黑”这个动作。
黑客中的这个“黑”字。 大众很容易把“黑”想成黑产的黑,或者黑暗的黑。 黑客的黑其实是动词,来自hacking这个动作。 什么是hacking? 我的定义是用非常规方法解决问题的动作。
具体到安全问题,安全中的hacking动作是通过发现程序的非设计功能,通过组合这些功能,重写并形成新的程序,实现原来程序或系统不具有的功能。 举个例子,对于普通用户来讲,微软的公式编辑器是一个用来在Word文档或PPT里插入公式的一个程序。 但我告诉你,我给你一个公式可以让你的Word程序瞬间变成一个Spy 程序,打开你的麦克风,并将录下来的声音上传到网上,你相信吗?
安全人员可以做到。 这个例子不是我编造的,这只是17年爆出的众多漏洞之一。
包括微软的公式编辑器,大多程序在完成“本职工作”之外,都有各种各样的“特异功能”。 这些特异功能有的是程序员的错误,但更多是程序本身以及计算机系统实现的各种因素造成的。 用现实生活中的例子,如果把送餐小哥想象成一个程序的话,用户这边只看到订餐和餐送到的情况。 但是要实现这个功能,送餐小哥一定要从把食品送过来。送餐小哥走了哪条线路,路上是否闯红灯,用户都看不到(可能也不关心)。 安全人员可以通过发现程序的非设计功能,并对这些功能进行组合,从而实现一些目标程序不相关的功能。例如,如果某个送餐小哥(程序)在某个特定地点一定会闯红灯的话,就可能被攻击者利用,通过特定的订餐行为引导送餐小哥在特定时间特定地点造成交通问题。 程序化地利用目标程序的非设计功能,这个过程就叫做黑(hacking)。
从技术的角度讲,hacking这个动作具有以下几个难度。第一是寻找程序和系统的各种非设计功能。 第二个是如何把非设计功能变成组件,并有机地把它们组合起来。 也就是用这些非设计功能来写程序。 这些程序不容易写,因为组件都不是专门设计好的。 如果正常写程序可以看成小朋友用乐高(Lego)来搭积木的话,hacking是调皮的孩子用积木废料来做小提琴。而且还是背着大人偷着干的。 这是因为安全研究工作中,攻击方不仅仅要考虑如何用这些非设计功能进行组合,同时还要对抗或绕过防护方的各种防御手段。
搞安全研究的大都熟悉 ROP,JOP,DOP等攻击手段,他们的核心就是要把各种程序片段或者对数据的影响按照逻辑串在一起。不仅是要有办法把这些非设计功能片段连起来,为了能做到更全面的攻击功能,安全研究者们会研究如何用这些组件实现图灵机。 一旦证明这些非设计组件可以形成一个完整的图灵机(turing complete)的时候,安全研究人员也就证明了他们可以在上面写任意程序。 研究攻击和漏洞利用的过程也就是一个发现组件,并用它们搭建图灵机的过程。
归根结底,安全中的“黑”(hacking)需要的是一个创造机器并在上面编程的技术。所以,安全的核心需要的不仅仅是做机器学习(machine learning) 的人工智能,还需要能够做机器创造 (machine creation) 的人工智能。
目前这种机器创造的手段是通过安全人员基于严密的逻辑进行搭建。 这个过程需要设计者充分了解系统里可能存在的组件,并对组合的方法以及防御引入的障碍了如指掌。 解决问题的时候最需要的是精准的逻辑控制,例如如何将一个指定指令的寄存器值改成一个特定的值。 这就是为什么像 Lokihardt 这样的顶尖黑客可以一骑绝尘。因为他们比微软的工程师更懂windows内核,比苹果程序员更懂safari浏览器。
我们目前还不知道如何用统计的方法来搭建复杂的逻辑系统。 当下流行的深度学习是一种统计算法。 深度学习可以帮助很多解决基于统计的工作。 例如对于树木样子的描述。 什么是一棵树?人的判断是通过经验而不是详细逻辑定义的。 深度学习善于帮助人处理没有准确逻辑描述的事情,但目前深度学习的逻辑归纳和判断能力还很弱。 带有推理和强逻辑关系的深度学习也是目前重要的研究方向。
所以我断言,安全的一个核心是机器创造问题,目前还没法用深度学习来解决。
当然在这个机器构造过程中,是不是有些部分问题可以用深度学习来协助。答案当然是肯定的。 但是深度学习对安全的核心还没有什么革命性的推动,对顶尖安全人员的需求目前只会有增无减。 以上是我的个人观点,欢迎拍砖。 也欢迎研究人员用实践挑战我的说法。
另外人工智能技术有很多技术分枝,包括符号逻辑推导,遗传算法,机器学习,神经元网络。 上面集中说深度学习,但是其它人工智能方法在安全中的应用也很广并有效。年轻热关注人工智能在安全中的应用,不要认为人工智能只是深度学习。
4. 第二个问题来了 — 如果人工智能以后真的进化到自动机器构造,是不是安全研究人员就失业了?