安卓平台上APK文件的二次打包签名验证方法与流程

文档序号:11147444阅读:1839来源:国知局
安卓平台上APK文件的二次打包签名验证方法与制造工艺

本发明涉及一种安卓平台上APK文件的二次打包签名验证方法。



背景技术:

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用在移动设备上,如智能手机、平板电脑等。在Android平台上,应用(APP)的安装文件都是以APK(Android Package)格式来保存的,APK文件在本质上是一个zip压缩文件,主要包括res/class/jar以及权限配置文件等。同时在APK文件中存在有一个META-INFO目录,该目录主要用于保存APK文件在进行原生签名时所生成的数据信息。

一般情况下,开发人员都会通过Eclipse/Android Studio或者Ant工具等对APK进行签名,生成一个原生签名文件,并保存到META-INFO目录中。在进行APK文件安装时,android平台的底层会先对APK文件进行签名验证和解析,从而得到应用程序的相关信息,然后再对应用程序进行安装。但是,现有的原生签名技术属于自签名方式,其理论上都是合法的(即都是允许被安装的),因此现有的原生签名都无法把控APK的安装。而一些APP程序很容易被盗版,一旦被破解并植入恶意代码重新打包后,不管从性能、用户体验和外观上,它都跟原来的APP一模一样,但是它的背后却可能悄悄的运行着可怕的程序,而这些程序将可能导致在不知不觉中浪费手机电量、流量,恶意扣费、偷窥隐私等行为。



技术实现要素:

本发明要解决的技术问题,在于提供一种安卓平台上APK文件的二次打包签名验证方法,通过该方法来把控APK文件的安装,可以有效防止应用程序被非法破解,并植入恶意代码重新打包的情况发生,有利于确保用户的账户、密码、流量等各种数据的安全。

本发明是这样实现的:安卓平台上APK文件的二次打包签名验证方法,所述方法包括如下步骤:

步骤1、签名工具使用私钥对经过打包的原始APK文件进行签名,生成嵌有数字签名文件的APK文件;

步骤2、在终端设备上预置公钥证书,且将嵌有数字签名文件的APK文件下载到终端设备上;

步骤3、终端设备使用公钥证书验证嵌有数字签名文件的APK文件的合法性。

进一步地,所述步骤1具体为:

由签名工具使用私钥生成一个数字签名文件,并将该数字签名文件嵌入到经过打包的原始APK文件的目录中,生成嵌有数字签名文件的APK文件;

所述数字签名文件包括签名信息、自定义信息以及文件头;

所述签名信息由文件类别名称、头部分、签名信息主体以及签名数据组成,其中,所述签名信息主体包括主体部分开始、结构版本、签名证书ID号、数字签名算法、签名时间以及原始文件哈希值;

所述文件头由文件类别名称、头部分、结构版本、文件体长度、源文件长度、原始APK文件长度以及校验值组成。

进一步地,所述步骤3具体为:

终端设备在安装嵌有数字签名文件的APK文件时,首先对嵌有数字签名文件的APK文件中的原生签名文件进行验证,待原生签名文件验证通过以后,再从嵌有数字签名文件的APK文件的目录中提取出数字签名文件,还原原始APK文件;

在数字签名文件提取完成后,使用公钥证书对数字签名文件进行合法性验证,且如果验证通过,则允许将原始APK文件安装到终端设备上;如果验证未通过,则不允许将原始APK文件安装到终端设备上。

本发明具有如下优点:采用了对原始APK文件进行二次打包签名的方法,且只有通过签名验证的APK程序文件才允许被安装到终端设备上,而未通过签名验证的APK程序文件则无法安装,可以有效防止应用程序被非法破解,并植入恶意代码重新打包的情况发生,有利于确保用户的账户、密码、流量等各种数据的安全。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1为本发明安卓平台上APK文件的二次打包签名验证方法的执行流程框图。

图2为本发明对原始APK文件进行签名的示意图。

图3为本发明中终端设备验证签名的流程图。

具体实施方式

请参照图1至图3所示,安卓平台上APK文件的二次打包签名验证方法,所述方法包括如下步骤:

步骤1、签名工具使用私钥对经过打包的原始APK文件进行签名,生成嵌有数字签名文件的APK文件;

步骤2、在终端设备上预置公钥证书,该公钥证书用于对签名进行二次打包验证,具体实施,可以在终端设备出厂时,就将公钥证书预置到终端设备(如android设备)中,且将嵌有数字签名文件的APK文件下载到终端设备上;

步骤3、终端设备使用公钥证书验证嵌有数字签名文件的APK文件的合法性。

由上述可知,本发明为了能够更好的管控终端设备上安装的APK程序文件,采用了对原始APK文件进行二次打包签名的方法,在终端设备下载并且要安装APK程序文件时,只有通过签名验证的APK程序文件才允许被安装到终端设备上,而未通过签名验证的APK程序文件则无法安装,可以有效防止应用程序被非法破解,并植入恶意代码重新打包的情况发生,有利于确保用户的账户、密码、流量等各种数据的安全。

其中,所述步骤1具体为:

请重点参照图2所示,由签名工具使用私钥生成一个数字签名文件(即SIG签名文件),数字签名采用的是X.509.V3国际标准签名格式,数字签名的证书数据采用的是DER编码格式,并将该数字签名文件嵌入到经过打包的原始APK文件的目录(即APK文件中的META-INFO目录)中,生成嵌有数字签名文件的APK文件,这样就实现了在保留APK原生签名机制的基础上,加入了二次打包签名的机制,且由于只是在原始APK文件的内部META-INFO目录下多了一个SIG签名文件,因此对android平台(终端设备)的原生签名不会产生任何的影响。所述数字签名文件包括签名信息、自定义信息以及文件头;嵌有数字签名文件的APK文件的具体内容如表1所示。

表1

所述签名信息由文件类别名称、头部分、签名信息主体以及签名数据组成,其中,所述签名信息主体包括主体部分开始、结构版本、签名证书ID号、数字签名算法、签名时间以及原始文件哈希值;签名信息的具体信息域的组成内容如表2所示。

表2

所述文件头由文件类别名称、头部分、结构版本、文件体长度、源文件长度、原始APK文件长度以及校验值组成。文件头的具体信息域的组成内容如表3所示。

表3

所述步骤3具体为:

请重点参照图3所示,终端设备在安装嵌有数字签名文件的APK文件时,首先对嵌有数字签名文件的APK文件中的原生签名文件进行验证,因为原生签名属于自签名方式,因此理论上都是合法的,待原生签名文件验证通过以后,再从嵌有数字签名文件的APK文件的目录(即META-INFO目录)中提取出数字签名文件,还原原始APK文件;

在数字签名文件提取完成后,使用公钥证书对数字签名文件进行合法性验证,在具体实施时,公钥证书会对签名信息中的签名信息主体的内容进行逐一验证,且如果验证通过,则允许将原始APK文件安装到终端设备上;如果验证未通过,则不允许将原始APK文件安装到终端设备上。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1