私人钥匙扣商店
Private Keychain store
我们有一个企业 iOS SDK,它使用钥匙串来存储高度敏感的信息。这些信息不适用于客户的应用程序。
我一直认为您需要一个密钥来从钥匙串中获取关联的值。但最近,我发现你可以在钥匙串中 ask Keychain to return all the stored keys(恕我直言,这是一个糟糕的设计)。
由于客户端的应用程序可以轻松获取所有钥匙串元素,我真的很想为 SDK 创建一个单独的钥匙串商店。我查看了 SO 问题,但从未找到答案。
长话短说:
如何在 iOS 中创建单独的钥匙串存储?
你不能。
KeyChain 的安全边界是应用程序(如果您启用了 KeyChain 共享,则为同一开发者的多个应用程序之间的 KeyChain 标识符)。
一旦您的框架嵌入到客户端应用程序中,它就是客户端应用程序的一部分。它没有自己的上下文或进程 space 或任何可将其代码与客户端代码区分开来的东西。
如果您的框架中的代码在 KeyChain 中放置了一些东西,那么 iOS,它是客户端应用程序在 KeyChain 中放置了一些东西,没有理由对自己保密。
即使您可以只为您的框架创建一个 KeyChain,将信息放入 KeyChain 的代码也可能在您的框架中,因此攻击者可以通过反编译您的框架来获取信息。
我们有一个企业 iOS SDK,它使用钥匙串来存储高度敏感的信息。这些信息不适用于客户的应用程序。
我一直认为您需要一个密钥来从钥匙串中获取关联的值。但最近,我发现你可以在钥匙串中 ask Keychain to return all the stored keys(恕我直言,这是一个糟糕的设计)。
由于客户端的应用程序可以轻松获取所有钥匙串元素,我真的很想为 SDK 创建一个单独的钥匙串商店。我查看了 SO 问题,但从未找到答案。
长话短说: 如何在 iOS 中创建单独的钥匙串存储?
你不能。
KeyChain 的安全边界是应用程序(如果您启用了 KeyChain 共享,则为同一开发者的多个应用程序之间的 KeyChain 标识符)。
一旦您的框架嵌入到客户端应用程序中,它就是客户端应用程序的一部分。它没有自己的上下文或进程 space 或任何可将其代码与客户端代码区分开来的东西。
如果您的框架中的代码在 KeyChain 中放置了一些东西,那么 iOS,它是客户端应用程序在 KeyChain 中放置了一些东西,没有理由对自己保密。
即使您可以只为您的框架创建一个 KeyChain,将信息放入 KeyChain 的代码也可能在您的框架中,因此攻击者可以通过反编译您的框架来获取信息。