2016-05-29 24 views
2
  1. 私のアプリのデータベースを保護したいのですが?
  2. SQLCipherを使用するために必要なことは何ですか?

答えて

6

特に、アプリケーションがユーザーの財務情報、セキュリティで保護されたメモ、パスワードなどを処理する場合、ユーザーのデータに対する追加保護を実装することは本当に良い考えです。デフォルトでは、データベースは暗号化されません。その唯一の保護形式は、他のアプリケーションからサンドボックス化されていることです。このアプローチは、ユーザが携帯電話を失った場合にアクセス可能であることから、データを保持するのに役立ちますNSFileProtectionKey

  • を使用して

    • :この目的のために

      次の方法のいずれかを使用することができます。

    • NSDictionary *storeOptions = @{ NSPersistentStoreFileProtectionKey : NSFileProtectionComplete };
    • [coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[self storeURL] options:storeOptions error:&error])
    • NSFileProtectionComplete - ファイルは、ディスク上の暗号化された形式で格納され、デバイスがロックされ又は起動中から読み出しまたは書き込みすることができません。
    • パスコードが設定されていない場合、または攻撃者が物理アクセスを取得してデバイスのロックを解除できる場合、デバイスが脱獄されたときにデータベースファイルとそのコンテンツにアクセスできます。
    • 役立ちリンク
  • 変換可能では、複数の暗号化キーを使用する必要がある場合や、このオプションは、のために十分である
    • 属性暗号化する特定の属性だけをptします。 Details here
    • SQLCipher
      • あなたがSQLCipherを使用することができ、データベース全体のファイルを暗号化する必要がある場合
    • 。透過的な256ビットAES暗号化を提供するSQLiteのオープンソース拡張です。
    • 、あなたはいくつかのことについて警告する必要があります:パフォーマンスの
      • ややドロップ - SQLCipherは、I/Oデータベースに約5〜15%のオーバーヘッドを主張します。
      • SQLiteを使用する場合は、アプリケーションのサイズを大きくする必要があります。システムの組み込みSQLiteライブラリを使用する代わりに、SQLCipherのコピーを埋め込む必要があります。
      • あなたはzeleteticのofficial tutorialだけ
        • pod 'SQLCipher'
        cocoapodを使うのを読むことができるあなたはSQLCipherをインストールするにはERN(BISから暗号登録の承認)
    • を取得する必要がある状況にすることができますがあります
    • 既存のデータベースを暗号化するには、sqlcipher_export()を使用する必要があります。 Example
    • SQLCipherとCoreData
      • CoreDataはSQLCipherを直接操作しませんが、あなたがその目的のために、このprojectを使用することができます
+0

グレート概要 - 私は、第二のラッピング用EncryptedCoreDataを使用してコアデータのSQLCipher。 – sschale

+0

@sschaleありがとう!短い調査の結果として要約を書くのは私の最初の試みです。私はそれが誰かに役立つことを願っています。私は後で詳細を追加しようとします。 –

関連する問題