[发明专利]Android应用程序密码学误用检测方法有效
申请号: | 201410781215.1 | 申请日: | 2014-12-16 |
公开(公告)号: | CN104484175B | 公开(公告)日: | 2017-11-28 |
发明(设计)人: | 张媛媛;束骏亮;杨文博;李卷孺;谷大武 | 申请(专利权)人: | 上海交通大学;上海交通大学中原研究院 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F21/60 |
代理公司: | 上海交达专利事务所31201 | 代理人: | 王毓理,王锡麟 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | android 应用程序 密码学 误用 检测 方法 | ||
1.一种Android应用程序密码学误用检测方法,其特征在于,包括:
第一步、对待检测应用程序进行反编译并生成代码库;
第二步、在代码库中查找与密码算法相关的代码段;
第三步、将和密码算法相关的代码段从原程序中剥离出来,得到完整的密码算法实现过程代码;
第四步、对第三步得到的每一个密码算法实现代码段进行数据抽象和过程建模处理,并通过模式匹配和事先指定的密码算法实现准则进行逐条比较,将不符合实现准则的条目输出并汇总形成安全分析结果;
所述的第四步具体包括:
4.1使用程序分析技术或关键字匹配技术识别代码段所使用的密码算法、分组模式,之后进行第一次的密码学误用存在性判断,针对识别出的密码算法和分组模式,比对密码学误用规则库,判断是否存在密码学误用的情况,作为结果汇总到最终的安全分析结果;
4.2在获得代码段所使用的密码算法、分组模式的基础上,根据不同密码算法和分组模式的特点,定位密码算法实现过程中的关键数据;
4.3对定位到的关键数据使用程序切片技术,获得与该关键数据的初始化、复制过程相关的代码段,进行第二次的密码学误用存在性判断,通过对代码段的分析,判断该关键数据相关的代码段是否存在密码误用的情况,作为结果汇总到最终的安全分析结果;
4.4汇总第一次和第二次密码学误用存在性判断的结果,生成待检测应用程序的密码学误用安全分析结果。
2.根据权利要求1所述的Android应用程序密码学误用检测方法,其特征是,所述的第一步具体包括:
1.1使用现有的Android应用程序逆向分析技术对待检测应用程序进行逆向处理,将已经编译完成的Android应用程序apk文件中的程序代码逻辑还原为smali代码或java代码;
1.2将逆向处理后的待检测应用程序所有类的smali代码或java代码进行汇总,形成代码库。
3.根据权利要求1所述的Android应用程序密码学误用检测方法,其特征是,所述的第二步具体包括:
2.1对待检测应用程序的代码库进行密码算法特征扫描,在代码库中定位到密码算法相关代码;
2.2将定位到的代码标记为和密码算法相关的代码,对整个代码库完成扫描后,当获得至少一个和密码算法相关的代码则执行第三步;
所述的密码算法特征包括:java中密码学库的关键API,常见密码算法特征字符串;
所述的密码算法相关代码包括:密码学API代码、密钥初始化代码、密码算法初始化代码、起始向量初始化代码以及密码算法中所有使用到参数的初始化、赋值代码。
4.根据权利要求1所述的Android应用程序密码学误用检测方法,其特征是,所述的第三步具体包括:
3.1以第二步中定位到的和密码算法操作相关的代码为目标,使用程序切片技术,将整个代码库中和定位到的密码算法操作相关的代码全部剥离出来,形成一段完整的密码算法实现代码段;
3.2对整个代码库中每一个和密码算法相关的代码段进行3.1步,直到将整个代码库中所有的密码算法实现代码段全部剥离,形成若干个完整的密码算法实现代码段;
所述的程序切片技术是指:选取至少一个变量作为切片的源头,将整个程序中所有和源头变量相关的指令全部提取出来的过程,其中相关指令包括:变量初始化、变量赋值、计算;
所述的剥离是指:将目标代码从整个程序的代码中分离出来的过程。
5.根据权利要求1所述的Android应用程序密码学误用检测方法,其特征是,所述的安全分析结果中包括待检测应用程序中存在的密码算法片段类型,每一个密码算法片段中是否存在密码学误用的情况,并列举所有的符合密码学误用规则库的情况。
6.根据权利要求1所述的Android应用程序密码学误用检测方法,其特征是,所述的密码学误用规则库包括:
1)加密时分组模式为ECB模式;
2)选择分组模式为CBC模式进行加密时,使用不随机的初始向量;
3)使用常量的加密密钥;
4)对于PBE,使用常数作为盐;
5)PBE加密中,使用少于1000次的迭代;
6)安全随机过程中使用静态的随机数种子。
7.根据权利要求1或6所述的Android应用程序密码学误用检测方法,其特征是,所述的密码学误用规则库采用可扩展结构,对于新确认的属于密码学误用的情况,使用规则库的描述方法将抽象成新的规则,经过审核后增加到密码学误用规则中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学;上海交通大学中原研究院,未经上海交通大学;上海交通大学中原研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410781215.1/1.html,转载请声明来源钻瓜专利网。