笼统地说,黑客之所以能够成功地对系统实施攻击,主要是他发现并利用了系统的漏洞。而这里的系统,既可以是单纯的计算机网络系统,也可以是网络用户与计算机网络合成的系统,还可以是用户、红客和网络组成的系统等。总之,这里的系统可以是除了黑客之外的所有人、设备、环境等组成的十分广泛的系统或该系统的任何子系统。这里为什么要将黑客排除在系统之外呢?因为我们假定黑客是在系统建设完成之后才开始试图发动攻击的。当然,这只是一种严谨的理想化场景,便于后续的客观研究。毕竟在现实中,常有人同时扮演着红客、黑客和用户的多重角色。
现在的攻防场景就可以初步清理为:有一个系统和系统外的一个黑客。
在此初步场景下,按常规,黑客对系统的攻击,可以分为以下两大类。
第一类:主动攻击。此时,黑客对系统做了一些改变,包括但不限于改写或添加数据流、改变系统资源或影响系统操作,甚至改变了网络的结构等。主动攻击的常用方法有拒绝服务攻击(DoS)、分布式拒绝服务攻击(DDoS)、信息篡改、资源使用、欺骗、伪装、重放等。主动攻击的类型至少有探测型攻击、肢解型攻击、病毒型攻击、内置型攻击、欺骗型攻击、阻塞型攻击等。我们之所以罗列这么多主动攻击的内容,并不是希望读者了解它们,而是刚好相反,希望读者忘掉任何特定类型的主动攻击,因为沿着该列举的思路,将永远无休无止,这不是“安全通论”要做的事情。
第二类:被动攻击。此时,黑客只收集信息,而不对系统做任何改变,因此隐蔽性很强。比如,黑客只远程窃听、观察和分析协议数据单元,而不干扰信息资源等。被动攻击包括嗅探、信息收集等方法。此类攻击的威力其实比想象的要大得多,包括密码破译、大数据隐私分析等都属于此类攻击。
正是由于第二类(被动攻击)的存在,使得系统漏洞的客观描述几乎不可能。为此,还需要对上述已经被初步清理的攻防场景进行再清理,目的是将被动攻击也转化为主动攻击。于是,在网络空间安全中,攻防场景最终清理为:除黑客自身以外,所有其他部分(包括赛博网络和人员)组成的系统都看成是黑客的攻击目标系统。
下面对这最终攻防场景,做两点说明。
(1)此时不再有被动攻击了,因为即使是黑客窃听到某些敏感信息,如果他只是把这些信息烂在肚子里,而不采取任何行动,那么这显然相当于黑客没发动攻击;如果黑客对其收集或分析到的信息做了任何动作,哪怕是最轻微的动作(如将这些信息扩散给身边的朋友等),那么其实此时被攻击的系统就被改变了(因为这位朋友属于黑客自身之外,所以也就属于被攻击系统的一部分了),所以相应的攻击便是主动攻击了,无论这个攻击最终是否成功。
(2)为什么要将被攻击系统的内涵做如此扩展呢?如果某些读者还不适应这种扩展,那么也可以这样来看待主动攻击和被动攻击:主动攻击涉及的系统部分可称为直接攻击系统,被动攻击涉及的系统部分可称为间接攻击系统。而扩展的被攻击系统,其实就是直接攻击系统和间接攻击系统的合成。
为了明确起见,我们将上述内容归纳成以下定律。
攻防定律:黑客若要动用任何主动攻击或被动攻击方法去攻击系统A,那么一定可以对A做某种扩展,将其扩展成B,使得对A的主动攻击和被动攻击,都能够转化成仅对B的主动攻击(此时,不再有被动攻击了)。
需要指出的是,无论是系统A还是B,从功能上看,它们都可以等价为某个赛博网络(或计算机网络),因为即使涉及自然人(黑客、红客或用户),他们的任何行动也最终得通过计算机网络来落实,所以这时的人(准确地说是人的行为)也可等价为某种计算机行为,从而这些人也就被纳入了网络。特别强调一下,这并不意味着计算机可以代替人了,因为,“人能干,而计算机不能干”的行为根本就不在网络空间安全攻防的范围之内。
现在可以请出本节的关键角色了,它就是众所周知的图灵机。这里只给出它的一个最简单数学描述。
图灵机的数学定义(见参考文献[8]):设 q 1 , q 2 ,…, q m 为 m 个互异的数(也称图灵机的 m 个状态),称映射 M ,有
为一台 m 态的四重组单带图灵机,简称图灵机。更详细地说,一台图灵机是一个定义域和值域都是有限集的映射,因此,它又可以用以下2 m 个4元数列串来唯一确定:
其中, v 1 , v 2 ,…, v 2m ∈{0,1,L,R,↓}, d 1 , d 2 ,…, d 2m ∈{ q 1 , q 2 ,…, q m },称 q 1 , q 2 ,…, q m 为状态符号, q 1 为初始状态;称0与1为磁带符号;称L为左移符号,R为右移符号;↓为停机符号。称上述2 m 个4元数列串所形成的表格为图灵机指令表,并说该图灵机被该指令表唯一确定,把该指令表中的每一行{ q i , ε , v j , d j }(其中 ε ∈{0,1})称为该图灵机的一条指令。它的直观意义是:若图灵机当前处于内部状态 q i ,读/写磁头的方格内有符号 ε 时,机器进行由 v j 决定的工作,然后转到新状态 d j 。其中,当 v j =0时,读/写磁头在所扫描的方格内,写上符号0;当 v j =1时,读/写磁头在所扫描的方格内,写上符号1;当 v j =L时,磁带向左移动一格;当 v j =R时,磁带向右移动一格;当 v j =↓时,机器停机。
引理4.1:两个图灵机 M 和 N 是相同的,当且仅当它们对应的指令表在数学上是等价的,即能够找到某个一对一的可逆映射,使其能将图灵机 M 的指令表变换成图灵机 N 的指令表。显然,状态个数不相等的图灵机肯定是不相同的。
下面回到本节的主题。
任何一个赛博网(注意:人的行为已经被转化为网络行为了),整体上都可以看成一台计算机;而每台计算机都可以看成一种图灵机,而且还是比较简单的图灵机,即满足邱奇-图灵论题的图灵机。或者说,此时没有所谓的停机问题,因为赛博网上可计算的函数,都可用该图灵机计算(提示:网上的所有行为,包括黑客行为,其实都是一种计算行为)。所以,黑客攻击网络的行为便可以描述为以下模型。
网络攻击的黑客行为图灵机模型:某用户有一个图灵机 M ,某黑客欲对该图灵机进行主动攻击(注意:被动攻击已被化解为更大系统的主动攻击了,不妨设该系统就是这个 M )。换句话说,黑客将图灵机 M 变成了图灵机 N 。于是,便有以下几种可能的情况。
情况1:图灵机 M 与 N 相同,那么黑客的攻击显然就失败了,因为等价地说,他什么也没干。
情况2:图灵机 N 与 M 不再相同了,那么严格且客观地说,黑客就发现并成功利用了某个漏洞。这便是漏洞的客观描述,但是,由于安全是主观的,所以情况2又可以再细化。
情况2.1:黑客图灵机 N 是有限图灵机,它的计算结果(即停机状态,也即攻击结果)也当然是有限的(因为其指令表是有限的),如果所有这些计算结果对合法用户(即图灵机 M 的主人)来说,都没有造成不安全事件(注意:是否不安全,应该完全是该用户的主观意见,别人无权评判),那么这其实就是黑客虽然发现并利用了某个客观漏洞,但是并不能给用户造成损害,相当于用户未受到攻击(现实例子便是,如果黑客发现了某乞丐的隐私照片,显然不太可能给他造成严重损害。但是,如果这些隐私照片的主人正在竞选总统,那么情况就完全相反了)。
情况2.2:黑客图灵机 N 的至少某个计算结果对该用户造成了伤害,那么黑客的攻击就成功了。或者说,黑客发现并利用的这个漏洞,就成了图灵机 M 的一个不安全因素;又或者说,这个漏洞是有害漏洞(当然是针对该用户,也许对其他用户来说是无害的)。
综上可知,如果针对某个黑客,用户图灵机 M 的有害漏洞很少且很难发现和利用,那么原因可能是该黑客太笨;但是,如果针对绝大部分黑客, M 都很难找到有害漏洞的话,那么 M 就很可能是安全度很高的图灵机了。
同一个现实网络中有许多合法用户。从每个合法用户的角度去看该网络时,都可以等价出一个图灵机(安全度可能不相同),而且这些众多的图灵机还是彼此不同的(虽然大同小异);如果合法用户的所有这些图灵机的安全度都很高,那么该现实网络的安全度就很高。
在维护网络空间安全方面,合法用户当然有义务担负相应的责任(如严格按规范操作等),但是主要的安全保障任务应该属于红客。那么,红客到底应该怎么办呢?
为了更加形象地描述,从第2节开始,我们又回归到普通的网络空间,即不再用图灵机模型了,同时,相应的攻击也包括所有主动攻击和被动攻击了。