1

我将在接下来的几周内开始一个新项目,但我有一些与应用程序的“设计”相关的问题。

该应用程序将是一个服务器 + 数据库,它与一个也有自己的数据库(供离线使用)的 Android 应用程序通信。

该连接将用于交换使用自定义“协议”(封装在 TLS 中的游戏网络协议)加密的字符串。这意味着该应用程序将具有两层安全性:

  1. TLS -> 针对中间人攻击
  2. 自定义协议 -> 针对“游戏内黑客”,例如游戏数据包篡改

我的问题如下:

  • 是否可以在 node.js 和 Android 之间使用 TLS?关于该主题有什么好的链接吗?

(我读到在 java 和 node.js 中证书格式存在一些问题。它与 OpenSSL 和EVP_BytesToKey函数有关)

-->使用 Node.js Crypto 模块加密并使用 Java 解密(在 Android 应用中)

--> http://olabini.com/blog/tag/evp_bytestokey/

  • 有没有办法混淆 Android 应用程序的源代码,以便可以在客户端安全地解密自定义“协议”?还是所有的魔法都应该发生在服务器端?

(我不希望用户看到解密源代码来剖析自定义协议并开始开发黑客。)

  • 关于提高我的 node.js 服务器安全性的任何提示或链接?

(我听说有些人在谈论 Nginx 代理,但是由于我不提供网页服务,它仍然有意义吗?它不会使服务器超载吗?)

非常感谢您提前!

4

1 回答 1

1

(在)安全虽然默默无闻并不能解决您面临的真正安全问题。您所描述的不是游戏如何保护自己免受攻击。SSL/TLS 确实可以防止 MITM 攻击,但是您的攻击者不仅仅是 MITM,他还是您软件的用户。如果应用程序可以建立 SSL/TLS 连接,那么攻击者也可以建立这个连接,并且应该假设攻击者将始终完全访问您提供的 API。

密码学无法解决CWE-602:服务器端安全的客户端实施。客户端的离线数据库和服务器之间的数据库合并信任客户端的数据,因此违反了 CWE-602。在这种攻击中,攻击者不需要访问 API,他可以在本地修改 sqlite 数据库。

于 2012-07-04T19:37:20.173 回答