数週間以内に新しいプロジェクトを開始しますが、アプリの「デザイン」に関していくつか質問があります。
アプリは、独自のデータベース (オフラインで使用するため) も持つ Android アプリと通信するサーバー + データベースになります。
接続は、カスタム「プロトコル」(TLS でカプセル化されたゲーム ネットワーク プロトコル) で暗号化された文字列を交換するために使用されます。これは、アプリに 2 つのセキュリティ層があることを意味します。
- TLS -> MitM 攻撃に対して
- カスタム プロトコル -> ゲーム パケットの改ざんなどの「ゲーム内ハッキング」に対して
私の質問は次のとおりです。
- 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プロキシについて話している人もいますが、私はWebページを提供していないので、それでも意味がありますか?サーバーに過負荷をかけませんか?)
よろしくお願いします!