||
安全通论(14)
----病毒式恶意代码的宏观行为分析
杨义先,钮心忻
北京邮电大学信息安全中心
摘要:在网络空间安全领域,黑客四处“点火”;红客则疲于奔命,忙于“救火”。由于始终被动,所以,红客笃信:远水救不了近火。但是,事实却是:欲救某些“五味真火”,还真得依靠观音菩萨,从遥远的西天带来玉净瓶,用杨柳枝泼洒仙脂露。本文便从遥远的生物医学领域,带来传染病动力学之“远水”,试图来救病毒式恶意代码这盆“近火”。将传染性疾病防控的一些经典思想和理念,引入网络空间安全保障体系建设之中。
(一)前言
人类一直与各类疾病(特别是瘟疫等传染病)作斗争;而且,至少在三百多年前,徐光启就将数学手段引入了生物统计。如今,动力学理论,这一数学分支,已被广泛应用于国内外生物医学领域,并取得了若干重大成果,比如,催生了多位诺贝尔奖获得者。
从外观和形态上来看,网络空间安全与人体疾病很相似,甚至安全界的不少名词(比如,病毒、免疫力、传染等)都是从医学中借用过来的。但是,也许是因为网络安全专家太忙,也许是因为数学门槛太高,也许是因为历史还不够久远等,总之,生物医学家和安全专家至今仍然是“各唱各的调,各吹各的号”。如果没有人牵线,也许他们永远都会“比邻若天涯”。本文不才,愿做无偿媒婆,将生物医学(特别是生物数学)中的若干经典成果和思路,介绍给网络安全专家。若能促成医生和安全专家的此桩姻缘,也不枉丘比特借箭一回;若能吸引一批生物数学家进入网络安全领域,那就更好了。
恶意代码是最头痛的安全问题之一,它甚至是整个软件安全的核心。虽然单独对付某台设备上的指定恶意代码并不难,但是,网上各种各样的海量恶意代码,却像癌细胞一样,危害着安全,而且,既杀之不绝,又严重消耗正常体能。过去,安全专家在对付恶意代码的微观手段方面,做了大量卓有成效的工作;可是,在宏观手段方面,几乎无所作为,这正是我们要向医生学习的地方。
本文以安全专家为读者对象,为保持完整性,先简要归纳恶意代码的基础知识。
狭义上说,恶意代码是指故意编制或设置的、会产生威胁或潜在威胁的计算机代码(软件)。最常见的恶意代码有计算机病毒、特洛伊木马、计算机蠕虫、后门、逻辑炸弹等。当然,广义上说,恶意代码还指那些没有作用却会带来危险的代码,比如,流氓软件和广告推送等。本文重点考虑狭义恶意代码。
恶意代码的微观破坏行为,表现在许多不同的方面,比如,口令破解、嗅探器、键盘输入记录,远程特洛伊和间谍软件等等。黑客利用恶意代码便可能获取口令,侦察网络通信,记录私人通信,暗地接收和传递远程主机的非授权命令,在防火墙上打开漏洞等。
恶意代码的入侵手段主要有三类:利用软件漏洞、利用用户的误操作、前两者的混合。有些恶意代码是自启动的蠕虫和嵌入脚本,本身就是软件,它们对人的活动没有要求。而像特洛伊木马、电子邮件蠕虫等恶意代码,则是利用受害者的心理,操纵他们执行不安全的代码。还有就是哄骗用户关闭保护措施来安装恶意代码等。
恶意代码的主要传播方式是病毒式传播,即,某台设备被恶意代码击中后,该受害设备又将再去危害其它设备。当然,也并非所有恶意代码都采取这种病毒式传播。为严谨起见,本文所说的恶意代码,都已经暗含病毒式传播的假设。
恶意代码也像病菌一样,千变万化不断升级,其演化趋势表现在:种类更模糊、混合传播模式越来越常见、多平台更加多样化、欺诈手段(包括销售技术等)更普遍、更加智能化、同时攻击服务器和客户端、对操作系统(特别是Windows)的杀伤力更大、类型变化越来越复杂等。不过,幸好本文只关注宏观行为,所以,恶意代码的微观变种可以忽略不计。
特别提醒:本文的思路、方法和结果,对以病毒式恶意代码类似的所有破坏行为都是有效的,只是为了不分散读者的注意力,我们才限用了“病毒式恶意代码”这个名词。比如,谣言的传播就具有典型的病毒特性,谣言的上当者,通常又会有意或无意地去传播谣言,为害别人。
(二)恶意代码的动力学态势分析
以下所有分析,都基于这样一个已知的数学事实:一切随空间和时间变化的量的数学,都属于偏微分方程领域!
按照安全行业的习惯,下面我们不加区别地使用设备、用户、人、终端等名词;同时中毒、感染、传染、受害、伤害、被攻击、被击中等词也都互相通用。
2.1 死亡型恶意代码的态势
考虑这样一类恶意代码:它给你造成不可挽回的损失(比如,获取了你的银行卡密码并取走你的钱等)后,再以你的身份去诱骗你的亲朋好友;如此不断为害下去。由于它们造成的损失不可弥补,所以,称其为“死亡型”,相当于某人染SARS病毒死亡后,会继续传染身边人员一样。(有些“不转死全家”的谣言,也可看成这样的死亡型恶意代码)
设网络的用户数为N,在t时刻,已经受害的用户数为T(t),暂未受害的用户数为S(t),那么,有恒等式S(t)+T(t)=N。再令f(S,T)为在“已有T人受害,S人暂未受害”条件下,受害事件发生率,于是,有下面两个微分方程
dT(t)/dt=f(S,T) 和 dS(t)/dt=-f(S,T)
在生物医学的流行病学中,有一个可借鉴的概念,传染力λ(T),它表示在已有T台设备中毒的情况下,暂未中毒的设备与中毒者相连接的概率,所以,f(S,T)=λ(T)S。还有另一个概念,即,传染率β,它表示一个未中毒设备在连接到中毒者后,被传染的概率;所以,λ(T)=βT。于是,f(S,T)=λ(T)S=βTS,即,它是一个双线性函数。此种近似,已经过医学中的长期实际数据检验,准确度足够高;而对比病毒式恶意代码和人类疾病的传播,它们的传染特性并没有明显差别,所以,我们得到如下微分方程
dT(t)/dt=βT(N-T)
它的解析解为T(t)=NT(0)/{T(0)-[T(0)-N]e-βNt},这就是t时刻的受害者人数,其中T(0)表示初始受害人数。注意到,只要T(0)>0(即,刚开始时至少有一个受害者),那么,当t→∞时,就一定有T(t)→N(全体用户数),所以,面对死亡型恶意代码,如果大家都旁观,不采取任何防护措施的话,最终将全体死亡,即全体受害。虽然现实中,大家不可能都只旁观,但是,这个理论结果也警告我们:网络安全,人人有责。
一旦大家都重视安全,并采取了各种事前预防和事后抢救的措施后,将出现下面2.2节中的康复型恶意代码。
注:此节和下面的许多分析中,我们在建立模型时都采用了诸如传染率、发生率等线性简单模型。有些读者可能会觉得这不够精确,对此我们解释如下:1)由于在现实中,根据真实的原始统计数据,人类本来就只习惯于给出这些简单且形象的各种比率,所以,在建立微分方程模型时,也只好利用这些比率(比如,此处就取f(S,T)=λ(T)S=βTS),否则,就变成了“为数学而数学”的游戏了;2)线性(或双线性)微分方程组,相对来说,容易求出精确的解析解(其实有时也很难),并由此可以进行更深入的分析;3)已有大量医学数据,对此类模型的准确性进行了长期的正确性验证。
2.2 康复型恶意代码的态势
与死亡型不同,在康复型模型中,受害用户在经过救治后,又可以康复成为暂未受害的用户,当然,该用户也可能再次受害。其实,绝大部分恶意代码,特别是诱骗类恶意代码,都是这种康复型的,比如,当你的电脑中毒崩溃后,你至少可以重新格式化嘛,当然,随后又可能再次崩溃,实际上每个人的电脑可能都不止崩溃过一次。(绝大部分人对谣言的反应,也等同于这种康复型恶意代码,因为,辟谣后,大部分人都会再次被谣言欺骗)
此时,除了2.1节中的S、T、F(S,T)和N等概念外,再引入另一个概念,即g(T),它表示在T个受害者中,有g(T)个用户被康复成正常健康用户,从而,变成暂未受害用户。若用γ表示康复率(生物医学经验告诉我们:每个受害者,在下一小段时间δt内,被康复的概率为γδt+0(δt)2。并且受害者被康复的时间,服从均值为1/γ的指数分布。)那么,g(T)=γT。所以,有微分方程组:
dT(t)/dt=f(S,T)-g(T)=βTS-γT 和 dS(t)/dt=-f(S,T)+g(T)=-βTS+γT
若令u(t)=S(t)/N, v(t)=T(t)/N, t’=γt和R0=βN/γ,那么,上面的两个微分方程就变为
du/dt=-(R0u-1)v和dv/dt=(R0u-1)v,
其定义域为D={0≤u≤1,0≤v≤1,u+v=1}。
注意,这里的R0是一个很重要的参数,其含义可以进一步解释为:R0=(βN)/γ,它的分子部分表示一个中毒设备与N个健康设备之间的有效接触率(若无接触,当然就不可能被感染),分母部分1/γ是受害者的平均染病周期,所以,R0是一个受害者在一个染病周期内,平均传染的设备个数。根据R0的取值情况,可以得到如下重要结论,
定理1:针对康复型恶意代码,如果R0<1,那么,康复型恶意代码就会最终被消灭,即,无人受害;反过来,如果R0>1,那么,康复型恶意代码就会在一定范围内长期为害,具体地说,受害者人数将长期徘徊在N(1-1/R0)附近。
证明:由于dv/dt=(R0u-1)v<(R0-1)v,所以,如果R0<1,那么就有dv/dt<0,即,受害者人数不断地严格减少,最终当然趋于零,从而,该恶意代码被消灭。
另一方面,如果R0>1,则由于u+v=1,所以,微分方程dv/dt=(R0u-1)v就可变为dv/dt=(R0(1-v)-1)v,其解析解为v(t)=Kv0/{v0-[v0-K]e-rt},其中r=R0-1,K=1-1/R0和v0=T(0)/N(初始被感染的用户比率)。于是,当t→∞时,就有v(t)→1-1/R0,或等价地说,受害者人数T(t)=Nv(t)→N(1-1/R0)。证毕。
上面定理1还隐含了另一个重要事实,由于最终受害者人数趋于N(1-1/R0)=N-N/R0=N-γ/β=N-(康复率/传染率),即,如果康复型恶意代码不能被消灭,那么,最终受害者人数将基本上由比率“康复率/传染率”决定,或者说:如果传染率远远大于康复率,那么,基本上会全体受害;反之,受害者人数将维持在一个较小的数目之内。换句话说,对待康复型恶意代码,只要做好安全维护工作,那么,整体局面是可控的。
上面的定理1还告诉我们,只要控制住R0使得R0<1,那么,就可成功地控制该恶意代码的爆发。由于R0=(βN)/γ,所以,我们可以增大康复率γ(尽快恢复中毒终端),减少传染率β(增加安全防护能力),减少初始人群数N(隔离受害终端)等手段来控制R0。
2.3免疫型恶意代码的态势
有些恶意代码,当用户被为害后,只要康复了,那么,该用户就不会再被为害了,这类恶意代码就称为免疫型的。比如,利用系统漏洞的那些恶意代码,当受害用户,用现成的补丁程序,把相关漏洞补好后,该用户就不会再被伤害了,准确地说,不会再被同一个恶意代码伤害了。(人们对同一谣言,肯定会有免疫性的,只要辟谣者有相当的信任度。)
设S、T、γ、β和N等概念与2.2节相同,又记R(t)为t时刻被康复(当然也就具有了免疫力)的用户数。于是,在任何一个时刻,都恒有N=S(t)+T(t)+R(t)。为了使相关公式看起来简单一些(实质上是等价的),分别用S(t)/N、T(t)/N和R(t)/N去代替S(t)、T(t)和R(t)并且仍然采用原来的记号来表示S(t)、T(t)和R(t),此时便有S(t)+T(t)+R(t)=1,或者说,S(t)、T(t)和R(t)分别代表暂未受害、正受害和受害康复且具有免疫力的用户,各占总用户数的比例。于是,仿照2.2节的分析,我们有如下三个微分方程:
dS(t)/dt=-βTS(这是因为βT是传染力,所以,被染人数的变化率就为βTS)
dT(t)/dt=βTS-γT(这是因为γT和βTS-γT分别为康复和受害数的变化率)
dR(t)/dt=γT(康复人数变化率)
假定刚开始时,受害用户数为T(0)=T0>0;暂未受害的用户数为S(0)=S0>0;还没有用户具有免疫力,即R(0)=0。
从第一个微分方程,有dS(t)/dt=-βTS<0,所以,暂未受害的用户数始终随着时间t的增加而减少,并且以0为下限,故极限limt→∞S(t)=S∞肯定存在(实际上,已经证明:S∞=-ρLambert W{-[exp(-(T0+S0-ρlnS0)/ρ)]/ρ})。
从第二个微分方程dT(t)/dt=βTS-γT=T(βS-γ),可以看出T(t)的增减性依赖于t时刻S(t)的大小。如果S0<γ/β,那么,βS-γ<βS0-γ<0,于是,dT(t)/dt<0,即,当时间t→∞时,有T0>T(t)→0,此时,恶意代码将被最终消灭。但是,如果S0>γ/β=ρ,那么,T(t)在某个时段内将会增加,从而导致恶意代码的危害呈爆发现象,但是,随着时间的进一步推移和S(t)的递减,T(t)达到最大值后,又开始递减,并最终趋于0。由此可知,免疫型恶意代码一定存在着临界现象,即,如果S0>ρ,则受害用户数爆增;否则,如果S0<ρ,则恶意代码处于可控状态;但是,无论是在哪种情况下,免疫型恶意代码将最终被消灭。提醒:读者别误会,此处意指的是,给定的某种免疫型恶意代码会最终消灭,但是,一旦产生新的免疫型恶意代码,那么,类似的上述动力学过程又得重新演绎一次。
定义另一个参数F0=βS0/γ,它刻画了一个受害者在平均染毒周期(1/γ)内,所传染的人数,它也给出了该种恶意代码是否爆发的阈值。即,当F0<1时,此恶意代码不会爆发,并随着时间的推移,会自动消灭;当F0>1时,该恶意代码会在一定的时段内爆发,受害者人数达到一个最大值后,才开始递减,并最终消灭。F0<1说明一个受害者在平均传染周期内,传染人数的个数小于1,该恶意代码当然会自行消灭;F0>1说明一个受害者在平均传染周期内传染的人数大于1,故该恶意代码会在一定程度上爆发流行。归纳起来,我们有:
定理2:针对免疫型恶意代码,当F0<1时,此恶意代码不会爆发,并随着时间的推移,会自动消灭;当F0>1时,该恶意代码会在一定的时段内爆发,受害者人数达到一个最大值Tmax后,才开始递减,并最终消灭。更深入地,Tmax在总人数中所占的比例为1-ρ+ρln(ρ/S0),这里S0表示刚开始时,暂未受害的人数比例。随着时间推移至无穷大,暂未受害和已有免疫力的人数的比例S∞和R∞分别为:
S∞=-ρLambertW{-[exp(-(T0+S0-ρlnS0)/ρ)]/ρ} 和
R∞=N+ρLambertW{-[exp(-(T0+S0-ρlnS0)/ρ)]/ρ}
这里各相关参数的含义,见本小节中上面的描述。LambertW(.)是一种特殊的数学函数,见文献[15]中的第12章的12.6节。
本定理的前半部分,很形象,也是对安全界更有用的部分,而且已经在前面描述中给出了证明。本定理的后半部分其实也是生物医学中的已知结论,为避免陷入不必要的数学细节,我们在此略去。有特殊兴趣的读者可读文献[15]第4章的4.3节。
2.4考虑开机和关机对免疫型恶意代码的影响
上面的所有分析,都假定活跃用户数固定为N,但是,在实际情况下,当然有例外。比如,某用户主动关机后,任何恶意代码对他都不构成威胁,此时活跃用户就减少一个;当某用户终端中毒后被宕机,这里活跃用户数也减少一个;当新用户开机(或进入网络)后,他又可能成为恶意代码的攻击对象,这时,活跃用户数又增加一个等。
设μ是新用户开机率,g是用户主动关机率,c为被恶意代码攻击后的宕机概率,为简单计,都假定这些参数为常数。其它参数同上。于是,
在某个时刻,暂未受害的人数为S(t),那么,下一时刻,S(t)会因为用户主动关机而减少gS(t);会因为恶意代码的攻击而减少βST;会因为新用户开机,而增加μN(t)等。
在某个时刻,受害终端数为T(t),那么,下一时刻,T(t)会因为恶意代码的攻击而增加βST;会因为宕机和主动关机而减少(g+c)T(t);会因为康复而减少γT(t)。
在某个时刻,已有免疫力的用户数为R(t),那么,下一时刻,R(t)会因为康复而增加γT(t);会因为主动关机而减少gR(t)。
因此,下面可以考虑两种特殊情况。
情况1:假如没有宕机(即,c=0)并且主动关机率与新用户开机率相同(即,μ=g),那么,各类终端数的变化情况,便可以用如下三个微分方程来描述:
dS(t)/dt=μN(t)-βT(t)S(t)-μS(t)
dT(t)/dt=βT(t)S(t)-γT(t)-μT(t)
dR(t)/dt=γT(t)-μR(t)
对这三个微分方程的解进行分析后(为突出重点,略去详细的数学过程。有特殊兴趣的读者,可以从生物数学的教材中找到现成答案,比如,文献[15]的第4.4节),我们可以仿照定理2,得到如下的定理3.1。
定理3.1:记P0=β/(γ+μ),那么,在情况1之下,当P0≤1时,该免疫型恶意代码一定会随着时间的推移,最终自动消灭;当P0≥1时,该免疫型恶意代码一定会随着时间的推移,最终在S=1/P0、T=μ(P0-1)/β、R=1-1/P0-μ(P0-1)/β点处达到全局渐近稳定,即,最终健康终端的比例为S=1/P0,受害终端的比例为T=μ(P0-1)/β,获得免疫力的终端比例为R=1-1/P0-μ(P0-1)/β。
情况2:有宕机发生(即c>0),新用户开机率大于主动关机率(即μ>g)那么,各类人数的变化情况,便可以用如下三个微分方程来描述:
dS(t)/dt=μN(t)-βT(t)S(t)-gS(t)
dT(t)/dt=βT(t)S(t)-γT(t)-cT(t)-gT(t)
dR(t)/dt=γT(t)-gR(t)
这组微分方程的求解就不容易了!为了简化,我们把每台终端的平均开机率μN(t)用一个常数B来代替,也初略地称其为开机率。于是,上面的三个微分方程就简化为:
dS(t)/dt=B-βT(t)S(t)-gS(t)
dT(t)/dt=βT(t)S(t)-γT(t)-cT(t)-gT(t)
dR(t)/dt=γT(t)-gR(t)
由于N(t)=S(t)+T(t)+R(t),所以,将这三个方程相加,又得到第四个方程:
dN(t)=B-cT(t)-gN(t)
与前面类似,分析这些微分方程的解后,可得到如下形象结果:
定理3.2:记Q0=βB/[g(γ+c+g)],那么,在情况2之下,当Q0<1时,该免疫型恶意代码一定会随着时间的推移,最终自动消灭;当Q0>1时,该免疫型恶意代码一定会随着时间的推移,最终在S*=BgQ0、T*=(B-gS*)/(βS*)、N*=(B-cT*)/g、R*=N*-S*-T*点处达到渐近稳定,即,最终的活跃用户数为N*,健康终端的比例为S*/N*,受害终端的比例为T*/N*,获得免疫力的终端比例为R*=1-S*/N*-T*/N*。
2.5预防措施的效果分析
对付恶意代码其实都有许多预防措施的,但是,由于用户懒惰或不懂技术,总会有一些用户没采取预防措施。比如,针对利用某已知漏洞的恶意代码,厂商一般都会在病毒未大规模爆发前,发布相关的补丁程序,用户只要及时安装了这些补丁,那么,他的终端就已具备了免疫力;但事实是:一定有许多用户没打补丁。
我们虽然不能强求全体用户都采取预防措施,但是,如果有比例为p的用户采取了预防措施(比例为q的用户偷了懒,此处,p+q=1),那么,我们发现:只要当p足够大时,仍然能够消灭该恶意代码。
为简单计,我们在2.4节的情况1基础上,继续考虑问题。暂未受害的人中,有比例为p的终端直接获得了免疫力,于是,2.4节的那三个微分方程就变成了:
dS(t)/dt=μqN(t)-βT(t)S(t)-μS(t)
dT(t)/dt=βT(t)S(t)-γT(t)-μT(t)
dR(t)/dt=μpN(t)+γT(t)-μR(t)
分析该方程组后(细节略去),我们有如下结论:
定理4:在2.4节的情况1中,如果在暂未受害的终端中,采取了预防措施终端数的比例p≥1-1/P0,这里P0=β/(γ+μ),那么,该免疫型恶意代码一定会随着时间的推移,最终自动消灭。
此定理告诉我们:对付恶意代码,虽然不能指望全体人员都及时采取预防措施,但是,只要有足够多的人(占总人数比例超过P0=β/(γ+μ))重视安全,并及时采取了预防措施,那么,该恶意代码就一定是可控的,甚至会最终被消灭。
2.6有潜伏期的恶意代码态势
许多恶意代码(比如,逻辑炸弹),在潜入受害终端后,并不立即作恶,而是等待时机成熟后再行动。假设仍然在2.4节的基础上来考虑问题,并且,暂未受害的终端,在变成受害终端前,先要经过一个潜伏阶段。用E(t)表示t时刻已经中毒,但仍然处于潜伏期的终端数;用η表示潜伏终端变成受害终端的概率,于是,仿照2.4节,我们就有如下四个微分方程:
dS(t)/dt=μN(t)-βT(t)S(t)-μS(t)
dE(t)/dt=βT(t)S(t)-μE(t)-ηE(t)
dT(t)/dt=ηE(t)-γT(t)-μT(t)
dR(t)/dt=γT(t)-μR(t)
此微分方程组的分析方法与前面类似,我们就不再重复了。可见,用生物数学的成果去研究网络安全,其实是有很多事情能做的。
(三)结束语
由于学科越分越细,肯定会出现这样的情况,即,不同学科的某些问题,其本质是一样的,于是,只要在一个学科中解决了相关问题,那么,另一个学科的同类问题也就迎刃而解了。
但事实却是:不同学科的人们,越来越封闭于自身学科,从而,做了许多不必要的重复性工作。在文献[11]中,我们已经发现,甚至像著名的《信息论》和《博弈论》,都可以融合成一套理论;此文又发现,原来传染病学中的许多东西也是可以用来研究计算机恶意代码的。我们相信生物学中一定还有其它成果和思路,可以借用来研究网络空间安全问题。但愿有更多的人,前来挖这个金矿。
在对付恶意代码方面,过去安全专家主要聚焦于如何从微观上战胜它,这就像医生研究某种具体的药物来医治传染病一样。但是,经过几百年来的实践,医生们已经发现:针对传染病,药物治疗重要,但是,更重要的是,要根据传染病的传播特征,从宏观上控制传染病。比如,若无隔离,那么,药物再好,也不能控制SARS的爆发。
因此,现在已经到了安全专家该向医生学习的时候了,我们必须刷新自己的观念。记住:从微观上对付恶意代码个案(比如,研发漏洞补丁)虽然重要,但是,从宏观上控制恶意代码流行爆发更重要,只有搞清楚恶意代码扩散的动力学特性后,才能够稳准狠地对付流行趋势。本文在这方面只是一个开始,前途很光明,任务也很艰巨。
希望安全专家们前往生物领域,挖掘医生们防流感的更多法宝;更希望有医生(特别是生物数学家)前来增援网络空间安全领域的相关研究。
最后,再重复说明一下:恶意代码并非都以“病毒式”传播,比如,有些恶意代码只针对特定目标,它肯定以隐藏为主,不会再传播出去攻击别人。所以,本文的宏观行为对非病毒式恶意代码是无效的。
(四)参考文献
[1]杨义先,钮心忻,安全通论(1)之“经络篇”,见杨义先的科学网实名博客(http://blog.sciencenet.cn/blog-453322-944217.html)
[2]杨义先,钮心忻,安全通论(2):攻防篇之“盲对抗”,见杨义先的科学网实名博客,(http://blog.sciencenet.cn/blog-453322-947304.html )
[3]杨义先,钮心忻,安全通论(3):攻防篇之“非盲对抗”之“石头剪刀布游戏”,见杨义先的科学网实名博客,(http://blog.sciencenet.cn/blog-453322-948089.html)
[4]杨义先,钮心忻,安全通论(4):攻防篇之“非盲对抗”之“童趣游戏”,见杨义先的科学网实名博客,(http://blog.sciencenet.cn/blog-453322-949155.html)
[5] 杨义先,钮心忻,安全通论(5):攻防篇之“非盲对抗”收官作及“劝酒令”,见杨义先的科学网实名博客,(http://blog.sciencenet.cn/blog-453322-950146.html)
[6] 杨义先,钮心忻,安全通论(6):攻防篇之“多人盲对抗”,见杨义先的科学网实名博客,http://blog.sciencenet.cn/blog-453322-954445.html
[7]杨义先,钮心忻,安全通论(7):黑客篇之“战术研究”,见杨义先的科学网实名博客,http://blog.sciencenet.cn/blog-453322-956051.html
[8] 杨义先,钮心忻,安全通论(8):黑客篇之“战略研究”,见杨义先的科学网实名博客,http://blog.sciencenet.cn/blog-453322-958609.html
[9] 杨义先,钮心忻,安全通论(9):红客篇,见杨义先的科学网实名博客,http://blog.sciencenet.cn/blog-453322-960372.html
[10] 杨义先,钮心忻,安全通论(10):攻防一体的输赢次数极限,见杨义先的科学网实名博客,http://blog.sciencenet.cn/blog-453322-984644.html
[11]杨义先,钮心忻,安全通论(11):信息论、博弈论与安全通论的融合,见杨义先的科学网实名博客,http://blog.sciencenet.cn/blog-453322-989745.html
[12]杨义先,钮心忻,安全通论(12):对话的数学理论,见杨义先的科学网实名博客,http://blog.sciencenet.cn/blog-453322-993540.html
[13]杨义先,钮心忻,安全通论(13):沙盘演练的最佳攻防对策计算,见杨义先的科学网实名博客,http://blog.sciencenet.cn/blog-453322-1000428.html
[14]杨义先,刷新你的安全观念,见杨义先的科学网实名博客,http://blog.sciencenet.cn/blog-453322-983276.html
[15]肖燕妮,周义仓,唐三一,生物数学原理,西安交通大学出版社,2012年2月第1版,2014年1月第2次印刷,西安。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 19:25
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社