CN104049973A - 安卓应用程序的安全验证方法及装置 - Google Patents
安卓应用程序的安全验证方法及装置 Download PDFInfo
- Publication number
- CN104049973A CN104049973A CN201410291357.XA CN201410291357A CN104049973A CN 104049973 A CN104049973 A CN 104049973A CN 201410291357 A CN201410291357 A CN 201410291357A CN 104049973 A CN104049973 A CN 104049973A
- Authority
- CN
- China
- Prior art keywords
- android application
- application program
- pki
- signed
- signature
- 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
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种安卓应用程序的安全验证方法及装置。安卓应用程序的安全验证方法包括:步骤一,从签名后的安卓应用程序安装文件中提取出公钥保存到服务接入端,将该从签名后的APK文件中取出的公钥记为第一公钥;步骤二,在已签名安卓应用程序初始化时,服务接入端获取该已签名安卓应用程序的公钥,将该已签名安卓应用程序的公钥记为第二公钥;步骤三,服务接入端将第二公钥与第一公钥进行比较,根据比较结果判断已签名安卓应用程序是否安全。本发明安卓应用程序的安全验证方法及装置,有效的阻止了不法分子通过仿造APK身份去恶意攻击平台的行为,有效防止被恶意篡改过的android应用程序带来的安全风险,增强了平台的安全性。
Description
技术领域
本发明涉及信息技术领域,尤其涉及一种安卓应用程序的安全验证方法及装置。
背景技术
Android(译为“安卓”)是一种基于Linux的自由及开放源代码的操作***,主要使用于移动设备,例如智能手机和平板电脑。以下将Android操作***称为安卓操作***。APK(安卓应用程序安装文件)是指Android操作***的应用程序安装文件。Crack意为“破解”,具体是指反编译APK文件进行汇编级的代码分析,并修改或***自己的代码,重新签名打包为APK文件,以达到改变程序原有行为的目的。也就是说,要Crack一个APK文件,主要流程有三步:反编译、代码分析、重新打包签名。
APK文件被破解会给用户带来极大的安全隐患。例如,在安装了安卓操作***的手机上,各个运营商的“掌上营业厅”应用吸引了数以百万计的用户下载,网友使用这些应用免除了在营业厅排队的麻烦。但是,手机应用被大量破解后重新打包,植入多种恶意广告插件,部分恶意广告插件还会窃取手机号、通讯录等敏感信息。当安装了安卓操作***的手机用户下载安装篡改过的“掌上营业厅”等热门安卓软件时,手机号、地理位置信息、通讯录均可能被收集。这些敏感信息被不法分子转卖后,用户会收到大量垃圾短信、骚扰电话,以及各种精准推送的广告信息。篡改过的手机应用软件后台还可自动联网下载广告数据,产生较大的流量消耗,最终会让用户损失手机话费。
可见,如何验证android手机应用是否被篡改,以防止被恶意篡改过的android手机应用程序带来的安全风险,是目前android手机应用亟待解决的一个重要问题。
发明内容
本发明所要解决的技术问题是提供一种安卓应用程序的安全验证方法及装置,有效防止被恶意篡改过的android应用程序带来的安全风险,增强安全性。
为解决上述技术问题,本发明提出了一种安卓应用程序的安全验证方法,包括:
步骤一,从签名后的安卓应用程序安装文件即APK文件中提取出公钥保存到服务接入端,将该从签名后的APK文件中取出的公钥记为第一公钥,所述服务接入端是指安卓应用程序的下载端,所述公钥包含在签名后的APK文件中,其中,为所述APK文件签名的签名文件由开发者生成;
步骤二,在已签名安卓应用程序初始化时,所述服务接入端获取该已签名安卓应用程序的公钥,将该已签名安卓应用程序的公钥记为第二公钥,所述已签名安卓应用程序是指用所述签名文件签名后的安卓应用程序;
步骤三,服务接入端将所述第二公钥与所述第一公钥进行比较,根据比较结果判断所述已签名安卓应用程序是否安全。
进一步地,上述安卓应用程序的安全验证方法还可具有以下特点,所述步骤三包括:若所述比较结果为所述第二公钥与所述第一公钥一致,则判定所述已签名安卓应用程序安全,若所述比较结果为所述第二公钥与所述第一公钥不一致,则判定所述已签名安卓应用程序不安全。
进一步地,上述安卓应用程序的安全验证方法还可具有以下特点,所述步骤三之后还包括步骤四,若判断结果为所述已签名安卓应用程序安全,则所述服务接入端向所述已签名安卓应用程序返回相关数据。
为解决上述技术问题,本发明还提出了一种安卓应用程序的安全验证装置,包括顺次相连的保存模块、获取模块和验证模块,其中:
保存模块,用于从签名后的安卓应用程序安装文件即APK文件中提取出公钥保存到服务接入端,将该从签名后的APK文件中取出的公钥记为第一公钥,所述服务接入端是指安卓应用程序的下载端,所述公钥包含在签名后的APK文件中,其中,为所述APK文件签名的签名文件由开发者生成;
获取模块,用于在已签名安卓应用程序初始化时,所述服务接入端获取该已签名安卓应用程序的公钥,将该已签名安卓应用程序的公钥记为第二公钥,所述已签名安卓应用程序是指用所述签名文件签名后的安卓应用程序;
验证模块,用于服务接入端将所述第二公钥与所述第一公钥进行比较,根据比较结果判断所述已签名安卓应用程序是否安全。
进一步地,上述安卓应用程序的安全验证装置还可具有以下特点,所述验证模块包括:
第一判定单元,用于在所述比较结果为所述第二公钥与所述第一公钥一致时,判定所述已签名安卓应用程序安全;
第二判定单元,用于在所述比较结果为所述第二公钥与所述第一公钥不一致时,判定所述已签名安卓应用程序不安全。
进一步地,上述安卓应用程序的安全验证装置还可具有以下特点,还包括返回模块,所述返回模块与所述验证模块相连,用于在所述验证模块的判断结果为所述已签名安卓应用程序安全时,向所述已签名安卓应用程序返回相关数据。
本发明安卓应用程序的安全验证方法及装置利用反编译后的APK需要重新打包,而重新打包后的APK签名必定会与官方签名不同这一机制对APK进行身份验证,通过在线签名比对进行身份校验,有效的阻止了不法分子通过仿造APK身份去恶意攻击平台的行为,有效防止被恶意篡改过的android应用程序带来的安全风险,增强了平台的安全性。
附图说明
图1为本发明实施例中安卓应用程序的安全验证方法的流程图;
图2为本发明实施例中安卓应用程序的安全验证方法的应用示例图;
图3为本发明实施例中安卓应用程序的安全验证装置的结构框图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
图1为本发明实施例中安卓应用程序的安全验证方法的流程图。如图1所示,本实施例中,安卓应用程序的安全验证方法的流程可以包括如下步骤:
步骤S101,从签名后的安卓应用程序安装文件即APK文件中提取出公钥保存到服务接入端,将该从签名后的APK文件中取出的公钥记为第一公钥,所述服务接入端是指安卓应用程序的下载端,公钥包含在签名后的APK文件中,其中,为APK文件签名的签名文件由开发者生成;
这里,签名文件是指安卓应用程序签名文件。
步骤S102,在已签名安卓应用程序初始化时,服务接入端获取该已签名安卓应用程序的公钥,将该已签名安卓应用程序的公钥记为第二公钥,所述已签名安卓应用程序是指用所述签名文件签名后的安卓应用程序;
步骤S103,服务接入端将第二公钥与第一公钥进行比较,根据比较结果判断已签名安卓应用程序是否安全。
具体地,步骤S103中根据比较结果判断已签名安卓应用程序是否安全可以包括:若比较结果为第二公钥与所述第一公钥一致,则判定已签名安卓应用程序安全,也即该已签名安卓应用程序合法,若比较结果为第二公钥与第一公钥不一致,则判定已签名安卓应用程序不安全,也即该已签名安卓应用程序非法。
在本发明其他实施例中,步骤S103之后还可以包括如下步骤:若判断结果为已签名安卓应用程序安全,则服务接入端向已签名安卓应用程序返回相关数据。
图2为本发明实施例中安卓应用程序的安全验证方法的应用示例图。如图2所示,本实施例中,安卓应用程序的安全验证方法包括如下步骤:
步骤S201、应用开发者生成keystore文件;
keystore文件即android应用程序签名文件(也即上述的安卓应用程序签名文件)。
步骤S202、从用keystore文件签名的APK文件中提取公钥提交到服务接入端;
步骤S203、用生成的keystore文件为android应用程序签名;
步骤S204、已签名的android应用程序初始化;
步骤S205、android应用程序初始化成功;
步骤S206、能力调用,SDK(Software Development Kit,软件开发工具包)获得已签名android应用程序的公钥;
步骤S207、验证公钥是否一致;
即验证从keystore文件中提取并提交到服务接入端中保存的公钥与从已签名android应用程序中获得的公钥是否一致,若一致则说明已签名android应用程序安全,否则说明已签名android应用程序不安全。
步骤S208、若一致则能力调用返回数据。这里,返回的数据是指能力调用的相关数据。
本发明安卓应用程序的安全验证方法为广大的Android开发者提供了一种验证应用是否被篡改的方案。由于不同的开发者签名文件是唯一的,所以不同的开发者打包后的APK的签名也不会相同。本发明安卓应用程序的安全验证方法利用反编译后的APK需要重新打包,而重新打包后的APK签名必定会与官方签名不同这一机制对APK进行身份验证,通过在线签名比对进行身份校验,有效的阻止了不法分子通过仿造APK身份去恶意攻击平台的行为,有效防止被恶意篡改过的android应用程序带来的安全风险,增强了平台的安全性。
本发明还提出了一种安卓应用程序的安全验证装置,用以执行上述的安卓应用程序的安全验证方法。
图3为本发明实施例中安卓应用程序的安全验证装置的结构框图。如图3所示,本实施例中,安卓应用程序的安全验证装置包括顺次相连的保存模块310、获取模块320和验证模块330。其中,保存模块310用于从签名后的安卓应用程序安装文件即APK文件中提取出公钥保存到服务接入端,将该从签名后的APK文件中取出的公钥记为第一公钥,所述服务接入端是指安卓应用程序的下载端,其中,公钥包含在签名后的APK文件中,其中,为APK文件签名的签名文件由开发者生成。这里,签名文件是指安卓应用程序签名文件。获取模块320用于在已签名安卓应用程序初始化时,所述服务接入端获取该已签名安卓应用程序的公钥,将该已签名安卓应用程序的公钥记为第二公钥,其中,已签名安卓应用程序是指用上述签名文件签名后的安卓应用程序。验证模块330用于服务接入端将所述第二公钥与所述第一公钥进行比较,根据比较结果判断所述已签名安卓应用程序是否安全。
在本发明实施例中,验证模块330还可以进一步包括第一判定单元和第二判定单元。其中,第一判定单元用于在所述比较结果为所述第二公钥与所述第一公钥一致时,判定所述已签名安卓应用程序安全。第二判定单元用于在所述比较结果为所述第二公钥与所述第一公钥不一致时,判定所述已签名安卓应用程序不安全。
在本发明实施例中,安卓应用程序的安全验证装置还可以进一步包括返回模块。该返回模块与验证模块330相连,用于在验证模块330的判断结果为已签名安卓应用程序安全时,向已签名安卓应用程序返回相关数据。
这里,相关数据是指能力调用的相关数据。
本发明安卓应用程序的安全验证装置利用反编译后的APK需要重新打包,而重新打包后的APK签名必定会与官方签名不同这一机制对APK进行身份验证,通过在线签名比对进行身份校验,有效的阻止了不法分子通过仿造APK身份去恶意攻击平台的行为,有效防止被恶意篡改过的android应用程序带来的安全风险,增强了平台的安全性。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种安卓应用程序的安全验证方法,其特征在于,包括:
步骤一,从签名后的安卓应用程序安装文件即APK文件中提取出公钥保存到服务接入端,将该从签名后的APK文件中取出的公钥记为第一公钥,所述服务接入端是指安卓应用程序的下载端,所述公钥包含在签名后的APK文件中,其中,为所述APK文件签名的签名文件由开发者生成;
步骤二,在已签名安卓应用程序初始化时,所述服务接入端获取该已签名安卓应用程序的公钥,将该已签名安卓应用程序的公钥记为第二公钥,所述已签名安卓应用程序是指用所述签名文件签名后的安卓应用程序;
步骤三,服务接入端将所述第二公钥与所述第一公钥进行比较,根据比较结果判断所述已签名安卓应用程序是否安全。
2.根据权利要求1所述的安卓应用程序的安全验证方法,其特征在于,所述步骤三包括:若所述比较结果为所述第二公钥与所述第一公钥一致,则判定所述已签名安卓应用程序安全,若所述比较结果为所述第二公钥与所述第一公钥不一致,则判定所述已签名安卓应用程序不安全。
3.根据权利要求1所述的安卓应用程序的安全验证方法,其特征在于,所述步骤三之后还包括步骤四,若判断结果为所述已签名安卓应用程序安全,则所述服务接入端向所述已签名安卓应用程序返回相关数据。
4.一种安卓应用程序的安全验证装置,其特征在于,包括顺次相连的保存模块、获取模块和验证模块,其中:
保存模块,用于从签名后的安卓应用程序安装文件即APK文件中提取出公钥保存到服务接入端,将该从签名后的APK文件中取出的公钥记为第一公钥,所述服务接入端是指安卓应用程序的下载端,所述公钥包含在签名后的APK文件中,其中,为所述APK文件签名的签名文件由开发者生成;
获取模块,用于在已签名安卓应用程序初始化时,所述服务接入端获取该已签名安卓应用程序的公钥,将该已签名安卓应用程序的公钥记为第二公钥,所述已签名安卓应用程序是指用所述签名文件签名后的安卓应用程序;
验证模块,用于服务接入端将所述第二公钥与所述第一公钥进行比较,根据比较结果判断所述已签名安卓应用程序是否安全。
5.根据权利要求4所述的安卓应用程序的安全验证装置,其特征在于,所述验证模块包括:
第一判定单元,用于在所述比较结果为所述第二公钥与所述第一公钥一致时,判定所述已签名安卓应用程序安全;
第二判定单元,用于在所述比较结果为所述第二公钥与所述第一公钥不一致时,判定所述已签名安卓应用程序不安全。
6.根据权利要求4所述的安卓应用程序的安全验证装置,其特征在于,还包括返回模块,所述返回模块与所述验证模块相连,用于在所述验证模块的判断结果为所述已签名安卓应用程序安全时,向所述已签名安卓应用程序返回相关数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410291357.XA CN104049973A (zh) | 2014-06-25 | 2014-06-25 | 安卓应用程序的安全验证方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410291357.XA CN104049973A (zh) | 2014-06-25 | 2014-06-25 | 安卓应用程序的安全验证方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104049973A true CN104049973A (zh) | 2014-09-17 |
Family
ID=51502882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410291357.XA Pending CN104049973A (zh) | 2014-06-25 | 2014-06-25 | 安卓应用程序的安全验证方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104049973A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104469768A (zh) * | 2014-11-06 | 2015-03-25 | 中国联合网络通信集团有限公司 | 基于应用软件的用户身份校验方法和装置 |
CN104933355A (zh) * | 2015-06-18 | 2015-09-23 | 上海斐讯数据通信技术有限公司 | 移动终端可信应用的安装校验***及其校验方法 |
WO2016109955A1 (zh) * | 2015-01-07 | 2016-07-14 | 华为技术有限公司 | 一种软件校验方法和装置 |
CN106355081A (zh) * | 2016-09-07 | 2017-01-25 | 深圳市新国都支付技术有限公司 | 一种安卓程序启动校验方法和装置 |
CN107169318A (zh) * | 2017-03-31 | 2017-09-15 | 咪咕数字传媒有限公司 | 一种应用程序安全保护的方法及装置 |
WO2017206185A1 (zh) * | 2016-06-03 | 2017-12-07 | 华为技术有限公司 | 验证应用程序合法性的方法、装置及*** |
CN107958150A (zh) * | 2017-12-05 | 2018-04-24 | 中科信息安全共性技术国家工程研究中心有限公司 | 一种检测安卓热补丁安全性的方法 |
WO2018165951A1 (zh) * | 2017-03-16 | 2018-09-20 | 深圳大趋智能科技有限公司 | 安卓apk启动时签名认证的方法及其装置 |
CN108923910A (zh) * | 2018-07-12 | 2018-11-30 | 南方电网科学研究院有限责任公司 | 一种移动应用apk防篡改的方法 |
CN109408074A (zh) * | 2018-09-26 | 2019-03-01 | 平安普惠企业管理有限公司 | 应用程序的安装方法、装置、计算机设备及存储介质 |
CN109687974A (zh) * | 2018-12-26 | 2019-04-26 | 努比亚技术有限公司 | Apk验证方法、装置、移动终端及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102024120A (zh) * | 2009-09-18 | 2011-04-20 | 无锡安腾软件开发有限公司 | 使用数字签名检测软件是否经过篡改 |
CN102300065A (zh) * | 2011-08-31 | 2011-12-28 | 四川长虹电器股份有限公司 | 基于安卓平台的智能电视软件安全认证的方法 |
CN103577206A (zh) * | 2012-07-27 | 2014-02-12 | 北京三星通信技术研究有限公司 | 一种应用软件的安装方法和装置 |
-
2014
- 2014-06-25 CN CN201410291357.XA patent/CN104049973A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102024120A (zh) * | 2009-09-18 | 2011-04-20 | 无锡安腾软件开发有限公司 | 使用数字签名检测软件是否经过篡改 |
CN102300065A (zh) * | 2011-08-31 | 2011-12-28 | 四川长虹电器股份有限公司 | 基于安卓平台的智能电视软件安全认证的方法 |
CN103577206A (zh) * | 2012-07-27 | 2014-02-12 | 北京三星通信技术研究有限公司 | 一种应用软件的安装方法和装置 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104469768B (zh) * | 2014-11-06 | 2018-03-02 | 中国联合网络通信集团有限公司 | 基于应用软件的用户身份校验方法和装置 |
CN104469768A (zh) * | 2014-11-06 | 2015-03-25 | 中国联合网络通信集团有限公司 | 基于应用软件的用户身份校验方法和装置 |
CN106170763B (zh) * | 2015-01-07 | 2019-10-18 | 华为技术有限公司 | 一种软件校验方法和装置 |
WO2016109955A1 (zh) * | 2015-01-07 | 2016-07-14 | 华为技术有限公司 | 一种软件校验方法和装置 |
CN106170763A (zh) * | 2015-01-07 | 2016-11-30 | 华为技术有限公司 | 一种软件校验方法和装置 |
US10796001B2 (en) | 2015-01-07 | 2020-10-06 | Huawei Technologies Co., Ltd. | Software verification method and apparatus |
CN104933355A (zh) * | 2015-06-18 | 2015-09-23 | 上海斐讯数据通信技术有限公司 | 移动终端可信应用的安装校验***及其校验方法 |
WO2017206185A1 (zh) * | 2016-06-03 | 2017-12-07 | 华为技术有限公司 | 验证应用程序合法性的方法、装置及*** |
CN106355081A (zh) * | 2016-09-07 | 2017-01-25 | 深圳市新国都支付技术有限公司 | 一种安卓程序启动校验方法和装置 |
WO2018165951A1 (zh) * | 2017-03-16 | 2018-09-20 | 深圳大趋智能科技有限公司 | 安卓apk启动时签名认证的方法及其装置 |
CN107169318A (zh) * | 2017-03-31 | 2017-09-15 | 咪咕数字传媒有限公司 | 一种应用程序安全保护的方法及装置 |
CN107958150A (zh) * | 2017-12-05 | 2018-04-24 | 中科信息安全共性技术国家工程研究中心有限公司 | 一种检测安卓热补丁安全性的方法 |
CN108923910A (zh) * | 2018-07-12 | 2018-11-30 | 南方电网科学研究院有限责任公司 | 一种移动应用apk防篡改的方法 |
CN108923910B (zh) * | 2018-07-12 | 2021-06-25 | 南方电网科学研究院有限责任公司 | 一种移动应用apk防篡改的方法 |
CN109408074A (zh) * | 2018-09-26 | 2019-03-01 | 平安普惠企业管理有限公司 | 应用程序的安装方法、装置、计算机设备及存储介质 |
CN109687974A (zh) * | 2018-12-26 | 2019-04-26 | 努比亚技术有限公司 | Apk验证方法、装置、移动终端及可读存储介质 |
CN109687974B (zh) * | 2018-12-26 | 2023-10-17 | 努比亚技术有限公司 | Apk验证方法、装置、移动终端及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104049973A (zh) | 安卓应用程序的安全验证方法及装置 | |
CN105260663B (zh) | 一种基于TrustZone技术的安全存储服务***及方法 | |
CN109726588B (zh) | 基于信息隐藏的隐私保护方法和*** | |
KR101503785B1 (ko) | 동적 라이브러리를 보호하는 방법 및 장치 | |
US20030163685A1 (en) | Method and system to allow performance of permitted activity with respect to a device | |
CN106529218B (zh) | 一种应用校验方法和装置 | |
CN106656513B (zh) | 安卓平台上apk文件的二次打包签名验证方法 | |
KR101498820B1 (ko) | 안드로이드 환경에서의 어플리케이션 리패키징 탐지 방법 | |
CN103890770A (zh) | 在移动网络环境中将应用列入白列表的***和方法 | |
CN105453102A (zh) | 用于识别已泄漏的私有密钥的***和方法 | |
CN105531692A (zh) | 针对由在虚拟机里面运行的移动应用加载、链接和执行本地代码的安全策略 | |
CN102340398A (zh) | 安全策略设置、确定方法、应用程序执行操作方法及装置 | |
CN104809397A (zh) | 一种基于动态监控的Android恶意软件的检测方法及*** | |
CN104751049A (zh) | 一种应用程序安装方法及移动终端 | |
CN104517054A (zh) | 一种检测恶意apk的方法、装置、客户端和服务器 | |
CN104933366A (zh) | 一种移动终端应用程序处理方法 | |
CN1869927B (zh) | 设备控制器、控制设备的方法及其程序 | |
CN103617387A (zh) | 一种防止自动安装应用程序的方法及装置 | |
CN104680061A (zh) | 一种Android环境下应用程序启动中代码签名验证的方法和*** | |
CN103685194A (zh) | 一种能力调用方法、装置及终端 | |
KR20190073255A (ko) | 모바일 운영체제 환경에서 악성 코드 행위에 따른 위험을 관리하는 장치 및 방법, 이 방법을 수행하기 위한 기록 매체 | |
CN108880859A (zh) | 升级文件的配置方法、装置、服务器、终端及存储介质 | |
CN104123488A (zh) | 应用程序的验证方法和装置 | |
CN103902908A (zh) | 一种对Android加固应用的恶意代码检测方法及*** | |
CN112231702A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140917 |