【问题标题】:Is it safe to store Encryption Key in defaultConfiguration?将加密密钥存储在 defaultConfiguration 中是否安全?
【发布时间】:2016-12-06 09:07:44
【问题描述】:

我的 Realm 数据库已加密。加密密钥存储在钥匙串中。管理此密钥的更安全方法是什么?

目前我正在调用从application(application:didFinishLaunchingWithOptions:) 设置defaultConfiguration(schemaVersion、migrationBlock、fileURL 等和encryptionKey)的方法,然后实例化任何Realms。稍后,Realms 在整个应用程序中使用此 defaultConfiguration 实例化。 像这样:

// AppDelegate
   var config = Realm.Configuration.defaultConfiguration
   config.schemaVersion = 5
   config.migrationBlock = { migration, oldSchemaVersion in ... }
   config.encryptionKey = KeychainManager.getRealmEncryptionKey()
   Realm.Configuration.defaultConfiguration = config

// Somewhere else, later
   Realm()

将 encryptionKey 放入 defaultConfiguration 是否安全?运行时 defaultConfiguration 存储在哪里,从中提取密钥有多容易?

或者更好的方法是在每个 Realm 实例化时从 Keychain 请求加密密钥,并将其放入自定义配置中,该配置仅在 Realm 实例的生命周期内出现在内存中?像这样:

// AppDelegate
   var config = Realm.Configuration.defaultConfiguration
   config.schemaVersion = 5
   config.migrationBlock = { migration, oldSchemaVersion in ... }
   Realm.Configuration.defaultConfiguration = config

// Somewhere else, later
   var configTemp = Realm.Configuration.defaultConfiguration
   configTemp.encryptionKey = KeychainManager.getRealmEncryptionKey()
   Realm(configuration: configTemp)

【问题讨论】:

    标签: ios swift security realm keychain


    【解决方案1】:

    将 encryptionKey 放入 defaultConfiguration 是否安全?运行时 defaultConfiguration 存储在哪里,从中提取密钥有多容易?

    密钥存储在领域配置的内存中。如果您想知道一个单独的进程突破 iOS 沙箱的可能性有多大,请检查您的应用程序的内存并从中提取密钥……假设这将是对最高操作系统的利用学位和苹果将面临公关灾难。

    所以说真的,你应该做对你最方便的事情。只要您不将加密密钥以明文形式保存在磁盘上,您就会尽可能地安全。

    【讨论】:

      猜你喜欢
      • 2018-11-04
      • 1970-01-01
      • 2012-08-05
      • 2014-10-18
      • 2015-07-04
      • 2015-11-24
      • 2014-06-24
      • 2018-03-16
      相关资源
      最近更新 更多