(57)【特許請求の範囲】
【請求項１】
ＴＣＰ中継を行う中継サーバを有し、ネットワーク上でＴＣＰセッションの分断、及び中継を行うＴＣＰ中継装置であって、
受信した信号からシーケンス番号又は確認応答番号を抽出するシーケンス番号抽出手段と、
前記抽出されたシーケンス番号を所定の方式で変換し、又は前記抽出された確認応答番号を所定の方式で逆変換するシーケンス番号変換手段とを備え、
前記シーケンス番号抽出手段は、前記中継サーバが出力した信号からシーケンス番号を抽出し、
前記シーケンス番号変換手段は、前記抽出されたシーケンス番号を所定の方式で変換し、変換したシーケンス番号を外部出力する一方、
前記シーケンス番号抽出手段は、前記外部出力されたシーケンス番号に対する応答信号を受信した場合は、応答信号から前記シーケンス番号の信号を正常に受信したことを示す確認応答番号を抽出し、
前記シーケンス番号変換手段は、前記応答信号から抽出された確認応答番号を所定の方式で逆変換し、逆変換された確認応答番号を前記中継サーバに出力することを特徴とするＴＣＰ中継装置。
【請求項２】
前記シーケンス番号変換手段は、
クライアントがＴＣＰセッション確立要求として送信した同期信号に対して前記中継サーバが出力する同期確認信号を格納する格納手段と、
前記中継サーバが前記クライアントのＴＣＰセッション確立要求先であるターゲットサーバに送信した同期信号に対して前記ターゲットサーバが送信する同期確認信号を受信し、この同期確認信号から前記ターゲットサーバの初期シーケンス番号を読み取るＩＳＮ読取手段と、
前記格納手段に格納されている同期確認信号に含まれる前記中継サーバの初期シーケンス番号を前記ＩＳＮ読取手段が読み取った前記ターゲットサーバの初期シーケンス番号に書換える書換え手段と、
前記中継サーバの初期シーケンス番号と、前記ターゲットサーバの初期シーケンス番号との差分を算出する差分算出手段と、
前記クライアントから前記書換えられたシーケンス番号を含む信号に対する確認信号を受信した場合、受信信号中の確認応答番号に前記差分を加算する第１加算手段と、
前記中継サーバが前記クライアントに送信する信号のシーケンス番号から前記差分を減算する減算手段と、
前記クライアントが前記中継サーバに送信する信号の確認応答番号に前記差分を加算する第２加算手段とを備えることを特徴とする請求項１記載のＴＣＰ中継装置。
【請求項３】
ネットワーク上でＴＣＰセッションの分断、及び中継を行うＴＣＰ中継装置のシーケンス番号変換方法であって、
中継サーバが出力した信号からシーケンス番号を抽出するステップと、
前記抽出されたシーケンス番号を所定の方式で変換し、変換したシーケンス番号を外部出力するステップと、
前記外部出力されたシーケンス番号に対する応答信号を受信したときは、応答信号から前記シーケンス番号の信号を正常に受信したことを示す確認応答番号を抽出するステップと、
前記応答信号から抽出された確認応答番号を所定の方式で逆変換し、逆変換された確認応答番号を前記中継サーバに出力するステップとを含むことを特徴とするシーケンス番号変換方法。
【請求項４】
クライアントがＴＣＰセッション確立要求として送信した同期信号に対して中継サーバが出力する同期確認信号を格納するステップと、
前記中継サーバが前記クライアントのＴＣＰセッション確立要求先であるターゲットサーバに送信した同期信号に対して前記ターゲットサーバが送信する同期確認信号を受信し、この同期確認信号から前記ターゲットサーバの初期シーケンス番号を読み取るステップと、
前記格納されている同期確認信号に含まれる前記中継サーバの初期シーケンス番号を前記読み取られた前記ターゲットサーバの初期シーケンス番号に書換えるステップと、
前記中継サーバの初期シーケンス番号と、前記ターゲットサーバの初期シーケンス番号との差分を算出するステップと、
前記クライアントから前記書換えられたシーケンス番号を含む信号に対する確認信号を受信した場合、受信信号中の確認応答番号に前記差分を加算するステップと、
前記中継サーバが前記クライアントに送信する信号のシーケンス番号から前記差分を減算するステップと、
前記クライアントが前記中継サーバに送信する信号の確認応答番号に前記差分を加算するステップとを含むことを特徴とする請求項３記載のシーケンス番号変換方法。
【請求項５】
クライアントがＴＣＰセッション確立要求として送信した同期信号に対して中継サーバが出力する同期確認信号を格納する処理と、
前記中継サーバが前記クライアントのＴＣＰセッション確立要求先であるターゲットサーバに送信した同期信号に対して前記ターゲットサーバが送信する同期確認信号を受信し、この同期確認信号から前記ターゲットサーバの初期シーケンス番号を読み取る処理と、
前記格納されている同期確認信号に含まれる前記中継サーバの初期シーケンス番号を前記読み取られた前記ターゲットサーバの初期シーケンス番号に書換える処理と、
前記中継サーバの初期シーケンス番号と、前記ターゲットサーバの初期シーケンス番号との差分を算出する処理と、
前記クライアントから前記書換えられたシーケンス番号を含む信号に対する確認信号を受信した場合、受信信号中の確認応答番号に前記差分を加算する処理と、
前記中継サーバが前記クライアントに送信する信号のシーケンス番号から前記差分を減算する処理と、
前記クライアントが前記中継サーバに送信する信号の確認応答番号に前記差分を加算する処理とを実行させるプログラム。
【請求項６】
請求項５記載のプログラムが記録され、コンピュータにより読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば、クライアントとターゲットサーバとの間で行われるＴＣＰ／ＩＰ（“Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ”，ｒｆｃ７９３，“Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ”，ｒｆｃ７９１）を利用したデータ通信を中継するＴＣＰ中継装置及びシーケンス番号変換方法に関する。
【０００２】
【従来の技術】
従来から、インターネット等におけるクライアント−ターゲットサーバ間のデータ通信プロトコルとして、ＴＣＰ／ＩＰが広く利用されている。ＩＰは、ＩＰアドレスを利用したネットワーク内及びネットワーク間のパケットの送受信環境を提供するが、パケットが目的のコンピュータに正常に到達することは保証しない。ＴＣＰは、ＩＰパケットの送受を制御するプロトコルであり、スライディングウィンドウバッファ（以下、単に「バッファ」という。）と、シーケンス番号とを利用して、信頼性の高いデータ通信環境を提供している。図５は、ＴＣＰヘッダを示す図である。図５に示すように、シーケンス番号と、正常受信したデータの次のシーケンス番号である確認応答番号は、それぞれＴＣＰヘッダの情報である。
【０００３】
図６は、ＴＣＰによるデータ転送の手順を説明する図である。参考文献として、Ｗ．Ｒｉｃｈａｒｄ  Ｓｔｅｖｅｎｔ著、井上、橘訳「詳解ＴＣＰ／ＩＰ」ソフトバンク」を挙げておく。図６において、左右の番号はセグメント（ＴＣＰのデータ転送単位）の番号である。このセグメントを、以下、単に「信号」という。送信側コンピュータは、送信データを識別するシーケンス番号を付与して、データを送信する。受信側のコンピュータは、正常にデータを受信した場合、図５に示すＡＣＫビットをオンにし、正常に受信したデータのシーケンス番号＋１の値を確認応答番号フィールドに設定し（受信側コンピュータが送信側コンピュータに送るデータを識別するためのシーケンス番号と区別するため、以下、前記正常に受信したデータの（送信側コンピュータの）シーケンス番号＋１の値を確認応答番号という。）、送信側コンピュータに送信する。これを、ＡＣＫ信号という。送信側のコンピュータは、データ受信側コンピュータから当該データを正常に受信したと確認できるＡＣＫ信号を受信するまでは、送信済のデータをバッファ内に保持している。図６では、受信側コンピュータは、４３でシーケンス番号６４０１を先頭とする２５６バイト長データの信号を正常に受信できたので、次に５８でシーケンス番号６６５７のデータを要求している。
【０００４】
しかしながら、シーケンス番号６６５７のデータ（４５）が消失したため、受信側コンピュータは、シーケンス番号６６５７を要求するＡＣＫ信号を再送している（６０、６１、６２、６４）。送信側は、既に送信済のシーケンス番号を要求するＡＣＫ信号を規定回数受け取ると、当該信号がネットワーク上で紛失したものとして、これを再送する（６３）。
【０００５】
このシーケンス番号の初期値（初期シーケンス番号：以下、「ＩＳＮ値」という。）は、０から始まるのではなく、通信を行うコンピュータがそれぞれ個別に決定し、ＴＣＰのセッション（ＴＣＰコネクションとも呼ばれる）確立時に、後述する３ウェイハンドシェイクと呼ばれる手順で相互に通知する。すなわち、
（１）クライアントは、ＳＹＮビットをオン、シーケンス番号フィールドに送信時点でのクライアントのＩＳＮ値（ＩＳＮ１）を設定し、ターゲットサーバに送信する（以下、この信号を「同期信号」といい、ＳＹＮ（ＩＳＮ１）と表記する）。
（２）ターゲットサーバは、同期信号を受信、及び受領すると、クライアントの同期信号に対する受領を表すため、ＡＣＫビットをオンとし、クライアントのＩＳＮ値（ＩＳＮ１）＋１の値を確認応答番号フィールドにセットする。同時に、ターゲットサーバ側のＩＳＮ値をクライアントに通知するため、ＳＹＮビットもオンとし、ターゲットサーバ側の送信時のＩＳＮ値（ＩＳＮ２）を、シーケンス番号フィールドにセットし、クライアント側に送信する（以下、この信号を「同期確認信号」といい、ＳＹＮ（ＩＳＮ２）ＡＣＫ（ＩＳＮ１＋１）と表記する）。
（３）クライアントは、同期確認信号を受け取ると、正常に受信した旨の確認のため、ＡＣＫビットをオンとし、確認応答番号フィールドにＩＳＮ２＋１をセットした信号をターゲットサーバ側に送信する（以下、この信号を「確認信号」といい、ＡＣＫ（ＩＳＮ２＋１）と表記する）。確認信号を送信した時点で、クライアント側のＴＣＰセッションが確立状態となり、確認信号を受信した時点で、ターゲットサーバ側のＴＣＰセッションが確立状態となる。
【０００６】
上記のように、ＴＣＰ／ＩＰによるデータ送受においては、データが正常に送受されている場合でも、受信側から該当シーケンス番号のデータに関するＡＣＫ信号を受信するまで、送信側では、再送に備えて、送信済データをバッファ内に保持する必要がある。このバッファ容量は、通常８ＫＢ程度であるので、伝送遅延の大きいネットワークでは、データ転送速度が頭打ちになるという問題が生じる。
【０００７】
従来、このようなネットワーク上の伝送遅延による性能低下を回避するため、ネットワーク上でＴＣＰセッションを分断及び中継する装置（ＴＣＰ中継装置）が提案されている。
【０００８】
図４は、従来のＴＣＰ中継装置の構成を示す図である。このＴＣＰ中継装置は、アドレス変換部４０、キャッシュサーバ４１（以下、「中継サーバ」という。）、中継制御回路４２等から構成され、クライアント−ターゲットサーバ間のＴＣＰセッションを中継サーバが分断し、中継転送する。すなわち、クライアント−ターゲットサーバ間では、
クライアント−（ＴＣＰセッション１）−中継サーバ−（ＴＣＰセッション２）−ターゲットサーバ
という２つのＴＣＰセッションが確立され、中継サーバによって、ＴＣＰセッション１、２間の中継転送制御が行われる。また、このＴＣＰ中継装置では、アドレス変換部によるＩＰアドレス変換機能によって、ＴＣＰは終端しても、ＩＰに対しては透過であるという特徴を有する。すなわち、クライアントのＩＰアドレスをＡ、ターゲットサーバのＩＰアドレスをＢとすると、クライアント及びターゲットサーバは、それぞれＡからＢ、ＢからＡというパケットを送受すればよく、ＴＣＰ中継装置の存在を直接意識する必要はない。ＴＣＰに関しては、クライアント及びターゲットサーバは、中継サーバとセッションを設定しているが、通常、アプリケーションプログラムがＴＣＰ層のパラメータを直接認識することはないので、クライアント及びターゲットサーバのアプリケーションプログラムはそれぞれターゲットサーバ、クライアントと直接ＴＣＰ／ＩＰセッションを設定しているものと認識する。このような外部に対して透過性を有するＴＣＰ中継装置を透過型ＴＣＰ中継装置と呼ぶこともある。
【０００９】
【発明が解決しようとする課題】
上記のようなＴＣＰ中継装置は、透過性を有すること、及び多くのＴＣＰセッションを中継サーバ１箇所に集中させるので、次のような問題が生ずる。すなわち、上記のＩＳＮの値は、通信を行うコンピュータ固有の値であるが、ＲＦＣ７９３によれば、各々のコンピュータ内においては、この値はコンピュータ内部タイマと連動している。図７は、ＲＦＣ７９３によるＩＳＮ値の生成方法を示す図である。図７に示すように、ＩＳＮ値は、４μｓ刻みであることが推奨されているが、実際には、ハードウェアの制約等から１ｍｓ刻みである場合もある。
【００１０】
あるクライアントが、最初にＴＣＰセッションを設定して、その時点でのターゲットサーバ側のＩＳＮ（ＩＳＮ０とする）値を取得すると、Δｔ秒後に任意のユーザがＴＣＰセッションを設定した場合、ターゲットサーバ側が割り当てるＩＳＮ（ＩＳＮ１とする）は、次の▲１▼式により容易に予測することが可能となる。
【００１１】
ＩＳＮ１＝Δｔ（秒）×Ｎ＋ＩＳＮ０  ・・・▲１▼
ただし、Ｎは単位時間に更新されるＩＳＮ値の数、４μｓ毎に更新される場合は、２．５×１０5となる。
【００１２】
この性質を利用すれば、上記ＴＣＰ中継装置を利用しているすべてのユーザに対して、ＴＣＰセッションハイジャックと呼ばれる攻撃を容易に行うことができる。ＴＣＰセッションハイジャックに関しては、Ｍｏｒｒｉｓ，  Ｒ．Ｔ．１９８５．  Ａ  Ｗｅａｋｎｅｓｓ  ｉｎ  ｔｈｅ  ４．２ＢＳＤ  ＵＮＩＸ  ＴＣＰ／ＩＰ  Ｓｏｆｔｗａｒｅ．  Ｃｏｍｐｕｔｉｎｇ  Ｓｃｉｅｎｃｅ  Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  Ｎｏ．１１７，  ＡＴ＆Ｔ  Ｂｅｌｌ  Ｌａｂｏｒａｔｏｒｉｅｓ，  Ｍｕｒｒａｙ  Ｈｉｌｌ，  Ｎｅｗ  ＪＥＲＳＥＹ．が詳しい。以下、図８を参照してこれを説明する。
【００１３】
図８は、ＩＳＮ値予測によるＴＣＰセッションハイジャック方式を説明する図である。図８に示すように、ターゲットサーバＢに利用権があるクライアントＡがいるとする。攻撃者Ｘは、ターゲットサーバＢに対して同期信号ＳＹＮ（ＩＳＮx）を送信する。このとき、ＩＰヘッダ上の送信元ＩＰアドレスは、Ｘ自身のＩＰアドレス（ＩＰx）ではなく、当該ターゲットサーバに正規の利用権があるクライアントＡのＩＰアドレス（ＩＰA）に設定する。
【００１４】
ターゲットサーバＢは、この要求を受理し、同期確認信号ＳＹＮ（ＩＳＮB）ＡＣＫ（ＩＳＮx＋１）をクライアントＡに対して送信する。この信号は、クライアントＡに対して送られるため、攻撃者ＸはＩＳＮBを直接取得することができない。しかしながら、式▲１▼を利用することにより、攻撃者Ｘは、ＩＳＮBを推測することに成功し、確認信号ＡＣＫ（ＩＳＮB＋１）をターゲットサーバＢに送信したとする。このときも、送信元のＩＰアドレスは、ＩＰAに設定する。この信号をターゲットサーバＢが受理した時点で、攻撃者ＸからターゲットサーバＢに対するＸからＢ片方向のＴＣＰセッションが確立され、攻撃者Ｘは、正規ユーザＡになりすましてターゲットサーバＢに対して任意のデータを送信することが可能となる。
【００１５】
式▲１▼による推測を行うためには、攻撃者Ｘ自体がターゲットサーバＢに対して正規ＴＣＰセッションを設定可能な権限があり、ＩＳＮ０を取得可能であることが必要となる。従って、一般的な利用環境においては、利用権の管理を厳密にすること等によって、一定の防御をしたり被害範囲を限定したりすることが可能であり、また、攻撃者の特定も比較的容易である。
【００１６】
しかしながら、上記の透過型のＴＣＰ中継装置が存在する環境においては、クライアント側では、ターゲットとするサーバには関わりなく、自動的に中継サーバとＴＣＰセッションを設定している。すなわち、どのターゲットサーバがターゲットであろうとも、透過型のＴＣＰ中継装置を利用しているクライアントは、すべて中継サーバのＩＳＮ決定プログラムを共用しており、式▲１▼を利用して、他のクライアントのＩＳＮ値を予測し、ＴＣＰセッションハイジャックを行うことができるという問題がある。
【００１７】
本発明は、このような事情に鑑みてなされたものであり、透過型のＴＣＰ中継を行いながら、第三者のＩＳＮ値の予測を、全く別個のターゲットサーバのＩＳＮ値を予測するのと同程度に困難とすることができるＴＣＰ中継装置及びシーケンス番号変換方法を提供することを目的とする。
【００１８】
【課題を解決するための手段】
上記の目的を達成するため、本発明に係るＴＣＰ中継装置は、ＴＣＰ中継を行う中継サーバを有し、ネットワーク上でＴＣＰセッションの分断、及び中継を行うＴＣＰ中継装置であって、受信した信号からシーケンス番号又は確認応答番号を抽出するシーケンス番号抽出手段と、前記抽出されたシーケンス番号を所定の方式で変換し、又は前記抽出された確認応答番号を所定の方式で逆変換するシーケンス番号変換手段とを備え、前記シーケンス番号抽出手段は、前記中継サーバが出力した信号からシーケンス番号を抽出し、前記シーケンス番号変換手段は、前記抽出されたシーケンス番号を所定の方式で変換し、変換したシーケンス番号を外部出力する一方、前記シーケンス番号抽出手段は、前記外部出力されたシーケンス番号に対する応答信号を受信した場合は、応答信号から前記シーケンス番号の信号を正常に受信したことを示す確認応答番号を抽出し、前記シーケンス番号変換手段は、前記応答信号から抽出された確認応答番号を所定の方式で逆変換し、逆変換された確認応答番号を前記中継サーバに出力する構成を採る。
【００１９】
また、前記シーケンス番号変換手段は、クライアントがＴＣＰセッション確立要求として送信した同期信号に対して前記中継サーバが出力する同期確認信号を格納する格納手段と、前記中継サーバが前記クライアントのＴＣＰセッション確立要求先であるターゲットサーバに送信した同期信号に対して前記ターゲットサーバが送信する同期確認信号を受信し、この同期確認信号から前記ターゲットサーバの初期シーケンス番号を読み取るＩＳＮ読取手段と、前記格納手段に格納されている同期確認信号に含まれる前記中継サーバの初期シーケンス番号を前記ＩＳＮ読取手段が読み取った前記ターゲットサーバの初期シーケンス番号に書換える書換え手段と、前記中継サーバの初期シーケンス番号と、前記ターゲットサーバの初期シーケンス番号との差分を算出する差分算出手段と、前記クライアントから前記書換えられたシーケンス番号を含む信号に対する確認信号を受信した場合、受信信号中の確認応答番号に前記差分を加算する第１加算手段と、前記中継サーバが前記クライアントに送信する信号のシーケンス番号から前記差分を減算する減算手段と、前記クライアントが前記中継サーバに送信する信号の確認応答番号に前記差分を加算する第２加算手段とを備える構成を採っても良い。
【００２０】
また、本発明に係るシーケンス番号変換方法は、ネットワーク上でＴＣＰセッションの分断、及び中継を行うＴＣＰ中継装置のシーケンス番号変換方法であって、中継サーバが出力した信号からシーケンス番号を抽出するステップと、前記抽出されたシーケンス番号を所定の方式で変換し、変換したシーケンス番号を外部出力するステップと、前記外部出力されたシーケンス番号に対する応答信号を受信したときは、応答信号から前記シーケンス番号の信号を正常に受信したことを示す確認応答番号を抽出するステップと、前記応答信号から抽出された確認応答番号を所定の方式で逆変換し、逆変換された確認応答番号を前記中継サーバに出力するステップとを含む構成を採る。
【００２１】
また、クライアントがＴＣＰセッション確立要求として送信した同期信号に対して中継サーバが出力する同期確認信号を格納するステップと、前記中継サーバが前記クライアントのＴＣＰセッション確立要求先であるターゲットサーバに送信した同期信号に対して前記ターゲットサーバが送信する同期確認信号を受信し、この同期確認信号から前記ターゲットサーバの初期シーケンス番号を読み取るステップと、前記格納されている同期確認信号に含まれる前記中継サーバの初期シーケンス番号を前記読み取られた前記ターゲットサーバの初期シーケンス番号に書換えるステップと、前記中継サーバの初期シーケンス番号と、前記ターゲットサーバの初期シーケンス番号との差分を算出するステップと、前記クライアントから前記書換えられたシーケンス番号を含む信号に対する確認信号を受信した場合、受信信号中の確認応答番号に前記差分を加算するステップと、前記中継サーバが前記クライアントに送信する信号のシーケンス番号から前記差分を減算するステップと、前記クライアントが前記中継サーバに送信する信号の確認応答番号に前記差分を加算するステップとを含む構成を採っても良い。
【００２２】
また、本発明に係るプログラムは、クライアントがＴＣＰセッション確立要求として送信した同期信号に対して中継サーバが出力する同期確認信号を格納する処理と、前記中継サーバが前記クライアントのＴＣＰセッション確立要求先であるターゲットサーバに送信した同期信号に対して前記ターゲットサーバが送信する同期確認信号を受信し、この同期確認信号から前記ターゲットサーバの初期シーケンス番号を読み取る処理と、前記格納されている同期確認信号に含まれる前記中継サーバの初期シーケンス番号を前記読み取られた前記ターゲットサーバの初期シーケンス番号に書換える処理と、前記中継サーバの初期シーケンス番号と、前記ターゲットサーバの初期シーケンス番号との差分を算出する処理と、前記クライアントから前記書換えられたシーケンス番号を含む信号に対する確認信号を受信した場合、受信信号中の確認応答番号に前記差分を加算する処理と、前記中継サーバが前記クライアントに送信する信号のシーケンス番号から前記差分を減算する処理と、前記クライアントが前記中継サーバに送信する信号の確認応答番号に前記差分を加算する処理とを実行させる構成を採る。
【００２３】
また、本発明に係る記録媒体は、請求項５記載のプログラムが記録され、コンピュータにより読み取り可能な構成を採る。
【００２４】
本発明によれば、第三者がＴＣＰセッションハイジャックを行おうとしても、クライアントが本来ＴＣＰセッション設立を求めていたターゲットサーバのＩＳＮ値を予測しなければならなくなり、透過型のＴＣＰ中継装置を導入したことによるＴＣＰセッションハイジャックの危険性を完全に回避することが可能となる。
【００２５】
【発明の実施の形態】
図１は、本発明の実施の形態に係る透過型ＴＣＰ中継装置の構成を示すブロック図である。この透過型ＴＣＰ中継装置１は、ＩＰアドレスの変換機能を有しており、アドレス変換部２と中継サーバ３との間にシーケンス番号変換部４が設けられている。シーケンス番号変換部４は、ターゲットサーバ５側の信号線に接続されているＩＳＮ読み取り部６と、クライアント７側の信号線に接続されている変換実行部８とから構成されている。
【００２６】
シーケンス番号変換部４の動作の概念は、以下の通りである。すなわち、シーケンス番号変換部４は、３ウェイハンドシェイクを中継する際、外部からの同期信号に対して、中継サーバ３が発行する同期確認信号に含まれるＩＳＮ値（ＩＳＮ０）を、これとは独立の外部向けのシーケンス番号（ｆ（ＩＳＮ０））に変換し、これをＴＣＰセッション開設要求元に返送する。要求元クライアントが異なる、又は要求元クライアントが同一でもＴＣＰセッション開設要求先サーバが異なる同期信号を受信した場合には、中継サーバ３自身は、同様に中継サーバ３のＩＳＮ値（ＩＳＮ１）を含む同期確認信号を送信するが、シーケンス番号変換部４は、クライアント又はターゲットサーバが異なるため、これとは全く別の変換関数を適用して、新しいシーケンス番号（ｇ（ＩＳＮ１））に変換し、これをＴＣＰセッション開設要求元に返送する。このように、ＩＳＮ０とＩＳＮ１との間には式▲１▼により関連付けられているものの、異なる変換関数が適用されるので、ｆ（ＩＳＮ０）からｇ（ＩＳＮ１）を求めることを極めて困難とすることが可能となる。
【００２７】
また、ＴＣＰセッション開設要求元クライアントが、上記の同期確認信号に対する確認信号を送ってきた場合、この確認信号中に含まれる確認応答番号を逆変換した後、中継サーバ３に送信する。以降、中継装置が中継する当該セッション全てにおいて、シーケンス番号変換部４は、中継サーバ３が上記要求元クライアントに送信する信号に対するシーケンス番号の変換を行い、上記要求元クライアントから中継サーバ３に入ってくる信号の確認応答番号に対して、逆変換を行う。
【００２８】
また、シーケンス番号変換部４において、シーケンス番号の変換方式として、中継サーバ３が、クライアント７に返す確認応答信号中のＩＳＮ値に、中継サーバ３のＩＳＮ値ではなく、クライアント７が本来ＴＣＰセッション設定を求めていたターゲットサーバ５のＩＳＮ値を利用することも可能である。すなわち、クライアント７からの同期信号を中継するとき、中継サーバ３は、この同期信号に対する同期確認信号を返送するが、変換実行部８は、この中継サーバ３の同期確認信号を一時保留する。その間、中継サーバ３は、上記同期信号をクライアント７が本来セッション確立を求めていたターゲットサーバ５に中継するために当該ターゲットサーバ５に対して、新たな同期信号を送信する。
【００２９】
ＩＳＮ読み取り部６は、これに対してターゲットサーバ５が送信した同期確認信号を傍受し、ターゲットサーバ５のＩＳＮ値を読み取って、変換実行部８にこれを通知する。
【００３０】
変換実行部８は、この通知を受信した後、上記保留中の同期確認信号のＩＳＮ値（中継サーバ３のＩＳＮ値）を、ターゲットサーバ５のＩＳＮ値で書き換え、クライアント７に返送する。変換実行部８は、この返送と同時に、中継サーバ３のＩＳＮ値と、ターゲットサーバ５のＩＳＮ値の差分を計算し、当該ＴＣＰセッションにおけるＩＳＮオフセット値として、ＩＳＮオフセット保存部９に通知する。ＩＳＮオフセット保存部９は、当該ＴＣＰセッションが終了するまで、このＩＳＮオフセット値を保存する。
【００３１】
これ以降のデータ送受に関しては、変換実行部８は、クライアント７から中継サーバ３に送信される信号を受信した場合には、当該信号のＩＰアドレス、ポート番号、及びシーケンス番号をキーとしてＩＳＮオフセット保存部９を検索し、該当するＩＳＮオフセット値を取得し、受信した信号の確認応答番号にこのＩＳＮオフセット値を加算するという変換を行った後に、中継サーバ３に転送する。
【００３２】
変換実行部８は、中継サーバ３からクライアント７に送信される信号を受け取った場合には、当該信号のＩＰアドレス、ポート番号、及びシーケンス番号をキーとしてＩＳＮオフセット保存部９を検索し、該当するＩＳＮオフセット値を取得し、受信したシーケンス番号から、このＩＳＮオフセット値を減算するという変換を行った後に、クライアント７に送信する。また、加減算の結果、アンダーフロー、又はオーバーフローが生じた場合には、２32の加減算により、これを自動的に補正する。
【００３３】
これにより、ＩＳＮ値以降も、中継サーバ３側はシーケンス番号の連続性を損なうことなく送受信データを管理することが可能となる。
【００３４】
また、変換実行部８は、ＴＣＰセッション開設後のデータ転送に関しては、信号の保留による待ち合わせは行わず、シーケンス番号の連続性を保証するためのＩＳＮオフセット値の検索と加減算による変換、逆変換のみを行う。この時、クライアント７と中継サーバ３、中継サーバ３とターゲットサーバ５間の２つのＴＣＰセッション間のデータ転送制御は、中継サーバ３が行う。
【００３５】
これにより、待ち合わせによるスループット低下は、ＴＣＰセッション確立時のみとすることができ、その他の場合では良好はスループットを維持することが可能となる。
【００３６】
なお、変換実行部８は、上記ＩＳＮオフセット値の加減算によりＴＣＰヘッダのチェックサムに不整合が生じるため、チェックサムを再計算して自動的に補正する。
【００３７】
次に、シーケンス番号変換部４の動作を、図２を参照して具体的に説明する。図２は、本発明の実施の形態に係る透過型ＴＣＰ中継装置において、ＴＣＰ確立の３ウェイハンドシェイクにおけるシーケンス番号変換部４の動作を示す図である。図２中、「ＳＮ」とは、シーケンス番号を意味し、「ＩＳＮ」とは、Ｉｎｉｔｉａｌ  ＳＮを意味する。なお、ここではアドレス変換部２の動作を省略して説明する。
【００３８】
（１）クライアントＡは、ターゲットサーバＢに対して、同期信号１（ＳＹＳ（ＩＳＮａ））を送信する。
【００３９】
（２）シーケンス番号変換部４は、同期信号１を受信し、そのまま中継サーバに転送する。
【００４０】
（３）中継サーバは、クライアント側インタフェースＣで上記同期信号１を受領し、同期確認信号２（ＳＹＮ（ＩＳＮｃ）ＡＣＫ（ＩＳＮａ＋１））をクライアントＡに返送する。
【００４１】
（４）変換実行部は、同期確認信号２を受信するが、クライアントには転送せずに、内部に保留する。
【００４２】
（５）中継サーバは、ＴＣＰコネクションを中継するため、ターゲットサーバ側のインタフェースＤからクライアントＡのターゲットサーバであるターゲットサーバＢとの間にＴＣＰコネクションを設定するための同期信号３（ＳＹＮ（ＩＳＮｄ））を送信する。
【００４３】
（６）ＩＳＮ読み取り部は、上記同期信号３を受信するが、そのままターゲットサーバＢに転送する。
【００４４】
（７）ターゲットサーバＢは、同期信号３に対する同期確認信号４（ＳＹＮ（ＩＳＮｂ）、ＡＣＫ（ＩＳＮｄ＋１））をクライアントＡに送信する。
【００４５】
（８）ＩＳＮ読み取り部は、同期確認信号４を受信し、ターゲットサーバＢのＩＳＮ値＝ＩＳＮｂの値を読み取り、変換実行部８に通知し、変更は行わずにそのまま中継サーバに転送する。
【００４６】
（９）変換実行部は、保留していた同期信号２（ＳＹＮ（ＩＳＮｃ）、ＡＣＫ（ＩＳＮａ＋１））のＩＳＮｃの値を、ＩＳＮ読み取り部から受け取ったターゲットサーバＢのＩＳＮ値＝ＩＳＮｂで書き換えた同期確認信号５（ＳＹＮ（ＩＳＮｂ）、ＡＣＫ（ＩＳＮａ＋１））をクライアントＡに送信する。
【００４７】
（１０）変換実行部は、同期確認信号２のＩＳＮ値＝ＩＳＮｃと同期確認信号４のＩＳＮ値＝ＩＳＮｂの差分（ＩＳＮオフセット＝ＩＳＮｃ−ＩＳＮｂ）を計算し、当該ＴＣＰセッションのＩＳＮオフセットとしてＩＳＮオフセット保存部９に保存する。
【００４８】
（１１）ＩＳＮオフセット保存部９は、当該ＴＣＰセッションのセッション情報（送受ＩＰアドレス、送受ポート番号、及び（現在の）シーケンス番号）と共に、ＩＳＮオフセット値を保存、管理する。
【００４９】
（１２）クライアントＡは、上記同期確認信号５に対する確認信号６（ＡＣＫ（ＩＳＮｂ＋１））をターゲットサーバＢに対して送信する。
【００５０】
（１３）シーケンス番号変換部４は、確認信号６を受信し、ＩＳＮオフセット保存部９を検索してＩＳＮオフセットを取得し、確認信号の確認応答シーケンス番号＝ＩＳＮｂの値にＩＳＮオフセット値を加算し、（ＩＳＮｂ＋１）＋（ＩＳＮｃ）−（ＩＳＮｂ）＝（ＩＳＮｃ＋１）の値を確認応答シーケンス番号とした確認信号７（ＡＣＫ（ＩＳＮｃ＋１））を中継サーバに送信する。
【００５１】
（１４）確認信号７を中継サーバが受領した段階で、クライアントＡ−中継サーバ間のＴＣＰコネクションの設定が完了する。
【００５２】
（１５）上記同期確認応答信号４を、中継サーバが受領し確認信号８（ＡＣＫ（ＩＳＮｂ＋１））を送信する。ＩＳＮ読み取り部は、確認信号８を受信し、そのままターゲットサーバＢに転送する。これをターゲットサーバＢが受信した段階で中継サーバ−ターゲットサーバＢ間のＴＣＰセッションが確立する。
【００５３】
次に図３を参照してターゲットサーバＢからクライアントＡ間のデータ転送時の動作を説明する。図３は、本実施の形態に係る透過型ＴＣＰ中継装置におけるデータ転送シーケンス図である。なお、ここでは、ＴＣＰ層の変更のみに着目しているため、中継装置の中継制御部、及びアドレス変換部の動作は省略している。また、図３において、ＰＵＳＨは、ＴＣＰヘッダ中のＰＵＳＨビットがオンとなっていることを表す。
【００５４】
（１）ターゲットサーバＢからクライアントＡに向けて１０バイトのデータ送信信号１（ＰＵＳＨ（ＳＮ＝１００））が送信される。
【００５５】
（２）中継装置は上記信号１を受信するが、シーケンス番号変換部はこのパケットに対しては何も行わず、中継サーバに転送する。
【００５６】
（３）中継サーバは、上記信号１を受信する。ＡＣＫ信号２（ＡＣＫ（１１０））をターゲットサーバＢに対して送信する。
【００５７】
（４）中継サーバは、上記受信信号１を、信号３（ＰＵＳＨ（ＳＮ＝１００１００））としてクライアントＡに転送する。この信号のシーケンス番号は、中継サーバ自身のシーケンス番号である。
【００５８】
（５）シーケンス番号変換部は、上記信号３のＳＮ値から、ＩＳＮオフセット値（図３では、１０００００）を減じた信号４（ＰＵＳＨ（ＳＮ＝１００））をクライアントＡに対して送信する。
【００５９】
（６）クライアントＡは、上記信号４を正常に受信し、ＡＣＫ信号５（ＡＣＫ（１１０））をターゲットサーバＢに対して送信する。
【００６０】
（７）中継装置が、上記確認信号５を受信、シーケンス番号変換部は、信号５の確認応答番号にＩＳＮオフセット値を加えたＡＣＫ信号６（１００１１０）を中継サーバに送信する。
【００６１】
（８）中継サーバは、上記信号６を受信し、当該確認応答番号により受信確認が完了したバッファの領域を開放する。
【００６２】
本実施の形態に係る透過型ＴＣＰ中継装置は、以上のような手順でデータ転送を行う。セッション開設後、データ転送においては、セッション開設時の信号（４）のように、ターゲットサーバＢのシーケンス番号（信号１のシーケンス番号）と、クライアントＡが参照する（信号４、５のシーケンス番号）の同期をとる必要はなく、シーケンス番号変換部は、単純に、クライアント側に送信するデータのシーケンス番号は、
ＳＮクライアント行キ＝ＳＮ中継サーバ発−ＩＳＮオフセット
クライアントからの確認応答番号に関しては、
ＳＮ中継サーバ行キ＝ＳＮクライアント発＋ＩＳＮオフセット
の変換を行うのみで足りる。
【００６３】
なお、以上の説明では、中継サーバのＩＳＮ値を、ターゲットサーバのＩＳＮ値に置き換えることによって、中継サーバのＩＳＮ値の透過性を実現した。しかしながら、第三者が式▲１▼により予測を行うことが困難な数値に１対１変換することが可能である場合は、必ずしもターゲットサーバのＩＳＮに置き換える必要はない。例えば、シーケンス番号変換部に擬似乱数発生機能を追加する方法が考えられる。クライアントからのＳＹＮ要求に対して、中継サーバのＩＳＮ値を直接返すのではなく、疑似乱数値を返す。これ以降は、疑似乱数値と、中継サーバのＩＳＮ値の差分をＩＳＮオフセット値として内部管理しても、上記の構成と同様の効果を得ることが可能である。
【００６４】
また、以上の説明では、クライアント側に対してのみ、シーケンス番号変換機能を付加しているが、ターゲットサーバ側ネットワークからのＴＣＰセッションハイジャックが危惧される状況においては、上記の説明と全く同一の方法でターゲットサーバ側インタフェースに対してもシーケンス番号変換機能を付加することが可能である。
【００６５】
【発明の効果】
以上説明したように、本発明に係るＴＣＰ中継装置は、ＴＣＰ中継を行う中継サーバを有し、ネットワーク上でＴＣＰセッションの分断、及び中継を行うＴＣＰ中継装置であって、受信した信号からシーケンス番号又は確認応答番号を抽出するシーケンス番号抽出手段と、前記抽出されたシーケンス番号を所定の方式で変換し、又は前記抽出された確認応答番号を所定の方式で逆変換するシーケンス番号変換手段とを備え、前記シーケンス番号抽出手段は、前記中継サーバが出力した信号からシーケンス番号を抽出し、前記シーケンス番号変換手段は、前記抽出されたシーケンス番号を所定の方式で変換し、変換したシーケンス番号を外部出力する一方、前記シーケンス番号抽出手段は、前記外部出力されたシーケンス番号に対する応答信号を受信した場合は、応答信号から前記シーケンス番号の信号を正常に受信したことを示す確認応答番号を抽出し、前記シーケンス番号変換手段は、前記応答信号から抽出された確認応答番号を所定の方式で逆変換し、逆変換された確認応答番号を前記中継サーバに出力する構成を採る。
【００６６】
本発明によれば、第三者がＴＣＰセッションハイジャックを行おうとしても、クライアントが本来ＴＣＰセッション設立を求めていたターゲットサーバのＩＳＮ値を予測しなければならなくなり、透過型のＴＣＰ中継装置を導入したことによるＴＣＰセッションハイジャックの危険性を完全に回避することが可能となる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係る透過型ＴＣＰ中継装置の構成を示すブロック図である。
【図２】本発明の実施の形態に係る透過型ＴＣＰ中継装置において、ＴＣＰ確立の３ウェイハンドシェイクにおけるシーケンス番号変換部４の動作を示す図である。
【図３】本実施の形態に係る透過型ＴＣＰ中継装置におけるデータ転送シーケンス図である。
【図４】従来のＴＣＰ中継装置の構成を示す図である。
【図５】ＴＣＰヘッダを示す図である。
【図６】ＴＣＰによるデータ転送の手順を説明する図である。
【図７】ＲＦＣ７９３によるＩＳＮ値の生成方法を示す図である。
【図８】ＩＳＮ値予測によるＴＣＰセッションハイジャック方式を説明する図である。
【符号の説明】
１…透過型ＴＣＰ中継装置、２…アドレス変換部、３…中継サーバ、４…シーケンス番号変換部、５…ターゲットサーバ、６…ＩＳＮ読み取り部、７…クライアント、８…変換実行部、９…ＩＳＮオフセット保存部。
【図１】
0003771453.tif 000002
【図２】
0003771453.tif 000003
【図３】
0003771453.tif 000004
【図４】
0003771453.tif 000005
【図５】
0003771453.tif 000006
【図６】
0003771453.tif 000007
【図７】
0003771453.tif 000008
【図８】
0003771453.tif 000009