安全通论(4)
——攻防篇之“非盲对抗”之“童趣游戏”
2016-10-28杨义先钮心忻
杨义先,钮心忻
(北京邮电大学 信息安全中心,北京 100076)
安全通论(4)
——攻防篇之“非盲对抗”之“童趣游戏”
杨义先,钮心忻
(北京邮电大学 信息安全中心,北京 100076)
编者按:作者将《安全通论》这个工具用于两个家喻户晓的童趣游戏:“猜正反面游戏”和“手心手背游戏”。当然,这些成果亦即成为了《安全通论》攻防篇之“非盲对抗”的重要内容。作者用游戏方式来表述,增加了研究工作的趣味性,寓庄于谐,按照作者的话讲,可以让读者体会一下“如何用大炮打蚊子”——正如作者所说,能打中蚊子的大炮,才是好大炮!
0 引言
以“网络空间安全”、“经济安全”、“领土安全”为代表的所有安全问题的核心,就是“对抗”!所以,多花一些篇幅,从不同角度,甚至利用古老游戏来全面深入地研究安全对抗问题是值得的。
“安全经络”[1]是《安全通论》的第一块基石。“安全对抗”是《安全通论》的第二块基石。为了打好这第二块基石,文献[2]中研究了两大安全对抗之一(盲对抗),并给出了黑客(红客)攻击(防守)能力的精确极限;并在文献[3]中,以著名的“石头剪刀布游戏”为对象,研究了另一种安全对抗(非盲对抗),给出了输赢极限和获胜技巧。
与“盲对抗”相比,虽然一般来说“非盲对抗”不那么血腥,但是,这绝不意味着“非盲对抗”就容易研究,相反,“非盲对抗”的胜败规则等更加千变万化。由于“非盲对抗”的外在表现形式千差万别,因此此文中利用信道容量法来研究两个家喻户晓的“非盲对抗”童趣游戏:“猜正反面游戏”和“手心手背游戏”。
1 “猜正反面游戏”的信道容量法
猜正反面游戏:“庄家”用手把一枚硬币掩在桌上,“玩家”来猜是“正面”还是“反面”。若猜中,则“玩家”赢;若猜错,则“庄家”赢。
这个游戏显然是一种“非盲对抗”。他们到底会谁输,谁赢呢?怎样才能赢呢?下面就用看似毫不相关的“信道容量法”来回答这些问题。
由概率论中的大数定律,频率趋于概率,所以,根据“庄家”和“玩家”的习惯,即过去的统计规律,就可以分别给出他们的概率分布:
用随机变量X代表“庄家”,当他把“正面”向上时,记为X=0;否则,记为X=1。所以,“庄家”的习惯就可以用X的概率分布来描述,比如,Pr(X=0)=p,Pr(X=1)=1
杨义先
教授,博士生导师,灾备技术国家工程实验室主任,北京邮电大学信息安全中心主任,教育部网络攻防重点实验室主任,《微型机与应用》编委。主要研究方向:网络空间安全、现代密码学和纠错编码等。
钮心忻
博士,教授,博士生导师。北京邮电大学学士和硕士学位,香港中文大学电子工程系博士学位。1997年起在北京邮电大学信息工程学院(现计算机学院)从事教学与科研工作。主要研究方向:网络与信息安全、信号与信息处理等。
-p(1
用随机变量Y代表“玩家”,当他猜“正面”时,记为Y=0;否则,记为Y=1。所以,“玩家”的习惯就可以用Y的概率分布来描述,比如,Pr(Y=0)=q,Pr(Y=1)=1-q(1 同样,根据过去“庄家”和“玩家”的记录,可以知道随机变量(X,Y)的联合概率分布,比如: Pr(X=0,Y=0)=a; Pr(X=0,Y=1)=b; Pr(X=1,Y=0)=c; Pr(X=1,Y=1)=d。 这里各个参数0 a+b+c+d=1; p=Pr(X=0)=Pr(X=0,Y=0)+Pr(X=0,Y=1)=a+b; q=Pr(Y=0)=Pr(X=0,Y=0)+Pr(X=1,Y=0)=a+c。 考虑信道(X,Y),即以X为输入,以Y为输出的信道,称之为“庄家信道”。 由于有事件等式:{玩家猜中}={X=0,Y=0}∪{X=1,Y=1}={1 bit信息被从“庄家信道”的发送端X成功地传输到了收信端Y},所以,“玩家”每赢一次,就相当于“庄家信道”成功地传输了1 bit信息。由此,再结合仙农信息论的著名“信道编码定理”[4-5]:如果“庄家信道”的容量为C,那么,对于任意传输率k/n≤C,都可以在译码错误概率任意小的情况下,通过某个n比特长的码字,成功地把k个比特传输到收信端。反过来,如果“庄家信道”能够用n长码字把Sbit信息无误差地传输到收端,那么,一定有S≤nC。把这段话翻译一下,便有如下定理: 定理1(庄家定理):设由随机变量(X,Y)组成的“庄家信道”的信道容量为C。那么:(1)如果玩家想胜k次,那么,一定有某种技巧(对应于仙农编码),使得他能够在k/C次游戏中以任意接近1的概率达到目的;(2)反过来,如果玩家在n次游戏中赢了S次,那么,一定有S≤nC。 由定理1可知,只要求出“庄家信道”的信道容量C,那么,玩家获胜的极限就确定了。下面来求“庄家信道”的转移概率矩阵A=[A(i,j)],i,j=0,1: A(0,0)=Pr(Y=0│X=0)=Pr(Y=0,X=0)/Pr(X=0)=a/p; A(0,1)=Pr(Y=1│X=0)=Pr(Y=1,X=0)/Pr(X=0)=b/p=1-a/p; A(1,0)=Pr(Y=0│X=1)=Pr(Y=0,X=1)/Pr(X=1)=c/(1-p)=(q-a)/(1-p); A(1,1)=Pr(Y=1│X=1)=Pr(Y=1,X=1)/Pr(X=1)=d/(1-p)=1-(q-a)/(1-p)。 于是,X与Y之间的互信息I(X,Y)如下: I(X,Y) =∑X∑Yp(X,Y)log(p(X,Y)/[p(X)p(Y)]) =alog[a/(pq)]+blog[b/[p(1-q)]] +clog[c/[(1-p)q]]+dlog[d/[(1-p)(1-q)]] =alog[a/(pq)]+(p-a)log[(p-a)/[p(1-q)]] +(q-a)log[(q-a)/[(1-p)q]]+(1+a-p-q)log[(1+a-p-q)/[(1-p)(1-q)]] 所以,“庄家信道”的信道容量C就等于Max[I(X,Y)](这里的最大值是对所有可能的二元随机变量X来取的),或者更简单地说: C=Max[I(X,Y)]0 设随机变量Z=(X+1)mod2。下面再考虑另一个信道(Y,Z),它以Y为输入,以Z为输出,称该信道为“玩家信道”。 由于有事件等式:{庄家赢}={Y=0,X=1}∪{Y=1,X=0}={Y=0,Z=0}∪{Y=1,Z=1}={1 bit信息被从“玩家信道”的发送端Y成功地传输到了收信端Z},因此,“庄家”每赢一次,就相当于“玩家信道”成功地传输了1 bit信息。由此,再结合仙农信息论的著名“信道编码定理”[4-5]可得:如果“玩家信道”的容量为D,那么,对于任意传输率k/n≤D,都可以在译码错误概率任意小的情况下,通过某个nbit长的码字,成功地把k个比特传输到收信端。反过来,如果“玩家信道”能够用n长码字把Sbit信息无误差地传输到收端,那么,一定有S≤nD。把这段话翻译一下,便有如下定理2。 定理2(玩家定理):设由随机变量(Y,Z)组成的“玩家信道”的信道容量为D。那么:(1)如果庄家想胜k次,那么,一定有某种技巧(对应于仙农编码),使得他能够在k/D次游戏中以任意接近1的概率达到目的;(2)反过来,如果庄家在n次游戏中赢了S次,那么,一定有S≤nD。 由定理2可知,只要求出“玩家信道”的信道容量D,那么,庄家获胜的极限就确定了。