将数据安全地存储在设备中,直到iOS中存在应用程序

时间:2016-07-26 15:05:24

标签: ios objective-c encryption

我想在设备中非常安全地存储一个键值对。但是,我想将数据保存到设备中的应用程序中。 删除应用后,此数据也会被删除。

NSUserdefault 不是很安全。

Keychain 是另一种选择,因为它是安全的,但即使在应用程序被删除后,它仍会保留数据。

我该怎么办? 有什么帮助吗?

2 个答案:

答案 0 :(得分:2)

创建随机加密密钥。将加密密钥存储在钥匙串中。使用加密密钥加密数据。将加密数据存储在应用程序目录中的任何位置。如果要在还原时保留它,请将其存储在备份的某个位置(例如库/应用程序支持或NSUserDefaults)。如果您不希望它在恢复期间保留,请将其存储在库/缓存中(您可能需要对此进行一些研究;“系统可能会在系统磁盘空间非常少的情况下删除Caches目录”,因此存在丢失数据的危险,但无论如何你必须处理这种情况)。您也可以使用NSURLIsExcludedFromBackupKey来避免备份。

删除应用后,将删除加密数据。您将随机密钥保留在钥匙串中,但这只是一个没有值的随机数。

答案 1 :(得分:0)

我使用了一个存储在keyachain中的标志,只要app第一次启动,它就会设置为true。

  1. 当我的应用程序第一次启动时,此标志将不会出现。我将这个标志存储在钥匙串中,值为true,我将把我的安全信息存储在钥匙串中。
  2. 如果我的应用程序第一次启动并且存在标志,那么我将首先删除标志和数据,然后继续执行步骤1.
  3. 通过这种方式,我解决了我的应用问题,即使在第一次安装和启动后,也使用了钥匙串中已存储的数据。如果用户将删除该应用程序,则钥匙串将包含我的安全数据,但由于使用随机密钥加密,因此无用。