安全存储的限制-KeyChain和KeyStore

问题描述

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

  1. KeyChain和KeyStore存储分别在iOS和Android上有多大?
  2. 我们可以在其中存储多少个密钥?
  3. 个人钥匙有多大?
  4. 什么是存储寿命?它仅在安装应用程序时存在吗?它是短暂的吗?

谢谢

解决方法

安全存储就像Shared Prefences / NSUserDefaults。它以键值对的形式存储数据。数据被加密,并使用由唯一设备密钥构成的密钥对存储的数据进行加密和解密。数据存储在根目录中的某个位置,只有操作系统可以访问它。

  1. 安全存储没有存储限制(任何文档中都没有空间限制,但我确实认为您不能存储1Gb +以上的大量数据)
  2. 您可以在其中存储无限数量的密钥
  3. 基于MKJParekh's answer,您最多可以存储2147483647个字符。
  4. 卸载应用后,数据将被删除。 (请注意,安全存储中的数据无法在Android中备份)Take a look at this

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

何时使用安全存储
使用安全存储来存储应加密并向用户隐藏的数据。该数据应仅存储用户的敏感数据,例如其api键,而不存储您的服务器私钥

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...