(57)【要約】データを暗号化する方法およびシステム。１つの方法は、発見可能、即ち、「ホワイト」データと、発見不可能、即ち、「ブラック」データとを含むデータを確立するステップを含む。ブラック・データは一般に認識不可能である。例えば、ブラック・データはランダム・データとすることができる。ホワイト・データは一般に、認識可能な内容を有するか、または認識可能なフォーマットで送信される。第１の鍵および第２の鍵が、第２の鍵が第１の鍵から実質的に導出不能であるように、生成または確立される。発見可能、即ち、ホワイト・データは、第１の鍵を用いて暗号化され、発見不可能、即ち、ブラック・データは、第２の鍵を用いて暗号化される。その後の通信またはトランザクションでは、第１の鍵および第２の鍵の少なくとも一方が変化させられる。
2009529832.tif 000002
【特許請求の範囲】
【請求項１】
データを暗号化する方法であって、
第１の発見可能データおよび第１の発見不可能データを含む第１のデータを確立するステップと、
第１の鍵と、前記第１の鍵から実質的に導出不能な第２の鍵とを確立するステップと、
前記第１の鍵を用いて前記第１の発見可能データを暗号化するステップと、
前記第２の鍵を用いて前記第１の発見不可能データを暗号化するステップと、
を備える方法。
【請求項２】
請求項１に記載の方法であって、
前記第１の鍵および前記第２の鍵の少なくとも一つを変化させるステップと、
第２の発見可能データおよび第２の発見不可能データを含む第２のデータを確立するステップと、
前記第１の鍵を用いて前記第２の発見可能データを暗号化するステップと、
前記第２の鍵を用いて前記第２の発見不可能データを暗号化するステップと、
を更に備える方法。
【請求項３】
請求項１に記載の方法であって、第３の鍵を確立するステップを更に備える方法。
【請求項４】
請求項３に記載の方法であって、第３の鍵を確立する前記ステップが、前記第１の鍵および前記第２の鍵の少なくとも一つに基づいて第３の鍵を確立するステップを含む、方法。
【請求項５】
請求項３に記載の方法であって、第３の鍵を確立する前記ステップが、第４の鍵と、前記第１の鍵および前記第２の鍵の少なくとも一つとの排他的ＯＲを実行することにより、第３の鍵を確立するステップを含む、方法。
【請求項６】
請求項３に記載の方法であって、前記第３の鍵を用いて前記発見可能データの少なくとも一部を暗号化するステップを更に備える方法。
【請求項７】
請求項６に記載の方法であって、前記第３の鍵を変化させるステップを更に備える方法。
【請求項８】
請求項１に記載の方法であって、第１の鍵を用いて前記発見可能データを暗号化する前記ステップが、前記第１の鍵を用いて、前記発見可能データと、前記第２の鍵を用いて前記発見不可能データを暗号化した結果としてできたものとを暗号化するステップを含む、方法。
【請求項９】
請求項１に記載の方法であって、第２の鍵を用いて前記発見不可能データを暗号化する前記ステップが、前記第２の鍵を用いて、前記発見不可能データと、前記第１の鍵を用いて前記発見可能データを暗号化した結果としてできたものとを暗号化するステップを含む、方法。
【請求項１０】
請求項１に記載の方法であって、識別子を確立するステップを更に備える方法。
【請求項１１】
請求項１０に記載の方法であって、前記第１の鍵を用いて前記発見可能データを暗号化した結果としてできたものと、前記第２の鍵を用いて前記発見不可能データを暗号化した結果としてできたものとの少なくとも一つに、前記識別子を付加するステップを更に備える方法。
【請求項１２】
請求項１１に記載の方法であって、前記識別子を変化させるステップを更に備える方法。
【請求項１３】
請求項１に記載の方法であって、前記データの少なくとも一部のハッシュを生成するステップを更に備える方法。
【請求項１４】
請求項１３に記載の方法であって、前記第２の鍵を用いて前記ハッシュを暗号化するステップを更に備える方法。
【請求項１５】
発見可能データおよび発見不可能データを含むデータを暗号化するためのシステムであって、
第１の鍵と、前記第１の鍵から実質的に導出不能な第２の鍵とを有し、前記第１の鍵を用いて前記発見可能データを暗号化し、前記第２の鍵を用いて前記発見不可能データを暗号化し、かつ、変化した第１の鍵および変化した第２の鍵の少なくとも一つを受け取るように構成される送信側
を備えるシステム。
【請求項１６】
請求項１５に記載のシステムであって、前記第１の鍵および前記第２の鍵を確立するように構成される認証手段を更に備えるシステム。
【請求項１７】
請求項１６に記載のシステムであって、前記認証手段が、前記変化した第１の鍵および前記変化した第２の鍵を確立するように更に構成される、システム。
【請求項１８】
請求項１５に記載のシステムであって、前記送信側が第３の鍵を更に有する、システム。
【請求項１９】
請求項１８に記載のシステムであって、前記第３の鍵が、前記第１の鍵および前記第２の鍵の少なくとも一つに基づくものである、システム。
【請求項２０】
請求項１８に記載のシステムであって、前記第３の鍵が、第４の鍵と、前記第１の鍵および前記第２の鍵の少なくとも一つとの排他的ＯＲの結果に基づくものである、システム。
【請求項２１】
請求項１８に記載のシステムであって、前記送信側が、前記第３の鍵を用いて前記発見可能データの少なくとも一部を暗号化するように更に構成される、システム。
【請求項２２】
請求項２１に記載のシステムであって、前記送信側が、変化した第３の鍵を受け取るように更に構成される、システム。
【請求項２３】
請求項１５に記載のシステムであって、前記送信側が、前記第１の鍵を用いて、前記発見可能データと、第２の鍵を用いて前記発見不可能データを暗号化した結果としてできたものとを暗号化するように更に構成される、システム。
【請求項２４】
請求項１５に記載のシステムであって、前記送信側が、前記第２の鍵を用いて、前記発見不可能データと、前記第１の鍵を用いて前記発見可能データを暗号化した結果としてできたものとを暗号化するように更に構成される、システム。
【請求項２５】
請求項１５に記載のシステムであって、前記送信側が識別子を更に有する、システム。
【請求項２６】
請求項２５に記載のシステムであって、前記送信側が、前記第１の鍵を用いて前記発見可能データを暗号化した結果としてできたものと、前記第２の鍵を用いて前記発見不可能データを暗号化した結果としてできたものとの少なくとも一つに、前記識別子を付加するように更に構成される、システム。
【請求項２７】
請求項２６に記載のシステムであって、前記送信側が、変化した識別子を受け取るように更に構成される、システム。
【請求項２８】
請求項１５に記載のシステムであって、前記送信側が、前記発見可能データの少なくとも一部のハッシュを生成するように更に構成される、システム。
【請求項２９】
請求項２８に記載のシステムであって、前記送信側が、前記第２の鍵を用いて前記ハッシュを暗号化するように更に構成される、システム。
【請求項３０】
データを保存する記憶デバイスであって、第１の鍵の組を用いて発見可能データを暗号化し、前記第１の鍵の組から実質的に導出不能な第２の鍵の組を用いて発見不可能データを暗号化するように構成される記憶デバイス。
【請求項３１】
請求項３０に記載の記憶デバイスであって、認証手段と通信して前記第１の鍵の組または前記第２の鍵の組の少なくとも一つの変化を受信するように更に構成される記憶デバイス。
【請求項３２】
請求項３０に記載の記憶デバイスであって、活動化する前に許可を必要とするように更に構成される記憶デバイス。
【請求項３３】
請求項３２に記載の記憶デバイスであって、前記許可には、パスワードおよび個人識別番号の少なくとも一つを含む、記憶デバイス。
【請求項３４】
エンティティと認証手段との間でメッセージを送信する方法であって、
前記エンティティに関連する識別子を確立するステップと、
発見不可能データのみを暗号化するための第１の鍵であって、前記エンティティおよび前記認証手段のみに知られた第１の鍵を確立するステップと、
発見可能データのみを暗号化するための第２の鍵であって、前記エンティティおよび前記認証手段のみに知られた第２の鍵を確立するステップと、
前記第２の鍵を用いて要求パラメータを暗号化して、暗号化要求を生成するステップと、
前記要求パラメータのハッシュを生成するステップと、
前記第１の鍵を用いて前記要求パラメータの前記ハッシュを暗号化して、暗号化要求ハッシュを生成するステップと、
前記エンティティが、前記暗号化要求および前記暗号化要求ハッシュを前記認証手段へ送るステップと、
前記第１の鍵および前記第２の鍵の少なくとも一つを変化させるステップと、
を備える方法。
【請求項３５】
請求項３４に記載の方法であって、前記要求パラメータのハッシュを生成する前記ステップが、前記要求パラメータおよび前記識別子のハッシュを生成するステップを含む、方法。
【請求項３６】
請求項３５に記載の方法であって、前記識別子を、前記暗号化メッセージと前記暗号化メッセージのハッシュとの少なくとも一つに付加するステップを更に備える方法。
【請求項３７】
請求項３６に記載の方法であって、前記識別子に基づいて前記第１の鍵の一部を抽出する鍵関数を確立するステップを更に備える方法。
【請求項３８】
請求項３７に記載の方法であって、前記第１の鍵を用いて前記要求パラメータの前記ハッシュを暗号化する前記ステップが、前記鍵関数の結果としてできたものを用いて前記要求パラメータの前記ハッシュを暗号化するステップを含む、方法。
【請求項３９】
請求項３４に記載の方法であって、前記第１の鍵および前記識別子に基づいて初期設定ベクトルを確立するステップを更に備える方法。
【請求項４０】
請求項３９に記載の方法であって、前記要求パラメータのハッシュを生成する前記ステップが、前記初期設定ベクトルに基づいて前記要求パラメータのハッシュを生成するステップを含む、方法。
【請求項４１】
請求項３４に記載の方法であって、前記第１の鍵および前記識別子に基づいて抽出関数を確立するステップを更に備える方法。
【請求項４２】
請求項４１に記載の方法であって、前記要求パラメータのハッシュを生成する前記ステップが、前記要求パラメータと前記抽出関数の結果としてできたものとのハッシュを生成するステップを含む、方法。
【請求項４３】
請求項３４に記載の方法であって、前記識別子を変化させて、変化した識別子を生成するステップと、前記変化した識別子を前記エンティティへ送るステップとを更に備える方法。
【請求項４４】
請求項４３に記載の方法であって、前記第２の鍵を変化させて、変化した第２の鍵を生成するステップと、前記第２の鍵を用いて前記変化した第２の鍵および応答パラメータを暗号化して、暗号化応答を生成するステップとを更に備える方法。
【請求項４５】
請求項４４に記載の方法であって、ランダムな変化値を生成するステップを更に備える方法。
【請求項４６】
請求項４５に記載の方法であって、前記第１の鍵および前記第２の鍵の少なくとも一つを変化させる前記ステップが、前記変化値を使用して前記第１の鍵および前記第２の鍵の少なくとも一つを変化させるステップを含む、方法。
【請求項４７】
請求項４６に記載の方法であって、前記変化した識別子、前記変化した第２の鍵、前記変化値、および前記応答パラメータのハッシュを生成するステップを更に備える方法。
【請求項４８】
請求項４７に記載の方法であって、前記変化した識別子、前記変化した第２の鍵、前記変化値、および前記応答パラメータのハッシュを生成する前記ステップが、初期設定ベクトルに基づいて、前記変化した識別子、前記変化した第２の鍵、前記変化値、および前記応答パラメータのハッシュを生成するステップを含む、方法。
【請求項４９】
請求項４８に記載の方法であって、前記変化した識別子、前記変化した第２の鍵、前記変化値、および前記応答パラメータのハッシュを生成する前記ステップが、前記変化した識別子、前記変化した第２の鍵、前記変化値、前記応答パラメータ、および前記抽出関数の結果としてできたもののハッシュを生成するステップを含む、方法。
【請求項５０】
請求項４９に記載の方法であって、前記第１の鍵を用いて、前記変化値と、前記変化した識別子、前記変化した第２の鍵、前記変化値、および前記応答パラメータの前記ハッシュとを暗号化して、暗号化応答ハッシュを生成するステップを更に備える方法。
【請求項５１】
請求項５０に記載の方法であって、前記第１の鍵を用いて、前記変化値と、前記変化した識別子、前記変化した第２の鍵、前記変化値、および前記応答パラメータの前記ハッシュとを暗号化する前記ステップが、鍵関数の結果を用いて、前記変化値と、前記変化した識別子、前記変化した第２の鍵、前記変化値、および前記応答パラメータの前記ハッシュとを暗号化するステップを含む、方法。
【請求項５２】
請求項５１に記載の方法であって、前記変化した識別子を、前記暗号化応答および前記暗号化応答ハッシュの少なくとも一つに付加するステップを更に備える方法。
【請求項５３】
請求項５２に記載の方法であって、前記暗号化応答と前記暗号化応答のハッシュとを前記エンティティに送るステップを更に備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００６年３月６日に出願された米国特許出願第１１／３６８，９５９号の優先権を主張し、同出願の内容全体が、参照により本明細書に組み込まれる。本出願はまた、２００５年１１月２３日に出願された米国特許出願第１１／２８６，８９０号の一部継続出願であり、同出願は、２００４年５月２６日に出願された米国特許出願第１０／８５４，６０４号の一部継続出願であり、同出願は、２００３年２月２７日に出願された米国特許出願第１０／２４８，８９４号の一部継続出願であり、同出願は、２００２年２月２７日に出願された米国仮特許出願第６０／３６０，０２３号の優先権を主張し、上記すべての出願の内容全体が、参照により本明細書に組み込まれる。
【背景技術】
【０００２】
暗号化技法は、適切な妥当性検証（validation）または認証（authentication）（例えば鍵の所有）なしにデータが取得され得ないように、データ（即ち、平文または無暗号化データ）を仮装（ｄｉｓｇｕｉｓｅ）するための機構を提供する。一般に、暗号化、即ち、暗号適用プロセスは、暗号文を生成するために、暗号化鍵を平文に適用する。暗号文から平文データを取得するためには、暗号解除鍵が暗号文に適用され、暗号文を平文に変換し戻す。暗号文を生成するためと、暗号文を暗号解除するためとで、異なるタイプの鍵が使用できる。例えば、対称鍵システムは、単一の鍵を使用して、暗号化および暗号解除の両方を実行し（即ち、暗号化鍵は暗号解除鍵と等しい）、公開／私有鍵システムは、別個の暗号化鍵および暗号解除鍵を使用する。公開／私有鍵システムは、暗号解除鍵（即ち、私有鍵）は秘密にまたは私的に保持され、暗号化鍵（即ち公開鍵）は一般に公けに使用可能であるという事実から、その名称を得ている。公開／私有鍵システムのセキュリティは、暗号解除鍵を秘密に保持すること、また暗号解除鍵が公開暗号化鍵から容易に計算されないよう保証することにかかっている。
【０００３】
暗号解読は、適切な妥当性検証や認証なしに（例えば鍵を所有せず）、平文を回復する科学である。試みられる暗号解読は、しばしば攻撃と呼ばれる。暗号化技法のセキュリティをくぐり抜けるため、様々な攻撃が実行できる。例えば、暗号文単独攻撃（ｃｉｐｈｅｒｔｅｘｔ−ｏｎｌｙ  ａｔｔａｃｋ）は、盗聴者が暗号文を取得または盗み取って、平文および／または暗号文を生成するのに使用された鍵を決定しようと試みる場合に実行することができる。暗号文に加えて、対応する平文も取得した場合、盗聴者は、平文攻撃（ｐｌａｉｎｔｅｘｔ  ａｔｔａｃｋ）を実行することができ、暗号文を生成するのに使用された鍵を決定しようと試みることができる。暗号文に加えて、対応する平文の一部または既知のフォーマットのみを取得することができる場合でも、盗聴者は依然として、平文を生成するのに使用される鍵を決定することができる。ほとんどの状況において、盗聴者が取得できた情報が多いほど、盗聴者は容易に鍵を決定することができる。ひとたび鍵を決定すると、盗聴者は、暗号文を暗号解除するために、その鍵を使用することができる。
【発明の開示】
【課題を解決するための手段】
【０００４】
本発明の一実施形態は、データを暗号化する方法を提供する。この方法は、発見可能（ｄｉｓｃｏｖｅｒａｂｌｅ）、即ち、「ホワイト（ｗｈｉｔｅ）」データと、発見不可能（ｕｎｄｉｓｃｏｖｅｒａｂｌｅ）、即ち、「ブラック（ｂｌａｃｋ）」データとを含むデータを確立するステップを含む。ブラック・データは一般に、認識不可能である。例えば、ブラック・データは、ランダム・データとすることができる。ホワイト・データは一般に、認識可能な内容を有し、または認識可能なフォーマットで送信される。方法はまた、第１の鍵および第２の鍵を確立するステップも含み、第２の鍵は、第１の鍵から実質的に導出不能である。発見可能、即ち、ホワイト・データは、第１の鍵を用いて暗号化され、発見不可能、即ち、ブラック・データは、第２の鍵を用いて暗号化される。その後の通信またはトランザクションでは、第１の鍵および第２の鍵の少なくとも一つが変化（ｍｕｔａｔｅ）させられる。
【０００５】
別の実施形態では、メッセージが、エンティティとオーセンティケータ（認証手段）の間で送信され、メッセージは、そのエンティティに関連する識別子を確立することと、ブラック・データを暗号化するための第１の鍵であって、そのエンティティおよび認証手段にのみ知られた第１の鍵を確立することにより送信される。ホワイト・データを暗号化するための第２の鍵が確立される。第２の鍵は、前記のエンティティおよび認証手段にのみ知られている。リクエスト（要求）識別子が確立され、暗号化要求を生成するために、第２の鍵を用いて暗号化される。要求識別子のハッシュが生成され、そのハッシュが、暗号化要求ハッシュを生成するために、第１の鍵を用いて暗号化される。暗号化要求および暗号化要求ハッシュが、認証手段へ送られ、第１の鍵および第２の鍵の少なくとも一方が変化させられる。
【０００６】
別の実施形態では、発見可能データと発見不可能データとを含むデータを暗号化するためのシステムが提供される。このシステムは、第１の鍵および第２の鍵を有する送信者を含む。第２の鍵は、第１の鍵から実質的に導出不能である。送信者は、第１の鍵を用いて発見可能データを暗号化し、第２の鍵を用いて発見不可能データを暗号化し、かつ変化した第１の鍵および変化した第２の鍵の少なくとも一つを認証手段から受け取るように構成される。
【０００７】
他の実施形態および詳細は、図面および詳細な説明において例示および説明される。
【発明を実施するための最良の形態】
【０００８】
本発明の実施形態を詳細に説明する前に、その応用において、本発明は、以下の説明において説明される、または図面において例示される構成要素の構造および構成の細部にわたり限定されないことを理解されたい。本発明は、更に他の実施形態が可能であり、様々な方法で実行または実施されることが可能である。また、本明細書で使用される表現法および用語法は、説明を目的としたものであり、限定的なものと見なされるべきでないことも理解されたい。
【０００９】
具体的には、幾つかの実施形態は、様々なコンピュータ・デバイスを使用して実施され、様々なコンピュータ・デバイスには、パーソナルまたはホーム・コンピュータ、サーバ、およびプロセッサを有するか又はプログラム、即ち、命令の組を実行することが可能な他のデバイスなどが含まれ、他のデバイスは、セット・トップ・ボックス（例えば、デジタル・ケーブルまたは衛星デコーダ）などの専用デバイスを含むことを理解されたい。一般に、幾つかの実施形態は、既存のハードウェア、または当業者により容易に作成され得るハードウェアを使用して、実施することができる。従って、例示的なデバイスのアーキテクチャは、デバイスが一般に、プロセッサと、メモリ（何らかの種類）と、入力および出力デバイスとを有することに言及する以外は、詳細には説明されない。幾つかの場合、デバイスはまた、オペレーティング・システムと、オペレーティング・システムにより管理されるアプリケーション・プログラムとを有することができる。幾つかの実施形態では、ハードウェア・デバイス、またはハードウェア・デバイスにより実行されるソフトウェアはまた、実施される本発明の具体的な実施形態におけるデバイスの役割に応じて、データを圧縮もしくは圧縮解除（伸張）するため、またはデータを符号化もしくは暗号化データを復号するための何らかの能力も提供する。幾つかの例では、圧縮解除機能は、ハードウェア実装のムービング・ピクチャ・エキスパート・グループ（「ＭＰＥＧ」）・コーデックなどのような使用可能なコーデックを使用して、提供することができる。暗号解除機能は、特定の暗号化アルゴリズムを使用して暗号化されたデータを暗号解除することが可能な暗号解除ハードウェアまたはソフトウェア・モジュールを使用して、提供することができる。幾つかの実施形態では、暗号化アルゴリズムは、ラインダール（Ｒｉｊｎｄａｅｌ）アルゴリズムを含み、その一例は、http://www.esat.kuleuven.ac.be/~rijmen/rijndael/rijndaelref.zipにおいて入手可能である。
【００１０】
図１は、ネットワークを介してコンテンツを配布するように構成された例示的なシステム２０を示している。実際には、当業者に明らかなように、インターネット、電話システム、無線ネットワーク、衛星ネットワーク、ケーブルＴＶネットワーク、ならびに様々な他の私的および公的ネットワークなどのような１または複数のネットワークまたは通信システムが、本発明の実施形態または実装の要望または必要とされる通信リンクを提供するために、様々な組み合わせで使用できる。従って、本発明は、どのような特定のネットワークまたはネットワークの組み合わせにも限定されない。しかし、幾つかの実施形態では、システム２０において使用されるネットワークまたは通信システムは、あるバージョンのラインダール暗号化を用いて暗号化されたデータを含む通信や他の通信などのような、デジタルおよび／またはセキュアの通信をサポートするための能力を有する。更に、データは、１つのエンティティから別のエンティティへ、有線通信、無線通信、または１つのエンティティから別のエンティティへ物理的に搬送される物理媒体を用いて、伝達することができる。
【００１１】
図１に示される実施形態では、システム２０は、３つの参加者、即ち、第１のデバイス２２と、第２のデバイス２４と、認証デバイス２８とを含む。図１に示される例示的な実施形態では、第１のデバイス２２が、第２のデバイスに送信されるデータを保有すると仮定される。図１は、第１のデバイス２２および第２のデバイス２４を示すだけであるが、幾つかの実施形態では、システム２０には数多くのデバイスが含まれ、少なくとも１つのデバイスが、別のデバイスに送信されるデータを保有する。更に、幾つかの実施形態では、システム２０は、複数の認証デバイス２８を含む。
【００１２】
第１のデバイス２２、第２のデバイス２４、および認証デバイス２８は、２方向リンク３０、３２、３８を介して、互いに接続される。リンク３０、３２、３８は、上述の１または複数のネットワークの全部または一部を含むことができる。幾つかの実施形態では、システム２０は、ラインダール・アルゴリズムなどのような、鍵ベースの暗号化アルゴリズムおよび現在使用可能なアルゴリズムを使用する。システム２０で使用されるアルゴリズムの選択は、アルゴリズムの強度（解読に対する）とアルゴリズムのスピード（選択されたアルゴリズムにより必要とされる数学的演算を実行するためのプロセッサ能力に関する）との間のトレード・オフを含む様々な要因に依存することができる。
【００１３】
幾つかの実施形態では、図１に示されるように、認証デバイス２８は、システム２０が実施または準拠するプロトコルにより使用される番号を生成するために、乱数生成器３９を使用する。乱数生成器３９は、真にランダムな数（即ち、本発明を実施するために使用される特定の技術を用いた中で可能な限りランダムな数）を生成することができる。例えば、コンテンツを取得するための顧客からの要求などの通信トラフィックは、乱数を生成するために使用することができる。そのような要求は一般に、予測不可能に発生する。従って、アルゴリズム的方法を用いて生成される疑似乱数とは対照的に、そのようなトラフィックに基づいて生成される乱数もまた、真にランダムまたはほぼ真にランダムである。
【００１４】
幾つかの実施形態では、第１のデバイス２２および第２のデバイス２４は、データを送信するために、ミューテーティング（変化）識別子（「ＩＤ」）（ｍｕｔａｔｉｎｇ  ｉｄｅｎｔｉｆｉｅｒ）を使用する。例示的な変化ＩＤ３８が、図２に示されている。変化ＩＤ３８は、２つの部分、即ち、第１の部分４０と、第２の部分４２とを有する識別子である。第１の部分４０は、識別番号を含み、それは乱数である。図２に示されるように、幾つかの実施形態では、変化ＩＤの２つの部分は各々、多数のビットを含む。例えば、第１の部分４０および第２の部分４２は各々、２５６ビットを含むことができる。他の実施形態では、第１の部分４０および／または第２の部分４２は、１メガビットや１メガバイトなどのような、より多数のビットを含む。
【００１５】
第２の部分４２は秘密鍵を含み、秘密鍵は、やはり乱数であり、幾つかの実施形態では対称暗号鍵である。変化ＩＤは、１回だけ使用することができ、その後は長い間、再使用することができない。
【００１６】
加えて、図２は、２つの部分のみを有する変化ＩＤを示しているが、変化ＩＤは、付加的な区画または部分を含むことができる。例えば、以下で説明されるように、変化ＩＤは、識別番号と、第１のタイプのデータ（例えば発見可能データ）用の秘密鍵と、第２のタイプのデータ（例えば発見不可能データ）用の秘密鍵とを含むことができる。
【００１７】
変化ＩＤは、認証デバイス２８により生成され、追跡される。変化ＩＤは、１回限り使用可能な機構であるので、第１のデバイス２２、第２のデバイス２４、または別のデバイスがひとたび、供給された変化ＩＤ（例えば、一つの変化ＩＤまたは複数の一つの変化ＩＤ）を使用すると、デバイスは、認証デバイス２８から別の変化ＩＤ（または妥当な場合には複数の変化ＩＤ）を取得することができる。変化ＩＤに含まれるデータは、すべての可能な変化ＩＤにとって等しい確率で、ランダムに選択することができる。
【００１８】
図３ａおよび図３ｂは、変化ＩＤが、認証デバイス２８から第１のデバイス２２または第２のデバイス２４へどのように配布され得るかを示している。図３ａに示されるように、幾つかの実施形態では、デバイス４３（第１のデバイス２２や第２のデバイス２４など）は、認証デバイス２８に複数の変化ＩＤを要求する。認証デバイス２８は、デバイス４３が要求した数の変化ＩＤを生成し、変化ＩＤのリストをデバイス４３へ送る。デバイス４３は、要求した変化ＩＤの数量およびそれぞれの変化ＩＤのサイズを知っており、リストを個々の変化ＩＤに分割する。幾つかの実施形態では、認証デバイス２８は、変化ＩＤを分割するデバイス４３を支援するために、情報または命令をデバイス４３に提供する。例えば、認証デバイス２８は、拡張マークアップ言語（「ＸＭＬ」）などのデータ記述言語を使用して、変化ＩＤを分割するデバイス４３を支援するために、情報または命令をデバイス４３に提供することができる。
【００１９】
図３ｂに示されるように、他の実施形態では、デバイス４３は、新しい変化ＩＤを要求した際に、または先に提供された変化ＩＤを使用した際に、単一の変化ＩＤを受け取ることができる。単一の新しい変化ＩＤは、デバイス４３へ送られ、先にデバイス４３に提供された変化ＩＤに取って代わる。
【００２０】
図１に示される実施形態では、認証デバイス２８は、第１のデバイス２２に変化ＩＤ（この例ではこれ以降「第１の変化ＩＤ」と呼ばれる）を、また第２のデバイス２４に変化ＩＤ（この例ではこれ以降「第２の変化ＩＤ」と呼ばれる）をランダムに割り当てまたは提供する。第１の変化ＩＤは、第２の変化ＩＤとは異なり、第１の変化ＩＤおよび第２の変化ＩＤの各々は、他の変化ＩＤを決定するための情報を提供しない。図２に関して上述したように、それぞれの変化ＩＤは、乱数４０と、対応するランダムな秘密鍵４２とを含む。幾つかの実施形態では、変化ＩＤは、モディファイド・ハッシュ（ｍｏｄｉｆｉｅｄ  ｈａｓｈ）の形式を取る。上述したように、ランダムであることに加えて、変化ＩＤ（または妥当な場合はハッシュ）は、それぞれの使用の後に廃棄される。言い換えると、認証デバイス２８は、変化ＩＤが使用された後、新しい乱数と新しいランダムな秘密鍵４２とを有する新しい変化ＩＤを提供する。幾つかの実施形態では、変化ＩＤは、それを使用するデバイスとは完全に無関係である。即ち、変化ＩＤまたはハッシュは、デバイスの正体に関するどのような情報も含まない。このようにして、デバイスの正体は、認証デバイス２８を除いて、すべての参加者にとって不明である。
【００２１】
本発明の幾つかの実施形態は、対称鍵システムを実施する。対称鍵システムは一般に、システムのエンティティまたは関与者の数が多くなると、鍵の管理の問題に遭遇する。例えば、ｎ個のエンティティから成るネットワークは、すべてのエンティティが互いに通信することを可能にするために、ｎ（ｎ−１）／２個の鍵を必要とする。従って、１０００個のエンティティから成るシステムの場合、個々のエンティティのすべてが他のすべてのエンティティへ同じコンテンツを送ることを望む場合、ほぼ５０万個の鍵が必要とされる。
【００２２】
しかし、開示される実施形態は、システムのエンティティのすべての対ごとに別個の鍵を必要としない。説明されるように、各エンティティと、各エンティティにより配布されるコンテンツの各部分は、１つの鍵を受け取り、その鍵は、それぞれの使用の後で変化させられる。従って、１０００個のエンティティから成るシステムの場合、先の対称鍵システムを用いた場合のほぼ５０万個の鍵に比べて、僅か２０００個の鍵が必要とされる。また、認証デバイス２８は、変化ＩＤのビット列全体を保存することを要求されない。認証デバイス２８は、変化ＩＤの各鍵部分を、対応する番号に基づいてメモリ記憶ロケーションにマッピングするために、ハッシュ関数または単に位置インデックスを使用することができる。
【００２３】
本発明の実施形態と従来のセキュリティ・システムとの間の他の相違は、スピードと、ある種の攻撃に対する脆弱性の低下とに関する。対称鍵の使用はまた、高速な計算を可能にする（公開鍵システムと比べて）。公開鍵システムの背後にある基本的考えは、一方向性関数の使用である。一方向性関数は、計算するのは容易であるが、その逆計算は困難である。公開鍵システムは、一方向性関数を逆方向で計算するための鍵を提供するトラップドア一方向性関数（ｔｒａｐｄｏｏｒ  ｏｎｅ−ｗａｙ  ｆｕｎｃｔｉｏｎ）を使用する。公開鍵システムは、自由にアクセスされ、メッセージに適用するための一方向性関数として使用される公開鍵を各参加者に提供する。公開鍵システムはまた、一方向性関数の計算を与えた場合にメッセージを計算するための私有鍵（公開鍵から導出することは計算的に実行不可能であると信じられている）も各参加者個々に提供する。公開鍵システムのセキュリティは、私有鍵は公開鍵から導出され得ないという仮定に依存している。この要件を維持するため、公開鍵システムにおいて使用される一方向性関数は複雑である。しかし、複雑性の追加は、計算時間の追加という犠牲を払うことになる。公開鍵システムはしばしば、対称鍵システムよりも１０００倍遅い。
【００２４】
対称鍵の使用はまた、選択平文攻撃（ｃｈｏｓｅｎ  ｐｌａｉｎｔｅｘｔ  ａｔｔａｃｋ）の有効性を低下させる。選択平文攻撃は、侵入者が暗号化鍵またはプロセスにアクセスし、暗号化する特定の平文を選択し、暗号化されたテキストから知識を得ようと試みるときに生じる。公開鍵システムでは、ある個人の公開鍵は、通信システムのすべての参加者に知られている。どの侵入者も、ある個人の公開鍵を使用して、数限りないメッセージを暗号化することができる。攻撃者が、ある個人の公開鍵を用いて、あり得るメッセージを暗号化し、その後、その個人へ送られた暗号化メッセージを傍受した場合、侵入者は、傍受したメッセージと、侵入者が生成したメッセージとを比較することができる。傍受メッセージが、侵入者により生成された暗号化メッセージと一致した場合、メッセージは、危険にさらされ、侵入者は、侵入者に宛てられたものではないメッセージを読むことができる。この攻撃は、あり得るメッセージが僅かな数しか存在しない場合、相対的に容易かつ有効であり、また、あり得るメッセージの数が、侵入者が暗号化できる数または傍受された暗号化メッセージと比較できる数を超えている場合であっても、傍受された暗号化メッセージが特定のメッセージと一致しないことを知るだけで、侵入者に有用な情報を提供することができる。どちらの状況においても、侵入者は、個人の私有鍵を推論することはできないが、その個人に送られたメッセージまたはメッセージに関する情報を推論できることがある。本発明の実施形態は対称鍵システムを使用するため、暗号化鍵は公開の知識ではなく、従って選択平文攻撃は適用可能ではない。
【００２５】
従来の対称鍵システムおよび公開鍵システムには、別の問題が存在する。無権限の主体（エンティティ）が、許可されている鍵へのアクセスを得ると、その無権限のエンティティは、その危険にさらされた鍵を用いて暗号化されたすべてのメッセージを復号することができ、おそらくより危険なこととして、システムの他のエンティティを欺くために、偽メッセージを暗号化することができる。変化ＩＤプロトコルは、それぞれの秘密鍵をそれが使用された後に変化させることにより、この脆弱性を低下させる。秘密鍵が危険にさらされたとしても、その危険にさらされた秘密鍵は、認証手段により使用済としてマーク付けされており、将来のメッセージを暗号化するために再使用されないので、将来のメッセージを生成するために使用することも、また将来のメッセージを暗号解除するために使用することもできない。
【００２６】
システム２０は、エンティティ間の通信を管理するためにプロトコルを使用する。各エンティティは、図２に示された識別子またはＩＤ３８などのような変化ＩＤを、認証デバイス２８によりランダムに割り当てられる。言及されたように、それぞれの変化ＩＤは、乱数４０と、対応するランダムな秘密鍵４２とを含む。幾つかの実施形態では、変化ＩＤは、モディファイド・ハッシュの形式を取る。
【００２７】
認証デバイス２８はまた、システム２０を介して配布されるコンテンツまたはデータのための暗号化鍵も生成する。データを送信したいデバイスは、認証デバイス２８に鍵を要求する。データを送るデバイス（即ち、送信デバイス）は、送信するデータのラベルもしくは関数（即ち、任意の識別ストリング）を認証デバイス２８へ供給し、認証デバイス２８は、関連する鍵により応答する。鍵は、変化ＩＤと同様に、それが暗号化するデータとは無関係である。データの識別子（例えば、ランダムな識別子）だけが提供されるので、認証デバイス２８も、データについての知識を有さない。認証デバイス２８は、鍵および関連するデータ識別子を記録する。
【００２８】
幾つかの実施形態では、認証デバイス２８が、データ識別子に関連する鍵を生成し、それを送信デバイスへ供給した後、送信デバイスは、鍵を使用してデータを暗号化する。暗号化データを受け取ったデバイス（即ち、受信デバイス）は、対応する暗号解除鍵（例えば、データを暗号化するのに使用されたのと同じ鍵）を認証デバイス２８に要求する。幾つかの実施形態では、認証デバイス２８は、システム２０に含まれており合法的な要求を行った何れの権限付与された（許可された、authorized）受信デバイスにも、暗号解除鍵を供給する。暗号解除鍵の要求は、データのラベルまたは識別ストリングへの参照を含む。認証デバイス２８は、要求内で示されたラベルに基づいて、関連する鍵を決定し、適切な鍵を受信デバイスへ返す。
【００２９】
本発明の例示的な実施形態が、幾つかの例を使用して説明される。
【００３０】
通信プロトコルについての多くの説明と同様に、プロトコルで使用される様々なデバイス（またはそれらのデバイスに関連するコンピュータ・システム）には名前が割り当てられる。一実施形態では、アリス（Ａ）およびボブ（Ｂ）は、第１のデバイス２２および第２のデバイス２４をそれぞれ表し、トレント（Ｔ）は、認証デバイス２８、通信の信用できるアービタ（ａｒｂｉｔｅｒ）を表す。キャロル（Ｃ）は、システム２０に含まれる第３のデバイスを表す。以下の表１は、プロトコルの複数の実施形態を説明するために本文書において使用される他の符号のリストである。
【００３１】
【表１】
2009529832.tif 000003
【００３２】
セッション鍵
幾つかの実施形態では、２つのエンティティの間で通信またはセッション鍵を交換するために、変化ＩＤが使用される。例えば、アリスとボブは、安全に通信したがっていると仮定する。アリスおよびボブは、トレントを信用しているものとし、トレントは、番号ＮＡと何らかの対称暗号用の秘密鍵ＫＡとを含む変化ＩＤをアリスに割り当て、また番号ＮＢと何らかの対称暗号用の秘密鍵ＫＢとを含む変化ＩＤをボブに割り当てるものと仮定する。また、アリスおよびボブは、各々、トレントおよび信用証明書（credential）の保有者だけが知っている信用証明書（例えば、それぞれＡｃｒｅｄおよびＢｃｒｅｄ）を有するものとする。
【００３３】
セッション鍵ＫＡＢをトレントに要求するために、アリスは、アリスの信用証明書およびボブの識別子（例えば、ＢＩＤ）をアリスの秘密鍵ＫＡを用いて暗号化し、その結果としてできたものにアリスの番号ＮＡを追加する。アリスは、ボブへメッセージを送る。
【００３４】
Ａ→Ｂ：ＮＡＥ（ＫＡ，ＡｃｒｅｄＢｉｄ）
【００３５】
ボブは、アリスからのメッセージに、ボブの信用証明書およびアリスの識別子（例えば、Ａｉｄ）を連結し、その結果としてできたものをボブの秘密鍵ＫＢを用いて暗号化する。ボブは、暗号化の結果としてできたものにボブの番号ＮＢを追加し、その結果としてできたものをトレントへ送る。
【００３６】
Ｂ→Ｔ：ＮＢＥ（ＫＢ，ＢｃｒｅｄＡｉｄＮＡＥ（ＫＡ，ＡｃｒｅｄＢｉｄ））
【００３７】
トレントは、番号ＮＢがボブに関連付けられていることを知っているので、メッセージがボブから来たことを識別する。トレントは、そのメッセージをＫＢを使用して暗号解除し、信用証明書Ｂｃｒｅｄを検査する。トレントはまた、アリスにより構成されたメッセージの部分も暗号解除し、検証する。ボブの信用証明書Ｂｃｒｅｄが、ボブの番号ＮＢおよびアリスにより提供されたボブの識別子Ｂｉｄに合致し、かつアリスの信用証明書Ａｃｒｅｄが、アリスの番号ＮＡおよびボブにより提供されたアリスの識別子Ａｉｄに合致した場合、トレントは、要求の正当性を認める。要求の正当性を認めた後、トレントは、アリス宛てのメッセージおよびボブ宛てのメッセージを生成する。アリス宛てのメッセージは、新しい番号ＮＡ’と、新しい秘密鍵ＫＡ’と、アリスの信用証明書Ａｃｒｅｄと、セッション鍵ＫＡＢとを含む。トレントは、アリス宛てのメッセージをアリスの現在の秘密鍵ＫＡを用いて暗号化する。ボブ宛てのメッセージは、新しい番号ＮＢ’と、新しい秘密鍵ＫＢ’と、ボブの信用証明書Ｂｃｒｅｄと、セッション鍵ＫＡＢとを含む。トレントは、ボブ宛てのメッセージをボブの現在の秘密鍵ＫＢを用いて暗号化する。トレントは、アリスおよびボブへメッセージを送る。
【００３８】
Ｔ→Ａ：Ｅ（ＫＡ，ＮＡ’ＫＡ’ＡｃｒｅｄＫＡＢ）
Ｔ→Ｂ：Ｅ（ＫＢ，ＮＢ’ＫＢ’ＢｃｒｅｄＫＡＢ）
【００３９】
上記のプロトコルは、より多くのエンティティを含むように拡張することができる。例えば、アリスが、ボブおよびキャロルに関連するセッション鍵を欲しい場合、アリスは、ボブの識別子Ｂｉｄおよびキャロルの識別子（例えば、Ｃｉｄ）などのボブおよびキャロルの既知の識別子を、アリスのメッセージ中に列挙することができる。同様に、ボブは、アリスおよびキャロルの識別子を列挙することができ、キャロルは、アリスおよびボブの識別子を列挙することができる。各エンティティはまた、各自の信用証明書を各自のメッセージ中に含めることができる。上記で示したように、各エンティティは、要求されたセッション鍵に関連する別のエンティティへ、各自のメッセージを送ることができ、各エンティティは、受け取ったメッセージに、各自のメッセージを追加することができる。すべての意図されたエンティティが、各自のメッセージを要求に追加すると、最後のエンティティは、その要求をトレントへ送る。トレントは、各エンティティの信用証明書が、各エンティティに割り当てられた変化ＩＤ（例えば、変化ＩＤの番号）と合致すること、および各エンティティにより指定された識別子のリストが、提供された信用証明書と合致することを検証する。要求の正当性を認めた後、トレントは、新しい変化ＩＤ（例えば、新しい番号および新しい秘密鍵）、およびリストされたエンティティに関連するセッション鍵とを、各エンティティの信用証明書と共に各エンティティへ送る。
【００４０】
コンテンツ使用ライセンス
変化ＩＤはまた、エンティティがコンテンツを取得するためおよび復号するために使用し得るライセンスを提供するために、使用することもできる。例えば、アリスは、ボブに安全に送りたいコンテンツまたはメッセージＰを有しているとする。アリスおよびボブは、トレントを信用しているものとし、トレントは、番号ＮＡと何らかの対称暗号用の秘密鍵ＫＡとを含む変化ＩＤをアリスに割り当て、また番号ＮＢと何らかの対称暗号用の秘密鍵ＫＢとを含む変化ＩＤをボブに割り当てるものとする。また、アリスおよびボブは、各々、トレントおよび信用証明書の保有者だけが知っている信用証明書（例えば、それぞれＡｃｒｅｄおよびＢｃｒｅｄ）を有するものとする。
【００４１】
メッセージＰのためのライセンスを取得するため、アリスは、メッセージＰのハッシュを生成し、そのハッシュＨ（Ｐ）をアリスの信用証明書Ａｃｒｅｄと連結し、その結果としてできたものをアリスの秘密鍵ＫＡを用いて暗号化する。アリスはまた、アリスの番号ＮＡを、暗号化した結果としてできたものに追加する。アリスは、ライセンス要求をトレントへ送る。
【００４２】
Ａ→Ｔ：ＮＡＥ（ＫＡ，ＡｃｒｅｄＨ（Ｐ））
【００４３】
トレントは、アリスからの要求の暗号解除を行い、アリスへの応答を生成する。アリスへの応答は、アリス用の新しい番号ＮＡ’および新しい秘密鍵ＫＡ’を含む変化ＩＤと、ライセンス番号ＮＨ（Ｐ）およびライセンス秘密鍵ＫＨ（Ｐ）を含む、メッセージＰのためのライセンスに関連する変化ＩＤと、メッセージＰのための鍵ＫＰとを含む。幾つかの実施形態では、トレントはまた、メッセージが改ざんされていないことをアリスが保証できるように、アリスへの応答にハッシュＨ（Ｐ）も含める。トレントは、応答をアリスの現在の秘密鍵ＫＡを用いて暗号化し、暗号化された応答をアリスに送る。
【００４４】
Ｔ→Ａ：Ｅ（ＫＡ，ＮＡ’ＫＡ’ＮＨ（Ｐ）ＫＨ（Ｐ）ＫＰＨ（Ｐ））
【００４５】
アリスは、トレントから応答を取得すると、その応答を暗号解除し、鍵ＫＰと、メッセージＰのためのライセンスに関連する変化ＩＤとを取得する。アリスは、鍵ＫＰを用いてメッセージＰを暗号化し、暗号化したメッセージＰのためのライセンスを生成する。暗号化メッセージＰのためのライセンスは、アリスの信用証明書Ａｃｒｅｄと、メッセージのハッシュＨ（Ｐ）とを含む。幾つかの実施形態では、ライセンスはまた、ライセンスの受取手の識別子も含む。例えば、アリスがライセンスをボブへ送ろうとする場合、ライセンスは、Ｂｉｄなどのようなボブの識別子を含むことができる。幾つかの実施形態では、受取手の識別子は、プロトコルの複雑性を低減するために、ライセンスから除外される。例えば、デジタル媒体製作会社は、コンテンツの受取手となり得る者を事前に知り得ず、または追跡し得ないであろう。アリスは、ライセンス秘密鍵ＫＨ（Ｐ）を用いてライセンスを暗号化し、暗号化の結果としてできたものに、関連するライセンス番号ＮＨ（Ｐ）を追加する。アリスは、暗号化メッセージと、関連するライセンスとをボブへ送る。
【００４６】
Ａ→Ｂ：Ｅ（ＫＰ，Ｐ）  （暗号化コンテンツ）
Ａ→Ｂ：ＮＨ（Ｐ）Ｅ（ＫＨ（Ｐ），ＡｃｒｅｄＨ（Ｐ）Ｂｉｄ）  （ライセンス）
【００４７】
暗号化メッセージＰおよび関連ライセンスを受け取った後の何れかの時点で、ボブは、暗号化メッセージＰのための暗号解除鍵を要求することができる。暗号解除鍵の要求を生成するため、ボブは、ボブの信用証明書Ｂｃｒｅｄを、アリスが生成したライセンスに連結し、その結果としてできたものをボブの秘密鍵ＫＢを用いて暗号化する。ボブはまた、ボブの番号ＮＢを、暗号化して連結したものに追加し、要求をトレントへ送る。
【００４８】
Ｂ→Ｔ：ＮＢＥ（ＫＢ，ＢｃｒｅｄＮＨ（Ｐ）Ｅ（ＫＨ（Ｐ），ＡｃｒｅｄＨ（Ｐ）Ｂｉｄ））
【００４９】
トレントは暗号を開き、ボブの識別子がライセンスに含まれている場合、トレントは、信用証明書Ｂｃｒｅｄおよび番号ＮＢが、アリスが生成したライセンス内の識別子と合致することを検証する。トレントはまた、ハッシュＨ（Ｐ）が、ライセンス番号ＮＨ（Ｐ）およびライセンス秘密鍵ＫＨ（Ｐ）と合致することを検証することもできる。ボブからのメッセージの正当性を認めた（verify、確認した）後、トレントは、暗号化メッセージＰを暗号解除するために使用され得る鍵ＫＰと、ボブ用の新しい番号ＮＢ’および新しい秘密鍵ＫＢ’を含む変化ＩＤと、ボブの信用証明書Ｂｃｒｅｄとを、すべてボブの現在の秘密鍵ＫＢを用いて暗号化して、ボブへ送る。
【００５０】
Ｔ→Ｂ：Ｅ（ＫＢ，ＮＢ’ＫＢ’ＫＰＢｃｒｅｄ）
【００５１】
アリスが望む場合、トレントは、ボブが暗号解除鍵を要求したことをアリスに通知することができる。
【００５２】
Ｔ→Ａ：Ｅ（ＫＡ’，“ボブは識別子Ｈ（Ｐ）に関連する鍵を要求した”）
【００５３】
暗号解除鍵をボブに提供した後、メッセージＰのためのライセンスに関連する１回限り使用可の変化ＩＤをこの例では構成するライセンス番号ＮＨ（Ｐ）およびライセンス秘密鍵ＫＨ（Ｐ）をトレントはすでに見ているので、アリスがボブに提供したライセンスはもはや有効ではない。
【００５４】
先の例でのように、このプロトコルは、各エンティティが各自の信用証明書をライセンスに追加するようにさせ、その結果としてできたものを各自に割り当てられた変化ＩＤを用いて暗号化させ、その変更したライセンスを次のエンティティへ送らせることにより、複数のエンティティを含むように拡張することができる。例えば、アリスがライセンスを生成し、それをキャロルへ送り、キャロルがそのライセンスをデイビッドへ送り、次にデイビッドがそのライセンスをボブへ送った場合、トレントにより受け取られる結果的なライセンスは以下のようになる。
【００５５】
Ｔ→Ａ：ＮＢＥ（ＫＢ，ＢｃｒｅｄＮＤＥ（ＫＤ，ＤｃｒｅｄＮＣＥ（ＫＣ，ＣｃｒｅｄＮＨ（Ｐ）Ｅ（ＫＨ（Ｐ），ＡｃｒｅｄＨ（Ｐ）Ｂｉｄ））））
【００５６】
デジタル署名
これまで、セッションを確立するため、およびライセンスを送り届けるための、変化ＩＤの使用について説明してきた。別の実施形態では、変化ＩＤは、デジタル署名として使用される。アリスおよびボブが各々、アリスとボブの間の合意を必要とする情報Ｐを含む文書Ｓのコピーを有すると仮定する。例えば、文書Ｓは、売買証書を含むことができ、情報Ｐは、その売買証書に関する最終価格を含むことができる。また、キャロルは、情報Ｐについて知る必要があるかもしれないが文書Ｓについては必ずしも知る必要のない、合意の仲裁者（例えば、クレジット・カード会社または銀行）であると仮定する。アリス、ボブ、およびキャロルは各々、トレントを信用しているものとし、トレントは、番号ＮＡと何らかの対称暗号用の秘密鍵ＫＡとを含む変化ＩＤをアリスに割り当て、番号ＮＢと何らかの対称暗号用の秘密鍵ＫＢとを含む変化ＩＤをボブに割り当て、また番号ＮＣと何らかの対称暗号用の秘密鍵ＫＣとを含む変化ＩＤをキャロルに割り当てるものとする。また、アリス、ボブ、およびキャロルは各々、トレントおよび信用証明書の保有者だけが知っている信用証明書（例えば、それぞれＡｃｒｅｄ、Ｂｃｒｅｄ、およびＣｃｒｅｄ）を有するものとする。
【００５７】
文書Ｓの署名を開始するため、アリスは、文書Ｓまたは文書Ｓのハッシュと、アリスの信用証明書Ａｃｒｅｄのハッシュとを含むメッセージを生成する。幾つかの実施形態では、アリスは、メッセージを仮装させるか又は符号化する。例えば、アリスは、文書のハッシュとアリスの信用証明書ＡｃｒｅｄのハッシュのＸＯＲを生成することができる。メッセージはまた、情報Ｐを含むこともできる。アリスは、アリスの秘密鍵ＫＡを用いてメッセージを暗号化し、アリスの番号ＮＡを追加し、その結果としてできたものをボブへ送る。
【００５８】
Ａ→Ｂ：ＮＡＥ（ＫＡ，ＸＯＲ（Ｈ（Ｓ），Ｈ（Ａｃｒｅｄ））Ｐ）
【００５９】
ボブは、文書Ｓのハッシュとボブの信用証明書ＢｃｒｅｄのハッシュのＸＯＲを含み得る同様のメッセージを生成する。幾つかの実施形態では、ボブはまた、情報Ｐをメッセージに追加する。ボブは、ボブのメッセージをアリスからのメッセージに追加し、その結果としてできたものをボブの秘密鍵ＫＢを用いて暗号化する。ボブはまた、ボブの番号ＮＢを追加し、その結果としてできたものをトレントへ送る。
【００６０】
Ｂ→Ｔ：ＮＢＥ（ＫＢ，ＸＯＲ（Ｈ（Ｓ），Ｈ（Ｂｃｒｅｄ））ＰＮＡＥ（ＫＡ，ＸＯＲ（Ｈ（Ｓ），Ｈ（Ａｃｒｅｄ））Ｐ））
【００６１】
トレントは、ボブからのメッセージを暗号解除し、アリスおよびボブにより生成された文書Ｓのハッシュが等しいことを検証する。アリスおよびボブが、各自のメッセージに情報Ｐを含めている場合、トレントはまた、アリスおよびボブから提供された情報Ｐが等しいことも検証する。メッセージの正当性が認められた後、トレントは、アリスおよびボブのための受領証（ｒｅｃｅｉｐｔ）を生成する。アリスの受領証は、ボブの識別子（例えば、Ｂｉｄ）と、文書Ｓのハッシュと、オプションとして情報Ｐとを含む。トレントは、アリスおよびボブのための受領証に関連する変化ＩＤの一部である受領証秘密鍵Ｋｒｅｃｅｉｐｔを用いて、アリスの受領証を暗号化する。トレントはまた、アリスおよびボブのための受領証に関連する変化ＩＤに含まれる関連する受領証番号Ｎｒｅｃｅｉｐｔを、アリスの受領証に追加する。トレントは、その後、アリスの受領証と、アリス用の新しい番号ＮＡ’および新しい秘密鍵ＫＡ’を含む変化ＩＤと、アリスの信用証明書Ａｃｒｅｄとを、アリスの現在の秘密鍵ＫＡを用いて暗号化し、その結果としてできたものをアリスへ送る。
【００６２】
Ｔ→Ａ：Ｅ（ＫＡ，ＮＡ’ＫＡ’ＡｃｒｅｄＮｒｅｃｅｉｐｔＥ（Ｋｒｅｃｅｉｐｔ，ＢｉｄＨ（Ｓ）Ｐ））
【００６３】
トレントは、アリスの識別子（例えば、Ａｉｄ）と、文書Ｓのハッシュと、オプションとして情報Ｐとを含む、ボブのための同様の受領証を生成する。トレントは、アリスの受領証を暗号化したのと同じ受領証鍵Ｋｒｅｃｅｉｐｔを用いて、ボブの受領証を暗号化し、アリスの受領証に追加したのと同じ受領証番号Ｎｒｅｃｅｉｐｔを追加する。トレントは、ボブの受領証と、新しい番号ＮＢ’および新しい秘密鍵ＫＢ’を含む第６の変化ＩＤと、ボブの信用証明書Ｂｃｒｅｄとを、ボブの現在の秘密鍵ＫＢを用いて暗号化し、その結果としてできたものをボブへ送る。
【００６４】
Ｔ→Ｂ：Ｅ（ＫＢ，ＮＢ’ＫＢ’ＢｃｒｅｄＮｒｅｃｅｉｐｔＥ（Ｋｒｅｃｅｉｐｔ，ＡｉｄＨ（Ｓ）Ｐ））
【００６５】
アリスおよびボブは、各自の受領証をキャロルに提示し、キャロルは、その受領証の一方または両方を検証のためにトレントへ送る。例えば、アリスがキャロルへアリスの受領証を提供すると仮定する。キャロルは、アリスの受領証にキャロルの信用証明書を追加し、その結果としてできたものをキャロルの秘密鍵ＫＣを用いて暗号化する。キャロルは、その結果としてできたものにキャロルの番号ＮＣを追加し、そのメッセージをトレントへ送る。
【００６６】
Ｃ→Ｔ：ＮＣＥ（ＫＣ，ＣｃｒｅｄＮｒｅｃｅｉｐｔＥ（Ｋｒｅｃｅｉｐｔ，ＢｉｄＨ（Ｓ）Ｐ））
【００６７】
トレントは、キャロルからのメッセージを暗号解除し、そして、受領証を暗号解除して（トレントだけがＫｒｅｃｅｉｐｔ知っているため）、キャロルへ受領証の詳細を提供することにより、アリスの受領証を検証する。例えば、トレントは、キャロル用の新しい番号ＮＣ’および新しい秘密鍵ＫＣ’を含む変化ＩＤと、キャロルの信用証明書Ｃｃｒｅｄと、アリスの識別子（例えば、Ａｉｄ）と、ボブの識別子（例えば、Ｂｉｄ）と、文書Ｓのハッシュと、オプションとして情報Ｐとを含む、キャロル宛てのメッセージを生成することができる。トレントは、そのメッセージをキャロルの現在の秘密鍵ＫＣを用いて暗号化し、その結果としてできたものをキャロルへ送る。
【００６８】
Ｔ→Ｃ：ＮＣＥ（ＫＣ，ＮＣ’ＫＣ’ＣｃｒｅｄＡｉｄＢｉｄＨ（Ｓ）Ｐ）
【００６９】
キャロルは、アリスとボブとの間の合意を裁定するために、トレントからの情報を使用することができる。
【００７０】
上記のプロトコルは、他の数のエンティティを含むように拡張され得ることを理解されたい。
【００７１】
上記の例において示されたように、変化ＩＤは、上記のプロトコルにおいて使用される場合、静的な値にまさる幾つかの利点を提供する。第１の利点は、盗聴者または攻撃者は、暗号文単独の力ずく攻撃（ｃｉｐｈｅｒｔｅｘｔ−ｏｎｌｙ  ｂｒｕｔｅ  ｆｏｒｃｅ  ａｔｔａｃｋ）を試みるためには、変化ＩＤの識別子または鍵の全ての変化の履歴を獲得しなければならないことである。
【００７２】
変化ＩＤの第２の利点は、変化ＩＤが、セキュリティおよび侵入検出の一意の形式を提供することである。エンティティの変化ＩＤの履歴は、エンティティの「変化ＩＤの系譜（linage）」として認証デバイス２８により監査跡（audit trail）として保持される。変化ＩＤの系譜は、各変化ＩＤが割り当てられた相手、その変化ＩＤが割り当てられた時間、およびその変化ＩＤが使用された時間を追跡する。変化ＩＤまたはその部分が何らかの仕方でコピーされたり、盗まれたり、認証デバイス２８以外のエンティティにより活動化された場合、２つのイベントの一方が発生する。第１のイベントにおいて、詐称者が使用する前に、変化ＩＤの正当な所有者がその変化ＩＤを使用した場合、詐称者が所有する盗まれたまたはコピーされた変化ＩＤは廃止され、詐称者によりその変化ＩＤが将来に使用されると、認証デバイス２８により直ちに検出される。第２のイベントにおいて、変化ＩＤが正当な所有者により使用される前に、攻撃者または詐称者が盗んだその変化ＩＤを使用した場合、その変化ＩＤは、正当な所有者が変化ＩＤを使用する前に廃止される。その後、正当な所有者が変化ＩＤを使用すると、認証デバイス２８は、その変化ＩＤを廃止済として直ちに識別して、変化ＩＤの正当な所有者には、侵入についての通知がなされ、適切なアクションを取ることができる。
【００７３】
変化ＩＤの第３の利点は、エンティティが既存の変化ＩＤを使用したかどうかに関わらず、プロトコル中の任意の時点で、エンティティが、既存の変化ＩＤを使用して、新しい変化ＩＤを取得し得ることである。この定期的な変化は、攻撃者が変化ＩＤを盗み、盗んだ変化ＩＤを使用できる時間を制限することができる。
【００７４】
ブラック・プロトコル
変化ＩＤの秘密鍵（例えば、ＫＡ、ＫＢ、ＫＣ、ＫＤ）は、送信データのセキュリティを保護するために、秘密であり続けなければならない。例えば、トレントが、アリスの現在の秘密鍵（例えば、ＫＡ）を用いて暗号化された新しい変化ＩＤをアリスに提供する場合、アリスの現在の秘密鍵を特定した盗聴者は、トレントにより提供されたアリスの新しい変化ＩＤを取得することができる。盗聴者は、その後、偽データを送るため、および／またはアリスとトレントの間で交換される将来のデータの平文を取得するために、新しい変化ＩＤを使用することができる。
【００７５】
上述のように、盗聴者は、攻撃を実行することにより、特定のデータを暗号化するために使用された鍵を特定する（または特定しようと試みる）ことができる。図４は、力ずく攻撃（ｂｒｕｔｅ  ｆｏｒｃｅ  ａｔｔａｃｋ）を説明している。力ずく攻撃は、筋の通ったまたは認識可能なデータ（例えば、人が読めるデータ）を生成する鍵が見つかるまで、あらゆる可能な鍵を用いて暗号文を暗号解除することを含む。図４に示されるように、盗聴者は、初期鍵またはゼロ候補鍵を決定する（ステップ５０）。盗聴者は、その後、その候補鍵を使用して、暗号文を暗号解除する（ステップ５２）。暗号文を暗号解除した後、盗聴者は、候補鍵を用いて暗号解除された暗号文が筋の通った平文または筋の通ったパターンを生成したかどうかを決定するために、その結果（即ち、候補平文）を検査することができる（ステップ５４）。盗聴者が、取得した暗号文に対応する平文（またはその部分もしくはパターン）を取得した場合、あるいは知っている場合、盗聴者は、正しい候補鍵が見つかったかどうかを、より容易に決定することができる。例えば、盗聴者が、暗号文を取得し、暗号文が個人名とそれに続く数字４桁の個人識別番号（「ＰＩＮ：ｐｅｒｓｏｎａｌ  ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  ｎｕｍｂｅｒ」）とを含むことを知っている場合、盗聴者は、候補鍵が個人名を含む平文を生成するまで、候補鍵を適用することができる。盗聴者は、その後、ある程度の確実性をもって、生成された平文に含まれる残りの情報がＰＩＮに対応すると推定することができる。
【００７６】
図４に示されるように、盗聴者が、特定の候補鍵を用いて暗号文を暗号解除することにより生成された候補平文の中で筋の通ったパターンを見つけた場合（ステップ５６）、盗聴者は、ある程度の確実性をもって、現在の候補鍵が、暗号文を生成するために使用された鍵に等しいか、または使用された鍵であることを知る（ステップ５７）。
【００７７】
盗聴者が、特定の候補鍵を用いて暗号文を暗号解除することにより生成された候補平文の中に筋の通ったパターンを見つけなかった場合（ステップ５６）、盗聴者は、候補鍵を変更（例えば、候補鍵をインクリメント）することができ（ステップ５８）、変更された候補鍵を使用して暗号文を暗号解除し、（ステップ５２）、筋の通った平文または筋の通ったパターンを求めて、生成された候補平文を検査することができる（ステップ５４）。十分な処理能力および時間を与えられれば、盗聴者は、特定の候補鍵が筋の通った平文または筋の通ったパターンを有する候補平文を生成するまで、このプロセスを続けることができ、従って、暗号文を生成するために使用された鍵を特定することができる。
【００７８】
しかし、盗聴者が、平文または平文のパターンについての知識を有さない（即ち、コンテンツのヒントを有さない）場合、正しい候補鍵が見つかったかどうかを決定する盗聴者の能力は、大きく損なわれるか、おそらくは失われる。例えば、平文が特定の鍵を用いて暗号化された乱数を含む場合、盗聴者が力ずく攻撃で多くの鍵を試みても、盗聴者は、候補平文が暗号文に対応する真の平文であるかどうかを決定することができない。鍵の空間（即ち、候補鍵のプール）と暗号化アルゴリズムの平文の空間（即ち、候補平文のプール）とが実質的に同じであると仮定すると、暗号化された乱数を何れの候補鍵を用いて暗号解除しても、乱数を生成することになり、その乱数は、他の何れかの候補鍵により生成された他の乱数と同様の、元の乱数のような乱数である。
【００７９】
アリス、ボブ、およびトレントを含む上述のセッション鍵交換の例を参照すると、暗号化メッセージの何らかの部分が、認識可能であるか、既知であるか、既知になるか、または何らかのコンテンツ・ヒントを含む場合、盗聴者はおそらく、暗号化メッセージに対して平文攻撃または部分平文攻撃を実行し、メッセージを暗号化するために使用されたアリスまたはボブの秘密鍵を暴くことができる。例えば、アリスが以下のメッセージをボブへ送り、それが盗聴者により傍受されると仮定する。
【００８０】
Ａ→Ｂ：ＮＡＥ（ＫＡ，ＡｃｒｅｄＢｉｄ）
【００８１】
ボブの識別子Ｂｉｄおよび上記のメッセージのフォーマットは既知であるか又は公開されているので、盗聴者は、傍受したメッセージに対して力ずく攻撃を実行することができる。従って、盗聴者は、アリスの秘密鍵ＫＡおよび信用証明書Ａｃｒｅｄを取得することができる。更に、盗聴者は、アリスの現在の秘密鍵ＫＡを取得すると、アリスの現在の秘密鍵ＫＡを使用して、アリスの次の変化ＩＤ（例えば、ＮＡ’およびＫＡ’）などのような、アリスの現在の秘密鍵ＫＡを用いて暗号化されるすべてのデータを取得することができる。
【００８２】
盗聴者は、暗号化メッセージについての、または暗号化メッセージを生成するために使用される通信プロトコルについての他の知識を使用して、力ずく攻撃を実行することができる。例えば、盗聴者は、平文で渡される変化ＩＤの番号（例えば、ＮＡ）を使用して、力ずく攻撃を実行することができる。盗聴者はまた、変化ＩＤの番号を生成するために使用されるアルゴリズムについての知識を使用して、力ずく攻撃を実行することもできる。
【００８３】
発見不可能、即ち、「ブラック」データ（即ち、ランダムであるか、またはコンテンツのヒントをもたないデータ）を暗号化するために使用される鍵は、力ずく攻撃を使用して特定または発見できない。なぜなら、盗聴者は、正しい候補鍵が見つかった時にでもそれを判断できないからである。しかし、発見可能、即ち、「ホワイト」データ（即ち、既知であるか、後で開示されるかもしれないか、認識可能であるか、または既知もしくは容易に推測できるフォーマットを有するデータ）を暗号化するために使用される鍵は、力ずく攻撃を使用して特定することができる（理論的には）。ホワイト・データとブラック・データが一緒に、または同じ暗号化鍵を用いて暗号化される場合、ホワイト・データを使用する力ずく攻撃により特定される鍵はまた、ブラック・データを暗号化するために使用される鍵でもあるので、従って、ブラック・データは発見され得る。
【００８４】
暗号化データのセキュリティを高め、力ずく攻撃の有効性を低下させるため、本発明の幾つかの実施形態は、変化ＩＤに含まれる秘密鍵などのブラック・データのセキュリティを保護する暗号化戦略を提供する。
【００８５】
図５は、暗号化されるデータに含まれ得るデータのタイプを示している。図５に示されるように、暗号化されて特定の受信機へ送信されるデータ５９は、データのタイプまたはクラスに分類される。データの第１のクラスは、ブラック・データ・クラス６０を含む。ブラック・データ・クラス６０は、秘密に保持され、権限付与されたエンティティによりのみ知られるデータを含む。例えば、ブラック・データ・クラス６０は、変化ＩＤの秘密鍵および／またはシステム２０に含まれるエンティティの信用証明書を含むことができ、その両方とも、ランダムであり、認証デバイス２８ならびに信用証明書および秘密鍵の保有者によりのみ知られている。
【００８６】
図５に示されるように、データの第２のクラスは、ホワイト・データ・クラス６２を含む。ホワイト・データ・クラス６２は、公けに知られているか、認識可能であるか（例えば、人が読める）、または既知もしくは容易に推測できるフォーマットを有するデータを含む。例えば、ホワイト・データ・クラス６２は、エンティティ間で送信されるコンテンツ（例えば、人が読めるメッセージ、映画など）および認証デバイス２８により提供される変化ＩＤの番号（例えば、ＮＡ、ＮＢ、ＮＣ、ＮＤ）などのような、標準化されたヘッダや、既知のパターンや、他の公けに使用可能なフォーマットなどのような、容易に弁別される特徴を有するデータを含む。
【００８７】
ホワイト・データ・クラス６２はまた、間接ホワイト・データ、即ち、変化ＩＤの秘密鍵（例えば、ＫＡ、ＫＢ、ＫＣ、ＫＤ）などのような、ホワイト・データを含むメッセージを暗号化するために使用される鍵も含む。例えば、セッション鍵交換プロトコルに関して上述されたように、アリスは、アリスの秘密鍵ＫＡを用いて暗号化されたボブの公けに知られた識別子Ｂｉｄを含むメッセージをボブに送る。
【００８８】
Ａ→Ｂ：ＮＡＥ（ＫＡ，ＡｃｒｅｄＢｉｄ）
【００８９】
ボブの識別子Ｂｉｄは公けに知られており、従って、ホワイト・データであるので、アリスの秘密鍵ＫＡは、公けに知られたデータを暗号化するので、間接ホワイト・データと見なすことができる。
【００９０】
図６および図７は、本発明の一実施形態による、ブラック・データのセキュリティを保護するための暗号化戦略を示している。ブラック・データのセキュリティを保護するため、異なるタイプのデータを暗号化するために、別個の鍵が使用できる（これ以降、「個別暗号化プロトコル（ｓｅｐａｒａｔｅ  ｅｎｃｒｙｐｔｉｏｎ  ｐｒｏｔｏｃｏｌ）」と呼ばれる）。例えば、１または複数の鍵（おそらく１または複数の変化ＩＤの一部である鍵）を、ブラック・データを暗号化するために使用でき、また、１または複数の異なる鍵（おそらく１または複数の異なる変化ＩＤの一部である鍵）を、ホワイト・データを暗号化するために使用できる。以下で説明されるように、ブラック・データおよびホワイト・データを暗号化するために同じ鍵は使用されないので、ブラック・データのセキュリティは高められる。
【００９１】
図６に示されるように、ブラック・データ・クラス６０に含まれるデータは、ブラック・データを暗号化するために専ら使用される１または複数の鍵７０（これ以降、この例においては「ブラック・データ鍵７０」と呼ばれる）を用いて暗号化することができる。オプションとして、ホワイト・データ・クラス６２に含まれるデータは、ホワイト・データを暗号化するために専ら使用される１または複数の鍵７２（これ以降、この例においては「ホワイト・データ鍵７２」と呼ばれる）を用いて暗号化することができる。ブラック・データ鍵７０は、ホワイト・データ鍵７２から決定し得ない（または無関係である）ことを理解されたい。データ５９は、データ５９の部分が属するデータ・クラスに従って、データの連続ブロックに分割および配置される必要がないことも理解されたい。図７に示されるように、ブラック・データ・クラス６０およびホワイト・データ・クラス６２に含まれるデータは、一緒に混合される多数の部分に分割することができる。
【００９２】
ブラック・データをホワイト・データから分離し、ホワイト・データを暗号化するために使用される鍵７２とは異なる鍵７０を用いてブラック・データを暗号化することにより、ホワイト・データを暗号化するために使用されるホワイト・データ鍵７２が力ずく攻撃を使用して決定されたとしても、決定されたホワイト・データ鍵７２は、ブラック・データを取得するためには使用することができない。
【００９３】
ランダムに生成された秘密コンテンツの交換
以下の例では、反復カウントを表すために下付文字ｉが使用され、ここで、ｉは、０または別の所定値に初期設定され、それぞれの交換後にプロトコル交換に関与する両方の関与者により、および／または異なる所定のスケジュールでインクリメントされる。従って、特定の項目の現在の値は、下付文字ｉを用いて表され、項目の新規のまたは変化した値は、これまでの例において使用された上付文字「’」を用いる代わりに、下付文字「ｉ＋１」を用いて表される。
【００９４】
２つのエンティティがランダムに生成された秘密データを交換できるように、個別暗号化プロトコルを使用できる。例えば、第１のエンティティＡが、ランダムに生成された秘密コンテンツＳｉ（即ち、ブラック・データ）を第２のエンティティＢと交換することを望んでいると仮定する。エンティティＡおよびＢは、以前に確立されたランダム生成の秘密暗号化鍵Ｋｉを共有する。エンティティＡおよびＢが、当事者どうしで直に鍵Ｋｉに合意することや、一方のエンティティが、セキュアな通信手段を介して秘密鍵Ｋｉを他方のエンティティへ送ることや、秘密鍵Ｋｉが、エンティティにより操作されるソフトウェアやハードウェア内に事前保存されることなどができる。
【００９５】
秘密暗号化鍵Ｋｉを確立した後、エンティティＡは、秘密データＳｉおよび新しい秘密のランダムな暗号化鍵Ｋｉ＋１を、暗号化鍵Ｋｉを用いて暗号化する。アリスは、新しい秘密鍵Ｋｉ＋１をランダムに生成する。エンティティＡおよびＢは、将来のデータ交換において秘密データを暗号化するために、新しい秘密鍵Ｋｉ＋１を使用する。
【００９６】
Ａ→Ｂ：Ｅ（Ｋｉ，Ｋｉ＋１Ｓｉ）
【００９７】
幾つかの変形では、エンティティＡは、暗号化鍵Ｋｉと新しい暗号化鍵Ｋｉ＋１とのＸＯＲを生成することができる。
【００９８】
ＸＯＲ（Ｋｉ，Ｋｉ＋１）
【００９９】
ＸＯＲ演算を実行した後、エンティティＡは、ＸＯＲ演算の結果として生じたビット列および秘密データＳｉを暗号化鍵Ｋｉを用いて暗号化し、その結果としてできたものをエンティティＢへ送る。
【０１００】
Ａ→Ｂ：Ｅ（Ｋｉ，ＸＯＲ（Ｋｉ，Ｋｉ＋１）Ｓｉ）
【０１０１】
暗号化鍵Ｋｉについての知識を使用して、エンティティＢは、新しい暗号化鍵Ｋｉ＋１を決定することができる。
【０１０２】
双方の場合とも、エンティティＡからのメッセージは、２つの部分、即ち、鍵変化部分（即ち、Ｋｉ＋１またはＸＯＲ（Ｋｉ，Ｋｉ＋１））と、秘密コンテンツ部分（即ち、Ｓｉ）とを含む。また、双方の場合において、鍵変化部分は、エンティティＡによりランダムに生成され、以降の鍵変化は、以前の鍵の値からは独立している。
【０１０３】
秘密鍵Ｋｉの鍵空間と暗号化関数Ｅの平文空間とが同形であると仮定すると、秘密鍵Ｋｉのあらゆる候補値は、完全にあり得る（ｃｏｍｐｌｅｔｅｌｙ  ｐｏｓｓｉｂｌｅ）候補平文を生成し、それぞれの候補平文は、完全にあり得る次の鍵値を計算するのに十分な情報を含む。従って、盗聴者は、何れのあり得る初期鍵値も除外することができず、プロトコルは、暗号文単独の力ずく攻撃を実質的に受けつけない。
【０１０４】
認証手段との通信
個別暗号化プロトコルはまた、セッション鍵を要求するためや、ライセンスを要求するためなどのために認証デバイス２８と通信するために、図１に示されるようなシステム２０のエンティティにより使用されることもできる。例えば、第１のデバイス２２として表されているアリスが、認証デバイス２８として表されているトレントへ要求を送ることを望むものとする。トレントは先に、ランダムに生成された初期の秘密暗号化鍵Ｋｉおよび対応する初期の公開識別子Ｎｉ（例えば、トレントにより割り当てられた変化ＩＤの一部とすることができる）を、アリスに割り当てている。
【０１０５】
これの関与者はまた、ブラック要求パラメータ・セットＢＲＥＱと、ホワイト要求パラメータ・セットＷＲＥＱと、ブラック応答パラメータ・セットＢＲＳＰと、ホワイト応答パラメータ・セットＷＲＳＰとから成る要求として一般化形式で示される要求と応答プロトコルとに合意する。幾つかの実施では、パラメータ・セットの幾つかは、空とすることができる。ホワイト要求パラメータ・セットＷＲＥＱおよびホワイト応答パラメータ・セットＷＲＳＰは共に、公けに知られた（即ち、ホワイトすなわち発見可能データ）要求および応答パラメータをそれぞれ含む。ブラック要求パラメータ・セットＢＲＥＱは、ホワイト要求パラメータ・セットＷＲＥＱから導出不可能である。
【０１０６】
本発明の幾つかの実施形態では、ホワイト要求パラメータ・セットＷＲＥＱは、有効な要求を形成するために、ブラック要求パラメータ・セットＢＲＥＱとペアにされる。ブラック要求パラメータ・セットＢＲＥＱは、ホワイト要求パラメータ・セットＷＲＥＱから決定または導出され得ないので、盗聴者は、ブラック要求パラメータ・セットＢＲＥＱを提供することなくアリスを装ってトレントに要求を行うことはできない。しかし、言及されたように、ブラック・コンテンツは発見不可能である。従って、ホワイト要求パラメータ・セットＷＲＥＱについての知識だけでは、盗聴者が要求を偽造することは可能ではない。同様に、ホワイト応答パラメータ・セットＷＲＳＰは、ブラック応答パラメータ・セットＢＲＳＰとペアにされ、ホワイト応答パラメータ・セットＷＲＳＰを取得した盗聴者は、対応するブラック応答パラメータ・セットＢＲＳＰを知ることなくトレントを装ってアリスに応答を送ることはできない。
【０１０７】
要求を送るため、アリスは、ブラック要求パラメータ・セットＢＲＥＱを、暗号化鍵Ｋｉを用いて暗号化する。トレントへの要求の送信者として彼女自らを識別させるために、アリスは、公開識別子Ｎｉを、暗号化の結果としてできたものに追加する。幾つかの変形では、アリスはまた、対応するホワイト要求パラメータ・セットＷＲＥＱも暗号化の結果としてできたものに追加する。アリスは、結果としてできたメッセージをトレントへ送る。
【０１０８】
Ａ→Ｔ：ＮｉＷＲＥＱＥ（Ｋｉ，ＢＲＥＱ）
【０１０９】
幾つかの変形では、トレントは、アリスがホワイト要求パラメータ・セットＷＲＥＱなどのホワイト・データを暗号化するために使用し得る個別暗号化鍵をアリスに割り当てることができる。暗号化されたホワイト・データは、暗号化されたブラック応答パラメータ・セットＢＲＥＱに追加される。しかし、ランダムに生成された秘密のブラック要求パラメータ・セットＢＲＥＱおよび暗号化鍵Ｋｉの特定に暗号文単独の力ずく攻撃が成功することを阻止するために、ブラック要求パラメータ・セットＢＲＥＱまたは他の任意のブラック・データと同じ暗号化パッケージまたはエンベロープ内において、ホワイト要求パラメータ・セットＷＲＥＱおよび他の任意のホワイト・データが暗号化されることはできない。
【０１１０】
トレントは、アリスからメッセージを受け取り、メッセージに追加された識別子Ｎｉに基づいて、アリスを送信者として識別する。トレントは、アリスがメッセージを送ったことを決定した後、メッセージを暗号解除し、ブラック要求パラメータ・セットＢＲＥＱを取得するために、暗号化鍵Ｋｉを使用する。トレントは、ブラック要求パラメータ・セットＢＲＥＱが有効であることを検証する。アリスがホワイト要求パラメータ・セットＷＲＥＱも提供した場合、トレントはまた、ホワイト要求パラメータ・セットＷＲＥＱが有効であること（例えば、ホワイト要求パラメータ・セットＷＲＥＱとブラック要求パラメータ・セットＢＲＥＱの間に適切な関連または一致が存在すること）も検証する。ホワイト要求パラメータ・セットＷＲＥＱが無効である場合、トレントは要求を拒否する。不一致のパラメータ・セットはまた、要求メッセージが改ざんされたこと（例えば、中間の者攻撃（ｍａｎ−ｉｎ−ｔｈｅ  ｍｉｄｄｌｅ  ａｔｔａｃｋ）による）や、詐称者により送られたかもしれないことも、示すことができる。
【０１１１】
アリスへ応答を送るため、トレントは、ブラック応答パラメータ・セットＢＲＳＰおよび新しいランダム生成された秘密暗号化鍵Ｋｉ＋１を、現在の暗号化鍵Ｋｉを用いて暗号化する。幾つかの変形では、上述のように、トレントは、アリスへの応答内の新しい暗号化鍵Ｋｉ＋１を、現在の暗号化鍵Ｋｉと新しい暗号化鍵Ｋｉ＋１とに対してのＸＯＲ演算を実行した結果と置き換える。トレントはまた、アリス用の新しい識別子Ｎｉ＋１も生成し、新しい識別子Ｎｉ＋１を暗号化の結果としてできたものに追加する。幾つかの変形では、トレントはまた、対応するホワイト応答パラメータ・セットＷＲＳＰも暗号化の結果としてできたものに追加する。上述のように、ホワイト応答パラメータ・セットＷＲＳＰを平文として追加する代わりに、トレントは、ホワイト応答パラメータ・セットＷＲＳＰを、トレントおよびアリスにより知られたホワイト・データ鍵を用いて暗号化することができる。加えて、トレントは、アリスに新規または変化させたホワイト・データ鍵を提供するために、ホワイト・データ鍵を使用することができる。トレントは、結果としてできたメッセージをアリスへ送る。
【０１１２】
Ｔ→Ａ：Ｎｉ＋１ＷＲＳＰＥ（Ｋｉ，ＸＯＲ（Ｋｉ，Ｋｉ＋１）ＢＲＳＰ）
【０１１３】
トレントはまた、現在の暗号化鍵Ｋｉおよび現在の識別子Ｎｉを使用済としてマーク付けし、その鍵および識別子が長い間再使用されないことを保証する。幾つかの実施形態では、トレントは、鍵または識別子が発行された時間と、後にそれが要求において使用された時間とを追跡する。トレントは、この情報を使用して、所定の時間が経過するまで鍵または識別子が再使用されないことを確実にすること、および／または鍵または識別子が不適切に使用された（例えば、鍵または識別子の正当な所有者を装ったエンティティによる）時にそれを追跡することができる。
【０１１４】
アリスは、トレントからのメッセージを暗号解除し、新しい暗号化鍵Ｋｉ＋１およびブラック応答パラメータ・セットＢＲＳＰを取得する。アリスは、ブラック応答パラメータ・セットＢＲＳＰが有効であることを検証する。ブラック応答パラメータ・セットＢＲＳＰが無効である場合、アリスは、応答がトレントにより送られたものでないことを識別することができ、その応答を無視することができる。トレントからのメッセージがホワイト応答パラメータ・セットＷＲＳＰも含む場合、アリスは、ホワイト応答パラメータ・セットＷＲＳＰが有効であることも検証する。ホワイト応答パラメータ・セットＷＲＳＰが無効である場合、アリスは、応答がトレントにより送られたものでないことを識別することができ、その応答を無視することができる。
【０１１５】
メッセージ認証を備えるブラック・プロトコル
上述のプロトコルは、ミューテーティング（変化）鍵または識別子（変化ＩＤの一部とすることができる）を使用してのブラック・データの個別暗号化を導入した。上述のプロトコルは、暗号文単独の力ずく攻撃からブラック・データを保護するが、メッセージ認証や改ざん防止機構については制限されたものを提供するにすぎない。その結果、攻撃者がメッセージに不正データを注入し得ることがある。
【０１１６】
メッセージ認証および改ざん防止機構を提供する１つの方法は、トレントがアリスに初期の大型秘密鍵Ｋｉを割り当てることを含む。トレントおよびアリスはまた、独立に反復カウントｉを保持する。アリスおよびトレントは個々に、それぞれの交換の後および／または別の所定のスケジュールで、反復カウントｉを更新またはインクリメントすることができる。
【０１１７】
アリスは、秘密データ（即ち、ブラック・データ）Ｓｉをトレントと交換するために、大型秘密鍵Ｋｉおよび反復カウントｉを使用する。例えば、トレントは、以下のメッセージ・プロトコルを使用して、秘密データＳｉをアリスへ送ることができる。
【０１１８】
Ｔ→Ａ：Ｅ（ＫＦＸ（ｉ，Ｋｉ），ＳｉＭｉＨ（ＩＦＸ（ｉ，Ｋｉ），ＳｉＭｉＦＥＸ（ｉ，Ｋｉ）））
【０１１９】
上記のメッセージ・プロトコルにおいて、トレントは、鍵関数ＫＦＸにより生成された暗号化鍵を用いて、アリスへのメッセージを暗号化する。鍵関数ＫＦＸは、反復カウントｉおよび大型秘密鍵Ｋｉを使用して、対称暗号化鍵値を生成する。
【０１２０】
トレントからアリスへのメッセージの内容は、秘密データＳｉと、変化値Ｍｉと、ミューテーティング（変化）・セキュア・ハッシュ関数Ｈの結果とを含む。変化値Ｍｉは、反復カウントｉに基づいてランダムに生成された番号であり、メッセージを一意に識別する。
【０１２１】
セキュア・ハッシュ関数Ｈは、アリスからボブへのメッセージの内容のセキュアなハッシュを生成する。上記の例では、セキュア・ハッシュ関数Ｈは、秘密データＳｉと、変化値Ｍｉと、大型秘密鍵Ｋｉまたはその一部のセキュア・ハッシュを生成する。ハッシュにおいて大型秘密鍵Ｋｉの一部のみを使用するために、抽出関数ＦＥＸを使用できる。抽出関数ＦＥＸは、反復カウントｉに基づいて、大型秘密鍵Ｋｉの一部を抽出し、それを返す。幾つかの変形では、抽出関数ＦＥＸは、大型秘密鍵Ｋｉの全体を返す。
【０１２２】
セキュア・ハッシュ関数Ｈは、初期設定ベクトルＩなどの初期設定値を用いて初期設定される。初期設定ベクトルＩは、初期設定ベクトル関数ＩＦＸを用いて生成される。初期設定ベクトル関数ＩＦＸは、反復カウントｉおよび大型秘密鍵Ｋｉに基づいて、初期設定ベクトルＩを生成する。
【０１２３】
アリスは、反復カウントｉ、大型秘密鍵Ｋｉ、およびメッセージで使用された関数を知っているので、トレントからのメッセージを暗号解除することができる。メッセージの暗号解除は、アリスが、秘密データＳｉ、変化値Ｍｉ、およびハッシュＨ（ＩＦＸ（ｉ，Ｋｉ），ＳｉＭｉＦＥＸ（ｉ，Ｋｉ））を取得することを可能にする。トレントからのメッセージが送信中に改ざんされていないことを確実にするため、アリスは、トレントがメッセージに含めたハッシュのアリス自身のバージョンを生成することにより、トレントからのメッセージを認証する。ハッシュのアリス自身のバージョンを生成するために、アリスは、トレントからのメッセージから得られた秘密データＳｉおよび変化値Ｍｉと大型秘密鍵Ｋｉとのハッシュを生成する。アリスは、トレントと同じセキュア・ハッシュ関数Ｈを使用する。幾つかの変形では、アリスはまた、トレントが行ったように、ハッシュ関数Ｈ用の初期設定ベクトルＩＦＸを生成する。加えて、アリスは、ハッシュ内で使用する大型秘密鍵Ｋｉの一部を抽出するために、トレントが使用したのと同じ抽出関数ＦＥＸを使用することができる。
【０１２４】
アリス自身のバージョンのハッシュを生成した後、アリスは、アリスのバージョンのハッシュを、トレントからのメッセージに含まれるハッシュと比較する。ハッシュが一致した、または同じである場合、アリスは、トレントからのメッセージは改ざんされていないと推定することができる。ハッシュが一致しない場合、メッセージは改ざんされた可能性が高く、アリスは、そのメッセージを無視することができる。
【０１２５】
幾つかの実施形態では、アリスおよびトレントは各々、以降のメッセージで大型秘密鍵Ｋｉを使用する前に、別々に大型秘密鍵Ｋｉを変化させる。これを達成するため、アリスおよびトレントは、変化関数ＦＭを使用して、大型秘密鍵Ｋｉを変化させる。変化関数ＦＭは、反復カウントｉ、直近のメッセージで使用された変化値Ｍｉ、および／または現在の大型秘密鍵Ｋｉに基づいて、新しいまたは変化された大型秘密鍵Ｋｉ＋１を生成する。例えば、図８に示されるように、変化関数ＦＭは、関数「Ｍｉ  ＸＯＲ  Ｋｉ」を実行することができ、ここで、ＭｉおよびＫｉは、実質的に同じ長さである。
【０１２６】
Ｋｉ＋１＝ＦＭ（ｉ，Ｍｉ，Ｋｉ）＝Ｍｉ  ＸＯＲ  Ｋｉ
【０１２７】
上記のメッセージ・プロトコルを使用した場合、力ずく攻撃を使用して秘密データＳｉまたは大型秘密鍵Ｋｉを取得することを望む攻撃者は、メッセージ・プロトコルで使用されるアルゴリズムのすべてを最初に学ばなければならない。攻撃者はまた、アリスとトレントの間で交換されるメッセージのすべてを取得しなければならない。次に、攻撃者は、候補鍵Ｃｉを推定し、その候補鍵Ｃｉを使用して、アリスとトレントの間で交換された最初のメッセージ（即ち、反復ゼロ）を暗号解除しなければならない。候補鍵Ｃｉを用いた最初のメッセージの暗号解除は、候補テキストＸｉを明らかにする。攻撃者は、メッセージ・プロトコルのアルゴリズムを知っているので、候補テキストＸｉを、候補秘密データＳｉＸと、候補変化値ＭｉＸと、候補セキュア・ハッシュ関数結果ＨｉＸとに分割することができる。候補秘密データＳｉＸと、候補変化値ＭｉＸと、候補鍵Ｃｉとを使用して、攻撃者は、自らのバージョンのセキュア・ハッシュ関数結果ＨｉＴ（例えば、反復ｉについてのセキュア・ハッシュ関数Ｈのテスト結果）を生成する。セキュア・ハッシュ関数ＨｉＴのテスト結果が候補セキュア・ハッシュ関数結果ＨｉＸと一致する場合、攻撃者は、許容可能または潜在的候補鍵として候補鍵Ｃｉをマーク付けすることができる。セキュア・ハッシュ関数ＨｉＴのテスト結果が候補セキュア・ハッシュ関数結果ＨｉＸと一致しない場合、攻撃者は、潜在的な正しい鍵としては候補鍵Ｃｉを除外することができる。
【０１２８】
それぞれの許容可能または潜在的な候補鍵Ｃｉに対して、攻撃者は、変化関数ＦＭを適用し、アリスとトレントの間で交換される２番目または次のメッセージのための候補鍵Ｃｉ＋１を生成する。攻撃者は、その後、変化させた許容可能な候補鍵Ｃｉ＋１を使用して、最初のメッセージについて上述のような暗号化およびテストのプロセスを実行する。
【０１２９】
ランダムに生成された入力バッファの大きい組が与えられた場合、理想的なセキュア・ハッシュは、不偏かつ一様な分布を示す０から（２ｈ−１）の間に入る出力値の組を生成し、ここで、ｈは、ハッシュ関数により返されるビットの数である。セキュア・ハッシュ関数Ｈの周期性のため、アリスとトレントの間で交換される各メッセージは、潜在的な鍵空間（可能な鍵のリスト）を２ｈ分の１に縮小し、ここで、ｈは、セキュア・ハッシュ関数Ｈにより返されるビットの数である。秘密鍵の長さがｍビットである場合、攻撃者は、（ｍ／ｈ）個のメッセージが交換された後に初期の秘密鍵（例えば、秘密鍵Ｋｉ）を決定することが可能となり得る。
【０１３０】
力ずく攻撃の成功の可能性を低下させるため、大型秘密鍵Ｋｉは、（ｍ／ｈ）番目のメッセージが交換される前に、リセットされることができる。加えて、（ｍ／ｈ）番目のメッセージが交換されるよりｊメッセージ前に、大型秘密鍵Ｋｉがリセットされた場合、力ずく攻撃は、２ｊｈ個の疑似的（ｓｐｕｒｉｏｕｓ）な大型鍵値をまだ残しており、正しいまたは真の大型秘密鍵値は弁別不可能である。
【０１３１】
本発明の１つの可能な実施形態は、１６０ビットのハッシュ値を返すセキュア・ハッシュ関数Ｈと、６４キロバイトを含む大型秘密鍵Ｋｉとを含むことができる。これらのパラメータを使用する場合、上述のようなメッセージ・プロトコルは、力ずく攻撃が有効となるリスクを制限しながら、３０００個を超えるメッセージを交換することを可能にする。加えて、抽出関数ＦＥＸおよび変化関数ＦＭの選択は、大型秘密鍵Ｋｉの移動ウィンドウ部分がメッセージ・ハッシュで使用されるようにし、また、大型秘密鍵Ｋｉの変化が比較的狭いストリップ（ｓｔｒｉｐ）で生じるようにするが、大型秘密鍵Ｋｉの次の反復になおも影響を与えるような方法で、行うとができる。これは、プロトコルが、ほぼ同じレベルのセキュリティを維持しながらも、比較的低い計算オーバヘッドを有することを可能にする。
【０１３２】
上記で述べ、また図８に示されるように、一実施形態では、抽出関数ＦＥＸ（ｉ，Ｋｉ）は、大型秘密鍵Ｋｉの全体を返し、変化関数ＦＭ（ｉ，Ｍｉ，Ｋｉ）は、「Ｍｉ  ＸＯＲ  Ｋｉ」を返すものであり、ここで、ＭｉおよびＫｉは、等しい長さである。これらの関数は、機能するシステムを生成するが、ハッシュを計算する前に大型秘密鍵Ｋｉの全体がメッセージの末尾に追加されるので、セキュア・ハッシュ関数について著しい計算オーバヘッドを導入し得る。これらの関数はかなりのプロトコル・オーバヘッドも導入し得る。なぜなら、それぞれの要求に応答して送信される変化値は、大型秘密鍵Ｋｉと同じほど長いからである。
【０１３３】
図９に示されるように、上記のオーバヘッド問題に対処するため、抽出関数ＦＥＸは、大型秘密鍵Ｋｉの先頭からのオフセットが（ｉ×ｈ）ビットの所で、大型秘密鍵Ｋｉのｐビットを選択するように変更することができ、ここで、ｈは、セキュア・ハッシュ関数Ｈにより返されるビットの数である。従って、大型秘密鍵の使用される部分は、（（ｉ×ｈ）＋ｐ）ビットであり、疑似的な大型鍵の集まり（ｏｃｅａｎ）は、２ｐ個の値を含む。このバージョンの抽出関数ＦＥＸの使用は、セキュア・ハッシュ関数の計算において増大する計算オーバヘッドをもたらすことなく、大型秘密鍵値の使用を可能にする。
【０１３４】
同様に、やはり図９に示されるように、変化関数ＦＭは、ｐビットのランダムな変化値を受け取り、その変化値を、ＸＯＲを介して、大型秘密鍵Ｋｉのオフセットが（（ｉ＋１）×ｈ）ビットの所で大型秘密鍵Ｋｉに適用することができる。このようにして、変化に関連するプロトコル・オーバヘッドは、ｐビットに縮小され、初期の大型秘密鍵Ｋｉのサイズとは無関係である。加えて、プロトコルの次の反復において使用されるビットのすべては変化させられ、それが、２つの鍵値の間の数学的相関を取り除く。
【０１３５】
図１０に示されるように、抽出関数ＦＥＸはまた、大型秘密鍵Ｋｉの先頭からのオフセットが（ｉ×ｐ）ビットの所で大型秘密鍵Ｋｉのｐビットを選択するように変更することができる。従って、抽出関数ＦＥＸが使用されるたびに、大型秘密鍵Ｋｉのまったく新しい部分が選択される。
【０１３６】
同様に、また、図１０に示されるように、変化関数ＦＭは、ｐビットのランダムな変化値を受け取り、その変化値を、ＸＯＲを介して、大型秘密鍵Ｋｉのオフセットが（（ｉ＋１）×ｐ）ビットの所で大型秘密鍵Ｋｉに適用することができる。
【０１３７】
この「ストリップ内変更（ｕｐｄａｔｉｎｇ  ｉｎ  ｓｔｒｉｐｅｓ）」方法を使用することで、初期の大型秘密鍵Ｋｉは、かなり大きくすることができ、システムは、公開識別子および関連する鍵のリセットが必要とされるまでに、非常に多数のメッセージ交換をサポートすることができる。
【０１３８】
ブラック・プロトコル要求および応答
図１１は、エンティティ（例えば、第１のデバイス２２および第２のデバイス２４）と認証手段（デバイス２８など）の間で要求および応答を交換するために、ブラック・プロトコルがどのように使用できるかを示している。プロトコルの実施は、変化ＩＤの定期的変化を要求するため、暗号化鍵を要求するため、暗号解除鍵を要求するため、認証トークン（例えば、信用証明書）を取得するため、および認証トークンの認証を要求するために、エンティティにより使用することができる。同様に、認証デバイス２８は、各タイプの要求に対してエンティティに応答を提供するために、ブラック・プロトコルを使用することができる。図８に示されるように、エンティティは、認証手段からの応答を使用して、他のエンティティと通信することができる。例えば、エンティティは、認証手段に暗号化鍵を要求し、認証手段から暗号化鍵を受け取り、その暗号化鍵を使用して別のエンティティ宛てのメッセージを暗号化し、暗号化メッセージをその別のエンティティへ送ることができる。また、図８に示されるように、暗号化メッセージを受け取ったエンティティは、認証手段に暗号解除鍵を要求し、認証手段から暗号解除鍵を受け取り、その暗号解除鍵を使用して暗号化メッセージを暗号解除することができる。
【０１３９】
一実施形態では、トレント（認証デバイス２８）が、初期の公開識別子Ｎｉ、初期の秘密鍵ｋｉ、および初期の大型秘密鍵Ｋｉを、アリス（第１のデバイス２２）に割り当てる。公開識別子Ｎｉ、秘密鍵ｋｉ、および大型秘密鍵Ｋｉは、大型変化ＩＤと呼ぶことができる。トレントおよびアリスはまた、しばしば値ゼロに初期設定される反復カウントｉを独立して保持する。アリスおよびトレントは、それぞれの要求の後、それぞれの応答の後、または別の所定のスケジュールで、反復カウントｉを独立に更新またはインクリメントすることができる。
【０１４０】
アリスは、公開識別子Ｎｉを使用して、自らをメッセージの発信者として識別させる。アリスは、ホワイト・データを暗号化するために、秘密鍵ｋｉ（これ以降、アリスのホワイト・データ鍵ｋｉと呼ばれる）を使用し、またアリスは、ブラック・データの暗号化を含む様々な目的で、大型秘密鍵Ｋｉを使用する。アリスはまた、ハッシュ関数Ｈ用の初期設定ベクトルを生成するために、初期設定関数ＩＦＸへの入力として、大型秘密鍵Ｋｉを使用することもできる。幾つかの実施形態では、トレントは、アリスにより要求されると、またはトレントにより施行されると、それぞれの使用の後にまたは定期的に、新しいまたは変化された公開識別子Ｎｉおよびホワイト・データ鍵ｋｉをアリスに割り当て、トレントおよびアリスは、アリスにより要求されると、またはトレントにより施行されると、それぞれのトランザクションの後にまたは定期的に、大型秘密鍵Ｋｉをそれぞれに変化させる。
【０１４１】
大型変化ＩＤを使用して、アリスは、要求パラメータＴＲＥＱをアリスのホワイト・データ鍵ｋｉを用いて暗号化することにより、トレント宛ての要求を生成する。要求パラメータＴＲＥＱは、特定の要求に応答するためにトレントにより必要とされる任意の情報、例えば、アリスが暗号化鍵を要求しているコンテンツのハッシュなど、を含む。要求パラメータＴＲＥＱは、ホワイト・データと見なされる。アリスは、自らを要求の送信者として識別させるために、アリスの公開識別子Ｎｉを暗号化の結果としてできたものに追加する。
【０１４２】
ＮｉＥ（ｋｉ，ＴＲＥＱ）
【０１４３】
要求に対するメッセージ認証を提供するため、アリスは、セキュア・ハッシュ関数Ｈを使用して、アリスの公開識別子Ｎｉ、要求パラメータＴＲＥＱおよび大型秘密鍵Ｋｉのハッシュを生成する。上述のように、幾つかの変形では、アリスは、ハッシュにおいて大型秘密鍵Ｋｉの一部のみを使用し、反復カウントｉおよび／またはセキュア・ハッシュ関数Ｈにより返されるビットの数に基づいて、大型秘密鍵Ｋｉの特定の部分を抽出するために、抽出関数ＦＥＸを使用する。加えて、アリスは、反復カウントｉおよび大型秘密鍵Ｋｉに基づいてハッシュ関数Ｈ用の初期設定ベクトルを生成するために初期設定関数ＩＦＸを使用することができる。
【０１４４】
Ｈ（ＩＦＸ（ｉ，Ｋｉ），ＮｉＴＲＥＱＦＥＸ（ｉ，Ｋｉ））
【０１４５】
アリスは、大型秘密鍵Ｋｉまたはその一部を用いてハッシュを暗号化する。例えば、上述のように、アリスは、反復カウントｉに基づいて鍵関数ＫＦＸにより決定される大型秘密鍵Ｋｉの一部を用いて、ハッシュを暗号化することができる。
【０１４６】
Ｅ（ＫＦＸ（ｉ，Ｋｉ），Ｈ（ＩＦＸ（ｉ，Ｋｉ），ＮｉＴＲＥＱＦＥＸ（ｉ，Ｋｉ）））
【０１４７】
アリスは、公開識別子Ｎｉが追加された暗号化された要求パラメータに、暗号化ハッシュを追加し、その結果としてできたものをトレントへ送る。
【０１４８】
Ｔ→Ａ：ＮｉＥ（ｋｉ，ＴＲＥＱ）Ｅ（ＫＦＸ（ｉ，Ｋｉ），Ｈ（ＩＦＸ（ｉ，Ｋｉ），ＮｉＴＲＥＱＦＥＸ（ｉ，Ｋｉ）））
【０１４９】
アリスからの要求を受け取ると、トレントは、アリスがその要求を送ったことを識別子Ｎｉに基づいて判定し、ホワイト・データ鍵ｋｉおよび大型秘密鍵Ｋｉを使用して、要求の一部を暗号解除する。トレントは、要求から要求パラメータＴＲＥＱおよびハッシュを取得した後、要求から取得した要求パラメータに基づいて、トレント自身のバージョンのハッシュを生成する。要求を認証するため、トレントは、自身のバージョンのハッシュを要求から取得されたハッシュと比較する。ハッシュが一致する場合、トレントは、アリスからトレントへの要求の送信中に、ホワイト・データが改ざんされなかったことを確認することができる。
【０１５０】
アリス宛ての応答を生成するために、トレントは、アリス用の新しいまたは変化された公開識別子Ｎｉ＋１および新しいホワイト・データ鍵ｋｉ＋１を生成する。トレントは、新しいホワイト・データ鍵ｋｉ＋１および応答パラメータＴＲＳＰを、アリスの現在のホワイト・データ鍵ｋｉを用いて暗号化する。トレントは、新しい公開識別子Ｎｉ＋１を暗号化の結果としてできたものに追加する。
【０１５１】
Ｎｉ＋１Ｅ（ｋｉ，ｋｉ＋１ＴＲＳＰ）
【０１５２】
応答に対するメッセージ認証を提供するために、トレントは、セキュア・ハッシュ関数Ｈを使用して、アリスの新しい公開識別子Ｎｉ＋１、アリスの新しいホワイト・データ鍵ｋｉ＋１、応答パラメータＴＲＳＰ、トレントにより生成されたランダム変化値Ｍｉ、およびアリスの大型秘密鍵Ｋｉのハッシュを生成する。上述のように、幾つかの変形では、トレントは、ハッシュにおいて大型秘密鍵Ｋｉの一部のみを使用し、反復カウントｉおよび／またはセキュア・ハッシュ関数Ｈにより返されるビットの数に基づいて、大型秘密鍵Ｋｉの特定の部分を抽出するために、抽出関数ＦＥＸを使用する。加えて、トレントは、反復カウントｉおよび大型秘密鍵Ｋｉに基づいて、ハッシュ関数Ｈ用の初期設定ベクトルを生成するために、初期設定関数ＩＦＸを使用することができる。
【０１５３】
Ｈ（ＩＦＸ（ｉ，Ｋｉ），Ｎｉ＋１ｋｉ＋１ＴＲＳＰＭｉＦＥＸ（ｉ，Ｋｉ））
【０１５４】
トレントは、アリスの大型秘密鍵Ｋｉまたはその一部を用いて、ハッシュおよびハッシュに含まれる変化値Ｍｉを暗号化する。例えば、上述のように、トレントは、反復カウントｉに基づいた鍵関数ＫＦＸにより決定される大型秘密鍵Ｋｉの一部を用いて、ハッシュを暗号化することができる。
【０１５５】
Ｅ（ＫＦＸ（ｉ，Ｋｉ），ＭＨ（ＩＦＸ（ｉ，Ｋｉ），Ｎｉ＋１ｋｉ＋１ＴＲＳＰＭｉＦＥＸ（ｉ，Ｋｉ）））
【０１５６】
トレントは、新しい公開識別子Ｎｉ＋１が追加された暗号化された応答パラメータに、暗号化ハッシュを追加し、その結果としてできたものをアリスへ送る。
【０１５７】
Ａ→Ｔ：Ｎｉ＋１Ｅ（ｋｉ，ｋｉ＋１ＴＲＳＰ）Ｅ（ＫＦＸ（ｉ，Ｋｉ），ＭｉＨ（ＩＦＸ（ｉ，Ｋｉ），Ｎｉ＋１ｋｉ＋１ＴＲＳＰＭｉＦＥＸ（ｉ，Ｋｉ）））
【０１５８】
トレントからの要求を受け取ると、アリスは、新しい公開識別子Ｎｉ＋１を取得し、新しいホワイト・データ鍵ｋｉ＋１、応答パラメータＴＲＳＰ、変化値Ｍｉ、およびハッシュを取得するために、応答の残りの部分を暗号解除する。アリスは、アリス自身のバージョンのハッシュを生成し、自身のバージョンのハッシュをトレントからの応答に含まれるハッシュと比較することにより、新しい公開識別子Ｎｉ＋１、新しいホワイト・データ鍵ｋｉ＋１、応答パラメータＴＲＳＰ、および変化値Ｍｉを検証することができる。
【０１５９】
アリスおよびトレントは、それぞれに、新しいまたは変化された大型秘密鍵Ｋｉ＋１を生成するために変化値Ｍｉを使用する。上述のように、アリスおよびトレントは、反復カウントｉ、トレントによりランダムに生成された変化値Ｍｉ、現在の大型秘密鍵Ｋｉ、および／またはハッシュ関数Ｈにより返されるビットの数に基づいて、新しい大型秘密鍵Ｋｉ＋１を生成するために、変化関数ＦＭを使用することができる。
【０１６０】
上記のメッセージにおいて示されるように、要求および応答は、同様のレイアウトを含み、各々は、識別子（例えば、ＮｉまたはＮｉ＋１）、暗号化されたホワイト・データ（例えば、Ｅ（ｋｉ，ＴＲＥＱ）またはＥ（ｋｉ，ｋｉ＋１ＴＲＳＰ））、およびメッセージ認証コードまたはハッシュを含む暗号化されたブラック・データ（例えば、Ｅ（ＫＦＸ（ｉ，Ｋｉ），Ｈ（．．．））またはＥ（ＫＦＸ（ｉ，Ｋｉ），ＭｉＨ（．．．）））を含む。ホワイト・データ（例えば、ＴＲＥＱ、ＴＲＳＰ、およびｋｉ＋１）は、ホワイト・データ鍵ｋｉを用いて暗号化せずに平文として送信することもできることを理解されたい。
【０１６１】
要求および応答のフォーマットの上記の順序およびグループ化は、専ら例示のためであり、変更することができることを理解されたい。
【０１６２】
上記の要求および応答のフォーマットを使用して、アリスおよびボブは様々なタイプの要求および応答を交換することができ、要求および応答のパラメータだけが変更される。従って、メッセージ・プロトコルの更なる具体例は、以下の省略型の表現を使用して表される。
【０１６３】
Ａ→Ｔ：ＢＣＰＲＥＱ（ＴＲＥＱ）
Ｔ→Ａ：ＢＣＰＲＳＰ（ＴＲＳＰ）
【０１６４】
幾つかの実施形態では、要求および応答パラメータは、メッセージを特定のタイプの要求または応答として識別するコマンド要求コードを含む。例えば、トレントが、以下のランダム生成される初期コマンド・コードをアリスに割り当てるものとする。
【０１６５】
μｉ＝「変化ＩＤを変化させる」コマンド・コード
αｉ＝「暗号化鍵を取得する」コマンド・コード
δｉ＝「暗号解除鍵を取得する」コマンド・コード
【０１６６】
各コマンド・コードは、トレントにより提供される暗号化鍵と同じ長さとすることができる。各コマンド・コードは、それぞれの使用の後、変化するか又は変更される。
【０１６７】
要求および応答パラメータは、異なる長さを有する異なるタイプのデータを含むことができるので、上記のメッセージ・プロトコルは、すべての要求が同じサイズとなり、またすべての応答が同じサイズとなることを保証するために、ランダム生成されるパディング値（「ＰＡＤ」）を使用することができる。それぞれの要求または応答が同じサイズであることを確実にすることにより、盗聴者は、要求または応答のタイプを、それが含むビットの数に厳格に基づいて決定することができない。
【０１６８】
上記のコマンド・コードおよびパディング値を使用して、「変化ＩＤを変化させる」要求を生成するために、アリスは、以下の例示的な形式を用いてトレント宛ての要求を生成する。
【０１６９】
Ａ→Ｔ：ＢＣＰＲＥＱ（μｉＰＡＤ［Ｘ］）
上記式において、ＰＡＤ［Ｘ］は、ランダムなパディングのＸビットである。
【０１７０】
それに応答して、トレントは、以下の例示的な形式を用いてアリス宛ての応答を生成する。
【０１７１】
Ａ→Ｔ：ＢＣＰＲＳＰ（ＸＯＲ（μｉ，μｉ＋１）ＰＡＤ［Ｘ］）
【０１７２】
トレントからの上記の応答の結果として、アリスの公開識別子Ｎｉ、秘密ホワイト・データ鍵ｋｉ、および大型秘密鍵Ｋｉが、変化させられる。加えて、「変化ＩＤを変化させる」コマンド・コードμｉも、変化させられている。
【０１７３】
上記のコマンド・コードおよびパディング値を使用して、アリスは、以下の例示的な形式を用いてトレント宛ての「暗号化鍵を取得する」要求を生成することができる。
【０１７４】
Ａ→Ｔ：ＢＣＰＲＥＱ（αｉＰＡＤ［Ｘ］）
【０１７５】
それに応答して、トレントは、以下の例示的な形式を用いてアリス宛ての応答を生成する。
【０１７６】
Ａ→Ｔ：ＢＣＰＲＳＰ（ＸＯＲ（αｉ，αｉ＋１）ＮＲＳＰＥ（ＫＦＸ２（ｉ，Ｋｉ），ＫＲＳＰ）ＰＡＤ［Ｘ］）
【０１７７】
ここで、ＫＲＳＰは、ランダム生成された暗号化鍵であり、ＮＲＳＰは、暗号化鍵ＫＲＳＰに関連するランダム生成された識別子である。暗号化鍵ＫＲＳＰは、アリスの大型秘密鍵Ｋｉまたはその一部を用いて暗号化される。例えば、幾つかの変形では、暗号化鍵ＫＲＳＰは、鍵関数ＫＦＸ２の結果を用いて暗号化される。鍵関数ＫＦＸ２は、トレントからの応答の他の部分で使用される鍵関数ＫＦＸとは異なることができ、また、反復カウントｉおよび大型秘密鍵Ｋｉに基づいて鍵を生成する非可逆関数を含むことができる。鍵関数ＫＦＸは、非可逆である。なぜなら、以下で説明するように、アリスがホワイト、即ち、発見可能データを暗号化するために暗号化鍵ＫＲＳＰを使用した場合、盗聴者はその暗号化鍵Ｋを発見できるからである。非可逆関数の使用は、盗聴者が、暗号化鍵ＫＲＳＰについての知識を取得したときに、アリスの大型秘密鍵Ｋｉを決定することを制限または防止する。例えば、鍵関数ＫＦＸ２は、アリスの大型秘密鍵Ｋｉの一部のハッシュを生成するセキュア・ハッシュ関数を含むことができ、この大型秘密鍵Ｋｉの一部は、抽出関数ＦＥＸ２により生成されたものであり、この抽出関数ＦＥＸ２は、上述の抽出関数ＦＥＸとは異なるものであり、反復カウントｉに基づいてアリスの大型秘密鍵Ｋｉの一部を抽出する。鍵関数ＫＦＸ２に含まれるセキュア・ハッシュ関数はまた、上述の初期設定関数とは異なる初期設定関数ＩＦＸ２により生成された初期設定ベクトルに基づいて、ハッシュを生成することができる。初期設定関数ＩＦＸ２は、反復カウントｉおよびアリスの大型秘密鍵Ｋｉに基づいて初期設定ベクトルを生成することができる。
【０１７８】
要求された暗号化鍵ＫＲＳＰは、アリスの大型秘密鍵Ｋｉまたはその一つのバージョンを用いて暗号化されるので、暗号化された暗号化鍵ＫＲＳＰは、アリスの大型秘密鍵Ｋｉについての何らかの情報を漏らす。上述のメッセージ認証コードまたはハッシュにより漏らされる情報と同様に、攻撃者は、力ずく攻撃を実行するときに候補鍵を除外するために、暗号化された暗号化鍵ＫＲＳＰに含まれる情報を使用することができる。しかし、暗号化された暗号化鍵ＫＲＳＰにおいて漏らされる情報の量は、力ずく攻撃が成功する可能性を実質的に低減または排除するために、秘密鍵をいつリセットすべきかの計算において考慮することができる。幾つかの実施形態では、応答において漏らされる情報を更に制限するために、反復カウントｉは、鍵関数ＫＦＸ２において使用される前に、追加のカウントをインクリメントされる。
【０１７９】
上記で示されたように、「暗号化鍵を取得する」要求に応答して、暗号化鍵ＫＲＳＰは、応答パラメータＴＲＳＰの一部として含まれ、その応答パラメータＴＲＳＰは、ホワイト・データと見なされ、アリスのホワイト・データ鍵ｋｉを用いて暗号化される。暗号化鍵ＫＲＳＰは、アリスが暗号化鍵ＫＲＳＰを使用してホワイト・データを暗号化する可能性が高いので、ホワイト・データと見なされる。暗号化鍵ＫＲＳＰがホワイト・データを暗号化するために使用される場合、暗号化鍵ＫＲＳＰは、力ずく攻撃を使用して盗聴者により発見される可能性がある。暗号化鍵ＫＲＳＰがアリスの大型秘密鍵Ｋｉを用いてブラック・データとして暗号化される場合、盗聴者は、暗号化鍵の発見された値を使用して、力ずく攻撃を実行し、アリスの大型秘密鍵Ｋｉおよびアリスとトレントとの間で交換される他のブラック・データについての情報を決定することができる。上述のように、非可逆関数により生成された鍵を用いる暗号化鍵ＫＲＳＰの暗号化は、盗聴者の、暗号化鍵ＫＲＳＰについての取得された知識からアリスの大型秘密鍵Ｋｉについての情報を発見する能力を、制限する。従って、アリスのホワイト・データ鍵ｋｉを用いて暗号化鍵ＫＲＳＰを暗号化することにより、アリスの大型秘密鍵ＫＡおよびアリスとトレントとの間で交換される他のブラック・データは、盗聴者が暗号化鍵ＫＲＳＰを取得できたとしても、セキュアに保持される。
【０１８０】
アリスは、以下の例示的な形式を用いてトレント宛ての「暗号解除鍵を取得する」要求を生成するために、上記のコマンド・コードおよびパディング値を使用することができる。
【０１８１】
Ａ→Ｔ：ＢＣＰＲＥＱ（ＮＲＥＱδｉＰＡＤ［Ｘ］）
上記において、ＮＲＥＱは、要求された暗号解除鍵に関連する識別子である。
【０１８２】
それに応答して、トレントは、以下の例示的な形式を用いてアリス宛ての応答を生成する。
【０１８３】
Ａ→Ｔ：ＢＣＰＲＳＰ（ＸＯＲ（δｉ，δｉ’）Ｅ（ＫＦＸ２（ｉ，Ｋｉ），ＫＲＳＰ）ＰＡＤ［Ｘ］）
【０１８４】
上記において、ＫＲＳＰは、要求において提供された識別子ＮＲＥＱに関連する要求された暗号解除鍵である。「暗号化鍵を取得する」要求に関して上述されたように、暗号化鍵ＫＲＳＰは、鍵関数ＫＦＸ２の結果を用いて暗号化され得るものであり、鍵関数ＫＦＸ２は、反復カウントｉおよび大型秘密鍵Ｋｉに基づいて鍵を生成する非可逆関数を含み、トレントからの応答の他の部分で使用される鍵関数ＫＦＸとは異なるものである。上記で述べたように、トレントは、反復カウントｉを、鍵関数ＫＦＸ２において使用する前に、カウントを追加してインクリメントすることができる。
【０１８５】
先に述べたように、エンティティは、認証手段に暗号化鍵および暗号解除鍵を要求するために、上記の要求フォーマットを使用することができる。エンティティは、データを他のエンティティへ送信する前に、暗号化鍵を使用して、データ（例えば、デジタル・コンテンツ）を暗号化し、暗号化データを受け取ったエンティティは、必要な暗号解除鍵を認証手段に要求する。認証手段を鍵配布者として使用することは、エンティティが、エンティティ間で個別の暗号化またはセッション鍵を確立する必要なしに、互いに通信することを可能にする。何れのエンティティも、平文または無暗号化データを他のデータに送ることにより、他のエンティティとセキュア・セッションを開始することを要求されない（即ち、ハンドシェークは必要とされない）ので、エンティティ間で送信されるデータは、常に暗号化されることができる。この暗号化戦略を使用することで、上記の要求および応答フォーマットを、電子メール交換、デジタル・コンテンツ管理、セキュア・ファイル転送、クライアント−サーバ・セッションなどのような様々なアプリケーションに適用され得るミューテーティング（変化）・トランスポート層セキュリティを確立するために、使用できる。
【０１８６】
ミューテーティング（変化）・ロック・ボックス
幾つかの実施形態では、識別変化ＩＤ、デジタル署名変化ＩＤ、鍵ペア変化ＩＤ、フィンガプリント変化ＩＤ、および／または大型変化ＩＤなどのような、エンティティにより保持される変化ＩＤは、ミューテーティング・ロック・ボックス（ｍｕｔａｔｉｎｇ  ｌｏｃｋ  ｂｏｘ）と呼ばれるセキュアなメモリ・デバイスに保存される。ミューテーティング・ロック・ボックスに保存されたデータは、オフラインの力ずく攻撃の有効性を低下させるために、暗号化することができる。幾つかの実施形態では、ミューテーティング・ロック・ボックスに保存されたデータは、ブラック・データとホワイト・データとが同じ鍵を用いて暗号化されないように、上述のように個別に暗号化される。ミューテーティング・ロック・ボックスの活動化またはオープンには、複数のステップまたはファクタを必要とすることができる。例えば、ミューテーティング・ロック・ボックスを活動化しようと試みるエンティティは、ユーザ・パスワードおよび／またはＰＩＮを提供するように要求され得る。認証デバイス２８はまた、ボックス識別子カレンシ・チェック（ｂｏｘ  ｉｄｅｎｔｉｆｉｅｒ  ｃｕｒｒｅｎｃｙ  ｃｈｅｃｋ）の実行および使用可能システム・データの分析などのような複数のチェックおよび分析を実行することができる。幾つかの実施形態では、ミューテーティング・ロック・ボックスは、エンティティのハード・ドライブまたは永久メモリ・デバイスに保存される。他の実施形態では、ミューテーティング・ロック・ボックスは、ユニバーサル・シリアル・バス（「ＵＳＢ」）フラッシュ・ドライブなどのようなポータブル・メモリ・デバイスに保存される。
【０１８７】
本発明の様々な特徴が特許請求の範囲において説明される。
【図面の簡単な説明】
【０１８８】
【図１】図１は、本発明の一実施形態による、データを送信するためのシステムを概略的に示す。
【図２】図２は、本発明の一実施形態による、ビット・ストリーム（「変化ＩＤ」と呼ばれる）を示す。
【図３】図３Ａおよび図３Ｂは、変化ＩＤを配布する方法を示す。
【図４】図４は、例示的な力ずく攻撃を示す。
【図５】図５は、暗号化されるデータに含まれるデータのタイプを示す。
【図６】図６および図７は、本発明の一実施形態による、発見不可能、即ち、「ブラック」データのセキュリティを保護するための暗号化戦略を示す。
【図７】図６および図７は、本発明の一実施形態による、発見不可能、即ち、「ブラック」データのセキュリティを保護するための暗号化戦略を示す。
【図８】図８、図９および図１０は、本発明の種々の実施形態による、鍵抽出および変化プロトコルを示す。
【図９】図８、図９および図１０は、本発明の種々の実施形態による、鍵抽出および変化プロトコルを示す。
【図１０】図８、図９および図１０は、本発明の種々の実施形態による、鍵抽出および変化プロトコルを示す。
【図１１】図１１は、本発明の一実施形態による、認証デバイスと通信するための個別の暗号化プロトコルを示す。
【図１】
2009529832.tif 000004
【図２】
2009529832.tif 000005
【図３】
2009529832.tif 000006
【図４】
2009529832.tif 000007
【図５】
2009529832.tif 000008
【図６】
2009529832.tif 000009
【図７】
2009529832.tif 000010
【図８】
2009529832.tif 000011
【図９】
2009529832.tif 000012
【図１０】
2009529832.tif 000013
【図１１】
2009529832.tif 000014
【国際調査報告】
2009529832.tif 000015