近年来,智能手机已成为越来越重要的用于存储个人敏感数据的设备,从照片和凭据到信用卡和医疗记录。至关重要的是,保护此信息并仅提供对经过身份验证的真实用户的访问权限至关重要。智能手机供应商已经特别注意通过各种软件和硬件安全功能来保护用户数据,这些功能包括代码签名,经过身份验证的引导链(boot chain),专用协处理器以及带有硬件融合密钥的集成加密引擎。尽管存在这些安全措施,但攻击者过去已经成功突破了各种软件保护措施,仅使硬件成为攻击者和用户数据之间的最后屏障。在这项工作中,基于现有软件漏洞报告了iPhone上的物理侧信道分析(SCA)攻击,目的是提取与硬件融合的设备特定的用户标识符(UID)密钥。有了此密钥,攻击者就可以利用图形处理单元(GPU)集群上的密钥导出函数(KDF)的优化且可扩展的实现,对用户密码进行离线暴破攻击。密码泄露后,攻击者就可以完全访问设备上以及可能存储在云中的所有用户数据。
0x01 Introduction
在过去的十年中,智能手机彻底改变了人们的沟通方式,同时极大地增加了在设备上收集或存储或上传到云中的与用户相关的数据量。随着物联网的发展和日常生活设备之间互连的增强,这种趋势得到了进一步加强。智能手机已成为包括信用卡在内的各种智能卡的替代品;它们处理与健康相关的数据,并充当各种应用程序中的访问密钥。对智能手机的安全性和数据保护机的破坏制会极大地影响用户隐私,用户身份验证起着关键作用,因为其侧信道将导致对设备的完全控制。尽管多年来引入了基于生物特征的身份验证方法,例如指纹匹配或面部识别,但是如果这些方法失败,则使用(数字)密码通常仍然是备用选项。苹果的iPhone紧随三星和华为设备之后,成为全球销量最高的智能手机,在2020年第一季度的市场份额为14%。在iPhone 5s中引入了Touch ID,随后又为iPhone X引入了Face ID,Apple已开始在其设备中集成基于生物识别的用户身份验证方法,而设置密码仍然是启用Touch ID或Face ID的前提条件。在较早的系统版本中,默认选项为4位数字密码,但随着iOS 9的发布,其长度已扩展为包含6位数字。不过,iOS始终提供一个选项,用于手动设置任意长度(≥4)的数字/字母数字密码。应该指出,始终可以-甚至在需要冷启动的情况下-使用密码而不是配置的生物特征认证方法来解锁iPhone。因此,密码仍然是用户身份验证的默认后备解决方案,使攻击者可以选择使用此方法,以恶意获取对设备系统和用户数据的访问权限。
当用户输入密码时,它会与称为用户标识符(UID)的特定于设备的密钥绑定在一起。 UID是每个设备唯一的加密密钥,在制造过程中会融合到硬件中。然后,运行上述功能的结果将用于解密/加密存储在设备上的用户数据。密码与UID密钥之间的绑定限制了在(相同)设备上执行暴力破解尝试。另外,上述加密功能的单次执行被设计为花费约80毫秒,从而导致在设备上强制搜索6位数字密码的预期时间超过22小时。
当前的方法中,由于PIN验证与特定的手机相关,因此请尝试通过常见PIN的有序列表来优化用户密码的设备上搜索。通过利用SCA攻击,本文证明了暴力破解与特定iPhone的结合可以被完全利用,从而显着提高了密码恢复的速度。
自从首次提出将SCA攻击作为对密码实施的威胁以来,研究人员和从业人员都报告说,成功的密钥恢复尝试主要是在他们自己设计的设备上进行的。当通过针对现实世界的设备显示出非常有效的效果时,即使在黑盒场景中,攻击者也不知道有关实现的详细信息,这种情况也发生了变化。例如,SCA攻击可以被用来完全破坏多家汽车制造商采用的KeeLoq技术的远程无钥匙进入系统。另一个例子表明,通过SCA可以恢复Yubikey 2的密钥(用于两次身份验证的一次性密码(OTP)所有者令牌)–即使返回了有效的OTP,也可以恶意生成有效的OTP。在2011年,对非接触式智能卡DESFireMF3ICD40进行了功率分析攻击,从而完全恢复了其112位密钥。由于该智能卡当时已在全球多个大型支付和公共交通系统中使用(例如,捷克铁路,澳大利亚myki卡,旧金山的Clippercard),展示了SCA攻击在现实场景中的相关性。此外,在英特尔AES-NI密码指令集扩展环境中通过在靠近容纳英特尔酷睿i7 Ivy Bridge微处理器的主板上的两个电容器附近放置一个磁场探头的方式可以恢复AES密钥。
对于SCA测量,攻击者显然需要物理访问该设备。但是此后就不必再拥有iPhone了,因为可以转储存储空间并且完全离线进行密码破解。本文的攻击的性能如下,即通过两个NVIDIA RTX 2080 TI GPU进行攻击,对设备上的8位数字密码进行暴力破解,可以将破解时间从92天减少到不到3小时。
0x02 Attack at a Glance
攻击过程是基于以下假设的:通过软件利用即BootROM利用来执行代码执行。然后,攻击者可以对AES引擎进行oracle访问,该AES引擎被实现为CPU上的专用硬件协处理器,并且可以查询任意数据,以选择的明文SCA攻击进行加密。对于被测设备,必要的BootROM利用已公开可用。
(1)攻击场景
首先,攻击者恶意获得对受害者设备的物理访问权。在不对系统进行任何永久性修改的情况下,她随后启动了一个提供SSH访问权限的自定义虚拟磁盘,并从设备上下载了系统Keybag。此外,她还进行了一次SCA攻击以提取设备特定的UID密钥。在进行身份验证时,UID密钥与用户的密码绑定在一起,以便得出所谓的密码密钥,后者又用于从系统Keybag中解开其他密钥。然后可以将其用于解锁在文件系统上加密存储的单个文件。利用现有的漏洞,本文表明攻击者可以轻松地从设备中提取此文件-无需在系统上进行任何永久更改-与UID密钥一起,可以通过离线暴力搜索来恢复用户的密码。成功恢复密码后,系统可以正常启动,攻击者也可以简单地登录设备,从而完全访问所有数据,例如通过运行iTunes备份。由于对主板的必要修改仅包括去除CPU的金属屏蔽(可以简单地将其解开并夹回),因此可以很容易地将它们颠倒过来,并且在遭受攻击后仍可以正常操作手机,从而使受害者没有直接机会进行操作识别任何恶意活动。
除了基于EM的攻击之外,执行的功率分析攻击还要求从板上拆卸电感器和电容器,但是即使在这种情况下,也可以隐藏修改,尽管需要更多的精力和精力。可以肯定的是,攻击过程不仅需要物理访问和硬件的较小改动,而且还需要大量时间才能获得必要的测量值(在例子中,恢复UID总共花费了三周的时间)。但是可以想到高度相关的攻击方案,在这种情况下攻击者可以花时间进行此攻击,并且值得这样做。除了查找或窃取设备并提取所有敏感的用户数据外,攻击者还可能会经营一个恶意手机店,在将手机交给客户之前,她会提前提取UID密钥,并可能将其出售给恶意第三方。实际上,对于8位或更多位数的密码,达到平衡点时,执行物理攻击所花费的时间少于离线进行时所花费的时间,而不是设备上的暴力搜索。
在这项工作中介绍了对iPhone 4的上述攻击;但是,可以使用相同的设置(稍有更改)来收集SCA测量值并从iPhone 4s和iPhone 5 / 5c中提取密钥。进一步地,可以对iPhone X / iPhone 8之前的设备进行类似的研究。实际上,由于这种较新的设备存在两个众所周知的漏洞,可能有可能获得对相关AES引擎的oracle访问并收集攻击所需的SCA测量值。但是,由于本研究实际上还没有尝试过此类实验,因此无法对新型设备上的攻击的成功/困难作出任何声明,尤其是考虑到据报道新型iPhone包含DPA对策的情况。
(2)高级描述
首先,执行SHA-1 Image Segment Overflow(SHAtter)漏洞以禁用初始安全启动过程中的签名检查,从而启用自定义代码的执行。然后,将集成的有效负载部署到第二阶段的Bootloader中,从而能够查询将任意数量的选定数据发送到AES硬件引擎以进行加密和解密,并将通用输入/输出(GPIO)引脚之一(例如,音量减小按钮)重新配置为触发SCA测量的输出。通过执行相关功率分析(CPA),利用记录的SCA迹线与AES加密的秘密中间值之间的相关性,允许攻击者恢复完整的256位UID密钥。本文证明拥有此密钥可以通过在多个GPU上进行并行暴力搜索来离线恢复用户密码,恢复密码又可以解密先前存储在设备上的所有用户文件,并且有可能(如果用户登录到设备上的iCloud)数据存储在用户的iCloud上。
0x03 SCA Attacks on iPhone
(1)iPhone准备
为了收集SCA测量值,对iPhone应用了一组非永久性的软硬件修改。这些修改将在下面描述。
A. 硬件准备
首先,如下图拆解了iPhone,从外壳上拆下了它的主板,并断开了所有外围设备的连接,以便获得对CPU的访问权限。之后,移除了保护CPU的金属屏蔽层,从而可以将EM探针直接放置在芯片顶部。接下来,使用PodBreakout 连接器和FT232RL USB至串行分线板构建了通用异步接收器(UART)连接器。这产生了一个带有两根USB线的连接器,一根用于与iPhone和一个用于将UART连接到个人计算机(PC)的设备。
此外,从外壳上卸下了音量按钮,并将电线连接到了音量减小按钮,以便于操作。这样做是为了向CPU提供快速且低延迟的接口,因为这些按钮直接连接到SoCsGPIO引脚。之后卸下电池连接器,从而能够在设置为4.0 V(略高于3.7 V的正常电源电压)的外部DC电源的情况下运行主板,从而在测量期间平均消耗约100 mA的电流。请注意,这是一个临时选择,预计不会影响攻击的结果,因为相关的IC是通过进一步的稳压器供电的。
B.执行有效载荷
由于需要执行任意代码来执行测量,因此使用了publicexploits。下文描述了在第二阶段引导加载程序中启用自定义有效负载执行所需的关键步骤。首先,iPhone被迫以DFU模式启动。因此,必须首先使用USB线将其连接到PC。为了进入DFU模式,同时按下电源按钮和主页按钮10秒钟。松开电源按钮后,仍应继续按住主页按钮15秒钟。成功进入DFU模式后,屏幕将保持黑色。iPhone进入DFU模式后,使用SHAtter漏洞禁用了BootROM中的签名检查。为此利用了ipwndfu ,这是一个Python工具,可为多个iOS设备提供BootROM漏洞利用。随后,使用irecovery(一种用于通过USB与iOS引导加载程序进行通信的开源工具)来传输已修补的第一阶段和第二阶段的引导加载程序。
应用的补丁会禁用第一阶段引导加载程序中的签名检查,从而能够执行修改后的第二阶段引导加载程序。在第二阶段的引导加载程序(提供了专用的恢复控制台)中,其中一个命令(即go)被重定向,以强制程序流跳转到加载地址,该加载地址是通过USB上传的数据的存储位置。结果,应用此补丁程序可以在设备上上传并执行自定义有效负载。最后,再次使用irecovery传输自定义有效负载二进制文件,并与第二阶段的引导加载程序恢复控制台进行交互。通过执行先前的patchgo命令,运行了有效载荷。
C.测量有效载荷
在第二阶段引导程序中执行的自定义有效负载使片上AES引擎可以查询所选明文/密文的加密/解密。此外,它使攻击者能够选择AES引擎使用哪个密钥槽(GID,UID或自定义)。在下文中,描述了所插入代码的结构和函数。首先,将降低音量按钮的GPIO接口重新配置为输出端口。这允许通过利用内存映射输入/输出(MMIO)将相应的裸露引脚驱动为高/低电平,即,只需将一个值写入内存中的特定地址。接下来,引导加载程序的内置AES例程,负责与硬件AES引擎进行通信,在加密/解密开始时修补GPIO引脚以将其设置为高电平,并在其终止后立即将其设置为低电平。该配置使能够对裸露的引脚进行标签并检测与AES引擎的活动相关联的时间实例。因此可以轻松地使用选项卡式信号来触发示波器收集SCA测量值。
最后,替换了故障恢复控制台命令以进入自定义测量模式。测量模式是一个自定义函数,该函数首先通过修补yield-function以立即返回来禁用引导加载程序的协同调度程序。随后,它进入无限循环,等待通过UART接收命令并相应地执行其函数。本研究开发了自定义测量模式,以简化SCA测量所需的操作。由于通过UART的通信速度较慢,将测量模式配置为限制UART通信,同时允许收集多个SCA测量值。PC通过UART向iPhone发送一些自定义命令,测量模式相应地配置AES引擎,生成随机输入(明文/密文)并运行AES加密一定次数,最后将校验和发送回PC。在此期间,示波器反复触发并收集SCA迹线。由于PC和iPhone是同步的(通过初始命令),因此PC也会计算随机生成的明文/密文,并将它们与示波器收集的迹线相关联。此过程极大地加快了SCA测量过程。
(2)iPhone A4
本研究的目标设备iPhone 4使用Apple A4 SoC,该产品也用于iPodTouch第四代,iPad第一代和Apple TV第二代。AppleA4提供了制造的32位ARMv7-A CPU。采用三星的45 nm制造,其时钟频率为800 MHz(在iPad情况下为1 GHz),而Package on Package(PoP)则用于提供256 MB随机存取内存(RAM)(对于iPhone 4则为512 MB)。
由于采用了PoP,如上图所示,RAM位于CPU的顶部。实际上,不可能将EM探针放置在CPU表面附近以监视其方向。相反,只能将探针放在封装顶部或芯片旁边的印刷电路板(PCB)上,以测量与裸片周围的配电网络相关的辐射。
(3)测量设置
使用Langer EMV-Technik RF-B 0,3-3 EM探头,其探头的直径为2 mm,可以捕获30 MHz至3 GHz范围内的频率。探头连接到Langer EMV-Technik PA 303 SMA放大器(具有相似的带宽),该放大器将EM信号放大30 dB,然后再通过示波器监视。采用了2.5 GHz带宽的Teledyne LeCroy WaveRunner 8254M来监视信号并记录SCA迹线。这些迹线已经以40 GS / s的采样率采样,这是机器的最大容量。
(4)迹线预处理
上图a显示了500条收集的EM迹线的叠加部分,在此检测到严重的未对准现象,使任何简单的统计分析都变得很复杂。尽管将测量模式配置为在引导加载程序上下文中的单线程内核上运行,但可以清楚地看到,提供的用于指示加密/解密的开始和结束的触发信号并未与AES引擎的活动完全同步。实际上,这意味着在CPU内核上运行的代码无法与协处理器或IO外设同步工作,后者控制用于触发示波器的GPIO引脚。
预处理的一部分试图对齐迹线。在这里,可以得出这样的结论,即未对准通常会成组出现,即,多条迹线移动了相似的偏移量。因此,主要方法是找到这些簇,并通过移动它们使它们粗略地对准一组,以使最强的峰重叠。然后,为获得更细粒度的对齐方式,选择了一个任意参考迹线,并通过适当的时间偏移对齐了其他迹线,以便它们尽可能与参考迹线匹配。使用最小欧几里德距离作为度量来找到两条迹线之间的最佳匹配偏移量。对齐后,大量迹线仍显示出一些嘈杂的峰,超出范围,在执行分析的时间间隔内每当这些峰出现时,还会过滤掉迹线,从而丢弃约20%的迹线。将对齐和滤波过程应用于这500条迹线后的结果如上图b所示。
(5)泄漏评估
首先,当将EM探针任意放置在SoC上时,对对齐的迹线执行了固定对随机t检验。当输入(用于解密功能的密文)在固定值和随机输入之间随机交织时,收集了10,000,000条迹线。
上图a显示了在CBC模式下覆盖AES的8个块解密的时间对应的t值。在迹线的多个部分中可以看到非常大的t值。最值得注意的是,介于0.3 µs和0.6 µs之间的时间段对应于CPU和AES引擎之间通过专用输入/输出(I / O)进行的通信。预计大约1.2 µs,1.4 µs和1.6 µs的块与反向的相似通信(即AES引擎与CPU的通信)有关。假设解密发生在0.8 µs至1.2 µs之间,但仍显示出相当高的值(请参见上图b)。因此集中在这段时间进行攻击。
(6)功率模型
iPhone AES引擎允许为其操作指定用户密钥,因此在已知密钥的情况下搜索合适的电源模型,即,收集了已知基础密钥的迹线。这样由于知道所有密码的中间值,因此可以轻松地检查不同的假设功效模型。根据Apple白皮书中描述如何使用AES引擎的信息,对AES硬件的设计方式做出了某些假设。研究者知道AES引擎需要快速运行,因为在iPhone操作过程中,密钥导出以及文件的加密/解密操作非常频繁,而慢速的AES引擎将导致严重的效率损失。它还应支持使用128位,192位和256位密钥对AES的不同变体进行加密和解密。此外,由于为iPhone设计了数据保护方式,AES密钥经常更改(每个文件都有一个),因此假设采用基于回合的实现方式,因为这是SoC的灵活性,性能和物理面积之间的良好折衷。更准确地说,假设是AES引擎在一个时钟周期内执行一次加密循环。
基于这些假设,考虑了AES解密的不同设计架构,并研究了不同中间值的各种假设模型。实例包括每个回合操作之后的密码状态的汉明权重(HW)(例如,子字节(SB),ShiftRows(SR),AddRoundKey和MixColumns(MC))以及每个上述回合操作之间的连续密码状态之间的汉明距离(HD)。
上图描绘了基于回合的猜测设计架构,通过上述功耗模型,可以观察到其高度相关性。如果以相反的方式(即从上一轮解密开始)进行操作,则将最佳拟合能力模型确定为状态寄存器中存储的连续128位值的HD。寄存器是明文P,倒数第二个是SR◦SB(P⊕K1),因为在本设计体系结构的最后一轮中省略了MixColumns的逆(MC ^(-1))。因此,在最后一次解密中状态寄存器的HD可以写为:
其中第一个回合密钥由K1表示。第二个回合收益率的模型相同:
其中K2表示第二个回合密钥。对于其他密码轮,可以类似地得出相同的模型。请注意,由于专注于解密的最后几轮,因此将方程式写在纯文本上,并使用加密运算代替其反运算。
下图中显示了将80,000,000条经测量和对齐的EM迹线与上述功率模型相关联的结果(当AES引擎的输入被随机选择时)。可以很容易地检测出密码轮,如下图b所示。进一步对跟踪中的所有加密块重复了此过程。如下图c所示,可以清楚地区分执行AES操作的不同时间段。
A.全芯片扫描
找到理想的假设功耗模型后,尝试优化探针在SoC上的位置。将SoC表面(大约7.3平方毫米)划分为25×25个点的网格,在每个点上,收集了150,000条EM迹线。在将每个点的迹线分别对齐后,使用上述HD功率模型针对所有密码轮次和所有解密块估算中间值的相关性。每个斑点的最大相关结果由下图左侧的3D热图显示。如果在某个斑点处出现强信号,则预计相邻位置也将具有相似的相关值。如3D热图所示,最大相关性属于将探针放置在SoC边界处的情况,这确实符合对PoP技术的期望。根据此实验,确定位置(x,y)=(4.1 mm,1.1 mm)是最合适的位置。也检查了其他具有高相关性的点,但是与在选定点处测得的噪声相比,这些位置处的迹线包含更多的噪声。对于密钥恢复攻击,如下所述,将EM探针放在图7右侧所示的位置,并在由随机输入提供AES引擎时收集了500,000,000条迹线。
B.密钥恢复攻击
以上给出的所有结果均基于连续128位密码中间值的HD模型。为了进行攻击,需要考虑较小的部分以降低攻击的复杂性,即能够搜索密钥的一小部分,例如一个字节。这可以通过取相同中间值的字节的HD来轻松实现。更准确地说,参考前面第一个等式,其中通过猜测K1的8位部分,可以估算出相应的8位连续中间值的HD,然后可以恢复第一个128位轮回密钥以字节为单位。
由于底层的AES引擎实现了AES-256功能并且目标UID是256位密钥,因此需要将攻击扩展到另一轮,即上一轮解密之前的轮次。如前面第二个等式中给出的,知道第一轮密钥K1,可以仅通过猜测第二轮密钥K2的8位部分来估计连续的8位值的HD。因此,可以在倒数第二轮进行相同的攻击,即对于K2的每个字节的复杂度为28。
上图显示了在最后一轮或倒数第二轮解密中针对不同密钥字节的几次攻击的结果。值得注意的是,需要大量的对齐迹线来揭示正确的关键猜测。对于某些关键字节,需要大约30,000,000个迹线,而在其他一些情况下,此数目已达到270,000,000。由于AES引擎以CBC模式运行,因此每个记录的EM跟踪都包含一系列单个AES解密;如果一个块未产生可区分的相关性,则考虑使用不同的相关性,这有助于限制所需迹线的数量,因为没有噪声迹线中的所有解密块都会受到影响。
简而言之,进行了三组攻击:一套攻击是已知的密钥(用户提供的密钥),一套是恢复UID密钥的攻击,另一套是揭示GID密钥的攻击。对于每一种导致成功进行密钥恢复的情况,要求的迹线数都不超过300,000,000。这远远超出了有关针对未受保护的密码实现的SCA攻击的文献报道。本研究预测,由于高噪声水平和低信号幅度,该实现要么包含一种差分功率分析(DPA)对策,要么具有大量所需的迹线信息。如前所述,无法将EM探针放置在靠近CPU裸片的位置,并且在测量中遇到了不同的噪声源。尽管如此,本文结果(尽管需要进行大量的测量)实际上证实,即使使用纳米级工艺技术制造并以高时钟频率运行的极其紧凑的嵌入式系统,此类SCA攻击仍可以视为严重威胁。
总之,用于500,000,000EM次测量的纯文本,密文和迹线的数据采集总共花费了大约两周的时间,同时使用具有40个CPU内核,64 GB内存和2NVIDIA RTX 2080的计算机进行所有攻击以完全恢复256位AES密钥。 TI又花了大约一周的时间。请注意,由于在对每台设备进行分析和自然优化测量过程中获得的经验,希望在对同一类型的其他设备进行多次攻击时,所需的时间会缩短。研究者也有信心改进测量设置是可能的,这可以减少这种攻击的数据和时间复杂度。
C.功率 vs EM
鉴于要通过EM测量来恢复AES引擎的密钥需要进行大量的测量,因此很想知道探针和芯片的有效区域之间的距离是否太大,以至于无法以最高的质量捕获辐射信息。由于PoP封装阻止研究者将EM探头放置在与实际AES内核更近的位置,因此决定研究A4处理器的功耗。从概念上讲,功率测量不需要如此接近计算单元的物理距离。因此在A4处理器核心电源的VDD路径中放置了一个1Ω分流电阻。当然,不能通过电池连接器直接访问CPU的核心电源。相反,它是通过降压转换器电路从主电源在PCB上生成的。测量该转换器前面的功耗(即在转换器输入端的主电源中进行测量)将无法成功进行分析,因为其输出侧(即芯片的核心功率)中的任何小瞬时电压降都可以通过快速补偿。内部存储的电荷,只能在其输入上看到转换器的充电周期。因此,在确定了降压转换器电路在PCB上的位置之后,卸下了其电感器,从而有效地切断了核心电源,请参见上图a。之后,在PCB上移除了一个较大的电容器,该电容器以前被确定为用于核心电压的平滑电容器。然后,将两个线焊接到(现在已不存在的)平滑电容器的SMD焊盘上,并通过一个1.35 V的外部直流电源通过这些焊盘为A4处理器的内核供电,见上图b。
请注意,上图显示了两种不同的设备,修改前后的电路板不是同一块。尽管在移除过程中销毁了Buck转换器的电感,但是通常有可能对PCB进行两次足够仔细的调整,以保持所有芯片完好无损,以便以后恢复所做的更改。在这里还需要提到的是,iPhone在以上述方式更改PCB之后难以启动。但是,在对引导加载程序进行修补以使其以低功耗模式运行之后,没有遇到任何引导加载程序崩溃,并且可以执行所需的测量。降低功率模式还导致操作频率降低,因此无论如何对于攻击者都是有益的。
如前所述,需要在电源的VDD路径中放置一个1Ω分流电阻。这是通过在外部电源和iPhone之间连接一个辅助板来实现的,请参见上图。使用了一个DC隔离器(来自Mini-Circuits的BLK-89-S +)来消除DC偏移,并使用了一个AC放大器(ZFL-1000LN + (来自Mini-Circuits)),以增加被测信号的幅度。然后,通过连接到放大器输出的同轴线测量了CPU内核两端的压降。已经使用配置为带宽极限为1 GHz和采样率为2.5 GS / s的数字示波器记录了测量结果。与EM测量类似,无法在迹线中识别出任何类似于AES的功率峰序列,而更麻烦的是迹线中没有任何通信峰或IO峰,这些峰可用于实现与以前相同的重新对齐详细的EM分析。因此,必须在未经任何预处理的情况下对原始迹线执行攻击。尽管如此,下图显示了使用与EM分析相同的功率模型通过CPA成功恢复了不同密钥字节。在这里,大约需要20到7500万条迹线,才能将正确的关键候选对象与错误的候选对象隔离开。但是,对其他关键字节的攻击最多需要2亿条迹线才能进行明确的恢复。在这方面可以得出结论,利用功耗的攻击几乎没有比EM攻击更有效,尤其是在考虑进行额外的修改PCB的工作时。但是,实际上,可以使用两个副通道来成功恢复由硬件AES引擎处理的密钥。
(7)隐藏修改
如前文所述,为了收集EM迹线,必须打开iPhone的外壳以露出电池,主板和CPU。卸下电池,并从外壳上卸下音量按钮。请注意,可以在单独的一组硬件上进行必要的修改,使目标设备大部分保持不变。例如,可以将电线焊接到备用的音量按钮上,然后使用可用的连接器(代替原始零件)将其临时连接到主板上。此外,无需使用车载电池连接器,而只需使用经过修改的电池线即可。另外,必须去除金属屏蔽层。只要将其安装在板上的位置留在原处,之后也可以将其简单地夹回去。对于功率测量,必须从PCB上移除一些电感器和一个大电容器,这些元件可以在执行攻击后重新焊接到板上。因此,执行攻击所需的修改是完全可逆的,从而使攻击者可以完全从受害者隐藏恶意密钥恢复。
(8)可能的对策
为了保护未来的设备免遭与本工作中提出的攻击类似的攻击,提供了几种合适的选项,从软件保护,体系结构级防御到经典DPA对策。对于更新的iPhone系列(从5s开始),Apple本身已经应用了附加的体系结构级屏障,以保护最敏感的硬件融合密钥免遭提取,即引入专用处理器单元SecureEnclave,并禁止使用SEPUID(用于与应用程序处理器进行密码绑定)。这样,应用处理器上的软件利用不足不足以使oracle访问相关的加密引擎,因此不足以执行选择明文SCA攻击。
自然地,加密引擎本身可能的保护机制包括经典的DPA对策,例如屏蔽和隐藏,其目的是使用随机选择的掩码将敏感信息拆分为多个份额,从而将泄漏转移到更高的级别,或者降低信噪比并降低因此,测得的迹线信息较少。根据并从苹果公司的A9处理器开始,该公司也已开始将DPA对策集成到其设计中,尽管未提供有关所实施对策类型的更多细节。进一步的对策可能包括引入防篡改功能,从而在不引起受害者注意的情况下,很难对其进行物理修改。
0x04 Offline PIN Recovery
到目前为止,通过执行SCA攻击恢复了UID密钥。现在证明,拥有此密钥,暴力破解将与设备完全脱钩,从而使GPU集群可以高度并行地搜索用户的密码。
(1)转储系统Keybag
系统Keybag中包含包装的类密钥,这些类密钥受UID密钥保护,该UID密钥通过密钥生成函数与用户密码绑定在一起。对于每个密码猜测,应执行密钥生成函数以计算猜测的生成密钥。之后,通过尝试从Keybag中解锁每个类别的密钥,来检查推测的生成密钥的正确性。如果可以成功解锁每个类密钥,则会找到正确的密码。
为了从设备中提取系统Keybag,使用了msftguy的ssh-rdtool。它是用Java编写的工具,可从Apple的服务器自动下载iPhone固件。提取,解密和修补引导加载程序以及内核,并创建一个提供SSH服务器的ramdisk,然后将其引导到设备上。这类似于一次性从计算机上的USB启动实时Linux发行版,因此无需进行任何修改。制作到文件系统。请注意,如果bootedramdisk使用的iOS版本可能比安装的iOS版本旧,则不会造成损害。
接下来建立了到该设备的SSH连接,以便下载系统Keybag,该Keybag在正常引导时存储在/private/var/keybags/systembag.kb,或在ramdisk引导时存储在/mnt/keybags/systembag.kb(如果安装了用户数据分区到/mnt)。
(2)使用GPU的高度并行化密码恢复
为了恢复用户的密码,在OpenCL中实现了可并行化的程序,该程序的速度与单个主机的GPU数量以及主机数量成比例。利用OpenCL提供了与底层硬件的独立性,即实现可以在包括NVIDIA,AMD,Intel,ARM Mail或其他任何支持OpenCL的硬件在内的多种架构上执行,现分为:
(1)解析系统Keybag,
(2)生成密码批处理,
(3)预处理密码批处理,
(4)根据密码批次得出密钥,
(5)验证生成密钥批次。
步骤(1)和(5)在CPU上执行,因为解析Keybag只需要执行一次,并且解包类密钥(遵循RFC 3394)的计算量并不大,一旦单个密钥解包失败就可以停止。请注意,为了验证生成密钥批次的正确性,考虑了从系统Keybag中解锁所有10个类密钥。
其他步骤在GPU上执行,批处理大小计算为GPU_workgroup_size×64×GPU_factor,对于NVIDIA RTX 2080 TI GPU,GPU_workgroup_size为1024,并且将GPU_factor手动设置为64以平衡加载到GPU上的每个批处理的性能和处理时间。对于设置,将导致包含222 = 4、194、304个密码猜测的批处理,大约需要14分钟来处理。可以进一步减少GPU_factor以处理较少数量的密码猜测,即仅在单个批次中搜索4位密码时。但是,这些值在搜索比单个批次适合的密码猜测更高的数量时被确定为最佳值。
步骤(2)生成一批要存储在内存中的密码。在程序中,将密码的生成限制为数字密码,而将密码扩展为覆盖字母数字密码很简单。接下来,步骤(3)执行PBKDF2以将任意长度的字符串(即,密码)压缩为32字节的序列。密钥导出函数未实现为PBKDF2,而AES为PRF。而是由常规PBKDF2算法的单个迭代组成,并以SHA1-HMAC作为PRF,然后是Apple的customKey Derivation Function(KDF)。
步骤(4)执行Apple的自定义KDF,该自定义KDF由PBKDF2派生的32字节用户密钥,UID密钥,迭代计数和内部32字节状态组成(由ramdisk_tools / AppleKeyStore_kdf.c中的Sogeti进行逆向)。首先,使用用户密钥初始化内部状态。之后,将在循环中执行以下操作:将IV(最初设置为零)与当前迭代计数混合,然后与用户密钥进行XOR处理,然后使用UIDkey在CBC模式下使用AES-128对其进行加密。然后将输出异或到状态,最后一个块(总共两个块)用作新的IV。在将状态返回为输出之前,此操作将重复进行多次,次数由迭代次数指定(对于目标iPhone 4,为50,000次)。
由于这是计算上最密集的操作,因此实现了AES的位片化版本,可并行处理64个块。这甚至可以在多个GPU线程上进一步并行化,从而计算出大小为1024的64个工作组,每个工作组一次计算64个块,导致总共4,194,304个块被并行处理。最后,在多个CPU线程上执行步骤(5),并使用先前计算的密钥从系统密钥袋中解锁所有类密钥。仅当所有类密钥均已成功解锁后,相应的密码才被视为正确的密码。大多数情况下,从系统Keybag中解锁一级钥匙失败,因此此步骤通常会迅速终止。
(3)结果
上表显示了在执行暴力搜索设备时以及在GPU集群上,在最坏情况下针对不同密码长度找到数字密码所需的时间之间的比较。有了执行任意代码的能力,可以在设备上合理地搜索短数字密码。假设对单个密码的猜测进行验证需要80毫秒,如果在设备上进行验证,则找到6位数字的密码需要22个小时(在最坏的情况下)。使用iPhone 4上的Sogeti iphone-dataprotection工具包进行的实际实验表明,验证2,000个密码需要6分钟(每次尝试180毫秒)。这意味着表中给出的用于设备上搜索的实际数字要高出2.25倍。据Sogeti称,破解密码的时间可能因设备而异。本文工作使密码搜索与目标设备的硬件限制脱钩,并能够在任意平台上执行相应的搜索程序。使用单个NVIDIA RTX 2080 TI,已经实现了380倍的加速,通过使用游戏设置就可以在合理的时间内搜索10位密码。使用具有8个NVIDIA RTX 2080 TI实例的GPU群集,可以进一步加快搜索速度。使用这种高级设置,在最坏的情况下,搜索11位数的密码大约需要30天,而租用这些资源则需要大约2000欧元。由于这是线性扩展,因此可以轻松估计使用更多GPU实例查找更长密码的最坏情况时间。总的来说,考虑到为了提取UID密钥而执行SCA攻击所需的时间,如果目标数字密码的长度至少为8位,则攻击的性能将优于普通的设备上搜索方法。
0x05 Applicability to Newer iPhone Series
通常,此攻击也适用于更新的iPhone系列。在不进行重大更改的情况下,使用checkm8而不是SHAtter时,可以在iPhone 4s和iPhone 5 / 5c上执行相同的过程。从iPhone 5s开始,iPhone具有Secure Enclave协处理器(SEP),负责数据保护。 SEP具有一个单独的UID密钥(SEPUID),而不是使用应用处理器(AP)UID密钥,该密钥与用户密码绑定在一起,用于文件加密。因此,为了执行相同的分析,不仅需要在AP上执行代码,还需要在SEP上执行代码。
对于iPhone 5s,iPhone 6,iPhone 6s,iPhone 7,iPhone 8和iPhone X(以及所有其他具有相同CPU的设备),AP BootROM和SEP BootROM中的漏洞都是众所周知的(即checkm8和blackbird)提供一种在AP和SEP上以最高特权执行任意代码的方法。因此,通常可以创建具有与前文所述相似的功能的有效载荷,以在SEP而非AP上执行。尚未针对所有列出的iPhone世代公开提供此类漏洞的相应利用。但是,至少对于iPhone 7,存在一个称为checkra1n的公共可用工具,该工具利用已知的漏洞来获取SEP上的代码执行。在最初的尝试中,能够使用checkra1n在SEP上执行代码执行,并能够查询SEP的AES引擎以加密选择的数据。尽管这可以从较新的硬件收集SCA测量值,但是很难预测使用SCA测量值提取UID / SEPUID密钥是否会类似于(或更难于/比iPhone 4上更容易),尤其是因为Apple宣称已引入DPA对策来保护从A9处理器开始的硬件AES引擎,即从iPhone 6s系列开始。
0x06 Conclusions
利用已知漏洞的公共软件漏洞,以便使oracle能够访问AES引擎,通过处理电磁的侧信道分析(SCA)攻击提取了硬件融合的256位AES密钥,即UID和iPhone 4的GID。底层A4处理器中嵌入的AES引擎的辐射和功耗。到目前为止,文献中还没有报道过对iPhone进行成功的SCA攻击。本研究首次展示了相应的密钥恢复过程的成功,尽管该过程采用了带PoP封装的紧凑型片上系统。尽管需要大量跟踪来恢复完整的AES密钥,但如果克服了软件障碍,即存在可用于在设备上执行自定义代码的漏洞,则物理攻击者的模型能够查询任意多个-纯文本加密(或选择密文解密)是绝对现实的,强调了针对SCA的充分保护的必要性,即使对于数亿条迹线也是如此。
掌握了UID密钥后,就有可能进行脱机暴力破解攻击以恢复用户的密码。通过使用高度并行化的GPU实现,本文建立了一种可扩展的方法来极大地提高密码搜索过程的性能。由于性能随所用GPU的数量线性增长,因此可以根据数据值与预算来缩短搜索时间。本文展示了可以使用常见的游戏设置在合理的时间内显示10位数字密码,而大型攻击者甚至可以覆盖12位数字密码。
可能的解决办法是选择更强的密码(数字或字母数字);但是,这可能会给用户带来不便,因为尽管进行了生物识别,但仍需要一段时间才能输入密码。强调指出,由于泄漏源自集成的AES引擎,因此无法通过软件更新在受影响的设备上缓解此漏洞。简而言之,本文攻击强调针对移动设备,即使设备是高度紧凑的嵌入式系统,并且攻击者的知识仅限于黑盒模型,也需要针对物理攻击(尤其是针对SCA攻击)实施复杂的对策。
欢迎登录安全客 -有思想的安全新媒体www.anquanke.com/加入QQ交流群1015601496 获取更多最新资讯
原文链接:
https://www.anquanke.com/post/id/237769
暂无评论内容