現在ネットワークミニゲームを作っています。
ハンゲームのような小部屋を作りたいのですが、どういった手法がいいのか皆さんの方法を聞きたいです。
ちなみに、現在私が考えているものは、
データベースに登録されている部屋情報(掲示板のようなもの?)を元にホストの暗号化された接続IPを取得し、ホストとP2P接続を行うものです。
この方法はセキュリティ面や、システム面でどういった問題が出るでしょうか?
ゲームサーバーのルームの考え方
Re: ゲームサーバーのルームの考え方
データベースには具体的に何が記録されているのでしょうか?ホヅミ さんが書きました: ちなみに、現在私が考えているものは、
データベースに登録されている部屋情報(掲示板のようなもの?)を元にホストの暗号化された接続IPを取得し、ホストとP2P接続を行うものです。
また、「暗号化された接続IP」の意味がよくわかりません。なぜIPが暗号化されているのでしょう。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: ゲームサーバーのルームの考え方
例として書かれているホストやクライアントやサーバーの担当がよくわかりませんね。
私も「暗号化された接続IP」が何なのかは知りたいです。
あと、「ホストとP2P接続」というのもどういう動作を期待しているのか教えて下さい。
私も「暗号化された接続IP」が何なのかは知りたいです。
あと、「ホストとP2P接続」というのもどういう動作を期待しているのか教えて下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ゲームサーバーのルームの考え方
ちょっと用語がごちゃ混ぜになってしまっていたようです。
送受信するデータはすべて暗号化させます。(暗号化された、ではなく暗号化したです。暗号化させる必要はないのでしょうか?)
データベースに登録するものは
・部屋番号
・部屋製作者のIPアドレス
・部屋名
・パスワード
・上限人数
・現在人数
・ゲームの状態(待機中、ゲーム中等々)
サーバーは登録されている部屋を管理するものです。
ホストとは部屋製作者のことです。
クライアントはゲーム参加者のことを指します。
サーバーはあくまで登録されている部屋を管理するだけで。
サーバーから部屋の接続先を取得し部屋製作者のPCに接続します。
私の勘違いでP2P接続ではないのかもしれません。
送受信するデータはすべて暗号化させます。(暗号化された、ではなく暗号化したです。暗号化させる必要はないのでしょうか?)
データベースに登録するものは
・部屋番号
・部屋製作者のIPアドレス
・部屋名
・パスワード
・上限人数
・現在人数
・ゲームの状態(待機中、ゲーム中等々)
サーバーは登録されている部屋を管理するものです。
ホストとは部屋製作者のことです。
クライアントはゲーム参加者のことを指します。
サーバーはあくまで登録されている部屋を管理するだけで。
サーバーから部屋の接続先を取得し部屋製作者のPCに接続します。
私の勘違いでP2P接続ではないのかもしれません。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: ゲームサーバーのルームの考え方
確かにp2p接続になりますね。サーバーはコネクションを担当するだけで後はホストユーザーとクラアントユーザー間で相互にUDPなどで通信すると言うことですよね?
サーバーからホストとクライアントにIPアドレスを渡すのでIPアドレスは出来れば暗号化されてやり取りされたほうが良いと思います。
セキュリティ面だと侵入のルートになる可能性がありますが、個人のゲームでわざわざクライアントのふりをするハッキングソフトを開発する暇人がいるとは思えません。
システム面だとuPnPの制御をしないとルータのポート開放問題が出るでしょう。
サーバーからホストとクライアントにIPアドレスを渡すのでIPアドレスは出来れば暗号化されてやり取りされたほうが良いと思います。
セキュリティ面だと侵入のルートになる可能性がありますが、個人のゲームでわざわざクライアントのふりをするハッキングソフトを開発する暇人がいるとは思えません。
システム面だとuPnPの制御をしないとルータのポート開放問題が出るでしょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ゲームサーバーのルームの考え方
P2Pの場合、パケットキャプチャを使えば相手のIPアドレスを割り出すのは簡単なので
IPアドレスの暗号化にどれだけ効果があるかどうか疑問ですが...
あと、暗号化するときの鍵や鍵交換はどうする予定でしょうか?TLSのようなものを考えていますか?
IPアドレスの暗号化にどれだけ効果があるかどうか疑問ですが...
あと、暗号化するときの鍵や鍵交換はどうする予定でしょうか?TLSのようなものを考えていますか?
Re: ゲームサーバーのルームの考え方
ソフト屋さんへ
>システム面だとuPnPの制御をしないとルータのポート開放問題が出るでしょう。
了解しました。まだ、ネットワークプログラミングの勉強が初歩の段階なので、まずはそこから勉強をしてみます。
h2so5さんへ
>P2Pの場合、パケットキャプチャを使えば相手のIPアドレスを割り出すのは簡単なのでIPアドレスの暗号化にどれだけ効果があるかどうか疑問ですが...
あまり見られたくないものは1クッションは置いておこうかなと思っていたのですが、必要ありませんかね。^U^;
>暗号化するときの鍵や鍵交換はどうする予定でしょうか?TLSのようなものを考えていますか?
暗号鍵はプログラム内に固定させようかなと考えているのですが、やめた方がいいでしょうか?
>システム面だとuPnPの制御をしないとルータのポート開放問題が出るでしょう。
了解しました。まだ、ネットワークプログラミングの勉強が初歩の段階なので、まずはそこから勉強をしてみます。
h2so5さんへ
>P2Pの場合、パケットキャプチャを使えば相手のIPアドレスを割り出すのは簡単なのでIPアドレスの暗号化にどれだけ効果があるかどうか疑問ですが...
あまり見られたくないものは1クッションは置いておこうかなと思っていたのですが、必要ありませんかね。^U^;
>暗号化するときの鍵や鍵交換はどうする予定でしょうか?TLSのようなものを考えていますか?
暗号鍵はプログラム内に固定させようかなと考えているのですが、やめた方がいいでしょうか?
Re: ゲームサーバーのルームの考え方
暗号鍵の固定は(特に共通鍵暗号では)やめた方が良いでしょう。ホヅミ さんが書きました:>暗号化するときの鍵や鍵交換はどうする予定でしょうか?TLSのようなものを考えていますか?
暗号鍵はプログラム内に固定させようかなと考えているのですが、やめた方がいいでしょうか?
ディフィー・ヘルマン鍵交換のような,鍵交換アルゴリズムを使って暗号鍵を毎セッションごとに作る方が安全です。
もちろん,暗号的に安全な乱数アルゴリズムが必要になりますが。
Re: ゲームサーバーのルームの考え方
暗号鍵を固定するくらいなら暗号化しないほうがマシだと思います。デバッグの面倒が増えるだけなので。
セキュリティ強度を求めるなら、OpenSSLやCrypto++などのライブラリを使うと比較的簡単に鍵交換を実装することができます。
セキュリティ強度を求めるなら、OpenSSLやCrypto++などのライブラリを使うと比較的簡単に鍵交換を実装することができます。
Re: ゲームサーバーのルームの考え方
>> YuOさん 暗号鍵の固定は(特に共通鍵暗号では)やめた方が良いでしょう。
>> h2so5さん 暗号鍵を固定するくらいなら暗号化しないほうがマシだと思います。デバッグの面倒が増えるだけなので。
実際に自分で書き込んでてそういえば!って思いました。
鍵交換も勉強していきたいと思います。
ここのトピックはこの辺で解決とさせていただきます。
みなさんありがとうございました!
>> h2so5さん 暗号鍵を固定するくらいなら暗号化しないほうがマシだと思います。デバッグの面倒が増えるだけなので。
実際に自分で書き込んでてそういえば!って思いました。
鍵交換も勉強していきたいと思います。
ここのトピックはこの辺で解決とさせていただきます。
みなさんありがとうございました!