CN104573490A - Android平台上已安装软件保护方法 - Google Patents

Android平台上已安装软件保护方法 Download PDF

Info

Publication number
CN104573490A
CN104573490A CN201310522197.0A CN201310522197A CN104573490A CN 104573490 A CN104573490 A CN 104573490A CN 201310522197 A CN201310522197 A CN 201310522197A CN 104573490 A CN104573490 A CN 104573490A
Authority
CN
China
Prior art keywords
digest value
application program
file
key
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201310522197.0A
Other languages
English (en)
Inventor
丁勇
张皎
李新国
丁继强
官秀国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guilin University of Electronic Technology
Original Assignee
Guilin University of Electronic Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guilin University of Electronic Technology filed Critical Guilin University of Electronic Technology
Priority to CN201310522197.0A priority Critical patent/CN104573490A/zh
Publication of CN104573490A publication Critical patent/CN104573490A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

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

Description

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)所得到的最终需要比对的摘要值进行比较;若比较结果相同,则应用程序没有被篡改,继续启动应用程序;若比对结果不同,则应用程序被篡改,终止应用程序的启动。

Claims (2)

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平台上已安装软件保护方法,其特征是包括如下步骤:所述单向散列函数、密钥生成器函数、加密函数、提示用户输入保护密钥的函数和对比函数均已预先加载在应用程序所属的类中。
CN201310522197.0A 2013-10-29 2013-10-29 Android平台上已安装软件保护方法 Pending CN104573490A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310522197.0A CN104573490A (zh) 2013-10-29 2013-10-29 Android平台上已安装软件保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310522197.0A CN104573490A (zh) 2013-10-29 2013-10-29 Android平台上已安装软件保护方法

Publications (1)

Publication Number Publication Date
CN104573490A true CN104573490A (zh) 2015-04-29

Family

ID=53089530

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310522197.0A Pending CN104573490A (zh) 2013-10-29 2013-10-29 Android平台上已安装软件保护方法

Country Status (1)

Country Link
CN (1) CN104573490A (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105450662A (zh) * 2015-12-25 2016-03-30 小米科技有限责任公司 加密方法及装置
CN106169052A (zh) * 2016-07-19 2016-11-30 北京海泰方圆科技股份有限公司 应用程序的处理方法、装置及移动终端
CN106548092A (zh) * 2016-10-31 2017-03-29 杭州嘉楠耘智信息科技有限公司 一种文件处理方法及装置
CN106650448A (zh) * 2016-12-29 2017-05-10 郑州云海信息技术有限公司 一种可执行文件的控制方法和装置
CN106650495A (zh) * 2016-12-16 2017-05-10 杭州嘉楠耘智信息科技有限公司 一种文件验证方法及装置
CN107092816A (zh) * 2017-02-27 2017-08-25 广东工业大学 一种Android应用程序加固方法
CN107257282A (zh) * 2017-05-18 2017-10-17 柚子(北京)移动技术有限公司 一种基于rc4算法的代码全包加密方法
CN107451482A (zh) * 2017-08-01 2017-12-08 北京数字时代科技有限公司 一种移动app的版权保护方法及系统
CN107729746A (zh) * 2017-11-28 2018-02-23 郑州云海信息技术有限公司 一种基于数字签名的已安装应用程序防篡改方法及系统
CN107908962A (zh) * 2017-12-05 2018-04-13 深圳鼎智通讯股份有限公司 应用于Android智能终端的自检方法
TWI648648B (zh) * 2017-04-19 2019-01-21 大陸商北京梆梆安全科技有限公司 安卓平台上可執行程式的保護方法
CN109313677A (zh) * 2016-05-09 2019-02-05 艾锐势有限责任公司 用于动态可执行验证的方法和装置
CN109981283A (zh) * 2019-02-28 2019-07-05 西安理工大学 Android平台消息驱动核心代码完整性检测系统及方法
CN110008719A (zh) * 2019-03-11 2019-07-12 新华三信息安全技术有限公司 一种文件处理、文件检测方法及装置
CN110086828A (zh) * 2019-05-14 2019-08-02 长讯通信服务有限公司 基于网页云服务的通信工程项目生命周期可信管理方法
CN112445487A (zh) * 2019-09-02 2021-03-05 深圳Tcl新技术有限公司 一种dex优化方法、系统、智能终端及存储介质
CN112613033A (zh) * 2020-12-15 2021-04-06 北京鼎普科技股份有限公司 一种可执行文件安全调用的方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1512355A (zh) * 2002-12-30 2004-07-14 成都三零盛安信息系统有限公司 一种elf文件格式的代码签名验证方法
CN101175270A (zh) * 2006-10-31 2008-05-07 华为技术有限公司 通信终端及应用于通信终端的启动方法及装置
CN101593259A (zh) * 2009-06-29 2009-12-02 北京航空航天大学 软件完整性验证方法及系统
CN101615230A (zh) * 2009-08-07 2009-12-30 浪潮电子信息产业股份有限公司 一种文件可信执行和可信保护的方法
CN101924739A (zh) * 2009-06-10 2010-12-22 北京环球聚浪网络科技有限公司 一种软件证书及私钥的加密存储并找回的方法
CN102355350A (zh) * 2011-06-30 2012-02-15 北京邮电大学 一种用于移动智能终端的文件加密方法和系统
CN102855439A (zh) * 2012-07-26 2013-01-02 深圳市赛格导航科技股份有限公司 一种执行文件自校验方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1512355A (zh) * 2002-12-30 2004-07-14 成都三零盛安信息系统有限公司 一种elf文件格式的代码签名验证方法
CN101175270A (zh) * 2006-10-31 2008-05-07 华为技术有限公司 通信终端及应用于通信终端的启动方法及装置
CN101924739A (zh) * 2009-06-10 2010-12-22 北京环球聚浪网络科技有限公司 一种软件证书及私钥的加密存储并找回的方法
CN101593259A (zh) * 2009-06-29 2009-12-02 北京航空航天大学 软件完整性验证方法及系统
CN101615230A (zh) * 2009-08-07 2009-12-30 浪潮电子信息产业股份有限公司 一种文件可信执行和可信保护的方法
CN102355350A (zh) * 2011-06-30 2012-02-15 北京邮电大学 一种用于移动智能终端的文件加密方法和系统
CN102855439A (zh) * 2012-07-26 2013-01-02 深圳市赛格导航科技股份有限公司 一种执行文件自校验方法及装置

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105450662A (zh) * 2015-12-25 2016-03-30 小米科技有限责任公司 加密方法及装置
CN109313677A (zh) * 2016-05-09 2019-02-05 艾锐势有限责任公司 用于动态可执行验证的方法和装置
CN109313677B (zh) * 2016-05-09 2022-02-11 艾锐势有限责任公司 用于动态可执行验证的方法和装置
CN106169052A (zh) * 2016-07-19 2016-11-30 北京海泰方圆科技股份有限公司 应用程序的处理方法、装置及移动终端
CN106548092A (zh) * 2016-10-31 2017-03-29 杭州嘉楠耘智信息科技有限公司 一种文件处理方法及装置
CN106548092B (zh) * 2016-10-31 2019-07-16 杭州嘉楠耘智信息科技有限公司 一种文件处理方法及装置
CN106650495A (zh) * 2016-12-16 2017-05-10 杭州嘉楠耘智信息科技有限公司 一种文件验证方法及装置
CN106650495B (zh) * 2016-12-16 2019-07-16 杭州嘉楠耘智信息科技有限公司 一种文件验证方法及装置
CN106650448A (zh) * 2016-12-29 2017-05-10 郑州云海信息技术有限公司 一种可执行文件的控制方法和装置
CN107092816A (zh) * 2017-02-27 2017-08-25 广东工业大学 一种Android应用程序加固方法
CN107092816B (zh) * 2017-02-27 2020-07-28 广东工业大学 一种Android应用程序加固方法
TWI648648B (zh) * 2017-04-19 2019-01-21 大陸商北京梆梆安全科技有限公司 安卓平台上可執行程式的保護方法
CN107257282B (zh) * 2017-05-18 2021-01-08 柚子(北京)移动技术有限公司 一种基于rc4算法的代码全包加密方法
CN107257282A (zh) * 2017-05-18 2017-10-17 柚子(北京)移动技术有限公司 一种基于rc4算法的代码全包加密方法
CN107451482A (zh) * 2017-08-01 2017-12-08 北京数字时代科技有限公司 一种移动app的版权保护方法及系统
CN107451482B (zh) * 2017-08-01 2020-06-05 北京数字时代科技有限公司 一种移动app的版权保护方法及系统
CN107729746A (zh) * 2017-11-28 2018-02-23 郑州云海信息技术有限公司 一种基于数字签名的已安装应用程序防篡改方法及系统
CN107908962A (zh) * 2017-12-05 2018-04-13 深圳鼎智通讯股份有限公司 应用于Android智能终端的自检方法
CN109981283A (zh) * 2019-02-28 2019-07-05 西安理工大学 Android平台消息驱动核心代码完整性检测系统及方法
CN110008719A (zh) * 2019-03-11 2019-07-12 新华三信息安全技术有限公司 一种文件处理、文件检测方法及装置
CN110086828A (zh) * 2019-05-14 2019-08-02 长讯通信服务有限公司 基于网页云服务的通信工程项目生命周期可信管理方法
CN112445487A (zh) * 2019-09-02 2021-03-05 深圳Tcl新技术有限公司 一种dex优化方法、系统、智能终端及存储介质
CN112613033A (zh) * 2020-12-15 2021-04-06 北京鼎普科技股份有限公司 一种可执行文件安全调用的方法及装置

Similar Documents

Publication Publication Date Title
CN104573490A (zh) Android平台上已安装软件保护方法
Buhren et al. Insecure until proven updated: analyzing AMD SEV's remote attestation
KR102217501B1 (ko) 신뢰 실행 환경을 갖는 모바일 디바이스
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
CN107977553B (zh) 移动应用程序的安全加固的方法及装置
CN105426708B (zh) 一种Android系统的应用程序的加固方法
US9405912B2 (en) Hardware rooted attestation
EP2795829B1 (en) Cryptographic system and methodology for securing software cryptography
CN103797489A (zh) 用于安全地将程序执行绑定到且节点锁定到受信任的签名授权机构的系统和方法
CN103516728A (zh) 一种防止云平台虚拟机非法启动的镜像加解密方法
CN104268444A (zh) 一种云OS Java源代码保护方法
CN102609665B (zh) 对用户程序签名及验证用户程序签名的方法及装置
CN104680061A (zh) 一种Android环境下应用程序启动中代码签名验证的方法和系统
KR20110093468A (ko) 사용자 단말 장치, 서버 및 그 제어 방법
Banescu et al. Software-based protection against changeware
JP2019057167A (ja) コンピュータプログラム、デバイス及び判定方法
CN103812862A (zh) 可信安全云计算构成方法
CN103064706A (zh) 虚拟机系统的启动方法和装置
WO2023001624A1 (en) Securely executing software based on cryptographically verified instructions
Lee et al. Security issues on the CNG cryptography library (Cryptography API: Next Generation)
Petrov Android password managers and vault applications: data storage security issues identification
Dave et al. Care: Lightweight attack resilient secure boot architecturewith onboard recovery for risc-v based soc
Choudary et al. Infiltrate the vault: Security analysis and decryption of lion full disk encryption
CN109784072B (zh) 一种安全文件管理方法和系统
CN111400771A (zh) 目标分区的校验方法及装置、存储介质、计算机设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150429