(57)【要約】対称暗号方式のためのシード値を生成する方法であって、第１データ・セットの生成および記憶、並びに第１データ・セットに基づくハッシュ値の生成を含んでいる。第１データ・セットの置換位置が選択され、少なくともハッシュ値の一部がそこに書き込まれる。第１データ・セットのシード部分がシード値として選択される。反復回数を変えることにより、処理能力（少反復回数）とセキュリティー（多反復回数）とのバランスを取ることができる。
2005534235.tif 000002
【特許請求の範囲】
【請求項１】
対称暗号方式のためのシード値をコンピュータによって生成する方法であって、
（ａ）第１データ・セットを生成し記憶するステップ、
（ｂ）前記第１データ・セットに基づいてハッシュ値を生成するステップ、
（ｃ）前記第１データ・セットの置換位置を選択するステップ、
（ｄ）少なくとも前記ハッシュ値の一部を前記第１データ・セットの置換位置に書き込むステップ、および
（ｅ）前記第１データ・セットのシード部分をシード値として選択するステップ
の各ステップを有して成ることを特徴とする方法。
【請求項２】
前記置換位置を選択するステップが、その時点における第１現在システム・クロック値に基づいて置換位置を決定することを特徴とする請求項１記載の方法。
【請求項３】
その時点における現在システム・クロック値に基づくサイズを有する前記ハッシュ値の一部を選択するステップを更に有して成ることを特徴とする請求項１記載の方法。
【請求項４】
時刻が異なる時点における第２現在システム・クロック値に基づくサイズを有する前記ハッシュ値の一部を選択するステップを更に有して成ることを特徴とする請求項３記載の方法。
【請求項５】
前記シード部分を選択するステップが、その時点における現在システム・クロック値に基づいて前記シード部分の開始位置を決定することを特徴とする請求項１記載の方法。
【請求項６】
前記ステップ（ｄ）の後、前記ステップ（ｅ）を開始する前に、前記ステップ（ｂ）〜（ｄ）を指定回数反復することを特徴とする請求項１記載の方法。
【請求項７】
前記置換位置を選択するステップが、予め選択されているシード部分に基づいて置換位置を選択するステップを更に有して成ることを特徴とする請求項１記載の方法。
【請求項８】
対称暗号方式のためのシード値をコンピュータによって生成する方法であって、
（ａ）第１データ・セットを生成し記憶するステップ、
（ｂ）第１インデックス値を生成するステップ、
（ｃ）前記第１データ・セットに基づいてハッシュ値を生成するステップ、
（ｄ）第２インデックス値を生成するステップ、
（ｅ）前記ハッシュ値から前記第２インデックス値に等しいサイズを有するハッシュ部分を選択するステップ、
（ｆ）前記第１インデックス値によって指定された前記第１データ・セットの置換位置に前記ハッシュ部分を書き込むステップ、
（ｇ）シード・インデックス値を生成するステップ、および
（ｈ）前記シード・インデックス値によって指定されたシード位置における前記第１データ・セットの一部をシード値として選択するステップ
の各ステップを有して成ることを特徴とする方法。
【請求項９】
前記第１インデックス値、第２インデックス値、およびシード・インデックス値をそれぞれ生成する各ステップの少なくとも１つが、システム・クロック値を判定するステップを更に有して成ることを特徴とする請求項８記載の方法。
【請求項１０】
前記第１インデックス値、第２インデックス値、およびシード・インデックス値をそれぞれ生成する各ステップの少なくとも１つが、システム・クロック値の一部の係数を判定するステップを更に有して成ることを特徴とする請求項８記載の方法。
【請求項１１】
前記第１インデックス値、第２インデックス値、およびシード・インデックス値をそれぞれ生成する各ステップのいずれか１つのステップにおいて判定された第１システム・クロック値が別の前記第１インデックス値、第２インデックス値、およびシード・インデックス値をそれぞれ生成する各ステップのいずれか１つのステップにおいて判定された第２システム・クロック値と異なることを特徴とする請求項９記載の方法。
【請求項１２】
前記第１インデックス値、第２インデックス値、およびシード・インデックス値をそれぞれ生成する各ステップのいずれか１つのステップにおいて判定された各システム・クロック値が別の前記第１インデックス値、第２インデックス値、およびシード・インデックス値をそれぞれ生成する各ステップのいずれか１つのステップにおいて判定された第２システム・クロック値と異なることを特徴とする請求項９記載の方法。
【請求項１３】
前記ステップ（ｆ）の後、前記ステップ（ｇ）を開始する前に、前記ステップ（ｂ）〜（ｆ）を指定回数反復することを特徴とする請求項８記載の方法。
【請求項１４】
対称暗号方式のためのシード値を生成する１つ以上の命令シーケンスを担持するコンピュータ可読媒体であって、１つ以上のプロセッサで該命令を実行すると、該１つ以上のプロセッサが、
（ａ）第１データ・セットを生成し記憶するステップ、
（ｂ）前記第１データ・セットに基づいてハッシュ値を生成するステップ、
（ｃ）前記第１データ・セットの置換位置を選択するステップ、
（ｄ）少なくとも前記ハッシュ値の一部を前記第１データ・セットの置換位置に書き込むステップ、および
（ｅ）前記第１データ・セットのシード部分をシード値として選択するステップ
の各ステップを実行することを特徴とする媒体。
【請求項１５】
前記置換位置を選択するステップが、その時点における第１現在システム・クロック値に基づいて置換位置を決定することを特徴とする請求項１４記載の媒体。
【請求項１６】
その時点における現在システム・クロック値に基づくサイズを有する前記ハッシュ値の一部を選択するステップを更に有して成ることを特徴とする請求項１４記載の媒体。
【請求項１７】
時刻が異なる時点における第２現在システム・クロック値に基づくサイズを有する前記ハッシュ値の一部を選択するステップを更に有して成ることを特徴とする請求項１６記載の媒体。
【請求項１８】
前記シード部分を選択するステップが、その時点における現在システム・クロック値に基づいて前記シード部分の開始位置を決定することを特徴とする請求項１４記載の媒体。
【請求項１９】
前記ステップ（ｄ）の後、前記ステップ（ｅ）を開始する前に、前記ステップ（ｂ）〜（ｄ）を指定回数反復することを特徴とする請求項１４記載の媒体。
【請求項２０】
前記置換位置を選択するステップが、予め選択されているシード部分に基づいて置換位置を選択するステップを更に有して成ることを特徴とする請求項１４記載の媒体。
【請求項２１】
対称暗号方式のためのシード値を生成する装置であって、
第１データ・セットを生成し記憶する手段、
前記第１データ・セットに基づいてハッシュ値を生成する手段、
前記第１データ・セットの置換位置を選択する手段、
少なくとも前記ハッシュ値の一部を前記第１データ・セットの置換位置に書き込む手段、および
前記第１データ・セットのシード部分をシード値として選択する手段
を有して成ることを特徴とする装置。
【請求項２２】
前記置換位置を選択する手段が、その時点における第１現在システム・クロック値に基づいて置換位置を決定することを特徴とする請求項２１記載の装置。
【請求項２３】
その時点における現在システム・クロック値に基づくサイズを有する前記ハッシュ値の一部を選択する手段を更に有して成ることを特徴とする請求項２１記載の装置。
【請求項２４】
時刻が異なる時点における第２現在システム・クロック値に基づくサイズを有する前記ハッシュ値の一部を選択する手段を更に有して成ることを特徴とする請求項２３記載の装置。
【請求項２５】
前記シード部分を選択する手段が、その時点における現在システム・クロック値に基づいて前記シード部分の開始位置を決定することを特徴とする請求項２１記載の装置。
【請求項２６】
前記生成、選択、および書込みの各手段の操作を指定回数反復させる手段を更に有して成ることを特徴とする請求項２１記載の装置。
【請求項２７】
前記置換位置を選択する手段が、予め選択されているシード部分に基づいて置換位置を選択する手段を更に有して成ることを特徴とする請求項２１記載の装置。
【請求項２８】
対称暗号方式のためのシード値を生成する装置であって、
データ・ネットワークに接続され、該ネットワークから１つ以上のパケット・フローを受信するためのネットワーク・インタフェース、
プロセッサ、および
前記プロセッサで実行すると、該プロセッサが
（ａ）第１データ・セットを生成し記憶するステップ、
（ｂ）前記第１データ・セットに基づいてハッシュ値を生成するステップ、
（ｃ）前記第１データ・セットの置換位置を選択するステップ、
（ｄ）少なくとも前記ハッシュ値の一部を前記第１データ・セットの置換位置に書き込むステップ、および
（ｅ）前記第１データ・セットのシード部分をシード値として選択するステップ
の各ステップを実行する
１つ以上の内蔵命令シーケンス
を有して成ることを特徴とする装置。
【請求項２９】
前記置換位置を選択するステップが、その時点における第１現在システム・クロック値に基づいて置換位置を決定することを特徴とする請求項２８記載の装置。
【請求項３０】
その時点における現在システム・クロック値に基づくサイズを有する前記ハッシュ値の一部を選択するステップを更に有して成ることを特徴とする請求項２８記載の装置。
【請求項３１】
時刻が異なる時点における第２現在システム・クロック値に基づくサイズを有する前記ハッシュ値の一部を選択するステップを更に有して成ることを特徴とする請求項３０記載の装置。
【請求項３２】
前記シード部分を選択するステップが、その時点における現在システム・クロック値に基づいて前記シード部分の開始位置を決定することを特徴とする請求項２８記載の装置。
【請求項３３】
前記ステップ（ｄ）の後、前記ステップ（ｅ）を開始する前に、前記ステップ（ｂ）〜（ｄ）を指定回数反復することを特徴とする請求項２８記載の装置。
【請求項３４】
前記置換位置を選択するステップが、予め選択されているシード部分に基づいて置換位置を選択するステップを更に有して成ることを特徴とする請求項２８記載の装置。
【発明の詳細な説明】
【関連出願の説明：優先権主張】
【０００１】
本出願は、米国特許法第１１９条（ｅ）項に基づき、本引用により内容がそっくりそのまま本明細書に組み込まれたものとする、２００２年７月１９日付け仮特許出願第６０/３９７４７４号の特典を主張するものである。
【技術分野】
【０００２】
本発明はコンピュータをベースとする暗号方式に関するものである。具体的には本発明は暗号化のためのシード値を生成するシステムおよび方法に関するものである。
【背景技術】
【０００３】
本項で述べる手法は実行可能であるが、これまでに必ずしも着想または実行された手法であるとは限らない。従って、別に明示しない限り、本項で述べる手法は本件明細書のクレームの先行技術ではなく、本項に含めることによって先行技術であると認めるものではない。
【０００４】
コンピュータをベースとする暗号化方式がデータ通信の暗号化および復号化に幅広く利用されている。一般に暗号方式は対称方式と非対称方式とに分類される。対称暗号方式においてはデータの暗号化および復号化に同じキーが用いられる。非対称暗号方式においては暗号化および復号化に別のキーが用いられる。
【０００５】
多くの対称暗号方式においては、特定のデータ・セットに対する固有キーを生成する際、入力としてシード値が必要である。例えば、データ暗号化規格（ＤＥＳ）のようなブロック暗号方式には、ランダムなシード値に基づいて生成されたキーが用いられる。一部のこのような暗号方式においては、シード値が真にランダムである場合、その値は予測不能であり推測が非常に困難であるため、理論的に完全なセキュリティーが得られる。また、真にランダムな値を生成するメカニズムは、一般に悪意のある相手にとって取得したシード値の例のみに基づいてリバース・エンジニアリングすることは非常に困難である。しかし、実際には真にランダムな値を生成することは困難であり、疑似ランダムなシード値を生成する方法も種々用いられている。
【０００６】
ランダムなシード値を生成する周知の方法においては、指定時間内にコンピュータのオペレーティング・システムによってインスタンスが生成されるプロセス・スレッドの計数が伴う。これまで、真にランダムまたは疑似ランダムなシード値を生成する前記方法およびその他の方法は多大なコンピュータ処理時間を要するか、値がランダムでないかの何れかであり好ましくない。
【０００７】
例えば、クライアントとサーバーとの通信がすべて暗号化および復号化される一部のクライアント/サーバー・ビジネス・アプリケーションにおいて、スピードの遅いシード生成方法が用いられた場合、トランザクション処理はかなり遅くなる。このようなアプリケーションの顧客およびベンダーはシード生成時間の短い方法を選択する。
【０００８】
また、ランダムでないシード値を生成する生成器の場合には、セキュリティーが影響を受ける。シード値を生成する幾つかの周知の方法においては、バグまたはその他の特性によりシード値が真にランダムにならない。事実、真にランダムなシード値を生成すると公言している殆んどすべてのシード生成方法によって生成される値は、非特許文献１に記載されているように、実際には疑似ランダムな値である。疑似ランダムなシード値を生成する生成器によって同じシード値が２度生成され、同じシード値に基づくキーを用いて暗号化した２つの異なる暗号文を悪意のある相手が取得した場合、理論的にはこれによって悪意のある相手がキー値を割り出し、最終的にプレーン・テキストを得ることができる価値ある情報を取得したことになり、好ましくない。
【非特許文献１】Ｂ．Ｓｃｈｎｅｉｅｒ著“Ａｐｐｌｉｅｄ  Ｃｒｙｐｔｏｇｒａｐｈｙ”（Ｈｏｈｎ  Ｗｉｌｅｙ  ＆  Ｓｏｎｓ社、第二版、１９９６）ページ４４〜４６
【発明の開示】
【発明が解決しようとする課題】
【０００９】
前記のように、対称暗号方式のためのシード値を生成する改善された方法の必要性が明確に存在している。
【課題を解決するための手段】
【００１０】
背景技術の項で特定した必要性、並びに以下の説明で明らかになるその他の必要性および目的は、１つの態様において対称暗号方式のためのシード値を生成する本発明の方法によって達成される。前記方法は第１データ・セットの生成および記憶、並びに前記第１データ・セットに基づくハッシュ値の生成を含んでいる。前記第１データ・セットの置換位置が選択され、少なくとも前記ハッシュ値の一部がそこに書き込まれる。前記第１データ・セットのシード部分がシード値として選択される。
【００１１】
本発明の別の態様において、対称暗号方式のためのシード値を生成する方法が、第１データ・セットの生成および記憶を含んでいる。第１インデックス値、前記第１データ・セットに基づくハッシュ値、および第２インデックス値が生成される。前記ハッシュ値からハッシュ部分が選択される。前記ハッシュ部分は前記第２インデックス値と同じサイズを有している。前記第１インデックス値によって指定された前記第１データ・セットの置換位置に前記ハッシュ部分が書き込まれる。更に、シード・インデックス値も生成される。前記シード・インデックス値によって指定されたシード位置における前記第１データ・セットの一部がシード値として選択される。
【００１２】
別の態様において、本発明は前記ステップを実行するよう構成されたコンピュータ装置、および搬送波を含むコンピュータ可読媒体を含んでいる。
【００１３】
一般に、本発明の方法によれば、連続的に値が変化するアレイ・データに基づいてこれまでにないランダムなシード値が生成される。アレイ・データの値がハッシュされる。反復プロセスにおいて、本質的に可変である時間ベースのインデックス値によってハッシュ・データのどの部分をアレイ・データのどの部分に混合するのかが決定される。その結果、ランダムなシード値が生成される。反復回数を変えることにより、処理能力（少反復回数）とセキュリティー（多反復回数）とのバランスを取ることができる。
【００１４】
１つの実施の形態において、約６００バイトのような比較的小さな任意のデータ・プールが生成されアレイ状にメモリに記憶される。時間に基づいて選択されたこのデータ・プールの一部が１回または数回の反復プロセスの各々においてハッシュ・データと混合される。数回の反復の後、データ・プールのすべてが混合される。混合されたデータ・プールによって対称暗号キーのためのランダムなシードを生成するソースが提供される。
【発明を実施するための最良の形態】
【００１５】
限定を意図したものではなく、例として本発明を添付図面に示す。図において、同一符号は同様の要素を示すものである。
【００１６】
シード値を生成する装置および方法について説明する。本発明について充分な理解を得るため具体的詳細が数多く述べられている。しかし、当業者はこのような詳細説明がなくても本発明を実施できることは明白である。他方、本発明が不明瞭になるのを避けるため、周知の構造体および装置はブロックで示してある。
【００１７】
図１は暗号用のシード値を生成する方法の１つの実施の形態の概略を示すフロー図である。
【００１８】
ステップ１０２において、第１データ・セットが生成され、データ・ブロックまたはアレイとしてメモリに記憶される。データ・セットはシードを選択するための複数位置の指定に充分であり且つ迅速な操作に適した量の一連の任意または疑似ランダム的に選択されたデータを有している。例えば、１０〜５００バイトのシードを生成するのに１００〜１０００バイトのサイズを有するアレイが適当である。第１データ・セットのバイト数をＮとする。
【００１９】
ステップ１０４において、ハッシュ関数を用いて第１データ・セットのハッシュ値が生成される。ハッシュ関数によって、所定の範囲に収まるハッシュ値が生成される。ハッシュ値は符号Ｈで示される第２のバイト数を有している。ＨはＮと等しいか、または異なっていてもよい。後述する実施の形態においてＨはＮより遥かに小さな値である。ステップ１０６において、アレイの置換位置が選択される。選択された位置は疑似ランダム的に選択された位置である。ステップ１０８において、置換位置から始まる第１データ・セットにハッシュ値のハッシュ部分が書き込まれる。ハッシュ部分はＨバイトからサイズまたは位置、あるいはその両方を疑似ランダム的に選択したものである。矢印１１０が示しているように、ステップ１０４〜１０６を必要に応じて１回以上反復することができる。しかし、反復の必要性はない。
【００２０】
ステップ１１２において、第１データ・セットの一部がシード値として選択される。その後、選択されたシード値を用いて任意の方法により対称暗号方式のキーを生成することができる。一般に、シード値のバイト数は、そのシード値に基づいてキーを生成するアルゴリズムによって決まる。後述する実施の形態においては、シード値として選択される第１データの一部が、サイズを除き、時間に基づいて疑似ランダム的に選択される。別の実施の形態において、シード値の位置またはサイズ、あるいはその両方が疑似ランダム的に選択することができる。
【００２１】
ステップ１０４に戻り、ステップ１０４、１０６および１０８を１回以上反復し、ステップ１１２に戻ることにより、第２シードを生成することができる。
【００２２】
３．０  シード値生成の構造的要素
図２Ａは１つの実施の形態によるシード値を生成するシステム２００のブロック図である。システム２００は第１データ・セットを保持する特定サイズのアレイ２０２用の記憶域を備えている。説明のため、アレイ２０２は６００バイトのサイズを有しているものと仮定する。システム２００は、多くのコンピュータ機器に標準装備されているような現在時刻を示すクロック２９０を備えている。
【００２３】
システム２００はメモリまたはディスクに記憶できる３つのフィールドも備えている。ハッシュ・フィールド２０４はアレイ２０２のデータにハッシュ関数を適用して算出したハッシュ値を保持している。ハッシュ・フィールドはこのハッシュ値を保持する大きさを有している。図示の実施の形態においては、アレイ２０２のデータ・セットにハッシュ関数を適用して２０バイトのハッシュ値を生成している。従って図示の実施の形態においては、ハッシュ・フィールドのサイズは２０バイトである。インデックス１フィールドはアレイ２０２内の位置を示す第１インデックスを保持している。従って、インデックス１フィールドは、アレイ２０２のサイズ以下の値を保持する大きさを有している。図示の実施の形態においては、インデックス１フィールドは最大で整数値６００を保持する大きさを有している。一部の実施の形態においては、整数値０〜５９９によってアレイ２０２内の６００の位置が示される。インデックス２フィールドはハッシュ・フィールド２０４内の位置を示す第２インデックス値を保持している。従って、インデックス２フィールドはハッシュ・フィールド２０４のサイズ以下の値を保持する大きさを有している。図示の実施の形態においては、インデックス２フィールドは最大で整数値２０を保持する大きさを有している。一部の実施の形態においては、整数値０〜１９によってハッシュ・フィールド内の２０の位置が示される。
【００２４】
システム２００は、アレイ２０２、フィールド２０４、２０６、および２０８の内容、並びにクロック２９０の出力に基づいてシード値を生成する１つ以上のプロセスを備えている。説明のために、１つのプロセス２２０を備えているものと仮定する。シード値２８０はシステムが構成されたときに周知である任意の方法によって表すことができる。例えば、特定の実施の形態において、シード値は１つ以上のプロセスによって共有されるメモリの記憶位置であり、別の実施の形態においては別のプロセスに送られるメッセージに含まれているデータである。説明のために、シード値のサイズを１２８バイトと仮定する。別の実施の形態においては、これより大きいか、または小さいか、あるいは疑似ランダム的に決定されるサイズのシード値が生成される。好ましい実施の形態において、シード値のサイズはアレイ２０２のサイズの１/２以下である。図示の実施の形態において、シード値のサイズ（１２８バイト）はアレイ・サイズ（６００バイト）の１/４未満である。
【００２５】
プロセス２２０がクロック２９０の出力を読み取る。プロセス２２０はアレイ２０２、フィールド２０４、２０６、および２０８に書き込む権限を有している。即ち、アレイ２０２、フィールド２０４、２０６、および２０８の値を変更することができる。
【００２６】
図２Ｂは、図示の実施の形態におけるシード値２８０を生成するプロセス２２０の概略を示すフロー図である。図２Ｂではステップが特定の順序で示されているが、別の実施の形態においては、別の順序または時間的に重複させることができる。例えば、一部の実施の形態においては、ステップ２２２および２２４がステップ１０４に重複している。
【００２７】
まずステップ１０２において、前記のように任意のデータ・セットが生成される。例えば、内容が任意であるアレイ２０２が生成される。アレイ２０２のサイズは重要ではなく、様々なサイズにすることができる。図示の実施の形態においては、６００バイトのアレイが用いられている。次に、混合メカニズムであるプロセス２２０がアレイ２０２内のランダムなデータを用いてランダムなシードを生成する。本明細書において、“生成する”および“記憶する”という用語は、データ値をＲＡＭのようなコンピュータの揮発性メモリに一時的または過渡的に記憶することを意味する。特定の値を不揮発性メモリまたはディスク記憶装置に記憶することは設計上任意であるが、その場合には悪意ある相手に記憶している値を取得する機会を与えかねないため、システムのセキュリティーが低下することが想定される。従って、すべての値を揮発性メモリに記憶することが好ましい。
【００２８】
図２Ｃは、１つの実施の形態における、大きなアレイ２０２に保持されているデータの置換およびシード値２８０ａを生成するためのフィールド２０４に保持されているハッシュ値を示すブロック図である。アレイ２０２はステップ１０２によって生成された６００バイトの初期値２１１を保持している。図２Ｃの別の要素は図２Ｂのプロセス２２０のステップの内容に関連して以下に説明する。
【００２９】
ステップ２２２において、クロック２９０の第１出力に基づいてインテックス１の値が生成される。１から、アレイ２０２のサイズであるＮまでのインデックス１の値を生成する任意の方法を用いることができる。図示の実施の形態においては、現在時刻における１/１０００秒単位の秒数、即ち０〜９９９が６００を法とするモジュラス演算に入力される。６００を法とするモジュラス演算の出力は当然０〜５９９の値になる。出力に１を加えて値の範囲を１〜６００にしても差支えない。別の方法として、アレイ２０２のバイト位置に連続して昇順または降順に“０”〜“５９９”と命名しても差支えない。インデックス１の値は図２Ａのインデックス１フィールド２０６に記憶される。一部の実施の形態において、以下に詳述するステップ１０４の開始時に現在時刻がクロック２９０から取り込まれる。
【００３０】
ステップ１０４において、片方向ハッシュ・メカニズムをアレイ２０２のデータに適用することによりハッシュ・フィールド２０４に記憶されるハッシュ・データが生成される。セキュリティーおよび固定長のハッシュ出力が得られる片方向ハッシュ・メカニズムを使用しているが、任意のハッシュ・メカニズムを用いることができる。ハッシュ・メカニズムから出力されるハッシュ値は僅か１ビットの入力変化で大きく変化する。しかし、幾つかの異なる入力、あるいは互いに関連のない入力によって同じハッシュ値を生成することができる。システムが構築された時点における当技術分野で周知の数あるハッシュ・メカニズムの例には、セキュア・ハッシュ・アルゴリズム（ＳＨＡ−１）、およびメッセージ・ダイジェスト５（ＭＤ−５）がある。ＳＨＡ−１を使用するとハッシュ・フィールド２０４に記憶されるハッシュ・データは２０バイト列になる。説明のために、ＳＨＡ−１を使用し、ハッシュ・フィールド２０４のサイズが２０バイトであると仮定する。図２Ｃは、ステップ１０４の結果、ハッシュ値２１２がハッシュ・フィールド２０４に記憶されていることを示している。図２Ｃにおいて、初期値２１１からハッシュ値２１２に延びる矢印はアレイ２０２の初期値２１１からハッシュ値２１２が得られたことを示している。
【００３１】
ステップ２２４において、クロック２９０の第２出力に基づいてインデックス２の値が生成される。１から、ハッシュ・フィールド２０４のサイズであるＨまでのインデックス２の値を生成する任意の方法を用いることができる。図示の実施の形態においては、現在時刻における１/１０００秒単位の秒数、即ち０〜９９９が１０を法とするモジュラス演算に入力される。１０を法とするモジュラス演算の出力は当然０〜９の値になる。出力に値“１１”を加えて値の範囲を１１〜２０とし、インデックス２の値が１１を下回らないようにしても差支えない。別の方法として、ハッシュ・フィールド２０４のバイト位置に連続して昇順または降順に“１０”〜“１９”と命名し、値“１０”を加えてインテックス２の値が１０を下回らないようにしても差支えない。インデックス２の値は図２Ａのインデックス２フィールド２０８に記憶される。一部の実施の形態において、前記ステップ１０４がハッシュ値を戻したときにインデックス２用の第２の時刻がクロック２９０から取り込まれる。説明のために、インデックス２の値が１１〜２０の間で変化し、現在の値が１３であると仮定する。
【００３２】
ステップ２２６において、インデックス２フィールド２０８の第２インデックス値、インデックス２によって示されたバイト数がハッシュ・フィールド２０８のハッシュ値から選択される。図示の実施の形態においては、図２Ｃに示すように、ハッシュ値２１２の１３バイトから成るハッシュ部分２１５が選択されている。別の実施の形態においては、別の方法によってハッシュ部分が選択される。例えば、インデックス２の値を用いてハッシュ部分の開始点を示すことができる。
【００３３】
ステップ２２８において、アレイ２０２のバイト序列位置がインデックス１フィールド２０６の第１インデックス値、インデックス１によって示される。この位置がアレイ２０２のどのデータをハッシュ部分に置換するかを示していることから本明細書においてこの位置を“置換位置”と呼ぶ。図２Ｃに示す実施の形態においては、置換位置２１３がインデックス１に対応している。
【００３４】
ステップ１０８において、アレイ２０２の置換位置を開始点としてハッシュ部分が書き込まれる。図２Ｃに示す実施の形態においては、アレイ２０２の置換位置２１３を開始点としてハッシュ部分２１５が書き込まれる。置換される初期値２１１の部分が破線で囲まれた部分２１６で示してある。ハッシュ部分２１５から置換部分２１６に延びる矢印がステップ１０８における書き込みを示している。書込み操作において、アレイ２０２の末端部を越えて書込みを行う必要がある場合には、次に書き込まれるバイトのバイト序列位置がアレイ２０２の最初のバイトにリセットされ書込みが続行される。
【００３５】
図２Ｂにおいて、ステップ１０８からステップ２２２に制御を戻す矢印が示しているように、前記プロセスが１回以上反復される。特定の回数反復する必要はないが、反復回数が多いと理論的には最終的に生成されるシード値のランダム性が増し、その結果対象暗号方式のセキュリティーが強化される。従って、必要なセキュリティー・レベルに応じて反復回数を変更することができる。反復回数を多くすると処理能力が低下する。従って、ユーザーは反復回数を調整することにより処理能力とランダム性とのバランスを取ることができる。
【００３６】
前記プロセスを指定された回数反復した後、アレイ２０２には初期値２１１の一部または前部のバイトが置換された混合データが含まれている。ステップ２３２において、クロックの第３出力に基づいてシード・インデックス値が生成される。１〜Ｎ（アレイ２０２のサイズ）までの値のシード・インデックス値を生成する任意の方法を用いることができる。図示の実施の形態においては、前記インデックス１のときと同様に、第３の現在時刻における１/１０００秒単位の秒数が６００を法とするモジュラス演算に入力される。
【００３７】
ステップ１３４において、シード値２８０を表すシード・バイトが、シード・インデックス値によって示されるアレイ２０２の混合データの序列位置から選択される。選択されるバイト数はアプリケーションに依存し、使用対称暗号化アルゴリズムの種類に応じて変えることができる。シード・バイト数がインデックスからアレイ２０２の末端までのバイト数を超過する場合には、序列位置が１にリセットされアレイ２０２の先頭位置からバイトが読み出される。図２Ｃに示す実施の形態においては、シード・インデックスに対応する位置２１８から始まる１２８バイトが選択されている。
【００３８】
ステップ２３６において、シード・インデックス値が第１インデックス値としてインデックス１フィールド２０６に記憶され、ステップ２３６からステップ１０４に制御を戻す矢印が示しているように、その後別のシード値を生成する際に使用される。
【００３９】
前記プロセスにより対称暗号キー値の生成に有用なシード値が効率的且つ迅速に生成される。プロセスに用いられるインデックス値は定期的に取り込まれるクロックまたは時刻値に基づいて算出することができる。アレイ２０２のデータはシード値毎に変化し処理が進むにつれ急速にランダム性を帯びる。１つの実施の形態において、処理能力が良好であること、およびプロセスの理論的セキュリティーが高いことが確認されている。
【００４０】
必要なセキュリティー・レベルに応じて反復回数を変更することができる。シード値の生成に要するシステムの処理時間は反復回数を変更することにより調整できる。従って、反復回数を変更することにより、本発明の方法のセキュリティーと処理時間とのバランスを取ることができる。プロセスの実行中アレイ２０２のデータは常にメモリに格納されているため、悪意のある相手が取得することは困難である。
【００４１】
図３は本発明の実施の形態を実行することができるコンピュータ・システム３００を示すブロック図である。コンピュータ・システム３００はバス３０２または情報を伝達するためのその他の伝達メカニズム、およびバス３０２に接続され情報処理を行うプロセッサ３０４を備えている。また、コンピュータ・システム３００は、バスに接続され情報およびプロセッサ３０４が実行する命令を記憶するランダム・アクセス・メモリ（ＲＡＭ）またはその他の動的記憶装置のようなメインメモリ３０６も備えている。メインメモリ３０６はプロセッサ３０４が命令を実行している間における一時的な変数またはその他の中間情報の記憶にも利用できる。コンピュータ・システム３００は、更にバス３０２に接続され静的情報およびプロセッサ３０４の命令を記憶しているリード・オンリー・メモリ（ＲＯＭ）３０８またはその他の静的記憶装置を備えている。磁気ディスクまたは光ディスクのような記憶装置３１０が備えられ、バス３０２に接続され情報および命令を記憶する。
【００４２】
バス３０２を介しコンピュータ・ユーザーに情報を表示する陰極線管（ＣＲＴ）のようなディスプレイをコンピュータ・システム３００に接続することができる。情報および選択したコマンドをプロセッサ３０４に伝達するための英数字およびその他のキーを備えたインプット・デバイス３１４がバス３０２に接続されている。指示情報および選択コマンドをプロセッサ３０４に伝達すると共に、ディスプレイ３１２のカーソルの移動制御を行うマウス、トラックボール、スタイラス、またはカーソル指示キーのようなカーソル移動制御が別の種類のユーザー・インプット・デバイスとして接続されている。この種の入力デバイスは一般に、第１軸（例えば、ｘ）および第２軸（例えば、ｙ）の２軸方向に自由度を有し、それによって平面上の位置を指定することができる。
【００４３】
本発明は対称暗号方式のためのシード値を生成するコンピュータ・システム３００の利用に関するものである。本発明の１つの実施の形態によれば、プロセッサ３０４がメインメモリ３０６に含まれている１つ以上の命令の１つ以上のシーケンスを実行することにより、対称暗号方式に用いられるシード値がコンピュータ・システム３００によって生成される。このような命令は、記憶装置３１０のような別のコンピュータ可読媒体からメインメモリ３０６に読み込むことができる。プロセッサ３０４がメインメモリ３０６に含まれている命令シーケンスを実行することにより、本発明のプロセス・ステップが実行される。別の実施の形態において、ソフトウェア命令の代わりに、またはそれと併用したハード・ワイヤード回路によって本発明を実行することができる。このように、本発明の実施の形態はハードウェア回路とソフトウェアとの特定の組合せに限定されるものではない。
【００４４】
本明細書において“コンピュータ可読媒体”とは、プロセッサ３０４が実行する命令の供給に関与する任意の媒体を意味する。このような媒体は不揮発性媒体、揮発性媒体、伝送媒体を含みこれに限定されない多様な形態を成すことができる。不揮発性媒体には、例えば、記憶装置３１０のような光または磁気ディスクがある。揮発性媒体にはメインメモリ３０６のような動的メモリが含まれる。伝送媒体には同軸ケーブル、銅線、光ファイバー、およびバス３０２を構成するワイヤーが含まれる。また、伝送媒体は無線データ通信および赤外線データ通信において発生するような音波または光波の形態を成すこともできる。
【００４５】
一般的な形態を成すコンピュータ可読媒体には、例えば、フロッピー（登録商標）・ディスク、フレキシブル・ディスク、ハード・ディスク、磁気テープ、その他の磁気媒体、ＣＤ−ＲＯＭ、光媒体、パンチ・カード、紙テープ、穿孔パターンを有する物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、その他のメモリ・チップまたはカートリッジ、後述する搬送波、およびコンピュータが読み取ることができるその他の媒体が含まれる。
【００４６】
１つ以上の命令の１つ以上のシーケンスをプロセッサ３０４に伝送し実行する際、各種コンピュータ可読媒体が関与することがある。例えば、まずリモート・コンピュータの磁気ディスクに命令を担持させることができる。リモート・コンピュータは動的メモリに命令をロードし、電話回線を介しモデムによって送信することができる。コンピュータ・システム３００のローカル・モデムが電話回線を通して送られてきたデータを受信し、赤外線送信機によって赤外線信号に変換することができる。赤外線検出器によって赤外線信号が担持しているデータを受信し、適切な回路によってバス３０２に乗せることができる。バス３０２がデータをメインメモリ３０６に送り、それをプロセッサ３０４が検索して実行することができる。メインメモリ３０６に送られた命令はプロセッサ３０４が実行する前または実行後に任意に記憶装置３１０に記憶することができる。
【００４７】
コンピュータ・システム３００はバス３０２に接続されている通信インタフェース３１８も備えている。通信インタフェース３１８によって、ローカル・ネットワーク３２２に接続されているネットワーク・リンク３２０に双方向データ通信接続が確立される。例えば、通信インタフェース３１８は統合デジタル通信網（ＩＳＤＮ）カード、または対応する電話回線にデータ通信接続を確立するモデムであってよい。別の例として、通信インタフェース３１８は、対応するローカル・エリア・ネットワーク（ＬＡＮ）にデータ通信接続を確立するＬＡＮカードであってよい。また、無線リンクも可能である。このような構成において、通信インタフェース３１８により各種情報を表すデジタル・データ・ストリームを担持した電気、電磁または光信号が送受信される。
【００４８】
一般に、ネットワーク・リンク３２０により、１つまたは複数のネットワークを介し別のデータ機器にデータ通信が提供される。例えば、ネットワーク・リンク３２０によって、ローカル・ネットワーク３２２を介し、ホスト・コンピュータ３２４またはインターネット・サービス・プロバイダー（ＩＳＰ）３２６が運用しているデータ機器に接続することができる。次いで、ＩＳＰ３２６により、現在では一般に“インターネット”３２８と呼ばれている世界的規模のパケット・データ通信網を通してデータ通信サービスが提供される。ローカル・ネットワーク３２２およびインターネット３２８にはデジタル・データ・ストリームを担持する電気、電磁または光信号が用いられている。コンピュータ・システム３００が送受信したデジタル・データを担持し、各種ネットワーク、ネットワーク・リンク３２０、および通信インタフェース３１８を通過する信号が情報を伝送する搬送波の代表的な形態である。
【００４９】
コンピュータ・システム３００は、ネットワーク、ネットワーク・リンク３２０、および通信インタフェース３１８を介してメッセージを送信し、プログラム・コードを含むデータを受信することができる。インターネットの例において、サーバー３３０がインターネット３２８、ＩＳＰ３２６、ローカル・ネットワーク３２２、および通信インタフェース３１８を介し、アプリケーション・プログラムの要求コードを送信することができる。本発明によれば、このようにダウンロードされたアプリケーションによって、前記対称暗号方式のためのシード値が生成される。
【００５０】
コードは受信と同時にプロセッサ３０４によって実行すると共に/または記憶装置３１０あるいはその他の不揮発性記憶装置に記憶し後で実行することができる。このようにしてコンピュータ・システム３００は搬送波形式のアプリケーション・コードを取得することができる。
【００５１】
これまで具体的な実施の形態を参照しながら本発明について説明してきた。しかし、本発明の大局的精神および範囲を逸脱することなく、本発明に様々な改良および修正が加えられ得ることは明白である。従って、本明細書および添付図面は説明のためのものであって限定を意味するものではない。
【図面の簡単な説明】
【００５２】
【図１】シード値を生成する方法の１つの実施の形態の概略を示すフロー図。
【図２Ａ】シード値を生成するシステムの１つの実施の形態を示すブロック図。
【図２Ｂ】シード値を生成する方法の別の実施の形態の概略を示すフロー図。
【図２Ｃ】１つの実施の形態におけるアレイ内におけるデータの置換およびシード値を生成するためのハッシュ値を示すブロック図。
【図３】１つの実施の形態を実行することができるコンピュータ・システムを示すブロック図。
【符号の説明】
【００５３】
２００              システム
２０２              アレイ
２０４              ハッシュ・フィールド
２０６              インデックス１フィールド
２０８              インデックス２フィールド
２１１              初期値
２１２              初期値のハッシュ値
２１３              インデックス１に対応する位置
２１４              インデックス２に対応する位置
２１５              ハッシュ値の部分
２１６              初期値の部分
２１８              シード・インデックスに対応する位置
２２０              プロセス
２８０、２８０ａ    シード値
２９０              クロック
【図１】
2005534235.tif 000003
【図２Ａ】
2005534235.tif 000004
【図２Ｂ】
2005534235.tif 000005
【図２Ｃ】
2005534235.tif 000006
【図３】
2005534235.tif 000007
【国際調査報告】
2005534235.tif 000008
2005534235.tif 000009
2005534235.tif 000010