iOS双向签名原理

iOS签名,证书等图示如下

​​​​​​​​有不理解苹果打包签名、证书这些概念的可以看下。给自己画张图就方便理解了。为了保证系统安全性,Apple公司采用双向签名机制。

一、RSA加密

在理解iOS整个开发者开发流程之前需要知道的加密算法。
RSA也是网络安全应运而生的算法,也是目前使用最广泛的加密算法。它生成公钥和私钥。公钥是可以让大家知道的,私钥是自己保存的,不能曝光的。
RSA常见用法:

  1. 公钥加密,私钥解密。
  2. 私钥签名,公钥验签。

我们这里的iOS的一整套加密机制就是用了第2种方式。

二、iOS双向签名机制流程。

  1. 你通过Mac上的CSR请求在MAC上生成一对公钥私钥。公钥A包含在CSR文件中,私钥B也就是P12文件保存MAC电脑的keychain中。
  2. 苹果官方也会生成一对公钥,私钥。公钥在iOS设备上。私钥在苹果后台。
  3. 你把CSR文件传到苹果后台之后苹果用他们的私钥对CSR文件也就是公钥 A及公钥A的hash值签名生成证书。证书再绑定appID及测试开发设备列表。就生成了provisioning profile描述文件。当然是经过苹果私钥加密后的。
  4. 打包的时候会用MAC本地的私钥B进行app签名。并且带上之前你下载的provisioning profile文件。
  5. 然后就是安装到设备上。iOS上苹果的公钥把provisioning profile文件解密了就验证了这个app是经过苹果官方认证的,同时也得到了测试设备和CSR请求中的公钥A。如果公钥A可以解密app,也就验证了这个app来自于你这个开发者。不是别人冒充的。

下面是对以上概念的具体图示,帮助上面讲述的快速理解。
在这里插入图片描述

其他相关知识

RSA生成密钥的文件格式有两种,一种是PEM,另一种是DER。
首先看DER,其实就是二进制格式,它的描述是:

Distinguished Encoding Rules (DER) is a binary serialization of ASN.1
format. It is often used for cryptographic data such as certificates,
but has other uses.

PEM格式是对DER文件进行编码的Base64字符格式;如果对其进行Base64解码,就可以还原成PEM格式。
它的描述:

A PEM file is plain text. It contain one or more objects, such as
certificates or keys, which may not all be the same type. Each object
is delimited by lines similar to “—–BEGIN …—–” and “—–END …—–”. Data
that is not between such lines is ignored, and is sometimes used for
comments, or for a human-readable dump of the encoded data.

对比下来:DER就是密钥二进制格式,DEM就是编码后的明文格式。

谢谢大家,有问题大家评论指出。配图也是自己花心思画出来的,希望能帮到大家。

发布了13 篇原创文章 · 获赞 3 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/shanglanxin/article/details/105243927
今日推荐