`
hyzc2014
  • 浏览: 4535 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

签名与验证

 
阅读更多

app签名作用:

保证app安装包是来自其私钥的拥有者并未被覆盖。也表明app的拥有者.

所有app的签名是唯一的,如app签名重复,则安装时会报错,一定需要卸载签名相同的原安装程序才能装新的。

 

 

签名操作原理

1,遍历app安装包,对每个文件先SHA1编码再BASE64编码,生产文件的一次摘要,并把每个文件的所有一次摘要保存至MANIFEST.MF文件中。把MANIFEST.MF存于安装包的meta-inf文件夹内。

2,对MANIFEST.MF的文件内容先SHA1编码再BASE64编码,生成总摘要,保存至CERT.SF文件中,遍历MANIFEST.MF中的所有文件的一次摘要,再次先SHA1编码再BASE64编码,生成文件的二次摘要。并把所有的文件的二次摘要保存至CERT.SF文件中,把CERT.SF存于安装包的meta-inf文件夹内。

3,对CERT.SF的提取出摘要(这部份还没弄明白),用私钥加密形成签名,把这个签名,公钥,加密算法和信息发布机构信息等保存至CERT.RSA文件内,把CERT.RSA存于安装包的meta-inf文件夹内。

 

 

签名后的appSigned.apk多了以下三个文件 MANIFEST.MF, CERT.RSA, CERT.SF。

MANIFEST.MF 保存了所有文件的SHA-1并base64,即app.apk的消息摘要

CERT.SF 保存了对MANIFEST.MF的文件SHA-1并base64(摘要值)。以及MANIFEST.MF中每一个摘要项的SHA-1并base64(摘要值)

CERT.RSA 包含公钥信息,所采用的加密算法和信息发布机构信息

 

 


签名认证原理

1,  从appSigned.apk内获取签名证书(含公钥),签名,以及消息摘要算法。

2,  用公钥解密签名,得到摘要。 从CERT.SF文件中的内容(此部分没弄清楚)对其SHA1生成摘要,两个摘要相比,可证明CERT.SF文件未被篡改。

3,对MANIFEST.MF的文件内容先SHA1编码再BASE64编码,生成总摘要,和CERT.SF中的总摘要比较,遍历MANIFEST.MF中的文件的一次摘要,先SHA1编码再BASE64编码,生成文件的二次摘要,并和CERT.SF中相应的文件二次摘要比较,如果相同则证明是MANIFEST未被篡改。

4,对安装包内的每个文件先SHA1编码再BASE64编码,生产文件的一次摘要,并和MANIFEST.MF中的相应的文件一次摘要比较,如相同则证明是安装包内的文件未被篡改。

 

如一致则认证通过。由于只有发送者才有加密摘要的私钥,所以我们可以确定信息一定是发送者发送的

 

 

签名原理http://blog.csdn.net/kickxxx/article/details/18252881

证书格式http://liuleijsjx.iteye.com/blog/433853

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics