溯源分析方法、电子设备及计算机程序产品与流程

文档序号:16888344发布日期:2019-02-15 22:50阅读:256来源:国知局
溯源分析方法、电子设备及计算机程序产品与流程

本申请涉及信息安全技术,具体地,涉及一种溯源分析方法、电子设备及计算机程序产品。



背景技术:

在企业it安全分析或者省级、国家级互联网监管单位,常常有针对某个已知可疑域名进行溯源分析的需求。常见的,给定一系列域名解析历史记录以及一系列域名whois历史记录,要求对某已知可疑域名进行溯源,找出背后犯罪团伙所关联的其他域名,ip,email以及管理员姓名等信息。原始数据通常为csv或json格式,可将域名、ip、email、管理员姓名等信息放入图1中进行可视化。

目前,大多数企业或单位在进行溯源时,采取如下做法:在原始关系型数据库中检索可疑域名,找出该可疑域名关联的ip,email,管理员姓名,再分别将这些结果重新作为关键字回到关系型数据库中做检索,通过不断的迭代,锁定最可能与可疑域名相关的信息。

该方法要进行大量的join操作,当溯源层级较深时(如>3层),查询时间非常久,甚至超时。当某个节点关联的信息过多时,很难从中分辨出有价值的信息和垃圾信息。



技术实现要素:

本申请实施例中提供了一种溯源分析方法、电子设备及计算机程序产品。

根据本申请实施例的第一个方面,提供了一种溯源分析方法,包括:

确定第一参数n、第二参数k和初始节点s0;

从1至n的整数中依次取值,每当取一值后,基于所述s0,确定路径长度为取到的值的节点,在所述节点中确定展开节点,计算所述展开节点至所述s0之间的距离;

基于所述k和距离进行溯源。

可选地,对于从1至n的整数中的任一取值m;

所述基于所述s0,确定路径长度为取到的值的节点,包括:

确定所有的节点sm,所述任一sm满足如下关系:s0到所述任一sm的路径的长度为m。

可选地,所述在所述节点中确定展开节点,包括:

对于任一sm,

确定是否计算过所述任一sm至所述s0之间的距离;

若未计算过,则将所述任一sm确定为展开节点。

可选地,任一展开节点st至s0的路径为s0s1...st-1st;

所述计算所述展开节点至所述s0之间的距离,包括:

dist(s0,st)=dist(s0,st-1)+f(degree(st));

dist(s0,st)为st至s0之间的距离,所述degree(st)为st的度。

可选地,f(degree(st))=ln(degree(st))。

可选地,所述基于所述k和距离进行溯源,包括:

确定计算过至所述s0之间距离的节点数量w;

若w<k,则将计算过至所述s0之间距离的节点均作为溯源结果;

否则,将计算过至所述s0之间距离的节点,按距离从小至大排序,将排序靠前的k个计算过至所述s0之间距离的节点作为溯源结果。

可选地,所述n为3,或者,n为4,或者,n为5。

可选地,所述k为30。

根据本申请实施例的第二个方面,提供了一种电子设备,所述电子设备包括:显示器,存储器,一个或多个处理器;以及一个或多个模块,所述一个或多个模块被存储在所述存储器中,并被配置成由所述一个或多个处理器执行,所述一个或多个模块包括用于执行上述第一个方面任一所述方法中各个步骤的指令。

根据本申请实施例的第三个方面,提供了一种计算机程序产品,所述计算机程序产品对用于执行一种过程的指令进行编码,所述过程包括上述第一个方面中任一项所述的方法。

采用本申请实施例中提供的方法,从1至n的整数中依次取值,每当取一值后,基于s0,确定路径长度为取到的值的节点,在节点中确定展开节点,计算展开节点至s0之间的距离;基于k和距离进行溯源,可以在某个节点关联的信息过多时,从中分辨出有价值的信息。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请背景技术中一种原始数据可视化示意图;

图2为本申请一实施例提供的一种溯源分析方法的流程示意图;

图3为本申请一实施例提供的一种节点可视化示意图;

图4为本申请一实施例提供的另一种节点可视化示意图;

图5为本申请一实施例提供的另一种节点可视化示意图;

图6为本申请一实施例提供的另一种节点可视化示意图;

图7为本申请一实施例提供的另一种节点可视化示意图;

图8为本申请一实施例提供的一种电子设备结构示意图。

具体实施方式

在实现本申请的过程中,发明人发现,现有的方法当溯源层级较深时(如>3层),查询时间非常久,甚至超时。当某个节点关联的信息过多时,很难从中分辨出有价值的信息和垃圾信息。

针对上述问题,本申请实施例中提供了一种溯源分析方法、电子设备及计算机程序产品,从1至n的整数中依次取值,每当取一值后,基于s0,确定路径长度为取到的值的节点,在节点中确定展开节点,计算展开节点至s0之间的距离;基于k和距离进行溯源,可以在某个节点关联的信息过多时,从中分辨出有价值的信息。

本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言java和直译式脚本语言javascript等。

为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

参见图2,本实施例所示的溯源分析方法的实现流程如下:

s101,确定第一参数n、第二参数k和初始节点s0。

其中,n、k的获取方法,包括但不限于:提供人机交互接口,通过该人机交互接口获取用户输入的n值和k至。如在终端的屏幕上展示输入n值和k值的界面,以使用户在该界面中输入n值和k值,当用户通过该终端的输入设备在该界面中输入n值和k值后,获取输入的n值和k值。

可选地,n一般为3~5中的任一整数,k一般为30。

另外,s0可以为已知的可疑域名所在的节点。

在得到n、k、s0后,本实施例在进行溯源分析时,倾向于展开度(degree)小的节点,其中,一个节点的度是指与该节点相关联的边的条数。如图3所示(a点和b点之间的节点为s0),当预先知道a点和b点的度时,由于b的度比a点大,从信息论的角度来看,b点的信息熵比a点大,不确定性大,因此a点的溯源价值比b点来得高。

对于s步(s>2)以外的节点,如图4中的c点和d点,本实施例提供的方法除了要考虑当前节点的度外,还需要考虑来源节点的度,对于c来说,来源节点是a,d的来源节点是b。因此通过如下的s102计算各节点至s0之间的距离。

s102,从1至n的整数中依次取值,每当取一值后,基于s0,确定路径长度为取到的值的节点,在节点中确定展开节点,计算展开节点至s0之间的距离。

对于从1至n的整数中的任一取值m;

1、基于s0,确定路径长度为取到的值的节点的实现方案为:

确定所有的节点sm,任一sm满足如下关系:s0到任一sm的路径的长度为m。

2、在节点中确定展开节点的实现方案为:

对于任一sm,

确定是否计算过任一sm至s0之间的距离。

若未计算过,则将任一sm确定为展开节点。

3、计算展开节点至s0之间的距离的实现方案为:

若如图5所示,任一展开节点st至s0的路径为s0s1...st-1st,

则dist(s0,st)=dist(s0,st-1)+f(degree(st));

dist(s0,st)为st至s0之间的距离,degree(st)为st的度。

在实际情况下,通常会遇到某个很有价值的溯源节点途中经过一个度较大节点的情况,如果直接拿degree作为距离,那么这个节点将很难有机会被溯源到,因此本实施例对degree做一个非线性变换,用对数函数作为该非线性变换函数,即f(degree(st))=ln(degree(st)),此时dist(s0,st)=dist(s0,st-1)+ln(degree(st))。

参见图6,以n=3为例,s102的实现过程为:

1、从1至3的整数中取1,基于s0,确定路径长度为1的节点(即直接与s0连接的节点,如图6中的s1和s2),由于所有节点均未计算与s0之间的距离,因此,将s1和s2均确定为展开节点。计算s1至s0之间的距离dist(s0,s1),s2至s0之间的距离dist(s0,s2)。

dist(s0,s1)=f(degree(s1))=ln(degree(s1))。

dist(s0,s2)=f(degree(s2))=ln(degree(s2))。

2、取2,基于s0,确定路径长度为2的节点(即间隔1个节点与s0连接的节点,如图6中的s11、s12、s21和s22)。目前只计算了s1至s0之间的距离和s2至s0之间的距离,因此s11、s12、s21、s22与s0之间的距离均未计算,因此,将s11、s12、s21和s22均确定为展开节点。计算s11至s0之间的距离dist(s0,s11),s12至s0之间的距离dist(s0,s12),s21至s0之间的距离dist(s0,s21),s22至s0之间的距离dist(s0,s22)。

s11至s0的路径为s0s1s11,因此,

dist(s0,s11)=dist(s0,s1)+f(degree(s11))

=dist(s0,s1)+ln(degree(s11))

=ln(degree(s1))+ln(degree(s11))。

s12至s0的路径为s0s1s12,因此,

dist(s0,s12)=dist(s0,s1)+f(degree(s12))

=dist(s0,s1)+ln(degree(s12))

=ln(degree(s1))+ln(degree(s12))。

s21至s0的路径为s0s2s21,因此,

dist(s0,s21)=dist(s0,s2)+f(degree(s21))

=dist(s0,s2)+ln(degree(s21))

=ln(degree(s2))+ln(degree(s21))。

s22至s0的路径为s0s2s22,因此,

dist(s0,s22)=dist(s0,s2)+f(degree(s22))

=dist(s0,s2)+ln(degree(s22))

=ln(degree(s2))+ln(degree(s22))。

3、取3,基于s0,确定路径长度为3的节点(即间隔2个节点与s0连接的节点,如图6中的s12、s21、s221和s222)。目前,计算了s1、s2、s11、s12、s21和s22至s0之间的距离,则在s12、s21、s221和s222中未计算距离的点为s221和s222,因此,将s221和s222确定为展开节点。计算s221至s0之间的距离dist(s0,s221),s222至s0之间的距离dist(s0,s222)。

s221至s0的路径为s0s2s22s221,因此,

dist(s0,s221)=dist(s0,s22)+f(degree(s221))

=dist(s0,s22)+ln(degree(s221))

=ln(degree(s2))+ln(degree(s22))+ln(degree(s221))。

s222至s0的路径为s0s2s22s222,因此,

dist(s0,s222)=dist(s0,s22)+f(degree(s222))

=dist(s0,s22)+ln(degree(s222))

=ln(degree(s2))+ln(degree(s22))+ln(degree(s222))。

至此,步骤s102执行完毕。

s102的实现方法是从原点出发的广度优先搜索算法,由于每一步展开的节点中,会排除之前到达过的节点(即已计算过与s0之间距离的点),因此隐性定义了方向,不会走回头路,无需担心溯源图是一个无向有环图的问题,效率非常高,可以做到很强的实时性。

另外,本实施例s102的实现方案引入对数函数作为degree的非线性变换函数,具有其物理意义。

具体的,认为一个节点的degree的倒数,为从该点出发到达该节点的某个子节点的概率(如图7所示,点a的degree的倒数为a的概率,p(a)=1/degree(a))。此时距离公式可以转化为:

dist(s0,st)-ln(p(s0))=-ln(p(s0)×p(s1)×…×p(st))

因此,某节点与初始节点的距离越小,代表从初始节点出发,随机游走至该节点的子节点的概率越大。寻找距离初始节点最近的k个节点,等价于寻找从初始节点随机游走经过概率最大的k个节点,使得本实施例提供的方案可以在某个节点关联的信息过多时,快速从中分辨出有价值的信息。

s103,基于k和距离进行溯源。

具体的,确定计算过至s0之间距离的节点数量w。

若w<k,则将计算过至s0之间距离的节点均作为溯源结果。

否则,将计算过至s0之间距离的节点,按距离从小至大排序,将排序靠前的k个计算过至s0之间距离的节点作为溯源结果。

s103中会将距s0距离最小的k个节点作为溯源结果,如果计算距离的节点数量小于k,那么将计算了距离的节点均作为溯源结果。

本实施例提供的方法,从1至n的整数中依次取值,每当取一值后,基于s0,确定路径长度为取到的值的节点,在节点中确定展开节点,计算展开节点至s0之间的距离;基于k和距离进行溯源,可以在某个节点关联的信息过多时,从中分辨出有价值的信息。

基于同一发明构思,本实施例提供了一种电子设备,参见图8,包括存储器801、处理器802、总线803以及存储在存储器801上并可在处理器802上运行的计算机程序,所述处理器802执行所述程序时实现如下步骤。

确定第一参数n、第二参数k和初始节点s0;

从1至n的整数中依次取值,每当取一值后,基于s0,确定路径长度为取到的值的节点,在节点中确定展开节点,计算展开节点至s0之间的距离;

基于k和距离进行溯源。

可选地,对于从1至n的整数中的任一取值m;

基于s0,确定路径长度为取到的值的节点,包括:

确定所有的节点sm,任一sm满足如下关系:s0到任一sm的路径的长度为m。

可选地,在节点中确定展开节点,包括:

对于任一sm,

确定是否计算过任一sm至s0之间的距离;

若未计算过,则将任一sm确定为展开节点。

可选地,任一展开节点st至s0的路径为s0s1...st-1st;

计算展开节点至s0之间的距离,包括:

dist(s0,st)=dist(s0,st-1)+f(degree(st));

dist(s0,st)为st至s0之间的距离,degree(st)为st的度。

可选地,f(degree(st))=ln(degree(st))。

可选地,基于k和距离进行溯源,包括:

确定计算过至s0之间距离的节点数量w;

若w<k,则将计算过至s0之间距离的节点均作为溯源结果;

否则,将计算过至s0之间距离的节点,按距离从小至大排序,将排序靠前的k个计算过至s0之间距离的节点作为溯源结果。

可选地,n为3,或者,n为4,或者,n为5。

可选地,k为30。

本实施例提供的电子设备,从1至n的整数中依次取值,每当取一值后,基于s0,确定路径长度为取到的值的节点,在节点中确定展开节点,计算展开节点至s0之间的距离;基于k和距离进行溯源,可以在某个节点关联的信息过多时,从中分辨出有价值的信息。

基于同一发明构思,本实施例提供了一种计算机存储介质,其上存储有计算机程序所述程序被处理器执行时实现如下步骤。

确定第一参数n、第二参数k和初始节点s0;

从1至n的整数中依次取值,每当取一值后,基于s0,确定路径长度为取到的值的节点,在节点中确定展开节点,计算展开节点至s0之间的距离;

基于k和距离进行溯源。

可选地,对于从1至n的整数中的任一取值m;

基于s0,确定路径长度为取到的值的节点,包括:

确定所有的节点sm,任一sm满足如下关系:s0到任一sm的路径的长度为m。

可选地,在节点中确定展开节点,包括:

对于任一sm,

确定是否计算过任一sm至s0之间的距离;

若未计算过,则将任一sm确定为展开节点。

可选地,任一展开节点st至s0的路径为s0s1...st-1st;

计算展开节点至s0之间的距离,包括:

dist(s0,st)=dist(s0,st-1)+f(degree(st));

dist(s0,st)为st至s0之间的距离,degree(st)为st的度。

可选地,f(degree(st))=ln(degree(st))。

可选地,基于k和距离进行溯源,包括:

确定计算过至s0之间距离的节点数量w;

若w<k,则将计算过至s0之间距离的节点均作为溯源结果;

否则,将计算过至s0之间距离的节点,按距离从小至大排序,将排序靠前的k个计算过至s0之间距离的节点作为溯源结果。

可选地,n为3,或者,n为4,或者,n为5。

可选地,k为30。

本实施例提供的计算机存储介质,从1至n的整数中依次取值,每当取一值后,基于s0,确定路径长度为取到的值的节点,在节点中确定展开节点,计算展开节点至s0之间的距离;基于k和距离进行溯源,可以在某个节点关联的信息过多时,从中分辨出有价值的信息。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1