我感兴趣的是如何在iPhone 5+,iOS 8+中利用内存。
我以前讨论过一般的iPhone加密,从响应中可以看到:
多年来,有许多漏洞可以在iOS设备上执行内核级的代码,但几乎所有这些漏洞都需要对设备进行开放的物理访问或重新启动,这将从内存中清除AfterFirstUnlock密钥。密钥不是在内存中加密的,所以打开电话和直接访问RAM芯片可能有效,除非iPhone使用包内结构,而且内存芯片必须首先从处理器物理上分离--而不破坏数据,因此芯片将需要电源和/或整个时间的冻结。
iPhone内存的物理安全性似乎很好,但是在(锁定的) iPhone上对RAM的软件级攻击又如何呢?什么是可以找到的,或者为什么是不现实的?iPhone内存保护良好吗?
编辑:具体而言,这个场景是重新锁定的iPhone (自开机后解锁一次)。
发布于 2016-03-06 05:37:22
简单的回答是,通过软件开发iOS内存并不容易。
iOS具有两个与内存相关的安全功能:(1)地址空间布局随机化(ASLR),以防止内存被利用;(2) ARM处理器的执行永不(XN)特性,它将内存页标记为不可执行的。使用ASLR,数据并不总是在内存中的同一个位置--这使得缓冲区溢出及其类似程序很难可靠地工作。
另外,您引用的响应对于较新的设备并不准确。对于iPhone 5及以上或任何使用A7或以上处理器的设备,处理器都有一个名为securely的硬件组件,它可以更安全地处理具有内存加密等功能的密钥链操作。
另一个需要考虑的因素是,取决于您的应用程序和信息敏感性,除了AfterFirstUnlock之外,还有其他几个选项。理论上,您可以从设备中收集信息,用于存储AfterFirstUnlock级别信息的应用程序。但不是来自任何利用WhenUnlock级别的应用程序。
苹果通过在WiFi上存储AfterFirstUnlock的密码,但在WhenUnlocked上存储更多的个人Safari密码,来判断平衡便利性和安全性。这些似乎是相当好的准则,值得遵守。换句话说,即使有可能在锁定的电话上进行攻击,公开的信息仍然是有限的。
尽管如此,如今更大的关注可能是应用程序开发人员,他们不完全理解在密钥链中存储数据或利用文件数据保护时不同可访问性级别的含义。如果存储一些重要的东西--请确保使用WhenUnlocked,这需要将手机解锁以进行访问。一些应用程序甚至添加了自己的应用程序级密码来加密他们认为重要的信息。
苹果的iOS安全指南中有更多关于这些项目的细节。
https://security.stackexchange.com/questions/106122
复制相似问题