接着上篇数字签名的内容,数字签名就是对原始报文数据的Hash值进行一次非对称的加密,数字签名主要使用来校验数据的;那么代码签名,顾名思义就是用来校验代码的
代码签名是对可执行文件或者脚本进行数字签名,是用来确认软件在签名后未损坏或者被修改的措施。和数字签名原理一样,只不过签名的数据是代码而已。
那么接下来我们一点点的来分析:
1、苹果双向验证签名原理
2、描述文件的产生
3、使用codesign进行应用重签名
4、利用Xcode重签名
5、利用Shell脚本自动重签名
一、苹果双向验证签名原理
众所周知,目前主流的一些系统,比如Windows,它的盗版软件非常多并且系统安全存在一些隐患,但使用过iOS系统的都知道,iOS盗版软件很少,实际上就是因为苹果的iOS系统采用了签名验证的机制。但是苹果的需求可远远不止验证应用这么简单,还有如下的需求:
1、安装包不需要上传到AppStore,也可以直接安装到手机上。
2、苹果为了保证系统的安全性,又必须对安装的App有绝对的控制权。
·经过苹果允许才可以安装
·不能被滥用导致非开发完成App也能被安装
为了实现这些需求,iOS的签名复杂度也就增加了很多,也就有了现在的苹果的双层签名方案。
下面是苹果双层签名的原理流程图(画了我两个小时TnT),我在后面会一一解释其中含义:

1、Mac电脑中会有一对公钥M和私钥M怎么来的?
因为开发调试阶段,苹果的开发者工具Xcode可以把应用直接安装到iPhone真机上。
作为iOS开发者,有一件事情是再清楚不过了,那就是:未上架调试阶段的代码想要运行在iPhone真机上,必须要在Xcode设置里面添加一个证书(Signing Certificate),
如图1,如果没有添加这个证书,那么Xcode代码就不能跑真机调试。
注意:公钥M和私钥M就是你在请求证书的时候,Xcode帮你生成的!

图2,就是在你申请到证书之后,钥匙串会把私钥M和证书做关联。

后续内容会尽快补完。。。签名内容较多
网友评论