私はリバースエンジニアリングの経験があり、Androidで静かにデータベースにアクセスする人々がいます。作成時にデータベースのみを暗号化して(apk全体を難読化するのではなく)、実行時にデータベースを使用する方法があるかどうかを知りたいです。
私はデータベースに関する知識が少ないので、アセットフォルダー内のDBを保護するための提案は恩恵のようになります。
アプリに含まれる情報を保護することはできません。それは不可能だ。
攻撃者はすべてのコードを元に戻すことができます。
攻撃者は、すべてのコードの難読化を解除できます。
プリロードされ、暗号化されたDBファイルは、アプリに保存されているキーを使用して復号化できます。
特にこのようなコードでは:
String dbPath = this.getDatabasePath("Encrypted.db").getPath();
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbPath,
**DATABASEKEY**, null);
SQLCipherは、攻撃者からユーザーデータを保護することを目的としたものではありませんが、他のアプリからユーザーデータを保護するために存在します。
あなたの努力は攻撃者をわずかに遅くします。
アプリで機密データを保存したい場合は、アプリやデータディレクトリに保存しないでください。サーバーと通信するようにアプリを設計しますが、それは考慮すべき他のすべての混乱をもたらします(Webアプリのセキュリティ)。
テーブル全体ではなく、テーブルに格納している文字列を暗号化する方が現実的かもしれません。たとえば、パスワードを直接保存する代わりに、パスワードのハッシュを保存します。