JP2008501253A - データを暗号化し送信する方法および暗号化されたデータを送信するためのシステム - Google Patents

データを暗号化し送信する方法および暗号化されたデータを送信するためのシステム Download PDF

Info

Publication number
JP2008501253A
JP2008501253A JP2006549498A JP2006549498A JP2008501253A JP 2008501253 A JP2008501253 A JP 2008501253A JP 2006549498 A JP2006549498 A JP 2006549498A JP 2006549498 A JP2006549498 A JP 2006549498A JP 2008501253 A JP2008501253 A JP 2008501253A
Authority
JP
Japan
Prior art keywords
data
word
row
bits
rows
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006549498A
Other languages
English (en)
Other versions
JP2008501253A5 (ja
Inventor
ステッドロン,ロバート,アレン
フミレブスキ,ジョン,エル.
Original Assignee
エンクリプション ソリューションズ,インク.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/753,753 external-priority patent/US7752453B2/en
Priority claimed from US10/753,762 external-priority patent/US7526643B2/en
Application filed by エンクリプション ソリューションズ,インク. filed Critical エンクリプション ソリューションズ,インク.
Publication of JP2008501253A publication Critical patent/JP2008501253A/ja
Publication of JP2008501253A5 publication Critical patent/JP2008501253A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

データを暗号化し送信する方法、および暗号化されたデータを送信するためのシステム。この方法は、1つまたは複数の異なる暗号化アルゴリズムを含み、多数のレベルの暗号化を達成するためにそれぞれ異なる暗号化アルゴリズムを使用することを含み得る。第1暗号化アルゴリズムは、符号化されたデータを得るため、データを表すビットの多数の再配列に基づく。第2暗号化アルゴリズムは、各データ・ワードが前のデータ・ワードで少なくとも符号化されるように、データを表すビットに対して多数のXOR操作を実施することに基づく。このシステムは、第1および第2コンピュータと、複数の通信パラメータとを備える。2つのコンピュータはネットワークに通信可能に接続され、第2コンピュータは第1コンピュータに送信をルーティングするように適応される。この送信はデータ部分とヘッダ部分とを含み、この両方の部分が、第2コンピュータによって通信パラメータを使用して暗号化される。第1コンピュータは、通信パラメータを使用して送信を解読する。

Description

本発明の分野は、暗号技術である。
暗号技術の科学は、何千年もの間存在してきたが、暗号技術が一般の人々にとって重要になったのは、ここ百年ほどにすぎない。まず電信で、次いで無線および電話通信で、そして今やすべての種類、有線と無線の両方のインターネットおよびコンピュータ・ネットワークを介した電子通信によって特徴付けられる情報化時代においてである。
暗号技術の長い歴史を考慮すると、平文(用語平文、暗号化されていない情報、暗号化されていないデータおよび暗号化されていない送信は、本明細書では同義で用いられている)から暗号文(同様に、用語暗号文、暗号化された情報、暗号化されたデータおよび暗号化された送信は、本明細書では同義で用いられている)を生成するのに多くの方法が使用可能であり、単純なものから非常に複雑なものまで多岐にわたる。任意の個々の暗号システムの複雑さに関係なくすべてが、許可されていない者による符号化されたデータまたはメッセージへのアクセスを防止するために平文を暗号文として符号化しようと努めている(用語符号化するおよび暗号化するは、本明細書では同義で用いられており、用語復号するおよび解読するも同様である)。
暗号技術への2つの一般的な手法は、米国特許第3962539号、Ehrsamら、「Product Block Cipher System For Data Security」および米国特許第4405829号、Rivestら、「Cryptographic Communications System and Method」において見られる。Ehrsamの特許は、データ暗号化規格(DES:data encryption standard)として一般に知られているものを開示しており、Rivestの特許は、RSAアルゴリズムとして一般に知られているものを開示している。
DESは、対称暗号技術とも称される秘密鍵暗号技術に基づくものであり、暗号化のために56ビット鍵を利用する。この形の暗号技術では、暗号文の送信側と受信側の両方が同一の秘密鍵を所有し、この秘密鍵は、理想的な世界では完全に一意であり、また送信側および受信側以外の世界には知られていない。秘密鍵を使用して平文を暗号文に符号化することによって、送信側は、任意の使用可能な公開されている、または別のやり方で安全でない通信システムを使用する受信側に暗号文を送信することができる。暗号文を受信した受信側は、秘密鍵を使用してそれを解読し、平文を得る。
DESを使用して暗号化されたデータの安全性は、秘密鍵の長さ、および上記で暗に述べたように秘密鍵の秘密に大きく左右される。DES暗号は、元来考案されたように、56ビット鍵を使用した。デスクトップ・コンピュータの処理能力が向上し続けるのにつれて、暗号文から秘密鍵を見抜く難しさは急速に減少している。したがって、DES暗号は、5年前に比べて安全性が劣る形の暗号技術である。
DESに関わる安全性の問題を解決するために実施されてきた1つの解決策は、DESアルゴリズムを使用して連続して2回以上データを暗号化することである。連続した各暗号化レベルは同じDES鍵を使用しても、異なるDES鍵を使用してもよい。それぞれ異なる鍵が使用される場合は、鍵の組合せによっては実際、単一の56ビット鍵を使用する暗号化よりも安全性が劣る暗号化がもたらされるので、注意深く鍵を選択することが重要である。しかし、この暗号化方法は、最大256ビット長の鍵をサポートしており、また異なる暗号化アルゴリズムを使用している高度暗号化標準(AES:Advanced Encryption Standard)がより広く使用されるようになるまで主として応急措置として使用されてきた。
RSA暗号は、公開鍵暗号技術に基づくものである。2つの大きい素数および事前定義された数学的関係を使用して、2つの非対称の鍵が生成される。第1鍵は、受信側にとって秘密のままに保たれ、第2鍵は、受信側にデータを送信する者が使用できるようにされる。公開鍵と秘密鍵の数学的関係は、公開鍵で暗号化されたデータの受信側が秘密鍵を使用してそのデータを解読することを可能にする。RSAの安全性は、秘密鍵を発見するために非常に大きな数を因数分解する難しさに基づく。
市販のRSA実装は、カリフォルニア州Palo AltoのPGP Corporation社から入手可能であり、オープン・ソース実装は、http://www.pgpi.orgおよびhttp://www.gnupg.orgで入手可能である(これらのRSA実装は、本明細書ではまとめて「PGP暗号化」と称される)。
米国特許第3962539号 米国特許第4405829号 http://www.pgpi.org http://www.gnupg.org
本発明は、データを暗号化し送信する方法、および暗号化されたデータを送信するためのシステムを対象とする。データを暗号化する方法は、1つまたは複数の暗号化アルゴリズムをデータに適用することを含む。データは、開示されている暗号化アルゴリズムのうちのいずれか1つを単独に、互いに組み合わせて、または他の任意の暗号化アルゴリズムと組み合わせて使用して暗号化され得る。データを送信する方法は、ソース識別子を暗号化プロセスに組み込むことによってデータを暗号化する、開示された方法を基礎とする。ソース識別子は、送信のために暗号化されたデータに組み込まれても、送信の前に暗号化プロセスの一環として使用されてもよい。データを暗号化し送信する方法は、連続したデータ・パケットの暗号化を可能にするようなやり方で修正され得る。
暗号化されたデータを送信するためのシステムは、第1および第2コンピュータと、複数の通信パラメータとを備える。コンピュータは、その間で送信をルーティングするためにネットワークを介して通信可能に接続される。コンピュータは、送信を暗号化するために通信パラメータを使用する。通信パラメータは、送信を暗号化および解読するために使用される暗号化アルゴリズムを示す少なくとも1つの暗号化アルゴリズム識別子を含む。
本発明の第1の別個の態様では、データを暗号化する方法は、データをバイナリ形式で表し、それを等しい長さのワードに分割することを含む。各ワードのビットは、再配列を元に戻せるようにする参照テーブルを使用して2回配列し直される。任意選択で、第1の再配列は、第2の再配列と比べて異なるやり方で実施される。参照テーブルは、m、nおよびrを実数として、mエントリを有する第1行と、それぞれがnエントリのr行を含むように構成され得る。こうしたテーブルを用いて再配列を実施する一方法は、1回目は参照テーブルの第1行を使用して各ワードのビットを可逆的に再配列し、次いで2回目は参照テーブルの連続したr行のうちの1つを使用して各ワードのビットを可逆的に再配列することである。データの連続したワードについて、r行のうちの異なる1つが使用され得る。
本発明の第2の別個の態様では、データを暗号化する方法は、データをバイナリ形式で表し、それを等しい長さのワードに分割することを含む。排他的論理和(XOR)操作が、鍵、およびノイズ・テーブルからの第1ワードを使用してデータの第1ワードに対して実施される。鍵は、バイナリ形式で表され、データ・ワードと同じ長さのワードを有する。ノイズ・テーブルもまた、バイナリ形式で表され、データ・ワードと同じ長さのワードに分割される。XOR操作は、直前のXOR操作からの結果、および使用された最後のノイズ・テーブル・ワードの次のノイズ・テーブル・ワードを使用して、連続する各データ・ワードに対して実施される。ノイズ・テーブルは、データ暗号化の前の任意のときに生成されることができ、ノイズ・テーブルがランダムになればなるほど、データはその暗号化された形において認識し難くなる。
本発明の第3の別個の態様では、データを送信する方法は、上述した第2の別個の態様を基礎とする。データは、バイナリ形式で表され、等しい長さのワードに分割される。日時標識、メッセージ番号およびポート・オフセット標識が生成され、それぞれが、データのワードに等しい長さのワードを有するバイナリ形式で表される。データの第1ワードは、XOR操作を使用して、日時標識と、メッセージ番号とポート・オフセット標識とを組み合わせることによって生成される。この第1ワードは、XOR操作を使用して鍵およびノイズ・テーブルの第1ワードで暗号化される。連続するデータ・ワードは、直前のXOR操作の結果、および使用された最後のノイズ・テーブル・ワードの次のノイズ・テーブル・ワードで暗号化される。好ましい実施形態では、日時標識は送信の日時であり、メッセージ番号は順次メッセージ識別子であり、ポート・オフセット標識は、送信が送信される先のポートと複数の所定ポートのうちの1つとの差である。
本発明の第4の別個の態様では、データを送信する方法は、暗号化されたデータを個別のパケットで送信することを可能にするために、上述した第2の別個の態様を基礎とする。データは、バイナリ形式で表され、等しい長さのワードに分割され、次いで適切なサイズのパケットにさらに分割される。第1のパケットは、第2の別個の態様について述べたように暗号化される。第1パケットの送信準備が整えられた後に、第1パケットの最後のワードのXOR操作の結果を使用して第2パケットの第1ワードに対してXOR操作が実施される。XOR操作は、直前のXOR操作の結果を使用して第2パケットの連続したワードに対して実施される。それぞれのパケットは、暗号化された後に送信され得る。追加のパケットも同じやり方で準備され、送信され得る。
本発明の第5の別個の態様では、通信パラメータは、少なくともメッセージ番号と暗号化アルゴリズム識別子と第1暗号化鍵と第2暗号化鍵とを含む。第1と第2暗号化鍵の両方は2部構成の鍵であり、各部が秘密鍵部分と公開鍵部分とを含む。第2コンピュータは、第1部分がデータ部分であり、第2部分がヘッダ部分である少なくとも2つの部分を含む送信を生成する。第2コンピュータは、データ部分を暗号化するために暗号化アルゴリズム識別子、第1鍵の公開鍵部分およびメッセージ番号を使用し、またヘッダ部分を暗号化するために暗号化アルゴリズム識別子および第2鍵の公開鍵部分を使用するように適応される。補足すると、第1コンピュータは、ヘッダ部分を解読するために暗号化アルゴリズム識別子および第2鍵の秘密鍵部分を使用し、またデータ部分を解読するために暗号化アルゴリズム識別子、第1鍵の秘密鍵部分およびメッセージ番号を使用するように適応される。追加の通信パラメータが、送信の暗号化および解読のために含められ得る。
本発明の第6の別個の態様ではこのシステムは複数の通信リンクを備え、そのそれぞれが、ネットワークを介して接続されており、またその間で送信をルーティングするように適応された起点ノード(originating node)と終端ノード(terminating node)とを含む。第1通信リンクの起点ノードと、対応する終端ノードの間の送信は、介在する少なくとも1つの通信リンクを通過する。第1通信リンクの起点ノードは、両方ともが暗号化された形式であるデータ部分とヘッダ部分とを含む送信を生成し、対応する終端ノードにルーティングする。対応する終端ノードは、暗号化されたデータおよび暗号化されたヘッダを解読するように適応される。介在する各通信リンクは、暗号化されていない参照を他の通信リンクに移動し、暗号化された形式で追加のヘッダ部分を加えることによってその起点ノード上の送信を修正するように適応される。介在する各通信リンクの対応する終端ノードは、暗号化された追加のヘッダを解読し、送信を再ルーティングするように適応される。任意選択で、送信の暗号化された各部分は、少なくとも2つの暗号化レベルで暗号化され、各暗号化レベルは、互いのレベルとは異なる。追加の通信リンクが要望に応じてシステムに追加されることができ、追加の各通信リンクが、第1通信リンクの起点ノードと終端ノードの間のネットワーク上に配置される。
本発明の第7の別個の態様では、データ送信が少なくとも2つの別個の部分を含み、この両部分が暗号化された形式で送信され、それぞれが少なくとも2つの暗号化レベルを含む。ヘッダ部分は、データ部分を解読するために使用される情報をさらに含み、またデータ送信を認証するのに役立つ情報を含み得る。データ送信は、暗号化された形式の追加のヘッダ部分を含むこともできる。追加のヘッダ部分は、少なくとも2つの暗号化レベル、および第1ヘッダ部分を解読するために使用される情報を含む。データ送信が複数のヘッダ部分を含む場合、各ヘッダ部分は好ましくは、データ送信の別個の段階に関するルーティング情報を含む。データ送信のそれぞれ異なる部分は、少なくとも1つの圧縮レベルを含むこともできる。
本発明の上記態様はそれぞれ、他の態様とは独立に使用されることができるが、本発明の第8の別個の態様では、諸態様のいずれもが組み合わせて使用され得る。
したがって、本発明の一目的は、データを暗号化し送信する改良型の方法、暗号化されたデータを送信するための改良型のシステムを提供することである。他の目的および利点は、以下で明らかになる。
図面では、同じ参照番号は、類似の構成要素を指す。
1.ビット・シフトによる暗号化
図面を詳細に参照すると、図1は例示するため、第1のデータ暗号化方法を示している。この実施例で使用されるデータは、ASCII形式の文字列「1234」に簡略化されている。第1ブロック10は、3つの異なる形式で表されたデータを示している。第1行12ではデータはASCII形式であり、次の行14ではデータはバイナリ形式であり、最終行16ではデータはHEX形式16である。したがって、バイナリ形式では、サンプル・データは32ビット長の単一のワードである。バイナリ形式で表される場合に33ビット以上を有するデータの場合には、データは32ビット長のワードに分割され、各ワードは同様に処理される。
本明細書で述べる諸方法およびシステムを通して、データは、説明および処理の容易さのために32ビット・ワードに分割される。しかし、ワードの長さは、要望に応じて変化し得る。本明細書で述べるデータ暗号化およびデータ送信の方法およびシステムは、選択された任意のワード長を有するデータを処理するために、それに応じて変更され得ることが当業者には理解されよう。
図1の第2ブロック20で、第1行22は、5ビットの6つのグループ、および2ビットの最終グループ、合計で7つのグループにグループ化されたバイナリ形式のデータを示している。第2行24は、最大から最小の順で並べられた、図2の参照テーブルからの行A1のエントリを表している。容易に複製可能な他の任意の順序が使用され得る。第1行22の各ビット群は、第2行24内の順序付けられた行Aのエントリのうちの1つと相関され、第1ビット群は行Aの最大のエントリと相関され、第2ビット群は行Aの次に大きいエントリと相関され、最終ビット群が行Aの最小のエントリと相関されるまで以下同様に続く。第3ブロック30では、第1行32はテーブルの行A内に現れる順序に再配列されたテーブル・エントリを示しており、第2行34は、各ビット群と行Aの各エントリの間の相関に従って同様に再配列されたビット群を示している。
データ・ワードのこの第1の再配列は、単純に同じ参照テーブルの行A1を参照することによって元に戻すことができる。したがって、第2および第3ブロック20、30は、データ・ワードの第1可逆再配列をどのように実施するかを例示している。データ・ワードは7つのビット群にグループ化されているが、より多くのまたは少ないグループが要望に応じて、グループ数を参照テーブルの行Aのエントリ数に等しく保ちながら使用され得る。各グループのビット数もまた、要望に応じて変化し得る。データ・ワードがm個のビット群に分割される場合には、qがpより小さく、かつpおよびqが素数であるとして、pビットを有するm−1個のグループ、およびqビットを有する1つのグループがあるのが好ましい。
第4ブロック40では、第1行42は、2ビットの第1のグループ、および3ビットの10個のグループ、合計で11個のグループにグループ化された、1度配列し直されたビットを示している。第2行44は、最大から最小の順に並べられた、図2の参照テーブルからの行Bのエントリを表している。容易に複製可能な他の任意の順序が使用され得る。行BからBのうちのいずれか1つからのエントリが、この再配列で使用するために選択され得る。特定の行の選択については、以下でより詳しく論じる。第1行42内の各ビット群は第2行44内の順序付けられた行Bのエントリのうちの1つと相関され、第1ビット群は行Bの最大のエントリと相関され、第2ビット群は行Bの次に大きいエントリと相関され、最終ビット群が行Bの最小のエントリと相関されるまで以下同様に続く。第5ブロック50では、第1行52はテーブルの行B内に現れる順序に再配列されたテーブル・エントリを示しており、第2行54は、各ビット群と行Bの各エントリの間の相関に従って同様に再配列されたビット群を示している。
第1の再配列と同様にデータ・ワードのこの第2の再配列は、適切な行、この場合には同じ参照テーブルの行Bを単純に参照することによって元に戻すことができる。したがって、第4および第5ブロック40、50は、データ・ワードの第2可逆再配列をどのように実施するかを例示している。ビットは11個のビット群にグループ化されているが、より多くのまたは少ないグループが要望に応じて、グループ数を参照テーブルのB行のエントリ数に等しく保ちながら使用され得る。各グループのビット数もまた、要望に応じて変化し得る。ビットがm個のビット群にグループ化される場合には、qがpより小さく、かつpおよびqが正の整数であるとして、pビットを有するm−1個のグループ、およびqビットを有する1つのグループがあるのが好ましい。
図1の最後のブロック60は、2つの可逆再配列プロセスの結果を示している。第1行62は、それぞれが4ビットの8個のグループにグループ分けされたブロック50の最終行54のビットを表している。第1行62の各グループは、第2行64ではHEX形式で表されている。第1ブロック10の最終行16を最終ブロック60の最終行64と比較すると、データ・ワードは今や認識できない形であることが示される。
複数のデータ・ワードを含むデータを暗号化する場合、連続する各データ・ワードについて、B行の連続した行が使用される。参照テーブルは、こうしたデータを暗号化するために11行のB行を含むことが好ましい。B行のうちの第1行は、データの第1ワードを暗号化するときにランダムに選択されても、他の何らかの適切な方法によって選択されてもよい。B行のうちの連続する次の行は、データの次のワードを暗号化するために使用される。B行のうちの最終行に達する場合、次のデータ・ワードは、B行のうちの第1行を使用して暗号化され、すべてのデータ・ワードが暗号化されるまでこのやり方で続行する。
示されるように図2の参照テーブルは、7エントリの第1行A、および各11エントリの複数の行Bを有する。行Aのエントリ数は、要望に応じてより多くのまたは少ないエントリが使用されることができるので変化し得る。好ましくは、行Aのエントリ数は素数である。行Aの各エントリは、各エントリが行内において一意であるという制限を伴って任意の値で埋められ得る。行rの数は同様に、要望に応じて変化し得る。好ましくは、行Bの各行のエントリ数は素数である。データを暗号化する場合、11行が好ましい。同様に、行Bの各行のエントリ数は、要望に応じてより多くのまたは少ないエントリが使用され得るので、同じエントリ数を有する行Bのそれぞれによって変化し得る。行Bの各行のエントリもまた、各エントリがその行内において一意であるという制限を伴って、任意の値で埋められ得る。
2.XOR操作による暗号化
図3は、排他的論理和(XOR)操作を使用してデータを暗号化する第2の方法を例示している。この実施例で使用されるデータ70は、ワードがバイナリ形式72で表されるときに各ワードが32ビット長となるように、3つのワードW〜Wに分割される。一連のXOR操作が、各データ・ワードに対して実施される。暗号化されたデータ80は、一連のXOR操作の結果である。第1暗号化データ・ワード78は、第1データ・ワードW XOR 鍵74 XOR ノイズ・テーブルの第1ワード76の結果である。データ・ワードと同様に鍵74およびノイズ・テーブルは、バイナリ形式で表される。鍵74は好ましくは32ビット長の単一のワードを有するが、他のワード長も使用され得る。ノイズ・テーブルはデータと同様に、それぞれが32ビットの長さである複数のワードを含み、それについては以下でより詳細に述べる。第2暗号化データ・ワード84は、第2データ・ワードW XOR 第1暗号化データ・ワード78 XOR 鍵74 XOR ノイズ・テーブルの第2ワード82の結果である。同様に第3暗号化データ・ワード88は、第3データ・ワードW XOR 第2暗号化データ・ワード84 XOR 鍵74 XOR ノイズ・テーブルの第3ワード86の結果である。したがって、第1暗号化データ・ワードは、2つの連続したXOR操作の結果であり、第1暗号化データ・ワードに続くすべての暗号化データ・ワードは、3つの連続したXOR操作の結果である。したがって、任意のサイズのデータが、このプロセスを使用して暗号化され得る。
このようにして暗号化されたデータの解読は、類似のプロセスを使用して達成される。少なくともノイズ・テーブル、およびたぶん鍵へのアクセスが、解読のために必要とされ得る。解読のために使用される鍵へのアクセスを必要としないデータ解読方法については、以下でより詳細に論じる。図3の実施例に関しては、解読のためにノイズ・テーブルと鍵の両方が必要とされる。例を挙げると、第1暗号化データ・ワード78は、鍵74およびノイズ・テーブルの第1ワード76を使用して連続的なXOR操作を適用することによって解読される。XOR操作が実施される順序は無関係である。第2暗号化データ・ワード84は、第1暗号化データ・ワード78、鍵74およびノイズ・テーブルの第1ワード76を使用して連続的なXOR操作を適用することによって解読される。第3暗号化データ・ワード88も同様に解読される。このプロセスの結果によって、解読された形のデータがもたらされる。
上記で言及したノイズ・テーブルは、ランダムなデータ・ビットを含んでおり、データ構造体内に認識可能な反復またはパターンを含まないデータ・ファイルである。こうしたファイルを作成する多くの方法が当業者には知られており、したがって以下の説明は、使用され得る多くの方法のうちの1つにすぎない。ノイズ・テーブルの作成のために3つの構成要素が使用される:あるとしてもごく少ない反復の句またはデータ列を含む好ましくは1メガバイトを超える大きいデータ・ファイル;1つの7エントリ行、およびそれぞれが11エントリの127行を含む図2に示す参照テーブル;ならびに最も現代的なオペレーティング・システムに含まれる標準の乱数生成器などの乱数生成器。
乱数生成器は、少なくとも128バイトの所定サイズを有するテーブルを生成するために使用される。このテーブルは好ましくは、64キロバイトのサイズであるが、より大きくてもよく、好ましくは一度に1バイト生成される。乱数生成器はさらに、大きいデータ・ファイル内および参照テーブルのB行内の開始点を決定するために使用される。大きいデータ・ファイル内の開始点から、図1に関連して述べたビット・シフト・プロセスが、参照テーブルを使用して大きいデータ・ファイル内のデータに適用される。XOR操作は、ランダムに生成されたテーブルを使用して大きいデータ・ファイルのビット・シフトされた各ワードに対して実施される。このプロセスは、ランダムに生成されたテーブルの全体の長さについて継続し、ノイズ・テーブルの生成がもたらされる。好ましくは、ノイズ・テーブルは、64キロバイト・ファイルとして作成される。
このようにして生成されたノイズ・テーブルは、図3に関連して述べた暗号化プロセスのために、または以下でさらに論じるように使用され得る。ノイズ・テーブル内の任意のワードが、第1ノイズ・テーブル・ワード76として選択され得る。暗号化プロセスの間のいずれかのときにノイズ・テーブルの最後に遭遇する場合には、ノイズ・テーブルは循環的に使用され、最後のノイズ・テーブル・ワードの後には第1ノイズ・テーブル・ワードが続く。
3.通信パラメータの確立
図4のフローチャートは、暗号化されたデータを生成し送信するためのハイレベル・プロセスを示している。図4に示す諸工程のうちの多くは、示されているのと異なる順序で実施され得ることが当業者には理解されよう。たとえば、工程102および108は工程110および112より前のどの時点においても行われることができ、工程110と112は交換可能であり、工程114は工程116および118より前のどの時点においても行われることができ、工程116と118は交換可能である。したがって、プロセスの実施順序の多くの置換が可能である。
送信前のあるときに、通信パラメータが確立される。特定の通信パラメータは好ましくは送信の受信側によって確立されるが、他の特定の通信パラメータは好ましくは送信の送信側によって確立される。あるいは、通信パラメータは、適切な通信パラメータが送信側と受信側の両方に通信される限りは、送信の送信側または受信側であろうがなかろうが、任意の当事者によって確立され得る。通信パラメータの一部は、送信の特定の送信側、受信側またはその両方にとって秘密のままであることが意図される。通信パラメータの一部は、受信側との通信のために2つ以上の送信側が使用できるようにされ、伝播の範囲に応じてこうした通信パラメータが公開または半公開にされる。
好ましくは受信側によって確立される通信パラメータには以下がある。
初期メッセージ番号。初期メッセージ番号はランダムに選択された32ビットの正の数である。生成されると送信側には、初期メッセージ番号が提供される。送信側によって送信される第1の送信は、初期メッセージ番号でマーク付けされる。それぞれの送信の後にメッセージ番号は増分され、送信側は、後に続く各送信を現在のメッセージ番号でマーク付けする。メッセージ番号は、最後のメッセージ番号が使用される場合には次に使用されるメッセージ番号が0となるように、循環的に使用される。受信側は、現在のメッセージ番号の記録を維持し、送信側からのものであると称するいずれのメッセージの信憑性をも検証するために、この情報を使用し得る。
8ネットワーク・ポート番号のリスト。8つのネットワーク・ポートは、ランダムに、または他の任意の適切な方法で選択され、ポート0〜7とラベル付けされる。それぞれのポートは、32ビット・ワードとしてバイナリ形式で表される。ネットワーク・ポートのリストは、送信側と受信側の両方によって維持される。
少なくとも1つの秘密参照テーブル。秘密参照テーブルは、図2に示すタイプのものである。2つ以上の秘密参照テーブルが使用される場合、好ましくは素数個の秘密参照テーブルが存在する。さらに、それぞれの秘密参照テーブルは好ましくは、第1行内に素数個のエントリ、素数個の後続の行、および各後続の行内に素数個のエントリを含む。より好ましくは、それぞれの秘密参照テーブルは、7エントリの第1行、およびそれぞれが11エントリの11個の後続行を含む。それぞれの秘密参照テーブルは、同じ行数、あるいは第1行内または後続行内に同じエントリ数を有する必要はない。エントリには、上記で述べたやり方で数が埋められる。送信側と受信側の両方が、それぞれ送信の符号化および復号のために秘密参照テーブルを維持する。すべての秘密参照テーブルは好ましくは、符号化された形式で維持され、使用時に復号される。任意の可逆符号化方法が使用され得る。好ましい符号化方法では、テーブルを維持するコンピュータのCPUは、その連続番号および仕様情報を求めてポーリングされ、この仕様情報は、他にもあるが特に挙げると、プロセッサ・タイプ、速度、製造元を含み得る。ポーリングされた情報は、順次組み合わされ、選択されたワード長のバイナリ形式で表される。それぞれのテーブルは、同じワード長を有するバイナリ形式で同様に表される。テーブルの第1ワードは、XOR操作を使用して、ポーリングされた情報の第1ワードで符号化される。テーブルの第2ワードは、XOR操作を使用して、ポーリングされた情報の第3ワードおよび符号化された第1ワードで符号化される。テーブルの第3ワードは、XOR操作を使用して、ポーリングされた情報の第2ワードおよび符号化された第2ワードで符号化される。このプロセスは、テーブル全体にわたって継続する。テーブルが最後となる前にポーリング情報の最後に達する場合、テーブルの各後続ワードは、XOR操作を使用して、符号化された直前のワードで符号化される。
少なくとも1つの半公開(または公開)参照テーブル。半公開参照テーブルは、図2に示すタイプのものである。2つ以上の半公開参照テーブルが使用される場合、好ましくは素数個の半公開参照テーブルが存在する。さらに、それぞれの半公開参照テーブルは好ましくは、第1行に素数個のエントリ、素数個の後続の行、および各後続の行内に素数個のエントリを含む。より好ましくは、それぞれの半公開参照テーブルは、7エントリの第1行、およびそれぞれが11エントリの11個の後続行を含む。それぞれの半公開参照テーブルは、同じ行数、あるいは第1行内または後続行内に同じエントリ数を有する必要はない。エントリには、上記で述べたやり方で数字が埋められる。送信側と受信側の両方が、それぞれ送信の符号化および復号のために半公開参照テーブルを維持する。半公開参照テーブルは、より広く一般に伝播され得る。すべての半公開参照テーブルは好ましくは、符号化された形式で維持され、使用時に復号される。任意の可逆符号化方法が使用され得る。好ましい符号化方法は、秘密参照テーブルに関連して上記で述べた方法である。
第1および第2秘密ノイズ・テーブル鍵。これらの2つの鍵はそれぞれ、32ビットの長さである。両方の鍵は、標準の乱数生成器によって生成される。これらの鍵は秘密ノイズ・テーブルと併せて、送信側および受信側によって、それぞれ送信の符号化および復号のために使用される。送信側は、第1秘密ノイズ・テーブル鍵(送信側の秘密ノイズ・テーブル鍵)が提供され、それを維持する。受信側は、第2秘密ノイズ・テーブル鍵(受信側の秘密ノイズ・テーブル鍵)を維持する。
秘密ノイズ・テーブル。秘密ノイズ・テーブルは、上記で述べたように生成される。送信側は、秘密ノイズ・テーブルを簡略化された符号化形式で維持する。送信側の形式は、第1秘密ノイズ・テーブル鍵を使用してノイズ・テーブルの各32ビット・ワードに対してXOR操作を実施することによって生成される。受信側もまた、秘密ノイズ・テーブルを簡略化された符号化形式で維持する。受信側の形式は、第2秘密ノイズ・テーブル鍵を使用してノイズ・テーブルの各32ビット・ワードに対してXOR操作を実施することによって生成される。好ましくは、送信側、受信側のいずれも、秘密ノイズ・テーブルの復号されたバージョンを維持しておらず、したがって秘密ノイズ・テーブルの秘密が維持される。秘密ノイズ・テーブルは好ましくは、符号化された形式で維持され、使用時に復号される。任意の可逆符号化方法が使用され得る。好ましい符号化方法は、秘密参照テーブルに関連して上記で述べた方法である。
半公開(または公開)ノイズ・テーブル鍵。半公開ノイズ・テーブル鍵は、32ビットの長さであり、標準の乱数生成器によって生成される。この鍵は、送信側に提供され、それによって維持され、受信側への送信を暗号化するために半公開ノイズ・テーブルと併せて使用される。この鍵は、より広く一般に伝播され得る。
第3秘密ノイズ・テーブル鍵。第3秘密ノイズ・テーブル鍵は、32ビットの長さであり、標準の乱数生成器によって生成される。この鍵は、受信側によって秘密に維持され、半公開ノイズ・テーブル鍵および半公開ノイズ・テーブルを使用して符号化された送信を解読するために、半公開ノイズ・テーブルと併せて使用される。
半公開(または公開)ノイズ・テーブル。このノイズ・テーブルもまた、上記で述べたやり方で生成される。秘密ノイズ・テーブルと同様に、送信側は、半公開ノイズ・テーブルを簡略化された符号化形式で維持する。送信側の形式は、半公開ノイズ・テーブルの各32ビット・ワードに対して半公開ノイズ・テーブル鍵を使用してXOR操作を実施することによって生成される。受信側もまた、半公開ノイズ・テーブルを簡略化された符号化形式で維持する。受信側の形式は、第3秘密ノイズ・テーブル鍵を使用して半公開ノイズ・テーブルの各32ビット・ワードに対してXOR操作を実施することによって生成される。好ましくは、送信側、受信側のいずれも、半公開ノイズ・テーブルの復号されたバージョンを維持しない。この半公開ノイズ・テーブルは、より広く一般に伝播され得る。半公開ノイズ・テーブルは好ましくは、符号化された形式で維持され、使用時に復号される。任意の可逆符号化方法が使用され得る。好ましい符号化方法は、秘密参照テーブルに関連して上記で述べた方法である。
少なくとも1つの圧縮アルゴリズム識別子。任意の可逆圧縮アルゴリズムが使用のために識別され得る。以下で述べる送信プロセスは、2つ以上の圧縮アルゴリズムを使用することができ、2つ以上が使用される場合には、圧縮アルゴリズム識別子によって、識別された各圧縮アルゴリズムが送信プロセスのどこで使用されるかが識別される。送信側と受信側の両方は、圧縮アルゴリズム識別子を維持する。
第1および第2暗号化鍵。これらの暗号化鍵の両方は、2部構成の暗号化鍵である。第1暗号化鍵は、秘密鍵であり、第1鍵部分および第2鍵部分を含む。第1暗号化鍵の第1鍵部分は、送信の符号化で使用するために送信側に提供され、それによって維持され、また第1暗号化鍵の第2鍵部分は、送信の復号で使用するために受信側によって維持される。DES、AESまたは別の類似の暗号化アルゴリズムが使用される場合、第1暗号化鍵の第1および第2鍵部分は同一であり得る。第2暗号化鍵は、少なくとも半公開の鍵であり、やはり第1鍵部分および第2鍵部分を含む。第2暗号化鍵の第1鍵部分は、送信の符号化で使用するために送信側に提供され、それによって維持される。第2暗号化鍵の第1鍵部分は、より広く一般に伝播される。第2暗号化鍵の第2鍵部分は、送信の復号で使用するために受信側によって維持される。好ましくは、第1および第2鍵は、128ビットのPGP暗号化を可能にする。任意選択で、これらの鍵は、個々の当事者によって提供されるバイオメトリック情報に基づき得る。
少なくとも1つの暗号化アルゴリズム識別子。知られている任意の暗号化アルゴリズムが使用のために識別され得る。好ましい暗号化アルゴリズムはPGP暗号化である。以下で述べる送信プロセスは、2つ以上の暗号化アルゴリズムを使用することができ、2つ以上が使用される場合には、暗号化アルゴリズム識別子によって、識別された各暗号化アルゴリズムが送信プロセスのどこで使用されているかも識別される。送信側と受信側の両方は、暗号化アルゴリズム識別子の記録を維持する。送信側は、識別された暗号化アルゴリズムを使用して送信を暗号化するために第1鍵部分および第3鍵部分を使用し、受信側は、同じアルゴリズムを使用して送信を解読するために第2鍵部分および第4鍵部分を使用する。
以下を含めて他の通信パラメータが、好ましくは送信の送信側によって確立される。
ネットワーク・ポート識別子。ネットワーク・ポート識別子は、送信が送信される意図された受信側のネットワーク・ポートを示す。ネットワーク・ポート識別子は、意図された受信側のネットワーク・ポートのうちのいずれか1つとしてランダムに選択されることができ、または送信用に使用されるネットワーク・プロトコルに従い得る。ネットワーク通信では、ニュー・ジャージー州、PiscatawayのIEEEオペレーション・センタを通じて入手可能なIEEEv.108規格が使用されることが好ましい。
ポート・オフセット識別子。このパラメータは、ネットワーク・ポート識別子と、8つのネットワーク・ポート番号中のネットワーク・ポートのうちの1つとの差として計算される。ポート・オフセット識別子は、32ビット・ワードとしてバイナリ形式で表される。
日時識別子。このパラメータは、送信の日時とすることもできる、暗号化の日時を表す。ポート・オフセット識別子と同様に日時識別子は、32ビット・ワードとしてバイナリ形式で表される。
日時スタンプ。このパラメータは、送信が送信された日時を表す。任意選択により、それは日時識別子と同じであってもよい。
4.暗号化されたデータの送信
図4に戻ると、送信側は最初に、送信に含まれるべき情報を準備する。この情報は、受信側が送信の一部を復号し、その送信を送信側から生じたものとして認証するのに役立つ。送信準備の第1工程(102)は、送信のメッセージ番号を決定することである。バイナリ形式のメッセージ番号の3つの最下位桁が、ポート番号リストからのポート番号のうちの1つを識別する(104)ために使用される。ネットワーク・ポート識別子はランダムに選択され、ポート・オフセット識別子は、ネットワーク・ポート・リストを使用してそこから計算される(106)。最後に、送信側は、送信の日時識別子を生成する(108)。
送信側から送信されるときに送信は、データ部分とヘッダ部分とを含む。データ部分は送信の内容を含み、ヘッダ部分は識別子とルーティング情報とを含む。メッセージ番号の後にはポート・オフセット識別子および日時識別子が準備されており、それらは両方とも送信のデータ部分に加えられる。日時タイム・スタンプもまた、日時識別子と異なる場合に、送信側の識別と同様にデータ部分に加えられる。受信側の識別もまた、データ部分に加えられ得る。送信のヘッダ部分は、送信側の識別、メッセージ番号、日時識別子、ポート・オフセット識別子、および日時識別子と異なる場合の送信日時を含むように作成される(112)。
データ部分に加えられる各アイテムは、受信側の送信認証の助けとするのに役立つ。たとえば、ヘッダ部分の日時識別子およびメッセージ番号は、送信が本物であるならばデータ部分の日時識別子およびメッセージ番号に一致すべきである。送信が受信されたポートと組み合わされた送信側の識別もまた、送信の認証に役立ち得る。これらの識別子を用いた認証については、以下でさらに論じる。
ヘッダ部分を作成した(112)後に、使用されるべき暗号化アルゴリズムが通信パラメータから識別される(114)。ヘッダ部分(116)およびデータ部分(118)の暗号化は図5に示すように進み、それぞれの部分が別個に暗号化される。最初に各部分が、識別された圧縮アルゴリズムを使用して圧縮される(130)。送信の2つの部分について、それぞれ異なる圧縮アルゴリズムが使用されてもよい。次いで、それぞれの部分が暗号化される(132)。暗号化は好ましくは図3に関連して述べたノイズ・テーブルを使用して達成されるが、他の暗号化方法も使用され得る。ヘッダ部分は半公開ノイズ・テーブル鍵および半公開ノイズ・テーブルで暗号化され(132)、データ部分は秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルで暗号化される(132)。
ノイズ・テーブルを用いたデータ部分の暗号化(132)は、秘密参照テーブルを使用して図1および2に関連して述べたようにビット・シフトを行うことによる暗号化を含む。通信パラメータが2つ以上の秘密参照テーブルを備える場合、秘密参照テーブルには連続した序数が割り当てられ、第1の秘密参照テーブルにはゼロが割り当てられる。使用される参照テーブルは、
(メッセージ番号)/(参照テーブル数)の剰余に基づいて選択される。
複数の参照テーブルのうちのどれを使用するか選択する方法は様々であり得るが、選択は好ましくは、通信パラメータのうちの1つまたは複数に基づく。
秘密参照テーブルが選択されると、データ部分の第1ワードは、秘密参照テーブルの後続の行のうちの1つが後に続く秘密参照テーブルの第1行を使用してビット・シフトされる。秘密参照テーブルの後続行のうちの1つは、
(日時識別子+ネットワーク・ポート識別子+13*メッセージ数)/(後続行の数)の剰余に基づいて選択される。
後続のデータ・ワードは、秘密参照テーブルの後続の行のうちの1つが後に続く秘密参照テーブルの第1行を使用してビット・シフトされ、後続の行が循環的に使用される。第1ワードをビット・シフトする際に使用するための秘密参照テーブルの行を選択する方法は様々であり得るが、選択は好ましくは、通信パラメータのうちの1つまたは複数に基づく。
ノイズ・テーブルを用いたヘッダ部分の暗号化(132)は、上述のやり方で半公開参照テーブルを使用してビット・シフトを行うことによる暗号化を含む。複数の半公開参照テーブルが使用される場合、ヘッダ部分の符号化のための半公開参照テーブルの選択は、秘密参照テーブルに関連して述べたのと同じやり方で実施されるが、他の選択方法も使用され得る。ヘッダ部分の第1ワードのビット・シフトのために半公開参照テーブルの後続行のうちの最初の行を選択することは、秘密参照テーブルに関連して上述したやり方でやはり実施されるが、半公開参照テーブルの行を選択する他の方法も使用され得る。
この第1暗号化工程(132)の後に、送信の各部分が、識別された圧縮アルゴリズムを使用して再び圧縮される(134)。上述の圧縮と同様に、送信の2つの部分について、それぞれ異なる圧縮アルゴリズムが使用され得る。最後に、それぞれの部分がPGP暗号化を使用して暗号化され(136)、データ部分が第1秘密鍵を使用して暗号化され、ヘッダ部分が第1半公開鍵を使用して暗号化される。他の暗号化アルゴリズムが、この暗号化工程のためにPGP暗号化の代わりに使用され得る。さらに、送信の2つの部分について、それぞれ異なる暗号化アルゴリズムが使用され得る。
図4に戻ると、データ部分とヘッダ部分の両方が暗号化された後に2つの部分は、ルーティング・エンベロープ内に包まれ(120)、ネットワークを介して電子的に送信される(124)。
図6は、図5の第2工程であるデータ部分に対してノイズ・テーブルおよびビット・シフト暗号化を実施する方法について詳述するフローチャートである。ヘッダ部分に対してノイズ・テーブルおよびビット・シフト暗号化を実施する方法は、明示的には示されていないが、送信側が半公開ノイズ・テーブル鍵および半公開ノイズ・テーブルを、それぞれ秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルの代わりに使用するという違いを伴って同じように実施される。図6で使用される用語は以下の通りである。
n: 第1データ・ワード、n=0からカウントされる特定のデータ・ワードを識別するカウンタ
DW: 平文の第nデータ・ワードを表す
DW: 上述したようにビット・シフトで符号化された第nデータ・ワードを表す
NT: 上述したように送信側の秘密ノイズ・テーブル鍵でXOR符号化された秘密ノイズ・テーブルの第nワードを表す
DW: XOR操作を使用して送信側の秘密ノイズ・テーブルで符号化された第nデータ・ワードを表す
鍵1: 送信側の秘密ノイズ・テーブル鍵
DW: XOR操作を使用して送信側の秘密ノイズ・テーブル鍵で符号化された第nデータ・ワードを表す
DW: XOR操作を使用してXOR符号化データの最後または前のワードで符号化された第nデータ・ワードを表す
LW: 示されたようにXOR符号化された第nデータ・ワード(LWは最終ワードの短縮形)を表す
: 送信前のさらなる処理の準備が整った暗号化データの第nワードを表す
図6の用語で、DWは、上記で定義された前の添字(p、k、tおよびs)のうちの1つまたは複数を有し得る。それぞれの前添字は、データ・ワードに対して実施される単一の処理を表す。前添字の順序は、処理が実施された順序を表す。しかし、連続する2つ以上のXOR操作がデータ・ワードに対して実施される場合には、XOR操作が実施される順序は最終結果と無関係である。2つ以上の前添字が示されている場合、示された各プロセスがデータ・ワードに対して実施されている。例を挙げると、ktsDWは、第nデータ・ワードがまずビット・シフトで符号化され、次いで秘密ノイズ・テーブルでXOR符号化され、次いで送信側の秘密ノイズ・テーブル鍵を用いてXOR符合化されたことを示している。最後に、図6のフローチャート内の工程が括弧書き(parenthetical)を含む場合、括弧書き内の値は、その工程で実施されたプロセスの結果を表す。
図6の詳細に移り、使用されているデータ、図5の第1工程で圧縮されたデータからのものである第1データ・ワードは、n=0で生じている。このデータ・ワードは、ビット・シフトで符号化され(150)、送信側のXOR符号化秘密ノイズ・テーブルでXOR操作を用いて符号化され(152)、送信側の秘密ノイズ・テーブル鍵でXOR操作を用いて符号化される(154)。結果として生じる暗号化第1データ・ワードは、図5の後続の工程(134、136)のさらなる処理の準備が整っている。
第2および後続のすべてのデータ・ワードは、同じやり方で処理される。後続の各データ・ワードDWが符号化される前に、最後の符号化データ・ワードLWn−1が決定される(168、170)。第2データ・ワード、n=1について、最後の符号化データ・ワードLWが、前のデータ・ワードDWn−1を対応するノイズ・テーブル・ワードで(160)、次いで送信側の秘密ノイズ・テーブル鍵で(162)XOR符号化した結果に設定される(170)。第2データ・ワードの後に続くすべてのデータ・ワード、n>1について、最後の符号化データ・ワードLWn−1が、前のデータ・ワードDWn−1を対応するノイズ・テーブル・ワードで(160)、次いで送信側の秘密ノイズ・テーブル鍵で(162)、また最後に、直前の最終符号化データ・ワードLWn−2で(164)XOR符号化した結果に設定される(168)。
決定された最終符号化データ・ワードLWn−1で(168、170)、後続の各データ・ワードDWが符号化され得る。すべての後続のデータ・ワードは、ビット・シフトで符号化され(172)、送信側のXOR符号化秘密ノイズ・テーブルでXOR操作を使用して符号化され(174)、送信側の秘密ノイズ・テーブル鍵でXOR操作を使用して符号化され(176)、最終符号化データ・ワードLWn−1でXOR操作を使用して符号化される。結果として生じる各暗号化データ・ワードは、図5の後続の工程(134、136)のさらなる処理の準備が整っている。すべてのデータ・ワードが暗号化された後に、暗号化プロセスのこの工程は完了する(180)。
図7は、図6の暗号化プロセスがどのようにデータ・パケット・ストリーミングでの使用に適応され得るかを示している。図7で使用される用語は、図6で使用されるものと類似するが、以下の追加/変更を伴う。
q: 第1データ・パケット、q=0からカウントされる特定のデータ・パケットを識別するカウンタ
m: データ・パケット内のデータ・ワードの総数を識別する数
PWq,n: 平文の第qパケット内の第nデータ・ワードを表す
PWq,n: 上述したようにビット・シフトで符号化された第qパケット内の第nデータ・ワードを表す
NT: 上述したように送信側の秘密ノイズ・テーブル鍵でXOR符号化された秘密ノイズ・テーブルの第nワードを表す
PWq,n: XOR操作を使用して送信側の秘密ノイズ・テーブルで符号化された第qパケット内の第nデータ・ワードを表す
PWq,n: XOR操作を使用して送信側の秘密ノイズ・テーブル鍵で符号化された第qパケット内の第nデータ・ワードを表す
PWq,n: XOR操作を使用してXOR符号化データの最後または前のワードで符号化された第qパケット内の第nデータ・ワードを表す
LWq,n: 示されたようにXOR符号化された第qパケット内の第nデータ・ワードを表す
q,n: 暗号化されたデータの第qパケット内の第nワードを表す
: 送信前のさらなる処理の準備が整った暗号化データの第qパケットを表す
一連のデータ・パケットの各ワードを暗号化するプロセスは、図6のプロセスに類似する。好ましいパケット・サイズは8キロバイトであり、このサイズは、要望に応じて、あるいは所与のネットワークまたはプロトコルに適するように変化し得る。パケット内のデータを暗号化するために、q>0についてすべてのデータ・パケットの第1データ・ワードPWq,0が、mを前のデータ・パケットの最後のワードを表すものとして、前のパケットからの最終符号化データ・ワードLWq−1,mを使用してXOR符号化される(190)。各データ・パケットの他のすべてのデータ・ワードは、図6に示すのと同じやり方で符号化される。
5.暗号化された送信を送信するためのシステム
本明細書では、用語「コンピュータ」は、当業者によってネットワークに接続可能な任意のプログラム可能プロセッサ、たとえば、無線によってであれ、物理接続によってであれ接続可能なパーソナル・コンピューティング装置、ネットワーク対応携帯情報端末、ネットワーク接続を有する携帯電話などを指す。さらに、そのネットワーク、またはネットワーク化された2つの構成要素間の任意のネットワーク接続はハード・ワイヤードであっても、無線であってもよい。
図8は、上記の暗号化プロセスが実施されるシステム200を概略的に示している。第1および第2コンピュータ202、220は、ネットワーク203を介して通信する。第1コンピュータ202は、第1サーバ208との直接ネットワーク接続を有する。第1コンピュータ202へのまたそこからのすべてのネットワーク送信が、第1コンピュータのトランスポート・デーモン203を通過する。第1サーバ208は、インターネット210とのネットワーク接続を有する。同様に第2コンピュータ220は、第2サーバ212との直接ネットワーク接続を有する。第2コンピュータ220へのまたそこからのすべてのネットワーク送信が、第2コンピュータのトランスポート・デーモン219を通過する。第2サーバ212もまた、インターネット210とのネットワーク接続を有する。したがって、ネットワークの各要素、すなわち第1および第2コンピュータ202、220、ならびに第1および第2サーバ208、212は、ネットワークの互いの要素に通信可能に接続される。それぞれの要素は、インターネットとのネットワーク接続を介して、インターネット接続された他の装置およびコンピュータとも通信可能に接続される。しかし、2つのコンピュータ202、220は少なくとも、ネットワークを介して通信可能に互いに接続される必要があるにすぎない。
第1および第2コンピュータ202、220は、ユーザとグループの両方のプロセスをホストする。ユーザ・プロセスおよびその関連のグループ・プロセスは、同じコンピュータ上でホストされる必要はない。ユーザ・プロセス204、218は、コンピュータのユーザによって直接的にまたは非直接的に開始される。同様にグループ・プロセス206、216は、プロセスが属するグループの一員であるユーザによって直接的にまたは非直接的に開始される。あるいは、ユーザおよびグループ・プロセスは、それぞれ異なるコンピュータ上でホストされてもよい。一般に各ユーザは、ローカル・ネットワーク環境内の少なくとも1つのグループに属し、それぞれのグループは一般に、複数のユーザを含む。多くのネットワーク・コンピューティング環境のように、単一のコンピュータが、複数のユーザおよびユーザ・プロセスを複数のグループおよびグループ・プロセスに加えてホストし得る。ネットワーク化されたシステムは一般に非常に柔軟でスケーラブルであり、多くの異なる構成が可能であることが当業者には理解されよう。したがって、図8は、暗号化されたデータを送信するためシステムがどのように構成され得るかについての一例にすぎない。
図8で、ユーザA2は、ユーザA1からの暗号化された送信の意図された受信者であり、また最終宛先である。送信がどのように暗号化されるべきかを定義し、暗号化を可能にするこれらの通信パラメータは、好ましくはユーザA2によって確立され、送信に先立つあるときにユーザA1に提供される。ユーザA1は、上述したように、送信が暗号化され送信されるときに残りの通信パラメータを確立する。
暗号化された送信の発信者および受信者としてユーザA1およびA2は、通信リンクのそれぞれ起点ノードおよび終端ノードと称される。通信リンクの起点ノードは、意図された受信側および終端ノードについてのヘッダ部分を暗号化したプロセス、ユーザ、グループ、サーバ、トランスポート・デーモン、コンピュータなどであり、この終端ノードは、意図された受信側であるプロセス、ユーザ、グループ、サーバ、トランスポート・デーモン、コンピュータなどであり得る。
図8で、第1ユーザ・プロセス204は、第2ユーザ・プロセス218への暗号化された送信を生成している。第1ユーザ・プロセス204は、意図された受信側として第2ユーザ・プロセス218についての送信のデータ部分およびヘッダ部分を暗号化している。したがって、2つのユーザ・プロセス204、218は、この送信のための単一の通信リンクを形成している。さらに、データ部分の発信元およびデータ部分の意図された受信側として2つのユーザ・プロセス204、218は最も低いレベルの通信リンクを形成しており、この通信リンク内に他の通信リンクが組み込まれ得る。図9Aは、第1ユーザ・プロセス204から生成され送信される送信を概略的に示している。送信は、図9Aに概略的に示されるように、データ部分230とヘッダ部分232とルーティング・エンベロープ234とを含む。
第1ユーザ・プロセス204は、すべてが第2ユーザ・プロセス218に関連している、第1暗号化鍵の第1鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、秘密参照テーブル、秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルを上述したように使用して送信のデータ部分230を暗号化する。第1ユーザ・プロセス204は、すべてが第2ユーザ・プロセス218に関連している、第2暗号化鍵の第1鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、半公開参照テーブル、半公開ノイズ・テーブル鍵および半公開ノイズ・テーブルを上述したように使用して、ヘッダ部分を暗号化する。したがって、秘密通信パラメータが秘密のままである限り、第2ユーザ・プロセス218だけが送信の両方の部分を解読し得る。さらに、暗号は破られ得るが、こうしたことは容易にはなされないことが当業者には理解されよう。
第1ユーザ・プロセス204によって作成される送信のルーティング・エンベロープ234は、確立される通信リンクの終端ノード上の意図された受信側、この場合には第2ユーザ・プロセス218の識別、ネットワーク上の送信の次の受信側、この場合には第1グループ・プロセス206の識別、第1ユーザ・プロセス204によって生成されるネットワーク・ポート識別子、およびその送信のために使用されるネットワーク・プロトコルに適合するのに必要な他の任意の情報を含む。好ましくは第1ユーザ・プロセス204は、意図された受信側に送信をやみくもにルーティングする。換言すると、ルーティング・エンベロープは送信側の識別を含んでおらず、送信側は、受信側からも、介在するサーバからも送信の確認の受領を期待しない。しかし、送信側の識別は、所望であれば、あるいは使用されるネットワーク・プロトコルに適合するのに必要であればルーティング・エンベロープ内に含められてもよい。
第1ユーザ・プロセス204は第1グループ・プロセス206を介して送信をルーティングし、この第1グループ・プロセスは、意図された受信側ではないので、送信を再ルーティングする。ユーザ・プロセスからの送信は好ましくは、送信の発信側および意図された受信側の秘密を維持する助けとするために、グループ・プロセッサを常に通過する。送信の再ルーティングでは、第1グループ・プロセス206は第2通信リンクの起点ノードであり、第2グループ・プロセス216は第2通信リンクの終端ノードである。この第2通信リンクは、第1通信リンク内に完全に組み込まれる。
図10は、より上のレベルの通信リンクの起点ノードによってであれ、最終宛先ではない終端ノード上であれ、最終宛先である終端ノード上であれ、送信を受信し、適切な場合には送信を再ルーティングするプロセスを示している。第1ユーザ・プロセス204から送信を受信すると(302)、第1グループ・プロセス206は、送信が再ルーティングされるべきかどうか、または第1グループ・プロセス206が意図された受信側であるかどうか判断する(304)。この判断は、ルーティング・エンベロープ内の情報に基づく。送信が終端ノード上で受信される場合、この判断は、ヘッダ部分内に含まれる情報にも基づく。第1ユーザ・プロセス204からの送信では、ルーティング・エンベロープは、第2ユーザ・プロセス218が意図された受信側であることを識別し、それによって第1グループ・プロセス206が送信を再ルーティングすべきであることを示す。
第1グループ・プロセス206は、送信の発信元として第1ユーザ・プロセス204、送信の最終宛先として第2ユーザ・プロセス218、および第1ユーザ・プロセス204によって生成されたネットワーク・ポート識別子を識別するすべての参照をルーティング・エンベロープから取り除く(306)。さらに、第1グループ・プロセス206は、意図された受信側として第2グループ・プロセス216の識別、送信の次の受信側の識別として第1コンピュータ202の識別、および第1グループ・プロセス206と第2グループ・プロセス216の間で確立された通信パラメータに基づくネットワーク・ポート識別子をルーティング・エンベロープに加える。第1コンピュータ202は、コンピュータのこうした送信を管理するトランスポート・デーモン203を含む。第1グループ・プロセス206は、暗号化された形式の、図9Bに概略的に示された第2ヘッダ部分236をも送信に追加する(308)。この第2ヘッダ部分236は、図5および6に関連して述べたように別個に暗号化された2つの下位部分を含む。第2ヘッダ部分236を暗号化するために使用される通信パラメータは、第1グループ・プロセス206と第2グループ・プロセス216の間で確立され、したがって、第1ユーザ・プロセス204と第2ユーザ・プロセス218の間で確立された通信パラメータとは異なる可能性が高い。
第2ヘッダ部分236の第1下位部分は、送信の最終宛先として第2ユーザ・プロセス218の識別、第1ユーザ・プロセス204によって生成されたネットワーク・ポート識別子、第2通信リンク内の送信の発信側としてグループ・プロセス206の識別、メッセージ番号、日時識別子、ポート・オフセット識別子、および(日時識別子と異なる場合の)送信の日時を少なくとも含み、これらすべてが、第1グループ・プロセス206と第2グループ・プロセス216の間で確立された通信パラメータに基づいている。第2ヘッダ部分236の第1下位部分は、他の情報をも含み得る。
第2ヘッダ部分236の第1下位部分は、すべてが第1グループ・プロセス206と第2グループ・プロセス216の間で確立される通信パラメータに関連しており、またはその一部である、第1暗号化鍵の第1鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、秘密参照テーブル、第1秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルを上述したように使用して暗号化される。したがって、通信パラメータが秘密のままである限り、第2グループ・プロセス216だけが、送信の第2ヘッダ部分の第1下位部分を解読することができる。
第2ヘッダ部分236の第2下位部分は、現在の通信リンクの起点ノードの識別、この場合には第1グループ・プロセス206、ならびにそれぞれが第2ヘッダ部分236の第1下位部分に含まれているメッセージ番号、日時識別子、ポート・オフセット識別子、および送信の日時を少なくとも含む。第2ヘッダ部分236の第2下位部分は、他の情報をも含み得る。第2ヘッダ部分236の第2下位部分は、すべてが第1グループ・プロセス206と第2グループ・プロセス216の間で確立された通信パラメータに関連しており、またはその一部である、第2暗号化鍵の第1鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、半公開参照テーブル、半公開ノイズ・テーブル鍵および半公開ノイズ・テーブルを上述したように使用して暗号化される。したがって、通信パラメータが秘密のままである限り、第2グループ・プロセス216だけが、送信の第2ヘッダ部分を解読することができる。さらに、第1および第2ユーザ・プロセス204、218のそれぞれ送信の発信元および最終宛先としての識別は、第2通信リンクの第1グループ・プロセス206と第2グループ・プロセス216の間のすべてのネットワーク・ポイントで秘密に維持される。発信および受信側の秘密は、暗号が意図的に破られ、または通信パラメータの秘密が損なわれない限りは維持される。
図8のシステムで、グループ・プロセス206、216は、その間の直接ネットワーク接続は有しておらず、いずれもインターネット210に接続されていない。したがって、第1グループ・プロセス206は、第2グループ・プロセス216に直接には送信を再ルーティングすることができない。したがって、第1グループ・プロセス206は、トランスポート・デーモン203が第1コンピュータ202についての送信を管理している、第1コンピュータ202のコンピュータ・レベルに送信を再ルーティングする。通信パラメータが第1コンピュータ202と第1サーバ208の間に確立されているので、トランスポート・デーモン203は、第3通信リンクを確立することによって第1サーバ208に送信を再ルーティングする。この通信リンクは、その起点ノードとして第1コンピュータ202を、その終端ノードとして第1サーバ208を有する。
トランスポート・デーモン203が送信を第1サーバ208に再ルーティングするためのプロセスは、第1グループ・プロセス206による再ルーティングに関連して上記で述べたプロセスとほぼ同じである。プロセス間の差は、通信パラメータにある。第1グループ・プロセス206が第2グループ・プロセス216に関連する通信パラメータを使用する場合、トランスポート・デーモン203も同様に、第1サーバ208に関連する通信パラメータを使用する。
第1グループ・プロセス206からの送信のルーティング・エンベロープは、意図された受信側として第2グループ・プロセス216を識別し、それによってトランスポート・デーモン203が送信を再ルーティングすべきことを示しており、また第1グループ・プロセス206によって生成されたネットワーク・ポート識別子を含む。トランスポート・デーモン203は、第1および第2グループ・プロセス206、216を第2通信リンクのそれぞれ起点および終端ノードとして識別するすべての参照、ならびに第1グループ・プロセス206によって生成されたネットワーク・ポート識別子をルーティング・エンベロープから取り除く。トランスポート・デーモン203は、送信の意図された受信側と次の受信側の両方としての第1サーバ208の識別、第1コンピュータ202と第1サーバ208の間で確立された通信パラメータに基づくネットワーク・ポート識別子をルーティング・エンベロープに加える。トランスポート・デーモン203は、図9Cに概略的に示す暗号化された形式の第3ヘッダ部分238をも送信に加える。この第3ヘッダ部分238は、図5および6に関連して述べたように別個に暗号化される2つの下位部分を含む。第3ヘッダ部分238を暗号化するために使用される通信パラメータは、第1サーバ208と第2サーバ212の間で確立され、したがって、第1ユーザ・プロセス204と第2ユーザ・プロセス218の間で確立された通信パラメータ、および第1グループ・プロセス206と第2グループ・プロセス216の間で確立された通信パラメータとは異なる可能性が高い。
第2ヘッダ部分と同様に第3ヘッダ部分238の第1下位部分は、すぐ下のレベルの通信リンク内の送信の宛先として第2グループ・プロセス216の識別、次に低い通信リンクの起点ノード、この時点では第1グループ・プロセス206によって生成されたネットワーク・ポート識別子、第3通信リンク内の送信の発信元として第1コンピュータ202の識別、メッセージ番号、日時識別子、ポート・オフセット識別子、および(日時識別子と異なる場合の)送信の日時を少なくとも含み、これらすべてが第1コンピュータ202と第1サーバ208の間で確立された通信パラメータに基づく。第3ヘッダ部分238の第1下位部分は、他の情報をも含み得る。
第3ヘッダ部分238の第1下位部分は、すべてが第1コンピュータ202と第1サーバ208の間で確立された通信パラメータに関連しており、またはその一部である、第1暗号化鍵の第1鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、秘密参照テーブル、第1秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルを上述したように使用して暗号化される。したがって、通信パラメータが秘密のままである限り、第1サーバ208だけが、送信の第2ヘッダ部分の第1下位部分を解読することができる。
第3ヘッダ部分238の第2下位部分は、現在の通信リンクの起点ノードの識別、この場合には第1コンピュータ202、ならびにそれぞれが第3ヘッダ部分238の第1下位部分に含まれているメッセージ番号、日時識別子、ポート・オフセット識別子、および送信の日時を少なくとも含む。第3ヘッダ部分238の第2下位部分は、他の情報をも含み得る。第3ヘッダ部分238の第2下位部分は、すべてが第1サーバ208と第2サーバ212の間で確立された通信パラメータに関連しており、またはその一部である、第2暗号化鍵の第1鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、半公開参照テーブル、半公開ノイズ・テーブル鍵および半公開ノイズ・テーブルを上述したように使用して暗号化される。したがって、通信パラメータが秘密のままである限り、第1サーバ208だけが、送信の第3ヘッダ部分238の第2下位部分を解読することができる。さらに、第1および第2グループ・プロセス206、216の次に低い通信リンクのそれぞれ起点および終端ノードとしての識別は、第1コンピュータ202と第1サーバ208の間のすべてのネットワークおよびインターネット・ポイントで秘密に維持される。したがって、より低い通信リンク・ノードの秘密は、暗号が意図的に破られることを除いては、事実上維持される。
上記プロセスによって形成される送信は、(第1コンピュータ202のトランスポート・デーモン203によって生成された)ルーティング・エンベロープ内に含まれるネットワーク・ポート識別子によって示されるように第1サーバ208のネットワーク・ポートにルーティングされる。図8および10を参照して述べると、第3通信リンクの終端ノードである第1サーバ208は、送信を受信する(302)。送信のルーティング・エンベロープは、第1サーバ208が送信の次の受信側と意図された受信側の両方であることを示しており(304)、したがって、第1サーバ208は、送信を認証し、またどのように送信をさらに処理すべきか決定するために、第3ヘッダ部分238の第2下位部分を解読する(312)。第3ヘッダ部分238の第2下位部分は、第2暗号化鍵の第2鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、第3秘密ノイズ・テーブル鍵、半公開ノイズ・テーブルおよび半公開参照テーブルを使用して解読され、これらすべてが第1コンピュータ202と第1サーバ208の間に確立された通信パラメータに関連しており、またはその一部であり、すべてが上述したように使用される。
第3ヘッダ部分238の第2下位部分内に含まれる復号された情報は、現在の通信リンクの起点ノードとして第1コンピュータ202を識別し、メッセージ番号、ポート・オフセット標識、および第1コンピュータ202のトランスポート・デーモン203によって生成された日時識別子を提供する。第2ヘッダ部分236の第2下位部分内の情報は、第1グループ・プロセス206から生じるものとして送信を認証するために使用される。第3ヘッダ部分からのメッセージ番号は、第1コンピュータ202からの次の送信において第1サーバ208によって予期されているメッセージ番号と比較される。メッセージ番号は、第1コンピュータ202と第1サーバ208の間で確立される通信パラメータの一部であるポート番号のリスト内のポート番号のうちの1つを識別するために使用される。識別されたこのポート番号とポート・オフセット標識との和が、送信がそれを介して到着したネットワーク・ポートと同じならば、送信はさらに、第1コンピュータ202から生じたものとして検証される。最後に、第3ヘッダ部分238からの日時スタンプは、送信が時宜を得たやり方で送達されたことを保証するために調べられる。送信の送達時間の大きな遅れは、送信が本物ではなく、または送達前に改ざんされたことを示すものとして役立ち得る。
送信を認証すると、第3ヘッダ部分238の第1下位部分は、どのように送信をさらに処理するかを決定するために復号される。識別された起点ノードの識別を用いて、また第3ヘッダ部分238の第2下位部分から得られる他の情報を使用して、第1サーバ208は、すべてが第1コンピュータ202と第1サーバ208の間に確立された通信パラメータに関連しており、またはその一部である、第1暗号化鍵の第1鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、秘密参照テーブル、第2秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルを上述したように使用して、第3ヘッダ部分238の第1下位部分を解読する。
第3ヘッダ部分238内の復号された情報は、第1サーバ208がデータ部分の意図された受信側ではないことを示し(314)、また第2グループ・プロセス216が送信の意図された次の受信側であることをも示す(316)。したがって、第1サーバ208は、第3ヘッダ部分238の第1下位部分に含まれる情報に従って送信を再ルーティングする準備をする。第3ヘッダ部分238内で識別された意図された受信側が、第1サーバ208が直接のネットワーク・リンクを有していないグループ・プロセスであると認識して(318)、第1サーバ208は、第2サーバ212に送信を再ルーティングする。
第1サーバ208が送信を第2サーバ212に再ルーティングするためのプロセスは、第1コンピュータ202のトランスポート・デーモン203が送信を再ルーティングするためのプロセスとほぼ同じあり、その差は、使用される通信パラメータにある。図9Dは、第1サーバ208によって加えられる第4ヘッダ部分240を含む、第1サーバ208と第2サーバ212の間の送信を概略的に示している。
第2サーバ212上で送信が受信されると、第1サーバ208によって暗号化された第4ヘッダ部分の両方の部分は、第3ヘッダ部分238に関連して上述したやり方で解読される。第4ヘッダ部分からの復号された情報は、第2グループ・プロセス216が送信の意図された次の受信側であることを示しており、第2サーバ212は、第2サーバ212が直接のネットワーク・リンクを有するコンピュータ220上に第2グループ・プロセス216が常駐することを認識する。したがって、第5通信リンクの起点ノードを形成する第2サーバ212は、終端ノードである第2コンピュータ220に送信を再ルーティングする。第2サーバ212と第2コンピュータ220の間の送信は他の通信リンクと同様に実施され、通信パラメータがこの通信リンクのノード間で確立され、新しいヘッダ部分が送信に加えられる。
第2コンピュータのトランスポート・デーモン219は、第2サーバ212からの送信を受信し処理する。この第5通信リンクに関連するヘッダ部分の解読は、第3通信リンクに関連して述べたものと類似のやり方で進み、その差は、第2サーバ212と第2コンピュータ220の間で確立される通信パラメータが解読プロセスで使用されることである。このヘッダ部分に含まれる情報は、第2コンピュータ220が意図された受信側ではなく、第2グループ・プロセス216が意図された受信側、または次に低い通信リンクの終端ノードであることを示している。したがって、トランスポート・デーモンは、前の情報をルーティング・エンベロープから削除し、意図された受信側として第2グループ・プロセス216の識別、およびこの時点では第1グループ・プロセス208によって生成されたネットワーク・ポート識別子である、ちょうど復号されたヘッダ部分から取得されたネットワーク・ポート識別子をルーティング・エンベロープに挿入することによって、第2グループ・プロセス216に送信をルーティングする(320)。したがって、送信は、第1グループ・プロセス206によって確立されたネットワーク・ポートを介して第2グループ・プロセス216に送達される。
第2グループ・プロセス216は、類似のやり方で送信を処理する。第2通信リンクの終端ノードである第2グループ・プロセス216は、送信を受信する(302)。送信のルーティング・エンベロープは、第2グループ・プロセス216が送信の意図された受信側であることを示しており(304)、したがって、第2グループ・プロセス216は、送信を認証し、どのように送信をさらに処理するかを決定するために、第2ヘッダ部分236の第1および第2下位部分を解読する(312)。第2ヘッダ部分236の第2下位部分は、第2暗号化鍵の第2鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、第3秘密ノイズ・テーブル鍵、半公開ノイズ・テーブルおよび半公開参照テーブルを使用して解読され、これらすべてが第1グループ・プロセス206と第2グループ・プロセス216の間に確立された通信パラメータに関連しており、またはその一部であり、すべてが上述したように使用される。
第2ヘッダ部分236の第2下位部分内に含まれる復号された情報は、通信リンクの起点ノードとして第1グループ・プロセス206を識別し、メッセージ番号、ポート・オフセット標識、および第1グループ・プロセス206によって生成された日時識別子を提供する。第2ヘッダ部分236の第2下位部分内の情報は、送信を第1グループ・プロセス206から生じたものとして認証するために使用される。メッセージ番号は、第1グループ・プロセス206からの次の送信において第2グループ・プロセス216によって予期されているメッセージ番号と比較される。メッセージ番号は、第1グループ・プロセス206と第2グループ・プロセス216の間の通信パラメータの一部として確立されたポート番号のリスト内のポート番号のうちの1つを識別するために使用される。識別されたこのポート番号とポート・オフセット標識との和が、送信がそれを介して到着したネットワーク・ポートと同じならば、送信はさらに、第1グループ・プロセス206から生じたものとして検証される。最後に、第2ヘッダ部分236からの日時スタンプは、送信が時宜を得たやり方で送達されたことを保証するために調べられる。送信の送達時間の大きな遅れは、送信が本物ではなく、または送達前に改ざんされたことを示すものとして役立ち得る。
送信が認証されると、第2ヘッダ部分236の第1下位部分が、どのように送信をさらに処理するかを決定するために復号される。識別された起点ノードの識別を用いて、また第2ヘッダ部分236の第2下位部分から得られる他の情報を使用して第2グループ・プロセス216は、すべてが第1グループ・プロセス206と第2グループ・プロセス216の間で確立された通信パラメータに関連しており、またはその一部である、第1暗号化鍵の第1鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、秘密参照テーブル、第2秘密ノイズ・テーブル鍵および秘密ノイズ・テーブルを上述したように使用して、第2ヘッダ部分236の第1下位部分を復号する。
第2ヘッダ部分236内の復号された情報は、第2グループ・プロセス216がデータ部分の意図された受信側ではないことを示し(314)、また第2ユーザ・プロセス218が送信の意図された次の受信側であることをも示す(316)。したがって、第2グループ・プロセス216は、第2ヘッダ部分236の第1下位部分内に含まれる情報に従って送信を再ルーティングする準備をする。第2ヘッダ部分236内で識別される意図された受信側が同じコンピュータ220内に常駐するユーザ・プロセスであることを認識して(318)第2グループ・プロセス216は、前の情報をルーティング・エンベロープから削除し、意図された次の受信側として第2ユーザ・プロセス218の識別、および第2ヘッダ部分236から取得されたネットワーク・ポート識別子、すなわち第1ユーザ・プロセス202によって生成されたネットワーク・ポート識別子をルーティング・エンベロープ内に挿入することによって、送信を第2ユーザ・プロセス218にルーティングする(320)。したがって、送信は、第1ユーザ・プロセス204によって確立されたネットワーク・ポートを介して第2ユーザ・プロセス218に送達される。
第2ユーザ・プロセス218も、同じように送信を処理する。第1通信リンクの終端ノードである第2ユーザ・プロセス218は、送信を受信する(302)。送信のルーティング・エンベロープは、第2ユーザ・プロセス218が送信の受信側であることを示しており(304)、したがって、第2ユーザ・プロセス218は、送信を認証し、またどのように送信をさらに処理するかを決定するために、(下位部分をもたない)第1ヘッダ部分232を解読する(312)。第1ヘッダ部分232は、第2暗号化鍵の第2鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、第3秘密ノイズ・テーブル鍵、半公開ノイズ・テーブルおよび半公開参照テーブルを使用して解読され(312)、これらすべてが第1ユーザ・プロセス204と第2ユーザ・プロセス218の間に確立された通信パラメータに関連しており、またはその一部であり、すべてが上述したように使用される。
第1ヘッダ部分232内に含まれる復号された情報、すなわちメッセージ番号、ポート・オフセット標識、日時識別子、および第1通信リンクの起点ノードとしての第1ユーザ・プロセス204の識別は、メッセージを第1ユーザ・プロセス204から生じたものとして認証するために使用される。第1ヘッダ部分232からのメッセージ番号は、第1ユーザ・プロセス204からの次の送信において第2ユーザ・プロセス218によって予期されているメッセージ番号と比較される。メッセージ番号は、第1ユーザ・プロセス204と第2ユーザ・プロセス218の間の通信パラメータの一部として確立されたポート番号のリスト内のポート番号のうちの1つを識別するために使用される。識別されたこのポート番号とポート・オフセット標識との和が、送信がそれを介して到着したネットワーク・ポートと同じならば、送信はさらに、第1ユーザ・プロセス204から生じたものとして検証される。最後に、第2ヘッダ部分236からの日時スタンプは、送信が時宜を得たやり方で送達されたことを保証するために調べられる。送信の送達時間の大きな遅れは、送信が本物ではなく、または送達前に改ざんされたことを示すものとして役立ち得る。
送信が認証されると、第2ユーザ・プロセス218は、それが送信のデータ部分230の意図された受信側であると判断する(314)。したがって、第2ユーザ・プロセス218は、すべてが第1ユーザ・プロセス204と第2ユーザ・プロセス218の間に確立された通信パラメータに関連しており、またはその一部である、第1暗号化鍵の第2鍵部分、識別された暗号化アルゴリズム、識別された圧縮アルゴリズム、第2秘密ノイズ・テーブル鍵、秘密ノイズ・テーブル、および秘密参照テーブルを使用して送信のデータ部分230の解読に取り掛かる(322)。送信の信憑性が再び検証される(324)。メッセージ番号、ポート・オフセット識別子、日時識別子、送信側の識別、および送信のヘッダ部分に含まれる日時スタンプは、さらなる認証のために送信のデータ部分に含まれる同じ情報と比較される。
図11は、上述のシステムで可能な多くの異なる構成のうちの一部を示している。図8のシステムは概略的に示されており、このシステムでは、最も低いレベル(すなわち第1)の通信リンクの起点および終端ノードはそれぞれユーザ4およびユーザ5であり、第2通信リンクの起点および終端ノードはそれぞれグループ1およびグループ2であり、第3通信リンクの起点および終端ノードはそれぞれサーバ1およびサーバ2である。別の構成はサーバ2とサーバ3とを含むことがあり、この構成では、これらの2つのサーバが通信リンクを形成し、2つのノードがネットワーク接続によって直接リンクされる。さらに別の構成は、ユーザ13およびユーザ14を第1通信リンクのそれぞれ起点および終端ノードとして、またサーバ4およびサーバ5を第2通信リンクの起点および終端ノードとして含み得る。要するに、ネットワーク化可能な任意の単一のコンピュータが、後述するように、暗号化された送信を送信するために起点ノード、終端ノードまたはその両方の働きをし得る。ネットワークを介して接続された2つの装置間に適切な通信パラメータが確立されている場合には、送信側装置は通信リンクの起点ノードとして、意図された受信側装置は終端ノードとして確立される。
上述のシステムのさらに別の構成では、単一のコンピュータが、第1通信リンクの終端ノードと、その次の通信リンクの起点ノードの両方をホストすることができる。さらに、2つのノードは、単一のユーザ、グループまたはサーバ・プロセスによって表され得る。例を挙げると、ユーザ13およびユーザ14は第1通信リンクのそれぞれ起点および終端ノードとすることができ、サーバ4およびサーバ6は第2通信リンクのそれぞれ起点および終端ノードとすることができ、サーバ6およびサーバ5は第3通信リンクのそれぞれ起点および終端ノードとすることができる。
この構成では、サーバ6は、第2通信リンクの終端ノードと第3通信リンクの起点ノードの両方である。サーバ6は、サーバ4から入ってくる送信を上記とほぼ同じやり方で処理し、再ルーティングする。図10を参照すると、サーバ6は、第2通信リンクの終端ノードとして送信を受信している(302)。送信のルーティング・エンベロープは、サーバ6が送信の受信側であることを示しており(304)、したがって、サーバ6は、送信を認証し、送信をさらにどのように処理するかを決定するために第2ヘッダ部分を解読する(312)。第2ヘッダ部分は、サーバ4とサーバ6の間に確立された通信パラメータを使用して解読される(312)。
第2ヘッダ部分内に含まれる復号された情報、すなわちメッセージ番号、ポート・オフセット標識、日時識別子、およびサーバ4の第2通信リンクの起点ノードとしての識別は、上述したやり方でメッセージをサーバ4から生じたものとして認証するために使用される。送信を認証するとサーバ6は、第2ヘッダ部分に含まれる情報に従って送信を再ルーティングする準備をする。第2ヘッダ部分内の復号された情報は、サーバ6がデータ部分の意図された受信側でないことを示し(314)、またユーザ14が送信の意図された次の受信側であることを示している(316)。さらに、サーバ6は、それがユーザ14との直接のネットワーク接続を有していないと判断し(318)、第3通信リンクの起点ノードとして送信を再ルーティングする準備をする。サーバ6は、ルーティング・エンベロープから適切な情報を削除し(306)、上述したやり方で現在のルーティングを行うために、新しい情報をその中に挿入する。サーバ6は、上述したやり方で第3ヘッダ部分240をも追加する(308)。送信がこのように処理されると、サーバ6は、第3通信リンクの終端ノードとしてサーバ5に送信を再ルーティングする。上述したように、発信および受信側の秘密は、暗号が意図的に破られることを除いては事実上維持される。
重要なことには、図11に示す多数の通信リンクは、通信リンクの起点および終端ノードを確立するときに、本明細書で述べた暗号化方法を使用して通信することに限定されない。任意の暗号化アルゴリズムまたはアルゴリズムの組合せが、ノード間のデータ送信を暗号化するために使用され得る。
このように、データを暗号化し送信する方法、および暗号化されたデータを送信するためのシステムが開示される。本発明の実施形態について示し述べたが、本発明の発明概念から逸脱せずに多くの修正が可能であることが当業者には明らかになろう。したがって、本発明は、特許請求の範囲の精神を除いては限定されるものではない。
第1のデータ暗号化方法を示す図である。 図1の暗号化方法で使用される参照テーブルの一例を示す図である。 第2のデータ暗号化方法を示す図である。 暗号化された送信を生成する方法を示すフローチャートである。 第3のデータ暗号化方法を示すフローチャートである。 第4暗号化方法を示すフローチャートである。 データをパケットで送信する方法を示すフローチャートである。 データ送信を暗号化するためのシステムを概略的に示す図である。 図4の方法を使用して生成される、暗号化されたデータ送信を概略的に示す図である。 データ送信をルーティングする方法を示すフローチャートである。 データ送信を暗号化するためのネットワーク化された複数のシステムを概略的に示す図である。

Claims (28)

  1. データを暗号化する方法であって、
    前記データをXビット長のワードを有するバイナリ形式で表すこと、
    参照テーブルを使用して前記データの各ワードのビットの順序の第1可逆再配列を実施すること、および
    前記参照テーブルを使用して前記データの各ワードのビットの順序の第2可逆再配列を実施することを備える方法。
  2. 前記第2可逆再配列が前記第1可逆再配列とは異なるやり方で実施される請求項1に記載の方法。
  3. 前記データをバイナリ形式で表す前に、mエントリの第1行およびそれぞれがnエントリのr行を有する前記参照テーブルを生成することをさらに含む請求項1に記載の方法。
  4. m、nおよびrが素数である請求項3に記載の方法。
  5. 前記第1可逆再配列の実施が、前記参照テーブルの前記第1行を使用して各ワードのビットを再配列することを含む請求項3に記載の方法。
  6. 前記第2可逆再配列の実施が、前記参照テーブルの前記r行のうちの1つを使用して各ワードのビットを再配列することを含む請求項3に記載の方法。
  7. 前記参照テーブルの前記r行のうちの1つを使用して各ワードのビットを再配列することが、前記参照テーブルの前記r行のうちの連続した行を使用して、隣接したワードのビットを個々に再配列することを含み、前記参照テーブルの前記r行の第1行が前記参照テーブルの前記r行の最終行の後に続く請求項6に記載の方法。
  8. 前記参照テーブルの生成が、前記参照テーブルの前記エントリにエントリ当たり1つの番号を割り当てることをさらに含み、前記第1行の各エントリに割り当てられた前記番号が前記第1行内で一意であり、前記r行の各行の各エントリに割り当てられた前記数が各個々の行内で一意である請求項3に記載の方法。
  9. 前記データの各ワードのビットの順序の前記第1可逆再配列を実施することが、
    前記データの各ワードをm個のビット群にグループ化すること、
    前記テーブルの前記第1行からの前記数を番号順に配列すること、
    前記ビット群のそれぞれを、番号順に配列された前記テーブルの前記第1行からの前記数のうちの1つに相関させること、および
    前記ビット群を、前記テーブルの前記第1行内で順序付けられた前記テーブルの前記第1行からの前記数に基づいて再配列することを備える請求項8に記載の方法。
  10. 前記データの各ワードをm個のビット群にグループ化することが、qをpより小さいものとして、前記データの各ワードをpビット長のm−1個の群、およびqビット長の1つの群にグループ分けすることを含む請求項9に記載の方法。
  11. 前記データの各ワードのビットの順序の前記第2可逆再配列を実施することが、
    前記データの各ワードをn個のビット群にグループ化すること、
    前記テーブルの前記r行のうちの1つからの前記数を番号順に配列すること、
    前記ビット群のそれぞれを、番号順に配列された前記テーブルの前記r行のうちの前記1つからの前記数のうちの1つに相関させること、および
    前記テーブルの前記r行のうちの前記1つの行内で順序付けられた前記テーブルの前記r行のうちの前記1つの行からの前記数に基づいて前記ビット群を再配列することを備える請求項8に記載の方法。
  12. 前記データの各ワードをn個のビット群にグループ化することが、qをpより小さいものとして、前記データの各ワードをpビット長のn−1個の群、およびqビット長の1つの群にグループ分けすることを含む請求項11に記載の方法。
  13. データを暗号化する方法であって、
    前記データをXビット長のワードを有するバイナリ形式で表すこと、
    鍵、およびノイズ・テーブルからの第1ノイズ・テーブル・ワードを使用して第1データ・ワードに対してXOR操作を実施することであって、前記ノイズ・テーブルがXビット長のワードを有するバイナリ形式で表され、前記鍵がXビット長のワードを有するバイナリ形式で表されること、および
    直前のXOR操作の結果および後続のノイズ・テーブル・ワードを使用して連続するデータ・ワードに対して前記XOR操作を実施することを備える方法。
  14. 前記第1データ・ワードに対して前記XOR操作を実施する前に、前記ノイズ・テーブル内の前記ワードのうちの1つとして前記第1ノイズ・テーブル・ワードを設定することをさらに備える請求項13に記載の方法。
  15. 前記データをバイナリ形式で表す前に、前記データより大きいサイズを有する前記ノイズ・テーブルを生成することをさらに備える請求項13に記載の方法。
  16. 前記ノイズ・テーブルを生成することが、
    前記ランダム文字テーブルより少なくとも1桁大きいサイズのデータ・サンプルを取得すること、
    前記データ・サンプル内のデータ・サブサンプルを識別することであって、前記データ・サブサンプルが、少なくとも128バイトのサイズであるランダム文字テーブルにサイズが等しいこと、
    前記データ・サブサンプルをXビット長のワードで表すこと、
    参照テーブルを使用して前記データ・サブサンプルの各ワードのビットの順序の第1の再配列を実施すること、
    前記参照テーブルを使用して前記データ・サブサンプルの各ワードのビットの順序の第2の再配列を実施すること、および
    前記ランダム文字テーブルを使用して、前記データ・サブサンプルの再配列された各ワードに対して連続したXOR操作を個々に実施することを備える請求項15に記載の方法。
  17. 前記データ・サンプルが非繰返しのデータ列を備える請求項16に記載の方法。
  18. 前記第2可逆再配列が前記第1可逆再配列とは別のやり方で実施される請求項16に記載の方法。
  19. mエントリの第1行、およびそれぞれがnエントリのr行を有する前記参照テーブルを生成することをさらに備える請求項16に記載の方法。
  20. m、nおよびrが素数である請求項19に記載の方法。
  21. 前記第1可逆再配列の実施が、前記参照テーブルの前記第1行を使用して各ワードのビットを再配列することを含む請求項19に記載の方法。
  22. 前記第2可逆再配列の実施が、前記参照テーブルの前記r行のうちの1つを使用して各ワードのビットを再配列することを含む請求項19に記載の方法。
  23. 前記参照テーブルの前記r行のうちの1つを使用して各ワードのビットを再配列することが、前記参照テーブルの前記r行のうちの連続した行を使用して、隣接したワードのビットを個々に再配列することを含み、前記参照テーブルの前記r行の第1行が前記参照テーブルの前記r行の最終行に続く請求項22に記載の方法。
  24. 前記参照テーブルの生成が、前記参照テーブルの前記エントリにエントリ当たり1つの番号を割り当てることをさらに含み、前記第1行の各エントリに割り当てられた前記番号が前記第1行内で一意であり、前記r行の各行の各エントリに割り当てられた前記数が各個々の行内で一意である請求項19に記載の方法。
  25. 前記データの各ワードのビットの順序の前記第1可逆再配列を実施することが、
    前記データ・サブサンプルの各ワードをm個のビット群にグループ化すること、
    前記テーブルの前記第1行からの前記数を番号順に配列すること、
    前記ビット群のそれぞれを、番号順に配列された前記テーブルの前記第1行からの前記数のうちの1つに相関させること、および
    前記ビット群を、前記テーブルの前記第1行内で順序付けられた前記テーブルの前記第1行からの前記数に基づいて再配列することを備える請求項24に記載の方法。
  26. 前記データの各ワードをm個のビット群にグループ化することが、qをpより小さいものとして、前記データの各ワードをpビット長のm−1個の群、およびqビット長の1つの群にグループ分けすることを含む請求項25に記載の方法。
  27. 前記データの各ワードのビットの順序の前記第2可逆再配列を実施することが、
    前記データ・サブサンプルの各ワードをn個のビット群にグループ化すること、
    前記テーブルの前記r行のうちの1つからの前記数を番号順に配列すること、
    前記ビット群のそれぞれを、番号順に配列された前記テーブルの前記r行のうちの前記1つからの前記数のうちの1つに相関させること、および
    前記テーブルの前記r行のうちの前記1つの行内で順序付けられた前記テーブルの前記r行のうちの前記1つの行からの前記数に基づいて前記ビット群を再配列することを備える請求項24に記載の方法。
  28. 前記データの各ワードをn個のビット群にグループ化することが、qをpより小さいものとして、前記データの各ワードをpビット長のn−1個の群、およびqビット長の1つの群にグループ分けすることを含む請求項27に記載の方法。
JP2006549498A 2004-01-08 2005-01-06 データを暗号化し送信する方法および暗号化されたデータを送信するためのシステム Pending JP2008501253A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/753,753 US7752453B2 (en) 2004-01-08 2004-01-08 Method of encrypting and transmitting data and system for transmitting encrypted data
US10/753,762 US7526643B2 (en) 2004-01-08 2004-01-08 System for transmitting encrypted data
PCT/US2005/000741 WO2005067680A2 (en) 2004-01-08 2005-01-06 Method of encrypting and transmitting data and system for transmitting encrypted data

Publications (2)

Publication Number Publication Date
JP2008501253A true JP2008501253A (ja) 2008-01-17
JP2008501253A5 JP2008501253A5 (ja) 2008-02-28

Family

ID=34799000

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006549498A Pending JP2008501253A (ja) 2004-01-08 2005-01-06 データを暗号化し送信する方法および暗号化されたデータを送信するためのシステム

Country Status (5)

Country Link
EP (1) EP1733503A2 (ja)
JP (1) JP2008501253A (ja)
AU (1) AU2005204572A1 (ja)
CA (1) CA2552995A1 (ja)
WO (1) WO2005067680A2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61264936A (ja) * 1985-05-20 1986-11-22 Fujitsu Ltd 転置テ−ブル作成方式
JP2000010476A (ja) * 1998-06-18 2000-01-14 Nec Software Kyushu Ltd データ暗号化及び復号化装置、データ暗号化及び復号化プログラムを記録した記録媒体
JP2002049310A (ja) * 2000-08-04 2002-02-15 Toshiba Corp 暗復号装置、認証装置及び記憶媒体

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5541995A (en) * 1994-04-18 1996-07-30 Apple Computer Inc. Method and apparatus for decoding non-sequential data packets
US6873707B1 (en) * 2000-09-28 2005-03-29 Cisco Technology, Inc. Hardware-based encryption/decryption employing cycle stealing
US6937727B2 (en) * 2001-06-08 2005-08-30 Corrent Corporation Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61264936A (ja) * 1985-05-20 1986-11-22 Fujitsu Ltd 転置テ−ブル作成方式
JP2000010476A (ja) * 1998-06-18 2000-01-14 Nec Software Kyushu Ltd データ暗号化及び復号化装置、データ暗号化及び復号化プログラムを記録した記録媒体
JP2002049310A (ja) * 2000-08-04 2002-02-15 Toshiba Corp 暗復号装置、認証装置及び記憶媒体

Also Published As

Publication number Publication date
WO2005067680A2 (en) 2005-07-28
WO2005067680A3 (en) 2008-11-13
AU2005204572A1 (en) 2005-07-28
CA2552995A1 (en) 2005-07-28
EP1733503A2 (en) 2006-12-20

Similar Documents

Publication Publication Date Title
US8275997B2 (en) Method of encrypting and transmitting data and system for transmitting encrypted data
US8031865B2 (en) Multiple level security system and method for encrypting data within documents
KR101205109B1 (ko) 메시지 인증 방법
US7865730B2 (en) Bcencryption (BCE)—a public-key based method to encrypt a data stream
US20060056623A1 (en) Block encryption method and schemes for data confidentiality and integrity protection
US7110539B1 (en) Method and apparatus for encrypting and decrypting data
Sirohi et al. A comprehensive study on security attacks on SSL/TLS protocol
KR102172181B1 (ko) 실시간 데이터 전송을 위한 블록 암호 장치 및 방법
JPH07107085A (ja) メッセージ確認方法及び通信システム
US20030149876A1 (en) Method and system for performing perfectly secure key exchange and authenticated messaging
CN106941404A (zh) 密钥保护方法及装置
CN111988301A (zh) 一种客户端防黑客暴力攻击的安全通讯方法
Luykx et al. Optimal forgeries against polynomial-based MACs and GCM
KR100551992B1 (ko) 어플리케이션 데이터의 암호화 및 복호화 방법
US7526643B2 (en) System for transmitting encrypted data
CN109981294A (zh) 电子通信方法和系统
Ooi et al. Cryptanalysis of s-des
EP1456997B1 (en) System and method for symmetrical cryptography
Rajasekar et al. Introduction to Classical Cryptography
US11115187B2 (en) Apparatus and method for block ciphers for real-time data transmission
JP4664692B2 (ja) 暗号化方法、復号方法、暗号化装置、復号装置、暗号装置、およびプログラム
Gohel Introduction to Network & Cybersecurity
JP2008501253A (ja) データを暗号化し送信する方法および暗号化されたデータを送信するためのシステム
WO2004105310A1 (ja) 暗号化装置、復号化装置、暗号化方法、復号化方法、暗号化プログラムおよび復号化プログラム
TWI248276B (en) System and method for secure encryption

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071203

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110627