CN106656513B - 安卓平台上apk文件的二次打包签名验证方法 - Google Patents
安卓平台上apk文件的二次打包签名验证方法 Download PDFInfo
- Publication number
- CN106656513B CN106656513B CN201710101261.6A CN201710101261A CN106656513B CN 106656513 B CN106656513 B CN 106656513B CN 201710101261 A CN201710101261 A CN 201710101261A CN 106656513 B CN106656513 B CN 106656513B
- Authority
- CN
- China
- Prior art keywords
- file
- digital signature
- apk
- embedded
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供一种安卓平台上APK文件的二次打包签名验证方法,所述方法包括:步骤1、签名工具使用私钥对经过打包的原始APK文件进行签名,生成嵌有数字签名文件的APK文件;步骤2、在终端设备上预置公钥证书,且将嵌有数字签名文件的APK文件下载到终端设备上;步骤3、终端设备使用公钥证书验证嵌有数字签名文件的APK文件的合法性。本发明优点:可以有效防止应用程序被非法破解,并植入恶意代码重新打包的情况发生,有利于确保用户的账户、密码、流量等各种数据的安全。
Description
技术领域
本发明涉及一种安卓平台上APK文件的二次打包签名验证方法。
背景技术
Android是一种基于Linux的自由及开放源代码的操作***,主要使用在移动设备上,如智能手机、平板电脑等。在Android平台上,应用(APP)的安装文件都是以APK(AndroidPackage)格式来保存的,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文件安装到终端设备上。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (2)
1.一种安卓平台上APK文件的二次打包签名验证方法,其特征在于:所述方法包括如下步骤:
步骤1、由签名工具使用私钥生成一个数字签名文件,并将该数字签名文件嵌入到经过打包的原始APK文件的目录中,生成嵌有数字签名文件的APK文件;
所述数字签名文件包括签名信息、自定义信息以及文件头;
所述签名信息由文件类别名称、头部分、签名信息主体以及签名数据组成,其中,所述签名信息主体包括主体部分开始标识、结构版本、签名证书ID号、数字签名算法、签名时间以及原始文件哈希值;
所述文件头由文件类别名称、头部分、结构版本、文件体长度、源文件长度、原始APK文件长度以及校验值组成;
步骤2、在终端设备上预置公钥证书,且将嵌有数字签名文件的APK文件下载到终端设备上;
步骤3、终端设备使用公钥证书验证嵌有数字签名文件的APK文件的合法性。
2.根据权利要求1所述的安卓平台上APK文件的二次打包签名验证方法,其特征在于:所述步骤3具体为:
终端设备在安装嵌有数字签名文件的APK文件时,首先对嵌有数字签名文件的APK文件中的原生签名文件进行验证,待原生签名文件验证通过以后,再从嵌有数字签名文件的APK文件的目录中提取出数字签名文件,还原原始APK文件;
在数字签名文件提取完成后,使用公钥证书对数字签名文件进行合法性验证,且如果验证通过,则允许将原始APK文件安装到终端设备上;如果验证未通过,则不允许将原始APK文件安装到终端设备上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710101261.6A CN106656513B (zh) | 2017-02-24 | 2017-02-24 | 安卓平台上apk文件的二次打包签名验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710101261.6A CN106656513B (zh) | 2017-02-24 | 2017-02-24 | 安卓平台上apk文件的二次打包签名验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106656513A CN106656513A (zh) | 2017-05-10 |
CN106656513B true CN106656513B (zh) | 2019-09-13 |
Family
ID=58847831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710101261.6A Active CN106656513B (zh) | 2017-02-24 | 2017-02-24 | 安卓平台上apk文件的二次打包签名验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106656513B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391166B (zh) * | 2017-06-05 | 2022-01-25 | 深圳市优***科技股份有限公司 | Android应用的安装方法及***、计算机装置和可读存储介质 |
CN107273742B (zh) * | 2017-06-09 | 2020-02-14 | 广州涉川科技有限公司 | 一种安卓应用的授权安装方法、扫码支付终端、服务器及*** |
CN107301343B (zh) * | 2017-06-19 | 2021-03-26 | 大连中科创达软件有限公司 | 安全数据处理方法、装置及电子设备 |
CN107769924B (zh) * | 2017-09-11 | 2023-04-14 | 福建新大陆支付技术有限公司 | 校验pos机apk签名的方法及*** |
CN111787529B (zh) * | 2020-07-17 | 2021-06-29 | 江苏海全科技有限公司 | 适于Android智能POS机应用的签名方法和*** |
CN113221072A (zh) * | 2021-04-16 | 2021-08-06 | 江苏先安科技有限公司 | 一种基于安卓***的第三方副署签名、验证方法 |
CN113922966B (zh) * | 2021-10-09 | 2022-07-22 | 上海盛本智能科技股份有限公司 | 一种基于加密存储硬件的安全应用安装方法 |
US11750732B1 (en) | 2023-02-20 | 2023-09-05 | 14788591 Canada Inc. | System for introducing features to an in-vehicle infotainment system and method of use thereof |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905207A (zh) * | 2014-04-23 | 2014-07-02 | 福建联迪商用设备有限公司 | 一种统一apk签名的方法及其*** |
CN103944903A (zh) * | 2014-04-23 | 2014-07-23 | 福建联迪商用设备有限公司 | 一种多方授权的apk签名方法及*** |
CN104426658A (zh) * | 2013-09-02 | 2015-03-18 | ***通信集团公司 | 对移动终端上的应用进行身份验证的方法及装置 |
CN105391717A (zh) * | 2015-11-13 | 2016-03-09 | 福建联迪商用设备有限公司 | 一种apk签名认证方法及其*** |
CN105743910A (zh) * | 2016-03-30 | 2016-07-06 | 福建联迪商用设备有限公司 | 通过数字签名安装程序的方法及*** |
CN105787357A (zh) * | 2016-03-28 | 2016-07-20 | 福建联迪商用设备有限公司 | 一种基于安卓***apk下载方法及其*** |
CN106209379A (zh) * | 2016-07-04 | 2016-12-07 | 江苏先安科技有限公司 | 一种Android APK副署签名验证方法 |
CN106355081A (zh) * | 2016-09-07 | 2017-01-25 | 深圳市新国都支付技术有限公司 | 一种安卓程序启动校验方法和装置 |
CN106375095A (zh) * | 2016-09-02 | 2017-02-01 | 中科信息安全共性技术国家工程研究中心有限公司 | 一种对apk完整性保护的方法 |
CN106372503A (zh) * | 2016-09-07 | 2017-02-01 | 深圳市新国都支付技术有限公司 | 增强apk应用权限配置灵活性的方法、装置和*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102038964B1 (ko) * | 2013-03-18 | 2019-11-26 | 삼성전자주식회사 | 어플리케이션 간의 상호 인증 방법 및 장치 |
KR20150084221A (ko) * | 2014-01-13 | 2015-07-22 | 삼성전자주식회사 | 어플리케이션 패키지의 재서명 장치, 방법 및 상기 어플리케이션 패키지를 실행하는 단말장치 |
-
2017
- 2017-02-24 CN CN201710101261.6A patent/CN106656513B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104426658A (zh) * | 2013-09-02 | 2015-03-18 | ***通信集团公司 | 对移动终端上的应用进行身份验证的方法及装置 |
CN103905207A (zh) * | 2014-04-23 | 2014-07-02 | 福建联迪商用设备有限公司 | 一种统一apk签名的方法及其*** |
CN103944903A (zh) * | 2014-04-23 | 2014-07-23 | 福建联迪商用设备有限公司 | 一种多方授权的apk签名方法及*** |
CN105391717A (zh) * | 2015-11-13 | 2016-03-09 | 福建联迪商用设备有限公司 | 一种apk签名认证方法及其*** |
CN105787357A (zh) * | 2016-03-28 | 2016-07-20 | 福建联迪商用设备有限公司 | 一种基于安卓***apk下载方法及其*** |
CN105743910A (zh) * | 2016-03-30 | 2016-07-06 | 福建联迪商用设备有限公司 | 通过数字签名安装程序的方法及*** |
CN106209379A (zh) * | 2016-07-04 | 2016-12-07 | 江苏先安科技有限公司 | 一种Android APK副署签名验证方法 |
CN106375095A (zh) * | 2016-09-02 | 2017-02-01 | 中科信息安全共性技术国家工程研究中心有限公司 | 一种对apk完整性保护的方法 |
CN106355081A (zh) * | 2016-09-07 | 2017-01-25 | 深圳市新国都支付技术有限公司 | 一种安卓程序启动校验方法和装置 |
CN106372503A (zh) * | 2016-09-07 | 2017-02-01 | 深圳市新国都支付技术有限公司 | 增强apk应用权限配置灵活性的方法、装置和*** |
Also Published As
Publication number | Publication date |
---|---|
CN106656513A (zh) | 2017-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106656513B (zh) | 安卓平台上apk文件的二次打包签名验证方法 | |
CN107463806B (zh) | 一种Android应用程序安装包的签名和验签方法 | |
CN104156638B (zh) | 一种面向安卓***软件的扩展签名的实现方法 | |
CN106209379B (zh) | 一种Android APK副署签名及验证方法 | |
CN103167491B (zh) | 一种基于软件数字证书的移动终端唯一性认证方法 | |
CN107743115B (zh) | 一种终端应用的身份认证方法、装置和*** | |
US20030163685A1 (en) | Method and system to allow performance of permitted activity with respect to a device | |
CN101551843B (zh) | 一种移动通信装置应用软件包的签名方法 | |
CN104123481A (zh) | 防止应用程序被篡改的方法及装置 | |
CN104426658B (zh) | 对移动终端上的应用进行身份验证的方法及装置 | |
WO2016019790A1 (zh) | 一种安装包的校验方法、客户端、服务器及*** | |
CN105099705B (zh) | 一种基于usb协议的安全通信方法及其*** | |
CN107092816B (zh) | 一种Android应用程序加固方法 | |
CN104680061A (zh) | 一种Android环境下应用程序启动中代码签名验证的方法和*** | |
CN102300065A (zh) | 基于安卓平台的智能电视软件安全认证的方法 | |
CN108171019B (zh) | 防伪验证方法、防伪验证***、防伪验证设备及存储介质 | |
CN106789075B (zh) | Pos数字签名防切机*** | |
WO2017008728A1 (zh) | 一种划分终端开发模式和产品模式的方法及*** | |
CN110018841A (zh) | 一种uefi bios升级方法、***及相关装置 | |
CN107980132A (zh) | 一种apk签名认证方法及*** | |
CN102033764A (zh) | 一种tf卡cos固件更新方法 | |
CN112560017A (zh) | 一种使用三级证书认证实现apk统一签名的方法 | |
CN105873044B (zh) | 基于安卓平台的应用程序发布方法、开发者追溯方法和装置 | |
CN106709281B (zh) | 补丁发放和获取方法、装置 | |
CN103475661A (zh) | 认证程序的安全获取方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |