大数据下源代码同源性安全分析

2015-01-01 03:04
网络安全技术与应用 2015年10期
关键词:源代码代码语义

0 引言

随着大数据时代的到来,数据安全、数据分析等成了人们关注的焦点。而数据增加的速度极快,增长量更是巨大的。因而,对于数据的分析不仅仅是掌握大量的数据,而是对其进行针对性的处理。

1 源代码同源性分析简介

对软件进行同源性鉴别就是分析比较两个软件从源代码到软件功能之间的差别,找出它们之间的相似之处或者相同之处。在进行比较鉴别的时候,主要是查看软件形成基础的程序源代码。在软件系统的源代码中,存在很多相同或者相似的代码片段,我们把它们称作克隆代码,克隆代码之间是具有同源性的。目前,国内外的学者对源代码同源性检测的研究有很多,研究比较多的就是源代码抄袭技术的检测,也就是对克隆代码的检测。经常使用的检测源代码同源性的方法包括文本相似和功能相似这两种。其中,文本相似的检测主要集中于对源代码中声明、标识符、文字、变量类型等的检测;而功能相似检测注重的是程序段之间结构和语义的不同,而不关注程序段之间格式或者变量名的改变。在使用功能相似检测的时候,如果两个软件的代码段是由不同的句法或者变量编程实现的,但是它们实现的功能是相同的,就能够通过该检测识别出来。

最早研究检测代码中的克隆代码是在20世纪90年代,是随着软件维护的问题出现的,而逐渐受到人们的关注。在90年代中期之后,对克隆代码检测工具的研究日益增多,并且在软件研究领域变得很兴盛。到目前为止,对于源代码同源性的检测技术主要包括四大类,分别是基于文本的鉴别技术、基于编程风格的鉴别技术、基于抽象语法树的鉴别技术以及基于语义的鉴别技术。

1.1 基于文本相似性的鉴别技术

基于文本相似性的鉴别技术有很多种,比较典型的包括基于子串匹配的方法、基于参数化的匹配方法,除此以外,应用比较多的还包括词频统计法,它也经常用于同源性的鉴别。该方法主要是对文本层次的检测,而没有考虑代码本身的语义特征,这样就使得该技术的局限性较大,在检测的时候,很容易出现漏检的现象,这样就让代码抄袭者很轻松的逃过检测。但是,该方法在检测的时候,主要考虑的是文本序列和文本组合,因此,它的误检率较低,在网络安全中的应用还是比较多的。

1.2 基于编程风格的同源性鉴别技术

基于编程风格的同源性鉴别技术在检测的时候是根据编程人员的编写风格来判断软件的同源性。采用该方法鉴别同源性的时候,主要分为两个阶段。第一阶段要对了解文件的主要编码风格特征,第二阶段再对检测代码进行检测,检测时主要使用的是三种不同的模块。这样就能够确定被克隆的位置。该方法在实现的时候需要耗费大量的人力和物力,很难实现自动化,可实施性也不强,因此,应用的比较少。

1.3 基于抽象语法树的鉴别技术

基于抽象语法树的鉴别技术最早是由Baxter等人提出的。抽象语法树是一种类似于树的存储结构,它是经过代码段的语法分析后形成的,它保留了很多树节点的信息。运用该技术对代码段进行检测的时候,主要是对比分析代码段的语法结构,并对节点的值进行比较,根据节点的值判断代码文件是不是具有同源性。该方法的实现过程是一个相当复杂的过程,而且在检测的时候也很容易出现误检的现象,因此,应用该方法进行检测的比较少。

目前有很多工具可以对源代码进行语法分析,比如javacc,它是对java的一种优化。另外,Lex和Yacc是两种基于词法分析和语法分析的软件,它们能够对结构化的程序源代码进行转换,该工具在使用的时候效率较高。

1.4 基于语义的鉴别技术

基于语义的鉴别技术突破的传统的思维,不再只关注代码抄袭的形式,而是通过语义方面的判断,来识别代码段的同源性。该方法在进行检测的时候,主要是运用程序依赖图的方式,它将源代码转换成图形的pdg格式,并使用子图的同构性来检测代码段之间的相似性。例如,有如下代码:

我们得到的对应的流程图如下:

通过这个图就能看出数据之间的依赖关系,而这些依赖关系中包含了所有的语义信息,然后就可以利用等价的方式进行同源性的匹配分析。

2 大数据下的安全分析

在分析大数据环境下的代码同源性的时候,主要是分析它们之间的相关关系,并不是注重因果关系。对于大数据来说,它主要具有四个特征,即规模很大,多样性,速度极快,且真伪难辨。大数据的起始计量单位是至少1000T,并且它的种类很多,包括网络日志、图片、地理位置信息等。除此之外,它的商业价值很高,并且处理速度极快。这就是大数据传统数据挖掘本质的不同。

目前,随着互联网的不断发展,一些网站和应用系统出现了漏洞,导致一系列的安全事故发生。在一些大数据的行业中,使用第三方数据库和中间件的频率很高,而这些系统存在的漏洞比较多,在进行修复的时候也很不及时。因此,我们需要对大数据进行分析,从中挖掘出新网站攻击的特征以及一些网络漏洞,从而分析同源的木马病毒。通过大数据的分析,可以发现一些潜在的安全事件,通过各个事件之间的关联性,就能够找出完整的威胁。此外,通过对大数据的分析,可以将分散的信息整合在一起,这样就能够主动的采取安全防御措施,从而识别出更多的危险并阻止它。利用大数据进行分析的主要框架包括以下几个部分:

2.1 数据的收集

我们需要在网络中收集各类信息,包括来自浏览器拓展的信息、查毒网站的一些信息,还有从事数据收集的安全供应商那里的信息,通过对这些数据以及一些网络攻击实例的研究,可以得到一个可用的数据库,帮助我们进行鉴别和检测。

2.2 数据的存储

对存储的数据库进行研究分析,并获得它的提取码。对关键主机存在的同源性漏洞进行分析,建立一个漏洞的知识库,并对知识库中的各种性能指标以及该网络环境下的拓扑结构进行分析研究,获得一个网络环境的知识库。

2.3 及时响应

获得同源性漏洞知识库之后,就能够对安全事件的有效性进行确认,可以通过多个渠道收集威胁网络安全的信息以及数据,包括恶意软件的哈希值,恶意链接等,然后将它们存储起来。当威胁源被数据化之后,就可以通过同源性分析判断该威胁是新出现的,还是一直存在的,并且能够识别出它的基本特征,然后自动的将这些值返回给系统,以及时采取相应的措施。

除此之外,通过对大数据的同源性安全分析,还能了解一些钓鱼网站的信息并且判断这些威胁的发展趋势。这样就可以对一些企图攻击网站的恶意软件提前发出警告,以提高系统的防御性。

3 大数据安全的应对对策

针对目前大数据的应用现状,在安全储存时采用的是虚拟化海量存储技术,它能够实现对信息资源的存储、传输、隔离、恢复等。在解决大数据的安全存储问题时,首先可以考虑对数据进行加密处理。无论是在大数据的安全设计服务中,还是在信息的传递过程中,加密技术都可以实现对数据流的有效保护。目前,经常使用的加密技术包括PGP和TrueCrypt等程序。另外,可以使用分离密钥和加密数据对大数据进行保管分离,从而实施保护,同时,能够实现对密钥管理生命周期的定义。除此之外,过滤器和数据备份都是有效的进行大数据安全储存的方式。过滤器具有很强的监控作用,当数据离开用户的网络时,它能够实现对数据的阻止,防止它再次传出。数据备份则能够保证在大数据被破坏之后,有备无患,实现对大数据的安全管控。

4 总结

通过对大数据同源性的安全分析,可以有效的确认对网站进行威胁的事件,对数据以及网络的安全起到了保护的作用。通过对软件漏洞的快速定位,为网络开发提供了技术性的支持,在大数据时代具有积极的现实意义。

猜你喜欢
源代码代码语义
基于TXL的源代码插桩技术研究
语言与语义
创世代码
创世代码
创世代码
创世代码
软件源代码非公知性司法鉴定方法探析
基于语法和语义结合的源代码精确搜索方法
“社会”一词的语义流动与新陈代谢
“上”与“下”语义的不对称性及其认知阐释