CN107592202B - 应用签名方法、装置、系统、计算设备及存储介质 - Google Patents

应用签名方法、装置、系统、计算设备及存储介质 Download PDF

Info

Publication number
CN107592202B
CN107592202B CN201710852754.3A CN201710852754A CN107592202B CN 107592202 B CN107592202 B CN 107592202B CN 201710852754 A CN201710852754 A CN 201710852754A CN 107592202 B CN107592202 B CN 107592202B
Authority
CN
China
Prior art keywords
signature
signature file
application
target application
file
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
CN201710852754.3A
Other languages
English (en)
Other versions
CN107592202A (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.)
Alibaba China Co Ltd
Original Assignee
Alibaba China 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 Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN201710852754.3A priority Critical patent/CN107592202B/zh
Publication of CN107592202A publication Critical patent/CN107592202A/zh
Application granted granted Critical
Publication of CN107592202B publication Critical patent/CN107592202B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种应用签名方法、装置、系统、计算设备及存储介质。响应于接收到客户端发送的针对目标应用的应用签名请求,在签名文件数据库中查找是否存在与目标应用对应的签名文件。在查找到的情况下,将签名文件发送给客户端。在查找不到的情况下,使用预设的私钥生成针对目标应用的签名文件,将所生成的签名文件保存到签名文件数据库中,并发送给客户端。由此,通过将应用的签名工作交由服务器端执行,可以降低应用签名过程中的私钥泄露的风险,提高签名过程的安全性。

Description

应用签名方法、装置、系统、计算设备及存储介质
技术领域
本发明涉及应用签名领域,特别是涉及一种应用签名方法、装置、系 统、计算设备及存储介质。
背景技术
应用签名是指在应用开发或更新完成后,利用私钥对应用文件进行数 字签名,以得到签名文件。通过签名文件可以在应用程序的作者和应用程 序之间建立信任关系。
应用的软件安装包经过签名后才被允许投放市场,或安装到终端设备 中。因此,维护私钥的安全性对于应用程序的作者来说至关重要。如果签 名私钥泄露,被第三方获得和利用,则会损害应用程序的作者身份和用户 对作者的信任。比如某个第三方在作者不知情或未经授权的情况下设法取 得作者的私钥,如此该第三方可能会签署和分发应用,从而恶意替换作者 的原版应用或损坏它们。另外,取得私钥的第三方还可以利用作者的身份签署和分发应用,从而攻击其他应用或系统本身,损坏或窃取用户数据。
目前,应用签名工作大多是由作者在本地客户端完成的,很容易造成 私钥的泄露,因此,需要一种更加安全的应用签名方案。
发明内容
本发明的主要目的在于提供一种更加安全的应用签名方法、装置、系 统、计算设备及存储介质。
根据本发明的一个方面,提供了一种应用签名方法,包括:响应于接 收到客户端发送的针对目标应用的应用签名请求,在签名文件数据库中查 找是否存在与目标应用对应的签名文件;在查找到的情况下,将签名文件 发送给客户端,并且/或者,在查找不到的情况下,使用预设的私钥生成针 对目标应用的签名文件,将所生成的签名文件保存到签名文件数据库中, 并发送给客户端。
由此,通过在服务端执行签名操作,可以有效地防止签名用的私钥被 第三方窃取,提高签名过程的安全性,并且还可以对在服务器端生成的签 名文件进行保存,可以避免重复执行对同一应用的签名造成的服务器端消 耗,还可以提高向客户端反馈签名文件的处理效率。
优选地,应用签名请求可以包括目标应用的第一数据摘要,签名文件 数据库中可以存储有签名文件及其对应的第二数据摘要,在签名文件数据 库中查找是否存在与目标应用对应的签名文件的步骤可以包括:在在签名 文件数据库中查找是否存在与第一数据摘要一致的第二数据摘要。
由此,可以精准地确定签名文件数据库中是否存在已缓存的对应于目 标应用的签名文件。
优选地,应用签名请求可以包括目标应用的第一数据摘要,签名文件 数据库中可以存储有签名文件,在签名文件数据库中查找是否存在与目标 应用对应的签名文件的步骤可以包括:使用预设的公钥对签名文件数据库 中的签名文件进行解密,以得到解密后的第三数据摘要;查找与第一数据 摘要一致的第三数据摘要所对应的签名文件,即为目标应用的签名文件。
由此,还可以通过判断签名文件经过解密后得到的数据是否与目标应 用的第一数据摘要一致,来确定签名文件数据库中是否缓存与目标应用对 应的签名文件。
优选地,该应用签名方法还可以包括:将第一数据摘要与生成的签名 文件关联地存储到所述签名文件数据库中。
由此,与签名文件关联存储的第一数据摘要可以作为后续判断该签名 文件是否与客户端请求签名的目标应用对应的判断依据。
优选地,使用预设的私钥生成针对目标应用的签名文件的步骤可以包 括:使用预设的私钥对第一数据摘要加密,以得到目标应用的签名文件。
优选地,应用签名请求还包括目标应用的应用标识、用于标识客户端 的身份信息的IP地址和/或应用令牌,该方法还可以包括:根据应用标识、 IP地址和/或应用令牌,验证客户端的合法性,在判定客户端合法的情况 下,执行在签名文件数据库中查找是否存在与目标应用对应的签名文件的 步骤。
根据本发明的另一个方面,还提供了一种应用打包方法,包括:使用 预设的构建工具构建目标应用的软件安装包,其中使用预设的私钥对目标 应用进行签名,以得到本地签名文件;向服务器发送针对目标应用的应用 签名请求,并接收服务器发送的针对目标应用的签名文件;使用签名文件 替代本地签名文件,并使用预设的优化工具对替换后的文件进行优化,以 得到优化后的目标应用的软件安装包。
由此,在本地客户端构建目标应用的软件安装包的过程中,可以在本 地执行一次伪签名,在执行伪签名的过程中或执行伪签名完毕后,可以使 用本发明上文述及的应用签名方法从服务器端获取真正的签名文件,使用 真正的签名文件替代本地签名文件,可以实现本地客户端无感知的打包构 建流程。
优选地,服务器可以使用上文述及的应用签名方法得到签名文件。
根据本发明的另一个方面,还提供了一种应用签名装置,包括:查找 模块,用于响应于接收到客户端发送的针对目标应用的应用签名请求,在 签名文件数据库中查找是否存在与目标应用对应的签名文件;生成模块; 保存模块;以及发送模块,在查找模块查找到与目标应用对应的签名文件 的情况下,由发送模块将签名文件发送给客户端,并且/或者,在查找模块 查找不到与目标应用对应的签名文件的情况下,由生成模块使用预设的私 钥生成针对目标应用的签名文件,保存模块将所生成的签名文件保存到签 名文件数据库中,并由发送模块将生成的签名文件发送给客户端。
优选地,应用签名请求包括目标应用的第一数据摘要,签名文件数据 库中存储有签名文件及其对应的第二数据摘要,查找模块通过在在签名文 件数据库中查找是否存在与第一数据摘要一致的第二数据摘要,确定签名 文件数据库中是否存在与目标应用对应的签名文件。
优选地,应用签名请求包括目标应用的第一数据摘要,签名文件数据 库中存储有签名文件,查找模块可以包括:解密模块,用于使用预设的公 钥对签名文件数据库中的签名文件进行解密,以得到解密后的第三数据摘 要;判断模块,用于判断解密后的第三数据摘要是否与第一数据摘要一致, 与第一数据摘要一致的第三数据摘要所对应的签名文件即为目标应用的 签名文件。
优选地,保存模块用于将第一数据摘要与签名文件关联地存储到签名 文件数据库中。
根据本发明的另一个方面,还提供了一种应用打包装置,包括:构建 模块,用于构建目标应用的软件安装包,其中构建模块使用预设的私钥对 目标应用进行签名,以得到本地签名文件;签名文件获取模块,用于向服 务器发送针对目标应用的应用签名请求,并接收服务器发送的针对目标应 用的签名文件,构建模块使用签名文件替代本地签名文件,并使用预设的 优化工具对替换后的文件进行优化,以得到优化后的目标应用的软件安装包。
优选地,服务器可以使用上文述及的应用签名方法得到签名文件。
根据本发明的另一个方面,还提供了一种应用签名系统,包括:客户 端装置和签名服务器,客户端装置向签名服务器发送针对目标应用的应用 签名请求,签名服务器响应于接收到客户端装置发送的针对目标应用的应 用签名请求,在签名文件数据库中查找是否存在与目标应用对应的签名文 件,在查找到的情况下,将签名文件发送给客户端装置,并且/或者,在查 找不到的情况下,使用预设的私钥生成针对目标应用的签名文件,将所生成的签名文件保存到签名文件数据库中,并发送给客户端装置。
优选地,客户端装置用于构建目标应用的软件安装包,其中使用预设 的私钥对目标应用进行签名,以得到本地签名文件,客户端装置在接收到 签名服务器发送的签名文件后,使用签名文件替代本地签名文件,并使用 预设的优化工具对替换后的文件进行优化,以得到优化后的目标应用的软 件安装包。
根据本发明的另一个方面,还提供了一种计算设备,包括:处理器; 以及存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执 行时,使所述处理器执行上文述及的方法。
根据本发明的另一个方面,还提供了一种非暂时性机器可读存储介质, 其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时, 使所述处理器执行上文述及的方法。
综上,本发明的应用签名方法、装置、系统、计算设备及存储介质, 通过在服务端执行签名操作,可以有效地防止签名用的私钥被第三方窃取, 提高签名过程的安全性,并且还可以对在服务器端生成的签名文件进行保 存,可以避免重复执行对同一应用的签名造成的服务器端消耗,并且也可 以提高向客户端反馈签名文件的处理效率。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的 上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性 实施方式中,相同的参考标号通常代表相同部件。
图1是用于实现本发明实施例的环境的示意图。
图2是示出了根据本发明一实施例的应用签名方法的示意性流程图。
图3是示出了根据本发明一实施例的应用打包方法的示意性流程图。
图4A是示出了现有的打包流程示意图。
图4B是示出了利用本发明后的打包流程示意图。
图5是示出了根据本发明一实施例的应用签名装置的结构的示意性方 框图。
图6是示出了根据本发明一实施例的应用打包装置的结构的示意性方 框图。
图7是示出了根据本发明一实施例的应用签名系统的结构的示意性方 框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显 示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开 而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使 本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的 技术人员。
在描述本发明之前首先就本发明涉及的背景知识做简要说明。
1、数据摘要
数据摘要算法(Message Digest Algorithm)是一种能产生特殊输出格 式的算法,其原理是根据一定的运算规则对原始数据进行某种形式的信息 提取,被提取出的信息就被称作原始数据的数据摘要,也可称为消息摘要。 著名的摘要算法有RSA公司的MD5算法和SHA-1算法及其大量的变体。
数据摘要的主要特点有:
1)无论输入的数据有多长,计算出来的数据摘要的长度总是固定的。 例如应用MD5算法摘要的数据有128个比特位,用SHA-1算法摘要的数 据最终有160比特位的输出。
2)一般来说(不考虑碰撞的情况下),只要输入的原始数据不同,对 其进行摘要以后产生的数据摘要也必不相同,即使原始数据稍有改变,输 出的数据摘要便完全不同。但是,相同的输入必会产生相同的输出。
3)具有不可逆性,即只能进行正向的数据摘要,而无法从数据摘要中 恢复出任何的原始数据。
2、数字签名
数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数 字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证 明。
数字签名是非对称密钥加密技术与数字摘要技术的应用。非对称加密 是利用需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。用公钥加密的数 据,要用私钥才能解密,用私钥加密的数据,要用公钥才能解密。
3、现有的应用签名流程
应用签名可以视为数字签名技术在软件中的一种应用。以Android应 用为例,Android应用的签名过程可以分解为以下三个步骤:
1)对Apk(AndroidPackage,Android安装包)中的每个文件做一次 算法(数据摘要+Base64编码),保存到MANIFEST.MF文件中;
2)对MANIFEST.MF整个文件做一次算法(数据摘要+Base64编码), 存放到CERT.SF文件的头属性中,再对MANIFEST.MF文件中各个属性 块做一次算法(数据摘要+Base64编码),存到一个属性块中;
3)对CERT.SF文件做签名,内容存档到CERT.RSA中。
最终得到的CERT.RSA文件即为Android应用的签名文件。其中关于 MANIFEST.MF文件、MANIFEST.MF文件、CERT.SF文件的具体生成过 程以及文件信息为本领域技术人员所公知,本发明不再赘述。
如背景技术部分所述,目前应用的整个签名过程都是在客户端执行的, 很容易出现私钥泄露问题。针对于此,本发明提出,可以将应用的签名工 作交由服务器端执行,如此可以降低应用签名过程中的私钥泄露的风险, 提高签名过程的安全性。
进一步地,服务器端在生成签名文件后,还可以将签名文件保存到签 名文件数据库中,如此在后续接收到客户端发送的针对同一目标应用的应 用签名请求时,可以直接将之前生成的签名文件下发给客户端。由此,可 以省去重新签名操作,减少服务器端的消耗,并且可以提高向客户端反馈 签名文件的效率。
更进一步地,根据上文以Android应用的签名过程为例进行的描述可 知,应用签名流程主要包括签名前的准备步骤和签名步骤。签名前的准备 步骤用于得到待签名的目标应用的数据摘要,签名步骤用于使用签名用的 私钥对数据摘要进行签名(加密),以得到签名文件。针对于此,本发明 进一步提出,可以由客户端和服务器端协作完成签名流程,即可以由客户 端执行前签名前的准备步骤,由服务器端执行具体的签名步骤。由此,客 户端在需要为目标应用签名时,可以仅将目标应用的数据摘要发送给服务 器,由服务器使用预设的私钥对数据摘要进行加密,以得到目标应用的签 名文件。如此一来,服务器端可以仅根据客户端发送的数据摘要生成对应 的签名文件,而不需要再获取应用的整个源代码文件,从而可以进一步提 高签名效率。
至此对本发明涉及的背景知识以及本发明的应用签名方案的基本实 现原理做了简要说明。下面将结合图1至图5详细描述本发明的应用签名 方案。本发明的应用签名方案可应用于如图1所示的环境中。图1是用于 实现本发明实施例的环境的示意图。在一个实施例中,环境中的客户端10 可以经由网络40实现与服务器20的信息收发。服务器20可以通过访问 数据库30来获取客户端10所需的内容。客户端之间(例如,10_1与10_2 或10_N之间)也可以经由网络40彼此通信。网络40可以是广义上的用 于信息传递的网络,可以包括一个或多个通信网络,诸如无线通信网络、 因特网、私域网、局域网、城域网、广域网或是蜂窝数据网络等。在一个 实施例中,网络40也可以包括卫星网络,由此将客户端10的GPS信号传送给服务器20。应当注意,如果向图1中添加或从图1中去除附加模块, 不会改变本发明的示例实施例的底层概念。另外,虽然为了方便说明而在 图中示出了从数据库30到服务器20的双向箭头,但本领域技术人员可以 理解的上,上述数据的收发也是可以通过网络40实现的。
客户端10是指应用的开发端,客户端10所对应的终端设备可以是可 用来进行网络访问的任何合适的便携式电子设备,包括但不限于智能电话、 平板电脑或是其他便携式客户端。服务器20则是能够通过网络访问的提 供交互服务所需信息的任何服务器。图中虽然示出了多个客户端10-1…N 以及单个服务器20和数据库30,并且在随后的描述中会选择其中的一个 或部分客户端加以描述(例如,客户端10-1),但是本领域技术人员应该 立即的是,上述1…N个客户端旨在表示真实网络中存在的多个客户端, 示出的单个服务器20和数据库30旨在表示本发明的技术方案涉及服务器 及数据库的操作。对特定编号的移动端以及单个服务器和数据库加以详述 至少为了说明方便,而非暗示对移动端和服务器的类型或是位置等具有限 制。
图2是示出了根据本发明一实施例的应用签名方法的示意性流程图。 该方法可以由图1所示的服务器20执行。
参见图2,方法开始于步骤S210,响应于接收到客户端发送的针对目 标应用的应用签名请求,在签名文件数据库中查找是否存在与目标应用对 应的签名文件。
签名文件数据库中存储有之前生成的签名文件。在接收到客户端发送 的应用签名请求后,服务器可以首先在签名文件数据库中进行查找,以确 定签名文件数据库中是否存在之前针对该目标应用的签名文件。在签名文 件数据库中查找签名文件的具体可行实现方式将在下文做详细说明,这里 暂不赘述。在查找到的情况下,可以直接执行步骤S240,将查找到的签名 文件发送给客户端。
在查找不到的情况下,可以执行步骤S220,使用预设的私钥生成针对 目标应用的签名文件。其中,预设的私钥优选地与目标应用具有唯一对应 关系,预设的私钥可以是由客户端或第三方机构预先生成然后交由服务器 保存的,也可以是由服务器生成的。生成签名文件的具体实现细节将在下 文做详细说明,这里暂不赘述。
在生成签名文件后,可以执行步骤S230、步骤S240,将所生成的签 名文件保存到签名文件数据库中,并将生成的签名文件发送到客户端。其 中本发明对步骤S230和步骤S240的先后执行顺序不做要求。通过保存新 生成的签名文件,使得在客户端后续发出针对该目标应用的应用签名请求 时,可以直接从签名文件数据库中查找对应的签名文件,将其发送给客户 端,而不用再执行一次签名操作,从而可以提高签名效率。例如,在对目 标应用按照不同发布渠道进行打包,以得到多个针对不同发布渠道的应用 安装包时,按照常规方案需要为每个应用安装包执行签名工作,而利用本 发明的方案,服务器可以仅执行一次生成签名文件的操作(步骤S230), 所得到签名文件保存在签名文件数据库中,对于后续的签名请求,可以直 接从签名文件数据库中查找对应的签名文件并将其下发给客户端。
至此结合图2就本发明的应用签名方法的基本实现流程做了简要说 明。下面就方法中涉及的细节做进一步说明。
如前文所述,整个应用签名流程可以完全由服务器端执行,也可以由 客户端和服务器端协同实现。在整个应用签名流程完全由服务器端执行时, 客户端发送的应用签名请求中还应包括目标应用的整个源代码文件,此时 在签名文件数据库中查找不到与目标应用对应的签名文件的情况下,服务 器端需要根据目标应用的源代码文件,生成目标应用的签名文件。具体地, 服务器端首先需要根据目标应用的源代码文件,得到目标应用的数据摘要 信息,然后利用预设的私钥对得到的数据摘要信息进行加密,继而得到目 标应用的签名文件。可以预见,这种完全由服务器端实现应用签名流程的 方式实现起来较为繁琐,并且上传整个源代码文件的风险较大。
因此,优选地,可以由客户端和服务器端协同实现整个数据签名流程。 具体地,可以由客户端预先根据目标应用的源代码文件得到目标应用的数 据摘要,在向服务器端发送应用签名请求时,可以将数据摘要一并发送。 如此,在签名文件数据库中查找不到签名文件的情况下,服务器端可以利 用预设的私钥对客户端发送的数据摘要进行加密,以得到签名文件。
下面就由客户端和服务器端协同实现整个应用签名流程的具体实现 过程做进一步详细说明。
在由客户端和服务器端协同实现整个应用签名流程时,客户端发送的 应用签名请求中可以包括目标应用的数据摘要,为了便于区分,这里称为 第一数据摘要。第一数据摘要可以是客户端通过预设的数据摘要算法对目 标应用的APK文件进行计算得到的摘要信息。以目标应用为Android应 用为例,第一数据摘要可以是上文提及的CERT.SF文件。
作为本发明的一个可选实施例,签名文件数据库中可以存储有签名文 件及其对应的第二数据摘要。如此对于步骤S210,可以响应于接收到客户 端发送的应用签名请求,在签名文件数据库中查找是否存在与第一数据摘 要一致的第二数据摘要。如果查找到与第一数据摘要一致的第二数据摘要, 则该第二数据摘要对应的签名文件即为目标应用的签名文件,可以直接执 行步骤S240,将该签名文件下发给客户端。对于步骤S220,在查找不到 与第一数据摘要一致的第二数据摘要时,可以使用预设的私钥对第一数据 进行加密,以得到目标应用的签名文件。并且,对于步骤S230,在得到签 名文件后,还可以将第一数据摘要与生成的签名文件关联地存储到签名文 件数据库中。
作为本发明的另一个可选实施例,签名文件数据库中可以存储有签名 文件,对于步骤S210,在签名文件数据库中查找是否存在与目标应用对应 的签名文件时,还可以使用预设的公钥对签名文件数据库中的签名文件进 行解密,以得到解密后的第三数据摘要。然后查找是否存在与第一数据摘 要一致的第三数据摘要,与第一数据摘要一致的第三数据摘要所对应的签 名文件即为目标应用的签名文件。其中,此处述及的公钥与生成目标应用的签名文件时使用的私钥相对应,公钥可以由客户端和/或服务器双方保存。
作为本发明的另一个可选实施例,应用签名请求还可以包括目标应用 的应用标识、用于标识客户端的身份信息的IP地址和/或应用令牌。此时, 在接收到客户端的应用签名请求后,可以首先根据应用标识、IP地址和/或 应用令牌,验证客户端的合法性,在判定客户端合法的情况下,再执行在 签名文件数据库中查找是否存在与目标应用对应的签名文件的步骤。其中, 此处述及的应用令牌(api token)可以是服务器预先向客户端发送的用于 进行身份验证的令牌,客户端可以保存该令牌,并且与服务器进行通信时, 可以携带该令牌,服务器根据客户端发送的令牌信息可以判断其是否是合 法用户。
至此,详细说明了本发明的应用签名方法的实现流程。由于应用的签 名文件主要是在客户端对应用进行打包的过程中用到,而本发明的应用签 名方法的签名流程主要是在服务器端执行的,因此,为了隐藏服务器端签 名流程,以不改变现有的打包构建流程,实现无缝集成的目的,本发明提 出了一种新的应用打包方案。
图3是示出了根据本发明一实施例的应用打包方法的示意性流程。其 中,图3所示的方法可以由客户端执行。
参见图3,在步骤S310,使用预设的构建工具构建目标应用的软件安 装包,其中使用预设的密钥对目标应用进行签名,以得到本地签名文件。
此处可以使用诸如Gradle等构建工具构建目标应用的软件安装包,在 构建软件安装包的实现过程中包括签名流程,在实现签名流程时,可以使 用预设的密钥,例如可以是debug密钥对目标应用进行签名,以得到本地 签名文件。所得到的本地签名文件可以视为一种非正式签名文件或伪签名 文件。
在执行步骤S310的过程中,或者在执行完步骤S310后,可以执行步 骤S320,向服务器发送针对目标应用的应用签名请求,并接收服务器发送 的针对目标应用的签名文件。其中,服务器可以使用上文结合图2所述的 应用签名方法向客户端发送所请求的签名文件。
在接收到服务器发送的签名文件后,可以执行步骤S330,使用接收到 的签名文件替代本地签名文件。替换后可以执行步骤S340,预设的优化工 具对替换后的文件进行优化,以得到优化后的目标应用的软件安装包。
由此,在打包过程中可以按照现有的打包流程在本地对软件安装包进 行一次伪签名,所得到的本地签名文件可以视为伪签名文件。在对签名后 的文件进行优化之前,可以从服务器获取针对目标应用的正式签名文件。 然后用正式签名文件替代本地签名文件,如此可以实现无感知的在本地签 名完成后,插入从服务器获取的正式签名文件并对本地签名文件进行替换 的逻辑。
以Android应用为例,现有的使用gradle构建工具对Android应用进 行构建打包的简化流程如图4A所示。根据图4A可以得知,签名过程之 后是优化过程。根据上文对Android应用的签名过程的描述可知,Android 应用的签名过程中只有第三步对CERT.SF文件进行签名时才需要用到私 钥。因此如图4B所示,在使用gradle构建工具对Android应用进行构建 打包过程中,在执行签名流程时,可以先使用debug私钥等非正式签名私 钥完成对APK的签名,然后从中读取生成的CERT.SF数据,发送到服务 端完成签名生成CERT.RSA数据,最终替换本地已签名APK中的 CERT.RSA数据。整个过程是在签名和优化的中间完成,借助GRADLE DSL的动态配置能力,可以实现无感知的在本地签名完成后,插入请求服 务器签名并替换的逻辑。
至此,结合图3、图4就本发明的应用打包方法做了详细说明。另外, 本发明的应用签名方法还可以实现为一种应用签名装置。图5是示出了根 据本发明一实施例的应用签名装置的结构的示意性方框图。其中,应用签 名装置500的功能模块可以由实现本发明原理的硬件、软件或硬件和软件 的结合来实现。本领域技术人员可以理解的是,图5所描述的功能模块可 以组合起来或者划分成子模块,从而实现上述发明的原理。因此,本文的 描述可以支持对本文描述的功能模块的任何可能的组合、或者划分、或者 更进一步的限定。
下面仅就应用签名装置500可以具有的功能模块以及各功能模块可以 执行的操作做简要说明,对于其中涉及的细节部分可以参见上文结合图2 的描述,这里不再赘述。
如图5所示,应用签名装置500包括查找模块510、生成模块520、 保存模块530以及发送模块540。
查找模块510用于响应于接收到客户端发送的针对目标应用的应用签 名请求,在签名文件数据库中查找是否存在与目标应用对应的签名文件。
在查找模块510查找到与目标应用对应的签名文件的情况下,可以直 接由发送模块540将签名文件发送给客户端。
在查找模块510查找不到与目标应用对应的签名文件的情况下,可以 由生成模块520使用预设的私钥生成针对目标应用的签名文件。保存模块 530用于将生成的签名文件保存到签名文件数据库中,此时可以由发送模 块540将生成的签名文件发送给客户端。
作为本发明的一个可选实施例,应用签名请求可以包括目标应用的第 一数据摘要,签名文件数据库中可以存储有签名文件及其对应的第二数据 摘要。查找模块510可以通过在在签名文件数据库中查找是否存在与第一 数据摘要一致的第二数据摘要,确定签名文件数据库中是否存在与目标应 用对应的签名文件。保存模块530用于将第一数据摘要与签名文件关联地 存储到签名文件数据库中。
作为本发明的一个可选实施例,应用签名请求可以包括目标应用的第 一数据摘要,签名文件数据库中存储有签名文件,查找模块510可以包括 解密模块和判断模块(图中未示出)。解密模块用于使用预设的公钥对签 名文件数据库中的签名文件进行解密,以得到解密后的第三数据摘要。判 断模块用于判断解密后的第三数据摘要是否与第一数据摘要一致,与第一 数据摘要一致的第三数据摘要所对应的签名文件即为目标应用的签名文件。
图6是示出的根据本发明一实施例的应用打包装置600的结构示意 性。下面仅就应用打包装置600可以具有的功能模块以及各功能模块可以 执行的操作做简要说明,对于其中涉及的细节部分可以参见上文结合图3、 图4的描述,这里不再赘述。
如图6所示,应用打包装置600包括构建模块610和签名文件获取模 块620。
构建模块610用于构建目标应用的软件安装包,其中构建模块610使 用预设的私钥对目标应用进行签名,以得到本地签名文件。签名文件获取 模块620用于向服务器发送针对目标应用的应用签名请求,并接收服务器 发送的针对目标应用的签名文件,构建模块610使用签名文件替代本地签 名文件,并使用预设的优化工具对替换后的文件进行优化,以得到优化后 的目标应用的软件安装包。
图7是示出的根据本发明一实施例的应用签名系统700的结构示意 性。下面仅就应用打包系统700可以具有的功能模块以及各功能模块可以 执行的操作做简要说明,对于其中涉及的细节部分可以参见上文结合图2 至图4的描述,这里不再赘述。
如图7所示,应用签名系统700包括客户端装置710和签名服务器 720。
客户端装置710向签名服务器720发送针对目标应用的应用签名请 求,签名服务器720响应于接收到客户端装置710发送的针对目标应用的 应用签名请求,在签名文件数据库中查找是否存在与目标应用对应的签名 文件,在查找到的情况下,将签名文件发送给客户端装置,并且/或者,在 查找不到的情况下,使用预设的私钥生成针对目标应用的签名文件,将所 生成的签名文件保存到签名文件数据库中,并发送给客户端装置710。
客户端装置710用于构建目标应用的软件安装包,其中使用预设的私 钥对目标应用进行签名,以得到本地签名文件,客户端装置710在接收到 签名服务器720发送的签名文件后,使用签名文件替代本地签名文件,并 使用预设的优化工具对替换后的文件进行优化,以得到优化后的目标应用 的软件安装包。
本发明还提供了一种计算设备。
计算设备可以是台式机、便携式计算机、平板电脑、智能手机、个人 数据助理(PDA),或者其他类型的计算机装置,但是不限于任何特定形 式。计算设备可以包括但不限于处理器和存储器。
处理器可以是一个多核的处理器,也可以包含多个子处理器。在一些 实施例中,处理器可以包含一个通用的主处理器以及一个或多个特殊的协 处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。
存储器可以包括存储文件形式或其他形式的内容的任何类型的存储 设备中的一个或多个,包括磁硬盘驱动器、固态硬驱、半导体存储设备、 闪存,或者能够存储程序指令或数字信息的任何其他计算机可读可写存储 介质。存储器上可以存储有可执行代码,在本发明中,当存储器上的可执 行代码被处理器执行时,可以使处理器执行图2至图4所示的方法。
上文中已经参考附图详细描述了根据本发明的应用签名方法、装置、 系统以及计算设备。
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序 产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中 限定的上述各步骤的计算机程序代码指令。
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算 机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计 算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或 计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时, 使所述处理器执行根据本发明的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性 逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两 者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方 法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每 个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或 代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也 应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同 于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行 地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也 要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的 方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实 现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽 性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范 围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更 都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原 理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技 术人员能理解本文披露的各实施例。

Claims (10)

1.一种应用打包方法,包括:
使用预设的构建工具构建目标应用的软件安装包,构建软件安装包的过程包括签名流程,签名流程包括签名前的准备步骤和签名步骤,签名前的准备步骤用于得到所述目标应用的第一数据摘要,在签名步骤使用debug密钥对所述目标应用的第一数据摘要进行加密,以得到本地签名文件,所述本地签名文件为非正式签名文件;
向服务器发送针对所述目标应用的应用签名请求,并接收所述服务器发送的针对所述目标应用的正式签名文件,所述应用签名请求包括所述目标应用的第一数据摘要,所述正式签名文件是由所述服务器在签名文件数据库中查找到的与所述目标应用对应的签名文件,或者是由所述服务器在所述签名文件数据库中未查找与所述目标应用对应的签名文件的情况下使用与所述目标应用对应的私钥对所述第一数据摘要进行加密生成的;
使用所述正式签名文件替代所述本地签名文件,并使用预设的优化工具对替换后的文件进行优化,以得到优化后的所述目标应用的软件安装包。
2.根据权利要求1所述的应用打包方法,其中,所述服务器还将所生成的签名文件保存到所述签名文件数据库中。
3.根据权利要求1所述的应用打包方法,其中,所述签名文件数据库中存储有签名文件及其对应的第二数据摘要,该方法还包括:
在所述在签名文件数据库中查找是否存在与所述第一数据摘要一致的第二数据摘要。
4.根据权利要求1所述的应用打包方法,其中,所述签名文件数据库中存储有签名文件,该方法还包括:
使用预设的公钥对所述签名文件数据库中的签名文件进行解密,以得到解密后的第三数据摘要;
查找与所述第一数据摘要一致的第三数据摘要所对应的签名文件,即为所述目标应用的正式签名文件。
5.根据权利要求3或4所述的应用打包方法,还包括:
将所述第一数据摘要与生成的签名文件关联地存储到所述签名文件数据库中。
6.根据权利要求1所述的应用打包方法,其中,所述应用签名请求还包括所述目标应用的应用标识、用于标识客户端的身份信息的IP地址和/或应用令牌,该方法还包括:
根据所述应用标识、所述IP地址和/或应用令牌,验证所述客户端的合法性,在判定所述客户端合法的情况下,在签名文件数据库中查找是否存在与所述目标应用对应的签名文件。
7.一种应用打包装置,包括:
构建模块,用于构建目标应用的软件安装包,构建软件安装包的过程包括签名流程,签名流程包括签名前的准备步骤和签名步骤,签名前的准备步骤用于得到所述目标应用的第一数据摘要,在签名步骤所述构建模块使用debug密钥对所述目标应用的第一数据摘要进行加密,以得到本地签名文件,所述本地签名文件为非正式签名文件;
签名文件获取模块,用于向服务器发送针对所述目标应用的应用签名请求,并接收所述服务器发送的针对所述目标应用的正式签名文件,所述应用签名请求包括所述目标应用的第一数据摘要,所述正式签名文件是由所述服务器在签名文件数据库中查找到的与所述目标应用对应的签名文件,或者是由所述服务器在所述签名文件数据库中未查找与所述目标应用对应的签名文件的情况下使用与所述目标应用对应的私钥对所述第一数据摘要进行加密生成的,
所述构建模块使用所述正式签名文件替代所述本地签名文件,并使用预设的优化工具对替换后的文件进行优化,以得到优化后的所述目标应用的软件安装包。
8.一种应用签名系统,包括:客户端装置和签名服务器,
所述客户端装置用于构建目标应用的软件安装包,构建软件安装包的过程包括签名流程,签名流程包括签名前的准备步骤和签名步骤,签名前的准备步骤用于得到所述目标应用的第一数据摘要,在签名步骤使用debug密钥对所述目标应用的第一数据摘要进行加密,以得到本地签名文件,所述本地签名文件为非正式签名文件,
所述客户端装置向所述签名服务器发送针对所述目标应用的应用签名请求,所述应用签名请求包括所述目标应用的第一数据摘要,
所述签名服务器响应于接收到客户端装置发送的针对目标应用的应用签名请求,在签名文件数据库中查找是否存在与所述目标应用对应的正式签名文件,在查找到的情况下,将所述正式签名文件发送给所述客户端装置,并且/或者,在查找不到的情况下,使用与所述目标应用对应的私钥对所述第一数据摘要进行加密生成针对所述目标应用的正式签名文件,将所生成的正式签名文件保存到所述签名文件数据库中,并发送给所述客户端装置,
所述客户端装置在接收到所述签名服务器发送的正式签名文件后,使用所述正式签名文件替代所述本地签名文件,并使用预设的优化工具对替换后的文件进行优化,以得到优化后的所述目标应用的软件安装包。
9.一种计算设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1-6中任何一项所述的方法。
10.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至6中任一项所述的方法。
CN201710852754.3A 2017-09-20 2017-09-20 应用签名方法、装置、系统、计算设备及存储介质 Active CN107592202B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710852754.3A CN107592202B (zh) 2017-09-20 2017-09-20 应用签名方法、装置、系统、计算设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710852754.3A CN107592202B (zh) 2017-09-20 2017-09-20 应用签名方法、装置、系统、计算设备及存储介质

Publications (2)

Publication Number Publication Date
CN107592202A CN107592202A (zh) 2018-01-16
CN107592202B true CN107592202B (zh) 2021-08-13

Family

ID=61047009

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710852754.3A Active CN107592202B (zh) 2017-09-20 2017-09-20 应用签名方法、装置、系统、计算设备及存储介质

Country Status (1)

Country Link
CN (1) CN107592202B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874429B (zh) * 2018-07-20 2022-06-03 珠海宏桥高科技有限公司 一种Android系统一体化自动打包方法
CN111756787A (zh) * 2019-11-15 2020-10-09 北京京东尚科信息技术有限公司 在线签名方法及装置、电子设备和计算机可读存储介质
CN111274552A (zh) * 2020-01-07 2020-06-12 惠州市德赛西威汽车电子股份有限公司 一种升级包的签名及验签方法、存储介质
CN113535140B (zh) * 2020-04-16 2022-11-11 武汉斗鱼网络科技有限公司 一种参数封装方法、装置、设备及存储介质
CN111970689A (zh) * 2020-06-29 2020-11-20 百度在线网络技术(北京)有限公司 Ota数据包的生成方法、装置及电子设备
CN112231702A (zh) * 2020-10-14 2021-01-15 深圳市百富智能新技术有限公司 应用保护方法、装置、设备及介质
CN113094659B (zh) * 2021-03-17 2022-10-21 青岛海尔科技有限公司 用于应用文件发布的方法、装置、平台设备及系统
CN114629658A (zh) * 2022-03-30 2022-06-14 杭州海康威视系统技术有限公司 一种应用签名方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103036894A (zh) * 2012-12-19 2013-04-10 福建联迪商用设备有限公司 一种智能终端应用程序安装文件联网数字签名方法
CN103685138A (zh) * 2012-08-30 2014-03-26 卓望数码技术(深圳)有限公司 移动互联网上的Android平台应用软件的认证方法和系统
CN106559223A (zh) * 2016-11-29 2017-04-05 武汉斗鱼网络科技有限公司 应用程序签名方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150035249A (ko) * 2013-09-27 2015-04-06 삼성전자주식회사 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103685138A (zh) * 2012-08-30 2014-03-26 卓望数码技术(深圳)有限公司 移动互联网上的Android平台应用软件的认证方法和系统
CN103036894A (zh) * 2012-12-19 2013-04-10 福建联迪商用设备有限公司 一种智能终端应用程序安装文件联网数字签名方法
CN106559223A (zh) * 2016-11-29 2017-04-05 武汉斗鱼网络科技有限公司 应用程序签名方法及装置

Also Published As

Publication number Publication date
CN107592202A (zh) 2018-01-16

Similar Documents

Publication Publication Date Title
CN107592202B (zh) 应用签名方法、装置、系统、计算设备及存储介质
US10439804B2 (en) Data encrypting system with encryption service module and supporting infrastructure for transparently providing encryption services to encryption service consumer processes across encryption service state changes
CN112688784B (zh) 一种数字签名、验证方法、装置及系统
CN107689869B (zh) 用户口令管理的方法和服务器
KR100823738B1 (ko) 컴퓨팅 플랫폼의 설정 정보를 은닉하면서 무결성 보증을제공하는 방법
US8694467B2 (en) Random number based data integrity verification method and system for distributed cloud storage
CN103138939B (zh) 云存储模式下基于可信平台模块的密钥使用次数管理方法
CN113691502B (zh) 通信方法、装置、网关服务器、客户端及存储介质
CN110781140B (zh) 区块链中数据签名的方法、装置、计算机设备及存储介质
GB2503771A (en) Caching security information, using hash function using device ID and mixer
CN111970114B (zh) 文件加密方法、系统、服务器和存储介质
CN102821098A (zh) 云环境下即时通讯消息自溶解系统及方法
US10122755B2 (en) Method and apparatus for detecting that an attacker has sent one or more messages to a receiver node
CN111639108A (zh) 数据查询方法、装置、电子设备及计算机可读存储介质
CN109586898B (zh) 双系统通信密钥生成方法及计算机可读存储介质
CN117155549A (zh) 密钥分发方法、装置、计算机设备和存储介质
KR102282788B1 (ko) 트랜잭션에 포함된 평문 데이터의 변경을 지원하는 블록체인 시스템
CN113114654A (zh) 一种终端设备接入安全认证方法、装置及系统
WO2021027504A1 (zh) 基于共识协议的信息处理方法及相关装置
WO2020093609A1 (zh) 区块链的区块生成方法、装置、设备及非易失性可读存储介质
CN108768994B (zh) 数据匹配方法、装置及计算机可读存储介质
CN111382451A (zh) 一种密级标识方法、装置、电子设备及存储介质
CN116305013A (zh) 溯源信息的电子文件添加方法、装置、电子设备及介质
CN115361198A (zh) 解密方法、加密方法、装置、计算机设备和存储介质
CN111062721B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200709

Address after: 310052 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Applicant after: Alibaba (China) Co.,Ltd.

Address before: 510627 Guangdong city of Guangzhou province Whampoa Tianhe District Road No. 163 Xiping Yun Lu Yun Ping radio square B tower 13 floor 03 unit self

Applicant before: GUANGZHOU ALIBABA LITERATURE INFORMATION TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant