加密种子的Android设备/帐户特定ID

AC2*_*2MO 6 encryption android user-experience uniqueidentifier

这可能是以前以多种形式提出过来的问题,但是我还没有看到它问过这个问题,我想对如何继续提出一些意见.

我正在开发一个应用程序,它需要将凭据存储到设备上的第三方Web服务.我希望加密这些凭据,但我也不希望将种子存储在设备上的代码/中以防止可能的劫持.该应用程序还支持使用Googles云备份功能进行备份,进一步需要加密.

我的想法是,如果我能找到一个唯一的标识符,那可以用作种子.有一些奇怪的要求使这很困难.

  1. 在所有情况下,对于给定的硬件/用户组合,ID必须是唯一的和相同的.
  2. 它不能简单地绑定到设备或用户,它必须是两者的组合.
  3. 必须提供无关紧要的东西; Wifi和蓝牙MAC地址是不可能的,因为它们在关闭时在某些设备上不可用.
  4. 根据我的阅读,TelephonyManager ID(SIM等)并非在所有设备上都可用.
  5. 根据我的阅读,ANDROID_ID将不会出现在任何情况下.
  6. 该应用程序将在多个市场(例如Amazon Appstore)发布,因此Google帐户不一定会出现.
  7. 进行工厂擦除不应影响用于生成此ID的任何内容(这样用户可以不间断地备份,擦除和恢复).
  8. 执行OTA升级不应影响用于生成此ID的任何内容(请参阅上述原因).
  9. 如果他们必须在卸载/重新安装后重新进行身份验证,这是可以的.

我明白这个值显然可以被其他应用程序检索,这就是为什么我打算哈希它,进一步播种应用程序UID以及<你的建议在这里>.

如果有人觉得这些要求不切实际,我也想听听.

特别是鉴于最近的黑客马拉松,我希望能够至少说"如果有人可以妥协,那么手机上没有任何东西是安全的".

mah*_*mah 0

为了确保安全,您的要求是合理的,但正如您所怀疑的那样,它们是不切实际的。Android 设备支持级别之间存在太多差异,无法使其成为现实。