【问题标题】:Android device/account specific ID for encryption seed用于加密种子的 Android 设备/帐户特定 ID
【发布时间】:2011-06-24 18:18:49
【问题描述】:

这可能是一个加载的问题,之前已经以多种形式提出过,但我还没有看到它是这样问的,我想就如何继续提出一些意见。

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

我的想法是,如果我能找到一个唯一标识符,就可以将其用作种子。有一些奇怪的要求使这变得困难。

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

我知道这个值显然可以被其他应用程序检索到,这就是为什么我打算对它进行哈希处理,并通过应用程序 UID 以及 进一步播种。

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

特别是考虑到最近的黑客马拉松,我希望至少能够说“如果有人可以破坏这个,那么你手机上的任何东西都是安全的”。

【问题讨论】:

  • 我很好奇你最后做了什么?你能分享你的经验吗?

标签: android encryption user-experience uniqueidentifier


【解决方案1】:

您的要求是合理的以确保安全,但正如您所怀疑的那样,它们是不切实际的。 Android 设备支持的级别差异太大,无法实现。

【讨论】:

  • 感谢您提出“合理确保安全”的观点。我怀疑有些人仍然会回答“所有这些都是不必要的”,无论它是否可行。
  • 不幸的是,我决定放弃上面的 3 个要求;我想我能做的就是尽我所能。
猜你喜欢
  • 1970-01-01
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-06
  • 2021-10-07
相关资源
最近更新 更多