在与后端服务器的任何后续通信中,假设 idtoken 提供的安全性不比用自身的(可能加盐的)SHA2 哈希替换它更安全,这是否正确?
预定流程如下:
- Android 应用从 Google 获取 idtoken
- 应用程序将 idtoken 发送到自托管后端服务器,后端使用 gitkitclient.VerifyGitkitToken 对其进行验证
- 后端创建令牌的 SHA2 哈希以及到期日期和关联的用户 ID,并将其存储在查找表中以供将来参考
- Android 应用程序会创建与 idtoken 相同的 SHA2 哈希,并在以后与后端的任何通信中将其传递到标头中,而不是使用 idtoken 进行后续通信。
这会以任何方式降低系统的安全性吗?
如果具有 https 检查的透明代理(以及设备上安装的相应证书,即合法地在公司环境中)会嗅探流量,则获取 idtoken 或它的 SHA2 哈希将没有区别,该透明代理将能够在 idtoken 的整个生命周期内代表 Android 应用程序(可能以粗鲁的方式)采取行动,对吗?
我的问题是在每次与服务器的后续通信时调用 gitkitclient.VerifyGitkitToken 太昂贵了,一旦确定了 idtoken 的有效性,就没有必要了。
我也不希望将 idtoken 存储在服务器上以供将来参考,而是更喜欢它的哈希值。idtoken 的 SHA224 哈希是否足够,是否可以安全地假设它不会导致任何冲突?