安卓通过Monodroid开箱即用的安全存储设备是什么?

And*_*tan 14 c# android xamarin.android

像许多人一样 - 我正在开发一个带有共享代码库的应用程序(Windows Store + Android + MonoTouch + [稍后] WP8).

此外,与许多应用程序一样,我有本地状态,我需要坚持这个应用程序.

我存储的一条信息是登录用户的身份验证令牌.在Windows应用商店平台上,我已经实现了存储,其中包含ApplicationData.Current.RoamingSettings令牌辅助数据(用户名和发布日期)的漫游设置()和PasswordVault实际令牌值的混合.因此,令牌受到OS级内省的保护,因为它是由OS加密的.

现在我正在为我的MonoDroid构建实现相同的界面,我无法看到平台提供的任何方式来存储只能由我的应用程序解密的数据 - 就像可以使用密码库一样对于商店应用.

因此,目前,我只是Android.Content.ISharedPreferences通过该Application.Context.GetSharedPreferences方法使用接口来读取和写入这些值.

所以我认为平台(MonoDroid或Android)不提供安全存储OOB是正确的吗?是否是在应用程序中实现加密的唯一选择 - 这当然需要将加密密钥烘焙到代码中?或者我可以获取用于签署应用程序的证书并将其用作密钥吗?

最终,它不是世界的末日,如果我不能加密这些数据,因为令牌有时间限制的呢-但它会是如果我能真正做到这一点很好的正确!

Ale*_*ado 0

也许这里引用的这句话可以帮助你:

在 Android 端,公共 API 不支持 OOB,因此事情变得很棘手。我相信这是因为 Honeycomb 3.2 没有正式支持 OOB 绑定的 bluez 堆栈,但 Google 已经编码了某种实现。我相信这一点是因为如果您查看蓝牙适配器和蓝牙设备类的姜饼源代码,您可以查看可用但未通过记录的 API 公开的 OOB 方法。

这些方法仍然是公共的,因此您可以通过反射来调用它们。使用反射,您还可以获取类中的所有方法签名。这就是我如何弄清楚我可以使用哪些方法。

请注意,尽管许多内容没有记录在案,而且有些内容的作用并不明显。需要注意的重要内容是适配器类中的 readOutOfBandData() 和设备类中的 setDeviceOutOfandData()。