SafetyNet api ,从服务器而不是客户端获取随机数

SafetyNet api ,get nonce from server rather than the client

我正在使用这个库: https://github.com/scottyab/safetynethelper
我已阅读 Android Developer 站点和存储库中的文档。 一切正常,但我不清楚。 这表明从服务器获取随机数比在应用程序上创建随机数更安全 self.and 为什么将来自 SafetyNet API 的响应传递给服务器

最常见的是,SafetyNet 证明 API 用于决定您是否信任与您的服务器通信的设备和应用程序。

因此,您真的不想在 Android 应用程序中检查 JWS 响应,否则攻击者可以简单地修改您的应用程序以删除您已设置的任何验证逻辑。这就是为什么最好将响应传递给服务器,并在那里做出任何决定(您信任您的服务器)。

在您的服务器上,您可以 verify the response 如果一切正常,则允许您尝试保护的任何操作 - 也许允许登录或下载某些数据。

为什么从您的服务器提供的随机数更安全?在您的应用程序中生成的随机数(即本质上是随机的并且您不知道)可以被攻击者自由更改。如果控制随机数就更好了!这样,当您在服务器上验证 JWS 响应时,您可以检查 nonce 是否正确。

在您的服务器上生成随机数的一个好方法可能是对会话 ID 或用户 ID 和时间戳的组合进行哈希处理。