一种对APK完整性保护的方法技术

技术编号:14512379 阅读:82 留言:0更新日期:2017-02-01 09:58
一种对APK完整性保护的方法包括APK签名及签名验证两部分,其是在不破坏开发者的签名情况下,实现了基于SHA1的1024位RSA加密私钥对APK文件中的部分重要文件进行加密且不向APK中增加任何文件以达到安全签名的过程,并实现通过电子市场的二次验签来达到应用的完整性保护;另外,由于本发明专利技术所述加密数据是写入File comment区且不向apk中写入任何数据,与传统技术手段需要向apk中读写文件相比,本发明专利技术所述技术方案使得APK的运行速率有较大提升,同时减小了智能手机系统的开销,提升了智能手机的运行速度;其次,由于加密原始数据使用了原签名数据的加密数据,并且使用了只有应用市场或APK开发者自己知道的应用标记,使得加密后的数据更为安全。

【技术实现步骤摘要】

本专利技术涉及信息安全
,尤其涉及一种对APK完整性保护的方法。
技术介绍
通常的,每个Android应用开发完成后,其开发者或作者都会对其开发的Android应用进行签名,用户安装Android应用时智能手机需要先检测签名信息是否准确无误。现各大应用市场在上传应用时,通常都会对应用程序进行二次签名,以确保应用程序的安全性。而现有的处理方式是:不管是原作者的签名还是针对应用市场或服务的扩展签名都是用写文件的方式,把签名文件写入apk文件包中,同时,安装应用程序时,验证签名是读取apk中相应文件,以流的形式读取出来,由此导致安装速度收到很大影响,特别是对于运行速度本身就较慢的智能手机,其安装速度甚至会陷入卡顿状态。
技术实现思路
本专利技术针对现有技术的不足,提出的一种对APK完整性保护的方法,该方法能有效保护APK应用且能提高其安装运行速度。一种对APK完整性保护的方法包括APK签名及签名验证两部分,具体为:所述APK签名步骤包括:步骤一:获得APK开发者的签名数据公钥moduls数据,即原签名数据;步骤二:计算APK中开发者签名文件的hash值A;步骤三:计算APK根目录下AndroidManifest.xml文件的hash值B,及计算resources.arsc文件的hash值C;步骤四:将hash值A、hash值B、hash值C、原签名数据及应用标记依次顺序连接作为签名基础数据;步骤五:采用基于SHA1的1024位RSA加密私钥对签名基础数据进行加密,由此形成签名数据;步骤六:将加密后的签名数据写入APK的Filecomment区并保存,则完成签名;所述签名验证包括:步骤一:取出已经签名的签名基础数据,所述签名基础数据包括原签名数据、hash值A、hash值B、hash值C和签名基础数据;步骤二:取出存储在APK文件Filecomment区的加密数据,取出的数据如果为空则验签失败,不为空则继续进行签名验证;步骤三:使用SHA1的1024位RSA加密公约对签名验证步骤二获得的加密数据解密;步骤三:将解密后的数据与签名验证步骤一中的签名基础数据进行比对,比对一致则签名验证通过,否则签名验证失败。进一步的,所述APK签名中步骤二所述开发者签名文件是指CERT.RSA或.rsa格式的其他名字的文件。进一步的,所述APK签名中步骤二所述应用标记是指APK的应用领域和范围的简写标记。本专利技术所述技术方案的有益效果在于:在不破坏开发者的签名情况下,实现了基于SHA1的1024位RSA加密私钥对APK文件中的部分重要文件进行加密且不向APK中增加任何文件以达到安全签名的过程,并实现通过电子市场的二次验签来达到应用的完整性保护;另外,由于本专利技术所述加密数据是写入Filecomment区且不向apk中写入任何数据,与传统技术手段需要向apk中读写文件相比,本专利技术所述技术方案使得APK的运行速率有较大提升,同时减小了智能手机系统的开销,提升了智能手机的运行速度;其次,由于加密原始数据使用了原签名数据的加密数据,并且使用了只有应用市场或APK开发者自己知道的应用标记,使得加密后的数据更为安全。具体实施方式为了全面理解本专利技术,在以下详细描述中提到了诸多细节,但本领域技术人员应该理解,本专利技术可以无需这些具体细节而实现。在其实施例中,不详细描述公知的方法、过程和组件,以免不必要地使实施例模糊。本专利技术所述的一种对APK完整性保护的方法包括APK签名及签名验证两部分,具体为:所述APK签名步骤包括:步骤一:获得APK开发者的签名数据公钥moduls数据,即原签名数据;步骤二:计算APK中开发者签名文件的hash值A;步骤三:计算APK根目录下AndroidManifest.xml文件的hash值B,及计算resources.arsc文件的hash值C;步骤四:将hash值A、hash值B、hash值C、原签名数据及应用标记依次顺序连接作为签名基础数据;步骤五:采用基于SHA1的1024位RSA加密私钥对签名基础数据进行加密,由此形成签名数据;步骤六:将加密后的签名数据写入APK的Filecomment区并保存,则完成签名;所述签名验证包括:步骤一:取出已经签名的签名基础数据,所述签名基础数据包括原签名数据、hash值A、hash值B、hash值C和签名基础数据;步骤二:取出存储在APK文件Filecomment区的加密数据,取出的数据如果为空则验签失败,不为空则继续进行签名验证;步骤三:使用SHA1的1024位RSA加密公约对签名验证步骤二获得的加密数据解密;步骤三:将解密后的数据与签名验证步骤一中的签名基础数据进行比对,比对一致则签名验证通过,否则签名验证失败。只有通过签名验证的APK才能上载到应用市场中。其中,所述APK签名中步骤二所述开发者签名文件是指CERT.RSA或.rsa格式的其他名字的文件;所述APK签名中步骤二所述应用标记是指APK的应用领域和范围的简写标记。以上对本专利技术所提供的一种检测当前应用是否处于前台的方法进行了详细介绍,本文中应用了实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。本文档来自技高网...

【技术保护点】
一种对APK完整性保护的方法包括APK签名及签名验证两部分,具体为:所述APK签名步骤包括:步骤一:获得APK开发者的签名数据公钥moduls数据,即原签名数据;步骤二:计算APK中开发者签名文件的hash值A;步骤三:计算APK根目录下AndroidManifest.xml文件的hash值B,及计算resources.arsc文件的hash值C;步骤四:将hash值A、hash值B、hash值C、原签名数据及应用标记依次顺序连接作为签名基础数据;步骤五:采用基于SHA1的1024位RSA加密私钥对签名基础数据进行加密,由此形成签名数据;步骤六:将加密后的签名数据写入APK的File comment区并保存,则完成签名;所述签名验证包括:步骤一:取出已经签名的签名基础数据,所述签名基础数据包括原签名数据、hash值A、hash值B、hash值C和签名基础数据;步骤二:取出存储在APK文件File comment区的加密数据,取出的数据如果为空则验签失败,不为空则继续进行签名验证;步骤三:使用SHA1的1024位RSA加密公约对签名验证步骤二获得的加密数据解密;步骤三:将解密后的数据与签名验证步骤一中的签名基础数据进行比对,比对一致则签名验证通过,否则签名验证失败。...

【技术特征摘要】
1.一种对APK完整性保护的方法包括APK签名及签名验证两部分,具体为:所述APK签名步骤包括:步骤一:获得APK开发者的签名数据公钥moduls数据,即原签名数据;步骤二:计算APK中开发者签名文件的hash值A;步骤三:计算APK根目录下AndroidManifest.xml文件的hash值B,及计算resources.arsc文件的hash值C;步骤四:将hash值A、hash值B、hash值C、原签名数据及应用标记依次顺序连接作为签名基础数据;步骤五:采用基于SHA1的1024位RSA加密私钥对签名基础数据进行加密,由此形成签名数据;步骤六:将加密后的签名数据写入APK的Filecomment区并保存,则完成签名;所述签名验证包括:步骤一:取出已经签名的签名基础数据,所述签名基础数据包括原签名数据、hash值A、hash值B、hash值C和签名基...

【专利技术属性】
技术研发人员:高振鹏杨思忠
申请(专利权)人:中科信息安全共性技术国家工程研究中心有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1