iOS Keychain安全性

phx*_*phx 54 iphone certificate keychain ios

我们希望在iPhone上使用证书来验证MS Exchange Sync.我们不确定如何实施安全性概念来保护此证书.

例如,如果没有启用ScreenLock,是否可以在iPhone上获得"完整"Keychain访问权限?(或使用越狱iPhone).

有没有人有这方面的链接?

pep*_*psi 47

Fraunhofer对iOS钥匙串安全性的研究:

据我所知,iOS钥匙串使用两种加密级别.第一级使用锁屏密码作为加密密钥.第二级使用由设备生成并存储在设备上的密钥.

弗劳恩霍夫的研究人员已经想出如何绕过二级.由于加密密钥存储在设备上,因此这是"更容易"的级别.所以在iOS4上,他们的方法只适用于不使用kSecAttrAccessibleWhenUnlocked或kSecAttrAccessibleWhenUnlockedThisDeviceOnly的keychain条目,因为这些条目驻留在内存中,第一级解密 - 即使手机被锁定.

  • 从iOS 4开始,具有kSecAttrAccessibleWhenUnlocked和kSecAttrAccessibleWhenUnlockedThisDeviceOnly的密钥受到额外加密级别的保护
  • 在iOS 3.x及更早版本中,无论使用何种可访问性属性,都可以使用Fraunhofer的方法解密所有密钥
  • 完全没有密码的设备仍然容易受到攻击
  • 具有弱密码(少于六位数)的设备仍然有点脆弱

每个密码尝试≈50ms; →每秒≈20次尝试; →≈1.7岁,对于带有基数36的6位字母数字代码猜测正确密码的50%变化.4位数字的标准简单代码将在不到9分钟内强制执行.基于这样的假设,即可以绕过iOS中错误尝试的计数器,因为它不是基于硬件的

Apple Inc. WWDC 2010,核心操作系统,会议209"保护应用程序数据",幻灯片24

底线:如果您必须存储敏感数据,请更好地使用自己的加密.并且不要将密钥存储在设备上.

编辑:有很多新闻文章引用了弗劳恩霍夫的研究,并向读者保证,除非他们的设备被盗,否则不要担心,因为这种攻击只能通过物理访问设备来完成.

我有点怀疑.事实上,研究人员通过物理访问手机进行测试似乎只是一种简化问题的方法,而不是限制.这是他们对解密钥匙串条目所做的描述:

使用越狱工具后,为了访问命令shell,我们运行一个小脚本来访问和解密密钥链中的密码.解密是在操作系统自身提供的功能的帮助下完成的.

任何使用过jailbreak.me的人都知道,越狱不需要物理访问设备.从理论上讲,修改jailbreak.me代码并使其自动执行以下操作应该是微不足道的:

  1. 正常执行越狱(所有这些都需要用户打开恶意制作的PDF)
  2. 越狱完成后运行Fraunhofer的脚本
  3. 通过网络将密码发送到攻击者可以从中读取的位置

所以再一次,要小心你放入钥匙链.

  • @AbhiBeckert - 它实际上根本不是一个延伸 - 这是_exactly_如何jailbreak.me工作.用户所要做的就是访问一个网站以启动越狱过程.用户永远不必将他们的设备连接到他们的计算机.如果我没记错的话,它实际上确实使用了多个漏洞来彻底根电话.我的观点是,如果访问一个网站可以越狱你的手机,那么恶意网站几乎可以做任何想做的事情. (2认同)

Ivo*_*sch 2

我可以回答你的部分问题,但由于另一部分仍然未知,我对这个问题进行投票,因为我也渴望知道答案。

我可以回答的部分是:“如果没有启用屏幕锁,应用程序可以获得完整的钥匙串访问权限”。不,每个应用程序在 iPhone 上都有自己的钥匙串区域,这意味着应用程序只能访问自己的秘密。这些秘密并未针对应用程序本身锁定,因此无法对应用程序本身隐藏钥匙串条目。总结一下:应用程序可以读取自己的条目,而不能读取其他条目。

但我有兴趣知道越狱设备上会发生什么。设备越狱后,所有应用程序的钥匙串是否都会暴露?