[发明专利]Android应用程序密码学误用检测方法有效
申请号: | 201410781215.1 | 申请日: | 2014-12-16 |
公开(公告)号: | CN104484175B | 公开(公告)日: | 2017-11-28 |
发明(设计)人: | 张媛媛;束骏亮;杨文博;李卷孺;谷大武 | 申请(专利权)人: | 上海交通大学;上海交通大学中原研究院 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F21/60 |
代理公司: | 上海交达专利事务所31201 | 代理人: | 王毓理,王锡麟 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | android 应用程序 密码学 误用 检测 方法 | ||
技术领域
本发明涉及的是一种移动智能终端领域的应用程序安全分析技术,涉及一种Android应用程序中是否存在密码学误用漏洞的检测方案。
背景技术
随着移动互联网的发展,移动智能终端在人们的日常生活中正扮演着越来越重要的角色,随之而来的就是移动智能终端存储、处理越来越多的和用户隐私或利益紧密相关的重要数据。在处理这些重要的数据时,为了保证这些数据的安全性,应用程序会在存储、发送这些数据前,对数据进行加密处理。
应用程序中对数据进行加解密的一般都是成熟的密码学算法。作为成熟的密码学算法,这些算法都经过世界上众多密码学研究人员的分析检验,本身并不存在缺陷。但是由于应用程序开发人员对密码学知识的缺失,在使用代码实现这些密码学算法的时候,往往不能正确的使用这些密码学算法,这些在使用密码学算法时出现的代码上的不规范将会导致原本在设计上安全的数据加密过程无法达到预期的安全效果。
近年来,安全研究人员发现这样的密码学误用问题在Android平台的应用程序层出不穷,但是业界对这类问题还不够重视,也没有有效的检测方法。
经过对现有技术的检索发现,中国专利文献号CN101393521公开(公告)日2009.03.25,公开了一种软件分析和信息安全技术领域的Windows应用程序内部固化数据的提取系统,可执行文件类型信息识别模块对可执行文件的格式、开发语言种类、保护类型进行识别;可执行文件反保护模块负责对受保护代码加壳保护的可执行文件进行反保护;可执行文件代码分析模块对可执行文件进行反汇编、反编译,得到汇编和高级语言代码,并给出结构和逻辑信息;密码学分析模块负责在可执行文件中有加密存储的固定的数据信息时,对可执行文件中采用的密码学算法进行识别;可执行文件调试与信息提取模块在其运行的中间过程中查看运行期间程序内部状态,从而提取信息。该技术能有效地提取和分析固定在程序中的数据信息,给出其产生方法和原始信息。但该技术的缺陷和不足在于:第一,该程序分析技术针对的平台是Windows,无法处理Android平台的应用程序,第二,该技术的主要功能是一种提取Windows应用程序内部信息的技术,这里所说的信息包括应用程序格式、开发语言、保护类型、所使用的密码算法等。
综上所述,目前继续一种基于Android应用程序的密码学误用检测方法以填补该方面的空白。
发明内容
本发明针对现有技术存在的上述不足,提出一种Android应用程序密码学误用检测方法,能够通过对Android应用程序的静态分析,自动化的判断应用程序中所使用的密码算法种类,自动提取密码算法相关代码片段,对代码段进行安全分析,发现密码算法实现过程中存在问题的环节,最终得到应用程序密码学误用安全分析结果。
本发明是通过以下技术方案实现的,本发明包括以下步骤:
第一步、对待检测应用程序进行反编译并生成代码库,具体步骤包括:
1.1使用现有的Android应用程序逆向分析技术对待检测应用程序进行逆向处理,将已经编译完成的Android应用程序apk文件中的程序代码逻辑还原为smali代码或java代码。
1.2将逆向处理后的待检测应用程序所有类的smali代码或java代码进行汇总,形成代码库。
第二步、在代码库中查找与密码学算法相关的代码段,具体步骤包括:
2.1对待检测应用程序的代码库进行密码学算法特征扫描,在代码库中定位到密码学算法相关的代码。
所述的密码学算法特征包括但不限于:java中密码学库的关键API,常见密码学算法特征字符串。
所述的密码学算法相关代码包括但不限于:密码学API代码、密钥初始化代码、密码学算法初始化代码、起始向量初始化代码以及密码学算法中所有使用到参数的初始化、赋值代码。
2.2将定位到的代码标记为和密码学算法相关的代码,对整个代码库完成扫描后,当获得至少一个和密码学算法相关的代码则执行第三步。
第三步、将和密码算法相关的代码段从原程序中剥离出来,得到完整的密码算法实现过程代码,具体步骤包括:
3.1以第二步中定位到的和密码学算法操作相关的代码为目标,使用程序切片技术,将整个代码库中和定位到的密码学算法操作相关的代码全部剥离出来,形成一段完整的密码学算法实现代码段。
所述的程序切片技术是指:选取至少一个变量作为切片的源头,将整个程序中所有和源头变量相关的指令全部提取出来的过程,其中相关指令包括但不限于:变量初始化、变量赋值、计算等。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学;上海交通大学中原研究院,未经上海交通大学;上海交通大学中原研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410781215.1/2.html,转载请声明来源钻瓜专利网。