用户是否可以访问iOS上的钥匙串?

16
我们正在考虑将一些信息(例如用户名,密码等)存储在我们的应用程序中,我们不希望用户能够篡改。一种(不好的)方法是将它们放在加密文件中,但如果这样做,用户可以使用任何iOS文件系统探索工具编辑或替换该文件,这是不希望看到的。
如果我们将细节存储在钥匙串中,那么用户是否有办法读取或写入这些细节,例如运行与文件系统探索工具相当的钥匙串?或者说,没有办法在不运行该应用程序的情况下访问钥匙串中的应用程序信息吗?
显然,如果用户破解我们的应用程序,或者拥有越狱设备,或者以某种方式中间人攻击发送信息到设备的连接,他们可以访问钥匙串项。我不担心这个 - 只关心普通的未破解设备和无奇怪应用程序的用户是否可以访问钥匙串中的数据。 感谢你的帮助。
2个回答

12
根据 苹果文档
在 OS X 中,只要用户授权,任何应用都可以访问任何钥匙串项;但在 iOS 中,应用只能访问自己的钥匙串项。
注意:在 iPhone 上,钥匙串权限取决于用于签署应用的配置文件。确保在不同版本的应用中始终使用相同的配置文件。
因此,如果您假设设备未越狱且钥匙串子系统正常工作,则仅您的应用程序(通过其配置文件进行标识)可以访问其自己的钥匙串项。如果您有不同的应用程序共享相同的配置文件,则它们都可以访问相同的钥匙串项。

1
你的其他应用程序也可以访问它,所以如果你有多个应用程序,请记住这一点。 - i_am_jorf
@jeffamaphone:谢谢。据我所知,只要这些应用程序共享相同的配置文件,就是正确的。 - sergio
3
不同的应用程序共享相同的配置文件无法访问相同的钥匙串项。这与应用程序在配置文件中的权限有关。这些应用程序需要在其配置文件中拥有相同钥匙串访问组的权限,但配置文件不必相同。 - honus
1
@sergio 用户可以访问钥匙串的内容吗?我想将API密钥存储在钥匙串中,但我不希望用户能够看到它。 - Harish
1
请注意,对于M1 Macs,这个假设不再成立,因为该应用程序可以安装在Mac上,允许正常的Keychain操作。 - Gil

4

正如此处所述,iOS设备上无法访问应用外部。

但现在,用户可以在macOS上安装应用程序,并提供正常的macOS访问以查看和操作钥匙串数据。


因此,如果我有一个iOS应用程序,将机密数据(例如某些API密钥)存储在钥匙串中,则用户无法从iPhone上读取它,但如果他在M1 Mac上安装该应用程序,他会吗? - Jofre
2
@Jofre 是的,在 M1 Mac 上,用户可以在 Keychain Access 应用程序中查看它。 - Gil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接