| 
・認証, 許可, アカウンティング(AAA)機能
認証,
許可, アカウンティングに関する機能は,課金システムとの連携を考えてのものである.課金システムにはユーザを識別するID やパスワードなどの個人情報が管理されることが考えられるため,これらの情報はゲームプレイヤのノードに管理させることはできない.したがってゲームハウスなどがユーザのID
やパスワードなどを管理するサーバ(AAA サーバ) を設置することを考える.本プロジェクトにおいてAAAサーバにはRADIUSを用いた.RADIUS
においてユーザID とパスワードによる認証を行い,この認証情報を用いてゲームプレイヤとユーザID とを結びつけることで課金状況を管理するようにした.
・不正を行うゲームプレイヤのノードへの対策
各ノードに記録されるデータを暗号化することで実現した.その方法は実際に記録されるべきデータをA,そのデータと同じ長さの純粋な乱数列をB
とし,A とB をXOR したものをC としたときに,C とB を別々のノードへと記録することである.この手法は,B は純粋な乱数列であるからデータとしての意味は見いだすことができずBによってA
をXOR した後のC も純粋な乱数列と見比べることができないことから,元のデータであるAを取り出すためにはB とC を両方とも取得しなければならないという性質を利用している.この性質を利用することで,各ノードに記録されるデータを暗号化しその中身を容易に想像できなくすることでデータの自由な改竄を防ぐことができる.また,この手法に使用するA
のデータにチェックサムを組み込むことによってB またはC のみの改竄を発見することも可能となる.
・データ消滅によるゲームの安定運用への対策
ZFM ではサーバの管理していたデータを分割し分割されたデータをそれぞれのゲームプレイヤのノードで管理する.このとき,データの一貫性を保つために分割された個々のデータは一つのゲームプレイヤのノードにて管理されている.しかしながら,データを保持するノードが一つであればそのノードがネットワークから離脱することでデータが消失してしまう.
この問題へ対処するため,複数ノードに同じデータを持たせそれら同じデータを持つノードがそれぞれのノードのネットワークからの離脱を相互に確認を取ることでノードの離脱を監視する機能を追加する.同じデータを持つノードが互いにネットワークの離脱を把握することで,ある一つのデータを持つノードがネットワークから離脱した場合にも可能な限り早く気づき,データを書き戻すことができる.
|