本发明涉及Android系统领域,更具体地,本发明涉及一种基于Android系统的应用程序加密方法和装置。
背景技术:
随着智能终端的日益普及、网络宽带化的高速发展,以移动应用与服务不断丰富为标志的移动互联网时代为人们带来了更便捷与智能的数字生活,并逐渐渗透到线下生活的点滴。然而,兼具开放性与灵活性的终端系统及其应用中潜在的信息安全问题却可能对用户、承载网络等各个环节造成影响。
随着Android系统使用的广泛性,Android应用程序开发市场日渐火热,而打包党通过破解、反编译应用程序,插入广告或收费代码等不法手段来获取巨额利润。经常可以看到这样一个现象,当Android开发者有一个好的创意,辛苦编写出很好的应用软件发布后,很快Android市场上会出现相仿的产品。由于Android的开放性,再加之业内常用的防止应用程序篡改、反编译的技术很透明,破解者只需简单几个步骤,就可以将一款Android应用程序进行篡改并二次打包变成自己的软件。因此,缺乏对应用程序有效的保护工具和方法。
技术实现要素:
本发明旨在提供一种基于Andriod系统的应用程序加密方法和装置,为开发者提供一种避免应用程序被盗风险的方案,从而更好地保护开发者的利益,维护移动应用的健康发展。
本发明的基于Android系统的应用程序加密方法包括以下步骤:当基于Android的系统开机时,授权服务模块启动,并请求加密驱动模块读取SOC特征信息;加密驱动模块读取SOC模块中的SOC特征信息,并且通过AES加密算法和异或加密算法对该SOC特征信息进行二次加密,然后发送至授权服务模块;授权服务模块读取来自加密驱动模块的加密信息,并利用AES解密算法和异或解密算法对加密信息进行解密,根据解密的信息来判断SOC模块是否被授权,并且将授权结果进行存储,以供应用程序模块查询;当应用程序模块运行时,发送检测授权请求至授权服务模块,授权服务模块将授权结果返回至应用程序模块,应用程序模块根据授权结果确定是否退出运行。
优选地,异或解密算法的密钥与异或加密算法的密钥是相同的。
优选地,AES解密算法的密钥与AES加密算法的密钥是相同的。
根据本发明的基于Android系统的应用程序加密装置包括:SOC模块,其存储有SOC特征信息;加密驱动模块,其读取SOC模块中的SOC特征信息,并且通过AES加密算法和异或加密算法对该SOC特征信息进行二次加密,然后提供至授权服务模块;授权服务模块,其读取来自加密驱动模块的加密信息,并利用AES解密算法和异或解密算法对加密信息进行解密,根据解密的信息来判断SOC模块是否被授权,并且将授权结果进行存储,以供应用程序模块查询;应用程序模块,其与授权服务模块进行通信,发送检测授权请求至授权服务模块,根据返回的结果确定是否退出应用程序。
优选地,所述加密驱动模块包括:读取SOC信息模块,其用于从SOC模块读取区别于其它SOC模块的SOC特征信息;AES加密算法模块,其用于对读取的SOC特征信息进行AES加密;异或加密算法模块,其用于对AES加密算法模块加密后的信息进行二次加密,从而得到加密的SOC特征信息。
优选地,所述授权服务模块包括:异或解密算法模块,其用于对从加密驱动模块读取的加密的SOC特征信息进行解密;AES解密算法模块,其用于将异或解密算法模块解密后的信息再次利用AES算法进行解密;应用程序接口模块,其用于定义多个与应用程序模块进行交互的接口。
优选地,所述应用程序模块包括:检测模块,其用于与授权服务模块进行通信,发送检测请求至授权服务模块;功能模块,其用于实现应用程序本身的功能,并且调用检测模块进行检测。
优选地,所述SOC模块、所述加密驱动模块和所述授权服务模块包括型号为CR800的处理器。
本发明的基于Android系统的应用程序加密方法和装置的特点:自主开发的应用程序模块从授权服务模块获取相关SOC特征信息并校验处理,保证了应用程序模块的安全性;授权服务模块提供多种检测信息给应用程序模块使用,灵活性高;授权服务模块的SOC特征信息从加密驱动模块读取并解密得到,保密性高;加密驱动模块对SOC特征信息采用了AES加密算法和异或加密算法进行二次加密,安全级别高;从SOC模块获取SOC特征信息,保证了SOC特征信息的唯一性。
因此,本发明的基于Android系统的应用程序加密方法和装置降低了开发者额外操作的同时,保证了原应用功能可以正常运行;防止了病毒或者恶意应用利用本装置隐藏自身代码,逃避代码检测;提升了应用破解门槛,使得应用能够有效防止逆向工程导致的安全风险;提供了灵活的保护方案组合,兼顾性能指标与用户体验。
附图说明
通过随后结合附图所呈现的具体描述,本发明的以上和其它目的、特征以及优点将会更明显,在这些附图中:
图1是根据本发明的一个实施例的基于Android系统的应用程序加密装置的结构示意图;
图2是根据本发明的一个实施例的基于Android系统的应用程序加密装置中的加密驱动模块的结构示意图;
图3是根据本发明的一个实施例的基于Android系统的应用程序加密装置中的授权服务模块的结构示意图;
图4是根据本发明的一个实施例的基于Android系统的应用程序加密装置中的应用程序模块的结构示意图;
图5是基于根据本发明的一个实施例的基于Android系统的应用程序加密装置的工作流程图。
具体实施方式
下面将参考所附附图对本发明的示例性实施例进行详细的描述。
根据本发明的一个实施例的于Android系统的应用程序加密装置的结构如图1所示,其包括:SOC模块1-1,加密驱动模块1-2,授权服务模块1-3,应用程序模块1-4。
SOC(System on Chip,片上系统)模块是一种高性能微处理器,所述SOC模块包括型号为上海云间半导体科技有限公司研发的一款高性能、高集成度、超低功耗的32位应用处理器芯片CR800。每种SOC模块里面含有区别于其它SOC的特征信息,这个信息作为区分其它硬件平台的关键元素。
加密驱动模块是Android系统驱动模块,通过读取SOC处理器的特征信息,经过AES(Advanced Encryption Standard,高级加密标准)加密算法和异或加密算法,二次加密后提供给授权服务模块读取。
授权服务模块是一个后台运行守护进程的模块,它一方面从加密驱动模块读取加密信息并利用解密算法解密出SOC相关信息;另一方面也作为服务端供应用程序模块查询授权信息使用。
应用程序模块是指运行在Android系统上的各种应用,在每个应用的关键代码段中添加检测代码,它作为客户端向授权服务模块请求授权,发送请求方式有多种,应用程序模块每运行到关键地方,都会检测授权信息,如果授权不通过,则应用程序模块直接退出。通过在应用代码中多处添加检测机制,并采用多种请求授权方式,可以增加apk被反编译后分析的难度,保证安全性。
根据本发明的一个实施例的基于Android系统的应用程序加密装置中的加密驱动模块的结构如图2所示,所述加密驱动模块包括:读取SOC信息模块2-1、AES加密算法模块2-2、异或加密算法模块2-3。
读取SOC信息模块用于从SOC模块中读取区别于其它SOC模块的关键硬件信息;AES加密算法模块对读取的SOC特征信息进行AES加密,系统定义多组加密密钥,每次随机选择其中一组密钥进行加密;异或加密算法模块对AES加密后的信息进行二次加密,进一步提高信息的安全性。
根据本发明的一个实施例的应用程序加密装置中的授权服务模块的结构如图3所示,所述授权服务模块包括:异或解密算法模块3-1、AES解密算法模块3-2、应用程序接口模块3-3。
异或解密算法模块用于从加密驱动读取的硬件信息进行解密,异或解密算法的密钥与异或加密算法的密钥是相同的。AES解密算法模块将异或解密算法模块解密后的信息再次利用AES解密算法解密,AES解密算法的密钥与AES加密算法的密钥是相同的,先读取密文中的相关信息获取驱动模块是采用的哪一组AES加密算法,然后再选择对应的AES密钥进行解密成明文。应用程序接口模块用于定义多个与应用程序进行交互的接口,这样应用程序采用多种调用接口向授权服务模块发送请求,从而保证安全性。
根据本发明的一个实施例的应用程序加密装置中的应用程序模块的如图4所示,所述应用程序模包括:检测模块4-1、功能模块4-2。
检测模块是用于与授权服务模块进行通信的模块,可以发送多种请求给授权服务模块,根据返回的结果确定是否退出运行,如果检测通过,则应用程序继续运行,如果检测不通过,则应用程序直接退出运行。功能模块是应用程序本身的功能实现,其会在程序代码的多个关键地方调用检测模块进行检测。
根据本发明的一个实施例的基于Android系统的应用程序加密装置的工作流程如图5所示:基于Android系统的硬件开始启动时,会启动授权服务模块,授权服务模块作为守护进程在后台运行,授权服务模块请求加密驱动模块去读取SOC特征信息;加密驱动模块对读取到的SOC特征信息通过AES加密算法和异或加密算法二次加密,然后将密文发送给授权服务模块。授权服务模块将获取到的密文经过异或解密算法和AES解密算法进行二次解密得到明文,根据得到的明文信息来判断是否是已授权的硬件平台,并将检测结果进行保存。当应用程序模块运行时,会向授权服务模块发送授权请求,授权服务模块将授权结果返回给应用程序模块,应用程序模块根据授权结果确定是否退出运行,如果已授权,应用程序模块继续运行,如果未授权,则退出运行。
如上所述,尽管已经参照示例性实施方案和附图对本发明进行了描述,但是本发明不限于此,而是,本发明所述领域的技术人员可以进行各种修改和改变而不脱离所附权利要求书中所要求的本发明的精神和范围。