(57)【要約】公開鍵署名システムにおいて使用される秘密鍵（１４０）などの秘密データが、「生成カモフラージュ」技術を使用してデジタルウォレット（１００）の中でセキュアにされる。この技術では、秘密鍵（１４０）は、暗号化された形態でさえ、デジタルウォレット（１００）の中に必ずしも記憶される必要がない。代わりに、ウォレットは、ユーザが自身のあらかじめ選択されたＰＩＮを入力した場合に正しい秘密鍵を再生成する秘密鍵生成ファンクション（１３０）を含む。ユーザが誤ったＰＩＮを入力した場合、誤った秘密鍵（１４０）が出力される。そのような秘密鍵（１４０）は、秘密鍵フォーマットの使用、および／または秘密鍵（１４０）に対応する擬似公開鍵の使用を介して正しい秘密鍵（１４０）と容易に区別することができないように構成することができる。本明細書で説明する技術は、秘密鍵以外の他の形態の再生成可能な秘密データにも適用可能である。
2004530346.tif 000002
【特許請求の範囲】
【請求項１】
ユーザのアクセスコードを使用してセキュアにされた、前記ユーザのために秘密データを再生成するためのデジタルウォレットであって、
（ａ）入力アクセスコードを受け取るためのコンピュータによって実装される入力部と、
（ｂ）前記秘密データの少なくとも一部分を生成するのに使用可能なシードを導出するための前記入力部に動作上、接続されたシード導出モジュールと、
（ｃ）（ｉ）前記ユーザの前記秘密データのシードベースの初期設定によって以前に使用された所定のデータ生成プロトコルを実施し、
（ｉｉ）シード−アクセスコード関係の表現を含み、
（ｉｉｉ）前記シード−アクセスコード関係に従って前記導出されたシードをデジタル処理することによって出力データを生成するように構成され、
（ｉｖ）前記出力データは、前記入力アクセスコードが前記ユーザのアクセスコードに等しい場合、前記ユーザの秘密データの前記少なくとも一部分を再生成するシードベースのデータ生成モジュールと、
（ｄ）前記出力データの前記生成が、前記秘密データの前記少なくとも一部分のいずれの形態のいずれの記憶にも依存せずに行われるステップと
を含むことを特徴とするウォレット。
【請求項２】
前記出力データは、前記入力アクセスコードが前記ユーザのアクセスコードに等しくない場合、前記ユーザの秘密データの前記少なくとも一部分を再生成しないことを特徴とする請求項１に記載のウォレット。
【請求項３】
前記出力データは、前記秘密データの前記少なくとも一部分の特徴的外観を有することを特徴とする請求項２に記載のウォレット。
【請求項４】
前記アクセスコードは、ＰＩＮであり、前記秘密データは、非対称暗号鍵を含むことを特徴とする請求項１に記載のウォレット。
【請求項５】
前記出力データは、非対称暗号鍵の特徴的外観を有することを特徴とする請求項４に記載のウォレット。
【請求項６】
前記アクセスコードは、ＰＩＮであり、前記秘密データは、対称暗号鍵を含むことを特徴とする請求項１に記載のウォレット。
【請求項７】
前記シード−アクセスコード関係は、前記導出されたシードが前記入力アクセスコードに等しいように恒等関係（ｉｄｅｎｔｉｔｙ  ｒｅｌａｔｉｏｎｓｈｉｐ）であることを特徴とする請求項１に記載のウォレット。
【請求項８】
前記シード−アクセスコード関係は、前記入力アクセスコードの埋込みが行われたバージョンとして前記導出されたシードを表現することを特徴とする請求項１に記載のウォレット。
【請求項９】
前記シード−アクセスコード関係は、ユーザのアクセスコードによってマスクされた前記初期シードのバージョンを含むことを特徴とする請求項１に記載のウォレット。
【請求項１０】
（ｉ）前記初期シードの前記マスクされたバージョンは、前記初期シードと前記ユーザのアクセスコードのＸＯＲを含み、
（ｉｉ）前記シード−アクセスコード関係に従って前記導出されたシードを前記処理するステップは、前記初期シードの前記マスクされたバージョンを前記導出されたシードとＸＯＲ演算するステップを含むことを特徴とする請求項９に記載のウォレット。
【請求項１１】
前記初期シードの前記記憶されているマスクされたバージョンをユーザの新しいアクセスコードとＸＯＲ演算されたユーザの古いアクセスコードとＸＯＲ演算された前記初期シードの前記記憶されているマスクされたバージョンの値で置き換えることによって前記ユーザの新しいアクセスコードで前記ユーザの古いアクセスコードを更新するためのプログラムコードをさらに含むことを特徴とする請求項１０に記載のウォレット。
【請求項１２】
（ｉ）前記シード−アクセスコード関係は、前記導出されたシードを形成するように前記入力アクセスコードと連結することができる前記初期シードの切り捨てられた（ｔｒｕｎｃａｔｅｄ）バージョンを含み、
（ｉｉ）前記シード−アクセスコード関係に従って前記導出されたシードを前記処理するステップは、前記初期シードの前記切り捨てられたバージョンを前記入力アクセスコードと連結するステップを含むことを特徴とする請求項１に記載のウォレット。
【請求項１３】
（ｉ）前記シード−アクセスコード関係は、前記入力アクセスコードの複数の可能な値と前記導出されたシードの対応する複数の可能な値の値、ならびに前記入力アクセスコードの前記複数の可能な値と前記導出されたシードの対応する前記複数の可能な値の間の関連を含み、
（ｉｉ）前記シード−アクセスコード関係に従って前記導出されたシードを前記処理するステップは、前記入力アクセスコードに対応する前記導出されたシードの前記可能な値をルックアップし、出力するステップを含むことを特徴とする請求項１に記載のウォレット。
【請求項１４】
（１）前記シード導出モジュールが、前記データ生成モジュールと合併され、
（２）前記出力データは、前記導出されたシードを含むことを特徴とする請求項１３に記載のウォレット。
【請求項１５】
前記秘密データは、前記ユーザの秘密鍵を含み、前記出力データは、秘密鍵の特徴的外観を有することを特徴とする請求項５に記載のウォレット。
【請求項１６】
前記ユーザの秘密鍵に対応する前記ユーザの公開鍵は、擬似公開されていることを特徴とする請求項５に記載のウォレット。
【請求項１７】
前記擬似公開鍵を含むデジタル証明書をさらに含むことを特徴とする請求項１６に記載のウォレット。
【請求項１８】
前記デジタル証明書は、許可を受けた検証者による以外は検証可能でない証明者の鍵の下で暗号化された前記ユーザの擬似公開鍵の暗号化されたバージョンを含むことを特徴とする請求項１７に記載のウォレット。
【請求項１９】
ネットワークを介してローミングする（ｒｏａｍｉｎｇ）ユーザが遠隔でアクセスすることができるように構成されることを特徴とする請求項１に記載のウォレット。
【請求項２０】
前記ユーザのために秘密データをセキュアに記憶し、再生成するためのコンピュータによって実施される方法であって、
（ａ）入力アクセスコードを受け取るステップと、
（ｂ）前記受け取られた入力アクセスコードを使用することによって前記秘密データの少なくとも一部分を生成するように使用可能なシードを導出するステップと、
（ｃ）シード−アクセスコード関係の表現を獲得するステップと、
（ｄ）（ｉ）前記シード−アクセスコード関係に従い、
（ｉｉ）前記ユーザの前記秘密データのシードベースの初期設定によって以前に使用された所定のデータ生成プロトコルを実行することにより、
（ｉｉｉ）前記入力アクセスコードが前記ユーザのアクセスコードに等しい場合、前記ユーザの秘密データの前記少なくとも一部分を再生成して出力データを生成する前記導出されたシードをデジタル処理するステップと、
（ｅ）前記出力データの前記生成が、前記秘密データの前記少なくとも一部分のいずれの形態のいずれの記憶にも依存せずに行われるステップと
を含むことを特徴とする方法。
【請求項２１】
前記出力データは、前記入力アクセスコードが前記ユーザのアクセスコードに等しくない場合、前記ユーザの秘密データの前記少なくとも一部分を再生成しないことを特徴とする請求項２０に記載の方法。
【請求項２２】
前記出力データは、前記秘密データの前記少なくとも一部分の特徴的外観を有することを特徴とする請求項２１に記載の方法。
【請求項２３】
前記アクセスコードは、ＰＩＮであり、前記秘密データは、非対称暗号鍵を含むことを特徴とする請求項２０に記載の方法。
【請求項２４】
前記シード−アクセスコード関係は、前記導出されたシードが前記入力アクセスコードに等しいように恒等関係であることを特徴とする請求項２０に記載の方法。
【請求項２５】
前記シード−アクセスコード関係は、前記入力アクセスコードの埋込みが行われたバージョンとして前記導出されたシードを表現することを特徴とする請求項２０に記載の方法。
【請求項２６】
前記シード−アクセスコード関係は、ユーザのアクセスコードによってマスクされた前記初期シードのバージョンを含むことを特徴とする請求項２０に記載の方法。
【請求項２７】
（ｉ）前記初期シードの前記マスクされたバージョンは、前記初期シードと前記ユーザのアクセスコードのＸＯＲを含み、
（ｉｉ）前記シード−アクセスコード関係に従って前記導出されたシードを前記処理するステップは、前記初期シードの前記マスクされたバージョンを前記導出されたシードとＸＯＲ演算するステップを含むことを特徴とする請求項２６に記載の方法。
【請求項２８】
（ｉ）前記シード−アクセスコード関係は、前記導出されたシードを形成するように前記入力アクセスコードと連結することができる前記初期シードの切り捨てられた（ｔｒｕｎｃａｔｅｄ）バージョンを含み、
（ｉｉ）前記シード−アクセスコード関係に従って前記導出されたシードを前記処理するステップは、前記初期シードの前記切り捨てられたバージョンを前記入力アクセスコードと連結するステップを含むことを特徴とする請求項２０に記載の方法。
【請求項２９】
（ｉ）前記シード−アクセスコード関係は、前記入力アクセスコードの複数の可能な値と前記導出されたシードの対応する複数の可能な値の値、ならびに前記入力アクセスコードの前記複数の可能な値と前記導出されたシードの対応する前記複数の可能な値の間の関連を含み、
（ｉｉ）前記シード−アクセスコード関係に従って前記導出されたシードを前記処理するステップは、前記入力アクセスコードに対応する前記導出されたシードの前記可能な値をルックアップし、出力するステップを含むことを特徴とする請求項２０に記載の方法。
【請求項３０】
（１）前記シードを前記導出するステップと前記所定のデータ生成プロトコルを前記実施するステップが、共通の動作に合併され、
（２）前記出力データは、前記導出されたシードを含むことを特徴とする請求項２９に記載の方法。
【請求項３１】
（ａ）入力アクセスコードを受け取るためのコンピュータ論理命令と、
（ｂ）前記受け取られた入力アクセスコードを使用することによって前記秘密データの少なくとも一部分を生成するように使用可能なシードを導出するためのコンピュータ論理命令と、
（ｃ）シード−アクセスコード関係の表現を獲得するためのコンピュータ論理命令と、
（ｄ）（ｉ）前記シード−アクセスコード関係に従い、
（ｉｉ）前記ユーザの前記秘密データの少なくとも一部分のシードベースの初期設定によって以前に使用された所定のデータ生成プロトコルを実行することにより、
（ｉｉｉ）前記入力アクセスコードが前記ユーザのアクセスコードに等しい場合、前記ユーザの秘密データの前記少なくとも一部分を再生成して出力データを生成する前記導出されたシードをデジタル処理するためのコンピュータ論理命令と、
（ｅ）前記出力データの前記生成が、前記秘密データの前記少なくとも一部分のいずれの形態のいずれの記憶にも依存せずに行われるためのコンピュータ論理命令とを含む前記ユーザのために秘密データをセキュアに記憶し、再生成するようにコンピュータ上で実行可能なプログラムを記憶していることを特徴とするコンピュータ可読媒体。
【請求項３２】
前記出力データは、前記入力アクセスコードが前記ユーザのアクセスコードに等しくない場合、前記ユーザの秘密データの前記少なくとも一部分を再生成しないことを特徴とする請求項３１に記載のコンピュータ可読媒体。
【請求項３３】
前記出力データは、前記秘密データの前記少なくとも一部分の特徴的外観を有することを特徴とする請求項３２に記載のコンピュータ可読媒体。
【請求項３４】
前記アクセスコードは、ＰＩＮであり、前記秘密データは、非対称暗号鍵を含むことを特徴とする請求項３１に記載のコンピュータ可読媒体。
【請求項３５】
前記シード−アクセスコード関係は、前記導出されたシードが前記入力アクセスコードに等しいように恒等関係であることを特徴とする請求項３１に記載のコンピュータ可読媒体。
【請求項３６】
前記シード−アクセスコード関係は、前記入力アクセスコードの埋込みが行われたバージョンとして前記導出されたシードを表現することを特徴とする請求項３１に記載のコンピュータ可読媒体。
【請求項３７】
前記シード−アクセスコード関係は、ユーザのアクセスコードによってマスクされた前記初期シードのバージョンを含むことを特徴とする請求項３１に記載のコンピュータ可読媒体。
【請求項３８】
（ｉ）前記初期シードの前記マスクされたバージョンは、前記初期シードと前記ユーザのアクセスコードのＸＯＲを含み、
（ｉｉ）前記シード−アクセスコード関係に従って前記導出されたシードを前記処理するステップは、前記初期シードの前記マスクされたバージョンを前記導出されたシードとＸＯＲ演算するステップを含むことを特徴とする請求項３７に記載のコンピュータ可読媒体。
【請求項３９】
（ｉ）前記シード−アクセスコード関係は、前記導出されたシードを形成するように前記入力アクセスコードと連結することができる前記初期シードの切り捨てられた（ｔｒｕｎｃａｔｅｄ）バージョンを含み、
（ｉｉ）前記シード−アクセスコード関係に従って前記導出されたシードを前記処理するステップは、前記初期シードの前記切り捨てられたバージョンを前記入力アクセスコードと連結するステップを含むことを特徴とする請求項３１に記載のコンピュータ可読媒体。
【請求項４０】
（ｉ）前記シード−アクセスコード関係は、前記入力アクセスコードの複数の可能な値と前記導出されたシードの対応する複数の可能な値の値、ならびに前記入力アクセスコードの前記複数の可能な値と前記導出されたシードの対応する前記複数の可能な値の間の関連を含み、
（ｉｉ）前記シード−アクセスコード関係に従って前記導出されたシードを前記処理するステップは、前記入力アクセスコードに対応する前記導出されたシードの前記可能な値をルックアップし、出力するステップを含むことを特徴とする請求項３１に記載のコンピュータ可読媒体。
【請求項４１】
（１）前記シードを前記導出するステップと前記所定のデータ生成プロトコルを前記実施するステップが、共通の動作に合併され、
（２）前記出力データは、前記導出されたシードを含むことを特徴とする請求項４０に記載のコンピュータ可読媒体。
【請求項４２】
ユーザのアクセスコードの下で前記ユーザの生成カモフラージュされたアクセス規制されたデータをカモフラージュするための方法であって、
（ａ）生成証印（ｉｎｄｉｃｉａ）に従って生成プロトコルを使用することによってユーザのアクセス規制されたデータを初期設定するステップと、
（ｂ）前記生成証印と前記ユーザのアクセスコードの間の所定の関係をメモリの中に記憶するステップと、
（ｃ）（ｉ）前記アクセス規制されたデータの許可を受けたユーザによって再生成可能であるが、前記アクセス規制されたデータの許可を受けていないユーザによっては再生成不可能であるように、
（ｉｉ）前記カモフラージュするステップは、前記生成証印と前記ユーザのアクセスコードの間の前記所定の関係を記憶するステップを含み、
（ｉｉｉ）前記記憶されている生成証印−アクセスコード関係に従って入力されたアクセスコードのコンピュータベースの処理を介して前記アクセス規制されたデータの前記少なくとも一部分の後のアクセスを可能にし、
（ｉｖ）前記アクセス規制されたデータの前記少なくとも一部分のいずれの形態のいずれの記憶にも依存せず前記アクセス規制されたデータの前記少なくとも一部分をカモフラージュするステップと、
（ｄ）前記アクセス規制されたデータの前記カモフラージュされた少なくとも一部分をデジタルウォレットの中に記憶するステップと、
（ｅ）前記デジタルウォレットを前記ユーザに提供するステップと
を含むことを特徴とする方法。
【請求項４３】
ユーザのアクセスコードの下で前記ユーザの生成カモフラージュされたアクセス規制されたデータをカモフラージュするための方法であって、
（ａ）生成認証に従って生成プロトコルを使用することによってユーザのアクセス規制されたデータを初期設定するステップと、
（ｂ）前記アクセス規制されたデータの許可を受けたユーザによって再生成可能であるが、前記アクセス規制されたデータの許可を受けていないユーザによっては再生成不可能であるように前記アクセス規制されたデータの少なくとも一部分を生成カモフラージュするステップと、
（ｃ）前記アクセス規制されたデータの前記生成カモフラージュされた少なくとも一部分をデジタルウォレットの中に記憶するステップと、
（ｄ）前記デジタルウォレットを前記ユーザに提供するステップと
を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、アクセス規制されたデータをセキュアにすることに関し、より具体的には、暗号鍵の生成、証明、および使用をセキュアにすることに関する。
【背景技術】
【０００２】
暗号データセキュリティ技術は、鍵を使用してデータを暗号化することによってデータをセキュアにする。暗号化解除されたデータは、その鍵を使用することでしか回復することができない。鍵は、悪意のある侵入者が、かなり大量のコンピューティングリソースを使用してさえ、網羅的な試行錯誤によってその鍵を推測できないだけ十分に長いように選択される。したがって、データのセキュリティは、鍵のセキュリティに移されている。
【０００３】
ＲＳＡなどの非対称暗号法では、各ユーザが、マッチする１対の鍵である秘密鍵と公開鍵を保持する。秘密鍵と公開鍵は、秘密鍵を使用して暗号化されたメッセージ（例えば、メッセージ、データ、符号、および情報の他の暗号鍵または暗号表現を含む任意の他のデジタル式に表現可能な情報）が、公開鍵を使用してしか暗号化解除することができず、またその逆の場合も同様であることで、固有のマッチするペアを形成する。秘密鍵と公開鍵の間におけるこの１対１対応を使用して、電子メッセージおよび電子取引のためのデジタル署名を生成することができる。電子メッセージに署名するのに、ユーザは、単にメッセージを自身の秘密鍵を使用して暗号化するだけであることが可能である。次に、ユーザは、自身の公開鍵を暗号化されたメッセージに付加し、メッセージを受け手に送る。代替として、ユーザが自身の公開鍵をメッセージに付加するのではなく、受け手が、公開鍵のディレクトリの中でそのユーザの公開鍵をルックアップすることも可能である。いずれの場合も、署名を検証するのに、受け手は、付加された公開鍵を使用してメッセージを暗号化解除し、暗号化解除に成功した場合、受け手は、メッセージの出所について確信する。
【０００４】
前述したとおり、送り手は、メッセージに署名するのにメッセージ全体を自身の秘密鍵で暗号化しなければならず、これは、計算上の費用が高い。これに対処するのに、メッセージの固定された長さ、例えば、１２８ビット長の短いハッシュを計算した後、そのハッシュ値を暗号化するだけで十分である。ハッシュ関数が、ＭＤ５などの良好な関数である場合、２つの別個のメッセージが同一のハッシュ値を有する確率は、極めて小さい。したがって、デジタル署名法は、通常、メッセージのハッシュを計算し、ハッシュ値だけを暗号化する。暗号化されたハッシュ値、および送り手の公開鍵が、受け手への伝送に先立って元のメッセージに付加される。署名を検証するのに、受け手は、まず、受け取られたメッセージのハッシュを計算する。計算されたハッシュ値が、暗号化されたハッシュの暗号化解除された形態と同一である場合、受け手は、メッセージの出所について確信する。
【０００５】
以上において、署名検証プロセスの強度は、メッセージに付加された公開鍵が、実際に所有者とされる人の公開鍵であるという受け手の確信に依存する。マッチする１対の鍵を生成できる人は誰でも、ユーザになりすますことが、そのようななりすましを防止する手段が存在しない限り、可能である。このため、公開鍵は、しばしば、証明機関、または略してＣＡと呼ばれる第三者の公証人によって証明される。証明機関の例は、ＶｅｒｉｓｉｇｎやＥｎｔｒｕｓｔなどの商業エンティティである。ＣＡは、被証明者（ｃｅｒｔｉｆｅｅ）の公開鍵を被証明者の身元に結合し、次に、結合されたメッセージにＣＡの秘密鍵を使用して署名して、被証明者の公開鍵の証明書を形成する。したがって、証明書保持者は、メッセージを受け手に送信するのに先立って、自身の公開鍵証明書を暗号化されたメッセージに付加する。送り手の身元、および送り手の公開鍵の真正性を調べるため、受け手は、ＣＡの公開鍵を使用して送り手の公開鍵証明書上のＣＡの署名を検証する。少数の広く信頼されているＣＡしか存在しないので、ＣＡの公開鍵は、信頼できる仕方で、容易に受け手に供与される。したがって、受け手と送り手が以前の関係を全く有していない場合でも、受け手と送り手が共通のＣＡをともに信頼する限り、受け手が送り手の署名を検証できることで、公開鍵署名は、他人対他人の証明に使用することができる。
【０００６】
ユーザの署名が固有であり、偽造が不可能であることは、ユーザが自身の秘密鍵を秘密に保つ能力に非常に強く依存する。ユーザの秘密鍵にアクセスを有する人は誰でも、完全に匿名でそのユーザになりすますことができる。したがって、電子商取引およびその他のアプリケーションに関するデジタル署名の広汎な使用は、秘密鍵のセキュアな記憶のための技術を要する。現在、秘密鍵は、スマートカード、Ｆｏｒｔｅｚｚａカード、ＰＣＭＣＩＡカード、およびその他の小型ハードウェアデバイスなどのハードウェアデバイス上に物理的に分離することによって記憶すべきであると広く信じられている。スマートカードは、マイクロプロセッサおよびいくらかのメモリを含むクレジットカードサイズのカードである。ユーザの秘密鍵および公開鍵証明書は、そのメモリ上に書き込まれる。カードを使用するのに、ユーザは、単に、ホストコンピュータに接続された適切なカード読取り装置にカードを挿入した後、自身のＰＩＮを入力してカードを起動する。正しいＰＩＮが入力された場合、カード上のプロセッサが、ホストコンピュータ上で使用するために秘密鍵を開放する。誤ったＰＩＮが入力された場合、プロセッサは、ユーザの秘密鍵を開放しない。一部の不正操作に耐性のあるスマートカードは、誤ったＰＩＮが数回の連続した起動の試行で入力された場合、永久にロックアップ（ｌｏｃｋ  ｕｐ）するように構成される。一部の高度なスマートカード（しばしば、クリプトカード（ｃｒｙｐｔｏｃａｒｄ）と呼ばれる）は、暗号処理を行うことができ、したがって、秘密鍵は、決してスマートカードを離れない。処理されるべきバイトがホストコンピュータからスマートカードに入り、処理され、ホストコンピュータに戻るように伝送される。残念ながら、クリプトカードでさえ、カード読取り装置との間でバイトを伝送してやり取りするためにホストコンピュータに頼らなければならず、したがって完全にセキュアではない。悪意のあるホストコンピュータが、伝送に先立って単にあるメッセージを別のメッセージに置き換え、ユーザが、実際には別のメッセージに署名しているのに、あるメッセージに署名していると思うようにすることが可能である。したがって、既存のクリプトカードでさえ、カード保持者を（例えば、悪意のあるホストコンピュータから）完全に保護することができない。
【０００７】
【特許文献１】
米国特許第６，１７０，０５８号
【特許文献２】
米国特許出願０９／１９６，４３０
【非特許文献１】
Schneier, Applied Cryptography, Wiley, 1996
【非特許文献２】
Menezes, Handbook of Applied Cryptography, CRC Press, 1997
【発明の開示】
【発明が解決しようとする課題】
【０００８】
スマートカードは、秘密鍵をセキュアに記憶する問題を解決するが、以下のいくつかの重要な欠点を抱えている。
【０００９】
１）高い初期費用：スマートカードは、スマートカード読取り装置の形態で高価な追加のハードウェアインフラストラクチャを必要とする。
２）管理上のオーバーヘッド：スマートカードは、配布および保守のために管理上のオーバーヘッドを要する。
３）低いユーザ利便性：ユーザは、スマートカードの不正操作に耐える特徴のため、スマートカードを複製すること、バックアップすること、または照合することができない。
【００１０】
追加のハードウェアを必要としないセキュアなソフトウェアベースの鍵ウォレット（ｗａｌｌｅｔ）が、以上にリストしたスマートカードの欠点のいくつかを軽減する。マイクロソフトの製品やネットスケープの製品などの製品において鍵の記憶のために今日、使用されている標準の技術は、しばしば、不正操作からの保護をほとんど提供せず、かなり簡単に侵入される可能性がある。具体的には、鍵ウォレットは、ユーザのＰＩＮを暗号鍵として使用して秘密鍵を暗号化された形態で記憶する。ＰＩＮは、ユーザが憶えているのに充分なだけ短くなければならず、例えば、６桁のコードでなければならない。そのようなソフトウェア鍵ウォレットをハッカが手に入れた場合、ハッカは、鍵ウォレットを開くコードを見つけ出すまで、数分間以内にパーソナルコンピュータ上で自動化された仕方で百万の可能な６桁のコードすべてを網羅的に試すことができる。見つけ出した時点で、ハッカは、完全に正しいＰＩＮを知り、ユーザの秘密鍵にアクセスを有する。したがって、ソフトウェアだけの鍵ウォレットを提供することの主な問題は、ＰＩＮは、ユーザが憶えているだけ十分に短くなければならないが、鍵ウォレットを不正操作に耐えるようにするだけ十分に長くしなければならないという競合する要件である。
【課題を解決するための手段】
【００１１】
本発明の様々な実施形態は、「生成カモフラージュ（ｇｅｎｅｒａｔｉｏｎ  ｃａｍｏｕｆｌａｇｉｎｇ）」と呼ぶ技術を使用して前述した問題に対処する。生成カモフラージュでは、鍵は、暗号化された形態でさえ、必ずしも記憶される必要がない。＊ただし、本技術の一部の実施形態は、便宜のため、および／または当面の特定の状況に応じて秘密鍵の表現を記憶することも可能である。しかし、秘密鍵の再生成は、秘密鍵の記憶された形態に依存せずに行われることが可能である。一部の実施形態では、生成カモフラージュシステムは、ユーザの鍵（またはその他のデータ）およびカモフラージュをユーザの鍵（またはその他のデータ）の一部分として記憶するように構成されることが可能である。再構成中、第１の部分が再生成され、第２の部分が、メモリから呼び出され、この２つの部分が結合されて、ユーザの鍵（またはその他のデータ）を共同で再構成する合成データが形成される。したがって、本明細書で使用する「生成」、「再生成」、または「生成カモフラージュ」への言及は、ユーザのデータのすべて、または一部に対する演算を含むと理解されたい。＊  代わりに、この技術は、ユーザが自身のＰＩＮを入力した場合に正しい秘密鍵を再生成する秘密鍵生成ファンクションを使用する。ユーザが誤ったＰＩＮを入力した場合、誤った秘密鍵が生成される。このようにして保護された秘密鍵について「生成カモフラージュされている」という言い方をする。この結果、生成カモフラージュ技術を使用するソフトウェアを獲得した（例えば、鍵保持者の鍵ウォレットを盗んだ）悪意のある侵入者は、正しいＰＩＮを推測しようと試みる際、暗号化された形態であれ、暗号化されていない形態であれ、いずれの形態の秘密鍵にもアクセスを有さない。生成カモフラージュを使用する鍵ウォレットの１つの例示的な実施形態では、悪意のある侵入者は、すべての（または実質的にすべての）可能なＰＩＮに対して有効に見える秘密鍵が生成されるため、もたらされる秘密鍵を見ることによって正しいＰＩＮを推測することが実質的に不可能であることを知る。
【００１２】
生成カモフラージュ技術は、入力シード値（ｓｅｅｄ  ｖａｌｕｅ）に基づいて秘密鍵出力を生成する秘密鍵生成ファンクションを使用する。入力シード値が、ユーザの秘密鍵を生成するのに最初に使用されたシード値と一致する場合、ユーザの秘密鍵はもちろん、再生成される。しかし、異なるシード値は、異なる秘密鍵を生成する。
【００１３】
一実施形態では、入力シード値は、排他ＯＲ演算に基づいて入力ＰＩＮ値から導出される。入力ＰＩＮおよび記憶されている値（ユーザの秘密鍵を生成するのに最初に使用されたシード値から導出された）は、正しいＰＩＮが入力された場合、入力シード値が元のシード値に一致するように排他ＯＲ演算を受ける。したがって、秘密鍵生成ファンクションは、入力として元のシード値を提供されると、ユーザの秘密鍵を生成する。
【００１４】
他の実施形態では、入力シード値は、入力ＰＩＮとの他のタイプの関係から導出される。
【００１５】
本明細書では、ＲＳＡ、ＤＳＳ、Ｅｌ−Ｇａｍａｌ、楕円曲線暗号システムなどの既存の公開鍵署名法、および関連する鍵の生成技術、検証技術、および証明技術と適合する「鍵ウォレット」の中で秘密鍵をセキュアにする例示的な適用例について述べる。
【００１６】
鍵ウォレットは、ユーザが、スマートカードを使用するのとほぼ同じやり方でＰＩＮを使用してロック解除するソフトウェアウォレットとして実装されることが可能である。配備される特定の構成に応じて、ソフトウェアベースのウォレットスキームの利点は、以下の一部またはすべてを含むことが可能である。
【００１７】
１）低い費用：システムは、必ずしも追加のハードウェアインフラストラクチャを必要としない。ウォレットは、フロッピー（登録商標）ディスク、ハードディスク、磁気ストライプカードを含み、スマートカード自体さえ含む任意のデジタル記憶媒体で実現することができる。
２）低い管理上のオーバーヘッド：ウォレットは、電子式に配布し、必要に応じて電子式に更新することができる。
３）高いユーザ利便性：ユーザは、ウォレットを複製すること、バックアップすること、および照合することができる。また、ウォレットは、電子式に伝送することが可能である。
４）不正操作に対する耐性：ウォレットの機能は、スマートカードの場合と同じ意味で不正操作に対する耐性を有することが可能である。
５）ユーザに不当な負担がかからない：ウォレットに対するユーザの体験は、スマートカードに対する体験と同じであり、ユーザは、異常に長いＰＩＮを必要とすること、またはＰＩＮを入力するのに極度の注意を必要とすること等がない。
【００１８】
もちろん、ソフトウェアだけの実施形態に多数の利点が存在するが、システムの部分またはすべてをハードウェアとソフトウェアの組合せで実施することさえ、または純粋にハードウェアで実施することさえ可能であり、配備および使用の大幅な柔軟性が提供される。
【００１９】
以上および以下の詳細な説明は、ＰＩＮを使用する秘密鍵のセキュアな生成を対象とする生成カモフラージュの例示的な実施形態について述べている。ただし、本明細書で開示する技術は、任意のデジタル式に表現可能なアクセスコードを使用する任意のアクセス規制されるデータ（ＡＣＤ）のセキュアな記憶のために一般的に使用可能であることが、当分野の技術者には認められよう。したがって、鍵ウォレット（または、代替として、デジタルウォレット）という用語は、本明細書で説明する例示的な実施形態だけでなく、生成カモフラージュされたアクセス規制されるデータをセキュアにするための任意のデバイスを指すものと一般的に理解されたい。
【００２０】
最後に、生成カモフラージュに関連するオプションの特徴は、前述した鍵ウォレットとともに使用可能な公開鍵証明書の生成および管理に関する。そのような特徴には、以下が含まれることが可能である。
【００２１】
１）有限責任：公開鍵は、擬似公開であり、使用が、証明を行う機関によって許可された許可を受けた検証者に明示的に限定されることが可能である。また、これにより、実際問題として、証明を行う機関の法的責任が限定されることが可能である。
２）証明書取消し：許可を受けた検証者だけに有用な公開鍵証明書が生成された場合、以下に詳細に説明するとおり、許可を受けた検証者だけが、証明書のキャンセルを通知されればよいという点で、証明書の取消しが容易になる。
【００２２】
生成カモフラージュの適用例には、（ａ）コンピューティングリソースおよび記憶リソースに対するセキュアな遠隔／ローカルアクセスのための強い証明、（ｂ）ネットワーク上の多数のコンピュータを伴う環境における軽減されたユーザサインオン、（ｃ）ＩＰＳＥＣネットワークプロトコルを伴う、または伴わないファイアウォールを介するセキュアなアクセスの強い証明、（ｄ）セキュアな電子商取引のためのデジタル署名、（ｅ）電子支払い機構のためのデジタル署名、（ｆ）データベーストランザクションのためのデータベースに対するセキュアなアクセスおよび／またはデジタル署名、（ｇ）ルータおよびネットワークスイッチに対するセキュアなアクセス、（ｈ）分散サービスに対するセキュアなアクセス、および／または（ｉ）前述の適用例のいずれかに適用された、ただし制限されない、ユーザ（例えば、デジタルウォレットの）がソフトウェアまたはハードウェアで実行されるプログラムなどの計算エージェントによって代表される組み込まれたアプリケーションが含まれるが、以上には制限されないことが当分野の技術者には認められよう。
【発明を実施するための最良の形態】
【００２３】
提示する説明は、デジタル署名に関する秘密鍵をセキュアにする例示的な文脈において行うが、生成カモフラージュの技術は、他の形態のデータをセキュアにするのにも使用できることが、当分野の技術者には容易に認められよう。
【００２４】
図１は、鍵秘密鍵初期設定（図１に示さず）の態様、秘密鍵生成（または再生成）の態様、公開鍵証明の態様、および検証の態様を含む例示的な「生成カモフラージュ」システムの機能要素の概要を示している。もちろん、実際の実施形態は、システムがどのように配備されるかの状況に応じて、以上の態様の一部、またはすべてを含むことが可能である。
【００２５】
従来の暗号システムの場合と同様に、秘密鍵の初期設定は、シードベースのプロセスを介して行われる。詳細には、秘密鍵（および対応する公開鍵が、使用される特定の暗号プロトコルに適切な秘密鍵と公開鍵の間の指定された関係に従って）が、（非特許文献１）および（非特許文献２）で説明されるような周知の鍵生成プロトコルを使用してシードに相関するものとして生成される。
【００２６】
より高いセキュリティのため、シードは、好ましくは、ランダムまたは擬似ランダムである。シードは、システムのセキュリティ要件に応じて任意の長さであることが可能である。通常のシードは、現在、８バイトないし２０バイトまたはそれより多くのバイト数の範囲にある。より短いシードを埋め込むことによって、より長いシードを予期する鍵生成ファンクションを変更して、より短いシードを受け入れるようにすることは容易である。埋込みが固定である（所与のウォレットに関して）場合、生成は、再現可能である。すなわち、同一の入力シードは、同一の出力鍵をもたらす。
【００２７】
初期設定された秘密鍵は、デジタル署名を行う際に使用するために鍵保持者に提供される。従来の鍵暗号システムでは、秘密鍵（または秘密鍵の何らかの形態）が、ＰＩＮの保護の下で保持者の鍵ウォレットの中に記憶される。鍵保持者がＰＩＮを入力した場合、秘密鍵が使用のために開放され、誤ったＰＩＮが入力された場合、何も開放されない。鍵ウォレットの中に秘密鍵が記憶されること、および／または正しいＰＩＮが入力されたときだけに秘密鍵が開放されることにより、従来の鍵管理システムに関連するあるセキュリティリスクがもたらされる。
【００２８】
本明細書で開示する本発明の様々な実施形態では、秘密鍵は、暗号化された形態でさえ、必ずしも鍵ウォレットの中に記憶されない。代わりに、ユーザの鍵ウォレットは、ユーザが必要とするのに応じて秘密鍵を再生成することも可能にするモジュールを含む。より詳細には、鍵ウォレットは、まず、ユーザの秘密鍵を生成するのに使用された元のシードを再導出し、次に、導出されたシードを使用して秘密鍵を再生成する。
【００２９】
図１は、入力されたＰＩＮ１１０を受け取る鍵ウォレット１００を開示している。ＰＩＮ１１０は、入力されたＰＩＮからシードを導出するのに使用することができる元のシードの記憶されている表現、または元のシードと正しいＰＩＮの間の既知の関係を使用するシード導出モジュール１２０に送られる。入力されたＰＩＮが元のＰＩＮであった場合、導出されるシードは、元のシードである。入力されたＰＩＮが元のＰＩＮではなかった場合、導出されるシードは、元のシードではない。いずれの場合も、導出されるシードは、元のシードからユーザの秘密鍵を初期設定するのに使用されたのと同様の鍵生成ファンクションを含む鍵生成モジュール１３０に送られる。したがって、正しいＰＩＮが入力された場合、元のシードが再生成され、ユーザの秘密鍵が再生成される。しかし、誤ったＰＩＮが入力された場合、誤ったシードが生成され、誤った秘密鍵が生成される。このようにして、前述したシード導出機構および鍵生成機構が、鍵保持者によるアクセスおよび使用を許しながら、許可を受けていない人員（ハッカなどの）に対して秘密鍵を効果的にカモフラージュする。そのような仕方で保護された秘密鍵について「生成カモフラージュされている」という呼び方をして、そのための技術を「生成カモフラージュ」と呼ぶ。
【００３０】
前述したとおり、生成カモフラージュは、元のシードの記憶されている表現に、あるいは元のシードと正しいＰＩＮの間の既知の関係にアクセスを有するシード導出モジュールを使用する。シード導出モジュールの様々な実施形態を以下の「鍵ウォレット」セクションでより詳細に説明する。
【００３１】
鍵ウォレットは、以下の「鍵ウォレットに対する攻撃および攻撃に対する応答」セクションで説明するとおり、ある種の攻撃に耐える形態および／または形式で鍵を出力するように構成することが可能である。
【００３２】
最後に、鍵ウォレット１００は、さらに別のタイプの攻撃に対するさらなるセキュリティのための証明モジュール８００および／または検証モジュール９００と組合せで使用することも可能である。証明モジュール８００は、秘密鍵に対応する公開鍵を証明するのに使用され、検証モジュール９００は、秘密鍵によって生成された署名を検証するのに使用される。証明モジュールおよび検証モジュールは、それぞれ、以下の「証明モジュール」サブセクションおよび「検証モジュール」サブセクションでより詳細に説明する。
【００３３】
１．鍵ウォレット
生成カモフラージュ技術の第１の実施形態が、図２に概略で描かれている。図２は、入力ＰＩＮ１１０が、ユーザによって入力された後に一時的に記憶されるメモリ２１０（ハードウェア・メモリ、例えばＲＡＭ、またはバッファや他のデータ記憶フィールドなどのソフトウェア・メモリ）を含むシード導出モジュール２０１を含む鍵ウォレットを示している。この実施形態では、シードとＰＩＮの間の記憶されている関係は、シードをメモリ２１０の中に通すことによって実質的に実行される単位（つまり１を掛ける）ファンクションと見なすことができる。したがって、鍵生成モジュール１３０は、ＰＩＮ自体をシードとして使用して出力鍵１４０を生成する。したがって、鍵生成ファンクションは、通常、ＰＩＮと同じ長さのシードを受け入れる。
【００３４】
鍵生成ファンクション１３０は、例えば、ＤＥＳシステム、または任意の他の対称暗号システムのための鍵生成ファンクションであること、あるいは、ＲＳＡシステム、または任意の他の非対称鍵署名システムのための秘密鍵生成ファンクションであることが可能である。もちろん、鍵生成ファンクションは、生成される量が暗号鍵でない任意の他のデータ生成ファンクションであることも可能である。ファンクション１３０は、暗号の分野における機密データまたは機密情報を生成するためのファンクションに制限される必要はなく、任意の他の技術分野における秘密データまたは秘密情報を生成するファンクションを含むことも可能であることが、当分野の技術者には認められよう。
【００３５】
図３は、本発明の第２の実施形態による生成カモフラージュ技術を実施する鍵ウォレットを示している。この実施形態では、シード導出モジュール１２０は、メモリ２１０と埋込みモジュール３１０とを含む。この組合せは、シードがＰＩＮより長いために埋込みが必要とされるが、シードが基本的にＰＩＮである（第１の実施形態と同様に）場合に使用される。例えば、通常のＰＩＮは、ユーザが容易に憶えておくことができる適当な長さである。多くの適用例では、ＰＩＮは、４〜６バイトの長さである。ただし、通常の秘密データ生成ファンクションに対する入力値は、しばしば、有効な秘密データを多くの無効なデータのなかに分散させる目的ではるかに長い。第２の実施形態では、埋込みファンクションは、単にゼロをＰＩＮに追加して（または別の仕方でＰＩＮに埋込みを行って）、もたらされる数が、鍵生成ファンクション１３３０に対する入力シード値の役割をするのに必要とされるバイト数を有するようにする。より一般的には、シード導出モジュール１２０内部のメモリ２１０および埋込みモジュール３１０は、単一のファンクションまたは複数のファンクションを表す他のモジュールで置き換えることも可能であることが、当分野の技術者には認められよう。
【００３６】
図４は、生成カモフラージュを実施する鍵ウォレットの第３の実施形態を示している。第３の実施形態は、ＲＳＡシステム、または任意の他の非対称署名システムに特に適用される。この第３の実施形態では、シード導出モジュールは、排他ＯＲ（「ＸＯＲ」）ファンクション４２０を含む。ＸＯＲファンクションは、２つの入力、第１のメモリ２１０の中に記憶された入力ＰＩＮ値（ｐｉｎ）、および第２のメモリ４１０の中に記憶されたマスクされた値（ｓｅｅｄmasked）（すなわち、元のシードの記憶されている表現）に対して演算を行って鍵生成モジュール１３０に対する入力シード値（ｓｅｅｄ）を生成する。シードを導出するためのブール演算式は、
【００３７】
ｓｅｅｄ＝ｐｉｎ  ＸＯＲ  ｓｅｅｄmasked
【００３８】
であり、マスクされたシード値（ｓｅｅｄmasked）は、
【００３９】
ｓｅｅｄmasked＝ｐｉｎvalid  ＸＯＲ  ｓｅｅｄorig
【００４０】
によって与えられる有効なＰＩＮと元のシードの間の関係を表し、ただし、ｖａｌｉｄ＿ｐｉｎは、許可された有効なＰＩＮであり、ｓｅｅｄ＿ｏｒｉｇは、正しい秘密鍵を生成した生成ファンクションに対する元のシードである。したがって、有効なＰＩＮが入力ＰＩＮとして供給された場合、マスクされたシード値（ｓｅｅｄmasked）に対する排他ＯＲ演算は、元のシード値（ｓｅｅｄorig）を明らかにし、鍵生成モジュール１３０は、正しい秘密鍵を再生成する。他方、誤ったＰＩＮが入力ＰＩＮとして供給された場合、排他ＯＲ演算は、元のシード値を明らかにすることができず、秘密鍵生成ファンクション１３０は、誤った秘密鍵を生成する。
【００４１】
以上の例のいくつかの実施形態では、ＰＩＮ値は、４〜６バイトの長さしかないことが可能であり、他方、シード値は、２０バイトの長さにもなることが可能である。したがって、ＸＯＲ演算が行われた場合、バイトサイズのミスマッチが存在する可能性がある。そのような場合、ＰＩＮ値は、シードの残りの部分をそのままにして、シードの最初のセグメントまたは最後のセグメント、あるいはその他のセグメントとＸＯＲ演算を行うことができる。
【００４２】
さらに、秘密鍵生成ファンクションは、独立の秘密鍵生成ファンクションであること、またはマッチする１対の公開鍵と秘密鍵を生成するファンクションであることが可能である。マッチする１対の公開鍵と秘密鍵を生成するファンクションである場合、公開鍵出力は、使用する必要がない。
【００４３】
前述した第３の実施形態により、ユーザによって選択されるＰＩＮを変更することが可能になる。ユーザが自身のＰＩＮを変更した際、新しいマスクされたシード値が、第２のメモリ４１０の中に記憶される。新しいマスクされたシード値は、例えば、以下のブール式に基づくことが可能である。
【００４４】
ｓｅｅｄmasked_new＝ｐｉｎvalid_new  ＸＯＲ  ｐｉｎvalid_old  ＸＯＲ  ｓｅｅｄmasked_old
【００４５】
以上の例では、ＸＯＲファンクションは、シードのマスキングを行うのに使用される。ただし、他のファンクションを使用することも可能であり、したがって、マスキングは、ＰＩＮが関与する演算を使用してそれを元にシードを再生成することができるシードの記憶を含むものと当分野の技術者には容易に一般的に理解されよう。
【００４６】
図５は、本発明の第４の実施形態を示している。この実施形態では、バイト長ｍのユーザによって入力されたＰＩＮ（ｖａｌｉｄ＿ｐｉｎ）は、シードの最初のセグメントであり、シードの残りの部分は、メモリ２１０において、連結器５２０および鍵生成モジュール１３０とともに鍵ウォレットの中に記憶される。ユーザが入力ＰＩＮ（ｐｉｎ）を入力した際、連結器（ｃｏｎｃａｔｅｎａｔｏｒ）５２０が、入力ＰＩＮを記憶されている残りの部分に連結して、鍵生成ファンクション１３０に対する入力シード値を生成する。ユーザの正しいＰＩＮが入力された場合、元のシード値が再構成され、したがって、正しい秘密鍵値が再構成される。他方、誤ったＰＩＮが入力された場合、異なるシード値が生成され、したがって、誤った秘密鍵が生成される。
【００４７】
前述した（また多数の他の）秘密鍵生成ファンクションおよびシード導出技術は、生成カモフラージュ技術と併せて使用できることが、当分野の技術者には容易に認められよう。さらに、例示的な実施形態は、ＰＩＮを使用する秘密鍵生成の文脈で説明してきたが、本明細書で開示する技術は、パスワード、またはユーザによって保持される任意のアクセスコードを使用して、実質的にあらゆる秘密データをカモフラージュすることに適用可能であることが、当分野の技術者には認められよう。したがって、本発明の範囲は、本明細書に開示する特定の実施形態に限定されず、頭記の特許請求の範囲の全幅（ｆｕｌｌ  ｂｒｅａｄｔｈ）に限定されるものとする。
【００４８】
２．鍵ウォレットに対する攻撃および攻撃に対する応答
次に、ハッカがデジタル鍵ウォレットに対してしかける可能性がある種類の攻撃、およびそのような攻撃に抗する手段を列挙する。簡明にするため、説明は、ＲＳＡ公開鍵署名システムに関して提示する。ただし、説明の基本的な要素は、秘密データが特殊ファンクションによって生成されるその他の暗号システムおよび非暗号システムにも適用可能であることが、当分野の技術者には理解されよう。
【００４９】
ａ．力任せの攻撃（Ｂｒｕｔｅ  Ｆｏｒｃｅ  Ａｔｔａｃｋ）
悪意のあるハッカは、従来の鍵ウォレットのコピーを入手した場合、秘密鍵が開放されるまで、単に可能なＰＩＮのすべての組合せを試みる。従来の鍵ウォレットでは、秘密鍵は、正しいＰＩＮが入力された場合にだけ開放されるので、ハッカは、秘密鍵を開放したＰＩＮが正しいＰＩＮであることを知る。このタイプの攻撃に対抗するため、鍵ウォレットは、あらゆる入力ＰＩＮに応答していくらかの量を常に開放するように（または、いずれにしても、正しいＰＩＮが入力されたときにだけ開放を行う代わりに、相当な数の入力ＰＩＮに応答してある量を開放して）構成されることが可能である。さらに（形の整っていない鍵の攻撃（Ｉｌｌ−Ｆｏｒｍｅｄ  Ｋｅｙ  Ａｔｔａｃｋ）に関連して以下に説明するとおり）、鍵生成モジュールは、出力が秘密鍵の適切な形態で現れるように構成することができる。
【００５０】
ｂ．形の整っていない鍵の攻撃
別の攻撃は、悪意のあるハッカがすべての可能なＰＩＮを試みて、もたらされる秘密鍵の形態を検査する攻撃である。もたらされる秘密鍵の形が整っていない場合、ハッカは、そのような秘密鍵をもたらすＰＩＮが正しいＰＩＮであり得ないことを知る。したがって、鍵生成モジュールの前述した実施形態は、形の整った鍵を常に生成するように構成されることが可能であり、結果として、ハッカは、鍵の形が整っているかどうかを検査して正しいＰＩＮに辿り着くことができない。ＲＳＡシステム、およびその他の公開鍵暗号化システムにおいて形の整った鍵を生成する秘密鍵生成ファンクションは、周知であり、さらに詳述することはしない。有効に見える秘密鍵の特性（また、したがって、生成するための技術）は、当技術分野で周知であり（例えば、（非特許文献１）、（非特許文献２）、および参照により本明細書に組み込まれている（特許文献１）における秘密鍵フォーマットの説明を参照されたい）、詳述する必要はない。
【００５１】
ｃ．公知の公開鍵の攻撃
この攻撃では、悪意のあるハッカは、公開鍵証明書ディレクトリの中で容易に入手可能である可能性がある２つの情報、（ａ）ユーザの鍵ウォレット、および（ｂ）ユーザの公開鍵にアクセスを有する。この攻撃を図６に図示している。ハッカは、鍵ウォレット１００に対してすべての可能なＰＩＮ１１０を試みる。各ＰＩＮに関して、ハッカは、出力された秘密鍵６１０を使用して、恣意的に選択されたサンプルメッセージ６２０を暗号化し、次に、暗号化されたメッセージをユーザの公開鍵を使用して暗号化解除する。暗号化解除されたメッセージ６３０が元のサンプルメッセージ６２０に一致した場合、ハッカは、正しいＰＩＮを発見し、ユーザの正しい秘密鍵を再生成したことを知る。
【００５２】
この攻撃に対抗するため、生成カモフラージュの一実施形態は、公開鍵が真に公開されていることを許さない。便宜上、そのような限定された配布の公開鍵を「擬似公開鍵」と呼び、そのような擬似公開鍵を含む証明書を「擬似公開証明書」と呼ぶことにする。具体的には、擬似公開証明書は、ユーザの擬似公開鍵を暗号化された形態で含む。許可を受けた関係者だけが、擬似公開鍵にアクセスしてユーザの署名を検証することができる。これは、誰でも公開鍵署名を検証することができる公開鍵証明書の従来の使用法とは対照的である。もちろん、鍵ウォレット、および本発明のその他の態様または実施形態を単独で従来の証明書とともに使用することも可能であるが、本明細書で説明するとおり、擬似公開鍵および擬似公開証明書も使用される場合、さらに高いセキュリティが提供される。既存の証明書発行のデバイスおよび手続きを本発明の以上の実施形態に対応するように容易に適応させることが可能なことが、当分野の技術者には容易に理解されよう。したがって、証明モジュールのこの実施形態の特定のハードウェアおよび／またはソフトウェア実装形態を詳述する必要はない。むしろ、従来の証明書との違いだけを以下に説明する。従来の証明書には、いくつかのフォーマットがあり、そのなかで最も注目に値するのが、Ｘ．５０９フォーマットおよびその改訂版であるが、すべての従来のフォーマットの基本的な要素は、本発明との関係で見た場合、同様であることが、当分野の技術者である読者には認められよう。
【００５３】
擬似公開鍵には、擬似公開鍵証明書および擬似公開鍵検証技術が関わる。これらに関する例示的な実施形態を以下に説明する。
【００５４】
ｉ．証明書モジュール
図１を再び参照すると、生成カモフラージュ鍵ウォレットと組合せで使用可能な証明書モジュール１３０の一実施形態が、従来の公開鍵証明書とはいくぶん異なる公開鍵証明書を生成する。基本的に、本明細書で使用される公開鍵は、従来の方法のように真に公開ではなく、限定された配布（例えば、イントラネットを介する組織内部、あるいはそれ以外で、閉じた企業または擬似公開の企業内部の）に向けられている。
【００５５】
従来の公開鍵証明書と擬似公開証明書の１つの可能な実施形態を図７に並べて示している。従来の証明書は、ユーザの身元証明情報、ユーザの公開鍵、およびユーザの公開鍵の証明機関（ＣＡ）による署名を含み、署名は、ユーザの公開鍵のハッシュのＣＡの秘密鍵の下での暗号化を含む。
【００５６】
例示的な擬似公開証明書は、従来の証明書と同じフォーマットを有する可能性がある。ただし、擬似公開鍵を含む証明書７００の本文は、許可を受けた検証者だけが読み取ることができるように暗号化される。例えば、一実施形態では、暗号化は、許可を受けた検証者の公開鍵の下で行うことが可能である。対応する秘密鍵にアクセスを有する認証サーバだけが、ユーザの証明書のラップを解除して（ｕｎｗｒａｐ）ユーザの公開鍵にアクセスすることができる。数名の許可を受けた検証者が存在する場合、証明書の本文は、その検証者の各人の公開鍵によってそれぞれが暗号化された擬似公開鍵のいくつかの暗号化されたコピーを担持することが可能である。この手法を使用する各企業または各エンティティは、自らの擬似公開証明書をサポートするように前述した証明モジュールを有する証明書サーバを有する。公開鍵が暗号化され、許可を受けた検証者だけによって暗号化解除が行われることが可能であるようにする擬似公開証明書の構成は、様々な暗号アルゴリズムを使用して多くの異なる仕方で実現できることが、当分野の技術者には理解されよう。例えば、擬似公開鍵証明書の代替の実施形態では、公開鍵は、ＤＥＳ鍵によって暗号化され、ＤＥＳ鍵は、許可を受けた検証者の公開鍵によって暗号化される。
【００５７】
次に、もたらされた証明書に従来の証明書と同様に証明機関によって署名が行われる。鍵管理における２つの利点の可能性を提供するのが、公開鍵の擬似公開の性質である。第１に、証明機関は、公開鍵証明書を使用することが誰に許されているかを明確に認知しているので、ＣＡの法的責任は、実際問題として、限定される可能性がある。これは、ＣＡが、証明書を誰が使用するかについて事前の知識を全く有さない従来の証明書とは対照的である。第２に、公開鍵証明書を取り消すことが容易になる。というのは、ＣＡは、公開鍵証明書を使用することが許可された検証者に通知するだけでよいからである。
【００５８】
提案する形態の証明書は、図８に示すとおり証明書サーバとして動作する証明モジュールによって発行される。当分野の技術者には理解されるとおり、証明書サーバは、ソフトウェアで、ハードウェアで、またはソフトウェアとハードウェアの組合せで実装することができる一連のモジュールを含む。証明されることを所望するユーザは、入力８１０などのデジタル署名された要求を証明書サーバ８００にサブミットする。そのような要求は、通常、証明されるべきユーザの公開鍵、ならびにユーザの名前、または他の身元証明属性を含む。証明書サーバは、サブミットされた公開鍵を使用してユーザのデジタル署名を検証する。署名が正しく検証された場合、サーバは、データベースの中でユーザの身元情報を調べ、次に、提案する形態の公開鍵証明書８２０を出力として発行する。ユーザ身元データベースは、証明書を要求するユーザの身元を検証する情報の他のソースによって置き換えることもできることが当分野の技術者には認められよう。
【００５９】
擬似公開証明書サーバの代替の実施形態には、変更ユニットが従来の証明書サーバに付加されることが関わることが可能である。そのようなアドオン（ａｄｄ−ｏｎ）ユニットが、従来の証明書サーバの入力または出力に対して処理を行うことが可能である。変更ユニットは、入力に対して処理を行う場合、ユーザの公開鍵を暗号化することによって証明書の要求を再パッケージ化し、暗号化された公開鍵を身元証明属性のなかに組み込む。次に、変更ユニットは、ダミー（ｄｕｍｍｙ）公開鍵を要求に付加し、関連する秘密鍵を使用してその要求に署名し、要求を従来の証明書サーバに転送する。従来の証明書サーバの出力は、身元証明属性の１つとしてユーザの暗号化された公開鍵を含む証明書である。変更ユニットは、従来の証明書サーバの出力に対して処理を行う場合、元の場所で証明書の中の公開鍵指数を暗号化し、次に、証明書サーバの署名に変更された証明書の新規の署名で上書きを行うことによって従来の証明書サーバによって生成された従来の証明書を再パッケージ化する。さらに別の代替の実施形態も可能であることが、当分野の技術者には認められよう。
【００６０】
ｉｉ．検証モジュール
ＣＡによる擬似公開鍵の証明は、その擬似公開鍵に対応する秘密鍵の保持者と通信する、または取引を行う関係者に配布するための擬似公開証明書の生成をもたらす。そのような関係者は、対応する秘密鍵を使用して暗号化されたメッセージを暗号化解除するのに擬似公開鍵に依拠するのに先立って、未知の秘密鍵保持者から受け取られた擬似公開鍵を検証することを望む。
【００６１】
図１を再び参照すると、擬似公開鍵および擬似証明書と組合せで使用可能な検証モジュール１２０の一実施形態が開示されている。検証モジュールは、従来のシステムの検証モジュールとは２つの点で異なる。検証モジュールは、公開鍵証明書の擬似公開の性質を遵守し、ユーザの署名を検証する前に証明書からユーザの公開鍵を抽出するのに適切なステップをとる。例示的な実施形態では、このステップには、証明書保持者の暗号化された擬似公開鍵を含む証明書を受け取るステップ、および許可を受けた検証者の秘密鍵を使用して擬似公開鍵を暗号化解除するステップが含まれる。次に、検証モジュールは、擬似公開鍵を使用して証明書保持者によって送られたメッセージの中のデジタル署名を検証する。代替の実施形態では、ＤＥＳ鍵が、擬似公開鍵を暗号化するのに使用されている場合、ＤＥＳ鍵が、まず、検証者の秘密鍵を使用して暗号化解除され、次に、ＤＥＳ鍵を使用して擬似公開鍵が暗号化解除される。暗号化解除機構がどのようなものであれ、検証モジュールは、不正なハッカによる、例えば、鍵ウォレットの誤ったアクセスコードに対応する誤った候補秘密鍵でメッセージに署名するハッカによる侵入の試みを検出する論理も含むことが可能である。そのような場合において、不正なハッカが、正当なユーザの擬似公開証明書を盗むか、または別の仕方で入手して、その証明書を誤った候補秘密鍵で署名された虚偽のメッセージとともに送る可能性がある。証明書の中の正当なユーザの正しい擬似公開鍵と誤った候補秘密鍵の間の不整合により、不正なユーザの検出が可能になる。詳細には、一実施形態では、特定のユーザの署名が３回の連続する試行で検証されなかった場合、検証モジュールは、侵入が進行中であると結論し、さらなる調査を待ってそのユーザのアクセス特権を凍結する。アクセスを凍結することに加えて（代わりに）、検証モジュールは、試みられた侵入の操作者に警告する警報を鳴らすことが可能である。検証モジュールにおいて侵入の試みを検出する他の方法、および侵入が検出された際の他の可能な対処の仕方が存在する。当分野の技術者には理解されるとおり、検証モジュールは、ソフトウェアで、ハードウェアで、またはソフトウェアとハードウェアの組合せで実装することができる一連の論理モジュールの折り合いをつける。
【００６２】
３．変更形態、拡張形態、および代替の実施形態
以上、生成カモフラージュの様々な態様を説明してきた。１つの例示的な実施形態では、鍵ウォレット、シード生成−鍵生成モジュール、鍵検証モジュール、および鍵証明モジュールをすべて一緒に使用して暗号鍵の記憶と使用のためのセキュアな技術が提供されたが、代替の実施形態では、モジュールのすべては必要としない特定のアプリケーションのためにシステム全体の様々なサブセットを組み合わせることもできることが、当分野の技術者には認められよう。
【００６３】
さらに、以上は、例示的なソフトウェアベースのシステムに関して説明してきたが、これは、絶対に必要とされるわけではない。例えば、モジュールの一部またはすべては、マイクロコードおよびＰＬＡまたはＲＯＭ、汎用プログラミング言語および汎用マイクロプロセッサ、あるいはＡＳＩＣを使用して配備することもできる。つまり、本明細書で説明した技術は、ソフトウェアそのものに制限されず、純粋なソフトウェアで、ソフトウェアとハードウェアの組合せで、あるいはハードウェアだけであることも含め、実質的にあらゆる形態の論理で配備することが可能である。
【００６４】
鍵ウォレットは、ユーザが担持すること、または代替として、遠隔に記憶され、参照により本明細書に組み込まれている１９９８年１１月１９日に出願した（特許文献２）で開示しているような「ローミング（ｒｏａｍｉｎｇ）」技術を使用して、ネットワークを介してユーザに「オンザフライ（ｏｎ  ｔｈｅ  ｆｌｙ）」でダウンロードされることが可能である。
【００６５】
さらに、様々な実施形態または態様をＲＳＡ暗号法（公開鍵および／または擬似公開鍵、および公開証明書および／または擬似公開証明書に関して）、またはＤＥＳ暗号法（擬似公開証明書上の擬似公開鍵のＰＩＮ暗号化およびＰＩＮ記憶に関して）に関して説明してきたが、そのような例示的な暗号技術に対する多くの変更形態および拡張形態が可能であることが、当分野の技術者には認められよう。より一般的には、前述した処理のそれぞれは、多くの種類の非対称暗号化または対称暗号化、ならびにＣＲＣ、ハッシュ、メッセージダイジェスト、または他の一方向関数を含む多種類の暗号技術から実施することが可能である。例えば、非対称暗号化処理は、完全性が主要な関心事である（オプションとして鍵付きの）１方向関数で、または対称セッション鍵の暗号化の後に続く、平文暗号化のためのセッション鍵の使用で、また当分野の技術者には周知の他の代替策で置き換えることができる。
【００６６】
さらに、多くの適用例では、入力されるＰＩＮは、およそ４〜６バイトであり、通常、シード値よりも小さい。ただし、シード値の方がＰＩＮ値より小さいことも可能である。これには、例えば、ＰＩＮの多対１ハッシュを行い、このより小さいバイトシーケンスをシードとして使用することによって対処することができる。したがって、シードの長さとＰＩＮの長さの間の関係について絶対的な要件は存在しない。むしろ、この関係は、配備されるシステムの選択および要件によって決まる。
【００６７】
また、例示的な実施形態は、秘密鍵を保護するＰＩＮに関して説明してきたが、生成カモフラージュの同じ技術を他のタイプのアクセスコードおよび暗号表現とともに使用して、あらゆる再生成可能なアクセス規制されたデータを保護することができる。例えば、本明細書で開示した例示的な実施形態は、秘密鍵を生成するのに使用された元のシードの記憶されている表現、または元のシードとユーザのＰＩＮの間の既知の関係にアクセスを有するシード導出モジュールに依拠する。しかし、システムは、ユーザの秘密鍵（または、より一般的には、アクセス規制されたデータ）が、シード値に基づいていないか、またはシード値が、生成カモフラージュデジタルウォレットが実装される時点で知られていない場合でも、機能する。より詳細には、アクセス規制されたデータが、オペランド（ｏｐｅｒａｎｄ）が受け取られた時点で鍵生成（または、より一般的には、データ生成）モジュール内部で導出可能であるものと想定されたい。これは、シード導出モジュールを使用して、オペランドが、ユーザのＰＩＮの相関として表現可能であり、したがって、ユーザのＰＩＮから再生成することができるアクセス規制されたデータとオペランドの間の任意の１対１マッピングで実現可能である。
【００６８】
以上に開示するＸＯＲシード導出モジュール機能を使用する第１の例として、シード導出モジュールは、ｏｐｅｒａｎｄmasked＝ｐｉｎ  ＸＯＲ  ｏｐｅｒａｎｄを記憶し、したがって、オペランドは、ｏｐｅｒａｎｄ＝ｏｐｅｒａｎｄmasked  ＸＯＲ  ｐｉｎとして導出可能である。シード導出モジュール機能の他の例示的な実施形態（例えば、ｏｐｅｒａｎｄ＝埋込みを有する、または有さないｐｉｎ）も、この目的で使用可能である。以上は、オペランドが「シード」に機能的に等価であり、またオペランドとアクセス規制されたデータの間の１対１マッピングは、鍵生成モジュールにおけるシードベースの鍵生成ルーチンに機能的に等価であることを示している。したがって、「シード」という用語は、ユーザの秘密鍵を初期設定するのに使用された量に排他的に限定されるべきでなく、この段落で説明したタイプの他の量に限定されるべきである。同様に、「鍵」という用語は、暗号化処理に使用可能な量に排他的に限定されるべきでなく、他のアクセス規制されたデータに一般的に限定されるべきである。
【００６９】
第２の例として、ＰＩＮ（または、より一般的に、アクセスコード）空間は、ｐｉｎｓｐａｃｅ＿ｓｉｚｅ（例えば、６桁のＰＩＮの場合、ｐｉｎｓｐａｃｅ＿ｓｉｚｅ＝１，０００，０００）のサイズである。シード導出モジュールは、最大で、何らかの順序でリストされたｐｉｎｓｐａｃｅ＿ｓｉｚｅのＰＩＮを記憶することができ、また各ＰＩＮに関して、対応するシードを記憶することができる。これらのＰＩＮ−シードのペアは、正しいＰＩＮに対応する正しい（つまり初期設定）シードだけでなく、誤ったＰＩＮに対応する誤ったシードの（いくつかの、またはすべての）可能性の高い値も含む。鍵を開放するようにＰＩＮを入力した際、そのＰＩＮは、リストへの索引として解釈され、指し示されたシードが選択される。正しいＰＩＮを入力した場合、正しいシードが導出される。誤ったＰＩＮを入力した場合、誤ったシードが導出される。次に、シードは、鍵（または、より一般的に、データ）生成モジュールに対する入力として使用される。
【００７０】
第３の例として、入力ＰＩＮに対応するシードを記憶する代わりに、生成カモフラージュウォレットが、２ステップ（シード導出に加えて鍵生成）のプロセスの必要性なしに、入力ＰＩＮに対応する鍵を直接に記憶する第２の例を考慮されたい。これは、単純化された形態の生成カモフラージュと見なすことができる。前の説明では、シードにＰＩＮを足し、生成機能を足したものがともに、鍵を生成する。本例では、リスト、ＰＩＮ、および選択機能が、鍵を生成する。生成カモフラージュ機構は、リストを明示的に記憶し、生成ルーチンが、リストの中の項目を選択する手段に縮減される、または単純化されるようにすることにより、明示的なシードを撤廃した。このようにして、シード導出機能は、鍵生成機能に合併されており、したがって、導出されるシードは、出力される鍵と同じである。この例は、データ項目のリストが明確に記憶され、ＰＩＮが、その項目の１つを選択するのに索引として使用される生成カモフラージュの変種と見なすことができる。
【００７１】
したがって、生成カモフラージュの一般的な技術の以上に開示した（また、さらに別の可能な）すべての実施形態および実装形態に鑑みて、本発明の範囲は、頭記の特許請求の範囲によってのみ限定されるものとする。
【図面の簡単な説明】
【００７２】
【図１】暗号鍵ウォレットおよびシード生成と鍵生成のサブシステム、鍵証明サブシステム、および検証サブシステムを示す概略図である。
【図２】生成カモフラージュ技術を実施する鍵ウォレットの第１の実施形態を示す図である。
【図３】生成カモフラージュ技術を実施する鍵ウォレットの第２の実施形態を示す図である。
【図４】生成カモフラージュ技術を実施する鍵ウォレットの第３の実施形態を示す図である。
【図５】生成カモフラージュ技術を実施する鍵ウォレットの第４の実施形態を示す図である。
【図６】擬似公開証明書によって対処が行われる周知の公開鍵攻撃を示す図である。
【図７】従来の例示的な擬似公開証明書を示す図である。
【図８】例示的な証明書サーバの実施形態を示す図である。
【図１】
2004530346.tif 000003
【図２】
2004530346.tif 000004
【図３】
2004530346.tif 000005
【図４】
2004530346.tif 000006
【図５】
2004530346.tif 000007
【図６】
2004530346.tif 000008
【図７】
2004530346.tif 000009
【図８】
2004530346.tif 000010
【国際公開パンフレット】
2004530346.tif 000011
2004530346.tif 000012
2004530346.tif 000013
2004530346.tif 000014
2004530346.tif 000015
2004530346.tif 000016
2004530346.tif 000017
2004530346.tif 000018
2004530346.tif 000019
2004530346.tif 000020
2004530346.tif 000021
2004530346.tif 000022
2004530346.tif 000023
2004530346.tif 000024
2004530346.tif 000025
2004530346.tif 000026
2004530346.tif 000027
2004530346.tif 000028
2004530346.tif 000029
2004530346.tif 000030
2004530346.tif 000031
2004530346.tif 000032
2004530346.tif 000033
2004530346.tif 000034
2004530346.tif 000035
2004530346.tif 000036
2004530346.tif 000037
2004530346.tif 000038
2004530346.tif 000039
2004530346.tif 000040
2004530346.tif 000041
2004530346.tif 000042
2004530346.tif 000043
【国際調査報告】
2004530346.tif 000044
2004530346.tif 000045