2011-01-20 14 views
3

自分のiOS SQLiteファイルを暗号化することができるかどうか尋ねられました。
私はこの2つのリソースがチェック:それは可能だろうが、(私が間違っている場合、ファイルは暗号化されますので、誰もそれにクラックすることができなくなり、私を修正してくださいiOS上のSQLiteデータベースファイルの暗号化

Encrypt & Decrypt Sqlite file (Using Core Data)
http://support.apple.com/kb/HT4175

を私は思っています)。

コアデータクエリは通常どおり実行されますか?つまり、異なるAPIでなくてもパフォーマンス上のペナルティはありません。

答えて

3

提供されたリンクは、デバイス全体のストレージを暗号化することについて話します。しかし、ユーザーがデータベースファイルを直接開くことができないことが目標である場合、保護する唯一のものは、デバイスが盗難された場合にデータにアクセスすることだけです。それはまた、それを設定するためにユーザーに依存して、アプリは、デバイスストレージが暗号化されていることを強制することはできません。

基本的に、ストレージを暗号化したいという意欲は何ですか?

EDIT:

http://sqlcipher.net/

良い解決策です:

応答チェーンに基づいて、私はでSQLLiteの暗号化されたバリアントを使用すると思います。これにより、ストレージに達する前にデータベースの内容が暗号化されます。攻撃者は引き続きデータベースの暗号を解読するためにコードで使用されているキーを見つけることができるかもしれませんが、追加することができる防御レイヤーは役に立ちます。私はあなたがCoreDataであることを使用することができないと思います(それが組み込みのsqlliteライブラリの上に構築されているとして)しかし、あなたはおそらく、FMDBのようなラッパーでそれを使用することができます。

https://github.com/ccgus/fmdb

+0

を私のクライアント暗号化したいですユーザーがデータベースファイルを直接開くのを防ぐために、データベースファイルを作成します。この場合、どうしたらいいですか? – Chiron

+0

ユーザは通常、ライブラリディレクトリに置かれている限り、データベースファイルにアクセスできません。 jailbrokenユーザーはどのファイルにもアクセスできます。暗号化されたファイルに対してCoreDataを使用することはできません。妥協のための最善の策は、目に見えているかもしれません。アプリケーションが閉じられたり中断されたときに、データベースファイルの前にいくつかの無意味なバイトを書き込んで、再び起きたときに無意味なバイトを削除することができます。欠点は、コードを間違えた場合、ユーザーが保持していたすべてのデータを簡単に失う可能性があることです。 –

+0

http://sqlcipher.net/はどうですか?この状況で私を奉仕することができますか?私はそれを採用してAppStoreのいくつかの障害を期待する必要がありますか?それは許されますか? – Chiron

関連する問題