Android应用程序密码学误用检测方法及装置制造方法及图纸

技术编号:38032953 阅读:5 留言:0更新日期:2023-06-30 10:59
本发明专利技术公开了一种Android应用程序密码学误用检测方法及装置,方法包括以下步骤:对待检测Android应用程序进行反编译,得到smali文件;在smali代码中寻找和密码学算法相关的代码段,并做标签;对获取的代码段数据进行特征提取,构建训练集;利用训练集进行分类模型训练;利用训练好的分类模型检测Android应用程序,并输出密码学误用检测报告。本发明专利技术基于Android应用程序密码学检测问题建立模型,判断是否存在密码学API误用,由此实现基于机器学习的安卓密码学误用检测,能够快速有效的检测Android应用程序的密码学误用情况,有效识别Android应用程序密码学误用的潜在威胁。别Android应用程序密码学误用的潜在威胁。别Android应用程序密码学误用的潜在威胁。

【技术实现步骤摘要】
Android应用程序密码学误用检测方法及装置


[0001]本专利技术涉及一种Android应用程序密码学误用检测方法及装置,属于密码学误用检测


技术介绍

[0002]随着智能手机和互联网技术的发展,各种基于安卓系统的移动应用应运而生,对现代生活方式产生了深刻影响。安卓系统因为它的开源,开放等特性,已经成为了全球占有率最高的智能移动设备的操作系统。在实际Android应用程序的开发过程中,密码学API为开发者所广泛使用。借助Android系统的密码学API,开发者可自己实现数据的加解密和数字签名,同时,各互联网公司也提供了由自身开发的第三方加密库(例如Google的Tinkl6,Facebook的Conceal71)。然而,对于密码学API的广泛使用在改进应用程序安全属性的同时,也存在大量问题。
[0003]在安卓应用开发过程中由于开发者对于密码学知识运用不当,会使软件产生不安全因素,攻击者可以利用这些加密漏洞获取用户敏感信息等。现阶段在Android密码误用检测方面,基本采用静态和动态检测方法,但是,目前尚没有统一而完备的误用规则集合,能够对应用程序中存在的各种误用进行较全面的识别,并且此类方法基本上依赖固定的规则,容易产生假阴性和假阳性等误报,从而影响最终检测结果的准确性。
[0004]因此,需要提出一种新的Android应用程序密码学误用检测方法。

技术实现思路

[0005]为了解决上述问题,本专利技术提出了一种Android应用程序密码学误用检测方法及装置,能够检测Android应用程序密码学误用情况,有效识别Android应用程序密码学误用的潜在威胁。
[0006]本专利技术解决其技术问题采取的技术方案是:
[0007]第一方面,本专利技术实施例提供的一种Android应用程序密码学误用检测方法,包括以下步骤:
[0008]对待检测Android应用程序进行反编译,得到smali文件;
[0009]在smali代码中寻找和密码学算法相关的代码段,并做标签;
[0010]对获取的代码段数据进行特征提取,构建训练集;
[0011]利用训练集进行分类模型训练;
[0012]用训练好的分类模型检测Android应用程序,并输出密码学误用检测报告。
[0013]作为本实施例一种可能的实现方式,所述对待检测Android应用程序进行反编译,得到smali文件,包括:
[0014]利用apktool工具将Android应用程序进行反编译,得到smali文件,所述smali文件的代码包括了所有类的代码。
[0015]作为本实施例一种可能的实现方式,所述在smali代码中寻找和密码学算法相关
的代码段,并做标签,包括:
[0016]对smali文件进行语法分析和词法分析,将smali文件中的smali语法抽象为smali语法树;
[0017]对smali语法树进行静态扫描,定位到关键密码算法实现过程的API,根据敏感API识别关键代码,利用前后向程序切片技术得到与密码学相关的代码段;
[0018]根据密码学规则为代码片段做分类。
[0019]作为本实施例一种可能的实现方式,所述对smali语法树进行静态扫描,定位到关键密码算法实现过程的API,根据敏感API识别关键代码,利用前后向程序切片技术得到与密码学相关的代码段,包括:
[0020]对smali语法树进行静态扫描,寻找java密码学库要使用的API,所述API为dofinal()函数;
[0021]以dofinal()函数为目标,使用程序切片技术,将dofinal()函数涉及到的相关变量的生成、赋值代码从代码库中剥离出来,获得和dofina1()相关的整个加密算法实现代码段,所述相关变量包括但不限于:加密算法实例、明文变量、密钥变量、初始向量变量。
[0022]作为本实施例一种可能的实现方式,所述根据密码学规则为代码片段做分类,包括:
[0023]分析代码段使用的密码算法、分组模式,所述密码算法包括AES算法、MD5算法、RSA算法,所述分组模式包括CBC分组模式和ECB分组模式;
[0024]判断代码段中使用的密码学算法是否安全,将安全的密码学算法标记“1”,不安全的密码学算法标记“0”。
[0025]作为本实施例一种可能的实现方式,所述对获取的代码段数据进行特征提取,构建训练集,包括:
[0026]构建语料库,对代码片段做分词处理,将代码行分成符号集,将所有的符号构建成语料库,每一行语料看作一个文本;
[0027]采用TF

IDF方法将整组代码片段转换为矩阵进行特征提取,构建训练集。
[0028]作为本实施例一种可能的实现方式,所述采用TF

IDF方法将整组代码片段转换为矩阵进行特征提取,构建训练集,包括:
[0029]采用TF

IDF方法将整组代码片段转换为矩阵,每个代码片段都被视为一个文档,调用CountVectorizer()函数将文本中的词汇转换成词频矩阵:
[0030][0031]其中,tf
d
表示一个词在当前文章中出现的频率,t
d
表示词语d在本文t中出现的频数,t
a
表示全文的文本数;
[0032]逆文档频率IDF为:
[0033][0034]其中,N指语料库中的全部文档数,n指包含词语d的文档数;
[0035]调用函数TfidfTransformer(),把得到的词频矩阵作为输入,得到TF

IDF格式的
输出:
[0036][0037]通过fit_transform()拟合数据,将TF

IDF格式的输出转化为稀疏矩阵的标准形式化向量,得到的数据集作为训练集。
[0038]作为本实施例一种可能的实现方式,所述利用训练集进行分类模型训练,包括:
[0039]使用支持向量机分类器进行分类,构建一个二分类器;
[0040]使用交叉验证的方法来训练和验证二分类器,生成为每个类别的加密滥用训练不同的支持向量机分类器。
[0041]作为本实施例一种可能的实现方式,所述用训练好的分类模型检测Android应用程序,并输出密码学误用检测报告,包括:
[0042]将待识别的Android应用程序经过处理后输入到训练好的分类模型,分类模型输出密码学误用检测报告。
[0043]第二方面,本专利技术实施例提供的一种Android应用程序密码学误用检测装置,包括:
[0044]程序反编译模块,用于对待检测Android应用程序进行反编译,得到smali文件;
[0045]代码段寻找模块,用于在smali代码中寻找和密码学算法相关的代码段,并做标签;
[0046]特征提取模块,用于对获取的代码段数据进行特征提取,构建训练集;本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Android应用程序密码学误用检测方法,其特征在于,包括以下步骤:对待检测Android应用程序进行反编译,得到smali文件;在smali代码中寻找和密码学算法相关的代码段,并做标签;对获取的代码段数据进行特征提取,构建训练集;利用训练集进行分类模型训练;利用训练好的分类模型检测Android应用程序,并输出密码学误用检测报告。2.根据权利要求1所述的Android应用程序密码学误用检测方法,其特征在于,所述在smali代码中寻找和密码学算法相关的代码段,并做标签,包括:对smali文件进行语法分析和词法分析,将smali文件中的smali语法抽象为smali语法树;对smali语法树进行静态扫描,定位到关键密码算法实现过程的API,根据敏感API识别关键代码,利用前后向程序切片技术得到与密码学相关的代码段;根据密码学规则为代码片段做分类。3.根据权利要求2所述的Android应用程序密码学误用检测方法,其特征在于,所述对smali语法树进行静态扫描,定位到关键密码算法实现过程的API,根据敏感API识别关键代码,利用前后向程序切片技术得到与密码学相关的代码段,包括:对smali语法树进行静态扫描,寻找java密码学库要使用的API,所述API为dofinal()函数;以dofinal()函数为目标,使用程序切片技术,将dofinal()函数涉及到的相关变量的生成、赋值代码从代码库中剥离出来,获得和dofina1()相关的整个加密算法实现代码段,所述相关变量包括但不限于:加密算法实例、明文变量、密钥变量、初始向量变量。4.根据权利要求2所述的Android应用程序密码学误用检测方法,其特征在于,所述根据密码学规则为代码片段做分类,包括:分析代码段使用的密码算法、分组模式,所述密码算法包括AES算法、MD5算法、RSA算法,所述分组模式包括CBC分组模式和ECB分组模式;判断代码段中使用的密码学算法是否安全,将安全的密码学算法标记“1”,不安全的密码学算法标记“0”。5.根据权利要求1所述的Android应用程序密码学误用检测方法,其特征在于,所述对获取的代码段数据进行特征提取,构建训练集,包括:构建语料库,对代码片段做分词处理,将代码行分成符号集,将所有的符号构建成语料库,每一行语料看作一个文本;采用TF

IDF方法将整组代码片段转换为矩阵进行特征提取,构建训练集。6.根据权利要求5所述的Android应用程序密码学误用检测方法...

【专利技术属性】
技术研发人员:王立真王继志孔令蕊赵悦隋彤彤
申请(专利权)人:齐鲁工业大学山东省科学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1