(57)【要約】データを暗号化し送信する方法、および暗号化されたデータを送信するためのシステム。この方法は、１つまたは複数の異なる暗号化アルゴリズムを含み、多数のレベルの暗号化を達成するためにそれぞれ異なる暗号化アルゴリズムを使用することを含み得る。第１暗号化アルゴリズムは、符号化されたデータを得るため、データを表すビットの多数の再配列に基づく。第２暗号化アルゴリズムは、各データ・ワードが前のデータ・ワードで少なくとも符号化されるように、データを表すビットに対して多数のＸＯＲ操作を実施することに基づく。このシステムは、第１および第２コンピュータと、複数の通信パラメータとを備える。２つのコンピュータはネットワークに通信可能に接続され、第２コンピュータは第１コンピュータに送信をルーティングするように適応される。この送信はデータ部分とヘッダ部分とを含み、この両方の部分が、第２コンピュータによって通信パラメータを使用して暗号化される。第１コンピュータは、通信パラメータを使用して送信を解読する。
2008501253.tif 000002
【特許請求の範囲】
【請求項１】
データを暗号化する方法であって、
前記データをＸビット長のワードを有するバイナリ形式で表すこと、
参照テーブルを使用して前記データの各ワードのビットの順序の第１可逆再配列を実施すること、および
前記参照テーブルを使用して前記データの各ワードのビットの順序の第２可逆再配列を実施することを備える方法。
【請求項２】
前記第２可逆再配列が前記第１可逆再配列とは異なるやり方で実施される請求項１に記載の方法。
【請求項３】
前記データをバイナリ形式で表す前に、ｍエントリの第１行およびそれぞれがｎエントリのｒ行を有する前記参照テーブルを生成することをさらに含む請求項１に記載の方法。
【請求項４】
ｍ、ｎおよびｒが素数である請求項３に記載の方法。
【請求項５】
前記第１可逆再配列の実施が、前記参照テーブルの前記第１行を使用して各ワードのビットを再配列することを含む請求項３に記載の方法。
【請求項６】
前記第２可逆再配列の実施が、前記参照テーブルの前記ｒ行のうちの１つを使用して各ワードのビットを再配列することを含む請求項３に記載の方法。
【請求項７】
前記参照テーブルの前記ｒ行のうちの１つを使用して各ワードのビットを再配列することが、前記参照テーブルの前記ｒ行のうちの連続した行を使用して、隣接したワードのビットを個々に再配列することを含み、前記参照テーブルの前記ｒ行の第１行が前記参照テーブルの前記ｒ行の最終行の後に続く請求項６に記載の方法。
【請求項８】
前記参照テーブルの生成が、前記参照テーブルの前記エントリにエントリ当たり１つの番号を割り当てることをさらに含み、前記第１行の各エントリに割り当てられた前記番号が前記第１行内で一意であり、前記ｒ行の各行の各エントリに割り当てられた前記数が各個々の行内で一意である請求項３に記載の方法。
【請求項９】
前記データの各ワードのビットの順序の前記第１可逆再配列を実施することが、
前記データの各ワードをｍ個のビット群にグループ化すること、
前記テーブルの前記第１行からの前記数を番号順に配列すること、
前記ビット群のそれぞれを、番号順に配列された前記テーブルの前記第１行からの前記数のうちの１つに相関させること、および
前記ビット群を、前記テーブルの前記第１行内で順序付けられた前記テーブルの前記第１行からの前記数に基づいて再配列することを備える請求項８に記載の方法。
【請求項１０】
前記データの各ワードをｍ個のビット群にグループ化することが、ｑをｐより小さいものとして、前記データの各ワードをｐビット長のｍ−１個の群、およびｑビット長の１つの群にグループ分けすることを含む請求項９に記載の方法。
【請求項１１】
前記データの各ワードのビットの順序の前記第２可逆再配列を実施することが、
前記データの各ワードをｎ個のビット群にグループ化すること、
前記テーブルの前記ｒ行のうちの１つからの前記数を番号順に配列すること、
前記ビット群のそれぞれを、番号順に配列された前記テーブルの前記ｒ行のうちの前記１つからの前記数のうちの１つに相関させること、および
前記テーブルの前記ｒ行のうちの前記１つの行内で順序付けられた前記テーブルの前記ｒ行のうちの前記１つの行からの前記数に基づいて前記ビット群を再配列することを備える請求項８に記載の方法。
【請求項１２】
前記データの各ワードをｎ個のビット群にグループ化することが、ｑをｐより小さいものとして、前記データの各ワードをｐビット長のｎ−１個の群、およびｑビット長の１つの群にグループ分けすることを含む請求項１１に記載の方法。
【請求項１３】
データを暗号化する方法であって、
前記データをＸビット長のワードを有するバイナリ形式で表すこと、
鍵、およびノイズ・テーブルからの第１ノイズ・テーブル・ワードを使用して第１データ・ワードに対してＸＯＲ操作を実施することであって、前記ノイズ・テーブルがＸビット長のワードを有するバイナリ形式で表され、前記鍵がＸビット長のワードを有するバイナリ形式で表されること、および
直前のＸＯＲ操作の結果および後続のノイズ・テーブル・ワードを使用して連続するデータ・ワードに対して前記ＸＯＲ操作を実施することを備える方法。
【請求項１４】
前記第１データ・ワードに対して前記ＸＯＲ操作を実施する前に、前記ノイズ・テーブル内の前記ワードのうちの１つとして前記第１ノイズ・テーブル・ワードを設定することをさらに備える請求項１３に記載の方法。
【請求項１５】
前記データをバイナリ形式で表す前に、前記データより大きいサイズを有する前記ノイズ・テーブルを生成することをさらに備える請求項１３に記載の方法。
【請求項１６】
前記ノイズ・テーブルを生成することが、
前記ランダム文字テーブルより少なくとも１桁大きいサイズのデータ・サンプルを取得すること、
前記データ・サンプル内のデータ・サブサンプルを識別することであって、前記データ・サブサンプルが、少なくとも１２８バイトのサイズであるランダム文字テーブルにサイズが等しいこと、
前記データ・サブサンプルをＸビット長のワードで表すこと、
参照テーブルを使用して前記データ・サブサンプルの各ワードのビットの順序の第１の再配列を実施すること、
前記参照テーブルを使用して前記データ・サブサンプルの各ワードのビットの順序の第２の再配列を実施すること、および
前記ランダム文字テーブルを使用して、前記データ・サブサンプルの再配列された各ワードに対して連続したＸＯＲ操作を個々に実施することを備える請求項１５に記載の方法。
【請求項１７】
前記データ・サンプルが非繰返しのデータ列を備える請求項１６に記載の方法。
【請求項１８】
前記第２可逆再配列が前記第１可逆再配列とは別のやり方で実施される請求項１６に記載の方法。
【請求項１９】
ｍエントリの第１行、およびそれぞれがｎエントリのｒ行を有する前記参照テーブルを生成することをさらに備える請求項１６に記載の方法。
【請求項２０】
ｍ、ｎおよびｒが素数である請求項１９に記載の方法。
【請求項２１】
前記第１可逆再配列の実施が、前記参照テーブルの前記第１行を使用して各ワードのビットを再配列することを含む請求項１９に記載の方法。
【請求項２２】
前記第２可逆再配列の実施が、前記参照テーブルの前記ｒ行のうちの１つを使用して各ワードのビットを再配列することを含む請求項１９に記載の方法。
【請求項２３】
前記参照テーブルの前記ｒ行のうちの１つを使用して各ワードのビットを再配列することが、前記参照テーブルの前記ｒ行のうちの連続した行を使用して、隣接したワードのビットを個々に再配列することを含み、前記参照テーブルの前記ｒ行の第１行が前記参照テーブルの前記ｒ行の最終行に続く請求項２２に記載の方法。
【請求項２４】
前記参照テーブルの生成が、前記参照テーブルの前記エントリにエントリ当たり１つの番号を割り当てることをさらに含み、前記第１行の各エントリに割り当てられた前記番号が前記第１行内で一意であり、前記ｒ行の各行の各エントリに割り当てられた前記数が各個々の行内で一意である請求項１９に記載の方法。
【請求項２５】
前記データの各ワードのビットの順序の前記第１可逆再配列を実施することが、
前記データ・サブサンプルの各ワードをｍ個のビット群にグループ化すること、
前記テーブルの前記第１行からの前記数を番号順に配列すること、
前記ビット群のそれぞれを、番号順に配列された前記テーブルの前記第１行からの前記数のうちの１つに相関させること、および
前記ビット群を、前記テーブルの前記第１行内で順序付けられた前記テーブルの前記第１行からの前記数に基づいて再配列することを備える請求項２４に記載の方法。
【請求項２６】
前記データの各ワードをｍ個のビット群にグループ化することが、ｑをｐより小さいものとして、前記データの各ワードをｐビット長のｍ−１個の群、およびｑビット長の１つの群にグループ分けすることを含む請求項２５に記載の方法。
【請求項２７】
前記データの各ワードのビットの順序の前記第２可逆再配列を実施することが、
前記データ・サブサンプルの各ワードをｎ個のビット群にグループ化すること、
前記テーブルの前記ｒ行のうちの１つからの前記数を番号順に配列すること、
前記ビット群のそれぞれを、番号順に配列された前記テーブルの前記ｒ行のうちの前記１つからの前記数のうちの１つに相関させること、および
前記テーブルの前記ｒ行のうちの前記１つの行内で順序付けられた前記テーブルの前記ｒ行のうちの前記１つの行からの前記数に基づいて前記ビット群を再配列することを備える請求項２４に記載の方法。
【請求項２８】
前記データの各ワードをｎ個のビット群にグループ化することが、ｑをｐより小さいものとして、前記データの各ワードをｐビット長のｎ−１個の群、およびｑビット長の１つの群にグループ分けすることを含む請求項２７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野は、暗号技術である。
【背景技術】
【０００２】
暗号技術の科学は、何千年もの間存在してきたが、暗号技術が一般の人々にとって重要になったのは、ここ百年ほどにすぎない。まず電信で、次いで無線および電話通信で、そして今やすべての種類、有線と無線の両方のインターネットおよびコンピュータ・ネットワークを介した電子通信によって特徴付けられる情報化時代においてである。
【０００３】
暗号技術の長い歴史を考慮すると、平文（用語平文、暗号化されていない情報、暗号化されていないデータおよび暗号化されていない送信は、本明細書では同義で用いられている）から暗号文（同様に、用語暗号文、暗号化された情報、暗号化されたデータおよび暗号化された送信は、本明細書では同義で用いられている）を生成するのに多くの方法が使用可能であり、単純なものから非常に複雑なものまで多岐にわたる。任意の個々の暗号システムの複雑さに関係なくすべてが、許可されていない者による符号化されたデータまたはメッセージへのアクセスを防止するために平文を暗号文として符号化しようと努めている（用語符号化するおよび暗号化するは、本明細書では同義で用いられており、用語復号するおよび解読するも同様である）。
【０００４】
暗号技術への２つの一般的な手法は、米国特許第３９６２５３９号、Ehrsamら、「Product Block Cipher System For Data Security」および米国特許第４４０５８２９号、Rivestら、「Cryptographic Communications System and Method」において見られる。Ehrsamの特許は、データ暗号化規格（ＤＥＳ：data encryption standard）として一般に知られているものを開示しており、Rivestの特許は、ＲＳＡアルゴリズムとして一般に知られているものを開示している。
【０００５】
ＤＥＳは、対称暗号技術とも称される秘密鍵暗号技術に基づくものであり、暗号化のために５６ビット鍵を利用する。この形の暗号技術では、暗号文の送信側と受信側の両方が同一の秘密鍵を所有し、この秘密鍵は、理想的な世界では完全に一意であり、また送信側および受信側以外の世界には知られていない。秘密鍵を使用して平文を暗号文に符号化することによって、送信側は、任意の使用可能な公開されている、または別のやり方で安全でない通信システムを使用する受信側に暗号文を送信することができる。暗号文を受信した受信側は、秘密鍵を使用してそれを解読し、平文を得る。
【０００６】
ＤＥＳを使用して暗号化されたデータの安全性は、秘密鍵の長さ、および上記で暗に述べたように秘密鍵の秘密に大きく左右される。ＤＥＳ暗号は、元来考案されたように、５６ビット鍵を使用した。デスクトップ・コンピュータの処理能力が向上し続けるのにつれて、暗号文から秘密鍵を見抜く難しさは急速に減少している。したがって、ＤＥＳ暗号は、５年前に比べて安全性が劣る形の暗号技術である。
【０００７】
ＤＥＳに関わる安全性の問題を解決するために実施されてきた１つの解決策は、ＤＥＳアルゴリズムを使用して連続して２回以上データを暗号化することである。連続した各暗号化レベルは同じＤＥＳ鍵を使用しても、異なるＤＥＳ鍵を使用してもよい。それぞれ異なる鍵が使用される場合は、鍵の組合せによっては実際、単一の５６ビット鍵を使用する暗号化よりも安全性が劣る暗号化がもたらされるので、注意深く鍵を選択することが重要である。しかし、この暗号化方法は、最大２５６ビット長の鍵をサポートしており、また異なる暗号化アルゴリズムを使用している高度暗号化標準（ＡＥＳ：Advanced Encryption Standard）がより広く使用されるようになるまで主として応急措置として使用されてきた。
【０００８】
ＲＳＡ暗号は、公開鍵暗号技術に基づくものである。２つの大きい素数および事前定義された数学的関係を使用して、２つの非対称の鍵が生成される。第１鍵は、受信側にとって秘密のままに保たれ、第２鍵は、受信側にデータを送信する者が使用できるようにされる。公開鍵と秘密鍵の数学的関係は、公開鍵で暗号化されたデータの受信側が秘密鍵を使用してそのデータを解読することを可能にする。ＲＳＡの安全性は、秘密鍵を発見するために非常に大きな数を因数分解する難しさに基づく。
【０００９】
市販のＲＳＡ実装は、カリフォルニア州Palo  AltoのPGP Corporation社から入手可能であり、オープン・ソース実装は、http://www.pgpi.orgおよびhttp://www.gnupg.orgで入手可能である（これらのＲＳＡ実装は、本明細書ではまとめて「ＰＧＰ暗号化」と称される）。
【特許文献１】米国特許第３９６２５３９号
【特許文献２】米国特許第４４０５８２９号
【非特許文献１】http://www.pgpi.org
【非特許文献２】http://www.gnupg.org
【発明の開示】
【課題を解決するための手段】
【００１０】
本発明は、データを暗号化し送信する方法、および暗号化されたデータを送信するためのシステムを対象とする。データを暗号化する方法は、１つまたは複数の暗号化アルゴリズムをデータに適用することを含む。データは、開示されている暗号化アルゴリズムのうちのいずれか１つを単独に、互いに組み合わせて、または他の任意の暗号化アルゴリズムと組み合わせて使用して暗号化され得る。データを送信する方法は、ソース識別子を暗号化プロセスに組み込むことによってデータを暗号化する、開示された方法を基礎とする。ソース識別子は、送信のために暗号化されたデータに組み込まれても、送信の前に暗号化プロセスの一環として使用されてもよい。データを暗号化し送信する方法は、連続したデータ・パケットの暗号化を可能にするようなやり方で修正され得る。
【００１１】
暗号化されたデータを送信するためのシステムは、第１および第２コンピュータと、複数の通信パラメータとを備える。コンピュータは、その間で送信をルーティングするためにネットワークを介して通信可能に接続される。コンピュータは、送信を暗号化するために通信パラメータを使用する。通信パラメータは、送信を暗号化および解読するために使用される暗号化アルゴリズムを示す少なくとも１つの暗号化アルゴリズム識別子を含む。
【００１２】
本発明の第１の別個の態様では、データを暗号化する方法は、データをバイナリ形式で表し、それを等しい長さのワードに分割することを含む。各ワードのビットは、再配列を元に戻せるようにする参照テーブルを使用して２回配列し直される。任意選択で、第１の再配列は、第２の再配列と比べて異なるやり方で実施される。参照テーブルは、ｍ、ｎおよびｒを実数として、ｍエントリを有する第１行と、それぞれがｎエントリのｒ行を含むように構成され得る。こうしたテーブルを用いて再配列を実施する一方法は、１回目は参照テーブルの第１行を使用して各ワードのビットを可逆的に再配列し、次いで２回目は参照テーブルの連続したｒ行のうちの１つを使用して各ワードのビットを可逆的に再配列することである。データの連続したワードについて、ｒ行のうちの異なる１つが使用され得る。
【００１３】
本発明の第２の別個の態様では、データを暗号化する方法は、データをバイナリ形式で表し、それを等しい長さのワードに分割することを含む。排他的論理和（ＸＯＲ）操作が、鍵、およびノイズ・テーブルからの第１ワードを使用してデータの第１ワードに対して実施される。鍵は、バイナリ形式で表され、データ・ワードと同じ長さのワードを有する。ノイズ・テーブルもまた、バイナリ形式で表され、データ・ワードと同じ長さのワードに分割される。ＸＯＲ操作は、直前のＸＯＲ操作からの結果、および使用された最後のノイズ・テーブル・ワードの次のノイズ・テーブル・ワードを使用して、連続する各データ・ワードに対して実施される。ノイズ・テーブルは、データ暗号化の前の任意のときに生成されることができ、ノイズ・テーブルがランダムになればなるほど、データはその暗号化された形において認識し難くなる。
【００１４】
本発明の第３の別個の態様では、データを送信する方法は、上述した第２の別個の態様を基礎とする。データは、バイナリ形式で表され、等しい長さのワードに分割される。日時標識、メッセージ番号およびポート・オフセット標識が生成され、それぞれが、データのワードに等しい長さのワードを有するバイナリ形式で表される。データの第１ワードは、ＸＯＲ操作を使用して、日時標識と、メッセージ番号とポート・オフセット標識とを組み合わせることによって生成される。この第１ワードは、ＸＯＲ操作を使用して鍵およびノイズ・テーブルの第１ワードで暗号化される。連続するデータ・ワードは、直前のＸＯＲ操作の結果、および使用された最後のノイズ・テーブル・ワードの次のノイズ・テーブル・ワードで暗号化される。好ましい実施形態では、日時標識は送信の日時であり、メッセージ番号は順次メッセージ識別子であり、ポート・オフセット標識は、送信が送信される先のポートと複数の所定ポートのうちの１つとの差である。
【００１５】
本発明の第４の別個の態様では、データを送信する方法は、暗号化されたデータを個別のパケットで送信することを可能にするために、上述した第２の別個の態様を基礎とする。データは、バイナリ形式で表され、等しい長さのワードに分割され、次いで適切なサイズのパケットにさらに分割される。第１のパケットは、第２の別個の態様について述べたように暗号化される。第１パケットの送信準備が整えられた後に、第１パケットの最後のワードのＸＯＲ操作の結果を使用して第２パケットの第１ワードに対してＸＯＲ操作が実施される。ＸＯＲ操作は、直前のＸＯＲ操作の結果を使用して第２パケットの連続したワードに対して実施される。それぞれのパケットは、暗号化された後に送信され得る。追加のパケットも同じやり方で準備され、送信され得る。
【００１６】
本発明の第５の別個の態様では、通信パラメータは、少なくともメッセージ番号と暗号化アルゴリズム識別子と第１暗号化鍵と第２暗号化鍵とを含む。第１と第２暗号化鍵の両方は２部構成の鍵であり、各部が秘密鍵部分と公開鍵部分とを含む。第２コンピュータは、第１部分がデータ部分であり、第２部分がヘッダ部分である少なくとも２つの部分を含む送信を生成する。第２コンピュータは、データ部分を暗号化するために暗号化アルゴリズム識別子、第１鍵の公開鍵部分およびメッセージ番号を使用し、またヘッダ部分を暗号化するために暗号化アルゴリズム識別子および第２鍵の公開鍵部分を使用するように適応される。補足すると、第１コンピュータは、ヘッダ部分を解読するために暗号化アルゴリズム識別子および第２鍵の秘密鍵部分を使用し、またデータ部分を解読するために暗号化アルゴリズム識別子、第１鍵の秘密鍵部分およびメッセージ番号を使用するように適応される。追加の通信パラメータが、送信の暗号化および解読のために含められ得る。
【００１７】
本発明の第６の別個の態様ではこのシステムは複数の通信リンクを備え、そのそれぞれが、ネットワークを介して接続されており、またその間で送信をルーティングするように適応された起点ノード（originating node）と終端ノード（terminating node）とを含む。第１通信リンクの起点ノードと、対応する終端ノードの間の送信は、介在する少なくとも１つの通信リンクを通過する。第１通信リンクの起点ノードは、両方ともが暗号化された形式であるデータ部分とヘッダ部分とを含む送信を生成し、対応する終端ノードにルーティングする。対応する終端ノードは、暗号化されたデータおよび暗号化されたヘッダを解読するように適応される。介在する各通信リンクは、暗号化されていない参照を他の通信リンクに移動し、暗号化された形式で追加のヘッダ部分を加えることによってその起点ノード上の送信を修正するように適応される。介在する各通信リンクの対応する終端ノードは、暗号化された追加のヘッダを解読し、送信を再ルーティングするように適応される。任意選択で、送信の暗号化された各部分は、少なくとも２つの暗号化レベルで暗号化され、各暗号化レベルは、互いのレベルとは異なる。追加の通信リンクが要望に応じてシステムに追加されることができ、追加の各通信リンクが、第１通信リンクの起点ノードと終端ノードの間のネットワーク上に配置される。
【００１８】
本発明の第７の別個の態様では、データ送信が少なくとも２つの別個の部分を含み、この両部分が暗号化された形式で送信され、それぞれが少なくとも２つの暗号化レベルを含む。ヘッダ部分は、データ部分を解読するために使用される情報をさらに含み、またデータ送信を認証するのに役立つ情報を含み得る。データ送信は、暗号化された形式の追加のヘッダ部分を含むこともできる。追加のヘッダ部分は、少なくとも２つの暗号化レベル、および第１ヘッダ部分を解読するために使用される情報を含む。データ送信が複数のヘッダ部分を含む場合、各ヘッダ部分は好ましくは、データ送信の別個の段階に関するルーティング情報を含む。データ送信のそれぞれ異なる部分は、少なくとも１つの圧縮レベルを含むこともできる。
【００１９】
本発明の上記態様はそれぞれ、他の態様とは独立に使用されることができるが、本発明の第８の別個の態様では、諸態様のいずれもが組み合わせて使用され得る。
【００２０】
したがって、本発明の一目的は、データを暗号化し送信する改良型の方法、暗号化されたデータを送信するための改良型のシステムを提供することである。他の目的および利点は、以下で明らかになる。
【００２１】
図面では、同じ参照番号は、類似の構成要素を指す。
【発明を実施するための最良の形態】
【００２２】
１．ビット・シフトによる暗号化
図面を詳細に参照すると、図１は例示するため、第１のデータ暗号化方法を示している。この実施例で使用されるデータは、ＡＳＣＩＩ形式の文字列「１２３４」に簡略化されている。第１ブロック１０は、３つの異なる形式で表されたデータを示している。第１行１２ではデータはＡＳＣＩＩ形式であり、次の行１４ではデータはバイナリ形式であり、最終行１６ではデータはＨＥＸ形式１６である。したがって、バイナリ形式では、サンプル・データは３２ビット長の単一のワードである。バイナリ形式で表される場合に３３ビット以上を有するデータの場合には、データは３２ビット長のワードに分割され、各ワードは同様に処理される。
【００２３】
本明細書で述べる諸方法およびシステムを通して、データは、説明および処理の容易さのために３２ビット・ワードに分割される。しかし、ワードの長さは、要望に応じて変化し得る。本明細書で述べるデータ暗号化およびデータ送信の方法およびシステムは、選択された任意のワード長を有するデータを処理するために、それに応じて変更され得ることが当業者には理解されよう。
【００２４】
図１の第２ブロック２０で、第１行２２は、５ビットの６つのグループ、および２ビットの最終グループ、合計で７つのグループにグループ化されたバイナリ形式のデータを示している。第２行２４は、最大から最小の順で並べられた、図２の参照テーブルからの行Ａ１のエントリを表している。容易に複製可能な他の任意の順序が使用され得る。第１行２２の各ビット群は、第２行２４内の順序付けられた行Ａ１のエントリのうちの１つと相関され、第１ビット群は行Ａ１の最大のエントリと相関され、第２ビット群は行Ａ１の次に大きいエントリと相関され、最終ビット群が行Ａ１の最小のエントリと相関されるまで以下同様に続く。第３ブロック３０では、第１行３２はテーブルの行Ａ１内に現れる順序に再配列されたテーブル・エントリを示しており、第２行３４は、各ビット群と行Ａ１の各エントリの間の相関に従って同様に再配列されたビット群を示している。
【００２５】
データ・ワードのこの第１の再配列は、単純に同じ参照テーブルの行Ａ１を参照することによって元に戻すことができる。したがって、第２および第３ブロック２０、３０は、データ・ワードの第１可逆再配列をどのように実施するかを例示している。データ・ワードは７つのビット群にグループ化されているが、より多くのまたは少ないグループが要望に応じて、グループ数を参照テーブルの行Ａ１のエントリ数に等しく保ちながら使用され得る。各グループのビット数もまた、要望に応じて変化し得る。データ・ワードがｍ個のビット群に分割される場合には、ｑがｐより小さく、かつｐおよびｑが素数であるとして、ｐビットを有するｍ−１個のグループ、およびｑビットを有する１つのグループがあるのが好ましい。
【００２６】
第４ブロック４０では、第１行４２は、２ビットの第１のグループ、および３ビットの１０個のグループ、合計で１１個のグループにグループ化された、１度配列し直されたビットを示している。第２行４４は、最大から最小の順に並べられた、図２の参照テーブルからの行Ｂ３のエントリを表している。容易に複製可能な他の任意の順序が使用され得る。行Ｂ１からＢｒのうちのいずれか１つからのエントリが、この再配列で使用するために選択され得る。特定の行の選択については、以下でより詳しく論じる。第１行４２内の各ビット群は第２行４４内の順序付けられた行Ｂ３のエントリのうちの１つと相関され、第１ビット群は行Ｂ３の最大のエントリと相関され、第２ビット群は行Ｂ３の次に大きいエントリと相関され、最終ビット群が行Ｂ３の最小のエントリと相関されるまで以下同様に続く。第５ブロック５０では、第１行５２はテーブルの行Ｂ３内に現れる順序に再配列されたテーブル・エントリを示しており、第２行５４は、各ビット群と行Ｂ３の各エントリの間の相関に従って同様に再配列されたビット群を示している。
【００２７】
第１の再配列と同様にデータ・ワードのこの第２の再配列は、適切な行、この場合には同じ参照テーブルの行Ｂ３を単純に参照することによって元に戻すことができる。したがって、第４および第５ブロック４０、５０は、データ・ワードの第２可逆再配列をどのように実施するかを例示している。ビットは１１個のビット群にグループ化されているが、より多くのまたは少ないグループが要望に応じて、グループ数を参照テーブルのＢｒ行のエントリ数に等しく保ちながら使用され得る。各グループのビット数もまた、要望に応じて変化し得る。ビットがｍ個のビット群にグループ化される場合には、ｑがｐより小さく、かつｐおよびｑが正の整数であるとして、ｐビットを有するｍ−１個のグループ、およびｑビットを有する１つのグループがあるのが好ましい。
【００２８】
図１の最後のブロック６０は、２つの可逆再配列プロセスの結果を示している。第１行６２は、それぞれが４ビットの８個のグループにグループ分けされたブロック５０の最終行５４のビットを表している。第１行６２の各グループは、第２行６４ではＨＥＸ形式で表されている。第１ブロック１０の最終行１６を最終ブロック６０の最終行６４と比較すると、データ・ワードは今や認識できない形であることが示される。
【００２９】
複数のデータ・ワードを含むデータを暗号化する場合、連続する各データ・ワードについて、Ｂｒ行の連続した行が使用される。参照テーブルは、こうしたデータを暗号化するために１１行のＢｒ行を含むことが好ましい。Ｂｒ行のうちの第１行は、データの第１ワードを暗号化するときにランダムに選択されても、他の何らかの適切な方法によって選択されてもよい。Ｂｒ行のうちの連続する次の行は、データの次のワードを暗号化するために使用される。Ｂｒ行のうちの最終行に達する場合、次のデータ・ワードは、Ｂｒ行のうちの第１行を使用して暗号化され、すべてのデータ・ワードが暗号化されるまでこのやり方で続行する。
【００３０】
示されるように図２の参照テーブルは、７エントリの第１行Ａ１、および各１１エントリの複数の行Ｂｒを有する。行Ａ１のエントリ数は、要望に応じてより多くのまたは少ないエントリが使用されることができるので変化し得る。好ましくは、行Ａ１のエントリ数は素数である。行Ａ１の各エントリは、各エントリが行内において一意であるという制限を伴って任意の値で埋められ得る。行ｒの数は同様に、要望に応じて変化し得る。好ましくは、行Ｂｒの各行のエントリ数は素数である。データを暗号化する場合、１１行が好ましい。同様に、行Ｂｒの各行のエントリ数は、要望に応じてより多くのまたは少ないエントリが使用され得るので、同じエントリ数を有する行Ｂｒのそれぞれによって変化し得る。行Ｂｒの各行のエントリもまた、各エントリがその行内において一意であるという制限を伴って、任意の値で埋められ得る。
【００３１】
２．ＸＯＲ操作による暗号化
図３は、排他的論理和（ＸＯＲ）操作を使用してデータを暗号化する第２の方法を例示している。この実施例で使用されるデータ７０は、ワードがバイナリ形式７２で表されるときに各ワードが３２ビット長となるように、３つのワードＷ１〜Ｗ３に分割される。一連のＸＯＲ操作が、各データ・ワードに対して実施される。暗号化されたデータ８０は、一連のＸＯＲ操作の結果である。第１暗号化データ・ワード７８は、第１データ・ワードＷ１  ＸＯＲ  鍵７４  ＸＯＲ  ノイズ・テーブルの第１ワード７６の結果である。データ・ワードと同様に鍵７４およびノイズ・テーブルは、バイナリ形式で表される。鍵７４は好ましくは３２ビット長の単一のワードを有するが、他のワード長も使用され得る。ノイズ・テーブルはデータと同様に、それぞれが３２ビットの長さである複数のワードを含み、それについては以下でより詳細に述べる。第２暗号化データ・ワード８４は、第２データ・ワードＷ２  ＸＯＲ  第１暗号化データ・ワード７８  ＸＯＲ    鍵７４  ＸＯＲ  ノイズ・テーブルの第２ワード８２の結果である。同様に第３暗号化データ・ワード８８は、第３データ・ワードＷ３  ＸＯＲ  第２暗号化データ・ワード８４  ＸＯＲ    鍵７４  ＸＯＲ  ノイズ・テーブルの第３ワード８６の結果である。したがって、第１暗号化データ・ワードは、２つの連続したＸＯＲ操作の結果であり、第１暗号化データ・ワードに続くすべての暗号化データ・ワードは、３つの連続したＸＯＲ操作の結果である。したがって、任意のサイズのデータが、このプロセスを使用して暗号化され得る。
【００３２】
このようにして暗号化されたデータの解読は、類似のプロセスを使用して達成される。少なくともノイズ・テーブル、およびたぶん鍵へのアクセスが、解読のために必要とされ得る。解読のために使用される鍵へのアクセスを必要としないデータ解読方法については、以下でより詳細に論じる。図３の実施例に関しては、解読のためにノイズ・テーブルと鍵の両方が必要とされる。例を挙げると、第１暗号化データ・ワード７８は、鍵７４およびノイズ・テーブルの第１ワード７６を使用して連続的なＸＯＲ操作を適用することによって解読される。ＸＯＲ操作が実施される順序は無関係である。第２暗号化データ・ワード８４は、第１暗号化データ・ワード７８、鍵７４およびノイズ・テーブルの第１ワード７６を使用して連続的なＸＯＲ操作を適用することによって解読される。第３暗号化データ・ワード８８も同様に解読される。このプロセスの結果によって、解読された形のデータがもたらされる。
【００３３】
上記で言及したノイズ・テーブルは、ランダムなデータ・ビットを含んでおり、データ構造体内に認識可能な反復またはパターンを含まないデータ・ファイルである。こうしたファイルを作成する多くの方法が当業者には知られており、したがって以下の説明は、使用され得る多くの方法のうちの１つにすぎない。ノイズ・テーブルの作成のために３つの構成要素が使用される：あるとしてもごく少ない反復の句またはデータ列を含む好ましくは１メガバイトを超える大きいデータ・ファイル；１つの７エントリ行、およびそれぞれが１１エントリの１２７行を含む図２に示す参照テーブル；ならびに最も現代的なオペレーティング・システムに含まれる標準の乱数生成器などの乱数生成器。
【００３４】
乱数生成器は、少なくとも１２８バイトの所定サイズを有するテーブルを生成するために使用される。このテーブルは好ましくは、６４キロバイトのサイズであるが、より大きくてもよく、好ましくは一度に１バイト生成される。乱数生成器はさらに、大きいデータ・ファイル内および参照テーブルのＢｒ行内の開始点を決定するために使用される。大きいデータ・ファイル内の開始点から、図１に関連して述べたビット・シフト・プロセスが、参照テーブルを使用して大きいデータ・ファイル内のデータに適用される。ＸＯＲ操作は、ランダムに生成されたテーブルを使用して大きいデータ・ファイルのビット・シフトされた各ワードに対して実施される。このプロセスは、ランダムに生成されたテーブルの全体の長さについて継続し、ノイズ・テーブルの生成がもたらされる。好ましくは、ノイズ・テーブルは、６４キロバイト・ファイルとして作成される。
【００３５】
このようにして生成されたノイズ・テーブルは、図３に関連して述べた暗号化プロセスのために、または以下でさらに論じるように使用され得る。ノイズ・テーブル内の任意のワードが、第１ノイズ・テーブル・ワード７６として選択され得る。暗号化プロセスの間のいずれかのときにノイズ・テーブルの最後に遭遇する場合には、ノイズ・テーブルは循環的に使用され、最後のノイズ・テーブル・ワードの後には第１ノイズ・テーブル・ワードが続く。
【００３６】
３．通信パラメータの確立
図４のフローチャートは、暗号化されたデータを生成し送信するためのハイレベル・プロセスを示している。図４に示す諸工程のうちの多くは、示されているのと異なる順序で実施され得ることが当業者には理解されよう。たとえば、工程１０２および１０８は工程１１０および１１２より前のどの時点においても行われることができ、工程１１０と１１２は交換可能であり、工程１１４は工程１１６および１１８より前のどの時点においても行われることができ、工程１１６と１１８は交換可能である。したがって、プロセスの実施順序の多くの置換が可能である。
【００３７】
送信前のあるときに、通信パラメータが確立される。特定の通信パラメータは好ましくは送信の受信側によって確立されるが、他の特定の通信パラメータは好ましくは送信の送信側によって確立される。あるいは、通信パラメータは、適切な通信パラメータが送信側と受信側の両方に通信される限りは、送信の送信側または受信側であろうがなかろうが、任意の当事者によって確立され得る。通信パラメータの一部は、送信の特定の送信側、受信側またはその両方にとって秘密のままであることが意図される。通信パラメータの一部は、受信側との通信のために２つ以上の送信側が使用できるようにされ、伝播の範囲に応じてこうした通信パラメータが公開または半公開にされる。
【００３８】
好ましくは受信側によって確立される通信パラメータには以下がある。
初期メッセージ番号。初期メッセージ番号はランダムに選択された３２ビットの正の数である。生成されると送信側には、初期メッセージ番号が提供される。送信側によって送信される第１の送信は、初期メッセージ番号でマーク付けされる。それぞれの送信の後にメッセージ番号は増分され、送信側は、後に続く各送信を現在のメッセージ番号でマーク付けする。メッセージ番号は、最後のメッセージ番号が使用される場合には次に使用されるメッセージ番号が０となるように、循環的に使用される。受信側は、現在のメッセージ番号の記録を維持し、送信側からのものであると称するいずれのメッセージの信憑性をも検証するために、この情報を使用し得る。
【００３９】
８ネットワーク・ポート番号のリスト。８つのネットワーク・ポートは、ランダムに、または他の任意の適切な方法で選択され、ポート０〜７とラベル付けされる。それぞれのポートは、３２ビット・ワードとしてバイナリ形式で表される。ネットワーク・ポートのリストは、送信側と受信側の両方によって維持される。
【００４０】
少なくとも１つの秘密参照テーブル。秘密参照テーブルは、図２に示すタイプのものである。２つ以上の秘密参照テーブルが使用される場合、好ましくは素数個の秘密参照テーブルが存在する。さらに、それぞれの秘密参照テーブルは好ましくは、第１行内に素数個のエントリ、素数個の後続の行、および各後続の行内に素数個のエントリを含む。より好ましくは、それぞれの秘密参照テーブルは、７エントリの第１行、およびそれぞれが１１エントリの１１個の後続行を含む。それぞれの秘密参照テーブルは、同じ行数、あるいは第１行内または後続行内に同じエントリ数を有する必要はない。エントリには、上記で述べたやり方で数が埋められる。送信側と受信側の両方が、それぞれ送信の符号化および復号のために秘密参照テーブルを維持する。すべての秘密参照テーブルは好ましくは、符号化された形式で維持され、使用時に復号される。任意の可逆符号化方法が使用され得る。好ましい符号化方法では、テーブルを維持するコンピュータのＣＰＵは、その連続番号および仕様情報を求めてポーリングされ、この仕様情報は、他にもあるが特に挙げると、プロセッサ・タイプ、速度、製造元を含み得る。ポーリングされた情報は、順次組み合わされ、選択されたワード長のバイナリ形式で表される。それぞれのテーブルは、同じワード長を有するバイナリ形式で同様に表される。テーブルの第１ワードは、ＸＯＲ操作を使用して、ポーリングされた情報の第１ワードで符号化される。テーブルの第２ワードは、ＸＯＲ操作を使用して、ポーリングされた情報の第３ワードおよび符号化された第１ワードで符号化される。テーブルの第３ワードは、ＸＯＲ操作を使用して、ポーリングされた情報の第２ワードおよび符号化された第２ワードで符号化される。このプロセスは、テーブル全体にわたって継続する。テーブルが最後となる前にポーリング情報の最後に達する場合、テーブルの各後続ワードは、ＸＯＲ操作を使用して、符号化された直前のワードで符号化される。
【００４１】
少なくとも１つの半公開（または公開）参照テーブル。半公開参照テーブルは、図２に示すタイプのものである。２つ以上の半公開参照テーブルが使用される場合、好ましくは素数個の半公開参照テーブルが存在する。さらに、それぞれの半公開参照テーブルは好ましくは、第１行に素数個のエントリ、素数個の後続の行、および各後続の行内に素数個のエントリを含む。より好ましくは、それぞれの半公開参照テーブルは、７エントリの第１行、およびそれぞれが１１エントリの１１個の後続行を含む。それぞれの半公開参照テーブルは、同じ行数、あるいは第１行内または後続行内に同じエントリ数を有する必要はない。エントリには、上記で述べたやり方で数字が埋められる。送信側と受信側の両方が、それぞれ送信の符号化および復号のために半公開参照テーブルを維持する。半公開参照テーブルは、より広く一般に伝播され得る。すべての半公開参照テーブルは好ましくは、符号化された形式で維持され、使用時に復号される。任意の可逆符号化方法が使用され得る。好ましい符号化方法は、秘密参照テーブルに関連して上記で述べた方法である。
【００４２】
第１および第２秘密ノイズ・テーブル鍵。これらの２つの鍵はそれぞれ、３２ビットの長さである。両方の鍵は、標準の乱数生成器によって生成される。これらの鍵は秘密ノイズ・テーブルと併せて、送信側および受信側によって、それぞれ送信の符号化および復号のために使用される。送信側は、第１秘密ノイズ・テーブル鍵（送信側の秘密ノイズ・テーブル鍵）が提供され、それを維持する。受信側は、第２秘密ノイズ・テーブル鍵（受信側の秘密ノイズ・テーブル鍵）を維持する。
【００４３】
秘密ノイズ・テーブル。秘密ノイズ・テーブルは、上記で述べたように生成される。送信側は、秘密ノイズ・テーブルを簡略化された符号化形式で維持する。送信側の形式は、第１秘密ノイズ・テーブル鍵を使用してノイズ・テーブルの各３２ビット・ワードに対してＸＯＲ操作を実施することによって生成される。受信側もまた、秘密ノイズ・テーブルを簡略化された符号化形式で維持する。受信側の形式は、第２秘密ノイズ・テーブル鍵を使用してノイズ・テーブルの各３２ビット・ワードに対してＸＯＲ操作を実施することによって生成される。好ましくは、送信側、受信側のいずれも、秘密ノイズ・テーブルの復号されたバージョンを維持しておらず、したがって秘密ノイズ・テーブルの秘密が維持される。秘密ノイズ・テーブルは好ましくは、符号化された形式で維持され、使用時に復号される。任意の可逆符号化方法が使用され得る。好ましい符号化方法は、秘密参照テーブルに関連して上記で述べた方法である。
【００４４】
半公開（または公開）ノイズ・テーブル鍵。半公開ノイズ・テーブル鍵は、３２ビットの長さであり、標準の乱数生成器によって生成される。この鍵は、送信側に提供され、それによって維持され、受信側への送信を暗号化するために半公開ノイズ・テーブルと併せて使用される。この鍵は、より広く一般に伝播され得る。
【００４５】
第３秘密ノイズ・テーブル鍵。第３秘密ノイズ・テーブル鍵は、３２ビットの長さであり、標準の乱数生成器によって生成される。この鍵は、受信側によって秘密に維持され、半公開ノイズ・テーブル鍵および半公開ノイズ・テーブルを使用して符号化された送信を解読するために、半公開ノイズ・テーブルと併せて使用される。
【００４６】
半公開（または公開）ノイズ・テーブル。このノイズ・テーブルもまた、上記で述べたやり方で生成される。秘密ノイズ・テーブルと同様に、送信側は、半公開ノイズ・テーブルを簡略化された符号化形式で維持する。送信側の形式は、半公開ノイズ・テーブルの各３２ビット・ワードに対して半公開ノイズ・テーブル鍵を使用してＸＯＲ操作を実施することによって生成される。受信側もまた、半公開ノイズ・テーブルを簡略化された符号化形式で維持する。受信側の形式は、第３秘密ノイズ・テーブル鍵を使用して半公開ノイズ・テーブルの各３２ビット・ワードに対してＸＯＲ操作を実施することによって生成される。好ましくは、送信側、受信側のいずれも、半公開ノイズ・テーブルの復号されたバージョンを維持しない。この半公開ノイズ・テーブルは、より広く一般に伝播され得る。半公開ノイズ・テーブルは好ましくは、符号化された形式で維持され、使用時に復号される。任意の可逆符号化方法が使用され得る。好ましい符号化方法は、秘密参照テーブルに関連して上記で述べた方法である。
【００４７】
少なくとも１つの圧縮アルゴリズム識別子。任意の可逆圧縮アルゴリズムが使用のために識別され得る。以下で述べる送信プロセスは、２つ以上の圧縮アルゴリズムを使用することができ、２つ以上が使用される場合には、圧縮アルゴリズム識別子によって、識別された各圧縮アルゴリズムが送信プロセスのどこで使用されるかが識別される。送信側と受信側の両方は、圧縮アルゴリズム識別子を維持する。
【００４８】
第１および第２暗号化鍵。これらの暗号化鍵の両方は、２部構成の暗号化鍵である。第１暗号化鍵は、秘密鍵であり、第１鍵部分および第２鍵部分を含む。第１暗号化鍵の第１鍵部分は、送信の符号化で使用するために送信側に提供され、それによって維持され、また第１暗号化鍵の第２鍵部分は、送信の復号で使用するために受信側によって維持される。ＤＥＳ、ＡＥＳまたは別の類似の暗号化アルゴリズムが使用される場合、第１暗号化鍵の第１および第２鍵部分は同一であり得る。第２暗号化鍵は、少なくとも半公開の鍵であり、やはり第１鍵部分および第２鍵部分を含む。第２暗号化鍵の第１鍵部分は、送信の符号化で使用するために送信側に提供され、それによって維持される。第２暗号化鍵の第１鍵部分は、より広く一般に伝播される。第２暗号化鍵の第２鍵部分は、送信の復号で使用するために受信側によって維持される。好ましくは、第１および第２鍵は、１２８ビットのＰＧＰ暗号化を可能にする。任意選択で、これらの鍵は、個々の当事者によって提供されるバイオメトリック情報に基づき得る。
【００４９】
少なくとも１つの暗号化アルゴリズム識別子。知られている任意の暗号化アルゴリズムが使用のために識別され得る。好ましい暗号化アルゴリズムはＰＧＰ暗号化である。以下で述べる送信プロセスは、２つ以上の暗号化アルゴリズムを使用することができ、２つ以上が使用される場合には、暗号化アルゴリズム識別子によって、識別された各暗号化アルゴリズムが送信プロセスのどこで使用されているかも識別される。送信側と受信側の両方は、暗号化アルゴリズム識別子の記録を維持する。送信側は、識別された暗号化アルゴリズムを使用して送信を暗号化するために第１鍵部分および第３鍵部分を使用し、受信側は、同じアルゴリズムを使用して送信を解読するために第２鍵部分および第４鍵部分を使用する。
【００５０】
以下を含めて他の通信パラメータが、好ましくは送信の送信側によって確立される。
ネットワーク・ポート識別子。ネットワーク・ポート識別子は、送信が送信される意図された受信側のネットワーク・ポートを示す。ネットワーク・ポート識別子は、意図された受信側のネットワーク・ポートのうちのいずれか１つとしてランダムに選択されることができ、または送信用に使用されるネットワーク・プロトコルに従い得る。ネットワーク通信では、ニュー・ジャージー州、PiscatawayのＩＥＥＥオペレーション・センタを通じて入手可能なＩＥＥＥｖ．１０８規格が使用されることが好ましい。
【００５１】
ポート・オフセット識別子。このパラメータは、ネットワーク・ポート識別子と、８つのネットワーク・ポート番号中のネットワーク・ポートのうちの１つとの差として計算される。ポート・オフセット識別子は、３２ビット・ワードとしてバイナリ形式で表される。
【００５２】
日時識別子。このパラメータは、送信の日時とすることもできる、暗号化の日時を表す。ポート・オフセット識別子と同様に日時識別子は、３２ビット・ワードとしてバイナリ形式で表される。
【００５３】
日時スタンプ。このパラメータは、送信が送信された日時を表す。任意選択により、それは日時識別子と同じであってもよい。
【００５４】
４．暗号化されたデータの送信
図４に戻ると、送信側は最初に、送信に含まれるべき情報を準備する。この情報は、受信側が送信の一部を復号し、その送信を送信側から生じたものとして認証するのに役立つ。送信準備の第１工程（１０２）は、送信のメッセージ番号を決定することである。バイナリ形式のメッセージ番号の３つの最下位桁が、ポート番号リストからのポート番号のうちの１つを識別する（１０４）ために使用される。ネットワーク・ポート識別子はランダムに選択され、ポート・オフセット識別子は、ネットワーク・ポート・リストを使用してそこから計算される（１０６）。最後に、送信側は、送信の日時識別子を生成する（１０８）。
【００５５】
送信側から送信されるときに送信は、データ部分とヘッダ部分とを含む。データ部分は送信の内容を含み、ヘッダ部分は識別子とルーティング情報とを含む。メッセージ番号の後にはポート・オフセット識別子および日時識別子が準備されており、それらは両方とも送信のデータ部分に加えられる。日時タイム・スタンプもまた、日時識別子と異なる場合に、送信側の識別と同様にデータ部分に加えられる。受信側の識別もまた、データ部分に加えられ得る。送信のヘッダ部分は、送信側の識別、メッセージ番号、日時識別子、ポート・オフセット識別子、および日時識別子と異なる場合の送信日時を含むように作成される（１１２）。
【００５６】
データ部分に加えられる各アイテムは、受信側の送信認証の助けとするのに役立つ。たとえば、ヘッダ部分の日時識別子およびメッセージ番号は、送信が本物であるならばデータ部分の日時識別子およびメッセージ番号に一致すべきである。送信が受信されたポートと組み合わされた送信側の識別もまた、送信の認証に役立ち得る。これらの識別子を用いた認証については、以下でさらに論じる。
【００５７】
ヘッダ部分を作成した（１１２）後に、使用されるべき暗号化アルゴリズムが通信パラメータから識別される（１１４）。ヘッダ部分（１１６）およびデータ部分（１１８）の暗号化は図５に示すように進み、それぞれの部分が別個に暗号化される。最初に各部分が、識別された圧縮アルゴリズムを使用して圧縮される（１３０）。送信の２つの部分について、それぞれ異なる圧縮アルゴリズムが使用されてもよい。次いで、それぞれの部分が暗号化される（１３２）。暗号化は好ましくは図３に関連して述べたノイズ・テーブルを使用して達成されるが、他の暗号化方法も使用され得る。ヘッダ部分は半公開ノイズ・テーブル鍵および半公開ノイズ・テーブルで暗号化され（１３２）、データ部分は秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルで暗号化される（１３２）。
【００５８】
ノイズ・テーブルを用いたデータ部分の暗号化（１３２）は、秘密参照テーブルを使用して図１および２に関連して述べたようにビット・シフトを行うことによる暗号化を含む。通信パラメータが２つ以上の秘密参照テーブルを備える場合、秘密参照テーブルには連続した序数が割り当てられ、第１の秘密参照テーブルにはゼロが割り当てられる。使用される参照テーブルは、
【００５９】
（メッセージ番号）／（参照テーブル数）の剰余に基づいて選択される。
複数の参照テーブルのうちのどれを使用するか選択する方法は様々であり得るが、選択は好ましくは、通信パラメータのうちの１つまたは複数に基づく。
【００６０】
秘密参照テーブルが選択されると、データ部分の第１ワードは、秘密参照テーブルの後続の行のうちの１つが後に続く秘密参照テーブルの第１行を使用してビット・シフトされる。秘密参照テーブルの後続行のうちの１つは、
【００６１】
（日時識別子＋ネットワーク・ポート識別子＋１３*メッセージ数）／（後続行の数）の剰余に基づいて選択される。
【００６２】
後続のデータ・ワードは、秘密参照テーブルの後続の行のうちの１つが後に続く秘密参照テーブルの第１行を使用してビット・シフトされ、後続の行が循環的に使用される。第１ワードをビット・シフトする際に使用するための秘密参照テーブルの行を選択する方法は様々であり得るが、選択は好ましくは、通信パラメータのうちの１つまたは複数に基づく。
【００６３】
ノイズ・テーブルを用いたヘッダ部分の暗号化（１３２）は、上述のやり方で半公開参照テーブルを使用してビット・シフトを行うことによる暗号化を含む。複数の半公開参照テーブルが使用される場合、ヘッダ部分の符号化のための半公開参照テーブルの選択は、秘密参照テーブルに関連して述べたのと同じやり方で実施されるが、他の選択方法も使用され得る。ヘッダ部分の第１ワードのビット・シフトのために半公開参照テーブルの後続行のうちの最初の行を選択することは、秘密参照テーブルに関連して上述したやり方でやはり実施されるが、半公開参照テーブルの行を選択する他の方法も使用され得る。
【００６４】
この第１暗号化工程（１３２）の後に、送信の各部分が、識別された圧縮アルゴリズムを使用して再び圧縮される（１３４）。上述の圧縮と同様に、送信の２つの部分について、それぞれ異なる圧縮アルゴリズムが使用され得る。最後に、それぞれの部分がＰＧＰ暗号化を使用して暗号化され（１３６）、データ部分が第１秘密鍵を使用して暗号化され、ヘッダ部分が第１半公開鍵を使用して暗号化される。他の暗号化アルゴリズムが、この暗号化工程のためにＰＧＰ暗号化の代わりに使用され得る。さらに、送信の２つの部分について、それぞれ異なる暗号化アルゴリズムが使用され得る。
【００６５】
図４に戻ると、データ部分とヘッダ部分の両方が暗号化された後に２つの部分は、ルーティング・エンベロープ内に包まれ（１２０）、ネットワークを介して電子的に送信される（１２４）。
【００６６】
図６は、図５の第２工程であるデータ部分に対してノイズ・テーブルおよびビット・シフト暗号化を実施する方法について詳述するフローチャートである。ヘッダ部分に対してノイズ・テーブルおよびビット・シフト暗号化を実施する方法は、明示的には示されていないが、送信側が半公開ノイズ・テーブル鍵および半公開ノイズ・テーブルを、それぞれ秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルの代わりに使用するという違いを伴って同じように実施される。図６で使用される用語は以下の通りである。
【００６７】
ｎ：  第１データ・ワード、ｎ＝０からカウントされる特定のデータ・ワードを識別するカウンタ
ＤＷｎ：  平文の第ｎデータ・ワードを表す
ｓＤＷｎ：  上述したようにビット・シフトで符号化された第ｎデータ・ワードを表す
ｋＮＴｎ：  上述したように送信側の秘密ノイズ・テーブル鍵でＸＯＲ符号化された秘密ノイズ・テーブルの第ｎワードを表す
ｔＤＷｎ：  ＸＯＲ操作を使用して送信側の秘密ノイズ・テーブルで符号化された第ｎデータ・ワードを表す
鍵１：  送信側の秘密ノイズ・テーブル鍵
ｋＤＷｎ：  ＸＯＲ操作を使用して送信側の秘密ノイズ・テーブル鍵で符号化された第ｎデータ・ワードを表す
ｐＤＷｎ：  ＸＯＲ操作を使用してＸＯＲ符号化データの最後または前のワードで符号化された第ｎデータ・ワードを表す
ＬＷｎ：  示されたようにＸＯＲ符号化された第ｎデータ・ワード（ＬＷは最終ワードの短縮形）を表す
Ｔｎ：  送信前のさらなる処理の準備が整った暗号化データの第ｎワードを表す
【００６８】
図６の用語で、ＤＷｎは、上記で定義された前の添字（ｐ、ｋ、ｔおよびｓ）のうちの１つまたは複数を有し得る。それぞれの前添字は、データ・ワードに対して実施される単一の処理を表す。前添字の順序は、処理が実施された順序を表す。しかし、連続する２つ以上のＸＯＲ操作がデータ・ワードに対して実施される場合には、ＸＯＲ操作が実施される順序は最終結果と無関係である。２つ以上の前添字が示されている場合、示された各プロセスがデータ・ワードに対して実施されている。例を挙げると、ｋｔｓＤＷｎは、第ｎデータ・ワードがまずビット・シフトで符号化され、次いで秘密ノイズ・テーブルでＸＯＲ符号化され、次いで送信側の秘密ノイズ・テーブル鍵を用いてＸＯＲ符合化されたことを示している。最後に、図６のフローチャート内の工程が括弧書き（parenthetical）を含む場合、括弧書き内の値は、その工程で実施されたプロセスの結果を表す。
【００６９】
図６の詳細に移り、使用されているデータ、図５の第１工程で圧縮されたデータからのものである第１データ・ワードは、ｎ＝０で生じている。このデータ・ワードは、ビット・シフトで符号化され（１５０）、送信側のＸＯＲ符号化秘密ノイズ・テーブルでＸＯＲ操作を用いて符号化され（１５２）、送信側の秘密ノイズ・テーブル鍵でＸＯＲ操作を用いて符号化される（１５４）。結果として生じる暗号化第１データ・ワードは、図５の後続の工程（１３４、１３６）のさらなる処理の準備が整っている。
【００７０】
第２および後続のすべてのデータ・ワードは、同じやり方で処理される。後続の各データ・ワードＤＷｎが符号化される前に、最後の符号化データ・ワードＬＷｎ−１が決定される（１６８、１７０）。第２データ・ワード、ｎ＝１について、最後の符号化データ・ワードＬＷ０が、前のデータ・ワードＤＷｎ−１を対応するノイズ・テーブル・ワードで（１６０）、次いで送信側の秘密ノイズ・テーブル鍵で（１６２）ＸＯＲ符号化した結果に設定される（１７０）。第２データ・ワードの後に続くすべてのデータ・ワード、ｎ＞１について、最後の符号化データ・ワードＬＷｎ−１が、前のデータ・ワードＤＷｎ−１を対応するノイズ・テーブル・ワードで（１６０）、次いで送信側の秘密ノイズ・テーブル鍵で（１６２）、また最後に、直前の最終符号化データ・ワードＬＷｎ−２で（１６４）ＸＯＲ符号化した結果に設定される（１６８）。
【００７１】
決定された最終符号化データ・ワードＬＷｎ−１で（１６８、１７０）、後続の各データ・ワードＤＷｎが符号化され得る。すべての後続のデータ・ワードは、ビット・シフトで符号化され（１７２）、送信側のＸＯＲ符号化秘密ノイズ・テーブルでＸＯＲ操作を使用して符号化され（１７４）、送信側の秘密ノイズ・テーブル鍵でＸＯＲ操作を使用して符号化され（１７６）、最終符号化データ・ワードＬＷｎ−１でＸＯＲ操作を使用して符号化される。結果として生じる各暗号化データ・ワードは、図５の後続の工程（１３４、１３６）のさらなる処理の準備が整っている。すべてのデータ・ワードが暗号化された後に、暗号化プロセスのこの工程は完了する（１８０）。
【００７２】
図７は、図６の暗号化プロセスがどのようにデータ・パケット・ストリーミングでの使用に適応され得るかを示している。図７で使用される用語は、図６で使用されるものと類似するが、以下の追加／変更を伴う。
【００７３】
ｑ：  第１データ・パケット、ｑ＝０からカウントされる特定のデータ・パケットを識別するカウンタ
ｍ：  データ・パケット内のデータ・ワードの総数を識別する数
ＰＷｑ，ｎ：  平文の第ｑパケット内の第ｎデータ・ワードを表す
ｓＰＷｑ，ｎ：  上述したようにビット・シフトで符号化された第ｑパケット内の第ｎデータ・ワードを表す
ｋＮＴｎ：  上述したように送信側の秘密ノイズ・テーブル鍵でＸＯＲ符号化された秘密ノイズ・テーブルの第ｎワードを表す
ｔＰＷｑ，ｎ：  ＸＯＲ操作を使用して送信側の秘密ノイズ・テーブルで符号化された第ｑパケット内の第ｎデータ・ワードを表す
ｋＰＷｑ，ｎ：  ＸＯＲ操作を使用して送信側の秘密ノイズ・テーブル鍵で符号化された第ｑパケット内の第ｎデータ・ワードを表す
ｐＰＷｑ，ｎ：  ＸＯＲ操作を使用してＸＯＲ符号化データの最後または前のワードで符号化された第ｑパケット内の第ｎデータ・ワードを表す
ＬＷｑ，ｎ：  示されたようにＸＯＲ符号化された第ｑパケット内の第ｎデータ・ワードを表す
Ｔｑ，ｎ：  暗号化されたデータの第ｑパケット内の第ｎワードを表す
Ｔｑ：  送信前のさらなる処理の準備が整った暗号化データの第ｑパケットを表す
【００７４】
一連のデータ・パケットの各ワードを暗号化するプロセスは、図６のプロセスに類似する。好ましいパケット・サイズは８キロバイトであり、このサイズは、要望に応じて、あるいは所与のネットワークまたはプロトコルに適するように変化し得る。パケット内のデータを暗号化するために、ｑ＞０についてすべてのデータ・パケットの第１データ・ワードＰＷｑ，０が、ｍを前のデータ・パケットの最後のワードを表すものとして、前のパケットからの最終符号化データ・ワードＬＷｑ−１，ｍを使用してＸＯＲ符号化される(１９０)。各データ・パケットの他のすべてのデータ・ワードは、図６に示すのと同じやり方で符号化される。
【００７５】
５．暗号化された送信を送信するためのシステム
本明細書では、用語「コンピュータ」は、当業者によってネットワークに接続可能な任意のプログラム可能プロセッサ、たとえば、無線によってであれ、物理接続によってであれ接続可能なパーソナル・コンピューティング装置、ネットワーク対応携帯情報端末、ネットワーク接続を有する携帯電話などを指す。さらに、そのネットワーク、またはネットワーク化された２つの構成要素間の任意のネットワーク接続はハード・ワイヤードであっても、無線であってもよい。
【００７６】
図８は、上記の暗号化プロセスが実施されるシステム２００を概略的に示している。第１および第２コンピュータ２０２、２２０は、ネットワーク２０３を介して通信する。第１コンピュータ２０２は、第１サーバ２０８との直接ネットワーク接続を有する。第１コンピュータ２０２へのまたそこからのすべてのネットワーク送信が、第１コンピュータのトランスポート・デーモン２０３を通過する。第１サーバ２０８は、インターネット２１０とのネットワーク接続を有する。同様に第２コンピュータ２２０は、第２サーバ２１２との直接ネットワーク接続を有する。第２コンピュータ２２０へのまたそこからのすべてのネットワーク送信が、第２コンピュータのトランスポート・デーモン２１９を通過する。第２サーバ２１２もまた、インターネット２１０とのネットワーク接続を有する。したがって、ネットワークの各要素、すなわち第１および第２コンピュータ２０２、２２０、ならびに第１および第２サーバ２０８、２１２は、ネットワークの互いの要素に通信可能に接続される。それぞれの要素は、インターネットとのネットワーク接続を介して、インターネット接続された他の装置およびコンピュータとも通信可能に接続される。しかし、２つのコンピュータ２０２、２２０は少なくとも、ネットワークを介して通信可能に互いに接続される必要があるにすぎない。
【００７７】
第１および第２コンピュータ２０２、２２０は、ユーザとグループの両方のプロセスをホストする。ユーザ・プロセスおよびその関連のグループ・プロセスは、同じコンピュータ上でホストされる必要はない。ユーザ・プロセス２０４、２１８は、コンピュータのユーザによって直接的にまたは非直接的に開始される。同様にグループ・プロセス２０６、２１６は、プロセスが属するグループの一員であるユーザによって直接的にまたは非直接的に開始される。あるいは、ユーザおよびグループ・プロセスは、それぞれ異なるコンピュータ上でホストされてもよい。一般に各ユーザは、ローカル・ネットワーク環境内の少なくとも１つのグループに属し、それぞれのグループは一般に、複数のユーザを含む。多くのネットワーク・コンピューティング環境のように、単一のコンピュータが、複数のユーザおよびユーザ・プロセスを複数のグループおよびグループ・プロセスに加えてホストし得る。ネットワーク化されたシステムは一般に非常に柔軟でスケーラブルであり、多くの異なる構成が可能であることが当業者には理解されよう。したがって、図８は、暗号化されたデータを送信するためシステムがどのように構成され得るかについての一例にすぎない。
【００７８】
図８で、ユーザＡ２は、ユーザＡ１からの暗号化された送信の意図された受信者であり、また最終宛先である。送信がどのように暗号化されるべきかを定義し、暗号化を可能にするこれらの通信パラメータは、好ましくはユーザＡ２によって確立され、送信に先立つあるときにユーザＡ１に提供される。ユーザＡ１は、上述したように、送信が暗号化され送信されるときに残りの通信パラメータを確立する。
【００７９】
暗号化された送信の発信者および受信者としてユーザＡ１およびＡ２は、通信リンクのそれぞれ起点ノードおよび終端ノードと称される。通信リンクの起点ノードは、意図された受信側および終端ノードについてのヘッダ部分を暗号化したプロセス、ユーザ、グループ、サーバ、トランスポート・デーモン、コンピュータなどであり、この終端ノードは、意図された受信側であるプロセス、ユーザ、グループ、サーバ、トランスポート・デーモン、コンピュータなどであり得る。
【００８０】
図８で、第１ユーザ・プロセス２０４は、第２ユーザ・プロセス２１８への暗号化された送信を生成している。第１ユーザ・プロセス２０４は、意図された受信側として第２ユーザ・プロセス２１８についての送信のデータ部分およびヘッダ部分を暗号化している。したがって、２つのユーザ・プロセス２０４、２１８は、この送信のための単一の通信リンクを形成している。さらに、データ部分の発信元およびデータ部分の意図された受信側として２つのユーザ・プロセス２０４、２１８は最も低いレベルの通信リンクを形成しており、この通信リンク内に他の通信リンクが組み込まれ得る。図９Ａは、第１ユーザ・プロセス２０４から生成され送信される送信を概略的に示している。送信は、図９Ａに概略的に示されるように、データ部分２３０とヘッダ部分２３２とルーティング・エンベロープ２３４とを含む。
【００８１】
第１ユーザ・プロセス２０４は、すべてが第２ユーザ・プロセス２１８に関連している、第１暗号化鍵の第１鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、秘密参照テーブル、秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルを上述したように使用して送信のデータ部分２３０を暗号化する。第１ユーザ・プロセス２０４は、すべてが第２ユーザ・プロセス２１８に関連している、第２暗号化鍵の第１鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、半公開参照テーブル、半公開ノイズ・テーブル鍵および半公開ノイズ・テーブルを上述したように使用して、ヘッダ部分を暗号化する。したがって、秘密通信パラメータが秘密のままである限り、第２ユーザ・プロセス２１８だけが送信の両方の部分を解読し得る。さらに、暗号は破られ得るが、こうしたことは容易にはなされないことが当業者には理解されよう。
【００８２】
第１ユーザ・プロセス２０４によって作成される送信のルーティング・エンベロープ２３４は、確立される通信リンクの終端ノード上の意図された受信側、この場合には第２ユーザ・プロセス２１８の識別、ネットワーク上の送信の次の受信側、この場合には第１グループ・プロセス２０６の識別、第１ユーザ・プロセス２０４によって生成されるネットワーク・ポート識別子、およびその送信のために使用されるネットワーク・プロトコルに適合するのに必要な他の任意の情報を含む。好ましくは第１ユーザ・プロセス２０４は、意図された受信側に送信をやみくもにルーティングする。換言すると、ルーティング・エンベロープは送信側の識別を含んでおらず、送信側は、受信側からも、介在するサーバからも送信の確認の受領を期待しない。しかし、送信側の識別は、所望であれば、あるいは使用されるネットワーク・プロトコルに適合するのに必要であればルーティング・エンベロープ内に含められてもよい。
【００８３】
第１ユーザ・プロセス２０４は第１グループ・プロセス２０６を介して送信をルーティングし、この第１グループ・プロセスは、意図された受信側ではないので、送信を再ルーティングする。ユーザ・プロセスからの送信は好ましくは、送信の発信側および意図された受信側の秘密を維持する助けとするために、グループ・プロセッサを常に通過する。送信の再ルーティングでは、第１グループ・プロセス２０６は第２通信リンクの起点ノードであり、第２グループ・プロセス２１６は第２通信リンクの終端ノードである。この第２通信リンクは、第１通信リンク内に完全に組み込まれる。
【００８４】
図１０は、より上のレベルの通信リンクの起点ノードによってであれ、最終宛先ではない終端ノード上であれ、最終宛先である終端ノード上であれ、送信を受信し、適切な場合には送信を再ルーティングするプロセスを示している。第１ユーザ・プロセス２０４から送信を受信すると（３０２）、第１グループ・プロセス２０６は、送信が再ルーティングされるべきかどうか、または第１グループ・プロセス２０６が意図された受信側であるかどうか判断する（３０４）。この判断は、ルーティング・エンベロープ内の情報に基づく。送信が終端ノード上で受信される場合、この判断は、ヘッダ部分内に含まれる情報にも基づく。第１ユーザ・プロセス２０４からの送信では、ルーティング・エンベロープは、第２ユーザ・プロセス２１８が意図された受信側であることを識別し、それによって第１グループ・プロセス２０６が送信を再ルーティングすべきであることを示す。
【００８５】
第１グループ・プロセス２０６は、送信の発信元として第１ユーザ・プロセス２０４、送信の最終宛先として第２ユーザ・プロセス２１８、および第１ユーザ・プロセス２０４によって生成されたネットワーク・ポート識別子を識別するすべての参照をルーティング・エンベロープから取り除く（３０６）。さらに、第１グループ・プロセス２０６は、意図された受信側として第２グループ・プロセス２１６の識別、送信の次の受信側の識別として第１コンピュータ２０２の識別、および第１グループ・プロセス２０６と第２グループ・プロセス２１６の間で確立された通信パラメータに基づくネットワーク・ポート識別子をルーティング・エンベロープに加える。第１コンピュータ２０２は、コンピュータのこうした送信を管理するトランスポート・デーモン２０３を含む。第１グループ・プロセス２０６は、暗号化された形式の、図９Ｂに概略的に示された第２ヘッダ部分２３６をも送信に追加する（３０８）。この第２ヘッダ部分２３６は、図５および６に関連して述べたように別個に暗号化された２つの下位部分を含む。第２ヘッダ部分２３６を暗号化するために使用される通信パラメータは、第１グループ・プロセス２０６と第２グループ・プロセス２１６の間で確立され、したがって、第１ユーザ・プロセス２０４と第２ユーザ・プロセス２１８の間で確立された通信パラメータとは異なる可能性が高い。
【００８６】
第２ヘッダ部分２３６の第１下位部分は、送信の最終宛先として第２ユーザ・プロセス２１８の識別、第１ユーザ・プロセス２０４によって生成されたネットワーク・ポート識別子、第２通信リンク内の送信の発信側としてグループ・プロセス２０６の識別、メッセージ番号、日時識別子、ポート・オフセット識別子、および（日時識別子と異なる場合の）送信の日時を少なくとも含み、これらすべてが、第１グループ・プロセス２０６と第２グループ・プロセス２１６の間で確立された通信パラメータに基づいている。第２ヘッダ部分２３６の第１下位部分は、他の情報をも含み得る。
【００８７】
第２ヘッダ部分２３６の第１下位部分は、すべてが第１グループ・プロセス２０６と第２グループ・プロセス２１６の間で確立される通信パラメータに関連しており、またはその一部である、第１暗号化鍵の第１鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、秘密参照テーブル、第１秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルを上述したように使用して暗号化される。したがって、通信パラメータが秘密のままである限り、第２グループ・プロセス２１６だけが、送信の第２ヘッダ部分の第１下位部分を解読することができる。
【００８８】
第２ヘッダ部分２３６の第２下位部分は、現在の通信リンクの起点ノードの識別、この場合には第１グループ・プロセス２０６、ならびにそれぞれが第２ヘッダ部分２３６の第１下位部分に含まれているメッセージ番号、日時識別子、ポート・オフセット識別子、および送信の日時を少なくとも含む。第２ヘッダ部分２３６の第２下位部分は、他の情報をも含み得る。第２ヘッダ部分２３６の第２下位部分は、すべてが第１グループ・プロセス２０６と第２グループ・プロセス２１６の間で確立された通信パラメータに関連しており、またはその一部である、第２暗号化鍵の第１鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、半公開参照テーブル、半公開ノイズ・テーブル鍵および半公開ノイズ・テーブルを上述したように使用して暗号化される。したがって、通信パラメータが秘密のままである限り、第２グループ・プロセス２１６だけが、送信の第２ヘッダ部分を解読することができる。さらに、第１および第２ユーザ・プロセス２０４、２１８のそれぞれ送信の発信元および最終宛先としての識別は、第２通信リンクの第１グループ・プロセス２０６と第２グループ・プロセス２１６の間のすべてのネットワーク・ポイントで秘密に維持される。発信および受信側の秘密は、暗号が意図的に破られ、または通信パラメータの秘密が損なわれない限りは維持される。
【００８９】
図８のシステムで、グループ・プロセス２０６、２１６は、その間の直接ネットワーク接続は有しておらず、いずれもインターネット２１０に接続されていない。したがって、第１グループ・プロセス２０６は、第２グループ・プロセス２１６に直接には送信を再ルーティングすることができない。したがって、第１グループ・プロセス２０６は、トランスポート・デーモン２０３が第１コンピュータ２０２についての送信を管理している、第１コンピュータ２０２のコンピュータ・レベルに送信を再ルーティングする。通信パラメータが第１コンピュータ２０２と第１サーバ２０８の間に確立されているので、トランスポート・デーモン２０３は、第３通信リンクを確立することによって第１サーバ２０８に送信を再ルーティングする。この通信リンクは、その起点ノードとして第１コンピュータ２０２を、その終端ノードとして第１サーバ２０８を有する。
【００９０】
トランスポート・デーモン２０３が送信を第１サーバ２０８に再ルーティングするためのプロセスは、第１グループ・プロセス２０６による再ルーティングに関連して上記で述べたプロセスとほぼ同じである。プロセス間の差は、通信パラメータにある。第１グループ・プロセス２０６が第２グループ・プロセス２１６に関連する通信パラメータを使用する場合、トランスポート・デーモン２０３も同様に、第１サーバ２０８に関連する通信パラメータを使用する。
【００９１】
第１グループ・プロセス２０６からの送信のルーティング・エンベロープは、意図された受信側として第２グループ・プロセス２１６を識別し、それによってトランスポート・デーモン２０３が送信を再ルーティングすべきことを示しており、また第１グループ・プロセス２０６によって生成されたネットワーク・ポート識別子を含む。トランスポート・デーモン２０３は、第１および第２グループ・プロセス２０６、２１６を第２通信リンクのそれぞれ起点および終端ノードとして識別するすべての参照、ならびに第１グループ・プロセス２０６によって生成されたネットワーク・ポート識別子をルーティング・エンベロープから取り除く。トランスポート・デーモン２０３は、送信の意図された受信側と次の受信側の両方としての第１サーバ２０８の識別、第１コンピュータ２０２と第１サーバ２０８の間で確立された通信パラメータに基づくネットワーク・ポート識別子をルーティング・エンベロープに加える。トランスポート・デーモン２０３は、図９Ｃに概略的に示す暗号化された形式の第３ヘッダ部分２３８をも送信に加える。この第３ヘッダ部分２３８は、図５および６に関連して述べたように別個に暗号化される２つの下位部分を含む。第３ヘッダ部分２３８を暗号化するために使用される通信パラメータは、第１サーバ２０８と第２サーバ２１２の間で確立され、したがって、第１ユーザ・プロセス２０４と第２ユーザ・プロセス２１８の間で確立された通信パラメータ、および第１グループ・プロセス２０６と第２グループ・プロセス２１６の間で確立された通信パラメータとは異なる可能性が高い。
【００９２】
第２ヘッダ部分と同様に第３ヘッダ部分２３８の第１下位部分は、すぐ下のレベルの通信リンク内の送信の宛先として第２グループ・プロセス２１６の識別、次に低い通信リンクの起点ノード、この時点では第１グループ・プロセス２０６によって生成されたネットワーク・ポート識別子、第３通信リンク内の送信の発信元として第１コンピュータ２０２の識別、メッセージ番号、日時識別子、ポート・オフセット識別子、および（日時識別子と異なる場合の）送信の日時を少なくとも含み、これらすべてが第１コンピュータ２０２と第１サーバ２０８の間で確立された通信パラメータに基づく。第３ヘッダ部分２３８の第１下位部分は、他の情報をも含み得る。
【００９３】
第３ヘッダ部分２３８の第１下位部分は、すべてが第１コンピュータ２０２と第１サーバ２０８の間で確立された通信パラメータに関連しており、またはその一部である、第１暗号化鍵の第１鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、秘密参照テーブル、第１秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルを上述したように使用して暗号化される。したがって、通信パラメータが秘密のままである限り、第１サーバ２０８だけが、送信の第２ヘッダ部分の第１下位部分を解読することができる。
【００９４】
第３ヘッダ部分２３８の第２下位部分は、現在の通信リンクの起点ノードの識別、この場合には第１コンピュータ２０２、ならびにそれぞれが第３ヘッダ部分２３８の第１下位部分に含まれているメッセージ番号、日時識別子、ポート・オフセット識別子、および送信の日時を少なくとも含む。第３ヘッダ部分２３８の第２下位部分は、他の情報をも含み得る。第３ヘッダ部分２３８の第２下位部分は、すべてが第１サーバ２０８と第２サーバ２１２の間で確立された通信パラメータに関連しており、またはその一部である、第２暗号化鍵の第１鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、半公開参照テーブル、半公開ノイズ・テーブル鍵および半公開ノイズ・テーブルを上述したように使用して暗号化される。したがって、通信パラメータが秘密のままである限り、第１サーバ２０８だけが、送信の第３ヘッダ部分２３８の第２下位部分を解読することができる。さらに、第１および第２グループ・プロセス２０６、２１６の次に低い通信リンクのそれぞれ起点および終端ノードとしての識別は、第１コンピュータ２０２と第１サーバ２０８の間のすべてのネットワークおよびインターネット・ポイントで秘密に維持される。したがって、より低い通信リンク・ノードの秘密は、暗号が意図的に破られることを除いては、事実上維持される。
【００９５】
上記プロセスによって形成される送信は、（第１コンピュータ２０２のトランスポート・デーモン２０３によって生成された）ルーティング・エンベロープ内に含まれるネットワーク・ポート識別子によって示されるように第１サーバ２０８のネットワーク・ポートにルーティングされる。図８および１０を参照して述べると、第３通信リンクの終端ノードである第１サーバ２０８は、送信を受信する（３０２）。送信のルーティング・エンベロープは、第１サーバ２０８が送信の次の受信側と意図された受信側の両方であることを示しており（３０４）、したがって、第１サーバ２０８は、送信を認証し、またどのように送信をさらに処理すべきか決定するために、第３ヘッダ部分２３８の第２下位部分を解読する（３１２）。第３ヘッダ部分２３８の第２下位部分は、第２暗号化鍵の第２鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、第３秘密ノイズ・テーブル鍵、半公開ノイズ・テーブルおよび半公開参照テーブルを使用して解読され、これらすべてが第１コンピュータ２０２と第１サーバ２０８の間に確立された通信パラメータに関連しており、またはその一部であり、すべてが上述したように使用される。
【００９６】
第３ヘッダ部分２３８の第２下位部分内に含まれる復号された情報は、現在の通信リンクの起点ノードとして第１コンピュータ２０２を識別し、メッセージ番号、ポート・オフセット標識、および第１コンピュータ２０２のトランスポート・デーモン２０３によって生成された日時識別子を提供する。第２ヘッダ部分２３６の第２下位部分内の情報は、第１グループ・プロセス２０６から生じるものとして送信を認証するために使用される。第３ヘッダ部分からのメッセージ番号は、第１コンピュータ２０２からの次の送信において第１サーバ２０８によって予期されているメッセージ番号と比較される。メッセージ番号は、第１コンピュータ２０２と第１サーバ２０８の間で確立される通信パラメータの一部であるポート番号のリスト内のポート番号のうちの１つを識別するために使用される。識別されたこのポート番号とポート・オフセット標識との和が、送信がそれを介して到着したネットワーク・ポートと同じならば、送信はさらに、第１コンピュータ２０２から生じたものとして検証される。最後に、第３ヘッダ部分２３８からの日時スタンプは、送信が時宜を得たやり方で送達されたことを保証するために調べられる。送信の送達時間の大きな遅れは、送信が本物ではなく、または送達前に改ざんされたことを示すものとして役立ち得る。
【００９７】
送信を認証すると、第３ヘッダ部分２３８の第１下位部分は、どのように送信をさらに処理するかを決定するために復号される。識別された起点ノードの識別を用いて、また第３ヘッダ部分２３８の第２下位部分から得られる他の情報を使用して、第１サーバ２０８は、すべてが第１コンピュータ２０２と第１サーバ２０８の間に確立された通信パラメータに関連しており、またはその一部である、第１暗号化鍵の第１鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、秘密参照テーブル、第２秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルを上述したように使用して、第３ヘッダ部分２３８の第１下位部分を解読する。
【００９８】
第３ヘッダ部分２３８内の復号された情報は、第１サーバ２０８がデータ部分の意図された受信側ではないことを示し（３１４）、また第２グループ・プロセス２１６が送信の意図された次の受信側であることをも示す（３１６）。したがって、第１サーバ２０８は、第３ヘッダ部分２３８の第１下位部分に含まれる情報に従って送信を再ルーティングする準備をする。第３ヘッダ部分２３８内で識別された意図された受信側が、第１サーバ２０８が直接のネットワーク・リンクを有していないグループ・プロセスであると認識して（３１８）、第１サーバ２０８は、第２サーバ２１２に送信を再ルーティングする。
【００９９】
第１サーバ２０８が送信を第２サーバ２１２に再ルーティングするためのプロセスは、第１コンピュータ２０２のトランスポート・デーモン２０３が送信を再ルーティングするためのプロセスとほぼ同じあり、その差は、使用される通信パラメータにある。図９Ｄは、第１サーバ２０８によって加えられる第４ヘッダ部分２４０を含む、第１サーバ２０８と第２サーバ２１２の間の送信を概略的に示している。
【０１００】
第２サーバ２１２上で送信が受信されると、第１サーバ２０８によって暗号化された第４ヘッダ部分の両方の部分は、第３ヘッダ部分２３８に関連して上述したやり方で解読される。第４ヘッダ部分からの復号された情報は、第２グループ・プロセス２１６が送信の意図された次の受信側であることを示しており、第２サーバ２１２は、第２サーバ２１２が直接のネットワーク・リンクを有するコンピュータ２２０上に第２グループ・プロセス２１６が常駐することを認識する。したがって、第５通信リンクの起点ノードを形成する第２サーバ２１２は、終端ノードである第２コンピュータ２２０に送信を再ルーティングする。第２サーバ２１２と第２コンピュータ２２０の間の送信は他の通信リンクと同様に実施され、通信パラメータがこの通信リンクのノード間で確立され、新しいヘッダ部分が送信に加えられる。
【０１０１】
第２コンピュータのトランスポート・デーモン２１９は、第２サーバ２１２からの送信を受信し処理する。この第５通信リンクに関連するヘッダ部分の解読は、第３通信リンクに関連して述べたものと類似のやり方で進み、その差は、第２サーバ２１２と第２コンピュータ２２０の間で確立される通信パラメータが解読プロセスで使用されることである。このヘッダ部分に含まれる情報は、第２コンピュータ２２０が意図された受信側ではなく、第２グループ・プロセス２１６が意図された受信側、または次に低い通信リンクの終端ノードであることを示している。したがって、トランスポート・デーモンは、前の情報をルーティング・エンベロープから削除し、意図された受信側として第２グループ・プロセス２１６の識別、およびこの時点では第１グループ・プロセス２０８によって生成されたネットワーク・ポート識別子である、ちょうど復号されたヘッダ部分から取得されたネットワーク・ポート識別子をルーティング・エンベロープに挿入することによって、第２グループ・プロセス２１６に送信をルーティングする（３２０）。したがって、送信は、第１グループ・プロセス２０６によって確立されたネットワーク・ポートを介して第２グループ・プロセス２１６に送達される。
【０１０２】
第２グループ・プロセス２１６は、類似のやり方で送信を処理する。第２通信リンクの終端ノードである第２グループ・プロセス２１６は、送信を受信する（３０２）。送信のルーティング・エンベロープは、第２グループ・プロセス２１６が送信の意図された受信側であることを示しており（３０４）、したがって、第２グループ・プロセス２１６は、送信を認証し、どのように送信をさらに処理するかを決定するために、第２ヘッダ部分２３６の第１および第２下位部分を解読する（３１２）。第２ヘッダ部分２３６の第２下位部分は、第２暗号化鍵の第２鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、第３秘密ノイズ・テーブル鍵、半公開ノイズ・テーブルおよび半公開参照テーブルを使用して解読され、これらすべてが第１グループ・プロセス２０６と第２グループ・プロセス２１６の間に確立された通信パラメータに関連しており、またはその一部であり、すべてが上述したように使用される。
【０１０３】
第２ヘッダ部分２３６の第２下位部分内に含まれる復号された情報は、通信リンクの起点ノードとして第１グループ・プロセス２０６を識別し、メッセージ番号、ポート・オフセット標識、および第１グループ・プロセス２０６によって生成された日時識別子を提供する。第２ヘッダ部分２３６の第２下位部分内の情報は、送信を第１グループ・プロセス２０６から生じたものとして認証するために使用される。メッセージ番号は、第１グループ・プロセス２０６からの次の送信において第２グループ・プロセス２１６によって予期されているメッセージ番号と比較される。メッセージ番号は、第１グループ・プロセス２０６と第２グループ・プロセス２１６の間の通信パラメータの一部として確立されたポート番号のリスト内のポート番号のうちの１つを識別するために使用される。識別されたこのポート番号とポート・オフセット標識との和が、送信がそれを介して到着したネットワーク・ポートと同じならば、送信はさらに、第１グループ・プロセス２０６から生じたものとして検証される。最後に、第２ヘッダ部分２３６からの日時スタンプは、送信が時宜を得たやり方で送達されたことを保証するために調べられる。送信の送達時間の大きな遅れは、送信が本物ではなく、または送達前に改ざんされたことを示すものとして役立ち得る。
【０１０４】
送信が認証されると、第２ヘッダ部分２３６の第１下位部分が、どのように送信をさらに処理するかを決定するために復号される。識別された起点ノードの識別を用いて、また第２ヘッダ部分２３６の第２下位部分から得られる他の情報を使用して第２グループ・プロセス２１６は、すべてが第１グループ・プロセス２０６と第２グループ・プロセス２１６の間で確立された通信パラメータに関連しており、またはその一部である、第１暗号化鍵の第１鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、秘密参照テーブル、第２秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルを上述したように使用して、第２ヘッダ部分２３６の第１下位部分を復号する。
【０１０５】
第２ヘッダ部分２３６内の復号された情報は、第２グループ・プロセス２１６がデータ部分の意図された受信側ではないことを示し（３１４）、また第２ユーザ・プロセス２１８が送信の意図された次の受信側であることをも示す（３１６）。したがって、第２グループ・プロセス２１６は、第２ヘッダ部分２３６の第１下位部分内に含まれる情報に従って送信を再ルーティングする準備をする。第２ヘッダ部分２３６内で識別される意図された受信側が同じコンピュータ２２０内に常駐するユーザ・プロセスであることを認識して（３１８）第２グループ・プロセス２１６は、前の情報をルーティング・エンベロープから削除し、意図された次の受信側として第２ユーザ・プロセス２１８の識別、および第２ヘッダ部分２３６から取得されたネットワーク・ポート識別子、すなわち第１ユーザ・プロセス２０２によって生成されたネットワーク・ポート識別子をルーティング・エンベロープ内に挿入することによって、送信を第２ユーザ・プロセス２１８にルーティングする（３２０）。したがって、送信は、第１ユーザ・プロセス２０４によって確立されたネットワーク・ポートを介して第２ユーザ・プロセス２１８に送達される。
【０１０６】
第２ユーザ・プロセス２１８も、同じように送信を処理する。第１通信リンクの終端ノードである第２ユーザ・プロセス２１８は、送信を受信する（３０２）。送信のルーティング・エンベロープは、第２ユーザ・プロセス２１８が送信の受信側であることを示しており（３０４）、したがって、第２ユーザ・プロセス２１８は、送信を認証し、またどのように送信をさらに処理するかを決定するために、（下位部分をもたない）第１ヘッダ部分２３２を解読する（３１２)。第１ヘッダ部分２３２は、第２暗号化鍵の第２鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、第３秘密ノイズ・テーブル鍵、半公開ノイズ・テーブルおよび半公開参照テーブルを使用して解読され（３１２)、これらすべてが第１ユーザ・プロセス２０４と第２ユーザ・プロセス２１８の間に確立された通信パラメータに関連しており、またはその一部であり、すべてが上述したように使用される。
【０１０７】
第１ヘッダ部分２３２内に含まれる復号された情報、すなわちメッセージ番号、ポート・オフセット標識、日時識別子、および第１通信リンクの起点ノードとしての第１ユーザ・プロセス２０４の識別は、メッセージを第１ユーザ・プロセス２０４から生じたものとして認証するために使用される。第１ヘッダ部分２３２からのメッセージ番号は、第１ユーザ・プロセス２０４からの次の送信において第２ユーザ・プロセス２１８によって予期されているメッセージ番号と比較される。メッセージ番号は、第１ユーザ・プロセス２０４と第２ユーザ・プロセス２１８の間の通信パラメータの一部として確立されたポート番号のリスト内のポート番号のうちの１つを識別するために使用される。識別されたこのポート番号とポート・オフセット標識との和が、送信がそれを介して到着したネットワーク・ポートと同じならば、送信はさらに、第１ユーザ・プロセス２０４から生じたものとして検証される。最後に、第２ヘッダ部分２３６からの日時スタンプは、送信が時宜を得たやり方で送達されたことを保証するために調べられる。送信の送達時間の大きな遅れは、送信が本物ではなく、または送達前に改ざんされたことを示すものとして役立ち得る。
【０１０８】
送信が認証されると、第２ユーザ・プロセス２１８は、それが送信のデータ部分２３０の意図された受信側であると判断する（３１４）。したがって、第２ユーザ・プロセス２１８は、すべてが第１ユーザ・プロセス２０４と第２ユーザ・プロセス２１８の間に確立された通信パラメータに関連しており、またはその一部である、第１暗号化鍵の第２鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、第２秘密ノイズ・テーブル鍵、秘密ノイズ・テーブル、および秘密参照テーブルを使用して送信のデータ部分２３０の解読に取り掛かる(３２２)。送信の信憑性が再び検証される（３２４）。メッセージ番号、ポート・オフセット識別子、日時識別子、送信側の識別、および送信のヘッダ部分に含まれる日時スタンプは、さらなる認証のために送信のデータ部分に含まれる同じ情報と比較される。
【０１０９】
図１１は、上述のシステムで可能な多くの異なる構成のうちの一部を示している。図８のシステムは概略的に示されており、このシステムでは、最も低いレベル（すなわち第１）の通信リンクの起点および終端ノードはそれぞれユーザ４およびユーザ５であり、第２通信リンクの起点および終端ノードはそれぞれグループ１およびグループ２であり、第３通信リンクの起点および終端ノードはそれぞれサーバ１およびサーバ２である。別の構成はサーバ２とサーバ３とを含むことがあり、この構成では、これらの２つのサーバが通信リンクを形成し、２つのノードがネットワーク接続によって直接リンクされる。さらに別の構成は、ユーザ１３およびユーザ１４を第１通信リンクのそれぞれ起点および終端ノードとして、またサーバ４およびサーバ５を第２通信リンクの起点および終端ノードとして含み得る。要するに、ネットワーク化可能な任意の単一のコンピュータが、後述するように、暗号化された送信を送信するために起点ノード、終端ノードまたはその両方の働きをし得る。ネットワークを介して接続された２つの装置間に適切な通信パラメータが確立されている場合には、送信側装置は通信リンクの起点ノードとして、意図された受信側装置は終端ノードとして確立される。
【０１１０】
上述のシステムのさらに別の構成では、単一のコンピュータが、第１通信リンクの終端ノードと、その次の通信リンクの起点ノードの両方をホストすることができる。さらに、２つのノードは、単一のユーザ、グループまたはサーバ・プロセスによって表され得る。例を挙げると、ユーザ１３およびユーザ１４は第１通信リンクのそれぞれ起点および終端ノードとすることができ、サーバ４およびサーバ６は第２通信リンクのそれぞれ起点および終端ノードとすることができ、サーバ６およびサーバ５は第３通信リンクのそれぞれ起点および終端ノードとすることができる。
【０１１１】
この構成では、サーバ６は、第２通信リンクの終端ノードと第３通信リンクの起点ノードの両方である。サーバ６は、サーバ４から入ってくる送信を上記とほぼ同じやり方で処理し、再ルーティングする。図１０を参照すると、サーバ６は、第２通信リンクの終端ノードとして送信を受信している（３０２）。送信のルーティング・エンベロープは、サーバ６が送信の受信側であることを示しており（３０４）、したがって、サーバ６は、送信を認証し、送信をさらにどのように処理するかを決定するために第２ヘッダ部分を解読する（３１２）。第２ヘッダ部分は、サーバ４とサーバ６の間に確立された通信パラメータを使用して解読される（３１２）。
【０１１２】
第２ヘッダ部分内に含まれる復号された情報、すなわちメッセージ番号、ポート・オフセット標識、日時識別子、およびサーバ４の第２通信リンクの起点ノードとしての識別は、上述したやり方でメッセージをサーバ４から生じたものとして認証するために使用される。送信を認証するとサーバ６は、第２ヘッダ部分に含まれる情報に従って送信を再ルーティングする準備をする。第２ヘッダ部分内の復号された情報は、サーバ６がデータ部分の意図された受信側でないことを示し（３１４）、またユーザ１４が送信の意図された次の受信側であることを示している（３１６）。さらに、サーバ６は、それがユーザ１４との直接のネットワーク接続を有していないと判断し（３１８）、第３通信リンクの起点ノードとして送信を再ルーティングする準備をする。サーバ６は、ルーティング・エンベロープから適切な情報を削除し（３０６）、上述したやり方で現在のルーティングを行うために、新しい情報をその中に挿入する。サーバ６は、上述したやり方で第３ヘッダ部分２４０をも追加する（３０８）。送信がこのように処理されると、サーバ６は、第３通信リンクの終端ノードとしてサーバ５に送信を再ルーティングする。上述したように、発信および受信側の秘密は、暗号が意図的に破られることを除いては事実上維持される。
【０１１３】
重要なことには、図１１に示す多数の通信リンクは、通信リンクの起点および終端ノードを確立するときに、本明細書で述べた暗号化方法を使用して通信することに限定されない。任意の暗号化アルゴリズムまたはアルゴリズムの組合せが、ノード間のデータ送信を暗号化するために使用され得る。
【０１１４】
このように、データを暗号化し送信する方法、および暗号化されたデータを送信するためのシステムが開示される。本発明の実施形態について示し述べたが、本発明の発明概念から逸脱せずに多くの修正が可能であることが当業者には明らかになろう。したがって、本発明は、特許請求の範囲の精神を除いては限定されるものではない。
【図面の簡単な説明】
【０１１５】
【図１】第１のデータ暗号化方法を示す図である。
【図２】図１の暗号化方法で使用される参照テーブルの一例を示す図である。
【図３】第２のデータ暗号化方法を示す図である。
【図４】暗号化された送信を生成する方法を示すフローチャートである。
【図５】第３のデータ暗号化方法を示すフローチャートである。
【図６】第４暗号化方法を示すフローチャートである。
【図７】データをパケットで送信する方法を示すフローチャートである。
【図８】データ送信を暗号化するためのシステムを概略的に示す図である。
【図９】図４の方法を使用して生成される、暗号化されたデータ送信を概略的に示す図である。
【図１０】データ送信をルーティングする方法を示すフローチャートである。
【図１１】データ送信を暗号化するためのネットワーク化された複数のシステムを概略的に示す図である。
【図１】
2008501253.tif 000003
【図２】
2008501253.tif 000004
【図３】
2008501253.tif 000005
【図４】
2008501253.tif 000006
【図５】
2008501253.tif 000007
【図６】
2008501253.tif 000008
【図７】
2008501253.tif 000009
【図８】
2008501253.tif 000010
【図９】
2008501253.tif 000011
【図１０】
2008501253.tif 000012
【図１１】
2008501253.tif 000013