2016-12-06 2 views
1

My Realm dbは暗号化されています。 encryptionKeyはKeychainに格納されます。この鍵を管理するより安全な方法は何ですか?defaultConfigurationに暗号化キーを保存するのは安全ですか?

現在、RealSがインスタンス化される前に、application(application:didFinishLaunchingWithOptions:)からdefaultConfiguration(schemaVersion、migrationBlock、fileURL、etcおよびencryptionKeyも同様)を設定するメソッドを呼び出しています。その後、レルムはアプリケーション全体でこの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() 

それはdefaultConfigurationにencryptionKeyを入れても安全ですか?実行時にdefaultConfigurationがどこに格納され、そこからキーを押し出すのが簡単でしょうか?

また、RealmインスタンシエーションごとにKeychainからencryptionKeyを要求し、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) 

答えて

0

defaultConfigurationにencryptionKeyを入れて、それは安全ですか?実行時にdefaultConfigurationがどこに格納され、そこからキーを押し出すのが簡単でしょうか?

キーは、レルム構成でメモリに格納されます。別のプロセスがiOS Sandboxから抜け出す可能性があるのであれば、あなたのアプリのメモリを調べ、そこからキーを抽出してください...これは最高のOSアップルはPR災害に遭うだろう。

本当に、あなたにとって最も便利なことをする必要があります。暗号化キーを平文でディスクに保存しない限り、実際にできるほど安全です。

関連する問題