0%

iOS 打包预备

做 iOS 开发的都知道,打包必需准备好 证书配置文件;没有这两个,将无法打包给别人测试或者上传 App Store

那什么是证书?什么是配置文件呢?要了解这两个东西,先来了解一下其原理。

签名

我们知道,数据在传输过程中,安全性很重要;接收方怎么判断接收到的数据是 完整的 并且是 合法的 呢?

  1. 完整性:是指数据自发送方发出后,在到达接收方的过程当中未发生任何改动、丢失。
  2. 合法性:是指 接收方 接收到的数据是来自可信赖的 发送方

MD5消息摘要算法

MD5 消息摘要算法(MD5 Message-Digest Algorithm):是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

MD5 摘要

完整性

发送方通过 MD5 算法 对数据生成 摘要(Digest),然后把数据和摘要一起传输;接收方在接收到数据之后,通过同样的 MD5 算法对数据部分生成摘要,再通过对比接收的摘要是否一致来判断数据是否完整。
数据完整性

对称加密

对称加密(Symmetric-key algorithm):是在 加密解密 时使用相同的密钥,或是使用两个可以简单地相互推算的密钥的一种算法。

对称加密

非对称加密

非对称加密(Asymmetric-key algorithm):是需要两个秘钥,一个是公开秘钥,另一个是私有秘钥;使用其中一个 秘钥进行加密,加密后的密文只能用对应的 另一个 秘钥进行解密的一种算法。

非对称加密

合法性

发送方 使用非对称加密算法中的一个秘钥对数据进行加密,接收方 使用对应的另一个秘钥对接收到的数据进行解密,如果可以解密,则认为这数据是合法的。(理论上:对称加密也是可以的。)
数据合法性

数字签名

数字签名(Digital Signature):通常定义两种互补的运算,一个用于签名,另一个用于验证。

常见的数字签名形式:

  1. 发送方通过 MD5 算法 对数据生成 摘要,然后使用 非对称加密算法 其中一个秘钥对摘要进行加密得到 签名,之后将数据和签名一起传输;
  2. 接收方在接收到数据之后,使用对应的另一个秘钥对签名进行解密得到摘要,验证数据的合法性,然后再对数据通过 MD5 算法 生成摘要,对比解密得到的摘要,验证数据的完整性。
    数字签名

由此可见 数字签名 对数据的安全传输提供了有力的保障。但是,这样的保障是有前提的,那就是必需保证 发送方的公钥是绝对安全的。要不然,伪造公钥的第三方,可以发送 病毒数据 给接收方,而接收方却使用 的公钥,错误验证了 病毒数据 是 “完整且是可信赖” 的,这样的后果将不堪设想。

由此可见,保障 公钥 的安全是多么的重要;但是怎么保证发送方公钥的安全呢?这就需要 数字证书 来保障了。

证书

数字证书(Digital Certificate):是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在 Internet 上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的。

数字证书认证机构

数字证书认证机构(Certificate Authority,缩写为CA):是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

通常的做法是:

  1. 发送方将 公钥 交给 “Internet” 可信任的 数字证书认证机构,然后该机构利用非对称加密算法用 CA的私钥 对发送方的公钥和一些相关信息(如:有效期、发送方基本信息等)进行加密,得到 证书,之后将数据、签名和证书一起传输;
  2. 接收方接收到数据之后,对证书部分使用该机构对应的 CA的公钥 进行解密得到 发送方公钥,之后利用该公钥对签名进行解密验证其合法性和完整性。
    数字证书

由此可知道,在网络上安全的传输数据,一般需要两对密钥:发送方公私钥 以及 CA 的公私钥

iOS 签名认证

我们知道,在 Apple 的生态圈中,安装的任何软件都是需要经过 Apple 认证才被允许安装的。那么怎么对 iOS 平台的 APP 进行安全认证呢?

其大致流程如下:

  1. 在 maxOS 本地生成一对秘钥
  2. 上传 公钥CA(Apple 开发者中心)申请数字证书;
  3. 安装数字证书,此时在钥匙串中会存在一个证书以及该证书对应的本地的私钥;
  4. iOS APP 打包时,Xcode 利用本地的私钥对 APP 进行签名;
  5. 将证书、签名 和 APP 上传 App Store(或给测试人员);
  6. iOS 设备安装 APP 时,使用设备内置的(CA)公钥解密证书,进而对该 APP 进行验证其安全性和完整性。

iOS签名认证

小结

说了这么久,那到底什么是 iOS 证书配置文件 呢?

  1. iOS 证书:就是 iOS 开发者将 macOS 本地的公钥 上传至 Apple 开发者中心,通过 CA私钥macOS 公钥 和开发者的一些信息进行加密得到的数字证书。
  2. iOS 配置文件(Provisioning Profile):是包含了对应的证书、开发组名、组内设备、应用 ID 以及一些能力等配置信息的文件。

参考

  1. 如何理解 iOS 的签名证书机制
  2. What is a Digital Signature?