【问题标题】:Android SafetyNet Attestation Nonce QuestionAndroid SafetyNet Attestation Nonce 问题
【发布时间】:2021-04-13 17:12:15
【问题描述】:

用于实现认证 API 的 Google instructions 是:

Obtain a nonce.
Request a SafetyNet attestation.
Transfer the response to your server.
Use the response on your server, along with your other anti-abuse signals, to control your app's behavior.

我知道 nonce 应该从服务器获取。如何阻止攻击者运行两个版本的应用程序 - 一个在合法设备上,一个在不安全设备上,并执行以下操作:

  1. 不安全设备上的应用从我的服务器获取随机数
  2. 安全设备上的应用使用此 nonce 调用 Google 的证明 API
  3. 安全设备上的应用从 Google 获得签名的 JWS 响应
  4. 攻击者将 JWS 响应传输到不安全设备上的应用程序
  5. 不安全设备上的应用程序向我的服务器发送 JWS 响应

我的应用服务器会验证 JWS(包括随机数)并认为不安全设备上的应用实际上是安全的。

【问题讨论】:

    标签: android safetynet safetynet-api


    【解决方案1】:

    这并不像听起来那么简单。 例如,如果您使用证书固定,那么中间人攻击几乎是不可能的。

    所以现在可以选择对应用程序进行逆向工程并捕获 JWS,在这里您可以添加混淆以使逆向工程更难。

    如果他掌握了 JWS,您可以限制 JWS 存储在后端的可用时间,并使其更难使用(可能只允许 JWS 存储 5 分钟或更短时间)到“无效”。

    正如谷歌所提到的,如果你从用户将通过当前请求发送到服务器的一些数据构建你的随机数,攻击者还需要在请求中包含这些数据,因为你可以简单地反向计算随机数(如果你已经存储了最终的 nonce + 你计算的随机数据)并且如果这不匹配你可以简单地拒绝请求。

    此外,如果设备是安全的,攻击者不应该只从中提取随机数。

    请谨慎对待这一切,因为我不是安全专家。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 2017-12-30
      • 2022-08-16
      • 2022-08-05
      相关资源
      最近更新 更多