杨义先,钮心忻
(北京邮电大学 信息安全中心,北京 100083)
编者按:“攻防”是安全的核心,而“攻防”的实质就是“对抗”。本文作者给出了当前网络空间安全攻防战中常见的两种情形下,攻守双方极限能力的精确值:(1)多位黑客攻击一位红客;(2)一个黑客攻击多位红客。特别说明,本文中“佛祖”一词并非宗教中的含义,仅表示一个抽象的客体。
0引言
为了全面深入地研究“对抗”,前面已经写了四篇文章[1-4]来进行地毯式探索。
参考文献[2]统一研究了“盲对抗”,并给出了黑客(红客)攻击(防守)能力的精确极限。
参考文献[3]、[4]和[5]以国际著名的“石头剪刀布游戏”、国内家喻户晓的“猜正反面游戏”和“手心手背游戏”、酒桌上著名的“划拳”和“猜拳”等游戏为对象,研究了“非盲对抗”的5个有趣实例,给出了输赢极限和获胜技巧。
特别是参考文献[5],针对“非盲对抗”的一个很大的子类(输赢规则线性可分的情况),给出了统一的解决方案。
但是,参考文献[2] [5]都只限于“攻”与“守”单挑的情形,即一个黑客攻击一个红客。虽然在一般系统中,黑客与红客几乎都是“一对一”的,但是,在网络空间安全对抗中,还会经常出现“群殴”事件,特别是多位黑客攻击一位红客;一个黑客攻击多位红客;黑客借助跳板来攻击红客;在有人协助时,黑客攻击红客等。而另一方面,在网络空间安全对抗中,几乎只涉及“盲对抗”,所以,下面重点研究这类“盲群殴”。当然,本文的结果绝不仅仅限于网络空间安全,仍然对各类安全都有效。
本文的攻防场景描述主要是引入“佛祖”的做法,与参考文献[2]相同,为了节省篇幅,此处不再重复。
1多位黑客攻击一位红客
为了直观讨论,先考虑两个黑客攻击一个红客的情形,然后再做推广。
设黑客X1和X2都想攻击红客Y,并且两个黑客互不认识,甚至可能不知道对方的存在,因此,作为随机变量,可以假设X1和X2是相互独立的。
与参考文献[2]类似,仍然假设:攻防各方采取“回合
杨义先教授,博士生导师,灾备技术国家工程实验室主任,北京邮电大学信息安全中心主任,教育部网络攻防重点实验室主任,《微型机与应用》编委,主要研究方向:网络空间安全、现代密码学和纠错编码等。
钮心忻博士,教授,博士生导师。北京邮电大学学士和硕士学位,香港中文大学电子工程系博士学位。1997年起在北京邮电大学信息工程学院(现计算机学院)从事教学与科研工作。主要研究方向:网络与信息安全、信号与信息处理等。
制”,并且每个“回合”后,各方都对本次的攻防结果给出一个“真心的盲自评”,由于这些自评结果是不告诉任何人的,因此有理由假设“真心的盲自评”是真实可信的,没必要做假。
分别用随机变量X1和X2代表第一个和第二个黑客,他们按如下方式对自己每个回合的战果进行真心盲自评:
X1对本回合盲自评为成功,则X1=1;X1对本回合盲自评为失败,则X1=0;
X2对本回合盲自评为成功,则X2=1;X2对本回合盲自评为失败,则X2=0。
由于每个回合中红客要同时对付两个黑客的攻击,因此用2维随机变量Y=(Y1,Y2)代表红客,他按如下方式对自己每个回合的防御成果X1和X2进行真心盲自评:
本回合Y自评防御X1成功,自评防御X2也成功时,记为Y1=1,Y2=1;
本回合Y自评防御X1成功,自评防御X2失败时,记为Y1=1,Y2=0;
本回合Y自评防御X1失败,自评防御X2成功时,记为Y1=0,Y2=1;
本回合Y自评防御X1失败,自评防御X2失败时,记为Y1=0,Y2=0。
让黑客们和红客不断地进行攻防对抗,并各自记下他们的盲自评结果。虽然他们的盲自评结果是保密的,没有任何人知道,但是,佛祖知道这些结果,而且根据“频率趋于概率”这个大数定律,佛祖就可以计算出如下概率:
0<Pr(X1=1)=p<1; 0<Pr(X1=0)=1-p<1
0<Pr(X2=1)=q<1; 0<Pr(X2=0)=1-q<1
0<Pr(Y1=1,Y2=1)=a11<1;0<Pr(Y1=1,Y2=0)=a10<1
0<Pr(Y1=0,Y2=1)=a01<1;0<Pr(Y1=0,Y2=0)=a00<1
这里,a00+a01+a10+a11=1。
佛祖再造一个2维随机变量Z=(Z1,Z2)=((1+X1+Y1)mod2, (1+X2+Y2)mod2),即Z1=(1+X1+Y1)mod2,Z2=(1+X2+Y2)mod2,并利用随机变量X1、X2和Z构造一个2-接入信道(X1,X2,p(z|x1,x2),Z),并称该信道为红客的防御信道F(注:关于多接入信道的细节,请见参考文献[6]的15.3节)。
下面来考虑几个事件恒等式。
{某个回合红客防御成功}={红客防御X1成功}∩{红客防御X2成功}
{红客防御X1成功}={黑客X1自评本回合攻击成功,红客自评防御X1成功}∪{黑客X1自评本回合攻击失败,红客自评防御X1成功}={X1=1,Y1=1}∪{X1=0,Y1=1}= {X1=1,Z1=1}∪{X1=0,Z1=0}
同理,{红客防御X2成功}={黑客X2自评本回合攻击成功,红客自评防御X2成功}∪{黑客X2自评本回合攻击失败,红客自评防御X2成功}={X2=1,Y2=1}∪{X2=0,Y2=1}= {X2=1,Z2=1}∪{X2=0,Z2=0}。
所以,{某个回合红客防御成功}=[{X1=1,Z1=1}∪{X1=0,Z1=0}]∩[{X2=1,Z2=1}∪{X2=0,Z2=0}]=[防御信道F的第一个子信道传信成功]∩[防御信道F的第二个子信道传信成功]= {2-输入信道F的传输信息成功}。
于是,便有如下引理1。
引理1:如果红客在某个回合防御成功,那么,1 bit信息就在2输入信道F(防御信道)中被成功传输。
反过来,如果“2输入信道F的传输信息成功”,那么,“防御信道F的第一个子信道传输成功”同时“防御信道F的第二个子信道传输成功”,即[{X1=1,Z1=1}∪{X1=0,Z1=0}]∩[{X2=1,Z2=1}∪{X2=0,Z2=0}],这等价于[{X1=1,Y1=1}∪{X1=0,Y1=1}]∩[{X2=1,Y2=1}∪{X2=0,Y2=1}],而{X1=1,Y1=1}∪{X1=0,Y1=1}意味着{黑客X1自评本回合攻击成功,红客自评防御X1成功}∪{黑客X1自评本回合攻击失败,红客自评防御X1成功},即{红客防御X1成功},同理,{X2=1,Y2=1}∪{X2=0,Y2=1}意味着{黑客X2自评本回合攻击成功,红客自评防御X2成功}∪{黑客X2自评本回合攻击失败,红客自评防御X2成功},即{红客防御X2成功},所以[{X1=1,Y1=1}∪{X1=0,Y1=1}]∩[{X2=1,Y2=1}∪{X2=0,Y2=1}]就等同于{某个回合红客防御成功},从而得到了如下引理(它是引理1的逆)。
引理2:如果1 bit信息在2输入信道F(防御信道)中被成功传输,那么,红客就在该回合中防御成功。
结合引理1和引理2,可得到如下定理1。
定理1:设随机变量X1、X2和Z如上所述,防御信道F是2接入信道(X1,X2,p(z|x1,x2),Z),那么,“红客在某回合中防御成功”就等价于“1 bit信息在防御信道F中被成功传输”。
根据参考文献[6]中15.3.1节的定理及其逆定理可知,信道F的可达容量区域为满足下列条件的全体(R1,R2)所组成集合的凸闭包:
0≤R1≤maxXI(X1;Z|X2)
0≤R2≤maxXI(X2;Z|X1)
0≤R1+R2≤maxXI(X1, X2;Z)
这里最大值是针对所有独立随机变量X1和X2的概率分布而取的;I(A,B;C)表示互信息,而I(A;B|C)表示条件互信息;Z=(Z1,Z2)=((1+X1+Y1)mod2,(1+X2+Y2)mod2)。
利用定理1,并将上述可达容量区域的结果翻译成攻防术语后,便得到定理2。
定理2:两个黑客X1和X2独立地攻击一个红客Y。如果在n个攻防回合中,红客成功防御第一个黑客r1次,成功防御第二个黑客r2次,那么,一定有:
0≤r1≤n[maxXI(X1;Z|X2)]
0≤r2≤n[maxXI(X2;Z|X1)]
0≤r1+r2≤n[maxXI(X1, X2;Z)]
而且,上述的极限是可达的,即红客一定有某种最有效的防御方法,使得在n次攻防回合中,红客成功防御第一个黑客r1次,成功防御第二个黑客r2次,成功次数r1和r2达到上限:r1=n[maxXI(X1;Z|X2)],r2=n[maxXI(X2;Z|X1)]以及r1+r2=n[maxXI(X1, X2;Z)]。再换一个角度,还有:
如果红客想成功防御第一个黑客r1次,成功防御第二个黑客r2次,那么他至少得进行max{r1/[maxXI(X1;Z|X2)],r2/[maxXI(X2;Z|X1)],[maxXI(X1,X2;Z)]}次防御。
下面将定理2推广到任意m个黑客X1,X2,…,Xm独立地攻击一个红客Y=(Y1,Y2,…,Ym)的情况。
仍然假设:攻防各方采取“回合制”,并且每个“回合”后,各方都对本次的攻防结果给出一个“真心的盲自评”,由于这些自评结果是不告诉任何人的,因此有理由假设“真心的盲自评”是真实可信的,没必要做假。
对任意1≤i≤m,黑客Xi按如下方式对自己每个回合的战果进行真心盲自评:
如果黑客Xi对本回合盲自评为成功,则Xi=1;如果黑客Xi对本回合盲自评为失败,则Xi=0。
每个回合中,红客按如下方式对自己防御黑客X1,X2,…,Xm的成果进行真心盲自评:任取整数集合{1,2,…,m}的一个子集S,记Sc为S的补集,即,Sc={1,2,…,m}-S,再记X(S)为{Xi:i∈S},X(Sc)为{Xi:i∈Sc},如果红客成功地防御了X(S)中的黑客,但却自评被X(Sc)中的黑客打败,那么,红客的盲自评估就为:{Yi=1:i∈S},{Yi=0:i∈Sc}。
佛祖再造一个m维随机变量Z=(Z1,Z2,…Zm)=((1+X1+Y1)mod2, (1+X2+Y2)mod2,… , (1+Xm+Ym)mod2),即,Zi=(1+Xi+Yi)mod2,1≤i≤m。并利用随机变量X1,X2,…,Xm和Z构造一个m-接入信道,并称该信道为红客的防御信道G。
仿照上面m=2的证明方法,根据参考文献[6]15.3.6节的定理及其逆定理可知,道信道G的可达容量区域为满足下列条件的所有码率向量所成集合的凸闭包:
R(S)≤I(X(S);Z│X(Sc)),对{1,2,…,m}的所有子集S。
这里R(S)定义为R(S)=∑i∈SRi=∑i∈S[ri/n],ri/n是第i个输入的码率。
仿照前面,将该可达容量区域的结果翻译成攻防术语后,便得到定理3。
定理3:m个黑客X1,X2,…,Xm独立地攻击一个红客Y。如果,在n个攻防回合中,红客成功防御第i个黑客ri次,1≤i≤m,那么,一定有r(S)≤n[I(X(S);Z|X(Sc))],对{1,2,…,m}的所有子集S。这里r(S)=∑i∈Sri。而且,该上限是可达的,即红客一定有某种最有效的防御方法,使得在n次攻防回合中,红客成功防御黑客集S的次数集合r(S)达到上限:r(S)=n[I(X(S);Z|X(Sc))],对{1,2,…,m}的所有子集S。再换一个角度,还有:
如果红客要实现成功防御黑客集S的次数集合为r(S),那么,他至少得进行max{r(S)/[I(X(S);Z|X(Sc))]}次防御。
2一位黑客攻击多位红客
为了增强安全性,红客在建设系统时,常常建设一个甚至多个(异构)备份系统,一旦系统本身被黑客攻破后,红客可以马上启用备份系统,从而保障业务的连续性。因此,在这种情况下,黑客若想真正取胜,他就必须同时攻破主系统和所有备份系统。这就是“一位黑客攻击多位红客”的实际背景。换句话说,哪怕只有一个备份未被黑客攻破,那么,就不能算黑客赢。当然,也许红客们并不知道是同一个黑客在攻击他们,至于红客们是否协同,都不影响下面的研究。
先考虑1个黑客攻击2个红客的情形,然后,再做推广。
设黑客X=(X1,X2)想同时攻击两个红客Y1和Y2。由于这两个红客是两个互为备份系统的守卫者,因此,黑客必须同时把这两个红客打败,才能算真赢。
与上节类似,仍然假设:攻防各方采取“回合制”,并且每个“回合”后,各方都对本次的攻防结果给出一个“真心的盲自评”,由于这些自评结果是不告诉任何人的,因此有理由假设“真心的盲自评”是真实可信的,没必要做假。
分别用随机变量Y1和Y2代表第一个和第二个红客,他们按如下方式对自己每个回合的战果,进行真心盲自评:
红客Y1对本回合防御盲自评为成功,则Y1=1;红客Y1对本回合防御盲自评为失败,则Y1=0;
红客Y2对本回合防御盲自评为成功,则Y2=1;红客Y2对本回合防御盲自评为失败,则Y2=0。
由于每个回合中黑客要同时攻击两个红客,因此用2维随机变量X=(X1,X2)代表黑客,他按如下方式对自己每个回合攻击Y1和Y2的成果进行真心盲自评:
本回合X自评攻击Y1成功,自评攻击Y2成功时,记为X1=1,X2=1;
本回合X自评攻击Y1成功,自评攻击Y2失败时,记为X1=1,X2=0;
本回合X自评攻击Y1失败,自评攻击Y2成功时,记为X1=0,X2=1;
本回合X自评攻击Y1失败,自评攻击Y2失败时,记为X1=0,X2=0。
让黑客和红客们不断地进行攻防对抗,并各自记下他们的盲自评结果。虽然他们的盲自评结果是保密的,没有任何人知道,但是佛祖知道这些结果,而且,根据“频率趋于概率”这个大数定律,佛祖就可以计算出如下概率:
0<Pr(Y1=1)=f<1; 0<Pr(Y1=0)=1-f<1
0<Pr(Y2=1)=g<1; 0<Pr(Y2=0)=1-g<1
0<Pr(X1=1,X2=1)=b11<1;0<Pr(X1=1,X2=0)=b10<1
0<Pr(X1=0,X2=1)=b01<1;0<Pr(X1=0, X2=0)=b00<1
这里,b00+b01+b10+b11=1。
佛祖再造两个随机变量Z1和Z2,这里Z1=(X1+Y1)mod2,Z2=(X2+Y2)mod2。并利用随机变量X(输入)和Z1、Z2(输出)构造一个2 输出广播信道p(z1,z2|x),并称该信道为黑客的攻击信道G[6]。
下面来考虑几个事件恒等式:
{黑客X攻击成功}={黑客X攻击Y1成功}∩{黑客X攻击Y2成功}=[{黑客X自评攻击Y1成功,红客Y1自评防御失败}∪{黑客X自评攻击Y1失败,红客Y1自评防御失败}]∩[{黑客X自评攻击Y2成功,红客Y2自评防御失败}∪{黑客X自评攻击Y2失败,红客Y2自评防御失败}]=[{X1=1,Y1=0}∪{X1=0, Y1=0}]∩[{X2=1,Y2=0}∪{X2=0, Y2=0}]=[{X1=1,Z1=1}∪{X1=0, Z1=0}]∩[{X2=1,Z2=0}∪{X2=0, Z2=0}]=[1 bit信息被成功地从广播信道G的第1个分支传输到目的地]∩[1 bit信息被成功地从广播信道G的第2个分支传输到目的地]=[1 bit信息在广播信道G中被成功传输]。
以上推理过程完全可以逆向进行,从而得到定理4。
定理4:一个黑客X=(X1,X2)同时攻击两个红客Y1和Y2,如果在某个回合中黑客攻击成功,那么,1 bit信息就在上述2输出广播信道(攻击信道)G中被成功传输,反之亦然。
下面再将定理4推广到1个黑客X=(X1,X2,…,Xm),同时攻击任意m个红客Y1,Y2,…,Ym的情况。由于这m个红客是互为备份系统的守卫者,因此,黑客必须同时把这m个红客打败才能算真赢。
仍然假设:攻防各方采取“回合制”,并且每个“回合”后,各方都对本次的攻防结果给出一个“真心的盲自评”,由于这些自评结果是不告诉任何人的,因此有理由假设“真心的盲自评”是真实可信的,没必要做假。
对任意1≤i≤m,红客Yi按如下方式对自己每个回合的战果进行真心盲自评:
红客Yi对本回合防御盲自评为成功,则Yi=1;红客Yi对本回合盲自评防御为失败,则Yi=0;
每个回合中,黑客按如下方式对自己攻击红客Y1,Y2,…,Ym的成果进行真心盲自评:任取整数集合{1,2,…,m}的一个子集S,记Sc为S的补集,即,Sc={1,2,…,m}-S,再记Y(S)为{Yi:i∈S},Y(Sc)为{Yi:i∈Sc},如果黑客自评成功地攻击了Y(S)中的红客,但却自评被Y(Sc)中的红客成功防御,那么黑客X的盲自评就为:{Xi=1:i∈S},{Xi=0:i∈Sc}。
佛祖再造m个随机变量Zi,这里Zi=(Xi+Yi)mod2,1≤i≤m。利用随机变量X(输入)和Z1,Z2,…,Zm(输出)构造一个m-输出广播信道p(z1,z2,…,zm|x),并称该信道为黑客的攻击信道H(注:关于广播信道的细节,请见参考文献[6]的15.6节)。
下面来考虑几个事件恒等式:
{黑客X攻击成功}=∩1≤i≤m{黑客X攻击Yi成功}=∩1≤i≤m [{黑客X自评攻击Yi成功,红客Yi自评防御失败}∪{黑客X自评攻击Yi失败,红客Yi自评防御失败}]=∩1≤i≤m [{Xi=1,Yi=0}∪{Xi=0, Yi=0}]=∩1≤i≤m[{Xi=1,Zi=1}∪{Xi=0,Zi=0}]=∩1≤i≤m[1 bit信息被成功地从广播信道G的第i个分支传输到目的地] =[1 bit信息在m 广播信道G中被成功传输]。
以上推理过程完全可以逆向进行,从而得到定理5。
定理5:一个黑客X=(X1,X2,…,Xm)同时攻击m个红客Y1,Y2,…,Ym,如果在某个回合中黑客攻击成功,那么,1 bit信息就在上述m输出广播信道(攻击信道)H中被成功传输,反之亦然。
根据上述定理4和定理5,一个黑客同时攻击多个红客的问题就完全等价于广播信道的信息容量区域问题。可惜,到目前为止,广播信道的信息容量区域问题还未被解决。
3结束语
在实际的网络空间安全对抗中还有两种常见的攻击情况:(1)黑客借助跳板来攻击红客;(2)在有人协助(比如,在红方有一个内奸)时,黑客攻击红客等。可是,如何来研究这两种攻防极限呢?目前还没有答案。
另一方面,在多用户信息论中也有两种常见的信道:(1)中继信道(见参考文献[6]的15.7节);(2)边信息信道(见参考文献[6]的15.8节)。
我严重怀疑“中继信道可用于研究黑客的跳板攻击”,同时,“边信息信道可用于研究有内奸攻击”,但是,很可惜,我始终没能找到突破口。欢迎有兴趣的读者来“接棒”。
参考文献
[1] 杨义先,钮心忻.安全通论(1)--经络篇[J].微型机与应用,2016,35(15):1-4.
[2] 杨义先,钮心忻. 安全通论(2)--攻防篇之“盲对抗”[J].微型机与应用,2016,35(16):1-5.
[3] 杨义先,钮心忻.安全通论(3)--攻防篇之“非盲对抗”之“石头剪刀布”[J]. 微型机与应用,2016,35(17):1-3.
[4] 杨义先,钮心忻.安全通论(4)--攻防篇之“非盲对抗”之“童趣游戏”[J]. 微型机与应用,2016,35(18):3-5,9.
[5] 杨义先,钮心忻.安全通论(5)--攻防篇之“非盲对抗”之“劝酒令”[J]. 微型机与应用,2016,35(19):2-6.
[6] COVER T M, THOMAS J A.信息论基础[M]. 阮吉寿,张华,译.北京:机械工业出版社出版,2007.