CN105808979B - 一种改进的Android软件安装包的签名和验签方法 - Google Patents

一种改进的Android软件安装包的签名和验签方法 Download PDF

Info

Publication number
CN105808979B
CN105808979B CN201610126599.2A CN201610126599A CN105808979B CN 105808979 B CN105808979 B CN 105808979B CN 201610126599 A CN201610126599 A CN 201610126599A CN 105808979 B CN105808979 B CN 105808979B
Authority
CN
China
Prior art keywords
information
signing messages
installation kit
customized information
text
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
CN201610126599.2A
Other languages
English (en)
Other versions
CN105808979A (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.)
Xuan Cai Interactive Network Science And Technology Ltd
Original Assignee
Xuan Cai Interactive Network Science And Technology 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 Xuan Cai Interactive Network Science And Technology Ltd filed Critical Xuan Cai Interactive Network Science And Technology Ltd
Priority to CN201610126599.2A priority Critical patent/CN105808979B/zh
Publication of CN105808979A publication Critical patent/CN105808979A/zh
Application granted granted Critical
Publication of CN105808979B publication Critical patent/CN105808979B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Abstract

一种改进的Android软件安装包签名和验签方法。将软件内容和定制信息分离,从而进行各自独立的签名。不同于前面介绍的常用方法,本方法不需要将定制信息整合进软件内容中重新打包签名,而是对Android的APK安装包进行了文件扩展,在不影响原有APK文件结构和内容的前提下进行的。所以使用本方法生成的安装包不仅可以在任何的Android系统中安装使用,在应用程序中仍然可以读取并校验扩展的定制信息,从而达到了解决了旧有方法存在的各种问题。

Description

一种改进的Android软件安装包的签名和验签方法
技术领域
本发明涉及移动应用/移动游戏开发技术领域。
背景技术
手机软件(手机游戏)在发行时需要在安装包文件中追加一些额外的定制信息,比如渠道信息——用以标识不同的发行渠道,方便游戏开发商(以下简称开发商)跟踪统计各个渠道的推广情况。目前有两种方法添加这类定制信息:
一种方法是发行商(如游戏基地)将自己的发行渠道信息交给开发商,由开发商将这些信息和游戏内容一起打包后进行重新签名安装包。这种方法对于开发商来说较为繁琐,如果有爱游戏、安卓市场、其他应用商店等10个发行渠道,那么开发商需要嵌入10个渠道的信息,并重新签名10次,这增加了开发商的开发成本和版本管理成本;
另一种方法是开发商将游戏内容交给发行商,由发行商添加渠道信息后再使用发行商的签名文件重新签名安装包。但是由于开发商和发行商所使用的签名文件不同,会导致新生成的安装包在安装后无法升级到更新的开发商官方安装包,从而影响了后续的更加完善的游戏版本的及时升级,降低了用户体验。
发明内容
一种改进的Android软件安装包签名和验签方法。将软件内容和定制信息分离,从而进行各自独立的签名。不同于前面介绍的常用方法,本方法不需要将定制信息整合进软件内容中重新打包签名,而是对Android的APK安装包进行了文件扩展,在不影响原有APK文件结构和内容的前提下进行的。所以使用本方法生成的安装包不仅可以在任何的Android系统中安装使用,在应用程序中仍然可以读取并校验扩展的定制信息,从而达到了解决了旧有方法存在的各种问题。
本发明公开了一种改进的Android软件安装包的签名方法,包括以下步骤:
1)准备好需要写入的定制信息, 对准备好的定制信息进行RSA非对称加密,生成密文信息;
2)运用MD5单向散列算法对生成的密文信息进行运算,生成的MD5值即为签名信息;
3)将生成的所述密文信息通过Base64编码算法转换成文本格式的密文数据,并计算所述密文数据长度和所述签名信息长度;
4)在待添加定制信息和签名信息的安装包的文件尾部写入开始标记, 然后依次写入计算得到的所述密文数据长度的信息、所述文本格式的密文数据、所述签名信息长度的信息、签名信息;由此,生成新安装包。
进一步的,所述待添加定制信息和签名信息的安装包具有扩展位,所述扩展位位于待添加定制信息和签名信息的安装包的文件尾部,所述密文数据长度的信息、所述文本格式的密文数据、所述签名信息长度的信息、签名信息写入所述扩展位,从而安装包的开发商不需要通过重新打包签名来将定制信息整合进软件内容中。
进一步的,所述待添加定制信息和签名信息的安装包内已包括开发商的签名信息,所述步骤1)中运用MD5单向散列算法生成的签名信息为发行商的签名信息。
进一步的,所述步骤4)生成的新安装包具有开发商的签名信息和发行商的签名信息。
进一步的,所述待添加定制信息和签名信息的安装包内还包括安装文件。
进一步的,所述步骤4)生成的新安装包包括:开发商的签名信息、发行商的签名信息、安装文件以及对定制信息进行加密、编码运算得到的密文数据。
进一步的,所述步骤4)生成的新安装包能够在任何的Android系统中安装使用。
进一步的,在应用程序中仍然能够读取所述步骤4)生成的新安装包并校验其定制信息。
进一步的,所述步骤1)定制信息是文本或二进制流。
在另一实施例中,本发明还包括一种改进的Android软件安装包的验签方法,用于验证使用上述改进的Android软件安装包的签名方法所生成的新安装包,包括以下步骤:
1)读取开始标记信息;
2)读入所述密文数据长度的信息, 根据所述密文数据长度的信息读取所述文本格式的密文数据;
3)读入所述签名信息的长度的信息, 再根据所述签名信息的长度的信息读取签名信息;
4)验证签名信息,验证通过后,对所述文本格式的密文数据进行解码运算,得到所述密文信息;
基于RSA非对称加密运算,对所述密文信息进行解密,得到明文的定制信息。
附图说明
图1:旧有方法一图示。
图2:旧有方法二图示。
图3:新的改进方法图示。
图4:新的签名和验签方法流程图。
具体实施方式
下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。
首先准备好需要写入的定制信息, 可以是文本, 可以是二进制流。
对准备好的定制信息进行RSA非对称加密, 然后对生成的二进制密文信息进行MD5数字散列, 生成的MD5值即为签名信息。
将生成的所述密文信息通过Base64编码算法转换成文本格式的密文数据,并计算所述密文数据长度和所述签名信息长度。在待添加定制信息和签名信息的安装包的文件尾部写入开始标记, 然后依次写入计算得到的所述密文数据长度的信息、所述文本格式的密文数据、所述签名信息长度的信息、签名信息;由此,生成新安装包。最后生成的新安装包则具有两组数据和签名信息。
进一步的,所述待添加定制信息和签名信息的安装包具有扩展位,所述扩展位位于待添加定制信息和签名信息的安装包的文件尾部,所述密文数据长度的信息、所述文本格式的密文数据、所述签名信息长度的信息、签名信息写入所述扩展位,从而安装包的开发商不需要通过重新打包签名来将定制信息整合进软件内容中。
进一步的,所述待添加定制信息和签名信息的安装包内已包括开发商的签名信息,所述步骤1)中运用MD5单向散列算法生成的签名信息为发行商的签名信息。
进一步的,所述步骤4)生成的新安装包具有开发商的签名信息和发行商的签名信息。
进一步的,所述待添加定制信息和签名信息的安装包内还包括安装文件。
进一步的,所述步骤4)生成的新安装包包括:开发商的签名信息、发行商的签名信息、安装文件以及对定制信息进行加密、编码运算得到的密文数据。
进一步的,所述步骤4)生成的新安装包能够在任何的Android系统中安装使用。
进一步的,在应用程序中仍然能够读取所述步骤4)生成的新安装包并校验其定制信息。
读取定制信息和验签的方法和上述过程恰恰相反。首先读到开始标记信息,然后读入所述密文数据长度的信息, 根据所述密文数据长度的信息读取所述文本格式的密文数据;接着读入所述签名信息的长度的信息, 再根据所述签名信息的长度的信息读取签名信息。随后进行签名验证,签名验证通过后,解开Base64后的文本密文信息,得到二进制密文信息,使用RSA非对称加密解密二进制密文信息,得到明文定制信息。
本方法不需要将定制信息整合进软件内容中重新打包签名,而是对Android的APK安装包进行了文件扩展,在不影响原有APK文件结构和内容的前提下进行的。所以使用本方法生成的安装包不仅可以在任何的Android系统中安装使用,在应用程序中仍然可以读取并校验扩展的定制信息,从而达到了解决了旧有方法存在的各种问题。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

Claims (10)

1.一种改进的Android软件安装包的签名方法,包括以下步骤:
1)准备好需要写入的定制信息,对准备好的定制信息进行RSA非对称加密,生成密文信息;
2)运用MD5单向散列算法对生成的密文信息进行运算,生成的MD5值即为签名信息;
3)将生成的所述密文信息通过Base64编码算法转换成文本格式的密文数据,并计算所述密文数据长度和所述签名信息长度;
4)在待添加定制信息和签名信息的安装包的文件尾部写入开始标记,然后依次写入计算得到的所述密文数据长度的信息、所述文本格式的密文数据、所述签名信息长度的信息、签名信息;由此,生成新安装包。
2.根据权利要求1所述的签名方法,其中,所述待添加定制信息和签名信息的安装包具有扩展位,所述扩展位位于待添加定制信息和签名信息的安装包的文件尾部,所述密文数据长度的信息、所述文本格式的密文数据、所述签名信息长度的信息、签名信息写入所述扩展位,从而安装包的开发商不需要通过重新打包签名来将定制信息整合进软件内容中。
3.根据权利要求2所述的签名方法,其中,所述待添加定制信息和签名信息的安装包内已包括开发商的签名信息,所述步骤2)中运用MD5单向散列算法生成的签名信息为发行商的签名信息。
4.根据权利要求3所述的签名方法,其中,所述步骤4)生成的新安装包具有开发商的签名信息和发行商的签名信息。
5.根据权利要求3所述的签名方法,其中,所述待添加定制信息和签名信息的安装包内还包括安装文件。
6.根据权利要求3所述的签名方法,其中,所述步骤4)生成的新安装包包括:开发商的签名信息、发行商的签名信息、安装文件以及对定制信息进行加密、编码运算得到的密文数据。
7.根据权利要求6所述的签名方法,其中,所述步骤4)生成的新安装包能够在任何的Android系统中安装使用。
8.根据权利要求7所述的签名方法,其中,在所述Android软件中仍然能够读取所述步骤4)生成的新安装包并校验其定制信息。
9.根据权利要求1所述的签名方法,其中,所述步骤1)中的定制信息是文本或二进制流。
10.一种改进的Android软件安装包的验签方法,用于验证使用权利要求1所述的改进的Android软件安装包的签名方法所生成的新安装包,包括以下步骤:
读取开始标记信息;
读入所述密文数据长度的信息,根据所述密文数据长度的信息读取所述文本格式的密文数据;
读入所述签名信息长度的信息,再根据所述签名信息长度的信息读取签名信息;
验证签名信息,验证通过后,对所述文本格式的密文数据进行解码运算,得到所述密文信息;
基于RSA非对称加密运算,对所述密文信息进行解密,得到明文的定制信息。
CN201610126599.2A 2016-03-07 2016-03-07 一种改进的Android软件安装包的签名和验签方法 Active CN105808979B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610126599.2A CN105808979B (zh) 2016-03-07 2016-03-07 一种改进的Android软件安装包的签名和验签方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610126599.2A CN105808979B (zh) 2016-03-07 2016-03-07 一种改进的Android软件安装包的签名和验签方法

Publications (2)

Publication Number Publication Date
CN105808979A CN105808979A (zh) 2016-07-27
CN105808979B true CN105808979B (zh) 2016-12-07

Family

ID=56466723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610126599.2A Active CN105808979B (zh) 2016-03-07 2016-03-07 一种改进的Android软件安装包的签名和验签方法

Country Status (1)

Country Link
CN (1) CN105808979B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106843962A (zh) * 2017-01-19 2017-06-13 北京乐盟互动科技有限公司 一种应用打包方法及装置
WO2019079998A1 (zh) * 2017-10-25 2019-05-02 福建联迪商用设备有限公司 一种应用程序权限的管控方法、终端及pos终端
CN109344605B (zh) * 2018-09-10 2022-04-05 惠尔丰(中国)信息系统有限公司 一种智能pos机的权限控制方法及其控制系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050188203A1 (en) * 2004-02-19 2005-08-25 Jp Mobile Operating L.P. Method for packaging information with digitally signed software without breaking signature
CN102024127B (zh) * 2010-11-17 2012-09-19 中国联合网络通信集团有限公司 应用软件控制平台、使用者终端、分发系统及方法
CN102546604B (zh) * 2011-12-22 2014-12-24 四川长虹电器股份有限公司 智能电视应用程序安全控制方法
CN104092544B (zh) * 2014-06-26 2017-11-17 工业和信息化部计算机与微电子发展研究中心(中国软件评测中心) 兼容安卓应用的服务签名方法与装置

Also Published As

Publication number Publication date
CN105808979A (zh) 2016-07-27

Similar Documents

Publication Publication Date Title
CN104503745B (zh) 一种生成应用渠道包的方法和装置
CN105808979B (zh) 一种改进的Android软件安装包的签名和验签方法
CN109214168A (zh) 固件升级方法及装置
CN104156638B (zh) 一种面向安卓系统软件的扩展签名的实现方法
CN108683502A (zh) 一种数字签名验证方法、介质及设备
CN102685727B (zh) 一种应用程序发送、运行方法、系统、服务器和终端
CN111078223B (zh) 一种应用程序的打包方法及装置
CN103810421B (zh) 应用程序的校验方法、装置和终端设备
CN105956456A (zh) 一种对Android系统进行四重联合签名验证的实现方法
CN105706048A (zh) 使用硬件信任根的媒体客户端装置鉴权
CN105608145A (zh) 基于下载渠道统计应用软件的下载量的方法及装置
CN101626293B (zh) 一种数据加密保护及解密方法
CN110414190B (zh) 应用安装包的签名方法、相关装置、存储介质及电子设备
CN104573527A (zh) 一种基于更新安全机制的uefi系统更新方法
CN106789075B (zh) Pos数字签名防切机系统
CN105631361A (zh) 一种应用程序渠道来源标识方法及装置
CN105893837B (zh) 应用程序安装方法、安全加密芯片及终端
CN109586920A (zh) 一种可信验证方法及装置
CN110502920A (zh) 基于区块链的生产任务执行方法、装置和设备
CN111339201A (zh) 基于区块链的测评方法及系统
US8099324B2 (en) Securely providing advertising subsidized computer usage
CN115840787A (zh) 基于区块链的供应链数据共享方法、装置、设备及介质
CN109145639A (zh) 文件加密方法、解密方法及装置
CN105873044A (zh) 基于安卓平台的应用程序发布方法、开发者追溯方法和装置
CN104462883A (zh) 一种apk文件加固的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant