3.9. iOS

3.9.1. 系统结构

所有iOS设备中,系统与硬件都高度集成,从系统启动、系统更新、应用的安装、应用的运行时等多个方面来保全系统的安全,具体包括以下几个限制。

所有iOS设备在处理器内都集成有一段名为Boot Room的代码,此代码被烧制到处理其内的一块存储上,并且只读,可以认为是完全可信的。系统启动时,Boot Room通过苹果的Apple Root CA Public证书对Low-Level BootLoader进行验证,如果通过验证,Low-Level BootLoader将运行iBoot,较Low-Level Bootloader高层次的Bootloader,如果这一步也通过,那么iBoot将运行iOS的内核, XNU,系统开始运行。以上这几个步骤任一步骤无法通过,都将导致系统无法启动,这样,处理期内烧制的Boot Room保证了iOS系统只能在Apple自家设备上运行,而这些设备也将无法运行iOS之外的系统。

iOS设备的系统升级之后是不允许降级的。这样做的好处是系统的安全等级只会越来越高,二不会出现由于系统降级,已修复安全风险又暴露出来的问题。iOS系统在升级过程需要联网进行验证,系统升级之前,设备会将LLB、iBoot、内核、镜像,外加一个随机的不可重复的值发送到苹果的服务器进行验证,服务器端对所有这些进行验证,如果通过验证,将会返回一个通过的结果,结果加入了与设备唯一相关的ECID。这样做的好处是此值是无法重用的,只能对应与一台设备,且只能使用一次。通过这种机制,保证了系统升级过程都是符合苹果要求的。

所有运行在iOS上的代码都是需要签名的。苹果自带应用已经打上了苹果的签名,而第三方应用,则需要开发者账号进行签名,而开发者账号都是通过苹果官方实名审核的账号,从开发者源头上控制了程序的安全性,也就是说,系统内所有运行的程序都是可信的,且知道来源的。

运行与iOS系统的第三方软件都是运行与sandbox之内,每个第三方程序都有自己的独占的路径,其只能访问独占路境内的内容,其他程序的文件一般情况下无法访问,如果要访问,只能通过苹果官方API,而不能自行操作文件。连个应用之间无法共享文件,如要互相通信,只能通过URL Schema或shared key chain。另外,每个应用都有其运行权限,不同权限可进行的操作是不同的,将应用的权限限制在其需要的范围内,而不赋予额外的权限。

3.9.2. 数据的加密与保护

3.9.2.1. 强制加密

而iOS内所有用户数据都是强制加密的,加密功能不能关闭。所以,苹果的AES加解密引擎都是硬件级的,位于存储与系统之间的DMA内,这样提供了较高的效率与性能。加密解密使用的KEY主要来自unique ID(UID)以及Group ID(gid),UID与唯一设备相关,GID与某种特定型号的CPU相关,一台设备的UID及GID全部被烧制到芯片内部,除了AES加密引擎,没有其他方法直接读取,能看到的只有使用UID及GID加密后的数据。这样,不同设备的加密结果是不同的,同一套密文只能在加密的机器上进行解密。除了GID及UID,其他加密使用的KEY全部来自系统自带的随机数生成器,具体使用的算法为Yarrow。

3.9.2.2. 数据保护

iOS提供了名为File Data Protection的数据保护方法。所有文件在加密时使用的key都是不同的,这些key被称作的prefile key,存储于metafile内。prefile的访问需要进行解密的key,这些key包括:

  1. File System Key: 系统安装时生成的一个随机的key

  2. Class Key,这个key与UID相关,如果用户设置了锁屏密码,那么此Class Key将的来源也包括锁屏密码。

只有有了这两个key,一个文件的prefilekey才能被读取出来,此加密的文件才能被解密,也就是说,当锁屏之后,或存储位于不同的设备之上,数据是无法读取的。

File System Key还有一个重要作用,远程删除数据时,其实不用真正的删除磁盘上的数据,只要删除此key,那么所有文件的prefile key 将不能访问,也就是所有文件将无法读取。

3.9.2.3. 锁屏密码

锁屏密码为了防止暴力破解,增加了三个限制:

  1. 与uid绑定,只能在该密码生成的设备上进行尝试,

  2. 两次尝试的间隔被强制设成80ms,机器暴力破解的时间将大大加长

  3. 增加选项,如果连续输错次数超过10次,可以选择删除设备内数据

3.9.2.4. Keychain

应用的小量极敏感数据,例如密码,最好存储与KeyChain内,而不是应用自己管理。

3.9.3. 网络安全

除了本地数据的保护,苹果还对数据的传输提供了多种多样的保护机制。苹果提供了可靠的、可信以及加密的连接。因为iOS平台限制了同时监听的端口的数量,并将那些不必要的网络组建,例如telnet,shell以及web server等,所以不需要防火墙的保护。

3.9.4. 设备权限控制

针对企业用户,iOS系统提供了多样的安全策略,管理原可以根据需求对设备的安全特性进行多样化的设置,包括密码策略,数据保护策略,应用使用策略,远程数据删除等功能,给企业级用户提供了高安全性以及极大的灵活性。