Symbian S60v3软件签名解析

Nokia E71刚刚到手,安装软件确需要签名,甚是不理解为什么这样做啊? 发挥不折腾不舒服斯基的本性,我们大家来学习!

使用Nokia智能手机的童鞋们注意啦,如果你们想了解为什么要签名软件才能安装到手机上可以继续了,但是警告以下为纯技术贴,慎入。。。

========== 华丽的分割线 ===============

一 申请自己的证书和私钥

Symbian S60v3 之后要用证书来签名软件才能安装。

签名不可或缺的三个部分是1. Key文件 2. 证书文件 3. 签名软件(签名软件由塞班智能手机网论坛提供)。

下图为我提交IMEI号,通过塞班智能手机网请求证书后,等待12-24小时后,下载到的两个文件。
















二 剖析证书文件

分解一个证书,起初看到的都是ASCII码,尝试用Notepad++工具进行BASE64 decode工作(这个我一直没做到,下面的说明用的是网上的例子),可以解析出正文它里面由两部分组成:

第一部分(Symbian发放的证书):

Data:
Version: 3 (0x2)
Serial Number:
92:b1:12:96:14:7c:f4:78:f7:0b:8d:a5:4e:47:30:11:80:65:7c:a9:9e:24:eb
:8f:83:92:c7:1c:b1:00:39:5d:cb:56:85:c1:c8:63:74:45:8a:65:3c:6a:b3:69:df:de:a5:4
e:1c:9c:f2:58:77:f8:4f:58:a4:49:57:4f:ab:eb:6a:11:a2:6f:44:29:8a:ac:94:5c:85:06:
98:e4:43:08:80:63:85:95:67:1a:29:8c:ce:60:26:d8:61:93:5f:0c:34:ca:71:e3:28:a1:c5
:4c:7f:c2:c5:00:88:ad:35:86:57:47:ab:e3:06:f5:47:72:32:bb:c6:6d:32:95:9c:83
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=GB, ST=London, L=Southwark, O=Symbian Software Limited, CN=Sym
bian Developer Certificate CA 280205A/Email=developercertificates@Symbian.com
Validity
Not Before: Mar  7 14:42:50 2008 GMT
Not After : Mar  7 14:42:50 2011 GMT
Subject: C=CN, L=dongguan, O=Dongguan Dalang Soubao Mobile Phone Shop, O
U=Symbian Signed PublisherID, CN=Dongguan Dalang Soubao Mobile Phone Shop, ST=gu
angdong
Subject Public Key Info:
public Key Algorithm: RSAEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:c0:d3:d2:2e:81:91:7e:ee:5d:42:b5:73:3c:7b:
a8:74:62:41:67:cf:44:96:35:49:ad:30:6c:2c:1e:
53:5e:0a:97:a6:3e:c3:89:bb:93:e1:89:57:21:e0:
d8:75:7e:e9:07:c3:47:c1:45:9d:56:0f:6c:5c:0c:
5e:75:fb:4d:92:4a:4e:e8:05:36:bf:82:c8:5f:65:
fc:6a:15:c1:9b:37:34:82:36:b7:16:6d:1c:22:03:
5b:16:67:3d:9c:98:f7:a7:69:53:5f:2f:d4:da:bb:
33:ee:78:4f:47:8b:b3:5d:09:4a:c8:f0:e4:ea:0f:
ea:c7:06:00:b7:af:32:80:b3
Exponent: 65537 (0x10001)
X509v3 extensions:
1.2.826.0.1.1796587.1.1.1.1: critical
0.!…256255016073926..654835019155432
1.2.826.0.1.1796587.1.1.1.6: critical
…}…….
Signature Algorithm: sha1WithRSAEncryption
bd:19:4b:2c:1e:ef:38:15:43:e3:7b:06:da:f4:31:aa:9d:38:
c1:61:ea:b3:ea:c5:00:03:2f:dc:69:b5:40:f9:23:49:89:6a:
50:70:61:9b:6c:fe:77:52:46:20:90:53:49:f9:fc:dd:db:81:
a3:0e:b9:95:60:08:e3:d1:18:ac:7d:92:70:25:41:16:ef:28:
b9:21:51:12:09:85:0d:55:98:89:d3:e9:66:c5:32:9e:ec:f2:
f1:2b:2e:6c:6b:c5:2c:a2:f3:78:0d:cb:d6:e3:5a:ab:3a:d1:
03:2e:93:f1:cd:8a:8c:26:d6:d5:07:fc:92:44:1c:60:6a:bc:
3c:04

里面是些基本的信息,有证书的有效期、发布证书的机构、Symbian给授权的公司Dongguan Dalang Soubao Mobile Phone Shop、还有授权使用的IMEI号码(这里有几百个IMEI号码,为了写帖子方便故此省略了)。这样也能看出这个证书是一个用Publisher ID做的证书

这里 RSA Public Key: (1024 bit) 开始的这段是Dongguan Dalang Soubao Mobile Phone Shop公司的Publisher ID所对应的RSA公钥。这个RSA公钥对应的RSA私钥就是我们签名用的key文件,他和这个的RSA公钥组成了RSA的密钥对。这个私钥是我们作为开发者身份持有的。

TIPSRSA是非对称密钥密码,有一对公钥和私钥组成,用RSA公钥加密的信息必须用RSA私钥才能解开了的,1024bit是密钥的长度,1024bitRSA密钥是很安全的,1977年创造RSA算法开始1024位的密钥到今天从未被破译过。随着计算机发展保守估计1024位密钥还能撑个5-10年。如果想伪造签名的,看到这里可以歇歇了,工行的数字证书是2048位的,破解这样的密钥直接没戏。目前有记录的破解只有512位的和307位的,都是联合网络的计算机花很长时间破解的。)

Signature Algorithm: SHA-1 With RSA Encryption文件末尾的这段是数字签名的开始。这里是Symbian对上面信息的一个数字签名,这里用的算法是SHA-1和RSA。要验证上面信息的完整性和正确性只要用SHA1算法对上面的信息计算得到一段信息摘要;用Symbian的RSA公钥揭开这个熟悉前面得到一段明文,和信息摘要一致就能断定确实是Symbian发布的。能用Symbian的RSA的公钥解开的密文必须要由Symbian的RSA的私钥才能做出来,而 Symbian的RSA的私钥只才Symbian的签证专用的服务器里才会有,所以其他人是无法伪造这个数字签名的。

(数字签名:用密码学的方法来验证发布信息的正确性与发布信息的来源。SHA-1是安全散列算法。这个算法用于对一段信息产生唯一的一个数字标识,也称为消息摘要或散列HASH。)

下图是用Windows查看证书显示的内容:















































































第二部分(Verisign发放的证书):

Certificate:
Data:
Version: 3 (0x2)
Serial Number:
76:34:a0:91:30:9a:16:7d:9d:7f:c2:4b:64:6e:4f:f0
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=US, O=VeriSign, Inc., CN=VeriSign Identity-Based ACS Root for
Symbian OS
Validity
Not Before: Mar  2 00:00:00 2005 GMT
Not After : Mar  1 23:59:59 2015 GMT
Subject: C=GB, ST=London, L=Southwark, O=Symbian Software Limited, CN=Sy
mbian Developer Certificate CA 280205A/Email=developercertificates@Symbian.com
Subject Public Key Info:
ublic Key Algorithm: RSAEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:fa:65:c9:d6:b4:b9:1a:8d:ff:10:28:62:a3:d8:
fd:ad:e4:ab:56:c5:2a:99:92:04:f9:c6:8c:cc:42:
33:04:9a:f6:c3:f1:1b:51:8b:72:2a:f0:58:f9:11:
2f:8e:a5:39:88:17:3a:e5:da:7f:25:bb:a7:ce:6b:
85:1a:78:59:4e:60:a8:75:71:f3:ae:fa:74:23:c8:
0d:32:35:91:85:68:d7:65:b0:73:be:77:fb:f5:10:
87:0a:f2:b1:c6:f1:00:d3:0d:64:83:57:6f:9d:ff:
d8:21:fc:eb:2e:20:8e:73:b3:56:95:97:6c:f6:dd:
f4:16:03:31:ca:bf:b8:22:d1
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints: critical
0…….
X509v3 CRL Distribution Points:
0g0e.c.a._http://onsitecrl.verisign.com/offlineca/VeriSignIncVer
iSignIdentityBasedACSRootforSymbianOS.crl
2.5.29.37:
0
..+…….
X509v3 Key Usage:
….
X509v3 Subject Key Identifier:
..::……”..H……./
X509v3 Authority Key Identifier:
0….B…[.T.!.zn.Y.K..*
Signature Algorithm: sha1WithRSAEncryption
2f:e7:cc:9e:d3:2d:aa:fe:df:dd:8f:1a:47:0c:61:ce:7d:c5:
91:24:13:00:1a:ca:ae:54:f9:e7:ba:9c:f6:93:30:a1:fb:fe:
88:6f:ed:1f:d9:31:53:78:c6:2a:63:57:ff:8f:b4:25:af:c4:
c7:d8:ea:4e:f3:76:5c:b9:b9:62:3a:fc:32:6f:8c:db:44:68:
ba:72:40:cb:f9:af:31:ff:a9:4d:88:b9:25:a1:1f:22:5c:f5:
94:be:60:15:89:b4:f5:ee:81:51:38:18:5e:f2:dc:43:c6:69:
ee:68:67:ff:66:30:68:73:5c:25:cb:92:b0:21:0e:11:fd:ab:
df:3d:fe:57:4d:5f:20:13:44:42:e4:02:43:a4:fb:44:c3:3b:
8b:32:47:7c:95:72:39:71:c5:1f:b1:c7:52:29:17:91:90:bd:
76:e0:ff:aa:51:e5:bd:a5:96:fd:62:7a:ce:c2:58:f4:91:ed:
8f:30:97:5d:f3:cc:55:76:c3:aa:60:60:88:e8:a6:a6:55:f8:
dd:04:23:ac:bd:d2:c4:b0:a8:08:4f:76:3b:b1:49:35:80:19:
40:8f:4f:2b:a9:c6:bf:9b:75:60:56:d0:b4:5c:b1:97:16:35:
7d:b0:fa:61:35:5b:df:a9:a0:0f:5a:15:70:2e:63:bf:25:17:
f8:52:7c:13

里面是一些基本的信息,有使用的算法、以及发布者的信息、授权者的信息。

这个证书的有效期2005-2015,其中RSA Public Key: (1024 bit)开始的是Symbian的RSA的公钥。

Signature Algorithm: sha1WithRSAEncryption开始的是versigin公司对上面所有信息的数字签名,使用的算法是SHA-1和RSA。这里有versigin的对应的RSA公钥,同样能验证这个数字签名的有效性。

那个这个公钥在哪里呢?答案是在你的手机里。查看诺基亚手机的Tools -> Settings -> General -> Security -> Certificate management -> Authority certificates























可以看到所有VeriSign发布的公钥。同样可以看到Symbian的公钥信息。

三 为什么要签名要证书?防病毒!

S60v3rd和UIQ中一部分人软件需要证书签名后才能安装的,有些软件则不需要签名。

那些不需要的签名的软件有两种可能。第一软件的开发商已经获得Symbian认证,上面已有Symbian或软件开发商的正式签名,所以可以免签名,如来电过滤,这个没有IMEI限制。第二种这个软件不需要使用系统特殊的资源(不需要申请能力),这样的软件用20年开发证书签名后就能用,而且没有IMEI限制。

其他申请能力而没有Symbian的认证签名的软件都需要用开发证书签名后安装,而这些开发证书是有IMEI限制的。所有用开发证书签名的软件都有IMEI限制,只能在开发证书里包含的IMEI对应设备上才能安装。现在的PublisherID能签小于1000个IMEI,那个证书签的软件就能装在那些对应的IMEI设备上。所以所现在是几百个设备同一个证书,这个证书签的软件这几百个设备都能装。

PublisherID做的证书是17项能力。

有人问1000个IMEI一个号是不是没有以前安全了?其实你用证书给软件签名就是把权限给了程序。你是以开发商的身份使用软件的,所以安全问题Symbian是不负责的。你要是把权限给了一个木马,他当然能偷你的东西、在后台拨打电话了。所以从安全方面来说两种证书是一样的。Publisher ID的能力多,你签给木马的话危害大点。但是我们一般是不可能傻到签个木马装装的,木马没有签名是没法进入系统的。

所以关于证书带来的安全方面的担忧没有必要,而且成为一个病毒最需要的三个能力Symbian没有放出来。只有程序通过严格的认证提交申请表才能用使用这些能力。

所以S603rd系统一共有20项能力。

早有人解释设计签名的原因并不是为了给机友没事找事,而是以前的1、2版病毒太多,才引入认证机制的。对付病毒的认证机制比杀毒更彻底,因为杀毒是基于特征码扫描的,需要浪费不小的系统资源,而认证机制防毒的原理就一条,只把重要的权利交给那些可以完全相信的软件。认证机制就像一道墙把不可信任的程序挡在墙外,而在墙外的程序要进入系统就需要证书这把钥匙。一般病毒软件是不会有认证的代码的。没有认证代码,这个病毒就没有能力复制自己、传播自己、窃取用户信息、隐蔽自己、保护自己,而作为一个合格的病毒连这些必要的能力都没有的话,那就失去了成为病毒的意义。

四 给软件签名的过程

1.用SHA-1(安全散列算法)对要签名的软件产生一段数字标识(也叫做HASH或者摘要)。

2.用key文件(自己的私钥)对这个数字标识进行加密。

3.把这个数字签名和证书里的两段内容一起附加到这个软件的头部。

五 软件安装的过程

1.手机里有个RSA的公钥,这个公钥就是上面提到的verisign公司的 RSA算法的公钥,它是根CA证书,在手机出厂之前就已经预装到系统里了,这个公钥验证证书里第二段内容是verisign公司的数字签名。如果安装时失败则手机显示“证书错误,请与应用程序供应商联系”。如果成功的话手机系统就会信任这个数字签名里包含的Symbian的一个RSA公钥。因为有且仅有公钥才能验证私钥的签名,所以就可以判断这个信息的确为 verisign公司发布,绝无伪造和篡改过,所以程序可以信任那个Symbian的RSA公钥。

2.有了一个可信任的Symbian的RSA公钥,就可以验证开发证书里的第一段内容,Symbian的数字签名。如果失败还是显示“证书错误,请与应用程序供应商联系”。成功的话手机系统就可以信任里面的一个公钥(PublisherID 是RSA公钥),还有这个签名中包含有效期、申请的能力、开发者的资料、包含的授权的IMEI号码等信息。

由于这些信息是用Symbian的RSA私钥签名的,有了可信任的Symbian的一个RSA公钥,就可以完全说明这些信息是Symbian发布和承认的。

3.有了上面可信任的资料程序会做一下几件事:

a.与当前手机时间核对有效期。如果超出则显示“证书过期”。 有这样的问题我们都知道把手机时间改到有效期内就行了。

b.核对当前的IMEI号码是否包含在签名的那些IMEI号里。如果没有则显示“无法安装受限制证书”。 IMEI号没法改,否则我们就不需要提交IMEI号码来制作证书了。现在那些新手该明白为什么要提交IMEI制作证书了吧。

c.把刚才用key文件签名的那个数字标识加密的信息,用刚才信任的那个公钥(开发证书里的那个公钥,就是和key文件对应的那个公钥)

解开得到软件的数字标识,然后再次计算软件的数字标识。比较这两个数字标识是否完全相同,不同则显示软件已损坏,相同则说明软件未被篡改过和保持着完整性。

d.获取软件申请的能力和证书给予的能力。如果软件申请的能力证书没有给予则显示“没有足够权限”。

如果没有出错就开始软件的安装了。

软件签名与安装过程总结




塞班软件的签名和安装实际就是一个信任传递的过程,可以简单表示为verisign→Symbian→开发商(PublisherID)/个人开发者→被签名软件。

用这样的信任传递机制来确认一个软件的可信性,并赋予相应的权利。



参考资料:


http://www.5dmail.net/html/2007-1-12/2007112161145.htm

http://www.wosign.com/advisories/the_power_of_digital_signed_software.htm



http://bbs.dospy.com/thread-6157083-1-245-4.html

部分段落参考以上文档编写,由其第三份文章价值及其之大,原作者经过搜索也无法找到,再次表示歉意,只能以转帖方式表示感谢,版权归原作者所有

1 Comment on this Post.

  1. wswdyg@yahoo.com

    帮你找到了第三篇文章的作者,这篇帖子最早还是发表在dospy上,地址http://bbs.dospy.com/viewthread.php?tid=1341604&bbsid=194&extra=page%3D1&originator=yes&authorid=1863969。用google搜文章标题《你了解证书吗?帮你解开证书》,自定日期范围从:2008年1月1日到:2008年12月31日,发现只有这篇帖子,帖子发表于 2008-3-25 23:10 ,最后编辑时间为 2008-4-12 18:16 ,作者昵称为0o90o9。帖子后面有他和跟帖者的对话可以佐证他为原创:“谢谢楼上的评价和建议。我的帖子总算没有白写啊。”,还有一处可以佐证:ublic Key Algorithm: 应为public Key Algorithm,不知道作者设置了什么,p被替换成一个表情,所以后来所有的转帖都把这个“p”转掉了,包括你的。

Leave a Comment.