ios - 私人钥匙串商店
问题描述
我们有一个企业 iOS SDK,它使用 Keychain 来存储高度敏感的信息。这些信息对客户端的应用程序不可用。
我一直认为您需要一个密钥来从钥匙串中获取关联的值。但最近,我发现你可以让 Keychain 返回 Keychain 中存储的所有密钥(恕我直言,这是一个糟糕的设计)。
由于客户端的应用程序可以轻松获取所有 Keychain 元素,我真的很想为 SDK 创建一个单独的 Keychain 存储。我已经查看了 SO 问题,但从未找到答案。
TL;DR:如何在 iOS 中创建单独的钥匙串商店?
解决方案
你不能。
KeyChain 的安全边界是应用程序(如果您启用 KeyChain 共享,则为来自同一开发人员的多个应用程序的 KeyChain 标识符)。
一旦您的框架嵌入到客户端应用程序中,它就是客户端应用程序的一部分。它没有自己的上下文或进程空间或任何将其代码与客户端代码区分开来的东西。
如果你的框架中的代码在 KeyChain 中放置了一些东西,那么对于 iOS,它是客户端应用程序在 KeyChain 中放置了一些东西,并且没有理由对其自身保密。
即使您可以仅为您的框架创建一个 KeyChain,也可能将信息放入 KeyChain 的代码在您的框架中,因此攻击者可以通过反编译您的框架来获取信息。
推荐阅读
- macos - 可以使用“始终信任”以编程方式在钥匙串访问中安装“不受信任的证书”或“P12”文件吗?
- javascript - 关于 null 和 undefined 的类型转换
- php - 我们可以使用 KnpPaginatorBundle 基于 Symfony 4 中的 2 个实体创建分页吗?
- android - 多个 dex 文件定义 Landroid/arch/core/util/Function firebase
- matlab - 如何根据 Matlab 中的坐标值计算三角插值?
- android - 未启动 firebasemessage 服务时未收到 Firebase 通知
- python-3.x - 如何在 peewee 中进行此 SQL 查询
- mips - 是否可以将寄存器加载到自身?
- matlab - Matlab中矩阵的相等元素的位置对
- java - 如何添加显示您在谷歌地图上经过的路线的行