ユーザーがオフラインのときに質問と回答をキャッシュしたいAndroidアプリ、クイズゲームを作成中です。この問題は、ユーザーが質問に回答するまでこのデータを保留する必要があることです。そうしないと、不正行為は非常に簡単になり、ゲームに害を及ぼすことになります。その後、すべての質問+回答を抽出し、自動的にサーバーAPIに回答を提出することができます。Androidデバイスの情報を暗号化する(ユーザーからのアクセスから妥当な保護を受ける)
最も便利なのは、インストール時にサーバーからキーやシークレットを取得し、「どこかに」隠して、サーバーとの通信やストレージ内の質問+回答の暗号化に使用することです。しかし明らかに、それをどこかに隠すことは、安全なコンセプトではありません。
私は少し研究しましたが、アプリは秘密(証明書、パスフレーズ+塩など)を知っていなければならないので、信頼できる暗号化は不可能ですそれが見つかる可能性があり、これは逆コンパイルによって抽出することができます。しかし、私たちはそれができるほど難しいことで大丈夫でしょう。
質問:通常のユーザーがAPKから秘密情報を取得することを禁じられています。つまり、自動化されたキー抽出プログラムを作成することが不可能に近くなっていますか?
私の最高の推測では、これまで:
- 隠す、データベース内のいくつかの情報とキー のための塩としてそれを使用
- は、塩(IMEI、電子メールアドレスなどのデバイスからの情報のいくつかのビットを追加します。シリアル番号、...) - おそらく難読化と一緒に、塩がどのように適用されるかは難しいでしょうか?
回答形式は何ですか?間違った答えに対するペナルティは何ですか?確かに多項選択のためにそれはかなり簡単です。 –
答えは多項選択列挙型(1からnの正しい選択肢)、プレーンテキスト、数字、または画像座標範囲(パズルピクチャ)のいずれかです。もちろん、我々はまた、答えが正しいかどうかを決定するアルゴリズムを適用します - 平文回答のためのlevenshtein distanceのように。 – manmal
複数の選択肢の質問については、難読化が簡単です。ユーザーは常にエミュレータでそれらのすべてを試して、間違った答えのスナップショットから復元することができます。 –