杨义先,钮心忻
(北京邮电大学 信息安全中心, 北京 100083)
安全通论(2)
——攻防篇之“盲对抗”
杨义先,钮心忻
(北京邮电大学 信息安全中心, 北京 100083)
编者按:黑客与红客之间的“非盲对抗”是没有纳什均衡的,因为一方只要知道另一方的博弈策略后,就一定能够通过调整自己的战略而获胜。“盲对抗”则存在纳什均衡。本文作者大胆猜测:纳什均衡所对应的攻防双方的“混合策略”刚好达到信道容量的极限概率分布。过去一直认为,网络安全对抗的状态只有两个:此起、彼伏,但却忽略了另一个更重要的状态:纳什钧衡。本文精确地给出了黑客攻击能力和红客防御能力的可达理论极限,对纳会均衡进行深入探讨。本文中“佛祖”一词并非宗教中的含义,仅表示一个抽象的客体。
杨义先教授,博士生导师,灾备技术国家工程实验室主任,北京邮电大学信息安全中心主任,教育部网络攻防重点实验室主任,《微型机与应用》编委,主要研究方向:网络空间安全、现代密码学和纠错编码等。
钮心忻博士,教授,博士生导师。北京邮电大学学士和硕士学位,香港中文大学电子工程系博士学位。1997年起在北京邮电大学信息工程学院(现计算机学院)从事教学与科研工作。主要研究方向:网络与信息安全、信号与信息处理等。
众所周知,以网络安全、领土安全、环境安全、粮食安全、身体健康、公共安全、国家安全等为代表的“安全问题”是头等大事。但是,直到现在,无论是国内还是国外,对安全问题都没有真正系统研究过。虽然,各国都花费了大量的人力和物力去研究具体的安全问题,但是几乎都是“只见树木,不见森林”,从来没有人提出过一整套适合于所有安全问题的系统的“安全基础理论”,甚至根本就不相信这样的理论会存在。
作者不信邪,非要试图来研究一套“放之四海而皆准”的安全基础理论,称之为“安全通论”,显然,这样的理论绝非能轻易建立和完成的。在参考文献[1]中已经证明了一个出人意料的结果:针对任何有限系统,若从安全角度去考虑,那么,它的所有“不安全”问题都可以很清晰地分解成一棵有限的“倒立树”。
(1)只要用心维护好这棵“倒立树”的安全,那么整个系统的安全就可以得到充分保障。
(2)如果系统出现了某个安全问题,那么就一定可以从这棵“倒立树”中分离出一个或几个“树枝”,满足:①除了这些“树枝”外,“倒立树”的所有其他“树枝”都是无病的;②对有病的“树枝”,只需要对其底部的带病末端进行“医治”,其他上层的“分枝”等都会自愈。
此处之所以要限定“系统是有限的”,是因为在现实工程中,所遇到的系统(比如,网络系统、消防系统、实际战场等)都是有限的。
实际上,文献[1]已经展示了“安全通论”的冰山一角,更使我们相信:“放之四海而皆准”的安全理论是存在的。
本文继续对“安全通论”进行更深入的挖掘。
由于本文读者面也很广,上可以包括国家元首,中可以包括网络黑客,下可以包括骂街泼妇等;也更由于当前国内学术界过于看重SCI等机械指标,因此,与文献[1]的处理方法一样,我们带头挑战SCI,直接将论文首先实名发表在网络上(http://blog.sciencenet.cn/u/yangleader),欢迎各界安全专家批评指正。
同时,更欢迎大家一起来研究“安全通论”,无论你是信息安全专家、军事家、政治家、医生、股神、拳王、泼妇等需要考虑对抗问题的任何人。
“攻防”是“安全”的核心,特别是在有红黑双方对抗的场景下(比如战场、公安、网络安全等),“攻防”几乎就等于“安全”。所以,在《安全通论》的建立过程中,将花费更多的篇幅来研究“攻防”问题。但是,长期以来,人们并未对攻防场景进行过清晰的整理,再加上“攻防”一词经常被滥用,从而导致“攻防”几乎成了一个“只能意会不能言传”的名词,当然就更无法对“攻防”进行系统的理论研究了。
因此,开始我们的研究之前,必须首先理清攻防场景。更准确地说,下面只考虑“无裁判的攻防”,因为,像日常看到的诸如拳击比赛等“有裁判攻防”的体育项目,并不是真正的“攻防”:其实,“攻防”系统中,只有“攻方”和“守方”这两个直接利益相关方(虽然有时涉及的人员会超过两个),但绝没有与利益无关的第三方,所以,对“攻防”结果来说,吹哨的裁判员其实是干扰,是噪音,而且还是主观的噪音,必须去除。
“无裁判攻防”又可以进一步地分为两大类:盲攻防、非盲攻防。所谓“盲攻防”,意指每次攻防后,双方都只知道自己的损益情况,而对另一方却一无所知,比如大国博弈、网络攻防、实际战场、间谍战、泼妇互骂等。所谓“非盲攻防”,意指每次攻防后,双方都知道本次攻防的结果,而且还一致认同这个结果,比如石头剪刀布游戏、下棋、炒股等。一般来说,“盲对抗”更血腥和残酷,而“非盲对抗”的娱乐味更浓。本文只考虑“盲攻防”,有关“非盲攻防”的研究,将在后续文章中给出。
黑客与红客之间的“非盲对抗”是没有纳什均衡的,因为一方只要知道另一方的博弈策略后,他就一定能够通过调整自己的战略而获胜。“盲对抗”则存在纳什均衡,而且可大胆猜测:纳什均衡所对应的攻防双方的“混合策略”刚好达到信道容量的极限概率分布。因此,过去一直认为,网络安全对抗的状态只有两个:此起、彼伏,但却忽略了另一个更重要的状态:纳什钧衡。那时,攻防双方的最佳策略都是“静止不动”,至少表面上是这样。
为形象化叙述,下面仍然借用拳击的术语来介绍“盲攻防”系统,当然,这时,裁判已经被赶走,代替裁判的是“无所不知”的佛祖。
攻方(黑客)是个神仙拳击手,永远不知累,他可用随机变量X来表示。他每次出击后,都会对自己的本次出击给出一个“真心盲评价”(比如自认为本次出击成功或失败。当自认为本次出击成功时,记为X=1;当自认为出击失败时,记为X=0),但是,这个“真心盲评价”他绝不告诉任何人,只有他自己才知道。当然,佛祖也知道。此处,之所以假定“攻方(黑客)的盲自评要对外保密”,是因为可以因此认定他的盲自评是真心的,不会也没有必要弄虚作假。
守方(红客)也是个神仙拳击手,他也永远不知累,可用随机变量Y来表示他。红客每次守卫后,也都会对自己的这次守卫给出一个真心盲评价(比如自认为本次守卫是成功或失败。当自认为守卫成功时,记为Y=1;当自认为守卫失败时,记为Y=0)。这个评价也仍然绝不告诉任何人,只有红客自己才知道(当然,佛祖本来就知道)。同样,之所以要假定“红客的盲自评要对外保密”,是因为我们可以因此认定他的自评是真心的,不会也没有必要弄虚作假。
这里“盲评价”的“盲”,主要意指双方都不知道对方的评价,而只知道自己的评价,但是,这个评价却是任何第三方都不能“说三道四”的。比如,针对“黑客一拳打掉红客假牙”这个事实,也许吹哨的那个“裁判员”会认定“黑客成功”。但是,当事双方的评价可能会完全不一样,比如:也许黑客的“盲自评”是“成功,X=1”(如果他原本以为打不着对方的),也许黑客的“盲自评”是“失败,X=0”(如果他原本以为会打瞎对方眼睛的);也许红客的“防卫盲自评”是“成功,Y=1”(如果他原本以为会因此次攻击毙命的),也许红客的“防卫盲自评”是“失败,Y=0”(如果他原本以为对方会扑空的)。总之,到底攻守双方对本次“打掉假牙”如何评价,只有他们自己心里才明白。由此看来,“把那个吹哨的裁判员赶走”是正确的,谁敢说他不会“吹黑哨”呢?
裁判员虽然被赶走了,但是把佛祖请来了。不过,佛祖只是远远地呆在凌霄宝殿“看”热闹,他知道攻守双方心里的真实想法,因此,也知道双方对每次攻防的真心盲自评,于是,他可将攻守双方过去N次对抗的“盲自评结果”记录下来:
(X,Y)=(X1,Y1)、(X2,Y2)、…、(XN,YN)
由于当N趋于无穷大时,频率趋于概率Pr,因此只要攻守双方足够长时间对抗之后,佛祖便可以得到随机变量X、Y的概率分布和(X,Y)的联合概率分布如下:
Pr(攻方盲自评为成功)=Pr(X=1)=p
Pr(攻方盲自评为失败)=Pr(X=0)=1-p,0
Pr(守方盲自评为成功)=Pr(Y=1)=q
Pr(守方盲自评为失败)=Pr(Y=0)=1-q,0 Pr(攻方盲自评为成功,守方盲自评为成功)=Pr(X=1,Y=1)=a,0 Pr(攻方盲自评为成功,守方盲自评为失败)=Pr(X=1,Y=0)=b,0 Pr(攻方盲自评为失败,守方盲自评为成功)=Pr(X=0,Y=1)=c,0 Pr(攻方盲自评为失败,守方盲自评为失败)=Pr(X=0,Y=0)=d,0 这里,a,b,c,d,p,q之间还满足如下三个线性关系等式: a+b+c+d=1 p=Pr(X=1)=Pr(X=1,Y=0)+Pr(X=1,Y=1)=a+b q=Pr(Y=1)=Pr(X=1,Y=1)+Pr(X=0,Y=1)=a+c 所以,6个变量a,b,c,d,p,q中,其实只有3个是独立的。 足够长的时间之后,佛祖“看”够了,便叫停攻守双方,让他们分别对擂台进行有利于自己的秘密调整,当然某方(或双方)也可以放弃本次调整的机会,如果他(他们)认为当前擂台对自己更有利的话。这里,所谓的“秘密调整”即指双方都不知道对方做了些什么调整。比如,针对网络空间安全对抗,也许红客安装了一个防火墙,也许黑客植入了一种新的恶意代码等;针对阵地战的情况,也许攻方调来了一友增援部队,也许守方又埋了一批地雷等。 总之,攻守双方调整完成后,双方又在新擂台上重新开始“下一轮”的对抗。 不过,本文不研究攻守双方的“下一轮”对抗,只考虑“当前轮”,即由上面的X、Y、(X,Y)等随机变量组成的系统。 至此,“盲攻防”场景的精确描述就完成了。可见,网络战、间谍战、泼妇互骂等对抗性很惨烈的攻防,都是典型的“盲对抗”。 根据上节中的随机变量X和Y,佛祖再新造一个随机变量Z=(X+Y)mod2。由于任何两个随机变量都可以组成一个通信信道,因此把X作为输入,Z作为输出,佛祖便可构造出一个通信信道F,称之为“攻击信道”。 由于攻方(黑客)的目的是要打败守方(红客),因此黑客是否“真正成功”,不能由自己的盲评价来定(虽然这个盲评价是真心的),而是应该由“红客”的真心盲评价说了算。所以,就应该有如下事件等式成立: {攻方的某次攻击真正成功} ={攻方本次盲自评为成功∩守方本次盲自评为失败}∪{攻方本次盲自评为失败∩守方本次盲自评为失败}={X=1,Y=0}∪{X=0,Y=0} ={X=1,Z=1}∪{X=0,Z=0} ={1 bit信息被成功地从通信系统F的发端(X)传输到了收端(Z)}。 另一方面,如果有1 bit信息被成功地从发端(X)传到了收端(Z),那么,要么是“X=0,Z=0”;要么是“X=1,Z=1”。由于Y=(X+Z)mod2,因此由“X=0,Z=0”推知“X=0,Y=0”;由“X=1,Z=1”推知“X=1,Y=0”。而“X=0,Y=0”意味着“攻防本次盲自评为失败∩守方本次盲自评为失败”,“X=1,Y=0”意味着“攻方本次盲自评为成功∩守方本次盲自评为失败”。综合起来就意味着“攻方获得某次攻击的真正成功”。 简而言之,如果黑客的某次攻击“真正成功”,那么,“攻击信道”F就成功地传输1 bit信息到收端;反之,如果有1 bit信息被成功地从“攻击信道”F的发端传送到了收端,那么,黑客X就获得了一次“真正成功攻击”。即可得如下引理1。 引理1:黑客获得一次“真正成功的攻击”,其实就对等于说:“攻击信道”F成功地传输了1 bit信息。 根据仙农信息论的著名“信道编码定理”[2-3]:如果信道F的容量为C,那么,对于任意传输率k/n≤C,都可以在译码错误概率任意小的情况下,通过某个nbit的编码,成功地把kbit信息传输到收信端。反之,如果信道F能够用nbit编码,把Sbit信息无误差地传输到收端,那么,一定有S≤nC。 利用引理1,就可把这段话翻译成如下重要定理1。 定理1(黑客攻击能力极限定理):设由随机变量(X,Z)组成的“攻击信道”F的信道容量为C。如果黑客想“真正成功”地把红客打败k次,那么他一定有某种技巧(对应于仙农编码),使得他能够在k/C次攻击中以任意接近1的概率达到目的。反过来,如果黑客经过n次攻击,获得了S次“真正成功”的攻击,那么一定有S≤nC。 由定理1可知,只要求出“攻击信道”F的信道容量C,那么黑客的攻击能力极限就确定了。 下面来计算F的“信道容量”C。 首先,由于随机变量Z=(X+Y)mod2,因此可以由X和Y的概率分布,得到Z的概率分布如下: Pr(Z=0) =Pr(X=Y) =Pr(攻守双方的盲自评结果一致) =Pr(X=0,Y=0)+Pr(X=1,Y=1) =a+d; Pr(Z=1) =Pr(X≠Y) =Pr(攻守双方的盲自评结果相反) =Pr(X=0,Y=1)+Pr(X=1,Y=0) =b+c = 1-(a+d); 考虑通信系统F,它由随机变量X和Z构成,即它以X为输入,Z为输出;它的2×2阶转移概率矩阵为A=[A(x,z)]=[Pr(z|x)],这里x,z=0或1。 A(0,0)=Pr(Z=0|X=0)=[Pr(Z=0,X=0)]/Pr(X=0) =[Pr(Y=0,X=0)]/(1-p) =d/(1-p) A(0,1)=Pr(Z=1│X=0)=[Pr(Z=1,X=0)]/Pr(X=0) =[Pr(Y=1,X=0)]/(1-p) =c/(1-p)=1-d/(1-p) A(1,0)=Pr(Z=0│X=1) =[Pr(Z=0,X=1)]/Pr(X=1) =[Pr(Y=1,X=1)]/p=a/p A(1,1)=Pr(Z=1│X=1)=[Pr(Z=1,X=1)]/Pr(X=1) =[Pr(Y=0,X=1)]/p=b/p =(p-a)/p 由于随机变量(X,Z)的联合概率分布为: Pr(X=0,Z=0)=Pr(X=0,Y=0)=d Pr(X=0,Z=1)=Pr(X=0,Y=1)=c Pr(X=1,Z=0)=Pr(X=1,Y=1)=a Pr(X=1,Z=1)=Pr(X=1,Y=0)=b 因此随机变量X与Z之间的互信息为: I(X,Z) =∑x∑zp(x,z)log(p(x,z)/[p(x)p(z)]) =dlog[d/[(1-p)(a+d)]]+clog[c/[(1-p)(b+c)]]+alog[a/[p(a+d)]]+blog[b/[p(b+c)]] 由于此处有a+b+c+d=1,p=a+b,q=a+c,0 I(X,Z)=[1+a-(p+q)]log[[1+a-(p+q)]/[(1-p)(1+2a-p-q)]]+ (q-a)log[(q-a/[(1-p)(p+q-2a)])]+ alog[a/[p(1+2a-p-q)]]+ (p-a)log[(p-a)/[p(p+q-2a)]] 于是,利用此I(X,Z)可知,以X为输入,Z为输出的信道F的“信道容量”C就等于Max[I(X,Z)](这里最大值是针对X为所有可能的二元离散随机变量来计算的),或者更简单地说:容量C等于Max0 “攻”的量化研究就到此。下面再来考虑“守”的情况。 设随机变量X、Y、Z和(X,Y)等都与前面相同。 根据随机变量Y(红客)和Z,佛祖再组成另一个通信信道G,称为“防御信道”,即把Y作为输入,Z作为输出。 由于守方(红客)的目的是要挡住攻方(黑客)的进攻,因此红客是否“真正成功”不能由自己的盲评价来定。而应该是由“黑客”的真心盲评价来定。所以就应该有如下事件等式成立: {守方的某次防卫真正成功} ={守方本次盲自评为成功∩攻方本次盲自评为失败}∪{守方本次盲自评为失败∩攻方本次盲自评为失败}={Y=1,X=0}∪{Y=0,X=0} ={Y=1,Z=1}∪{Y=0,Z=0} ={1bit信息被成功地从防御信道G的发端(Y)传输到了收端(Z)} 与“攻击信道”的情况类似,反过来,上述事件等式也就意味着:如果在“防御信道”G中,1 bit信息被成功地从发端(Y)传到了收端(Z),那么,红客就获得了一次“真正成功的”防卫。 与引理1类似,可得如下引理2。 引理2:红客获得一次“真正成功的守卫”,其实就等于说:“防御信道”G成功地传输了1 bit信息。 与定理1类似,也可得到如下重要定理2。 定理2(红客守卫能力极限定理):设由随机变量(Y,Z)组成的“防御信道”G的信道容量为D。如果红客想“真正成功”地把黑客挡住R次,那么,一定有某种技巧(对应于仙农编码),使得他能够在R/D次防御中以任意接近1的概率达到目的。如果红客经过N次守卫获得了R次“真正成功”的守卫,那么,一定有R≤ND。 下面再来计算“防御信道”G的“信道容量”D。 考虑通信系统G,它由随机变量Y和Z构成,即它以Y为输入,Z为输出;它的2×2阶转移概率矩阵为B=[B(y,z)]=[Pr(z|y)],这里y,z=0或1。 B(0,0)=Pr(Z=0│Y=0) =[Pr(Z=0,Y=0)]/Pr(Y=0) =[Pr(X=0,Y=0)]/(1-q)=d/(1-q) B(0,1)=Pr(Z=1│Y=0) =[Pr(Z=1,Y=0)]/Pr(Y=0) =[Pr(X=1,Y=0)]/(1-q)=b/(1-q) B(1,0)=Pr(Z=0│Y=1) =[Pr(Z=0,Y=1)]/Pr(Y=1) =[Pr(X=1,Y=1)]/q=a/q B(1,1)=Pr(Z=1│Y=1) =[Pr(Z=1,Y=1)]/Pr(Y=1) =[Pr(X=0,Y=1)]/q=c/q 由于随机变量(Y,Z)的联合概率分布为: Pr(Y=0,Z=0)=Pr(X=0,Y=0)=d Pr(Y=0,Z=1)=Pr(X=1,Y=0)=b Pr(Y=1,Z=0)=Pr(X=1,Y=1)=a Pr(Y=1,Z=1)=Pr(X=0,Y=1)=c 因此随机变量Y与Z之间的互信息为: I(Y,Z)=∑Y∑Zp(y,z)log(p(y,z)/[p(y)p(z)]) =dlog[d/[(1-q)(a+d)]]+ blog[b/[(1-q)(b+c)]]+alog[a/[q(a+d)]]+ clog[c/[q(b+c)]] 由于此处有a+b+c+d=1,p=a+b,q=a+c,0 I(Y,Z) =(1+a-p-q)log[(1+a-p-q)/[(1-q)(1+2a-p-q)]]+(p-a)log[(p-a)/[(1-q)(p+q-2a)]]+alog[a/[q(1+2a-p-q)]]+ (q-a)log[(q-a)/[q(p+q-2a)]]2 黑客攻击能力极限
3 红客守卫能力极限