目前FBI试图让Apple协助解密iPhone的争论使我感到奇怪:

通常,在打开iPhone时,所有内容都是使用4位数的密码(或者实际上是密钥来自具有强大KDF的PIN,但这不是重点)。 Apple保护的关键要素是一种锁定机制,可在10次(或大约10次)失败尝试后锁定或破坏数据。

是什么阻止FBI从设备读取所有数据(包括任何硬编码数据)可能以芯片或其他方式编码)并在自己的环境中执行相同的解密? (…除自我破坏或锁定功能外,与Apple的实现方式相同。)

强制使用4位PIN的强盗是花生。锁定功能对于解密过程不是必需的。

iOS的保护真的只是通过模糊来确保安全,还是我缺少一些东西?使用4位或5位数字的密码(而不是强密码)进行解密基本上是不安全的。

评论

如果没有增加的安全机制,强行强制使用4位PIN是微不足道的。但是,有了它们,这是极其困难的。尽管防护是众所周知的,但我不会真的通过模糊来称呼这种安全性。每个人都知道它是如何工作的,但仍然无法解决(除非苹果公司屈服或我们不知道的其他事情)。
当然,对于“ FBI为什么要问...”的回答,可能的答案可能是“因为他们希望人们认为FBI / NSA尚未找到破解加密的方法”。

如果您将PIN存储在受保护的设备中,那么显然可以防止暴力破解。如果不是这种情况,那么芯片和密码将无法工作。显然,硬件制造商和“黑客”之间正在进行一场竞赛,但是对于制造商而言,似乎有可能保持领先地位。

@supercat:或同样愤世嫉俗地说道,“因为他们想拥有一个很好的简单iOS更新来完成这项工作,并且可以轻松地分发给所有执法人员,以取代国家安全局想出的任何昂贵而笨拙的系统,物理读取硅”。但是,任何能够给出这种非推测性答案的人,可能会因此而被捕。

如果Apple确实遵守,FBI将如何在不首先解锁手机的情况下安装更新?根据其他评论,将闪存芯片物理地移动到已经更新的手机上是行不通的。

#1 楼

我会尝试对此采取行动。从Apple的iOS安全指南中,我们了解到


文件系统中所有文件的元数据都使用随机密钥加密,该随机密钥是在首次安装iOS或当用户擦拭设备时。文件
系统密钥存储在Effaceable Storage中。由于该密钥存储在设备上,因此
不用于维护数据的机密性;





文件的内容使用每个文件的密钥加密,并用类密钥包装并存储在文件的元数据中,然后再使用文件系统密钥对其进行加密。
类密钥受硬件UID的保护,对于某些类,受用户的密码保护。
此层次结构提供了灵活性和性能。例如,更改文件的
类仅需要重新包装其每个文件的密钥,而更改密码只需重新包装
类密钥。


:通过物理上拥有设备,您应该可以轻松地获取文件系统密钥(取出SSD并从中读取密钥)。我们将其称为文件系统密钥$ K_ {FS} $。另外,每个文件$ f $使用每个文件密钥$ K_f $进行加密。要获得$ K_f $,我们需要有文件系统密钥($ K_ {FS} $)和“类密钥”,我们将其称为类密钥$ K_C $。

因此,函数$ F_1 $给出了文件,文件系统密钥,类密钥为您提供了文件密钥。 $ K_f $ = $ F_1(f,K_ {FS},K_C)$。这意味着FBI需要解密特定文件,它们需要:


$ f $✅
$ K_ {FS} $✅
$ K_C $❌

所以他们没有$ K_C $ afaik。是的,您通常如何获得该班级钥匙?该文档说,它受到“硬件UID”($ K_ {UID} $)和(有时)用户密码$ K_P $的保护。 las,还有另一个函数$ F_2(K_ {UID},K_P)$给出了硬件UID,并且(有时)密码返回了您的类密钥。
假设FBI可以轻易强行破解密码($ K_P $),那么他们所需要的只是硬件UID($ K_ {UID} $),但不幸的是,它们显然放在了芯片中,因此很难访问:


设备的唯一ID(UID)和设备组ID(GID)是AES 256位密钥,已融合到
(UID)或已编译(GID)到应用处理器和Secure Enclave中在
制造期间。没有软件或固件可以直接读取它们;他们只能看到
由专用AES引擎执行的加密或解密操作的结果,该引擎在硅片中使用UID或GID作为密钥来实现。此外,Secure Enclave的UID和GID只能由专用于Secure Enclave的AES引擎使用。
UID对于每个设备都是唯一的,并且Apple或其任何供应商均未记录。
GID对于一类设备中的所有处理器(例如,所有使用<苹果A8处理器),并用于非安全性至关重要的任务,例如在安装和还原过程中交付系统软件时。将这些密钥集成到芯片中有助于防止在AES引擎外部对其进行篡改,绕过或访问
。 UID和GID也无法通过JTAG或其他调试接口使用。

UID允许将数据以密码方式绑定到特定设备。例如,保护文件系统的密钥层次结构包含UID,因此,如果将存储芯片从一个设备物理地移动到另一个设备,则无法访问文件。 UID与设备上的其他任何标识符都不相关。


因此,如果我没看错的话,函数$ F_2 $似乎是在硬件中实现的,可以作为$ F_2'(K_P)$访问。请注意,$ F_2'$仅具有一个参数,即用户的密码。换句话说$ F_2'(K_P)= F_2(K_ {UID},K_P)$,因此硬件UID由硬件自动提供。在非Secure Enclave iPhone(如5C)中,您可以使用自定义iOS版本对其进行暴力破解,使您可以随意使用$ F_2'$。在普通的iOS中,只有锁定屏幕可以运行$ F_2'$,并且可以防止您这样做而不会增加延迟(并可能最终擦除设备)。使用安全飞地iPhone(5S,6(+),6S(+))时,安全飞地会阻止您重复运行此功能。因此,即使iOS内核也无法立即运行$ F_2'$。

考虑到所讨论的iPhone似乎是5C,FBI似乎只需要Apple提供的特殊版本的iOS,允许他们使用自动提供的密码重复使用$ F_2'$而没有延迟。这应该给FBI 10000(假定4位数字的通行码)或1000000(假定6位数字的通行码)“类密钥”。然后,他们可以只尝试每个类密钥,并且其中一个将为它们提供数据。

与这个特定问题无关,但我认为这仍然很有趣:安全区域是否会进行任何更改这里?乍一看:显然是的,因为新的iOS版本不够好,因为Secure Enclave会通过强行强制输入密码来阻止您循环运行$ F_2'$。但是:安全保护区也运行某种固件,因此可以提高此限制,但可以更新安全保护区。到目前为止,我不清楚苹果是否可以在不擦除Secure Enclave中所有内容的情况下做到这一点。不同的来源主张不同的事情。本文涵盖了这一点。特别是,它引用了John Kelley的一条推文,该推文以前曾在Apple的Embedded Security中使用。他声称


[...]我不知道他们从何处得知更改SPE固件会破坏密钥。 SPE FW只是iOS系统部件上的签名Blob。换句话说:即使使用更新的iPhone,Apple仍可以将特殊固件部署到Secure Enclave(SPE),从而可以请FBI尽可能多地运行$ F_2'$。

我希望这会有所帮助。所有信息均取自《 iOS安全指南》及其对我的解释。恕我直言,FBI要求苹果,因为需要经常运行$ F_2'$而没有延迟,这样他们才可以蛮横地使用iPhone的代码。对于iPhone 5C,新版本的iOS应该就足够了,因为只有操作系统会阻止您这样做(您无法以编程方式访问$ F_2'$而没有特殊特权)。对于较新的iPhone,Secure Enclave确实可以防止这种情况。没有这个限制,FBI不能编译自己的黑版iOS,因为iPhone仅运行由Apple签名的代码,而FBI(可能)没有Apple的签名密钥。您知道或认为我误解了什么或弄错了什么。

评论


$ \ begingroup $
指纹识别器是我在有关新型iPhone(5s及更高版本)的整个讨论中特别有趣的一件事。如果人们打开指纹登录的5s设备,FBI是否会遇到这个问题。
$ \ endgroup $
– Mikeikeazo
16年2月18日在13:43

$ \ begingroup $
指纹读取器本身只能削弱安全性,因为您始终可以仅使用密码进入设备。指纹添加了一个额外的密钥,因此削弱了安全性。
$ \ endgroup $
–约翰尼斯·魏斯(Johannes Weiss)
16-2-18在13:45



$ \ begingroup $
@mikeazo不要忘记,iOS要求密码a)每次重启后b)设备已启用48小时
$ \ endgroup $
–lukas
16-2-18在19:22

$ \ begingroup $
也许是切线的,但是什么阻止了FBI提取闪存芯片,创建它们的按位复制,重新插入,然后一次尝试10次密码,每10次失败从备份中恢复一次?显然,这将比使用被入侵的OS /固件的程序化蛮力慢。但是,这似乎可行,并且没有所有后门争议(后门争议是完全合理的imo)?
$ \ endgroup $
–aroth
16-2-19在5:10



$ \ begingroup $
@aroth可能什么都不是,除了这非常昂贵且缓慢。重试之间的时间也越来越长。因此,尝试1000000个代码会非常慢,对吧?即使是4位数密码的10000,也似乎很慢。如果我没记错的话,延迟超过90分钟(尝试10次)。因此,超过90000分钟,即超过62天的暴力破解加上更换闪存芯片的时间(和风险)。您可以仅尝试6次来减少时间(尝试8次IIRC后没有得到1小时的延迟),但可能仍然太慢。
$ \ endgroup $
–约翰尼斯·魏斯(Johannes Weiss)
16年2月19日在7:10

#2 楼

加密密钥不仅仅来自密码。它也来自直接蚀刻到CPU芯片中的许多加密密钥。这些密钥无法在软件中读出-仅存在使用它们进行加密和解密的指令-并且通过检查硬件已故意使提取这些密钥变得困难。不是强行使用〜10位密码,而是强行使用256位密码密钥。即使对于现在地球上最老练的攻击者来说,这也是不可行的(或者至少是极其困难的)。

即使法院命令并未建议苹果提取密钥,以便FBI可以蛮力破解密码离线。 FBI仅要求Apple让他们通过扩展坞连接器提供iPhone密码,并禁用错误的密码延迟和软件中实现的自动擦除机制。

评论


$ \ begingroup $
请注意,这仅对特定一代的iPhone有帮助,因为速度限制应由芯片而不是软件来完成。显然在较新的版本中已修复:blog.trailofbits.com/2016/02/17/…
$ \ endgroup $
–欧文
16-2-19在10:12

$ \ begingroup $
上面的链接是必读的。特别是,它包含联邦调查局需求的技术部分的(指定)逐字记录。
$ \ endgroup $
–fgrieu♦
16-2-19在18:13

$ \ begingroup $
请注意,如果可以自由使用加密/解密指令,则旁通道攻击可能允许派生256位密钥。尽管这仍然很困难,但也许并非不可行。
$ \ endgroup $
– Aleph
16-2-21在16:14



$ \ begingroup $
@fgrieu在通常情况下,“必须手动解锁设备”可防止某人虚拟化内容并节省时间,使他人无法使用计算机强制使用该设备,或者有人将一部iPhone的加密内容放入另一部iPhone,然后尝试访问它?
$ \ endgroup $
–阿卜杜勒
16年2月24日在3:59

#3 楼

除非芯片被设计为允许您这样做,否则很难仅读出芯片上的每个存储元件,尤其是如果芯片被故意设计为阻碍您这样做的话。通用存储芯片显然很容易读出,因为它们被设计为可以从外部读出,但是复杂SoC内部的存储位置则是另一回事。

因此,您可以拥有软件已知的秘密材料。在设备上,但没有所述软件的配合就无法轻易读出。设备上的软件可以在工厂固定,也可以使用数字签名方案锁定更新。如果执行软件更新时未先解锁那些机密,则该软件可能被设计为销毁某些机密。密钥材料,那么制造商(或可以获取制造商签名密钥的人)可以生产出一个版本的软件,该版本无需进行过多检查即可发布密钥材料。访问代码的副本(可能同时包括源代码和二进制文件)可能有助于在上述代码中寻找可利用的漏洞。

#4 楼

跟进Brent Royal Gordon的回答:如果确实无法检索并只能使用硬件密钥,我认为Apple [1]可以通过使用密码来检索“ passcode”密钥来解决此问题(我仍称其为密码密钥,但这可以是其他一些随机密钥,并且密码用于通过硬件进行检索,并且在连续10次无效检索尝试后,让硬件本身(而非固件)擦除存储的密码密钥。

密码密钥和10次尝试限制以及启用/禁用可以存储在NVRAM的芯片内部。如果我没有丢失任何东西,则应该可以使用:



注意:修改NVRAM设置或设置新的密码密钥将需要当前密码,并且会具有与检索或使用密码密钥相同的限制。另外,“密码”实际上就是今天的密码的哈希。

1:真正的ARM,正如我读到的苹果公司的Secure Enclave是ARM TrustZone的定制版本。 br />

评论


$ \ begingroup $
Apple不想“解决”无法检索密钥的问题。在有问题的电话(5c)之后的每部电话中,Apple都添加了其他硬件,以防止FBI的要求变为现实。这就是所谓的Secure Enclave,它提供了基于硬件的超时,每次尝试的超时时间都更长(0-5无效,接下来的几秒钟,9或更高的小时一小时)。一旦手机进入装配线,Apple便无法更改它。
$ \ endgroup $
–沃尔特
16-2-20在6:59

$ \ begingroup $
@Walter的答案与之相反-它是针对要求Apple加以利用的弱点的建议修复方法。提议的修复程序将意味着即使Apple也将无法绕过10次尝试限制,因为它将由硬件强制执行。您和答录者似乎都同意,但用不同的语言。
$ \ endgroup $
– trichoplax
16-2-21在18:50