0

Google实施证明 API的说明如下:

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.

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

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

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

4

1 回答 1

0

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

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

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

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

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

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

于 2021-11-21T20:40:56.247 回答