CN104426658B - 对移动终端上的应用进行身份验证的方法及装置 - Google Patents

对移动终端上的应用进行身份验证的方法及装置 Download PDF

Info

Publication number
CN104426658B
CN104426658B CN201310390851.7A CN201310390851A CN104426658B CN 104426658 B CN104426658 B CN 104426658B CN 201310390851 A CN201310390851 A CN 201310390851A CN 104426658 B CN104426658 B CN 104426658B
Authority
CN
China
Prior art keywords
file
authentication
apk files
statement
application
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.)
Active
Application number
CN201310390851.7A
Other languages
English (en)
Other versions
CN104426658A (zh
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.)
China Mobile Communications Group Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
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 China Mobile Communications Group Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201310390851.7A priority Critical patent/CN104426658B/zh
Publication of CN104426658A publication Critical patent/CN104426658A/zh
Application granted granted Critical
Publication of CN104426658B publication Critical patent/CN104426658B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明提出对移动终端上的应用进行身份验证的方法及装置。方法包括:为刚开发出的apk文件生成非对称密钥对:非对称公钥和私钥;从该apk文件中解析出应用的声明文件,根据所述私钥对所述声明文件进行加密,得到该apk文件的身份验证文件,所述身份验证文件和所述公钥被编译到该apk文件中;当该apk文件被安装到移动终端的安卓平台上后,若发现该apk文件对应应用被打开,则从该apk文件中找到所述身份验证文件和所述公钥,根据所述公钥对所述身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致,若是,确认该apk文件合法。本发明无需联网,就可对应用内容的合法性进行鉴定。

Description

对移动终端上的应用进行身份验证的方法及装置
技术领域
本发明涉及智能终端技术领域,尤其涉及对移动终端上的应用进行身份验证的方法及装置。
背景技术
只有使用证书进行数字签名之后的应用程序才能安装到移动终端的Android(安卓)平台上,Android操作***的代码签名采用自签名机制,其主要作用如下:
一、开发者身份溯源。签名信息中包含开发的身份信息,可以追溯开发者的身份。
二、安装时的验证保护。Android平台在安装新应用时,会解析新应用的包名和签名。如果移动终端上已装有和新应用相同包名的应用,且两者签名不一致,则新应用将无法在移动终端上安装成功。
三、保证应用信息的完整性。移动终端的Android平台在安装新应用时,会校验应用信息的摘要和签名信息中对应的摘要是否一致,以确保应用没有被修改和篡改过。
应用经过数字签名后,在其应用apk(application package,安装包)中会增加一个META-INF的文件夹,其中包含MANIFEST.MF,CERT.SF,CERT.RSA等三个文件。在移动终端的Android平台安装新应用时,其验证过程如下:
步骤01:计算CERT.SF文件的Hash值;
步骤02:用包含公钥的证书验证CERT.RSA文件,将得到的结果和步骤01得到的Hash值进行比较,如果相同,则表明CERT.SF文件是未被篡改的。
步骤03:由于CERT.SF文件包含了apk包中的MANIFEST.MF文件的Hash值,而MANIFEST.MF文件包含了apk包中其他文件的Hash值,因此从CERT.SF文件中可以得到其他文件的正确Hash值。
步骤04:计算apk包中的其他文件的Hash值,判断计算得到的Hash值和MANIFEST.MF文件中列出的Hash值是否对应一致,从而判断apk包的完整性。
通过上述介绍,可以发现Android平台现有的代码签名机制仅仅可以保证应用的完整性和开发者身份的辨识,主要缺点如下:
一、用户无法鉴别应用内容本身是否合法。比如,应用是否留有后门程序、是否包含非法内容等特征是无法通过现有机制得到保证的。
二、能力提供方无法鉴别应用的合法身份。业务能力通常以jar包的形式提供给开发者,并最终集成到开发者的应用apk中。在能力开放的过程中,能力提供方逐渐发现:如果不对使用能力的具体应用进行监管,会出现很多严重的运营问题。比如,一个开发者开发一个恶意应用,在其中无限循环ping与服务器的接口,可能造成能力提供方服务器的接口拥塞。对于一些收费的能力而言,如果能力提供方不对应用进行校验,就无法确认该应用使用了哪些需要付费的能力,这还会造成能力提供方的经济损失。
造成这些问题的根本原因是因为Android现有签名机制是自签名的,不需要权威机构签名和审核,用户或能力提供方需要完全依靠自身经验来判断应用的合法性。
目前有部分企业尝试建立Android平台上统一的CA(Certificate Authority,认证授权)机构来解决上述问题,但同样也会产生如下缺点:
一、可以覆盖的应用存在局限性。Android平台由Google公司完全掌控,出于开放性的承诺,Android平台是完全开源开放的。现阶段各个终端厂家、应用商城提供方、应用开发方都有自己的签名证书,第三方机构很难要求全产业链来使用同一的证书,也缺乏推行这种统一证书的制约手段。
二、与市场上的存量应用不兼容。比如,存量市场上的应用A使用的是X证书,如果应用A的升级版使用统一CA机构的Y证书,则该升级版本将无法替换终端上已安装的应用A。
另外,市场上还有一部分企业,采用联网检查签名的机制来解决合法性验证的问题。比如,能力提供方要求开发者将自身的签名文件和应用包名上传至自己的服务器。在应用每次使用能力前,均需将文件签名和应用包上传至服务器进行校验。这种方法的实质是用签名备份来约束开发者,如果发现应用是恶意的,则通过备份的签名追溯到开发者。
但该方法依赖于每次使用能力前的联网校验,增加了普通用户的等待时间。同时,如果用户身份网络状况不好的地区,还会因联网失败而无法继续使用应用,造成很不好的用户体验。
发明内容
本发明提供对移动终端上的应用进行身份验证的方法、***及装置,以实现无需联网,就可对应用内容的合法性进行鉴定。
本发明的技术方案是这样实现的:
一种对移动终端上的应用进行身份验证的方法,该方法包括:
为刚开发出的应用安装包apk文件生成非对称密钥对:非对称公钥和私钥;从该apk文件中解析出应用的声明文件,根据所述私钥对所述声明文件进行加密,得到该apk文件的身份验证文件,所述身份验证文件和所述公钥被编译到该apk文件中;
当该apk文件被安装到移动终端的安卓平台上后,若发现该apk文件对应应用被打开,则从该apk文件中找到所述身份验证文件和所述公钥,根据所述公钥对所述身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致,若是,确认该apk文件合法。
所述根据所述私钥对所述声明文件进行加密,得到该apk文件的身份验证文件包括:
计算每个声明文件的MD5摘要,将计算得到的MD5摘要存储为文件1,计算文件1的MD5摘要,将文件1的MD5摘要存储为文件2,用所述私钥对文件2进行签名,得到文件3,将文件1、文件2和文件3打包压缩得到该apk文件的身份验证文件;
所述根据所述公钥对所述身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致包括:
根据所述公钥解密身份验证文件中的文件3,得到文件5,判断文件5和文件2是否一致,若一致,从该apk文件中解析出应用的声明文件,计算每个声明文件的MD5摘要,并将得到的MD5摘要存储为文件6,计算文件6的MD5摘要,判断文件6的MD5摘要是否和文件2相同,若相同,确认该apk文件合法。
所述从该apk文件中解析出应用的声明文件之后、根据所述私钥对所述声明文件进行加密之前进一步包括:
在该声明文件中自定义用户权限;
所述从该apk文件中解析出应用的声明文件之后、判断解密结果是否与该声明文件一致之前进一步包括:
判断该声明文件中是否包含自定义用户权限,若是,执行所述判断解密结果是否与该声明文件一致的动作;否则,认为该apk文件非法。
所述身份验证文件和所述公钥被编译到该apk文件中进一步包括:
应用开发者对该应用的签名文件被编译到该apk文件中;
所述从该apk文件中解析出应用的声明文件之后、计算每个声明文件的MD5摘要之前进一步包括:
从声明文件中排除掉应用签名文件。
所述将文件1、文件2和文件3打包压缩得到该apk文件的身份验证文件之后、所述身份验证文件和所述公钥被编译到该apk文件中之前进一步包括:
所述身份验证文件被放到该apk文件对应的应用工程的assets目录中,同时,所述公钥被放在该apk文件的静态库中,该静态库被集成到该apk文件对应的应用工程中;
所述从该apk文件中找到所述身份验证文件和所述公钥包括:
从该apk文件的assets目录中找到所述身份验证文件,将该身份验证文件读到移动终端的安全数字存储SD卡的指定目录中,将该身份验证文件在SD卡中的路径传递给Dex类加载器,以使得:当该应用使用能力时,Dex类加载器根据该路径动态加载该身份验证文件,同时,当该应用使用能力时从该apk文件的静态库中读取所述公钥。
所述非对称密钥对为:RSA密钥对。
一种对移动终端上的应用进行身份验证的***,包括:
身份验证文件生成模块:为刚开发出的应用安装包apk文件生成非对称密钥对:非对称公钥和私钥;从该apk文件中解析出应用的声明文件,根据所述私钥对所述声明文件进行加密,得到该apk文件的身份验证文件,所述身份验证文件和所述公钥被编译到该apk文件中;
身份验证模块:当该apk文件被安装到移动终端的安卓平台上后,若发现该apk文件对应应用被打开,则从该apk文件中找到所述身份验证文件和所述公钥,根据所述公钥对所述身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致,若是,确认该apk文件合法。
所述身份验证文件生成模块根据所述私钥对所述声明文件进行加密,得到该apk文件的身份验证文件包括:
计算每个声明文件的MD5摘要,将计算得到的MD5摘要存储为文件1,计算文件1的MD5摘要,将文件1的MD5摘要存储为文件2,用所述私钥对文件2进行签名,得到文件3,将文件1、文件2和文件3打包压缩得到该apk文件的身份验证文件;
所述身份验证模块根据所述公钥对所述身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致包括:
根据所述公钥解密身份验证文件中的文件3,得到文件5,判断文件5和文件2是否一致,若一致,从该apk文件中解析出应用的声明文件,计算每个声明文件的MD5摘要,并将得到的MD5摘要存储为文件6,计算文件6的MD5摘要,判断文件6的MD5摘要是否和文件2相同,若相同,确认该apk文件合法。
所述身份验证文件生成模块从该apk文件中解析出应用的声明文件之后、根据所述私钥对所述声明文件进行加密之前进一步用于,在该声明文件中自定义用户权限;
所述身份验证模块从该apk文件中解析出应用的声明文件之后、判断解密结果是否与该声明文件一致之前进一步用于,判断该声明文件中是否包含自定义用户权限,若是,执行所述判断解密结果是否与该声明文件一致的动作;否则,认为该apk文件非法。
一种对移动终端上的应用进行身份验证的装置,包括:身份验证模块,用于当apk文件被安装到移动终端的安卓平台上后,若发现该apk文件对应应用被打开,则从该apk文件中找到身份验证文件和公钥,根据所述公钥对所述身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致,若是,确认该apk文件合法。
所述身份验证模块根据所述公钥对所述身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致包括:
根据所述公钥解密身份验证文件中的文件3,得到文件5,判断文件5和文件2是否一致,若一致,从该apk文件中解析出应用的声明文件,计算每个声明文件的MD5摘要,并将得到的MD5摘要存储为文件6,计算文件6的MD5摘要,判断文件6的MD5摘要是否和文件2相同,若相同,确认该apk文件合法;
其中,所述身份验证文件通过如下步骤得到:
为刚开发出的所述apk文件生成非对称密钥对:非对称公钥和私钥,计算该apk文件中每个声明文件的MD5摘要,将计算得到的MD5摘要存储为文件1,计算文件1的MD5摘要,将文件1的MD5摘要存储为文件2,用所述私钥对文件2进行签名,得到文件3,将文件1、文件2和文件3打包压缩得到该apk文件的身份验证文件,且该身份验证文件和所述公钥被编译到该apk文件中。
所述身份验证模块从该apk文件中解析出应用的声明文件之后、判断解密结果是否与该声明文件一致之前进一步用于,判断该声明文件中是否包含自定义用户权限,若是,执行所述判断解密结果是否与该声明文件一致的动作;否则,认为该apk文件非法。
当安装到移动终端的安卓平台上的apk文件包含应用开发者的应用签名文件时,
所述身份验证模块从该apk文件中解析出应用的声明文件之后、计算每个声明文件的MD5摘要之前进一步用于,从声明文件中排除掉应用签名文件。
所述身份验证模块从该apk文件中找到所述身份验证文件和所述公钥包括:
从该apk文件的assets目录中找到所述身份验证文件,将该身份验证文件读到移动终端的安全数字存储SD卡的指定目录中,将该身份验证文件在SD卡中的路径传递给Dex类加载器,以使得:当该应用使用能力时,Dex类加载器根据该路径动态加载该身份验证文件,同时,当该应用使用能力时从该apk文件的静态库中读取所述公钥。
所述身份验证文件生成模块生成的非对称密钥对为:RSA密钥对。
所述装置位于移动终端上。
可见,本发明中,通过使用私钥对apk文件的声明文件加密,实现了对应用内容是否合法的鉴定,同时,对应用内容的合法性进行鉴定时无需联网,只在移动终端本地进行操作即可。
附图说明
图1为本发明实施例提供的为移动终端上的应用生成身份验证文件的方法流程图;
图2为本发明实施例提供的对移动终端上的应用进行身份验证的方法流程图;
图3为本发明实施例提供的对移动终端上的应用进行身份验证的***的组成示意图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图1为本发明实施例提供的为移动终端上的应用生成身份验证文件的方法流程图,如图1所示,其具体步骤如下:
步骤101:应用开发端将开发出的还未签名的apk文件发送给对应的能力提供端。
步骤102:能力提供端为该apk文件生成RSA密钥对:公钥证书和私钥文件。
公钥证书和私钥文件构成一密钥对。在加密时,使用私钥文件加密,而在解密时,使用公钥证书解密。
本步骤的具体实现如下:
步骤1021:使用openssl工具生成长度为2048位的RSA私钥。
RSA私钥为非对称私钥。
步骤1022:使用openssl工具生成x509格式的公钥证书。
该公钥证书可符合test.x509.pem标准。
步骤1023:使用openssl工具根据RSA私钥生成符合PKCS8标准的私钥文件。
该私钥文件可符合PKCS8标准。
需要说明的是,这里给出的是采用openssl工具生成公钥证书和私钥文件,在实际应用中,也可以采用其他工具生成公钥证书和私钥文件。
步骤103:能力提供端测试该apk文件是否包含恶意内容,若是,执行步骤104;否则,执行步骤105。
步骤104:能力提供端将该apk文件退回应用开发端,以使应用开发端重新提交apk文件,本流程结束。
步骤105:能力提供端解析该apk文件,获取该apk文件对应应用的声明文件:AndroidManifest.xml文件;分别计算AndroidManifest.xml文件列表中每个资源文件及classes.dex的MD5(Message Digest Algorithm5,消息摘要算法第五版)摘要,并将计算得到的MD5摘要存储为文件file1。
classes.dex为类文件集合。
Android***要求用户在使用API(Application Programming Interface,应用程序接口)时进行权限的申明。为了确保只有授权的应用可以使用开放能力,本发明实施例中,在AndroidManifest.xml文件中自定义一个用户权限,放在需要保护的模块声明中。
步骤106:能力提供端计算文件file1的MD5摘要,并将该file1的MD5摘要存储为文件file2。
步骤107:能力提供端用步骤102生成的私钥文件对file2进行签名,得到文件file3。
步骤108:能力提供端将文件file1,file2和file3打包压缩得到文件file4,file4即为身份验证文件。
可以看出,通过上述步骤101~108得到的身份验证文件,既包含apk文件完整性的信息,也包含了签名信息。
步骤109:能力提供端将该apk文件的身份验证文件发送给应用开发端,应用开发端将该身份验证文件放到该apk文件对应的应用工程的assets目录中,同时,将该apk文件的身份文件验证方法和生成的公钥证书包含在该apk文件的静态库中,将该静态库集成到该apk文件对应的应用工程中。
在编译时,该apk文件对应的应用工程会编译到该apk文件中,这样,身份验证文件、身份文件验证方法、公钥证书最终都编译到了apk文件中。
其中,身份文件验证方法即图2所示方法,将其包含到静态库中,这样,当该应用的能力被调用时,能力SDK模块就可从静态库中读取该方法,根据该方法自动对apk文件进行身份验证。
应用开发端还可以使用应用开发者的签名文件来对该apk文件进行签名,该签名文件也需编译到该apk文件中。
此后,就可将该apk文件下载并安装到移动终端的android平台上。
图2为本发明实施例提供的对移动终端上的应用进行身份验证的方法流程图,如图2所示,其具体步骤如下:
步骤201:当移动终端的一个应用的能力SDK(Software Development Kit,软件开发工具包)模块发现用户在安卓平台上打开一应用时,遍历该应用对应的压缩apk文件,从该apk文件的assets目录中找到身份验证文件,将该身份验证文件读到移动终端的SD(Secure Digital Memory,安全数字存储)卡的指定目录中。
这里,需要说明的是,Android平台自身已经提供了从apk文件的assets目录中读取二进制文件的方法,但该方法对文件大小做了严格限制,不能超过2MByte,否则就会报出读写文件异常。
步骤202:该能力SDK模块将该身份验证文件在SD卡中的路径传递给Dex类加载器(DexClassLoader),当该应用使用能力时,DexClassLoader根据该路径动态加载该身份验证文件到该能力SDK模块。
由于DexClassLoader要求指定一个可写的目录来存放优化后的dex文件,因此,步骤201中,要将身份验证文件读到移动终端的SD卡的指定目录中。
步骤203:当该应用使用能力时,该能力SDK模块从该apk文件的静态库中读取公钥证书和身份文件验证方法,按照该身份文件验证方法,执行步骤204~211。
步骤204:该能力SDK模块根据该公钥证书解密压缩文件file4中的签名文件file3,得到文件file5。
压缩文件file4即身份验证文件。
步骤205:该能力SDK模块判断file5和file2是否一致,若是,执行步骤206;否则,执行步骤211。
步骤206:该能力SDK模块解析apk文件,获得其包含的文件列表。
步骤207:该能力SDK模块从apk文件包含的文件列表中排除掉应用签名文件,分别计算列表中每个文件的MD5摘要,并将每个文件的MD5摘要存储为文件file6。
步骤208:该能力SDK模块解析该应用的AndroidManifest.xml文件,判断其中的关键模块是否有自定义用户权限声明,若是,执行步骤209;否则,执行步骤211。
步骤209:该能力SDK模块计算文件file6的MD5摘要,判断file6的MD5摘要是否和file2相同,若是,执行步骤210;否则,执行步骤211。
步骤210:该能力SDK模块确认apk文件合法,允许用户使用该应用,本流程结束。
步骤211:该能力SDK模块确定apk文件非法,提示用户该应用可能包含恶意内容或者禁止用户继续使用该应用。
从图1、2所示流程可以看出,本发明实施例中,不仅对apk文件包含的声明文件进行MD5摘要计算,还用私钥文件对MD5摘要文件进行签名,从而:
一、能力提供方不仅可以实现对应用内容是否合法的鉴定,也可以实现对应用身份是否合法的鉴定;
二、可靠性高。身份校验在移动终端本地进行,无需联网请求,也减少了用户等待时间;
三、适用面广。应用开发者可以拥有自己独立的签名文件,对其原有的业务推广及运营没有任何影响。Android平台的签名认证机制在于,Android平台会校验应用中包含的全部证书的信息。如果市面上已有的应用只有一个证书,而后续推广的应用带有多个证书,则后续的应用无法在Android平台上覆盖安装之前的应用,造成应用的不兼容。
四、安全性更高。Android平台基于签名的标准的身份认证机制,仅仅在应用安装到Android平台的时候才发挥作用。一旦应用已经安装后,在应用启动及运行过程中,都不再会进行身份的校验。而本发明实施例在能力每次被调用时均会被使用,这样只要能力被调用,就会对应用内容及身份进行合法性鉴定,并绕开了Android平台固有的文件大小限制,很好地弥补了Android标准身份认证机制未覆盖到的场景。
图3为本发明实施例提供的对移动终端上的应用进行身份验证的***的组成示意图,如图3所示,其主要包括:身份验证文件生成模块31和身份验证模块32,其中,
身份验证文件生成模块31:接收应用开发端发来的刚开发出的未签名的apk文件,为该apk文件生成非对称密钥对:非对称公钥和私钥;从该apk文件中解析出应用的声明文件,根据该私钥对该声明文件进行加密,得到该apk文件的身份验证文件,将该身份验证文件和该公钥发送给应用开发端,该身份验证文件和该公钥被应用开发端编译到该apk文件中。
身份验证模块32:当apk文件被安装到移动终端的安卓平台上后,若发现该apk文件对应应用被打开,则从该apk文件中找到身份验证文件和公钥,根据该公钥对该身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致,若是,确认该apk文件合法。
在实际应用中,身份验证文件生成模块31根据该私钥对该声明文件进行加密,得到该apk文件的身份验证文件可包括:计算每个声明文件的MD5摘要,将计算得到的MD5摘要存储为文件1,计算文件1的MD5摘要,将文件1的MD5摘要存储为文件2,用该私钥对文件2进行签名,得到文件3,将文件1、文件2和文件3打包压缩得到该apk文件的身份验证文件;
同时,身份验证模块32根据该公钥对该身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致可包括:根据该公钥解密身份验证文件中的文件3,得到文件5,判断文件5和文件2是否一致,若一致,从该apk文件中解析出应用的声明文件,计算每个声明文件的MD5摘要,并将得到的MD5摘要存储为文件6,计算文件6的MD5摘要,判断文件6的MD5摘要是否和文件2相同,若相同,确认该apk文件合法。
在实际应用中,身份验证文件生成模块31从该apk文件中解析出应用的声明文件之后、根据该私钥对该声明文件进行加密之前进一步用于,在该声明文件中自定义用户权限;
同时,身份验证模块32从该apk文件中解析出应用的声明文件之后、判断解密结果是否与该声明文件一致之前进一步用于,判断该声明文件中是否包含自定义用户权限,若是,执行判断解密结果是否与该声明文件一致的动作;否则,认为该apk文件非法。
在实际应用中,身份验证模块32可位于移动终端上。
以下给出本发明实施例提供的对移动终端上的应用进行身份验证的装置的组成,该装置包括:身份验证模块,用于当apk文件被安装到移动终端的安卓平台上后,若发现该apk文件对应应用被打开,则从该apk文件中找到身份验证文件和公钥,根据该公钥对该身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致,若是,确认该apk文件合法。
在实际应用中,身份验证模块根据该公钥对该身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致可包括:根据该公钥解密身份验证文件中的文件3,得到文件5,判断文件5和文件2是否一致,若一致,从该apk文件中解析出应用的声明文件,计算每个声明文件的MD5摘要,并将得到的MD5摘要存储为文件6,计算文件6的MD5摘要,判断文件6的MD5摘要是否和文件2相同,若相同,确认该apk文件合法;
其中,身份验证文件通过如下步骤得到:
为刚开发出的apk文件生成非对称密钥对:非对称公钥和私钥,计算该apk文件中每个声明文件的MD5摘要,将计算得到的MD5摘要存储为文件1,计算文件1的MD5摘要,将文件1的MD5摘要存储为文件2,用该私钥对文件2进行签名,得到文件3,将文件1、文件2和文件3打包压缩得到该apk文件的身份验证文件,且该身份验证文件和该公钥被编译到该apk文件中。
在实际应用中,身份验证模块从该apk文件中解析出应用的声明文件之后、判断解密结果是否与该声明文件一致之前进一步用于,判断该声明文件中是否包含自定义用户权限,若是,执行判断解密结果是否与该声明文件一致的动作;否则,认为该apk文件非法。
在实际应用中,当安装到移动终端的安卓平台上的apk文件包含应用开发者的应用签名文件时,身份验证模块从该apk文件中解析出应用的声明文件之后、计算每个声明文件的MD5摘要之前进一步用于,从声明文件中排除掉应用签名文件。
在实际应用中,身份验证模块从该apk文件中找到身份验证文件和公钥可包括:从该apk文件的assets目录中找到身份验证文件,将该身份验证文件读到移动终端的SD卡的指定目录中,将该身份验证文件在SD卡中的路径传递给Dex类加载器,以使得:当该应用使用能力时,Dex类加载器根据该路径动态加载该身份验证文件,同时,当该应用使用能力时从该apk文件的静态库中读取公钥。
在实际应用中,身份验证文件生成模块生成的非对称密钥对可为:RSA密钥对。
在实际应用中,该装置可位于移动终端上。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (13)

1.一种对移动终端上的应用进行身份验证的方法,其特征在于,该方法包括:
为刚开发出的应用安装包apk文件生成非对称密钥对:非对称公钥和私钥;从该apk文件中解析出应用的声明文件,根据所述私钥对所述声明文件进行加密,得到该apk文件的身份验证文件,所述身份验证文件和所述公钥被编译到该apk文件中;
当该apk文件被安装到移动终端的安卓平台上后,若发现该apk文件对应应用被打开,则从该apk文件中找到所述身份验证文件和所述公钥,根据所述公钥对所述身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致,若是,确认该apk文件合法;
所述根据所述私钥对所述声明文件进行加密,得到该apk文件的身份验证文件包括:
计算每个声明文件的MD5摘要,将计算得到的MD5摘要存储为文件1,计算文件1的MD5摘要,将文件1的MD5摘要存储为文件2,用所述私钥对文件2进行签名,得到文件3,将文件1、文件2和文件3打包压缩得到该apk文件的身份验证文件;
所述根据所述公钥对所述身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致包括:
根据所述公钥解密身份验证文件中的文件3,得到文件5,判断文件5和文件2是否一致,若一致,从该apk文件中解析出应用的声明文件,计算每个声明文件的MD5摘要,并将得到的MD5摘要存储为文件6,计算文件6的MD5摘要,判断文件6的MD5摘要是否和文件2相同,若相同,确认该apk文件合法。
2.根据权利要求1所述的方法,其特征在于,所述从该apk文件中解析出应用的声明文件之后、根据所述私钥对所述声明文件进行加密之前进一步包括:
在该声明文件中自定义用户权限;
所述从该apk文件中解析出应用的声明文件之后、判断解密结果是否与该声明文件一致之前进一步包括:
判断该声明文件中是否包含自定义用户权限,若是,执行所述判断解密结果是否与该声明文件一致的动作;否则,认为该apk文件非法。
3.根据权利要求1所述的方法,其特征在于,所述身份验证文件和所述公钥被编译到该apk文件中进一步包括:
应用开发者对该应用的签名文件被编译到该apk文件中;
所述从该apk文件中解析出应用的声明文件之后、计算每个声明文件的MD5摘要之前进一步包括:
从声明文件中排除掉应用签名文件。
4.根据权利要求1所述的方法,其特征在于,所述将文件1、文件2和文件3打包压缩得到该apk文件的身份验证文件之后、所述身份验证文件和所述公钥被编译到该apk文件中之前进一步包括:
所述身份验证文件被放到该apk文件对应的应用工程的assets目录中,同时,所述公钥被放在该apk文件的静态库中,该静态库被集成到该apk文件对应的应用工程中;
所述从该apk文件中找到所述身份验证文件和所述公钥包括:
从该apk文件的assets目录中找到所述身份验证文件,将该身份验证文件读到移动终端的安全数字存储SD卡的指定目录中,将该身份验证文件在SD卡中的路径传递给Dex类加载器,以使得:当该应用使用能力时,Dex类加载器根据该路径动态加载该身份验证文件,同时,当该应用使用能力时从该apk文件的静态库中读取所述公钥。
5.根据权利要求1所述的方法,其特征在于,所述非对称密钥对为:RSA密钥对。
6.一种对移动终端上的应用进行身份验证的***,其特征在于,包括:
身份验证文件生成模块:为刚开发出的应用安装包apk文件生成非对称密钥对:非对称公钥和私钥;从该apk文件中解析出应用的声明文件,根据所述私钥对所述声明文件进行加密,得到该apk文件的身份验证文件,所述身份验证文件和所述公钥被编译到该apk文件中;
身份验证模块:当该apk文件被安装到移动终端的安卓平台上后,若发现该apk文件对应应用被打开,则从该apk文件中找到所述身份验证文件和所述公钥,根据所述公钥对所述身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致,若是,确认该apk文件合法;
所述身份验证文件生成模块根据所述私钥对所述声明文件进行加密,得到该apk文件的身份验证文件包括:
计算每个声明文件的MD5摘要,将计算得到的MD5摘要存储为文件1,计算文件1的MD5摘要,将文件1的MD5摘要存储为文件2,用所述私钥对文件2进行签名,得到文件3,将文件1、文件2和文件3打包压缩得到该apk文件的身份验证文件;
所述身份验证模块根据所述公钥对所述身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致包括:
根据所述公钥解密身份验证文件中的文件3,得到文件5,判断文件5和文件2是否一致,若一致,从该apk文件中解析出应用的声明文件,计算每个声明文件的MD5摘要,并将得到的MD5摘要存储为文件6,计算文件6的MD5摘要,判断文件6的MD5摘要是否和文件2相同,若相同,确认该apk文件合法。
7.根据权利要求6所述的***,其特征在于,所述身份验证文件生成模块从该apk文件中解析出应用的声明文件之后、根据所述私钥对所述声明文件进行加密之前进一步用于,在该声明文件中自定义用户权限;
所述身份验证模块从该apk文件中解析出应用的声明文件之后、判断解密结果是否与该声明文件一致之前进一步用于,判断该声明文件中是否包含自定义用户权限,若是,执行所述判断解密结果是否与该声明文件一致的动作;否则,认为该apk文件非法。
8.一种对移动终端上的应用进行身份验证的装置,其特征在于,包括:身份验证模块,用于当apk文件被安装到移动终端的安卓平台上后,若发现该apk文件对应应用被打开,则从该apk文件中找到身份验证文件和公钥,根据所述公钥对所述身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致,若是,确认该apk文件合法;
所述身份验证模块根据所述公钥对所述身份验证文件进行解密,从该apk文件中解析出应用的声明文件,判断解密结果是否与该声明文件一致包括:
根据所述公钥解密身份验证文件中的文件3,得到文件5,判断文件5和文件2是否一致,若一致,从该apk文件中解析出应用的声明文件,计算每个声明文件的MD5摘要,并将得到的MD5摘要存储为文件6,计算文件6的MD5摘要,判断文件6的MD5摘要是否和文件2相同,若相同,确认该apk文件合法;
其中,所述身份验证文件通过如下步骤得到:
为刚开发出的所述apk文件生成非对称密钥对:非对称公钥和私钥,计算该apk文件中每个声明文件的MD5摘要,将计算得到的MD5摘要存储为文件1,计算文件1的MD5摘要,将文件1的MD5摘要存储为文件2,用所述私钥对文件2进行签名,得到文件3,将文件1、文件2和文件3打包压缩得到该apk文件的身份验证文件,且该身份验证文件和所述公钥被编译到该apk文件中。
9.根据权利要求8所述的装置,其特征在于,所述身份验证模块从该apk文件中解析出应用的声明文件之后、判断解密结果是否与该声明文件一致之前进一步用于,判断该声明文件中是否包含自定义用户权限,若是,执行所述判断解密结果是否与该声明文件一致的动作;否则,认为该apk文件非法。
10.根据权利要求8所述的装置,其特征在于,当安装到移动终端的安卓平台上的apk文件包含应用开发者的应用签名文件时,
所述身份验证模块从该apk文件中解析出应用的声明文件之后、计算每个声明文件的MD5摘要之前进一步用于,从声明文件中排除掉应用签名文件。
11.根据权利要求8所述的装置,其特征在于,所述身份验证模块从该apk文件中找到所述身份验证文件和所述公钥包括:
从该apk文件的assets目录中找到所述身份验证文件,将该身份验证文件读到移动终端的安全数字存储SD卡的指定目录中,将该身份验证文件在SD卡中的路径传递给Dex类加载器,以使得:当该应用使用能力时,Dex类加载器根据该路径动态加载该身份验证文件,同时,当该应用使用能力时从该apk文件的静态库中读取所述公钥。
12.根据权利要求8所述的装置,其特征在于,所述身份验证文件生成模块生成的非对称密钥对为:RSA密钥对。
13.根据权利要求8所述的装置,其特征在于,所述装置位于移动终端上。
CN201310390851.7A 2013-09-02 2013-09-02 对移动终端上的应用进行身份验证的方法及装置 Active CN104426658B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310390851.7A CN104426658B (zh) 2013-09-02 2013-09-02 对移动终端上的应用进行身份验证的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310390851.7A CN104426658B (zh) 2013-09-02 2013-09-02 对移动终端上的应用进行身份验证的方法及装置

Publications (2)

Publication Number Publication Date
CN104426658A CN104426658A (zh) 2015-03-18
CN104426658B true CN104426658B (zh) 2017-12-01

Family

ID=52974685

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310390851.7A Active CN104426658B (zh) 2013-09-02 2013-09-02 对移动终端上的应用进行身份验证的方法及装置

Country Status (1)

Country Link
CN (1) CN104426658B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105227545B (zh) * 2015-09-07 2018-09-25 上海联彤网络通讯技术有限公司 智能操作平台中实现用户和开发者划分控制的***及方法
CN105187449B (zh) * 2015-09-30 2018-10-02 北京恒华伟业科技股份有限公司 一种接口调用方法及装置
CN105867958A (zh) * 2015-11-23 2016-08-17 乐视致新电子科技(天津)有限公司 升级包签名方法及装置
CN106096381A (zh) * 2016-06-06 2016-11-09 北京壹人壹本信息科技有限公司 应用程序文件验证的方法及***
CN107491955B (zh) * 2016-06-13 2022-01-11 邓斌涛 移动终端的加密方法、身份认证和电子支付***和方法
CN106384026A (zh) * 2016-09-06 2017-02-08 深圳多哚新技术有限责任公司 一种apk的生成、认证方法和装置及***
CN106775842B (zh) * 2016-11-30 2020-02-11 北京酷我科技有限公司 一种可自定义的dex分包的方法
CN106656513B (zh) * 2017-02-24 2019-09-13 福建魔方电子科技有限公司 安卓平台上apk文件的二次打包签名验证方法
CN107276998B (zh) * 2017-06-07 2020-09-18 广州华多网络科技有限公司 一种基于OpenSSL的性能优化方法及装置
CN107483419B (zh) * 2017-07-28 2020-06-09 深圳市优克联新技术有限公司 服务器认证接入终端的方法、装置、***、服务器及计算机可读存储介质
CN108134676A (zh) * 2017-12-19 2018-06-08 上海闻泰电子科技有限公司 Android***安全启动方法及可读存储介质
CN111274552A (zh) * 2020-01-07 2020-06-12 惠州市德赛西威汽车电子股份有限公司 一种升级包的签名及验签方法、存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101488851A (zh) * 2009-02-25 2009-07-22 中国人民解放军信息工程大学 一种可信计算中签发身份证明证书的方法及装置
CN102737190A (zh) * 2012-07-04 2012-10-17 复旦大学 基于静态分析的Android应用日志中信息泄漏隐患的检测方法
CN103024734A (zh) * 2012-12-31 2013-04-03 广东欧珀移动通信有限公司 防止Apk被非授权手机安装的加密、解密方法及装置
CN104063668A (zh) * 2013-03-21 2014-09-24 深圳富泰宏精密工业有限公司 程序安装包签名***及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101488851A (zh) * 2009-02-25 2009-07-22 中国人民解放军信息工程大学 一种可信计算中签发身份证明证书的方法及装置
CN102737190A (zh) * 2012-07-04 2012-10-17 复旦大学 基于静态分析的Android应用日志中信息泄漏隐患的检测方法
CN103024734A (zh) * 2012-12-31 2013-04-03 广东欧珀移动通信有限公司 防止Apk被非授权手机安装的加密、解密方法及装置
CN104063668A (zh) * 2013-03-21 2014-09-24 深圳富泰宏精密工业有限公司 程序安装包签名***及方法

Also Published As

Publication number Publication date
CN104426658A (zh) 2015-03-18

Similar Documents

Publication Publication Date Title
CN104426658B (zh) 对移动终端上的应用进行身份验证的方法及装置
JP4501349B2 (ja) システムモジュール実行装置
CN108399329B (zh) 一种提高可信应用程序安全的方法
CN107463806B (zh) 一种Android应用程序安装包的签名和验签方法
CN103530534B (zh) 一种基于签名验证的Android程序ROOT授权方法
CN102035653B (zh) 软件审核阶段的可控分发方法及***
US11797296B2 (en) Hot updating method of script file package and hot updating device of script file package
CN106055936B (zh) 可执行程序数据包加密/解密方法及装置
CN111200589A (zh) 一种联盟链的数据保护方法及***
CN102065077B (zh) 终端应用软件分发方法及***
CN103577206A (zh) 一种应用软件的安装方法和装置
KR20150035249A (ko) 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치
KR20050035104A (ko) 복제 방지를 위한 디바이스 바운드 플래싱/부팅
CN107301343A (zh) 安全数据处理方法、装置及电子设备
WO2016019790A1 (zh) 一种安装包的校验方法、客户端、服务器及***
CN110362990A (zh) 应用安装的安全处理方法、装置及***
CN108710500A (zh) 资源发布方法、更新方法和装置
CN102663292A (zh) 一种实现智能卡应用部署的方法及***
CN107980132A (zh) 一种apk签名认证方法及***
CN109660353A (zh) 一种应用程序安装方法及装置
CN108599959B (zh) 授权证书校验方法、装置及可读存储介质、应用设备
KR20170089352A (ko) 가상화 시스템에서 수행하는 무결성 검증 방법
US7552092B2 (en) Program distribution method and system
US8745375B2 (en) Handling of the usage of software in a disconnected computing environment
CN106888094B (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
GR01 Patent grant
GR01 Patent grant