(57)【特許請求の範囲】
【請求項１】
キー回復エージェント・システムを用いて秘密値の回復を提供する装置であって、
前記キー回復エージェント・システム用のジェネレータ値を生成する手段であって、前記ジェネレータ値を生成する手段が、秘密値を確立する手段と、前記ジェネレータ値を前記秘密値の１方向関数として生成する手段とを含む、前記生成する手段と、
前記生成されたジェネレータ値を前記キー回復エージェント・システムにとって利用可能にする手段であって、前記キー回復エージェント・システムにとって利用可能にする手段が、前記ジェネレータ値を前記キー回復エージェント・システムの公開キーにより暗号化して、暗号化されたジェネレータ値を生成する暗号化手段を含む、前記利用可能にする手段と、
暗号化キーを前記利用可能にされたジェネレータ値の１方向関数として生成する手段と、
前記秘密値を前記生成された暗号化キーにより暗号化して、暗号化された秘密値を生成する暗号化手段であって、前記キー回復エージェント・システムに前記暗号化されたジェネレータ値を前記公開キーに対応する秘密キーにより解読させ、前記暗号化キーを前記解読させたジェネレータ値の前記１方向関数として生成させ、そして前記暗号化された秘密値を該生成された暗号化キーにより解読することにより、前記秘密値が前記暗号化された秘密値から回復可能である、前記暗号化手段と
を含む、装置。
【請求項２】
前記秘密値を暗号化キーとして使用することにより、データを暗号化して、暗号化データを生成する暗号化手段を含む、請求項１記載の装置。
【請求項３】
前記暗号化データが回復フィールドに関連付けられる、請求項２記載の装置。
【請求項４】
前記回復フィールドが、前記キー回復エージェント・システムの公開キーにより暗号化される前記ジェネレータ値を含む、請求項３記載の装置。
【請求項５】
前記回復フィールドが、前記暗号化された秘密値と前記キー回復エージェント・システムの公開キーにより暗号化される前記ジェネレータ値とを含む、請求項３記載の装置。
【請求項６】
前記暗号化キーが、前記ジェネレータ値及び動的値の１方向関数として生成される、請求項１記載の装置。
【請求項７】
複数のキー回復エージェント・システムを用いて、秘密値の回復を提供する装置であって、
前記キー回復エージェント・システム用の各々のジェネレータ値を生成する手段と、
前記キー回復エージェント・システムの各々に対して生成された前記ジェネレータ値を、当該キー回復エージェント・システムにとって利用可能にする手段と、
それぞれの暗号化キーを前記ジェネレータ値の１方向関数として生成する手段と、
前記秘密値を前記暗号化キーにより暗号化して、暗号化された秘密値を生成する暗号化手段であって、前記キー回復エージェント・システムに前記暗号化キーを前記ジェネレータ値の前記１方向関数として生成させ、そして前記暗号化された秘密値を前記暗号化キーにより解読することにより、前記秘密値が前記暗号化された秘密値から回復可能である、前記暗号化手段と、
を含む、請求項１記載の装置。
【請求項８】
前記暗号化手段が、前記秘密値を前記暗号化キーにより連続的に暗号化し、前記暗号化された秘密値を生成する暗号化手段を含む、請求項７記載の装置。
【請求項９】
前記ジェネレータ値を生成する前記手段が、
秘密値を確立する手段と、
前記ジェネレータ値を前記秘密値のそれぞれ１方向関数として生成する手段であって、前記１方向関数が互いに異なる、前記生成手段と、
を含む、請求項７記載の装置。
【請求項１０】
前記ジェネレータ値を生成する前記手段が、
前記キー回復エージェント・システムの各々に対して、前記秘密値及び当該システムに固有の値の関数として、中間値を生成する手段と、
前記ジェネレータ値の各々を、対応する中間値の１方向関数として生成する手段と、
を含む、請求項９記載の装置。
【請求項１１】
ａ）要求当事者のコンピュータから秘密値を受信する手段と、
ｂ）所定の要求に応じて、前記キー回復エージェント・システムが少なくとも前記秘密値から従属値を計算して、前記従属値を前記要求当事者のコンピュータに提供する手段と、
をさらに含む、請求項１〜１０のいずれか一項に記載のキー回復エージェント・システム。
【請求項１２】
前記キー回復エージェント・システムが前記秘密値と前記キー回復エージェント・システムにとって利用可能な追加の情報とから前記従属値を計算する手段を含む、請求項１１記載のキー回復エージェント・システム。
【請求項１３】
前記計算される従属値が、前記秘密値に対して計算されるハッシュ値として計算される、請求項１１記載のキー回復エージェント・システム。
【請求項１４】
前記計算される従属値が、前記秘密値と前記要求当事者のコンピュータにより提供される非秘密データに対して計算されるハッシュ値として計算される、請求項１１記載のキー回復エージェント・システム。
【請求項１５】
前記非秘密データが特定のキーに固有のキー回復情報を含む、請求項１４記載のキー回復エージェント・システム。
【請求項１６】
前記キー回復エージェント・システムに提供される前記秘密値が、複数の従属値を計算するために使用される、請求項１１記載のキー回復エージェント・システム。
【請求項１７】
前記従属値が、異なる要求当事者のコンピュータに対して計算される、請求項１６記載のキー回復エージェント・システム。
【請求項１８】
前記従属値が、異なる時刻に計算される、請求項１６記載のキー回復エージェント・システム。
【請求項１９】
前記暗号化が、暗号化キーにより平文ブロックを暗号化する方法を含み、前記方法は、
ａ）前記平文ブロックを第１の部分及び第２の部分に区分するステップと、
ｂ）前記平文ブロックを複数の繰り返しにさらすステップであって、前記繰り返しは、前記第１の部分及び第２の部分が、第１の出力部分及び第２の出力部分を生成するための入力部分として処理され、前記繰り返しの各々が、
１）前記入力部分の一方を前記キーに結合し、複合部分を生成するステップと、
２）前記複合部分のハッシュを生成するステップと、
３）前記複合部分の前記ハッシュを他方の前記入力部分と結合し、前記出力部分の一方を生成するステップと、
４）他方の前記出力部分を前記他方の入力部分から生成するステップと、
を含む、前記繰り返しにさらすステップと、
ｃ）最後の前記繰り返しにより生成される前記出力部分を結合し、暗号化平文ブロックを生成するステップと
を含む、請求項１〜１０のいずれか一項に記載の装置。
【請求項２０】
暗号回復システムにおいて、ユーザのコンピュータ・システムが公開回復キーにより回復値を暗号化し、該暗号化回復値を請求項１に記載のキー回復エージェント・システムに提供し、前記キー回復エージェント・システムが前記公開回復キーに対応する秘密回復キーを用いて、前記暗号化回復値から前記回復値を回復でき、前記ユーザ及び前記キー回復エージェント・システムに対して、前記公開回復キー及び前記秘密回復キーを確立でき、
前記ユーザに対して、前記公開回復キー及び対応する前記秘密回復キーを含む回復キー対を生成する手段を含み、
前記回復キー対を該ユーザのコンピュータ・システムから前記キー回復エージェント・システムに安全に伝送する手段と
を含む、暗号回復システム。
【請求項２１】
前記ユーザのコンピュータ・システムが、それぞれの前記キー回復エージェント・システムにとって利用可能な複数の回復値を生成する手段を含み、前記各手段が前記キー回復エージェント・システムの各々に対して実行される、請求項２０記載の暗号回復システム。
【請求項２２】
前記キー回復エージェント・システムが、前記回復キー対の受信に際して、前記公開回復キー及び前記秘密回復キーが有効なキー対であることを確認する手段を含む、請求項２０記載の暗号回復システム。
【請求項２３】
前記キー回復エージェント・システムが、前記公開回復キー及び前記秘密回復キーが有効なキー対であることを確認する時、秘密サイン・キーを用いて公開確認キー上にサインを生成し、前記サインを有する前記公開回復キーを前記ユーザのコンピュータ・システムに返却する手段を含む、請求項２２記載の暗号回復システム。
【請求項２４】
前記ユーザのコンピュータ・システムが、前記サインを有する前記公開回復キーの受信時に、前記サイン・キーに対応する公開確認キーを用いて前記サインを確認する手段を含む、請求項２３記載の暗号回復システム。
【請求項２５】
前記キー回復エージェント・システムが公開暗号化キーを有し、前記伝送する手段が、
前記回復キー対の前記秘密キーを、前記キー回復エージェント・システムの前記公開暗号化キーを用いて暗号化する手段と、
前記回復キー対の前記公開キー及び前記暗号化された秘密キーを、該ユーザのコンピュータ・システムから前記キー回復システムエージェント・に伝送する手段と
を含む、請求項２０記載の暗号回復システム。
【請求項２６】
前記キー回復エージェント・システムが、前記回復キー対の受信時に、前記公開暗号化キーに対応する秘密解読キーを用いて、前記回復キー対の前記秘密キーを解読する手段を含む、請求項２５記載の暗号回復システム。
【請求項２７】
請求項２５に記載の前記キー回復エージェント・システムに伝送する前記手段が、
前記回復キー対の前記秘密キーを装置に埋め込む手段であって、前記装置が前記秘密キーを用いて値を暗号化できるが、前記秘密キーを明かすことができない、前記埋め込み手段と、
前記回復キー対の前記公開キー、及び前記回復キー対の前記秘密キーを含む前記装置を、前記キー回復エージェント・システムに用意する手段と
を含む、請求項２５記載の暗号回復システム。
【請求項２８】
請求項１に記載のキー回復エージェント・システムが要求当事者のコンピュータに秘密情報を選択的に明かせるように、暗号システムを操作する暗号回復システムであって、
第１の秘密値から第２の秘密値を導出する手段と、
前記第２の秘密値を許可情報と結合し、前記結合の第１のハッシュ値を計算する手段と、
前記秘密情報の回復のために、前記許可情報、前記第１のハッシュ値、及び前記第１の秘密値を、前記キー回復エージェント・システムに提供する手段と
を含む、暗号回復システム。
【請求項２９】
前記キー回復エージェント・システムが、前記要求当事者のコンピュータからの回復要求の受信することに応答して、
前記第１の秘密値から第２の秘密値を導出する手段と、
前記第２の秘密値を前記許可情報と結合し、前記結合の第２のハッシュ値を計算する手段と、
前記第１のハッシュ値と前記第２のハッシュ値とが等しいか否か比較する手段と、
証明書が前記許可情報と一致し、前記第１のハッシュ値及び第２のハッシュ値が等しい場合、前記秘密情報を明かす手段と
を実行する手段を含む、請求項２８記載の暗号回復システム。
【請求項３０】
前記認可情報が、それを暗号化することによって前記キー回復エージェント・システムに提供される、または前記第１の秘密値がそれを暗号化することによって前記キー回復エージェント・システムに提供される、請求項２８記載の暗号回復システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、暗号キー回復システムに関し、特に、通信当事者のコンピュータ間でキーを確立するために、既存のシステムと共通運用可能なキー回復システムに関する。
【０００２】
【従来の技術】
データ暗号化システムは、データ処理技術においては周知である。一般に、こうしたシステムは、平文入力ブロックに暗号キーを用いて暗号化操作を実行し、暗号文出力ブロックを生成することにより、作用する。暗号化メッセージの受信者は、解読キーを用いて、対応する解読操作を実行し、平文ブロックを回復する。
【０００３】
暗号化システムは、２つの一般的なカテゴリに分類される。データ暗号化規格（ＤＥＳ）システムなどの、対称（すなわち秘密キー）暗号化システムは、メッセージの暗号化及び解読の両方のために同一の秘密キーを用いる。ＤＥＳシステムでは、独立に指定可能な５６ビットを有するキーが、６４ビットの平文ブロックを暗号文ブロックに変換するために、或いはその逆の変換のために使用される。
【０００４】
一方、非対称（すなわち公開キー）暗号化システムは、暗号化及び解読のために、互いに容易に導出できない異なるキーを用いる。メッセージの受信を希望する人が、１対の対応する暗号化キー及び解読キーを生成する。暗号化キーは公開されるが、対応する解読キーは秘密にされる。受信者との通信を希望する人は、受信者の公開キーを用いて、メッセージを暗号化し得る。しかしながら、受信者だけが秘密キーを有するので、受信者だけがメッセージを解読し得る。おそらく、最も知られた非対称暗号化システムは、その創作者であるRivest、Shamir及びAdlemanに因んで命名されたＲＳＡ暗号化システムであろう。
【０００５】
非対称暗号化システムは一般に、対称暗号化システムよりも、計算集中型であるが、暗号化キーの伝送のために、安全なチャネルを要求しないという利点を有する。この理由から、非対称暗号化システムは、対称暗号化キーなどの機密度の高いデータの１度だけの伝送のために、しばしば使用される。
【０００６】
全てのタイプのデータ暗号化システムは、政府情報機関及び法執行機関の注目を集めてきた。なぜなら、無許可の第３者による解読を阻止するための同一の暗号化効力が、平文データをアクセスしたい合法的理由を有する情報機関の役人、または法執行機関の役人による解読をも阻止するからである。こうした問題から、政府は強力な暗号化システムの使用または輸出を禁止するか、或いはキーの徹底的攻撃（すなわち、正解が見出されるまで、全ての可能なキーを体系的にテストする）を受けやすい弱体化したキーの使用だけを承認してきた。こうした軟弱な暗号化システムは、公認の政府役人に対するのと同様に、無許可の第３者にもさらされやすいという明らかな欠点を有する。
【０００７】
電子通信における通信当事者のプライバシーに対する要求と、国家安全保障に対する犯罪または脅迫を明かすことが必要な場合に法執行機関がこうした通信をアクセスする要求との間の妥協点として、様々な暗号キー回復システムが最近提案されている。一般に、こうしたキー回復システムでは、実際にキー部分をキー回復エージェント・システムに提供するか（この場合、キー部分はエスクロウと呼ばれる条件付き捺印証書或いは第３者預託証書としての性格を持つ）、或いはキー回復エージェント・システムがキー部分を再生することを可能にする十分な情報を、（キー部分を暗号化することにより）通信自体に提供することにより、通信当事者のコンピュータにより使用されるキーの全体または一部が、キー回復エージェント・システムにとって利用可能になる。キー回復エージェント・システムは、例えば傍受を許可する法廷指令などの正当な権限の証明が提示される場合に限り、エスクロウとして預託されたまたは再生されたキー部分を、要求元の法執行エージェントに明かす。複数のキー回復エージェント・システムを使用する場合、これら全てがキーを回復するために協動しなければならず、法執行エージェント・システムが不正なキー回復エージェント・システムを使用することにより、不正にキーを回復する可能性を最小化する。
【０００８】
キー回復システムは、プライバシーに関する通信者の関心に応える。なぜなら、それらの暗号化システムは、第３者に対するその完全な効力を保持し、暗号化に関する国内の制限に従ったり輸出条件に適合するように、弱体化される必要がないからである。同時に、キー回復システムは、非暗号化通信が以前に傍受された状況において（法廷指令が獲得された状況など）、暗号化された通信の傍受を許可することにより、法執行の合法的ニーズに応える。
【０００９】
法執行のニーズに応えることに加えて、キー回復システムは、純粋に私的な状況においてもアプリケーションを見い出す。従って、組織は重大なファイルの強力な暗号化により従業員に関わることができ、そこではキーが回復可能でない。キーの損失は、重要な記憶済みデータの損失を招き得る。
【００１０】
キー回復システムの数多くの望ましい特徴が、確認されてきた。従って、最初に高い優先順位の特徴を考慮すると、キー回復システムは、ソフトウェアまたはハードウェアにより実現され得るべきである。キー回復システムはその導入のために、第３者との通信を要求すべきではなく、またメッセージの作成または接続の確立の間に、第３者との通信を要求すべきではない。また、キー回復システムは異なる国のユーザ間で、共通運用性を提供すべきである。更に、使用されるアルゴリズムは公知であるべきであり、機構はアルゴリズムに独立であるべきである。設計は公開されるべきであり、公開された仕様にもとづき、複数のベンダにより実現され得るべきである。各国に対して、キー回復能力を独立に提供すべきである。単一のシステムにおいて、異なる環境での異なるレベルのセキュリティに対する柔軟性を提供すべきであり、法律により許可される最高レベルの暗号化セキュリティを提供すべきである。既存の暗号化システムに対するモジュール式拡張（アドオン）であるべきである。任意のキー交換機構の使用を可能にする一方で、任意的に、キー回復に従うように強要する制御ポイントを保持するべきである。回復を許容する以外は、交換キーのセキュリティ特性が維持されるべきである。
【００１１】
低い優先順位の他の特徴も、大いに望ましい。キー回復システムは、蓄積・交換（すなわち非対話型）環境及び対話型環境の両方をサポートすべきである。また、キーを回復するために、複数のキー回復エージェント・システムが協動することを要求する処理選択をサポートすべきである（不正なキー回復エージェント・システムからの保護を提供する）。更に、選択的に、パッチ技法が、非パッチ技法と共通運用されないようにすべきである。
【００１２】
様々なタイプのキー回復システムが、D．E．Denning及びD．K．Branstadによる"A Taxonomy for Key Escrow Encryption Systems"、Communications of the ACM、vol．39、No．3、Mar．1996、pp．34-40に述べられている。
【００１３】
幾つかの特定のキー回復システムについて、以下に紹介する。
【００１４】
Micaliらによる米国特許第５２７６７３７号（"Micali I"）及び同５３１５６５８号（"Micali II"）は、"公正な"公開キー暗号化システムについて述べている。公開／秘密キー対の秘密キーが複数の"シェア（share）に分割され、受託機関（trustee）に与えられる。分割は次のように実行される。すなわち、（１）全ての受託機関のシェア（または所定の定足数）が、キーを復元するために要求される。（２）各受託機関は、個々に自身のシェアの正当性を確認することができる。全ての受託機関が彼らのシェアの正当性を証明すると、ユーザの公開キー（エスクロウとして預託される秘密キーに対応）が、キー管理局により証明される。所定の要求に際して、受託機関は彼らのシェアを法執行エージェントまたは他の回復エージェントに提供し、そうしたエージェントが次に、シェアから秘密キーを復元し、秘密キーによりユーザとの通信をモニタすることができる。
【００１５】
Micaliシステムは、有利にキーを複数のエスクロウ・エージェント間で分割するが、このシステムは幾つかの欠点を有する。Micaliシステムは、通信がユーザと別の当事者との間で開始する以前に、受託機関の積極的な参加を要求する。また、受託機関が実際に、エスクロウとして預託されるシェアを保持しなければならないので（またはそれらを外部的に暗号化形式で記憶する）、各受託機関は、決して回復要求の主体でないキーの多数のシェアを保持または記憶するのを止め得る。
【００１６】
D．B．Johnsonらによる係属中の米国特許出願番号第０８／６２９８１５号（１９９６年４月１０日出願）、"Cryptographic Key Recovery System"（以下、"Johnsonらによる出願Ｉ"として参照）は、複数のキー回復エージェント・システムを用いる部分キー回復システムについて述べている。この出願で述べられるシステムの１つの態様では、送信側がキー回復値（またはキー要素）Ｐ、Ｑ、及び（任意選択の）Ｒのセットを生成する。Ｐ及びＱ値をＸＯＲ加算により結合し、結果をＲと連結し、連結結果をハッシュしてキーを生成することにより、セッション・キーが生成される。Ｐ及びＱ値が次に、それぞれのキー回復エージェント・システムの公開キーを用いて暗号化され、暗号化されたＰ及びＱ値が（他の回復情報と一緒に）、暗号化メッセージを伴うセッション・ヘッダに含まれる。Ｒ値が生成される場合、それはいずれの回復エージェントに対しても利用可能にされず、キーを回復しようとする法執行エージェントのための、重要な作業要素を提供するために、秘密にされる。
【００１７】
受信側は、自身のデータを用いて回復情報を再生し、結果を比較することにより、その回復情報の正当性を確認する。再生された回復情報が、セッション・ヘッダ内のものと合致する場合、受信側は暗号化メッセージの解読に移行する。
【００１８】
暗号化メッセージを傍受する当事者（法執行者など）は、暗号化されたＰ及びＱ値、並びに他の回復情報を、付随するセッション・ヘッダから獲得する。セッション・キーを回復するために、当事者のコンピュータは暗号化されたＰ及びＱ値を、セッション・ヘッダからキー回復エージェント・システムに提供し、後者がＰ及びＱ値を解読し、回復を要求する当事者のコンピュータに解読値を返却する。その当事者のコンピュータは次にセッション・キーを復元し（必要に応じて、力任せにＲ値を生成する）、暗号化メッセージを解読する。
【００１９】
Lipnerらによる米国特許第５５５７３４６号で述べられる別のキー回復システムでは、送信側がセッション・キーを第１のセッション・キー部分及び第２のセッション・キー部分に分割し、第１のセッション・キー部分を乱数に等しくセットし、第２のセッション・キー部分を、前記乱数とセッション・キーとのＸＯＲ結果に等しくセットする。送信側は、それぞれのセッション・キー部分を、第１及び第２のキー回復エージェント・システムの公開暗号キーにより暗号化し、２つの暗号結果を連結することにより、法執行アクセス・フィールド（ＬＥＡＦ）を生成する。送信側はまた、元のセッション・キー部分を連結することにより、ＬＥＡＦ確認ストリング（ＬＶＳ）を生成し、これをセッション・キーを用いて暗号化し、暗号化されたＬＥＡＦ確認ストリング（ＥＬＶＳ）を生成する。最後に、送信側は暗号化されたメッセージを、ＬＥＡＦ及びＥＬＶＳと一緒に、受信側に伝送する。
【００２０】
暗号化メッセージを解読する以前に、受信側はＬＥＡＦを再生して、送信側が正当なＬＥＡＦ、すなわち、キー回復エージェント・システムを通じ、セッション・キーの回復を実際に可能にするＬＥＡＦを生成したことを確認する。この確認は、ＥＬＶＳを解読してセッション・キー部分を獲得し、次にそれぞれのセッション・キー部分を、第１及び第２のキー回復エージェント・システムの公開暗号キーにより暗号化することにより、達成される。このようにして、受信側が伝送されたＬＥＡＦの再生に成功すると、受信側はＬＥＡＦが本物であると結論し、メッセージの解読に移行する。それ以外では、受信側は、ＬＥＡＦが不正であると結論し、解読ステップには移行しない。
【００２１】
D．B．Johnsonらによる係属中の米国特許出願番号第０８／６８１６７９号（１９９６年７月２９日出願）、"Interoperable Cryptographic Key Recovery System"（以下、"Johnsonらによる出願ＩＩ"として参照）は、"エントロピー保存"プロシジャを用いて、キー回復値を生成するキー回復システムについて述べている。前記Johnsonらによる出願ＩＩで開示されるように、Ｐ、Ｑ及びＲキー回復値（Ｐ及びＱは、それぞれのキー回復エージェント・システムに暗号化形式で提供され、Ｒは前記Johnsonらによる出願Ｉの場合同様、秘密にされる）が、キー逆変換関数を用いて生成される。この関数は、入力として、回復されるセッション・キーＫ、並びに回復プロセスを支援する受信者及び当事者のコンピュータにとって利用可能な非秘密情報を有する。こうしたエントロピー保存キー逆変換関数を使用することにより、単に受信側が回復情報を確認するために、追加の秘密情報を受信側に伝達しなければならない必要性を回避する。
【００２２】
【発明が解決しようとする課題】
Micaliシステムに比較して、前記Johnsonらによる出願Ｉ及びＩＩ、並びにLipnerらによるシステムは、キーが実際に回復されるときまで、キー回復エージェント・システムの関与を要求しない。しかしながら、Johnsonらのシステム及びLipnerらのシステムの両者は、各新たなセッション・キーに対して、キー回復エージェント・システムの公開キーによる、新たなキー回復値の暗号化を要求する。公開キー暗号化は、計算的に高価な演算であり、各新たなセッション・キーに対してこの演算を実行することは、キー回復システムの計算オーバヘッドを多大に増加させる。
【００２３】
【課題を解決するための手段】
本発明は、キー回復を処理するシステムを考慮する。これはキー回復情報の一部を１度だけ生成し、次に複数の暗号化データ通信セッション及び暗号化ファイル・アプリケーションのために使用することにより、Johnsonらによる上述の出願で述べられるシステムを改良する。特に、１度だけ生成されるキー回復情報の前記部分が、公開キー暗号化操作を要求する部分である。従って、本発明は、前記Johnsonらによる出願で要求される高価な公開キー暗号化操作を低減する方法を提供する。
【００２４】
従来技術と異なり、本発明は、キー回復エージェント・システムの公開キーに従い、キーを暗号化する（すなわち、キー回復プロトコルを介して、キーが保護され、回復される）ことを考慮せず、更にキーを要素若しくは断片、またはシェアに分割し、これらの秘密のキーの要素若しくは断片、またはシェアを、キー回復エージェント・システムの公開キーに従い暗号化することを考慮しない。
【００２５】
本発明では、キー回復エージェント・システムの公開キーに従い暗号化され、キー回復のステップを実行するために、要求元当事者のコンピュータが結局キー回復エージェント・システムに提供する情報が、ランダムに生成されるキー（キー生成キーと呼ばれる）のセットを含む。これらのキーは、キー回復プロトコルを用いて保護及び回復されるように意図されるキーとは独立であり、無関係である。実際、生成されるキー生成キーは、キー回復プロトコルに従い保護されるキーの値またはキーを知る以前に、キー回復エージェント・システムの公開キーにより暗号化され得る。従って、本発明は、高価な公開キー操作が、（潜在的に）装置またはシステムの処理負荷が軽いときに、実行されることを可能にするか、或いはこれらの操作が、保護されるキーがキー回復システムにより処理されるときに実行されなければならない場合、要求処理が期待されるよりも潜在的に長い時間に及ぶようにする。そして、本発明は、高価な公開キー操作が１度だけ実行されるようにし、次にキー回復プロセスにおいて、潜在的に長い期間にわたり、複数のキーの回復を可能にするために使用されるようにする。
【００２６】
本発明のキー回復方法と、従来方法との１つの違いについて説明する。本発明のキー回復方法は、Giffordにより提案された暗号封印（cryptographic sealing）と呼ばれる保護機構にもとづく（D．K．Giffordによる"Cryptographic Sealing for Information Secrecy and Authentication"、Communications of the ACM、vol．25、No．4、pp．274-286、April 1982参照）。Giffordによれば、保護機構がオブジェクトをキーにより封印する思想にもとづく。この保護機構は、封印済みのオブジェクトが、そのオブジェクトを封印するために使用されたキーを開封するためのキーのセットを有さない者にとって、無益なものであることを示す秘密性の特性を提供する。暗号封印はDenningにより、更に詳細に述べられる（D．E．Denningによる"Cryptography and Data Security"、Addison-Wesley Publishing Company、Reading、Massachusetts、1982、pp．229-230参照）。Denningは、暗号封印は、"ロック・アンド・キー機構"の例であると言っている。Denningによれば、データの暗号化は、"それにロックを掛けることであり、これは解読キーによってのみロック解除され得る"。ＸがキーＫにより暗号化されるオブジェクトである場合、Ｘへのアクセスは、Ｋを要求する。Ｋへのアクセスは、"オープナ（opener）"をＸに関連付けることにより制御され得る。オープナは、異なる種類のシェアリング（分配方式）、すなわちＯＲアクセス、ＡＮＤアクセス、及び定足数アクセスを提供し得る。異なる種類のオープナの各々について、述べることにする。
【００２７】
ＯＲアクセスでは、Ｋはｎ個の解読変換Ｄ１、Ｄ２、．．．、Ｄｎのリスト内の任意のＤｉにより、回復され得る。オープナＲは、リストＲ＝（Ｅ１（Ｋ）、Ｅ２（Ｋ）、．．．、Ｅn（Ｋ））により定義される。ここでＥｉは、Ｄｉに対応する暗号変換である。例えば、（Ｅｉ、Ｄｉ）はＲＳＡ公開及び秘密キー対である。ＫはＥｉの各々に従い別々に暗号化されるので、Ｄｉを有する任意の人間またはプロセスが、Ｋを解読し、獲得することができる。
【００２８】
ＡＮＤアクセスでは、解読変換Ｄ１、Ｄ２、．．．、Ｄｎのリスト内のあらゆるＤｉが、Ｋを回復するために存在しなければならない。ここではオープナＲは、Ｒ＝Ｅｎ（Ｅｎ−１（．．．Ｅ２（Ｅ１（Ｋ））．．．））により定義される。あらゆるＤｉが、Ｋを解読し、回復するために存在しなければならない。
【００２９】
定足数アクセスでは、ＫがリストＤ１、Ｄ２、．．．、Ｄｎ内のｔ個のＤｉの任意のサブセットから回復され得る。ここでＲは、リストＲ＝（Ｅ１（Ｋ１）、Ｅ２（Ｋ２）、．．．、Ｅｎ（Ｋｎ））により定義され、各Ｋｉは、（ｔ、ｎ）しきい値機構またはキー・シェアリング機構におけるＫの秘密シェアである。ｔ＝ｎの場合、キーＫを復元するために、全てのＫｉが回復されなければならず、従って、Ｋを回復するために、リストＤ１、Ｄ２、．．．、Ｄｎ内のあらゆるＤｉが存在しなければならない。
【００３０】
本発明のキー回復保護機構は、GiffordのＡＮＤアクセス暗号封印機構にもとづく。Ｋがキー回復機構により保護されるキーを表す場合、Ｋが１つ以上の擬似乱数的に生成されるキー暗号化キーＫＫ１、ＫＫ２などに従い暗号化される。キー暗号化キー（ＫＫ１、ＫＫ２など）は、特定のプロセスを介して、前述のキー生成キー（ＫＧ１、ＫＧ２など）から導出される。このプロセスは、任意のＫＫキーの知識がＫＧキーの算出を可能にしないことを保証し、キー回復エージェント・システムが１つ以上のキー暗号化キーを開示することを可能にすると同時に、残りの開示されないキー暗号化キーの秘密性を防御する。従って、本発明は、キー回復エージェント・システムに提供されるキー生成キー、及び単一のキー生成キー及び他の情報から、１方向ハッシュ関数を用いて導出される複数のキー暗号化キーを含むキー階層を考慮する。従って、本発明では、キー生成キーから導出される異なるキー暗号化キーが、キー回復機構を介して保護されるキーを暗号化するために使用される。このことは、公認の要求にもとづき、保護されたキーを解読及び回復するために必要な適切なキー暗号化キーだけを解放することにより、キー回復エージェント・システムに、保護されたキーに対する細分アクセスを与える手段を提供する。
【００３１】
本発明では、暗号化値Ｋが、伝送される暗号化メッセージまたは記憶される暗号化データ・ファイルに付加される。それにより、（必要に応じて）それがキー回復を容易にするために使用可能なように保証する。例えば、ＫがＫＫ１及びＫＫ２により暗号的に封印（暗号化）され、暗号化値ｅＫＫ１（ｅＫＫ２（Ｋ））が暗号化メッセージまたはファイルに付加される場合、暗号化データをアクセスしたい要求元当事者のコンピュータは、キー回復エージェント・システム１からＫＫ１を、またキー回復エージェント・システム２からＫＫ２を獲得することにより、最初にＫを回復し（すなわちキー回復のステップを実行する）、次にＫＫ１及びＫＫ２を用いて、ｅＫＫ１（ｅＫＫ２（Ｋ））を解読し、最後に回復されたＫ値により、暗号化データを解読する。キー暗号化キーＫＫ１、ＫＫ２などは擬似乱数的に生成されるので、ＫＫ１、ＫＫ２などをサポートするキー管理及びキー構造基盤が、キー回復機構により回復されるように意図されるキーＫと独立にされ得ることが、明らかである。
【００３２】
それに対して、Micaliにより述べられるキー回復の方法（米国特許第５２７６７３７号及び同５３１５６５８号）は、キー・シェアリングにもとづく。キー・シェアリングにより、キーＫが最初に秘密シェアのセットに分割される。秘密シェアは、受託機関の対応セットにエスクロウすなわち提供される。公認の当事者のコンピュータは、（１）最初に、必要な数の秘密シェアを要求し、それらを受諾者から獲得し、次に（２）秘密シェアを結合し、Ｋを再生することにより、オリジナル・キーＫを回復することができる。
【００３３】
同様に、Lipnerらにより述べられるキー回復方法（米国特許５５５７３４６号及び同５５５７７６５号）は、キー分割にもとづき、キーの"半分"を乱数に等しくセットし、他の"半分"を乱数とキーとのＸＯＲ結果に等しくセットすることにより、達成される。
【００３４】
Schneierは、秘密の分割を、メッセージを断片に分割することとして定義する（Bruce Schneierによる"Applied Cryptography"、Second Edition、John Wiley & Sons、Inc、New York、1996、pp．70-71参照）。Schneierにより提供される例は、３つのランダム・ビット・ストリングＲ、Ｓ、Ｔを生成し、次に従属ビット・ストリングＵ＝Ｍ xor Ｒ xor Ｓ xor Ｔを計算することにより、メッセージＭが分割され得ることを示す。ここでＭは、Ｒ、Ｓ、Ｔ及びＵを排他的論理和することにより、再生され得る。また、Lipnerら、及びSchneierによる後の教示から、一般的で好適な分割方法は、分割される量に等しいサイズの１つ以上の乱数の生成、並びに、等しいサイズの１つの従属値の計算（例えば、乱数と分割される量との排他的論理和結果）を含む。従って、Lipnerら並びにSchneierは、キーまたはメッセージの分割が、少なくとも１つの従属値の計算を含み、これが分割されるべき量が知られた後にのみ、計算され得ることを示す。そのため、キー分割の場合、キーの割振りまたは部分は、Ｋが知れるまで、受託機関（すなわちキー回復エージェント・システム）の公開キーに従い暗号化され得ない。
【００３５】
同様に、前記Johnsonらによる出願ＩＩにより生成されるＰ及びＱ値は従属値であり、これはＫ値が知られた後にのみ、生成され得る。従って、前記Johnsonらによる出願ＩＩは、キー回復を容易にするために必要とされるＰ及びＱ値が、Ｋ値が知れるまで暗号化されないという欠点を有する。
【００３６】
前記Johnsonらによる出願Ｉにより生成されるＰ及びＱ値は、全くランダムに生成される値であり、従って、Ｋの値が知れる以前に生成され得り、またＫの値が知れる以前に、キー回復エージェント・システムの公開キーに従い暗号化され得る。しかしながら、前記Johnsonらによる出願Ｉで述べられるキー回復方法は、キーＫが独立なキー値でないという欠点を有する。代わりに、キーＫが独立に生成されるＰ及びＱ値から計算され、このことは、キー回復方法が全ての形態のキー分配をサポートしないことを意味する。この場合、キーがキー回復によりサポートされるキー分配プロトコルを介して分配される場合に限り、キー回復機構を使用できる。それに対して、本発明は、キーＫが任意のキー分配プロトコルにより分配され得るという利点を有する一方で、Micaliにより述べられるキー・シェアリングにもとづくキー回復機構、或いはLipnerらにより述べられるキー分割にもとづくキー回復機構の欠点を回避する。
【００３７】
データへのアクセスを制御する目的で、２つ以上のキーに従いデータ（この場合、キーの変わりにメッセージ）を暗号化する方法が、Chaumにより述べられる（D．L．Chaumによる"Untraceable Electronic Mai、 Return Address、and Digital Pseudonyms"、Communications of the ACM、Vol．24、No．2、pp．84-88、Feb．1981参照）。Chaumは、各ユーザが公開キー及び秘密キー対を有するメール・システムについて述べており、そこではＫａがアドレスＡを有する受信人の公開キーである。このメール・システムはまた、"ミックス"と呼ばれるコンピュータを含み、これはメールの各項目を、それが配送される以前に処理する。関係者は、アドレスＡの関係者に配送するメッセージＭを、受信人の公開キーＫａにより封印し、アドレスＡを付加し、次に結果をミックスの公開キーＫ１により封印することにより、準備する。従って、各メッセージＭが２重に暗号化される。すなわち、これは受信人の公開キーＫａ、及びミックス・コンピュータの公開キーＫ１により暗号化される。ミックスは各入力を解読し、受信人Ａの公開キーＫａに従い暗号化されたメッセージを、受信人に転送する。ミックスの目的は、ミックスへの入力のメッセージと、ミックスの出力のメッセージとの間の対応を隠すことである。
【００３８】
Meyer及びMatyasは、キー（ＫＳＴＲ）が２つのキー（ＫＴＲ１及びＫnode）に従い暗号化され、２重に暗号化されたキー値ｅＫnode（ｅＫＴＲ１（ＫＳＴＲ））を形成する教示を提供する（C．H．Meyer及びS．M．Matyasによる"Cryptography"、John Wiley and Sons、Inc．、New York、1982、p．558参照）。この方法はまた、Brachtlらによる米国特許第４７５５９４０号"Transaction Security System"でも述べられている。電子資金（electronic funds）ネットワーク内では、時間変化キーＫＳＴＲがランダムに生成され、最初にキーＫＴＲ２に従い暗号化され、２番目にキーＫnodeに従い暗号化される。ここでＫnodeは時間変化システム・キーであり、ＫＴＲ１は、利用者にだけ知れる個人キーから導出されるキーであり、利用者にだけ知れる秘密のＰＩＮ（個人識別番号）である。従って、秘密のキーＫＳＴＲを回復するためには、システムが保持するキーＫnode、並びにユーザ保持情報から導出されるユーザ・キーＫＴＲ１を知る必要がある。
【００３９】
更に議論され得る秘密シェアリングの２つの場合、すなわち（１）Ｋが従属キーである場合、または（２）Ｋが独立キーである場合が存在する。Ｋが従属キーの場合、秘密のシェアの各々が独立に生成されるランダム値である、単純なキー・シェアリング機構が考案され得る。例えば、Micaliによる米国特許第５２７６７３７号で述べられるように、インタバル［１，ｐ−１］内で５つのランダム整数ＲＮ１、ＲＮ２、．．、ＲＮ５を生成し、Ｋをそれらの合計をｐ（ｐは素数）で除算した剰余として定義することができる。値ＲＮ１、ＲＮ２、．．、ＲＮ５は、秘密シェアである。しかしながら、本発明は、単純キー回復（ＳＫＲ）（本発明のキー回復を指す）により保護されるキーＫが、独立のキー・トランスポートまたはキー同意プロトコルを用いて得られる任意のキーである回復機構を提供しようとする。そのため、本発明は、Ｋが従属キー値であることを許可しない。従って、秘密シェアリング機構が使用される場合、Ｋが独立キー値である秘密シェアリング機構を使用する必要がある。しかしながら、Ｋが従属キーである秘密シェアリング機構では、秘密シェアの少なくとも１つが、従属値でなければならない。例えば、３つの秘密シェアが存在する場合、秘密シェアの多くて２つが、独立なランダムに生成される値であり得る。値の１つは、２つの独立なシェア及びキーＫから計算されなければならない。例えば、インタバル［１，ｐ−１］内で、４つのランダム整数ＲＮ１、ＲＮ２、．．、ＲＮ４を生成することができる。更に、Ｋがインタバル［１，ｐ−１］内の整数であり、ＲＮ５をＲＮ１、ＲＮ２、ＲＮ３、ＲＮ４及びＫの合計を、ｐで除算した剰余として定義するものと仮定する。従って、Ｋが独立キー値である場合、秘密シェアリングにおいて、次のことが言える。
１．秘密シェアの少なくとも１つは、Ｋの値が知られた後に計算されなければならない。
２．全ての秘密シェアは保護されなければならない（すなわち、秘密にされなければならない）。暗号化が使用される場合、少なくとも１つの暗号化は、Ｋが知られた後にだけ、実行され得る。
【００４０】
キー分割は、キーを割振りまたは部分に分割する技法であり、そこではキーが入力として指定される。すなわち、Ｋは独立キー値である。従って、キー分割は、秘密シェアリングまたはキー・シェアリングと同じ欠点を有する。すなわち、少なくとも１つの秘密シェア若しくは割振りまたは部分が、Ｋが知られた後にだけ暗号化され得る。そして、シェア若しくは割振りまたは部分が、公開キーにより暗号化される場合、高価な公開キーの全ての暗号化が、Ｋを知る以前に実行され得る訳ではない。
【００４１】
従って、本発明は、暗号封印により、キー・シェアリングまたはキー分割の欠点を回避しようとする。そこでは独立なランダム秘密値またはキーから計算される従属値が、秘密のシェアではなく、暗号化されたＫであり、またＫが公開キー・アルゴリムではなく、対称キー・アルゴリズムにより暗号化される。その場合、暗号化操作は公開キー暗号化操作よりも大いに高速であり、暗号化されたＫが秘密シェアと違って、公開値として処理され、暗号化データと一緒に伝送または記憶されるＳＫＲ情報内で、"利用可能にされる"。
【００４２】
１つのキー生成キー（ＫＧ）から、複数のキー暗号化キー（ＫＫ１、ＫＫ２など）などの複数のキーを生成する概念は、既知である。例えば、Working Draft American National Standard X9．42-1995の"Public Key Cryptography For The Financial Services Industry：Establishment Of Symmetric Algorithm Keys Using Diffie-Hellman"、October 26、1995は、１つの共用秘密番号から複数のキーを生成する、暗号キー導出と呼ばれる方法について述べている。これは入力を１方向関数によりハッシュすることにより達成され、そこでは入力が、共用秘密番号及び、少なくとも当事者のコンピュータ当たりのデータ（PerPartyData）を含む公開情報の連結として定義される。当事者のコンピュータ当たりのデータ内容は、キー管理プロトコルにより定義される。例えば、当事者のコンピュータ当たりのデータは公開キー回復情報を含み得り、それにより特定のデータ・キーに関連する情報（キー回復機構により保護される）を、生成される特定のキー暗号化キーに関連付ける。
【００４３】
本発明では、既に述べたように、複数のキー暗号化キー（ＫＫ）が１つのキー生成キー（ＫＧ）から生成される。従って、本発明のキー回復プロセスは、複数のキー（Ｋ１、Ｋ２など）、例えば複数のデータ・キー（セッション・キーまたはファイル・キー）が、キー回復機構を介して保護されることを可能にする。これは、異なるキー暗号化キーを用いて、各キー（Ｋ１、Ｋ２など）を暗号化することにより、達成される。キー暗号化キーは、関連する安定で長寿命のキー生成キーから生成される。本発明では、キー生成キーがキー回復エージェント・システムの公開キーに従い、暗号化される。従って、キー回復を達成するために、そのように暗号化されたキー生成キーがキー回復エージェント・システムに提供され、キー回復エージェント・システムがキー生成キーを解読し、回復されたキー生成キーを用いて、適切なキー暗号化キーを生成し、キー暗号化キーが公認の要求元当事者のコンピュータに返却される。要求元当事者のコンピュータは次に、暗号化データに付加された暗号化キー値を解読する。従って、本発明のキー回復機構は、高価な公開キー暗号化操作（すなわちキー生成キーを暗号化する）が１度だけ実行され、複数のキーの回復を可能にするために必要とされるキー暗号化キーを生成するために、潜在的に長期間にわたり、複数回使用されることを可能にする。従って、本発明では、キー回復エージェント・システムに提供される秘密値が、潜在的に長寿命のキー生成キーであり、またキーがキー回復機構により保護されるようにキーを暗号式に封印するために使用される秘密値が、キー暗号化キーである。そして、キー暗号化キーが、これらのキー生成キーから、キー導出プロシジャにより導出される。キー導出プロシジャは、導出されるキー暗号化キーを、キー回復機構により保護されるキーに関連付けられる固有の公開キー回復情報に、強く結合する。
【００４４】
それに対して、Micaliのキー回復機構（米国特許第５２７６７３７号及び同５３１５６５８号）は、受託機関に提供されるキーの秘密シェアが、受託機関により公認の要求元当事者のコンピュータに返却される秘密シェアと、同一であることを示す。同様に、Lipnerらのキー回復機構（米国特許第５５５７３４６号及び同５５５７７６５号）は、エスクロウ・エージェントに提供されるキーの秘密部分または割振りが、エスクロウ・エージェントにより公認の要求元当事者のコンピュータに返却されるキーの秘密部分または割振りと、同一であることを示す。更に、Micali及びLipnerらは、秘密シェア及び秘密キーの部分または割振りが、受託機関またはエスクロウ・エージェントの公開キーに従い、それらを暗号化することにより保護され得ることを示す。その場合、Micali及びLipnerらにより開示される方法は、各秘密キーがキー回復機構により保護されるために、高価な公開キー暗号化の実行を要求する。
【００４５】
本発明はまた、各キー回復エージェント・システムが少なくとも１対の公開キー及び秘密キーを有することを考慮する（公開キー暗号化を使用する）。しかしながら、キー回復エージェント・システムは、分離の特定の細分性を提供するために、こうした公開キー及び秘密キーを２対以上有し得る。これらのキーは、キーの弱体化のために、若しくはキーの懐疑的な弱体化のために、またはキーの新鮮さを維持するキーの自動的ロールオーバのために、変更され得る。
【００４６】
本発明はまた、キー回復エージェント・システムが国境などの管轄権範囲、または１国若しくはより大きなグループを形成するように結合される複数の国の定義領域を含む管轄権を有するように考慮する。
【００４７】
本発明はまた、組織がそれら自身のキー回復エージェント・システムとして機能するように考慮する。その場合、組織は随意に、キー回復サービスの公認ユーザを、自身の組織の従業員または特定の他のユーザの定義セットに制限し得る。
【００４８】
本発明はまた、ユーザが自身のキー回復エージェント・システムとして機能したい場合を考慮する。
【００４９】
本発明は更に、組織及びユーザが自身の公開及び秘密キー対を生成したいが、キーの秘密部分を特定の他のキー回復エージェント・システムに提供したい場合を考慮する。この場合、キー・エージェントはそれらの組織またはユーザのために、提供されたキーの秘密部分を用いて、キー回復の要求ステップを実行することができる。この後者の場合では、キー回復エージェント・システムが組織またはユーザのキーの秘密部分を保持することが考慮され、キー回復の必要ステップを容易にするために、キーのその秘密部分を使用する能力を有するが、秘密キー部分自体の値を知らなくてもよい。本発明により述べられるキー回復機構は、上述の各々の及び全ての環境において、機能することができる。
【００５０】
本発明では、回復エージェントの集合と回復サービス（または法執行）との間に、知識の強い区分が存在する。知識のこの区分は、決して橋渡しされない。すなわち、回復エージェントは決して回復サービスに彼らの完全な秘密を漏らさず、また回復サービスは決して回復エージェントに、Ｋに関する情報を漏らさない。従って、任意のキーＫの回復のために、全ての回復エージェント並びに回復サービスが協動しなければならない。特に、
１．法執行がＫＫｘ（ＫＫｙ（Ｋ））を保持するので、集合的に回復エージェントは、Ｋに関する知識を有さない。ここで前記表記は、ＫがＫＫｙにより暗号化され、結果がＫＫｘにより暗号化され、それをいずれのエージェントにも明かさないということを意味する。従って、全てのエージェントが協動したとしても、彼らはＫを回復することができない。それに対して、Micali及びLipnerらによる方法では、エージェントが集合的に、キーを回復するために十分な情報を有する。
２．法執行は、所与のＫの合法的回復の後でさえも、決してＳまたは任意の導出されるＫＧを習得しない。エージェントは、あるセッションに特定のＫＫだけを返却する。上述のように、このことは暗号化されたＫＧが再利用されるために必須であるが、より一般的には、エージェントは決して彼らのＫＧを明かさないので、エージェントの協動無しには、回復が達成され得ないことを保証する。
【００５１】
本発明は、キー回復エージェント・システムに提供される秘密情報、またはキー回復エージェント・システムに提供される秘密情報から導出される秘密情報へのアクセスを許可する、新たな方法を考慮する。例えば、本発明では、秘密のキー生成キーが、キー回復エージェント・システムの公開キーに従い暗号化される。そして次に、キー生成キーが、キー暗号化キーを生成するために使用される。セッション通信または蓄積・交換電子メール・アプリケーションでは、キー暗号化キーが、個々のデータ・キー（セッション・キーまたはデータ暗号化キー）を暗号化するために使用され得る。更に、法執行が、有効な法廷指令または令状により、キー回復エージェント・システムから、必要なキー暗号化キーを獲得できるように考慮され、それにより、彼らが暗号化メッセージに付加される暗号化されたデータ・キーを解読し、次に暗号化された通信またはメールを解読できるようにする。同様に、暗号化されたファイルが伝送されるか、システム内に記憶される場合、こうした暗号化ファイルの送信者または受信者が、ファイル・キーの自身のコピーが損傷されたり、偶然消去されたことを発見できるように考慮される。その場合、送信者または受信者は、本発明のキー回復機構を用いて、キーを回復しようとするであろう。暗号化ファイルの送信者または受信者がデータを回復することを可能にするため、本発明は、キー回復エージェント・システムが、情報を受信する資格のある正当な当事者のコンピュータ以外の者に、秘密情報（例えば、キー生成キーから生成されるキー暗号化キー）を明かさないで済むようにする、新たな機構を提供する。
【００５２】
受託機関による、エスクロウとして預託されたデジタル秘密の不注意な露呈を防止する方法が、Fischerにより示される（米国特許第５４３６９７２号）。Fischerの機構では、ユーザは秘密のパスワードを有し、これがエスクロウとして預託される。このパスワードが、対称ＤＥＳキーを導出するために使用され、これがユーザの秘密（すなわち、ユーザが保護したい秘密）を暗号化するために使用される。しかしながら、任意の秘密がエスクロウとして預託され得、本発明は、パスワードだけの預託に限るものではない。本発明では、ユーザが、パスワードと一緒に自己識別データを含むエスクロウ記録を定義し、情報のこの組み合わせが受託機関の公開キーにより暗号化される。この暗号化記録が、エスクロウ・セキュリティ記録として、ユーザのコンピュータに記憶される。ユーザのパスワードから導出されるキーが、次にユーザのディスク上の全てのデータを暗号化するために使用される。ユーザが自身のパスワードを忘れた場合、本発明の検索フェーズが実行される。この場合、ユーザはエスクロウ・エージェントと連絡し、自身の識別を明確に確立するのに十分な証明書を提供する。また、自己識別データ及びパスワードを含む暗号化エスクロウ記録が、エスクロウ・エージェントに提供される。エスクロウ・エージェントはエスクロウ記録を、キーの秘密部分により解読し、証明書を自己識別データと検証し、ユーザが適正に確認される場合だけ、パスワードをユーザに提供する。
【００５３】
しかしながら、Fischer機構の欠点は、秘密パスワード及び自己識別データの結合が、これらの２つの情報片をエスクロウ・エージェントの公開キーにより、１つの単位として暗号化することにより、実行されることである。本発明において、これと同種の検証シーケンスを実行することは、不利である。なぜならその場合、受信者（Bob）が、送信者（Alice）から受信され、キー回復エージェント・システムの公開キーに従い暗号化された情報を、確認できないからである。これは、BobがAliceの自己識別データを知らず、更にAliceが通常その自己識別データをBobに知られたくないということによる。従って、Bobが、Aliceから受信され、キー回復エージェント・システムの公開キーに従い暗号化された情報を確認するステップを実行するために、Aliceが、Bobに彼女の自己識別データをBobに知られたキーに従う暗号化形式で送信するということは、意味をなさない。
【００５４】
従って本発明では、自己識別データを秘密、すなわちキー生成キーＫＧから導出される秘密値と結合するために、別の手段が使用される。本発明では、キー生成キー及び、受信者（Bob）に知れる、或いはキー回復プロトコルに従い受信者が知ることのできる他の情報（秘密または公開される）が、キー回復エージェント・システムの公開キーに従い、暗号化される。このことは、受信者（Bob）が、彼が知るデータから入力を再生し、入力を彼が知るキー回復エージェント・システムの公開キーにより暗号化し、このようにして生成された暗号化値を、送信者（Alice）から受信される暗号化値と比較することにより、受信される暗号化量を確認することを可能にする。従って、Bobは２つの暗号化値が等しければ、送信者（Alice）から受信される値が妥当と検証することができる。
【００５５】
本発明では、秘密（例えばキー生成キーから導出される値）が自己識別データと結合され（例えばこれらの値を連結することによる）、結果のデータ・ブロックを強力な１方向ハッシュ関数（例えば連邦情報処理標準（Federal Information Processing Standard）、ＦＩＰＳ  ＰＵＢ  １８０−１セキュア・ハッシュ規格（１９９５年４月）で述べられるセキュア・ハッシュ・アルゴリズムＳＨＡ−１を使用）によりハッシュする。この結果のハッシュ値が、次に暗号化データと一緒に、例えば暗号化ファイルのヘッダ記録に記憶される。AliceからBobに送信される暗号化ファイルの場合、Bobもまた彼自身の自己識別データ及び、彼が知る秘密（ＫＧから導出される秘密）を使用することにより、類似のハッシュ値を生成し、それをファイル・ヘッダ記録に記憶する。
【００５６】
AliceまたはBobが後に、ＫＧから導出されるキーの１つを回復したい場合、彼らは証明書のセットを適切なハッシュ値と一緒に、キー回復エージェント・システムに提供しなければならない。キー回復エージェント・システムはこの証明書を、ユーザにより提供される自己識別データに対して検証する。キー回復エージェント・システムは次に、ハッシュ値を生成するために、ＳＫＲシステムにより使用されたのと同じプロシジャを用いて、自己識別データ及び、ＫＧから導出される秘密値を含む入力ブロックを形成する。結果のデータ・ブロックが次に、ＳＫＲシステムにより使用されたのと同じハッシュ・アルゴリズムによりハッシュされ、結果のハッシュ値が、ユーザにより提供されるハッシュ値と等しいかどうか比較される。２つの値が等しい場合、キー回復エージェント・システムは、ユーザが有効であり、従って所望の秘密（例えばキー生成キーから導出されるキー暗号化キー）を受信する資格を有すると結論する。
【００５７】
本発明はまた後述のように、キー処理シャッフラ関数（keyed shuffler function）を用いる、新たな形式の暗号化を考慮する。
【００５８】
【発明の実施の形態】
本発明で考慮されるキー回復システムは、ここでは単純キー回復（ＳＫＲ）システムとして参照される。ＳＫＲキー回復情報が生成されたキーは、ＳＫＲ保護キーとして参照される。ＳＫＲ保護キーは任意のタイプの保護キーであるが、議論は主にデータ・キーに限られよう。データ・キーは、セッションまたは電子メール・アプリケーションにおいて伝送されるメッセージを暗号化するために使用されるキーであるか、或いは、データ・ファイルを暗号化するために使用されるキーである。任意的に、ユーザは所与のＳＫＲ保護キーの一部だけを明かし得る。
【００５９】
通信は２つ以上の当事者のコンピュータ間で可能であるが、議論は主に２つの当事者のコンピュータ間通信に限られよう。しかしながら、当業者には、ＳＫＲプロトコルが３つ以上の当事者のコンピュータにも容易に拡張され得ることが理解されよう。ＳＫＲプロトコルは、送信者と受信者がリアルタイムに対話するセッション通信、並びに、電子メール及びファイル転送アプリケーションなどの、送信者と受信者がリアルタイムに対話しない蓄積・交換通信をサポートする。また、ＳＫＲプロトコルは、単一のユーザまたはアプリケーションに関連するファイル・アプリケーションをサポートする。後者の場合、データ・ファイルを生成するアプリケーションまたはユーザが、データ・ファイルを検索するアプリケーションまたはユーザと同一である。
【００６０】
一般的環境：
図１は、本発明のキー回復システムが使用され得る通信システム１００を示す。システム１００では、国Ｘの送信者１０２（"Alice"）が、国Ｙの受信者１０４（"Bob"）と、通信チャネル１０６を通じ、１つ以上の暗号化メッセージを伝送するか（通信セッションまたは電子メール・アプリケーションを構成する）、１つ以上の暗号化ファイルを伝送する（ファイル転送アプリケーションを構成する）ことにより通信する。送信者１０２及び受信者１０４は各々、コンピュータ・ワークステーションを含み得り、これは好適には、後述の暗号化機能及びキー回復機能を提供するようにプログラムされる。図１の例は、送信者１０２及び受信者１０４が異なる国（Ｘ及びＹ）に居るように仮定されるが、本発明は１つの国の中でも使用され得る。
【００６１】
図１の例は特に、２つの異なる通信当事者（Alice及びBob）のコンピュータが存在する場合を扱う。しかしながら、この２つの当事者のコンピュータモデルは、Aliceがファイルを暗号化する１当事者のコンピュータモデルについても（ある程度）説明する。その場合、ファイル暗号化アプリケーションが蓄積・交換アプリケーションとして見なされ、そこではBob＝Aliceであり、ファイル送信操作（Aliceが送信者として振る舞う）とファイル受信操作（Aliceが受信者として振る舞う）との間に、長い時間が存在する。しかしながら、これらの各々の場合において、プロトコルに影響する明らかな違いについては、説明の中で指摘する。
【００６２】
図１の説明を続けると、伝送メッセージが送信者１０２により、データ暗号化キーを用いて暗号化され、受信者１０４により、対応するデータ解読キーを用いて解読される。対称暗号化機構（例えばＤＥＳ）が使用される場合、データ暗号化キー（データ解読キーでもある）は、キー回復の目的のための"秘密の"データ・キー（すなわちＳＫＲ保護データ・キー）である。しかしながら、本発明はデータ・キーの保護に制限されるものではない。ＳＫＲシステムはまた、任意の秘密キーに対するキー回復サービスを提供するためにも使用され得る。例えば、非対称の暗号化機構（例えばＲＳＡ）が使用される場合、後述のように、キーの秘密部分が、キー回復の目的のための"秘密の"ＳＫＲ保護キーである。
【００６３】
（この特定の例では）１対のキー回復エージェント・システム１０８及び１１０が、国Ｘにおいて選択され、１対のキー回復エージェント・システム１１２及び１１４が、国Ｙにおいて選択される。キー回復エージェント・システムの確立は、汎用公開キー構造基盤の確立の一部として実施されよう。各キー回復エージェント・システムは、少なくとも１対の公開及び秘密キー（ＰＵ、ＰＲで表される）を有する。国ＸにおけるAliceの２つのキー回復エージェント・システムのキーの公開部分及び秘密部分は、（ＰＵｘ１、ＰＲｘ１）及び（ＰＵｘ２、ＰＲｘ２）であり、国ＹにおけるBobの２つのキー回復エージェント・システムのそれらは、（ＰＵｙ１、ＰＲｙ１）及び（ＰＵｙ２、ＰＲｙ２）である。これはAliceとBobが、公開キー暗号手法（例えばＲＳＡ、Diffie-Hellmanまたは楕円曲線アルゴリズムを使用する）を使用し、特定のＳＫＲ情報を暗号化及び保護することを可能にし、これは例えば、キー回復エージェント・システムによるこの情報の解読を要求することが必要になるまで、継続される。
【００６４】
通信チャネル１０６を介する通信は、国Ｘ及びＹのそれぞれ法執行エージェント１１６及び１１８を含む第３者により、傍受にさらされると想定される。暗号化通信を傍受する政府以外の第３者は、１つ以上の暗号解読技術を成功裡に使用しない限り、通信を解読できない。一方、正当な権限を有する法執行機関１１６または１１８は、後述のように、その国のキー回復エージェント・システム１０８、１１０または１１２、１１４を利用して、ＳＫＲ保護キーを回復することができ、送信者（Alice）または受信者（Bob）も、類似のプロシジャにより、ＳＫＲ保護キーを回復することができる。
【００６５】
２フェーズ・プロトコル：
本発明は、暗号化通信が実施される、または暗号化ファイルが生成される国または国々の法及び規制に従い、暗号化通信または暗号化ファイル内に、キー回復情報を埋め込む２フェーズ・システムを要求する。
【００６６】
図２はＳＫＲ通信プロセス１２０の２つのフェーズ、すなわちフェーズ１  １２２及びフェーズ２  １２８を示す。フェーズ１  １２２では、通信当事者（Alice及びBob）のコンピュータが共通のランダム・シード（Ｓ）１２４を確立し、そこから各回復エージェント（図２では示されない）に特定のランダムなキー生成キー（ＫＧ）が導出される。ＫＧは、それらをそれぞれのエージェント（図２では同様に示されない）の公開キーにより暗号化することにより、彼らにとって利用可能となる。暗号化されたＫＧは、Aliceにより準備され、Bobに送信されるＳＫＲブロック１（Ｂ１）１２６内に含まれる。
【００６７】  ランダム・シード（Ｓ）１２４が確立される態様は、通信環境に依存する。対話セッションでは、AliceとBobがＳを対話により確立するか（例えば、Diffie-Hellman２パス・プロトコルを使用する）、或いはAliceがＳを生成し、それをBobに送信する（例えば、ＲＳＡキー・トランスポート・プロトコルまたはDiffie-Hellman１パス・プロトコルを使用する）。蓄積・交換アプリケーションでは、上述のようにAliceがＳをBobに送信するが、Alice及びBobが、Ｓを対話式に確立するための特殊なセッションをセットアップすることが可能である。ファイル暗号化アプリケーションでは、Bob＝Aliceであり、Aliceが単にＳを生成して記憶し、次に暗号化されたＫが、Aliceにより準備され記憶されるＳＫＲブロック１に含まれることにより、後にそれが回復プロセスにより必要とされるまで、利用可能になる（すなわち、これはAliceからAliceに長い時間遅延を伴って送信される）。
【００６８】
フェーズ２  １２８では、通信当事者（Alice及びBob）のコンピュータが秘密データ・キーＫ１３０を確立する。Ｋを確立するために、任意のキー・トランスポートまたはキー同意機構が使用され得る。なぜなら、Ｋを確立する手段は、ＳＫＲシステムとは独立であるからである。暗号化された通信セッションまたは蓄積・交換伝送が所望される場合、（階層的キー導出プロシジャを介して）記憶済みＫＧから導出されるキー暗号化キー（ＫＫ）に従う対称暗号化により、データ・キー（Ｋ）が回復のために利用可能になる。可能であれば、暗号化されたＫの一部Ｒを隠すことにより、データ・キーの一部だけが、回復情報内で利用可能になる。暗号化されたＫまたはその一部（部分Ｒが保存される場合）が、Aliceにより準備されたＳＫＲブロック２（Ｂ２）１３２内に含まれ、彼女はこれをBobに送信する。ファイル暗号化アプリケーションでは、Bob＝Aliceであり、Aliceが単にＫを生成して記憶し、暗号化されたＫが、Aliceにより準備され記憶されたＳＫＲブロック２に含まれることにより、後に回復プロセスにより必要とされるまで、利用可能になる（すなわち、これはAliceからAliceに長い時間遅延を伴って送信される）。最後に、Ｋ１３４により暗号化されたデータが通信されるか、またはファイルに記憶される。
【００６９】
図２を参照すると、キー回復生成プロセスを２つのフェーズに分割することにより、"Ｓ確立"操作１２４及びＳＫＲブロック１  １２６の準備において要求される関連する公開キー暗号化（フェーズ１）と、セッション当たりのＫ交換及び関連するセッション・キー回復情報の計算及び確認（フェーズ２）との分離を可能にする。フェーズ１で提供される情報、すなわち（ａ）Ｓの確立１２４、及び（ｂ）ＳＫＲブロック１  １２６は、いずれにしろ、通信当たりまたはファイル情報当たりの情報にもとづくものではなく、従って、複数の通信または生成ファイルにわたり使用され得る。情報（Ｓ及びＳＫＲブロック１）がキャッシュされる場合、フェーズ１  １２２で実行される高価な公開キー暗号化が、当事者のコンピュータ間の最初の通信または最初に生成されるファイルを除いて回避され、従って、全ての面（２当事者のコンピュータ間の暗号化通信及び１当事者のコンピュータの暗号化ファイル・アプリケーション）において必要とされる計算処理を多大に低減する。
【００７０】
図３は、ＳＫＲ保護キーの回復を可能にするＳＫＲ回復プロセス１４０を示す。回復サービス１４６が、キー回復エージェント・システム１  １４２及びキー回復エージェント・システム２  １４４と対話し、キーＫ１５８を回復する。回復サービス１４６は、損傷または失われたキーの回復を切望するユーザまたは会社のために、独立なサービス・プロバイダ当事者のコンピュータにより操作されたり、或いは傍受された通信や、犯罪に関わると判明したまたはその疑いのある個人のファイルを読出すために、キーの回復を切望する法執行のために、法執行により操作され得る。
【００７１】
キーの回復を切望する当事者のコンピュータは、最初に、必要とされるＳＫＲブロック（１及び２）を、回復サービス１４６に提供する。回復サービス１４６は次に、ＳＫＲブロック１  １４８及びＳＫＲブロック２  １５０を、キー回復エージェント・システム１  １４２に提供する。そして次に、キー回復エージェント・システム１  １４２が、提供された情報を自身のキーの秘密部分と一緒に用いて、暗号化されたＫＧを解読し、次にＫＧからキー暗号化キー（ＫＫ）を計算し、それが回復サービス１４６に解読情報１５０Ａとして返却される。同様に、回復サービス１４６は、ＳＫＲブロック１  １５２及びＳＫＲブロック２  １５４をキー回復エージェント・システム２  １４４に提供する。すると、キー回復エージェント・システム２  １４４は、提供された情報を自身のキーの秘密部分と一緒に用いて、暗号化されたＫＧ値を解読し、次にＫＧからキー暗号化キー（ＫＫ）を計算し、それが回復サービス１４６に解読情報１５６として返却される。このようにして計算された２つのキー暗号化キーは異なり、回復サービス１４６により、ＳＫＲブロック２内の暗号化されたＫを解読するために使用され、Ｋのクリア値１５８が要求元当事者のコンピュータに返却される。
【００７２】
図３には示されないが、法執行は、回復サービス１４６によりキー回復エージェント・システム１及び２に提供され得る有効な令状または法廷指令を有する場合のみ、キーＫを獲得することができる。同様に、ユーザまたは会社は、それらが正しい確認情報を回復サービス１４６に提供する場合のみ、Ｋを回復することができ、回復サービスは、この確認情報を各キー回復エージェント・システムに提供する。各キー回復エージェント・システムは、この確認情報を用いて、ユーザのまたは会社のＫ回復のための権利を確認する。
【００７３】
対話型通信のためのＳＫＲ最上級設計：
以下では、１送信者（Alice）、１受信者（Bob）、及び各々に対して２つの回復エージェントを想定する場合の、名目データ・フローが提供される。更に、説明では、既存の機構によるＳ及びＫの安全な交換のための対話セッションの場合を想定する。ＳＫＲは対話型通信の場合だけでなく、任意の数の通信当事者のコンピュータ、１当事者のコンピュータ当たり任意の数のエージェント、及び非対話型通信の場合にも機能する。ＳＫＲはまた必要に応じて、デフォルト指定のキー交換機構を提供し得る（すなわち、Ｓ及びＫが、ＳＫＲにより提供される機構を用いて確立され得る）。単純化のため、ここでは名目的な場合についてだけ述べるが、他の場合も詳細な設計セクションにおいて、カバーされ得る。
【００７４】
キー生成階層：
ＳＫＲは主に、対称キー管理における運用である。対称キーは、所与のＳＫＲ保護データ・キー（セッション・キー）に対する回復情報を保護するために使用され、任意的に、所与のＳＫＲ保護データ・キー（セッション・キー）に関連する回復要求を確認するために使用される。
【００７５】
図４は、ＳＫＲキー階層１６０を示す。ＳＫＲキー階層は、キーをそれらの使用及び導出関係に従いレベル化する編成であり、ＳＫＲシステムの機能が編成される基本となる。
【００７６】
図４のＳＫＲキー階層１６０内のキーは、初期ランダム・シードＳ１６２から階層的に生成される。Ｓから、キー回復エージェント・システムにつき１つの割当てで、擬似ランダム・キー生成キーＫＧ１６４、１６５、１６６及び１６７が生成され、これらが所与のエージェントの公開キーに従う暗号化により、そのエージェントにだけ利用可能にされる。ＫＧａ１  １６４及びＫＧａ２  １６５は、Aliceのそれぞれ第１及び第２のキー回復エージェント・システムに関連付けられるＫＧである。ＫＧｂ１  １６６及びＫＧｂ２  １６７は、Bobのそれぞれ第１及び第２のキー回復エージェント・システムに関連付けられるＫＧである。
【００７７】
ＫＧキー生成キーは、次に図４の下位の擬似ランダム・キー生成キーＫＨ及びＫＩ（１６８乃至１７５）を導出するために使用される。例えば、ＫＧａ１  １６４は、ＫＨａ１  １６８及びＫＩａ１  １６９を生成するために使用され、ＫＧａ２  １６５は、ＫＨａ２  １７０及びＫＩａ２  １７１を生成するために使用される。最後に、ＫＨキー生成キー（１６８、１７０、１７２、１７４）は、それぞれ下位の擬似ランダム・キー暗号化キーＫＫ（１７６、１７８、１８０、１８２）のセットを導出するために使用される。同様に、ＫＩキー生成キー（１６９、１７１、１７３、１７５）は、それぞれ下位の擬似ランダム・キー暗号化キーＫＡ（１７７、１７９、１８１、１８３）のセットを導出するために使用される。キー暗号化キーＫＫは、データ・キー（すなわちＳＫＲにより保護されるセッション・キー）を暗号化／解読するために使用され、その際、固有のＫＫが各セッションに対して使用される。キー暗号化キーＫＡは、任意選択の確認情報（ＡＩ）フィールドの保護のために使用される。しかしながら、本発明は、ＫＡキーの使用をキー暗号化キーだけに制限するものではなく、ＫＡキーを使用する他の方法についても、後述される。
【００７８】
図４のＳＫＲキー階層１６０内のキーを導出する１つの方法は、Working Draft American National Standard X9．42で述べられる暗号キー導出プロシジャを利用する。
【００７９】
図４の例は、２セットのエージェントの場合を説明する。１つのセットはAlice（ａ）に対応し、別のセットはBob（ｂ）に対応する。各セットは２つのエージェント（１）及び（２）を含む。一般に、任意のセット数のエージェント（ａ、ｂ、ｃなど）、及び所与のセット内の任意の数のエージェント（１、２、３など）が存在し得る。
【００８０】
Ｓはここでは乱数として指定されるが、当業者には、本発明がＳを乱数に制限するものではなく、より一般的には、本発明が１つのＳにより保護され得るセッションの最小または最大数を制限または指定するものではなく、またＳが確立または計算され得る方法を制限または規定するものではないことが理解されよう。すなわち、Ｓの値の決定において、特定のサイズのＳまたは情報が使用されても、そうでなくてもよい。
【００８１】
フェーズ１：
フェーズ１は、１つ以上の暗号化通信セッションの開始以前に、少なくとも１度発生しなければならない。通常の場合では、これは当事者のコンピュータ間の第１のセッションの開始以前に、１度実行される。そして情報が、フェーズ１が繰り返される時期まで、当事者のコンピュータ間の続くセッションにおいて再利用される。必要に応じて、フェーズ１は毎セッションごとに実行され得る。しかしながら、これは公開キー操作を再利用する性能的な利点を排除する。
【００８２】
フェーズ１では、AliceとBobが外部キー交換機構を用いて、ランダム値Ｓを交換する。交換機構が使用可能でない場合、Aliceが単にランダムＳをピックし、ＳＫＲにそれをフェーズ１ＳＫＲデータ・ブロックの一部として、Bobに移送させる。AliceはこのＳを用いて、擬似ランダムＫＧ値を生成する。これらのＫＧ値は、図２の"キー導出階層"セクションで示されるように、AliceとBobの両者に対して、回復エージェント・システムの各々につき１つが生成される。これらのＫＧａ１、ＫＧａ２、ＫＧｂ１、及びＫＧｂ２値は、それぞれの回復エージェントの公開キーに従い暗号化され、Bobに送信されるＳＫＲフェーズ１データ・ブロック（Ｂ１）内に配置される。
【００８３】
AliceとBobの両者は、少なくともＳをＢ１のハッシュと一緒に、将来の使用のためにキャッシュし得る。
【００８４】
図９及び図１１を参照すると、単純化されたデータ・フローにおいて、フェーズ１は、次のステップを含む。
１．AliceとBobがランダムＳを交換する（ステップ９０２）。
２．Aliceが、Ｓ及びそれぞれのエージェント・システムのＩＤをハッシュすることにより、Ｓから各エージェント・システムのＫＧ値を導出する（ステップ９０４）。
３．Aliceがそれぞれのエージェント・システムの公開キーに従い、ＫＧ値を暗号化する（ステップ９０６）。
４．AliceがBobにＳＫＲフェーズ１データ・ブロックＢ１（図１１）を送信する。これはＴ１、ｅＰＵａ１（ＫＧａ１）、ｅＰＵａ２（ＫＧａ２）、ｅＰＵｂ１（ＫＧｂ１）、及びｅＰＵｂ２（ＫＧｂ２）を含む（ステップ９０８）。
【００８５】
ここで前記量は次のように定義される。
Ｔ１：Alice、Bob、及び全てのキー回復エージェント・システムのＩＤを含む公開ヘッダ
ｅ：公開キー暗号化
ＰＵａ１：Aliceの第１のエージェント・システムの公開キー
ＰＵａ２：Aliceの第２のエージェント・システムの公開キー
ＰＵｂ１：Bobの第１のエージェント・システムの公開キー
ＰＵｂ２：Bobの第２のエージェント・システムの公開キー
ＫＧａ１：Aliceの第１のエージェント・システムのキー生成キー
ＫＧａ２：Aliceの第２のエージェント・システムのキー生成キー
ＫＧｂ１：Bobの第１のエージェント・システムのキー生成キー
ＫＧｂ２：Bobの第２のエージェント・システムのキー生成キー
【００８６】
フェーズ２：
フェーズ２は、各暗号化セッションに対する暗号化の開始以前に発生する。フェーズ２では、AliceとBobがデータ・キーＫ（セッション・キー）を特定の外部キー交換機構と交換する。必要に応じて、AliceがランダムＫをピックし、ＳＫＲフェーズ２データ・ブロックがそれをBobに移送できる。エージェントの各セットに対して、Aliceは、キー暗号化キー（ＫＫ）のそれぞれのセットに従い、Ｋを２重に暗号化し、これらの値を対応するフェーズ１ブロック（Ｂ１）のハッシュと一緒に、フェーズ２データ・ブロックによりBobに送信する。
【００８７】
図１０及び図１２を参照すると、単純化されたデータ・フローにおいて、フェーズ２は、次のステップを含む。
１．AliceとBobがランダム・データ・キーＫ（セッション・キー）を交換する（ステップ１００２）。
２．Aliceが、各エージェント・システムのキー生成ＫＨ値を、それぞれのＫＧ値及び公開キー生成ヘッダのハッシュとして導出する（ステップ１００４）。
３．Aliceが、各エージェント・システムのセッション特定のＫＫを、それぞれのＫＨ値及びセッションの公開ヘッダＴ２のハッシュとして導出する（ステップ１００６）。
４．Aliceがセッション特定のＫＫキー暗号化キーのセットに従い、Ｋを２重に暗号化する（ステップ１００８）。
５．AliceがBobにＳＫＲフェーズ２データ・ブロックＢ２（図１２）を送信する。これはＴ２、Ｈａｓｈ（Ｂ１）、ｆＫＫａ１．１（ｆＫＫａ２．１（Ｋ））、及びｆＫＫｂ１．１（ｆＫＫｂ２．１（Ｋ））を含む（ステップ１０１０）。
【００８８】
ここで前記量は次のように定義される。
Ｔ２：Ｔ１、セッションＩＤ、タイムスタンプなどを含む公開ヘッダ
ｆ：対称キー暗号化
Ｈａｓｈ（Ｂ１）：ブロックＢ１のハッシュ
ＫＫａ１．１：Aliceの第１のエージェント・システムの第１のキー暗号化キー
ＫＫａ２．１：Aliceの第２のエージェント・システムの第１のキー暗号化キー
ＫＫｂ１．１：Bobの第１のエージェント・システムの第１のキー暗号化キー
ＫＫｂ２．１：Bobの第２のエージェント・システムの第１のキー暗号化キー
【００８９】
回復フェーズ：
回復フェーズでは、エージェント・システムのセットがブロック１の全て、及びブロック２のＴ２を与えられる。彼らは２重に暗号化されたｆＫＫ１（ｆＫＫ２（Ｋ））を与えられず、従ってたとえ彼らのそれぞれのＫＧ情報をプールしたとしても、キーを回復することができない。適切なＳＫＲ情報が与えられると、彼らはそれぞれのブロックを解読し、彼らのそれぞれのＫＧ値を獲得する。彼らのＫＧ値並びにＴ１及びＴ２ヘッダが与えられると、彼らはＴ２ヘッダによりカバーされるセッションに対して、ＫＫ及びＫＡ値を生成できる。確認情報フィールド（ＡＩ）が存在する場合、回復要求を確認するために、秘密ＫＡキーが使用され得る。回復要求が有効な場合、各エージェント・システムは計算されたＫＫ値だけを回復サービスに返却し、次に回復サービスは、２重に暗号化された回復フィールドｆＫＫ１（ｆＫＫ２（Ｋ））から、データ・キーＫ（セッション・キー）を回復することができる。
【００９０】
重要な点は、エージェント・システムが生成するＫＧ値を返却せずに、ＫＧから導出される特定の値だけを返却することである。例えば、エージェント・システムは特定のキー暗号化キー（ＫＫ）だけを、法執行に返却する。従って、長期間の秘密ＫＧ情報が弱体化されずに、有効に維持される。なぜなら、１つのＫＫ値が与えられても、他のデータ・キー（セッション・キー）が回復可能でないからである。
【００９１】
ユーザがより便利にセッションのセットを回復できるように、ユーザが十分なＡＩ確認を提供する場合、ユーザ及びエージェント・システムは、ユーザがエージェントにＫＨの返却を欲していると判断し得る。この判断は、アプリケーション、ユーザ及びエージェント・システム・システムに委ねられる。しかしながら、本発明では、回復サービスとエージェント間の知識の分離が、ＳＫＲの基本的な特徴であるので、エージェント・システムに誰かにＫＧを漏らすように要求する状況のセットを考慮しない。このことは、ＫＧ秘密の公開キー暗号化の安全な再利用にとって重要である。
【００９２】
ＳＫＲ設計詳細：
本発明がどのように実施されるかについて、更に詳細に述べることにする。
【００９３】
ＳＫＲ内の暗号化アルゴリズムの選択：
ＳＫＲは、BobとAlice間で使用されるセッション・レベルの暗号化には独立である。しかしながら、ＳＫＲ自身は、対称及び非対称の両方の暗号化を用いて、ＳＫＲブロック内の値を計算する。ＳＫＲ内で使用される暗号化アルゴリズムも自由に選択され得り、選択がＴ１及びＴ２ヘッダ内のパラメータとして示される。デフォルト指定により、ＲＳＡが公開キー暗号化として使用され、キー処理シャッフラ（後述）が対称暗号化として使用される。キー処理シャッフラは、任意のサイズの暗号化キー、及び任意のサイズのデータ・ブロックを受諾する有用な特性を有するので、デフォルト指定により使用される。ＳＫＲ内で使用される対称暗号化としての別の可能な選択は、セッション・レベルの暗号化のためのアプリケーションにより使用されるのと同じ、暗号化アルゴリズムを使用することである。この場合、アプリケーションが既にそれを実現しているので、可用性の利点を提供し、従って、ＳＫＲ内の対称キー暗号化が、セッション・データを保護するために使用される暗号化と同一の効力を有する。
【００９４】
ＳまたはＫの任意選択伝送：
必要に応じて、ＳＫＲはＳまたはＫの一方または両方を伝送できる。Bobがキー分配を実行するために公開キー対を有すると仮定すると、これはBobの公開キーに従いＳまたはＫ値を暗号化し、暗号化された値を、Bobに送信されるＳＫＲ情報に加算することにより実行される（例えば、それがフェーズ１またはフェーズ２のＳＫＲデータ・ブロックに含まれる）。
【００９５】
回復確認ハッシュ及びＲ：
最上級の設計では、単純化されたデータ・フローは、データ・キーＫ（セッション・キー）の２重暗号化の完全な値の伝送を示した。部分Ｒが回復フィールドから隠される場合、これはｆＫＫａ１．１（ｆＫＫａ２．１（Ｋ））−Ｒの如く、結果の暗号化されたＫから、Ｒを除去することにより達成される。例えば、セッション・キーＫが１６８ビット（トリプルＤＥＳ）であり、隠される部分Ｒが４０ビットの場合、２重に暗号化されるＫの最下位４０ビットが除去され、最上位の１２８ビットだけがＳＫＲブロックに含まれる。
【００９６】
回復プロセスの間に、試験的なＲ値を確認するために、追加の回復確認フィールドＨａ及びＨｂ（エージェント・セットにつき１つ）が、フェーズ２のＳＫＲブロックに追加される。Ｈａ及びＨｂは次のように定義される。
Ｈａ＝Hash（確認ヘッダ、カウンタ、ｆＫＫａ１．１（ｆＫＫａ２．１（Ｋ））、Ｔ２、ＫＫａ１．１、ＫＫａ２．１)
Ｈｂ＝Hash（確認ヘッダ、カウンタ、ｆＫＫｂ１．１（ｆＫＫｂ２．１（Ｋ））、Ｔ２、ＫＫｂ１．１、ＫＫｂ２．１)
ここでHash（）はリストされるデータ項目の連結のハッシュである。
【００９７】
ハッシュは、増分カウンタにより、必要なだけ多くの回数実行される。従って、確認ハッシュは、衝突の確率（すなわちＲの誤った確認）が十分に小さいことを保証するように、十分に長い。例えば、ｒがＲ内のビット数を表し、Ｈａの長さが（ｔの任意の値に対して）２ｒ＋ｔの場合、Ｒの２つの値が同一のハッシュ値となる確率は、約ｅ-tである（ここでｅは自然対数の底すなわち２．７１８２８１８．．．である）。ｔ≧２０の値が恐らく十分であろう。
【００９８】
これらの追加のフィールドにより、Ｒの試験的な値がｆＫＫａ１．１（ｆＫＫａ２．１（Ｋ））の試験的な値を構成するために使用され、次にハッシュが取られ、試験的Ｒが正しかったかどうかを確認するために比較される。ここでこの探索は、セット内の両方のエージェント・システムが、フェーズ１ＳＫＲブロックからそれぞれの暗号化されたＫＧフィールドを解読し、それぞれのＫＫキー暗号化キー（例えばＫＫａ１．１及びＫＫａ２．１）を計算し、それらを回復プロセスに返却しないと、進行しない点に注意されたい。
【００９９】
非対話型通信：
ＳＫＲのために提供される設計は、AliceとBobとの間の対話型セッションについて述べる。ここで用語"対話型セッション"は、AliceとBobの末端上のプロセスが、同一の時間フレームにおいて発生し、従ってプロセスがプロトコルの実行の間に対話し、情報を交換することを意味する。より一般的な状況では、通信が非対話型であり、その場合、両末端上のプロセスは、異なる時刻に発生し、従って、彼らはプロトコルの実行の間に情報を交換することができない。非対話型通信の例には、（１）電子メール（この場合、Aliceによるメールの作成、及びBobによるメールの読出しが異なる時刻に発生する）、及び（２）データ保管（この場合、Aliceによりデータの保管がある時実行され、保管データの取り出し（同様にAliceによると思われる）が後に実行される）が含まれる。（データ保管は１ユーザだけに関わると思われるが、実際には送信ユーザと受信ユーザとが関わり、これらのユーザはしばしば同一人物である。）
【０１００】
ＳＫＲ設計は、変更無しに非対話型通信を処理する。非対話型通信は、ＳＫＲプロトコルの実行の間に情報を交換できないので、Ｓ及びＫキーの交換のために使用される方法を制限し得るが、これは名目的にはＳＫＲプロセス外で発生する。Ｓ及びＫを交換するためにＳＫＲが使用される場合、これは対話型または非対話型のいずれかの状況に好適な方法を使用する（すなわち、受信者の公開キーに従う暗号化）。
【０１０１】
ＳＫＲブロック１及び２の確認：
従来提供された設計は、ＳＫＲブロック１及び２の確認を有さない。これは一部のアプリケーションでは受け入れることができるが、一般的には、一部のアプリケーションは、会話の両方の側が適正な回復情報が提供されたことを保証できるように、特定の様式による回復情報の確認を希望する。
【０１０２】
確認の１つの方法は、Aliceが上述のようにＳＫＲブロックを生成することであり、Bobがそれらを確認することである。Bobによる確認は直接的である。なぜなら、Bobが秘密値Ｓ及びＫを知るからであり、従って、Bobがブロックの生成を重複し、彼の結果をAliceから送信される値と比較する。（この確認の問題は、通常の公開キー暗号化方法において、ランダム情報を使用することである。本発明のこの面については、次のサブセクションにおいてカバーされる。）
【０１０３】
この方法の１つの問題は、AliceがBobの回復要求の完全な知識を有さねばならないことであり、これにはBobが希望するあらゆる任意選択の回復フィールドが含まれる。更に、BobはAliceの情報を事前に知るか、或いは確認を開始する以前に、Ｔ１及びＴ２ヘッダ情報のチェックを待機する必要があり、ＳＫＲ開始遅延を２倍にする。
【０１０４】
全ての回復情報が正しく提供されたことを保証する、異なるそして多分好適な方法は、AliceとBobが各々ＳＫＲ回復ブロックを独立に生成し、Alice及びBobがお互いのそのように生成されたブロックをチェックしないことである。このモードでは、少なくとも一方の側が正しく構成されると、要求される全ての回復情報が正しく生成される。更に、AliceとBobの両者が、相手が送信したものに対する誤った無効化を生じること無く、あらゆる任意選択の回復フィールドを自由に含むことができる。この方法の１つの制限は、非対話型通信において使用できないことである。
【０１０５】
ＳＫＲは使用される生成−確認の方法を指定しない。全ての場合において、AliceがＳＫＲブロックを生成する。所与のアプリケーションは、その必要性及びローカルの法または規制に依存して、BobにAliceのブロックをチェックさせて彼自身のブロックを生成させるか、またはチェックを行わない。
【０１０６】
確認の方法を変更することに加えて、チェックのレベルも変化し得る。BobがAliceのＳＫＲブロックを確認している場合には、彼はブロック内の全てのエントリの完全な確認を実行してもよいし（エージェントのために暗号化された部分の確認を含む）、或いはメッセージの部分だけをチェックしてもよい。例えば、Bobは、公開キー暗号化に関わる計算労力のために、公開キー暗号化部分を確認したくないかもしれない。しかしながら、彼は他の全ての部分を確認することができる。これはAliceが暗号化を正しく実行したことを保証しないが、彼女のエージェントの選択及び彼らのそれぞれのＲ値が正しかったことを確認する。この種の部分チェックは、通信待ち時間に敏感なアプリケーションにとって重要である。AliceがＳＫＲブロックを事前に計算できる場合、Bobは部分チェックだけを実行し、公開キー操作が含まれないので、開始待ち時間が多大に速くなり、AliceのＳＫＲプロセスの一部の重要部分を確認する。これは特に、BobとAliceの両者が独立なＳＫＲ情報を生成しているときに有用である。なぜなら、部分確認が、公開キー暗号化の完全な確認に対して必要とされる追加の時間無しに、適正な回復の大きな確率を提供するからである（例えば、他のシステムが正しく構成されており、正しく動作している）。
【０１０７】
追加のキャッシング：
従来提供された設計では、Bob及びAliceが、彼らの共用秘密シードＳから導出される公開キー暗号化ＫＧ値をキャッシュすることができる。一般的には、これらの暗号化ＫＧ値は、AliceとBobとの間の続く会話においてのみ再利用され得る。従って、他の当事者のコンピュータとの会話では再利用されない。なぜなら、ＳがAliceとBobにのみ知れており、別の受信者が回復情報の完全な確認を行うためには、Ｓを知らなければならないからである。
【０１０８】
暗号化ＫＧ値は、他の当事者のコンピュータとの会話において、２つの異なる状態の下で再利用され得る。第１に、これらはＳの値が明示的に新たな当事者のコンピュータに伝送される場合、再利用され得る。第２に、これらは受信者によりＢ１の部分確認が実行されるか、或いはＢ１の確認が実行されない場合、再利用され得る。例えば、AliceがBobとのセッションの開始時に、彼女のエージェント・システムの暗号化ＫＧのセットを生成する場合、彼女はＳをTedに送信するか、或いはTedが伝送されたＢ１内の暗号化ＫＧ値を確認するために、Ｓを使用しないならば、彼女はTedとの会話のために、これらの暗号化ＫＧを再利用できる。こうした再利用をサポートするための、フェーズ１における名目データ・フローの唯一の問題は、ＫＧの所与の暗号化が所与のＴ１のハッシュも暗号化し、従って、暗号化が新たなフェーズ１ブロック（新たなＴ１を有する）で再利用される場合、エージェント・システムが後にＴ１の暗号化ハッシュを公開される旧Ｔ１と一致できるように、旧Ｔ１も暗号化ＫＧフィールドと一緒に送信される必要があることを、認識することである。
【０１０９】
好適な場合では、AliceとBobが対話セッションを有し、各々がＳＫＲブロックを独立に生成し、お互いのＳＫＲブロックの部分チェックだけを実行する。この状況では、AliceとBobはＳを全く交換する必要がなく、以前に計算されたＳを自由に再利用できる。ここでＳは他の当事者のコンピュータとのセッションから計算されたものであってもよい。関連するエージェント・システムが同一の場合、Ｓの再利用は、追加の公開キー暗号化を回避する。Aliceは同一セットの回復エージェント・システムを介して多くの当事者のコンピュータと通信し得るので、所与のセットのエージェント・システムの暗号化ＫＧを再利用する能力は、各エージェント・システムのＫＧ値を暗号化するために使用される公開キー操作に要求される計算の、多大な低減を提供する。
【０１１０】
暗号化Salt：
一般に、公開キー暗号化は、次の形式で表現される。
ｃ＝Ｋ（Ｄ，Ｘ）
ここで、暗号文ｃは、データＤ及びランダム値ＸのキーＫに従う暗号化として導出される。幾つかの公開キー暗号化アルゴリズムの任意の１つが、使用され得る。これらには、ＲＳＡ  ＰＫＣＳ−１暗号化、拡張最適非対称暗号化（ＥＯＡＥ）によるＲＳＡ暗号化、及びDiffie-Hellman暗号化が含まれる。これらの最初と最後のアルゴリズムはよく知られており、従ってここでは述べないことにする。
【０１１１】
改良された最適非対称暗号化（ＥＯＡＥ）によるＲＳＡ暗号化は、複数のマスキング・ラウンド（ハッシュがキー処理されない以外は、後述のキー処理シャッフラのそれらと類似）の結果を、ＲＳＡ暗号化により暗号化する以前に、フォーマット済みのブロック（データと追加の値を含む）が、マスキング・ラウンドにさらされる暗号化プロシジャである。このプロシジャは、Johnsonらによる係属中の米国特許出願第０８／６８１６７９号、並びにＡＮＳＩ  Ｘ９．４４  ＲＳＡキー・トランスポート草案規格、及びD．B．Jonhson及びS．M．Matyasによる"Enhanced Optimal Asymmetric Encryption：Reverse Signatures and ANSI X9．44"、Proceedings of the 1966 RSA Data Security Conference、San Francisco、CA、1966で述べられている。
【０１１２】
ＲＳＡ  ＰＫＣＳ−１暗号化では、ブロック・サイズまでデータをランダムにパッドするために使用される乱数発生器をシードするために、Ｘが使用される。改良された最適非対称暗号化（ＥＯＡＥ）によるＲＳＡ暗号化（後述）では、Ｘがデータに明示的に付加されるsaltに対応し、他のランダム・パッディングは実行されない。Diffie-Hellman暗号化では、ＸがAliceの短命（ephemeral）のキー対を生成するために使用されるランダム値を表現し得り、これがエージェント・システムの公開Diffie-Hellmanキーと一緒に、データのマスクとして通常使用される共通キーを生成するために使用される。
【０１１３】
例えば、AliceがDiffie-Hellmanを用いてＫＧａをエージェント"ａ"に送信したい場合、彼女はＸを用いて、短命のDiffie-Hellmanキー対（ＫＰｘ、ＫＳｘ）を生成する。ここでＫＰｘは公開部分であり、ＫＳｘは秘密部分である。エージェント・システム"ａ"の公開キー部分（ＫＰａ）が与えられると、Aliceは共通キーＫＣ＝ＫＳｘ**ＫＰａ（ここで**は累乗を表す）を計算する。そして暗号分ｃが複合セット｛ＫＰｘ、ＫＣ（Ｍ）｝、すなわち、彼女の短命の公開キー、及び共通キーＫＣにより暗号化されるオリジナル・データＤとなる。（この暗号化は、単にＫＣを、ＤとＸＯＲされるマスクを導出するために使用するか、或いはより一般的な対称暗号化法では、ＫＣをキーとして使用する。）｛ＫＰｘ、ＫＣ（Ｍ）｝が提供されると、エージェント・システムはＫＣ＝ＫＳａ**ＫＰｘを計算し、これを用いてＤを解読する。
【０１１４】
要するに、Diffie-Hellmanは、ランダムＸが短命のキー対を生成するために使用され、短命の公開キーＫＰｘが暗号文の一部として含まれる限り、ＳＫＲにおいて容易に使用され得る。
【０１１５】
全ての場合において、Bobは、ＳＫＲフェーズ１ブロック内の公開キー暗号化フィールドを再生し、従って確認するために、値Ｘを知る必要があろう。Bob及びAliceが、使用されるランダムsaltに同意するためには、交換されるＳから、saltが擬似ランダムに導出されなければならない。そして、これがまた、ＫＧ値の生成源として使用される。従って、Ｓは、ＳＫＲプロセスにおいて使用される全ての必要なランダム性の源である。特に、ＫＧ及びsalt値は次のように生成される。
ＫＧｘ＝Hash（ＫＧ生成ヘッダ、カウンタ、Ｔ１、エージェントｘのＩＤ、Ｓ）
saltｘ＝Hash（salt生成ヘッダ、カウンタ、Ｔ１、エージェントｘのＩＤ、Ｓ）
ここで、Hash（ｘ）はｘのハッシュを表す。ＫＧ生成ヘッダ及びsalt生成ヘッダは、定義される定数である。カウンタは、単純な整数カウンタである。Ｔ１は、Alice、Bob、及び全てのキー回復エージェント・システムのＩＤを含む公開ヘッダである。Ｓは交換されるランダムＳである。
【０１１６】
ｅに関するHash（Ｔ１）結合：  暗号化ＫＧ値の詳細設計は、次のようである。
ｅＰＵａ１（Hash（Ｔ１）、ＫＧａ１、salt１）
【０１１７】
前記ＰＵａ１により暗号化されるデータ・ブロックは、公開ヘッダＴ１のハッシュ及びsaltを含むことを示す。Ｔ１のハッシュの包含は、エージェントが暗号化ＫＧを、示される当事者のコンピュータのセットと、公開ヘッダＴ１内で指定されるエージェントとに関連付けられるように、ＫＧ値を特定のヘッダに結合する。saltの包含は、暗号化ＫＧ値の保護を更に提供する。
【０１１８】
ＡＩ伝送：
AliceとBobは任意的に、ＳＫＲ情報（例えばフェーズ２ＳＫＲブロック）内にキー回復確認情報（ＡＩ）を含み得る。実際の目的上、本発明でのＡＩ情報は、Fischer（米国特許第５４３６９７２号）により述べられる自己識別データの定義済みの使用、並びにここで述べられるＡＩを用いる方法を含む。しかしながら、本発明は、ＡＩ情報が秘密ＫＧキーに結合される方法に関して、Fischerとは異なる。
【０１１９】
ＡＩ情報（識別情報、確認情報、または権限情報）は、続くキー回復要求を確認するために使用される。ＳＫＲフレームワークは、こうした回復許可記録の正確な内容が、アプリケーション及びユーザのニーズに依存して、変化することを可能にする。各ＳＫＲフェーズ２ブロックは、エージェント・システムのＫＩから導出される値（ＫＡａ１．１、ＫＡａ１．２など）を定義する。これらのＫＡ値は、ＡＩデータを保護するために、特定の方法で使用される。名目的な方法では、ＡＩ情報は単にそれぞれのＫＡキーと一緒にハッシュされ、Hash（ＡＩ、ＫＡ、Ｔ２）形式のキー処理ハッシュが生成される。このモードでは、AliceがＡＩ（通常パス・フレーズ）をエージェントに提供することにより、回復要求を確認でき、エージェント・システムは次にハッシュを確認し、それにより対応するＫＫの返却を求める。この例では、ＫＡがシードされるハッシュ操作において、キーとして使用される。
【０１２０】
ＡＩデータを保護するために、他の方法も使用され得る。例えば、Aliceはパス・フレーズを用いて、ＫＡをＡＩ（ＫＡ、Ｔ２）のように暗号化できる。回復時に、Aliceはパス・フレーズを用いてフィールドを解読し、ＫＡを回復し、回復許可のために提出する。この場合、ＫＡはコードワードまたは許可トークンとして使用される。Alice及びエージェント・システム、そして場合によってBob（AliceとBobがＳを共用する場合）だけがＫＡを知るので、これはAliceのパス・フレーズを転送攻撃から保護する。このモードでは、Aliceが彼女のパス・フレーズをエージェント・システムに明かさずに済む追加の利点を有する。
【０１２１】
デフォルト指定により、ＡＩ情報はブロック２に平文で、次の形式で含まれる。
Hash（許可ヘッダ、カウンタ、ＡＩａ１、ＫＡａ１．ｉ、ｉ番目のセッションのＴ２）
Hash（許可ヘッダ、カウンタ、ＡＩａ２、ＫＡａ２．ｉ、ｉ番目のセッションのＴ２）
Hash（許可ヘッダ、カウンタ、ＡＩｂ１、ＫＡｂ１．ｉ、ｉ番目のセッションのＴ２）
Hash（許可ヘッダ、カウンタ、ＡＩｂ２、ＫＡｂ２．ｉ、ｉ番目のセッションのＴ２）
【０１２２】
ＡＩはエージェント及びセッション、または希望に応じてそれらの組み合わせにわたり、全てのエージェント・システム及びセッションに対して同一である。ＡＩの値は、単に特定の秘密のパスワードまたはパス・フレーズであるが、ユーザ及びエージェント・システムはあらゆる標準の内容に同意し得る。
【０１２３】
ＳＫＲ機構内でＡＩを処理する方法は、Fischerにより述べられる方法とは異なる。Fischerは、最初に秘密（ここではＫＧに相当）及び自己識別データ（ここではＡＩに相当）を結合し、次にこの結合の少なくとも一部を、受託機関（ここではキー回復エージェント・システム）の公開キーにより暗号化することにより、秘密を自己識別データに結合する。しかしながら、本発明では、ＡＩがＫＧに結合されず、キー回復エージェント・システムの公開キーに従い暗号化されない。なぜなら、その場合、ＡＩ情報を知らないBobが、暗号化ＫＧ値を確認することができないからである。
【０１２４】
本発明の１つの実施例では、BobがAliceからの暗号化ＫＧ値を確認する。その場合、暗号化値はＡＩを含むことができない。従って、本発明は、ＡＩ及びＫＧを結合する方法を要求し、これらはBobがAliceからの暗号化ＫＧを確認する場合を含む、本発明の全ての実施例において作用する。これを可能にするため、最初にＫＧからＫＩを、次にＫＡを導出し、従って、結合操作において使用される秘密はＫＧではなく、それにより確認コード生成プロセスにおいて、ＫＧを繰り返し明かさない。次にＡＩ及びＫＡが（恐らく他の情報と一緒に）結合され、結合がハッシュされて、確認コードが生成される。Aliceは確認コードを生成することができる。なぜなら、彼女はＳを知っているので、キー階層内の任意のキーを生成でき、また秘密を含み得る彼女自身のＡＩを知るからである。
【０１２５】
回復エージェントがHash（ＡＩ、ＫＡ、Ｔ１）を確認するために、AliceはＡＩをキー回復エージェント・システムに提供しなければならない。これを実行する異なる任意選択方法が存在し、それらには、出向いて証明書を手渡す方法、ユーザの証明書を確認するエージェント・システムを用いる方法、ＡＩ記録を用意し、それを安全にキー・エージェント・システムに送る方法、或いはAliceが彼女自身のＡＩ記録を用意し、それをキー回復エージェント・システムに知られるキーに従い暗号化し、暗号化ＡＩをエージェント・システムに電子的に送信する方法などが含まれる。例えば、ＡＩはエージェント・システムの公開キーに従い暗号化され、エージェント・システムに送信される。
【０１２６】
ＡＩ及びＫＧを上述のように結合解除することにより、キー回復エージェント・システムに提供されるかまたは利用可能にされたＡＩが、長期間にわたり繰り返し使用可能になる。通常、ＡＩは多くの異なるＫＧにわたり一定に維持される。また、ＡＩは大量のデータを含み得り、従って複数の公開キー暗号化を要求し得る。その場合、ＡＩを各ＫＧと一緒に繰り返し送信することは、不利である。
【０１２７】
図５はＳＫＲ確認コード生成２２０のプロセスを示す。ユーザは確認情報ＡＩ２２７を用意し、これがステップ２３２で、（例えばキー回復エージェント・システムに知れるキーに従う暗号化を介して）保護される。結果の保護ＡＩ２３３がステップ２３４で、キー回復エージェント・システムにとって利用可能にされる。これらのステップは、ＡＩをキー回復エージェント・システムの公開キーにより暗号化し、次に暗号化されたＡＩをキー回復エージェント・システムに送信することにより、達成される。このステップは、ＳＫＲシステムを使用する以前に実行される。後に、ＫＧ２２１がステップ２２２で、キー回復エージェント・システムの公開キーにより暗号化され、暗号化ＫＧ２２３が生成され、これがステップ２２４で、キー回復エージェント・システムにとって利用可能にされる。この場合、暗号化ＫＧ２２３は、ＳＫＲブロック１に含まれることにより、利用可能にされる。各セッションに対して、キー導出ステップ２２５が実行され、ＫＧ２２１からＫＡ２２６が導出される。そのようにして生成されたＫＡ２２６及びＡＩ２２７、並びに恐らく他の情報（例えば、ＫＫが有効なキー回復要求に応答して返却されるように指定する制御情報）が、ステップ２２８で（例えば値を連結することにより）結合され、結合がステップ２２９でハッシュされ、確認コード２３０が生成される。確認コード２３０は、ＳＫＲブロック２に含まれることにより、キー回復エージェント・システムにとって利用可能にされる。
【０１２８】
図５の確認コード生成２２０のための上述の方法の結果、ＫＫに対するユーザ要求が次のように確認される。すなわち、ユーザは最初に、キー回復エージェント・システムが記憶済みＡＩの彼のコピーに対して確認できる情報を提供することにより、彼の識別または要求されたキーをアクセスする権利を証明しなければならない。これを達成するための多くの異なる方法が知られており、従って、ここでは述べないことにする。確認ステップの一部は、ＫＡの計算を要求する。例えば、ユーザの要求がｉ番目のＫＫに対する場合、キー回復エージェント・システムは最初に、対応するｉ番目のＫＡを計算する。キー回復エージェント・システムは次に、（ＡＩ、ＫＡ、Ｔ２）を含む入力値のハッシュを計算する。ここでＴ２は、ユーザにより提供されるセッション回復情報から獲得される。計算されたハッシュ値が、提供されるＳＫＲブロック１に含まれる対応する参照のハッシュ値に一致する場合、要求は有効と見なされ、要求されたＫＫがキー回復エージェント・システムにより計算され、返却される。
【０１２９】
ＩＤ及びネーム空間：
ユーザ及びエージェント・システムのＩＤには、多くのタイプがあり、例えばＸ．５０９識別名、ＰＧＰアスキー・ネーム、ＰＧＰキーＩＤ、ＩＰアドレス、ＤＮＳホスト・ネーム、電子メール・アドレスなどが含まれる。ＳＫＲでは、全てのＩＤは、草案ＲＦＣ draft-ietf-ipsec-cdp-00に従い、ネーム空間識別子、及び示されるネーム空間内のアスキー・ネームを含む組（tuple）として表現され得る。この草案はアプリケーションが専用に使用するために、２５０乃至２５５のネーム空間指標を確保する。ＳＫＲはネーム空間２５０を、アプリケーション専用として処理し得るので、アプリケーションが、このタイプの全てのＩＤに関する全ての問い合わせ、例えば公開キーに対する要求や、国情報に対する要求などを処理することを期待する。国ＩＤに対して定義されるネーム空間は存在しないので、ＳＫＲはＳＫＲ特定の国名に対して、ネーム空間２５１を使用し得る。
【０１３０】
ユーザ登録公開キー：
名目設計においては、ＫＧ値がそれぞれのエージェント・システムの公開キーに従い暗号化される。この暗号化は、各エージェント・システムが１つの公開キーだけを有することを意味する。ＤＫＲデータ形式は、所与のエージェント・システムに対して使用されるキーＩＤを指定するので、エージェント・システムは任意の数のキーを有し得る。これは重要な特徴である。なぜなら、単一のキーの使用は、対応する秘密キーの長期間の秘密保護に関して、問題を生じるからである。１エージェントにつき複数のキーを許容することにより、エージェント・システムは単に全てのユーザに対するキーのセットを有することも、或いはユーザのセット（"１ユーザ"と見なされる特定の組織のユーザなど）に特定のキーを有することも、或いは各個々のユーザに対する別々のキーを有することもできる。ユーザはキー対を生成し、それらをエージェント・システムに登録することができ、キーが的確に生成されるように保証し、それらを所望の頻度で変更する。
【０１３１】
ユーザ生成される回復キーをキー回復エージェント・システムに登録するために、幾つかの異なる方法の任意の１つが使用され得る。１つの方法では、各ユーザは、キー回復プロシジャで使用される彼または彼女自身の公開及び秘密キー対を、１つ以上のキー回復エージェント・システムに登録する。各ユーザは次に、彼または彼女の登録キーの公開部分を使用し、キー回復値を暗号化する。この細分性により、ユーザは、秘密回復キーが何らかの理由により弱体化される場合に備え、明かされることを制限するために、周期的に回復キー対を変更する柔軟性を有する。
【０１３２】
この第１の方法は、キー回復エージェント・システムが、サインのための公開／秘密サイン（証明）キー、及びキーの暗号化並びに分配のために使用される公開／秘密キーを有する、公開キー構造基盤の存在を想定する。これはまた、これらのキーの生成及び分配のための手段、並びに、ユーザがこれらのキーの公開部分を確認するための手段の存在を仮定する。こうした構造基盤を確立するための手段は、周知である。
【０１３３】
この第１の方法では、ユーザは回復キー対の秘密部分を、それをキー回復エージェント・システムの公開暗号化キーにより暗号化することにより、登録する。このことは、キー回復エージェント・システムへの回復キーのオンライン登録を可能にする。登録プロセスの一部として、キー回復エージェント・システムは、公開及び秘密キーが有効なキー対であることを確認する。そのようにして、キー回復エージェント・システムは、公開キーにより暗号化された情報を解読するための正しい秘密キーを有することを知る。
【０１３４】
この第１の方法では、キー回復エージェント・システムは任意的に、ユーザが利用可能なサイン（証明）キーを利用する。ユーザの登録済みキー対を確認後、キー回復エージェント・システムは登録済み公開キーに、そのサイン（証明）キーでサイン（証明）する。サイン済み（証明済み）公開キーがユーザに返却され、ユーザはサイン（証明書）を、キー回復エージェント・システムのサイン（証明）キーの公開部分により確認する。このようにして、ユーザは、キー回復エージェント・システムがキー回復値を解読する手段を有する、従って、キー回復プロシジャが実行され得ることを知る。
【０１３５】
非常に多数の個人ユーザが存在する場合、あらゆるユーザが彼または彼女の回復キーをキー回復エージェント・システムに登録することは、容易に非現実的となることが理解されよう。従って、第１の方法の変形は、個人ューザのレベルではなく、組織レベルにおける回復キーの細分性を提供する。共通の組織に属するユーザのグループ、例えば同じ会社の従業員が、同一の回復キーを有する。
【０１３６】
この変形では、各組織が回復プロシジャで使用されるそれ自身の公開及び秘密キー対を、１つ以上のキー回復エージェント・システムに登録する。例えば、ある会社がそれ自身の回復キー対を生成し、これらのキーを１つ以上のキー回復エージェント・システムに登録する。この場合、その会社は、第１の回復キー対を生成し、それを第１のキー回復エージェント・システムに登録し、また第２の回復キー対を生成して、それを第２のキー回復エージェント・システムに登録する。この時、会社の従業員は、会社により生成される回復キーの公開部分を用いて、回復プロシジャに従い、キー回復値を暗号化する。
【０１３７】
上述したことを除き、この変形は個人ユーザ変形版と同一である。しかしながら、組織にゆきわたる回復キーにより、登録（またはエスクロウ）される回復キーの数が多大に低減される。なぜなら、この変形に従いキーを登録し得る潜在的な組織の数は、この第１の方法の個人ユーザ変形版に従い、キーを登録し得る潜在的なユーザの数よりも、遥かに少ないからである。
【０１３８】
しかしながら、この第１の方法のいずれの変形の欠点は、回復キーの秘密部分が、それをキー回復エージェント・システムに属するキーにより暗号化することにより、オンラインでキー回復エージェント・システムにとって利用可能にされることである。従って、複数の回復キーを有し、これらの複数のキーにわたり明かすことを広げる利点は、これらのキーの秘密部分を、キー回復エージェント・システムに属する単一のキーに従い暗号化することにより、無効にされる。
【０１３９】
従って、回復キー登録の別の方法では、回復キーの秘密部分が、それをキー回復エージェント・システムに属するキーにより暗号化することにより、オンラインで登録されない。代わりに、キー登録が安全で厳格な方法で実現され、ユーザ及び会社はキー回復エージェント・システムに対する絶対的な信頼を有する。
【０１４０】
この別の方法では、ユーザは干渉防止のハードウェア公開キー・トークン（例えばスマート・カードまたはＰＣＭＣＩＡカード）を、エージェントに登録する。このトークンは、内部ハードウェア乱数にもとづき、その公開キー対を生成するように設計され、公開キー対の公開部分だけを明かす。キーの秘密部分は決して明かさないが、代わりに、あらゆる提示される回復要求の解読のために、秘密部分だけを使用する。（或いは、使用キーが外部的に生成され、トークンに記憶されるか、回復キーの公開部分が他の方法で提供されてもよい。）従って、ユーザは彼らの回復秘密キーが決して弱体化されず、キーの使用が厳格であることを確信する。
【０１４１】
カードは、公開キーを取り出すために、またカードが新たに提示された公開キーに合致する秘密キーを含むか否かを確認するために、キー回復エージェント・システムの読取り装置に挿入される。トークンが回復キーの正しい秘密部分を含むことを確認するプロセスは、周知である。これは一連のランダム値をトークンに送信するステップ、及びその値を秘密キーに従い（１度に１つずつ）暗号化するために、トークンを要求するステップを含む。次に公開キーを用いて、出力を解読し、既知の入力と比較する。これらの値が等しい場合、トークン上の秘密キーが有効である。それ以外では、トークンは拒絶される。確認されると、トークンがプラグ解除され、安全な保管場所に格納される。トークンが保管場所から取り出され、令状または法廷指令にもとづいてのみ使用され、その時でさえ、秘密キーを明かさない。これは単に、提供される暗号化キー回復値を解読するだけである。
【０１４２】
この別の方法では、回復キーの秘密部分が、それをキー回復エージェント・システムに属するキーにより暗号化することにより、決して明かされない。この場合には、キーがトークン上に記憶され、キー回復エージェント・システムでさえ、回復キーの秘密部分の値を判定できない。
【０１４３】
この別の方法ではまた、トークンが監査され得る利点を有する。この場合、回復キーの秘密部分が、不正の証明のために検査され得る物理装置内に記憶される。これはマーク付けまたはタグ付けされ、誤用されなかったことを保証するように、周期的に監査され得る。トークンはまた、全ての使用例を記録することができ、この情報が監査の間に"ダンプ"され、カード情報がトークンの監査ログに一致することを保証する。
【０１４４】
この別の方法では、組織は、その従業員の一人が調査の主体の場合にだけ、キー及びトークンの使用がキー回復エージェント・システムによって要求されることを確信できる。組織外の従業員に属する法執行による他のキーの回復は、組織により提供される回復キーを含み、組織により提供されるトークンの使用を要求しない。従って、回復キーの保護が、より多大に保証される。
【０１４５】
これらの方法では、キー回復システム・ソフトウェアまたはハードウェアが、公開証明キーのリストを含む。これらの公開証明キーは、キー回復エージェント・システムの他に、証明当局（ＣＡ）の公開証明キーを含み得る。この場合、回復キーの公開部分が証明キーによりサイン（証明）される、２つのレベルの階層が存在し、そこでは回復キーの公開部分を含む証明が、回復システム・ソフトウェアまたはハードウェアに"ハード・コード化"される公開証明キーの１つを用いて、動的に確認される。
【０１４６】
このタイプの機構が提供される場合、ユーザは彼らの回復セキュリティのレベル対費用の関係を選択できる。大部分のユーザは、恐らく単に、彼らの選択によるエージェントの認可済みの公開暗号化キーを使用する。追加の費用により、彼らはオンライン方法により、彼ら自身の回復キーを周期的に登録できる。また、より高い費用により、彼らは彼らのキーをスマート・カード上に物理的に登録できる。スマート・カードの監査済みの物理記憶に関連付けられる高い費用は、恐らくその使用を大企業、または特別に貴重な通信を有する業務に制限するであろう。しかしながら、ユーザはキー更新のレベル及び頻度の両方を選択することができる。
【０１４７】
回復エージェントは恐らくスマート・カードによる登録を歓迎するであろう。なぜなら、提供される監査可能な物理的なセキュリティにより、ユーザが彼らのキーが回復エージェント・システムにより危うくされたと主張することが困難になるからである。
【０１４８】
これらの代替方法により、ユーザはセキュリティ範囲から、以前の形態のエージェント・システムへの登録の不都合を、より優れたセキュリティと交換するものを選択できる。
【０１４９】
ハッシュ特性及びキー生成：
ＳＫＲはキー及びsaltの導出、回復許可情報の生成、及び対称暗号化のキー処理シャッフラ法の一部として、ハッシュを使用する。名目上、ＳＫＲはハッシュとしてＳＨＡ−１を使用するが、任意の暗号ハッシュが使用され得る。ハッシュは主に、ある値のハッシュの知識がオリジナル値を決定する扱い易い方法を提供しないように、非可逆である必要がある。更に、ハッシュは、回復確認及び回復許可におけるその使用が信頼できるように、全ての入力ビットに依存する必要がある。ハッシュは耐衝突の強い特性を必要としないが、耐衝突ハッシュ関数が、先の２つの要求を満足する限り、使用され得る。
【０１５０】
この文書では、ハッシュはＨ（ａ、ｂ、ｃ、．．．）の形式で使用される。"優れた"ハッシュにより、入力値の順序は問題とならず、任意に順序で指定され得る。現実的な問題として、順序は重要であり、特にキー処理ハッシュ内のキーの処理に関して、そのことが当てはまる。この指定で示される順序は、単に可能な順序であり、本発明は、ＳＫＲシステムを記述する任意のハッシング操作において、入力の特定の順序に制限されるものではない。異なるハッシュ・アルゴリズムによる実施例では、適宜順序が変化し得る。
【０１５１】
Ｓ＝Ｋの退化した場合：
一部のアプリケーションでは、Ｓを交換すること、或いはＳＫＲにフェーズ１においてそれを交換させることが、困難であったり若しくは望ましくなかったりする。例えば、アプリケーションがＳの追加の交換をサポートできず、Bobの公開キーが知れていない、或いはBobが公開キーを有さない場合、ランダムＳをBobと通信する方法が存在しない。この場合、２つの可能性が存在する。すなわち、AliceとBobが彼ら自身の独立のＳ値を生成できるが、お互いのパケットの完全なチェックを実行できないか（彼らは部分チェックを実行できるが、暗号化ＫＧ値を確認できない）、或いは彼らがＳ＝Ｋにすることである。
【０１５２】
Ｓが単にＫにセットされる場合、ＳＫＲブロックが以前と同じに定義されるが、幾つかの欠点を有する。第１に、Ｋが知れなければならないので、フェーズ１ＳＫＲブロックを予め計算することができない。（但し、フェーズ１ＳＫＲブロックがＫから計算されると、それはキャッシュされ得る。）第２に、所与のＳ（特定のＫに等しくセットされる）がキャッシュされる場合、Ｋの合法的回復がＳを法執行に明かすので、エージェント・システムと法執行との間の知識の分離が違反され、従って、そのＳに従い回復可能な全てのキーの回復が、法執行によっても回復可能になる。第３に、キーＫの意味上のセキュリティが失われる。すなわち、Ｋの推測が提供されると、ＳＫＲブロックを前方計算（forward calculate）し、それらが等しいかどうか比較することにより、誰もがその推測をテストすることができる。
【０１５３】
Ｓ＝Ｋの設定はセキュリティを低減し、性能的な不利を課するので、これは代替手段がない場合、すなわち、１）アプリケーションがＳを交換できない場合、２）Bobの公開キーが知れていないか、利用可能でない場合、及び、３）通信が非対話型である場合に限り、実施されるべきである。ファイル・アプリケーションでは、Bob＝Aliceであり、Ｓ＝Ｋにセットする必要がない。
【０１５４】
詳細ＳＫＲプロトコル：
次に、名目ＳＫＲプロトコル仕様の詳細を示す。これは対話型または非対話型通信の場合、１当事者のコンピュータにつき、１つ以上のエージェントを有する１つ以上の通信当事者のコンピュータの場合、及びＳＫＲフェーズ１ブロックにつき、１つ以上の通信の場合を許容するように、できる限り一般的に適用されるように試みられる。このプロトコル仕様は、ＳＫＲ法が所与のアプリケーションに対して個別に適応化され得るので、１仕様例に過ぎない。例えば、アプリケーションが国内の暗号化データの保管だけを扱う場合、アプリケーションは実質的に、より小さく、しかも単純なプロトコルを使用できる。
【０１５５】
フェーズ１：
１．可能であれば、AliceとBobがランダムＳＫＲシードＳを交換する。
２．AliceがBobにＳＫＲフェーズ１データ・ブロック（Ｂ１）を送信し、Ｂ１が、
Ｍ１（ＳＫＲブロック１を示すマジック識別子）
Ｔ１（ＳＫＲフェーズ１公開ヘッダ）
ＰＲ１（通信当事者のコンピュータ１の当事者記録）
・・・
ＰＲｋ（通信当事者のコンピュータｋの当事者記録）
ＲＡＲ１（エージェント・システム１の回復エージェント記録）
・・・
ＲＡＲｎ（エージェント・システムｎの回復エージェント記録）
を含む。ここで、
１．Ｔ１は、次のものを含む。
ＳＫＲバージョン番号
ＳＫＲ公開キー暗号化方法（名目上ＲＳＡ）
ＳＫＲ秘密キー暗号化方法（名目上キー処理シャッフラ）
ＳＫＲハッシュ方法（名目上ＳＨＡ−１）
ＳＫＲがＳを当事者のコンピュータに伝送するか否かを示すフラグ
当事者のコンピュータの数
エージェントの数
提供されるＫＧのビット・サイズ
ＫＧ情報の暗号期間
ＳＫＲブロック１のタイムスタンプ
ＳＫＲブロック１のＩＤ
２．各ＰＲｉブロックは、次のものを含む。
当事者ＩＤ（ネーム空間番号及び通信ユーザの名前）
国ＩＤ（ネーム空間番号及び国名）
キーＩＤ（当事者の公開キーのＩＤ）
ｅＰＵｉ（Ｓ，Ｒｉ）（ＳＫＲがＳの交換を実行している場合）
３．各ＲＡＲｉブロックは、次のものを含む。
セット番号（このエージェント・システムが属するエージェント・・システム・セットを示す番号）
エージェント番号（セット内のエージェント・システムを示す番号）
エージェントＩＤ（ネーム空間、名前）
エージェントのキーＩＤ（使用されるエージェント・システムの公開キー）
エージェントのキー・サイズ（ビットで示される）
ｅＰＵｘ（Ｔ１｜｜ＫＧｘ、saltx）
４．ここで、
ＫＧｘ＝Hash（キー生成ヘッダ、カウンタ、Ｔ１、エージェント・システムｘのＩＤ、Ｓ）
saltｘ＝Hash（salt生成ヘッダ、カウンタ、Ｔ１、エージェント・システムｘのＩＤ、Ｓ）
である。
【０１５６】
フェーズ２：
１．可能であれば、AliceとBobはランダム・セッション・キーＫを交換する。
２．AliceがBobにＳＫＲフェーズ２データ・ブロック（Ｂ２）を送信し、Ｂ１が、
Ｍ２（ＳＫＲブロック２を示すマジック識別子）
Ｔ２（ＳＫＲフェーズ２公開ヘッダ）
Hash（Ｂ１）
ＰＲ１（当事者のコンピュータ１の任意選択の当事者記録）
・・・
ＰＲｋ（当事者のコンピュータｋの任意選択の当事者記録）
ＲＡＲ１（エージェント・システム１の任意選択の回復許可記録）
・・・
ＲＡＲｎ（エージェント・システムｎの任意選択の回復許可記録）
ＫＲＲ１（エージェント・システムのセット１のキー回復記録）
・・・
ＫＲＲｍ（エージェント・システムのセットｍのキー回復記録）
を含む。ここで、
１．Ｔ２は、次のものを含む。
Ｔ１
ＰＲ記録がＫを交換するために使用されるか否かを示すフラグ
任意選択のＲＡＲ記録が含まれるか否かを示すフラグ
セッションＩＤ
セッション・タイムスタンプ
セッション・キー・タイプ（すなわち、暗号化アルゴリズム−−ＤＥＳ、ＩＤＥＡ、．．．）
セッション・キー・サイズ（ビットで示される）
セッション・キー暗号期間
２．任意選択のＰＲｉは、次のものを含む。
当事者ＩＤ（ネーム空間番号及び通信ユーザの名前）
キーＩＤ（当事者の公開キーのＩＤ）
ｅＰＵｉ（Ｋ，Ｒｉ）（ＳＫＲがＳの交換を実行している場合）
３．任意選択のＲＡＲｉは、次のものを含む。
セット番号ｓ（エージェント・システムのセットを示す番号）
エージェント・システム番号ａ（セット内のエージェント・システムを示す番号）
Hash（許可ヘッダ、カウンタ、ＡＩｓａ、ＫＡｓａ．ｉ、ｉ番目のＫのＴ２）
４．ＫＲＲｉは、次のものを含む。
セット番号ｉ（エージェント・システムのセットを示す番号）
Ｒのサイズ（ビットで示される）
ｆＫＫｉ１．１（ｆＫＫｉ２．１（Ｋ））−Ｒ
Ｈｉ＝Hash（確認ヘッダ、カウンタ、ｆＫＫｉ１．１（ｆＫＫｉ２．１（Ｋ）））、Ｔ２、ＫＫｉ１．１、ＫＫｉ２．１）
５．ＫＧｘ＝Hash（Ｇ生成ヘッダ、カウンタ、Ｔ１、エージェント・システムｘのＩＤ、Ｓ）
６．ＫＨｘ＝Hash（Ｈ生成ヘッダ、カウンタ、Ｔ１、エージェント・システムｘのＩＤ、ＫＧｘ）
７．ＫＩｘ＝Hash（Ｉ生成ヘッダ、カウンタ、Ｔ１、エージェント・システムｘのＩＤ、ＫＧｘ）
８．ＫＫｘ＝Hash（ＫＫ生成ヘッダ、カウンタ、Ｔ２、エージェント・システムｘのＩＤ、ＫＨｘ）
９．ＫＡｘ＝Hash（ＫＡ生成ヘッダ、カウンタ、Ｔ２、エージェント・システムｘのＩＤ、ＫＩｘ）
【０１５７】
大域通信処理テーブル：
図８を参照すると、本発明のキー回復システムにより要求される情報は、大域通信処理テーブルと呼ばれるテーブル８００内に記憶される。テーブル８００は説明上示されるものである。実際の実施例では、データが例えば別々のテーブルに適切に記憶され、一方がキー回復エージェント・システムの公開キーを、他方が規則を指定したりする。テーブル８００は、システムが、特定のアルゴリズム及び異なる国のユーザに対応して、キーのサイズ並びにキー回復値を計算することを可能にする情報を含む。テーブル８００はまた、各国で許可されたキー回復エージェント・システムの公開キーを含む。テーブル内の数は、本発明が可能にする柔軟性を説明するための例に過ぎない。変形は事実上、制限されない。特に、各国は多くのキー回復エージェント・システムを有し得る。
【０１５８】
国相互間の通信では、キー回復システムは、受信者の公開キー証明または匹敵するシステム構成情報から、受信者の国ＩＤを決定できる。送信者のオリジナル国ＩＤ及び受信者の宛先国ＩＤ、更に送信者及び受信者により使用される意図された暗号化アルゴリズムのアルゴリズムＩＤを用いることにより、キー回復システムは、（１）送信者及び受信者が使用可能なキーの最大長、（２）可能なＲ値（これは送信者及び受信者で異なり得る）、及び（３）キー逆変換関数により必要とされるキー回復エージェント・システムＩＤを決定する。キー回復システムは次に、この情報をキー逆変換関数に渡す。キーの長さは２つのキーの長さ値の小さい方に相当する。例えば、国Ｘ及びＹに対して、ＤＥＳのキーの値が６４ビット及び１２８ビットの場合、６４が使用される値となる。
【０１５９】
キー処理シャッフラ：
キー処理シャッフラ関数（以降では"シャッフラ関数"または単に"シャッフラ"として参照される）は、ｎビットの入力Ｘを"シャッフル化"ｎビット出力Ｙに変換する可逆関数である。シャッフラ関数は、シャッフリングをｉ≧３（ｉは変数）度繰り返して実行し、完全なミキシングを保証する。すなわち、出力内の各ビットは、入力内の各ビットに依存する。ここでの例では、ｉ＝３を選択する。シャッフラの仕様は、ｉに対して特定の値を規定しない。
【０１６０】
図６は、シャッフラ関数のハイレベル・ブロック図を提供する。単純化のため、ここでは入力が２つの１６０ビット部分（ＸＬ及びＸＲ）を含むと仮定する。（シャッフラ関数の一般的仕様は、関数が任意の長さの入力を処理することを要求する。）ハッシュ繰り返し１では、ＸＲがハッシュされ、１６０ビットのハッシュ値Ｈ（ＸＲ）が生成され、これがＸＬと排他的論理和され、マスク済み出力ｍＸＬが生成される。ハッシュ繰り返し２では、ｍＸＬがハッシュされ、１６０ビットのハッシュ値Ｈ（ｍＸＬ）が生成され、これがＸＲと排他的論理和され、マスク済み出力ｍＸＲが生成される。ハッシュ繰り返し３では、ｍＸＲがハッシュされ、１６０ビットのハッシュ値Ｈ（ｍＸＲ）が生成され、これがｍＸＬと排他的論理和され、マスク済み出力ｍｍＸＬが生成される。
【０１６１】
図７は、ｍｍＸＬ｜｜ｍｍＸＲをシャッフラ関数により"シャッフル解除"（unshuffling）し、オリジナル入力ＸＬ｜｜ＸＲを回復するプロセスを示す。ハッシュ繰り返しが逆の順序（３、２、１）で実行される。ハッシュ繰り返し３では、ｍＸＲがハッシュされ、１６０ビットのハッシュ値Ｈ（ｍＸＲ）が生成され、これがｍｍＸＬと排他的論理和され、ｍＸＬが回復される。ハッシュ繰り返し２では、ｍＸＬがハッシュされ、１６０ビットのハッシュ値Ｈ（ｍＸＬ）が生成され、これがｍＸＲと排他的論理和され、オリジナル入力ＸＲが回復される。ハッシュ繰り返し１では、ＸＲがハッシュされ、１６０ビットのハッシュ値Ｈ（ＸＲ）が生成され、これがｍＸＬと排他的論理和され、オリジナル入力ＸＬが回復される。
【０１６２】
シャッフラ関数の一般定義：
ｎビットの入力Ｘがシャッフラ関数により、次のように処理される。
１．Ｘが左部分（ＸＬ）と右部分（ＸＲ）とに分割され、ＸＬ及びＸＲの長さが次のように定義される。すなわち、ａ）ｎが偶数の場合、ＸＬ及びＸＲの各々はｎ／２ビットを含み、ｂ）ｎが奇数の場合、ＸＬは（ｎ−１）／２ビットを含み、ＸＲは（ｎ＋１）／２ビットを含む。
２．ＸＲがＸＬをマスクするために使用される。次にマスク済みＸＬが、ＸＲをマスクするために使用される。そして最後に、マスク済みＸＲが、更にマスク済みＸＬをマスクするために使用される。マスク演算は下記のように別々に定義される。
【０１６３】
ＸＬのマスキング：
ＸＬがＸＲを用いてマスクされる。
【０１６４】
ＸＬが最初にｋビットのブロックに分割される。ＸＬの長さがｋの倍数の場合、各部ロックはｋビットを含む。ＸＬの長さがｋの倍数でない場合には、ＸＬは１つの短ブロック（＜ｋビット）、及び任意的に、ｋビットの１つ以上のブロックを含む。短ブロックが存在する場合、これはＸＬの最上位ビットから構成される。
【０１６５】
ｋは、ハッシュ・アルゴリズムのブロック・サイズとして定義される。例えば、ＳＨＡ−１がハッシュ・アルゴリズムの場合、ｋ＝１６０である。ＭＤ５がハッシュ・アルゴリズムの場合、ｋ＝１２８である。この指定に関して特に述べられない場合には、ＳＨＡ−１がシャッフラ関数により使用されるハッシュ・アルゴリズムである。
【０１６６】
ＸＬ内のブロックは、次のように分割される。
0003640331.tif 000002
【０１６７】
ハッシュされる入力は、次のように定義される。
入力＝ＸＲ｜｜公開ヘッダ
ここで、公開ヘッダは次のような１０バイトの符号化構造である。
１バイト  識別子："シャッフラ"ＩＤ
４ビット  繰り返し：１＝１度目の繰り返し
４ビット  アルゴリズム：ハッシング・アルゴリズムのＩＤ
４バイト  カウンタ：１、２など。カウンタが、マスクされるＸＬ内のブロック番号に一致する。
４バイト  長さ：シャッフルされるデータの長さ（ビット）
【０１６８】
マスキング演算は次のステップを含む。
１．カウンタ＝１にセットする。入力（公開ヘッダ｜｜キー｜｜ＸＲ）をハッシュ・アルゴリズムによりハッシュし、ｋビットのハッシュＨ１を生成する。ここで"キー"は、キー処理シャッフル関数に指定される秘密キーである。Ｈ１をＸＬからのブロック１と排他的論理和し、マスク済みブロック１（ｍブロック１と示される）を生成する。
２．カウンタ＝２にセットする。入力（公開ヘッダ｜｜キー｜｜ＸＲ）をハッシュ・アルゴリズムによりハッシュし、ｋビットのハッシュＨ２を生成する。ここで"キー"は、キー処理シャッフル関数に指定される秘密キーである。Ｈ１をＸＬからのブロック２と排他的論理和し、マスク済みブロック２（ｍブロック２と示される）を生成する。
３．最後のブロック（ブロックｉ）がマスクされるまで、演算が継続する。最後のブロックがｊビット（ｊ＜ｋ）を含む短ブロックの場合、Ｈｉの最下位ｊビットをブロックｉと排他的論理和することにより、ブロックｉがマスクされ、マスク済みブロックｉ（ｍブロックｉと示される）が生成される。
【０１６９】
マスク済みＸＬは、ｍＸＬと示される。
【０１７０】
ＸＲのマスキング：
ＸＲがマスク済みＸＬを用いてマスクされる（ｍＸＬと示される）。
【０１７１】
ＸＲ内のブロックが、ＸＬ内のブロックが分割された時と同様に、次のように分割される。
0003640331.tif 000003
【０１７２】
ＸＲが、公開ヘッダ内の繰り返し数が２にセットされる（"２度目の繰り返し"を示す）以外は、ＸＬがＸＲによりマスクされた時と同様に、ｍＸＬによりマスクされる。この場合、公開ヘッダがｍＸＬの後に付加にされる。
【０１７３】
ハッシュされる入力は、公開ヘッダ内の繰り返し数が２にセットされ、"２度目の繰り返し"を示す以外は、
入力＝公開ヘッダ｜｜キー｜｜ｍＸＬ
である。カウンタがリセットされ、前述のように、１、２、．．．と増分する。マスキング演算は、入力をハッシュするステップと、そのようにして生成されたハッシュ値を、ＸＲ内のブロックと排他的論理和するステップとを含む。
【０１７４】
マスク済みＸＲは、ｍＸＲと示される。
【０１７５】
ｍＸＬのマスキング：
ｍＸＬは、公開ヘッダ内の繰り返し数が３にセットされる（"３度目の繰り返し"を示す）以外は、ＸＬがＸＲによりマスクされた時と同様に、ｍＸＲによりマスクされる。マスク済みｍＸＬはｍｍＸＬと示される。
【０１７６】
シャッフラの出力は、ｍｍＸＬ｜｜ｍＸＲである。
【０１７７】
シャッフラに指定されるキー：
本発明は、シャッフラを"キー処理"（key）する様々な方法が存在し得ることを考慮する。１つの方法は、キーをハッシュされる残りの入力と結合する、すなわち、入力＝（公開ヘッダ｜｜キー｜｜データ）であり、ここでデータはＸＬ、ＸＲ、ｍＸＬ、ｍＸＲなどである。例えば、キーは前置（prepend）されたり（入力の前）、付加され得る（入力の後）。しかしながら、単にキーを前置または付加するだけでは、判別子（distinguisher）（すなわち、関数がランダム関数として振る舞っていないことを検出する統計的テスト）を構成できるほど、必ずしも十分ではない。しかしながら、キーの一部をデータに付加及び前置することは、この問題を回避する。M．Luby、C．Rackoffによる"How to construct pseudo-random permutations from pseudo-random functions"、SIAM Journal of Computing、vol．17、pp．373-386、1988を参照されたい。この論文は、内部で使用される関数が擬似ランダム関数の場合、シャッフラのような構造が擬似ランダム順列であることを証明する。ＦＯＣＳ  ９６で現れるM．Bellare、R．Canetti、及びH．Krawczykによる"Pseudo-random functions revisited、the cascade construction"を参照されたい。この論文は、ハッシュ・アルゴリズムＨの衝突関数が擬似ランダムの場合、データへのキーの一部の付加及び前置が、擬似ランダム関数であることを証明する。
【０１７８】
従って、本発明は、キーを分割し、ある部分を前置し、他の部分を付加することが望ましいことを考慮する。しかしながら、本発明は、キーをシャッフラ内のハッシュされるデータに結合するこの方法に限られるものではない。キーを小部分に分割し、これらの部分をインタリーブしたり、或いはハッシング演算を実行する以前に、単純なまたは複雑な他の結合関数を用いて、キーをデータと結合してもよい。
【０１７９】
まとめとして、本発明の構成に関して以下の事項を開示する。
【０１８０】
（１）  キー回復エージェント・システムを用いて秘密値の回復を提供する装置であって、
前記キー回復エージェント・システム用のジェネレータ値を生成する手段であって、前記ジェネレータ値を生成する手段が、秘密値を確立する手段と、前記ジェネレータ値を前記秘密値の１方向関数として生成する手段とを含む、前記生成する手段と、
前記生成されたジェネレータ値を前記キー回復エージェント・システムにとって利用可能にする手段であって、前記キー回復エージェント・システムにとって利用可能にする手段が、前記ジェネレータ値を前記キー回復エージェント・システムの公開キーにより暗号化して、暗号化されたジェネレータ値を生成する暗号化手段を含む、前記利用可能にする手段と、
暗号化キーを前記利用可能にされたジェネレータ値の１方向関数として生成する手段と、
前記秘密値を前記生成された暗号化キーにより暗号化して、暗号化された秘密値を生成する暗号化手段であって、前記キー回復エージェント・システムに前記暗号化されたジェネレータ値を前記公開キーに対応する秘密キーにより解読させ、前記暗号化キーを前記解読させたジェネレータ値の前記１方向関数として生成させ、そして前記暗号化された秘密値を該生成された暗号化キーにより解読することにより、前記秘密値が前記暗号化された秘密値から回復可能である、前記暗号化手段と
を含む、装置。
（２）  前記秘密値を暗号化キーとして使用することにより、データを暗号化して、暗号化データを生成する暗号化手段を含む、（１）記載の装置。
（３）  前記暗号化データが回復フィールドに関連付けられる、（２）記載の装置。
（４）  前記回復フィールドが、前記キー回復エージェント・システムの公開キーにより暗号化される前記ジェネレータ値を含む、（３）記載の装置。
（５）  前記回復フィールドが、前記暗号化された秘密値と前記キー回復エージェント・システムの公開キーにより暗号化される前記ジェネレータ値とを含む、（３）記載の装置。
（６）  前記暗号化キーが、前記ジェネレータ値及び動的値の１方向関数として生成される、（１）記載の装置。
（７）  複数のキー回復エージェント・システムを用いて、秘密値の回復を提供する装置であって、
前記キー回復エージェント・システム用の各々のジェネレータ値を生成する手段と、
前記キー回復エージェント・システムの各々に対して生成された前記ジェネレータ値を、当該キー回復エージェント・システムにとって利用可能にする手段と、
それぞれの暗号化キーを前記ジェネレータ値の１方向関数として生成する手段と、
前記秘密値を前記暗号化キーにより暗号化して、暗号化された秘密値を生成する暗号化手段であって、前記キー回復エージェント・システムに前記暗号化キーを前記ジェネレータ値の前記１方向関数として生成させ、そして前記暗号化された秘密値を前記暗号化キーにより解読することにより、前記秘密値が前記暗号化された秘密値から回復可能である、前記暗号化手段と、
を含む、（１）記載の装置。
（８）  前記暗号化手段が、前記秘密値を前記暗号化キーにより連続的に暗号化し、前記暗号化された秘密値を生成する暗号化手段を含む、（７）記載の装置。
（９）  前記ジェネレータ値を生成する前記手段が、
秘密値を確立する手段と、
前記ジェネレータ値を前記秘密値のそれぞれ１方向関数として生成する手段であって、前記１方向関数が互いに異なる、前記生成手段と、
を含む、（７）記載の装置。
（１０）  前記ジェネレータ値を生成する前記手段が、
前記キー回復エージェント・システムの各々に対して、前記秘密値及び当該システムに固有の値の関数として、中間値を生成する手段と、
前記ジェネレータ値の各々を、対応する中間値の１方向関数として生成する手段と、
を含む、（９）記載の装置。
（１１）  ａ）要求当事者のコンピュータから秘密値を受信する手段と、
ｂ）所定の要求に応じて、前記キー回復エージェント・システムが少なくとも前記秘密値から従属値を計算して、前記従属値を前記要求当事者のコンピュータに提供する手段と、
をさらに含む、（１）〜（１０）のいずれか一項に記載のキー回復エージェント・システム。
（１２）  前記キー回復エージェント・システムが前記秘密値と前記キー回復エージェント・システムにとって利用可能な追加の情報とから前記従属値を計算する手段を含む、（１１）記載のキー回復エージェント・システム。
（１３）  前記計算される従属値が、前記秘密値に対して計算されるハッシュ値として計算される、（１１）記載のキー回復エージェント・システム。
（１４）  前記計算される従属値が、前記秘密値と前記要求当事者のコンピュータにより提供される非秘密データに対して計算されるハッシュ値として計算される、（１１）記載のキー回復エージェント・システム。
（１５）  前記非秘密データが特定のキーに固有のキー回復情報を含む、（１４）記載のキー回復エージェント・システム。
（１６）  前記キー回復エージェント・システムに提供される前記秘密値が、複数の従属値を計算するために使用される、（１１）記載のキー回復エージェント・システム。
（１７）  前記従属値が、異なる要求当事者のコンピュータに対して計算される、（１６）記載のキー回復エージェント・システム。
（１８）  前記従属値が、異なる時刻に計算される、（１６）記載のキー回復エージェント・システム。
（１９）  前記暗号化が、暗号化キーにより平文ブロックを暗号化する方法を含み、前記方法は、
ａ）前記平文ブロックを第１の部分及び第２の部分に区分するステップと、
ｂ）前記平文ブロックを複数の繰り返しにさらすステップであって、前記繰り返しは、前記第１の部分及び第２の部分が、第１の出力部分及び第２の出力部分を生成するための入力部分として処理され、前記繰り返しの各々が、
１）前記入力部分の一方を前記キーに結合し、複合部分を生成するステップと、
２）前記複合部分のハッシュを生成するステップと、
３）前記複合部分の前記ハッシュを他方の前記入力部分と結合し、前記出力部分の一方を生成するステップと、
４）他方の前記出力部分を前記他方の入力部分から生成するステップと、
を含む、前記繰り返しにさらすステップと、
ｃ）最後の前記繰り返しにより生成される前記出力部分を結合し、暗号化平文ブロックを生成するステップと
を含む、（１）〜（１０）のいずれか一項に記載の装置。
（２０）  暗号回復システムにおいて、ユーザのコンピュータ・システムが公開回復キーにより回復値を暗号化し、該暗号化回復値を（１）に記載のキー回復エージェント・システムに提供し、前記キー回復エージェント・システムが前記公開回復キーに対応する秘密回復キーを用いて、前記暗号化回復値から前記回復値を回復でき、前記ユーザ及び前記キー回復エージェント・システムに対して、前記公開回復キー及び前記秘密回復キーを確立でき、
前記ユーザに対して、前記公開回復キー及び対応する前記秘密回復キーを含む回復キー対を生成する手段を含み、
前記回復キー対を該ユーザのコンピュータ・システムから前記キー回復エージェント・システムに安全に伝送する手段と
を含む、暗号回復システム。
（２１）  前記ユーザのコンピュータ・システムが、それぞれの前記キー回復エージェント・システムにとって利用可能な複数の回復値を生成する手段を含み、前記各手段が前記キー回復エージェント・システムの各々に対して実行される、（２０）記載の暗号回復システム。
（２２）  前記キー回復エージェント・システムが、前記回復キー対の受信に際して、前記公開回復キー及び前記秘密回復キーが有効なキー対であることを確認する手段を含む、（２０）記載の暗号回復システム。
（２３）  前記キー回復エージェント・システムが、前記公開回復キー及び前記秘密回復キーが有効なキー対であることを確認する時、秘密サイン・キーを用いて公開確認キー上にサインを生成し、前記サインを有する前記公開回復キーを前記ユーザのコンピュータ・システムに返却する手段を含む、（２２）記載の暗号回復システム。
（２４）  前記ユーザのコンピュータ・システムが、前記サインを有する前記公開回復キーの受信時に、前記サイン・キーに対応する公開確認キーを用いて前記サインを確認する手段を含む、（２３）記載の暗号回復システム。
（２５）  前記キー回復エージェント・システムが公開暗号化キーを有し、前記伝送する手段が、
前記回復キー対の前記秘密キーを、前記キー回復エージェント・システムの前記公開暗号化キーを用いて暗号化する手段と、
前記回復キー対の前記公開キー及び前記暗号化された秘密キーを、該ユーザのコンピュータ・システムから前記キー回復システムエージェント・に伝送する手段と
を含む、（２０）記載の暗号回復システム。
（２６）  前記キー回復エージェント・システムが、前記回復キー対の受信時に、前記公開暗号化キーに対応する秘密解読キーを用いて、前記回復キー対の前記秘密キーを解読する手段を含む、（２５）記載の暗号回復システム。
（２７）  （２５）に記載の前記キー回復エージェント・システムに伝送する前記手段が、
前記回復キー対の前記秘密キーを装置に埋め込む手段であって、前記装置が前記秘密キーを用いて値を暗号化できるが、前記秘密キーを明かすことができない、前記埋め込み手段と、
前記回復キー対の前記公開キー、及び前記回復キー対の前記秘密キーを含む前記装置を、前記キー回復エージェント・システムに用意する手段と
を含む、（２５）記載の暗号回復システム。
（２８）  （１）に記載のキー回復エージェント・システムが要求当事者のコンピュータに秘密情報を選択的に明かせるように、暗号システムを操作する暗号回復システムであって、
第１の秘密値から第２の秘密値を導出する手段と、
前記第２の秘密値を許可情報と結合し、前記結合の第１のハッシュ値を計算する手段と、
前記秘密情報の回復のために、前記許可情報、前記第１のハッシュ値、及び前記第１の秘密値を、前記キー回復エージェント・システムに提供する手段と
を含む、暗号回復システム。
（２９）  前記キー回復エージェント・システムが、前記要求当事者のコンピュータからの回復要求の受信することに応答して、
前記第１の秘密値から第２の秘密値を導出する手段と、
前記第２の秘密値を前記許可情報と結合し、前記結合の第２のハッシュ値を計算する手段と、
前記第１のハッシュ値と前記第２のハッシュ値とが等しいか否か比較する手段と、
証明書が前記許可情報と一致し、前記第１のハッシュ値及び第２のハッシュ値が等しい場合、前記秘密情報を明かす手段と
を実行する手段を含む、（２８）記載の暗号回復システム。
（３０）  前記認可情報が、それを暗号化することによって前記キー回復エージェント・システムに提供される、または前記第１の秘密値がそれを暗号化することによって前記キー回復エージェント・システムに提供される、（２８）記載の暗号回復システム。
【図面の簡単な説明】
【図１】  本発明のキー回復システムが使用され得る通信システムを示す図である。
【図２】  本発明の通信プロセスの２つのフェーズを示す図である。
【図３】  保護されたキーの回復を可能にする、本発明の回復プロセスを示す図である。
【図４】  本発明のキー階層を示す図である。
【図５】  確認コードの生成プロセスを示す図である。
【図６】  本発明のシャッフラ関数のハイレベル・ブロック図である。
【図７】  シャッフラ値をシャッフル解除する本発明の逆シャッフラ関数のハイレベル・ブロック図である。
【図８】  本発明のキー回復システムにより使用される情報を記憶する大域通信処理テーブルを示す図である。
【図９】  回復プロシジャのフェーズ１の間に、送信者により実行されるステップを示す図である。
【図１０】  回復プロシジャのフェーズ２の間に、送信者により実行されるステップを示す図である。
【図１１】  フェーズ１データ・ブロックの構成を示す図である。
【図１２】  フェーズ２データ・ブロックの構成を示す図である。
【符号の説明】
１００  通信システム
１０２  送信者
１０４  受信者
１０６  通信チャネル
１０８、１１０、１１２、１１４、１４２、１４４  キー回復エージェント・システム
１１６、１１８  法執行機関
１２０  ＳＫＲ通信プロセス
１２２  フェーズ１
１２８  フェーズ２
１４０  ＳＫＲ回復プロセス
１４６  回復サービス
１５０Ａ、１５６  解読情報
１６０  ＳＫＲキー階層
１６２  初期ランダム・シードＳ
１６４、１６５、１６６、１６７  擬似ランダム・キー生成キーＫＧ
１６８、１７０、１７２、１７４  擬似ランダム・キー生成キーＫＨ
１６９、１７１、１７３、１７５  擬似ランダム・キー生成キーＫＩ
１７６、１７８、１８０、１８２  擬似ランダム・キー生成キーＫＫ
１７７、１７９、１８１、１８３  擬似ランダム・キー生成キーＫＡ
８００  テーブル
【図１】
0003640331.tif 000004
【図２】
0003640331.tif 000005
【図３】
0003640331.tif 000006
【図４】
0003640331.tif 000007
【図５】
0003640331.tif 000008
【図６】
0003640331.tif 000009
【図７】
0003640331.tif 000010
【図８】
0003640331.tif 000011
【図９】
0003640331.tif 000012
【図１０】
0003640331.tif 000013
【図１１】
0003640331.tif 000014
【図１２】
0003640331.tif 000015