[发明专利]一种应用软件的安装方法和装置在审
申请号: | 201210264598.6 | 申请日: | 2012-07-27 |
公开(公告)号: | CN103577206A | 公开(公告)日: | 2014-02-12 |
发明(设计)人: | 赵子鹏 | 申请(专利权)人: | 北京三星通信技术研究有限公司;三星电子株式会社 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F21/51 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 王一斌;王琦 |
地址: | 100125 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 应用软件 安装 方法 装置 | ||
技术领域
本申请涉及智能手机的软件安装技术,特别涉及一种应用软件的安装方法和装置。
背景技术
Android是一个开源的嵌入式开发平台,基于Linux的操作系统,用于移动设备(例如智能手机和平板电脑)中,是最受欢迎的开发平台之一。
Android的应用软件包以APK包形式提供,也就是应用软件的安装程序是APK包。应用软件常用Java语言编写,同时采用Java签名机制来对APK包进行保护。具体方法如图1所示:将可执行代码(即源代码,具体可以为Dex文件)、资源文件、配置文件、库文件等打包成APK包101,然后将APK包的内容计算成散列值,再使用私钥对散列值进行加密,形成签名文件,即签名后散列102,将签名文件也放入APK包中。安装应用软件时,Android系统使用公钥对APK软件包中的签名文件进行解密(如103框所示),然后和APK包的内容散列值进行对比(如104框所示),若相同,则保证了APK包内容的完整性。
Android系统的所有应用软件都必须有数字证书,Android系统不会安装一个没有数字证书的应用软件。
在APK包中,签名文件存放在META-INFO目录,一般是如下三个文件:MANIFEST.MF,CERT.SF,CERT.RSA。其中MF文件存放着APK包内所有其他非签名文件的散列值;SF文件中存放着所有非签名文件的用私钥编码后的散列值,同时包含MF文件的加密散列值;RSA文件存放着证书信息,即加密后的公钥信息。
Android系统在对APK包进行验证时,首先提取RSA文件中的证书信息,解密公钥,然后验证SF的完整性,若验证成功,使用公钥解密SF中散列值,验证MF的完整性,若验证通过,对比SF和MF中的散列值进行APK包验证。
然而,Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证(即无人对签名信息作担保)。所以一个正版的APK软件包可能被黑客删除掉整个签名文件,修改代码后使用新的私钥进行重新加密,并将之发布、扩散出去冒充原版APK软件包。例如对于图1所涉及的过程,可能在修改101中的代码后,替换掉签名后的散列值102,这样APK代码被修改后仍然可以安装执行。
Android平台在安装应用软件过程中没有开发者或开发商的信息提示。用户无法确认某APK包是谁发布的,没法确认APK包是否曾被修改过。若用户安装了被恶意修改的APK软件包,可能导致潜在风险。
此外,Android的应用软件一般使用Java语言编写,Java语言很容易被反编译破解,即使在开发过程中加入了混淆器,可以使反编译后的代码难于阅读,但是会被经验丰富的编程者读懂。当前,APK软件包的反编译工具和静态分析工具已经相当普及。
由上述内容可见,现有基于Android平台的应用软件安装过程存在以下缺陷:
没有权威的证书管理机构或者软件市场对APK软件包(即安装程序)进行有效的管理,可能存在第三方软件安装包(即安装程序)发布后,核心的Java代码被反编译获取并被重新改写等情况,因此,对于安装应用程序的终端而言,无法确认第三方软件安装包(即安装程序)是否被恶意修改过,可能会安装被恶意修改过的应用软件。
发明内容
本申请提供了应用软件的安装方法,能够有效避免操作系统安装被恶意修改过的应用软件。
一种应用软件的安装方法,包括:
a、获取待安装应用软件的安装程序携带的签名信息;
b、利用预先保存的所述安装程序对应的原始签名信息,对所述安装程序携带的签名信息进行验证,若未通过验证,则退出所述应用软件的安装;若通过验证,则执行所述安装程序的可执行代码。
较佳地,所述原始签名信息中包括公钥;
所述对所述安装程序携带的签名信息进行验证,包括:利用所述原始签名信息中的公钥对所述安装程序携带的签名信息进行验证。
较佳地,所述利用所述原始签名信息中的公钥对所述安装程序携带的签名信息进行验证,包括:
将所述原始签名信息中的公钥与所述安装程序携带的签名信息中的公钥进行比较,如果相同,则确定通过验证;如果不同,则确定未通过验证;
或者,利用所述原始签名信息中的公钥对所述安装程序携带的签名信息进行解密,如果解密成功,则确定通过验证;如果解密失败,则确定未通过验证。
较佳地,所述原始签名信息中的公钥为加密后的公钥,在对所述安装程序携带的签名信息进行验证前,该方法进一步包括:对所述原始签名信息中的公钥进行解密;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京三星通信技术研究有限公司;三星电子株式会社,未经北京三星通信技术研究有限公司;三星电子株式会社许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210264598.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:蒲公英液
- 下一篇:热模拟生烃实验液态产物中易挥发组分的定量分析方法