多くの人と同じように、私は共有コードベース (Windows ストア + Android + MonoTouch + [後で] WP8) を使用してアプリを開発しています。
また、多くのアプリと同様に、このアプリのために永続化する必要があるローカル状態があります。
私が保存する情報の 1 つは、サインインしているユーザーの認証トークンです。ApplicationData.Current.RoamingSettings
Windows ストア プラットフォームでは、トークンの補助データ (ユーザー名と発行日) とPasswordVault
実際のトークン値のローミング設定 ( ) を組み合わせて、このストレージを実装しました。したがって、トークンは OS によって暗号化されるため、OS レベルのイントロスペクションから保護されます。
現在、MonoDroid ビルドに同じインターフェイスを実装していますが、パスワード ボールトを使用できるのと同じ方法で、アプリケーションによってのみ復号化できるデータを格納する方法がプラットフォームによって提供されていることがわかりません。ストア アプリ用。
その結果、現時点ではAndroid.Content.ISharedPreferences
、メソッドを介してインターフェイスを使用しApplication.Context.GetSharedPreferences
てこれらの値を読み書きするだけです。
プラットフォーム (MonoDroid または Android) が安全なストレージ OOB を提供しないという私の仮定は正しいでしょうか? アプリ内に暗号化を実装する唯一の代替手段はありますか?もちろん、暗号化キーをコードに焼き付ける必要がありますか? または、アプリの署名に使用された証明書を取得して、それをキーとして使用できますか?
いずれにせよトークンには時間制限があるため、このデータを暗号化できなくても、最終的には世界の終わりではありませんが、実際に適切に暗号化できればいいのですが!