14

多くの人と同じように、私は共有コードベース (Windows ストア + Android + MonoTouch + [後で] WP8) を使用してアプリを開発しています。

また、多くのアプリと同様に、このアプリのために永続化する必要があるローカル状態があります。

私が保存する情報の 1 つは、サインインしているユーザーの認証トークンです。ApplicationData.Current.RoamingSettingsWindows ストア プラットフォームでは、トークンの補助データ (ユーザー名と発行日) とPasswordVault実際のトークン値のローミング設定 ( ) を組み合わせて、このストレージを実装しました。したがって、トークンは OS によって暗号化されるため、OS レベルのイントロスペクションから保護されます。

現在、MonoDroid ビルドに同じインターフェイスを実装していますが、パスワード ボールトを使用できるのと同じ方法で、アプリケーションによってのみ復号化できるデータを格納する方法がプラットフォームによって提供されていることがわかりません。ストア アプリ用。

その結果、現時点ではAndroid.Content.ISharedPreferences、メソッドを介してインターフェイスを使用しApplication.Context.GetSharedPreferencesてこれらの値を読み書きするだけです。

プラットフォーム (MonoDroid または Android) が安全なストレージ OOB を提供しないという私の仮定は正しいでしょうか? アプリ内に暗号化を実装する唯一の代替手段はありますか?もちろん、暗号化キーをコードに焼き付ける必要がありますか? または、アプリの署名に使用された証明書を取得して、それをキーとして使用できますか?

いずれにせよトークンには時間制限があるため、このデータを暗号化できなくても、最終的には世界の終わりではありませんが、実際に適切に暗号化できればいいのですが!

4

2 に答える 2

1

Keychain API (API レベル 14 以降で使用可能) と、Keychain API からの証明書を使用してCipher APIでデータを暗号化することを組み合わせて使用​​できます。

注意: Android セキュリティの概要ドキュメントによると、デバイスがルート化されているかどうかの保証はありません: http://source.android.com/tech/security/index.html#rooting-of-devices

于 2013-06-13T04:36:41.093 に答える
0

たぶん、ここからのこの引用があなたを助けることができます:

Android 側では、パブリック API で OOB がサポートされていないため、注意が必要です。これは、Honeycomb 3.2 には公式に OOB ボンディングをサポートする bluez スタックがないためだと思いますが、Google にはある種の実装がコード化されています。Bluetooth アダプターと Bluetooth デバイス クラスのジンジャーブレッド ソース コードを見ると、ドキュメント化された API を介して公開されていないが、使用可能な OOB メソッドを参照してください。

これらのメソッドはまだ公開されているため、リフレクションを通じて呼び出すことができます。リフレクションを使用すると、クラス内のすべてのメソッド シグネチャを取得することもできます。これが、私が利用できる方法を見つけた方法です。

ただし、多くは文書化されておらず、何をしているのか明らかではないことに注意してください。注意すべき重要なものは、アダプタ クラスの readOutOfBandData() とデバイス クラスの setDeviceOutOfandData() です。

于 2013-06-08T17:47:49.483 に答える