美文网首页
iOS签名机制

iOS签名机制

作者: zhouluyao | 来源:发表于2020-03-25 12:01 被阅读0次

    以下内容来自小码哥教育底层原理班的笔记总结,更多详情可以去腾讯课堂购买.

    密钥的基本概念:

    由公钥加密的密文,必须使用与该公钥对应的私钥才能解密,由私钥加密的密文,必须使用与该私钥对应的公钥才能解密

    由消息的接收者,生成一对公钥、私钥

    将公钥发给消息的发送者,消息的发送者使用公钥加密消息

    保证数据不被篡改,不能保证信息加密

    证书是为了解决中间人攻击(是否伪造公钥 )而产生的

    比如A要给B发消息:A->B,有个中间人攻击C

    1.消息接受者B生成一对公私钥

    2.B把公钥发送给A的过程中,被中间攻击者C拦截了公钥

    3.此时C成为消息接受者,用自己生成的公私钥模仿B,把C的公钥发给A,然后发消息

    4.此时C就拦截了A发来的消息,用B发来的公钥加密A发来的消息,与B沟通,成功拦截A->B之间的消息

    怎么解决中间人攻击问题呢?

    1.消息接受者B生成一对公私钥后,把自己的公钥发送给权威认证机构

    2.权威认证机构会把B的信息,B的公钥,权威机构用自己的私钥对B的公钥做的一个签名

    3.消息发送者A,可以去权威机构请求B的证书,用权威机构公开的公钥,验证B证书的合法性

    iOS签名机制流程图

    iOS签名机制 – 流程图.png

    签名流程图解释:

    ①在Mac设备上运行Xcode,打包App时,Mac设备的私钥会对代码,资源文件进行签名

    ②在生成苹果证书时在钥匙串找到Mac设备的公钥CertificateSigningRequest.certSigningRequest文件上传到Apple后台,Apple后台会用私钥对Mac设备的公钥进行签名生成证书

    ③把②生成的证书和在后台配置的devices,app id,entitlements再次用Apple后台的私钥进行签名生成mobileProvision文件

    ④iOS设备的公钥会对mobileProvision的签名进行验证,看devices,app id,entitlements是否被篡改

    ⑤iOS设备的公钥然后再对证书的签名进行验证,查看Mac设备的公钥是否被篡改

    ⑥从⑤中获取到Mac设备的公钥,去验证用Xcode打包的App是否被篡改

    另外:

    苹果的一套复杂的机制是为了保证App不被窜改,更方便的打包安装,如果不为方便考虑,只需要第①步使用Apple后台签名和第⑥步iOS设备的Apple公钥验证是否篡改也是可以的.

    每次打包时,把App的代码上传到Apple后台,经过Apple后台私钥签名,然后再下载下来,通过iOS设备的Apple公钥进行验证也能达到App不被篡改的目的,这样每次上传下载就太过于麻烦,于是有了以下的验证流程.

    相关文章

      网友评论

          本文标题:iOS签名机制

          本文链接:https://www.haomeiwen.com/subject/ozytuhtx.html