一种多级过滤的源代码数据检测方法及装置与流程

文档序号:12470966阅读:215来源:国知局

本发明涉及源代码数据检测技术领域,具体涉及一种多级过滤的源代码数据检测方法及装置。



背景技术:

作为研发设计企业,设计文档、图纸和源代码等数据是企业的核心智慧资产,也是企业的核心竞争力所在,对这些核心数据进行有效管控是企业信息安全工作的重中之重。其中源代码数据由于以文本文件或文本片段的形式存在,更易混杂或嵌入在常规的文本文件中,进而发生流失、泄密或非受控扩散等危害企业信息安全的情况。这些源代码数据丢失的情况大多发生原因是企业内部人员的无意操作,也有少数来自内部人员的故意泄密和企业外部的恶意攻击。这些数据丢失情况的发生,对于研发设计企业可能会带来灾难性的后果。因此企业需要对源代码数据的分布、存储、流转、外发进行全方位的管控,而源代码数据检测方法是实现这些管控的基础。

数据安全管控技术的发展经历了DSM(数据加密软件)、DSA(数据安全隔离)、DLP(数据泄漏防护)三个阶段。在进行源代码数据的保护时,因为源代码的进程调用十分复杂,如果进行加密,极易损坏代码或影响系统性能,所以DSM并不适用于源代码数据的保护。目前主要采用的源代码防护都是基于DSA或DLP的。DSA并不对源代码进行加密,而是保证源代码仅在隔离出的数据安全区域中流转,在未获审批允许时,不能进行任何形式的外发和外传。DLP摆脱了DSM的敏感数据“全加密”和DSA的“全隔离”的囚笼式信息安全管控策略,通过对文件的分类分级,实现了对敏感数据的网络防护和终端防护。而DLP的核心功能是对文件或数据流的内容进行识别,通过识别来实现对数据丢失的防控。基于源代码数据检测的结果,DLP的源代码管控可以实现敏感代码的隔离、外发代码的阻截、内部代码和网络公共代码的区分等功能。

源代码数据的检测本质上是文本数据检测,目前文本数据检测技术包括基础检测技术和高级检测技术。

基础检测技术包括文档属性检测、关键字匹配、正则表达式等方法,这些检测技术不涉及文档的语义、结构和逻辑特征,具有简单高效的特征,但是难以实现精确细致的分类。

高级检测技术包括精确数据匹配(Exact Data Matching,EDM)、文档指纹(FingerPrint,本质是一种Index data matching,IDM方法)、机器学习(或称作统计学习)方法。其中数据精确匹配是基于对文件的逻辑和结构特征进行深入分析后,提取其模式特征进行的匹配分类方法;文档指纹是基于对文档的语义分析,采用基于关键词的散列算法获得文档指纹作为文件索引(或称信息摘要),通过索引匹配检测文档或文档片段是否相似的方法;而机器学习方法都是通过学习算法获取文件内部的数据或语义统计特征,从而进行模式识别。

因为源代码是依据一定程序设计语言书写而成,具有词法、语法、语义特征,所以可以利用精确数据匹配进行源代码数据的检测,但是必须设计出合理有效的精确匹配信息处理流程。本发明中提出的检测方法,将上述文本数据检测技术中的多种技术手段组合成一种多级过滤的信息处理过程,从不同信息粒度水平上进行多次信息过滤,实现对源代码数据的精确检测。

现有技术中与本发明最接近的技术是一种现有专利技术,它通过拦截网络数据流,通过对所述网络数据流进行协议解析得到字符流;获取预设的与程序语言对应的检测字符串和/或语法分析库函数;根据所述检测字符串和/或语法分析库函数判断所述解析得到的字符流是否包含源码,若是,则阻断所述网络数据流。

上述现有技术存在以下缺点:

(1)上述专利所用方法仅对网络数据流进行拦截,并不适用于对于本地存储文件是否包含源代码数据进行检测,无法获知本地源代码的分布情况。

(2)上述专利中判定字符流是否包含源代码的依据是“预设的与程序语言对应的检测字符串和/或语法分析库函数”,并未对字符流的文件类型、词法记号属性和语义内容进行分析,对源代码数据检测的精度有限。

(3)在软件开发过程规范化程度不高的企业中,存在着开发工具众多、代码风格各异、标识符命名不规范、代码标注用词复杂的特征。检测这些源代码,仅依靠文件属性检测、关键字匹配、正则表达式匹配等基础检测技术会存在着定位不够准确的问题(难以确定一篇普通文档中包含源代码数据片段的位置);采用文档指纹、统计学习等方法又存在着由于样本获取的不完整而造成检测方法通用性不足的缺陷。

(4)上述文本数据的高级检测技术在对篇幅较长的文本进行语义分析时,会对文本全文进行计算,具有较大的计算量,会造成检测结果输出用时较长。



技术实现要素:

名词解释:

源代码:也指源程序,是指按照一定的程序设计语言规范书写的、未经编译的文本文件或文本片段,是一系列人类可读的计算机语言指令。将源代码翻译成计算机可以执行的二进制指令的过程即为编译。

词法分析:将字符串序列转换为词法记号(token)序列的过程。源程序中的词法记号包括关键字、标识符、常数、运算符、界符等。

关键字:关键字是对不同编程语言编译器具有特殊含义的单词,仅用于表示数据类型或进行程序流程控制,而不能作为其它用途使用(关键字不能用作标识符来标记常量名、变量名、方法名、函数名、程序名、类名、包名和参数名)。

标识符:在编程语言中,标识符是用户进行源代码书写时使用的名字,用来标记变量、常量、函数、方法、类、对象、语句块、文件、参数等。标识符可以是字母、数字、下划线、特殊符号(例如’$’)的组合。

常数:是源代码中固定不变的数值,包括整型、实型、布尔型等。

运算符:是说明特定操作的符号,用于连接不同的运算对象形成表达式。包括算术运算符、关系运算符、赋值运算符、逻辑运算符、连接运算符等。

界符:标记源代码语句块范围界限的特殊符号。界符一般都是成对出现(例如(){}[]""''等),源代码中标记语句结束的分隔符也可以作为界符来处理(如C和C++语言中的分号)。

语法分析:将词法记号序列根据运算符和界符组成各类语法短语,区别出相应的语法范畴,同时进行语法一致性检查。

语义分析:语义是文本中对事物的描述和逻辑表示。语义分析就是对文本所包含的语义的识别,运用统计分析或机器学习方法,建立一种计算模型,挖掘文本中深层次的概念。

LSH:Locality-Sensitive Hashing局部敏感哈希,一种将原始文本进行散列运算生成信息摘要(或称索引)的方法。在进行文本比对或检索时采用信息摘要代替原始文本,可以显著减少比对运算量并提高检索的效率。内容相似的文本经LSH转换后生成的信息摘要也具有很高的相似度,因此LSH可以用于文本相似度检测、网页搜索等领域。

DSM:Data Security Manager数据安全管理,因为最早采用的都是数据加密技术对企业中的数据安全进行管理,所以在企业信息安全领域DSM目前一般是指数据加密软件。

DSA:Data Security Area数据安全隔离,是目前数据防泄密技术的有效手段之一。通过物理(磁盘、存储设备、网络)和软件(划分逻辑安全区)隔离方法,构建数据安全区域,使得源代码、图纸等包含敏感信息的文件只能在安全区内进行操作,允许敏感数据在不同终端的安全区内进行流转,对敏感数据外发进行审核。

DLP:Data Loss Prevention数据丢失防护,或称数据泄漏防护(Data Leakage Prevention)是目前信息领域主流的企业信息安全和数据防护系统的名称。DLP是通过一定的数据处理和分析方法,结合企业的信息安全管理策略,对企业中所有电子信息和数据进行分类分级管控,防止企业中的信息资产或关键数据流失、泄密或非受控扩散。

为解决上述技术问题,本发明提出了并实现了一种多级过滤的源代码数据检测方法及装置,该方法通过对输入的文本或数据流的文件类型检测过滤、文档格式转换、词法分析过滤、可疑文本段截取、语法分析过滤、语义分析过滤这一系列信息处理过程,可以判别所输入的文本或数据流中是否含有源代码数据,实现了对于源代码文件或含有源代码片段的文本文件的检测功能。

为解决上述技术问题,本发明提供了一种多级过滤的源代码数据检测方法,该方法包括以下步骤:

(1)文件类型检测过滤,包括:判断输入文件是否为指定文件类型,如果是,将该文件判定为包含源代码数据的文件,转入步骤(5),否则转入步骤(2);

(2)词法分析过滤,包括:将所述文件统一转换成标准文件,提取所述标准文件中的词法记号,并为不同词法记号建立相应的权重,根据所述权重计算所述文件中词法记号的加权得分总和,判断所述加权得分总和是否超过指定阈值,如果是,将该文件判定为包含源代码数据的文件,转入步骤(5),否则转入步骤(3);

(3)语法分析过滤,包括:从所述文件截取指定长度的文本作为可疑文本,提取所述可疑文本中包含的语法短语和表达式。根据语法短语在语法树中的层级,判断其重要程度;根据表达式的运算复杂度判断其重要程度。如果所述语法短语或表达式对于源代码构成的重要程度超过指定阈值,则将该文件判定为包含源代码数据的文件,转入步骤(5),否则转入步骤(4);

(4)语义分析过滤,包括:提取所述文本的语义特征,将其与指定核心源代码的语义特征进行相似性分析,如果相似,将该文件判定为包含源代码数据的文件,转入步骤(5),否则转入步骤(6);

(5)对包含源程序数据的文件做敏感数据保护,结束检测;

(6)对所述文件做无源代码标记,结束检测。

进一步,所述步骤(1)中所述输入文件为:本地进行存储或网络外发的文件。

进一步,所述词法记号包括:特定程序设计语言中的关键字、标识符、算符和界符。

进一步,所述步骤(3)从所述文件截取指定长度的可疑文本具体包括:根据执行所述数据检测方法的装置性能,确定所述指定长度,并截取所述权重大于指定阈值的词法记号后所述指定长度的文本作为可疑文本,截取的该可疑文本包含该词法记号。

进一步,所述步骤(3)中提取所述可疑文本中包含的语法短语和表达式具体包括:对所述可疑文本进行语法分析,将相邻的词法记号组合成符合程序设计语言规则的语法短语和表达式。

进一步,所述步骤(4)中利用关键字词频统计或LSH方法提取所述标准文件的语义特征,将所述指定核心源代码的语义特征构造成敏感信息摘要样本库,对所述可疑文本进行语义特征提取,获得其信息摘要,将该信息摘要与敏感信息摘要样本库中的样本进行相似性分析,若所述可疑文本的所述信息摘要与所述信息摘要样本库中某一样本近似,则将该文件判定为包含源代码数据的文件。

为解决上述技术问题,本发明提供了一种多级过滤的源代码数据检测装置,该装置包括:

文件类型检测过滤模块,用于判断输入文件是否为指定文件类型;

词法分析过滤模块,将所述文件统一转换成标准文件,提取所述标准文件中的词法记号并为不同词法记号建立相应的权重,计算所述文件中词法记号对权重的加权得分总和,判断所述加权得分总和是否超过指定阈值;

语法分析过滤模块,从所述文件截取指定长度的文本作为可疑文本,提取所述可疑文本中包含的语法短语和表达式,判断所述短语和表达式对构成具有实际意义源代码的重要程度;

语义分析过滤模块,提取所述文本的语义特征,将其与指定核心源代码的语义特征进行相似性分析;

敏感数据保护模块,对包含源程序数据的文件做敏感数据保护;

无源代码标记模块,对所述文件做无源代码标记。

进一步,所述输入文件为:本地进行存储或网络外发的文件。

进一步,所述词法记号包括:特定程序设计语言中的关键字、标识符、算符和界符。

进一步,从所述文件截取指定长度的可疑文本具体包括:根据所述检测装置的性能,确定所述指定长度,并截取所述权重大于指定阈值的词法记号后所述指定长度的文本作为可疑文本,截取的该可疑文本包含所述词法记号。

进一步,所述提取所述可疑文本中包含的语法短语和表达式具体包括:对所述可疑文本进行语法分析,将相邻的词法记号组合成符合程序设计语言规则的语法短语和表达式。

进一步,所述语义分析过滤模块利用关键字词频统计或LSH方法提取所述标准文件的语义特征,将所述指定核心源代码的语义特征构造成敏感信息摘要样本库,对所述可疑文本进行语义特征提取,获得其信息摘要,将该信息摘要与敏感信息摘要样本库中的样本进行相似性分析,若所述可疑文本的所述信息摘要与所述信息摘要样本库中某一样本近似,则将该文件判定为包含源代码数据的文件。

本发明技术效果:

提高源代码数据检测的准确程度,增强企业对于源代码数据安全管控的能力。通过多级检测过滤模块的特定组合,可以实现对不同程序设计语言、不同设计风格书写的源代码的检测,使得源代码检测方法具有通用性。利用可疑文本截取的设计,有效地避免了语义分析阶段计算量过大的缺陷,加快了检测过程的信息处理速度。

附图说明

图1是本发明源代码检测实现流程图。

具体实施方式

本发明中提出的多级过滤的源代码数据检测方法,针对企业数据安全管控中的源代码数据检测需求,解决了从大量文本文档和数据流中判断出其中哪些是源代码文件、或包含了源代码文件的问题。本方法从源代码书写的程序设计语言规范着手,根据源代码文本的词法、语法、语义和文件格式特征,采用了文件类型检测、词法分析、语法分析、语义分析的多级过滤数据处理结构,形成了一种新型的源代码数据检测解决方案。

第一级过滤:文件类型检测过滤。对企业内部存储或网络外发的文件进行文件类型检测,通过文件后缀名匹配过滤,将具有源程序后缀名的文件判定为包含源程序数据。

第二级过滤:词法分析过滤。从词法分析层面,利用不同程序设计语言中关键字、算符、界符出现的规律,可以解决源代码中代码书写风格各异、标识符命名不规范的检测难题。首先将经过第一级过滤后的文件或数据流统一转换成txt格式;其次进行词法分析,检测其中是否包含源程序的关键字、特殊标识符、算符和界符;然后为不同词法记号建立权重,计算txt文件中词法记号的加权得分总和;最后设置判别阈值,若一篇txt文件中出现词法记号的加权得分超过阈值,则判定为包含源程序数据。

第三级过滤:语法分析过滤。为避免对篇幅较长的文本进行语义分析而带来的大量计算,在语法分析之前进行可疑文本截取,仅对截取的文本段进行分析,从而显著减少了计算量。通过语法分析从文本中提取特定的语法短语和表达式,将其作为可疑文本段中是否包含源程序数据的判据。

第四级过滤:语义分析过滤。运用词频统计和LSH(局部敏感哈希)等语义分析方法,提取可疑文本段的语义特征,将其与本企业的核心源代码的语义特征进行相似性分析,从而确定可疑文本中是否包含进行局部改写后的源代码。

本发明提出的多级过滤的源代码数据检测方法信息处理过程如图1所示,其中包括了文件类型检测过滤、文档格式转换、词法分析过滤、可疑文本截取、语法分析过滤、语义分析过滤、含源代码数据保护操作、无源代码标记共8个处理模块。通过这一系列的信息处理,可以实现对文件或数据流中是否包含源代码数据的检测。下面对这8个信息处理模块逐一进行介绍:

(1)文件类型检测过滤

对于输入检测装置的文件,检测其后缀名是否为企业数据安全管控策略中所标记的源代码数据文件(例如*.c,*.cpp,*.h,*.hpp,*.py,*.vbs,*.java,*.jar等源代码格式类型)。若是,则判定该文件为源代码文件;否则进入下一级信息过滤处理。

(2)文档格式转换

将输入检测装置的文本文件(如doc、docx、pdf、rtf等格式)或文本数据流统一转换为txt文本文档格式,便于后续模块进行统一处理。

(3)词法分析过滤

对经过(2)模块转换后的文本文档进行词法分析,从中提取特定程序设计语言中的关键字、标识符、算符和界符。根据不同的词法记号的重要程度建立权重(例如一些企业中关键的库文件的标识符应当赋予较高的权重,而在正常文本中也使用的“if”、“then”等关键字则应赋予较低的权重),计算txt文件中词法记号的加权得分总和。可以根据txt文件长度设定动态的判别阈值(一般文件长度增大时,此阈值相应地增大)。若一篇txt文件中出现词法记号的加权得分超过阈值,则判定为包含源程序数据;否则进入下一级信息过滤处理。

(4)可疑文本截取

根据执行源代码数据检测装置的内存容量和计算速度,可以指定截取可疑文本的长度。根据词法分析结果,在高权重词法记号出现位置后截取指定长度文本作为可疑文本。(截取文本中包含该高权重词法记号)

(5)语法分析过滤

对可疑文本进行语法分析,将相邻的词法记号组合成符合程序设计语言规则的语法短语和表达式。根据语法短语在语法树中的层级,判断其重要程度;根据表达式的运算复杂度判断其重要程度。按照所述语法短语或表达式对于源代码构成的重要程度是否超过指定阈值,如果超过,则判定为包含源程序数据;否则进入下一级信息过滤处理。

(6)语义分析过滤

利用关键字词频统计或LSH等方法来提取文本文件的语义特征,将本企业的核心源代码的语义特征构造成敏感信息摘要样本库。对可疑文本进行语义特征提取,获得其信息摘要,将其与敏感信息摘要样本库中样本进行相似性分析。若可疑文本的信息摘要与样本库中某一样本近似,则认为该可疑文本中包含核心源代码数据;否则应给可疑文本做无源代码标记。

(7)含源代码数据保护操作

若一个输入检测装置的文件或数据流中被判定为含有源代码数据,则应对该文件或数据流的存储、保存、传输、外发做敏感数据保护(如加密、阻断、审批、记录等)。

(8)无源代码标记

若一个输入检测装置的文件或数据流中被判定为不含有源代码数据,则可以对该文件或数据流作无源代码标记,在该文件或数据流不做出编辑改动的情况下,不必对其进行源代码数据保护操作。

具体实施例1

开发人员在企业代码服务器上下载一个CPP源代码文件到自己的客户端计算机,客户端上的数据安全软件对新增的文件进行扫描。

经本源代码数据检测装置的文件类型检测过滤模块时,发现该文件后缀为“.cpp”,因此将该文件判定为源代码文件。根据此判定结果数据安全软件仅允许此文件保存到客户端计算机的安全区中。

具体实施例2

某开发人员在书写用户使用手册时,将多段源代码程序粘贴到文本文档中,并转成pdf格式保存。该企业安装的数据安全软件进行全盘扫描,将该文件输入到本装置中进行检测。

经本源代码数据检测装置的文件类型检测过滤模块检测,该文件非源代码文件,但是属于文本文件格式,因此将其进行文档格式转换及后续处理。对转换后的txt文件进行词法分析后,发现其中包含的词法记号的加权得分总和超过判别阈值,因此被判定为包含源代码数据。在得到此检测结果后,该企业应对此文件的传播范围进行限定。

具体实施例3

某一准备离职人员想要将一些企业核心源代码外带,为此批量修改了这些源代码文件的后缀和其中的关键字,在将这些文件转存到U盘时,数据安全软件将这些文件逐一输入到本装置中进行检测。

经本源代码数据检测装置的文件类型检测过滤模块检测,该文件非源代码文件,但是属于文本文件格式,因此将其进行文档格式转换及后续处理。对转换后的txt文件进行词法分析后,发现其中包含的词法记号的加权得分总和未超过判别阈值,因此转到进行语法分析。在语法分析阶段,发现该文件中包含多个表达式,因此判断该文件包含源代码数据。数据安全软件在得到此检测结果后,应当禁止该文件转存到U盘。

具体实施例4

某开发人员在撰写论文时将企业的核心源代码转用伪码描述,通过邮件将论文外发,企业邮件网关将该数据流输入到本装置中进行检测。

经本源代码数据检测装置的文件类型检测过滤模块检测,该数据流非源代码文件,但是属于文本格式,因此将其进行文档格式转换及后续处理。对转换后的txt文件进行词法分析后,发现其中包含的词法记号的加权得分总和未超过判别阈值,因此转到进行语法分析。在语法分析阶段,未发现敏感语法短语和表达式,因此转入语义分析。在语义分析阶段,因其伪码描述中未重新命名标识符,在经过采用标识符作为词频统计的语义分析后,发现该段文字与企业核心源代码具有语义相似性,因此判断该文件包含源代码数据。企业邮件网关在得到此检测结果后,应禁止该邮件直接外发。

目前所知的源代码检测技术方案都是仅采用了文件类型检测、词法分析、语法分析、语义分析中的一种或两种技术手段的组合,未见如发明中将多种技术手段综合应用构成的多级过滤信息处理方案。

通过本发明提出的多级过滤的源代码检测技术解决方案,可以提高源代码数据检测的准确程度,增强企业对于源代码数据安全管控的能力。通过多级检测过滤模块的特定组合,可以实现对不同程序设计语言、不同设计风格书写的源代码的检测,使得源代码检测方法具有通用性。利用可疑文本截取的设计,有效地避免了语义分析阶段计算量过大的缺陷,加快了检测过程的信息处理速度。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应保护在本发明的保护范围之内。

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