我们想使用 iPhone 上的证书来验证 MS Exchange Sync。我们不确定如何实施安全概念来保护此证书。
例如,如果没有启用 ScreenLock,是否可以在 iPhone 上获得“完整”钥匙串访问权限?(或使用越狱的 iPhone)。
有人有这方面的链接吗?
我们想使用 iPhone 上的证书来验证 MS Exchange Sync。我们不确定如何实施安全概念来保护此证书。
例如,如果没有启用 ScreenLock,是否可以在 iPhone 上获得“完整”钥匙串访问权限?(或使用越狱的 iPhone)。
有人有这方面的链接吗?
Fraunhofer 对 iOS 钥匙串安全性的研究:
据我所知,iOS 钥匙串使用了两个级别的加密。第一级使用锁屏密码作为加密密钥。第二级使用由设备生成并存储在设备上的密钥。
弗劳恩霍夫的研究人员已经找到了绕过第二层的方法。这是“更容易”绕过的级别,因为加密密钥存储在设备上。所以在 iOS4 上,他们的方法只适用于不使用 kSecAttrAccessibleWhenUnlocked 或 kSecAttrAccessibleWhenUnlockedThisDeviceOnly 的钥匙串条目,因为这些条目驻留在内存中,第一级解密 - 即使手机被锁定。
≈50ms 每次密码尝试;→ ≈每秒 20 次尝试;→ 对于以 36 为底的 6 位字母数字代码,猜测正确密码的 50% 变化约为 1.7 年。标准的 4 位数字简单代码将在不到 9 分钟的时间内被强制破解。基于可以绕过 iOS 中错误尝试计数器的假设,因为它不是基于硬件的
Apple Inc. WWDC 2010,核心操作系统,第 209 节“保护应用程序数据”,幻灯片 24
底线:如果您必须存储敏感数据,最好使用您自己的加密。并且不要将密钥存储在设备上。
编辑:有许多新闻文章引用了弗劳恩霍夫的研究,并向他们的读者保证除非他们的设备被盗,否则不要担心,因为这种攻击只能通过对设备的物理访问来完成。
我有点怀疑。研究人员通过物理访问手机进行测试的事实似乎只是简化问题的一种方式,而不是限制。这是他们对解密钥匙串条目所做的描述:
使用越狱工具后,为了访问命令外壳,我们运行一个小脚本来访问和解密在钥匙串中找到的密码。解密是在操作系统本身提供的功能的帮助下完成的。
任何使用过 jailbreak.me 的人都知道,越狱不需要对设备进行物理访问。从理论上讲,修改 jailbreak.me 代码并让它自动执行以下操作应该是微不足道的:
所以再一次,小心你放在钥匙串里的东西。
通常,钥匙串是存储此类证书的推荐方式。但是,已经发现越狱可以用来绕过钥匙串的安全性(文章)。
Franhofer 对 iPhone Keychain 的安全性做了一项研究:
http://www.sit.fraunhofer.de/Images/sc_iPhone%20Passwords_tcm501-80443.pdf
我可以回答你的部分问题,但由于另一部分仍然未知,我正在投票赞成这个问题,因为我也很想知道答案。
我可以回答的部分是:“如果未启用屏幕锁定,应用程序能否获得完整的钥匙串访问权限”。不,每个应用程序在 iphone 上都有自己的钥匙串区域,这意味着应用程序只能访问自己的秘密。这些秘密不会为应用程序本身锁定,因此无法从应用程序本身隐藏钥匙串条目。总结一下:应用程序可以读取自己的条目,而不能读取其他条目。
我有兴趣知道的是越狱设备上会发生什么。一旦设备越狱,所有应用程序的钥匙串都会暴露吗?