书签 分享 收藏 举报 版权申诉 / 8

ANDROID平台上已安装软件保护方法.pdf

  • 上传人:32
  • 文档编号:4027652
  • 上传时间:2018-08-12
  • 格式:PDF
  • 页数:8
  • 大小:414.50KB
  • 摘要
    申请专利号:

    CN201310522197.0

    申请日:

    2013.10.29

    公开号:

    CN104573490A

    公开日:

    2015.04.29

    当前法律状态:

    撤回

    有效性:

    无权

    法律详情:

    发明专利申请公布后的视为撤回IPC(主分类):G06F 21/51申请公布日:20150429|||实质审查的生效IPC(主分类):G06F 21/51申请日:20131029|||公开

    IPC分类号:

    G06F21/51(2013.01)I

    主分类号:

    G06F21/51

    申请人:

    桂林电子科技大学

    发明人:

    丁勇; 张皎; 李新国; 丁继强; 官秀国

    地址:

    541004广西壮族自治区桂林市金鸡路1号

    优先权:

    专利代理机构:

    桂林市持衡专利商标事务所有限公司45107

    代理人:

    陈跃琳

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开一种Android平台上已安装软件保护方法,当应用程序在安装时,先给优化后的可执行代码文件的摘要值利用私钥进行加密,最后将加密后的文件的摘要值进行存储。当应用程序在安装时对优化后的可执行文件的做单向散列运算生成的摘要值文件再利用密钥给生成的摘要值加密,最后再次给加密后的摘要值做单向散列运算得到摘要值,作为验证的根文件。本发明能够克服现有的保护方案的不足及Android本身验证机制的安全隐患,且对Android本身系统结构并无修改,不需要添加任何模块,对应用程序的开发人员不造成任何影响。

    权利要求书

    权利要求书
    1.  Android平台上已安装软件保护方法,其特征是包括如下步骤:
    (1)应用程序安装阶段:
    (1.1)调取应用程序安装完成后的优化代码文件即可执行文件,并对可执行文件进行单向散列函数运算,得到可执行文件的摘要值;
    (1.2)利用加密函数触发密钥生成器,生成加密密钥对可执行文件的摘要值进行加密,且调出提示信息让用户输入一个保护密钥的口令,最后将由口令保护的加密密钥保存到应用程序资源文件目录中;
    (1.3)对加密后的摘要值再进行单向散列函数运算,得到最终的摘要值,并将最终的摘要值保存到应用程序资源文件目录中;
    (2)启动过程验证阶段:
    (2.1)启动时由单向散列函数对可执行文件进行单向散列运算,得到可执行文件的摘要值;
    (2.2)由加密函数对得到的摘要值进行加密,并调用应用程序资源文件目录中的加密密钥,提示用户输入口令获得密钥;
    (2.3)对加密后的摘要值再进行单向散列函数运算,得到最终需要比对的摘要值;
    (2.4)由对比函数对步骤(1.3)所得的最终的摘要值和(2.3)所得到的最终需要比对的摘要值进行比较;若比较结果相同,则应用程序没有被篡改,继续启动应用程序;若比对结果不同,则应用程序被篡改,终止应用程序的启动。

    2.  根据权利要求1所述的Android平台上已安装软件保护方法,其特征是包括如下步骤:所述单向散列函数、密钥生成器函数、加密函数、提示用户输入保护密钥的函数和对比函数均已预先加载在应用程序所属的类中。

    说明书

    说明书Android平台上已安装软件保护方法
    技术领域
    本发明涉及软件安全领域,具体涉及一种Android(安卓)平台上已安装软件保护方法。
    背景技术
    随着智能手机的迅速发展,智能手机在人们生活中扮演着越来越重要的角色,如通信、交易、资讯等可以被方便快捷的满足,其中Android以其开源的特点受到各厂商、开发者以及用户的青睐。与此同时,由于Android系统代码开源的特点以及其自身特有的安全机制使其成为恶意软件攻击的主要目标。Android平台上软件的安全是至关重要的,目前针对Android平台上软件的保护方法主要有以下几种方法:
    1)利用代码混淆技术;
    2)NDK保护;
    3)外壳保护技术;
    4)防止重编译的签名技术。
    前三种是当前开发人员在开发应用程序时防止自己的作品被反编译采用的方式,但实际使用过程中却各有各的不足:1)在Android平台上经过混淆的文件中的类会“面目全非”,造成程序在运行时找不到特定的类而抛出异常,需要再针对异常信息进行解决,比较耗费精力。2)NDK保护中使用NDK编写Native代码实现软件的功能会增加代码量,调试难度增大,灵活性略显不足。3)外壳保护主要是针对使用Android NDK编写的Native代码,因此其不足性与2)中相同。
    最后一种方法使用比较多,开发者可以对应用程序进行签名,但基于Android本身的安全机制由开发者对应用程序进行签名后仍然不能保证其应用程序被反编译重新打包。Android平台上只是在应用程序安装时进行其完整性验证,当应用程序安装以后再次启动运行过程中便不再进行完整性验证,只是简单的比对.apk文件与class.dex文件的时间戳以及.apk文件的保存路径,当这三者通过比对验证以后便认为应用程序在安装后并没有被篡改重新打包,事实上,很多攻击者会在获得root权限后利用Android在安装应用程序后再次启动时并不进行完整性验证的这一安全隐患对已安装到Android上的应用程序进行解压反汇编注入恶意代码后再重新打包生成APK文件来实行攻击,针对应用程序再次启动时需要验证的时间戳以及文件的保存路径只需修改相应的时间戳及文件保存路径即可。
    另外,当前也有采用加载各种安全模块的方法,这些方法对Android本 身修改比较大,所需要编译加载的模块多,对应用程序的开发者也可能会造成不方便。
    Android上的应用程序运行在Dalvik虚拟机上,其可执行文件是dex文件。Android上应用程序的重编译实质上就是重新编译class.dex文件,应用程序被重新编译后其dex文件的Hash值会发生改变。当应用程序安装后会将class.dex文件优化保存,应用程序在后续的启动时便会直接提取出优化后的dex文件运行。然而优化后的dex文件在保存后可以被手动删除,当再次启动应用程序时若优化代码文件不存在,则系统会在启动时从apk文件中直接提取class.dex文件再次优化保存。因此若要保护已经安装的应用程序不被重新编译打包就应该在应用程序启动时对其可执行文件进行度量验证,可以通过检验class.dex文件的Hash值来判断应用程序是否被重编译过。
    发明内容
    本发明所要解决的技术问题是现有的保护方法的不足及Android本身验证机制的安全隐患,提供一种Android平台上已安装软件保护方法,其能够在应用程序启动时进行验证。
    为解决上述问题,本发明是通过以下技术方案实现的:
    一种Android平台上已安装软件保护方法,包括如下步骤:
    (1)应用程序安装阶段:
    (1.1)调取应用程序安装完成后的优化代码文件即可执行文件,并对可执行文件进行单向散列函数运算,得到可执行文件的摘要值;
    (1.2)利用加密函数触发密钥生成器,生成加密密钥对可执行文件的摘要值进行加密,且调出提示信息让用户输入一个保护密钥的口令,最后将由口令保护的加密密钥保存到应用程序资源文件目录中;
    (1.3)对加密后的摘要值再进行单向散列函数运算,得到最终的摘要值,并将最终的摘要值保存到应用程序资源文件目录中;
    (2)启动过程验证阶段:
    (2.1)启动时由单向散列函数对可执行文件进行单向散列运算,得到可执行文件的摘要值;
    (2.2)由加密函数对得到的摘要值进行加密,并调用应用程序资源文件目录中的加密密钥,提示用户输入口令获得密钥;
    (2.3)对加密后的摘要值再进行单向散列函数运算,得到最终需要比对的摘要值;
    (2.4)由对比函数对步骤(1.3)所得的最终的摘要值和(2.3)所得到的最终需要比对的摘要值进行比较;若比较结果相同,则应用程序没有被篡改,继续启动应用程序;若比对结果不同,则应用程序被篡改,终止应用程序的启动。
    上述方法中,所述单向散列函数、密钥生成器函数、加密函数、提示用 户输入保护密钥的函数和对比函数均已预先加载在应用程序所属的类中。
    由于Android上没有安全的可存储结构,仅将可执行文件生成的摘要值保存在本地同样会被攻击者删除并生成其需要的摘要值文件。因此,参照应用程序包中签名的生成过程,当应用程序在安装时,应给优化后的可执行代码文件的摘要值利用私钥进行加密,最后将加密后的文件的摘要值存储即可。当应用程序在安装时对优化后的可执行文件的做单向散列运算生成的摘要值文件再利用密钥(其中由用户输入一个口令对密钥进行保护)给生成的摘要值加密,最后再次给加密后的摘要值做单向散列运算得到摘要值,作为验证的根文件。并将文件的摘要值保存到远端服务器或本地(保存到应用程序的资源文件目录下即可),这样即使加密后文件的摘要值保存在本地被攻击者删除,攻击者也无法生成其需要的摘要值。具体过程是在加载这个应用程序的类中添加单向散列函数及加密函数完成。
    与现有技术相比,本发明运用了两次单向散列函数及对称加密技术,主要有以下优点:
    1)对Android本身系统结构并无修改,不需要添加任何模块,对应用程序的开发人员不造成任何影响。
    2)用口令实现对密钥的保护,不需要添加额外的可信安全存储模块,每个密钥存储在其应用程序包的资源文件目录中,有效的避免了密钥管理的复杂问题。
    3)若攻击者将密钥和加密文件的摘要值删除并且篡改应用程序,在没有加密密钥的情况下攻击者无法生成验证所需要的摘要值。倘若攻击者重新选择密钥进行加密,则为了满足条件,攻击者在将密钥存储到资源文件目录中时需要输入口令保护密钥,但攻击者无法获得用户口令,因此,即使攻击者篡改应用程序并在资源文件目录中存储验证时所需要的密钥及摘要值,但在应用程序启动时由于口令不匹配仍然会判断出应用程序被篡改,终止应用程序的启动。
    附图说明
    图1为本发明应用程序安装阶段的流程图;
    图2为本发明启动过程验证阶段的流程图。
    具体实施方式
    一种Android平台上已安装软件保护方法,包括如下步骤:
    (1)方法的前提及初始化
    ①本方法认为安装应用程序时从应用商店上下载的应用都是安全的,不含有任何恶意代码。
    ②当应用程序启动时系统会找到加载这个应用程序所属的类,在加载这个应用程序的类中添加进行单向散列函数、密钥生成器函数、加密函数、提 示用户输入保护加密密钥的函数和对比函数。
    现在对几种技术及对应的算法做下简单介绍:
    对称加密技术:对称加密算法又称传统密码算法,在多数对称加密算法中,加密密钥和解密密钥是相同的。主要的对称加密算法有DES、三重DES、AES等,加/解密运算速度较快。
    单向散列函数:单向散列函数(又称哈希函数、杂凑函数)可以将任意一段长度的消息不可逆转的转换为一段固定长度的散列密文,要找到两个不同的m和m1,使其分别哈希后的值相等很难。主要应用有MD5、SHA-1、SHA-2等。
    ③本方法中涉及的相关技术,如单向散列函数、对称加密技术及口令保护等。本方案中对上述加载的各项函数算法并没有指定性需求,具体实现时候可按照实际需求选取某种具体的函数算法。
    (2)应用程序安装阶段(参加图1):
    (2.1)调取应用程序安装完成后的优化代码文件即可执行文件,并对可执行文件进行单向散列函数运算,得到可执行文件的摘要值;
    (2.2)利用加密函数触发密钥生成器,生成加密密钥对可执行文件的摘要值进行加密,且调出提示信息让用户输入一个保护密钥的口令,最后将由口令保护的加密密钥保存到应用程序资源文件目录中;
    (2.3)对加密后的摘要值再进行单向散列函数运算,得到最终的摘要值,并将最终的摘要值保存到应用程序资源文件目录中;
    (3)启动过程验证阶段(参加图2):
    (3.1)启动时由单向散列函数对可执行文件进行单向散列运算,得到可执行文件的摘要值;
    (3.2)由加密函数对得到的摘要值进行加密,并调用应用程序资源文件目录中的加密密钥,提示用户输入口令获得密钥;
    (3.3)对加密后的摘要值再进行单向散列函数运算,得到最终需要比对的摘要值;
    (3.4)由对比函数对步骤(2.3)所得的最终的摘要值和(3.3)所得到的最终需要比对的摘要值进行比较;若比较结果相同,则应用程序没有被篡改,继续启动应用程序;若比对结果不同,则应用程序被篡改,终止应用程序的启动。

    关 键  词:
    ANDROID 平台 安装 软件 保护 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:ANDROID平台上已安装软件保护方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-4027652.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1