关于软件自签名的理解提到的工具“makekeys”

来源:互联网 发布:挪威慢生活 知乎 编辑:程序博客网 时间:2024/06/06 08:35

米度软件:www.midosoft.cn

 


相信很多朋友跟我一样,只知道S60第三版的软件安装前要经过签名才能安装到手机里,并且也知道自已制作个人证书来签名自已独一无二的只能在自已手机上运行的软件了.那为什么要这样做,这样做是什么原理呢?可能很多朋友也不知道吧.下面我提出我自己的一些理解,希望我的理解是正确的,如有什么不对之处,请高手帮忙纠正.

首先,我们要知道什么是非对称加密系统:

非对称加密系统中,有两个密钥:一个是公钥,一个是私钥.公钥是可以向你的一组用户公开的一个密钥,其实就是一个大的素数.私钥只有你自己拥有,其他人不能盗取你的私钥.私钥其实也是一个大的素数.公钥是拿来加密用的.比如,有某一个人想发信息给你,你通过安全途径给他公钥,他用公钥对他要发给你的信息进得加密运算,然后再通过网络发送加密后的密文给你,虽然有人能盗取这个密文,但他不知道私钥,他解不了密.而你则可以用私钥进行解密.私钥则是用来签名的.比如,你要发布一个公告,你就用你的私钥对公告进行加密运算,然后发布出去,而看公告的人则用公钥对公告进进行解密运算,如果可以解密,则证明该公告是你发出的.也就相当于验证了签名.因此,公钥和私钥都有两个作用:公钥用来加密和验证签名,私钥用来签名和解密。

那在我们的S60第三版的签名中又是如何运用的呢?
私钥就是包含在文件xxx.key里的一个素数,可以1024bit长,也可以2048bit长,当然越长越安全些。公钥也就是包含在文件xxx.cer里的一个素数。

公钥和私钥都可以用工具MakeKeys.exe生成.格式如下:
makekeys -cert -password yourpassword -len 2048 -dname "CN=Joe Bloggs OU=Development OR=Symbian Software Ltd CO=GB EM=joe.bloggs@Symbian.com" mykey.key mycert.cer

解释一下该命令:参数-cert 表示要生成一个私钥和一个公钥;-password 表示私钥的密码,可以不用密码,所以这个参数可以省略;-len 表示素数的长度,这里是2048bit;-dname后面的表示该证书的一些描述字串;mykey.key,mycert.cer分别表示私钥和公钥存于的文件名。

在DOS命令框里输入这条命令后,不停的移鼠标,makekeys.exe就会在当前目录下生成一个私钥mykey.key和一个公钥mycert.cer了。

从以上步骤,我们得到的证书和私钥都是我们自己生成的,也就相当于我们个人发证书给自己,这是不具有什么公信力的。所以,以这种方式签名的软件虽然可以安装到任何手机上运行,但它的能力有限,很多系统的功能用不了,比如我们常常需要的自启动功能。如果我们想要我们的软件能用到系统的功能,比如自启动,访问系统文件,那我们就要向Symbian申请证书了。这里有两种方式:
第一种方式是对于个人开发者,Symbian发给我们一个证书,该证书包含了开发者手机的IMEI码,因此这种方式签名的软件只能安装到该IMEI码的手机上。我们现在自签名的来电通,大字屏保等软件,用的就是这种方式。第二种方式,就是对于商业软件,开发商业软件的组织把做好的软件提交到Symbian 测试中心进行测试,通过的话,由Symbian进行签名,然后该商业软件就可以发行了。这种方式签名的软件,可以安装到任何手机上,并且能够访问系统的关键API功能。

要得到Symbian发给我们的证书,就比较麻烦了.这个证书就相当于我们的电子身份证了.我们要取得该身份证,就要向发证机关申请.要申请到,我们必须具备一些材料:我们的私钥,组织名等等.在Symbian S60第三版里,最重要的一个材料就是我们手机的IMEI码,还有我们该证书的能力,比如经过该证书签名的软件可以自启动,可以查看系统文件等.Symbian有个工具可以收集我们的这些材料,这个工具就是我们申请个人证书时用的..啦.它会产生一个文件xxx.csr.里面就包含了我们的这些材料了.Symbian对这些信息进行收集后,就发给我们一个证书xxx.cer.里面包含证书的有效期(这个期限现在一般是半年,所以我们得到的这个证书只能使用半年,半年后又要重新申请),证书的算法,存诸格式,IMEI码,证书的签名程序的能力(比如自启动,访问系统文件,访问网络等).有了证书和私钥,我们就可以对一个新开发的软件进进签名了.

我们生成私钥和公钥后就可以对开发的软件进行签名了。命令如下:

SignSis xxx_unsigned.sis xxx_signed.sisx xxx.cer xxx.key
解释:SignSis 就是命令了,xxx_unsigned.sis是未签名的文件名,这里只是个文件名,并不代表这个软件就真的未经过签名,一个签过名的软件可以再次签名,这样得出最后的结果是该软件有两个证书签过名;xxx_signed.sisx表示签过名后软件的文件名;xxx.cer和xxx.key就是证书和私钥了,如果私钥是有密码的,这里要跟着写上密码,SignSis.exe 用私钥对软件进行签名,然后再把证书附加到软件后面,最后输出xxx_signed.sisx,这就是经过签名的软件?

这个过程其实就是用私钥xxx.key进软件进行签名,然后附加证书xxx.cer到软件里.安装软件时,手机的安装程序会检测是不是该证书对应的私钥签名的.这样就防止有人篡改软件.不过由于该证书里有个单一的IMEI码,因此,它只能安装到该IMEI码的手机上.

 

 

米度软件:www.midosoft.cn

 

原创粉丝点击