首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android SafetyNet认证无疑问

Android SafetyNet认证无疑问
EN

Stack Overflow用户
提问于 2021-04-13 17:12:15
回答 1查看 342关注 0票数 0

谷歌用于实现认证API的使用说明是:

去找个女的。请求SafetyNet认证。将响应传输到服务器。使用服务器上的响应以及其他反滥用信号来控制应用程序的行为。

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

  1. 在不安全设备上的应用程序从我的服务器上获得
  2. 安全设备上的应用程序调用Google的认证API
  3. 安全设备上的应用程序从Google获得签名的JWS响应
  4. 攻击者在不安全的设备上将JWS响应传输给应用程序。
  5. 不安全设备上的应用程序将JWS响应发送给我的服务器

我的应用服务器会验证JWS --包括现在--并认为不安全设备上的应用程序实际上是安全的。

EN

回答 1

Stack Overflow用户

发布于 2021-11-21 20:40:56

听起来没那么简单。例如,如果你使用证书钉扎,一个处于中间攻击的人很难做到几乎不可能。

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

如果他得到了一个JWS,你可以限制将一个JWS存储在后端的时间,并使它更难使用(也许允许JWS只存储5分钟或更短的时间)来“使它失效”。

此外,正如Google所提到的,如果您使用当前请求将用户发送到服务器的某些数据构建您的nonce,则攻击者还需要在请求中包含这些数据,因为您可以简单地反向计算该nonce (如果您已经存储了最终的nonce +您计算的随机数据),如果这与此不匹配,您可以简单地拒绝该请求。

此外,如果设备是安全的,攻击者不应该只从设备中提取当前的信息。

请给我一点盐,因为我不是安全专家。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67079453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档