(57)【要約】【課題】  オンラインゲームにおける場合のように、ネットワーク上でサーバによって提供されるサービスに対して、クライアントが改変された基本入出力システム、改変されたソフトウェア、または海賊版のソフトウェアを使用して不正を働く場合がある。このように変更されたクライアントの状態をサーバが検出できて、適切な行動を取れるようにする。【解決手段】  サーバと通信しているクライアントの状態を、クライアントにチャレンジを発行し、クライアントに状態を示す応答を生じさせることによって判定する。サーバは、この応答を期待される応答と比較し、その状態が期待通りであるかを判定し、もし異なれば、このクライアントとの通信を終了するような、適切な行動を取る。このチャレンジは、クライアントにコードセグメントを実行させることによって応答を生じさせるコードセグメントとパラメータを含むことが好ましい。【選択図】  図５
2004164640.tif 000002
【特許請求の範囲】
【請求項１】
サーバコンピューティング装置にクライアントコンピューティング装置上の状態を検知できるようにするための方法であって、
（ａ）前記サーバコンピューティング装置から前記クライアントコンピューティング装置へ、機械語命令を備えた前記コードセグメントを送るステップと、
（ｂ）前記クライアントコンピューティング装置上で前記コードセグメントを実行するステップであって、前記機械語命令は、クライアントコンピューティング装置上で自動的にアクセスされる状態に基づいて、応答を決定するために前記クライアントコンピューティング装置により使われる前記コードセグメントを備えたステップと、
（ｃ）前記応答をクライアントコンピューティング装置からサーバコンピューティング装置へ送るステップと、
（ｄ）サーバコンピューティング装置上において、クライアントコンピューティング装置から受け取った前記応答を期待される応答と比較するステップと、
（ｅ）前記サーバコンピューティング装置上において所定の行動を起すステップであって、前記クライアントコンピューティング装置から受け取った前記応答が期待される応答に適合しない場合、あるいは何らの応答も受け取られない場合、期待される状態はクライアントコンピューティング装置上に存在しないことを示すステップと、
（ｆ）前記クライアントコンピューティング装置とのさらなるやりとりを許可するステップであって、前記クライアントコンピューティング装置から受け取った前記応答が期待される応答に適合する場合、期待される状態はクライアントコンピューティング装置上に存在することを示すステップと
を備えたことを特徴とする方法。
【請求項２】
前記クライアントコンピューティング装置によって前記サーバコンピューティング装置から受け取られた前記機械語命令は、前記クライアントコンピューティング装置によってアクセス可能なメモリの指定部分について一方向ハッシングアルゴリズムを実施することを特徴とする請求項１に記載の方法。
【請求項３】
前記コードセグメントは、前記一方向ハッシングアルゴリズムの実施にあたって使われる少なくとも１つのパラメータを備えることを特徴する請求項２に記載の方法。
【請求項４】
前記一方向のハッシングアルゴリズムを履行する機械語命令は、前記コードセグメントに含まれた前記少なくとも１つのパラメータを用いて、前記クライアントコンピューティング装置によってアクセスされる不揮発性メモリ媒体上に含まれていることを特徴とする請求項３に記載の方法。
【請求項５】
前記機械語命令は、前記一方向ハッシングアルゴリズムを実施するために前記クライアントコンピューティング装置によって実行され、前記機械語命令は、前記アルゴリズムにおいて使われるステップを規定することを特徴とする請求項２の方法。
【請求項６】
前記クライアントコンピューティング装置が後に再び前記サーバコンピューティング装置に接続しているとき、前記サーバコンピューティング装置によって前記クライアントコンピューティング装置へ送られた前記機械語命令を変更するステップをさらに備えることを特徴とする請求項２に記載の方法。
【請求項７】
前記機械語命令は、前記メモリの異なる指定部分を指示することによって変わることを特徴とする請求項６に記載の方法。
【請求項８】
前記メモリの前記指定部分は、前記クライアントコンピューティング装置の基本入力出力システムの少なくとも一部を格納し、改変された基本入力出力システムが前記クライアントコンピューティング装置で用いられた場合、前記期待される状態は満たされないことを特徴とする請求項７に記載の方法。
【請求項９】
前記メモリの前記指定部分は、前記クライアントコンピューティング装置によってアクセス可能な不揮発性メモリ媒体の一部を含み、前記不揮発性メモリ媒体の一部は前記クライアントコンピューティング装置によって読み出し不可能でない限り、前記期待される状態は満たされないことを特徴とする請求項２に記載の方法。
【請求項１０】
前記クライアントコンピューティング装置は、前記クライアントコンピューティング装置上の前記状態についての第１の応答を決定した後、前記クライアントコンピューティング装置によってアクセス可能な不揮発性メモリ媒体の状態に関連して第２の応答を決定するステップをさらに備え、前記サーバコンピューティング装置へ送られる前記応答は、前記第１の応答と前記第２の応答を備えていることを特徴とする請求項１に記載の方法。
【請求項１１】
前記サーバコンピューティング装置と前記クライアントコンピューティング装置間の前記さらなるやりとりは、前記クライアントコンピューティング装置の使用者に少なくとも一人以上の別のクライアントコンピューティング装置の他の使用者とオンラインで電子ゲームを行うことに参加できるようにするステップを備えることを特徴とする請求項１に記載の方法。
【請求項１２】
請求項１に記載のステップを前記電子ゲームの遊戯期間中に履行することを特徴とする請求項１１に記載の方法。
【請求項１３】
請求項１に記載のステップ（ａ）、（ｄ）、および（ｅ）を実施するための機械語命令を有することを特徴とする記憶媒体。
【請求項１４】
請求項１に記載のステップ（ｂ）および（ｃ）を実施するための機械語命令を有することを特徴とする記憶媒体。
【請求項１５】
ネットワークのゲーム遊戯サービスを通してネットワーク上で電子ゲームの遊びに参加するにあたって使用するためのクライアントコンピューティング装置の状態を決定するための方法であって、
（ａ）前記ネットワークのゲーム遊戯サービスを提供しているサーバコンピューティング装置から前記クライアントコンピューティング装置へチャレンジを伝送するステップであって、前記チャレンジは、前記クライアントコンピューティング装置上で応答を算出するにあたって使用するための少なくとも１つのパラメータを備えたステップと、
（ｂ）前記チャレンジに含まれた前記パラメータを用い、前記クライアントコンピュータ装置上で応答を算出するステップであって、前記応答が前記クライアントコンピューティング装置上の前記状態に関連しているステップと、
（ｃ）前記応答を前記クライアントコンピューティング装置から前記サーバコンピューティング装置へ送るステップと、
（ｄ）前記サーバコンピューティング装置上において、前記応答を期待される応答と比較するステップと、
（ｅ）前記クライアントコンピューティング装置から受け取った前記応答が、前記チャレンジに対する前記期待される応答に適合しない場合、あるいは何らの応答も受け取られない場合、前記サーバコンピューティング装置に対する前記クライアントコンピューティング装置の接続を終了するステップであって、前期クライアントコンピューティング装置上の期待される状態は満たされていないことを示すステップと
を備えていることを特徴とする方法。
【請求項１６】
前記チャレンジは、前記クライアントコンピューティング装置上で前記応答を算出するための符号化された機械語命令を含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記ネットワーク上で前記電子ゲームの遊びに参加するにあたって使用する前記クライアントコンピューティング装置によってアクセスされる前記電子ゲームのソフトウェアの中に、前記応答を算出する機械語命令が含まれることを特徴とする請求項１５に記載の方法。
【請求項１８】
前記チャレンジにより、前記クライアントコンピューティング装置によってアクセスされるメモリの指定部分に一方向のハッシングアルゴリズムを前記クライアントコンピューティング装置に適用させ、前記応答を生じさせることを特徴とする請求項１５に記載の方法。
【請求項１９】
前記メモリの前記指定部分は、前記クライアントコンピューティング装置の基本入力出力システムを格納していることを特徴とする請求項１６に記載の方法。
【請求項２０】
前記クライアントコンピューティング装置による改変された基本入力出力システムの使用により、前記応答は前記期待される応答と異なるようになることを特徴とする請求項１９に記載の方法。
【請求項２１】
前記メモリの前記指定部分は前記電子ゲームを行うめの機械語命令を格納するために使われ、前記ゲームを行うための前記機械語命令は、前記電子ゲームをしている時に前記クライアントコンピューティング装置の使用者に優位性を与えるように改変されていないことを前記状態が示していることを特徴とする請求項１８に記載の方法。
【請求項２２】
前記クライアントコンピューティング装置で前記電子ゲームを行うための機械語命令は、不揮発性メモリ媒体の一部に格納され、前記メモリの前記指定部分は、前記不揮発性メモリ媒体において前記電子ゲームを行うための機械語命令を格納していない異なる部分になっていることを特徴とする請求項１８に記載の方法。
【請求項２３】
前記不揮発性メモリは前記電子ゲームを行うための前記機械語命令の認可されたコピーを含んでいることを確認するために、前記不揮発性記憶の前記異なる部分は、前記クライアントコンピューティング装置によって読み出し不可能であることが予期されていることを特徴とする請求項２２に記載の方法。
【請求項２４】
前記チャレンジに含まれ、前記応答を生じるにあたって前記クライアントコンピューティング装置によって使用される前記少なくとも１つのパラメータを変更するステップをさらに備え、前記クライアントコンピューティング装置が後に再び前記ネットワーク上の電子ゲームの遊びに参加しようと試みるときに、前記少なくとも１つのパラメータは前記メモリの前記指定部分を一方向ハッシングするにあたって前記クライアントコンピューティング装置による使用のための初期化コードを含んでいることを特徴とする請求項１８に記載の方法。
【請求項２５】
前記クライアントコンピューティング装置が後に再び前記ネットワーク上の電子ゲームの遊びに参加しようと試みるときに、前記応答を生じるにあたって前記クライアントコンピューティング装置による実行のために前記チャレンジに含まれる機械語命令を変更するステップをさらに備えることを特徴とする請求項１５に記載の方法。
【請求項２６】
前記クライアントコンピューティング装置が後に再び前記ネットワーク上の電子ゲームの遊びに参加しようと試みるときに、前記メモリの異なる指定部分を前記クライアントコンピューティング装置にハッシュさせるように前記チャレンジを変更するステップをさらに備えることを特徴とする請求項１８に記載の方法。
【請求項２７】
前記応答が前記期待される応答に適合しない場合、前記サーバコンピューティング装置に、前記クライアントコンピューティング装置と前記クライアントコンピューティング装置の使用者の少なくとも一方を、それ以降、前記サーバコンピューティング装置を用いた前記ネットワーク上のいかなる電子ゲームの遊びに参加することから除外させるステップをさらに備えることを特徴とする請求項１５に記載の方法。
【請求項２８】
請求項１５に記載のステップ（ａ）、（ｄ）、および（ｅ）を履行するための機械語命令が格納された記憶媒体。
【請求項２９】
請求項１５に記載のステップ（ｂ）および（ｃ）を履行するための機械語命令が格納された記憶媒体。
【請求項３０】
ネットワーク上でサーバコンピューティング装置に接続された複数のクライアントコンピューティング装置にサービスを提供するために採用された該サーバコンピューティング装置であって、前記サーバコンピューティング装置はクライアントコンピューティング装置上の状態を検出し、
（ａ）複数の機械語命令を格納するメモリと、
（ｂ）前記複数のクライアントコンピューティング装置を連結するためのネットワークインターフェイスと、
（ｃ）前記メモリと前記ネットワークに連結されたプロセッサであって、
（ｉ）クライアントコンピューティング装置にコードセグメントを送る機能であって、前記コードセグメントは前記クライアントコンピューティング装置上の状態を前記クライアントコンピューティング装置に決定させる機能と、
（ｉｉ）前記クライアントコンピューティング装置上の前記状態を示す前記クライアントコンピューティング装置からの応答を受け取る機能と、
（ｉｉｉ）前記応答を前記クライアントコンピューティング装置の期待される応答と比較する機能と、
（ｉｖ）前記応答が前記期待される応答に適合しない場合、あるいは前記応答が受け取られない場合、所定の行動を履行し、その他の場合には、前記ネットワーク上で前記クライアントコンピューティング装置に前記サービスを提供する機能と
を含む複数の機能を履行するための前記機械語命令を実行する前記プロセッサと
を備えることを特徴とするサーバコンピューティング装置。
【請求項３１】
前記コードセグメントは、前記応答を決定するにあたって前記クライアントコンピューティング装置によって使用される少なくとも１つのパラメータを含むことを特徴とする請求項３０に記載のシステム。
【請求項３２】
前記コードセグメントは、前記クライアントコンピューティング装置に前記少なくとも１つのパラメータを用いて前記応答を決定させるための機械語命令を含むことを特徴とする請求項３１に記載のシステム。
【請求項３３】
前記コードセグメントに含まれる前記機械語命令は、前記期待される応答が変化するように経時変化することを特徴とする請求項３２に記載のシステム。
【請求項３４】
前記コードセグメントに含まれる前記少なくとも１つのパラメータは、前記期待される応答が変化するように経時変化することを特徴とする請求項３１に記載のシステム。
【請求項３５】
前記クライアントコンピューティング装置によって決定される前記応答は、前記クライアントコンピューティング装置上に用いられた基本入力出力システムが期待される状態から変更されたかどうかを示すことを特徴とする請求項３０のシステム。
【請求項３６】
前記クライアントコンピューティング装置によって決定される前記応答は、前記クライアントコンピューティング装置によってアクセス可能な不揮発性メモリに格納された実行可能コードが変更されて期待される状態から異なるかどうかを示すことを特徴とする請求項３０に記載のシステム。
【請求項３７】
前記応答を決定するために前記クライアントコンピューティング装置に前記クライアントコンピューティング装置によってアクセス可能なメモリの指定部分についての一方向ハッシュを実現させる前記コードセグメントの中に、前記機械語命令によって、プロセッサにパラメータを含めさせることを特徴とする請求項３０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にサーバコンピューティング装置がクライアントコンピューティング装置上に存在する状態を検証することに関し、より詳細には、サーバコンピューティング装置がクライアントコンピューティング装置にチャレンジを発行し、そのクライアントコンピューティング装置から受信した応答を期待される応答と比較することに関する。
【背景技術】
【０００２】
複数のプレーヤーでインターネット上の電子ゲームに興じることは、ますます人気のある娯楽になった。マイクロソフトコーポレーションのＸＢＯＸ（登録商標）ゲームシステムのような、パーソナルコンピュータ（ＰＣ）や専用の電子ゲームシステムで実行するように作られたゲームは、複数のプレーヤーがその場所でのゲームセッションに興じることができるように設計されているけれども、インターネット上で興じられるゲームは、遥かに幅広いプレーヤーと技を競い合い、そしていつでも遊べる機会を使用者に提供する。ネットワーク上での複数プレーヤーのゲームは、通常、複数のクライアントコンピューティング装置の各々がネットワーク上でサーバコンピューティング装置に接続できるようにすることによって実現され、このサーバコンピューティング装置は、複数のいろいろなゲームのプレーヤー間でゲームの交流を促進する。以下の議論を簡単にするために、「クライアント」という用語は、クライアントコンピューティング装置の代わりに使われ、「サーバ」という用語は、サーバコンピューティング装置の代わりに使われることになるであろうが、しかしこれらの実体には、より広義の概念を適用することになる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
理想的には、オンラインゲームに参加しているプレーヤーの技能のみによって、誰がゲームに勝つかが決まるべきである。しかしながら、オンラインゲームは、オンラインゲームの遊戯中に不正行為を行うために独創的な方法を開発することで悪評が高く、ゲームをするにあたってのプレーヤーの技能は、必ずしも誰がゲームに勝つかの決定因子とはならない。例えば、ゲームソフトウェアを改変して（例えば、ゲームシャークプログラムを用いて）、プレーヤーにより多くの生命、より大きなエネルギー、より高い保護、そしてその他の属性を与えることができ、それゆえこのプレーヤーは、ゲームプログラムの改変されていないバージョンを実行しているプレーヤーに対して実質的な優位性を有する。このような方法で不正行為をしている他の誰かと遊ぶことは、ゲームがもはや技能のあるプレーヤーによって勝利されず、その代わり、改変されたゲームプログラムを使うことで不正行為をしているプレーヤーによって勝利されることに多々なるので、非常にストレスがたまることになり、楽しめないであろう。従って、プレーヤーが改変されたゲームプログラムを使用しているかどうかをゲーム遊びサイトのサーバが検知できることが望ましく、それでサーバが適切な行動を取って、サーバに接続されたプレーヤーがこの種の改変されたプログラムをオンラインのゲーム遊びに使用することを防止できるようにする。
【０００４】
専用の電子ゲーム遊戯システムもまた、プレーヤーがオンラインゲームをしている時に不正行為ができるように改変することができる。例えば、プレーヤーは改変されたＢＩＯＳの入っている差し替えメモリモジュールをゲームコンソールに接続し、本来の基本入力出力システム（ＢＩＯＳ）を置き換えることが可能であり、そしてこのように、本来のＢＩＯＳでシステムを稼動している間は許可されないであろう機能やシステムへの変更を可能にする。この改変されたＢＩＯＳにより、非認可または海賊版のゲームのコピーが遊びに使われうるようになり、ゲームコンソールで遊ぶことのできるゲームに関するゾーンの規制を使用者が回避できるようになる。さらに重要なこととして、ゲームコンソールの中で改変されたチップを使用することにより、ゲームをしている期間に他の種別の不正行為を許すことがある。このように、複数プレーヤーによるゲームをするために電子ゲームシステムがゲームサイト上にログオンしている時、そして／またはこの種のゲームをしている間、ゲームシステムに為された変更を検知し、そのサイトのサーバが適切な行動を取ることができるようにすることもまた望まれるであろう。
【０００５】
より一般的な意味においては、クライアント装置の使用者がサーバ上で提供されているサービスにログオンまたはサインインしようと試みている時に、サーバがクライアント上の任意の所望の状態に関してクライアント装置にチャレンジを課すことができて、クライアントの何らかの特性または状態が期待されるものと異なるかどうかをサーバが判断できるようすることがさらに望ましいであろう。この手順は、サーバによって提供されるゲーム遊びの機能に限定されず、またゲーム遊びのクライアントに限定されないことは明らかであろう。クライアントから返された応答が期待通りでなければ、サーバは自動的に適切な行動を取ることができるはずであろう。例えば、サーバは単純にこのクライアントとの現在のセッションを終了することができるであろうし、データベースにクライアントの識別情報を記録し、たとえこのクライアントからサーバに返された応答が将来のセッションで期待通りであるとしても、このクライアントがサーバ上で提供されているサービスを二度と使えないようにすることもできるであろう。
【課題を解決するための手段】
【０００６】
本発明の主要な態様は、クライアントの使用者が欲するサービスを提供しているサーバにこの使用者が接続したいと望むということである。本発明の初期の用途において、サーバは、ゲーミングサイトにおいて採用され、プレーヤーがインターネット上で複数プレーヤーのゲーム遊びに参加することができるようにするサービスを提供するが、本発明はこの用途に限定されないということが理解されるべきである。クライアントを使って、使用者はこのサーバ上で提供されるサービスにログオンすることを試みる。本発明の方法に従って、ログオン処理の期間中、および／またはその後のゲーム遊びの期間中、サーバは１つまたは複数のパラメータを含む１つまたは複数のコードセグメントの形態でクライアントに「チャレンジ（ｃｈａｌｌｅｎｇｅ）」を送る。このチャレンジはまた、クライアント上の状態を示す応答を判定するために、特定の手順にクライアントを従わせる機械語命令も含むのが通常であろう。例えば、本発明のゲーミング用途では、クライアントが改変されたＢＩＯＳを実行しているか、あるいは改変されたソフトウェア、またはゲームの海賊版のコピーを使用しているかどうかをサーバが判定することもできる。クライアントによって決定される応答は、このように、クライアント上で検知されることになる状態に関連している。この応答は、その後、サーバに送り返され、期待される応答と比較される。
【０００７】
この応答が期待される応答に適合するならば、サーバにより所望のサービスがクライアントに提供される。しかしながら、この応答が期待された応答に適合しないか、あるいは応答がまったく返ってこなければ、サーバにより適切な所定の行動が自動的に履行されうる。例えば、サーバは、将来の参照のために単純にこの応答を記録することもできるし、あるいは現在のセッションを終了することもできるし、そして／または、このクライアントまたは使用者がこのサーバで提供されるサービスに二度と参加することが、例えば、サーバで提供されるゲーミングサービスを用いたオンラインゲームに興じることが、永久にできないようにすることもできる。
【０００８】
応答を決定するためにクライアントによって実装される機械語命令により、ＢＩＯＳと共に取り込まれたメモリの一部、またはゲームのようなアプリケーションのコードを格納しているメモリの一部のように、クライアント上のメモリの指定部分に一方向のハッシングアルゴリズムをクライアントに適用させるようにすることができる。あるいは、機械語命令により、クライアントにクライアントがアクセス可能な不揮発性メモリの一部に一方向のハッシングアルゴリズムを適用させることができる。ゲームプログラムの海賊版のコピーは、通常、そのプログラムが保存されていた元々の不揮発性媒体の一部のみを有するのが通常であろうから、ゲームソフトウェアの認可されたコピーがクライアントによってアクセスされているかどうかを判定するために、機械語命令がクライアントに（ゲームプログラムではなく）ランダムなデータが格納された不揮発性媒体の部分に一方向のハッシュを適用させることができる。
【０００９】
クライアントが後に再びサーバにログオンを試みる時、このメモリの（または不揮発性媒体の）指定部分を変えることができる。応答および／またはメモリの（または不揮発性媒体の）指定部分を判定するにあたって使われるパラメータ、そして／あるいは応答をもたらすために使われる一方向ハッシングアルゴリズムの細部のどちらかを変えることによって、クライアントの使用者にとって、期待される応答に適合する偽りの応答を用意することが非常に困難になるであろう。
【００１０】
ゲームが配布される不揮発性メモリ媒体のビット単位の海賊版のコピーを検知するために、クライアントに与えられる機械語命令は、クライアントにすべての認可されたコピー上で読み出し不可に為された不揮発性メモリ媒体の一部を読み出すように試みさせることが可能である。その部分を読み出す試みが不成功であったことをこの応答が示していなければ、この応答は、期待される応答に適合しないことになり、このクライアントがゲームソフトウェアの海賊版のコピーにアクセスしていることが明らかとなるであろう。
【００１１】
本発明のその他の態様は、ネットワーク上でサーバに接続した複数のクライアントにサービスを提供するために用いられたサーバまたはサーバ群がクライアントの状態を検知することができるようにすることを対象とする。このサーバには、複数の機械語命令が格納されているメモリと、複数のクライアントを連結するためのネットワークインターフェイスと、このメモリとこのネットワークインターフェイスに連結された、プロセッサが含まれる。このプロセッサは、機械語命令を実行し、上述された方法のステップに概ね一致する複数の機能を履行する。本発明のもうひとつの態様は、サーバによって行われるステップを履行するために機械語命令が格納されているメモリ媒体を対象とする。
【００１２】
本明細書および添付の特許請求の範囲の全体に渡って使われているように「サーバ」という用語は、単一のサーバコンピューティング装置または複数のコンピューティング装置を指すことを目的としている。このように、「サーバ」という用語は、クライアントが欲するサービスを提供するために提携して機能している一群のコンピューティング装置にも当てはまることが理解されよう。チャレンジを送り、クライアントから受け取った応答を評価している特定のサーバコンピューティング装置が、サービスを実際に提供しているコンピューティング装置と必ずしも同一ではないかもしれない。しかしながら、チャレンジ応答プロセスをパスできなかったことにより、（チャレンジを送り、そして／または応答を評価しているサーバだけでなく）一群のサーバコンピューティング装置のどれに対してもこのクライアントのさらなるアクセスが拒絶されるようにさせることができる。さらに、本明細書で使われているように、「サーバ」という用語は、さらに一般に、ルータや交換機のようにネットワークコンピューティング装置に対しても当てはめることができるということが理解されるであろう。ルータまたは交換機が、チャレンジを発行し、正しい（即ち、期待される）応答がクライアントによって返された場合のみ、このルータ／交換機の背後にあるその他のサーバに対してそのクライアントからのパケットを転送することになろう。
【発明を実施するための最良の形態】
【００１３】
本発明の好ましい実施例を、クライアントによるサーバへのアクセスの制御に関して、以下に説明する。上で述べたように、クライアントは、例えば、概ね従来型のパーソナルコンピュータ（ＰＣ）、携帯電話、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）またはサーバに有線または無線ネットワーク上で接続することのできるほとんどあらゆるその他の形態のコンピューティング装置でありうる。このように、クライアントという用語には、ネットワーク上でサーバに接続するために用いられる既存のコンピューティング装置もしくはシステム、またはネットワーク接続を経由してサーバにアクセスするために将来開発される可能性のあるコンピューティング装置を包含することが理解されるであろう。
【００１４】
本発明の初期の好ましい形態において、クライアントはゲームコンソールであり、インターネット上で複数プレーヤーのゲーム遊びを容易にするオンラインゲームシステムにサーバが用いられている。しかしながら、当業者は、クライアントがサーバにアクセスすることを試みるその他の多くの状況においても本発明を実施できることを認めるであろう。クライアントおよびサーバは、インターネット経由で、あるいはローカルエリアネットワーク（ＬＡＮ）や、イントラネット、ワイドエリアネットワーク（ＷＡＮ）のような、別の種類のネットワーク上で接続することができる。
【００１５】
サーバは、現在では、サーバ機能の実行に専用の１つまたは複数のコンピューティング装置を備えていると理解されている。しかし、「サーバ」という用語は、サーバ機能を実行するために将来開発される可能性のあるコンピューティング装置を含め、サーバの機能を実行するほとんどいかなるコンピューティング装置またはシステムを包含することが意図されている。この「サーバ」は、ピアツーピアのセッションで接続するための別のクライアントから受信したリクエストを処理しているひとつのクライアントであることさえありえる。チャレンジを送る方のクライアントは、それ自身で他方のクライアントに送ったコードセグメントを生成することができるだろうし、別のサーバから適切なチャレンジと期待される応答を与えられるかもしれないし、またはサーバ役を務めるピアツーピアクライアントがそれ自身でチャレンジを実行して、他方のクライアントからの期待される応答を決定することもできる。
【００１６】
（例示としてのコンピューティング装置）
図１および後続の議論は、本発明の方法を実施しているソフトウェアを実現しうる適切なコンピューティング環境についての簡潔で一般的な説明を提供するものである。本発明は、単一のサーバ上で実施することもできるが、サーバとして機能する複数のコンピューティング装置上でも実施することができる。クライアントおよびサーバの両方それぞれが、図１に示された機能構成要素を含んでもよい。本発明は明らかに汎用ＰＣからなるクライアント上で実現することができる一方で、本発明の初期の用途においては、クライアントは、下述のように、ゲーミングコンソールを包含している。それでもなお、サーバまたはクライアントの一方にＰＣを使用することに関して、汎用ＰＣについての後続の議論を提示する。
【００１７】
必須ではないが、本発明は、ＰＣおよび／またはゲーミングコンソールによって実行されるプログラムモジュールのような、コンピュータ実行可能命令との一般的な関連で説明されるであろう。一般に、プログラムモジュールには、特定のタスクを行ったり、特定の抽象データタイプを具現したりする、データ構造、関数、コンポーネント、オブジェクト、ルーチン、コンピュータシミュレーションのようなアプリケーションプログラムなどが含まれる。さらに、当業者は、本発明がその他のコンピュータシステムの構成で、特に、通信ネットワークを通してリンクされたリモート処理装置によってタスクが実行される分散型コンピューティング環境において、実施しうることを認めるであろう。分散型コンピューティング環境においては、プログラムモジュールはローカルおよびリモートの両方あるいは一方のメモリ記憶装置に設置することができる。
【００１８】
図１を参照すると、サーバコンピュータに使用するためのシステム例は、従来型のＰＣ２０の形態での汎用コンピューティング装置を含んでいる。ＰＣ２０は、処理ユニット２１、システムメモリ２２、およびシステムバス２３を備えている。システムバスは、システムメモリを含む様々なシステム構成要素を処理ユニット２１に連結し、メモリバスまたはメモリコントローラ、周辺バス、そして種々のバスアーキテクチャのいずれかを用いたローカルバスを含む何種類かのバス構造のいずれかであってよい。システムメモリには、読み出し専用メモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５が含まれる。起動期間中のように、ＰＣ２０内で要素間の情報転送を助ける基本ルーチンが入っている基本入出力システム２６（ＢＩＯＳ）は、ＲＯＭ２４に格納されている。ＰＣ２０はさらに、ハードディスク（図示せず）から読み出したり、書き込んだりするためのハードディスクドライブ２７を含み、取り外し可能な磁気ディスク２９から読み出したり、書き込んだりするための磁気ディスクドライブ２８、およびＣＤ−ＲＯＭまたはその他の光媒体のような、取り外し可能な光ディスク３１から読み出したり、書き込んだりするための光ディスクドライブ３０を含んでいてもよい。ハードディスクドライブ２７、磁気ディスクドライブ２８、そして光ディスクドライブ３０は、それぞれハードディスクドライブインターフェイス３２、磁気ディスクドライブインターフェイス３３、そして光ディスクドライブインターフェイス３４によってシステムバス２３に接続されている。これらのドライブおよびそれらの関連するコンピュータ可読媒体は、コンピュータで読み取り可能な機械語命令、データ構造、プログラムモジュール、およびＰＣ２０のその他のデータについての不揮発性の記憶を提供している。ここに説明された環境例には、ハードディスク、取り外し可能な磁気ディスク２９、および取り外し可能な光ディスク３１が含まれるが、当業者には、コンピュータによってアクセス可能なデータを格納できる磁気カセット、フラッシュメモリカード、デジタル多用途ディスク（ＤＶＤ）、ベルヌーイ（Ｂｅｒｕｎｏｕｌｌｉ）カートリッジ、ＲＡＭ、ＲＯＭ、などのようなその他の種別のコンピュータ可読媒体をこの動作環境例においても使用できることが認識されるであろう。
【００１９】
多数のプログラムモジュールが、ハードディスク、磁気ディスク２９、光ディスク３１、ＲＯＭ２４またはＲＡＭ２５に格納することができ、これらには、オペレーティングシステム３５、１つまたは複数のアプリケーションプログラム３６、その他のプログラムモジュール３７、およびプログラムデータ３８が含まれる。使用者は、キーボード４０やポインティング装置４２のような入力装置を通してＰＣ２０にコマンドや情報を入力しうる。ポインティング装置４２には、マウス、スタイラスペン、無線リモートコントロール、またはその他のポインタが含まれてもよい。その他の入力装置（図示せず）には、ジョイスティック、ゲームパッド、ハンドル、ペダル、マイクロフォン、衛星アンテナ、スキャナ、デジタルカメラ、デジタルビデオレコーダ、またはその種の他のものが含まれうる。これらおよびその他の入力／出力（入出力）装置は、システムバス２３に連結されている入出力インターフェイス４６を通して処理ユニット２１に接続されることが多い。入出力インターフェイスという用語は、シリアルポート、パラレルポート、ゲームポート、キーボードポート、および／またはユニバーサルシリアルバス（ＵＳＢ）のために特別に使用される各インターフェイスを包含することが意図されている。モニター４７やその他の種別の表示装置もまた、ビデオアダプタ４８のような、適切なインターフェイス経由でシステムバス２３に接続され、アプリケーションプログラム、ウェブ機能付ポケットベル、模擬環境、および／またはその他の情報を表示するために使うことができる。モニターに加えて、ＰＣは、スピーカー（サウンドカードまたはその他のオーディオインターフェイス（図示せず））やプリンタのような、その他の周辺出力装置（図示せず）に連結されることが多い。
【００２０】
前述のとおり、本発明はネットワーク化された環境において実現され、そこではＰＣ２０がリモートコンピュータ４９のような、１つまたは複数のクライアントに論理的に接続されている。リモートコンピュータ４９は、別のＰＣ、ルータ、ネットワークＰＣ、ピア装置、衛星、またはクライアントを構成するその他の共通ネットワークノードであってよい。リモートコンピュータ４９は、以下でさらに詳しく説明されることになるように、本発明のひとつの好ましい用途においては、ゲームコンソールである。リモートコンピュータ４９は、ＰＣ２０に関連して上述された要素の多くまたはすべてを含むこともあるし、ゲーミングコンソールに関連して下述される要素を含むこともあるし、あるいはクライアントとして機能することのできるその他の電子装置の典型的な要素を含むこともある。不必要に図１を複雑にしないために、リモートコンピュータ４９はただひとつの外付けメモリ記憶装置５０と共に図示されている。図１に示された論理接続には、ローカルエリアネットワーク（ＬＡＮ）５１およびワイドエリアネットワーク（ＷＡＮ）５２が含まれ、これらはインターネットを包含することもある。この種ネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネットにおいて、そしてインターネットに連結されたコンピューティング装置に関して一般的である。
【００２１】
ＬＡＮネットワーキング環境で使用されるとき、ＰＣ２０はネットワークインターフェイスまたはアダプタ５３を通してＬＡＮ５１に接続される。ＷＡＮネットワーキング環境で使用されるとき、ＷＡＮ５２上で通信を確立する目的で、ＰＣ２０は、通常、モデム５４、またはその他の手段、例えば、ケーブルモデム、デジタル加入者線（ＤＳＬ）インターフェイスまたは統合サービスデジタルネットワーク（ＩＳＤＮ）インターフェイス、を含む。リモートコンピューティング装置間の通信に共通して使われているＷＡＮのひとつの種別は、インターネットである。モデム５４は、内蔵でも外付けでもよく、システムバス２３に接続されるか、あるいは入出力装置インターフェイス４６経由で、即ちシリアルポートを通して、このシステムバスに連結される。ネットワーク化された環境において、ＰＣ２０に関連して示されたプログラムモジュール、またはその一部は、リモートメモリ記憶装置に格納されることがある。図示されたネットワーク接続は例示であり、無線通信および広帯域ネットワークリンクのように、コンピュータ間の通信リンクを確立するためのその他の手段を使用することができるということが認識されるであろう。
【００２２】
（最低限必要なネットワーク化された環境）
上で述べたように、本発明の主要な態様は、クライアントの使用者が、インターネットのようなネットワーク上で、その使用者が欲するサービスまたはデータを提供するサーバに接続したいと望むということである。このように、本発明を実現するためには、クライアントとサーバを含むネットワーク環境が必須である。図２Ａは、サーバ２８２ａと、複数のクライアント２８４ａ、．．．２８４ｈを含む、基本ネットワーク２８０を概略的に図示している。ネットワーク環境は、サーバと単一のクライアントの間に存在することもできるが、ほとんどのネットワーク環境では、複数のクライアントが含まれ、そして同様に複数のサーバが含まれることも多い。ネットワーク２８０は、多種多様のデータ通信ネットワークのいずれかを代表することができ、公共の部分（例、インターネット）だけでなく私的な部分（例、私有のＬＡＮおよび／またはＷＡＮ）も含まれうることが理解されるべきである。また、ネットワーク２８０は、有線および無線種別の両方を含む、任意の１つまたは複数の多種多様の従来型の通信構成を用いて実現されうることも理解されるべきである。多種多様の通信プロトコルのいずれかが、ネットワーク２８０経由でデータ通信するために使うことができ、これらには公開および独自のプロトコルの両方が含まれる。この種のプロトコルの例には、ＴＣＰ／ＩＰ、ＩＰＸ／ＳＰＸ、ＮｅｔＢＥＵＩなどが含まれる。
【００２３】
図２Ｂは、例示のサーバ２８２ｂを概略的に図示している。上で述べたように、サーバは、ＰＣ２０の多くの構成要素を概ね備えており、それについては上で詳述した。本発明に合致して用いられるサーバは、サーバコンピューティングシステム２８２ｃとして実現することができ、このサーバコンピューティングシステムには、接続されたクライアントにサービスを提供する作業を分担する複数の個別のサーバが含まれることが理解されるべきである。当業者であれば認めるように、サーバコンピューティングシステムの個別のサーバは、（負荷分散されたシステムの場合のように）作業を均等に分担することもあるし、あるいはサーバコンピューティングシステムは、特定の作業を特定のサーバに割り当てることもある。
【００２４】
本発明の好ましい実施例は、ネットワークに接続されたゲームコンソールであるクライアントとオンラインゲームサーバであるサーバと共に利用されているが、本発明は同様にその他の種別のクライアントと共に有益に用いることができるということを重ねて強調する。図２Ｃは、サーバにアクセスするために使用することのできる複数の種々のクライアントを概略的に図示しており、これらには、限定なしに、ラップトップコンピュータ２８４ｉ、ワークステーション２８４ｊ、ＰＣ２８４ｋ、ＰＤＡ２８４ｌ、ゲームコンソール２８４ｍ、ウェブ利用可能な無線電話２８４ｎ、そしてウェブ利用可能なポケットベル２８４ｏが含まれる。図２Ｃはまた、サーバ２８２ｂまたはサーバコンピューティングシステム２８２ｃがクライアントであるとみなすことができるということを示しており、これはこのサーバを異なるサーバによって提供されているサービスにアクセスしたいと望んでいる使用者が用いている場合である。
【００２５】
本発明は、多数の異なる種別のクライアントからのサーバへのアクセスを制御するように実現しうるということが明確に理解されるべきであるが、本発明の好ましい実施例は、ゲーム遊びを円滑にするサーバへのネットワーク接続されたゲームコンソールのアクセス制御において実現されている。しかし、本発明は、ゲームコンソールであるクライアント、およびゲーム遊びを円滑にするサーバに限られない。その他の種別のクライアント、および異なる機能を行うサーバが、本発明に包含される。
【００２６】
（例示としてのクライアント）
図３は、例示としての電子ゲーミングシステム１００が示され、ゲームコンソール１０２と、コントローラ１０４ａおよび１０４ｂのような最大４つの使用者入力装置のサポートを含んでいる。当然ながら、単に１つの使用者入力装置をサポートするゲームコンソールでも、あるいは追加の使用者入力装置をサポートするゲームコンソールでも、採用することができる。ゲームコンソール１０２は、内蔵のハードディスクドライブ（本図に図示せず）を装備し、光記憶ディスク１０８で代表されるように、いろいろな形態の持ち運び可能な光メモリ媒体をサポートする持ち運び可能な媒体ドライブ１０６を含んでいる。適当な持ち運び可能な媒体の例には、ＤＶＤディスクおよびコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）ディスクが含まれる。このゲーミングシステムでは、ゲームコンソールでの使用のためにＤＶＤディスクでゲームプログラムが配布されることが好ましいが、代わりに他のメモリ媒体が、本発明に関連して、このクライアントまたはその他の種別のクライアント上で使われうるということも考えられる。
【００２７】
ゲームコンソール１０２の前面には、その数と配置は変更されるかもしれないが、サポートされたコントローラへの接続のために４つのポート１１０がある。電源ボタン１１２、および取り出しボタン１１４も、ゲームコンソール１０２の前面に配置されている。電源ボタン１１２は、ゲームコンソールに対する電力の印加を制御し、取り出しボタン１１４は、持ち運び可能な媒体ドライブ１０６のトレイ（図示せず）を交互に開けたり、閉めたりして、ディスク上のデジタルデータがゲームコンソールによる使用のために読み出せるように、記憶ディスク１０８の差し込みと取り出しを可能にする。
【００２８】
ゲームコンソール１０２は、オーディオ／ビジュアル（Ａ／Ｖ）インターフェイスケーブル１２０経由でテレビもしくはその他の表示モニターまたはスクリーン（図示せず）に接続する。電源ケーブルプラグ１２２は、通常の交流電流源（図示せず）に接続されると、ゲームコンソールに電力を伝搬する。ゲームコンソール１０２は、イーサネット（登録商標）データコネクタ１２４を含み、ネットワーク上で（例、別のゲームコンソールへのピアツーピアリンクを通して、あるいはハブまたは交換機（図示せず）への接続を通して）、あるいはインターネット上で、例えば、ｘＤＳＬインターフェイス、ケーブルモデム、またはその他のブロードバンドインターフェイス（図示せず）への接続を通して、データを転送したり、受信したりする。その他の種別のゲームコンソールでは、従来の電話モデムを用いた通信で連結させることもある。
【００２９】
各コントローラ１０４ａおよび１０４ｂは、リード線経由で（あるいは、無線インターフェイスを通して）ゲームコンソール１０２に連結される。図示された実装においては、これらのコントローラはユニバーサルシリアルポート（ＵＳＢ）と互換性があり、ＵＳＢケーブル１３０経由でゲームコンソール１０２に接続されている。ゲームコンソール１０２は、ゲームソフトウェアとやりとりしたり、制御したりするために多種多様な使用者装置のいずれかを装備することがある。図２に示されたように、各コントローラ１０４ａおよび１０４ｂは、２つの親指スティック１３２ａおよび１３２ｂ、Ｄパッド１３４、ボタン１３６、そして２つのトリガ１３８を装備している。これらのコントローラは、単に代表的なものであるにすぎず、その他のゲーミング入力および制御装置が、ゲームコンソール１０２との使用のために、図３に示されたこれらのものの代用となるか、またはこれらに追加されてもよい。
【００３０】
取り外し可能な機能ユニット１４０は、任意選択的にコントローラ１０４の中に差し込むことができ、付加的な特徴と機能を提供する。例えば、持ち運び可能なメモリユニット（ＭＵ）により、使用者はゲームのパラメータを格納でき、他のゲームコンソール上で遊ぶ目的でそれらを移植することができるようになる。これは、この持ち運び可能なＭＵを他のゲームコンソールに接続されたコントローラの中に差し込むことによって行われる。別の取り外し可能な機能ユニットは、音声通信ユニットを備え、使用者がその場所でそして／またはネットワークを通じて他の使用者と言葉で通信できるようにする。この音声通信ユニットには、ブームマイク１４４を含むヘッドセット１４２が接続されている。各コントローラは、２つより多いか、または少ない取り外し可能な機能ユニットまたはモジュールが採用されてもよいが、この説明された実装においては、２つの取り外し可能な機能ユニットまたはモジュールを収容するように構成されている。
【００３１】
ゲーミングシステム１００は、例えば、ゲームや、音楽や、ビデオを再生することができる。ハードディスクドライブ上に保存されたり、ドライブ１０６にある光記憶ディスク１０８から読み出されたりするデジタルデータを用いて、あるいはオンラインソースや、またはＭＵから入手されるデジタルデータを用いて、その他の機能を実現できるということが考えられる。例えば、ゲーミングシステム１００は、次の再生を行うことができる。
・ＣＤおよびＤＶＤディスク、ハードディスクドライブ上に保存されるか、あるいはオンラインソースからダウンロードされたゲームタイトル
・持ち運び可能な媒体ドライブ１０６にあるＣＤ、ハードディスクドライブ上のファイル（例、ＷＩＮＤＯＷＳ  ＭＥＤＩＡ  ＡＵＤＩＯ（登録商標）（ＷＭＡ）形式）に保存されるか、あるいはインターネットまたはその他のネットワーク上のオンラインストリーミングソースに由来するデジタル音楽
・持ち運び可能な媒体ドライブ１０６にあるＤＶＤディスク、またはハードディスクドライブ上のファイル（例、アクティブストリーミング形式で）に保存されているか、あるいはインターネットまたはその他のネットワーク上のオンラインストリーミングソースからの映画のようなデジタルＡＶデータ
【００３２】
図４は、ゲーミングシステム１００の機能構成要素をさらに詳細に示す。ゲームコンソール１０２は、中央処理ユニット（ＣＰＵ）２００と、メモリコントローラ２０２を含み、このメモリコントローラは、読み出し専用メモリ（ＲＯＭ）２０４、ランダムアクセスメモリ（ＲＡＭ）２０６、ハードディスクドライブ２０８、および持ち運び可能な媒体ドライブ１０６へのプロセッサのアクセスを円滑にしている。ＣＰＵ２００は、一時的にデータを格納するための１次キャッシュ２１０と２次キャッシュ２１２を装備し、要求されるメモリアクセスの回数を低減し、それによって処理スピードとスループットを改善している。ＣＰＵ２００、メモリコントローラ２０２、そして各種の記憶装置が１つまたは複数のバスを経由して相互接続されおり、これらには、シリアルおよびパラレルバス、メモリバス、周辺バス、そして各種のバスアーキテクチャのいずれかを用いたプロセッサまたはローカルバスが含まれる。例示の目的で、この種のアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、そしてＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが含まれうる。
【００３３】
ゲームコンソールのひとつの適した実装の一例として、ＣＰＵ２００、メモリコントローラ２０２、ＲＯＭ２０４、およびＲＡＭ２０６は、共通のモジュール２１４に集積されている。この実装においては、ＲＯＭ２０４は、フラッシュＲＯＭで構成され、ＰＣＩバスおよびＲＯＭバス（どちらも図示せず）経由でメモリコントローラ２０２に接続されている。ＲＡＭ２０６は、複数のダブルデータレートのシンクロナスダイナミックＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）で構成され、別個のバス（図示せず）を経由してメモリコントローラ２０２により独立して制御されている。ハードディスクドライブ２０８と持ち運び可能な媒体ドライブ１０６は、ＰＣＩバスおよびＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）バス２１６を経由してメモリコントローラに接続されている。
【００３４】
３次元（３Ｄ）グラフィック処理ユニット（ＧＰＵ）２２０とビデオエンコーダ２２２は、高速および高解像度のグラフィック処理のためのビデオ処理パイプラインを形成する。データは、グラフィック処理ユニット２２０からデジタルビデオバス（図示せず）を経由してビデオエンコーダ２２２に搬送される。オーディオ処理ユニット２２４とオーディオエンコーダ／デコーダ（ＣＯＤＥＣ）２２６は、ハイファイおよびステレオのオーディオデータ処理のためのオーディオ処理パイプラインを形成する。オーディオデータは、通信リンク（図示せず）を経由してオーディオ処理ユニット２２４とオーディオＣＯＤＥＣ２２６の間で搬送される。これらビデオおよびオーディオ処理パイプラインは、テレビやその他の表示モニターへの伝送のためにＡ／Ｖポート２２８にデータを出力する。図示された実装においては、ビデオおよびオーディオ処理の構成要素２２０〜２２８は、モジュール２１４上に搭載されている。
【００３５】
また、ＵＳＢホストコントローラ２３０とネットワークインターフェイス２３２もモジュール２１４によって実装されている。ＵＳＢホストコントローラ２３０は、バス（例、ＰＣＩバス）を経由してＣＰＵ２００とメモリコントローラ２０２に連結され、周辺コントローラ１０４ａ〜１０４ｄに対してホストとしての機能を果たしている。ネットワークインターフェイス２３２は、ネットワーク（例、インターネット、ホームネットワークなど）へのアクセスを提供し、イーサネット（登録商標）カード、電話モデムインターフェイス、ブルートゥースモジュール、ケーブルモデムインターフェイス、ｘＤＳＬインターフェイス、およびその他同種類のものを含む、多種多様な各種の有線または無線インターフェイス構成要素のいずれかでありうる。
【００３６】
ゲームコンソール１０２は、２つのデュアルコントローラサポートの部分組立部２４０ａおよび２４０ｂを有し、各部分組立部が２つのゲームコントローラ１０４ａ〜１０４ｄをサポートしている。フロントパネルの入出力部分組立部２４２は、電源ボタン１１２と取り出しボタン１１４の機能だけでなく、任意の発光ダイオード（ＬＥＤ）またはゲームコンソールの外面に露出したその他の指示器もサポートしている。部分組立部２４０ａ、２４０ｂ、および２４２は、１つまたは複数のケーブル組立部２４４を経由してモジュール２１４に連結されている。
【００３７】
８つの機能ユニット１４０ａ〜１４０ｈは、４つのコントローラ１０４ａ〜１０４ｄに接続可能であるように図示されている。即ち、各コントローラについて２つの機能ユニットということである。各機能ユニット１４０は、ゲームや、ゲームのパラメータ、そしてその他のデータを格納することのできる付加的な記憶または機能を提供する。ＭＵがコントローラに差し込まれると、このＭＵは、メモリコントローラ２０２によってアクセスできる。システム電源モジュール２５０は、ゲーミングシステム１００の構成要素に電力を供給する。ファン２５２は、ゲームコンソール１０２内の構成要素および回路を冷却する。
【００３８】
本発明の好ましい実施例を実現するために、ＤＶＤまたはその他のメモリ媒体に格納された（あるいはネットワークを通じてダウンロードされた）機械語命令からなるゲームソフトウェアアプリケーション２６０が、ＣＰＵ２００による実行のためにＲＡＭ２０６および／またはキャッシュ２１０、２１２にロードされる。ソフトウェアアプリケーション２６０の一部が、必要なときのみ、ＲＡＭにロードされることもあるし、あるいはソフトウェアアプリケーションのすべて（そのサイズに依る）がＲＡＭ２０６にロードされることもある。ソフトウェアアプリケーション２６０を以下でさらに詳しく説明する。
【００３９】
ゲーミングシステム１００は、単純にシステムをテレビまたはその他の表示モニターに接続することによって、独立したシステムとして操作してもよい。この独立型のモードにおいて、ゲーミングシステム１００により、一人以上の使用者がゲームをしたり、映画を観たり、音楽を聴いたりすることが可能になる。しかしながら、ネットワークインターフェイス２３２を通して利用可能なるインターネットまたはその他のネットワークへの接続で、ゲーミングシステム１００をさらに別のゲーミングシステムと連結したり、あるいはより大きなネットワークゲーミング社会の構成要素として操作したりすることができ、その他のゲーミングシステムを使用しているプレーヤーと一緒にインターネットまたはその他のネットワーク上で興じられるゲームにおいてオンラインの複数プレーヤーとのやりとりを可能にする。
【００４０】
使用者がネットワーク化されたゲーム遊びを体験するためにサーバに接続したいと望む場合、これはますます人気が高まっている活動であるが、ゲーミングシステム１００は、上述されたネットワーク接続を通してサーバ（本図では図示せず）にアクセスを試みる。以下にさらに詳しく説明されるように、サーバは、サーバにアクセスを試みる各ゲームシステムにチャレンジを課す。サーバによって受信したクライアントのゲームシステムからのそのチャレンジに対する応答に基づいて、サーバは予め決められた適切な行動を決定する。
【００４１】
（例示としてのゲーミングネットワークシステム）
本発明の好ましい実施例は、マイクロソフトコーポレーションのＸＢＯＸ  ＬＩＶＥ（登録商標）オンラインゲーミングネットワークと共に実現されるであろう。図５は、一例としてのゲーミングネットワーク３００を示しており、これは複数のゲーミングシステム１００ａ、．．．１００ｓを含み、その各々がオンラインゲームサービス３０２に基づくサーバ、以降では単にゲームサーバ３０２と呼ばれる、に論理的に接続されている。各ゲーミングシステムがクライアントを表すことが理解されるべきである。図２Ｂに関連して上述されたとおり、ゲームサーバ３０２は、単一サーバであることもできるし、あるいはむしろサーバコンピューティングシステムにグループ化された複数のサーバを備えることになるであろう。ネットワーク３００は、ネットワーク２８０と類似し、有線および無線種別の双方を含む多種多様な従来の通信構成のいずれか１つまたは複数を用いて実現することができる。公開および独自のプロトコルの両方を含む多種多様な通信プロトコルのいずれかが、ネットワーク３００経由でデータを通信するために使用することができる。この種のプロトコルの例には、ＴＣＰ／ＩＰ、ＩＰＸ／ＳＰＸ、ＮｅｔＢＥＵＩなどが含まれる。
【００４２】
一般に、ゲームサーバ３０２は、プレーヤー間のゲーム遊びを円滑にするために通信にあたってクライアントを連結させたり、オンラインゲームをサービスおよび／またはホストしたり、ダウンロード可能なゲーム関連のファイルをサービスしたり、ゲーミング競技会をホストしたり、ストリーミングゲーム関連のＡ／Ｖファイルをサービスしたり、ゲーム遊びの期間中に参加者間のテキストベースまたは音声のメッセージ交換を可能にしたり、そしてその他同種類のもののように、ゲーミング関連サービスに接続されたクライアントに（即ち、各ゲームシステム１００の使用者に）そのサービスを提供する。しかしながら、本発明は、多くのその他の種別のサービスがこのサーバによって提供されうるので、単にこれらまたはその他のゲーム関連のサーバ機能のみを持つ用途に限定されないということが強調されるべきである。
【００４３】
ネットワーク３００は、ゲームサーバ３０２にまだ接続されていないゲームシステム１００ｔを含むことに留意されたい。本発明の好ましい実施例を説明するにあたって、ゲームシステム１００ｔとゲームサーバ３０２間のネットワーク接続の確立を以下にさらに詳しく説明することになるであろう。図５は、また、ゲームシステム１００ｕ上に重ね合わされた「禁止」のための広く一般に了解されたシンボルを示し、破線がゲームシステム１００ｕとゲームサーバ３０２の間に伸びて、ゲームシステム１００ｕとゲームサーバ３０２の間のネットワーク接続が終了されたことを示している。以下にさらに詳しく説明されるように、特に本発明がゲームネットワークの環境において実施される場合、クライアントがチャレンジに失敗するときのサーバによる予め決められたひとつの行動は、クライアントとサーバ間の現在のネットワーク接続を直ちに終了すること、および／またはサーバとのネットワーク接続を確立するためのその特定のクライアントによるその後のいかなる試みをもそれ以降拒絶することの両方である。このように、図５の例では、ゲームシステム１００ｕは、ゲームサーバ３０２によって発行されたチャレンジに対して適切に応答することに失敗し、ゲームシステム１００ｕとゲームサーバ３０２間の論理ネットワーク接続がゲームサーバ３０２によって終了されている。さらに、この例では、ゲームサーバ３０２は、ゲームシステム１００ｕについての識別印（例、シリアル番号）を記録し、ゲームシステム１００ｕが次にゲームサーバ３０２に接続することを再び試みるとき、その識別印を検出することによって、将来の時点でゲームサーバ３０２への論理ネットワーク接続を確立するためのゲームシステム１００ｕによるいかなる将来の試みも拒絶することになろう。
【００４４】
（論理プロセスの概観）
図６において、フローチャート３２０は、本発明で用いられた論理ステップを図示しており、クライアントがサーバにアクセスできるようになる前にクライアントにチャレンジを課している。ブロック３２２において、クライアントがサーバにリクエストを送る。本発明により、サーバによって提供されるサービスまたはデータにクライアントがアクセスできるようにする前に、サーバがクライアントに関する状態を評価できるようにする。従来のネットワークにおいては、サーバは使用者名とパスワードの入力を要求することがあるが、しかし、サーバによって提供されるサービスにクライアントのアクセスを許可する前に、クライアントに関する状態を判定しようとは試みないであろう。しかしながら、本発明により、サーバはクライアントについてのハードウェアおよび／またはソフトウェアの構成に関連した状態を先ず判定することを可能にする。従って、本発明は、クライアントの使用者がサーバによって提供されるサービスまたは情報を欲し、サーバと共にまたはサーバを通して論理接続を確立しようと試みるこれら状況においてのみ有用である。この使用者がこのサーバによって提供されるサービスを望まず、サーバに接続しようと全く試みない場合には、このサーバはクライアントに関する状態を評価するための機会を有しないであろう。
【００４５】
ほとんどの場合にブロック３２２は、サーバにログオンするためのクライアントの試みを表すであろうということが考えられる。しかしながら、ブロック３２２は、サーバによって制御されるサービスまたは情報にアクセスするため、またはアクセスし続けるためのクライアントによる（ログオン成功後の）それ以降の任意のリクエストをも表すことができるということが理解されるべきである。クライアントとサーバ間の論理ネットワーク接続を伴ういずれの単一セッションにおいても、ブロック３２２はこの種の論理接続の確立後直ちに、またはこの種の論理接続の確立に引き続くいかなる時点でも実施することができるということが理解されるべきである。いくつかの状況においては、以下に付加的な詳細を説明するように、最初のログオンの試みの時点と、そしてまたクライアントとサーバ間の通信セッション期間中の１つまたは複数の時点の両方でクライアントにチャレンジを課すことが有益である場合がある。
【００４６】
ブロック３２４において、サーバはクライアントにチャレンジを送る。サーバによってクライアントへ送ることのできる好ましい形態のチャレンジの詳細は、さらに詳しく以下で議論されるが、このチャレンジは、システムにアクセスすることができるように、単にサーバがクライアントにパスワードやその他いくつかの資格認証の情報を提供するようにリクエストすることではないということが理解されるべきである。このチャレンジは、クライアントの状態がサーバの期待通りであるか否かを判断するためにクライアントの特性または状態を判定することを対象としている。複数の異なるチャレンジが予め生成され、サーバにとって利用可能になり、各兆戦が対応し期待される応答に関連付けられているということが考えられる。いろいろなチャレンジがそのクライアント上の同一の状態について検査できる。サーバは、その後、予め生成された複数のチャレンジのひとつを選択し、クライアントに送ることができる。各々のこの種の予め生成されたチャレンジについて、サーバはクライアント上にあると期待される状態の既知の特性に基づいて、期待される応答を算出することになろう。この種のチャレンジによって評価される可能性のある状態には、例えば、クライアントによって利用されるＢＩＯＳ、クライアントのハードウェア構成、そしてクライアントによって利用されているソフトウェアが含まれる。
【００４７】
ブロック３２６において、クライアントはサーバから受け取ったチャレンジを処理する。上で述べたように、このチャレンジは、入力されるべきパスワードまたはその他の何らかの資格認証の情報に対するリクエストではなく、クライアントの使用者によるいかなる行動も要求しない。好ましくは、このチャレンジは、サーバからクライアントに送られる実行可能なコードセグメントの形態である。このクライアントは、サーバから受け取ったコードセグメントを実行し、その後コードを実行することによって生成された応答を評価のためにサーバに送り返す。少なくともひとつの好ましい実施例において、このチャレンジは、クライアント上の指定部分のメモリまたはクライアントによってアクセス可能なＤＶＤやその他の不揮発性記憶の指定部分について、ＳＨＡ−１またはＭＤ５のような、一方向のハッシングアルゴリズムを実施するためのコードを含む。このチャレンジはまた、期待される結果に影響を及ぼす１つまたは複数のパラメータを含むことが好ましいであろう。
【００４８】
ブロック３２８において、クライアントによって算出される応答は、サーバに送られる。ブロック３３０において、サーバはクライアントによって算出された応答を評価する。この時点で、クライアントから受け取った応答に基づいて、ブロック３３１に示された通り、サーバはいくつかの所定の行動のひとつを、クライアントから受け取った応答に基づいて、実行することができる。クライアントがチャレンジに対する期待される応答をサーバに送ることに失敗した場合、あるいはそのクライアントから何の応答も受け取らなかった場合、サーバは様々の異なる方法で応じることができる。例えば、サーバは追跡の目的で単にこの出来事のログを取ることができる。その他の状況下では、サーバは、クライアントからのリクエストを拒否し、このクライアントとサーバ間の論理ネットワーク接続を終了することができる。別の選択肢は、サーバがこのクライアントとの論理接続を終了することであろう。さらに、サーバは、クライアント装置あるいは使用者によるサーバとの論理ネットワーク接続を確立するためのいかなる将来の試みをも「拒否」することができる。
【００４９】
このクライアントまたは使用者との将来のサーバ接続を拒否する目的でクライアントまたは使用者の身元を正確に判定するために、認証プロセス（パスワードやスマートカードなどのような、資格認証）を使って、このクライアント装置および／または使用者を同定した後で、ここに説明されたチャレンジと応答のプロセスを履行することができる。この認証プロセスの後にチャレンジ応答プロセスを行うことによって、クライアント装置および／または使用者の身元を正確に判定することができ、サーバからクライアントの身元（それがクライアント装置であれ、使用者であれ）を永久に遮断することを認証された身元に絞って正確に行うことができる。
【００５０】
図７は、図６のステップの変更形態を示しており、フローチャート３２０ａにおいてステップ３３０と３３１が省略されているが、ステップ３３２、３３４、３３６、および３３８を追加している。クライアントがサーバにリクエストを送り、サーバがクライアントにチャレンジを送り、クライアントがチャレンジを処理し、そしてクライアントが算出した応答をサーバに送る。フローチャート３２０ａにおいて、クライアントからの応答は、判定ブロック３３２で分析され、サーバがこの応答を受け入れるであろうかどうかを判断する。判定ブロック３３２において、クライアントが（期待される応答に適合しない）正しくない応答を返したとサーバが判断する場合、サーバはブロック３３６においてクライアントからのリクエストを否認する。本実施例においては、この時点でクライアントとサーバ間の論理ネットワーク接続を終了することにするのが好ましい。クライアント上に存在する状態を変更（例、修正）し、サーバからの後続のチャレンジをクライアントが処理できるようにすることが可能であり、そのためその後このクライアントは期待される応答に適合する応答を提供するであろう。あるいは、一回の事例でもクライアントの応答が期待された応答に適合しなければ、今後のいかなるサーバとの接続からもクライアントを差し止めることが好ましいかもしれない。このように、任意選択のブロック３３８に示されたように、サーバがブロック３３６においてクライアントからのリクエストを否認した場合、このクライアント装置または使用者の身元からの今後のすべてのリクエストがブロック３３８で無視される。
【００５１】
判定ブロック３３２を再度参照して、クライアントからの応答がサーバによって受け入れられた場合、次にクライアントからのリクエストはブロック３３４で処理される。さらなる代案として、クライアントがリクエストをサーバに送る現行のセッション期間中のその後の時点でこのチャレンジプロセスを繰り返すことができる。クライアントからサーバへのあらゆるリクエストに応じてチャレンジを送ることは、実際的ではなさそうであろうが、ブロック３３４と３２２をつなぐ点線によって示されているように、引き続きのリクエストをするクライアントに再びチャレンジを送ることは可能である。
【００５２】
また、クライアントが最初のチャレンジをパスした後にいくつかの状態を変更したかどうかを判断するために、任意の時間にサーバがクライアントにチャレンジを引き続いて発行することができる。例えば、チェックされている状態が、クライアントが改変されたソフトウェアを使っているかどうかについての判定である場合、クライアントが最初のチャレンジをパスし、しかしその後に改変されたソフトウェアを使い始めることが可能かもしれない。セッション期間中に１つまたは複数の後続のチャレンジを発行することによって、使われているソフトウェアのこの種の変更を検知することができる。フローチャート３２０ａは、このように、ブロック３３４と３２４をつなぐ点線で、この任意選択による後続のチャレンジを図示している。
【００５３】
（ゲーミングネットワークにおいてチャレンジを実施するための好ましいプロセス）
図８は、フローチャート３４０を示し、これは、図５のゲーミングネットワークにおけるクライアントとサーバの双方によって実行されるステップの論理シーケンスを示す。以下の議論において、ゲームシステム１００ｔがゲームサーバ３０２（両方とも図５に図示）にアクセスしようと試みていることが想定されている。しかしながら、下述された論理プロセスもまた、他のネットワークで利用可能なゲーミングシステムと共に用いることができ、そして本発明は用途についてゲームシステム１００のみに限定されないということが理解されるべきである。
【００５４】
図８に関しては、ゲームコンソールによって実行される論理ステップが、点線のボックス３４２でグループ化されており、他方でゲームサーバによって実行される論理ステップは、点線のボックス３４４で共にグループ化されている。ゲームコンソールがゲームサーバにログオンしようと試みる前に、いくつかのステップを履行しなければならない。ボックス３４２を参照すると、ブロック３５２に示されたように、ゲームコンソールの使用者は、互換性のあるゲームを入手しなければならない。このゲームは、ネットワークでの遊びをサポートするものでなければならない。また、ゲームコンソールがゲームサーバから受け取ったチャレンジを信頼されるソースに由来するものとして認証することができるようにする使用目的のために、ゲームコンソールまたはゲームのどちらかが公開鍵を有するであろう。すべてのＸＢＯＸ（登録商標）ゲームコンソールは、ゲームコンソールに送られたチャレンジをデジタル署名するためにＸＢＯＸ  ＬＩＶＥ（登録商標）ゲームサーバによって使用されている秘密鍵に対応する公開鍵を有している。ブロック３５４において、使用者はネットワークで利用可能なゲームを選択し、ゲームディスク（ネットワーク利用可能なＸＢＯＸ（登録商標）ゲーム用の片面、二層のＤＶＤディスク）をゲームコンソールに差し込む。ゲームのスタートメニューから、使用者はブロック３５６においてネットワーク遊びのオプションを選択すると、それによってゲームコンソールは、ブロック３５８に示されたように、ゲームサーバにログオンすることを試みるようになる。
【００５５】
サーバによって実行される論理ステップをここで参照すると、点線のボックス３４４で示されたように、ゲームコンソールからのログオンのリクエストに対してチャレンジを発行する前に、本発明においてはいくつかの論理プロセスがここでもまた実行されることが好ましい。ブロック３４６において、少なくとも１つのチャレンジが、期待されるコンソールの特性に基づいて、著作されることが好ましい。チャレンジを進行中に著作することもできるが、そうすることは、ゲームサーバのリアルタイム性能を低下することになる可能性が高く望ましくないということに留意されたい。好ましくは、複数のチャレンジを事前に著作するようにし、ゲームサーバが異なる時間に異なるチャレンジを選択し、発行できるようにする。
【００５６】
いくつかの異なる種別のチャレンジがこの好ましい実施例において実装される。最初の種別のチャレンジは、コードのチャレンジと呼ばれる。コードのチャレンジは、実行可能なコードセグメントであり、ゲームサーバからゲームコンソールへ送られる。ゲームコンソールは、複数の機械語命令からなるこのコードセグメントを実行すると、それによりゲームコンソールに応答を算出させ、その応答は期待される応答との比較のためにゲームサーバに返されることになる。チャレンジは、ゲームサーバが正しいまたは期待される応答が何であるべきかを決定するように著作される。上述のゲームシステム１００に関して、この種のゲームシステムの特性は、非常に明確に規定されている。本来のＢＩＯＳに変更を加えるために使われる改変されたチップ（即ち、「改変チップ」）の追加のような、ゲームシステム１００の構成に対するいかなる変更も適切なチャレンジで直ちに検知されうる。
【００５７】
ゲームコンソールに関して特に、チャレンジはゲームコンソールのＲＯＭ／カーネルイメージが変更されたかどうかを検知することができる。この種の改変は、クライアントのコード変更を可能にするために行われ、そしてまた、使用者が改変したゲームソフトウェアを用いて、ゲーム遊びの期間中に不正行為をすることを可能にすることもできる。十分な時間と資源があると仮定すると、いつも何の変更もなく使われるならば、ほとんどどのようなチャレンジも破られる可能性がある。しかしながら、チャレンジと共に送られるパラメータや、そして／またはコードセグメントの内容や、そして／またはコードセグメントによってチェックされるメモリの一部のいずれかが変更されている複数の異なるチャレンジを利用することによって、検知されることのない改変されたゲームコンソールを用いることが極めて困難になるであろう。たとえスイッチを使って本来のＢＩＯＳチップをゲームコンソール回路の中に復元することができるにしても、本来のチップを復元し忘れるという一回の事例によって、そのゲームコンソールはそれ以降オンライン遊びのゲームサーバに接続することから永遠に追放される結果になる。複数の異なるチャレンジを用いることと、かつてのチャレンジを破るために出回っている対処法に応じて新たなチャレンジを著作することによって、ゲームサーバは、事実上、ゲームコンソールを変更して不正行為をしたいと思っているゲームコンソールの使用者の一歩先を行くことができる。
【００５８】
多くの異なるコードのチャレンジを事前に著作することができ、そしてゲームサーバの管理者は、これらのチャレンジに対処しようとするいかなる組織立った試みをも無効にする見込みのあるような方法で、これらの事前に著作されたコードのチャレンジの漸次的なリリースを制御することができる。好ましくは、その時々で使われる特定のチャレンジは、利用可能なチャレンジの溜め（ｐｏｏｌ）から無作為に選択されることになる。このように、以前使われたチャレンジは、無作為に再利用され、ゲームサーバに送らなければならない期待される応答を予期することが極めて困難になる。例えば、新たなチャレンジを、その年の各日にリリースすることができる。新たなチャレンジが最初に使われたその日において、ゲームサーバにアクセスしようと試みているゲームコンソールは、この新たなチャレンジに遭遇する可能性が高いが、しかし低い頻度ではあるが、以前発行されたチャレンジがその日にゲームサーバによって発行される可能性もある。この種の時限であるが、無作為の新旧のチャレンジのリリースにより、以前遭遇したことのないチャレンジまたはゲームサーバによって発行された認識されていないチャレンジを回避することが極めて困難になるような頻度で予測不可能な新たなチャレンジに遭遇させられる結果になる。
【００５９】
複数の異なるコードのチャレンジを著作することに加えて、各コードのチャレンジを、ゲームコンソールが応答をどのように算出するかを変える複数の異なるパラメータと共に発行することができる。例えば、好ましいコードのチャレンジは、ゲームコンソールのＢＩＯＳが入っているメモリの内容の一方向ハッシュを行うことであろう。上で述べたように、ＳＨＡ−１ハッシングアルゴリズムまたはＭＤ５ハッシングアルゴリズムは、有益に採用することのできる一方向ハッシングアルゴリズムの例である。ゲームコンソールのＢＩＯＳは既知であり、そして各ゲームのゲームコードも既知であるので、ゲームコンソールがゲームサーバにログオンしようと試みている時に、ゲームサーバは、ゲームコンソール上のメモリの指定部分またはメモリのデータセクションの指定部分またはＤＶＤの指定部分について一方向のハッシングアルゴリズムを適用することによっていかなる結果になるかについて必要となる情報を有している。これが今までにゲームサーバによって発行されたコードのチャレンジの唯一の形態であったならば、決意のある使用者は、この用いられた一方向ハッシュアルゴリズムをうまく判定し、そして改変されていないゲームコンソール上でどのような期待される応答がもたらされるであろうかを割り出す可能性があるであろう。このコードのチャレンジを破るために、改変されたゲームコンソールは、予め決められた応答で各兆戦に応じるように指示されるであろう。
【００６０】
しかしながら、そのコードのチャレンジと共にその時々に送られるパラメータを変更することによって、ゲームサーバは、期待される応答がどうであるべきかを判定するにあたっての難易度を著しく増すことができる。例えば、ゲームコンソールがメモリの異なる部分についてハッシングアルゴリズムを行うように指示される場合、期待される応答は変わることになる。ゲームサーバによって発行されたチャレンジにおいて示されるように、ハッシュされることになるゲームコンソールのメモリの開始と終了の範囲を単純に変えることで、期待される応答は、劇的に変化する。ハッシュされるゲームコンソールのメモリの部分において単一のビットを変えるだけでも、一方向のハッシングアルゴリズムの結果においては実質的な変化の原因となるであろう。
【００６１】
ゲームコンソールのメモリの一方向ハッシュに基づいたコードのチャレンジを克服する難易度を増すために使うことができるもうひとつのパラメータは、一方向ハッシュを初めに動かすための異なるシード／初期化ベクタを含めることである。このように、期待される応答を変えるために、異なるチャレンジには、ハッシュされるメモリの一部と共に含まれる異なる初期化ベクタを含めることができる。また、ハッシングコードを、異なるチャレンジにおいて変更することができる。例えば、コードは、ハッシュされる前にメモリの一部に関してＸＯＲ演算を行うことを要求してもよい。
【００６２】
メモリ範囲のパラメータ、シード／初期化パラメータ、そして実装されるコードに対する変更は、先の検討のように、ゲームサーバによって送られるチャレンジにおいて採用することができる様々なパラメータの単なる例であり、本発明に関して限定となるように意図されたものではないということに留意されたい。明らかに、パラメータをコードのチャレンジに含めることで、ゲームサーバは、ゲームコンソールに送られる異なるコードのチャレンジの数を増やすという目標を達成することができる。
【００６３】
ゲームコンソールのメモリのその他の部分もまた、ゲームコンソールに一方向ハッシュの算出を要求するコードのチャレンジの中で使うことができる。このハッシュは、ゲームコンソールのＲＡＭメモリ、ＲＯＭメモリ、ハードドライブ、もしくはＤＶＤディスクメモリ、またはこの種の各メモリの選ばれた部分、あるいはすべての組み合わせに基づくことができる。メモリ中に変更されていない内容が入っているゲームコンソールは、ゲームサーバによって期待される応答に適合する算出された応答を返すであろう。なぜなら、ゲームサーバは、ゲームコンソールのＲＡＭメモリ、ＲＯＭメモリ、ハードドライブ、またはＤＶＤディスクメモリに何があるべきかを知っているからである。ゲームコンソール、そしてゲームソフトウェアの関連において、この種の知識は容易に確定できる。ゲームコンソールからの正しくない応答は、ゲームコンソールのＲＡＭメモリ、ＲＯＭメモリ、ハードドライブ、またはＤＶＤディスクメモリの１つまたは複数に（チャレンジに従ってどのメモリがハッシュされたかに依存して）変更が為されたことを明らかにする。一方向のハッシュを採用することにより、検知されることなく期待される内容のどの単一のビットをも変更することが不可能になる。
【００６４】
この種のコードのチャレンジによって検証することができるゲームコンソールの部分は、事実上、無制限である。好ましくは、変更される可能性のあるゲームのコードセグメントを特にチェックするようにコードのチャレンジを著作することになろう。ゲームコードのセグメントをチェックして、ゲームシャーク型の装置が「残された生命の数」または「エネルギーバーの有効サイズ」のような値を変更するために使われていないことを確かめることもできる。ゲームコンソールのハードドライブをチェックして、ゲームコンソールのプレーヤーが壁を透視できるようにするビデオドライバの変更のように、選択されたファイルに変更が為されていないかどうかを検知することもできる。ゲームコンソールのハードウェアを対象としたコードのチャレンジにより、追加の、またはより大容量のハードドライブを付け加えることのように、ゲームコンソールのハードウェアを改変したかどうかを判定することができる。
【００６５】
チャレンジのもうひとつの形態は、ＤＶＤのチャレンジと呼ばれる。ＤＶＤのチャレンジは、ゲームが配布されたソフトウェア媒体の本来の認可されたコピーのランダム領域があって、ゲームサーバが期待するものと異ならないことを検証する。このチャレンジの目標は、不正をするためにゲームコンソールを改変したゲームコンソールの使用者を検知するためではあまりなく、むしろ海賊版のソフトウェアの存在を検知するためである。海賊版のソフトウェアは、認可されたＤＶＤからコンパクトディスク上にコピーされ、それらは本来の認可されたＤＶＤ上にあったゲームプログラムの本質的な部分のみを格納している。ＤＶＤのデータをＣＤ−ＲＯＭにコピーすることは大変安上がりであり、データをＣＤ−ＲＯＭの上にコピーするための設備は、さらにいろいろな所で利用できる。二層のＤＶＤはＣＤと比べて著しく大量のデータ（約７００メガバイトに対して９ギガバイト）を保持するが、多くのゲームはＤＶＤを完全に一杯にするほど十分に大きくない。この種のＤＶＤの残りはランダムなバイトで満たされている。ＣＤ−ＲＯＭ上に作成されたゲームＤＶＤの海賊版コピーには、これら余分なランダムバイトは含まれていない。
【００６６】
ＤＶＤのチャレンジは、ＤＶＤ上のセグメント（このセグメントにはＤＶＤ上に含まれるランダムバイトの少なくとも一部分を含む）の一方向ハッシュを算出することをゲームコンソールに要求する。ゲームコンソールが本来のＤＶＤではなく、ＣＤ−ＲＯＭ上に作成された非認可のコピーを使用している場合、ゲームコンソールによって算出される応答は正しくなく、このチャレンジにより、ＤＶＤ上のゲームの本来の認可されたコピーではなく、海賊版のコピーの存在が検知されるであろう。
【００６７】
このチャレンジに対するひとつの可能な対処法は、ゲームコンソールのハードディスク上にＤＶＤの正確なコピーを格納することであろう。しかしながら、適切なコードのチャレンジを使って、オンラインゲームをオンラインでプレイできるようにするであろう大容量ハードディスクおよび改変されたＢＩＯＳの追加のような、ハードウェアの改変を検知することができる。従って、海賊版のソフトウェアを検知するためのＤＶＤのチャレンジと改変されたゲームコンソールを検知するためのコードのチャレンジを組み合わせることが好ましい。
【００６８】
このメカニズムは、本来のＤＶＤイメージ全体をビット単位でコピーする海賊版のＤＶＤディスクを検知するためには有用ではないということに留意されたい。しかしながら、二層の片面９ギガバイトのＤＶＤを作り出すために現時点で要求される製造設備は、ほとんどの個人がこの種のコピーを作成することを不可能にするほど高価である。この種の設備のコストがＤＶＤの複製が簡単に達成される点まで下がるとすると、もうひとつの可能なＤＶＤのチャレンジは、認可されたゲームディスクの製造の期間中にゲームＤＶＤに故意に欠陥を含めることに基づくことができるであろう。この種の原物のディスクは、ディスクのある特定の重要でない領域中に故意の欠陥と共に製造することができるであろう。これらの欠陥は、ディスクのその部分を読み出すための試みが為された時にメモリの読み込みエラーを返すことになる。本来の認可された媒体を読み出している時に期待されるであろう読み出しエラーの存在について、チャレンジが故意にチェックすることができるであろうし、そしてもし欠陥が含まれていることが知られている領域で読み出しエラーが起きなければ、この期待された結果が得られず、ゲームサーバは適切な行動をとることになるであろう。
【００６９】
チャレンジが行われているとき、一方向のハッシュを行うために使われることになる特定のバイト領域は、そのチャレンジの中のゲームサーバから受け取ったパラメータの一部であるべきである。応答を実際に算出するためのこのコード（即ち、一方向ハッシングアルゴリズム）は、ゲームサーバから送られるチャレンジの中に含めるのに代えて、ゲームコンソールのＲＯＭの中に格納させることができる（あるいは、ゲーム媒体に、即ち、ゲームＤＶＤ上に、格納させることができるであろう）。このアプローチにより、ゲームサーバによって発行される各兆戦のサイズが減る一方で、ある問題を提示する。それは一方向ハッシュアルゴリズムを実装するためのコードが今やハッカーに比較的容易に発見されうるからである。それでもなお、チャレンジの中で送られるその他のパラメータを変更することによって、ゲームコンソールが期待される結果に適合しない実際に算出された結果の代わりに偽りの期待される結果を送り返すことは依然として困難であろう。
【００７０】
ＤＶＤのチャレンジは、同一のチャレンジ応答シーケンス内でコードのチャレンジと併せて使用可能であり、単一のチャレンジと応答のシーケンスにおいてゲームコンソールに対する変更と海賊版作成の両方を検知することができる。ＤＶＤのチャレンジとコードのチャレンジを一緒に使って、ハードドライブに格納されたゲームプログラムの各ビット単位のコピーのように、ＤＶＤ以外の別の媒体からのデータをハッシングすることによってＤＶＤのチャレンジを回避する可能性があるゲームコンソールを制御しているコードに対して何らかの変更が為されたどうかを検知することができる。ＤＶＤのチャレンジをうまく破るためにハードドライブからのデータを使うことができる一方で、コードのチャレンジにより、ＤＶＤの代わりにハードドライブに格納されたソフトウェアからゲームをプレイできるようにするＢＩＯＳに対する変更を検知し、それによって、この改変されたゲームコンソールがこの組み合わされたチャレンジにパスすること防止している。
【００７１】
上述のＤＶＤのチャレンジは、ソフトウェアの非認可のコピーを検知するために特に設計されており、ソフトウェアの海賊行為の検知が望まれる非ゲーミング環境に対しても明らかに適用可能である。しかしながら、このような非認可のソフトウェアの検知は、ソフトウェアの使用者が本発明を実装するサーバにアクセスを望むまでは、起こらないであろう。上述のコードのチャレンジおよびＤＶＤのチャレンジは、一方向のハッシングアルゴリズムを採用しているけれども、チャレンジは、サーバからクライアントに送られるコードを実行することによって行われるその他の手順に基づくこともでき、ハッシュアルゴリズムに限定されない。一方向ハッシュアルゴリズムの使用は、単に例示にすぎず、本発明について限定していない。
【００７２】
フローチャート３４０を再度参照すると、ブロック３４８において事前に著作された各チャレンジが、秘密鍵で署名されている。この秘密鍵の使用は、必須ではないが、好ましい。本発明において、コードセグメントはサーバからクライアントに送られる。一般に、どのようなコンピューティング装置でも外部のソースから実行可能なコードを受け取るとき、そのコンピューティング装置の使用者は、この外部のソースを信頼できるという確信を得たいであろう。各チャレンジは、ゲームサーバだけに特別に利用可能な秘密鍵で署名されており、そしてゲームサーバ（またはゲームコンソール）と共に使用する目的でリリースされた各ゲームには、対応する公開鍵が含まれているので、ゲームコンソールの使用者は、ゲームサーバから受け取った実行可能なコードが信頼されたソースから来ていることを確信できる。ブロック３５０において、追加のチャレンジを生成するために、各兆戦に対するパラメータを割り当てることができ、そして各兆戦の答え、およびこの種のパラメータによって変更された各チャレンジが明確にされる。
【００７３】
ブロック３５８を再度参照すると、ゲームコンソールはゲームサーバにログオンすることを試みている。応答にあたって、ゲームサーバは事前に著作したチャレンジのひとつと、そしてパラメータ一式をブロック３６０で選択する。ブロック３６２では、ゲームサーバは署名したチャレンジをゲームコンソールに送る。ブロック３６４では、ゲームコンソールは、ゲームコンソール上のメモリに含まれる公開鍵を使い、ゲームサーバからゲームコンソールに送られたチャレンジを実行する前に、ゲームサーバからの署名が認証されることを検証する。この署名がこの公開鍵で認証されなければ、このチャレンジのコードは実行されないことが好ましい。しかしながら、この署名のチェックが失敗したという事実は、応答の一部として密かにサーバに送り返される。これを行う理由は、チャレンジのコード上の署名を適切に認証できなかったことが、普通、改変されたＢＩＯＳの存在（即ち、公開鍵が変更されたということ）を意味し、ちょうど期待される応答に適合しない他の任意の応答と同様に、この結果は正しくない応答と考えられるべきであるからである。ブロック３６６において、ゲームコンソールは、チャレンジに含まれたパラメータでコードを実行し、応答を算出する。ブロック３６８では、ゲームコンソールはゲームサーバに算出された応答を送る。
【００７４】
判定ブロック３７０において、ゲームサーバはゲームコンソールからの応答を評価し、この応答が期待される応答に適合するかどうかを判定する。この期待される応答は、ブロック３６０において選択された特定のチャレンジによって特定される。このように、サーバは、ブロック３６０とブロック３７０間で選択された特定のチャレンジの経過を把握しておく必要がある。このクライアントから何の応答も受け取らなければ、サーバは応答の欠如をクライアントから正しくない応答を受け取ったかのように取り扱うことになる。しかしながら、そのクライアントがまさにその瞬間においてサーバから不本意ながら接続を絶たれていたという可能性のために、何回かの応答なしの事例に遭遇するまでは疑わしきは罰せずの恩恵をクライアントに与えることが好ましい。このフローチャートでは示されていないが、サーバは、特定のクライアントにつきチャレンジに対する応答の失敗に関するすべての連続した事例を列挙することができ、そのクライアントが所定の回数応答に失敗したら、サーバは、所定の行動を取ることになる。ブロック３７４において、ゲームコンソールが期待される応答を提供したことをゲームサーバが判定し終わり、そしてゲームコンソールがゲームサーバにログオンし、ゲームコンソールの使用者がネットワークゲーム遊びの特典を受けることができるようになる。
【００７５】
任意選択の論理ステップが判定ブロック３７６によって示されており、そこでゲームサーバはゲーム遊びの期間中のある時点で新たなチャレンジをゲームコンソールに発行すべきかどうかを決める。新たなチャレンジを発行することにしないのであれば、論理プロセスは終わる。新たなチャレンジを発行すべきであると決定するならば、この論理はブロック３６０にループバックし、新たなチャレンジがゲームサーバからゲームコンソールに送られる。この時点で、使用者は、ゲーム遊びの期間中にシステムの再起動なしにひとつの設定から代替の設定に切り替えることができるとは思われない。しかしながら、ゲーム遊びの期間、設定を起動したまま切り替えられるようにするための対処法が開発されるならば、この種の対処法は、ゲーム遊びのセッション期間中にチャレンジを無作為的に送ることで打破されることになり、ゲームまたはゲームコンソールの設定に対するいかなる変更をも検知することができるであろう。判定ブロック３７０を再度参照して、ゲームコンソールが間違った応答を返したとゲームサーバが判断する場合、次にゲームサーバはブロック３７２において所定の行動を実行する。この所定の行動が実行され次第、この論理プロセスはおしまいになる。
【００７６】
好ましい実施例において、この所定の行動は、ゲームコンソールとゲームサーバ間の論理接続を直ちに無効にすることである。さらに、ゲームサーバは、アクセスを拒否されたゲームコンソールの識別情報を記録し、この特定のゲームコンソールからの今後のいかなるログオンの試みの受け入れを拒絶する。このアプローチには、使用者に彼らのコンソールを変更することを思いとどまらせる特段の効果のあることが期待され、それは使用者がチャレンジをパスするであろう本来の設定か、または変更された代替の設定のどちらか一方に、ゲームコンソールを選択的に設定することを可能にするスイッチが、この変更に含まれるとしてもである。頻繁なゲームサーバの使用者は、ある時点でこの種のスイッチを本来の設定位置に適切に配置することを忘れるであろうことが予想される。この種のいかなる間違いもそのゲームコンソールをゲームサーバにアクセスすることから永久に追放するという結果を招くことになるであろう。しかしながら、その他の所定の行動を実行することができることも理解されるべきである。例えば、ゲームサーバは、ネットワーク上で使われている改変されたコンソールの程度を判定するために、ある一定期間にゲームサーバにアクセスしようと試みている改変されたゲームコンソールの事例を単に記録してもよい。ゲームサーバは、このゲームコンソールをゲームサーバから永久に追放する前に、改変されたコンソールによるアクセスが許されていないことをゲームコンソールの使用者に一回以上の警告を発することができるであろう。この種の警告を受け取った後、このゲームコンソールの使用者は、ゲームコンソールをその本来の設定に永久に戻し、それ以降、ゲームサーバにアクセスすることができるであろう。
【００７７】
本発明は、本発明を実施する好ましい形態と本発明に対する変更とに関連して説明されたが、通常の当業者であれば、その他の多くの変更が、添付の特許請求の範囲の適用範囲内で本発明に対して為されるうることを理解するであろう。従って、本発明の適用範囲は、上述の説明によって何ら限定されるものではなく、代わりに添付の特許請求の範囲を参照して専ら判断されるものである。
【図面の簡単な説明】
【００７８】
【図１】本発明が実現される一例示システムでの使用のための従来型パーソナルコンピュータ（ＰＣ）の形態における汎用コンピューティング装置の機能ブロック図である。
【図２Ａ】複数のクライアントがひとつのサーバに接続されている基本的なネットワーク環境の概略図である。
【図２Ｂ】複数のサーバが通常どのようにひとつのサーバコンピューティングシステムを構成するか示す図である。
【図２Ｃ】本発明と共に使われうる各種のクライアントを示す図である。
【図３】ゲームコンソールと最大４つの使用者入力装置のサポートを含むクライアント電子ゲーミングシステム例の等角投影図である。
【図４】図３のクライアントゲーミングシステムの機能構成要素を示す機能ブロック図である。
【図５】複数のクライアントゲームコンソールがゲームサーバに接続され、その中でひとつのクライアントゲームコンソールがゲームサーバへの接続から除外されている、ゲーミングネットワーク環境例の概略図である。
【図６】本発明において実現される全体的な論理ステップを明らかにするフローチャートである。
【図７】失敗したチャレンジに対する可能なサーバの反応、および任意選択による後続のチャレンジについての使用を明らかにする、図６のフローチャートに基づくフローチャートである。
【図８】図５のゲームネットワーク環境において本発明を実現するために使われる好ましい論理を明らかにするフローチャートである。
【符号の説明】
【００７９】
２０      ＰＣ
２１      処理ユニット
２２      システムメモリ
２３      システムバス
２４      ＲＯＭ
２５      ＲＡＭ
２６      基本入出力システム（ＢＩＯＳ）
２７      ハードディスクドライブ
２８      磁気ディスクドライブ
２９      取り外し可能な磁気ディスク
３０      光ディスクドライブ
３１      取り外し可能な光ディスク
３２      ハードディスクドライブインターフェイス
３３      磁気ディスクドライブインターフェイス
３４      光ディスクドライブインターフェイス
３５      オペレーティングシステム
３６      アプリケーションプログラム
３７      その他のプログラムモジュール
３８      プログラムデータ
４０      キーボード
４２      ポインティング装置
４６      入出力装置インターフェイス（例、シリアル）
４７      モニター
４８      ビデオアダプタ
４９      リモートコンピュータ
５０      外付けメモリ記憶装置
５１      ローカルエリアネットワーク（ＬＡＮ）
５２      ワイドエリアネットワーク（ＷＡＮ）
５３      ネットワークインターフェイス
５４      モデム
１００      電子ゲーミングシステム
１０２      ゲームコンソール
１０４ａ、１０４ｂ      コントローラ
１０６      持ち運び可能な媒体ドライブ
１０８      光記憶ディスク
１１０      ４つのポート
１１２      電源ボタン
１１４      取り出しボタン
１２０      Ａ／Ｖインターフェイスケーブル
１２２      電源ケーブルプラグ
１２４      イーサネット（登録商標）データコネクタ
１３０      ＵＳＢケーブル
１３２ａ、１３２ｂ      親指スティック
１３４      Ｄパッド
１３６      ボタン
１３８      トリガ
１４０      取り外し可能な機能ユニット
１４２      ヘッドセット
１４４      ブームマイク
１００ａ、１００ｓ      ゲーミングシステム
１００ｔ      ゲームシステム（サーバにまだ接続されていない）
１００ｕ      ゲームシステム（「禁止」されている）
２８０      基本ネットワーク
３００      ネットワーク
３０２      オンラインゲームサービスに基づくサーバ
【図１】
2004164640.tif 000003
【図２Ａ】
2004164640.tif 000004
【図２Ｂ】
2004164640.tif 000005
【図２Ｃ】
2004164640.tif 000006
【図３】
2004164640.tif 000007
【図４】
2004164640.tif 000008
【図５】
2004164640.tif 000009
【図６】
2004164640.tif 000010
【図７】
2004164640.tif 000011
【図８】
2004164640.tif 000012