首先是关于设备启动时的理解,只是简单描述一下:安全启动链(IOS启动过程):系统启动->应用程序处理器->boot ROM(只读存储器)->加载LLB(low level bootloader)只限于(IOS9以下)->定位并加载iboot->运行IOS内核。
关于苹果A系列SOC启动时的问题
IOS SOC有一专门的区域放置了BOOTROM,被Apple称为SecureROM,这部分是在电源键被按下,设备上电的时候最初加载的代码(加载bootrom时未加密,其余步骤都是加密的)。SecureROM检查下一级的low level bootloader(LLB), BootLoader(引导加载器/引导加载程序)。BootLoader process指的是从计算机通电的那一瞬间到CPU开始执行操作系统代码时的整个过程. 在这个非常初期的阶段中,CPU执行标准的启动代码,这部分代码需要对硬件设备进行探测,寻找最有可能启动的操作系统并且根据用户定义的参数启动这个操作系统。BootLoader会在任何操作系统运行之前执行。大部分的操作系统用的都是通用的引导加载器(BootLoader)。iOS使用的主引导加载器则是Apple自研开发的iBoot。
LLB负责定位并加载iBoot,LLb是软件,不属于设备,是被加密的文件。
加载iboot,iboot是引导过程中的主加载器,它负责定位、准备并加载kernelCache,iboot可直接访问ios文件系统,然后运行IOS内核
指纹模块secure Enclave在启动时被密码锁定?所以重启设备的时候需要输入密码?解释不是很正确。
Secure Enclave称为安全隔区。安全隔离区运行的是apple定制版的L4微内核,此微内核由apple签名,作为IOS启动链的的一部分作为验证(这里验证安全隔区是不是就是为了验证安全隔区是否被篡改,如果验证通过,即安全隔区未被篡改,为什么不能直接用呢)。
Secure Enclave包含了专用的Secure Enclave bootROM,与应用程序处理器BOOTROM相似,Secure Enclave boot ROM是不可变的代码,可为Secure Enclave建立信任的硬件根。
设备启动时,Secure Enclave BootRom会生成一个临时密钥,此密钥与UID(Secure Enclave在制造过程中都被分配了UID,IOS不知道UID号码)配合使用。并对存储空间中属于Secure Enclave的部分进行加密,除了A7以外,Secure Enclave的内存也使用临时密钥进行认证,