安全存储的局限性——KeyChain 和 KeyStore
Limitations of secure storage - KeyChain and KeyStore
我打算在我的应用中使用 flutter_secure_storage 来保存一些私钥和令牌。
我在 Android 和 iOS 上寻找安全存储的限制,但我找不到某些问题的答案:
- iOS 和 Android 上的 KeyChain 和 KeyStore 存储分别有多大?
- 我们可以在里面存放多少把钥匙?
- 单个密钥可以有多大?
- 存储的生命周期是多少?它仅在安装应用程序时存在吗?是持久的还是短暂的?
谢谢
安全存储就像共享 Prefences/NSUserDefaults。它以 key-value 对的形式存储数据。数据经过加密,并使用由唯一设备密钥生成的密钥来加密和解密存储的数据。数据存储在根目录中的某处,只有 OS 可以访问它。
- 安全存储没有存储限制(任何文档中都没有提到 space 限制,但我认为您不能存储 1Gb 以上的大量数据)
- 您可以在里面存储无限数量的密钥
- 基于 MKJParekh's answer,您最多可以存储
2147483647
个字符。
- 卸载应用程序后,数据将被删除。 (注意安全存储中的数据无法在Android中备份)Take a look at this
不要使用安全存储来存储敏感的私钥和令牌。您没有指定要在安全存储中存储哪些私钥和令牌。您可能正在存储您的数据库凭据或其他用户不应获取的内容。尽管存储在安全存储中的数据是加密的,但它并不完全安全。用户可以 root/jailbreak 他们的设备,这使他们可以完全控制 OS。有些工具可以拦截提供的密钥,并使用它来解密数据。防止这种情况的唯一方法是永远不要将密钥交给用户。您应该将其存储在您可以控制的服务器中。 (Firebase Cloud Functions、AWS ECS 或您自己的 VPS)是这些服务器的示例。
何时使用安全存储
使用安全存储来存储应该对用户加密和隐藏的数据。该数据应仅存储用户的敏感数据,例如他们的 api 密钥 而不是您的服务器私钥 .
我打算在我的应用中使用 flutter_secure_storage 来保存一些私钥和令牌。 我在 Android 和 iOS 上寻找安全存储的限制,但我找不到某些问题的答案:
- iOS 和 Android 上的 KeyChain 和 KeyStore 存储分别有多大?
- 我们可以在里面存放多少把钥匙?
- 单个密钥可以有多大?
- 存储的生命周期是多少?它仅在安装应用程序时存在吗?是持久的还是短暂的?
谢谢
安全存储就像共享 Prefences/NSUserDefaults。它以 key-value 对的形式存储数据。数据经过加密,并使用由唯一设备密钥生成的密钥来加密和解密存储的数据。数据存储在根目录中的某处,只有 OS 可以访问它。
- 安全存储没有存储限制(任何文档中都没有提到 space 限制,但我认为您不能存储 1Gb 以上的大量数据)
- 您可以在里面存储无限数量的密钥
- 基于 MKJParekh's answer,您最多可以存储
2147483647
个字符。 - 卸载应用程序后,数据将被删除。 (注意安全存储中的数据无法在Android中备份)Take a look at this
不要使用安全存储来存储敏感的私钥和令牌。您没有指定要在安全存储中存储哪些私钥和令牌。您可能正在存储您的数据库凭据或其他用户不应获取的内容。尽管存储在安全存储中的数据是加密的,但它并不完全安全。用户可以 root/jailbreak 他们的设备,这使他们可以完全控制 OS。有些工具可以拦截提供的密钥,并使用它来解密数据。防止这种情况的唯一方法是永远不要将密钥交给用户。您应该将其存储在您可以控制的服务器中。 (Firebase Cloud Functions、AWS ECS 或您自己的 VPS)是这些服务器的示例。
何时使用安全存储
使用安全存储来存储应该对用户加密和隐藏的数据。该数据应仅存储用户的敏感数据,例如他们的 api 密钥 而不是您的服务器私钥 .