1

数週間以内に新しいプロジェクトを開始しますが、アプリの「デザイン」に関していくつか質問があります。

アプリは、独自のデータベース (オフラインで使用するため) も持つ Android アプリと通信するサーバー + データベースになります。

接続は、カスタム「プロトコル」(TLS でカプセル化されたゲーム ネットワーク プロトコル) で暗号化された文字列を交換するために使用されます。これは、アプリに 2 つのセキュリティ層があることを意味します。

  1. TLS -> MitM 攻撃に対して
  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プロキシについて話している人もいますが、私はWebページを提供していないので、それでも意味がありますか?サーバーに過負荷をかけませんか?)

よろしくお願いします!

4

1 に答える 1

1

(In)目立たなくてもセキュリティを確保しても、直面している実際のセキュリティ問題は解決しません。あなたが説明しているのは、ゲームが攻撃から身を守る方法ではありません。SSL/TLS は MITM 攻撃を防ぎますが、攻撃者は単なる MITM ではなく、ソフトウェアのユーザーです。アプリが SSL/TLS 接続を確立できる場合、攻撃者もこの接続を確立できるため、攻撃者は提供された APIに常にフル アクセスできると想定する必要があります。

暗号化はCWE-602: サーバー側セキュリティのクライアント側強制を解決できません。クライアントのオフライン データベースとサーバーの間のデータベース マージは、クライアントのデータを信頼しており、CWE-602 に違反しています。この攻撃では、攻撃者は API へのアクセスを必要とせず、ローカルで sqlite データベースを変更するだけで済みます。

于 2012-07-04T19:37:20.173 に答える