基于隐马尔可夫模型的网络安全态势预测方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于隐马尔可夫模型的网络安全态势预测方法相关的知识,希望对你有一定的参考价值。

参考技术A

论文:文志诚,陈志刚.基于隐马尔可夫模型的网络安全态势预测方法[J].中南大学学报(自然科学版),2015,46(10):3689-3695.
摘要
为了给网络管理员制定决策和防御措施提供可靠的依据,通过考察网络安全态势变化特点,提出构建隐马 尔可夫预测模型。利用时间序列分析方法刻画不同时刻安全态势的前后依赖关系,当安全态势处于亚状态或偏离 正常状态时,采用安全态势预测机制,分析其变化规律,预测系统的安全态势变化趋势。最后利用仿真数据,对 所提出的网络安全态势预测算法进行验证。访真结果验证了该方法的正确性。

隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,其难点是从可观察的参数中确定该过程的隐含参数。隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。如果要利用隐马尔可夫模型,模型的状态集合和观测集合应该事先给出。

举个例子:有个孩子叫小明,小明每天早起上学晚上放学。假设小明在学校里的状态有三种,分别是丢钱了,捡钱了,和没丢没捡钱,我们记作q0,q1,q2。

那么对于如何确定他的丢钱状态?如果小明丢钱了,那他今天应该心情不好,如果捡钱了,他回来肯定心情好,如果没丢没捡,那他肯定心情平淡。我们将他的心情状态记作v0,v1v2。我们这里观测了小明一周的心情状态,心情状态序列是v0,v0,v1,v1,v2,v0,v1。那么小明这一周的丢捡钱状态是什么呢?这里引入隐马尔科夫模型。

隐马尔科夫模型的形式定义如下:

一个HMM模型可以由状态转移矩阵A、观测概率矩阵B、以及初始状态概率π确定,因此一个HMM模型可以表示为λ(A,B,π)。

利用隐马尔可夫模型时,通常涉及三个问题,分别是:

后面的计算啥的和马尔科夫差不多我就不写了。。。。。。

2.1网络安全态势

在网络态势方面,国内外相关研究多见于军事战 场的态势获取,网络安全领域的态势获取研究尚处于 起步阶段,还未有普遍认可的解决方法。张海霞等[9] 提出了一种计算综合威胁值的网络安全分级量化方 法。该方法生成的态势值满足越危险的网络实体,威 胁值越高。本文定义网络安全态势由网络基础运行性 (runnability)、网络脆弱性(vulnerability)和网络威胁性 (threat)三维组成,从 3 个不同的维度(或称作分量)以 直观的形式向用户展示整个网络当前安全态势 SA=( runnability, vulnerability, threat)。每个维度可通过 网络安全态势感知,从网络上各运行组件经信息融合 而得到量化分级。为了方便计算实验与降低复杂度, 本文中,安全态势每个维度取“高、中、差”或“1,2, 3”共 3 个等级取值。本文主要进行网络安全态势预测

2.2构建预测模型
隐马尔可夫模型易解决一类对于给定的观测符号序列,预测新的观测符号序列出现概率的基本问题。 隐马尔可夫模型是一个关于可观测变量O与隐藏变量 S 之间关系的随机过程,与安全态势系统的内部状态 (隐状态)及外部状态(可观测状态)相比,具有很大的相 似性,因此,利用隐马尔可夫模型能很好地分析网络 安全态势问题。本文利用隐马尔可夫的时间序列分析 方法刻画不同时刻安全态势的前后依赖关系。

已知 T 时刻网络安全态势,预测 T+1,T+2,⋯, T+n 时刻可能的网络安全态势。以网络安全态势的网络基础运行性(runnability)、网络脆弱性(vulnerability) 和网络威胁性(threat)三维组成隐马尔可夫模型的外在表现特征,即可观测状态或外部状态,它们分别具有 “高、中、差” 或“1, 2,3”取值,则安全态势共有 33=27 种外部组合状态。模型的内部状态(隐状态)为安全态 势 SA的“高、中高、中、中差、差”取值。注意:在本 文中外部特征的 3 个维度,每个维度三等取值,而内部 状态 SA为五等取值。模型示例如图 1 所示。

网络安全态势SA一般以某个概率aij在“高、中高、 中、中差、差”这 5 个状态之间相互转换,从一个状态 向另一个状态迁移,这些状态称为内部状态或隐状态, 外界无法监测到。然而,可以通过监测工具监测到安 全态势外在的表现特征,如网络基础运行性 (runnability)、网络脆弱性(vulnerability)和网络威胁性 (threat)三维。监测到的这些参数值组合一个整体可以 认为是一个可观测状态(外部状态,此观测状态由 L 个 分量构成,是 1 个向量)。图 1 中,设状态 1 为安全态 势“高”状态,状态 5 为安全态势“差”状态。在实际应 用中,根据具体情况可自行设定,本文取安全态势每 维外在表现特征 L=3,则有 27 种安全态势可观测外部 状态,而其内部状态(隐状态)N 共为 5 种。

定义 1: 设网络安全态势 SA内部隐状态可表示为S1,S2,⋯,S5,则网络安全态势将在这 5 个隐状态之 间以某个概率 aij自由转移,其中 0≤aij≤1。
定义 2: 网络安全态势 SA外在表现特征可用 L 个 随机变量 xi(1≤i≤L, 本处 L=3)表示,令 v=(x1, x2,⋯, xL)构成 1 个 L 维随机变量 v;在时刻 I,1 次具体观测 oi的观测值表示为 vi,则经过 T 个时刻对 v 观测得到 1 个安全态势状态观测序列 O=o1,o2,⋯,oT。

本文基本思路是:建立相应的隐马尔可夫模型, 收集内、外部状态总数训练隐马尔可夫模型;当网络安全态势异常时,通过监测器收集网络外在表现特征数据,利用已训练好 HMM 的模型对网络安全态势进行预测,为管理员提供决策服务。

基本步骤如下:首先,按引理 1 赋 给隐马尔可夫模型 λ=(π,A,B)这 3 个参数的先验值; 其次,按照一定规则随机采集样本训练 HMM 模型直 至收敛,获得 3 个参数的近似值;最后,由一组网络 安全态势样本观测序列预测下一阶段态势。

本实验采集一组 10 个观测样本数据为:

<高、高、 高>,<高、高、高>,<高、中、高>,
<高、中、中>, <中、中、中>,<中、中、中>,
<中、中、高>,<中、 高、高>,<高、高、高>和<高、高、高>。

输入到隐马尔可夫模型中,经解码为安全态势隐状态: “高、高、 中高、中高、中、中、中高、中高、高、高”。最后 1 个隐状态 qT=“高”。由于 a11=0.682 6(上一次为高,下一次为高的状态转移概率),在所有的隐状态 转移概率中为最高,所以,在 T+1 时刻的安全态势 SA 为 qT+1=“高”。网络安全态势预测对比图如图 4 所示, 其中,纵轴表示安全态势等级,“5”表示“高”,“0”表 示“低”;横轴表示时间,在采样序号 10 时,安全态势 为高,经预测下一个时刻 11 时,安全态势应该为高, 可信度达 68.26%。通过本实验,依据训练好的隐马尔 可夫预测模式可方便地预测下一时刻的网络安全态势 发展趋势。从图 4 可明显看出本文的 HMM 方法可信 度比贝叶斯预测方法的高。

用隐马尔可夫模型做基因预测

什么是隐马尔可夫模型

隐马尔可夫模型(Hidden Markov Model,HMM) 是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别,特别是我们今天要讲的基因预测。是在被建模的系统被认为是一个马尔可夫过程【一段组装好的序列】与未观测到的(隐藏的)的状态【哪些是编码区哪些不是】的统计马尔可夫模型。

下面用一个简单的例子来阐述:
假设我手里有两个颜色不同的骰子,一个是橘色(Coding,C)的另一个是蓝色(Noncoding,N)的。但是和平常的骰子不同的是,他们稳定下来只要有四种可能,也就是上下是固定的(你可以理解为他们只会平行旋转)。这样每个骰子出现ATCG的概率都是1/4.

 

技术图片
两条链,在一起

假设我们开始投骰子,我们先从两种颜色选一个,挑到每种骰子的概率都是1/2。然后我们掷骰子,我们得到ATCG中的一个。不停地重复以上过程,我们将会得到一串序列,每个字符都是ATCG中的一个。例如CGAAAAAATCG

这串序列就叫做可见状态链。但是在隐马尔可夫模型中,我们不仅仅有这么一串可见状态链,还有一串隐含状态链。在这个例子里,这串隐含状态链就是你用的骰子的序列。比如,隐含状态链有可能是:C C N N N N N N N C C C。

一般来说,HMM中说到的马尔可夫链其实是指隐含状态链,因为隐含状态(骰子)之间存在转换概率(transition probability)。在我们这个例子里,C的下一个状态是N。C,N的概率都是1/2。这样设定是为了最开始容易说清楚,但是我们其实是可以随意设定转换概率的。比如,我们可以这样定义,N后面不能接两个C,或C 的概率是0.1。这样就是一个新的HMM。

同样的,尽管可见状态之间没有转换概率,但是隐含状态和可见状态之间有一个概率叫做输出概率(emission probability)。就我们的例子来说,Coding(C)产生A的概率是1/4,Noncoding(N)产生A的概率是1/4,当然这些概率是我人为定义的,你可以定义为其它的值。

技术图片
隐含状态转换关系示意图

其实对于HMM来说,如果提前知道所有隐含状态之间的转换概率和所有隐含状态到所有可见状态之间的生成概率,做模拟是相当容易的。对,我们就捡容易的来。

用隐马尔可夫模型做基因预测

接下来,我们来做一个最简单的基因预测。给定一段基因组DNA序列,我们来预测其中的编码区。按照之前说道的隐马尔可夫模型,我们先要区分不能直接观测到的隐状态和可以直接观测的显符号。

技术图片
两条链在一起

在这个例子里,我们可以很容易看出,给定的基因组DNA序列是可以观测到的符号串。而编码/非编码是不能直接观测的隐状态。因此,我们可以画出状态转换图。首先我们有编码和非编码两个状态。因为基因组会同时包好编码和非编码区域,因此这两个状态之间可以转换。当然,每个状态也可以转换到自己,表示连续的编码或非编码区域。这样,我们就有了一个2*2的转移矩阵。

技术图片
转移概率

接下来,我们需要写生成概率。这个也很直观,无论是编码还是非编码状态,都有可能产生A,C,G,T四个碱基,因此我们由可以分别有两个矩阵。

技术图片
生成概率

现在,我们需要一个训练集(Training set),来把这三个矩阵的格子中填上具体的数值。具体来说,我们需要一个已经事先注释过得——也就是说正确标记了编码,非编码区域的DNA序列,通常这个序列要比较长,以便有充足的数据统计。

假定我们经过训练集的分析,分别填好了转移矩阵概率和生产概率矩阵。我们需要根据这些数据,来对一个未知的给定基因组序列反推出最可能的状态路径,也就是概率最大的那个状态路径。因此,我们还是和之前一样利用动态规划的算法,写出迭代公式,以及最后的终止点公式(Termination equation)

技术图片
训练的结果

从公式里面,我们看到,我们需要做大量测乘法。这个不仅比较慢,而且利用计算机操作时,随着连乘次数的增加,很容易数值过小而出现下溢(underflow)的问题。因此,我们通常会引入对数计算,从而将乘法转换成加法。具体来说,就是对转移和生成概率都预先取log10。

技术图片
取log

好,我们正式开始,假设我组装了一段序列(咦,怎么这么短?为了简单_):

CGAAAAAATCG

首先,让我们和之前一样,画出动态规划的迭代矩阵,其中包含两个状态,非编码状态N与编码状态C。接下来,我们需要设定边界条件(boundary condition),也就是这两个状态默认的分布比例。为了计算方便,我们分别设为0.8和0.2,经过log10转换后,分别为-0.097和-0.699.接下来我们逐步填格子

之后,我们碰到的第一个碱基C,由生成概率可知C在非编码状态下的log10生成的概率是-0.523,将之与-0.097相加,就可以得到-0.62。类似的,在编码状态下,这个数是-0.699+(-0.699)=-1.4。

接下来,我们要前进一个碱基,就需要进行状态转移,我们先来看第一种情形,也就是从非编码状态到非编码状态的转换。从转移举证可以看到,这里的转移概率是-0.097,再加上非编码状态下下一个碱基G的生产概率是-0.523.我们能就可以得到(-0.699)+(-0.097 )+(-0.523)=-1.24。类似的我们来计算,在这个位点从编码状态到非编码状态的转换,也就是-1.40+(-0.398)+(-0.523)=-2.32.这个值比从非编码状态转移得到的-1.24小,因此不会被保留。(舍去概率小的可能路径)

类似的,我们可以继续完成后续的迭代,把后面所有的格子都一个个填满。如下:

技术图片
移步换景

接下来,我们来做回溯。首先,选出最终概率值最大的那个值。以它为起点,依次来回溯,那么我们得到的回溯路径就可以得到最终的结果。在回溯路径中,如果下一步有两种可能,就走向概率大的那一家。

技术图片
回溯路径

把这一路上走过的NC标记下来,就可以得到最后的结果:

NNCCCCCCNNN

也就是说,我们把输入的序列CGAAAAAATCG分为了非编码区N和编码区C.

技术图片
结果

由于时间有限,我们的MSGP(The Most Simple Gene Predictor)非常简单。但它很容易被扩展,只需要你引入更多的状态,唯一的限制是,不同的状态对应的生成概率--在这里也就是碱基的组分--必须存在显性的差异。这样,我们才可能由你的观测序列反推出状态来。

比如说,Chris Burge 1996年提出基因预测算法GenScan针对外显子,内含子以及UTR等设定了独立的状态,从而大大提高了预测的准确度,是最成功的基因预测工具之一。但在基本原理上,它与我们刚刚讲的,最简单的MSFP并没有区别。类似的,我们还以可以用类似的方法去做5’剪切位点的预测等等。

事实上,通过将状态和可观测的符号分离开,隐马尔可夫模型为生物信息学的数据分析提供了一个有效的概率框架,是当代生物信息学最常用的算法模型之一。

本文基本上是对下面两篇博文的复述,对作者表示敬意和谢意。
另外,也参考了吴军老师的《数学之美》一书。

以上是关于基于隐马尔可夫模型的网络安全态势预测方法的主要内容,如果未能解决你的问题,请参考以下文章

用隐马尔可夫模型做基因预测

Python实现HMM(隐马尔可夫模型)

隐马尔可夫模型

隐马尔可夫模型

05 隐马尔可夫模型 - 案例一 - hmmlearn框架说明

隐马尔科夫模型(HMM)