网络安全三十六计:人人该懂的防黑客技巧
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第2计 围魏救赵

共敌不如分敌,敌阳不如敌阴。

战国时期,卫国本来是魏国的小兄弟。公元前354年,赵国进攻卫国,迫使卫国屈服于己,于是卫国就被迫变成了赵国的小兄弟。失去小兄弟卫国后,魏国十分恼火,魏惠王便命庞涓讨伐赵国。不到一年,庞涓便攻到了赵国首都邯郸。危在旦夕的赵国国君一面竭力固守,一面派人火速奔往自己的盟国齐国求救。齐威王任命田忌为主将,以孙膑为军师,率军救赵。这时,孙膑献计,让军中最不会打仗的齐城和高唐佯攻魏国的军事要地襄陵,以麻痹魏军,而齐国大军却绕道直插大梁,在那里以逸待劳等待即将中计并途经此地的魏军主力。果然,魏惠王见本土受袭,赶紧命前线的庞涓停止攻赵,火速返回赵国救援。于是,已被匆忙回援折腾得疲惫之极的魏军主力,在孙膑提前部署的包围圈中被打败,赵国之危也就得以轻松化解。

此计的原文为“共敌不如分敌,敌阳不如敌阴”,其大意是说:面对强大而集中的敌人时,最好先想办法将其兵力分散成多个弱小部分,然后予以痛击。或者说,要集中力量攻打敌方的薄弱部分,要尽量避开敌方的坚固部分。其实,围魏救赵之计在网络安全中早已被攻防双方有意或无意地频繁使用了,甚至此计中的每个要点都已被若干网络安全技术采纳。比如,在网络安全中有一个著名的“木桶原则”,其意指任何信息系统的安全性取决于“木桶中最短的那根木板”。所以,从守方角度来看,信息系统各部分的安全程度最好都大致相当,否则,过度坚固的部分将白白耗费不必要的资源,过度薄弱的部分又将全面拉低系统的整体安全水平。比如,在设计一个安全机房时,若只将防盗门做得异常结实,却安装了一扇易碎的玻璃窗,该机房的安全性肯定不及格,防盗门的投资也失去了意义。从攻方的角度来看,聪明的黑客都会重点攻击系统的漏洞或薄弱处。比如,当用户使用了诸如“12345”这样的弱口令时,黑客便只需猜出口令,然后便可大摇大摆地盗取用户的任何信息;当用户存在人性弱点时,黑客便可投其所好,套取相关信息;当网络的电力系统不稳定或没有备份电源时,黑客便可重点攻击电网,以断电的方式让系统瘫痪等。

如何发现并处理系统的薄弱环节呢?这可是一个大问题,甚至是整个网络安全的核心问题,当然也不是三言两语就能说得清楚的问题。但是,对黑客来说,他至少可以利用全球已知的软件漏洞对目标系统进行攻击性测试,假如对方没能及时打补丁,黑客便有可乘之机。黑客也可借用所有已知的扫描手段或攻击手段对目标系统实行地毯式检测,随时发现可能出现的哪怕是细微的漏洞并及时加以利用,只要黑客的隐迹工作做得足够好,他就可以随时为今后的“围魏”寻找理想目标。对守方来说,他也必须随时做好全面的安全检查和评估工作,从技术、管理、人员、环境和法律等各方面着手,一旦发现问题就马上加以改进。

在围魏救赵之计中,“围魏”是手段,“救赵”才是目的。至于“救赵”的目的能否达到,则主要取决于“围魏”对象的选取是否得当,是否“围住了”对方的必救之处。那么网络系统的必救之处到底在哪里呢?从物理结构上看,任何信息系统的必救之处至少包括输入系统、处理系统、存储系统、传输系统和输出系统等。更形象地说,任何信息系统的必救之处都主要位于系统中各子系统的接口和边界处,它们便是攻守双方争夺的焦点和主战场。从逻辑结构上看,拙作《安全通论——刷新网络空间安全观》(简称《安全通论》)已严格证明了这样的结论:任何信息系统的安全逻辑结构都能分解成一种倒立树,该树中的节点可以分为自愈型和非自愈型两类。当自愈型节点受到攻击时,系统的整体安全性几乎不受影响,而且被攻击的部分甚至可以自动恢复。因此,当你想“围魏”时,绝不该选择自愈型节点作为目标,否则对方便可以完全忽略你的“围魏”之举,你也不能达到“救赵”之目的。换句话说,非自愈型节点才是“围魏”的重点,才是对方的必救之处。当然,并不是每个非自愈型节点都能产生“围魏救赵”效果,这取决于攻方到底擅长攻击哪个节点,毕竟只有当“围魏”的力度达到一定水平时,被围方才会产生危机感;也取决于守方在哪个节点处最薄弱,毕竟薄弱处本来就容易招来攻击;还取决于守方最在意哪个节点的安全性,毕竟安全只是相对的,守方肯定会随时权衡各种利弊。总之,若想成功围魏救赵,首先就得正确地“围魏”。

围魏救赵之计的另一要点是分散敌人兵力。当敌人势头强大时,就要及时回避,像治理洪水那样加以疏导。当敌人弱小时,就要抓住时机迅速消灭之,就像筑堤围堰那样不让细水流走。此要点也是网络安全的一招必杀计,只是不能生搬硬套传统兵法而已,毕竟网络对抗不靠人海战术,黑客攻击贵精不贵多,贵快不贵猛,贵准不贵滥,所以必须对所谓的“兵力”有正确认识,而不是机械地计算带宽、算力或存储容量等。比如,在密钥管理中就有一种著名的分散策略,其将密钥从逻辑上切割成N部分并由不同的人员分散保管,使得只有当其中的KKN)或更多的部分被黑客截获后,黑客才能凭此将密钥恢复出来,从而达到分散黑客“兵力”的效果。其实,金库钥匙也经常采用这种思路来保管,只不过此时对钥匙的分割是物理的,即只有当钥匙管理员到齐后才能打开金库。就算盗贼能搞定金库钥匙的某个或某些管理员,他也很难搞定所有的管理员。

在网络世界,区块链可算是最典型的一种“分兵”系统。比如,以基于区块链的分布式记账为例,即使黑客通过某种手段成功修改了张三账户的金额,或张三主动配合黑客增加了自己账户的余额,那么这些修改也都完全无效,系统都能将张三的金额自动恢复为修改前的数据。就算这位黑客很厉害,已成功修改了K位用户的账本,让这些账本都显示为修改后张三的余额,那么,只要这个K不超过用户数目的一半,系统也仍能自动恢复修改前的数据。实际上,区块链的分布式记账特性就确保了任何少数个人,哪怕他们是合法用户,哪怕他们行动一致,只要他们不能代表大多数用户,他们就不能随意修改。同样,互联网本身自问世之日起就具有天生的“分兵”优势,它的最初设计理念就是能抵抗敌方的“局部摧毁”,或者说,只要对手不肯“分兵”互联网就不会彻底瘫痪。

在阅读围魏救赵故事时,细心的读者也许已经注意到了这样的事实:在围魏救赵之计中,除直接对抗的“魏”和“赵”外,其实还有另一个隐形的第三方“齐”,准确来说,齐国围困魏国而救赵国。同样,在网络安全中也经常会涉及三方:用户(相当于“赵”)、黑客(相当于“魏”)和守方(相当于“齐”)。准确来说,守方为了保护用户的信息系统而与黑客展开攻防对抗,而用户则向守方支付必要的安全服务费。目前,这种购买第三方安全服务的做法正在成为全球信息界的主流,毕竟,随着黑客水平的不断提高和攻击活动的日益猖獗,普通用户已无力单独抵抗黑客攻击,只能聘请专业机构来为自己保驾护航。另外,若想构建和维护网络安全体系,就必须花费大量的设备和资金,任何单一用户都很难承受如此巨大的经济压力,只能由专业安全机构来统一构建先进的保障体系,并以此向众多用户提供性价比更高的安全服务。至于用户与守方之间的权益平衡问题,那么将用相关的法律和技术手段来解决。相信在不远的将来,各种级别的网络安全服务商将陆续诞生,那时普通的个人或企业只需支付很少的费用,甚至都无须像现在这样购买众多设备,便能享受满意的安全服务。

在网络安全领域,最典型的不怕围魏救赵之计的东西,当数耳熟能详的比特币。这是因为,一方面比特币是去中心化的,另一方面它还是匿名的。

先看比特币的去中心化。直观来说,在比特币系统中,根本没有中心节点,每个节点的地位都完全相同,甚至都不怕“死”。因此就算你“围住了”比特币系统中的任何一个节点,它都不可能是魏惠王必须救的那个“魏”,甚至魏惠王都可以完全忽略你的举动,当然你也就达不到救赵之目的。当然,若你能“围住”一半以上的节点,那你就能控制比特币系统,而这几乎又是不可能的事情,毕竟比特币的节点太多太分散,从理论上看,任何组织或国家都不能控制它。

什么是去中心化呢?为了回答这个问题,先来看什么是中心化。实际上,如今每个国家的钞票系统就是典型的中心化系统,那个发钞银行就是该系统的中心,它相当于围魏救赵中的那个“魏”,当该中心被“围住”后,魏惠王就必须舍命相救,否则整个钞票系统都会崩溃。普通的钞票使用者当然不会是那个“魏”,哪怕你拥有再多的钞票,哪怕你被“围”得很惨,魏惠王也可以完全忽略你的生死,因为整个钞票系统不会因此而受到实质性影响。说清楚了中心化,也就等于说清楚了去中心化,因为后者只是前者的反面而已。因此,在去中心化系统中根本就不存在任何中心,自然也不怕任何人来围魏救赵。

为什么需要去中心化系统呢?仍然先看中心化。中心化确实有许多好处,比如,它有一个明确统一的认证和管理机构,只要这个机构安然无恙,整个系统就能正常运行。因此,中心化系统可以集中力量办大事,可以保持很高的运行效率。但中心化系统也有其弊端,它的管理和仲裁工作非常庞杂,机制上的任何缺陷都会引发全局性问题,同时又缺少对中心权力的制约,甚至可能出现权力失控或集中力量办坏事的情况。去中心化的优缺点刚好与中心化相反,它们可以优势互补。比如,传统银行的分类记账就是中心化的,交易也是非公开的。银行掌握所有用户的账目信息和交易记录,而每个用户则只掌握自己的信息,无法知晓其他用户的情况,因此银行与用户的地位显然不同,更谈不上公平。在比特币这样的去中心化系统中,每个用户(比特币的持有者)的地位都是完全相同的,所有交易都是公开的,任何人都无权发行钞票或擅自篡改账目等。

再来看比特币的匿名性。为了说清楚比特币的匿名性,先来看普通钞票的非匿名性。谁都知道,由于你在银行的账户是实名注册的,所以当你刷卡消费或用汇票支付时,银行便能很快知悉你的交易细节,包括你是谁,你买了什么,你支出了多少,你是在哪里完成交易的,等等。即使你采用现金支付,只要银行愿意花费更多精力,它照样能摸清每张钞票的流通路径,毕竟每张钞票上都有一个唯一的编号,都可以被溯源跟踪。但用比特币交易时,情况就完全不同了。首先,比特币系统不需要进行实名登记注册,系统只认钱,不认人,谁也不知你到底是谁,甚至不知道持币者到底是什么。其次,比特币系统中的交易都是持币者之间的直接交易,并没有银行之类的第三方参与,虽然所有的交易金额等次要信息是公开透明的,但交易者的身份始终是保密的。也就是说,比特币系统具有良好的匿名性,这也是比特币经常被用于黑市交易的原因。

匿名性为什么能对付围魏救赵之计呢?想想看,如果面对一堆完全匿名的用户,面对一串完全不知其主的流动资金,就算你千方百计“围住了”某些东西,请问你怎么知道自己到底是不是围住了“魏”呢?你怎能断定那个魏惠王就一定会去救你围住的东西呢?如果他不理你,你的分兵之计还能实现吗?

当然,无论去中心化还是匿名性,比特币的这些特性都只是相对的,而非绝对的。但至少可以说,它的去中心化程度和匿名性远远好于所有的银行系统。