Android-实现加密IM的最佳方式



我正在为Android创建端到端加密的IM,使用PHP和GCM作为中间人来传递消息。

我已经确定了IM部分,但现在我希望在所有消息上实现端到端加密。

我的IM仅为文本,最大有效载荷为4kb(GCM支持的最大有效载荷)。

在安卓系统上实现这一功能的最佳方式是什么?AES+RSA?

有没有默认的库可以以安全简单的方式实现这一点?

很难说什么是最好的,解决方案还取决于您希望它的安全性

  1. 修复了RSA密钥对-您可以生成RSA密钥对并使用它们来加密流量。然而,这并不能保护对话免受反编译你的APK文件并提取RSA密钥的人的攻击——尽管你可以通过混淆你的代码并通过XORing或使用反射在你的应用程序上访问密钥来隐藏密钥,从而使对话变得困难。这里有一些相关的建议和关于实施的问题/答案
  2. 使用SSL的动态加密密钥-要使用的加密密钥是为每个客户端单独协商的。为此,客户端需要信任服务器(即确保他们真的在与您的服务器对话,而不是与其他人的服务器对话)。这很像SSL,服务器通过提供由第三方签名的证书来证明其身份。如果使用SSL是一种选择,那么这里有使用自签名证书的答案
  3. 自定义动态加密密钥-你可以设置自己的安全方案,但你必须自己使其防弹

最新更新