本发明涉及网络空间安全,特别是一种基于多特征融合的恶意代码作者识别和代码侵权检测方法,通过集成多模态特征融合技术,实现对恶意代码的精准溯源和知识产权保护。
背景技术:
1、随着信息技术的快速发展与广泛应用,网络空间安全已成为全球关注的焦点之一。近年来,恶意代码的编写与传播呈现出多样化、隐蔽化和复杂化的特点,不仅严重威胁到个人隐私、企业数据乃至国家关键基础设施的安全,而且恶意代码的抄袭、剽窃和非法篡改也引发了诸多知识产权争议。传统的恶意代码检测技术往往侧重于单维度特征分析,但在面对日益狡猾的恶意代码作者群体时,仅凭单一特征往往难以准确识别其真实身份,更无法高效地区分原创代码与侵权代码。
2、与此同时,伴随开源文化的普及与发展,代码共享与复用的现象愈发普遍,这在一定程度上增加了区分合法引用与侵权使用的难度。现有的恶意代码检测手段在鉴别恶意代码作者个体独特编码习惯、识别代码片段间的相似度以及确定代码是否侵犯他人知识产权方面存在局限性。
3、因此,亟需一种能够融合多种类型特征,实现对恶意代码作者进行深层次挖掘与精准识别的技术方案,同时辅以高效的侵权检测机制,以期在有效遏制恶意代码扩散的同时,有力地保护软件开发者的知识产权不受侵害。本发明正是在这种背景下,提出了一种基于多模态特征融合的恶意代码作者识别与代码侵权检测方法,通过集成先进的人工智能和机器学习技术,对恶意代码进行全方位、多角度的分析,力求在网络安全防护和知识产权保护领域取得突破性进展。
技术实现思路
1、针对上述问题,本发明旨在提供一种基于多特征融合的恶意代码作者识别与代码侵权检测方法,采用独特的多特征融合的分类架构,提升检测方法的性能,并能够提升检测方法的准确性。并使其成功应用于未知的样本。技术方案如下:
2、一种基于多特征融合的恶意代码作者识别与代码侵权检测方法,包括以下步骤:
3、s1:数据收集、处理与标注:采用python爬虫技术,通过构建代理ip池、利用selenium模拟真实浏览器等方式绕过codeforces的反爬机制,同时在atcoder和牛客网上模拟用户登录获取api接口权限,从而从三个平台抓取并整合编译通过的活跃用户代码提交记录作为实验数据集。
4、s2:代码特征提取与特征融合:针对代码作者识别问题,我们系统地从用词特征、排版特征和句法特征三个维度进行深入分析与抽取。在用词特征提取过程中,我们首先依照各类编程规范进行分词处理,包括但不限于基于驼峰命名法、蛇形命名法等原则划分标识符,并在必要时采用固定长度子串提取以兼顾词汇统计和排版偏好,如空格、换行符使用习惯;同时,我们对关键词频次进行统计,并采用tf-idf算法计算稀有标识符命名的重要性,以及考虑注释的使用频率。在排版特征提取上,我们通过识别和区分代码中的复用模块(即“轮子”)和独特编写部分,利用哈希值比较复用模块的相似性,同时对独特编写部分进行行代码长度统计分析,并通过检测绝对与相对缩进规律探寻作者一致的缩进风格以及空行使用习惯。至于句法特征,我们借助抽象语法树(ast)构建和结构递归神经网络(recursive neural network,rvnn)技术,特别是经过改进的长短期记忆网络(lstm)技术并选用适用于树型结构的基于子树输出和的长短期记忆网络(child-sum tree-lstm)架构,以递归方式捕捉和转化代码的层次结构和语法联系,形成具有鲁棒性的句法特征表示。最后,我们通过双线性池化等特征融合技术,将提取出的多元特征高效地整合在一起,为后续的代码作者识别模型提供高质量的输入特征集。
5、s3:数据库查询:在一个利用用户编码特征向量构建的数据库中,我们面对的是基于k-最近邻查询来预测每段代码可能的前k个作者的问题。为解决高维数据的高效搜索难题,我们运用了近似最近邻搜索技术,并特别介绍了ivf-pq算法,该算法结合了聚类和量化策略以提高搜索速度和保持一定准确率:首先通过聚类划分数据集并设置nprobe值减少搜索范围,随后借助pq技术对各聚类内部的向量进行分块量化以实现高效存储和检索;针对数据库的动态插入需求,我们提出了优化的ivf-pq维护方案,即在插入新用户特征时,仅做必要的聚类和量化更新,并在聚类点数超标时通过重新聚类避免算法性能下滑;同时,我们还设计了一种启发式方法,通过在超空间中生成单位向量并在红黑树中维护投影值排序,利用多树查询合并结果并进行排序去重以获取近似最近邻输出。
6、s11:通过编写python网络爬虫代码来实现数据的爬取功能来爬取codeforces,atcoder,牛客等网站的提交记录,其中包括使用代理ip池和selenium应对反爬虫机制。
7、s12:处理收集到的代码数据集,并对其中同一作者的代码进行人工标注。
8、s21:代码用词特征提取:我们将采取分词的方式来提取代码中的标识符,并筛选出关键词或常用函数的标识符。然后,我们可以对每个词进行分词,根据代码的命名规范和约定进行进一步处理。同时,我们还可以提取关键词的频率特征以及是否使用注释等特征。
9、s22:代码排版特征提取:我们可以统计代码中空格、制表符、换行符的使用偏好,并分析大括号和标签的位置以及缩进风格等信息。通过识别代码的排版特征,我们可以对代码作者的风格和习惯进行分析。
10、s23:代码句法特征提取:我们可以构建代码的抽象语法树(ast)来分析代码的语法结构和组织方式。然后,我们可以利用基于子树输出和的长短期记忆网络(child-sumtree-lstm)等算法来提取代码的句法特征,并计算叶子节点的频率、深度等统计特征。
11、s24:特征融合:通过双线性池化算法等融合方法,我们可以将不同特征的信息进行整合和降维,从而获得更综合和准确的代码特征。这可以帮助我们更好地理解和区分不同代码作者的编码风格和习惯。
12、s31:数据库建立:根据每个用户的特征向量,建立一个数据库。
13、s32:根据具体情况对比并选择合适的近似最近邻搜索算法进行寻找,同时采用ivf-pq算法将数据集划分成为多个子集并进行量化。
14、s33:动态插入时维护数据库,方便随时的修改查询。
15、与现有技术相比,本发明的有益效果是:
16、(1)本发明提出了一套完整的恶意代码作者识别与代码侵权检测方法,能够实现对恶意代码作者的有效溯源以及对代码侵权进行有效检测。利用该方法,我们对每个用户的特征向量建立了一个数据库。这样我们可以对更多代码进行更高效的查询,同时扩充数据库。
17、(2)本发明没有局限于一次只对两份代码之间的相似度计算,在大规模运用时转向近似k近邻查询算法,与其他被广泛使用的代码作者识别与代码侵权检测方法比起来可以更好适应大规模的查询。
18、(3)本发明不止局限于代码的一种特征,我们提取了代码的用词特征、排版特征、句法特征等多项特征,同时池化融合时经过重要性的评估对每个特征赋予一定权重,这样让查询的准确度更加高,查询也更加科学。
19、(4)采用tree-lstm网络作为模型并进行训练,在处理长期依赖关系的任务有更大优势,与其他被广泛使用的代码作者识别与代码侵权检测方法比起来,在所有模型的评价指标上都表现更佳。
20、(5)考虑到了时效性的问题,采用定时网络爬虫,能够实时、快速地更新向量数据库,及时适应用户地代码风格。