简谈智能手机终端签名验证机制
2011-02-28 11:12:16 来源:WEB开发网应用系统签名认证所需要的证书来源有三种模式:
第一种是自签名证书。这种方式以android为代表;android中的签名仅仅是让用户知道该应用的开发者,但没有验证开发者的身份
第二种OEM或移动运营商来颁发,这种方式以apple,rim为代表;这种方式安全是得到了保障,但对开发者来说是极其不爽
第三种是通过第三方商业性是权威的数字证书机构签名认证,比较著名的CA有:Verisign,Thawte。这种模式以windows mobile为代表
下面具体介绍一下各个手机操作系统或平台的数字签名运行机制或要点。
1、Android数字签名
Android数字包含以下几个要点:
(1)所有的应用程序都必须有数字证书,Android 系统不会安装一个没有数字证书的应用程序
(2)Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证
(3)如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布。
(4)数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。
(5)Android使用标准的java工具 Keytool and Jarsigner 来生成数字证书,并给应用程序包签名。
android数字签名的作用仅仅是
1)识别代码的作者
2)检测应用程序是否发生了改变
3)在应用程序之间建立信任,基于这一信任关系,应用程序可以安全地共享代码和数据。
2、windows mobile数字签名
windows mobile数字签名有以下3种策略:
(1)只准许运行签过名的程序;
(2)准许运行所有程序(包括未签名), 但是使用特权api的程序不能正常运行;
(3)包括使用了特权api的程序(不管有无签名)都可以运行.
一般用户选择的安全策略是第二种, 这样既在一定程度上保护了设备又能运行大部分的应用程序(一般网络上免费的那些应用程序都是没有签名的). 如果程序中使用了特权api, 如果不签名(而且要签特权的)的话那大部分用户都使用不了
3、Iphone数字签名
Iphone中的签名限制度是比较高的
所有iPhone 应用程序在iPhone OS设备上运行之前必须用合法的 signing identity 进行签名
赞助商链接