为什么在移动应用程序中使用“App Secret”?

信息安全 移动的 密钥管理 应用安全
2021-09-12 22:07:31

我看到一些 SaaS 需要使用“应用程序密钥”将“应用程序密钥”导入您的应用程序。我理解“应用程序密钥”,但无法理解“应用程序密钥”。原因如下:

  1. 我可以反编译应用程序并轻松获取应用程序机密。
  2. 如果你用它加密你和服务器之间的流量,而你的操作系统不允许我反编译你的应用程序,我仍然可以通过复制流量请求并发送数百万次来弄乱你的数据。

为什么在移动应用程序中使用“App Secret”?我们不能说它实际上是公开的,因为它很容易从外部访问吗?应用密钥也可以访问,有什么不同,是不是因为缺乏那个SaaS的经验?

1个回答

应用程序机密与“Web 服务器身份验证流程”(尤其是 OAuth2)相关,这是一个服务器向另一台服务器进行身份验证的方式,该服务器允许访问服务器提供的资源。您可以将其视为“授权密码”,其中密码允许调用服务访问被调用的服务。

移动客户端不得被信任,并且绝不应使用应用程序机密;这是一个固有的安全风险,因为它可能允许恶意应用程序访问服务。一旦某个应用程序秘密被泄露,该服务需要对其进行更改,以防止恶意应用程序代表用户滥用该服务。

请注意,您不能对 OAuth2 使用重放攻击,因为它使用随机数对每个事务进行加盐,尽管反编译问题仍然是一个非常重要的因素。事实上,已经有文章提到,由于应用程序机密被泄露,极多的 Android 应用程序易受攻击。

一旦你有了一个应用密钥,你就可以模拟密钥对应的应用程序,并且你无法区分授权的、已发布的应用程序和恶意克隆的应用程序。许多开发人员不理解应用程序机密等同于密码或私人加密密钥,应该这样对待。

移动客户端和其他不受信任的应用程序(基于 Web 浏览器的应用程序)应使用“用户客户端身份验证流程”,其中仅使用应用程序密钥。