iOS的安全机制

一、安全启动

  • BootROM:BootROM是一段不可更改的代码,也就是硬件信任根,其中包含Apple Root CA的公钥,BootROM会使用该公钥验证iBoot是否经过Apple签名。对于S1、A9以及更早版本的设备,BootROM还会验证LLB,然后才会验证加载iBoot。
    • 验证失败:拒绝启动,设备进入DFU模式。
    • 验证成功:加载iBoot,并将控制权交出。
  • iBoot是苹果设备的Bootloader,主要任务是使用类似的方法对iOS Kernel进行签名认证。
    • 验证失败:拒绝启动,设备进入iTunes恢复模式
    • 验证成功:加载iOS内核,控制权交出,设备启动。

二、软件更新

  • iOS软件更新的安装渠道:iTunes安装、OTA安装。可以使用macOS Server进行内容缓存,以加快OTA下载速度,但是安装过程中仍需要访问Apple服务器。
  • 系统软件授权:
    • iOS升级过程中,将连接到Apple安装授权服务器,并发送以下数据:要安装的安装包各部分(例如,iBoot、内核以及操作系统映像)的加密测量值列表(Hash值)、一个随机数以及设备的唯一ID(ECID)。
    • 授权服务器将提供的测量值列表与允许安装的版本进行比较,如果找到匹配项,就会将ECID添加到测量值并对结果进行签名,这样就保证了升级的版本和设备的对应,并且阻止将旧版本的iOS从一个设备拷贝到另一个设备。
    • 网上所谓的对于不同机型的允许刷机的版本列表,就是指的这个允许安装的版本的测量值列表。

三、

  • 未完待续