(57)【要約】【課題】世界規模で唯一の装置固有識別子を生成及び検証するための方法及び装置を提供する。【解決手段】クライアント装置に関連した複数の識別子をサーバーにより受信するための方法、装置及び物品が説明される。また、サーバーは、サーバーのキー対のうちの第１キーを使用して複数の識別子に関連した複数のエンコード値を暗号化し、そしてクライアント装置を唯一に識別するトークンを発生する。トークンの本体は、暗号化された複数のエンコード値を含む。他の実施形態では、サーバーは、トークンを複数の識別子と共に受け取る。このような実施形態では、サーバーは、更に、受信したトークンの有効性を検証し、この検証は、受信したトークンの本体を第２サーバーに関連したキーで解読するよう試み、その第２サーバーは、その受信したトークンを発生したものであり、そして解読が成功であった場合に、複数の識別子の１つを、解読した本体で見つかった第２識別子と比較して、矛盾についてチェックすることを含む。【選択図】図２
2010508589.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置に関連した複数の識別子をサーバーにより受信するステップと、
前記サーバーのキー対のうちの第１キーを使用して前記複数の識別子に関連した複数のエンコード値を前記サーバーにより暗号化するステップと、
前記クライアント装置を唯一に識別するトークンを前記サーバーにより発生するステップであって、前記トークンの本体が前記暗号化された複数のエンコード値を含むものであるステップと、を含む方法。
【請求項２】
前記識別子は、加入者のウェブサーバーから前記サーバーのサービスへ受信され、前記方法は、更に、前記サーバーにより前記トークンを前記ウェブサーバーへ送信し、前記ウェブサーバーが前記トークンを前記クライアント装置へ提供することを含む、請求項１に記載の方法。
【請求項３】
前記サーバーにより前記トークンを前記クライアント装置へ送信するステップを更に含む、請求項１に記載の方法。
【請求項４】
前記複数の識別子は、装置のシリアル番号、メディアアクセス制御（ＭＡＣ）アドレス、オペレーティングシステム（ＯＳ）形式、ＯＳバージョン、タイムコード、国コード、又は地域コードの少なくとも１つを含む、請求項１に記載の方法。
【請求項５】
前記サーバーにより、前記複数の識別子に対してハッシュ関数を遂行することによってエンコード値を発生するステップを更に含む、請求項１に記載の方法。
【請求項６】
前記トークンは、更に、前記サーバーをトークンのジェネレータとして識別するためのサーバー識別子を含む、請求項１に記載の方法。
【請求項７】
前記サーバーにより前記クライアント装置に前記複数の識別子を要求するステップを更に含む、請求項１に記載の方法。
【請求項８】
前記キー対のうちの第１キーは、前記サーバーのプライベートキーである、請求項１に記載の方法。
【請求項９】
クライアント装置に関連したトークンであってクライアント装置の唯一の識別子として働くトークンと、複数の第１識別子とを第１サーバーにより受信するステップと、
前記トークンの有効性を前記第１サーバーによって検証するステップであって、該検証は、
前記トークンの本体を第２サーバーに関連したキーで解読するよう試み、その第２サーバーは前記トークンを発生したものであり、そして
解読が成功であった場合に、前記複数の第１識別子の１つを、前記解読した本体で見つかった第２識別子と比較して矛盾についてチェックする、ことを含む当該ステップと、
を有する方法。
【請求項１０】
前記トークン及び第１識別子は、加入者のウェブサーバーから前記第１サーバーのサービスへ受け取られる、請求項９に記載の方法。
【請求項１１】
前記第１又は第２の複数の識別子は、装置のシリアル番号、メディアアクセス制御（ＭＡＣ）アドレス、オペレーティングシステム（ＯＳ）形式、ＯＳバージョン、タイムコード、国コード、又は地域コードの少なくとも１つを含む、請求項９に記載の方法。
【請求項１２】
前記第２サーバーに関連したキーは、前記第２サーバーのパブリックキーである、請求項９に記載の方法。
【請求項１３】
前記第２識別子は、前記第１識別子と同一である、請求項９に記載の方法。
【請求項１４】
トークンの検証が失敗であった場合には、１つ以上のファクタに基づいてトークンを再発行すべきかどうか前記第１サーバーにより決定するステップを更に有する、請求項９に記載の方法。
【請求項１５】
前記１つ以上のファクタは、解読の成功又は失敗、第１及び第２の識別子の間の矛盾、クライアント装置の装置識別子が疑わしい装置のリストに存在すること、トークンが受け取られた回数のカウント、クライアント装置と不正の証拠との関連性、或いはクライアント装置に関連したリスクのレベルの少なくとも１つを含む、請求項１５に記載の方法。
【請求項１６】
トークンが有効であることを前記検証が示すかどうかに関わらず、前記第１サーバーによりトークンを周期的に再発行するステップを更に備えた、請求項９に記載の方法。
【請求項１７】
プロセッサと、
前記プロセッサにより動作されるロジックとを備え、
前記ロジックは、
クライアント装置に関連したトークンであってクライアント装置の唯一の識別子として働くトークン、及び複数の第１識別子を受信し、そして、
前記トークンの有効性を検証するように動作され、
前記検証は、
前記トークンの本体を第２サーバーに関連したキーで解読するよう試み、その第２サーバーは、前記トークンを発生したものであり、そして、
解読が成功であった場合に、前記複数の第１識別子の１つを、前記解読した本体で見つかった第２識別子と比較して矛盾についてチェックすることを含む、第１サーバー。
【請求項１８】
前記ロジックは、更に、トークンの検証が失敗した場合に、１つ以上のルール又はポリシーに基づいてトークンを再発行すべきかどうか決定する、請求項１７に記載の第１サーバー。
【請求項１９】
前記１つ以上のルール又はポリシーは、解読の成功又は失敗、第１及び第２の識別子の間の矛盾、クライアント装置の装置識別子が疑わしい装置のリストに存在すること、トークンが受け取られた回数のカウント、クライアント装置と不正の証拠との関連性、或いはクライアント装置に関連したリスクのレベルの少なくとも１つを含む、請求項１８に記載の第１サーバー。
【請求項２０】
記憶媒体と、
前記記憶媒体に記憶され、そして、
クライアント装置に関連した複数の識別子を受信し、
前記サーバーのプライベートキーを使用して前記複数の識別子に関連した複数のエンコード値を暗号化し、
前記クライアント装置を唯一に識別するトークンを発生し、該トークンの本体が前記暗号化された複数のエンコード値を含むようにサーバーをプログラムするよう構成された複数のプログラミングインストラクションとを含む製造物品。
【請求項２１】
前記プログラミングインストラクションは、更に、前記クライアント装置に直接的又は間接的にクライアントロジックを与えて前記クライアント装置がトークンを確認して使用できるようにするために前記サーバーをプログラムするよう構成された、請求項２０に記載の物品。
【請求項２２】
前記複数の識別子は、装置のシリアル番号、メディアアクセス制御（ＭＡＣ）アドレス、オペレーティングシステム（ＯＳ）形式、ＯＳバージョン、タイムコード、国コード、又は地域コードの少なくとも１つを含む、請求項２１に記載の物品。
【請求項２３】
前記トークンは、更に、前記サーバーをトークンのジェネレータとして識別するためのサーバー識別子を含む、請求項２１に記載の物品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に係る。より詳細には、本発明は、地球規模で唯一となる装置固有識別子の生成及び検証に関する。
【０００２】
関連出願：本出願は、２００７年１０月２４日に出願された“Creating and Using Globally Unique Device-Specific Identifiers”と題する米国非仮特許出願第１１／９２３，５７２号、及び２００６年１０月２５日に出願された“Creating and Using Globally Unique Device-Specific Identifiers”と題する米国仮特許出願第６０／８６２，９６５号の優先権を主張するものであり、それらの明細書全体をあらゆる目的で参考としてここにそのまま組み入れるが、本明細書と矛盾する部分がもしあれば、それについては除外する。
【背景技術】
【０００３】
マイクロプロセッサ技術の進歩は、コンピューティングをユビキタス(ubiquitous)なものにした。又、ネットワーク及びテレコミュニケーション技術の進歩は、コンピューティングを益々ネットワーク化させた。今日、相互接続されたパブリック及び／又はプライベートネットワークを通して膨大な量のコンテンツ及びサービスを利用することができる。皮肉にも、コンピューティングをユビキタスに利用できることは、サービス拒否攻撃、ウィルス、スパム、及びフィッシングのような悪用も招いた。種々のオンラインアプリケーションでは、コンピューティング装置（以下、単に「装置」という）を唯一（ユニーク）に識別することが益々望まれる。
【０００４】
装置を識別する従来の方法は、装置のシリアル番号、メディアアクセス制御（ＭＡＣ）アドレス等の使用を含む。
【０００５】
本発明は、同様の要素が同一の参照番号で指示された添付図面に示す実施形態により説明するが、これに限定されない。
【図面の簡単な説明】
【０００６】
【図１】本発明の種々の実施形態の概略を示す。
【図２】種々の実施形態による選択されたトークンの生成オペレーションのフローチャートである。
【図３】種々の実施形態による選択されたトークンの検証オペレーションのフローチャートである。
【図４】本発明の実施に使用するのに適した種々の実施形態によるコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【０００７】
本発明の例示のための実施形態は、クライアント装置に関連した複数の識別子をサーバーにより受信するための方法及び装置を含むが、これに限定されない。又、サーバーは、サーバーのキー対のうちの第１キーを使用して複数の識別子に関連した複数のエンコード値を暗号化し、そしてクライアント装置を唯一に識別するトークンを発生することができ、トークンの本体は、暗号化された複数のエンコード値を含む。他の実施形態では、サーバーは、複数の識別子と共にトークンを受け取ることができる。このような実施形態において、サーバーは、更に、受け取ったトークンの有効性を検証することができ、これは、第２のサーバーに関連したキー、例えば、そのパブリックキーでその受信したトークンの本体を解読するように試み、この第２のサーバーは、その受信したトークンを発生したものであり、そして解読が成功した場合に、複数の識別子の１つを、解読された本体で見つかった第２の識別子と比較して、矛盾についてチェックすることを含む。
【０００８】
例示のための実施形態の種々の態様は、当業者の仕事の実体を他の当業者に伝えるために当業者により通常使用される用語を使用して説明される。しかしながら、当業者であれば、ここに述べる態様の幾つかのみで別の実施形態を実践できることも明らかであろう。説明上、一例としての実施形態を完全に理解するために、特定の数字、材料及び構成について述べる。しかしながら、当業者であれば、特定の詳細を伴わずに別の実施形態を実践できることが明らかであろう。他の点において、一例としての実施形態を不明瞭にしない目的のために、良く知られた特徴は省略又は簡単化されるものとする。
【０００９】
更に、種々のオペレーションは、複数の個別のオペレーションとして説明し、ひいては、例示のための実施形態の理解を最も助けるように説明するが、説明の順序は、それらのオペレーションが順序に依存するものと解釈されるべきではない。特に、それらのオペレーションは、ここに提示する順序で実行される必要はない。
【００１０】
「一実施形態では」というフレーズが、繰り返し使用される。このフレーズは、一般的に、同じ実施形態を指すものではないが、そうであってもよい。「備える」、「有する」及び「含む」といった語は、特に指示のない限り、同義である。 “Ａ／Ｂ”のフレーズは、“Ａ又はＢ”を意味する。“Ａ及び／又はＢ”のフレーズは、“（Ａ）、（Ｂ）又は（Ａ及びＢ）”を意味する。“Ａ、Ｂ及びＣの少なくとも１つ”のフレーズは、“（Ａ）、（Ｂ）、（Ｃ）、（Ａ及びＢ）、（Ａ及びＣ）、（Ｂ及びＣ）又は（Ａ、Ｂ及びＣ）”を意味する。“（Ａ）Ｂ”のフレーズは、“（Ｂ）又は（ＡＢ）”を意味し、即ちＡは任意である。
【００１１】
図１は、本発明の種々の実施形態の概略を示す。図示されたように、１つ以上のクライアント装置１０２は、クライアント装置１０２の世界規模で唯一の装置固有識別子として働くトークンをサーバー１０８から受信する。クライアント装置１０２は、ネットワークファブリック１０４を通してウェブサーバー１０６及びサーバー１０８の一方又は両方に通信結合される。一実施形態では、ウェブサーバー１０６及びサーバー１０８は、実際には、同じサーバー装置でよい。他の実施形態では、ウェブサーバー１０６は、クライアント装置１０２とサーバー１０８との間の通信を仲介することができる。サーバー１０８は、次いで、トークン生成ロジック１１０及びトークン検証ロジック１１２を含む。
【００１２】
サーバー１０８は、クライアント装置１０２がトークンを既に有している場合に、複数の唯一でない識別子及びトークンをクライアント装置１０２に要求する。クライアント装置１０２は、トークンを有していない場合には、識別子しか与えることができず、サーバー１０８は、生成ロジック１１０を呼び出す。生成ロジック１１０は、識別子を受信し、そして識別子に関連した複数のエンコード値をサーバー１０８のプライベートキーで暗号化する。次いで、生成ロジック１１０は、暗号化された値をトークン本体として有するトークンを発生し、そのトークンをクライアント装置１０２へ送信することができる。
【００１３】
一方、クライアント装置１０２は、それがトークンを有する場合は、トークン及び識別子の両方を与え、そしてサーバー１０８は、検証ロジック１１２を呼び出す。検証ロジック１１２は、トークン及び識別子を受信し、トークンの有効性を検証する。ある実施形態では、検証ロジック１１２は、先ず、トークンを発生したサーバーのパブリックキーを使用してトークンの本体を解読するように試みる。解読が成功すると、検証ロジック１１２は、受信した識別子を、解読したトークンの本体を含む識別子と比較して、矛盾をチェックする。一実施形態では、検証ロジック１１２は、１つ以上のファクタに基づき検証が失敗であった場合にトークンを再発行する。他の実施形態では、検証ロジック１１２は、検証の成功又は失敗に関わらず、トークンを周期的に再発行することができる。
【００１４】
図示されたように、生成ロジック１１０、検証ロジック１１２、並びに以上及び以下に述べるオペレーションを遂行する他のロジックを除いて、クライアント装置１０２、ウェブサーバー１０６、及び／又はサーバー１０８は、各々、この技術で知られた１つ以上のある種のコンピューティング装置でよい。クライアント装置１０２、ウェブサーバー１０６、及び／又はサーバー１０８は、各々、パーソナルコンピュータ（ＰＣ）、ワークステーション、サーバー、ルーター、メインフレーム、ブレードサーバー又は高密度サーバー内のモジュラーコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、娯楽センター、セットトップボックス、又は移動装置でよい。更に、生成ロジック１１０、検証ロジック１１２、並びに以上及び以下に述べるオペレーションを遂行する他のロジックを除いて、クライアント装置１０２、ウェブサーバー１０６、及び／又はサーバー１０８は、各々、この技術で知られた単一又はマルチプロセッサ或いはプロセッサコア中央処理ユニット（ＣＰＵ）コンピューティングシステムでよい。ここに例示する単一／マルチプロセッサ或いはプロセッサコアクライアント装置１０２、ウェブサーバー１０６、又はサーバー１０８は、図４に示されており、以下に詳細に説明する。
【００１５】
種々の実施形態において、上述したように、クライアント装置１０２は、ウェブサーバー１０６及び／又はサーバー１０８の一方又は両方と通信するエンドユーザ又は他のコンピューティング装置である。１つの実施形態において、クライアント装置１０２は、ｅ−コマーストランザクションにおけるクライアントであり、そしてウェブサーバー１０６は、クライアント装置１０２が、トランザクション完了の前に、及び／又はログイン／認証プロセスの一部分として、世界規模で唯一の識別子を与えることを要求する。
【００１６】
クライアント装置１０２は、クライアント装置１０２の世界規模で唯一の識別子として働くトークンをクライアント装置１０２が確認して使用できるようにするためにクライアント装置１０２に与えられたクライアントロジックを所有する。一実施形態では、クライアント装置１０２は、ウェブサーバー１０６からこのようなクライアントロジックを検索し、ウェブサーバー１０６は、サーバー１０８からクライアントロジックを受信する。他の実施形態では、サーバー１０８及びウェブサーバー１０６は、同じ装置でもよく、そしてクライアント装置１０２は、クライアントロジックをサーバー１０８から直接受信する。クライアントロジックは、クライアント装置１０２が、トークン及び唯一でない識別子に対してサーバー１０８からの要求に応答することを含む一連のファンクションを遂行できるようにする。このロジックは、クライアント装置がトークンを所有するかどうか決定することができ、もしそうであれば、要求に応答してトークンを与えることができる。又、このロジックは、クライアント装置１０２が、複数の唯一でない識別子を決定して、それら識別子を、トークンと共に又はトークンなしに、要求側サーバー１０８に与えることができるようにする。このような唯一でない識別子は、装置のシリアル番号、ＭＡＣアドレス、オペレーティングシステム（ＯＳ）形式、ＯＳバージョン、タイムコード、国コード、又は地域コードの少なくとも１つを含む。又、ある実施形態では、クライアントロジックは、クライアント装置１０２が、サーバー１０８からトークンを受信して、そのトークンを記憶できるようにし、クライアント装置１０２がトークン及び識別子からの将来の要求に応答するのを容易にする。
【００１７】
図示されたように、クライアント装置１０２、ウェブサーバー１０６、及び／又はサーバー１０８は、各々、互いにその１つ又は全部に通信接続される。ある実施形態では、クライアント装置１０２、ウェブサーバー１０６、及び／又はサーバー１０８は、ネットワークファブリック１０４により接続される。ネットワークファブリック１０４は、ＬＡＮ、ＷＡＮ及びインラーネットの１つ以上を含んでもよい。又、ネットワークファブリック１０４は、部分的にワイヤード（有線）であっても、ワイヤレス（無線）であってもよい。一実施形態において、ネットワークファブリック１０４は、クライアント装置１０２及びサーバー１０８を接続するプライベートネットワークであり、サーバー１０８は、ウェブサーバー１０６としても働き、これら装置のサービスを１つの装置に結合する。ネットワークファブリック１０４を介する通信は、この技術で知られている通信プロトコル、例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）又はファイル転送プロトコル（ＦＴＰ）、並びにこの技術で知られているトランスポートプロトコル、例えば、送信制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）のプロトコル組により容易にできる。ある実施形態では、クライアント装置１０２、ウェブサーバー１０６、及び／又はサーバー１０８は、ネットワークファブリックの１つ以上のルーター（図示せず）により接続される。
【００１８】
種々の実施形態では、上述したように、ウェブサーバー１０６は、クライアント装置１０２とサーバー１０８との間の仲介として働く。このような実施形態では、クライアント装置１０２とサーバー１０８との間の通信の幾つか又は全部が、ここに更に述べるように、実際にウェブサーバー１０６を通してルーティングされる。上述したように、１つの実施形態では、ウェブサーバー１０６は、ｅ−コマーストランザクションにおけるウェブサーバーであり、そして世界規模で唯一の識別子として働くトークンを与えるようにエンドユーザクライアント装置１０２に要求する。このような実施形態では、ウェブサーバー１０６は、サーバー１０８と通信して、クライアント装置１０２に対するトークンの生成及び／又は検証を要求する。又、ウェブサーバー１０６は、サーバー１０８からクライアントロジックを受け取り、そしてそのクライアントロジックを新たなクライアント装置１０２に与えて、新たなクライアント装置１０２がトークンを受信したり与えたりできるようにする。一実施形態では、ウェブサーバー１０６は、クライアント装置１０２からトークンをログイン／認証プロセスの一部分として要求する。他の実施形態では、ウェブサーバー１０６は、ｅ−コマーストランザクションの異なる段階で、又は他の種類のトランザクションの一部分として、トークンを要求する。
【００１９】
別の実施形態では、ウェブサーバー１０６及びサーバー１０８は、実際に、同じコンピューティング装置であってもよいし、又は共通のコンピューティング環境の２つの異なる装置であってもよい。このような実施形態では、結合されたウェブサーバー１０６／サーバー１０８は、両装置のオペレーションの幾つか又は全部を遂行することができる。このような別の実施形態は、例えば、プライベートネットワークのウェブサーバー１０６と、プライベートネットワークに属さないサーバー１０８との間の通信が望ましくないと考えられるプライベートネットワークの環境内で利用されてもよい。
【００２０】
図示され、そして上述したように、サーバー１０８は、ネットワークファブリック１０４を通してクライアント装置１０２及びサーバー１０６の一方又は両方に通信結合されてもよい。更に述べるように、サーバー１０８は、トークン生成ロジック１１０及びトークン検証ロジック１１２を備え、世界規模で唯一の装置識別子として働くトークンを生成し及び検証することができる。種々の実施形態では、サーバー１０８は、上述したクライアントロジックをウェブサーバー１０６に与えてクライアント装置１０２に広めることもできるし、又はネットワークファブリック１０４を経てクライアント装置１０２にクライアントロジックを直接与えることもできる。クライアントロジックは、サーバー１０８により発生されてもよいし、又は別の装置によって発生されてサーバー１０８へ与えられてもよい。ある実施形態では、サーバー１０８は、ウェブサーバー１０６から要求を受信し、この要求は、クライアント装置１０２に対するトークンを検証又は生成することをサーバー１０８に求める。これに応答して、サーバー１０８は、クライアント装置１０２がトークンを有する場合にはそのトークンと、クライアント装置１０２に関連した複数の唯一でない識別子とを与えるように、クライアント装置１０２に要求する。他の実施形態では、サーバー１０８は、ウェブサーバー１０６から要求を最初に受信することなく、何らかの所定のベースで、トークン及び識別子を自動的に要求する。一実施形態では、サーバー１０８は、どの唯一でない識別子をクライアント装置１０２が与えるべきかを指定する。他の実施形態では、サーバー１０８は、どの唯一でない識別子を与えるべきかについてクライアント装置１０２が決定できるようにする。クライアント装置１０２の応答を受信すると、サーバー１０８は、クライアント装置１０２がトークンを応答に含ませたかどうか決定する。クライアント装置１０２がトークンを与えなかった場合には、サーバー１０８は、トークン生成ロジック１１０を呼び出す。クライアント装置１０２がトークンを与えた場合には、サーバー１０８は、トークン検証ロジック１１２を呼び出す。
【００２１】
種々の実施形態において、生成ロジック１１０は、クライアント装置１０２の唯一でない識別子を受信する。一実施形態では、これら識別子は、生成ロジック１１０の呼び出しに対するパラメータとして受け取られる。識別子を受け取ると、生成ロジック１１０は、識別子に関連した複数のエンコード値を発生する。生成ロジック１１０は、ある実施形態では、識別子に対してハッシュ関数（例えば、識別子のＭＤ５ハッシュ）を遂行することによりエンコード値を発生する。次いで、生成ロジックは、各エンコード値の全部又は一部分（例えば、長さが１バイトの識別子のＭＤ５ハッシュの下位バイト）をトークン本体と組み合わせる。種々の実施形態では、生成ロジックは、次いで、トークン本体を、キー対の第１キー、例えば、サーバー１０８のパブリック／プライベートキー対のプライベートキーで暗号化する。それにより生じる暗号化されたトークン本体は、例えば、ベース６４(base64)ストリングである。
【００２２】
ある実施形態では、生成ロジック１１２は、次いで、暗号化された本体を含むトークンを発生し、このトークンは、クライアント装置１０２を唯一に識別する。又、トークンの生成は、サーバー識別子を保持するためのフィールドをトークン内に含ませる。サーバー識別子は、複数のサーバー１０８がある場合に、どのサーバー１０８がトークンを発生したか識別するのに有用である。従って、以下に詳細に述べるように、異なるサーバー１０８の検証ロジック１１２は、どのキーでトークン本体を解読するか識別する。又、各トークンは、ある実施形態では、メッセージフォーマットバージョンフィールドと、キャラクタを分離するフィールドも含むことができる。発生される全トークンは、一実施形態では、ＡＮＳＩストリングを含んでもよい。
【００２３】
ある実施形態では、トークンを発生すると、生成ロジック１１２は、ウェブサーバー１０６を経て又は直接的に、クライアント装置１０２にトークンを送信することができる。
【００２４】
種々の実施形態において、検証ロジック１１２は、クライアント装置１０２のトークン及び唯一でない識別子を受信する。一実施形態では、トークン及び識別子は、検証ロジック１１２の呼び出しに対するパラメータとして受け取られる。トークン及び識別子を受け取ると、検証ロジック１１２は、トークンの有効性を検証し、この検証は、トークン本体を解読し、解読が成功であった場合に、受信した識別子を、解読された本体で見つかった識別子と比較して、矛盾をチェックすることを含む。ある実施形態では、検証ロジック１１２は、最初に、トークンの本体を解読するように試みる。検証ロジック１１２は、トークンのサーバー識別子を読み取り、どのサーバー１０８がトークンを発生したか決定し、そしてそのサーバー１０８のパブリックキーでトークン本体を解読する。ある実施形態では、各サーバー１０８は、１つおきのサーバー１０８のパブリックキーを、１つおきのサーバー１０８のサーバー識別子に関連して記憶する。他の実施形態では、検証ロジック１１２は、発生側サーバー１０８のパブリックキーを、そのサーバー１０８から又は共通の記憶装置から要求する。
【００２５】
解読が成功すると、検証ロジック１１２は、次いで、受信した識別子を、解読された本体で見つかった識別子と比較して、矛盾をチェックする。上述したように、トークン本体は、複数の唯一でない識別子に関連した複数のエンコード値を含む。トークンのこれら唯一でない識別子は、ある実施形態では、受信した複数の唯一でない識別子と同一のはずである。というのは、両方が同じ装置の唯一でない識別子だからである。ある実施形態では、クライアント装置１０２に新たなＯＳ又は新たなハードドライブがインストールされたときに、そのクライアント装置１０２に対する唯一でない識別子の幾つかが変化し得る。従って、このようなケースでは、エンコード値がトークン本体を形成する唯一でない識別子は、与えられた唯一でない識別子と異なることがある。又、ある装置が別の装置のトークンを盗む場合には、おそらく識別子と識別子との間に多数の矛盾が生じ得る。ある実施形態では、検証ロジック１１２は、最初に、エンコード値をデコードして、識別子を検索し、次いで、デコードされた識別子と、受信した識別子との比較を行って、何らかの相違があるかどうか決定する。
【００２６】
また、解読して比較するのに加えて、検証ロジック１１２は、トークンの他のフィールド、例えば、トークンが再発行トークンであることを指示する「再発行」フラグ、サーバー１０８がそのトークンを見た回数のカウンタ、並びに不正の証拠に関連したトークン及び識別子のリストもチェックする。前記オペレーションの幾つか又は全部に基づいて、検証ロジック１１２は、トークンの有効性を確認する。このような判断をなすのに使用される基準は、実施形態ごとに異なるものでよい。例えば、一実施形態では、検証ロジック１１２は、本体が解読される限りトークンが有効であると考える。別の実施形態では、検証ロジック１１２は、解読が成功であること、識別子が同一であること、そしてトークン及び識別子のいずれも不正の証拠に関連したトークン及び識別子のリストに存在しないことを要求する。
【００２７】
検証ロジック１１２は、トークンが有効であると分かると、ウェブサーバー１０６及び／又はクライアント装置１０２にトークンが有効であることを知らせる。一方、検証ロジック１１２は、トークンが無効であると分かると、トークンを再発行すべきかどうか決定し、この決定は、１つ以上のファクタに基づいて行われる。ある実施形態では、このようなファクタは、解読の成功又は失敗、幾つかの識別子の間の矛盾、クライアント装置１０２のトークン及び／又は装置識別子が不正の証拠に関連したトークン及び識別子のリストに存在すること、トークンがサーバー１０８により受け取られた回数のカウント、クライアント装置１０２と不正の証拠との他の何らかの関連性、或いはクライアント装置１０２に関連したリスクのレベル（例えば、再発行フラグがセットされたトークンは、ある実施形態では、高いリスクレベルに関連すると思われる）を含む。これらファクタの数及び重みは、実施形態ごとに異なるものでよい。一般的に、検証ロジック１１２は、上述したファクタに基づいて不正がおそらくないと決定すると、生成ロジック１１０を呼び出して、トークンを再発行し、受信した唯一でない識別子が生成ロジック１１０をパスするようにし、そして再発行フラグがトークン本体に存在し且つセットされねばならないことを生成ロジック１１０に指示する。一方、検証ロジック１１２は、トークンが再発行されるべきでないことを決定すると、トークンが無効であったことをウェブサーバー１０６及び／又はクライアント装置１０２に単に通知する。
【００２８】
種々の実施形態において、トークンが有効であるかどうかに関わらず、サーバー１０８は、トークンを周期的に再発行する。
【００２９】
図２は、種々の実施形態による選択されたトークンの生成オペレーションを示すフローチャートである。図示されたように、サーバーは、ブロック２０２において、クライアント装置に関連した複数の識別子をクライアント装置に要求する。種々の実施形態において、複数の識別子は、装置シリアル番号、ＭＡＣアドレス、オペレーティングシステム（ＯＳ）形式、ＯＳバージョン、タイムコード、国コード、又は地域コードの少なくとも１つを含む。次いで、サーバーは、ブロック２０４において、複数の識別子を受信する。一実施形態では、これら識別子は、加入者のウェブサーバーからサーバーのサービスへ受け取られる。
【００３０】
種々の実施形態では、サーバーは、ブロック２０６において、複数の識別子に対してハッシュ関数を遂行することにより、複数の識別子に関連した複数のエンコード値を発生する。次いで、サーバーは、ブロック２０８において、サーバーのキー対のうちの第１キーを使用して複数のエンコード値を暗号化する。一実施形態では、キー対のうちの第１キーは、サーバーのプライベートキーである。ある実施形態では、サーバーは、ブロック２１０において、クライアント装置を唯一に識別するトークンを発生し、トークンの本体は、暗号化された複数のエンコード値を含む。一実施形態では、トークンは、更に、トークンのジェネレータとしてサーバーを識別するためのサーバー識別子も含む。
【００３１】
ある実施形態では、サーバーは、ブロック２１２において、トークンをクライアント装置へ送信する。一実施形態では、クライアント装置へ直接送信するのではなく、サーバーは、トークンをウェブサーバーへ送信し、ウェブサーバーがクライアント装置へトークンを与えるのを容易にする。別の実施形態では、サーバーは、クライアント装置へクライアントロジックも直接的又は間接的に与え、クライアント装置がトークンを確認して使用できるようにする。
【００３２】
図３は、種々の実施形態による選択されたトークンの検証オペレーションを示すフローチャートである。図示されたように、第１のサーバーは、ブロック３０２において、クライアント装置に関連したトークンであって、クライアント装置の唯一の識別子として働くトークンと、クライアント装置に関連した複数の第１識別子とを受信する。一実施形態では、このトークン及び第１識別子は、加入者のウェブサーバーから第１サーバーのサービスへ受け取られる。
【００３３】
種々の実施形態では、第１のサーバーは、ブロック３０４において、受信したトークンの有効性を検証する。ある実施形態では、この検証は、ブロック３０４ａにおいて、第２のサーバーに関連したキーでトークンの本体を解読するように試みることを含み、第２のサーバーは、トークンを発生したものである。一実施形態では、第２のサーバーに関連したキーは、第２のサーバーのパブリックキーである。また、この検証は、解読が成功した場合に、ブロック３０４ｂにおいて、複数の第１識別子の１つを、解読した本体で見つかった第２の識別子と比較して、矛盾をチェックすることも含む。ある実施形態では、第２の識別子は、第１の識別子と同じである。更に、第１又は第２の複数の識別子は、装置のシリアル番号、メディアアクセス制御（ＭＡＣ）アドレス、オペレーティングシステム（ＯＳ）形式、ＯＳバージョン、タイムコード、国コード、又は地域コードの少なくとも１つを含む。
【００３４】
次いで、第１のサーバーは、トークンの検証が失敗した場合に、ブロック３０６において、１つ以上のファクタに基づいてトークンを再発行すべきかどうか決定する。一実施形態では、１つ以上のファクタは、解読の成功又は失敗、第１識別子と第２識別子との間の矛盾、クライアント装置の装置識別子が疑わしい装置のリストに存在すること、トークンが受け取られた回数のカウント、クライアント装置と不正の証拠との関連性、或いはクライアント装置に関連したリスクのレベルの少なくとも１つを含む。この決定が、トークンを再発行すべきであることを指示すると、第１のサーバーは、ブロック３０８において、トークンを再発行する。
【００３５】
種々の実施形態において、第１のサーバーは、トークンが有効であることを検証が指示するかどうかに関わらず、ブロック３０８において、トークンを周期的に再発行することができる。
【００３６】
図４は、種々の実施形態により本発明の実施に使用するのに適したコンピュータシステムを例示するブロック図である。図示されたように、コンピューティングシステム４００は、１つ以上のプロセッサ又はプロセッサコア４０２と、システムメモリ４０４とを備えている。特許請求の範囲を含む本出願の目的上、「プロセッサ」及び「プロセッサコア」という語は、特に明確な指示のない限り、同義と考えることができる。更に、コンピューティングシステム４００は、大量記憶装置４０６（例えば、ディスケット、ハードドライブ、コンパクトディスクリードオンリメモリ（ＣＤＲＯＭ）等）、入力／出力装置４０８（例えば、キーボード、カーソルコントロール、等）、及び通信インターフェイス４１０（例えば、ネットワークインターフェイスカード、モデム等）を含む。これらの要素は、１つ以上のバスを表すシステムバス４１２を経て互いに結合される。複数のバスの場合に、それらは１つ以上のバスブリッジ（図示せず）でブリッジされる。
【００３７】
これらの要素の各々は、本技術で既知の従来のファンクションを遂行する。特に、システムメモリ４０４及び大量記憶装置４０６は、ここに集合的に４２２と示された上述したサーバーファンクションの全部又は一部分を具現化するプログラミングインストラクションのワーキングコピー及び永久的コピーを記憶するのに使用される。インストラクション４２２は、プロセッサ（１つ又は複数）４０２によりサポートされるアセンブラ・インストラクション(assembler instructions)でもよいし、またはＣ言語のような高レベル言語からコンパイルできるインストラクションでもよい。
【００３８】
プログラミングインストラクションの永久的コピーは、例えば、コンパクトディスク（ＣＤ）のような配布媒体（図示せず）を通して、又は（配布サーバー（図示せず）から）通信インターフェイス４１０を通して、工場又は現場で、永久記憶装置４０６に入れることができる。即ち、インストラクション４２２を有する１つ以上の配布媒体は、インストラクション４２２を配布し種々のコンピューティング装置をプログラムするのに使用できる。
【００３９】
これらの要素４０２−４１２の構造は知られており、従って、詳細に説明することはしない。
【００４０】
特定の実施形態を図示して説明したが、当業者であれば、本発明の範囲から逸脱せずに、種々様々な別の及び／又は等価な具現化を、図示して説明した特定の実施形態に置き換え得ることが明らかであろう。又、当業者であれば、種々様々な実施形態において本発明を具現化でき、又はそこから拡張できることも容易に明らかであろう。本出願は、ここに述べた実施形態のいかなる適応又は変形も網羅することが意図される。それ故、本発明は、特許請求の範囲及びその均等物のみによって限定されることが明確に意図される。
【符号の説明】
【００４１】
１０２：クライアント装置
１０４：ネットワークファブリック
１０６：ウェブサーバー
１０８：サーバー
１１０：生成ロジック
１１２：検証ロジック
４０２：プロセッサ
４０４：システムメモリ
４０６：大量記憶装置
４０８：Ｉ／Ｏ装置
４１０：通信インターフェイス
４２２：インストラクション
【図１】
2010508589.tif 000003
【図２】
2010508589.tif 000004
【図３】
2010508589.tif 000005
【図４】
2010508589.tif 000006
【国際調査報告】
2010508589.tif 000007