安全存储的限制 - KeyChain 和 KeyStore

And*_*ija 5 android keychain ios android-keystore flutter

我打算在我的应用程序中使用flutter_secure_storage来保留一些私钥和令牌。我正在寻找 Android 和 iOS 上安全存储的限制,但我找不到某些问题的答案:

  1. iOS 和 Android 上的 KeyChain 和 KeyStore 存储空间分别有多大?
  2. 我们可以在里面存放多少把钥匙?
  3. 单个密钥可以有多大?
  4. 什么是存储寿命?它是否仅在安装应用程序时存在?它是持久的吗?

谢谢

Uni*_*Uni 6

安全存储就像共享首选项/NSUserDefaults。它将数据存储在键值对中。数据经过加密,并使用由唯一设备密钥组成的密钥来加密和解密存储的数据。数据存储在只有操作系统可以访问的根目录中的某个位置。

  1. 安全存储没有存储限制(任何文档中都没有提到空间限制,但我确实认为您不能存储 1Gb+ 的大量数据)
  2. 您可以在里面存储无限数量的密钥
  3. 根据MKJParekh 的回答,您最多可以存储2147483647字符。
  4. 卸载应用程序后,数据将被删除。(注意安全存储中的数据不能在Android中备份)看看这个

不要使用安全存储来存储敏感的私钥和令牌。您没有指定将在安全存储中存储哪些私钥和令牌。您可能正在存储您的数据库凭据或其他用户不应获取的内容。尽管存储在安全存储中的数据是加密的,但它并不完全安全。用户可以 root/越狱他们的设备,这使他们可以完全控制操作系统。有一些工具可以拦截提供的密钥并使用它来解密数据。防止这种情况的唯一方法是永远不要将密钥交给用户。您应该将其存储在您可以控制的服务器中。(Firebase Cloud Functions、AWS ECS 或您自己的 VPS)是这些服务器的示例。

何时使用安全存储
使用安全存储来存储应该对用户加密和隐藏的数据。该数据应仅存储用户的敏感数据,例如他们的 api 密钥,而不是您的服务器私钥