阅读 463

iOS双层签名

1. 角色

  • mac电脑,私钥M自己用,公钥M给别人。
  • iphone手机,iOS系统有公钥A
  • 苹果服务器,有私钥A

2. 流程图

3.流程步骤

  1. Mac电脑在创建CSR文件时会生成非对称加密算法的一对公私钥M,私钥M是存放在本地钥匙串。
  2. 开发者通过CSR文件申请证书,会把公钥M传给苹果服务器。
  3. 苹果服务器会用私钥A对公钥M进行非对称加密,进行了一次签名,把证书传给开发者,这证书就是我们平时的开发证书或者生产证书。拿到证书后,钥匙串访问会把证书和私钥M进行关联,就是我们的P12文件。这就是为什么别的开发者想公用一个证书,需要我们传p12文件过去,就是因为p12文件包含了私钥M。
  4. 生成一个APP时,Xcode会用本地的私钥M对这个APP进行签名,同时把证书放到ipa包上,进行了二次签名。
  5. 苹果手机安装ipa包,拿到证书。
  6. 苹果手机用公钥A对证书进行验证,这是第一次验证,对应的是第3点。
  7. 通过第一次验证,可以拿到拿到证书的公钥M。
  8. 用公钥M验证APP的签名,对应的是第4点,这是第二次验证。

4.知识点

  • RSA:非对称加密,一种,公钥加密数据,私钥解密数据,用于加密使用。另外一种,私钥加密数据,公钥解密数据,用来签名使用。
  • 数字签名:对原值数字进行HASH,然后再RSA加密。
  • HASH:散列函数,如MD5,SHA1/512,HMAC,相同数据加密的结果是一样的,不同数据的加密长度是一定的,如MD5为32位。
  • DES,3DES,AES为对称加密算法,加解密过程为明文-加密-密文,密文-解密-明文。一般加密过后的数据会用base64进行显示。

5.结论

苹果通过双层验证,来验证这个app是否是苹果允许安装的app。简单的流程就和上面一样,当然实际上还有描述文件等等这些。

文章分类
iOS
文章标签