2011-11-12 10 views
0

私はAndroid用のビデオゲームを開発しています。これは、ローカルのSQLiteデータベースにユーザの統計情報、実績、オブジェクトなどを保存するオンラインゲームになります。アンドロイドのセキュリティとSQLite

セキュリティを考える...私は、ユーザーがrooted Androidデバイスに保存されているすべてのデータベースを編集できることを読んだ。私はユーザーがゲームのデータベースを編集できるようにしたくありません。

どうすればいいですか? DBを本当に安全にするオプションはありますか?パスワード?暗号化?

ありがとうございました

+2

これは本当に安全な方法ではありません。ルートされた端末では、アプリを読み込むこともできます。暗号化に使用するパスワード。ただし、暗号化によって攻撃者にとってはもう少し難しくなります。 – JimmyB

答えて

0

何もオンラインではない場合、私はあなたができることはわかりません。あなたはそれをもっと難しくすることができますが、絶対に安全であるとは思わないでしょう。私は、チェックポイントでdbのスナップショットをとり、それをサーバーに送り、(基本的に)ユーザーによってデータが変更されていないことを確認することです。ハッシュが正しく表示されない場合は、アカウント(または何でも)を壊すことができます。

あなたが深刻なゲームをしていない限り、私はあまりにも狂っていません。

1

特定の攻撃者がデバイス上の任意のデータを取得できます。デバイスをデータベースに格納する前にデバイス上のデータを暗号化している場合は、デバイスにキーを設定する必要があり、決定された攻撃者は、デバイスのメモリに格納されているか保持されているキーを取得できます。

暗号化は、信頼できないデバイス(単にストレージ)で暗号化も復号化も行われない場合のみ有効です。信頼できるマシン上の機密データを暗号化し、暗号化されたビットをデータベースに格納して、後で信用するマシンで解読することができます。

これを保護するためにパスワードを使用することはできません。デバイスメモリに保存されたパスワードまたはデバイスに保存されたパスワードは、簡単に秘密の暗号化キーとして読み取ることができます。

ユーザーがDBからデータを読み取ってもデータを書き込めないように気にかけない場合、格納する前に信頼できるマシンによって重要なデータsignedを持つことができます。その後、デバイスが信頼できるマシンに接続している場合、その重要なデータが改ざんされていないことを確認するために署名をチェックできます。

EDIT:

あなたはかなりextraordinary lengthsに行くために喜んでいる場合を除きあなたが信頼できないデバイス上で実行されたすべての計算を信頼することはできません - あなたが行うことができる唯一のことは、署名を経て信頼されていないシステムを経由するデータを検証しています暗号化を介してデータを通過するデータに対する信頼できないシステムによる盗聴を防止します。

+0

私はユーザーがBDを読むことができるかどうかは気にしないが、私は彼らがそれを変更できることを望んでいない...私もサーバーを持っているので、それで何かできますか?つまり、サーバーにパスワードを保存することができます。ゲームにログインするときに取得して、DBに入力してください...それは解決策ですか? – Frion3L

+0

@ user949336、私の編集をご覧ください。途中で計算を行う必要がある計算は、計算を安全にするために文字化けした回路やその他の遅くて厄介なアプローチを実装しない限り、あなたのコントロール下にあるサーバ上で実行する必要があります。DBに格納するパスワードは、デバイスに物理的にアクセスできる人が誰でも取得できるデバイスファイルシステムへのrootアクセス権を持つ人が読むことができます。 –

関連する問題