按:本文来自盘古团队,雷锋网已获授权。
最近闹的沸沸扬扬的FBI vs Apple的事件,期间经历了FBI在法庭上要求苹果开发通用的破解锁屏密码的程序(并非媒体所传的后门), 苹果发布iOS 9.3,FBI要求查看iOS源代码到最后苹果威胁要在iCloud中用点对点加密代替现在的Master Key方案,最终该事件在前几天尘埃落定。据传言是在某个神秘选手的帮忙下,FBI终于解开了那台iPhone 5C手机。
最近的媒体传闻都是说苹果的锁屏密码多么难破解, 神秘选手技术多么厉害, 其实据我们分析, FBI这一次只是运气好, 碰到的是一台iPhone 5C, 如果这台设备是iPhone 5S的话, 那么很大可能还要通过法律手段。
苹果的锁屏密码到底有多么难破呢?为什么说这一次说FBI是幸运的?对于我们普通用户来说有什么影响?
请看我们对苹果数据加密机制以及锁屏密码保护机制的技术分析。
iOS上哪些数据做了加密?
首先,iOS整个磁盘是全盘加密的,解密的EMF Key (file-system master encryption key)保存在闪存中1号扇区的可安全擦除区域(擦除后无法恢复,并且支持远程擦除),该key对每台设备都是唯一,并且会在数据擦除时销毁;其次,在磁盘之上的文件系统的内容也是加密的, 在每个文件创建的时候会随机生成针对每个文件的Pre-File Key,通过这个Pre-File Key对文件中的内容进行加密保护,并且苹果又为此设计了Class Key来对Pre-File Key进行保护。苹果设计A-F等各个不同的保护级别的Class Key,每个级别分别对应了密钥生成和销毁的时机,该级别可以通过数据保护的API来指定。默认设备上的信息,通讯录,邮件等都指定了iOS数据保护功能,而常见的几个级别分别是:
全面保护(Class A)
数据保护最为严格的级别,系统解锁后才能够解锁解密的密钥,并且在锁定以后丢弃该密钥。
未打开文件保护(Class B)
数据保护较为严格的级别,通过密钥包中的Class Key进行协商生成公私钥,文件一但解锁后即使系统锁屏仍然可以访问,直到文件句柄被关闭。
首次认证前保护(Class C)
数据保护较为严格的级别,在系统启动时第一次输入密码时解锁解密的密钥,并且在系统关闭时丢弃密钥。
无数据保护(Class D)
没有指定数据保护,但这不意味着文件没有加密保护,对于没有设置数据保护的其他所有文件,iOS中用一个DKey(Device Key)进行保护。该Key设备唯一,并且保存在闪存的可安全擦除区域。
从上述机制我们可以看出苹果对iOS数据保护的整个设计框架是相当完善的,结合硬件并且通过多重保护机制来防止各种物理手段上对设备的数据破解。
锁屏密码(Passcode)的作用
假设把每个文件的加密看作为上了一道锁的话,那么对应的开锁的钥匙就存放在系统密钥包里面,而锁屏密码除了防止用户进入系统桌面之外,更重要的角色就是利用密码对系统密钥包进行额外的加密保护。很多人对锁屏密码理解的一个误区,就是锁屏密码只是物理手段上防止进入手机的一个保护,但实际上,用户在第一次设置锁屏密码的时候,锁屏密码会结合硬件加密引擎生成一个叫做Passcode Key的密钥,通过这个密钥对保存在密钥包中的各个钥匙(Class Key)进行加密保护。锁屏密码不会以其他加密的形式保存在设备上,用户在解锁的时候,会直接用输入的密码生成Passcode Key对密钥包中的Class Key解密,解密失败代表用户密码错误。
从苹果的数据加密和锁屏密码的保护机制来看,直接拆除存储芯片并对其进行文件读写操作是不可能的。
破解Passcode Key的手段
Passcode Key是用户输入的passcode结合系统硬件的加密引擎以及PBKDF2(Password-Based Key Derivation Function)算法生成的。PBKDF2 的基本原理是通过一个伪随机函数,把明文和一个盐值及加密重复次数作为输入参数,然后重复进行运算,并最终产生密钥。重复运算的会使得暴力破解的成本变得很高,而硬件key及盐值的添加基本上断绝了通过“彩虹表”攻击的可能 。
由于硬件加密引擎的Key无法提取,所以 只能在目标的机器上运行暴力破解程序进行破解,假设用户的密码设置的足够复杂的话,那么破解的周期就会变得非常久。
在FBI这个案例中,由于嫌犯可能开启了输错10次密码自动擦除设备的选项,一旦暴力猜测程序连续10次输入错误的密码,设备上的所有内容就会擦除掉。一旦触发数据擦除,苹果会首先对可安全擦除区域进行擦除,物理方式上即使能够恢复大部分加密数据,但是却无法恢复可安全擦除区域中的数据,因为大部分的解密密钥都保存在这个区域中,例如能够解开系统密钥包的二进制数据的BAG1 Key。
后续苹果为了封堵各种暴力猜测Passcode的方法,在64位设备的Secure Enclave中增加了定时器,针对尝试密码的错误次数,增加尝试的延时,即使断电重启也无法解决。
历史上曾经出现过的破解方法
早期的A4及更老的芯片(iPhone4之前的设备包括iPhone4)存在bootrom漏洞,通过bootrom中的硬件漏洞获取设备的shell然后运行暴力破解程序。[A4后面的芯片目前没有公开的bootrom漏洞]
iOS7中存在利用外接键盘可以暴力破解密码,甚至停用的设备也可以破解的漏洞。[该漏洞已经在iOS8中修复]
iOS8的早期几个版本中存在密码尝试失败立即断电并不会增加错误计数的漏洞。[该漏洞已经修复]
FBI是怎么破解这台手机的?
FBI要想要破解的这台手机是一台iPhone 5C并且运行着iOS 9,从硬件的角度上来说这是一台32位的设备(没有Secure Enclave),所以我们觉得相对可能的几个方案是(第三种是可能性最高的):
通过未公开的bootrom/iboot漏洞来获得系统的权限,然后通过修补内核的方式去绕过软件的错误计数来进行暴力破解密码。
使用未公开的暴力破解绕过错误计数的漏洞(类似曾经出现过的强制断电绕过的漏洞)
事先通过物理方式先对手机上闪存的数据进行克隆,由于32位系统不支持在Secure Enclave做硬件的计时和计数,可以通过类似USB外接键盘进行暴力猜测,每当猜测到9次左右的时候,再通过物理方式用克隆的数据对手机进行数据恢复,这样就避免了数据被擦除的尴尬。
通过摄像头追终嫌疑人的生活轨迹并且分析,比如摄像头刚好拍摄到嫌疑人在星巴克解锁手机,那么就可以通过图片分析的手段来判断用户输入的锁屏密码是什么。
为什么说FBI是幸运的?
如果这是一台64位的设备(拥有Secure Enclave),第三方即使拥有bootrom级别的漏洞都不可能对设备进行暴力破解, 除非在找到Secure Enclave的漏洞才有可能对设备进行暴力破解, 目前来看这种可能性微乎其微。这种情况下也许走司法程序是个更容易的方法。
那么苹果是否还有弱点?
从设备上的保护力度来看,苹果做的这套保护架构在没有类似bootrom漏洞之类的大杀器几乎很难去破解,那么是否有弱点?答案是肯定有的。
由于苹果在新的系统上引入了Touch ID来作为一个快捷输入passcode的方式,在设备已经输入过正确的解锁密码的情况下,并且设备解锁的时间在48小时之内,其实还是可以通过克隆指纹的方式对设备进行解锁。
其次就是当用户启用了iCloud数据备份的情况下,苹果在备份加密数据的同时,还对密钥包使用非对称密钥加密的方式加密后保存在苹果的iCloud服务器上,并且苹果拥有Master Key进行解密。
作为普通用户我应该怎么做?
作为一个普通用户来说,其实不用担心太多。因为你的数据还没敏感到苹果会来审查,你更应该关心的是注册Apple ID的邮件服务商是否足够安全,Apple ID的密码是否太简单,记得开启Apple ID两步认证哦。
如果你自认是一个对数据保护有极高要求的用户,那么建议你不要打开iCloud数据备份,不要设置指纹,锁屏密码最好不要设置数字的密码。
注:点击进入盘古原文《FBI vs Apple:FBI是幸运的》。