Android设备/账户特定ID用于加密种子

6
这可能是一个常见的问题,以多种形式被问过,但我没有看到过这样的提问方式,我想听听如何处理。
我正在开发一个应用程序,需要在设备上存储第三方网络服务的凭据。我希望这些凭据被加密,但我也不希望将种子存储在代码/设备上,以防止可能的劫持。该应用程序还支持使用Google云备份功能进行备份,进一步需要加密。
我的想法是,如果我能找到一个唯一的标识符,那么它可以用作种子。有一些奇怪的要求使这很困难。
1. ID必须是唯一的,并且在所有情况下都相同,对于给定的硬件/用户组合。 2. 它不能简单地绑定到设备或用户,它必须是两者的组合。 3. 它必须在任何情况下都可用; Wifi和蓝牙MAC地址不可行,因为它们在关闭时在某些设备上不可用。 4. 根据我所读到的,TelephonyManager IDs(SIM等)并非在所有设备上都可用。 5. 根据我所读到的,ANDROID_ID在所有情况下都不会出现。 6. 应用程序将发布在多个市场(例如Amazon Appstore),因此Google帐户不一定存在。 7. 进行出厂重置不应影响用于生成此ID的任何内容(这样用户可以备份,擦除和恢复而不会中断)。 8. 进行OTA升级不应影响用于生成此ID的任何内容(请参见上述原因)。 9. 如果他们在卸载/重新安装后需要重新验证,则可以。
我知道其他应用程序显然也可以检索此值,这就是为什么我打算哈希它,进一步由应用程序UID种子化以及<您的建议>。
如果有人觉得要求不切实际,我也想听听。
尤其是考虑到最近的黑客马拉松,我希望至少能够说“如果有人能够破解这个,你手机上的任何东西都不安全”。

3
我很好奇你最后做了什么?你能分享一下你的经历吗? - tasomaniac
1个回答

0

您的要求是合理的,以确保安全性,但正如您所怀疑的那样,它们是不现实的。由于Android设备支持水平存在太多差异,因此这是不切实际的。


感谢您提出“合理确保安全”的观点。我怀疑有些人仍然会回答“所有这些都是不必要的”,无论是否可行。 - AC2MO
不幸的是,我已经决定放弃上述的三个要求了;我想我所能做的就是尽力而为。 - AC2MO

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接