Forums: Developers (Thread #1527)

サーバー間認証 (2002-12-04 20:58 by naohki #2913)

このRPGの売りに
パーソンをいろんなサーバーにまたがって
連れ歩けるというのがあるんだけど~~~

認証はパスワードとユーザIDで野郎と思ってました。
ところが、よく考えると共通のパスワードをサーバーで共有すると
、悪意のあるサーバに入ったときにパスワードを
盗まれることになって
そのIDとパスワードを使ってほかのサーバ(出身サーバとか)
にはいって、いろいろいじられる可能性があります。
さてどうしたものか、
さーばごとにパスワードをとっても良いのですが
パスワードをサーバの数管理することになることと

・・・なんだっけ

RE: サーバー間認証 (2002-12-04 21:03 by naohki #2914)

おもいだした、IDを出身サーバから引き継ぐときに
その人であることを確認しながらひきわたすんだが!
サーバー同士でその人であることを確認するのに
共通のパスワードが必要になります。
これはサーバごとにパスワードを作るとなるとできないのですが
またそのためにパスワードを作るというのもあれですな

ということで、悩まなければなりません、
ほほほ(^^)
いま、はやりの方法を使いますか!
Reply to #2913

RE: サーバー間認証はやりの方法 (2002-12-06 21:04 by naohki #2933)

公開鍵方式をつかいます
クライアントは公開鍵をサーバに渡します。
サーバは認証するときに、ある特定のランダムな文字列を
送ります、クライアントはこれを秘密鍵でエンコードして
送り返します。サーバは渡された公開鍵でデコードして
送った物と同じ物ができれば、
認証完了です。
これをすれば悪意のあるサーバに、クライアントは自分の
IDをのっとられることがありません。

秘密鍵が盗まれたら終わりですけどー
Reply to #2914

RE: サーバー間認証はやりの方法 (2002-12-06 21:20 by naohki #2934)

自前でソースかくか・・
ライブラリを利用するか・・・
ライセンスもあるしなー
自前で書くかな・・・・・

問題は素数の生成方法だ・・・
Reply to #2933

RE: サーバー間認証 (2002-12-13 20:09 by jinnee #2997)

携帯電話のシステムを例にとれば電話加入者はホームロケーションレジスター(HLR)に加入者
のデータを収容し、ローミングするときにはビジターズロケーションレジスター(VLR)に問い合わせ、
加入者の収容されている(HLR)へと問い合わせを行うプロトコルを持っています。確に
認証の際に生のパスワードやログイン情報が流れるのはまずいと思いますが、サーバー間
をユーザーが渡り歩けるとすれば認証プロトコルの設計から行うべきではないでしょうか?
(この場合、おそらく認証サーバとデータベースが必要になると思います)
逆に言えば認証サーバを用意できるのであれば、敢えて公開鍵を採用する必要もないと思います。
Reply to #2913

RE: サーバー間認証 (2002-12-14 13:29 by naohki #3003)

このゲームはいろんな人が自分の世界観による
サーバーを構築できます
(フリーソフトですから)
とした場合、そのサーバーを渡り歩けた方がおもしろいですよね

そうしたときに、ゲームを作った人はそのゲームのバランスを
守らなければなりません。
そのためにステータスに、関税がかかります。
(レベルとか強さが制限されます)
(全く信頼する場合は制限しなくて良いです)

と同時にゲーマーは自分のパーソン(ID)をまもりたいわけです。

だれでも自由にサーバを作れるフリーソフトでは
時に悪意のあるサーバー管理者も考慮しなければならない場合があります。

それを善意のサーバー軍から守る仕組みが必要になります。
そのために信頼するサーバーを登録する形にします。


それと、サーバは1つではなくだれでも自由に作れるという
前提に立てば、一局集中の認証サーバを作るのはあまり
考え方としては勧められないのです

自由にサーバ作りたいのに認証サーバ管理者に
申請を出さなければならないと言うことは
自由では無いからです。

なので、サーバーIDのみが同一性を判断する要素のして
後は自由に作れるようにするのが私の理想です。
(サーバーIDだけはバラバラでないと困るので)
(その辺をどのように解決するかは問題ですが)

Reply to #2997

RE: サーバー間認証 (2002-12-14 13:38 by jinnee #3005)

基本的には僕もnaohkiさんの意見に賛成です。認証サーバーは複数個あって良いと思いますし、認証サーバ
間でのプロトコルの設計によってlaurierサーバ間を渡り歩ける様にしたいと思ってます。後はプレイヤー
のデータをプレイヤーに持たせるのか、サーバーに管理させるのかで認証パターンのコンセプトがかなり
変るものとなるので、それも合わせて考えて行きたいと思います。認証方式の考察は日記の方にぼちぼち
書いていくつもりです。
Reply to #3003

RE: サーバー間認証 (2002-12-18 00:05 by naohki #3080)

ネットワークrpgゲームを作る上で、クライアントにデータを持たせると言うことは
考えることができません。

特にこのゲームはオープンソースのものですから自由にゲームクライアントを作ることができます。
WINDOWSクライアントも作れますし。テキストベースクライアントも作れます。(仕事中にやるならテキストベースだ!!)

当たり前ですがクラック用クライアントも作れます。
ここら辺はサーバ管理者が自分のゲームバランスを守るために
最低限やらなければならないことはあるでしょうね
数値はサーバー持ちです。

サーバー間を渡り歩く場合でも、各サーバは自由にゲームを作れます。
つまり原則独立したゲームです。
だからサーバ管理者としては、新たにくるひとは他サーバからの人であっても自分のゲームでは1からやってもらいたいかもしれませんね。
(戻ったときのための銀行、レベル等の保存は不可欠ですね)

なんで、関税というものをもうけまして、お互いに引き渡すデータはLAURELとしての共通データと一部の共通アイテム、そして特にお互いに信頼しあったサーバー間でパーソンに知られることなく渡されるパーソン情報に限られるものと考えています。

共通アイテムの内容や共通データの内容は名前とか年齢とか年とか、強さとかその程度を考えていて、
こったパラメータは各ゲームサーバがある程度自由に作れるように考えているんですが、
それぞれどの程度渡すかは考えどころですね
共通データを多くするとゲーム作成の自由度は下がりますが、渡り歩く楽しみは増えます。
少なくするとゲームの自由度が上がりますので、
シナリオチックなものであれば、違うゲームとして
なれたパーソンで遊べるわけです。

バランスをどこにするかがかなり問題ですね。

どうしましょ
Reply to #3005

RE: サーバー間認証 (2003-06-25 12:27 by blucky #5099)

突然失礼します。Bluckyと申します。
SourceForgeを見ている間にここにたどり着きました。

クライアント←→サーバーの話と
サーバー←→サーバー話ですよね。
昔PHI(知ってる人いるかな?)をいじくってたことがあるのでそこで出た案をちょっと書きます。参考になれば。

・クライアントはすべてのサーバで一意なクライアントIDを持つ。
  (ハッシュとかGUIDとか)
・基本的に通信は公開鍵暗号方式で認証後は秘密鍵暗号方式で通信。
  (RSA→Blowfish)
・クライアントはログイン時に他のサーバーから来たのかそうでないかを先方サーバに通知。他のサーバから来たのなら先方サーバは元サーバにクライアントのステータスを要求。サーバ間通信は上記のように認証&暗号化
・原則的にサーバ間移動はサーバ管理者が認めているサーバからしか受け付けない。

といった感じでした。PHIでは企画倒れだったんだよな~
Reply to #2913

RE: サーバー間認証 (2003-07-12 18:46 by naohki #5261)

ふむふむ
通信を暗号化すると言うところをのぞいて設計としては
だいたい一緒ですね

基本的に通信は不安定なものだということを前提に作るならば
サーバー間のデータの引き渡しはできる限り無いようにするか
信頼できるサーバーに任せるとかすべきなんですが
まー、ゲームだからサーバー間移動に失敗しても
許して頂戴!
という感じで気楽に設計しています。
Reply to #5099