これを行う簡単な方法はありません。ディレクトリをパスワードで保護する (ただし、パスワードは apk に保存する必要があります)、API キーを使用する (ただし、apk に保存する必要があります) など、いくつかの方法があります。
1 つのオプションは、ある種の複雑なアルゴリズムを使用して文字列パスを動的に構築することです。これにより、プロガードの難読化が役立ちます。ただし、結局のところ、パケット インスペクションに対して脆弱なままです (HTTPS を使用していないと仮定します)。また、アプリ上で実行され、サーバー上で実行される共有シークレット ジェネレーター (基本的には、時間に基づいて一見ランダムなキーを生成するアルゴリズム) を構築することもできます。値は実行時に比較され、一致する場合はファイルが提供されます。繰り返しになりますが、プロガードの難読化は、アルゴリズムがどのように機能するかを理解するのを難しくします。
別のオプションは、Android のプライベート スペースを利用することです。電話がルート化されたら困るが、助けにはなるだろう。基本的にこのアルゴリズムに従います:
- インストール時にアプリに一意の ID を生成させる
- 一意の ID をサーバーに送信し、サーバーはそれを記録して対称キーを生成します
- 対称キーをアプリのプライベート ストレージ スペースに保存する
- リクエストが行われるたびに、一意の ID がリクエストとともに送信されます
- サーバーは、以前に生成されたキーをデータベースから取得し、それを使用して提供されるファイルを暗号化します
- 次に、アプリはアプリのプライベート ストレージ領域からキーを読み込み、ファイルを復号化します