JP3771453B2 - Tcp中継装置及びシーケンス番号変換方法 - Google Patents
Tcp中継装置及びシーケンス番号変換方法 Download PDFInfo
- Publication number
- JP3771453B2 JP3771453B2 JP2001043757A JP2001043757A JP3771453B2 JP 3771453 B2 JP3771453 B2 JP 3771453B2 JP 2001043757 A JP2001043757 A JP 2001043757A JP 2001043757 A JP2001043757 A JP 2001043757A JP 3771453 B2 JP3771453 B2 JP 3771453B2
- Authority
- JP
- Japan
- Prior art keywords
- sequence number
- signal
- client
- relay server
- server
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Description
【発明の属する技術分野】
本発明は、例えば、クライアントとターゲットサーバとの間で行われるTCP/IP(“Transmission Control Protocol”,rfc793,“Internet Protocol”,rfc791)を利用したデータ通信を中継するTCP中継装置及びシーケンス番号変換方法に関する。
【0002】
【従来の技術】
従来から、インターネット等におけるクライアント−ターゲットサーバ間のデータ通信プロトコルとして、TCP/IPが広く利用されている。IPは、IPアドレスを利用したネットワーク内及びネットワーク間のパケットの送受信環境を提供するが、パケットが目的のコンピュータに正常に到達することは保証しない。TCPは、IPパケットの送受を制御するプロトコルであり、スライディングウィンドウバッファ(以下、単に「バッファ」という。)と、シーケンス番号とを利用して、信頼性の高いデータ通信環境を提供している。図5は、TCPヘッダを示す図である。図5に示すように、シーケンス番号と、正常受信したデータの次のシーケンス番号である確認応答番号は、それぞれTCPヘッダの情報である。
【0003】
図6は、TCPによるデータ転送の手順を説明する図である。参考文献として、W.Richard Stevent著、井上、橘訳「詳解TCP/IP」ソフトバンク」を挙げておく。図6において、左右の番号はセグメント(TCPのデータ転送単位)の番号である。このセグメントを、以下、単に「信号」という。送信側コンピュータは、送信データを識別するシーケンス番号を付与して、データを送信する。受信側のコンピュータは、正常にデータを受信した場合、図5に示すACKビットをオンにし、正常に受信したデータのシーケンス番号+1の値を確認応答番号フィールドに設定し(受信側コンピュータが送信側コンピュータに送るデータを識別するためのシーケンス番号と区別するため、以下、前記正常に受信したデータの(送信側コンピュータの)シーケンス番号+1の値を確認応答番号という。)、送信側コンピュータに送信する。これを、ACK信号という。送信側のコンピュータは、データ受信側コンピュータから当該データを正常に受信したと確認できるACK信号を受信するまでは、送信済のデータをバッファ内に保持している。図6では、受信側コンピュータは、43でシーケンス番号6401を先頭とする256バイト長データの信号を正常に受信できたので、次に58でシーケンス番号6657のデータを要求している。
【0004】
しかしながら、シーケンス番号6657のデータ(45)が消失したため、受信側コンピュータは、シーケンス番号6657を要求するACK信号を再送している(60、61、62、64)。送信側は、既に送信済のシーケンス番号を要求するACK信号を規定回数受け取ると、当該信号がネットワーク上で紛失したものとして、これを再送する(63)。
【0005】
このシーケンス番号の初期値(初期シーケンス番号:以下、「ISN値」という。)は、0から始まるのではなく、通信を行うコンピュータがそれぞれ個別に決定し、TCPのセッション(TCPコネクションとも呼ばれる)確立時に、後述する3ウェイハンドシェイクと呼ばれる手順で相互に通知する。すなわち、
(1)クライアントは、SYNビットをオン、シーケンス番号フィールドに送信時点でのクライアントのISN値(ISN1)を設定し、ターゲットサーバに送信する(以下、この信号を「同期信号」といい、SYN(ISN1)と表記する)。
(2)ターゲットサーバは、同期信号を受信、及び受領すると、クライアントの同期信号に対する受領を表すため、ACKビットをオンとし、クライアントのISN値(ISN1)+1の値を確認応答番号フィールドにセットする。同時に、ターゲットサーバ側のISN値をクライアントに通知するため、SYNビットもオンとし、ターゲットサーバ側の送信時のISN値(ISN2)を、シーケンス番号フィールドにセットし、クライアント側に送信する(以下、この信号を「同期確認信号」といい、SYN(ISN2)ACK(ISN1+1)と表記する)。
(3)クライアントは、同期確認信号を受け取ると、正常に受信した旨の確認のため、ACKビットをオンとし、確認応答番号フィールドにISN2+1をセットした信号をターゲットサーバ側に送信する(以下、この信号を「確認信号」といい、ACK(ISN2+1)と表記する)。確認信号を送信した時点で、クライアント側のTCPセッションが確立状態となり、確認信号を受信した時点で、ターゲットサーバ側のTCPセッションが確立状態となる。
【0006】
上記のように、TCP/IPによるデータ送受においては、データが正常に送受されている場合でも、受信側から該当シーケンス番号のデータに関するACK信号を受信するまで、送信側では、再送に備えて、送信済データをバッファ内に保持する必要がある。このバッファ容量は、通常8KB程度であるので、伝送遅延の大きいネットワークでは、データ転送速度が頭打ちになるという問題が生じる。
【0007】
従来、このようなネットワーク上の伝送遅延による性能低下を回避するため、ネットワーク上でTCPセッションを分断及び中継する装置(TCP中継装置)が提案されている。
【0008】
図4は、従来のTCP中継装置の構成を示す図である。このTCP中継装置は、アドレス変換部40、キャッシュサーバ41(以下、「中継サーバ」という。)、中継制御回路42等から構成され、クライアント−ターゲットサーバ間のTCPセッションを中継サーバが分断し、中継転送する。すなわち、クライアント−ターゲットサーバ間では、
クライアント−(TCPセッション1)−中継サーバ−(TCPセッション2)−ターゲットサーバ
という2つのTCPセッションが確立され、中継サーバによって、TCPセッション1、2間の中継転送制御が行われる。また、このTCP中継装置では、アドレス変換部によるIPアドレス変換機能によって、TCPは終端しても、IPに対しては透過であるという特徴を有する。すなわち、クライアントのIPアドレスをA、ターゲットサーバのIPアドレスをBとすると、クライアント及びターゲットサーバは、それぞれAからB、BからAというパケットを送受すればよく、TCP中継装置の存在を直接意識する必要はない。TCPに関しては、クライアント及びターゲットサーバは、中継サーバとセッションを設定しているが、通常、アプリケーションプログラムがTCP層のパラメータを直接認識することはないので、クライアント及びターゲットサーバのアプリケーションプログラムはそれぞれターゲットサーバ、クライアントと直接TCP/IPセッションを設定しているものと認識する。このような外部に対して透過性を有するTCP中継装置を透過型TCP中継装置と呼ぶこともある。
【0009】
【発明が解決しようとする課題】
上記のようなTCP中継装置は、透過性を有すること、及び多くのTCPセッションを中継サーバ1箇所に集中させるので、次のような問題が生ずる。すなわち、上記のISNの値は、通信を行うコンピュータ固有の値であるが、RFC793によれば、各々のコンピュータ内においては、この値はコンピュータ内部タイマと連動している。図7は、RFC793によるISN値の生成方法を示す図である。図7に示すように、ISN値は、4μs刻みであることが推奨されているが、実際には、ハードウェアの制約等から1ms刻みである場合もある。
【0010】
あるクライアントが、最初にTCPセッションを設定して、その時点でのターゲットサーバ側のISN(ISN0とする)値を取得すると、Δt秒後に任意のユーザがTCPセッションを設定した場合、ターゲットサーバ側が割り当てるISN(ISN1とする)は、次の▲1▼式により容易に予測することが可能となる。
【0011】
ISN1=Δt(秒)×N+ISN0 ・・・▲1▼
ただし、Nは単位時間に更新されるISN値の数、4μs毎に更新される場合は、2.5×105となる。
【0012】
この性質を利用すれば、上記TCP中継装置を利用しているすべてのユーザに対して、TCPセッションハイジャックと呼ばれる攻撃を容易に行うことができる。TCPセッションハイジャックに関しては、Morris, R.T.1985. A Weakness in the 4.2BSD UNIX TCP/IP Software. Computing Science Technical Report No.117, AT&T Bell Laboratories, Murray Hill, New JERSEY.が詳しい。以下、図8を参照してこれを説明する。
【0013】
図8は、ISN値予測によるTCPセッションハイジャック方式を説明する図である。図8に示すように、ターゲットサーバBに利用権があるクライアントAがいるとする。攻撃者Xは、ターゲットサーバBに対して同期信号SYN(ISNx)を送信する。このとき、IPヘッダ上の送信元IPアドレスは、X自身のIPアドレス(IPx)ではなく、当該ターゲットサーバに正規の利用権があるクライアントAのIPアドレス(IPA)に設定する。
【0014】
ターゲットサーバBは、この要求を受理し、同期確認信号SYN(ISNB)ACK(ISNx+1)をクライアントAに対して送信する。この信号は、クライアントAに対して送られるため、攻撃者XはISNBを直接取得することができない。しかしながら、式▲1▼を利用することにより、攻撃者Xは、ISNBを推測することに成功し、確認信号ACK(ISNB+1)をターゲットサーバBに送信したとする。このときも、送信元のIPアドレスは、IPAに設定する。この信号をターゲットサーバBが受理した時点で、攻撃者XからターゲットサーバBに対するXからB片方向のTCPセッションが確立され、攻撃者Xは、正規ユーザAになりすましてターゲットサーバBに対して任意のデータを送信することが可能となる。
【0015】
式▲1▼による推測を行うためには、攻撃者X自体がターゲットサーバBに対して正規TCPセッションを設定可能な権限があり、ISN0を取得可能であることが必要となる。従って、一般的な利用環境においては、利用権の管理を厳密にすること等によって、一定の防御をしたり被害範囲を限定したりすることが可能であり、また、攻撃者の特定も比較的容易である。
【0016】
しかしながら、上記の透過型のTCP中継装置が存在する環境においては、クライアント側では、ターゲットとするサーバには関わりなく、自動的に中継サーバとTCPセッションを設定している。すなわち、どのターゲットサーバがターゲットであろうとも、透過型のTCP中継装置を利用しているクライアントは、すべて中継サーバのISN決定プログラムを共用しており、式▲1▼を利用して、他のクライアントのISN値を予測し、TCPセッションハイジャックを行うことができるという問題がある。
【0017】
本発明は、このような事情に鑑みてなされたものであり、透過型のTCP中継を行いながら、第三者のISN値の予測を、全く別個のターゲットサーバのISN値を予測するのと同程度に困難とすることができるTCP中継装置及びシーケンス番号変換方法を提供することを目的とする。
【0018】
【課題を解決するための手段】
上記の目的を達成するため、本発明に係るTCP中継装置は、TCP中継を行う中継サーバを有し、ネットワーク上でTCPセッションの分断、及び中継を行うTCP中継装置であって、受信した信号からシーケンス番号又は確認応答番号を抽出するシーケンス番号抽出手段と、前記抽出されたシーケンス番号を所定の方式で変換し、又は前記抽出された確認応答番号を所定の方式で逆変換するシーケンス番号変換手段とを備え、前記シーケンス番号抽出手段は、前記中継サーバが出力した信号からシーケンス番号を抽出し、前記シーケンス番号変換手段は、前記抽出されたシーケンス番号を所定の方式で変換し、変換したシーケンス番号を外部出力する一方、前記シーケンス番号抽出手段は、前記外部出力されたシーケンス番号に対する応答信号を受信した場合は、応答信号から前記シーケンス番号の信号を正常に受信したことを示す確認応答番号を抽出し、前記シーケンス番号変換手段は、前記応答信号から抽出された確認応答番号を所定の方式で逆変換し、逆変換された確認応答番号を前記中継サーバに出力する構成を採る。
【0019】
また、前記シーケンス番号変換手段は、クライアントがTCPセッション確立要求として送信した同期信号に対して前記中継サーバが出力する同期確認信号を格納する格納手段と、前記中継サーバが前記クライアントのTCPセッション確立要求先であるターゲットサーバに送信した同期信号に対して前記ターゲットサーバが送信する同期確認信号を受信し、この同期確認信号から前記ターゲットサーバの初期シーケンス番号を読み取るISN読取手段と、前記格納手段に格納されている同期確認信号に含まれる前記中継サーバの初期シーケンス番号を前記ISN読取手段が読み取った前記ターゲットサーバの初期シーケンス番号に書換える書換え手段と、前記中継サーバの初期シーケンス番号と、前記ターゲットサーバの初期シーケンス番号との差分を算出する差分算出手段と、前記クライアントから前記書換えられたシーケンス番号を含む信号に対する確認信号を受信した場合、受信信号中の確認応答番号に前記差分を加算する第1加算手段と、前記中継サーバが前記クライアントに送信する信号のシーケンス番号から前記差分を減算する減算手段と、前記クライアントが前記中継サーバに送信する信号の確認応答番号に前記差分を加算する第2加算手段とを備える構成を採っても良い。
【0020】
また、本発明に係るシーケンス番号変換方法は、ネットワーク上でTCPセッションの分断、及び中継を行うTCP中継装置のシーケンス番号変換方法であって、中継サーバが出力した信号からシーケンス番号を抽出するステップと、前記抽出されたシーケンス番号を所定の方式で変換し、変換したシーケンス番号を外部出力するステップと、前記外部出力されたシーケンス番号に対する応答信号を受信したときは、応答信号から前記シーケンス番号の信号を正常に受信したことを示す確認応答番号を抽出するステップと、前記応答信号から抽出された確認応答番号を所定の方式で逆変換し、逆変換された確認応答番号を前記中継サーバに出力するステップとを含む構成を採る。
【0021】
また、クライアントがTCPセッション確立要求として送信した同期信号に対して中継サーバが出力する同期確認信号を格納するステップと、前記中継サーバが前記クライアントのTCPセッション確立要求先であるターゲットサーバに送信した同期信号に対して前記ターゲットサーバが送信する同期確認信号を受信し、この同期確認信号から前記ターゲットサーバの初期シーケンス番号を読み取るステップと、前記格納されている同期確認信号に含まれる前記中継サーバの初期シーケンス番号を前記読み取られた前記ターゲットサーバの初期シーケンス番号に書換えるステップと、前記中継サーバの初期シーケンス番号と、前記ターゲットサーバの初期シーケンス番号との差分を算出するステップと、前記クライアントから前記書換えられたシーケンス番号を含む信号に対する確認信号を受信した場合、受信信号中の確認応答番号に前記差分を加算するステップと、前記中継サーバが前記クライアントに送信する信号のシーケンス番号から前記差分を減算するステップと、前記クライアントが前記中継サーバに送信する信号の確認応答番号に前記差分を加算するステップとを含む構成を採っても良い。
【0022】
また、本発明に係るプログラムは、クライアントがTCPセッション確立要求として送信した同期信号に対して中継サーバが出力する同期確認信号を格納する処理と、前記中継サーバが前記クライアントのTCPセッション確立要求先であるターゲットサーバに送信した同期信号に対して前記ターゲットサーバが送信する同期確認信号を受信し、この同期確認信号から前記ターゲットサーバの初期シーケンス番号を読み取る処理と、前記格納されている同期確認信号に含まれる前記中継サーバの初期シーケンス番号を前記読み取られた前記ターゲットサーバの初期シーケンス番号に書換える処理と、前記中継サーバの初期シーケンス番号と、前記ターゲットサーバの初期シーケンス番号との差分を算出する処理と、前記クライアントから前記書換えられたシーケンス番号を含む信号に対する確認信号を受信した場合、受信信号中の確認応答番号に前記差分を加算する処理と、前記中継サーバが前記クライアントに送信する信号のシーケンス番号から前記差分を減算する処理と、前記クライアントが前記中継サーバに送信する信号の確認応答番号に前記差分を加算する処理とを実行させる構成を採る。
【0023】
また、本発明に係る記録媒体は、請求項5記載のプログラムが記録され、コンピュータにより読み取り可能な構成を採る。
【0024】
本発明によれば、第三者がTCPセッションハイジャックを行おうとしても、クライアントが本来TCPセッション設立を求めていたターゲットサーバのISN値を予測しなければならなくなり、透過型のTCP中継装置を導入したことによるTCPセッションハイジャックの危険性を完全に回避することが可能となる。
【0025】
【発明の実施の形態】
図1は、本発明の実施の形態に係る透過型TCP中継装置の構成を示すブロック図である。この透過型TCP中継装置1は、IPアドレスの変換機能を有しており、アドレス変換部2と中継サーバ3との間にシーケンス番号変換部4が設けられている。シーケンス番号変換部4は、ターゲットサーバ5側の信号線に接続されているISN読み取り部6と、クライアント7側の信号線に接続されている変換実行部8とから構成されている。
【0026】
シーケンス番号変換部4の動作の概念は、以下の通りである。すなわち、シーケンス番号変換部4は、3ウェイハンドシェイクを中継する際、外部からの同期信号に対して、中継サーバ3が発行する同期確認信号に含まれるISN値(ISN0)を、これとは独立の外部向けのシーケンス番号(f(ISN0))に変換し、これをTCPセッション開設要求元に返送する。要求元クライアントが異なる、又は要求元クライアントが同一でもTCPセッション開設要求先サーバが異なる同期信号を受信した場合には、中継サーバ3自身は、同様に中継サーバ3のISN値(ISN1)を含む同期確認信号を送信するが、シーケンス番号変換部4は、クライアント又はターゲットサーバが異なるため、これとは全く別の変換関数を適用して、新しいシーケンス番号(g(ISN1))に変換し、これをTCPセッション開設要求元に返送する。このように、ISN0とISN1との間には式▲1▼により関連付けられているものの、異なる変換関数が適用されるので、f(ISN0)からg(ISN1)を求めることを極めて困難とすることが可能となる。
【0027】
また、TCPセッション開設要求元クライアントが、上記の同期確認信号に対する確認信号を送ってきた場合、この確認信号中に含まれる確認応答番号を逆変換した後、中継サーバ3に送信する。以降、中継装置が中継する当該セッション全てにおいて、シーケンス番号変換部4は、中継サーバ3が上記要求元クライアントに送信する信号に対するシーケンス番号の変換を行い、上記要求元クライアントから中継サーバ3に入ってくる信号の確認応答番号に対して、逆変換を行う。
【0028】
また、シーケンス番号変換部4において、シーケンス番号の変換方式として、中継サーバ3が、クライアント7に返す確認応答信号中のISN値に、中継サーバ3のISN値ではなく、クライアント7が本来TCPセッション設定を求めていたターゲットサーバ5のISN値を利用することも可能である。すなわち、クライアント7からの同期信号を中継するとき、中継サーバ3は、この同期信号に対する同期確認信号を返送するが、変換実行部8は、この中継サーバ3の同期確認信号を一時保留する。その間、中継サーバ3は、上記同期信号をクライアント7が本来セッション確立を求めていたターゲットサーバ5に中継するために当該ターゲットサーバ5に対して、新たな同期信号を送信する。
【0029】
ISN読み取り部6は、これに対してターゲットサーバ5が送信した同期確認信号を傍受し、ターゲットサーバ5のISN値を読み取って、変換実行部8にこれを通知する。
【0030】
変換実行部8は、この通知を受信した後、上記保留中の同期確認信号のISN値(中継サーバ3のISN値)を、ターゲットサーバ5のISN値で書き換え、クライアント7に返送する。変換実行部8は、この返送と同時に、中継サーバ3のISN値と、ターゲットサーバ5のISN値の差分を計算し、当該TCPセッションにおけるISNオフセット値として、ISNオフセット保存部9に通知する。ISNオフセット保存部9は、当該TCPセッションが終了するまで、このISNオフセット値を保存する。
【0031】
これ以降のデータ送受に関しては、変換実行部8は、クライアント7から中継サーバ3に送信される信号を受信した場合には、当該信号のIPアドレス、ポート番号、及びシーケンス番号をキーとしてISNオフセット保存部9を検索し、該当するISNオフセット値を取得し、受信した信号の確認応答番号にこのISNオフセット値を加算するという変換を行った後に、中継サーバ3に転送する。
【0032】
変換実行部8は、中継サーバ3からクライアント7に送信される信号を受け取った場合には、当該信号のIPアドレス、ポート番号、及びシーケンス番号をキーとしてISNオフセット保存部9を検索し、該当するISNオフセット値を取得し、受信したシーケンス番号から、このISNオフセット値を減算するという変換を行った後に、クライアント7に送信する。また、加減算の結果、アンダーフロー、又はオーバーフローが生じた場合には、232の加減算により、これを自動的に補正する。
【0033】
これにより、ISN値以降も、中継サーバ3側はシーケンス番号の連続性を損なうことなく送受信データを管理することが可能となる。
【0034】
また、変換実行部8は、TCPセッション開設後のデータ転送に関しては、信号の保留による待ち合わせは行わず、シーケンス番号の連続性を保証するためのISNオフセット値の検索と加減算による変換、逆変換のみを行う。この時、クライアント7と中継サーバ3、中継サーバ3とターゲットサーバ5間の2つのTCPセッション間のデータ転送制御は、中継サーバ3が行う。
【0035】
これにより、待ち合わせによるスループット低下は、TCPセッション確立時のみとすることができ、その他の場合では良好はスループットを維持することが可能となる。
【0036】
なお、変換実行部8は、上記ISNオフセット値の加減算によりTCPヘッダのチェックサムに不整合が生じるため、チェックサムを再計算して自動的に補正する。
【0037】
次に、シーケンス番号変換部4の動作を、図2を参照して具体的に説明する。図2は、本発明の実施の形態に係る透過型TCP中継装置において、TCP確立の3ウェイハンドシェイクにおけるシーケンス番号変換部4の動作を示す図である。図2中、「SN」とは、シーケンス番号を意味し、「ISN」とは、Initial SNを意味する。なお、ここではアドレス変換部2の動作を省略して説明する。
【0038】
(1)クライアントAは、ターゲットサーバBに対して、同期信号1(SYS(ISNa))を送信する。
【0039】
(2)シーケンス番号変換部4は、同期信号1を受信し、そのまま中継サーバに転送する。
【0040】
(3)中継サーバは、クライアント側インタフェースCで上記同期信号1を受領し、同期確認信号2(SYN(ISNc)ACK(ISNa+1))をクライアントAに返送する。
【0041】
(4)変換実行部は、同期確認信号2を受信するが、クライアントには転送せずに、内部に保留する。
【0042】
(5)中継サーバは、TCPコネクションを中継するため、ターゲットサーバ側のインタフェースDからクライアントAのターゲットサーバであるターゲットサーバBとの間にTCPコネクションを設定するための同期信号3(SYN(ISNd))を送信する。
【0043】
(6)ISN読み取り部は、上記同期信号3を受信するが、そのままターゲットサーバBに転送する。
【0044】
(7)ターゲットサーバBは、同期信号3に対する同期確認信号4(SYN(ISNb)、ACK(ISNd+1))をクライアントAに送信する。
【0045】
(8)ISN読み取り部は、同期確認信号4を受信し、ターゲットサーバBのISN値=ISNbの値を読み取り、変換実行部8に通知し、変更は行わずにそのまま中継サーバに転送する。
【0046】
(9)変換実行部は、保留していた同期信号2(SYN(ISNc)、ACK(ISNa+1))のISNcの値を、ISN読み取り部から受け取ったターゲットサーバBのISN値=ISNbで書き換えた同期確認信号5(SYN(ISNb)、ACK(ISNa+1))をクライアントAに送信する。
【0047】
(10)変換実行部は、同期確認信号2のISN値=ISNcと同期確認信号4のISN値=ISNbの差分(ISNオフセット=ISNc−ISNb)を計算し、当該TCPセッションのISNオフセットとしてISNオフセット保存部9に保存する。
【0048】
(11)ISNオフセット保存部9は、当該TCPセッションのセッション情報(送受IPアドレス、送受ポート番号、及び(現在の)シーケンス番号)と共に、ISNオフセット値を保存、管理する。
【0049】
(12)クライアントAは、上記同期確認信号5に対する確認信号6(ACK(ISNb+1))をターゲットサーバBに対して送信する。
【0050】
(13)シーケンス番号変換部4は、確認信号6を受信し、ISNオフセット保存部9を検索してISNオフセットを取得し、確認信号の確認応答シーケンス番号=ISNbの値にISNオフセット値を加算し、(ISNb+1)+(ISNc)−(ISNb)=(ISNc+1)の値を確認応答シーケンス番号とした確認信号7(ACK(ISNc+1))を中継サーバに送信する。
【0051】
(14)確認信号7を中継サーバが受領した段階で、クライアントA−中継サーバ間のTCPコネクションの設定が完了する。
【0052】
(15)上記同期確認応答信号4を、中継サーバが受領し確認信号8(ACK(ISNb+1))を送信する。ISN読み取り部は、確認信号8を受信し、そのままターゲットサーバBに転送する。これをターゲットサーバBが受信した段階で中継サーバ−ターゲットサーバB間のTCPセッションが確立する。
【0053】
次に図3を参照してターゲットサーバBからクライアントA間のデータ転送時の動作を説明する。図3は、本実施の形態に係る透過型TCP中継装置におけるデータ転送シーケンス図である。なお、ここでは、TCP層の変更のみに着目しているため、中継装置の中継制御部、及びアドレス変換部の動作は省略している。また、図3において、PUSHは、TCPヘッダ中のPUSHビットがオンとなっていることを表す。
【0054】
(1)ターゲットサーバBからクライアントAに向けて10バイトのデータ送信信号1(PUSH(SN=100))が送信される。
【0055】
(2)中継装置は上記信号1を受信するが、シーケンス番号変換部はこのパケットに対しては何も行わず、中継サーバに転送する。
【0056】
(3)中継サーバは、上記信号1を受信する。ACK信号2(ACK(110))をターゲットサーバBに対して送信する。
【0057】
(4)中継サーバは、上記受信信号1を、信号3(PUSH(SN=100100))としてクライアントAに転送する。この信号のシーケンス番号は、中継サーバ自身のシーケンス番号である。
【0058】
(5)シーケンス番号変換部は、上記信号3のSN値から、ISNオフセット値(図3では、100000)を減じた信号4(PUSH(SN=100))をクライアントAに対して送信する。
【0059】
(6)クライアントAは、上記信号4を正常に受信し、ACK信号5(ACK(110))をターゲットサーバBに対して送信する。
【0060】
(7)中継装置が、上記確認信号5を受信、シーケンス番号変換部は、信号5の確認応答番号にISNオフセット値を加えたACK信号6(100110)を中継サーバに送信する。
【0061】
(8)中継サーバは、上記信号6を受信し、当該確認応答番号により受信確認が完了したバッファの領域を開放する。
【0062】
本実施の形態に係る透過型TCP中継装置は、以上のような手順でデータ転送を行う。セッション開設後、データ転送においては、セッション開設時の信号(4)のように、ターゲットサーバBのシーケンス番号(信号1のシーケンス番号)と、クライアントAが参照する(信号4、5のシーケンス番号)の同期をとる必要はなく、シーケンス番号変換部は、単純に、クライアント側に送信するデータのシーケンス番号は、
SNクライアント行キ=SN中継サーバ発−ISNオフセット
クライアントからの確認応答番号に関しては、
SN中継サーバ行キ=SNクライアント発+ISNオフセット
の変換を行うのみで足りる。
【0063】
なお、以上の説明では、中継サーバのISN値を、ターゲットサーバのISN値に置き換えることによって、中継サーバのISN値の透過性を実現した。しかしながら、第三者が式▲1▼により予測を行うことが困難な数値に1対1変換することが可能である場合は、必ずしもターゲットサーバのISNに置き換える必要はない。例えば、シーケンス番号変換部に擬似乱数発生機能を追加する方法が考えられる。クライアントからのSYN要求に対して、中継サーバのISN値を直接返すのではなく、疑似乱数値を返す。これ以降は、疑似乱数値と、中継サーバのISN値の差分をISNオフセット値として内部管理しても、上記の構成と同様の効果を得ることが可能である。
【0064】
また、以上の説明では、クライアント側に対してのみ、シーケンス番号変換機能を付加しているが、ターゲットサーバ側ネットワークからのTCPセッションハイジャックが危惧される状況においては、上記の説明と全く同一の方法でターゲットサーバ側インタフェースに対してもシーケンス番号変換機能を付加することが可能である。
【0065】
【発明の効果】
以上説明したように、本発明に係るTCP中継装置は、TCP中継を行う中継サーバを有し、ネットワーク上でTCPセッションの分断、及び中継を行うTCP中継装置であって、受信した信号からシーケンス番号又は確認応答番号を抽出するシーケンス番号抽出手段と、前記抽出されたシーケンス番号を所定の方式で変換し、又は前記抽出された確認応答番号を所定の方式で逆変換するシーケンス番号変換手段とを備え、前記シーケンス番号抽出手段は、前記中継サーバが出力した信号からシーケンス番号を抽出し、前記シーケンス番号変換手段は、前記抽出されたシーケンス番号を所定の方式で変換し、変換したシーケンス番号を外部出力する一方、前記シーケンス番号抽出手段は、前記外部出力されたシーケンス番号に対する応答信号を受信した場合は、応答信号から前記シーケンス番号の信号を正常に受信したことを示す確認応答番号を抽出し、前記シーケンス番号変換手段は、前記応答信号から抽出された確認応答番号を所定の方式で逆変換し、逆変換された確認応答番号を前記中継サーバに出力する構成を採る。
【0066】
本発明によれば、第三者がTCPセッションハイジャックを行おうとしても、クライアントが本来TCPセッション設立を求めていたターゲットサーバのISN値を予測しなければならなくなり、透過型のTCP中継装置を導入したことによるTCPセッションハイジャックの危険性を完全に回避することが可能となる。
【図面の簡単な説明】
【図1】本発明の実施の形態に係る透過型TCP中継装置の構成を示すブロック図である。
【図2】本発明の実施の形態に係る透過型TCP中継装置において、TCP確立の3ウェイハンドシェイクにおけるシーケンス番号変換部4の動作を示す図である。
【図3】本実施の形態に係る透過型TCP中継装置におけるデータ転送シーケンス図である。
【図4】従来のTCP中継装置の構成を示す図である。
【図5】TCPヘッダを示す図である。
【図6】TCPによるデータ転送の手順を説明する図である。
【図7】RFC793によるISN値の生成方法を示す図である。
【図8】ISN値予測によるTCPセッションハイジャック方式を説明する図である。
【符号の説明】
1…透過型TCP中継装置、2…アドレス変換部、3…中継サーバ、4…シーケンス番号変換部、5…ターゲットサーバ、6…ISN読み取り部、7…クライアント、8…変換実行部、9…ISNオフセット保存部。
Claims (6)
- TCP中継を行う中継サーバを有し、ネットワーク上でTCPセッションの分断、及び中継を行うTCP中継装置であって、
受信した信号からシーケンス番号又は確認応答番号を抽出するシーケンス番号抽出手段と、
前記抽出されたシーケンス番号を所定の方式で変換し、又は前記抽出された確認応答番号を所定の方式で逆変換するシーケンス番号変換手段とを備え、
前記シーケンス番号抽出手段は、前記中継サーバが出力した信号からシーケンス番号を抽出し、
前記シーケンス番号変換手段は、前記抽出されたシーケンス番号を所定の方式で変換し、変換したシーケンス番号を外部出力する一方、
前記シーケンス番号抽出手段は、前記外部出力されたシーケンス番号に対する応答信号を受信した場合は、応答信号から前記シーケンス番号の信号を正常に受信したことを示す確認応答番号を抽出し、
前記シーケンス番号変換手段は、前記応答信号から抽出された確認応答番号を所定の方式で逆変換し、逆変換された確認応答番号を前記中継サーバに出力することを特徴とするTCP中継装置。 - 前記シーケンス番号変換手段は、
クライアントがTCPセッション確立要求として送信した同期信号に対して前記中継サーバが出力する同期確認信号を格納する格納手段と、
前記中継サーバが前記クライアントのTCPセッション確立要求先であるターゲットサーバに送信した同期信号に対して前記ターゲットサーバが送信する同期確認信号を受信し、この同期確認信号から前記ターゲットサーバの初期シーケンス番号を読み取るISN読取手段と、
前記格納手段に格納されている同期確認信号に含まれる前記中継サーバの初期シーケンス番号を前記ISN読取手段が読み取った前記ターゲットサーバの初期シーケンス番号に書換える書換え手段と、
前記中継サーバの初期シーケンス番号と、前記ターゲットサーバの初期シーケンス番号との差分を算出する差分算出手段と、
前記クライアントから前記書換えられたシーケンス番号を含む信号に対する確認信号を受信した場合、受信信号中の確認応答番号に前記差分を加算する第1加算手段と、
前記中継サーバが前記クライアントに送信する信号のシーケンス番号から前記差分を減算する減算手段と、
前記クライアントが前記中継サーバに送信する信号の確認応答番号に前記差分を加算する第2加算手段とを備えることを特徴とする請求項1記載のTCP中継装置。 - ネットワーク上でTCPセッションの分断、及び中継を行うTCP中継装置のシーケンス番号変換方法であって、
中継サーバが出力した信号からシーケンス番号を抽出するステップと、
前記抽出されたシーケンス番号を所定の方式で変換し、変換したシーケンス番号を外部出力するステップと、
前記外部出力されたシーケンス番号に対する応答信号を受信したときは、応答信号から前記シーケンス番号の信号を正常に受信したことを示す確認応答番号を抽出するステップと、
前記応答信号から抽出された確認応答番号を所定の方式で逆変換し、逆変換された確認応答番号を前記中継サーバに出力するステップとを含むことを特徴とするシーケンス番号変換方法。 - クライアントがTCPセッション確立要求として送信した同期信号に対して中継サーバが出力する同期確認信号を格納するステップと、
前記中継サーバが前記クライアントのTCPセッション確立要求先であるターゲットサーバに送信した同期信号に対して前記ターゲットサーバが送信する同期確認信号を受信し、この同期確認信号から前記ターゲットサーバの初期シーケンス番号を読み取るステップと、
前記格納されている同期確認信号に含まれる前記中継サーバの初期シーケンス番号を前記読み取られた前記ターゲットサーバの初期シーケンス番号に書換えるステップと、
前記中継サーバの初期シーケンス番号と、前記ターゲットサーバの初期シーケンス番号との差分を算出するステップと、
前記クライアントから前記書換えられたシーケンス番号を含む信号に対する確認信号を受信した場合、受信信号中の確認応答番号に前記差分を加算するステップと、
前記中継サーバが前記クライアントに送信する信号のシーケンス番号から前記差分を減算するステップと、
前記クライアントが前記中継サーバに送信する信号の確認応答番号に前記差分を加算するステップとを含むことを特徴とする請求項3記載のシーケンス番号変換方法。 - クライアントがTCPセッション確立要求として送信した同期信号に対して中継サーバが出力する同期確認信号を格納する処理と、
前記中継サーバが前記クライアントのTCPセッション確立要求先であるターゲットサーバに送信した同期信号に対して前記ターゲットサーバが送信する同期確認信号を受信し、この同期確認信号から前記ターゲットサーバの初期シーケンス番号を読み取る処理と、
前記格納されている同期確認信号に含まれる前記中継サーバの初期シーケンス番号を前記読み取られた前記ターゲットサーバの初期シーケンス番号に書換える処理と、
前記中継サーバの初期シーケンス番号と、前記ターゲットサーバの初期シーケンス番号との差分を算出する処理と、
前記クライアントから前記書換えられたシーケンス番号を含む信号に対する確認信号を受信した場合、受信信号中の確認応答番号に前記差分を加算する処理と、
前記中継サーバが前記クライアントに送信する信号のシーケンス番号から前記差分を減算する処理と、
前記クライアントが前記中継サーバに送信する信号の確認応答番号に前記差分を加算する処理とを実行させるプログラム。 - 請求項5記載のプログラムが記録され、コンピュータにより読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001043757A JP3771453B2 (ja) | 2001-02-20 | 2001-02-20 | Tcp中継装置及びシーケンス番号変換方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001043757A JP3771453B2 (ja) | 2001-02-20 | 2001-02-20 | Tcp中継装置及びシーケンス番号変換方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002247112A JP2002247112A (ja) | 2002-08-30 |
JP3771453B2 true JP3771453B2 (ja) | 2006-04-26 |
Family
ID=18905874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001043757A Expired - Fee Related JP3771453B2 (ja) | 2001-02-20 | 2001-02-20 | Tcp中継装置及びシーケンス番号変換方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3771453B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5738506B2 (ja) | 2005-09-29 | 2015-06-24 | 株式会社野村総合研究所 | 画面情報提供サーバ、プログラム |
JP4890105B2 (ja) * | 2006-05-31 | 2012-03-07 | 三菱電機株式会社 | 認証装置、認証代行装置、およびユーザ認証方法 |
JP5470828B2 (ja) * | 2008-12-10 | 2014-04-16 | 株式会社日立製作所 | データ配信用通信装置、及びデータ配信システム |
US20110000095A1 (en) * | 2009-07-02 | 2011-01-06 | Robert Bruce Carlson | High Precision Hand-held Engineering Survey/Position Data Collector |
US20120102148A1 (en) * | 2010-12-30 | 2012-04-26 | Peerapp Ltd. | Methods and systems for transmission of data over computer networks |
CN107094176B (zh) | 2010-12-30 | 2021-07-30 | 皮尔爱普有限公司 | 用于对计算机网络上的数据通信进行缓存的方法和系统 |
-
2001
- 2001-02-20 JP JP2001043757A patent/JP3771453B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002247112A (ja) | 2002-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10855654B2 (en) | Session identifier for a communication session | |
US8086740B2 (en) | Method and apparatus for remotely controlling a computer with peer-to-peer command and data transfer | |
US7624184B1 (en) | Methods and apparatus for managing access to data through a network device | |
JP6858749B2 (ja) | 負荷平衡システムにおいて接続を確立するデバイス及び方法 | |
EP1892887B1 (en) | Communication method between communication devices and communication apparatus | |
US20080095138A1 (en) | Method for performing handovers in a communication system | |
US20160380966A1 (en) | Media Relay Server | |
US20060015647A1 (en) | System and method for communication between heterogeneous networks | |
JP2005027318A5 (ja) | ||
US9191406B2 (en) | Message relaying apparatus, communication establishing method, and computer program product | |
WO2013170177A1 (en) | System and method for reducing a call establishment time | |
JP2008098813A (ja) | 情報通信装置、情報通信方法、及びプログラム | |
Simpson | TCP cookie transactions (TCPCT) | |
JP3771453B2 (ja) | Tcp中継装置及びシーケンス番号変換方法 | |
US9106479B1 (en) | System and method for managing network communications | |
JP3854221B2 (ja) | アドレス組の生存時間取得・計算を可能としたalg装置 | |
JP2023542398A (ja) | データ処理方法、装置、関連機器及び記憶媒体 | |
EP1593230B1 (en) | Terminating a session in a network | |
WO2011044810A1 (zh) | 实现多方通信的方法、装置及系统 | |
CN113014855B (zh) | 一种视频会议加速方法、系统及视频会议加速平台 | |
US20070147376A1 (en) | Router-assisted DDoS protection by tunneling replicas | |
JP2006025211A (ja) | ピアツーピア端末装置並びにピアツーピア通信システム、ピアツーピア通信方法、ピアツーピア端末プログラム | |
JP2003289338A (ja) | パケット中継プログラム、パケット中継装置および記録媒体 | |
JP6930585B2 (ja) | 中継装置、ネットワークシステムおよびネットワーク制御方法 | |
JP2943453B2 (ja) | 通信相手の送信バッファに対応した応答返却のタイミング計算システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040607 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060130 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060207 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060209 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100217 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100217 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110217 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120217 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |