像许多人一样 - 我正在开发一个具有共享代码库的应用程序(Windows Store + Android + MonoTouch + [后来的] WP8)。
此外,与许多应用程序一样,我需要为该应用程序保留本地状态。
我存储的一条信息是登录用户的身份验证令牌。在 Windows 应用商店平台上,我使用令牌辅助数据(用户名和发行日期)的漫游设置 ( ApplicationData.Current.RoamingSettings
) 和PasswordVault
实际令牌值来实现存储。因此,令牌受到操作系统级别内省的保护,因为它是由操作系统加密的。
现在我正在为我的 MonoDroid 构建实现相同的接口,但我看不到平台提供的任何方式来存储只能由我的应用程序解密的数据 - 就像可以使用密码库一样商店应用程序。
因此,目前,我只是Android.Content.ISharedPreferences
通过方法使用接口Application.Context.GetSharedPreferences
来读取和写入这些值。
那么我的假设是否正确,即平台(MonoDroid 或 Android)不提供安全存储 OOB?是在应用程序中实现加密的唯一替代方案 - 当然需要将加密密钥烘焙到代码中?或者我可以获取用于签署应用程序的证书并将其用作密钥吗?
最终,如果我不能加密这些数据,这不是世界末日,因为令牌无论如何都是有时间限制的——但如果我真的能正确地做到这一点,那就太好了!