ProDecoder

来源:互联网 发布:湖南工业大学网络认证 编辑:程序博客网 时间:2024/04/27 23:48

ProDecoder
ProDecoder的主要依据是,不同的n-gram在原始的报文数据中会呈现出不同的分布情况

主要分为四个步骤:

  • n-gram Generation:输入是同一协议(通过flow classification将原始网络流量分为不同协议的数据流)的packet traces,通过处理将每一个报文用n-grams序列表示,如图所示:

  • Keyword Identification:输入是上面得到的n-grams序列,输出是提取出的Keyword序列,这里的keyword都是由一个或者多个n-gram组成的。例如{MAI,AIL,IL_,L_F,_FR,FRO,ROM}可以组成关键词MAIL FROM。论文中使用的是基于LDA的关键词辨识方法。

    LDA介绍:
    LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到。文档到主题服从多项式分布,主题到词服从多项式分布。
    LDA是一种非监督机器学习技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。它采用了词袋(bag of words)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。但是词袋方法没有考虑词与词之间的顺序,这简化了问题的复杂性,同时也为模型的改进提供了契机。每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。

    LDA用在这里,是将每一个报文当成一个文档,将其中的keyword当做主题,将n-gram当成词,从而进行主题也就是keyword的提取。
    论文中m为一个报文,用一个由很多word组成的向量表示,且每一个word都是一个关键词的候选值,并且每一个word由一个n-gram集合构成。

    根据图中的定义,这里我们需要的得到的就是两个概率,一个是某一个关键词出现的边缘概率,一个是在某个关键词出现的条件下一个n-gram出现的条件概率(也就是公式(1)中的右边部分)。这是一个典型的贝叶斯推断问题,可以阅读相关文献考虑改进方法(eg.K个关键词以及N的选择问题),论文中使用的是MCMC(蒙特卡洛马尔科夫链)算法Gibbs sampling

    Gibbs sampling(吉布斯采样):首先,什么是sampling。sampling就是以一定的概率分布,看发生什么事件。举一个例子。甲只能E:吃饭、学习、打球,时间T:上午、下午、晚上,天气W:晴朗、刮风、下雨。现在要一个sample,这个sample可以是:打球+下午+晴朗…等等
    问题是我们不知道p(E,T,W),或者说,不知道三件事的联合分布。当然,如果知道的话,就没有必要用gibbs sampling了。但是,我们知道三件事的conditional distribution。也就是说,p(E|T,W),p(T|E,W),p(W|E,T)。现在要做的就是通过这三个已知的条件分布,再用gibbs sampling的方法,得到joint distribution。

  • Message Clustering:Keyword Identification结束后,每一个报文都会标记为K个keyword,并且每一个keyword都有一个对应的概率,将这K个keyword以及对应的概率作为K个特征。

其实论文PULSAR中使用的是直接把n-gram作为特征,这里加入了n-gram-->keyword-->message的关联。论文中认为直接使用n-gram做特征丢掉了n-gram-->keyword的关联特性,并且由于n-gram数量庞大,使用keyword作为特征降低了复杂度。

有了特征之后,就需要一个相似度度量,文中用Information Bottleneck作为metric,最终将报文聚成C类,每一类代表了一种格式。

  • Sequence Alignment:得到了报文聚类结果之后,为了推断得到报文的最终格式信息,论文提出需要进行序列比对,使用Needleman-Wunsch算法,选择match=2,mismatch=-2,gap=1,进行序列比对。

LDA学习过程简介:

LDA算法开始时,先随机地给θd和φt赋值(对所有的d和t)。然后上述过程不断重复,最终收敛到的结果就是LDA的输出。再详细说一下这个迭代的学习过程:    1.针对一个特定的文档ds中的第i单词wi,如果令该单词对应的topic为tj,可以把上述公式改写为:    pj(wi|ds)=p(wi|tj)*p(tj|ds)    2.现在我们可以枚举T中的topic,得到所有的pj(wi|ds),其中j取值1~k。然后可以根据这些概率值结果为ds中的第i个单词wi选择一个topic。最简单的想法是取令pj(wi|ds)最大的tj(注意,这个式子里只有j是变量),即argmax[j]pj(wi|ds)    3.然后,如果ds中的第i个单词wi在这里选择了一个与原先不同的topic,就会对θd和φt有影响了(根据前面提到过的这两个向量的计算公式可以很容易知道)。它们的影响又会反过来影响对上面提到的p(w|d)的计算。对D中所有的d中的所有w进行一次p(w|d)的计算并重新选择topic看作一次迭代。这样进行n次循环迭代之后,就会收敛到LDA所需要的结果了
0 0