6

API キー、データベース暗号化キーなどをアプリ コードに格納して、誰もコードを逆コンパイルして取得できないようにするのに最適な場所はどこですか? コードを難読化するためにプロガードを使用しましたが、文字列では機能しませんでした。

4

1 に答える 1

4

それらをアプリに保存する方法はありません。アプリは、アプリのメモリへのより多くのアクセスを提供する変更されたデバイスで逆コンパイルまたは実行される可能性があります。または、攻撃者がアプリを変更して、ネットワークまたはストレージ/データベース トラフィックなどの追加のログを追加することができます。

サーバーへの認証のために、アプリはおそらく、ユーザーが入力した資格情報をそのような認証トークンと交換するか、AccountManager または同様の API からこれらの認証トークンを取得することによって、認証トークン (または類似のもの) を取得する必要があります。また、SafetyNet Attest API ( https://developer.android.com/training/safetynet/index.html ) を使用して、リクエストを行っているのが署名キーで署名されたアプリであることをサーバーに証明することもできます。

データベース暗号化の場合、アプリはデバイス上でランダムな暗号化キーを生成し、ユーザーが入力した資格情報にリンクするか、Android Keystore に保存するか、単に Android がアプリに提供する保護に依存することができます。脅威モデルによって異なります (つまり、なぜデータベースを暗号化する必要があると思いますか?)

于 2016-04-10T17:15:18.680 に答える