【信息安全】安全通论(1)——经络篇
杨义先,钮心忻
(北京邮电大学 信息安全中心, 北京 100876)
0引言
“安全”与“信息”都是至今还没有严格定义的概念。早在60年前,仙农创立了“信息论”,从而为现代通信的飞速发展奠定了坚实的基础。但是,至今人们对“安全”的研究,特别是网络空间安全的研究,还仅仅停留在“兵来将挡,水来土淹”的工程层次或技术层次,既缺乏全面系统的理论指导,又遗留了许多明显的漏洞,比如,虽然大家都承认网络空间安全是“三分技术,七分管理”,但是,全世界都将几乎90%的精力聚焦于“三分技术”;而“七分管理”竟然无人问津,或者说只是片面地将“管理”理解为“颁布几份规章制度”而已。
我们梦想建立一套基础的通用安全理论,并以此来指导包括网络空间安全在内的所有安全保障工作。本文是努力实现该梦想的第一步。
希望本文能够激发国内外学者更多的后续研究。
1不安全事件的素分解
“安全”是一个很主观的概念,与“角度”密切相关。同一个事件,对不同的人,从不同的角度来说可能会得出完全相反的“安全结论”,比如,“政府监听公民通信”这件事,从政府角度来看,“能监听”就是“安全”;而对公民来说,“能监听”就是“不安全”。所以,下面研究“安全”,只锁定一个角度,比如,“我”的角度。
“安全”是一个与时间密切相关的概念。同一个系统,在昨天安全,绝不等于今天也安全(比如,若用现代计算机去破译古代密码,简直是易如反掌);同样,在今天安全,也绝不等于明天就安全。当然,一个“在昨天不安全”的系统,今天也不会自动变为安全。因此,下面研究“安全”,只考虑时间正序流动的情况,即,立足当前,展望未来(为突出重点,本文只考虑当前时刻的情况,带时间的安全通论,将在后续论文中涉及)。
“安全”是一个与对象密切相关的概念。若A和B是两个相互独立的系统,若只考虑A系统的安全,那么,B系统是否安全就应该完全忽略。比如,若只考虑“我的手机是否安全”,那么,“白宫的电脑是否中毒”就可以完全忽略。因此,下面研究“安全”时,只锁定一个有限系统,即该系统由有限个“元件”组成。
设A是一个封闭的独立系统,如果直接研究其“安全”,根本无处下手!不过,幸好有“安全”=不“不安全”,所以,若能够把“不安全”研究清楚了,那么“安全”也就明白了。
下面就以概率论为工具,从“我”的角度,沿着时间的正序方向(但只考虑当前状态)来研究系统A的“不安全”。
假定A系统中发生了某个事件,如果它是一个对“我”来说的“不安全”事件,那么,“我”就能够精确且权威地判断这是一个“不安全的事件”(注意:除“我”之外,“别人”的判断是没有参考价值的,因为,本文只从一个角度来研究“安全”)。如果将该“不安全事件”记为D,那么,该事件导致系统A“不安全”的概率就记为P(D)。为了简化计,此处只考虑0<P(D)<1的情况,因为,如果P(D)=0,那么这个“不安全事件”D就几乎不会发生,故可以忽略,因为无论是否对造成事件D的环境进行改进,都不影响系统A的安全性;如果P(D)=1,那么,D就是“不安全”的确定原因(没有随机性),这时只需要针对事件D单独进行加固(比如,采用现在所有可能的已知安全技术手段。实际上,当前全球安全界都已经擅长于这种“头痛医头,足痛医足”的方法),就可以提升系统A的安全性了。
从理论上看,给定系统A之后,如果A是有限系统,那么,总可以通过各种手段,发现或测试出当前的全部有限个“不安全事件”,比如,D1、D2、…、Dn。下面,在不引起混淆的情况下,用Di同时表示“不安全事件”和造成该事件Di的原因。于是,系统A的“不安全”概率就等于P(D1∪D2∪…∪Dn),或者说,系统A的“安全”概率等于1-P(D1∪D2∪…∪Dn)。
换句话说,本来无处下手的“安全”研究,就转化为了下面的数学问题:
“安全”数学问题:在概率0<P(D1∪D2∪…∪Dn)<1的情况下,使该概率P(D1∪D2∪…∪Dn)最小化的问题,或者使1-P(D1∪D2∪…∪Dn)最大化的问题。
设D和B是系统A的两个“不安全事件”,那么,(D∪B)也是一个“不安全事件”,但是,(D∩B)或者(D\\B)等就不一定再是“不安全事件”了。若事件D是B的真子集,并且D的发生会促使B也发生(即,条件概率P(B|D)>P(B)),则称事件D是事件B的“子事件”。
在时间正序流动的条件下,设系统A的过去全部“不安全事件”集合为D,若当前又发现一个新的“不安全事件”B,那么,系统A的当前“不安全”概率=P(D∪B)≥P(D)=系统A的过去“不安全”概率。于是:
“不安全性”遵从热力学第二定律:系统A的“不安全”概率将越来越大,而不会越来越小(除非有外力,比如采取了相应的安全加固措施等);或者说“安全”与“信息”一样都是负熵。
由热力学第二定律可知,热量可以自发地从高温物体传递到低温物体,但不可能自发地从低温物体传递到高温物体;热量将最终稳定在温度一致的状态。那么,有限系统A的“不安全”状态将最终稳定在什么地方呢?
下面就来回答这个问题。
设Z是一个“不安全事件”,如果存在另外两个“不安全事件”X和Y(它们都是Z的真子集),同时满足如下两个条件:(1)X∩Y=;(2)Z=X∪Y。那么,就说“不安全事件”Z是可分解的。此时X和Y都是Z的子事件。如果某个“不安全事件”是不可分解的(即它的所有真子集都不再是“不安全事件”了),那么,就称该事件为“不安全的素事件”。
定理1(“不安全事件”分解定理):对任意给定的“不安全事件”D,都可以判断出D是否是可分解的,并且,如果D是可分解的,那么,也可以找到它的某种分解。
证明:由于有限系统A的全部“不安全事件”只有有限个D1、D2、…、Dn,所以,至少可以通过穷举法,对每个Di(i=1,2,…,n)测试D\\Di,判断其是否也是“不安全事件”。如果至少能够找到某个这样的i,则D就是可分解的,而且,Di与(D\\Di)就是它的一个分解;否则,D就是不可分解的“不安全素事件”,这是因为“D1、D2、…、Dn”是全部“不安全事件”。证毕。
定理2(“不安全事件”素分解定理):若反复使用上述的“不安全事件”分解定理来处理“不安全事件”(D1∪D2∪…∪Dn)及其被分解后的“不安全子事件”,那么,就可以最终得到分解:D1∪D2∪…∪Dn=B1∪B2∪…∪Bm,这里对任意的i和j(i,j=1,2,…,m)都有Bi是“不安全素事件”,并且Bi∩Bj=。
证明:若D=D1∪D2∪…∪Dn,已经是不可分解的了,那么,m=1,并且D1∪D2∪…∪Dn=B1;若D是可以分解的,并且X是D分解后的一个“不安全子事件”。如果X已经不可分解了,那么,可以取B1=X;如果X还可以再分解,那么,再对X的某个“不安全子事件”进行分解。如此反复,直到最终找到一个不能再被分解的“不安全子事件”,将该事件记为B1。
仿照上面分解D的过程来分解D\\B1,便可以找出不能再被分解的“不安全子事件”B2。
再根据D\(B1∪B2)的分解,便可得到B3。
最终,当这个分解过程结束后,全部的Bi就已经构造出来了。证毕。
于是,根据“不安全事件”素分解定理,便有Bi∩Bj=,并且:
P(D1∪D2∪…∪Dn)=P(B1∪B2∪…∪Bm)=P(B1)+P(B2)+…+P(Bm)
换句话说,可以将引发有限系统A的“不安全事件”D1、D2、…、Dn分解为另一批彼此互不相容的“不安全素事件”B1、B2、…、Bm,并且,还将有限系统A的不安全概率转化为P(B1)+P(B2)+…+P(Bm)。所以,有限系统A的“不安全”概率P(D1∪D2∪…∪Dn)的最小化问题也就转化成了每个彼此互不相容的“不安全素事件”的概率P(Bi)(i=1,2,…,m)的最小化问题。进而得到如下结论:
定理3(分而治之定理):任何有限系统A的“不安全事件”集合,都可以分解成若干个彼此互不相容的“不安全素事件”:B1、B2、…、Bm,使得只需要对每个Bi(i=1,2,…,m)进行独立加固,即减小事件Bi发生的概率P(Bi),即可以整体上提高系统A的安全强度,或者说整体上减少系统A的“不安全”概率。
该分而治之定理回答了前面的“热平衡”问题,即:有限系统A的“不安全”状态,将最终稳定成一些彼此互不相容的“不安全素事件”之并。该定理对全球网络空间安全界的启发意义在于:过去那种“头痛医头,足痛医足”的做法虽然值得改进,但也不能盲目地“头痛医足”或“足痛医头”,而是应该科学地将所有安全威胁因素,分解成互不相容的一些“专科”(B1、B2、…、Bm),然后,再开设若干“专科医院”来集中精力“医治”相应的病症(即,减小P(Bi))。
专科医院也是分门诊部的,同样,针对上述的每个“不安全素事件”Bi也可以再进一步地进行分解,并最终得到系统A的完整“经络图”,于是,便找到了某些“头痛医足”的依据,甚至给出“头痛医足”的办法。
2系统“经络图”的逻辑分解
设X是B的一个真子集,并且,若事件X发生,就会促使B也发生(即,P(B|X)-P(B)>0),那么,就称X为B的一个诱因。
针对任何具体给定的有限系统A,因为B是有限集,所以,从理论上看,总可以通过各种手段发现或测试出当前B的全部有限个诱因,比如,X1、X2、…、Xn,即,B=X1∪X2∪…∪Xn。
设X和Y是B的两个诱因,而且还同时满足:(1)X∩Y=;(2)B=X∪Y。那么,即认为B是可分解的,并且X∪Y就是它的一种分解。如果某个B是不可分解的(即它的所有真子集都不再是其诱因了,或者说对B的所有真子集Z,都有条件概率P(B|Z)=P(B)),那么,就称该事件为“素事件”。
若Y、Y1、Y2都是B的诱因有:并且有:(1)Y1∩Y2=;(2)Y=Y1∪Y2。那么,即认为B的诱因Y是可分解的,并且Y1∪Y2就是它的一种分解。如果诱因Y是不可分解的(即,它的所有真子集都不再是B的诱因了),那么,就称该诱因Y为“B的素诱因”。如果诱因Y的所有子集Z,都不再是Y自己的诱因了,那么,就称Y为“元诱因”,或形象地称为“穴位”。
定理4(事件分解定理):对任意给定的事件B,都可以判断出B是否可分解,并且,如果B是可分解的,那么,也可以找到它的某种分解。
证明:由于系统B的全部诱因只有有限个X1、X2、…、Xn,所以,至少可以通过穷举法,对每个Xi(i=1,2,…,n)测试B\\Xi,判断其是否也是B的一个诱因。如果至少能够找到某个这样的i,那么,B就是可分解的,而且,Xi与(B\\Xi)就是它的一个分解;如果这样的i不存在,那么,B就是不可分解的,这是因为“X1、X2、…、Xn”是B的全部诱因。证毕。
定理5(事件素分解定理):若反复使用上述的“事件分解定理”来处理事件B,那么,就可以最终得到分解:B=Y1∪Y2∪…∪Ym,这里对任意的i和j(i,j=1,2,…,m)都有Yi∩Yj=,并且每个Yi都是B的素诱因。
证明:若B已经是不可分解的了,那么,m=1,并且,B=Y1。
若B是可以分解的,并且Y是B分解后的一个诱因。如果Y已经是B的素诱因了,那么,可以取Y1=Y;如果Y还可以再分解,那么,再对Y的某个诱因进行分解。如此反复,直到最终找到一个不能再被分解的素诱因,将它记为Y1。
仿照上面分解B的过程来分解B\\Y1,便可以找出B的不能再被分解的素诱因Y2。
再根据B\(Y1∪Y2)的分解,便可得到Y3。
最终,当这个分解过程结束后,全部的Yi就已经构造出来了。证毕。
有了上面各定理的准备后,现在就可以给出如下有限系统A的经络图算法步骤:
第0步:针对系统A的“不安全事件”D。
第1步:利用定理2,将D分解成一些互不相容的“不安全素事件”B1∪B2∪…∪Bm,这里对任意的i和j(i,j=1,2,…,m)都有Bi是“不安全素事件”并且Bi∩Bj=(为清晰计,在绘制经络图时,可以从左至右,按照P(Bi)的递减顺序排列)。
第2.i步(i=1,2,…,m):利用定理5,把第1步中所得到的Bi分解成若干“Bi的素诱因”(为清晰计,在绘制经络图时,可以从左至右,对Bi的素诱因,按照其发生概率大小值的递减顺序排列),为避免混淆,将所有第2步获得的素诱因,称为“第2步素诱因”。这些素诱因中,有些可能已经是“元诱因”(穴位)了。
第3.i步(i=1,2,…):针对第2步所获得的每个不是“元诱因”(穴位)的素诱因,利用定理5,将其进行分解,由此得到的素诱因称为“第3步素诱因”(这些诱因的从左到右的排列顺序与前几步相似)。这些素诱因中,有些可能已经是“元诱因”(穴位)了。
……
第k.i步(i=1,2,…):针对第k-1步所获得的每个不是“元诱因”(穴位)的素诱因,利用定理5,将其进行分解,由此得到的素诱因称为“第k步素诱因”(这些诱因的从左到右的排列顺序也与前几步相似)。这些素诱因中,有些可能已经是“元诱因”(穴位)了。
……
由于上面各步骤的每次分解,都是针对真子集所进行的,所以,这种分解的步骤不会无穷进行下去,即,一定存在某个正整数,比如N,使得:
第N.i步(i=1,2,…):针对第N-1步所获得的每个不是“元诱因”的素诱因,利用定理5将其进行分解,由此得到的素诱因全部都已经是“元诱因”(穴位)了(每一个素诱因下面的元诱因排列顺序,也是采用概率从大到小进行)。
将上面的分解步骤结果用图形表述出来,便得到了有限系统A的安全事件“经络图”(由于它的外形很像一棵倒立的树,所以,也称为“经络树”),如图1。
根据经络树的绘制过程,可以得到:
(1)如果系统A不安全了,那么,至少有某个“不安全素事件”(甚至可能是“元诱因”(穴位))发生了(见经络树的第二层);
(2)如果某个“不安全素事件”发生了,那么,该事件的至少某个“素诱因”(甚至可能是“元诱因”(穴位))就发生了(见经络树的第三层);
……
(K)如果某个“第k-1步素诱因”发生了,那么,它的至少某个“第k步素诱因”(甚至可能是“元诱因”(穴位))就发生了(见经络树的第k+1层);
现在就清楚该如何“头痛医足”了:实际上,只要系统A“病”了,那么,就一定能够从系统A的完整经络图中,找出某个“生病的子经络图”M,使得:(1)M的每层“素诱因”或“元诱因”(穴位)都是“病”的;(2)除了M之外,系统A的经络图的其他部分都没病。于是,为了治好该“病”,只需要将M中的所有“元诱因”(穴位)的“病”治好(说明:这里某个第k步诱因病了,意指它的至少一个“第k+1步诱因”发生了。而如果某个第k步诱因的全部第k+1步诱因都没有发生,那么,这个第k步诱因就没病!可见,除了“元诱因”(穴位)之外,M中的其他非元诱因是可以自愈的!)。
更具体地说,“头痛医足”的过程是:首先将最底层,比如第N层的“元诱因”(穴位)治好,于是,第N-1层的“素诱因”就自愈了;然后,再扎针灸治好第N-1层的“元诱因”(穴位),于是,第N-2层的“素诱因”就自愈了;然后,再扎针灸治好第N-3层的“元诱因”(穴位),……,如此继续,最终到达顶层。
“经络图”的用途显然不仅仅是用来“头痛医足”,它还有许多其他重要应用,比如:
(1)只要守住所有相关的“元诱因”(穴位),那么,系统A就安然无恙;
(2)同理,只要将所有炮火瞄准相关“元诱因”(穴位),那么,就能够稳准狠地打击对手;
(3)除了元诱因(穴位)之外,经络图中平均概率值大的“经络”是更脆弱的经络(即,安全“木桶原理”中的短板),也是在系统安全保障中需要重点保护的部分;同时,也是攻击过程中重点打击的部分;
(4)平时注意绘制和补充经络图,关键时刻就可以派上用场了!
3结束语
仙农在研究信息论时,虽然发现了信道容量的上限值,但是非常遗憾,他没能给出如何才能达到该上限值,从而,致使全世界通信界的科学家们在过去60余年来,使出浑身解数设计各种编码方法,来努力逼近仙农界,至今没有成功。
与此相似,本文虽然证明了有限系统的“安全经络图”是存在的,但是,并未给出如何针对具体的系统,来绘制其安全经络图,估计未来的学者们不得不花费巨大的精力,针对具体系统来绘制具体的经络图。
必须指出,绘制经络图绝非易事。为了绘制人体经络图,中医界的祖先们奋斗了数千年!因此,绝无可能在短期内就绘制出“网络空间安全经络图”,虽然这个图肯定存在。
下面结合网络空间安全给出几点注记:(1)漏洞库中的每个漏洞,算是“元诱因”(穴位),堵住相关漏洞就是对相关“元诱因”(穴位)的加固;(2)口令算是一种“元诱因”(穴位),如果今后能够完全消除口令,代之以综合的个体生理特征,那么,这个“元诱因”(穴位)就会被充分加固;(3)删贴等“信息封堵”手段,虽然可以加固某个“素诱因”,但是,绝非加固“元诱因”(穴位),所以,难免会吃力不讨好;(4)“被穿透”和“被封堵”显然是互不相容的安全事件,而“被窃密”和“口令暴露”却是彼此相容的不安全事件;(5)欢迎所有学者,继续对“网络空间安全经络图”和其他系统的经络图进行更深入的研究。