【发布时间】:2011-06-24 18:18:49
【问题描述】:
这可能是一个加载的问题,之前已经以多种形式提出过,但我还没有看到它是这样问的,我想就如何继续提出一些意见。
我正在开发一个应用程序,该应用程序需要将凭据存储到设备上的第三方 Web 服务。我希望对这些凭据进行加密,但我也不想将种子存储在代码中/设备上以防止可能的劫持。该应用程序还支持使用 Google 的云备份功能进行备份,因此需要进一步加密。
我的想法是,如果我能找到一个唯一标识符,就可以将其用作种子。有一些奇怪的要求使这变得困难。
- 在所有情况下,对于给定的硬件/用户组合,ID 都必须是唯一且相同的。
- 它不能简单地绑定到设备或用户,它必须是两者的组合。
- 无论如何它都必须可用; Wifi 和蓝牙 MAC 地址是不可能的,因为它们在关闭时在某些设备上不可用。
- 据我了解,TelephonyManager ID(SIM 等)并非在所有设备上都可用。
- 据我所知,ANDROID_ID 并非在所有情况下都存在。
- 该应用将在多个市场(例如亚马逊应用商店)发布,因此不一定存在 Google 帐户。
- 进行工厂擦除不应影响用于生成此 ID 的任何内容(这样用户就可以不间断地备份、擦除和恢复)。
- 进行 OTA 升级不应影响用于生成此 ID 的任何内容(参见上述原因)。
- 如果他们必须在卸载/重新安装后重新进行身份验证,这是可以的。
我知道这个值显然可以被其他应用程序检索到,这就是为什么我打算对它进行哈希处理,并通过应用程序 UID 以及
如果有人觉得要求不切实际,我也想听听。
特别是考虑到最近的黑客马拉松,我希望至少能够说“如果有人可以破坏这个,那么你手机上的任何东西都是安全的”。
【问题讨论】:
-
我很好奇你最后做了什么?你能分享你的经验吗?
标签: android encryption user-experience uniqueidentifier