(57)【要約】スケーラブルな可変長ノンスを取得する方法およびシステムが、提供される。スケーラブルな可変長ノンスを取得するための例示的方法は、初期ノンス候補を取得することを含む。例示的方法はまた、初期ノンス候補が既に割り当てられているかどうかを決定するためのクエリを伝送することを含む。初期ノンス候補が既に割り当てられている場合、組み合わせられたノンス候補が、取得される。組み合わせられたノンス候補は、初期ノンス候補に付加されたキャラクタを含む。スケーラブルな可変長ノンスを取得するための例示的システムは、現在のトークンに関連付けられた要求を伝送する伝送エンジンを含む。例示的システムはまた、現在のトークンに関連付けられたメッセージを受信する受信エンジンを含む。例示的システムはさらに、新しいトークンを取得するトークン獲得エンジンと、新しいトークンを現在のトークンに付加する付加エンジンとを含む。
2014524210.tif 000002
【特許請求の範囲】
【請求項１】
ノンスを取得するコンピュータ実装方法であって、
少なくとも１つのキャラクタを含む第１の文字列を取得することと、
前記第１の文字列が割り当てられているかどうかを決定するためのクエリを権限部に伝送することと、
前記第１の文字列が割り当てられている場合、少なくとも１つのキャラクタを含む第２の文字列を取得することと、
第１の組み合わせられた文字列を生成することであって、前記第１の組み合わせられた文字列は、前記第１の文字列に付加された第２の文字列を含む、ことと、
前記第１の組み合わせられた文字列が割り当てられているかどうかを決定するためのクエリを前記権限部に伝送することと
を含む、方法。
【請求項２】
第２の文字列を取得することは、前記第２の文字列を生成することを含み、第１の組み合わせられた文字列を生成することは、前記第２の文字列を前記第１の文字列に付加することを含む、請求項１に記載の方法。
【請求項３】
前記第１の組み合わせられた文字列が割り当てられている場合、
少なくとも２つのキャラクタを含む第３の文字列を取得することと、
第２の組み合わせられた文字列を生成することであって、第２の組み合わせられた文字列を生成することは、前記第３の文字列を前記第１の組み合わせられた文字列に付加することを含む、ことと
をさらに含み、前記第２の文字列は、第１の数のキャラクタを含み、前記第３の文字列は、第２の数のキャラクタを含み、前記第２の数は、前記第１の数より大きい、請求項１に記載の方法。
【請求項４】
前記第２の文字列は、前記第１の文字列の最後に付加される、請求項１に記載の方法。
【請求項５】
前記第１の文字列が割り当てられている場合、前記権限部から、前記第１の文字列が割り当てられており、新しい割当が生じていないことを示す応答を受信することと、
前記第１の文字列が割り当てられていない場合、前記権限部から、新しい割当として、前記第１の文字列の承認を示す応答を受信することと
をさらに含む、請求項１に記載の方法。
【請求項６】
前記第１の文字列は、キャラクタセットからの１つ以上のキャラクタを含む、請求項１に記載の方法。
【請求項７】
前記権限部は、物理的機械、仮想機械、マルチプロセッサ機械上のオペレーティングシステム内のプロセス、または、プロセス内のスレッドのうちの少なくとも１つである、請求項１に記載の方法。
【請求項８】
前記第１の文字列は、少なくとも１つのランダムなキャラクタを含み、前記第２の文字列は、少なくとも１つのランダムなキャラクタを含む、請求項１に記載の方法。
【請求項９】
一意のトークンを取得するコンピュータ実装方法であって、
クライアントから、一意のトークンの要求を受信することと、
第１のトークンがデータベース内に記憶されているかどうかを決定することであって、前記第１のトークンは、少なくとも１つのキャラクタを含む、ことと、
前記第１のトークンが前記データベース内に記憶されている場合、前記クライアントから、第１の組み合わせられたトークンが前記データベース内に記憶されているかどうかを決定するための要求を受信することと、
前記第１のトークンが前記データベース内に記憶されている場合、前記第１の組み合わせられたトークンが前記データベース内に記憶されているかどうかを決定することと
を含み、
前記第１の組み合わせられたトークンは、前記第１のトークンに付加された第２のトークンを含み、前記第２のトークンは、少なくとも１つのキャラクタを含む、方法。
【請求項１０】
前記第１のトークンおよび前記第１の組み合わせられたトークンが前記データベース内に記憶されている場合、第２の組み合わせられたトークンが前記データベース内に記憶されているかどうかを決定することをさらに含み、前記第２の組み合わせられたトークンは、前記第１の組み合わせられたトークンに付加された第３のトークンを含む、請求項９に記載の方法。
【請求項１１】
前記第３のトークンの長さは、前記第２のトークンの長さより大きい、請求項１０に記載の方法。
【請求項１２】
前記第１のトークンが前記データベース内に記憶されている場合、前記クライアントから、前記第１の組み合わせられたトークンを受信することをさらに含む、請求項９に記載の方法。
【請求項１３】
前記第１のトークンが前記データベース内に記憶されている場合、
前記第２のトークンを生成することと、
前記第１の組み合わせられたトークンを生成することと
をさらに含む、請求項９に記載の方法。
【請求項１４】
一意のトークンを取得するコンピュータ実装方法であって、
クライアントから、一意のトークンの要求を受信することと、
第１のトークンがデータベース内に記憶されているかどうかを決定することであって、前記第１のトークンは、少なくとも１つのキャラクタを含む、ことと、
前記第１のトークンが前記データベース内に記憶されている場合、前記クライアントに、前記第１のトークンが前記データベース内に記憶されていることを示すメッセージを伝送することと、
前記第１のトークンが前記データベース内に記憶されている場合、第１の組み合わせられたトークンが前記データベース内に記憶されているかどうかを決定することと
を含み、
前記第１の組み合わせられたトークンは、前記第１のトークンに付加された第２のトークンを含み、前記第２のトークンは、少なくとも１つのキャラクタを含む、方法。
【請求項１５】
前記第１のトークンおよび前記第１の組み合わせられたトークンが前記データベース内に記憶されている場合、第２の組み合わせられたトークンが前記データベース内に記憶されているかどうかを決定することをさらに含み、前記第２の組み合わせられたトークンは、前記第１の組み合わせられたトークンに付加された第３のトークンを含む、請求項１４に記載の方法。
【請求項１６】
前記第３のトークンの長さは、前記第２のトークンの長さより大きい、請求項１５に記載の方法。
【請求項１７】
前記第１のトークンが前記データベース内に記憶されている場合、前記クライアントから、前記第１の組み合わせられたトークンを受信することをさらに含む、請求項１４に記載の方法。
【請求項１８】
前記第１のトークンが前記データベース内に記憶されている場合、
前記第２のトークンを生成することと、
前記第１の組み合わせられたトークンを生成することと
をさらに含む、請求項１４に記載の方法。
【請求項１９】
一意のトークンを取得するためのシステムであって、
クライアントから、一意のトークンの要求を受信するように構成されている受信エンジンと、
第１のトークンがデータベース内に記憶されているかどうかを決定するように構成されているトークン獲得エンジンであって、前記第１のトークンは、少なくとも１つのキャラクタを含む、トークン獲得エンジンと
を備え、
前記受信エンジンは、前記第１のトークンが前記データベース内に記憶されている場合、前記クライアントから、第１の組み合わせられたトークンが前記データベース内に記憶されているかどうかを決定するための要求を受信するように構成され、
前記トークン獲得エンジンは、前記第１のトークンが前記データベース内に記憶されている場合、前記第１の組み合わせられたトークンが前記データベース内に記憶されているかどうかを決定するように構成され、
前記第１の組み合わせられたトークンは、前記第１のトークンに付加された第２のトークンを含み、前記第２のトークンは、少なくとも１つのキャラクタを含む、システム。
【請求項２０】
前記クライアントに、前記第１のトークンが前記データベース内に記憶されていることを示すメッセージを伝送するように構成されている伝送エンジンをさらに備えている、請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ノンス生成に関する。
【背景技術】
【０００２】
ノンスは、種々の目的のために使用され得る、一意の識別子である。例えば、ノンスはまた、ＣまたはＣＣ＋＋ヘッダーファイルインクルードガードにも使用され得る。ノンスはまた、ＵＲＬをより短いＵＲＬに短縮するためのＵｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ（ＵＲＬ）短縮サービスによっても使用され得る。その後、ＵＲＬは、より短いＵＲＬを使用して参照され得る。ノンスはまた、トランザクションを一意に識別するために、オンライン小売店、電子サービスプロバイダ、またはその他によっても使用され得る。
【０００３】
今日使用されているノンス生成方式の１つは、カウンタをインクリメントする、中央エンティティである。例えば、自動インクリメントカウンタは、データベースシステム内で使用され、ノンスが要求されるたびにインクリメントされ得る。中央エンティティが、ノンスに対する多数の要求で圧倒される場合、中央エンティティは、要求に対して渋滞状態となる。
【０００４】
業界規格ＧＵＩＤ（グローバル一意識別子）、ＵＵＩＤｖ１（汎用一意識別子バージョン１）、およびＵＵＩＤｖ４（汎用一意識別子バージョン４）は、分散型ノンス生成のための識別子規格である。ＵＵＩＤは、ランダムに生成された１２８ビット値であり、２つのコンピュータシステムが、同一の１２８ビット値を伴うＵＵＩＤを生成する可能性が小さいが、一意性が、保証されず、衝突の検出が困難であると定義される。さらに、衝突の確率を低減させるために使用される識別子の長さは、いくつかの用途に対しては、無駄となり得る。例えば、ＵＵＩＤによって暗号化されたキー−値対のデータベーステーブル内では、値のサイズは、キーのサイズより小さくなり得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
本開示は、可変長の一意のノンス取得に関する。スケーラブルな可変長ノンスを取得する方法、システム、および技法が、提供される。スケーラブルな可変長ノンスを取得するための例示的方法は、初期ノンス候補を取得することを含む。例示的方法はまた、初期ノンス候補が既に割り当てられているかどうかを決定するためのクエリを伝送することを含む。初期ノンス候補が既に割り当てられている場合、組み合わせられたノンス候補が、取得される。組み合わせられたノンス候補は、初期ノンス候補に付加されたキャラクタを含む。
【０００６】
スケーラブルな可変長ノンスを取得するための例示的システムは、現在のトークンに関連付けられた要求を伝送する伝送エンジンを含む。例示的システムはまた、現在のトークンに関連付けられたメッセージを受信する受信エンジンを含む。例示的システムはさらに、新しいトークンを取得するトークン獲得エンジンと、新しいトークンを現在のトークンに付加する付加エンジンを含む。
【０００７】
本発明のさらなる実施形態、特徴、および利点、ならびに本発明の種々の実施形態の構造および動作が、付随の図面を参照して、以下に詳細に説明される。
【０００８】
本明細書に組み込まれ、本明細書の一部を形成する、付随の図面は、本発明の実施形態を図示し、説明とともに、さらに、実施形態の原理を説明し、当業者が、実施形態を作製および使用することを可能にする役割を果たす。図面中、類似参照番号は、同じまたは機能的類似要素を示し得る。ある要素が最初に表出する図面は、概して、対応する参照番号の最左数字によって示される。
【図面の簡単な説明】
【０００９】
【図１】図１は、可変長ノンスを取得するための例示的システムの略図を示す。
【図２】図２は、可変長ノンスを取得するための例示的コンピュータシステムのブロック図を示す。
【図３】図３は、可変長ノンスを取得するための例示的コンピュータシステムのブロック図を示す。
【図４】図４Ａは、トークン獲得エンジンによって取得され得る、例示的文字列を示す。図４Ｂは、トークン獲得エンジンによって取得され得る、例示的文字列を示す。図４Ｃは、例示的組み合わせられた文字列を示す。図４Ｄは、例示的組み合わせられた文字列を示す。
【図５Ａ】図５Ａは、権限部−プレフィックス範囲データを記憶する、例示的データベースを示す。図５Ｂは、権限部Ａによって記録される割り当てられたノンスを記憶する、例示的データベースを示す。図５Ｃは、権限部Ｂによって記録される割り当てられたノンスを記憶する、例示的データベースを示す。
【図５Ｂ】図５Ａは、権限部−プレフィックス範囲データを記憶する、例示的データベースを示す。図５Ｂは、権限部Ａによって記録される割り当てられたノンスを記憶する、例示的データベースを示す。図５Ｃは、権限部Ｂによって記録される割り当てられたノンスを記憶する、例示的データベースを示す。
【図５Ｃ】図５Ａは、権限部−プレフィックス範囲データを記憶する、例示的データベースを示す。図５Ｂは、権限部Ａによって記録される割り当てられたノンスを記憶する、例示的データベースを示す。図５Ｃは、権限部Ｂによって記録される割り当てられたノンスを記憶する、例示的データベースを示す。
【図６Ａ】図６Ａは、２つの権限部間の例示的ノンススペース分配の略図を示す。図６Ｂは、ノンススペース分配後の権限部−プレフィックス範囲データを記憶する、例示的データベースを示す。図６Ｃは、権限部Ｂ１によって記録される割り当てられたノンスを記憶する、例示的データベースを示す。図６Ｄは、権限部Ｂ２によって記録される割り当てられたノンスを記憶する、例示的データベースを示す。
【図６Ｂ】図６Ａは、２つの権限部間の例示的ノンススペース分配の略図を示す。図６Ｂは、ノンススペース分配後の権限部−プレフィックス範囲データを記憶する、例示的データベースを示す。図６Ｃは、権限部Ｂ１によって記録される割り当てられたノンスを記憶する、例示的データベースを示す。図６Ｄは、権限部Ｂ２によって記録される割り当てられたノンスを記憶する、例示的データベースを示す。
【図６Ｃ】図６Ａは、２つの権限部間の例示的ノンススペース分配の略図を示す。図６Ｂは、ノンススペース分配後の権限部−プレフィックス範囲データを記憶する、例示的データベースを示す。図６Ｃは、権限部Ｂ１によって記録される割り当てられたノンスを記憶する、例示的データベースを示す。図６Ｄは、権限部Ｂ２によって記録される割り当てられたノンスを記憶する、例示的データベースを示す。
【図６Ｄ】図６Ａは、２つの権限部間の例示的ノンススペース分配の略図を示す。図６Ｂは、ノンススペース分配後の権限部−プレフィックス範囲データを記憶する、例示的データベースを示す。図６Ｃは、権限部Ｂ１によって記録される割り当てられたノンスを記憶する、例示的データベースを示す。図６Ｄは、権限部Ｂ２によって記録される割り当てられたノンスを記憶する、例示的データベースを示す。
【図７】図７は、可変長ノンスを取得するための例示的方法を図示する、流れ図を示す。
【図８】図８は、可変長ノンスを取得するための別の例示的方法を図示する、流れ図を示す。
【図９】図９は、可変長ノンスを取得するための別の例示的方法を図示する、流れ図を示す。
【図１０】図１０は、可変長ノンスを取得するための別の例示的方法を図示する、流れ図を示す。
【図１１】図１１は、可変長ノンスを取得するための別の例示的方法を図示する、流れ図を示す。
【発明を実施するための形態】
【００１０】
本開示は、可変長ノンスを取得する方法、システム、および技法を提供する。以下の発明を実施するための形態は、例示的実施形態を図示する、付随の図面を参照する。他の実施形態も可能であり、修正も、本説明の精神および範囲内で実施形態に成され得る。本明細書に提供される教示を利用可能な当業者は、その範囲内の追加の修正、用途、および実施形態、ならびに本発明が有意な有用となるであろう追加の分野を認識するであろう。したがって、発明を実施するための形態は、以下に説明される実施形態に限定することを意図するものではない。
【００１１】
以下に説明される特徴が、図に例示されるソフトウェア、ハードウェア、ファームウェア、および／またはエンティティの多くの異なる実施形態において実装され得ることは、当業者に明白であろう。実施形態を実装するためのハードウェアの特殊制御を伴う、任意の実際のソフトウェアコードは、本説明の限定ではない。したがって、実施形態の動作挙動は、実施形態の修正および変形例が、本明細書に提示される詳細のレベルを前提として、可能であるという理解の下、説明されるであろう。
【００１２】
以下の実施形態の詳細な説明では、「一実施形態」、「ある実施形態」、「ある例示的実施形態」等の言及は、説明される実施形態が、特定の特徴、構造、または特性を含み得るが、全ての実施形態が、必ずしも、その特定の特徴、構造、または特性を含まなくてもよいことを示す。さらに、そのような語句は、必ずしも、同一の実施形態を指すわけではない。さらに、特定の特徴、構造、または特性が、ある実施形態と関連して説明される場合、明示的に説明されるかどうかにかかわらず、他の実施形態と関連して、そのような特徴、構造、または特性がもたらされることも、当業者の知識内であると思量される。
【００１３】
可変長ノンスを取得するための技法が、提供される。ノンスは、オブジェクトまたはトランザクションを識別するため等、種々の目的のために使用され得る、キャラクタの一意の文字列である（例えば、電子メールメッセージ識別子、グループディスカッション識別子、ブログポスト識別子、または製品識別子）。
【００１４】
ノンスはまた、一意のトークン、番号、識別子、文字列、表現、記号、またはキャラクタとも称され得る。
【００１５】
図１は、可変長ノンスを取得するための例示的システム１００の略図を示す。システム１００は、クライアント１０４と、権限部Ａ１０８ａと、権限部Ｂ１０８ｂと、送信機１１２とを含む。クライアント、権限部、および送信機は、直接または間接的に、ネットワーク１１６を経由して、互いに通信することができる。権限部Ａ１０８ａは、データベース１２４ａに結合され、権限部Ｂ１０８ｂは、データベース１２４ｂに結合される。データベース１２４ａおよび１２４ｂは、既に割り当てられているノンスを記憶し得る。
【００１６】
クライアント１０４は、少なくとも１つのキャラクタを含む、第１の文字列またはノンス候補を取得し、第１の文字列が割り当てられているかどうかを決定するためのクエリを権限部Ａ１０８ａに伝送し得る。クエリは、パラメータとしての第１の文字列とともに、他の情報も含むことができる。権限部Ａ１０８ａは、割り当てられたノンスを記憶する、データベース１２４ａを検索することによって、第１の文字列が割り当てられているかどうかを決定する。
【００１７】
第１の文字列が、データベース１２４ａ内に記憶されていない場合、第１の文字列は、ノンスとして割り当てられていない。この場合、要求は、成功し、第１の文字列は、一意であり、既存のノンスと衝突しない。権限部Ａ１０８ａが、第１の文字列がノンスとして割り当てられていないと決定する場合、権限部は、第１の文字列をデータベース１２４ａに挿入することによって、第１の文字列をノンスとして割り当てる。今後、第１の文字列が、再び、ノンス候補として使用される場合、権限部Ａ１０８ａは、データベース１２４ａ内の第１の文字列を見つけ、第１の文字列が既に割り当てられていると決定するであろう。利点は、本実施形態が、ノンスが１回を上回って割り当てられないように防止し、一意性を保証し得ることである。
【００１８】
一実施形態では、第１の文字列が、一意であることを示すために、権限部Ａ１０８ａは、クライアント１０４に、ノンスとしての第１の文字列の承認を示す、メッセージを伝送する。承認は、クエリに応答して、ノンスとしての第１の文字列の新しい割当を示し得る。クライアント１０４は、メッセージを受信し、第１の文字列が、一意の識別子として使用され得ることを通知される。その後、ノンスは、オブジェクトまたはトランザクションを識別するために使用されることができる。
【００１９】
競合状態は、ノンスの存在に対するクエリおよび割当の要求が、２つの別個のステップにおいて行なわれる場合、生じ得る。例えば、第１のクライアントおよび第２のクライアントが、同時に、ノンスＮの存在をクエリしようとする場合、第１および第２のクライアントは両方とも、ノンスＮが利用可能であると通知され得る。第１のクライアントは、そのノンス候補を請求し、第２のクライアントもまた、ノンスＮが、依然として、利用可能であると誤認し、そのノンス候補を請求するであろう。
【００２０】
いくつかの実施形態では、権限部１０８ａは、文字列をノンスとしてアトミックに割り当てる。アトミック動作は、一連の動作が、システムの残りに対して、１つの単一動作であるように現れるように組み合わせられ得る、一連の動作である。一連の動作内の動作の１つが失敗する場合、アトミック動作は、失敗する。これは、完全ロールバックをもたらし得、データは、アトミック動作の起動に先立ったその状態に復元される。
【００２１】
一実施形態では、アトミック動作は、文字列のノンスの存在をチェックし、文字列がノンスとして割り当てられていない場合、文字列をノンスとして割り当てること含む。一実施形態では、アトミック動作はさらに、ノンスとしての文字列の割当が、新しい割当であることを示すことを含む。割当が新しいことを示すために、権限部Ａ１０８ａは、例えば、クライアント１０４またはシステムの別の構成要素に、割当が新しく、かつデータベース１２４ａ内に以前に記憶されていないことを報告し得る。
【００２２】
第１の文字列が、この要求の結果としてではなく、データベース１２４ａに記憶されている場合、第１の文字列は、既にノンスとして割り当てられている。この場合、第１の文字列は、一意ではなく、既存のノンスと衝突する。権限部は、ノンス候補をノンスとして割り当てない。一実施形態では、権限部Ａ１０８ａは、クライアント１０４に、第１の文字列が既に割り当てられていることを示すメッセージを伝送する。クライアント１０４は、メッセージを受信し、第１の文字列が一意の識別子と使用され得ないことを通知される。第１の文字列が、一意ではない場合、クライアント１０４は、少なくとも１つのキャラクタを含む、第２の文字列を取得することができる。
【００２３】
クライアント１０４は、第２の文字列を第１の文字列に付加または連結し、第１の組み合わせられた文字列を取得する。第１の組み合わせられた文字列は、一意性がチェックされ得る新しいノンス候補である。クライアント１０４は、権限部Ａ１０８ａに、第１の組み合わせられた文字列が割り当てられているかどうかを決定するためのクエリを伝送することができる。
【００２４】
権限部Ａ１０８ａは、第１の組み合わせられた文字列を受信し、ノンスとして割り当てられているかどうかを決定する。第１の組み合わせられた文字列が、データベース１２４ａ内に記憶されていない場合、第１の組み合わせられた文字列は、未だノンスとして割り当てられていない。権限部Ａ１０８ａは、次いで、第１の組み合わせられた文字列をノンスとして割り当てることができる。第１の組み合わせられた文字列が、この要求の結果としてではなく、データベース１２４ａ内に記憶されている場合、第１の組み合わせられた文字列は、既にノンスとして割り当てられている。権限部Ａ１０８ａは、次いで、クライアント１０４に、第１の組み合わせられた文字列が一意ではないことのメッセージを送信することができる。
【００２５】
いくつかの実施形態では、追加のキャラクタが、衝突が生じなくなるまで、チェックされたノンス候補に継続的に付加されることができる。チェックされたノンス候補に付加された新しい文字列を含む新しいノンス候補は、組み合わせられた文字列と称され得る。
【００２６】
キャラクタは、文字、数字、記号、特殊キャラクタ、または任意のそれらの組み合わせであることができる。一実施例では、第１の文字列は、少なくとも１つのランダムなキャラクタを含む。別の実施例では、第２の文字列は、少なくとも１つのランダムなキャラクタを含む。ランダムなキャラクタは、真ランダムに、疑似ランダムに、アルゴリズム、時刻、日付、またはその他に基づいて生成されるキャラクタを含むことができる。
【００２７】
多数の割り当てられたノンスが存在し得る。全ノンスを記録する１つのみの権限部を有する代わりに、ノンススペースは、複数の権限部間で共有されることができる。一実施形態では、２つのデータベースが、重複するノンススペースに関与することはない。本実施形態では、データベース１２４ａおよび１２４ｂは、互いに素であるノンススペースを記録する。データベース１２４ａによって記録されるノンススペースは、データベース１２４ｂによって記録されず、データベース１２４ｂによって記録されるノンススペースは、データベース１２４ａによって記録されない。
【００２８】
システム１００はまた、データベース１２０に結合される送信機１１２を含む。データベース１２０は、どの権限部がどのノンススペースを記録するかに関する情報を記憶することができる。いくつかの実施形態では、クライアント１０４は、ノンス候補に関連付けられた要求を送信機１１２に送信する。送信機１１２は、データベース１２０を調べ、どの権限部に、要求を自動転送すべきかを決定することができる。例えば、送信機１１２が、要求を権限部Ａ１０８ａに伝送する場合、権限部Ａ１０８ａは、データベース１２４ａを調べ、ノンス候補が既に割り当てられているかどうかを決定する。同様に、送信機１１２が、要求を権限部Ｂ１０８ｂに伝送する場合、権限部Ｂ１０８ｂは、データベース１２４ｂを調べ、ノンス候補が既に割り当てられているかどうかを決定する。
【００２９】
クライアント１０４は、権限部に、要求を送信し、これは、送信機１１２によって透過的に傍受され得る。本実施形態では、クライアントは、要求を送信し、要求が傍受されたことに気付くことはない。
【００３０】
多数の方式が、適切な権限部を特定し、ノンス候補が既に割り当てられているかどうかを証明するために使用されることができる。クライアント１０４が、送信機１１２の機能性を果たし得る。例えば、クライアント１０４は、データベースを維持し、どの権限部Ａに対して、要求が行なわれるべきか決定し得る。この技法は、権限部の数が小さく、クライアント１０４が、テーブルを維持することができる場合、有益であり得る。別の実施例では、ユーザデバイスは、ユーザデバイスに、トークンが第１の数字から開始する場合、要求を第１の権限部に送信し、トークンが第２の数字から開始する場合、要求を第２の権限部に送信する等と命令する、ルックアップテーブルを維持することができる。別の実施例では、クライアント１０４は、ノンス生成プログラムへのアクセスを有する。適切な権限部およびルックアップテーブルは、ノンス生成プログラムでコードされ得、クライアント１０４は、プログラム内で適切な権限部を見つける。別の実施形態では、クライアント１０４は、権限部をランダムに取り上げ、ノンス生成反復を行なう。これは、負荷の平均化目的のために行なわれ得る。
【００３１】
中央権限部が、送信機１１２の機能を果たし得る。例えば、クライアント１０４は、要求を中央権限部に送信し得る。中央権限部は、要求に応答すべきかどうか、または要求を別の権限部に伝送すべきかどうかを決定することができる。
【００３２】
権限部が、物理的機械、仮想機械、マルチ−プロセッサ機械上のオペレーティングシステム内のプロセス、またはプロセス内のスレッド等、種々の方法で実装されることができる。
【００３３】
システム１００は、１つのクライアント、２つの権限部、および１つの送信機を参照して、本明細書に説明されるが、当業者は、システム１００が、説明される実施形態の精神および範囲から逸脱することなく、２つ以上のクライアント、２つを上回るまたは下回る権限部、および１つを上回るまたは下回る送信機を有し得ることを認識するであろう。
【００３４】
本明細書に説明される実施形態の種々の側面は、ソフトウェア、ファームウェア、ハードウェア、または任意のそれらの組み合わせによって実装されることができる。クライアントは、プロセッサと、ローカルメモリと、ディスプレイと、キーボード、マウス、および／またはジョイスティック等の１つ以上のコンピュータ入力デバイスとを伴う、汎用コンピュータであることができる。代替として、クライアントは、例えば、モバイルハンドセット等の特殊コンピューティングデバイスであることができる。クライアントは、インターネット等の１つ以上のネットワークを経由して、１つ以上の権限部と通信する。クライアントと同様に、権限部も、データをクライアントにサーブ可能な任意の汎用コンピュータを使用して実装されることができる。
【００３５】
クライアント、権限部、または送信機の各々は、任意のコンピューティングデバイス上に実装され得る。そのようなコンピューティングデバイスは、限定ではないが、パーソナルコンピュータ、携帯電話等のモバイルデバイス、ワークステーション、内蔵システム、ゲームコンソール、テレビ、セットトップボックス、または任意の他のコンピューティングデバイスを含むことができる。さらに、コンピューティングデバイスは、限定ではないが、命令を実行および記憶するためのプロセッサおよびメモリを有する、デバイスを含むことができる。ソフトウェアは、１つ以上のアプリケーションおよびオペレーティングシステムを含み得る。ハードウェアは、限定ではないが、プロセッサ、メモリ、およびグラフィカルユーザインターフェースディスプレイを含むことができる。コンピューティングデバイスはまた、複数のプロセッサおよび複数の共有または別個のメモリ構成要素を有し得る。例えば、コンピューティングデバイスは、クラスタ化コンピューティング環境またはサーバファームであり得る。
【００３６】
ネットワーク１１６は、データ通信を搬送することができる、任意のネットワークまたはネットワークの組み合わせであることができ、本明細書では、コンピュータネットワークと称され得る。そのようなネットワーク１１６は、限定ではないが、ローカルエリアネットワーク、中規模ネットワーク、および／またはインターネット等の広域ネットワークを含むことができる。ネットワーク１１６は、限定されないが、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂプロトコルおよび／またはサービスを含む、プロトコルおよび技術をサポートすることができる。中間ウェブサーバ、ゲートウェイ、または他のサーバが、用途または環境に応じて、システム１００の構成要素間に提供され得る。
【００３７】
図２は、可変長ノンスを取得するための例示的コンピュータシステム２００のブロック図を示す。システム２００は、ネットワーク１１６を経由して通信し得る、クライアント１０４を含む。クライアント１０４は、トークン獲得エンジン２０４と、付加エンジン２０８と、伝送エンジン２１２と、受信エンジン２１６とを含む。
【００３８】
トークン獲得エンジン２０４は、トークンを取得する。一実施形態では、トークン獲得エンジン２０４は、トークンを生成することによって、トークンを取得する。トークンは、トークン生成の公知の方法に従って生成され得る。別の実施形態では、トークン獲得エンジン２０４は、ネットワーク１１６を経由して（例えば、受信エンジン２１６を介して、サーバから）、トークンを取得する。トークンは、少なくとも１つのキャラクタを含む、文字列であることができる。トークン獲得エンジン２０４は、付加エンジン２０８、伝送エンジン２１２、または両方に結合され得る。伝送エンジン２１２は、ネットワーク１１６を経由して（例えば、権限部または送信機に）、メッセージを伝送し得る。例えば、伝送エンジン２１２は、トークン獲得エンジン２０４によって取得される第１のトークンが一意であるか、または割り当てられているかを決定するためのクエリを伝送し得る。
【００３９】
受信エンジン２１６は、ネットワーク１１６を経由して（例えば、権限部または送信機から）メッセージを受信し得る。例えば、受信エンジン２１６は、クエリに関連付けられた応答を受信し得る。一実施例では、応答は、ノンスとしての第１の文字列の承認を示すことができる。本実施例では、承認は、クエリに応答して、新しい割当を示し得る。別の実施例では、応答は、第１のトークンがノンスとして既に割り当てられていることを示すことができる。本実施例では、割当ステータスの変更は、生じていない。
【００４０】
応答が、第１のトークンが既に割り当てられていることを示す場合、トークン獲得エンジン２０４は、第２のトークンを取得し得る。付加エンジン２０８は、第２のトークンを第１のトークンに付加または連結し、第１の組み合わせられたトークンを取得することができる。付加エンジン２０８は、２つのトークンを入力として受け取り、２つのトークンを付加し、第１の組み合わせられたトークンを取得し得る。
【００４１】
一実施形態では、クライアント１０４は、クエリに応答して、割り当てられた第１のトークンを受信する。本実施形態では、付加エンジン２０８は、第１のトークンを受信エンジン２１６から、第２のトークンをトークン獲得エンジン２０４から受け取り、これらの２つのトークンを一緒に付加し得る。別の実施形態では、クライアント１０４は、どのノンス候補が送信されたかを記録する。本実施形態では、付加エンジン２０８は、第１のトークン（図示せず）に関して、データベースを調べ、第２のトークンをトークン獲得エンジン２０４から受信し、これらの２つのトークンを一緒に付加し得る。
【００４２】
ノンス候補に付加されるキャラクタは、ランダムに生成され得る。この技法の利点は、ノンス候補の均一なランダム構成が、権限部間の負荷の平均化機構としての役割を効果的に果たし得ることである（以下に詳細）。
【００４３】
第２のトークンは、異なる位置において、第１のトークンに挿入または付加されることができる。例えば、第２のトークンは、第１のトークンの最後に、第１のトークンの最初に、または第１のトークンの最初と最後との間の任意の位置に挿入されることができる。第２のトークンが、第１のトークンの最後に挿入されると、第１のトークンは、組み合わせられたトークン内の第２のトークンの前に現れる。伝送エンジン２１２は、ネットワーク１１６を経由して、組み合わせられたトークンを伝送し、組み合わせられたトークンが割り当てられているかどうかチェックすることができる。
【００４４】
いくつかの実施形態では、ノンス候補は、衝突が生じ、別のノンス候補クエリが行なわれるたびに増大する。一実施形態では、少なくとも１つのキャラクタが、衝突が生じ、ノンス候補クエリが行なわれる場合、ノンス候補（例えば、第１のトークンまたは組み合わせられたトークン）に付加される。いくつかの実施形態では、ノンス候補は、１度に１つの数字を増大させる。本実施形態では、ノンス候補の長さは、衝突が生じ、ノンス候補クエリが行なわれるたびに、１つずつ増加し得る。ノンス候補を１度に１つのキャラクタを増大させることは、時間がかかり得る。
【００４５】
別の実施形態では、固定数のキャラクタが、衝突が生じ、ノンス候補クエリが行なわれる場合、ノンス候補に付加される。複数のキャラクタが、衝突が生じ、ノンス候補クエリが行なわれる場合、付加され得る。例えば、ノンス候補は、１度にｊ桁増加することができる。本実施形態では、ノンス候補の長さは、衝突が生じ、ノンス候補クエリが行なわれるたびに、ｊずつ増加し得る。
【００４６】
別の実施形態では、異なる数のキャラクタが、衝突が生じ、ノンス候補クエリが行なわれる場合、ノンス候補に付加される。一実施例では、ノンス候補に付加されるキャラクタの数は、衝突が生じ、ノンス候補クエリが行なわれる場合、指数関数的に増加する。最初に取得されたトークンの長さは、第２の取得されたトークンの長さを上回らない。本実施例では、ノンス候補は、指数関数的に増大することができ、ｋ倍の可変長ノンス候補であることができる。例えば、初期ノンス候補が既に割り当てられている場合、２つのキャラクタが、取得され、初期ノンスに付加されることができる。新しいノンス候補は、割り当てられているかどうかを決定するためにチェックされることができる。既に割り当てられている場合、例えば、一意の識別子が見出されるまで、４つのキャラクタが、取得され、チェックされたノンス候補に付加されることができ、次いで、８つのキャラクタが、取得され、チェックされたノンス候補に付加されることができる。
【００４７】
識別子長が長いほど、衝突の確率は、低くなり得る。しかしながら、前述の利点のために、より短い文字列を有することが有益であり得る。生成されたノンス候補は、既に生成されたノンスのセットの中で可能な最短長である傾向となり得る。
【００４８】
一実施例では、第１の組み合わせられたトークンは、第１のトークンに付加された第２のトークンを含む。第１の組み合わせられたトークンが既に割り当てられている場合、第３のトークンが、取得される。第２の組み合わせられたトークンは、第３のトークンを第１の組み合わせられたトークンに付加することによって、取得されることができる。第２のトークンが、第１の数のキャラクタを含み、第３のトークンが、第２の数のキャラクタを含む場合、第２の数は、第１の数を上回る。
【００４９】
代替実施形態では、クライアント１０４は、示されるものより多いまたは少ない構成要素を含み得ることに留意されたい。例えば、図２に示される構成要素の任意のサブセットが、実際、単一構成要素として具現化され得る。例えば、トークン獲得エンジン２０４および付加エンジン２０８の機能性は、単一デバイスまたはモジュール内で組み合わせられ得る。図２の機能的構成要素の他の組み合わせもまた、当業者に公知となるであろうように、可能であろう。
【００５０】
いくつかの実施形態では、クライアント１０４は、付加エンジン２０８を含まない。本実施形態では、例えば、クライアント１０４は、トークン獲得エンジン２０４と、伝送エンジン２１２と、受信エンジン２１６とを含み得る。一実施例では、トークン獲得エンジン２０４は、第１のトークンを取得し、伝送エンジン１１２は、ネットワーク１１６を経由して、権限部Ａ１０８ａに、第１のトークンに関連付けられたメッセージを伝送する。受信エンジン２１６は、ネットワーク１１６を経由して、一意のノンスを含む、メッセージへの応答を受信し得る。一意のノンスは、しかしながら、伝送された第１のトークンであってもなくてもよい。本実施例では、権限部Ａ１０８ａは、第１のトークンが既に割り当てられていることを決定し、第２のトークンを取得し、第１のトークンに付加し得る。権限部Ａ１０８ａは、衝突が生じなくなり、一意のノンスが取得されるまで、ノンス候補をチェックおよび付加し続け得る。一意のノンスが取得されると、権限部Ａ１０８ａは、新しいノンスが取得されたことを示すメッセージを伝送することができる。
【００５１】
図３は、可変長ノンスを取得するための例示的コンピュータシステム３００のブロック図を示す。システム３００は、ネットワーク１１６を経由して通信し得る権限部Ａ１０８ａを含む。権限部Ａ１０８ａは、トークン獲得エンジン３０４と、付加エンジン３０８と、伝送エンジン３１２と、受信エンジン３１６と、データベース３２０とを含む。データベース３２０は、ノンス割当を記憶する。
【００５２】
受信エンジン３１６は、ネットワーク１１６を経由して、メッセージを受信し得る。受信エンジン３１６は、クライアント１０４から、現在のトークンに関連付けられたクエリを受信する。クエリは、現在のトークンを含むことができる。権限部Ａ１０８ａは、データベース３２０を調べ、現在のトークンが既にノンスとして割り当てられているかどうかを決定する。現在のトークンがノンスとして割り当てられていない場合、権限部Ａ１０８ａは、現在のトークンをデータベース３２０に挿入し、伝送エンジン３１２は、クライアント１０４に、現在のトークンの承認を示すメッセージを送信する。現在のトークンが、既にノンスとして割り当てられている場合、トークン獲得エンジン３０４は、新しいトークンを取得し得る。付加エンジン３０８は、新しいトークンを現在のトークンに付加し、組み合わせられたトークンを取得し得る。権限部Ａ１０８ａは、データベース３２０を調べ、組み合わせられたトークンが割り当てられているかどうか決定し得る。権限部Ａ１０８ａは、一意のノンスが見出されるまで、トークンを取得し、組み合わせられたトークンに付加し続け得る。伝送エンジン３１２は、クライアント１０４に、一意のノンスを伝送し得る。
【００５３】
代替実施形態では、権限部Ａ１０８ａは、示されるものより多いまたは少ない構成要素を含み得る。例えば、図３に示される構成要素の任意のサブセットは、実際、単一構成要素として具現化され得る。例えば、トークン獲得エンジン３０４および付加エンジン３０８の機能性は、単一デバイスまたはモジュール内に組み合わせられ得る。図３の機能的構成要素の他の組み合わせもまた、当業者に公知であろうように、可能である。
【００５４】
一実施形態では、例えば、権限部Ａ１０８ａは、トークン獲得エンジン３０４または付加エンジン３０８を含まない。本実施形態では、例えば、権限部Ａ１０８ａは、伝送エンジン３１２と、受信エンジン３１６と、データベース３２０とを含む。トークンが受信され、権限部Ａ１０８ａが、トークンが既に割り当てられていると決定すると、伝送エンジン３１２は、クライアント１０４に、トークンが既に割り当てられていることを示すメッセージを伝送することができる。権限部Ａ１０８ａは、一意のトークンが受信されるまで、クライアント１０４から、クエリを受信し続け得る。
【００５５】
データベース３２０は、ノンス割当に関する情報を記憶する。クライアントは、データベース３２０をメモリ内に維持し得る。限定されたドメイン用途の場合、ノンス割当は、メインメモリ内に全体的に記憶され得る。
【００５６】
ノンス割当は、メインメモリ、ローカルハードディスク、およびネットワーク−エリア記憶デバイスの組み合わせを使用して実装される汎用データベース内に記憶されることができる。
【００５７】
一実施形態では、データベースは、ファイルシステムを使用して実装される。ノンス割当は、ファイルシステム内に記憶され得る。ファイルシステム自体、ＲＡＩＤ（低価格ディスク冗長アレイ）等の別のスケーラビリティ方式またはＮＦＳ（ネットワークファイルシステム）等のある形態の分散型ファイルシステムを使用し得る。この場合、権限部は、単純なものに維持され得、ノンスを確保するためのアトミック動作は、排他的フラグを伴うファイルを作成するためにシステムコールを呼び出すことによって行なわれ、
そのファイルが存在する場合、システムコールが失敗する。大量のファイルをファイルシステム上に記憶する場合、ディレクトリツリーが、プレフィックスに従って、ファイルを分散させるように作成されることができる。
【００５８】
図２および３は、実施形態またはその一部が、コンピュータ読み取り可能なコードとして実装され得る、例示的コンピュータシステムを図示する。本明細書に説明される実施形態の種々の側面は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせによって実装されることができる。実施例では、トークン獲得エンジン２０４および付加エンジン２０８は、したがって、１つ以上のコンピューティングデバイス上で実行するソフトウェアとして実装され得る。プログラマブルハードウェアを使用する実装は、本明細書に説明される機能を果たすことが可能な任意の市販および周知のコンピュータを使用し得る。
【００５９】
種々の実施形態が、例示的コンピュータシステム２００および３００に照らして説明される。コンピュータシステム２００および３００は、１つ以上のプロセッサを含み得る。例えば、前述のエンジンは、プロセッサ（例えば、デュアルプロセッサまたは複数の機械にわたって散在）を使用して実装されることができる。プロセッサは、特殊または汎用プロセッサであることができ、通信インフラストラクチャ（例えば、バスまたはネットワーク）に接続されることができる。コンピュータシステムはまた、ランダムアクセスメモリ（ＲＡＭ）等のメインメモリを含み、また、二次メモリを含み得る。二次メモリは、例えば、ハードディスクドライブおよび／またはリムーバブル記憶ドライブを含み得る。リムーバブル記憶ドライブは、フロッピー（登録商標）ディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュメモリ等を含み得る。リムーバブル記憶ドライブは、公知の様式において、リムーバブル記憶ユニットからの読み取り、および／またはそこに書き込みを行なう。リムーバブル記憶ユニットは、リムーバブル記憶ドライブによって読み取られ、かつ書き込まれるフロッピー（登録商標）ディスク、磁気テープ、光ディスク等を含み得る。当業者によって理解されるように、リムーバブル記憶ユニットは、その中にコンピュータソフトウェアおよび／またはデータを記憶するコンピュータ読み取り可能な記憶媒体を含む。
【００６０】
代替実装では、二次メモリは、コンピュータプログラムまたは他の命令が、コンピュータシステム２００および３００内にロードされることを可能にするための他の類似手段を含み得る。そのような手段は、例えば、リムーバブル記憶ユニットおよびインターフェースを含み得る。そのような手段の実施例は、プログラムカートリッジおよびカートリッジインターフェース（ビデオゲームデバイスに見出されるもの等）、リムーバブルメモリチップ（ＥＰＲＯＭまたはＰＲＯＭ等）および関連付けられたソケット、ならびにソフトウェアおよびデータが、リムーバブル記憶ユニットからコンピュータシステム２００および３００に転送されることを可能にする、他のリムーバブル記憶ユニットおよびインターフェースを含み得る。
【００６１】
コンピュータシステム２００および３００はまた、通信インターフェースを含み得る。通信インターフェースは、ソフトウェアおよびデータが、コンピュータシステム２００および３００と外部デバイスとの間で転送されることを可能にする。通信インターフェースは、モデム、ネットワークインターフェース（Ｅｔｈｅｒｎｅｔ（登録商標）カード等）、通信ポート、ＰＣＭＣＩＡスロットおよびカード等を含み得る。通信インターフェースを介して転送されるソフトウェアおよびデータは、通信インターフェースによって受信可能な電子、電磁、光学、または他の信号であり得る信号の形態にある。これらの信号は、通信経路を介して、通信インターフェースに提供される。通信経路は、信号を搬送し、ワイヤまたはケーブル、光ファイバ、電話回線、携帯電話リンク、ＲＦリンク、または他の通信チャネルを使用して、実装され得る。
【００６２】
本書では、用語「コンピュータプログラム製品」および「コンピュータ読み取り可能な媒体」は、概して、リムーバブル記憶ユニット、リムーバブル記憶ユニット、およびハードディスクドライブ内にインストールされたハードディスク等の記憶媒体を指すために使用される。コンピュータプログラム製品およびコンピュータ読み取り可能な媒体はまた、メモリ半導体（例えば、ＤＲＡＭ等）であり得る、メインメモリおよび二次メモリ等の１つ以上のメモリを指すことができる。これらのコンピュータプログラム製品は、ソフトウェアをコンピュータシステム２００および３００に提供するための手段である。
【００６３】
コンピュータプログラム（コンピュータ制御論理とも呼ばれる）は、メインメモリおよび／または二次メモリ内に記憶される。コンピュータプログラムはまた、通信インターフェースを介して、受信され得る。そのようなコンピュータプログラムは、実行されると、コンピュータシステム２００および３００が、本明細書に論じられるような実施形態を実装することを可能にする。特に、コンピュータプログラムは、実行されると、プロセッサが、以下に論じられる方法におけるステップ等、実施形態のプロセスを実装することを可能にする。故に、そのようなコンピュータプログラムは、コンピュータシステム２００および３００のコントローラを表す。実施形態が、ソフトウェアを使用して実装される場合、ソフトウェアは、コンピュータプログラム製品内に記憶され、リムーバブル記憶ドライブ、インターフェース、またはハードドライブを使用して、コンピュータシステム２００および３００にロードされ得る。
【００６４】
実施形態はまた、任意のコンピュータ読み取り可能な媒体上に記憶されたソフトウェアを有するコンピュータ製品を対象とし得る。そのようなソフトウェアは、１つ以上のデータ処理デバイス内で実行されると、データ処理デバイスを本明細書に説明されるように動作させる。
【００６５】
図４Ａは、トークン獲得エンジンによって取得され得る、例示的文字列４００を示す。文字列４００は、値「５」を有する。文字列４００は、既に割り当てられていることも、割り当てられていないこともあるノンス候補である。ノンス候補は、キャラクタセットからのキャラクタを含み得る。例えば、ノンス候補は、キャラクタセット｛０、１、２、３、４、５、６、７、８、９｝内のキャラクタであることができる。ノンスプレフィックスもまた、キャラクタセット内で定義されることができる。例えば、前述のキャラクタセットを使用して、ノンスプレフィックスは、数字のみから成り得る。
【００６６】
少なくとも１つの権限部が、発行されたノンスを記録するように指定される。指定される権限部の数は、記憶されるノンスの予想数、利用可能なメモリスペース、権限部の処理力、または他の要因等、多くの要因に依存し得る。一実施形態では、各権限部は、そのノンススペース内の発行されたノンスのみ、記録する。本実施形態では、第１の権限部によって維持されるノンススペースは、第２の権限部によって維持されるノンススペースとは互いに素である。ノンススペースは、ノンスプレフィックスまたはノンスの長さ等、ノンスの異なる特性によって決定され得る。図１では、２つの権限部が、発行されたノンスを記録するように指定される。送信機１１２は、権限部およびノンススペースを記録する、データベース１２０に結合される。データベース１２０は、ある実施形態による、権限部−プレフィックス範囲データを記憶することができる。
【００６７】
図５Ａは、権限部−プレフィックス範囲データを記憶する、例示的データベース５００を示す。本図では、データベース５００は、２つの権限部、権限部Ａおよび権限部Ｂに関する情報を記憶する。例えば、権限部ＡおよびＢは、所定のキャラクタセット｛０、１、２、３、４、５、６、７、８、９｝内のプレフィックスを有する、ノンスを記憶する。図５Ａでは、権限部Ａは、プレフィックス範囲０−４を有する、発行されたノンスを記録するように指定される。言い換えると、数字０−４から開始するノンスは、権限部Ａによって取り扱われる。権限部Ｂは、プレフィックス範囲５−９を有する、発行されたノンスを記録するように指定される。言い換えると、数字５−９から開始するノンスは、権限部Ｂによって取り扱われる。
【００６８】
図５Ｂは、権限部Ａによって記録される割り当てられたノンスを記憶する、例示的データベース５０４を示す。図５Ｃは、権限部Ｂによって記録される割り当てられたノンスを記憶する、例示的データベース５０８を示す。図５Ｂに示されるように、データベース５０４は、０−４の範囲のプレフィックスを有する、ノンスの複数のエントリを有する。特に、文字列０、３、４、３５、および３５ｇ９が、ノンスとして割り当てられている。図５Ｃに示されるように、データベース５０８は、５−９の範囲のプレフィックスを有する、ノンスの複数のエントリを有する。特に、文字列５、６、８、９、５８、８２、および８２５ｆが、ノンスとして割り当てられている。
【００６９】
送信機１１２が、文字列４００が一意であるかどうかを決定するための要求を受信すると、送信機１１２は、文字列４００のプレフィックスに基づいて、どの権限部に、要求をダイレクトすべきかを決定する。文字列４００は、プレフィックス範囲５−９を有するので、送信機１１２は、要求を権限部Ｂにダイレクトするであろう。権限部Ｂが、要求を受信すると、権限部Ｂは、文字列４００が既に割り当てられているかどうか確認するためのチェックを行なう。図５Ｃに示されるように、データベース５０８内の第１のエントリは、「５」である。したがって、文字列４００は、既に割り当てられている。クライアント１０４は、文字列４００が既に割り当てられていることを示す、要求に関連付けられたメッセージを受信する。
【００７０】
クライアント１０４は、種々の方法において、これを通知されることができる。例えば、権限部Ｂは、クライアント１０４に、文字列が一意ではなく、新しい割当が生じていないことを示す応答を送信する。クライアント１０４は、次いで、別の文字列を取得し、それをチェックされた文字列に付加するように進めることができる。別の実施形態では、権限部Ｂは、クライアント１０４に、異なる文字列を伴う新しい割当が生じたことを示す応答を送信する。この場合、初期文字列は、既に割り当てられており、権限部Ｂは、次いで、別の文字列を取得し、それをチェックされた文字列に付加するように進められる。別の実施形態では、権限部Ｂは、送信機１１２に、文字列４００が既に割り当てられていることを示すメッセージを送信する。順に、送信機１１２は、クライアント１０４に、文字列が既に割り当てられていることを示すメッセージを送信するであろう。
【００７１】
図４Ｂは、トークン獲得エンジンによって取得され得る、例示的文字列４０４を示す。文字列４０４は、値「８」を有する。図４Ｃは、例示的組み合わせられた文字列４０８を示す。組み合わせられた文字列４０８は、文字列４００の最後に付加された文字列４０４を含む。組み合わせられた文字列４０８は、ノンス候補であり、既にノンスとして割り当てられていることも、割り当てられていないこともある。
【００７２】
ノンスプレフィックスは、文字列４００および組み合わせられた文字列４０８に対して同一であるので（例えば、５）、同一の権限部（例えば、権限部Ｂ）が、ノンス候補が一意であるかどうかを決定する。権限部Ｂは、組み合わせられた文字列４０８が既に割り当てられているかどうか確認するためのチェックを行なう。図５Ｃに示されるように、データベース５０８内の第５のエントリは、「５８」である。したがって、組み合わせられた文字列４０８は、既に割り当てられている。ノンス候補である組み合わせられた文字列４０８が、既に割り当てられているので、別の文字列が、取得されることができる。
【００７３】
図４Ｄは、例示的組み合わせられた文字列４１６を示す。組み合わせられた文字列４１６は、組み合わせられた文字列４０８（または、チェックされたノンス候補）の最後に付加された文字列４１２を含む。組み合わせられた文字列４１６は、ノンス候補であり、既にノンスとして割り当てられていることも、割り当てられていないこともある。
【００７４】
ノンスプレフィックスは、組み合わせられた文字列４０８および組み合わせられた文字列４１６に対して同一であるので（例えば、５）、同一の権限部（例えば、権限部Ｂ）が、ノンス候補が一意であるかどうかを決定する。権限部Ｂは、組み合わせられた文字列４１６が既に割り当てられているかどうか確認するためのチェックを行なう。図５Ｃに示されるように、データベース５０８内に、組み合わせられた文字列４１６を有するエントリが存在しない。これは、組み合わせられた文字列４１６が、未だ割り当てられておらず、ノンスとして承認され得ることを示す。権限部Ｂは、新しい割当として、組み合わせられた文字列４１６の承認を示すことができ、組み合わせられた文字列４１６をデータベース５０８内に挿入することができる。
【００７５】
各一意のノンス候補は、データベースから情報を読み取るか、またはその中に情報を挿入する、クエリをもたらし得る。データベースは、データが増大し続けると、非常に低速となり得る。データベースは、２つ以上の権限部間に分配され得る。例えば、権限部を拡張することが決定されると、権限部に関連付けられたノンススペースは、少なくとも２つの権限部間に分配されることができる。
【００７６】
図６Ａは、２つの権限部間の例示的ノンススペース分配の略図を示す。権限部Ｂ６０４に関連付けられ、それによって取り扱われるノンススペースは、分割され、権限部Ｂ１  ６０８および権限部Ｂ２  ６１２によって取り扱われるであろう。
【００７７】
図６Ｂは、ノンススペース分配後の権限部−プレフィックス範囲データを記憶する、例示的データベース６１６を示す。図６Ｂでは、データベース６１６は、３つの権限部、権限部Ａ、権限部Ｂ１、および権限部Ｂ２に関する情報を記憶する。権限部Ａは、プレフィックス範囲０−４を有する、発行されたノンスを記録するように指定される。権限部Ｂ１は、プレフィックス範囲５−７を有する、発行されたノンスを記録するように指定される。権限部Ｂ２は、プレフィックス範囲８−９を有する、発行されたノンスを記録するように指定される。
【００７８】
図５Ａに戻って参照すると、権限部Ｂは、ノンス−プレフィックス範囲５−９を取り扱う。図６Ｂに示されるように、図５Ａにおいて権限部Ｂによって以前に取り扱われていたノンス−プレフィックス範囲（例えば、５−９）は、分配され、権限部Ｂ１（例えば、５−７）および権限部Ｂ２（例えば、８−９）によって取り扱われるであろう。分配後、権限部Ｂ６０４に関連付けられた少なくとも１つのエントリが、権限部Ｂ１  ６０８に転送または移動される。その結果、権限部Ｂ１  ６０８は、権限部Ｂ６０４によって記憶されていた少なくとも１つのノンスを記憶する。
【００７９】
図６Ｃは、権限部Ｂ１によって記録される割り当てられたノンスを記憶する、例示的データベース６２０を示す。図６Ｄは、権限部Ｂ２によって記録される割り当てられたノンスを記憶する、例示的データベース６２４を示す。
【００８０】
図５Ｃに戻って参照すると、権限部Ｂは、データベース５０８内に、７つの割り当てられたノンスエントリ５、６、８、９、５８、８２、および８２５ｆを有する。これらのノンスエントリは、権限部Ｂ１  ６０８と権限部Ｂ２  ６１２との間で分配される。権限部Ｂ１  ６０８は、５、６、または７から開始する数字を有するノンスを取り扱い、権限部Ｂ２  ６１２は、８または９から開始する数字を有するノンスを取り扱う。特に、図６Ｃに示されるように、権限部Ｂ１は、データベース６２０内に、プレフィックス範囲５−７を有するノンスの複数のエントリを有する。プレフィックス範囲５−７（例えば、５、６、および５８）を有するノンスは、権限部Ｂ１によって記録される（図６Ｃ参照）。図６Ｄに示されるように、権限部Ｂ２は、データベース６２４内に、プレフィックス範囲８−９を有するノンスの複数のエントリを有する。プレフィックス範囲８−９（例えば、８、９、８２、および８２５ｆ）を有するノンスは、権限部Ｂ２によって記録される（図６Ｄ参照）。
【００８１】
権限部Ｂ６０４および権限部Ｂ１  ６０８は、同一の権限部であり得る。プレフィックス範囲８−９を有するそれらのエントリのみ、権限部Ｂ２  ６１２に移動され、プレフィックス範囲５−７を有する他のエントリは、権限部Ｂに残留する。移動されたエントリは、権限部Ｂ６０４が、移動されたエントリをもはや記憶していないように、権限部Ｂ６０４から削除され得る。
【００８２】
送信機１１２が、ノンス要求を受信すると、送信機は、データベース６１６を調べ、どの権限部に要求が伝送されるべきかを決定する。例えば、ノンス候補が、値「７９ｈ」を有する場合、ノンス候補のプレフィックスは、「７」である。送信機１１２は、この要求を権限部Ｂ１に自動転送する。別の実施例では、ノンス候補が、値「８ｘｅ２５ｈ」を有する場合、ノンス候補のプレフィックスは、「８」である。送信機１１２は、この要求を権限部Ｂ２に自動転送する。
【００８３】
ノンスプレフィックスは、キャラクタセットから取得される。例えば、ノンス候補が、取得される場合、所定のキャラクタセット内のキャラクタが、ランダムな均一分布内から取り上げられ得る。多くのプログラミング言語が、標準的均一分布に従って効果的に分布される、擬乱数を生成可能である。ランダムな均一分布以外の他の分布も、使用され得る。例えば、一実装では、正規分布が、使用されることができる。
【００８４】
さらに、ノンススペースは、種々の状況下、分配されることができる。例えば、データベースのノンススペースは、データベースが、データベース内に閾値データ量を記憶している場合、分配されることができる。
【００８５】
ノンスプレフィックスは、少なくとも１つのキャラクタを含む。図６Ｂでは、プレフィックスは、１桁のプレフィックスを含む（例えば、権限部Ａは、プレフィックス範囲０−４を有するノンスを記録し、権限部Ｂ１は、プレフィックス範囲５−７を有するノンスを記録し、権限部Ｂ２は、プレフィックス範囲８−９を有するノンスを記録する）。
【００８６】
さらに、プレフィックスは、文字、数字、記号、特殊キャラクタ、またはその他等の任意のキャラクタであることができる。プレフィックスは、任意のキャラクタ（例えば、キャラクタセットから）を含むことができる。例えば、第１の権限部は、キャラクタセット｛＊、＃、＄｝内の第１のキャラクタを有するノンスを記憶し、第２の権限部は、キャラクタセット｛＠、！、？、＆｝内の第１のキャラクタを有するノンスを記憶する。他のキャラクタもまた、使用されることができる。さらに、ノンススペースは、可変プレフィックスを使用して分割されることができる。例えば、権限部は、プレフィックス範囲ａ−−ｉｒｉ、ｉｒｊ−−−ｒｉｑ、またはｒｉｒ−−ｚを有する。別の実施形態では、第１の権限部は、プレフィックス範囲Ａ−ＣおよびＭ−Ｚを有し、第２の権限部は、プレフィックス範囲Ｄ−Ｌを有する。
【００８７】
プレフィックスは、任意の数のキャラクタを有することができる。いくつかの実施形態では、プレフィックスは、少なくとも２つのキャラクタを含み得る。例えば、第１の権限部は、プレフィックス範囲ＡＡ−ＭＡを有するノンスを記録することができ、第２の権限部は、プレフィックス範囲ＭＢ−ＺＺを有するノンスを記録することができる。第１の権限部が、閾値データ量を記憶している場合、第１の権限部によって記録されるノンススペースは、分配される。本実施形態では、第１の権限部は、プレフィックス範囲ＡＡ−ＦＡを有するノンスを記録することができ、第３の権限部は、プレフィックス範囲ＦＢ−ＭＡを有するノンスを記録することができる。この技法の利点は、スケーラブルなノンス生成方式を提供し、権限部が、スケーラブルであり、一意のノンスが、取得されることである。
【００８８】
さらに、プレフィックスは、チェックされるキャラクタの異なるタイプを含むことができる。例えば、プレフィックスは、文字である、第１のキャラクタと、数字である、第２のキャラクタとを含む。例えば、第１の権限部は、プレフィックス範囲Ａ−Ｆ内の第１のキャラクタおよびプレフィックス範囲０−２内の第２のキャラクタを有する、ノンスを記憶し、第２の権限部は、プレフィックス範囲Ａ−Ｆ内の第１のキャラクタおよびプレフィックス範囲３−８内の第２のキャラクタを有する、ノンスを記憶する。
【００８９】
さらに、異なる技法が、適切な権限部を決定するために使用され得る。ノンススペースは、ノンスのプレフィックス範囲に従って、分割されることに限定されない。ノンススペースは、他の要因を使用して、分割されることもできる。例えば、ノンススペースは、ノンスの最後の２つのキャラクタに基づいて、分配される。ノンススペースを分配するための他の方式も、使用され得ることを理解されたい。別の実施形態では、送信機１１２は、送信機までの権限部の近接性に基づいて、要求を適切な権限部に伝送する。別の実施形態では、送信機１１２は、要求を権限部にランダムに伝送する。これは、負荷の平均化技法として使用され得る。
【００９０】
ノンスは、製品または顧客名等の追加の情報に関連付けられ得る。ノンスが、新しく割り当てられると、データベースに入力される。既存のノンスが見つけられると、既存のノンスは、修正されない。権限部は、ノンスに関連付けられたデータを記憶することができ、ノンスをキーとして使用して、データの後の読み出しを可能にする。ノンスは、一次キーとして使用され、データベース内のオブジェクト（例えば、製品または顧客名）を識別し得る。ノンスは、顧客を識別するための顧客番号であり得、ノンス（例えば、顧客番号）は、データベース内に顧客とともに記憶されることができる。別の実施例では、ノンスは、その関連付けられたより長いＵＲＬとともに記憶され得る、短ＵＲＬである。
【００９１】
ノンスはまた、権限部がノンスを発行した、ノンスが発行された日付および時間等のメタデータ、または他のノンスに関する他の情報に関連付けられ得るメタデータは、データベース内に記憶され、ノンスに関連付けられることができる。
【００９２】
さらに、ノンス候補が既に割り当てられているかどうかを決定する場合、権限部は、ルックアップ方法を使用して、その独自のノンススペース内のノンスの存在を決定する。図５Ａ−５Ｃおよび６Ｂ−６Ｄでは、ノンス情報を記憶するデータベースは、テーブルとして説明される。バイナリ検索ツリー、アレイ、Ｂ−ツリー、またはその他等、他のデータ構造もまた、使用され得る。いくつかのデータ構造は、クライアントまたはサーバの一意の識別子の予想量、プログラミング人員、または処理力等の要因に応じて実装するために、その他より効率的または低コストであり得る。
【００９３】
開示されるシステムは、ノンスの高速生成を提供し得る。スケーラブルな記憶バックエンドは、複数のバックエンドサーバ上の分散型データを含み得る。一実施形態では、スケーラブルな記憶バックエンドは、Ｏ（ｌｇ  ｎ）ルックアップ時間を有する。１キャラクタ識別子が、ランダムに生成され、権限部が、記憶バックエンド内でその識別子の検索を行なう。その識別子が見つけられない場合、その識別子は、挿入される。そうでなければ、別のキャラクタが、生成され、既存の識別子に付加される。権限部は、記憶バックエンド内で新しい文字列の別の検索を行なう。これは、衝突が生じなくなるまで続く。ｎが、既に生成されたノンスの数であり、乱数生成が、Ｏ（１）時間である場合、既存のノンスをルックアップするための時間は、Ｏ（ｌｇ  ｎ）である。さらに、生成された数字の数もまた、Ｏ（ｌｇ  ｎ）である。この場合、ノンスを生成するための起動時間は、Ｏ（ｌｇ  ｎ＊ｌｇ  ｎ）である。別の実施形態では、記憶バックエンドは、ルックアップを並列処理するために分け合われる。記憶バックエンドの分け合いは、記憶バックエンドを区画化し、分散型サーバにわたって、区画を広げることを含み得る。
【００９４】
図７は、可変長ノンスを取得するための例示的方法７００を図示する、流れ図を示す。図８は、可変長ノンスを取得するための例示的方法８００を図示する、流れ図を示す。方法７００および８００は、限定を意味するものではなく、他の用途において使用され得る。例えば、方法７００および８００は、図２および３のシステム２００および３００のように、可変長ノンスを取得するために使用され得る。しかしながら、方法７００および８００は、システム２００および３００に限定されることを意味するものではない。
【００９５】
図７に示されるように、例示的方法７００は、文字列が取得される、段階７０４を含む。一実施形態では、トークン獲得エンジン２０４が、文字列を取得する。別の実施形態では、受信エンジン２１６が、文字列を取得する。段階７０８において、文字列が割り当てられているかどうかを決定するために、要求が伝送される。伝送エンジン２１２が、要求を伝送する。
【００９６】
段階７１２において、伝送された文字列が割り当てられているかどうか決定される。段階７１６において、伝送された文字列が割り当てられていない場合、伝送された文字列の承認を示す、メッセージが受信される。受信エンジン２１６が、メッセージを受信する。
【００９７】
段階７２０において、伝送された文字列が割り当てられている場合、新しい文字列の承認を示す、メッセージが受信される。新しい文字列は、伝送された文字列に付加された少なくとも１つのキャラクタを含み得る。権限部は、クライアントが伝送した文字列と異なる、代替文字列をノンスとして返し得る。これは、クライアントが低処理電力を有するか、または限定メモリを有する場合、有利であり得る。例えば、伝送された文字列が既に割り当てられている場合、権限部は、ノンスを取得するためのアルゴリズムを行い、次いで、ノンスの承認を示すメッセージをクライアントに送信し得る。
【００９８】
新しい文字列は、伝送された文字列に付加された少なくとも１つのランダムなキャラクタを含み得る。受信エンジン２１６が、メッセージを受信する。段階７０４−７２０は、ソフトウェア、ハードウェア、ファームウェア、または任意のそれらの組み合わせとして実装され得る。
【００９９】
図８では、例示的方法８００は、前述の段階７０４、７０８、７１２、および７１６を含む。段階８０４において、伝送された文字列が割り当てられている場合、伝送された文字列が割り当てられていることを示すメッセージが受信される。段階８０８において、新しい文字列が、取得される。段階８１２において、伝送された文字列に付加された新しい文字列を含む、文字列が生成される。方法のプロセスフローは、次いで、段階７０８に進み、伝送された文字列に付加された新しい文字列を含む文字列が、割り当てられているかどうかを決定するための要求が伝送される。
【０１００】
図９は、可変長ノンスを取得するための別の例示的方法９００を図示する、流れ図を示す。図１０は、可変長ノンスを取得するための別の例示的方法１０００を図示する、流れ図を示す。図１１は、可変長ノンスを取得するための別の例示的方法１１００を図示する、流れ図を示す。方法９００、１０００、および１１００は、限定を意味するものではなく、他の用途において使用され得る。例えば、方法９００、１０００、および１１００は、図２および３のシステム２００および３００のように、可変長ノンスを取得するために使用され得る。しかしながら、方法９００、１０００、および１１００は、システム２００および３００に限定されることを意味するものではない。
【０１０１】
図９に示されるように、例示的方法９００は、文字列がデータベース内に記憶されているかどうかを決定するための要求が受信される、段階９０４を含む。段階９０８において、文字列がデータベース内に記憶されているかどうか決定される。段階９１２において、チェックされた文字列がデータベース内に記憶されていない場合、チェックされた文字列は、データベース内に挿入される。この場合、チェックされた文字列は、ノンスとして発行され得る。段階９１６において、チェックされた文字列の承認を示す、メッセージが伝送される。
【０１０２】
段階９２０において、チェックされた文字列がデータベース内に記憶されている場合、新しい文字列が割り当てられていることを示すメッセージが伝送される。新しい文字列は、チェックされた文字列と異なり得る。新しい文字列は、チェックされた文字列に付加された少なくとも１つのキャラクタを含む。チェックされた文字列に付加された少なくとも１つのキャラクタは、ランダムなキャラクタであり得る。
【０１０３】
図１０では、例示的方法１０００は、前述の段階９０４、９０８、９１２、および９１６を含む。段階１００４において、チェックされた文字列がデータベース内に記憶されている場合、新しい文字列が、取得される。段階１００８において、チェックされた文字列に付加された新しい文字列を含む文字列が、取得される。方法のプロセスフローは、次いで、段階９０８に進み、チェックされた文字列に付加された新しい文字列を含む文字列が、データベース内に記憶されているかどうか決定される。
【０１０４】
図１１の例示的方法は、競合状態の発生を防止し得る。図１１では、例示的方法１１００は、第１の文字列のノンスの存在を決定するための第１のクエリが受信される、段階１１０４を含む。段階１１０８において、第２の文字列のノンスの存在を決定するための第２のクエリが、受信される。段階１１１２において、第１のクエリが最初に処理されるかどうか決定される。
【０１０５】
第１のクエリが最初に処理されると決定される場合、方法のプロセスフローは、次いで、段階１１１６に進む。第１のクエリが最初に処理されないと決定される場合、方法のプロセスフローは、次いで、段階１１３６に進む。
【０１０６】
段階１１１６において、アトミック動作が、開始する。段階１１２０において、第１のクエリが、処理される。いくつかの実施形態では、第１のクエリの処理は、第１の文字列がノンスとして割り当てられているかどうか決定し、第１の文字列が割り当てられていない場合、第１の文字列をノンスとして割り当てることを含む。第１のクエリの処理はさらに、新しいノンスとしての第１の文字列の割当が、新しい割当であることを示すステップを含み得る。段階１１２４において、アトミック動作は、終了する。段階１１２８において、第２のクエリが処理されているかどう決定される。第２のクエリが処理されている場合、方法のプロセスフローは、次いで、段階１１３２に進み、プロセスは、終了する。第２のクエリが処理されていない場合、方法のプロセスフローは、次いで、段階１１３６に進む。
【０１０７】
段階１１３６において、アトミック動作が、開始する。段階１１４０において、第２のクエリが、処理される。いくつかの実施形態では、第２のクエリの処理は、第２の文字列がノンスとして割り当てられているかどうか決定し、第２の文字列が割り当てられていない場合、第２の文字列をノンスとして割り当てることを含む。第２のクエリの処理はさらに、新しいノンスとしての第２の文字列の割当が、新しい割当であることを示すことを含み得る。段階１１４４において、アトミック動作が、終了する。段階１１４８において、第１のクエリが処理されているかどうか決定される。第１のクエリが処理されている場合、方法のプロセスフローは、次いで、段階１１３２に進み、プロセスが、終了する。第１のクエリが処理されていない場合、方法のプロセスフローは、次いで、段階１１１６に進む。
【０１０８】
セット長の長い一意の識別子（例えば、１２８ビット）を有するのではなく、短い一意の識別子が、可能であるとき、提供され得る。初期ノンス候補の長さは、可能であるとき、長さが短くなる傾向となるように、一意のノンスが見つけられるまで、増大し得る。可変長識別子は、一意の識別子を記憶するために要求される記憶量を軽減し得る。
【０１０９】
識別子は、一意性の高確率を単に有するのではなく、真に一意であり得る。
【０１１０】
異なる権限部が、所与のプレフィックスを有するノンスを記録するように設定され得る。プレフィックスは、ノンス候補またはトークンの第１の数のキャラクタ（例えば、最初のキャラクタ、最初の２つのキャラクタ、最初の３つのキャラクタ等）であることができる。要求は、プレフィックスに基づいて、適切な権限部にダイレクトされることができる。そのような技法は、スケーラブルであり得る。これは、一意のノンスの数を正常に拡張させ、かつ同時ノンス割当要求をサーブするという観点から、正常に拡張するであろう用途のためのノンス生成を可能にし得る。
【０１１１】
権限部が、閾値数のノンスを記録している場合、ノンススペースが、分配され、他の権限部が追加されることができる。権限部が、オーバーロードされると、ノンススペースを記録する権限部の数が、増加され、データベースが、２つ以上の権限部間に分配されることができる。サーバが、プレフィックス範囲に基づいて、配分される場合、データベースは、プレフィックス範囲に基づいて、分配されることができる。
【０１１２】
１つ以上の衝突が、特定の要求に対して生じると、最初の数キャラクタが同一のままである場合、同一の権限部が、ノンス候補が割り当てられているかどうかチェックするために使用される可能性が高い。したがって、システムが、新しいノンス候補がチェックされるたび、その要求を送信するための権限部をルックアップすることは、不必要となる。
【０１１３】
さらに、実施形態は、ネットワークを経由して、メッセージを送信および受信する場合、キャッシング含意（ｃａｓｈｉｎｇ  ｉｍｐｌｉｃａｔｉｏｎｓ）を有し得る。例えば、異なるサーバが、後続クエリにおいて使用される場合、ドメイン名システム（ＤＮＳ）ルックアップが、異なるサーバに対して行なわれ、伝送制御プロトコル（ＴＣＰ）接続が、異なるサーバと確立される。しかしながら、同一のサーバが使用される場合、ＤＮＳルックアップは、不必要であり、同一のＴＣＰ接続が、再使用され、ハンドシェイク時間を節約する。
【０１１４】
さらに、低確率の衝突は、スケーラビリティを達成するために利用され得る。衝突スペースが、大きくなり得、かつ衝突の機会が、低くなり得る。
【０１１５】
具体的実施形態の前述の説明は、他者が、当該技術分野内の知識を適用することによって、本発明の一般的概念から逸脱することなく、過度の実験を伴わずに、種々の用途のために、そのような具体的実施形態を容易に修正および／または適応させることができるように、本発明の一般的性質を完全に明らかにするであろう。したがって、そのような適応および修正は、本明細書に提示される教示および指針に基づいて、開示される実施形態の均等物の意味および範囲内にあることが意図される。本明細書の語句または専門用語は、本明細書の専門用語または語句が、教示および指針に照らして、当業者によって理解されるように、限定ではなく、説明の目的のためであることを理解されたい。
【図４Ａ】
2014524210.tif 000003
【図４Ｂ】
2014524210.tif 000004
【図４Ｃ】
2014524210.tif 000005
【図４Ｄ】
2014524210.tif 000006
【図１】
2014524210.tif 000007
【図２】
2014524210.tif 000008
【図３】
2014524210.tif 000009
【図５Ａ】
2014524210.tif 000010
【図５Ｂ】
2014524210.tif 000011
【図５Ｃ】
2014524210.tif 000012
【図６Ａ】
2014524210.tif 000013
【図６Ｂ】
2014524210.tif 000014
【図６Ｃ】
2014524210.tif 000015
【図６Ｄ】
2014524210.tif 000016
【図７】
2014524210.tif 000017
【図８】
2014524210.tif 000018
【図９】
2014524210.tif 000019
【図１０】
2014524210.tif 000020
【図１１】
2014524210.tif 000021
【国際調査報告】
2014524210.tif 000022
2014524210.tif 000023
2014524210.tif 000024