(57)【要約】  本発明は、一般的に、暗号法、乱数発生、ハッシュ・コード発生などに応用を有する計算変換プロセスに関する。計算変換モジュールは、２次元アレイとして設計されたキーセットを使用する。本発明で使用される順方向変換プロセスは、対称暗号プロセスであるから、通信ネットワークを介してデータを安全に送るために使用されるのであれば、データを暗号化する送信コンピュータ、及び逆方向変換によってデータを解読する受信コンピュータに、同じキーセットが存在しなければならない。入力データの最初の「ｎ」ビット・ブロックが、出力データの最初の「ｍ」ビット・ブロックへ変換されるとき、キーセット上の非線形又は単方向変換に基づいて、キーセットが、異なるキーセットへ変換される。次の入力ブロックは、変換されたキーセットを使用して暗号化され、したがってシャノンの完全秘密理論を満足させる。乱数及び一意のハッシュ・コードの作成は、パラメータ及び操作を追加した同じ論理を使用する。計算変換プロセスは単向プロセスである。単向プロセスは、入力値「ｘ」が与えられると、関数Ｆ、即ち、Ｆ（ｘ）＝ｙを使用して、「ｘ」を「ｙ」へ変換することが容易であるという原理に基づいている。しかし、Ｆの範囲で「ｙ」が与えられるとすれば、Ｆ（ｘ）＝ｙであるようなｘを発見するのは困難である。このシステムにおいて、定値が変更されるだけで、暗号化及び解読の双方で同じ変換関数及び同じキーセットが使用される。
2008513811.tif 000002
【特許請求の範囲】
【請求項１】
変換方法であって、
ａ．入力データの最初の「ｎ」ビット・ブロックを受け取るステップと、
ｂ．一次キーセット及び順方向変換を表す第１のインディケータ又は逆方向変換を表す第２のインディケータに基づいて、前記入力データの「ｎ」ビット・ブロックを出力データの対応する「ｍ」ビット・ブロックで置換するステップであって、前記出力ブロックのサイズが前記入力ブロックのサイズよりも大きいか等しく、最初の前記一次キーセットがデフォルトのキーセットであるステップと、
ｃ．前記一次キーセットの上の操作の所定の集合に基づいて、前記一次キーセットを二次キーセットへ変換するステップであって、前記二次キーセットが次の入力ブロックのために前記一次キーセットとして使用されるステップと、
ｄ．入力データの全てのブロックが出力データの対応するブロックで置換されてしまうまで、各々の後続の「ｎ」ビット・ブロックについてステップａからｃを反復するステップと、を含み、
これによって、動的に生成された異なるキーセットを使用して、入力データの各々の「ｎ」ビット・ブロックを出力データの「ｍ」ビット・ブロックへ変換することを特徴とする方法。
【請求項２】
前記デフォルトのキーセットがユーザによって変更可能であり、またユーザごとに異なってよいことを特徴とする、請求項１に記載の方法。
【請求項３】
各々の「ｎ」ビット・ブロックを変換した後、前記インディケータを所定の方法で動的に変更することができ、同じ所定の方法が、「ｎ」ビット・ブロックへ逆変換される間に実行されることを特徴とする、請求項１に記載の方法。
【請求項４】
前記変換されたデータを通信ネットワークで安全に送り、前記変換されたデータを受信端で逆変換して元の入力データを回収し、前記受信端が送信端と同じデフォルトのキーセットを備え、また送信端と同じ変換をデフォルトのキーセットの上で実行するため、暗号化又は解読型の変換方法が使用可能であることを特徴とする、請求項１に記載の方法。
【請求項５】
前記キーセットが、少なくとも２n個の行及び少なくとも２つの列を有する２次元アレイ型のデータ構造を含み、行番号が０から始まって（２n−１）まで続き、前記２次元アレイの第１の列が一意の「ｎ」ビット数を任意の順序で含み、第２の列が第１の列へ結合され、第２の列が乱数を含むことを特徴とする、請求項１に記載の方法。
【請求項６】
前記第２の列の乱数が、任意の所定のビット・サイズであってよいことを特徴とする、請求項５に記載の方法。
【請求項７】
前記置換するステップが、更に、
ａ．前記一次キーセットの前記第１の列を「ｎ」ビット・ブロックの等価１０進数と等しい行番号まで全探索するステップと、
ｂ．前記第１の列の行に記憶された「ｍ」ビットを読み取るステップと、
ｃ．前記「ｎ」ビット・ブロックを前記「ｍ」ビット・ブロックで置換するステップと、
ｄ．前記「ｍ」ビット・ブロックについて前記一次キーセットの前記第１の列を探索するステップと、
ｅ．前記一次キーセットの前記第１の列の行で前記「ｍ」ビット・ブロックを突き止めるステップと、
ｆ．前記行番号を読み取りかつ該行番号を「ｎ」ビットで表すステップであって、該「ｎ」ビットが前記「ｎ」ビット・ブロックであるステップと、
ｇ．前記「ｍ」ビット・ブロックを前記「ｎ」ビット・ブロックで置換するステップと、を含み、
順方向変換の場合に、ステップａ〜ステップｃが実行され、逆方向変換の場合にステップｄ〜ステップｇが実行されることを特徴とする、請求項５に記載の方法。
【請求項８】
前記ステップａからｃ又は前記ステップｄからｇが所定の回数だけ実行可能であり、生成された複数の中間出力ブロックが、前記所定の回数が達成されるまで後続の反復のために入力ブロックとして使用されることを特徴とする、請求項７に記載の方法。
【請求項９】
順方向変換及び逆方向変換で実行される前記ステップが、相互に交換されて作動可能であることを特徴とする、請求項７に記載の方法。
【請求項１０】
前記一次キーセットを二次キーセットへ変換するステップにおいて、更に、
前記キーセットの第２の列で少なくとも１つの所定の数学操作を実行するステップと、
前記第２の列を所定の順序に整頓するとともに、そのプロセスにおいて、前記第２の列で実行された整頓に対応して前記第１の列を整頓し、それによって前記一次キーセットから二次キーセットへの単向変換を達成するステップと、
含むことを特徴とする、請求項７に記載の方法。
【請求項１１】
前記一次キーセットを二次キーセットへ変換するステップにおいて、更に、
所定の操作に基づいて、前記第１の列の番号を、それら自体の間で入れ替えるステップと、
を含むことを特徴とする、請求項７に記載の方法。
【請求項１２】
前記数学操作を実行するステップ及び前記第２の列を整頓するステップが、次のブロックを受け取る前に、数学操作の異なった集合及び整頓の異なった集合を実行して所定の回数だけ反復可能であることを特徴とする、請求項１０に記載の方法。
【請求項１３】
前記数学操作が、算術又は論理操作、例えば、モデュラス操作、排他的ＯＲ操作、足し算操作、又は掛け算操作の１つ又は組み合わせであってよいことを特徴とする、請求項１０に記載の方法。
【請求項１４】
前記整頓操作が、昇順、降順、又は任意の所定の順序にソートすることを含んでよいことを特徴とする、請求項１０に記載の方法。
【請求項１５】
更に、前記デフォルトのキーセットを使用して任意の長さ及びフォーマットのユーザ定義パスワードの最初の変換を実行するステップと、そのプロセスにおいて、前記デフォルトのキーセットをパスワード特定キーセットへ変換するステップと、入力データの前記最初の「ｎ」ビット・ブロックのために、前記パスワード特定キーセットを前記一次キーセットとして使用するステップと、を含むことを特徴とする、請求項１に記載の方法。
【請求項１６】
前記ユーザ定義パスワードの変換が、複数の反復で実行されてよいことを特徴とする、請求項１５に記載の方法。
【請求項１７】
前記変換が、ユーザ定義数の行動レベルについて前記ユーザ定義パスワードの上で実行され、前記ユーザ定義数の行動レベルが前記パスワード特定キーセットを生成し、前記パスワード特定キーセットがメモリの中に記憶されることを特徴とする、請求項１５に記載の方法。
【請求項１８】
入力データから出力データへの前記変換が、前記パスワード特定キーセットを所定の順序で使用して実行されることを特徴とする、請求項１７に記載の方法。
【請求項１９】
前記所定の順序が、前記パスワード特定キーセットが生成及び記憶される順序であることを特徴とする、請求項１８に記載の方法。
【請求項２０】
変換の複数の反復が、１つ又は複数のキーセットを使用して、前記入力データの各々の「ｎ」ビット・ブロックの上で実行されてよいことを特徴とする、請求項１に記載の方法。
【請求項２１】
前記出力データのビット・サイズを増加するため、所定の操作が該出力データの上で実行されてよく、その増加された出力データが前記変換プロセスの前記入力データとして使用され、前記出力データの所望のサイズを生成するため、前記所定の操作が反復ごとに使用され、前記元の入力データを回収するため、所定の操作が受信端で逆にされることを特徴とする、請求項１に記載の方法。
【請求項２２】
所定数の乱数が前記入力データへ加えられてよいことを特徴とする、請求項１に記載の方法。
【請求項２３】
所定のファイルの第１のロケーションから第２のロケーションまでのデータがパスワードへ付加されてよく、前記所定のファイルのコピーが受信コンピュータに存在することを特徴とする、請求項１に記載の方法。
【請求項２４】
ハッシュ・コード数を生成するため前記順方向又は逆方向変換プロセスが実行されてよく、そのプロセスが、更に、
ａ．前記出力データを２つの半分、即ち、第１の半分及び第２の半分へ分割するステップと、
ｂ．前記第１の半分と第２の半分との間で排他的ＯＲ操作を実行し、該排他的ＯＲ操作が中間出力を生成するステップと、
ｃ．ビット文字列の所定の長さに達するまでステップａからｂを実行し、それによって最終結果が一意のハッシュ・コードとなるステップと、
を含むことを特徴とする、請求項１に記載の方法。
【請求項２５】
ハッシュ・コード数を生成するため、前記順方向又は逆方向変換プロセスが実行されてよく、そのプロセスが、更に、
ａ．前記出力データを２つの半分、即ち、第１の半分及び第２の半分へ分割するステップと、
ｂ．前記第１の半分と第２の半分との間で排他的ＯＲ操作を実行し、該排他的ＯＲ操作が中間出力を生成するステップと、
ｃ．前記中間出力を変換プロセスの入力データとして使用して出力データを生成するステップと、
ｄ．ビット文字列の所定の長さに達するまでステップａからｃを実行し、それによって最終結果が一意のハッシュ・コードとなるステップと、
を含むことを特徴とする、請求項１に記載の方法。
【請求項２６】
入力データの各々の「ｎ」ビット・ブロックの変換の後、前記入力データの次の「ｎ」ビット・ブロックの変換のために異なる二次キーセットを取得するため、順方向変換が所定数のブロックの上で実行されてよく、前記受信端が、前記出力データの各々の「ｍ」ビット・ブロックの変換の後、前記同じ所定数のブロックの上で前記逆方向変換を実行して前記元の入力データを回収することを特徴とする、請求項１に記載の方法。
【請求項２７】
変換システムであって、
相互に通信する長期メモリ、プロセッサ読み取り可能メモリ、及びプロセッサを含み、前記長期メモリが計算変換モジュールを含み、前記プロセッサ及びプロセッサ読み取り可能メモリと通信する前記計算変換モジュールが、一次キーセット及び順方向変換を表す第１のインディケータ及び逆方向変換を表す第２のインディケータに基づいて、入力データの最初の「ｎ」ビット・ブロックを受け取り、該入力データの「ｎ」ビット・ブロックを出力データの対応する「ｍ」ビット・ブロックで置換し、該出力データの「ｍ」ビット・ブロックが前記入力データの「ｎ」ビット・ブロックと等しいサイズであり、最初の前記一次キーセットがデフォルトのキーセットであるように構成され、操作の所定の集合に基づいて前記一次キーセットを二次キーセットで置換し、該二次キーセットが前記一次キーセットとして使用され、その後で入力データの各々の後続の「ｎ」ビット・ブロックを出力データの対応する「ｍ」ビット・ブロックへ置換するプロセスを反復するように構成され、各々の置換が、前記入力データの全てのブロックが出力データの対応するブロックで置換されてしまうまで、動的に生成された異なるキーセットに基づいて実行される計算システムを備えることを特徴とする、変換システム。
【請求項２８】
変換されたデータを通信ネットワークで安全に送信し、前記変換されたデータを受信端で逆に変換して元の情報を回収し、前記受信端が送信端と同じデフォルトのキーセットを備えて、同じ変換をデフォルトの前記キーセットの上で実行するため、暗号化及び解読型の変換が使用可能であることを特徴とする、請求項２７に記載のシステム。
【請求項２９】
前記インディケータが所定の方法で変化することができ、同じ該所定の方法が前記受信端で実行されることを特徴とする、請求項２８に記載のシステム。
【請求項３０】
前記キーセットが、少なくとも２n個の行及び少なくとも２つの列を有する２次元アレイ型のデータ構造を含み、前記行番号が０から開始して（２n−１）まで続き、２次元アレイの第１の列が一意の「ｎ」ビット数を含み、第２の列が第１の列に結合され、前記第２の列が無作為にソートされた数を含むことを特徴とする、請求項２７に記載のシステム。
【請求項３１】
前記第２の列の乱数が所定のサイズであってよいことを特徴とする、請求項３０に記載のシステム。
【請求項３２】
前記計算変換モジュールを使用して前記置換が達成され、前記計算変換モジュールが、更に、順方向変換の場合、入力データの「ｎ」ビット・ブロックの等価１０進数と等しい行番号まで前記一次キーセットの前記第１の列を全探索し、前記行に記憶された「ｍ」ビット・ブロックを読み取り、その後で入力データの「ｎ」ビット・ブロックを出力データの「ｍ」ビット・ブロックで置換するか、又は逆方向変換の場合、出力データの「ｍ」ビット・ブロックについて前記一次キーセットの前記第１の列を探索し、前記一次キーセットの前記第１の列の行で前記「ｍ」ビット・ブロックを突き止め、前記行番号を読み取って該行番号を「ｎ」ビットで表し、該「ｎ」ビット・ブロックが前記入力データの「ｎ」ビット・ブロックであり、その後で前記出力データの「ｍ」ビット・ブロックを前記入力データの「ｎ」ビット・ブロックで置換することを特徴とする、請求項３０に記載のシステム。
【請求項３３】
前記順方向変換のステップ又は逆方向変換のステップは、所定の回数だけ実行可能であり、該所定の回数が達成されてしまうまで、生成された複数の中間出力ブロックが後続の反復のために入力データとして使用されることを特徴とする、請求項３２に記載のシステム。
【請求項３４】
前記計算変換モジュールが、少なくとも１つの数学操作を前記キーセットの前記第２の列の上で実行することを前記プロセッサに命令するように構成され、前記計算変換モジュールが前記プロセッサと一緒になって前記キーセットの前記第２の列の上で整頓操作を実行し、その結果として、前記キーセットの前記第１の列の上で順序づけが達成されることを特徴とする、請求項３２に記載のシステム。
【請求項３５】
前記第１の列にある数の、それら数の間の入れ替えが、所定の操作に基づいて実行可能であることを特徴とする、請求項３４に記載のシステム。
【請求項３６】
前記数学操作が、算術及び論理操作、例えば、モデュラス操作、排他的ＯＲ操作、足し算操作、及び掛け算操作の１つ又は組み合わせであってよいことを特徴とする、請求項３４に記載のシステム。
【請求項３７】
前記整頓操作が昇順並べ替え、降順並べ替え、又は任意の所定の順序づけであってよいことを特徴とする、請求項３４に記載のシステム。
【請求項３８】
更に、前記プロセッサが、前記デフォルトのキーセットを使用して任意の長さ及びフォーマットのユーザ定義パスワードに最初の変換を実行するように命令され、そのプロセスにおいて、前記デフォルトのキーセットをパスワード特定キーセットへ変換し、該パスワード特定キーセットを前記入力データの一次キーセットとして使用することを特徴とする、請求項２７に記載のシステム。
【請求項３９】
前記ユーザ定義パスワードの変換が、複数回の反復で実行可能であることを特徴とする、請求項３８に記載のシステム。
【請求項４０】
前記変換が、ユーザ定義数の行動レベルについて前記ユーザ定義パスワードの上で実行され、前記ユーザ定義数の行動レベルが前記パスワード特定キーセットを生成する、請求項３８に記載のシステム。
【請求項４１】
生成された前記パスワード特定キーセットの少なくとも１つを使用し、前記入力データの上で変換プロセスを実行することによって、前記出力データが前記入力データから取得され、前記パスワード特定キーセットがメモリの中に記憶されて所定の順序で使用されることを特徴とする、請求項４０に記載のシステム。
【請求項４２】
前記所定の順序が、前記パスワード特定キーセットが生成及び記憶される順序であることを特徴とする、請求項４１に記載のシステム。
【請求項４３】
前記変換を実行することによって生成された前記複数のパスワード特定キーセットが、メモリの中に記憶されることを特徴とする、請求項４２に記載のシステム。
【請求項４４】
前記入力データの各々のビットが前記出力データの各々のビットへ変換される前に、複数回の反復が前記キーセットの上で実行可能である、請求項２７に記載のシステム。
【請求項４５】
前記出力データのビット・サイズを増加するため所定の操作が該出力データの上で実行可能であり、増加された前記出力データが前記変換プロセスの前記入力データとして使用され、前記出力データの所望のサイズを生成するため所定の操作が反復ごとに使用され、前記元の入力データを回収するため前記所定の操作が前記受信端で逆にされる、請求項２７に記載のシステム。
【請求項４６】
所定数の乱数が入力データへ加えられてよいことを特徴とする、請求項２７に記載のシステム。
【請求項４７】
所定のファイルの第１のロケーションから第２ロケーションまでのデータが前記パスワードへ付加されてよく、前記ファイルのコピーが前記受信コンピュータに存在することを特徴とする、請求項２７に記載のシステム。
【請求項４８】
入力データの各々の「ｎ」ビット・ブロックの変換の後に所定数のブロックの上で順方向変換が実行されて、入力データの前記次の「ｎ」ビット・ブロックの変換のために、異なった二次キーセットを取得してよく、前記受信端が、出力データの各々の「ｍ」ビット・ブロックの変換の後に同じ前記所定数のブロックの上で前記逆方向変換を実行して前記元の入力データを回収することを特徴とする、請求項２７に記載のシステム。
【請求項４９】
乱数を生成する方法であって、
ａ．入力データの最初の「ｎ」ビット・ブロックを受け取るステップであって、前記入力データが任意の所定の動的システム・パラメータに基づいているステップと、
ｂ．キーセットの第１の列で入力データの最初の前記「ｎ」ビット・ブロックの等価１０進数と等しい行番号まで全探索するステップであって、前記キーセットが少なくとも２n個の行及び少なくとも２つの列を有する２次元アレイ型であり、前記行番号が０から始まって（２n−１）まで続き、前記２次元アレイの第１の列が一意の「ｎ」ビット番号を任意の順序で含み、第２の列が前記第１の列へ結合され、前記第２の列が所定のサイズの乱数の所定の集合を含むステップと、
ｃ．前記キーセットの前記第１の列で前記行番号に記憶された前記「ｍ」ビットを決定し、
ｄ．前記「ｎ」ビット・ブロックと前記「ｍ」ビット・ブロックとの間でモデュラス操作を実行し、その結果が最初の一時的な値として記憶されるステップと、
ｅ．前記キーセットの第１の列で前記一時的な値の等価１０進数に等しい行番号まで全探索するステップと、
ｆ．（ｅ）の前記行番号に記憶された数を決定するステップと、
ｇ．前記「ｍ」ビット・ブロックと前記（ｆ）の数との間で排他的ＯＲ操作を実行するステップと、
ｈ．前記キーセットの上で所定の操作を実行するステップと、
ｉ．全ての後続の前記「ｎ」ビット・ブロックについてステップａからｇを反復して、前記乱数の集合を取得するステップと、
を含むことを特徴とする方法。
【請求項５０】
前記キーセットの上に所定の操作を実行するステップが、更に、
前記キーセットの前記第２の列の上に数学操作を実行するステップと、
前記第２の列を所定の順序に整頓し、そのプロセスにおいて、該第２の列で実行された整頓に対応して前記第１の列を整頓するするステップと、
を含むことを特徴とする、請求項４９に記載の方法。
【請求項５１】
前記数学操作が、算術又は論理操作、例えば、モデュラス操作、排他的ＯＲ操作、足し算操作、又は掛け算操作の１つ又は組み合わせであってよいことを特徴とする、請求項５０に記載の方法。
【請求項５２】
前記整頓操作が、昇順、降順、又は任意の所定の順序にソートすることを含んでよいことを特徴とする、請求項５１に記載の方法。
【請求項５３】
入力データを出力データへ変換する応用であって、
相互に通信する長期メモリ、プロセッサ読み取り可能メモリ、及びプロセッサを含み、前記長期メモリが計算変換モジュールを含み、該計算変換モジュールが前記プロセッサ及び前記プロセッサ読み取り可能メモリと通信し、ユーザが前記計算変換モジュールを実行するとき、（ａ）前記計算変換モジュールが、前記入力データの最初の「ｎ」ビット・ブロックを受け取り、一次キーセット及び順方向変換を表す第１のインディケータ及び逆方向変換を表す第２のインディケータに基づいて、前記入力データの「ｎ」ビット・ブロックを出力データの対応する「ｍ」ビット・ブロックで置換し、該出力データの「ｍ」ビット・ブロックが前記入力データの「ｎ」ビット・ブロックと等しいサイズであり、最初の前記一次キーセットがデフォルトのキーセットであり、操作の所定の集合に基づいて前記一次キーセットを二次キーセットで置換し、該二次キーセットが前記一次キーセットとして使用され、その後で前記入力データの各々の後続の「ｎ」ビット・ブロックを前記出力データの対応する「ｍ」ビット・ブロックへ置換するプロセスを反復するように構成され、各々の置換が、前記入力データの全てのブロックが前記出力データの対応するブロックで置換されてしまうまで、動的に生成された異なるキーセットに基づいて実行され、前記計算変換モジュールがメディアの中に記憶され、前記プロセッサ読み取り可能メモリ及び前記プロセッサを含むシステムと一緒に前記メディアが使用されるとき、前記計算変換モジュールが前記システムのプロセッサ読み取り可能メモリへ転送されることを含む応用。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、暗号の分野に関する。具体的には、本発明は、真の単向関数を使用する対称暗号化及び解読、乱数生成、及びハッシュ・コード発生器の方法及びシステムに関する。
【背景技術】
【０００２】
本発明は、暗号化通信、及び通信路上の安全な通信を提供し、計算システム上にデータを安全に記憶する方法に関する。コンピュータ技術及び情報技術におけるネットワーク方法の出現と共に、情報は地球を横切って瞬時に利用可能となる。情報技術の上で発展及び繁栄してきた様々な情報集中ビジネスが存在する。
【０００３】
正しい情報を高速で通信することは、様々なビジネス分野で高度に必要である。少数の名前を挙げると、銀行業、電子メール、データ処理、及び戦略的コンサルタント業などである。安全な電子通信は、この情報技術時代に存在するほとんど全てのビジネス形態及びビジネス単位の核心である。既存の電子通信路を通る情報の流れは日に日に速くなっているが、このデータは電子盗聴者によって監視されやすい。更に、通信路で送られる電子データの源のオーセンチケーション及びその検証のような問題にも対処して、電子署名の潜在的偽造を管理する必要がある。そのような偽造は、署名を検証して譲渡された署名者から文書が来ており、偽物でないことを確認しなければならないトランザクション、例えば、銀行為替手形又は有価証券の預託に不利な効果を有するかも知れない。これは、安全な通信路を有する必要性を強調して示す。安全な通信路は、電子盗聴者からの安全を通信データに提供し、トランザクション文書上の電子署名のために真のオーセンチケーションとして作用することができる。
【０００４】
通信路で送られた電子データの安全な伝送、オーセンチケーション、及び検証のための暗号システムが存在したが、今日まで応用されたそれらの各々は、或る一定の欠点を有した。非対称及び対称暗号システムが存在した。全てのこれらの暗号符号化及び解読方法は、或る程度のプライバシーの保護を確実にする。
【０００５】
対称暗号は、暗号化及び解読プロセスの双方のために同じキーセットが使用されるアルゴリズムを使用する。生成されたキーは、秘密に保持されなければならず、メッセージの送信者及び受信者によって共有される。例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ  文書で使用されたパスワードは、対称暗号化手法を使用する。その場合、ファイルを暗号化及び解読するために使用されるパスワードは同じであり、盗聴者からファイルを安全に保護するために使用される。ファイルをパスワードで暗号化する人は、直接又は任意の他の手段によって、パスワードを受信者に通知し、受信者がファイルを解読できるようにしなければならない。
【０００６】
対称キー暗号は、ストリーム暗号とブロック暗号へ分けることができる。ストリーム暗号はメッセージのビットを一時に１つだけ暗号化し、ブロック暗号は或る数のビットを取って、それらを１つの単位として暗号化する。典型的には、６４ビットのブロックが使用される。対称キーアルゴリズムは、一般的に、非対称暗号化アルゴリズムよりも、はるかに速く実行する。しかし、対称キーアルゴリズムは、或る一定の落とし穴を有する。１つは、送信端と受信端で、１つのコピーで共有された秘密キーを必要とすることである。キーは暗号敵対者によって発見されやすいので、それらのキーは頻繁に変更される必要があり、配布及び使用の間、安全に保持される必要がある。この代替方法は、非対称暗号を使用してデータを暗号化するか、パスワードを転送して対称暗号化を実行することである。
【０００７】
使用されるべき最初の暗号通信方法の１つは、Ｎａｔｉｏｎａｌ  Ｂｕｒｅａｕ  ｏｆ  Ｓｔａｎｄａｒｄｓ，Ｆｅｄｅｒａｌ  Ｒｅｇｉｓｔｅｒ，Ｍａｒ．  １７，１９７５，Ｖｏｌｕｍｅ  ４０，Ｎｏ．  ５２  及び  Ａｕｇ．  １，１９７５，Ｖｏｌ．  ４０，Ｎｏ．  １４９  によって採用されたデータ暗号化標準ツールであった。
【０００８】
暗号通信路は、通常、暗号化システム及び解読システムを含み、これらのシステムは通信路へ結合される。メッセージは、通信路の１つの端で暗号化システムを使用して暗号化され、通信路を横切って送信され、通信路の他の端で解読通信路によって解読される。ディジタル・システムの場合、メッセージは、数字文字によって表されたディジタル・メッセージとして定義される。これらの文字は、一般的に、０と１との２進表記文字である。使用される暗号化システムは、本質的に、符号化されるべきディジタル・メッセージＭの上で符号化キー又は作用素Ｋを使用することを強調し、メッセージＭを符号化バージョンＥへ符号化する。ここで、Ｋ及びＥも、Ｍと同じ表記法で表された数字文字のディジタル系列である。このようにして、暗号化装置は、入力としてＭ及びＫを取り、Ｋを使用してＭの上で作用し、ＭをＥへ暗号化する。
【０００９】
他方、解読装置は、入力としてＥ及び解読キー又は作用素Ｋ’を取り、Ｋ’を使用してＥの上に作用し、解読されたテキストＭ’へＥを解読する。ここで、Ｋ’及びＭ’も、Ｍと同じ表記法で表された数字文字のディジタル系列である。ここで、暗号化及び解読キー又は作用素、即ち、Ｋ及びＫ’は、Ｍ’＝Ｍとなるように選択される。
【００１０】
暗号システム、例えば、公開キー暗号化システムの利用可能な文献では、「Ｎｅｗ  ｄｉｒｅｃｔｉｏｎｓ  ｉｎ  ｃｒｙｐｔｏｇｒａｐｈｙ」，ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ  （Ｎｏｖ．  １９７６）  で  Ｄｉｆｆｉｅ  及び  Ｈｅｌｌｍａｎ  によって説明されているように、公開キー及び秘密キーを使用して、通信されるべきデータを暗号化し、更にそれを解読することについて、詳細に説明されている。Ｄｉｆｆｉｅ  及び  Ｈｅｌｌｍａｎ  によって上記の文献で呈示された暗号化方法は、公開キー（ＫＰ）を使用してメッセージＭを暗号化することを強調する。暗号文Ｅからメッセージを解読するため、秘密キーＫＰｒが使用される。
【００１１】
公開キー及び秘密キーは、Ｍ’＝Ｍとなるように選択される。公開キー（ＫＰ）はユーザの公開ファイル・システムで入手可能であり、秘密キー（ＫＰｒ）はユーザによって所持される。ユーザＢが暗号化メッセージをユーザＡへ送らなければならないとき、常に、メッセージＭはユーザＡの公開キーを使用して暗号化される。次に、ユーザＡは、自分だけが知っいる秘密キーを使用して、暗号化メッセージを解読する。この方法は、更に、電子署名の権限付与として作用するように使用される。上記で説明した  Ｄｉｆｆｉｅ  及び  Ｈｅｌｌｍａｎ  の方法を成功裏に実行するためには、秘密キーの慎重な選択を行うことが絶対に必要である。なぜなら、この選択は、盗聴者への暗号化メッセージの脆弱性を決定するからである。選択されたキーは、計算するのに計算的に困難でなければならない。しかし、常に、ユーザの秘密キーを計算するための暴力的方法が存在するであろう。１つのそのような方法は、１つのＭがＫＰ（Ｍ）＝Ｅとなるまで、全ての可能なメッセージＭをリストし、次にＫＰｒ（Ｅ）＝Ｍを使用して、ＫＰｒを計算することである。
【００１２】
ＲＳＡ特許、即ち、米国特許第４，４０５，８２９号は、素因数分解に基づいてユーザのために秘密キーを生成し、盗聴者による秘密キーの計算を計算的に非常に困難にするスキーム（計算的に高価なプロセス）を使用した。暗号化及び解読のＲＳＡ方法は、Ｄｉｆｆｉｅ  及び  Ｈｅｌｌｍａｎ  システムと同じ公開キー及び秘密キーの概念を使用してメッセージを暗号化及び解読する。メッセージを暗号文へ暗号化するためメッセージの上で実行される操作は、メッセージを等価数として表現することを含む。ここで、等価数は合成数ｎよりも小さい非負の数である。合成数ｎは２つの素因数を有する。即ち、ｎ＝ｐ．ｑである。ここで、ｐ及びｑは素数である。
【００１３】
しかし、これらの既存のシステムは、盗聴者からの完全な安全を提供しない。もっとも、それらのシステムは、暗号化メッセージを解読するために必要な秘密キーの計算を含み、この計算は、異なる段階での素数計算を含むので非常に困難である。また、素因数を発見しなければならない数のサイズが増加すると、プロセスは益々高価になる。しかし、スーパーコンピュータ及び高速計算の出現によって、素数発見アルゴリズムは、はるかに高速な実行が可能となり、したがって暗号化メッセージは、盗聴者による解読、妨害、偽造が可能となる。更に、これらの暗号化・解読モジュールは、全ての人が入手できる公開キーを含み、ユーザのみによって所持される秘密キーを生成することが仕事となる。
【００１４】
更に、完全秘密又は未知条件のシャノンの理論によれば、暗号が破られないようにするため、暗号を暗号化するために必要なキーセットは、メッセージごとに一意でなければならず、キーセットの長さは、通信されるべきメッセージの長さよりも大きいか等しくなければならない。暗号化通信方法は、前記のスキームを使用するまで、全面的に安全ではあり得ない。
【発明の開示】
【００１５】
提案されたシステム及び方法は、既存の技術の全ての欠点を克服して、完全保証の破られない対称キー暗号を提供しようとする。システム及び方法は、更に、乱数及び一意のハッシュ・コードを生成する必要性に対処するために使用される。
【００１６】
本発明の目的及び利点の多くは、以下の詳細な説明及び添付の図面を精査した後で当業者に明らかとなるであろう。
【発明を実施するための最良の形態】
【００１７】
本発明は、幾つかの形態、構造、及び方法で具体化されてよい。下記で提供される説明及び図面は、本発明の例示的実施形態を示す。当業者は、本発明が、下記で示されていない他の形態、構造、及び方法で具体化されてよいことを理解するであろう。本発明は、特許請求の範囲の完全な範囲を有し、下記で示される実施形態によっては限定されない。
【００１８】
順方向変換及び逆方向変換の実施形態の１つは、それぞれ暗号化及び解読のプロセスである。暗号化及び解読は、通信路でデータを安全に伝送するための必須のプロセスであり、計算システムにデータ又は情報を安全に記憶するためにも使用される。暗号化及び解読の幾つかの既存の技術は、本発明の背景で説明された。しかし、本発明は、初期及び現在の暗号化メカニズム及びテクノロジにおける核心問題に対処して、それを克服する。
【００１９】
本発明は、順方向変換及び逆方向変換のために真の単向プロセスを使用する。即ち、本発明の実施形態においてデータを暗号化及び解読する。真の単向関数とは、入力「ｘ」が与えられたとき、Ｆ（ｘ）を計算して「ｙ」を取得することが容易であるような関数である。ここで、Ｆ（ｘ）＝ｙであり、Ｆは単向関数である。しかし、Ｆの性質／記述を知り、「ｙ」を知っていても、「ｘ」を取得するのは困難である。これは、１つの方向で関数の結果を計算することは可能であるが、出力及び関数を知っていても、関数の元の入力を取り戻すことは困難であることを意味する。本発明の核心機能は、下記で説明される。
【００２０】
本発明の変換関数は、一般的に、次のように表される。
ｆ（ｘ，ｋ，０）＝ｙ，ｋ’
ここで、「ｙ」は出力データであり、「ｘ」は入力データであり、定数ゼロは順方向変換を表す。しかし、逆方向変換の間、定数は１へ設定され、出力「ｙ」は関数への入力として取られる。このプロセスは順方向変換のプロセスを逆方向にし、元の入力データを生成する。即ち、ｆ（ｙ，ｋ，１）＝ｘ，ｋ’である。
【００２１】
上記から分かるように、順方向変換及び逆方向変換のプロセスで同じ関数「ｆ」が使用され、使用されるキーセットは双方の場合で同じであり、唯一の変化はインディケータ値の変化である。ここで、インディケータは、実行されるべき変換の種類を表す。順方向変換及び逆方向変換の双方において、関数「ｆ」は１つの方向へのみ進行する。即ち、ｋからｋ’へ、即ち、一次キーセット（ｋ）から二次キーセット（ｋ’）へ進行する。ｋからｋ’への変換は真の単向プロセスであり、順方向変換及び逆方向変換で同じである。
【００２２】
ケース１：  入力データ「ｘ」、出力データ「ｙ」、二次キーセット「ｋ’」、及び関数「ｆ」が与えられると、一次キーセットｋを取得することは理論的に非常に困難であり、実際には不可能である。
【００２３】
ケース２：  出力データ「ｙ」及び関数「ｆ」が与えられると、入力データ「ｘ」及び一次キーセットｋを発見するのは理論的及び実際的に不可能である。なぜなら、生成された組み合わせから入力データの正しいパターンを選択することは不可能だからである。本発明のこの実施形態は、下記で詳細に説明される。
【００２４】
図１は、通信路１１０、及び通信路へ結合された２つの計算端末１０５及び１１５を示す。通信路は、例えば、広域ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、又は基地局及び移動局を含む無線ネットワークを含んでよい。計算端末は、例えば、コンピュータ又はハンドヘルド装置、例えば、移動電話又はパーソナル・ディジタル・アシスタント（ＰＤＡ）を含んでよい。本発明の１つの実施形態では、前記の装置の任意のものを使用することによって、本発明で実現される技術を使用して通信路でデータを安全に送ることができる。
【００２５】
図２は、計算端末２０５における本発明のアーキテクチャを示す。本発明を使用して、通信路でデータを安全に送り、また独立型コンピュータにデータを安全に記憶することができる。各々の計算端末は、プロセッサで読み取り可能又は短期のメモリ２１０、プロセッサ２１５、長期メモリ２２０、及びトランシーバを含み、各々は他のものと通信する。計算変換モジュール２２５は、計算端末２０５の長期メモリ２２０の中に記憶される。トランシーバは、１つの計算端末から他の計算端末へデータを送信及び受信するために使用される。この実施形態において、アプリケーションによって作り出されたデータ、例えば、ワード・ファイル又はエクセル・スプレッドシート又は他のアプリケーションからのデータは、入力データの「ｎ」ビット・ブロックの形態で取られる。このデータは、計算端末２０５ではビット及びバイトの形態で表される。本発明のこの実施形態において、計算変換モジュール２２５は入力データを出力データへ変換する責任を有する。出力データは、入力データが計算変換モジュール２２５を通過するときに受け取られる出力である。出力データは、暗号化された入力データの１つの形態であり、その暗号化は、入力データの上で順方向変換を実行して、意味のないデータに見えるようにすることによって行われる。１つの実施形態において、この暗号化されたデータは、計算端末２０５にも記憶して、誤った使用からデータを保護するか、ユーザのプライバシーを維持することができる。他の実施形態において、暗号化されたデータは、他の計算端末へ送信可能である。それは暗号化された形態で送られ、盗聴者又は他の第三者が元のデータへアクセスできないようにする。出力データは、他の計算端末の上で、逆方向変換のプロセスを実行され、即ち、解読される。それは、受信計算端末の上で出力データを計算変換モジュールへ通すことによって、元の入力データを回収するためである。暗号化及び解読のプロセスとしての本発明の実施形態は対称プロセスであり、通信ネットワーク１１０でデータを安全に送るために使用されるのであれば、同じキーセットが、データを暗号化するため送信コンピュータ１０５に存在し、またデータを解読するため受信コンピュータ１１５に存在しなければならない。
【００２６】
１つの実施形態において、計算変換モジュール２２５は、入力データのブロックを暗号化するために使用されるキーセットを含む。本発明は「ｎ」ビット・ブロック変換方法である。ここで、「ｎ」は少なくとも１ビットの長さである。サイズ「ｎ」が増加するにつれて、計算リソース、例えば、必要なメモリ及びプロセッサの速度は増加し、したがって変換プロセスを遅くするであろう。今日のシステムにおいて、「ｎ」の理想のサイズは８ビットである。本発明は、異なった一意のキーセットを使用して、入力データの各々のビットを変換することができる。代替的に、所定数のビット、即ち、ブロックを、一度に暗号化することもできる。入力データの入力ブロックは「ｎ」ビット・ブロックと呼ばれ、出力データの出力ブロックは「ｍ」ビット・ブロックと呼ばれる。例えば、入力データは３ビットの「ｎ」ビット・ブロックへ変換可能であり、各々の「ｎ」ビット・ブロックは一意のキーセットを使用して暗号化可能であり、出力データの「ｍ」ビット・ブロックが取得される。キーセットの設計は、入力データを暗号化するために使用される入力データの「ｎ」ビット・ブロックのサイズに基づく。図３はキーセットの１つの実施形態を示す。その場合、キーセットは２つの列を有する２次元アレイであり、行の数は２nに等しい。ここで、「ｎ」は入力データの入力ブロックのビットの数で、サイズを表す。入力ブロックは「ｎ」ビット・ブロックと呼ばれる。図３で示されるように、２次元アレイの行番号は、０から始まって（２n−１）まで続く。例えば、図３で示されるように、３ビットから成る１つのブロックを暗号化するためには、２3の行、即ち、８つの行が存在する。２次元アレイの第１の列３０５は一意の「ｎ」ビットの数を含み、参照列１（「Ｒｅｆ１」）と呼ばれる。図３で示されるキーセットは入力データの３ビットの１つのブロックを暗号化するために使用されるから、Ｒｅｆ１はゼロから７までの数を任意の順序で含む。２次元アレイの第２の列３１０は乱数を含み、エネルギー値列（「Ｅ−Ｖａｌ」）と呼ばれる。乱数は、「ｖ」ビットから成る任意の所定のサイズであってよい。ここで、「ｖ」はＥ−Ｖａｌ列のサイズをビットで表す。例えば、図３で示されるキーセットの第２の列３１０のサイズは８ビットである。デフォルトの状態において、これらの乱数はゼロから２vまでの数を含む。即ち、Ｅ−Ｖａｌ列が含むことのできる最大の数は２v、即ち２8＝２５６である。ここで、ｖ＝８である。キーセットのＥ−Ｖａｌ列は、任意の並べ替えアルゴリズムを使用してソートされる。１つの実施形態において、第２の列３１０の数は降順又は昇順又は任意の所定の順序にソートされる。図３で示されるような２つの列を有するキーセット構造において、一意であって順序を有する、即ち、ゼロから７までの順序にあるアレイの行番号は、変換のプロセスで他の隠された参照列として使用される。この構造は、キーセットの構造の１つの実施形態を表す。
【００２７】
他の実施形態において、３つの列及び２n行を有する２次元アレイが使用され、図３で示される。ここで、「ｎ」は入力データの入力ブロックのビットの数でサイズを表す。アレイの第１の列３１５及び第２の列３２０は一意の２nビット数を含み、それぞれ参照列１（「Ｒｅｆ１」）及び参照列２（「Ｒｅｆ２」）と呼ばれ、３番目の列３２５は乱数を含み、エネルギー値列（「Ｅ−Ｖａｌ」）と呼ばれる。乱数は「ｖ」ビットの任意の所定のサイズであってよい。ここで、「ｖ」はＥ−Ｖａｌ列のサイズをビットで表す。Ｒｅｆ１列及びＲｅｆ２列にある数は任意の順序であってよく、これは、２列キーセット構造を有する２次元アレイと比較されたとき、変換された出力データへ更なる複雑性を追加する。アレイの行数は、入力データの「ｎ」ビット・ブロックのサイズによって決定され、図３で示される実施形態では、２3であって８に等しい。なぜなら、３が入力データの「ｎ」ビットのサイズだからである。このようにして、キーセットは８つの行から成る。
【００２８】
他の実施形態において、変換のプロセス、この場合、計算変換モジュール２２５は、入力データの「ｎ」ビット・ブロック、及びゼロか１の値を有するインディケータを入力される。入力データの「ｎ」ビット・ブロックは、一次キーセットを使用して出力データの「ｍ」ビット・ブロックへ変換される。このプロセスが達成されると、一次キーセットは二次キーセットへ変換され、入力データの全てのブロックが出力データの出力ブロックへ変換されるまで、入力データの次の「ｎ」ビット・ブロックを変換するために二次キーセットが使用される。ゼロ又は１の値を有するインディケータは、計算変換モジュール２２５が順方向又は逆方向変換を実行する必要があるかどうかを表す。順方向及び逆方向変換のプロセスは、以下で詳細に説明する。
【００２９】
図４は、本発明の実施形態に従って、入力データを出力データへ変換する暗号化プロセスの流れ図を示す。本発明の１つの実施形態として、順方向変換及び逆方向変換のプロセスは、３つの基本ステップでキーセットを使用して実行される。インディケータは、実行される必要がある変換のタイプを示す。例えば、ゼロの値を有するインディケータは順方向変換を表し、１は逆方向変換を表す。順方向変換のプロセスが完了され、出力データが受信コンピュータへ送信されたとき、受信コンピュータはインディケータを逆にして逆方向変換を実行し、元の入力データを回収する必要がある。１つの実施形態において、インディケータは、入力データの「ｎ」ビット・ブロックごとに動的に変更されてよい。例えば、入力データの最初の「ｎ」ブロックは、順方向変換プロセスで説明されたプロセスを使用して変換され、入力データの２番目の「ｎ」ビット・ブロックは、逆方向変換プロセスについて説明したプロセスを使用して変換される。しかし、入力データを回収するためには、同じステップが受信コンピュータで逆にされる必要がある。即ち、出力データの最初の「ｍ」ビット・ブロックが逆方向変換を使用して変換され、出力データの２番目の「ｍ」ビット・ブロックが順方向変換を使用して変換される。含まれる変換のステップは、順序づけ、置換、及び非順序づけを含む。これらのステップは任意の順序、例えば、置換、非順序づけ、順序づけとして実行されてよい。しかし、注意すべきは、元のデータを回収するため、順方向変換端と逆方向変換端で同じプロセスに従わなければならないことである。全てのステップは、下記で詳細に説明される。本発明で説明される実施形態は、置換、非順序づけ、及び順序づけを使用する。
【００３０】
キーセットの変換４１０、４２０、４２５、及び入力データから出力データへの変換４０５、４１５、４３０を説明する流れ図が、図４に示される。最初のステップ４０５において、入力データの等価２進数が「ｎ」ビット・ブロックへ分割される。次のステップ４１０で、好ましい「ｎ」ビット・ブロックのサイズに基づいて、キーセットが作り出される。例えば、ビットごとの暗号化が望まれるならば、キーセットは２1、即ち、２に等しい行、即ち、行０及び行１を必要とする。データ又は情報は、少なくとも８ビットを使用して表されるから、キーセットの構造は２8、即ち２５６の行、即ち、行０から行２５５までを有し、また２つ又は３つの列を有するように作成される。２列アレイ及び３列アレイの構造は図３に示される。しかし、図に示された実施形態において、入力ブロックは３ビットであるように選択され、したがってキーセットは８つの行及び２つの列を有するように作成される。作成された最初のキーセットはデフォルトのキーセットと呼ばれ、計算端末ごとに一意のキーセットであってよい。
【００３１】
図５に示される例において、暗号化されるべき入力データは１００１０１である。一度入力データが「ｎ」ビット・ブロックへ分離又は分解されると、最初の「ｎ」ビット・ブロックが暗号化のために選択される。置換のプロセスは次のとおりである。図５に示される実施形態において、入力データの最初の「ｎ」ビット・ブロックが、その等価１０進数へ変換され、「ｎ」ビット・ブロックの等価１０進数と等しい行番号まで、キーセットのＲｅｆ１列５０５を全探索する。例えば、示された例において、暗号化されるべき入力データの最初の「ｎ」ビット・ブロックは１００である。入力データの「ｎ」ビット・ブロックの等価１０進数は４に等しい。キーセットは行番号４、即ち、Ｒｅｆ１列５０５の５番目の行まで全探索され、Ｒｅｆ１列の行番号４の値が選択される。図５で示されるように、Ｒｅｆ１の行番号４の数は００１である。入力データの「ｎ」ビット・ブロック、即ち、１００は、００１と置換される。００１は、出力データの「ｍ」ビット・ブロックである。このプロセスにおいて、入力データの最初の「ｎ」ビット・ブロックは、デフォルトのキーセットを使用して出力データの「ｍ」ビット・ブロックへ変換される。
【００３２】
「完全機密又は未知条件のシャノンの定理」によれば、暗号が破られないためには、必要なキーセットはメッセージごとに一意でなければならず、キーセットの長さはメッセージの長さよりも大きいか等しくなければならない。したがって、シャノンの理論に従って、キーセットは、本発明の１つの実施形態である単向プロセスを使用して、異なるキーセットへ変換される。変換されたキーセットは二次キーセットと呼ばれる。
【００３３】
非順序づけ及び順序づけのプロセスは、次のとおりである。本発明の１つの実施形態において、（（２n／２）−２）の値が計算される。ここで、「ｎ」は入力データの「ｎ」ビット・ブロックのサイズを表す。図５で示された例において、値は（（２3／２）−２）＝２である。他の実施形態において、「（（２n／２）−２）」は動的な数、例えば、入力データの先行する「ｎ」ビット・ブロック、又は出力データの「ｍ」ビット・ブロック、又は入力データの「ｎ」ビット・ブロックと出力データの「ｍ」ビット・ブロックとの排他的ＯＲの等価１０進数によって置換されてよい。これは、より動的なプロセスを提供する。なぜなら、入力データの「ｎ」ビット・ブロック及び出力データの「ｍ」ビット・ブロックの等価１０進数は、各々の変換の後に変化できるからである。一次キーセットのＥ−Ｖａｌ列５１０は行番号２まで全探索される。このようにして、図５で示されるように、行番号２、即ち、３番目の行の値が取られる。図５によれば、１２８のこの値は除数になり、一時的な列５１５の中に記憶される。Ｒｅｆ１列５０５の各々の行に記憶された数は、Ｅ−Ｖａｌ列５１０の対応する行の中に記憶された数へ加えられ、合計は被除数と呼ばれる。例えば、Ｒｅｆ１列の行番号２の数、即ち、３は、Ｅ−Ｖａｌ列の行番号２に記憶された数、即ち、１２８へ加えられ、被除数と呼ばれる合計が計算される。本発明の１つの実施形態において、被除数と除数との間のモデュラス、即ち、被除数ｍｏｄ除数が計算される。上記で示された例では、（３＋１２８）ｍｏｄ１２８＝３となり、Ｅ−Ｖａｌ列５２５の各々の行の数は、この数、即ち、被除数ｍｏｄ除数で置換される。３の最終結果は、Ｅ−Ｖａｌ列５２５の行番号２の数と置き換わる。この変換の間、Ｒｅｆ１列５２０は不変である。他の実施形態において、排他的ＯＲ又はＸＯＲ関数又は任意の他の類似の非線形関数が使用されてよい。非線形関数は、算術及び論理操作、例えば、足し算、掛け算、又は排他的ＯＲ関数の１つ又は組み合わせであってよい。例えば、除数ＸＯＲ被除数を計算することによって取得された数は、Ｅ−Ｖａｌ列５２５の各々の行に記憶された数と置き換わるように使用されてよい。このプロセスは、非順序づけ操作と呼ばれる。一度Ｅ−Ｖａｌ列５２５の各々の行の数が置換されると、全体のＥ−Ｖａｌ列５３５が、任意の並べ替えアルゴリズムを使用してソートされる。並べ替えは整頓の１つの方式を表し、プロセスはＥ−Ｖａｌ列に順序づけを生成する。このプロセスは順序づけ操作と呼ばれる。順序づけの他の手段も使用されてよい。好ましい実施形態において、列は降順又は昇順にソートされる。この並べ替え操作を実行している間、Ｒｅｆ１列５３０もＥ−Ｖａｌ列５３５に基づいてソートされる。これは、Ｅ−Ｖａｌ列５２５の中の各々の数が移動する位置に従って、対応するＲｅｆ１列５２０の数も移動されることを意味する。例えば、図５において、Ｅ−Ｖａｌ列５２５は降順にソートされ、したがってＥ−Ｖａｌ列５２５の行番号２に記憶された数は行番号１まで移動する。このプロセスにおいて、Ｒｅｆ１列５２０の行番号２に記憶された数、即ち、５も、最初の行へ移動する。このようにして、非線形並べ替えがＲｅｆ１列の上で実行される。当業者は、Ｒｅｆ１列を非線形的又は数学操作を使用してソートできる方法が存在すること、及び非線形並べ替えのこれらの他の形式が本発明の範囲の中にあることを理解するであろう。これらの変換を実行することによって形成された新しいキーセットは一意のキーセットであり、二次キーセット５３０及び５３５と呼ばれる。所与のキーセットから新しいキーセットへの変換のこのプロセスは、真に単向である。
【００３４】
この二次キーセットは、入力データの次の「ｎ」ビット・ブロックのために一次キーセットとして使用される。本発明において、本発明の実施形態に従って、入力データの２番目の「ｎ」ビット・ブロックは１０１である。入力データの「ｎ」ビット・ブロックは、その等価１０進数へ変換され、キーセットのＲｅｆ１は、等価１０進数に対応する行番号まで全探索される。例えば、示された例において、暗号化されるべき入力データの２番目の「ｎ」ビット・ブロックは１０１である。入力データの「ｎ」ビット・ブロックの等価１０進数は５に等しい。キーセットは、Ｒｅｆ１列５３０の行番号５、即ち、５とマークされた行番号へ全探索され、Ｒｅｆ１の行番号５の値が選択される。図５で示されるように、Ｒｅｆ１  ５３０の行番号５の数は１１１である。入力データの「ｎ」ビット・ブロック、即ち、１０１は、１１１で置換される。１１１は出力データの「ｍ」ビット・ブロックである。このプロセスにおいて、入力データの２番目の「ｎ」ビット・ブロックは、一次キーセットを使用して暗号化される。
【００３５】
キーセットは、前述した操作を使用して新しい二次キーセットへ再び変換される。このキーセットは、一次キーセットとして再び使用され、入力データの次の「ｎ」ビット・ブロックが暗号化される。このプロセスは、入力データの全体が出力データへ変換されるまで継続する。入力データの最後のブロックの中のビットの数が、入力データの前の「ｎ」ビット・ブロックのサイズよりも小さい場合、ゼロがビットの前に付加され、残りのビットを形成する。例えば、図５で示される例において、入力データの「ｎ」ビット・ブロックのサイズは３ビットである。しかし、入力データの最後の「ｎ」ビット・ブロックが２ビットだけであれば、ビットの前にゼロが付加され、欠けているビットを形成する。
【００３６】
ここで、出力データは、ユーザ情報を予防又は防護するか、安全な方法で他の計算端末へ送信するため、計算端末２０５に記憶されてよい。データを不法に取得しようと試みる盗聴者又は第三者は、出力データのみを受け取る。しかし、キーセットがないので、それらの者は元の入力データを計算及び回収することはできない。データが送信される場合、受信コンピュータ端末も同じキーセットを有しなければならない。このキーセットは、データを暗号化し、それを解読するために使用される。
【００３７】
図６は、本発明の実施形態に従って、出力データの「ｍ」ビット・ブロックから入力データの「ｎ」ビット・ブロックへの変換６０５、６１５、６３０、及び一次キーセットを二次キーセットへ変換する変換実行６１０、６２０、６２５のための逆方向変換プロセスの流れ図を示す。キーセットの変換プロセス、及び出力データの「ｍ」ビット・ブロックから入力データの「ｎ」ビット・ブロックへの変換の例は、図７に示される。１つの実施形態において、出力データの「ｍ」ビット・ブロックは、トランシーバ及び通信路１１０を介して送信される。受信コンピュータも、順方向変換プロセスで使用されたデフォルトのキーセットと同じものを備えている。
【００３８】
図７で示される例において、変換されるべき出力データは００１１１１である。一度出力データが、出力データの「ｍ」ビット・ブロックへ分離されると、出力データの「ｍ」ビット・ブロックが逆方向変換のために選択される。ここで出力データの「ｍ」ビット・ブロックは、順方向変換プロセスで使用された入力データの「ｎ」ビット・ブロックと同じサイズである。例えば、順方向変換プロセスにおける入力データの「ｎ」ビット・ブロックのサイズは３であり、したがって逆方向変換プロセスにおける出力データの「ｍ」ビット・ブロックのサイズも３である。
【００３９】
「ｍ」ビット・ブロック、即ち、００１は、Ｒｅｆ１列７０５の中で探索される。例えば、図７において、「ｍ」ビット・ブロック００１は行番号４にある。４の等価２進数、即ち、１００が、出力データの最初の「ｍ」ビット・ブロックに対応する入力データの「ｎ」ビット・ブロックとして返却される。この最初のステップは、出力データの最初の「ｍ」ビット・ブロックについて入力データの「ｎ」ビット・ブロックを決定する。
【００４０】
出力データの次の「ｍ」ビット・ブロックが解読又は変換される前に、順方向変換プロセスの間にキーセット上で実行された同じ変換が再び実行される。変換のプロセスにおいて、本発明の１つの実施形態では、（（２n／２）−２）の値が計算される。ここで、「ｎ」は入力データの「ｎ」ビット・ブロックのサイズを表す。図７で示された例において、値は（（２3／２）−２）＝２である。他の実施形態において、「（（２ｎ／２）−２）」は任意の動的な数、例えば、入力データの先行する「ｎ」ビット・ブロックの等価１０進数、又は出力データの「ｍ」ビット・ブロック、又は入力データの「ｎ」ビット・ブロックと出力データの「ｍ」ビット・ブロックとの間の排他的ＯＲによって置換されてよい。これは、より動的なプロセスを提供する。なぜなら、入力データの「ｎ」ビット・ブロック及び出力データの「ｍ」ビット・ブロックの等価１０進数は、各々の変換の後に変化できるからである。一次キーセットのＥ−Ｖａｌ列７１０は、行番号（（２3／２）−２）、即ち、行番号２へ全探索される。このようにして、図７で示される行番号２の値が取られ、一時的な列７１５の中に記憶される。図７によれば、この値１２８は除数となる。Ｒｅｆ１  ７０５の各々の行に記憶された数は、Ｅ−Ｖａｌ列７１０の対応する行に記憶された数へ加えられ、合計は被除数と呼ばれる。例えば、Ｒｅｆ１列７０５の行番号２の数、即ち、３は、Ｅ−Ｖａｌ列７１０の行番号２に記憶された数、即ち、１２８へ加えられ、被除数と呼ばれる合計が計算される。本発明の１つの実施形態において、被除数と除数との間のモデュラス、即ち、被除数ｍｏｄ除数が計算される。これは、上記で示された例において、（３＋１２８）ｍｏｄ１２８であり、これは３である。Ｅ−Ｖａｌ列７２５の各々の行にある数は、この数、即ち、被除数ｍｏｄ除数で置換される。３の最終結果は、Ｅ−Ｖａｌ列７２５の行番号２の数と置き換わる。Ｒｅｆ１列７２０は、このステップの間、不変である。他の実施形態では、排他的ＯＲ又はＸＯＲ関数又は任意の他の類似の関数も使用されてよい。非線形関数は、算術及び論理操作、例えば、足し算、掛け算、又は排他的ＯＲ関数の１つ又は組み合わせであってよい。例えば、除数ＸＯＲ被除数を計算することによって取得される数が、Ｅ−Ｖａｌ列７２５の各々の行に記憶された数と置き換わるために使用されてよい。このプロセスは非順序づけと呼ばれる。非順序づけ操作は、順方向変換で実行された操作と同じである。一度Ｅ−Ｖａｌ列の各々の行にある数が置換されると、任意の並べ替えアルゴリズムを使用して、全体のＥ−Ｖａｌ列７２５がソートされる。並べ替えは整頓の１つの方式を表し、プロセスはＥ−Ｖａｌ列で順序づけを生成する。順序づけの他の手段も使用可能である。好ましい実施形態において、列は降順又は昇順にソートされる。好ましい実施形態において、列は降順又は昇順にソートされる。順方向変換で実行された操作と同じ順序づけ操作が実行されるべきである。この並べ替え操作を実行している間、Ｒｅｆ１列７２０もＥ−Ｖａｌ列７２５に基づいてソートされる。これは、Ｅ−Ｖａｌ位置７２５の中の各々の数が移動する位置へ、対応するＲｅｆ１  ７２０の数も移��されることを意味する。例えば、図７において、Ｅ−Ｖａｌ列７３５は降順にソートされ、したがってＥ−Ｖａｌ列７３５の行番号２に記憶された数は行番号６へ移動する。このプロセスにおいて、Ｒｅｆ１  ７２０に記憶された数、即ち、３も、行番号６へ移動する。このようにして、非線形並べ替えがＲｅｆ１  ７３０で実行される。当業者は、Ｒｅｆ１列を非線形的にソートする方法が存在すること、及び非線形整頓操作のこれらの他の形式が本発明の範囲の中にあることを理解するであろう。これらの変換を実行することによって形成された新しいキーセットは、一意のキーセットであり、二次キーセットと呼ばれる。
【００４１】
この二次キーセットは、出力データの次の「ｍ」ビット・ブロックのために一次キーセットとして使用される。本発明では、本発明の実施形態に従って、出力データの２番目の「ｍ」ビット・ブロックは１１１である。出力データのこの「ｍ」ビット・ブロックの探索は、Ｒｅｆ１  ７３０で実行される。例えば、図７において、出力データ１１１の「ｍ」ビット・ブロックは行番号５にある。５の等価２進数、即ち、１０１は、入力データの「ｎ」ビット・ブロックである。このようにして、一度このプロセスが完了すると、００１１１１の出力データが、順方向変換プロセスで使用された同じアルゴリズム及びキーセットを使用する受信コンピュータで、１００１０１の元の入力データへ変換される。これは、図５及び図７で示されるように、インディケータ値を変化させて、暗号化及び解読プロセスの双方で同じプロセスを使用するメカニズムを示す。
【００４２】
キーセットは、前述した操作を使用して新しい二次キーセットへ再び変換され、このキーセットは、出力データの次の「ｍ」ビット・ブロックを暗号化するための一次キーセットとして再び使用される。このプロセスは、出力データの全体が入力データへ変換されて元の情報が回収されるまで継続する。出力データの最後のブロックにおけるビットの数が、出力データの前の「ｍ」ビット・ブロックのサイズよりも小さい場合、ビットの前にゼロが付加されて残りのビットを形成する。
【００４３】
図８〜図１１は、本発明の実施形態のスクリーンショットを示し、計算変換モジュールの実行を示す。図８の最初のスクリーンショット８０５は、順方向変換又は暗号化プロセスの開始を示す。図９は、初期条件の設定を示す。スクリーンショットに示されたパラメータ９０５は、順方向変換プロセスへ更なる複雑性を付加するために設定可能である。付加されることのできる複雑性の幾つかの例は、所定数の乱数を入力データへ加えること、入力データの各々の「ｎ」ビット・ブロックについて複数回の反復を実行することなどを含む。前述した条件に基づいて、デフォルトのキーセット又はユーザ定義キーセットのいずれかを使用することができる。図１０で示されるように、計算変換モジュールは入力データ文字を受け取る。図１０によれば、順方向変換プロセスの働きをテストするため、同じ文字の文字列、即ち、図１０の「ｇ」が入力データ１００５として入力され、計算変換モジュールが、図５で説明された順方向変換を実行し、図１１の出力データ１１０５の出力を生成する。入力文字は同じ、即ち、反復するパターンであるが、出力データである出力は、文字の無意味又は無作為の文字列である。これは、各々の変換に新しいキーセットが使用されることを示す。次に、出力データは受信コンピュータへ送られる。
【００４４】
図１２〜図１５は、本発明の実施形態のスクリーンショットを示し、逆方向変換プロセスにおける計算変換モジュールの実行を示す。図１２は、逆方向変換又は解読プロセス１２０５の開始を示す。図１３は、初期条件１３０５の設定を示す。指定される初期条件は、順方向変換プロセスで使用された条件と同じでなければならず、キーセットも同じでなければならない。
【００４５】
複雑性を増加するため、設定及び修正できる幾つかの初期条件が存在する。しかし、受信コンピュータも、プロセスを逆方向にして元の情報を回復するために、初期条件を知る必要があることに注意すべきである。本発明の実施形態に従って、図１３で示される初期条件の例はユーザ特定パスワードである。このパスワードは、前述した暗号化手順のように、システム・デフォルト組み込みキーセットを一次キーセットとして使用して暗号化される。ユーザ特定パスワードを暗号化した後に生成される後続の二次キーセットは、出力データの「ｍ」ビット・ブロックへ変換されるべき入力データの「ｎ」ビット・ブロックを暗号化するための一次キーセットとして使用される。パスワードは、ユーザ定義パスワードであるか、特定のオプションを選択することによって計算変換システムを実行するため、システムの長期メモリに記憶された任意のファイルから取られてよい。暗号化の間の入力データの最初のブロックのキーセット、及び解読の間の出力データの最初のブロックのキーセットは、同じでなければならない。このキーセットを取得するため、デフォルトのキーセットを使用するユーザ特定パスワードの変換が、暗号化及び解読の双方でインディケータ値を同じくして実行される。
【００４６】
他の実施形態において、第三者の乱数発生器を使用するか、本発明で説明されたプロセスを使用して、ユーザ定義数の乱数を生成して入力データへ加えることができる。パスワードは、システム・デフォルトキーセットを一次キーセットとして使用して暗号化されてよい。これは、変換された出力データの複雑性を強化する。パスワードを暗号化し、実際の一次キーを生成することを目的とする計算変換システムの反復回数も変更可能である。キーセット上の変換の複数反復は、入力データの各々のブロックが出力データのブロックへ変換される前に実行可能である。パスワード上で実行された計算変換の反復回数は、入力データの「ｎ」ビット・ブロックを暗号化する実際の一次キーとして潜在的に使用可能である。指定された反復回数の終わりに受け取られた出力データの「ｍ」ビット・ブロックは、受信機へ送られる最終出力データとして使用可能である。
【００４７】
他の実施形態において、一次キーセットから二次キーセットへの変換は、入れ替えメカニズムを使用して行ってよい。即ち、動的データ、即ち、入力データの先行する「ｎ」ビット・ブロック、又は出力データ値の「ｍ」ビット・ブロック、又はこれらの双方、又は暗号化及び解読のプロセスの間に取得可能な動的値に基づいて、アレイの第１の列の数を相互の間で入れ替え、即ち、交換する。３列構造を有するキーセットの場合、入れ替えメカニズムは、双方の列、即ち、「Ｒｅｆ１」及び「Ｒｅｆ２」に適用可能である。このプロセスは、入力データから出力データへの変換へ複雑性を追加する。
【００４８】
システムの他の実施形態において、ユーザ特定パスワードの上に計算変換方式を実行してユーザ特定パスワードを更に複雑にするため、ユーザは、無作為のシステム・ファイル、例えば、実行可能ファイル又は無作為のデータ・ファイル、又はシステムの長期メモリに記憶された任意のファイルからのデータをパスワードへ付加することができる。データの具体的なブロックは、ロケーション、即ち、ユーザによって指定される開始位置及び終了位置を指定することによって、無作為のシステム・ファイルから取られてよい。他の実施形態において、ユーザが行動レベル数を指定してよく、ユーザによって指定された行動レベル数の回数だけ、計算変換がパスワードの上で実行されてよい。このプロセスは、一次システム・デフォルトキーから、ユーザによって指定された行動レベル数と等しい数のパスワード特定キーセットを生成する。次に、入力データの最初の「ｎ」ビット・ブロックが、ユーザ特定パスワードへの計算変換方式操作から取得された最初の二次キーを使用して暗号化され、次に、この操作によって取得された、いわゆる出力データの「ｍ」ビット・ブロックが、ユーザ特定パスワードへの後続の計算変換方式操作から取得された２番目の二次キーを使用して暗号化される。このプロセスは、ユーザによって指定された行動レベル数と同じ回数だけ反復され、これら全ての反復の後に取得された最終出力データが受信者へ送られる。ユーザは、実行されて複雑性を変換プロセスへ付加する前述した１つ又は複数の初期条件を選択し、入力データ上の順方向変換を破られないようにすることができる。しかし、変換で指定された条件は、変換プロセスを逆方向にして元の入力データ情報を取得するため、受信コンピュータでもエミュレートされなければならない。
【００４９】
他の実施形態において、入力データの各々の「ｎ」ビット・ブロックの計算変換を実行した後、所定数のブロックを変換することができる。例えば、デフォルトのキーセットを使用してパスワードの上で実行された変換を保存することができ、この変換されたパスワードは新しい変換パスワードへ再び変換され、入力データの最初の「ｎ」ビット・ブロックが変換された後、前の変換パスワードに重ね書きしてキーセットを新しいキーセットへ変更する。パスワードを新しい変換パスワードへ変換し、それによってキーセットを変更するこのプロセスは、入力データの各々の「ｎ」ビット・ブロックの変換の後に反復されてよい。受信コンピュータも、パスワードのコピーを有し、出力データの「ｍ」ビット・ブロック変換とキーセットを変更するパスワード変換とを交互に行う同じプロセスを使用して、元の入力データを回収しなければならない。
【００５０】
他の実施形態において、入力データは、出力データのユーザ所望サイズへ拡張可能である。例えば、出力データの８ビット・ブロックは、その等価１０進数へ変換される。等価１０進数の各々の数字は、更に、８ビット・フォーマットで表され、それによって出力データの各々の８ビット・ブロックのサイズが３倍に増加する。増加した出力データは変換プロセスの入力データとして使用される。出力データの所望サイズを生成するため、所定の操作が反復ごとに使用され、元の入力データを回収するため、受信端で所定の操作が逆方向にされる。これは、各々の８ビット・ブロックをその等価１０進数へ変換し、取得された全体の数を出力データの８ビット・ブロックとして表すことによって行われる。このプロセスは、変換プロセスの複雑性を増加させ、送信された情報を盗聴者が取得することを非常に困難にする。
【００５１】
本発明の他の実施形態において、変換プロセスが順方向変換か逆方向変換かを識別するため、定数が「０」か「１」の値を割り当てられる。定数の値に依存して、システムは、実行されるべき変換を順方向変換又は逆方向変換として認識する。
【００５２】
ユーザ定義キーセットが使用される場合、個人的に直接会うことによって、又は他の暗号化プロセス、例えば、非対称暗号化によって、キーセットを交換する必要がある。図１４で示されるように、計算変換モジュールは出力データ１４０５を受け取り、計算変換モジュールは、図７で説明されるような逆方向変換を実行し、図１５のような入力データ１５０５を生成する。出力データは、順方向変換プロセスで使用された元の入力データと同じものである。
【００５３】
計算変換モジュールは真の単向プロセスを使用し、実施形態のように順方向変換及び逆方向変換プロセスを実行する。盗聴者は、出力データ及び二次キーセットが知られていても、入力データ、又は入力データの最初のブロックの一次キーセットを取得することはできない。１つの実施形態において、利用可能な技術として既に存在する非対称暗号化技術、例えば、ＲＳＡアルゴリズムを使用するか、個人的にキーセットを直接交換することによって、一次キーセットを受信コンピュータへ転送することができる。
【００５４】
計算変換モジュールの幾つかの他の応用が存在する。様々な他の応用を示すモジュールの実施形態の幾つかが、下記で詳細に説明される。
【００５５】
例えば、本発明の他の実施形態では、順方向変換及び逆方向変換の実施形態で使用されたような単向プロセスを使用して、乱数である出力データを生成するために計算変換モジュールが使用される。乱数を生成するために使用される計算変換モジュールと、順方向変換及び逆方向変換プロセスで使用される計算変換モジュールとの間の差異は、順方向変換及び逆方向変換プロセスで使用される計算変換モジュールが可逆タイプであるのに対して、乱数生成で使用される計算変換モジュールが非可逆タイプであることである。
【００５６】
この実施形態は、前の実施形態では一次キーセットと呼ばれたデフォルトのキーセットを使用し、計算変換を実行している計算装置の動的パラメータに非可逆計算変換を実行する。システム・パラメータは動的パラメータであり、動的パラメータの幾つかは散発的及び或る程度周期的に変化する。これは、乱数の生成を真に無作為にすることを助ける。システム・パラメータは、例えば、現在の時間を秒で示した数値、システム上の日付、プロセッサのクロック・スピード、及び他の類似のパラメータである。
【００５７】
乱数を生成するプロセスが開始される度に、システム・パラメータの組み合わせが値を生成し、この値は計算変換モジュールへの入力データとして使用され、動的パラメータに基づいて複数回の反復が実行される。例えば、特定の時点で全てのシステム・パラメータを相互に加えて、入力データを取得することができる。入力データのサイズ、即ち、ビットの数に基づいて、乱数が生成される。
【００５８】
キーセットを使用して入力データから乱数を生成するプロセスは、図５で示される。最初のステップにおいて、入力データの等価２進数が、キーセットの設計に基づいて入力データの「ｎ」ビット・ブロックへ分解される。キーセットは、好ましい入力データの「ｎ」ビット・ブロックのサイズに基づいて作成される。例えば、乱数がビットごとに作成される必要があれば、キーセットは２1、即ち、２つの行を必要とする。しかし、図で示される実施形態において、「ｎ」ビット・ブロックは３ビットであるように選択され、このようにしてキーセットは８行を有するように作成される。作成された最初のキーセットはデフォルトキーセットと呼ばれ、計算端末ごとに異なる一意のキーセットであってよい。
【００５９】
一度入力データが、入力データの「ｎ」ビット・ブロックとして分割されると、入力データの最初の「ｎ」ビット・ブロックが選択される。図５で示された実施形態において、入力データの最初の「ｎ」ビット・ブロックは、その等価１０進数へ変換され、キーセットのＲｅｆ１は、等価１０進数に対応する行番号へ全探索される。例えば、示された例において、入力データの最初の「ｎ」ビット・ブロックは１００である。部分的入力ブロックの等価１０進数は４に等しい。キーセットはＲｅｆ１列の行番号４へ全探索され、Ｒｅｆ１列５０５の行番号４の値が選択される。図５で示されるように、Ｒｅｆ１の行番号４の数は００１である。部分的入力ブロック、即ち、１００は００１で置換される。ここで、００１は出力データの中間「ｍ」ビット・ブロックを表す。次のステップは、入力データの「ｎ」ビット・ブロックとキーセットの行に存在する値との間のモデュラス操作を実行することを含む。例えば、上記の場合、１００ｍｏｄ００１である。結果、即ち、０又は０００が取得され、一時的な値として記憶される。次のステップでは、乱数発生器がＲｅｆ１列の行番号０へ全探索し、一時的な値と出力データの中間「ｍ」ビット・ブロックとの間で排他的ＯＲ又はＸＯＲ操作、即ち、０００  ＸＯＲ  １１１を実行し０００を生じる。これは最終出力データである。このプロセスは、入力データのブロック全体が出力データの無作為ブロックへ変換されるまで継続する。出力データは、乱数又は無作為データと呼ばれ、入力データとしてシステム・パラメータの組み合わせに基づいて生成される。
【００６０】
他の応用において、本発明はハッシュ・コード発生器として使用される。その場合、前の実施形態で説明された方法と同じように、計算変換モジュールを入力データへ適用することができ、取得された最終出力データは、ハッシュ・コードとして働くことができる。本発明の１つの実施形態として、ハッシュ・コードを生成する必要がある内容は、入力データの「ｎ」ビット・ブロックへ変換され、前述したプロセスと同じプロセスに従って、出力データの「ｍ」ビット・ブロックが生成される。出力データの「ｍ」ビット・ブロックは、ビット文字列が偶数の長さの場合、２つの等しい半分へ分割され、入力データが奇数個のブロックから作られていれば、所定のブロックが付加される。所定数のビットに達するまで、２つの半分の間で排他的ＯＲ又はＸＯＲ操作が実行される。各々のＸＯＲ操作の後でブロックを２つの等しい半分へ分割するので、ブロックの数は縮小され、したがって所定値が設定され、このプロセスはそこで終了する。最終出力データは、入力データに対するハッシュ・コードである。
【００６１】
他の実施形態において、ハッシュ・コードを生成する必要がある内容は、ブロックの入力データへ変換され、前述したプロセスと同じプロセスが取られて、出力データの「ｍ」ビット・ブロックが生成される。しかし、この実施形態の差異は、排他的ＯＲ操作の結果が中間出力として記憶され、計算変換モジュールを使用して出力データへ変換されることである。次に、ビット文字列が偶数の長さの場合、出力データの「ｍ」ビット・ブロックが２つの等しい半分へ分割される。入力データが奇数個のビットから作られていれば、所定のブロックが付加される。所定数のビットに達するまで、排他的ＯＲ又はＸＯＲ操作が２つの半分の間で実行される。排他的ＯＲ操作の結果は中間出力を生じる。中間出力は変換の入力データとして使用可能である。次に、再び２つの等しい半分へ分割され、出力データの上で排他的ＯＲ操作が実行される。各々の変換の後にビットを２つの等しい半分へ分割し、計算変換モジュールを使用してブロックを出力データへ変換する各々の段階で、ビットの数は縮小し、したがって所定値が設定される。反復プロセスはそこで終了する。出力データは、入力データに対するハッシュ・コードである。このプロセスは前の実施形態よりも遅いが、前の実施形態と比較して、一意のハッシュ・コードを生成する正確度は高い。
【図面の簡単な説明】
【００６２】
【図１】通信路のブロック図を示す。
【図２】本発明の実施形態に従ったシステムのアーキテクチャのブロック図を示す。
【図３】キーセットの構造の実施形態のブロック図を示す。
【図４】本発明の実施形態に従って順方向変換で実行されるステップの流れ図を示す。
【図５】本発明の実施形態に従って、キーセットの上で実行される順方向変換の段階、及び入力データを出力データへ変換するプロセスのブロック図を示す。
【図６】本発明の実施形態に従って逆方向変換の間に実行されるステップの流れ図を示す。
【図７】本発明の実施形態に従って、キーセットの上で実行される逆方向変換の段階、及び出力データを入力データへ変換するプロセスのブロック図を示す。
【図８】本発明の１つの実施形態に従った順方向変換プロセスにおける計算変換プロセス・モジュールの開始スクリーンショットを示す。
【図９】本発明の１つの実施形態に従った順方向変換プロセスにおける計算変換プロセス・モジュールの初期条件スクリーンショットを示す。
【図１０】本発明の１つの実施形態に従った順方向変換プロセスの間に計算変換プロセス・モジュールへ入力される入力データの内容のスクリーンショットを示す。
【図１１】本発明の１つの実施形態に従った順方向変換プロセスの間に計算変換プロセスから出力される出力データの内容のスクリーンショットを示す。
【図１２】本発明の１つの実施形態に従った逆方向変換プロセスにおける計算変換プロセス・モジュールの開始スクリーンショットを示す。
【図１３】本発明の１つの実施形態に従った逆方向変換プロセスにおける計算変換プロセス・モジュールの初期条件スクリーンショットを示す。
【図１４】本発明の１つの実施形態に従った逆方向変換プロセスの間に計算変換プロセス・モジュールへ入力される出力データの内容のスクリーンショットを示す。
【図１５】本発明の１つの実施形態に従った逆方向変換プロセスの間に計算変換プロセス・モジュールから出力される入力データの内容のスクリーンショットを示す。
【図１】
2008513811.tif 000003
【図２】
2008513811.tif 000004
【図３】
2008513811.tif 000005
【図４】
2008513811.tif 000006
【図５】
2008513811.tif 000007
【図６】
2008513811.tif 000008
【図７】
2008513811.tif 000009
【図８】
2008513811.tif 000010
【図９】
2008513811.tif 000011
【図１０】
2008513811.tif 000012
【図１１】
2008513811.tif 000013
【図１２】
2008513811.tif 000014
【図１３】
2008513811.tif 000015
【図１４】
2008513811.tif 000016
【図１５】
2008513811.tif 000017
【国際調査報告】
2008513811.tif 000018
2008513811.tif 000019