CN105426702A - 基于安卓操作系统的应用程序加密解密方法和装置 - Google Patents

基于安卓操作系统的应用程序加密解密方法和装置 Download PDF

Info

Publication number
CN105426702A
CN105426702A CN201510702686.3A CN201510702686A CN105426702A CN 105426702 A CN105426702 A CN 105426702A CN 201510702686 A CN201510702686 A CN 201510702686A CN 105426702 A CN105426702 A CN 105426702A
Authority
CN
China
Prior art keywords
application program
white box
ciphertext
added
box data
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
CN201510702686.3A
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN201510702686.3A priority Critical patent/CN105426702A/zh
Publication of CN105426702A publication Critical patent/CN105426702A/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
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities

Abstract

本发明提供了一种基于安卓操作系统的应用程序加密解密方法和装置。该方法包括:随机生成与安卓操作系统的应用程序对应的安全密钥;采用安全密钥生成白盒算法的白盒数据,并将白盒数据添加到应用程序中;将安全密钥作为黑盒算法的参数,采用黑盒算法对应用程序的程序字节码进行加密生成密文;并将密文添加到应用程序中。该方法实现了对应用程序的安全加密,使该加密后的应用程序在不可信任的环境下能够安全解密,进而对基于安卓操作系统的应用程序进行有效的保护和加固。

Description

基于安卓操作系统的应用程序加密解密方法和装置
技术领域
本发明实施例涉及数据安全技术领域,尤其涉及一种基于安卓操作系统的应用程序加密解密方法和装置。
背景技术
随着智能手机的发展,安卓操作系统已经得到广大开发者以及许多厂商的支持,同时安卓操作系统的应用程序数目也飞速增长。但是,由于安卓操作系统自身的开源性,导致应用程序的运行环境极度透明,给应用程序开发者提供更多功能接口的同时,也为攻击者提供了便利。攻击者通过非法拷贝、逆向工程、反编译等手段不断威胁着安卓操作系统和应用程序的安全,给正常应用程序开发者带来严重的损害。
现有的对安卓应用程序的保护方法还采用传统的密钥加密方法,由于传统的密钥加密方法完全依托于密钥的安全,而攻击者能获得安卓操作系统中的任意信息,其中也包括密钥,导致传统的密钥加密方法形同虚设,不能对安卓应用程序进行有效的保护。
发明内容
本发明实施例提供一种基于安卓操作系统的应用程序加密解密方法和装置,该方法实现了对应用程序的安全加密,使该加密后的应用程序在不可信任的环境下能够安全解密,进而对基于安卓操作系统的应用程序进行有效的保护和加固。
第一方面,本发明实施例提供一种基于安卓操作系统的应用程序加密方法,包括:
随机生成与安卓操作系统的应用程序对应的安全密钥;
采用所述安全密钥生成白盒算法的白盒数据,并将所述白盒数据添加到所述应用程序中;
将所述安全密钥作为黑盒算法的参数,采用所述黑盒算法对所述应用程序的程序字节码进行加密生成密文;并将所述密文添加到所述应用程序中。
第二方面,本发明实施例提供一种基于安卓操作系统的应用程序解密方法,包括:
在应用程序启动过程中,获取所述应用程序中的白盒数据,所述白盒数据是采用安全密钥生成的;
采用所述白盒数据对所述应用程序中的密文进行解密,所述密文由采用黑盒算法对所述应用程序的程序字节码进行加密后生成的。
第三方面,本发明实施例提供一种基于安卓操作系统的应用程序加密装置,包括:
生成模块,用于随机生成与安卓操作系统的应用程序对应的安全密钥;
所述生成模块,还用于采用所述安全密钥生成白盒算法的白盒数据;
第一添加模块,用于将所述白盒数据添加到所述应用程序中;
加密模块,用于将所述安全密钥作为黑盒算法的参数,采用所述黑盒算法对所述应用程序的程序字节码进行加密生成密文;
所述第一添加模块,还用于将所述密文添加到所述应用程序中。
第四方面,本发明实施例提供一种基于安卓操作系统的应用程序解密装置,包括:
获取模块,用于在应用程序启动过程中,获取所述应用程序中的白盒数据,所述白盒数据是采用安全密钥生成的;
解密模块,用于采用所述白盒数据对所述应用程序中的密文进行解密,所述密文由采用黑盒算法对所述应用程序的程序字节码进行加密后生成的。
本发明实施例提供一种基于安卓操作系统的应用程序加密解密方法和装置。该方法包括:随机生成与安卓操作系统的应用程序对应的安全密钥;采用安全密钥生成白盒算法的白盒数据,并将白盒数据添加到应用程序中;将安全密钥作为黑盒算法的参数,采用黑盒算法对应用程序的程序字节码进行加密生成密文;并将密文添加到应用程序中。该方法实现了对应用程序的安全加密,使该加密后的应用程序在不可信任的环境下能够安全解密,进而对基于安卓操作系统的应用程序进行有效的保护和加固。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于安卓操作系统的应用程序加密方法实施例一的流程图;
图2为本发明基于安卓操作系统的应用程序解密方法实施例一的流程图;
图3为本发明基于安卓操作系统的应用程序加密装置实施例一的结构示意图;
图4为本发明基于安卓操作系统的应用程序解密装置实施例一的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明基于安卓操作系统的应用程序加密方法实施例一的流程图,如图1所示,本实施例的执行主体可以为计算机、笔记本电脑等。具体可以通过软件的方式实现。则本实施例提供的基于安卓操作系统的应用程序加密方法具体包括:
步骤101,随机生成与安卓操作系统的应用程序对应的安全密钥。
本实施例中,安卓操作系统的应用程序是指运行在安卓操作系统下的应用程序,该应用程序可以为微信,微博,视频播放器等,本实施例中不做限定。
本实施例中,随机生成的与安卓操作系统的应用程序对应的安全密钥可以为64位的随机数也可以为128位的随机数,本实施例中不做限定。具体可在随机数生成器中生成,随机生成与安卓操作系统的应用程序对应的安全密钥的过程在本地可信环境中,即在本地可信环境中攻击者不能获取到关于该安卓操作系统的应用程序的安全密钥。
步骤102,采用安全密钥生成白盒算法的白盒数据,并将白盒数据添加到应用程序中。
具体地,本实施例中,白盒算法可以为白盒密码算法,具体可通过白盒AES实现或白盒DES实现。其中,白盒密码算法作为可以应对白盒环境的密钥算法,通过混淆和输入输出编码的变换,将安全密钥内嵌在算法中,生成白盒数据,使攻击者无法轻易获得安全密钥。
本实施例中,将内嵌有安全密钥的白盒数据添加到应用程序中。添加到应用程序中的方式本实施例中不做限定。
本实施例中,采用安全密钥生成白盒算法的白盒数据,并将白盒数据添加到应用程序中是在本地可信环境中进行的。
步骤103,将安全密钥作为黑盒算法的参数,采用黑盒算法对应用程序的程序字节码进行加密生成密文,并将密文添加到应用程序中。
本实施例中,黑盒算法与白盒算法相对应,具体可通过黑盒AES实现或黑盒DES实现。
本实施例中,将安全密钥作为与白盒算法对应的黑盒算法的参数,采用黑盒算法对应用程序的程序字节码进行加密生成密文。具体地,将安全密钥和应用程序的程序字节码作为与白盒算法对应的黑盒算法的输入参数,对应用程序的程序字节码进行加密生成密文。
本实施例中,将密文添加到应用程序中的方式本实施例中不做限定。
本实施例中,将安全密钥作为黑盒算法的参数,采用黑盒算法对应用程序的程序字节码进行加密生成密文,并将密文添加到应用程序中是在本地可信环境下进行的,以使攻击者不能获取到关于该安卓操作系统的应用程序的安全密钥。
本实施例提供的基于安卓操作系统的应用程序加密方法,通过随机生成与安卓操作系统的应用程序对应的安全密钥;采用安全密钥生成白盒算法的白盒数据,并将白盒数据添加到应用程序中;将安全密钥作为黑盒算法的参数,采用黑盒算法对应用程序的程序字节码进行加密生成密文,并将密文添加到应用程序中。由于整个加密过程是在本地可信环境中,并且安全密钥为随机安全密钥,内嵌在白盒数据中,当在不可信环境下通过白盒数据对应用程序中的密文进行解密时,在内存中进行,所以攻击者并不能获取安全密钥。所以该方法实现了对应用程序的安全加密,使该加密后的应用程序在不可信任的环境下能够安全解密,进而对基于安卓操作系统的应用程序进行有效的保护和加固。
进一步地,本实施例提供的基于安卓操作系统的应用程序加密方法,步骤102中将白盒数据添加到应用程序中具体包括:
将白盒数据添加到应用程序的资源文件中。
进一步地,本实施例提供的基于安卓操作系统的应用程序加密方法,步骤103中将密文添加到应用程序中具体包括:
将密文作为资源文件添加至应用程序中。
本实施例中,将白盒数据添加到应用程序的资源文件中并且将密文作为资源文件添加至应用程序中,在启动应用程序时,提高了白盒数据和密文的加载速度。
图2为本发明基于安卓操作系统的应用程序解密方法实施例一的流程图,如图2所示,本实施例的执行主体为安装有安卓操作系统应用程序的智能终端,如可以为智能手机,平板电脑等。本实施例提供的基于安卓操作系统的应用程序解密方法包括:
步骤201,在应用程序启动过程中,获取应用程序中的白盒数据,该白盒数据是采用安全密钥生成的。
本实施例中,该应用程序安装在具有安卓操作系统的智能手机或平板电脑中,在应用程序启动之前,将白盒数据以资源文件的形式添加到该应用程序中。
具体地,该白盒数据是采用安全密钥生成的,即该白盒数据中通过白盒算法内嵌了安全密钥。该安全密钥可以为64位的随机数也可以为128位的随机数,本实施例中不做限定。具体可在随机数生成器中生成。
其中,白盒算法可以为白盒密码算法,具体可通过白盒AES实现或白盒DES实现。
步骤202,采用白盒数据对应用程序中的密文进行解密,该密文由采用黑盒算法对应用程序的程序字节码进行加密后生成的。
本实施例中,在采用白盒数据对应用程序中的密文进行解密之前,将密文作为资源文件添加至应用程序中。
本实施例中,该密文由采用黑盒算法对应用程序的程序字节码进行加密后生成的。具体是将安全密钥作为黑盒算法的参数,采用黑盒算法对应用程序的程序字节码进行加密生成的。
本实施例中,黑盒算法与白盒算法相对应,具体可通过黑盒AES实现或黑盒DES实现。
本实施例提供的基于安卓操作系统的应用程序解密算法,通过在应用程序启动过程中,获取应用程序中的白盒数据,白盒数据是采用安全密钥生成的;采用白盒数据对应用程序中的密文进行解密,密文由采用黑盒算法对应用程序的程序字节码进行加密后生成。虽然在启动应用程序,对应用程序进行解密是在不可信环境中,但由于安全密钥内嵌在白盒数据中,密文由采用黑盒算法对应用程序的程序字节码进行加密后生成的,所以在内存中执行对应用程序中的密文进行解密时,攻击者并不能获取安全密钥,所以该方法实现了对加密后的应用程序在不可信任的环境下能够安全解密,进而对基于安卓操作系统的应用程序进行有效的保护和加固。
进一步地,本实施例提供的基于安卓操作系统的应用程序解密方法,在步骤201获取应用程序中的白盒数据前,将白盒算法以本地代码的形式添加到所述应用程序中。
本实施例中,将白盒算法以本地代码的形式添加到应用程序中,在启动应用程序之后,以白盒数据为参数,执行白盒算法,对应用程序中的密文进行解密,以在启动基于安卓操作系统的应用程序的过程中对应用程序进行保护和加固。
图3为本发明基于安卓操作系统的应用程序加密装置实施例一的结构示意图,如图3所示,本实施例提供的基于安卓操作系统的应用程序加密装置包括:生成模块301,第一添加模块302,加密模块303。
其中,生成模块301,用于随机生成与安卓操作系统的应用程序对应的安全密钥。生成模块301,还用于采用安全密钥生成白盒算法的白盒数据。第一添加模块302,用于将白盒数据添加到应用程序中。加密模块303,用于将安全密钥作为黑盒算法的参数,采用黑盒算法对应用程序的程序字节码进行加密生成密文。第一添加模块302,用于将密文添加到应用程序中。
本实施例提供的基于安卓操作系统的应用程序加密装置可以执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步地,本实施例提供的基于安卓操作系统的应用程序加密装置中,第一添加模块302,具体用于将白盒数据添加到应用程序的资源文件中。
进一步地,第一添加模块302,具体用于将密文作为资源文件添加至应用程序中。
图4为本发明基于安卓操作系统的应用程序解密装置实施例一的结构示意图。如图4所示,本实施例提供的基于安卓操作系统的应用程序解密装置包括:获取模块401,解密模块402和第二添加模块403。
其中,获取模块401,用于在应用程序启动过程中,获取应用程序中的白盒数据,白盒数据是采用安全密钥生成的。解密模块402,用于采用白盒数据对应用程序中的密文进行解密,密文由采用黑盒算法对应用程序的程序字节码进行加密后生成。
本实施例提供的基于安卓操作系统的应用程序解密装置可以执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步地,本实施例提供的基于安卓操作系统的应用程序解密装置还包括:第二添加模块403,用于在获取模块401获取应用程序中的白盒数据之前,将白盒算法以本地代码的形式添加到应用程序中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种基于安卓操作系统的应用程序加密方法,其特征在于,包括:
随机生成与安卓操作系统的应用程序对应的安全密钥;
采用所述安全密钥生成白盒算法的白盒数据,并将所述白盒数据添加到所述应用程序中;
将所述安全密钥作为黑盒算法的参数,采用所述黑盒算法对所述应用程序的程序字节码进行加密生成密文,并将所述密文添加到所述应用程序中。
2.根据权利要求1所述的方法,其特征在于,所述将所述白盒数据添加到所述应用程序中具体包括:
将所述白盒数据添加到所述应用程序的资源文件中。
3.根据权利要求2所述的方法,其特征在于,所述将所述密文添加到所述应用程序中具体包括:
将所述密文作为资源文件添加至所述应用程序中。
4.一种基于安卓操作系统的应用程序解密方法,其特征在于,包括:
在应用程序启动过程中,获取所述应用程序中的白盒数据,所述白盒数据是采用安全密钥生成的;
采用所述白盒数据对所述应用程序中的密文进行解密,所述密文由采用黑盒算法对所述应用程序的程序字节码进行加密后生成的。
5.根据权利要求4所述的方法,其特征在于,所述获取所述应用程序中的白盒数据之前,还包括:
将所述白盒算法以本地代码的形式添加到所述应用程序中。
6.一种基于安卓操作系统的应用程序加密装置,其特征在于,包括:
生成模块,用于随机生成与安卓操作系统的应用程序对应的安全密钥;
所述生成模块,还用于采用所述安全密钥生成白盒算法的白盒数据;
第一添加模块,用于将所述白盒数据添加到所述应用程序中;
加密模块,用于将所述安全密钥作为黑盒算法的参数,采用所述黑盒算法对所述应用程序的程序字节码进行加密生成密文;
所述第一添加模块,还用于将所述密文添加到所述应用程序中。
7.根据权利要求6所述的装置,其特征在于,所述第一添加模块,具体用于:
将所述白盒数据添加到所述应用程序的资源文件中。
8.根据权利要求7所述的装置,其特征在于,所述第一添加模块,具体用于:
将所述密文作为资源文件添加至所述应用程序中。
9.一种基于安卓操作系统的应用程序解密装置,其特征在于,包括:
获取模块,用于在应用程序启动过程中,获取所述应用程序中的白盒数据,所述白盒数据是采用安全密钥生成的;
解密模块,用于采用所述白盒数据对所述应用程序中的密文进行解密,所述密文由采用黑盒算法对所述应用程序的程序字节码进行加密后生成的。
10.根据权利要求9所述的装置,其特征在于,还包括:第二添加模块,用于在所述获取模块获取所述应用程序中的白盒数据之前,将所述白盒算法以本地代码的形式添加到所述应用程序中。
CN201510702686.3A 2015-10-26 2015-10-26 基于安卓操作系统的应用程序加密解密方法和装置 Pending CN105426702A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510702686.3A CN105426702A (zh) 2015-10-26 2015-10-26 基于安卓操作系统的应用程序加密解密方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510702686.3A CN105426702A (zh) 2015-10-26 2015-10-26 基于安卓操作系统的应用程序加密解密方法和装置

Publications (1)

Publication Number Publication Date
CN105426702A true CN105426702A (zh) 2016-03-23

Family

ID=55504910

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510702686.3A Pending CN105426702A (zh) 2015-10-26 2015-10-26 基于安卓操作系统的应用程序加密解密方法和装置

Country Status (1)

Country Link
CN (1) CN105426702A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107483387A (zh) * 2016-06-08 2017-12-15 北京数码视讯软件技术发展有限公司 一种安全控制方法及装置
CN109408141A (zh) * 2018-09-27 2019-03-01 海信集团有限公司 应用程序的启动处理方法、装置及电子设备
CN110855667A (zh) * 2019-11-14 2020-02-28 宁夏吉虎科技有限公司 一种区块链加密方法、装置及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090252327A1 (en) * 2008-04-02 2009-10-08 Mathieu Ciet Combination white box/black box cryptographic processes and apparatus
CN102016871A (zh) * 2008-03-05 2011-04-13 耶德托公司 密码系统
CN104734854A (zh) * 2013-12-23 2015-06-24 西门子公司 密钥的安全提供

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102016871A (zh) * 2008-03-05 2011-04-13 耶德托公司 密码系统
US20090252327A1 (en) * 2008-04-02 2009-10-08 Mathieu Ciet Combination white box/black box cryptographic processes and apparatus
CN104734854A (zh) * 2013-12-23 2015-06-24 西门子公司 密钥的安全提供

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
伍景珠: "基于Android平台的软件保护方案的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107483387A (zh) * 2016-06-08 2017-12-15 北京数码视讯软件技术发展有限公司 一种安全控制方法及装置
CN109408141A (zh) * 2018-09-27 2019-03-01 海信集团有限公司 应用程序的启动处理方法、装置及电子设备
CN110855667A (zh) * 2019-11-14 2020-02-28 宁夏吉虎科技有限公司 一种区块链加密方法、装置及系统

Similar Documents

Publication Publication Date Title
CN103210396B (zh) 包括用于保护敏感代码和数据的架构的方法和装置
US9053300B2 (en) Device and a method for generating software code
CN102360412B (zh) Java源代码的保护方法和系统
CN101311942B (zh) 对软件进行加密、解密的方法及加密、解密的装置
CN110008745B (zh) 一种加密方法、计算机设备和计算机存储介质
KR101687439B1 (ko) 소프트웨어 무결성을 보장하기위한 프로세서 실행 방법
CN105450620A (zh) 一种信息处理方法及装置
CN103988461A (zh) 用于对数据进行解密的设备和方法
CN102156843B (zh) 数据加密方法与系统以及数据解密方法
CN108718233B (zh) 一种加密方法、计算机设备及存储介质
CN104298932A (zh) 一种so文件的调用方法及装置
CN102163267A (zh) 固态硬盘安全访问控制方法、装置和固态硬盘
CN104866784A (zh) 一种基于bios加密的安全硬盘、数据加密及解密方法
CN108133147B (zh) 可执行代码的保护方法、设备及可读存储介质
KR20130020861A (ko) 자가암호화를 이용한 소프트웨어 변조방지 방법
US20140108818A1 (en) Method of encrypting and decrypting session state information
CN104200137A (zh) 一种保护java程序自身安全的方法
CN105426702A (zh) 基于安卓操作系统的应用程序加密解密方法和装置
CN109670332A (zh) 应用数据保护方法、装置及其设备
US20170169196A1 (en) Device and method for executing protected ios software modules
CN104657635A (zh) 一种应用处理方法、装置和服务器
CN112866216B (zh) 一种用于对文件加密的方法及系统
CN102480353A (zh) 口令认证和密钥保护的方法
CN104504310A (zh) 基于壳技术的软件保护方法和装置
EP2674892B1 (en) A method, a device and a computer program support for execution of encrypted computer code

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

Application publication date: 20160323

WD01 Invention patent application deemed withdrawn after publication