应用签名原理初探(上)

2019-08-21  本文已影响0人  大王叫我来巡山丨

1.简单的签名认证原理

App的认证是通过RSA(非对称加密)+应用的Hash值进行数字签名认证!
APP Store 中存有私钥,手机中存放公钥!当我们打包到苹果商店时,实际上App Store获取了应用包的Hash值,然后用私钥加密(也叫数字签名),当我们下载App时,IPA中包含签名等信息会一起下载到手机上,用手机上的公钥去解密签名,然后得到hash值,手机本身也会去获取应用的hash值,然后对比,如果一样则认为我们的APP没有篡改过,是从官方下载的,然后开始安装!

但是安装包可以不需要上传到App Store,也可以直接安装到手机上!

此时苹果为了保证系统的安全性,又必须对安装的APP有绝对的控制权

为了实现这些需求,iOS签名的复杂度也就开始增加了,苹果这里给出的方案是双层签名!

2.双向签名

大体流程如图:


双向签名流程图.png

但是虽然经过了上面的过程,已经可以保证开发者的认证,和程序的安全性了。 但是,你要知道iOS的程序,主要渠道是要 通过APP Store才能分发到用户设备的,如果只有上述的过程,那岂不是只要申请了一个证书,就可以安装到所有 iOS设备了?

苹果为了解决应用滥用的问题,所以苹果又加了两个限制!

  1. 此时苹果还想控制App里面的iCloud/PUSH/后台运行/调试器附加这些权限,所以苹果把这些权限开关统一称为Entitlements(权限文件)这个文件放在了描述文件文件中.,描述文件是在AppleDevelop网站创建的(在Xcode中填上AppleID它会代办创建),Xcode运行时会打包进入APP内.
  2. 所以我们使用CSR申请证书时,我们还要申请一个描述文件!在开发时,编译完一个 APP 后,用本地的私钥M对这个APP进行签名,同时把从苹果服务器得到的 Provisioning Profile 文件打包进APP里,因为有了这个描述文件中的一些必要信息。把 APP 安装到手机上后,系统进行验证,避免了滥用等问题!

如下图:


描述文件.png

其他:
相应指令:security cms -D -i

上一篇 下一篇

猜你喜欢

热点阅读