2012-07-03 32 views
1

我將在未來幾周內開始一個新項目,但我有一些與應用程序的「設計」有關的問題。TLS - Node.js服務器到Android應用程序

該應用程序將會是一個服務器+數據庫,與一個也有自己的數據庫的Android應用程序進行通信(用於脫機使用)。

該連接將用於交換使用自定義「協議」(封裝在TLS中的遊戲網絡協議)加密的字符串。這意味着應用程序將有保障的兩層:

  1. TLS - >對MITM攻擊
  2. 自定義協議 - >對「遊戲中的黑客」,喜歡遊戲包篡改

我問題如下:

  • 是否可以在node.js和Android之間使用TLS?這個主題有什麼好的鏈接嗎?

(我看有一些問題,在Java中是不同的,node.js中它涉及到的OpenSSL和EVP_BytesToKey功能證書的格式)

- >Encrypt with Node.js Crypto module and decrypt with Java (in Android app)

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

  • 是否有混淆Android應用的源代碼,以使定製的「協議」,可以安全地解密的客戶端的方法嗎?或者應該所有的魔法都發生在服務器端?

(我不想解密源代碼是可見的,爲用戶解剖自定義協議,並開始開發黑客。)

  • 對提高我的節點的安全任何提示或鏈接.js服務器一般?

(我聽到一些人在談論Nginx的代理,但因爲我沒有服務的網頁它還有意義?那豈不是服務器超載?)

謝謝很多提前!

回答

1

(In)Security though obscurity不能解決您所面臨的實際安全問題。你所描述的是而不是遊戲如何保護自己免受攻擊。 SSL/TLS可以防止MITM攻擊,但是攻擊者不僅僅是一個MITM,他還是你的軟件的用戶。如果應用程序可以進行SSL/TLS連接,那麼攻擊者也可以進行此連接,並假定攻擊者將始終對您提供的API有完全訪問權限

密碼術不能解決CWE-602: client side enforcement of server side security。客戶端的離線數據庫和服務器之間的數據庫合併信任客戶端的數據,並且違反了CWE-602。在這次攻擊中,攻擊者不需要訪問API,他可以在本地修改sqlite數據庫。

相關問題