兼容安卓应用的服务签名方法与装置制造方法及图纸

技术编号:10519144 阅读:113 留言:0更新日期:2014-10-08 17:14
本发明专利技术涉及一种兼容安卓应用的服务签名方法,包括:S1:对应用程序软件包除开发者签名外的所有数据文件列出清单,并完成兼容安卓应用的服务签名操作;S2:通过使用服务自身标识证书或标识公钥对兼容安卓应用的服务签名进行验证。本发明专利技术对于同一个安卓应用程序包进行数字签名不会与应用程序的开发者签名发生冲突,进行的多方重签名得到的不同发布版本的安卓应用在更新安装时能够保留用户数据;且服务方签名数据存储在服务方域名以及业务名称相关的目录中,不同的服务方签名数据互不干扰,不同的业务签名互不影响,根本上解决了传统应用签名机制签名文件名称容易发生碰撞的问题。本发明专利技术还公开了一种兼容安卓应用的服务签名装置。

【技术实现步骤摘要】
兼容安卓应用的服务签名方法与装置
本专利技术涉及计算机
,尤其涉及一种兼容安卓应用的服务签名方法与装 置。
技术介绍
数字签名是基于消息摘要运算和非对称加密运算的,用于保证信息传输完整性、 认证性和抗抵赖性的信息安全技术。数字签名技术在社会生活中已经得到了广泛的应用, 安卓应用的数字签名就是上述技术的一个典型应用场景。 具体地,现阶段安卓应用数字签名的操作流程为:利用摘要算法将安卓应用程序 包中除ΜΕΤΑ-INF目录以外的每个信息文件计算成固定长度的散列值,并将散列值和对应 文件名依序存储到META-INF/MANIFEST. MF文件中;继续使用摘要算法将上述META-INF/ MANIFEST. MF文件以及此文件中的每个散列值再次进行散列运算,并将散列值和对应文件 名依序存储到META-INF/[签名用alias名称首八个字符].SF文件中;进一步地,使用签名 者的私钥对上述.SF文件进行数字签名,将签名者的证书数据连同数字签名值进行结合并 编码,得到一个PKCS7格式的二进制数据包,存储在META-INF/[签名用alias名称首八个 字符].RSA文件中。上述传统的安卓应用签名流程在业内通常被称为开发者签名,通过 开发者签名处理的应用程序包,应用程序使用者可以随时从中提取签名者的数字证书,并 使用此数字证书对程序包中所有文件的完整性进行验证,从而保证了应用程序包在发布中 的完整性,一旦发生应用程序包中文件在发布中被篡改的情况,用户可以将篡改检测出来。 但目前,使用传统的开发者签名技术对安卓应用程序包进行数字签名时,默认存放二次摘 要的文件名为:META-INF/[签名用alias名称首八个字符].SF,默认存放的数字签名文件 为META-INF/[签名用alias名称首八个字符].RSA。在应用程序发布流转过程中,渠道商 往往需要对应用程序包进行重签名,然而这往往带来两个问题: (1)对于同一个安卓应用程序包而言,采用了双重签名和单次签名的程序包将被 安卓操作系统认为是不同的开发者发布的,将导致同一个程序的两个发布版本无法在更新 安装时保留用户数据; (2)使用传统的应用程序包开发者签名机制,如果多个签名者采用默认的密钥 alias名称,如CERT,将导致在二次签名时,原签名方的数字签名被替换。例如,开发者A采 用的密钥alias名称为CERT,并对应用进行了签名;渠道商采用的密钥alias也恰好使用 了 CERT,当渠道商对此应用进行重签名时,将导致开发者的签名被替换。另外,由于传统安 卓应用签名时.SF文件和.RSA文件的命名规则是密钥alias首八个字符的大写,导致签名 文件名的命名空间比较小,容易发生碰撞。 进一步地,同一个安卓应用程序往往要在多个不同的渠道进行发布,然而传统应 用程序包开发者签名机制的上述缺陷将导致同一个应用的多渠道不同版本在用户手机上 无法实现保留用户数据的更新安装,也容易导致开发商或渠道商的数字签名被无意识的剥 离,最终必然导致安卓应用管理的混乱与用户体验的下降。
技术实现思路
本专利技术所要解决的技术问题是如何实现一种在兼容传统JAR包签名机制以及传 统的安卓应用开发者签名机制的情况下保证同一个安卓应用的多渠道多重签名的不同版 本能够进行保留用户数据的更新安装,以及如何实现一种支持任意数量的多方、多服务重 签名,签名数据互不冲突,且均可以进行独立验证的关键问题。 为此目的,本专利技术提出了一种兼容安卓应用的服务签名方法,包括具体以下步 骤: S1 :对应用程序软件包除开发者签名外的所有数据文件列出清单LIST,并完成兼 容安卓应用的服务签名操作; S2:通过使用服务自身标识证书或标识公钥对所述兼容安卓应用的服务签名进行 验证。 进一步地,所述步骤S1进一步包括: S11 :将所述清单LIST中所有数据文件进行摘要操作得到摘要信息; S12 :将得到的所有所述摘要信息组成一个字符串MSG ; S13 :通过使用服务方证书私钥对所述MSG进行数字签名,获得签名值SIG ; S14 :在软件包中预先创建的ΜΕΤΑ-INF目录中创建和服务方提供的预设业务名称 相关的目录,并在此目录中创建服务签名文件存储所述数字签名数据SIG,并存储包含所有 相关摘要的文件路径名的清单文件。 进一步地,所述步骤S14进一步包括:在软件包中的所述ΜΕΤΑ-INF目录中生成一 个以服务方域名中顶级域名命名的目录,即为第一目录,在所述第一目录中嵌套创建一个 服务方域名倒数第二段字符串命名的目录,即为第二目录,进一步在所述第二目录中创建 一个以服务方域名倒数第三段字符串命名的目录,以此类推,直至服务方域名第一段字符 串为止。 进一步地,所述步骤S2进一步包括: S21 :解析应用程序包apk文件,根据自身服务方名称找到对应的服务签名文件存 储目录,并从所述存储目录中找到预设业务名称对应的摘要文件清单; S22 :枚举应用程序包中ΜΕΤΑ-INF目录外所有文件,检查枚举到的文件中是否存 在摘要文件清单内容之外的文件,如果存在则服务签名验证失败; S23:读取清单文件中列出的所有数据文件进行摘要操作得到摘要信息,将所有数 据文件摘要信息组成一个字符串MSG ; S24 :从预先创建的ΜΕΤΑ-INF目录中读取服务签名文件的所述签名值SIG ; S25 :通过使用业务证书,MSG、SIG三个因子进行签名验证运算,得到验证结果 RESULT_VER,如果验证成功,RESULT_VER为真;否则RESULT_VER为假,服务签名验证失败。 进一步地,所述步骤S2进一步包括:枚举应用程序包中ΜΕΤΑ-INF目录内部所述开 发者签名文件与预设业务对应的服务签名文件之外的文件,检查枚举到的文件中是否存在 读取的摘要文件清单内容之外的文件,如果存在,验证结果RESULT_CHK为假,服务签名验 证失败;否则RESULT_CHK为真,服务签名验证成功。 为此目的,本专利技术还提出了一种兼容安卓应用的服务签名装置,包括: 服务数字签名模块,用于对应用程序软件包除开发者签名外的所有数据文件列出 清单LIST,并完成兼容安卓应用的服务签名操作; 服务签名验证模块,用于通过使用服务自身标识证书或标识公钥对所述兼容安卓 应用的服务签名进行验证。 进一步地,所述服务数字签名模块包括: 第一摘要操作单元,用于将所述清单LIST中所有数据文件进行摘要操作得到摘 要信息; 第一组串单元,用于将得到的所有所述摘要信息组成一个字符串MSG ; 第一签名值获取单元,用于通过使用服务方证书私钥对所述MSG进行数字签名, 获得签名值SIG ; 存储单元,用于在软件包中预先创建的ΜΕΤΑ-INF目录中创建和服务方提供的预 设业务名称相关的目录,并在此目录中创建服务签名文件存储所述数字签名数据SIG,并存 储包含所有相关摘要的文件路径名的清单文件。 进一步地,所述服务签名验证模块包括: 解析单元,用于解析应用程序包apk文件,根据自身服务方名称找到对应的服务 签名文件存储目录,并从本文档来自技高网
...
兼容安卓应用的服务签名方法与装置

【技术保护点】
一种兼容安卓应用的服务签名方法,其特征在于,包括具体以下步骤:S1:对应用程序软件包除开发者签名外的所有数据文件列出清单LIST,并完成兼容安卓应用的服务签名操作;S2:通过使用服务自身标识证书或标识公钥对所述兼容安卓应用的服务签名进行验证。

【技术特征摘要】
1. 一种兼容安卓应用的服务签名方法,其特征在于,包括具体以下步骤: 51 :对应用程序软件包除开发者签名外的所有数据文件列出清单LIST,并完成兼容安 卓应用的服务签名操作; 52 :通过使用服务自身标识证书或标识公钥对所述兼容安卓应用的服务签名进行验 证。2. 如权利要求1所述的方法,其特征在于,所述步骤S1进一步包括: 511 :将所述清单LIST中所有数据文件进行摘要操作得到摘要信息; 512 :将得到的所有所述摘要信息组成一个字符串MSG ; 513 :通过使用服务方证书私钥对所述MSG进行数字签名,获得签名值SIG ; 514 :在软件包中预先创建的ΜΕΤΑ-INF目录中创建和服务方提供的预设业务名称相关 的目录,并在此目录中创建服务签名文件存储所述数字签名数据SIG,并存储包含所有相关 摘要的文件路径名的清单文件。3. 如权利要求2所述的方法,其特征在于,所述步骤S14进一步包括:在软件包中的所 述ΜΕΤΑ-INF目录中生成一个以服务方域名中顶级域名命名的目录,即为第一目录,在所述 第一目录中嵌套创建一个服务方域名倒数第二段字符串命名的目录,即为第二目录,进一 步在所述第二目录中创建一个以服务方域名倒数第三段字符串命名的目录,以此类推,直 至服务方域名第一段字符串为止。4. 如权利要求1所述的方法,其特征在于,所述步骤S2进一步包括: 521 :解析应用程序包apk文件,根据自身服务方名称找到对应的服务签名文件存储目 录,并从所述存储目录中找到预设业务名称对应的摘要文件清单; 522 :枚举应用程序包中ΜΕΤΑ-INF目录外所有文件,检查枚举到的文件中是否存在摘 要文件清单内容之外的文件,如果存在则服务签名验证失败; 523 :读取清单文件中列出的所有数据文件进行摘要操作得到摘要信息,将所有数据文 件摘要信息组成一个字符串MSG ; 524 :从预先创建的ΜΕΤΑ-INF目录中读取服务签名文件的所述签名值SIG ; 525 :通过使用业务证书,MSG、SIG三个因子进行签名验证运算,得到验证结果RESULT_ VER,如果验证成功,RESULT_VER为真;否则RESULT_VER为假,服务签名验证失败。5. 如权利要求1所述的方法,其特征在于,所述步骤S2进一步包括:枚举应用程序包 中ΜΕΤΑ-INF目录内部所述开发者签名文件与预设业务对应的服务签名文件之外的文件, 检查枚举到的文件中是否存在读取的摘要文件清单内容之...

【专利技术属性】
技术研发人员:罗文骆俊瑞黄子河刘法旺杨玚严宏君马会丽庞思铭
申请(专利权)人:工业和信息化部计算机与微电子发展研究中心中国软件评测中心
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1