我需要有一个选项来存储通过 SSH 隧道通信的应用程序的身份验证密钥或密码。在不需要用户输入密钥的情况下,最安全的存储方式是什么。
我可以从用户的谷歌帐户获得一些独特和秘密的东西,用作存储偏好的加密密钥吗?这样,恶意方将需要访问用户的谷歌帐户和加密的偏好才能造成任何伤害。
我需要有一个选项来存储通过 SSH 隧道通信的应用程序的身份验证密钥或密码。在不需要用户输入密钥的情况下,最安全的存储方式是什么。
我可以从用户的谷歌帐户获得一些独特和秘密的东西,用作存储偏好的加密密钥吗?这样,恶意方将需要访问用户的谷歌帐户和加密的偏好才能造成任何伤害。
SharedPreferences 基本上类似于 cookie,它们被广泛用于身份验证。仅使用密码进行首次身份验证,稍后使用生成的令牌。
如果您担心有人会丢失他们的手机,您可以添加远程销毁数据或使用密码加密的选项,尽管反向哈希是可能的。
听起来Google OAuth将非常适合您的情况,结合将用户令牌存储在 sharedpreferences 中并使用 SSL。
如果用户设备被获得 root 的恶意方入侵,那么您应该假设他们已经检索了设备上的任何令牌。也就是说,令牌通常具有有限的有效期,如果您怀疑它们已被盗用,可以将其撤销。
已经在 SO 上提出了一个类似的问题,对此有一个很好的答案。