(57)【要約】【課題】  暗号化及び復号化装置及び方法を提供する。【解決手段】  データを暗合化／復号化する装置及び方法は、（ａ）各々がデータ値を暗合化／復号化値へ変換でき、データ値はデータのユニットに対応し、暗合化／復号化値は暗合化／復号化データのユニットに対応する、第１の複数の暗合テーブル、（ｂ）各々があるパターンを持つ一連の値を含む、第２の複数の選択トラック、（ｃ）第２の複数の選択トラックに接続されて、一連の組合された値を生成するために選択トラックの対応した値を組合わせるように構成されたトラック・ミキサー、（ｄ）第１の複数の暗合テーブル及びトラック・ミキサーに接続されて、一連の組合された値中の組合された値に従いそのユニットに対して選択された暗号テーブルを使用してデータの各ユニットを暗合化／復号化データのユニットへ変換するように構成された暗合化／復号化モジュール、を備える。
2005534965.tif 000002
【特許請求の範囲】
【請求項１】
データを暗合化／復号化するための装置であって、
第１の複数の暗合テーブルであって、暗合テーブルの各々がデータ値を暗合化／復号化値へ変換でき、データ値はデータのユニットに対応し、暗合化／復号化値は暗合化／復号化データのユニットに対応している、暗合テーブルと、
第２の複数の選択トラックであって、選択トラックの各々があるパターンを持つ一連の値を含む、選択トラックと、
前記第２の複数の選択トラックに接続されて、一連の組合された値を生成するために選択トラックの対応した値を組合わせるように構成されたトラック・ミキサーと、
前記第１の複数の暗合テーブル及び前記トラック・ミキサーに接続されて、一連の組合された値中の組合された値に従ってそのユニットに対して選択された暗号テーブルを使用してデータの各ユニットを暗合化／復号化データのユニットへ変換するように構成された暗合化／復号化モジュールと、
を備えた前記装置。
【請求項２】
複数のソース・ファイルから第２の複数の選択トラックを生成するように構成された選択トラック生成器を、
さらに備えた請求項１に記載の装置。
【請求項３】
ユニットのためのデータ長を選択するように構成されたデータ・ステップ・サイズ選択器を、
さらに備えた請求項１に記載の装置。
【請求項４】
リアルタイムで送信されるデータのストリームを暗合化／復号化するために、前記テーブル選択器及び前記暗合化／復号化モジュールの操作が同期化されている請求項１に記載の装置。
【請求項５】
前記第１の複数の暗合テーブルが、
元のデータ値を暗合化値に変換するように構成された暗合テーブルを含む第１テーブル・バンクと、
暗合化値を元のデータ値へ変換するように構成された暗合テーブルを含む第２テーブル・バンクと、
を含む請求項１に記載の装置。
【請求項６】
前記第１の複数の暗合テーブルが、
データ値を暗合化／復号化値に変換するように構成された第１暗合テーブルと、
データ値を暗合化／復号化値へ変換するように構成された第２暗合テーブルであって、第２暗合テーブルの各々は対応する第１暗合テーブルにより暗合化／復号化された暗合化／復号化値を元のデータ値へ逆変換することができ、第１暗合テーブルの各々は対応する第２暗合テーブルにより暗合化／復号化された暗合化／復号化値を元のデータ値へ逆変換することができる、第２暗合テーブルと、
を含む請求項１に記載の装置。
【請求項７】
第１の複数の暗合テーブルの各々がテーブル位置アドレスと関連付けられていて、そして第２暗合テーブルが対応する第１暗合テーブルのそれより所定量のオフセットされたテーブル位置アドレスを持つ請求項６に記載の装置。
【請求項８】
前記暗合化／復号化モジュールが、
前記第１の複数の暗合テーブル及び前記トラック・ミキサーに接続されたテーブル選択器であって、前記テーブル選択器が一連の組合わせられた値をテーブル位置アドレスと関連付けるように構成されている、テーブル選択器を、
含み、前記テーブル選択器がさらに、
もし、データが暗合化又は送信される場合、一連の組合わせられた値を使用して暗合テーブルを選択し、そして
もし、データが復号化又は受信される場合、一連の組合わせられた値を所定のオフセットと共に使用して暗合テーブルを選択する、
ように構成されている請求項６に記載の装置。
【請求項９】
第１暗合テーブルの各々と対応する第２暗合テーブルとの間に一対一の関連性を提供するルックアップ・テーブルを、
さらに備える請求項６に記載の装置。
【請求項１０】
暗合テーブルが、可能なデータ値の各々を元のデータ値とは異なる可能なデータ値の１つである対応する暗合化／復号化値へ変換することができる請求項１に記載の装置。
【請求項１１】
前記選択トラック生成器が、
複数のソース・ファイルを記憶するメモリと、
前記メモリに接続されて、選択されたソース・ファイルから一連の値を生成するように構成されたトラック・パターン・マネージャと、
を含む請求項１に記載の装置。
【請求項１２】
前記トラック・パターン・マネージャはさらに、設定パラメータを使用して各々の一連の値を修正するように構成されている請求項１１に記載の装置。
【請求項１３】
前記トラック・パターン・マネージャはさらに、各トラックの値を他のトラックと組合わせるために使用される数学的演算を選択するように構成されている請求項１１に記載の装置。
【請求項１４】
前記装置に独特な識別コードと、
前記第１の複数の暗合テーブル及び前記第２の複数の選択トラックを識別コードに関連した暗合化／復号化ファイルとして含む第１データベース・メモリと、
をさらに備えた請求項１に記載の装置。
【請求項１５】
前記第１データベース・メモリはさらに暗合化／復号化ファイルとして、
各々の前記選択トラックの値を修正することができ、そして各選択トラックを他のトラックへ組合わせる方法を決定する設定パラメータの組を、
含む請求項１４に記載の装置。
【請求項１６】
第１データベース・メモリ上の暗合化／復号化ファイルとは異なる少なくとも１つの第２暗合化／復号化ファイルを記憶するように構成された第２データベース・メモリを、
さらに備える請求項１４に記載の装置。
【請求項１７】
第１メモリ上の暗合化／復号化ファイルは、送信のために第２暗合化／復号化ファイルを暗合化し、又は、暗合化された第２暗合化／復号化ファイルを復号化するように構成されている請求項１６に記載の装置。
【請求項１８】
選択トラックの各々は、そのトラックのあるパターンが繰返されるキー長を持つ請求項１に記載の装置。
【請求項１９】
選択トラックのキー長は、別の選択トラックのキー長と異なる請求項１８に記載の装置。
【請求項２０】
どのキー長も、別のキー長に２nを掛けることにより、又は、別のキー長を２nで割ることにより得られない、但し、ｎは整数、請求項１９に記載の装置。
【請求項２１】
キー長間の差が、キー長よりも実質的に小さい請求項１８に記載の装置。
【請求項２２】
元のデータを暗合化／復号化データへ暗合化／復号化するための方法であって、
各々がデータ値を暗合化／復号化値へ変換でき、データ値はデータのユニットに対応し、暗合化／復号化値は暗合化／復号化データのユニットに対応している、第１の複数の暗合テーブルを提供し、
各々があるパターンを持つ一連の値を含む、第２の複数の選択トラックを提供し、
一連の組合された値を生成するために選択トラックの対応する値を組合わせ、
一連の組合された値中の組合された値に従ってデータの各ユニットに対して暗号テーブルを選択し、
そのユニットに対して選択された暗号テーブルを使用して、データの各ユニットを暗合化／復号化データのユニットへ変換する、
ことを含む前記方法。
【請求項２３】
データベース・メモリ内に記憶されているソース・ファイルの中から第２の複数のソース・ファイルを選択し、
選択されたソース・ファイルの各々から一連の値を生成する、
ことをさらに含む請求項２２に記載の方法。
【請求項２４】
設定パラメータを使用して一連の値の各々を修正する、
ことをさらに含む請求項２３に記載の方法。
【請求項２５】
各トラックの値を他のトラックと組合わせるために使用される数学的演算を選択する、
ことをさらに含む請求項２４に記載の方法。
【請求項２６】
前記第２の複数のソース・ファイルを選択すること、
前記一連の値を生成すること、
前記修正すること、
前記数学的演算を選択すること、及び
前記対応する値を組合わせること、の少なくとも１つを前処理し、
選択されたソース・ファイルから生成された一連の値、
設定パラメータにより修正された一連の値、及び
一連の組合わせられた値、の少なくとも１つをデータベース・メモリ中に記憶する、
ことをさらに含む請求項２５に記載の方法。
【請求項２７】
ユニットのデータ長を選択する、
ことをさらに含む請求項２２に記載の方法。
【請求項２８】
リアルタイムで送信されるデータのストリームを暗合化／復号化するため、前記選択すること及び前記変換することを同期化させる、
ことをさらに含む請求項２２に記載の方法。
【請求項２９】
前記第１の複数の暗合テーブルが、
元のデータ値を暗合化値に変換するように構成された暗合テーブルを含む第１テーブル・バンクと、
暗合化値を元のデータ値へ変換するように構成された暗合テーブルを含む第２テーブル・バンクと、
を含む請求項２２に記載の方法。
【請求項３０】
前記第１の複数の暗合テーブルが、
データ値を暗合化／復号化値に変換するように構成された第１暗合テーブルと、
データ値を暗合化／復号化値へ変換するように構成された第２暗合テーブルであって、第２暗合テーブルの各々は対応する第１暗合テーブルにより暗合化／復号化された暗合化／復号化値を元のデータ値へ逆変換することができ、第１暗合テーブルの各々は対応する第２暗合テーブルにより暗合化／復号化された暗合化／復号化値を元のデータ値へ逆変換することができる、第２暗合テーブルと、
を含む請求項２２に記載の方法。
【請求項３１】
第１の複数の暗合テーブルの各々が、テーブル位置アドレスに関連付けられていて、
第２暗合テーブルを、対応する第１暗合テーブルのそれより所定量のオフセットされたテーブル位置アドレスに関連付け、
もし、データが暗合化又は送信される場合、一連の組合わせられた値を使用して暗合テーブルを選択し、
もし、データが復号化又は受信される場合、一連の組合わせられた値を所定のオフセットと共に使用して暗合テーブルを選択する、
ことをさらに含む請求項３０に記載の方法。
【請求項３２】
第１暗合テーブルの各々と対応する第２暗合テーブルとの間に一対一の関連性を提供する、
ことをさらに含む請求項３０に記載の方法。
【請求項３３】
暗合テーブルが、可能なデータ値の各々を元のデータ値とは異なる可能なデータ値の１つの対応する暗合化／復号化値へ変換することができる請求項２２に記載の方法。
【請求項３４】
前記暗合テーブルを選択することが、
一連の組合された値をテーブル位置アドレスと関連付け、
テーブル位置アドレスと関連付けられた暗合テーブルを選択する、
ことを含む請求項２２に記載の方法。
【請求項３５】
装置に独特な識別コード及びデータを暗合化／復号化できる識別コードに関連した設定ファイルを含んだ装置上の暗合器／復号器を自動的に設定する方法であって、
装置から識別コードを受信し、
設定ファイルを含んだデータベース・メモリから識別コードに関連した設定ファイルを検索し、
以下を含むセッション・ファイルを生成し、
複数の暗合テーブルの中から一組の暗合テーブルを選択し、
各々があるパターンを持った一連の値を含んだ複数の選択トラックの中から一組の選択トラックを選択し、及び
複数の設定パラメータの中から一組の設定パラメータを選択し、
セッション・ファイルを識別コードと関連付け、
設定ファイルを使用してセッション・ファイルの情報を暗合化し、
装置へセッション・ファイルの暗合化された情報を送信する、
ことを含む前記方法。
【請求項３６】
セッション・ファイルの情報が、
暗合テーブルの組、
選択トラックの組、及び
設定パラメータの組、
を含む請求項３５に記載の方法。
【請求項３７】
セッション・ファイルの情報が、
どの暗合テーブルが使用されるべきかの指示、
どの選択トラックが使用されるべきかの指示、及び
どの設定パラメータが使用されるべきかの指示、
の少なくとも１つを含む請求項３５に記載の方法。
【請求項３８】
データベース・メモリ内に、識別コードとの関連性と一緒にセッション・ファイルの情報を記憶する、
ことをさらに含む請求項３５に記載の方法。
【請求項３９】
第２データベース・メモリ内の異なった場所に、識別コードと関連を持つ暗合テーブルの組、選択トラックの組、及び、設定パラメータの組の少なくとも１つを記憶する、
ことをさらに含む請求項３８に記載の方法。
【請求項４０】
第２データベース・メモリが、コンピュータ・ネットワークを介して装置からアクセス可能である請求項３８に記載の方法。
【請求項４１】
前記選択トラックの組を選択することが、
あるパターンを生成できるデータを含んだソース・ファイルを選択し、
あるパターンを発生できるソフトウェア・モジュールを選択する
ことを含む請求項３５に記載の方法。
【請求項４２】
前記暗合テーブルの組を選択することが、
設定ファイルの暗合テーブルの一組を選択する、
ことを含む請求項３５に記載の方法。
【請求項４３】
前記選択トラックの組を選択することが、
設定ファイルの少なくとも１つの選択トラックを選択する、
ことを含む請求項３５に記載の方法。
【請求項４４】
前記設定パラメータの組を選択することが、
設定ファイルの少なくとも１つの設定パラメータを選択する、
ことを含む請求項３５に記載の方法。
【請求項４５】
装置に独特な識別コード及びデータを暗合化／復号化できる識別コードに関連した設定ファイルを含んだ装置を認証する方法であって、
装置から識別コードを受信し、
設定ファイルを含んだデータベース・メモリから識別コードに関連した設定ファイルを検索し、
一連の値を生成し、そして、一連の値を装置へ送信し、
検索された設定ファイルを使用して一連の値を暗合化し、
暗合化された一連の値から第１チェック・サムを計算し、
装置の設定ファイルを使用して暗合化された一連の値から装置において計算された第２チェック・サムを装置から受信し、
第２チェック・サムが第１チェック・サムと一致するかどうかを決定し、
第２チェック・サムが第１チェック・サムと一致する場合、装置を認証する、
ことを含む前記方法。
【請求項４６】
第２装置に独特な識別コード及びデータを暗合化／復号化できる識別コードに関連した設定ファイルを含んだ第２装置上の暗合器／復号器を自動的に設定するための装置であって、
第２装置から識別コードを受信する手段と、
設定ファイルを含んだデータベース・メモリから識別コードに関連した設定ファイルを検索する手段と、
複数の暗合テーブルの中から一組の暗合テーブルを選択する手段と、
各々がソース・ファイルを使用して生成されたあるパターンを持った一連の値を含んだ複数の選択トラックの中から一組の選択トラックを選択する手段と、
複数の設定パラメータの中から一組の設定パラメータを選択する手段と、
暗合テーブルの組、選択トラックの組、及び、設定パラメータの組を識別コードと関連付ける手段と、
設定ファイルを使用して暗合テーブルの組、選択トラックの組、及び、設定パラメータの組を暗合化する手段と、
第２装置へ、暗合テーブルの暗合化された組、選択トラックの暗合化された組、及び、設定パラメータの暗合化された組を送信する手段と、
を備えた前記自動的に設定するための装置。
【請求項４７】
データベース・メモリ内に、識別コードとの関連性と共に、暗合テーブルの組、選択トラックの組、及び、設定パラメータの組を記憶する手段、
をさらに備えた請求項４６に記載の装置。
【請求項４８】
第２データベース・メモリ内の異なった場所に、識別コードとの関連性と共に、暗合テーブルの組、選択トラックの組、及び、設定パラメータの組の少なくとも１つを記憶する手段、
をさら備えた請求項４７に記載の装置。
【請求項４９】
第２データベース・メモリが、コンピュータ・ネットワークを介して第２装置からアクセス可能である請求項４８に記載の装置。
【請求項５０】
第２装置に独特な識別コード及びデータを暗合化／復号化できる識別コードに関連した設定ファイルを含んだ第２装置を認証する装置であって、
第２装置から識別コードを受信する手段と、
設定ファイルを含んだデータベース・メモリから識別コードに関連した設定ファイルを検索する手段と、
一連の値を生成して、一連の値を第２装置へ送信する手段と、
検索された設定ファイルを使用して一連の値を暗合化する手段と、
暗合化された一連の値から第１チェック・サムを計算する手段と、
第２装置の設定ファイルを使用して暗合化された一連の値から第２装置において計算された第２チェック・サムを第２装置から受信する手段と、
第２チェック・サムが第１チェック・サムと一致するかどうかを決定する手段と、
第２チェック・サムが第１チェック・サムと一致する場合、第２装置を認証する手段と、
を備えた前記認証する装置。
【請求項５１】
元のデータを暗合化／復号化データへ暗合化／復号化する方法を実行するために機械により実行可能なプログラム命令を有形的に具体化した、機械読取可能なプログラム記憶装置であって、前記方法が、
各々がデータ値を暗合化／復号化値へ変換でき、データ値はデータのユニットに対応し、暗合化／復号化値は暗合化／復号化データのユニットに対応している、第１の複数の暗合テーブルを提供し、
各々が対応するソース・ファイルを使用して生成されたあるパターンを持つ一連の値を含む、第２の複数の選択トラックを提供し、
一連の組合された値を生成するために選択トラックの対応する値を組合わせ、
一連の組合された値中の組合された値に従ってデータの各ユニットに対して暗号テーブルを選択し、
そのユニットに対して選択された暗号テーブルを使用して、データの各ユニットを暗合化／復号化データのユニットへ変換する、
ことを含む前記記憶装置。
【請求項５２】
装置に独特な識別コード及びデータを暗合化／復号化できる識別コードに関連した設定ファイルを含んだ装置上の暗合器／復号器を自動的に設定する方法を実行するために機械により実行可能なプログラム命令を有形的に具体化した、機械読取可能なプログラム記憶装置であって、前記方法が、
装置から識別コードを受信し、
設定ファイルを含んだデータベース・メモリから識別コードに関連した設定ファイルを検索し、
複数の暗合テーブルの中から一組の暗合テーブルを選択し、
各々がソース・ファイルを使用して生成されたあるパターンを持った一連の値を含んだ複数の選択トラックの中から一組の選択トラックを選択し、
複数の設定パラメータの中から一組の設定パラメータを選択し、
一組の暗合テーブル、一組の選択トラック、及び、一組の設定パラメータを識別コードと関連付け、
設定ファイルを使用して、一組の暗合テーブル、一組の選択トラック、及び、一組の設定パラメータを暗合化し、
暗合化された一組の暗合テーブル、暗合化された一組の選択トラック、及び、暗合化された一組の設定パラメータを装置へ送信する、
ことを含む前記記憶装置。
【請求項５３】
装置に独特な識別コード及びデータを暗合化／復号化できる識別コードに関連した設定ファイルを含んだ装置を認証する方法を実行するために機械により実行可能なプログラム命令を有形的に具体化した、機械読取可能なプログラム記憶装置であって、前記方法が、
装置から識別コードを受信し、
設定ファイルを含んだデータベース・メモリから識別コードに関連した設定ファイルを検索し、
一連の値を生成して、一連の値を装置へ送信し、
検索された設定ファイルを使用して一連の値を暗合化し、
暗合化された一連の値から第１チェック・サムを計算し、
装置の設定ファイルを使用して暗合化された一連の値から装置で計算された第２チェック・サムを装置から受信し、
第２チェック・サムが第１チェック・サムと一致するかどうかを決定し、
第２チェック・サムが第１チェック・サムと一致する場合、装置を認証する、
ことを含む前記記憶装置。
【請求項５４】
各々が対応するソース・ファイルを使用して生成されたあるパターンを持つ一連の値を含む複数の選択トラックを生成するように構成され選択トラック生成器であって、
複数のソース・ファイルを記憶するメモリ、及び
前記メモリに接続されて、選択されたソース・ファイルから一連の値を生成するように構成されたトラック・パターン・マネージャを含む、前記選択トラック生成器と、
前記選択トラック生成器に接続されて、一連の組合わせられた値を生成するために選択トラックの対応する値を組合わせるように構成されたトラック・ミキサーと、を備え、
前記トラック・マネージャがさらに、設定パラメータを使用して各一連の値を修正するように構成されている擬似乱数生成器。
【請求項５５】
前記トラック・パターン・マネージャがさらに、各トラックの値を他のトラックと組合わせるために使用される数学的演算を選択するように構成されている請求項５４に記載の擬似乱数生成器。
【請求項５６】
選択トラックの各々が、トラックのあるパターンが繰返されるキー長を持つ請求項５４に記載の擬似乱数生成器。
【請求項５７】
選択トラックのキー長はどれも、別の選択トラックのキー長と等しくない請求項５６に記載の擬似乱数生成器。
【請求項５８】
どのキー長も、別のキー長に２nを掛けることにより、又は、別のキー長を２nで割ることにより得られない、但し、ｎは整数、請求項５６に記載の擬似乱数生成器。
【請求項５９】
キー長間の差が、キー長よりも実質的に小さい請求項５７に記載の擬似乱数生成器。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２００２年７月２７日に出願された同じ発明者の米国仮特許出願シリアル番号６０／３９９，０９２の優先権を主張する。
【０００２】
本発明は暗号及び暗号システムに関する。より詳細には、本発明はデータの暗号化及び復号化装置及び方法、暗号化／復号化システムを自動的に設定する装置及び方法、暗号化／復号化方法を使用して第２装置を認証するための装置及び方法、そして暗号化／復号化システムのために使用される擬似乱数発生器に関する。
【背景技術】
【０００３】
現在、さまざまな分野でいくつかの暗号方法が使用されている。暗号化システム（クリプトシステム）は、データ、特に、重要なデータが意図されない者による盗難、盗聴、又はハッキングされることを防止する。また、暗号化システムは、ユーザ間、さまざまなコンピュータ・システム間、及びユーザとコンピュータ・システム間の認証のために使用される。理想的には、暗号は、元の入力データを適当なキー無しには復号又は読むことが不可能な暗号化データに変形する。
【０００４】
暗号化システムは、例えば、対称的暗号化システム及び非対称的暗号化システムに分類するなど、いくつかの方法で分類できる。対称的暗号化システムはまた、情報を暗号化及び復号化するために単一のキー（秘密キー）を使用する秘密キー暗号と呼ばれる。１つのキーしかないから、安全なキーの交換の形式を必要とする（クーリエにより、人手により等）。非対称的暗号は、メッセージなどのデータを暗号化するために１つ（公開キー）、及び、それを復号化するために別のキー（プライベート・キー）の一対のキーを使用する、公開キー暗号と呼ばれる。
【０００５】
データ暗号規格（ＤＥＳ）は、単一の５６ビット・キーを使用する対称的アルゴリズムである最も知られた暗号アルゴリズムの１つである。ＤＥＳは、元のデータ（「平文」）をブロックに分割し、各ブロックが暗号化されたデータ（「暗号文」）を作成するために個別に複数ラウンド（反復して）処理されるブロック暗号を使用する。
【０００６】
他の従来の暗号アルゴリズム及び方法は、例えば、デジタル署名メッセージに典型的に使用される暗号ハッシュ関数、乱数発生器、一時パッド、１５８ビット・キーを使用するＤＥＳの安全形式である三重ＤＥＳ、１２８ビット・キーを使用したブロック・モード秘密キー暗号アルゴリズムである国際データ暗号アルゴリズム（ＩＤＥＡ）、ＲＣ４（広く使用されている対称キー・アルゴリズム）等を含む。さらに、先進暗号規格（ＡＥＳ）は、１２８ビット、１９２ビット、又は、２５６ビットの３つのキー長さを二者択一的に持つより強力な暗号スキームを提供する。
【０００７】
典型的に、コード破壊者又は攻撃者は、重要な情報を見るため又は暗号システムを利用するために正しいキーを見つけようと試みる。コード破壊者は、典型的に、正しいキーが発見されるまで数百万のキーを試すために数百又は数千のコンピュータを使用する。暗号文を解読するために可能なキーの全てを試す方法は、暴力攻撃と呼ばれる。暴力攻撃は、もし弱いキー又はパスワードが使用されるとしばしば成功するが、もし長いキーが使用されてキーが数と文字とが意味のないパターンで混合ものからなると困難である。システムの弱さは試す必要のあるキー数を減少する。さらに、暗号アルゴリズムを解析又は暗号システムの特定のパターンを発見するなどの他の多くの攻撃が存在する。
【０００８】
コンピュータに基づいた技術の絶え間の無い発展により、破られないと思われた安全方法は不十分になっている。例えば、ＤＥＳの５６ビット・キーのサイズはもはや暴力攻撃に対して安全とは見なされない。コンピュータの性能が絶えず改良されるにつれて、より安全なデータ転送及び記憶機構に対する必要性が増加している。したがって、政府の安全性から個人のオンライン取引までの全てのレベルについて、たとえ数千のスーパー・コンピュータを使用しても破ることが実際上不可能な暗号化システムを提供することが望まれる。
【発明の開示】
【０００９】
データを暗号化／復号化する装置。この装置は、（ａ）各々がデータ値を暗号化／復号化値へ変換可能であり、データ値はデータのユニットに対応し、暗号化／復号化値は暗号化／復号化データのユニットに対応している第１の複数の暗号テーブルと、（ｂ）各々があるパターンを持つ一連の値を含む第２の複数の選択トラックと、（ｃ）第２の複数の選択トラックに結合されて、一連の結合された値を生成するために選択トラックの対応する値を結合するように構成されたトラック・ミキサーと、（ｄ）第１の複数の暗号テーブル及びトラック・ミキサーに結合されて、一連の結合された値中の結合された値に従いそのユニットに対して選択された暗号テーブルを使用してデータの各ユニットを暗号化／復号化データのユニットに変換するように構成された暗号／復号モジュールと、を含む。
【００１０】
本発明の１つの観点によると、装置はさらに、装置に独特な識別コードと、識別コードに関連した暗号／復号ファイルとして第１の複数の暗号テーブルと第２の複数の選択トラックとを含んだ第１データベース・メモリとを含む。第１データベース・メモリはさらに、暗号／復号ファイルとして、選択トラックの各々の値を修正しそして各選択トラックを別のトラックへ結合する方法を決定することができる設定パラメータの一組を含むことができる。
【００１１】
本発明の１つの観点によると、装置はさらに、第１データベース・メモリ上の暗号／復号ファイルとは異なる少なくとも１つの第２暗号／復号ファイルを記憶するように設計された第２データベース・メモリを含み、そして、第１メモリ上の暗号／復号ファイルは第２暗号／復号ファイルを送信のために暗号化し、又は、暗号化された第２暗号／復号ファイルを復号するように構成されている。
【００１２】
元のデータを暗号化／復号化データへ暗号化／復号化する方法。この方法は、（ａ）各々がデータ値を暗号化／復号化値へ変換可能であり、データ値はデータのユニットに対応し、暗号化／復号化値は暗号化／復号化データのユニットに対応している第１の複数の暗号テーブルを設け、（ｂ）各々があるパターンを持つ一連の値を含む第２の複数の選択トラックを設け、（ｃ）一連の結合された値を生成するために選択トラックの対応する値を結合し、（ｄ）一連の結合された値の中の対応する結合された値に従いデータの各ユニットに対する暗号テーブルを選択し、（ｅ）そのユニットに対して選択された暗号テーブルを使用してデータの各ユニットを暗号化／復号化データのユニットに変換する、ことを含む。
【００１３】
本発明の１つの観点によると、方法はさらに、（ｆ）データベース・メモリ内に記憶されたソース・ファイルの中から第２の複数のソース・ファイルを選択し、（ｇ）選択されたソース・ファイルの各々から一連の値を生成することを含む。方法はさらに、（ｈ）設定パラメータを使用して一連の値の各々を修正すること、及び、（ｉ）各トラックの値を他のトラックと結合するために使用されるべき数学演算を選択すること、の少なくとも１つを含んでも良い。
【００１４】
元のデータを暗号化／復号化データへ暗号化／復号化する装置。この装置は、（ａ）各々がデータ値を暗号化／復号化値へ変換可能であり、データ値はデータのユニットに対応し、暗号化／復号化値は暗号化／復号化データのユニットに対応している第１の複数の暗号テーブルを設ける手段と、（ｂ）各々があるパターンを持つ一連の値を含む第２の複数の選択トラックを設ける手段と、（ｃ）一連の結合された値を生成するために選択トラックの対応する値を結合する手段と、（ｄ）一連の結合された値中の対応する結合された値に従いデータの各ユニットに対して暗号テーブルを選択する手段と、（ｅ）そのユニットに対して選択された暗号テーブルを使用してデータの各ユニットを暗号化／復号化データのユニットに変換する手段と、を含む。
【００１５】
本発明の１つの観点によると、装置はさらに、（ｆ）データベース・メモリ内に記憶されたソース・ファイルの中から第２の複数のソース・ファイルを選択する手段と、（ｇ）選択されたソース・ファイルの各々から一連の値を生成する手段とを含む。装置はさらに、（ｈ）設定パラメータを使用して一連の値の各々を修正する手段と、及び、（ｉ）各トラックの値を他のトラックと結合するために使用されるべき数学演算を選択する手段と、の内の少なくとも１つを含んでも良い。装置はさらに、（ｊ）各ユニットのデータ長を選択する手段と、及び、（ｋ）選択する手段の操作と変換する手段とを同期させる手段と、の内の少なくとも１つを含んでも良い。
【００１６】
本発明の１つの観点によると、第１の複数の暗号テーブルは、データ値を暗号化／復号化値に変換するように構成された第１暗号テーブルと、データ値を暗号化／復号化値に変換するように構成された第２暗号テーブルとを含み、第２暗号テーブルの各々は対応する第１暗号テーブルにより暗号化／復号化された暗号化／復号化値を元のデータ値へ逆変換することができ、第１暗号テーブルの各々は対応する第２暗号テーブルにより暗号化／復号化された暗号化／復号化値を元のデータ値へ逆変換することができる。
【００１７】
本発明の１つの観点によると、第１の複数の暗号テーブルの各々はテーブル位置アドレスと関連付けられていて、そして装置はさらに第２暗号テーブルを対応する第１暗号テーブルから所定量のオフセットのテーブル位置アドレスと関連付けるための手段をさらに含む。暗号テーブルを選択する手段は、（ｄ１）もしデータが暗号化されるならば、一連の結合された値を使用する暗号テーブルを選択する手段と、（ｄ２）もしデータが復号化されるならば、所定のオフセットを持つ一連の結合された値を使用する暗号テーブルを選択する手段とを含む。暗号テーブルを選択する手段は、（ｄ３）もしデータが送信されるならば、一連の結合された値を使用する暗号テーブルを選択する手段と、（ｄ４）もしデータが受信されるならば、所定のオフセットを持つ一連の結合された値を使用する暗号テーブルを選択する手段とを含む。代替的に、装置は第１暗号テーブルの各々と対応する第２暗号テーブルの間に一対一の関連を提供する手段を含んでよい。
【００１８】
本発明の１つの観点によると、装置はさらに、結合された一連の値をテーブル位置アドレスと関連付ける手段と、テーブル位置アドレスと関連付けられた暗号テーブルを選択する手段とを含む。
【００１９】
装置と方法は、自動的に第２装置上の第２装置に独特な識別コードを含む暗号器／復号器及び識別コードと関連した設定ファイルを設定する。設定ファイルはデータを暗号化／復号化できる。装置は、第２装置から識別コードを受信する手段と、設定ファイルを含むデータベース・メモリから識別コードと関連した設定ファイルを検索する手段と、複数の暗号テーブルの中から暗号テーブルの一組を選択する手段と、複数の選択トラックの中から選択トラックの一組を選択する手段と、選択トラックの各々はソース・ファイルを使用して生成されたあるパターンを持つ一連の値を含み、複数の設定パラメータの中から設定パラメータの一組を選択する手段と、暗号テーブルの一組と選択トラックの一組と設定パラメータの一組とを識別コードに関連付ける手段と、暗号テーブルの一組と選択トラックの一組と設定パラメータの一組とを設定ファイルを使用して暗号化する手段と、暗号化された暗号テーブルの一組と暗号化された選択トラックの一組と暗号化された設定パラメータの一組とを第２装置へ送信する手段とを含む。方法は、（ａ）装置から識別コードを受信し、（ｂ）設定ファイルを含むデータベース・メモリから識別コードと関連した設定ファイルを検索し、（ｃ）複数の暗号テーブルの中から暗号テーブルの一組を選択し、（ｄ）複数の選択トラックの中から選択トラックの一組を選択し、選択トラックの各々はソース・ファイルを使用して生成されたあるパターンを持つ一連の値を含み、（ｅ）複数の設定パラメータの中から設定パラメータの一組を選択し、（ｆ）暗号テーブルの一組と選択トラックの一組と設定パラメータの一組とを識別コードに関連付け、（ｇ）暗号テーブルの一組と選択トラックの一組と設定パラメータの一組とを設定ファイルを使用して暗号化し、そして、（ｈ）暗号化された暗号テーブルの一組と暗号化された選択トラックの一組と暗号化された設定パラメータの一組とを第２装置へ送信すること、を含む。
【００２０】
装置と方法は、第２装置に独特な識別コードと識別コードに関連した設定ファイルとを持つ第２装置を認証する。設定ファイルはデータを暗号化／復号化できる。装置は、第２装置から識別コードを受信する手段と、設定ファイルを含むデータベース・メモリから識別コードと関連した設定ファイルを検索する手段と、一連の値を生成して第２装置へその一連の値を送信する手段と、検索された設定ファイルを使用して一連の値を暗号化する手段と、暗号化された一連の値から第１チェック・サムを計算する手段と、第２装置においてその設定ファイルを使用して暗号化された一連の値から計算された第２チェック・サムを第２装置から受信する手段と、第２チェック・サムが第１チェック・サムと一致するかどうかを決定する手段と、もし第２チェック・サムが第１チェック・サムと一致したならば第２装置を認証する手段とを含む。方法は、（ａ）第２装置から識別コードを受信し、（ｂ）設定ファイルを含むデータベース・メモリから識別コードと関連した設定ファイルを検索し、（ｃ）一連の値を生成して第２装置へその一連の値を送信し、（ｄ）検索された設定ファイルを使用して一連の値を暗号化し、（ｅ）暗号化された一連の値から第１チェック・サムを計算し、（ｆ）第２装置においてその設定ファイルを使用して暗号化された一連の値から計算された第２チェック・サムを第２装置から受信し、（ｇ）第２チェック・サムが第１チェック・サムと一致するかどうかを決定し、そして、（ｈ）もし第２チェック・サムが第１チェック・サムと一致したならば第２装置を認証することを含む。
【００２１】
本発明の１つの観点は、元のデータを暗号化／復号化データへ暗号化／復号化する方法を実行するために機械により実行可能な命令のプログラムを有形的に具現化した機械により読取可能なプログラム記憶装置を提供する。ここで、この方法は、（ａ）各々がデータ値を暗号化／復号化値へ変換可能であり、データ値はデータのユニットに対応し、暗号化／復号化値は暗号化／復号化データのユニットに対応している第１の複数の暗号テーブルを提供し、（ｂ）各々があるパターンを持つ一連の値を含む第２の複数の選択トラックを提供し、（ｃ）一連の結合された値を生成するために選択トラックの対応する値を結合し、（ｄ）一連の結合された値の中の対応する結合された値に従いデータの各ユニットに対する暗号テーブルを選択し、（ｅ）そのユニットに対して選択された暗号テーブルを使用してデータの各ユニットを暗号化／復号化データのユニットに変換する、ことを含む。
【００２２】
また、本発明の１つの観点は、装置に独特な識別コード及び識別コードに関連してデータを暗号化／復号化できる設定ファイルを含んだ装置上の暗号器／復号器を自動的に設定する方法を実行するために機械により実行可能な命令のプログラムを有形的に具現化した機械により読取可能なプログラム記憶装置を提供する。ここで、この方法は、（ａ）装置から識別コードを受信し、（ｂ）設定ファイルを含むデータベース・メモリから識別コードと関連した設定ファイルを検索し、（ｃ）複数の暗号テーブルの中から暗号テーブルの一組を選択し、（ｄ）複数の選択トラックの中から選択トラックの一組を選択し、選択トラックの各々はソース・ファイルを使用して生成されたあるパターンを持つ一連の値を含み、（ｅ）複数の設定パラメータの中から設定パラメータの一組を選択し、（ｆ）暗号テーブルの一組と選択トラックの一組と設定パラメータの一組とを識別コードに関連付け、（ｇ）暗号テーブルの一組と選択トラックの一組と設定パラメータの一組とを設定ファイルを使用して暗号化し、そして、（ｈ）暗号化された暗号テーブルの一組と暗号化された選択トラックの一組と暗号化された設定パラメータの一組とを装置へ送信すること、を含む。
【００２３】
本発明の１つの観点は、装置に独特な識別コード及び識別コードに関連してデータを暗号化／復号化できる設定ファイルを含んだ装置を認証する方法を実行するために機械により実行可能な命令のプログラムを有形的に具現化した機械により読取可能なプログラム記憶装置を提供する。ここで、この方法は、（ａ）装置から識別コードを受信し、（ｂ）設定ファイルを含むデータベース・メモリから識別コードと関連した設定ファイルを検索し、（ｃ）一連の値を生成して装置へその一連の値を送信し、（ｄ）検索された設定ファイルを使用して一連の値を暗号化し、（ｅ）暗号化された一連の値から第１チェック・サムを計算し、（ｆ）装置においてその設定ファイルを使用して暗号化された一連の値から計算された第２チェック・サムを装置から受信し、（ｇ）第２チェック・サムが第１チェック・サムと一致するかどうかを決定し、そして、（ｈ）もし第２チェック・サムが第１チェック・サムと一致したならば装置を認証することを含む。
【００２４】
擬似乱数生成器は、（ａ）複数の選択トラックを生成するように構成された選択トラック生成器と、（ｂ）選択トラック生成器に結合されて、一連の結合された値を生成するために選択されたトラックの対応する値を結合するように構成されたトラック・ミキサーとを含む。選択トラック生成器は、複数のソース・ファイルを記憶するメモリと、メモリに結合されて選択されたソース・ファイルから一連の値を生成するように構成されたトラック・パターン・マネージャとを含む。トラック・パターン・マネージャはさらに、設定パラメータを用いて一連の値の各々を修正し、及び／又は、各トラックを他のトラックと結合するために使用される数学的演算を選択するように構成されている。
本発明の実施及び原理を説明するために、添付図面を参照して以下の詳細な説明にて、本発明の１つ又は複数の実施の形態を説明する。
【００２５】
（詳細な説明）
本発明の実施の形態が、暗号及び復号方法及び装置として、以下に詳細に説明される。当業者には、以下の本発明の詳細な説明が説明目的のみであり、限定する意図がないことが理解できる。この開示を読む当業者には本発明の他の実施の形態が容易に示唆される。以下に、添付図面を参照して本発明の実現を詳細にする。同じ参照符号が図面中及び以下の詳細な説明中で同一または同等の部分を示すために使用される。
【００２６】
簡潔さのために、ここには実現のためのルーチンの特徴の全てを記載しないし図示もしない。もちろん、実際の実現を開発する際、アプリケーション関連及びビジネス関連制約との一致など、開発者の特定の目標を達成するために、数多くの実現特有の決定がなされなければならず、そして、この特定の目標が開発者毎にそして実現毎に変化することが理解される。このような開発努力は複雑で時間がかかるが、それでもこの開示を読んだ当業者にとってはルーチンのエンジニアリングであることが理解できる。
【００２７】
本発明の１つの実施の形態では、部品、プロセス・ステップ、及び／又はデータ構造はさまざまなタイプのオペレーテイング・システム（ＯＳ）、計算プラットホーム、ファームウェア、コンピュータ・プログラム、コンピュータ言語、及び／又は、汎用マシンを使用して実現できる。方法は、処理回路上で実行されるプログラム・プロセスとして実行できる。処理回路は、プロセッサ及びオペレーテイング・システム、又は、スタンドアロン装置のさまざまな組合わせの形を取ることができる。プロセスは、このようなハードウェア、ハードウェア単体、又はそれらのいずれかの組合わせにより実行される命令として実現できる。ソフトウェアは、機械により読取可能なプログラム記憶装置上に記憶される。
【００２８】
さらに、当業者は、フィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）及びコンプレックス・プログラマブル・ロジックデバイス（ＣＰＬＤ）、アプリケーション・スペシフイック集積回路（ＡＳＩＣ）等を含むフィールド・プログラマブル・ロジックデバイス（ＦＰＬＤ）、ハードワイヤ装置など汎用性質の少ない装置も、ここに開示された本発明の精神及び範囲から逸脱することなく使用できることを理解できる。
【００２９】
本発明の１つの実施の形態によると、方法は、米国カリフォルニア州パル・アルトのサン・マイクロシステム社から入手できるソラリス（登録商標）、ワシントン州レドモンドのマイクロソフト社から入手できるマイクロソフト（登録商標）ウインドウズ（登録商標）ＸＰ及びウインドウズ（登録商標）２０００、又は、いくつかのベンダーから入手できるリナックスなどのＵｎｉｘ（登録商標）オペレーテイング・システムのさまざまなバージョンなどのＯＳを走らせるパーソナル・コンピュータ、ワークステーション・コンピュータ、メインフレーム・コンピュータ、又は、高性能サーバーなどのデータ処理コンピュータ上で実現できる。方法は、複数プロセッサ・システム上、又は、入力装置、出力装置、ディスプレイ、ポインティング・デバイス、メモリ、記憶装置、プロセッサへ及びからデータを転送するためのメディア・インターフェイス等などのさまざまな周辺装置を含んだ計算環境中で実現できる。さらに、このようなコンピュータ・システム又は計算環境はローカル又はインターネットを介してネットワーク接続できる。
【００３０】
本発明の文脈において、「ネットワーク」という用語は、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、ケーブル・テレビジョン・システム、電話システム、無線通信システム、光ファイバ・ネットワーク、ＡＴＭネットワーク、フレーム・リレー・ネットワーク、人工衛星通信システムなどを含む。このようなネットワークは、当業者に良く知られているので、これ以上は記載しない。
【００３１】
図１は、本発明を実現するのに適したコンピュータ・システム１００のブロック図である。図１に示すように、コンピュータ・システム１００は、中央プロセッサ１０４、システム・メモリ１０６（典型的にＲＡＭ）、入力／出力（Ｉ／Ｏ）コントローラ１０８、ディスプレイ・アダプタ１１２を経由したディスプレイ・スクリーン１１０などの外部装置、シリアル・ポート１１４及び１１６、キーボード１１８、固定ディスク・ドライブ１２０、フレキシブルディスク・ドライブ１２４、及びＣＤ−ＲＯＭ１２８を受け入れ可能なＣＤ−ＲＯＭプレイヤー１２６などの主なサブシステムを相互接続するバス１０２を含む。シリアル・ポート１１４を経由して接続されたポインテイング装置１３０（例えば、マウス）及びシリアル・ポート１１６を経由して接続されたモデム１３２など、多くの他の装置が接続できる。モデム１３２は、ＰＯＰ（ポイント・オブ・プレゼンス）を経由してインターネットヘ又は電話リンクを解してリモート・サーバーへの直接接続を提供する。代替的に、ネットワーク・インターフェイス・アダプター１３４が当業者に既知のいずれかのネットワーク・インターフェイス・システム（例えば、イーサネット（登録商標）、ｘＤＳＬ、アップルトークＴＭ）を使用したローカル又はワイド・エリア・ネットワークへのインターフェイスとして使用できる。
【００３２】
多くの他の装置又はサブシステム（図示しない）が同様な態様で接続できる。また、後で説明するように、本発明を実施するためには、図１に示された装置の全ては必要ではない。さらに、装置及びサブシステムは、図１に示されるとは異なった方法で相互接続できる。図１に示されるようなコンピュータ・システムの動作は業界には容易に知られているから、本明細書を複雑にしないために詳細には説明しない。本発明を実現するためのコードはシステム・メモリ１０６中に動作可能に配置され、又は、固定ディスク１２０、フレキシブル・ディスク１２４、又は、ＣＤ−ＲＯＭ１２８などの記憶媒体上に記憶される。
【００３３】
図２は、本発明の１つの実施の形態によるデータの暗号化／復号化のための装置２０を概略的に示す。本明細書では、暗号化／復号化は一般に暗号化及び復号化を実行することを意味する。しかし、また、この言葉は暗号化のみが実行され又は復号化のみが実行される場合を含む。図２に示すように、装置２０は、第１の複数の暗号テーブル２２、第２の複数の選択トラック２４、トラック・ミキサー２６、及び、暗号／復号モジュール（暗号器／復号器）２８を含む。また、装置２０は、入力データ３０を受取り、そして、暗号化／復号化データ３２を出力するように構成されている。もし、入力データ３０が元のデータ（平文）である場合、装置２０は入力データ３０を暗号化して、暗号化データ（暗号文）３２を出力する。もし、入力データ３０が暗号化データ（暗号文）である場合、装置２０は入力データ３０を復号化して、復号化データ（又は、平文）３２を出力する。
【００３４】
入力データ３０は、メモリ上のファイル内に記憶され、そして暗号化又は復号化のために装置２０に読み込まれる。入力データ３０は、例えば、リアルタイム通信で送信されるオーディオ又はビデオ・データのリアルタイムで送信されるデータ・ストリームでもよい。同様に、暗号化／復号化データ３２は、メモリ内に記憶されても良く、又は、データのストリームとしてリアルタイム通信で送信されてもよい。
【００３５】
暗号テーブル２２の各々は、データ値を暗号化／復号化値へ変換できる。データ値は入力データ３０のユニットに対応し、そして暗号化／復号化値は暗号化／復号化データ３２のユニットに対応している。すなわち、装置２０は入力データ３０をあるデータ・ユニット、すなわち、ある数のデータ・ビット、により処理する。例えば、４、８、又は、１６ビットを使用できる。しかし、ユニット・データ大きさは、単一ビットから、例えば、オーディオ又はビデオ・データ・ファイルのデータ・ビットの大きなストリングまでのどんな大きさであってよい。また、装置２０は、データ・ユニットについてビット長を選択するためにデータ・ステップ大きさ選択器（図示しない）を含むことができる。デフォルト値は、８ビット（１バイト）として設定されている。
【００３６】
選択トラック２４の各々は、あるパターンを持つ一連の値を含む。トラック・ミキサー２６は選択トラック２４に接続されていて、一連の組合わせられた値３４を生成するために複数の選択トラック中の対応する値を組合わせる。暗号／復号モジュール２８は、入力データ３０の各ユニットを暗号化／復号化データ３２のユニットへ、組合わせられた一連の値３４中の組合わせられた値に従いそのユニットに対して選択された暗号テーブルを使用して変換する。
【００３７】
図２に示すように、暗号／復号モジュール２８は、一連の組合わせられた値３４中の現在の組合わせられた値に従い暗号テーブル２２中から１つの暗号テーブルを選択するテーブル選択器３６を含む。さらに、装置２０は複数のソース・ファイル４０から第２の複数の選択トラック２４を生成する選択トラック生成器３８を含む。
【００３８】
本発明の１つの実施の形態によると、暗号テーブルは、データ値から暗号化／復号化値へ１対１の変換を提供するためにユニット・データの全ての可能な値の各々に１つのインスタンスを含んだデータ・テーブルである。例えば、全ての可能な値は、行と列の格子、すなわち、行列に配列されて表される。図３Ａは、暗号テーブルの構造を説明するために表示された暗号テーブル（「ユニタリ」暗号テーブル）５０の一例を示す。暗号テーブル５０は、各８ビット・データ値をそのデータ値自身（ユニタリ変換）へ変換し、従って、暗号のために使用されない。図３Ａに示されるように、行位置５２は第１ニブル（ＭＳＢ４ビット）を表し、そして列位置５４は１バイト（８ビット）入力データの第２ニブル（ＬＳＢ４ビット）を表す。値は１６進表示（０、１、．．、Ｆ）で表示される。行及び列位置により指定される行列セルは、行列データ値の暗号化値を含む。暗号テーブル５０はユニタリ変換（すなわち、暗号化しない）を行うため、各セルは元のデータ値自身を含む。
【００３９】
図３Ｂ及び図３Ｃは、実際に入力データ値を暗号化／復号化値へ変換する暗号テーブル６０及び７０をそれぞれ示す。行列セルは２５６の可能な値（００、０１、．．、ＦＦ）の同じ組を含むが、それらの位置は暗号テーブルの各々ではシャッフルされて再配置される。理論的には、２５６！（＝２５６ｘ２５５ｘ２５４ｘ．．．ｘ２ｘ１）の暗号テーブルがこの１バイト変換のために存在する（ユニタリ・テーブルを含む）。暗号テーブルの所望の数は、暗号テーブルの組を形成するために可能な暗号テーブルの中から選択される。選ばれた暗号テーブルの組又はグループは、暗号テーブル・バンクと呼ばれる。好ましくは、できる限り多くのデータ値が各暗号テーブル中で元のデータ値と異なる暗号値に変換される。暗号テーブル・バンク中の暗号テーブルは同様に互いにできる限り独特であることが好ましい。暗号テーブルはどんなサイズでもよい。例えば、暗号テーブル・バンクの大きさは、上述したように２５６、又は、５１２、１０２４、２０４８、４０９６等である。さらに、暗号テーブルは実際のテーブル・フォーマットに限定されず、入力データ値から暗号値への一対一の変換を行う限りいずれのフォーマットも使用できる。さらに、どんな数の暗号テーブルも暗号テーブル・バンク中に含むことができ、そして、暗号テーブル・バンクの大きさはカスタマイズできる。デフォルトのバンクの大きさは２５６テーブルである。
【００４０】
本発明の１つの実施の形態によると、暗号テーブル・バンク中の暗号テーブルの各々はテーブル位置アドレスを持ち、そして暗号テーブルはそのテーブル位置アドレスを使用して指定及び／又は選択される。例えば、このようなテーブル位置アドレスは暗号テーブル・バンク中の位置、又は、暗号テーブルを記憶する特定のメモリのメモリ・アドレスである。暗号テーブル・バンク中の暗号テーブルは番号が付けられて、そしてテーブル番号が暗号テーブルを選択するために使用されてもよい。
【００４１】
本発明の１つの実施の形態によると、選択トラック生成器３８（図２）は以下の様に選択トラックを生成する。複数のソース・ファイル４０はメモリ内に記憶されたデータ又はファイルであり、選択トラックを生成するために使用される。ソース・ファイル４０は、オーディオ・ファイル（例えば、ノイズ・ファイル）、グラフイックス・ファイル（例えば、勾配ファイル）、パスワード（いずれの長さ及びいずれの数）、波形及びその変調、数学的関数（例えば、周期関数）、波形ルックアップ・テーブル等を含む。ソース・ファイル４０は、使用時にプラグ挿入されるユニバーサル・シリアル・バス（ＵＳＢ）メモリ装置などのハードウェア・キーを含む。図４Ａ及び図４Ｂは、ソース・ファイル４０の例を示す。図４Ａは、オーディオ・ノイズ・ファイルの部分の生の１６進データを示し、そして、図４Ｂは、勾配グラフイック・ファイルの部分の生の１６進データを示す。両データにおいて、各行上に、ファイル・アドレスが最左列から１６バイトのデータで１６進表示により示されている。さらに、選択トラックは、数学的変調器又はリアルタイム源としての発振器など、純ソフトウェア・モジュールにより生成できる。あるパターンを生成することのできるどんなソフトウェアも使用でき、そしてどんな同期技術もどんな数の選択トラックについて使用できる。
【００４２】
ソース・ファイル中に含まれるデータは、例えば、トラック・パターン・マネージャなどのソフトウェア・モジュールを使用して対応する一連の値に変換される。どんな数のソース・ファイルも所望の数の選択トラックを生成するために使用できる。ソース・ファイル中のデータが一連の値に変換される時、各値のビット数（ミキサー・ステップ・サイズ）が選択できる。このビット数は、入力データの各ユニットに対する暗号テーブルを選択するプロセスに使用できる。例えば、ミキサー・ステップ・サイズが８ビットであり、そして３つの選択トラックが存在する場合、８ビット値が各選択トラックから取られて、そして、３つの８ビット値が組合わせられて組合わせられた値になる。組合わせられた値は８ビットを越えるかもしれず、もし必要ならば、クリッピングなしにバッファされる。また、組合わせられた値は、例えば、値を組合わせる数学的演算が引算を含むため、負の値であるかもしれない。
【００４３】
さらに、ミキサー・ステップ・サイズは入力データが暗号化／復号化される入力データのユニット・サイズ（データ・ステップ・サイズ）から独立であることに注意する。例えば、オーディオ・データの場合、入力データは３２ビット又は６４ビット・ワードにより処理され、そして、各選択トラックの８ビットが３２ビット（又は、６４ビット）入力データを暗号化するための１つの暗号テーブルを選択するために使用される（組合わせられた後）。ミキサー・ステップ・サイズは８ビットに限定されず、ミキサー・ステップ・サイズのためにどんなビット数、例えば、４ビット、８ビット、１６ビット等、が使用できる。もし、ミキサー・ステップ・サイズがｎビットならば、一連の値（選択トラック値）の各値は、８ビットの場合について上述したように、ｎビットを持つ。
【００４４】
一連の選択トラック値が組合わせられる前、それらはある設定パラメータを用いて修正することができる。一連の値を生成し、さまざまなパラメータを設定し、そして設定パラメータにより値を修正するプロセスはリアルタイムで実行され（暗号／復号プロセスと同じ時間で）る。また、前処理されてデータ・ファイルとして記憶できる。
【００４５】
設定パラメータは、一連の値が対応するソース・ファイルからどのように生成されるかを指定できる。例えば、このような設定パラメータは、値、「引算値」及び「掛算値」を含む。設定パラメータ２００は、装置２０のための手動設定又はこれらのコンポーネント及びファイルを編集するためのユーザ・インターフェイスとして使用できる。しかし、これらの設定は、例えば、どんなタイプの擬似乱数発生器を使用して、設定パラメータのプールの中から自動的に選択できる。設定スクリーン及びその中のパラメータ値は例示のために表示されたものであり、限定する意図も網羅的な意図もないことに注意すべきである。
【００４６】
トラック・ミキサー２６は、選択トラックの各々からの値を組合わせて、入力データを暗号化／復号化する必要がある限り、各ステップについて組合わせられた値を生成する。新暗号テーブル選択が、各プロセス・ステップで、すなわち、入力データの各ユニット長に対して、発生する。そして、一連の組合わせられた値が入力データの現在処理されているユニットについて暗号テーブルの１つを選択するために使用される。入力データの次のユニットが処理される時、一連の次の組合わせられた値がこの次のユニットを処理するために次の暗号テーブルを選択するために使用される。すなわち、この意味では、暗号テーブルの選択（テーブル選択ステップ）は、入力データの暗号化／復号化（データ処理ステップ）と同期する。
【００４７】
トラック・ミキサー２６から入手できる可能な組合わせられた値の数（すなわち、可能なテーブル選択数）は、暗号テーブル・バンク内の暗号テーブル２２の実際の数よりも大きいであろう。可能な選択数は、選択トラック数に、（可能なステップ・サイズ値＋可能なオフセット値）を掛け、選択トラックを組合わせるために使用された数学的演算の他の可能な数を掛けたものと同じほどに大きい。しかし、可能な組合わせられた値は、いずれの組合わせられた値が選択テーブルの１つと関連付けられるように暗号テーブル・バンク・サイズ（すなわち、暗号テーブルの数）にラップ・オンできる。例えば、組合わせられた値は、暗号テーブル・バンク中の暗号テーブルの実際の数を収容するために正及び負の方向へ共にラップできる。もし、２５６個のテーブルが使用される場合、例えば、ゼロに基づく番号システム（すなわち、暗号テーブル（０）乃至（２５５））を使用し、そして、組合わせられた値（２５８）が正方向にラップされる時は暗号テーブル（２）を選択する。組合わせられた値（−１０）が負方向へラップされる時は暗号テーブル（２４６）を選択する。選択値（５１２）はそれが正方向にラップされる時に暗号テーブル（０）を選択する。その他も同様である。ラッピング・プロセスを使用して、どんな組合わせられた値を暗号テーブルの１つ又はそれらのテーブル位置アドレスと関連付ける。
【００４８】
複数の暗号テーブル・バンクが使用でき、所望ならば、暗号テーブル・バンクはテーブル選択及び暗号化／復号化ステップと同期してスイッチ又は変更できる。このような暗号テーブル・バンク変更は、例えば、同期ステップへタイム・スタンピングすることにより、リアルタイム通信で自動的に実行できる。このようなバンク変更情報は、暗号／復号プロセスの際に使用できる又はリアルタイムで送信できそしてデータ・ストリームと同期して送信できる自動化機能として記憶される。
【００４９】
図７は、本発明の１つの実施の形態によるトラック・ミキサー２６による選択トラックの混合又は組合わせプロセスを概略的に示す。図７の下側に、例示として、図５と同様な図形表示の選択トラック２２０−２２６を示す。この例では、選択トラック２２０−２２６は、それぞれ、オーディオ・ノイズ・ファイル、オーディオ波形、変調源、及びループ化パスワードを使用して生成される。図７の上側に、最初の１６プロセス・ステップ（第１ステップ２４０と第１６ステップ２４２との間）についての選択トラック２２０−２２６の対応する一連２３０−２３６の実際の値を示す。上側部分の最初の行は暗号選択ステップ（ＥＴＳ）２５０を表示する。
【００５０】
図７に示すように、各ステップで、選択トラック２３０−２３６の対応する値は、一連の組合わせられた値２５２を生成するために組合わせられた（混合された）値に組合わせられる。この例では、組合わせられた値は対応する選択トラック値の和である。もし、暗号テーブル・バンクが２５６個の暗号テーブルを持つ場合、いくつかの組合わせられた値は暗号テーブルの数を超える。従って、上述したように、このように超過した数は正又は負にラップされる。各暗号テーブル・バンクはどのようにテーブル選択のラップが発生するかについての情報を含むことができる。
【００５１】
図８は、本発明の１つの実施の形態による入力（元の）データを暗号化データへ暗号化／復号化する方法を示す。最初に、暗号テーブル、選択トラック、及び選択トラック及びトラック・ミキサーのための他の設定パラメータの選択が、暗号化／復号化プロセス（３００）のために行われる。例えば、図６に示される設定スクリーン２００のような暗号化／復号化セッション・エディタ（ソフトウェア・ツール）が、この選択のために使用される。ここで、「暗号化／復号化セッション」は必要なコンポーネント（暗号テーブル・バンク、選択トラックなど）の特定の組とそれらの設定を使用して与えられた入力データについての暗号化／復号化操作を意味する。次に、入力データ、例えば、暗号化／復号化されるべきあるファイル又はデータ・ストリーム源が選択され（３０２）、そして暗号化／復号化プロセスのための操作モードが選択される（３０４）。例えば、暗号化又は復号化プロセス、リアルタイム処理、単方向、複数又は双方向通信が選択される。そして、選択されたプロセスが実行される。
【００５２】
図９Ａは、本発明の１つの実施の形態による暗号化操作のプロセス流れを概略的に示す。この暗号化プロセスは上記の装置２０又は装置２０を実現するどんなプログラム・モジュールを使用して実行される。各プロセス・ステップで、元のデータ３１０のユニット長が取られる。例えば、元のデータはユニットごとにファイルから読み取られるか、又は、データ・ストリームがデータ源（送信されるべきオーディオ／音声メッセージなど）からリアルタイムで受信されてユニットごとに取られる。ユニット長は、例えば、データ・ステップ・サイズ（この場合は８ビット）で指定されたビット数により分解される１バイトである。
【００５３】
上述したように、選択トラック３１２とトラック・ミキサー３１４を使用して、一連の組合わせられた値が生成されて、暗号テーブル・バンク３１８から暗号テーブルを選択するために使用される（３１６）。上述したように、現在選択された暗号テーブルを使用して、元のデータが暗号化され（３２０）、そして暗号化データ３２２が出力される。この暗号化プロセスの際、入力データのユニットを取ること及び暗号テーブルの選択が同期化され、そして、新しい暗号テーブルが元のデータの各ユニットに対して選択される（３２４）。
【００５４】
図９Ｂは、本発明の１つの実施の形態による復号化操作のプロセス流れを概略的に示す。この復号化プロセスは上記装置２０又は装置２０を実現するどんなプログラム・モジュールを使用して実行できる。各プロセス・ステップでは、暗号化データ３３０のユニット長が取られる。例えば、暗号化データはユニットごとにファイルから読み取られるか、又は、データ・ストリームがリアルタイム送信又は通信で受信されてユニットごとに取られる。ユニット長は、例えば、データ・ステップ・サイズ（この場合は８ビット）で指定されたビット数により分解される１バイトである。
【００５５】
上述したように、選択トラック３３２及びトラック・ミキサー３３４を使用して、一連の組合わせられた値が生成されて、暗号テーブル・バンク３３８から暗号テーブルを選択するために使用される（３３６）。上述したように、現在選択された暗号テーブルを使用して、暗号化データが復号化されて（３４０）、元のデータ３４２が出力される。しかし、復号化プロセスでは、暗号化値が暗号テーブルの行列セル内に見つけられ、そして、対応する元の値はそのセルの行−列位置により得られる。すなわち、１バイト・データ・サイズの場合、行位置は元のデータの第１のニブルを表し、そして、列位置は元のデータの第２のニブルを表す。従って、基本暗号テーブル・バンクを使用するこの実施の形態では、復号化プロセスは暗号化値に対する行列セルを探索することが必要である。しかし、暗号テーブル・バンクは以下に説明するように操作速度を最適化するために構成できる。この復号化プロセスの間、暗号化データのユニットを取ること及び暗号テーブルを選択することが同期化され、新しい暗号テーブルが暗号化データの各ユニットに対して選択される（３４４）。
【００５６】
図９Ａで説明された暗号化プロセス及び図９Ｂで説明された復号化プロセスは、別々に実行でき、又は、双方向通信又は取引において同時的に実行できる。
【００５７】
図１０は、本発明の１つの実施の形態による暗号化及び復号化プロセスの一例を概略的に示す。この例では、ユニット・データ長（ステップ・サイズ）は４ビット（１ニブル）である。図１０に示されるように、入力データは２進（ｂｉｎ）及び１６進（Ｈｅｘ）の両方で表され、そして暗号テーブルは各プロセス・ステップに対して列の形式であらわされる（ＥＴＳ）。元のデータストリング（ＡＤＤ７４７）３５２が、暗号化データストリング（１Ｂ４４Ａ）３５２へ暗号化される。暗号化データストリング（１Ｂ４４Ａ）３５２が、対応する暗号化ステップで使用されたのと同じ暗号化テーブルを使用して、元のデータ（ＡＤＤ７４７）３５４へ復号化される。
【００５８】
上記実施の形態で説明したように、正確に同じ暗号テーブル・バンクが暗号化及び復号化操作の両方に使用される（基本暗号テーブル・バンク）。しかし、もし、同じ暗号テーブル・バンクが復号化のために使用されると、復号化プロセスは、暗号化値と一致するセル値を探索するために、僅かに長い処理時間を有する（なお、大変高速ではあるが）。従って、基本暗号テーブル・バンクを使用して処理速度を最適化するために、暗号化／復号化プロセスは本発明の１つの実施の形態では逆方向へ動作することが可能である（逆オプション）。すなわち、暗号化プロセスは、図９Ｂに示される復号化プロセスのために使用される「逆」の態様で暗号テーブルを使用して実行できる（すなわち、元のデータ値に対する行列セル値を探索し、そして行−列位置から暗号化値を得る）。逆もまた同じである。したがって、暗号化装置又は復号化装置のいずれかの内の高速の方が、探索操作を含む僅かにより強度の処理を実行する。あるデータが暗号化フォーマットで記憶されていて、そして同じ装置でデータが検索され又は読み出される時に復号化処理が必要な場合、この逆オプションが基本暗号テーブル・バンクを用いて高速のデータ検索を可能にするために使用することができる。
【００５９】
本発明の１つの実施の形態によると、暗号テーブル・バンクは、互いに逆変換（反転ルックアップ）を提供する２組の暗号テーブルを含む（相補的暗号テーブル・バンク）。暗号テーブル・バンクは、共にデータ値を暗号化／復号化値へ変換するように構成された第１暗号テーブル（第１組）及び第２暗号テーブル（第２組）を含む。第１暗号テーブルの各々は第２組にその対応を持ち、対応の第２暗号テーブルは対応する第１暗号テーブルにより暗号化／復号化された暗号化／復号化値を元のデータ値に逆変換することができる。同様に、第１暗号テーブルの各々は対応する第２暗号テーブルにより暗号化／復号化された暗号化／復号化値を元のデータ値に逆変換することができる。
【００６０】
例えば、図３Ｂ中の暗号テーブル６０では、Ｂ５（ｈｅｘ）の行−列アドレス（入力データ値に対応する）は、９２（ｈｅｘ）の値を有する。従って、その対応する暗号テーブルは反転ルックアップ・テーブルを提供するために行−列アドレス９２（ｈｅｘ）にＢ５（ｈｅｘ）の値を有する。従って、対応暗号テーブルは６Ｄ（ｈｅｘ）の行−列アドレスに、４Ｅ（ｈｅｘ）の値を有する。このタイプの暗号テーブル・バンクは、同じ暗号テーブルが同じ方法で暗号化／復号化のために使用でき（探索操作なしに）、そして追加的なオーバーヘッドは暗号化又は復号化プロセスのいずれかに適用されるテーブル位置アドレスのためのオフセットだけである。
【００６１】
従って、本発明のこの実施の形態によると、第１及び第２暗号テーブルの各々は、テーブル位置アドレス、例えば、暗号テーブル・バンク位置、に関連付けられており、そして第２暗号テーブルは対応する第１暗号テーブルのそれとは所定量だけオフセットされたテーブル位置アドレスを持つ。このオフセットは、暗号テーブル・バンク中の暗号テーブルの数を２で割ったものに等しい。例えば、もし、暗号テーブル・バンク中に２５６個の暗号テーブルが存在すれば、オフセット値は１２６である。従って、もし、元のデータが暗号テーブル＃１０（又は、十進法でテーブル位置アドレス１０）を使用して暗号化された場合、データの復号化は暗号テーブル＃１３６（又は、十進法でテーブル位置アドレス１３６）を使用して実行される。これはオフセット値をラッピング（組合わせられた値をテーブル選択アドレスと関連付ける時）と共にテーブル位置アドレスに加えることにより行われる。すなわち、もし、バンク中に２５６個の暗号テーブルが存在する場合、１２８がそのアドレスに加えられて、２５６（もし、暗号テーブルが１−２５６として番号付けられている場合）の後にラップ・アラウンドして１へ戻る、又は、２５５（もし、暗号テーブルが０−２５５として番号付けられている場合）の後に０へ戻る。
【００６２】
リアルタイム通信（単方向又は双方向）でのデータ・ストリームの場合、反対端の装置は相対するオフセット手順を使用する。すなわち、例えば、もし、送信装置がその暗号化プロセスで暗号テーブル選択をオフセットする場合、受信装置はその復号プロセスをオフセットしない。同様に、もし、送信装置がその暗号プロセスにおいて暗号テーブル選択をオフセットしない場合、受信装置はその復号プロセスで暗号テーブル選択をオフセットする。すなわち、通信装置の内のどちらか１つのみがオフセットを使用する必要がある。
【００６３】
上述したように、本発明の１つの実施の形態によると、これらの暗号テーブル組の位置は、暗号テーブル・バンクの第１半分内の非反転のそれらに対応するテーブルに対して正確な相対的な位置の暗号テーブル・バンクの第２半分内に反転テーブルが置かれる態様でもって、暗号テーブル・バンク内に配列される。このタイプの暗号テーブル・バンク内の暗号テーブル位置を、簡潔さのために、６４の位置を持つ暗号テーブル・バンクを使用して説明する。
【００６４】
図１１Ａは、本発明の１つの実施の形態による、暗号化（送信）操作４００及び復号化（受信）操作４０２の間に相補的暗号テーブル・バンクを使用する暗号テーブル選択機能の一例を示す。６４のテーブル位置（１Ａ，１Ｂ，．．．，８Ｈ）は、対応する行−列アドレスでの行列セルにより表される（テーブル位置アドレス）。暗号テーブルはそれらのテーブル位置アドレス、すなわち、セル位置により識別されて選択される。暗号テーブル・バンクの第２半分（行５−８）は影が付けられている。
【００６５】
行１、列Ａ−Ｈ（すなわち、アドレス１Ａ乃至１Ｈ）上の暗号テーブルは、それらの反転した対応物を行５、列Ａ−Ｈ（すなわち、アドレス５Ａ乃至５Ｈ）にそれぞれ有する。同様に、行２、列Ａ−Ｈ（すなわち、アドレス２Ａ乃至２Ｈ）上の暗号テーブルは、それらの反転した対応物を行６、列Ａ−Ｈ（すなわち、アドレス６Ａ乃至６Ｈ）にそれぞれ有する。行３、列Ａ−Ｈ（すなわち、アドレス３Ａ乃至３Ｈ）上の暗号テーブルは、それらの反転した対応物を行７、列Ａ−Ｈ（すなわち、アドレス７Ａ乃至７Ｈ）にそれぞれ有する。行４、列Ａ−Ｈ（すなわち、アドレス４Ａ乃至４Ｈ）上の暗号テーブルは、それらの反転した対応物を行８、列Ａ−Ｈ（すなわち、アドレス８Ａ乃至８Ｈ）にそれぞれ有する。
【００６６】
例えば、入力データのユニットが送信操作（暗号操作４００中のイベント１）で暗号テーブル２Ａ（暗号テーブルはそのアドレスにより識別される）を使用して暗号化される時、暗号化データは同じ暗号テーブル・バンクを使用した受信操作で暗号テーブル６Ａを使用して復号化される（復号操作４０２中のイベント１）。図１１Ｂは、イベント１−８の暗号操作で使用される暗号テーブルと復号操作で使用されるそれとの関係を示し（左ボックス）、また、相補的行位置間の関係を示す（右ボックス）。
【００６７】
暗号テーブル・バンク（相補的テーブル・バンク）のこのタイプ及びテーブル位置ルックアップ方法を使用して、暗号テーブル中の探索プロセス無しに暗号テーブルの正確に同じバンクが暗号化及び復号化の両方のために使用できる。
【００６８】
図１２Ａ及び図１２Ｂは、図１１Ａ及び図１１Ｂと同様な本発明の別の実施の形態を概略的に示す。図１１Ａ及び図１１Ｂの上記実施の形態（相補的暗号テーブル・バンク）では、復号プロセスのための暗号テーブル（反転テーブル）は、データの暗号化のために使用された暗号テーブルから所定のオフセットにより得られる。この実施の形態では、暗号テーブル・バンクも第１暗号テーブル及び同数の対応する第２暗号テーブル（すなわち、第１暗号テーブルの反転テーブル）を含む。しかし、反転テーブルは、全ての暗号テーブルが同じ暗号テーブル・バンク中にそれに対応する反転テーブルを持つ限り、暗号テーブル・バンクのどんな位置／アドレスに置くことができる。また、この暗号テーブル配置もテーブルの同じ組を送信／暗号化側及び受信／復号化側に置くことを可能にするが、暗号テーブル・バンク中に含まれる暗号テーブルと同じ大きさの２つの追加のルックアップ・テーブルを必要とする。余分の１つのルックアップ・テーブルは送信／暗号プロセスのために使用され、他は受信／復号プロセスのために使用されて、そして各ルックアップ・テーブルは対応する反転テーブル位置へのマッピング（又は再指向）を提供する。
【００６９】
図１２Ａは、暗号化（送信）操作４０４及び復号化（受信）操作４０６の際に再指向暗号テーブル・バンクを使用する暗号テーブル選択機能の一例を概略的に示す。ここでは、反転テーブルは異なる行で同じ列に位置している（すなわち、行再指向）。図１２Ｂは、イベント１−８に対して暗合操作で使用される暗合テーブルと復号操作で使用されるそれとの間の関係を示し（左ボックス）、また、図１２Ａに示される再指向暗合テーブル・バンクに対して再指向行位置の間の関係を示す（右ボックス）。実際の適用では、反転テーブルの探索は行再指向ではなく単一セル再指向とするこができる。また、再指向マッピングはどんなタイプのテーブルに適用でき、そして反転ルックアップ組を持つテーブルに限定されない。
【００７０】
本発明の１つの実施の形態によると、１つが暗号化のため、そして他が復号化のための２組のテーブル・バンクを提供できる。すなわち、第１暗合テーブル・バンクは元のデータ値を暗号化値へ変換するように構成された暗号テーブルを含み、そして第２暗合テーブル・バンクは暗号化値を元のデータ値へ変換するように構成された暗合テーブルを含む。第１暗合テーブル・バンクは、暗号化のみ又は暗号化データの送信のみに使用される、暗合テーブルの全組である。第２暗合テーブル・バンクも、第１暗合テーブル・バンクの反転テーブルの全組であり、そして、対応する反転テーブルは第１暗合テーブル・バンク中の非反転暗合テーブルのアドレスと正確に同じアドレスに位置する。各反転テーブルは与えられた暗号テーブルから上述したのと同じ方法で得ることができる。復号プロセスのための専用の別の暗合テーブルを提供することにより、復号側の探索プロセスを無くすることができ、よって、復号プロセスは暗合プロセスと同じ高速に実行される。この方法は、最高速のルックアップを可能にするが、相対する暗号／復号プロセスを実行する時、全反転テーブル・バンクを使用することが必要である。
【００７１】
また、暗合テーブル・バンク最適化のタイプは、上記した設定スクリーン２００（図６）を使用して選択できる。さらに、上述の暗合テーブル及び他のルックアップ・テーブルはデジタル的にサインされたデータ（ハッシュ関数を使用して）又はサインされないデータが本発明を実現した装置又はソフトウェアと互換可能になるように変換できる。
【００７２】
本発明の１つの実施の形態によると、トラック・ミキサー２６の１つ又は複数の操作、選択トラック生成器３８、及びさまざまなパラメータの設定の操作は、暗号化／復号化操作の前に前処理してもよい。このような前処理オプションは本発明の応用に従い選択できる。例えば、複数のソース・ファイルの選択、各選択トラックの一連の値の生成、選択トラック値の修正、数学的演算の選択、及び、対応する値の組合わせなどの１つ又は複数は前処理でき、そして、結果として得られたデータをメモリに記憶できる。さらに、値オフセット、ステップ・オフセット、ファイル・セグメント検索の設定などの機能は所望ならば前処理できる。このような前処理はより高速な暗合化／復号化性能を提供する。
【００７３】
本発明の１つの実施の形態によると、暗号化／復号化プロセスで使用されるコンポーネント、ファイル、及び他のデータと情報はさまざまなファイルへグループ化できる。例えば、「セッション・ファイル」は、１つの暗号化／復号化セッションを完全に再構成するために必要（かつ十分）な全てのコンポーネントを含むことができる。例えば、セッション・ファイルは、暗合テーブル・バンク、全ての選択トラック、及びそれらの設定パラメータを含む。セッション・ファイルは選択トラックを生成するために使用されるどんなソース・ファイルを含まない。しかし、いずれかの設定パラメータは追加の安全対策のために除外されてもよい。「セッション・マスター・ファイル」は１つの暗合化／復号化セッションを完全に再構築するのに必要な全てのコンポーネント、及び、プロセスで使用されるどんなコンポーネントを含むことができる。例えば、セッション・マスター・ファイルは、暗合テーブル・バンク、全ての選択トラック、及び、それらの設定パラメータ、及び全てのソース・ファイルを含む。さらに、「セッション・パケット」は、安全のために除外されたどんな設定パラメータを除いて、セッション・マスターと同じコンポーネントを含んでよい。「暗合テーブル・バンク」は、暗合テーブルのグループ、例えば、２５６、５１２、１０２４、２０４８又は４０９６個の暗合テーブルを含む。暗合テーブル・バンクは、上述したように、テーブル選択のラッピングがどのように発生するかについての選択を含むことができる。また、「トラック・パケット」は、どんなソース・ファイルを含む、選択トラックの組を完全に再構築に必要な全てを含むが、いずれの設定値は、追加の安全の目的のために、空のままにしてよい。「単一テーブル」は、例えば、２５６バイト配列の単一暗合テーブルを含む。「テーブル選択トラック」は、選択トラックを複製するために使用される全ての値、設定パラメータ、及びデータ記述を含んだ大変小さいファイルである。保存操作の際、いくつかのオプションがこのデータの全ての部分又はどんな部分をも含むために提供できる。そして、オプションとして、この選択トラックに関連したどんなファイルもトラック・パケットに追加できる。
【００７４】
さらに、所望ならば、ファイルを見て、編集し、そして編集したファイルを保存するためヘックス編集ウインドウ中にファイルを表示するヘックス・エディターが使用できる。ヘックス・エディター・ウインドウは、１６バイトの１６進（ベース１６）データが続くアドレス列及び右側に列に行の１６バイトのヘックス・データに対して等価の対応するアスキー文字の表示が続くものとしてファイルを表示する。ヘックス又はアスキーは所望ならば編集でき、そして編集されたデータは保存される。選択トラックのグラフイック表示に対しては、波形エディタも使用できる。波形エディタは、ファイル（選択トラック）を見て、編集して、所望ならば編集されたファイルを保存するためにグラフィカル波形ウインドウ内に表示する。ファイルのアドレス（プロセス・ステップ）は水平軸である。より低いアドレスは左側で、より高いアドレスは右側である。データの各ステップの値は垂直軸上に示される。より低い値は底であり、より高い値は頂上である。ステップ・サイズは、８ビット、１６ビット、２４ビット、３２ビット等である。典型的に、８又は１６ビットが使用される。ファイルは所望ならばいくつかの描画ツールにより編集でき、そして編集されたファイルが保存される。
【００７５】
図１３は、本発明の１つの実施の形態による装置５０２上の暗合器／復号器を自動的に設定するためのシステム５００を概略的に示す。システム５００は、セルラー電話システム、無線又は有線ローカル・エリア・ネットワーク（ＬＡＮ）、共有ファイル・サーバー・システム（ダウンローディング及び／又はアップローディング・ファイル）、ライブ・ブロードキャステイング・システム、ボイス・オーバーＩＰ及びリアルタイム転送を使用したいずれのシステムであってよい。装置５０２はデータを暗号化／復号化できる。図１３に示すように、装置５０２は、装置に独特な識別コード５０４、及び、識別コードに関連した暗合化／復号化ファイル（設定ファイル）５０８を含んだ第１データベース・メモリ５０６を含む。また、装置５０２は、第１データベース・メモリ５０６上の暗号化／復号化ファイル（設定ファイル）とは異なる少なくとも１つの第２暗号化／復号化ファイル（セッション・ファイル）を記憶するように指示された第２データベース・メモリ５１０を含む。
【００７６】
識別コード５０４は、特定の物理的装置又は仮想的装置（ソフトウェア内で生成される）又はプログラム・モジュールを暗号化／復号化ファイルの指定された組へ関連付けることができる。識別コードは、デジタル・データと相互作用する又は応答するどんな装置（物理的又は仮想的）の一部として生成できてそれに関連付けることができる。装置５０２は、限定的ではなく、セルラー電話機及びその他の通信装置、クレジット・カード、外部記憶装置、ユニバーサル・スタンダード・バス（ＵＢＳ）装置などのプラグイン装置、ファイヤウォール装置、完全なコンピュータ装置、ビデオゲーム・コンソール、エンターテインメント・ボックス、ハンドヘルド装置、コンピュータ上に存在するソフトウェア・モジュール又は個別プログラム等を含む。
【００７７】
設定ファイル５０８は、第１の複数の暗合テーブル（暗合テーブル・バンク）及び第二の複数の選択トラックを含む。上記の実施の形態と同様に、暗合テーブルの各々はデータ値を暗号化／復号化値へ変換することができる。データ値はデータのユニットに対応し、そして暗号化／復号化値は暗号化／復号化データのユニットに対応する。蒸気のいずれかの暗合テーブル・バンクは設定ファイルのために使用できる。選択トラックの各々はあるパターンを持った一連の値を含む。設定ファイル５０８はさらに、各選択トラックの値を修正しそして各選択トラックを他のトラックと組合わせる方法を決定することができる設定パラメータの組を含む。
【００７８】
また、装置５０２は、トラック・ミキサー・モジュール及び暗号化／復号化モジュール（図示しない）を含む。トラック・ミキサー・モジュールは、第１データベース・メモリ５０６へ結合され（そして、第２データベース・メモリ５１０へ）、そしてパラメータに従い一連の組合わせられた値を生成するために選択トラックの対応する値を組合わせるように構成されている。暗号化／復号化モジュールは、第１データベース・メモリ５０６へ結合され（そして、第２データベース・メモリ５１０へ）、そしてトラック・ミキサー・モジュールへ、そしてデータの各ユニットを暗号化／復号化データの各ユニットへ一連の組合わせられた値中の組合わせられた値に従いそのユニットに対して選択された暗合テーブルを使用して変換するように構成されている。
【００７９】
設定ファイル５０８は、送信のために別の暗号化／復号化ファイル（セッション・ファイル）を暗号化し、又は、暗号化されたフォーマットで受信された別の暗号化／復号化ファイルを復号化するように構成されている。典型的に、設定ファイル５０８は、セッション・ファイルとして同じ要素とデータ・タイプを含み、典型的に認証及びセッション・ファイルの他の組を安全に送信するために使用される。大変小さいメモリを持つ装置では、設定ファイル５０８はセッション・ファイルとしてさえ機能する。この場合、装置は第２メモリ５１０のためのメモリ空間を持たないであろう。より大きなメモリを持つ装置は複数のセッション・ファイルを維持できる。
【００８０】
識別コード５０４自身は、選択トラック及びトラック・ミキサーを使用して生成できることに注意する。従って、装置５０２は、識別コード５０４をそのまま含む代わりに、この目的のために少量のデータ（選択トラック及び／又は設定パラメータ）の組を含むことができる。識別コード５０４のための選択トラック及び／又は設定パラメータは、設定ファイル５０８の一部、又は、設定ファイル５０８からは分離されたデータ組であってよい。この方法では、所望のどんな長さ（大変長くできる）の識別コード５０４を少量のデータの組（選択トラック）から生成できる。
【００８１】
識別コード５０４及びそれと関連した設定ファイル５０８を使用して、暗合器／復号器は以下に説明するように証明サイト５１２から自動的に装置５０２上で設定される。証明サイト５１２は、コンピュータ・ネットワーク（近い又は遠い）を介して、インターネットを介して、無線通信等を介して、装置５０２と通信可能なサーバー又はメイン・コンピュータであってよい。証明サイト５１２は、装置５０２及び他の装置、例えば、装置５２０と５２２を含む証明サイト５１２と通信する複数の装置のための設定ファイル５１６を維持する。設定ファイル５１６は、対応する装置の識別コードと関連している。
【００８２】
自動的設定プロセスにおいては、証明サイト５１２は最初に識別コード５０４を例えば装置５０２から受信する。識別コード５０４と関連した設定ファイル５１６ａが設定ファイル５１６を含むデータベース・メモリから検索される。設定ファイル５１６ａは設定ファイル５０８と同一である。証明サイト５１２は、例えば、擬似乱数生成器を使用して装置５０２のためのセッション・ファイルを自動的に生成（集合）する。例えば、暗合テーブルの組は、装置５０２のための暗合テーブル・バンクを集合するために複数の暗合テーブルの中から（又は、暗合テーブルの母組から）選択される。暗合テーブルを選択する際、ソース・ファイル４０、選択トラック生成器３８、及び上述した（図２中の装置２０で）トラック・ミキサーは擬似乱数生成器として使用できる。また、既成選択トラック２４及びトラック・ミキサー２６が擬似乱数生成器として使用できる。一連の組合わせられた値に基づいて暗号テーブルを選択する同じ方法が、暗合テーブルの小組を生成するために使用できる。
【００８３】
また、選択トラックの組は複数の選択トラックの中から選択される。選択トラックの母組はデータベースに既に記憶されていてよい。そうでなければ、選択トラックの組は、暗合テーブル選択と同じ方法でソース・ファイル４０を選択しそして各トラックについてパラメータを設定することにより、選択トラック生成器３８を使用して新規に生成してよい。ソース・ファイルは、ファイル、パスワード、オフセット、テーブル、及び他のデータのライブラリイから得られる。さらに、選択された選択トラックの設定パラメータの組も、同じ方法でパラメータの対応する母組から選択される。これらの選択プロセスは、上述したように擬似乱数生成器を使用して、又は、このような選択プロセスを実行できる専門ツール（ソフトウェア・モジュール）を使用して行われる。
【００８４】
暗合テーブル、選択トラック、及び設定パラメータの選択された組は、自動的に生成されたセッション・ファイル５１８ａを形成する。そして、セッション・ファイル５１８ａは設定ファイル５１６ａを使用して暗号化され、装置５０２へ送信される。また、セッション・ファイル５１８ａは識別コード５０４との関連性と共に証明サイト５１２に記憶される。
【００８５】
装置５０２は、暗号化されたセッション・ファイル５１８ａを受信して、それを設定ファイル５０８を用いて復号化し、そしてそれをこのようなセッション・ファイルを記憶するために指定された第２データベース・メモリ５１０内に記憶する。
【００８６】
本発明の１つの実施の形態によると、装置５０２が既に持っているいくつかのコンポーネントがセッション・ファイル５１８ａの一部として使用できる。例えば、装置５０２はセッション・ファイルのそれと同じタイプのコンポーネント及び／又はファイルを含む設定ファイル５０８を持つから、コンポーネント及び／又はファイルの全て又はいくつかはセッション・ファイルの一部として使用できる。この場合、証明サイト５１２がセッション・ファイル５１８ａを生成する時、それはまた設定ファイル５１６ａの中からコンポーネントを選択する。例えば、セッション・ファイル５１８ａは設定ファイル５１６ａ（すなわち、５０８）の選択トラックの全て又はいくつか及び１つ又は複数の追加の選択トラックを使用してもよい。この方法では、追加の選択トラック及びどの選択トラックが使用されるべきかの指示のみが暗号化されて、セッション・ファイル５１８ａに関する情報として装置５０２へ送信される。セッション・ファイル５１８ａに関する情報は、設定ファイルのどの暗合テーブルが使用されるべきかの指示（全暗合テーブル・バンクでもよい）及び選択トラックの新しい組、既存の選択トラックの使用の指示及び設定パラメータの新しい組、どの選択トラック及び設定パラメータが使用されるべきかの指示及び暗合テーブルの新しい組、又は、これらの組合わせを含む。この実施の形態では、装置５０２はセッション・ファイル５１８ａの新しいコンポーネントの全部を記憶する必要がない。それはシステム上に既に存在するコンポーネントを利用できる。
【００８７】
他の装置５２０、５２２等は、装置５０２と同様にして設定できる。１つの装置５０２が安全な方法で別の装置５２０と通信したい場合、それらは証明サイト５１２を経由してできる。例えば、装置５０２は、上述しように、その識別コード５０４を使用して証明サイト５１２との通信を開始し、そして装置５２０との安全な通信を要求する。証明サイト５１２は装置５０２のためのセッション・ファイル５１８ａを生成して、上述したように、それを設定ファイル５１６ａを使用して装置５０２へ安全に送信する。また、証明サイト５１２は装置５２０（すなわち、その識別コード５２４）に関連した設定ファイル５１６ｂを検索し、セッション・ファイル５１８ａを設定ファイル５１６ｂを用いて暗号化し、それを装置５２０へ送信する。装置５２０内の設定ファイル５２６は設定ファイル５１６ｂと同一であるから、装置５２０は装置５０２との安全な通信のために使用する暗号化セッション・ファイル５１８ａを受信して成功的に復号化する。このようにして、装置５０２と装置５２０は異なる設定ファイルを持つが、それらは安全に通信することができる同じセッション・ファイル５１８ａを持つことができる。
【００８８】
もし、指定されたメモリ５１０が十分に大きければ、装置５０２は装置５２０と通信するためにセッション・ファイル５１８ａ、及び、例えば、別の装置５２２と通信するために証明装置５１２により同様に生成された別のセッション・ファイルを維持してもよい。セルラー電話機の場合、このようなセッション・ファイルは呼出し番号との関連性と共に記憶してもよい。
【００８９】
例えば、装置５２２がセッション・ファイルを生成するために十分なメモリと計算能力を持つ場合、装置５２２は証明装置５１２と同様に操作でき、そして、装置５０２は安全な通信のために直接的に装置５２２と通信できる。
【００９０】
この実施の形態によると、識別コード及びそれと関連した特定の設定ファイルを使用して、１つ又は複数の追加のセッション・ファイルが遠隔の場所から安全に送信される。ＡＥＳなどの方法のレガシー・サポートを必要とするシステムについてさえ、そのシステムへの安全キー・コードの送信は上述した暗号化／復号化方法を利用することで達成できる。
【００９１】
図１４は、本発明の１つの実施の形態による設定ファイル及びセッション・ファイルのためのバックアップ・システムを概略的に示す。特定の識別コードに関連したセッション・ファイルを構成するさまざまなコンポーネント及びデータは、保護の冗長レイヤーとしてどんな数の証明サイトに記憶できる。例えば、図１４に示すように、証明サイト５４２が装置５４０のためのセッション・ファイル５４４を生成する時、全セッション・ファイル５４４は証明サイト５４２に記憶できる。さらに、全セッション・ファイル５４４又はその一部は１つ又は複数の他の証明サイト５４６及び５４８に記憶できる。例えば、選択トラックに対する設定パラメータ（選択トラック・データ）は、１つ又は複数の異なる証明サイトに記憶でき、そして元の証明サイト５４２は選択トラック・データの代わりに他の証明サイトへのポインタ５６０を記憶する。さらに、追加の安全策のため、装置５４０は選択トラック・データ無しにセッション・ファイルを受信し又は維持し、そして、必要な時に選択トラック・データを得る。選択トラック・データは元の証明サイト５４２から、元の証明サイト５４２を介して他の証明サイトから、又は、他の証明サイトから直接に得ることができる。これらの証明サイトは、例えば、コンピュータ・ネットワーク、無線通信、インターネット等を経由して装置５４０からアクセスできる。図１４に示すように、装置５４０は、必要なファイル又はデータを記憶している証明サイトを指示するポインタ５５０を持つことができる。
【００９２】
本発明の１つの実施の形態によると、どの１つの証明サイトも完全なセッション・ファイル５４４を維持しない。しかし、セッション・ファイル５４４は分割されていくつかの証明サイト、例えば、証明サイト５４２、５４６及び５４８、に分散される。例えば、選択トラックは、第１選択トラックが証明サイト５４２に記憶され、第２選択トラックが証明サイト５４６に記憶され、第３選択トラックが証明サイト５４８に記憶され、第４選択トラックが証明サイト５４２に記憶される等のように、分散できる。暗合テーブル・バンク、設定パラメータ、ソース・ファイルなどのどんな他のコンポーネント又はファイルも同様な方法で分散でき、又は、コンポーネント毎に異なる証明サイトに記憶できる。さらに、上述したある回転分散スキームを利用して、このような分散されたバックアップ・ファイルが自動的にセッション・ファイル５４４のために生成できる。この実施の形態によると、証明サイトの１つが完全なセッション・ファイルを持たないため、もし１つの証明サイトが攻撃されて（仮想的又は物理的に）、その情報が盗まれても、攻撃者はコードを破るためにセッション・ファイルを再構成することはできない。さらに、セッション・ファイルを分割して分散する時、例えば、ある理由により証明サイトの１つが利用不可能になる場合に備えて、セッション・ファイルの各コンポーネントを冗長性を与えるために複数の場所に維持してもよい。
【００９３】
さらに、本発明の１つの実施の形態によると、さまざまな選択トラックがオンライン仮想文字の在庫の部分として記憶できる。従って、選択トラックの完全な組の集合はそのコンポーネントをトラック・ミキサー上に置くために仮想空間に各文字が合うようにすることが必要であり、暗号化／復号化キーとして動作する正確に一連の組合わせられた値を生成する。このプロセスは、あるタイプのグループ安全性手段を与える。
【００９４】
図１５は、本発明の１つの実施の形態による装置６０１の認証方法を示す。認証されるべき装置６０１は、例えば、前の実施の形態で説明された装置５０２であり、セルラー電話機及び他の通信装置、クレジット・カード、外部記憶装置、ユニバーサル・スタンダード・バス（ＵＳＢ）装置などのプラグイン装置、ファイヤウォール装置、完全なコンピュータ・システム、ビデオゲーム・コンソール、エンターテインメント・ボックス、ハンドヘルド装置等を含む。装置６０１は、装置に独特な識別コード及び上述したように識別コードに関連した設定ファイル６１８を持つ。
【００９５】
図１５に示すように、認証されるべき装置６０１は、その識別コードを証明サイト６０３に送信する（６００）。証明サイト６０３は装置６０１から識別コードを受信し（６０２）、識別コードに関連した設定ファイルを設定ファイル６０４を含んだデータベース・メモリから検索する（６０６）。証明サイト６０３は一連の値を生成して装置６０１へ一連の値を送信する（６０８）。一連の値は任意又は擬似乱数的に選択されたデータ・ストリングである。証明サイト６０３では、一連の値が検索された設定ファイル６１２を用いて暗号化され（６１０）、そして第１チェック・サムが暗号化された一連の値から計算される（６１４）。例えば、第１チェック・サムは暗合化された一連の値の各バイトを加算することにより得られる。しかし、チェック・サムはどんな数学的関数を使用して得ることができ、また、複数のチェック・サムが使用できる。
【００９６】
装置６０１は一連の値を受信し（６１６）、そしてそれ自身の設定ファイル６１８を用いて一連の値を暗合化する（６２０）。設定ファイル６１８及び設定ファイル６１２は共に同じ識別コードに関連しており、従って、同一である。装置６０１も証明サイトと同じ方法でチェック・サム（第２チェック・サム）を計算して（６２２）、それを証明サイトに戻す（６２４）。
【００９７】
証明サイト６０３は、装置６０１からチェック・サムを受信し（６２６）、そして受信されたチェック・サムが計算されたチェック・サムと一致するかどうかを決定する（６２８）。もし、２つのチェック・サムが一致しなければ、装置６０１は認証を失敗して、エラー・メッセージが送信される（６３０）。もし、２つのチェック・サムが一致した場合、証明サイト６０３は装置６０１を認証し（６３２）、そして安全通信又は取引が開始される（６３４）。上述したように、どんな数学的関数を使用して導出できるいかなる数のチェック・サムも、冗長性とより安全な証明及び認証プロセスを提供するために使用できる。
【００９８】
この認証方法は、上述したシステム５００のようなさまざまなシステムで使用できる。この実施の形態では、特定の識別コードが使用されるから、口座番号又はパスワードなどの重要な情報は電話回線、インターネット、又は、他の通信チャンネルでは転送できない。従って、本発明の実施の形態はより安全な取引を提供する。
【００９９】
クレジット・カード取引又は銀行取引などの取引では、例えば、識別コードは商人識別コード又は顧客識別コードであってよい。銀行又はクレジット・カード取引では、商人（銀行）識別コードはローカル銀行マシンに存在し、そして顧客識別コードは顧客口座番号と共に顧客のクレジット・カード上に記憶されてよい。カードを操作する時、口座番号と識別コードの両方が銀行マシン上のローカル暗合化装置を使用して読まれる。しかし、識別コードのみが他のパーティ（又は、銀行のメイン・コンピュータ又はサーバーなどの証明サイト）へ送信される。
【０１００】
証明サイトでは、顧客の実際の口座番号が識別コードを使用して検索されて、上述した選択トラックの１つを生成するためにソース・ファイルとして使用される。さらに、顧客のＰＩＮ又はパスワード（識別コードと関連した）も証明サイトで別の選択トラックを生成するために使用される（これもクレジット・カードに対する元の設定ファイルの選択トラックである）。この方法で、特定の顧客の設定ファイルが暗合プロセスに使用するために検索され、又は、再構築される。装置（この例のクレジット・カードなど）が大変小さいメモリを持つ場合、設定ファイルは上述したようにセッション・ファイルとして使用できる。いずれの場合も、チェック・サムのみが取引を確認するために装置へ戻される。
【０１０１】
本発明の１つの実施の形態によると、選択トラックの各々はキー長を持ち、これによりトラックのあるパターンが繰返される。好ましくは、ある選択トラックのキー長は別の選択トラックのキー長と異なるか、又は、少なくとも１つのキー長が別のものと異なる。本発明の１つの実施の形態では、どのキー長も別のキー長に２nを掛けて得られるものではなく、又は、別のキー長を２nで割ることにより得られるものではない。ここで、ｎは整数である。本発明の１つの実施の形態によると、キー長間の差はキー長よりも実質的に小さい。すなわち、選択トラックは同様な（近い）キー長を持ち、そしてそれらの間の差は相対的に小さい。例えば、キー長は、９９９、１０００、及び１００１である。また、これらのキー長は、別のキー長に２nを掛けることにより、又は、別のキー長を２nで割ることにより得られないという、上記条件を満足する。典型的に、キー長は全ての選択トラックが異なるキー長を持つように選択される。しかし、同じキー長又は相対的に小さなキー長を持つ余分な選択トラックが選択トラックのさらなる混合のために追加されてもよい。
【０１０２】
本発明の１つの実施の形態によると、上述したように、互いに平方でも部分でもなく、また、各々が異なる長さの小さなデータ部分が不定回数繰返される（すなわち、それぞれのデータ・パターンが繰返される又はループするキー長が互いに等しくない）複数のデータ・ストリームを組合わせることにより、極端に長い独特なデータ・ストリームが生成できる。独特なデータ・ストリームは全ての個別のデータ部分がそれらの開始に戻る点までそれ自身を繰返さない。そして、この点が極端に長いキー長を与える（導出されたキー長）。したがって、この暗合方法は暴力攻撃又は導出されたキーを発見することを不可能にする。
【０１０３】
上述したように、暗合テーブルを選択するための一連の組合わせられた値は、パスワード又はあるオーディオ・ノイズ・ファイルなどの小さなソース・ファイルから生成される。しかし、実際は、どんな大きさのファイルも使用できる。以下の例及び公式では、どのキー長も別のキー長に２nを掛けたり又は別のキー長に２nで割ることにより得られない（換言すると、キー長間にはオクターブ関係がない）と仮定し、そして、この結果がＡＥＳ技術を使用して得られた可能なキー数と比較される。
【０１０４】
異なるキー長の選択トラックを混合することにより生成された一連の組合わせられた値のループバック・ポイント（ビットで）は、バイトでの各トラックのキー長をバイトで互いのトラックのキー長で掛算し（各トラックに対して）、そして８を掛算することにより（各バイトのビット数）、導かれる。この結果は、それ自身が繰返す前に一連の組合わせられた値を構成するビット数（Ｎ）を表す。従って、導出されたキーの可能な組合わせ数は、２Nで与えられる。
【０１０５】
（例１）
２０，０００バイト、１９，９９９バイト、及び１９，９９８バイトのキー長を持つ３つの選択トラックは、導出されたキー長Ｎ＝（２０，０００）ｘ（１９，９９９）ｘ（１９，９９８）ｘ８＝６３，９９０，４００，３２０，０００を生成する。従って、導出されたキーの可能な組合わせは、２63,990,400,320,000存在する。さらに、攻撃者が導出されたキー長自身を知るためには、攻撃者は個別の選択トラックの全てのキー長を知らなければならない。そして、可能なキー長の何兆の組合わせを検査しなければならない。そして、これらの可能なキー長の各々について膨大な可能なキー組合わせを検査しなければならない。
【０１０６】
（例２）
４０，０００バイト、２６，６８０バイト、３９，８７５バイト及び４７，８６０バイトのキー長を持つ４つの選択トラックは、導出されたキー長Ｎ＝（４０，０００）ｘ（２６，６８０）ｘ（３９，８７５）ｘ（４７，８６０）ｘ８＝１６，２９３，３０５，２４８，０００，０００，０００を生成する。従って、導出されたキーの可能な組合わせは、２16,293,305,248,000,000,000存在する。
【０１０７】
（例３）
１，０００バイト、９９２バイト、９７５バイト及び８３２バイトのキー長を持つより小さな選択トラックは、導出されたキー長Ｎ＝（１，０００）ｘ（９９２）ｘ（９７５）ｘ（８３２）ｘ８＝６，４３７，６８３，２００，０００を生成する。従って、導出されたキーの可能な組合わせの数は、２6,437,683,200,000存在する。
【０１０８】
もし、既存の選択トラックの１つと等しいキー長を持つ余分の選択トラック、例えば、例３で１，０００バイトのキー長を持つ第５のトラックが追加されると、この追加は可能な組合わせの数を増加しないことに注意する。なぜならば、同じキー長は一連の組合わせられた値中の「ルックバック・ポイント」を変えないからである。しかし、別の分割又はキー長と等しい余分な選択トラックの追加は暴力攻撃に対する保護を増加しないが、このような追加は、データを復号化するために混合選択トラック値（すなわち、一連の組合わせられた値）中に存在すべき値を追加するため、パスワード保護又は追加の安全コンポーネントとしてなお有用であり、従って、保護の追加のレイヤーを提供する。
【０１０９】
例に使用されたキー長及びこれらの数は例示であり、どんな意味でも限定的又は網羅的であることを意図しない。しかし、異なるキー長を持つ少なくとも３つの選択トラックを使用することが好ましい。
【０１１０】
ＡＥＳと比較すると、本発明の１つの実施の形態による暗合化／復号化システムの強さが理解できる。ＡＥＳは、１２８ビット、１９２ビット、及び２５６ビットの３つのキー長を使用する。キーの可能な組合わせ数は、それぞれ、２128、２192、２256のみである。十進法では、これらの数は、１２８ビット・キーについては、２128≒３．４ｘ１０38、１９２ビット・キーについては、２192≒６．２ｘ１０57、２５６ビット・キーについては、２256≒１．１ｘ１０77、である。これと比較して、ＤＥＳキーは５６ビット長であり、約７．２ｘ１０16の可能なＤＥＳキーが存在することを意味する。
【０１１１】
本発明による可能なキーの組合わせ数の２のべき乗とＡＥＳのそれとを比較すると、当業者には理解されるように本発明による暗合システムはどんな暴力攻撃によっても事実上破壊されない。さらに、暗合テーブルは、データの１バイト又は一連のバイト又はニブル又はそれ以下の新しい各ユニットに対して変更できる。
【０１１２】
さらに、本発明による暗合システムにより暗合化されたコードを破壊するために（暴力攻撃以外により）、攻撃者はセッション・ファイルを再構成するために全てのコンポーネント及びパラメータを持たなければならない。上述したように、これらのコンポーネント及びパラメータは同じ場所に記憶されているとは限らず、コンポーネント及びパラメータの一部は装置中に前もってインストールされていて、通信チャンネルを介して送信されない。さらに、このようなコンポーネント及びパラメータは必要ならば別々に送信でき（個別に又はグループで）、又は、全てのパーティがそれらのコンポーネントを提供した時にだけ暗合化情報が復号できるように複数の仮想又は現実のエンティテイ又はパーティ間に分配できる。さらに、どんな数のパーティも同じ暗合／復号スキーム（すなわち、同じセッション・ファイル）を共有できる。
【０１１３】
また、データはメモリ又はどんな記憶装置内に記憶されている時は暗合化されたままに留まることができ、そしてそれが読み出される又は使用される時に容易に復号化される。例えば、記憶装置から暗合化データを読み出す時、暗合化／復号化プロセスのための全てのコンポーネント及びパラメータは、パスワードタイプ・スクリーンを介して必要なデータ又は情報を入力することにより開始できる。そして、暗合化／復号化プロセスは、ログオフ、時間切れ、又はクローズ命令等のユーザ定義イベントが発生するまで、セッション中、アクティブに留まる。
【０１１４】
さらに、システム・クロック、例えば、年、月、日、時間、分（例えば、２００３０７２７）などの日付情報は、時間制限キーを生成するための選択トラックとして使用できる。システム・クロック・データの全て又はどんな部分（月及び日、時間のみ等）は、選択トラックの生成のために使用できる。この値は手動で又は自動で予め設定でき、それに適用できる数学関数（乗数等）を持つことができる。例えば、システム・クロックの日付データが選択トラックとして使用される時、ある日付により暗合化されたデータは、復号化操作も変化するシステム・クロックを使用しているから、同じ日付でのみ復号化される（システム・クロックが同期化されていると仮定する）。もし、前もって設定された日付暗合化のために使用されると、復号化はその前もって設定された日付でのみ可能である。同様に、もし、ある日付と時間（２４時間システム）を含む時間スタンプが選択トラックとして使用されると、暗合化データはその日の特定の時間の間のみ読むことができる。このようにして、どんな重要な情報を限られた及び／又は指定された期間の間のみ復号化可能又は読取可能にできる。さらに、どんなタイプのカウンタも選択トラックとして使用できる。例えば、もし、カウンタのＭＳＢが選択トラックとして使用されると、キーは、例えば、カウンタが同じ暗合化ファイルへアクセスする数、暗合化／復号化セッションの数等を数えたイベントの限定された回数の間のみ有効である。
【０１１５】
さらに、上述したように、どんな長さのデータ（文字的にメガバイトのデータ）は、各々があるキー長を持ついくつかの少量のデータ（すなわち、選択トラック）から生成できるから、選択トラック及び設定パラメータの特定の組合わせが特定のデータを生成する時、この暗合化方法はデータ圧縮技術として使用できる。
【０１１６】
さらに、本発明は、本発明により暗合化／復号化されデータをファイヤウォール又はフィルタを通過できるようにすることにより、ファイヤウォール・システム及び／又は電子メール・フィルタリング・システムの一部として使用できる。電子すかし又はデジタル署名もセッション・ファイル及び暗合化された出力ファイルに組み込むことができる。
【０１１７】
本発明の実施の形態及び応用が説明されたが、本明細書を読んだ当業者にはさまざまな修正がここに開示された本発明のコンセプトから逸脱することなく可能であることが明らかである。従って、本発明は請求項の精神を除いて制限されるべきでない。
【図面の簡単な説明】
【０１１８】
【図１】本発明を実現するに適したコンピュータ・システムを概略的に示すブロック図。
【図２】本発明の１つの実施の形態によるデータを暗号化／復号化する装置を概略的に示す図。
【図３Ａ】本発明の１つの実施の形態による暗号テーブルの構造を説明するために中に８ビットのユニット・データ・サイズのための暗号テーブル（ユニタリ・テーブル）の一例を概略的に示す図。
【図３Ｂ】本発明の１つの実施の形態による暗号／復号に使用される８ビットのユニット・データ・サイズのための暗号テーブルの一例を概略的に示す図。
【図３Ｃ】本発明の１つの実施の形態による暗号／復号に使用される８ビットのユニット・データ・サイズのための暗号テーブルの一例を概略的に示す図。
【図４Ａ】本発明の１つの実施の形態によるソース・ファイルとして使用されるオーディオ雑音ファイルの部分の生１６進データを示す図。
【図４Ｂ】本発明の１つの実施の形態によるソース・ファイルとして使用される勾配グラフイック・ファイルの部分の生１６進データを示す図。
【図５】本発明の１つの実施の形態による一連の値が図形的に表示された選択トラックの一例を概略的に示す図。
【図６】本発明の１つの実施の形態による選択トラックと暗号テーブルとのための設定スクリーンの一例を概略的に示す図。
【図７】本発明の１つの実施の形態によるトラック・ミキサーによる選択トラックのミキシングのプロセスを概略的に示す図。
【図８】本発明の１つの実施の形態による入力（元の）データを暗号化／復号化データへ暗号化／復号化する方法を概略的に示す図。
【図９Ａ】本発明の１つの実施の形態による暗号化操作のプロセス流れを概略的に示す図。
【図９Ｂ】本発明の１つの実施の形態による復号化操作のプロセス流れを概略的に示す図。
【図１０】本発明の１つの実施の形態による暗号化及び復号化プロセスの一例を概略的に示す図。
【図１１Ａ】本発明の１つの実施の形態による暗号化（送信）プロセス及び復号化（受信）プロセスの際の相補的暗号化テーブル・バンクの暗号テーブル選択機能の例を概略的に示す図。
【図１１Ｂ】図１１Ａに示される相補的暗号化テーブル・バンク中の相補的行位置間の関係（右ボックス）、及び、暗号化（送信）プロセスと復号化（受信）プロセスに使用される暗号テーブル間の関係（左ボックス）を示す図。
【図１２Ａ】本発明の１つの実施の形態による暗号化（送信）プロセス及び復号化（受信）プロセスの際の再指向暗号テーブル・バンク中の暗号テーブル選択機能の一例を概略的に示す図。
【図１２Ｂ】図１２Ａに示される再指向暗号化テーブル・バンク中の再指向行位置間の関係（右ボックス）、及び、暗号化（送信）プロセスと復号化（受信）プロセスに使用される暗号テーブル間の関係（左ボックス）を示す図。
【図１３】本発明の１つの実施の形態による装置上の暗号器／復号器を自動的に設定するシステムを概略的に示す図。
【図１４】本発明の１つの実施の形態による設定ファイル及びセッション・ファイルのためのバックアップ・システムを概略的に示す図。
【図１５】本発明の１つの実施の形態による装置を認証する方法を概略的に示す図。
【図１】
2005534965.tif 000003
【図２】
2005534965.tif 000004
【図３Ａ】
2005534965.tif 000005
【図３Ｂ】
2005534965.tif 000006
【図３Ｃ】
2005534965.tif 000007
2005534965.tif 000008
2005534965.tif 000009
【図５】
2005534965.tif 000010
【図６】
2005534965.tif 000011
【図７】
2005534965.tif 000012
【図８】
2005534965.tif 000013
【図９Ａ】
2005534965.tif 000014
【図９Ｂ】
2005534965.tif 000015
【図１０】
2005534965.tif 000016
【図１１Ａ】
2005534965.tif 000017
【図１１Ｂ】
2005534965.tif 000018
【図１２Ａ】
2005534965.tif 000019
【図１２Ｂ】
2005534965.tif 000020
【図１３】
2005534965.tif 000021
【図１４】
2005534965.tif 000022
【図１５】
2005534965.tif 000023
【国際調査報告】
2005534965.tif 000024
2005534965.tif 000025
2005534965.tif 000026
2005534965.tif 000027
2005534965.tif 000028