1.本发明是属于区块链数据安全领域,提供了一种区块链日志异常检测与溯源系统。
背景技术:2.区块链技术是当今最为盛行的技术之一,已广泛用于金融、供应链等多个场景。区块链技术总体上可以分为公链、联盟链、私链三种实现形式。在区块链应用初期,由公链作为主要的表现形式,所有人都可以参与监督,上链信息的真实性最强。但是参与人数太多,导致运行效率低。在企业小规模使用时,又选择了私链这种方式实现区块链,私链参与的人数少,但是中心化程度过高,一般只能在单一中心的行业中运行。同时结合二者优点的联盟链成为了目前最多应用选择的区块链形式,他由几个主要参与部分共同监督,每个部分都可以单独控制自己想要授权参与区块链网络的个体,这些个体被登记后,作为这个部分的一份子参与监督。链上的信息对参与的所有个体都是透明的,并且数据的追加等操作都受到群体监督,具备可追溯性和不可篡改性。目前,国内外使用区块链上的应用目标主要包括保证可审计数据的不可篡改、可信完整和可追溯。
3.日志是最具有代表性的一种可审计数据,日志用来记录系统运行期间的各项参数等运行信息,系统开发人员定期或者在出现异常行为时,通过审计日志,开发人员能够及时发现问题并定位问题进行解决。但现有的日志系统存在一些问题。如果是人为的对系统进行攻击,有备而来的攻击者会篡改日志记录,导致开发人员无法通过虚假的日志记录定位错误,增加了开发人员修复系统和定位问题的难度。此外,广泛使用的日志异常检测方式,一般是开发人员根据他们的领域知识,结合日志异常级别、利用关键字搜索、正则表达式等方式来检测异常。然而,这种方式严重依赖于人工,随着系统越来越大,越来越复杂,人工检测更加困难。
4.日志是一种时序文本数据,由时间戳和文本消息共同组成,实时记录业务的运行状态,并且,日志具有一定的数量对应关系,比如打开了几个文件,就应该关闭几个文件,如果日志执行顺序出现问题或者对应关系不正确,都有可能导致异常。但目前日志的规范不统一,不同类型的设备打印出的日志格式不同,日志数据也呈现非结构化的特点,很难成批自动化的对日志进行处理,这些问题让日志分析变得十分困难。
5.基于固定深度树的日志解析器是将原始日志消息,经过领域知识设定的简单的正则表达式对其进行预处理,然后根据树内部节点中编码的特殊设计规则搜索日志组,如果找到相匹配的日志组,就能够将这个日志消息和存储在日志组中的日志事件匹配,如果没找到则新建日志组,最终将所有的日志都能够归属到日志组中,相当于分类日志,相同形式的日志提取共同模式成为模板。
技术实现要素:6.本发明公开了一种基于联盟链的区块链自动化日志异常检测与溯源的方案。在传
统的区块链应用中,并没有对联盟链上的数据进行自动化的异常检测,而仅仅依靠经验来手工检测。随着联盟链上的数据种类越来越多,越来越复杂,只依赖手工检测是不可行的。因此,需要研究合理的、高准确率的日志异常检测技术,增加系统的自动化能力。本发明的日志异常检测与溯源方案,解决了当前区块链架构中缺少的数据异常检测功能,能够安全地、高准确率地、可靠地实现数据检测。
7.本发明为解决上述技术问题,采用以下技术方案:
8.一种区块链日志异常检测与溯源系统,包括:
9.数据处理模块:对数据日志进行提取模板,日志模板包括定量部分和变量,将非结构化的日志数据,结构化成容易分析的模板日志,并根据该模板,数量特征进行统计,统计数量特征即模板中的词出现次数和组合词出现的次数;
10.数量时序模型训练模块:通过日志的特征表示来训练模型,特征分为数量特征和时序特征,分别输入到时序和数量模型中训练,所述数量特征是指模板中的词出现的次数和组合词出现的次数,时序特征是指日志的先后顺序;
11.偏离度计算模块:对于待检测的日志序列,先通过数据处理模块处理数据,数据处理之后结合数量时序模型训练模块训练好的模型,模型输出一个0~1的数值,分别记为时序模偏离度和数量偏离度,再综合计算最终的偏离度;
12.异常溯源模块:将超过偏离度阈值的日志写入表中,并赋予威胁标记,给出威胁日志所属日志序列作为溯源输出,如果审计时发现异常误报,则可以标记为误报让系统动态调整阈值,增加准确率。
13.上述技术方案中,数据处理模块采用drain日志模板提取器并结合多维的特征组合输出统计特征,具体包括:
14.1)drain日志模板提取器对区块链网络的现有日志提取模板;
15.2)对drain提取出的模板,分别统计模板内的词出现次数和组合词的出现次数;
16.3)节点在区块链网络中上传日志时,使用drain将日志归类到对应的模板和统计数量特征:
17.上述技术方案中,数量时序模型训练模块中:
18.分别获取了日志序列的时序特征和数量特征;
19.将时序特征放入基于注意力机制的gru模型中训练,得到时序模型;
20.将数量特征放入基于梯度提升决策树中训练,得到数量模型;
21.保存好训练过程中精度最高的时序模型和数量模型。4、根据权利要求3所述的一种区块链日志异常检测与溯源系统,其特征在于,基于注意力机制的gru模型,包括以下步骤:
22.a、日志是文本数据,提取的模板也是文本模板,将文本输入模型前,需要进行语义转化,对输入的日志模板文本,采用glove训练好的语义向量,将日志模板文本转化为日志模板向量;日志是文字,程序无法处理,向量是数字,程序可以处理。glove词汇表,是文字和数字一一对应的关系,查表就可以将文字转化为数字。
23.b、采用滑动窗口的模式,批量日志模板向量转化为日志模板序列向量;
24.c、将日志模板序列向量输入到模型中,让模型学习到时序特征;
25.d、保存训练结果,得到时序模型。
26.上述技术方案中,异常溯源模块,
27.1)设置阈值,对偏离值进行判断,超过阈值的才标记为异常(标记为1);
28.2)可以将误报的数据标记为误报(标记为0),按照一定时间内误报的偏离值以下的异常数量是否特别小,来判断是否调整阈值,如果特别小代表阈值较低,需要提高;
29.3)将待检测的日志数据,经过数据处理模块处理后,输入到数量时序模型训练模块中已训练好的模型中,得到偏离值;
30.4)根据阈值,判断是否标记为异常;
31.5)如果为异常,溯源输出异常相关的日志序列。
32.上述技术方案中,溯源输出异常过程,
33.1)需要在内存中缓存待测日志的原始文本和向量的一一对应关系;
34.2)如果标记为异常,则通过查表获得日志向量的原始日志文本信息,及相关的日志序列信息;
35.3)否则,清空缓存,检测下一批日志。
36.本发明因为采用上述技术方案,因此具备以下有益效果:
37.1、日志数据存放在联盟链上,能够保证日志数据审计的可信可靠。
38.2、结合深度学习和机器学习的优点,利用日志的时序特征和数量特征,自动化检测日志异常。
39.3、通过时序特征中注意力机制、数量特征筛选并最终再权重分配的综合偏离度计算方法,有效去除无关特征和影响,提高结果的准确率。
附图说明
40.图1区块链日志异常检测与溯源的基本流程;
41.图2日志异常检测的处理过程;
42.图3区块链日志异常检测与溯源系统架构
具体实施方式
43.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
44.本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
45.需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
46.区块链日志异常检测与溯源系统的实现,包括:
47.数据处理模块:从非结构化日志中,提取日志模板,再统计模板中的固定词出现次数,固定词的组合出现次数。
48.数量时序模型训练模块:将日志序列转化为数字向量,输入到时序模型训练。同时将数据处理模块统计的数量特征,输入到数量模型训练,保存训练结果。
49.偏离度计算模块:将待测日志序列输入到数量时序模型训练模块中训练好的结果中,分别计算出时序偏离度和数量偏离度,再计算综合偏离度。
50.异常溯源模块:根据偏离度的值标记是否异常,如果异常则溯源输出相关日志序列,操作员可通过反馈动态调整偏离阈值。
51.本方案对上述四种模块的主要流程包括:
52.a、数据处理模块从区块链网络上已存在的大量非结构化日志数据中提取日志模板,统计每个模板对应的固定词出现次数和固定词组合出现的次数。
53.b、将日志文本序列通过glove词汇表,转化为数字向量,暂时缓存起来,其中包含时序信息的序列输入到时序模型中,而这些序列对应的模板统计的数量特征输入到数量模型中分别训练,保存准确度最高的训练结果。
54.c、将待测日志序列经过数据处理模块处理,再输入到数量时序模型中训练好的模型中,分别计算时序偏离度t和数量偏离度n,再通过时序偏离度和数量偏离度对最终偏离度影响进行权重分配,计算综合偏离度y=w1t+w2n。
55.d、根据综合偏离度的值y是否大于设定的阈值m,来决定是否标记为异常,如果发现异常,则通过内存中缓存的日志关联信息,输出异常日志序列,否则清除缓存。
56.进一步的,在步骤b的处理交易的过程中,首先是解析日志模板,我们使用drain日志解析器。首先将常规的变量信息用掩码替换,然后根据日志的长度,前缀相似度进行分类聚合,最终得到日志模板。
57.具体的,在我们的系统中,我们同时结合了日志序列的时序特征和数量特征。时序特征是日志执行的顺序,比如文件新建之后,会被写入,然后才是删除,具有顺序性。而数量特征是文件被打开了几次,就会被关闭几次,数量的关系是对应的。
58.在此基础上,我们使用了经典的、高准确率的深度学习算法和机器学习方法:
59.1)在时序训练的过程中,我们使用了基于注意力机制的gru(gated recurrent unit)算法,能够对输入时序按照序列发挥的作用,聚集某一特定的序列,而忽略无关的序列噪音,训练得到一个良好的时序模型。
60.2)在数量训练的过程中,我们使用梯度提升决策树的方法,对数量的一维特征和二维特征进行筛选,去掉无关特征,最终得到有效分别异常的数量模型。
61.在步骤d中,阈值最初人为设定一个较低的值,能尽可能的包含更多的异常信息。人员反馈动态调整阈值的算法是观察误报率,即在小于等于误报的偏离值,大于等于阈值的情况下,是否误报数量远超了异常数量,如果超过则更新阈值为误报的偏离值。
62.对于本发明技术方案进一步的做如下说明:
63.一、日志模板的提取
64.为了解决目前日志的规范不统一,不同类型的设备打印出的日志格式不同,日志数据呈现非结构化的问题,使得日志方便于人员分析。使用日志解析器,将日志提取成日志
模板,使得被处理日志的种类更加清晰,处理难度降低。日志解析器的主要步骤包括以下五步。
65.1、预处理:使用正则表达式对显而易见的部分进行掩码替换。
66.2、日志长度分类:根据原始日志中的令牌数量对日志进行分类。
67.3、日志归类:根据预设的日志深度depth归类日志,一般设置为4,可以根据实际场景微调,深度会影响搜索遍历的节点数量及精度。
68.4、日志定类:在归类后,根据相似度算法其中seq1(i)代表日志序列1的第i个字母,seq2(i)代表日志序列2的第i个字母,seq1(i)代表日志序列1的第i个字母,seq2(i)代表日志序列2的第i个字母,判断是否属于这一类,如果不属于,则新增类,其中t1和t2的指的是两个序列相同位置对应的字母,n是序列比较中较长的序列的长度。
69.二、日志数据存在的周期:
70.日志异常检测的目的是为了溯源异常日志,定位威胁,及时排查。但在异常检测的过程日志已被转化成数字向量,不具有可读性,并且由于处理的日志数量巨大,不可能保存所有的日志序列关系,因此存在周期如何设定以及缓存的内容如何选取对于日志异常检测有重要意义。具体的缓存过程如下:
71.步骤一、在数据处理模块中,对原始日志标上序号,建立一个缓存表,表项为内容日志序号-日志模板,后续中间过程都用序号代替原始日志,提高时间和空间的利用率。
72.步骤二、在数量时序模型训练模块中,对原始日志文本,经过glove词汇表转化,得到数字向量,对日志序号和数字向量建立缓存表,表项为日志序号-数字向量。
73.步骤三、在偏离度计算模块中,对待测日志计算出偏离度,建立对应缓存表项为日志序号-综合偏离度。
74.步骤四、在异常溯源模块中,如果偏离度超过阈值,则根据日志序号和系统最初设定的窗口大小,返回日志序列,对缓存表进行清空。
75.三、日志数据存在的格式
76.在日志异常处理的过程中,主要是四种基本数据格式:
77.1)原始日志数据:receiving block blk-354458 src:/10.250.19.102:39325dest:/10.250.19.102:50010。
78.2)日志模板:receiving block[id]src:[*]dest:/[ipandport]。
[0079]
3)glove词汇表:receiving:[300维数字向量],block:[300维数字向量],src:[300维数字向量],dest:[300维数字向量],一行日志对应的向量由每个单词相加构成。
[0080]
4)数量特征:receiving:1,block:1,src:1,dest:1,receiving
ꢀ‑
block:1,receiving-src:1
…
[0081]
,表示为向量[1,1,1,
…
],经过标准化后,计算出n为出现次数之和,最终表示为向量[1/n,1/n,1/n,
…
],其中,receiving
ꢀ‑
block为词receiving与block的组合,receiving-src为词receiving与src的组合。
[0082]
实施例
[0083]
具体数据的执行过程如下:
[0084]
步骤一、对原始日志receiving block blk_-354458src:/10.250.19.102:39325dest:/10.250.19.102∶50010输入到数据处理模块中,进行归类处理,得到日志模板receiving block[id]src:[*]dest:/[ipandport],并统计数量特征receiving:1,block:1,src:1,dest:1,receiving
ꢀ‑
block:1,receiving
ꢀ‑
src:1
…
,经标准化后得到向量[1/n,1/n,1/n,1/n,1/n,1/n,
…
]。
[0085]
步骤二、将原始日志receiving block blk_-354458src:/10.250.19.102:39325dest:/10.250.19.102:50010经过查表(glove词汇表)转化,转化为300维的一个数字向量,得到日志序列。将日志序列输入到时序模型中,以及从步骤一得到的数字向量输入到数量模型中,分别得到时序偏离度(0~1)和数量偏离度(0~1),再计算得到综合偏离度(0~1)。
[0086]
模型在训练阶段会通过输入的日志模板向量和对应的标记,比如正常日志标记为0,异常标记为1,训练一个很复杂的函数。训练完成后,输入日志模板向量,就相当于使用这个训练好的函数,得到输出结果,输出结果的值为0~1.越靠近0表示越可能是正常,越靠近一表示,越有可能是异常。
[0087]
步骤三、对综合偏离度是否达到阈值进行判断,如果达到阈值,标记日志为异常,输出与输入日志例相关的其他原始日志。
技术特征:1.一种区块链日志异常检测与溯源系统,其特征在于:数据处理模块:对数据日志进行提取模板,日志模板包括定量部分和变量,将非结构化的日志数据,结构化成容易分析的模板日志,并根据该模板,统计数量特征,数量特征即模板中的词出现次数和组合词出现的次数;数量时序模型训练模块:通过日志的特征表示来训练模型,特征分为数量特征和时序特征,分别输入到时序和数量模型中训练,所述数量特征是指模板中的词出现的次数和组合词出现的次数,时序特征是指日志的先后顺序;偏离度计算模块:对于待检测的日志序列,先通过数据处理模块处理数据,数据处理之后结合数量时序模型训练模块训练好的模型,模型输出一个0~1的数值,分别记为时序模偏离度和数量偏离度,再综合计算最终的偏离度;异常溯源模块:将超过偏离度阈值的日志写入表中,并赋予威胁标记,给出威胁日志所属日志序列作为溯源输出,如果审计时发现异常误报,则可以标记为误报让系统动态调整阈值,增加准确率。2.根据权利要求1所述的一种区块链日志异常检测与溯源系统,其特征在于:数据处理模块采用drain日志模板提取器并结合多维的特征组合输出统计特征,具体包括:1)drain日志模板提取器对区块链网络的现有日志提取模板;2)对drain提取出的模板,分别统计模板内的词出现次数和组合词的出现次数;3)节点在区块链网络中上传日志时,使用drain将日志归类到对应的模板和数量特征进行统计。3.根据权利要求1所述的一种区块链日志异常检测与溯源系统,其特征在于,数量时序模型训练模块中:分别获取了日志序列的时序特征和数量特征;将时序特征放入基于注意力机制的gru模型中训练,得到时序模型;将数量特征放入基于梯度提升决策树中训练,得到数量模型;保存好训练过程中精度最高的时序模型和数量模型。4.根据权利要求3所述的一种区块链日志异常检测与溯源系统,其特征在于,基于注意力机制的gru模型,包括以下步骤:a、日志是文本数据,提取的模板也是文本模板,将文本输入模型前,需要进行语义转化,对输入的日志模板文本,采用glove训练好的语义向量,将日志模板文本转化为日志模板向量;b、采用滑动窗口的模式,批量日志模板向量转化为日志模板序列向量;c、将日志模板序列向量输入到模型中,让模型学习到时序特征;d、保存训练结果,得到时序模型。5.根据权利要求1所述的一种区块链日志异常检测与溯源系统,其特征在于:异常溯源模块,1)设置阈值,对偏离值进行判断,超过阈值的才标记为异常;2)可以将误报的数据标记为误报,按照一定时间内误报的偏离值以下的异常数量是否特别小,来判断是否调整阈值,如果特别小代表阈值较低,需要提高;3)将待检测的日志数据,经过数据处理模块处理后,输入到数量时序模型训练模块中
已训练好的模型中,得到偏离值;4)根据阈值,判断是否标记为异常;5)如果为异常,溯源输出异常相关的日志序列。6.根据权利要求5所述的一种区块链日志异常检测与溯源系统其特征在于:溯源输出异常过程,1)需要在内存中缓存待测日志的原始文本和向量的一一对应关系;2)如果标记为异常,则通过查表获得日志向量的原始日志文本信息,及相关的日志序列信息;3)否则,清空缓存,检测下一批日志。
技术总结本发明涉及区块链应用领域。提供了一种区块链日志异常检测与溯源系统,主旨在于解决了当前区块链架构中缺少的数据异常检测功能,能够安全地、高准确率地、可靠地实现数据检测。对数据日志进行提取模板,统计数量特征;通过日志的特征表示来训练模型,特征分为数量特征和时序特征;对于待检测的日志序列,先通过数据处理模块处理数据,数据处理之后结合数量时序模型训练模块训练好的模型,模型输出一个0~1的数值,分别记为时序模偏离度和数量偏离度,再综合计算最终的偏离度;将超过偏离度阈值的日志写入表中,并赋予威胁标记,给出威胁日志所属日志序列作为溯源输出,如果审计时发现异常误报,则可以标记为误报让系统动态调整阈值,增加准确率。增加准确率。增加准确率。
技术研发人员:牛伟纳 张小松 廖旭涵 赵丽睿 周孝笑 朱宇坤 张然
受保护的技术使用者:电子科技大学
技术研发日:2022.07.26
技术公布日:2022/11/1