gpt4 book ai didi

android - 使用移动应用程序保护通信 [真实性、隐私和完整性]?

转载 作者:IT老高 更新时间:2023-10-28 21:55:36 28 4
gpt4 key购买 nike

Android/Iphone 应用程序将从服务器访问应用程序数据。[Django-Python]

如何确保与移动应用程序的通信安全?

期望:对密码等敏感信息足够安全,除了暴力破解之外,没有直接的解密方式。

我的要求:

  • 身份验证[仅授权应用]
  • 完整性 [消息不应在两者之间修改]
  • 隐私 [如果被嗅探,通信不应可读]

我的努力:

  • SSL 仅对服务器进行身份验证,而不对客户端进行身份验证。
  • 我无法使用对称加密 [仅提供隐私]
  • 无法进行数字签名 [缺乏隐私]
  • PGP 完全满足所有 3 个要求。

问题:

  • PGP 要求在客户端应用上存储 key 。
  • 似乎没有确保客户端应用程序 key 安全的可靠方法。
  • 如果 key 失效,那么 PGP 或对称加密同样容易受到攻击。
  • 逆向工程 PGP key 或对称 key 同样困难。
  • 在这种情况下,PGP 对移动处理器来说是一个毫无意义的负担。
  • OAuth 又没用了,因为它还有一个客户端 key 。

那么,我该如何/应该如何继续前进?行业如何处理这个问题?

我应该实现随意的方法吗:

  • 使用简单的 SSL 并交叉手指?,因为如果 key 被盗,则无法进行身份验证? (只能使用服务器身份验证)

更新:

结论是使用 AES,因为如果我可以保证 key 的安全,那么我和 SSL 一样好。另外,我可以不断更改 key 以提高安全性。如果您认为有更好的方法,请在发帖前阅读整篇文章。

最佳答案

您正在处理错误信息。 SSL 绝对可以对客户端进行身份验证,这不是对大部分 SSL 所做的事情,因为该协议(protocol)通常(或至少曾经)用于保护服务器身份验证很重要但对客户端这样做的电子商务站点不重要和/或不可行。您要做的是使用相互验证的 SSL,这样您的服务器将只接受来自您的应用的传入连接,并且您的应用只会与您的服务器通信。

这是高级方法。创建一个自签名服务器 SSL 证书并部署在您的 Web 服务器上。如果您使用的是 Android,您可以使用 Android SDK 中包含的 keytool 来实现此目的;如果您使用的是 iOS 等其他应用平台,也可以使用类似的工具。然后创建一个自签名客户端并将其部署在您的应用程序中作为资源包含在您的应用程序中的自定义 keystore 中(keytool 也将生成它)。将服务器配置为要求客户端 SSL 身份验证并仅接受您生成的客户端证书。将客户端配置为使用该客户端证书来标识自己,并且只接受您在服务器上安装的一个服务器端证书。

如果您的应用程序以外的某人/某物尝试连接到您的服务器,则不会创建 SSL 连接,因为服务器将拒绝不提供您应用程序中包含的客户端证书的传入 SSL 连接。

一步一步的回答比这里保证的要长得多。我建议分阶段执行此操作,因为网络上有关于如何在 Android 和 iOS(服务器端和客户端)中处理自签名 SSL 证书的资源。我的书中还有一个完整的演练,Application Security for the Android Platform ,由 O'Reilly 出版。

关于android - 使用移动应用程序保护通信 [真实性、隐私和完整性]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8798707/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com