(57)【要約】【課題】ＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂ間のそれぞれにＴＣＰ２を実装してセキュリティの高いファイル転送システムを実現する。【解決手段】ネットワークに接続されるＦＴＰクライアント装置間とＦＴＰサーバ装置の双方に、ＴＣＰ２ドライバを実装する。このＴＣＰ２ドライバ３５にはＴＣＰ２コア３７とＦＴＰシステムコア３８が設けられており、ＦＴＰサーバ装置Ｂから送られる暗号文のファイルデータは、ＦＴＰクアイアンと装置ＡのＦＴＰシステムコアで復号化または復号化されずに既存のコンピュータ装置に送られる。【選択図】図３
2007324727.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してＦＴＰクライアント装置とＦＴＰサーバ装置との間でファイル転送を行うＦＴＰ通信システムであって、
前記クライアント装置及び前記サーバ装置には、
既存のＦＴＰアプリケーション部に加えて、ＴＣＰ２コアとＦＴＰシステムコアを備えたＴＣＰ２ドライバと、ＦＴＰシステム管理アプリケーション部が設けられ、
前記ＴＣＰ２ドライバの前記ＴＣＰ２コアは、前記クライアント装置あるいは前記サーバ装置から送信されるＦＴＰコマンドまたはＦＴＰ応答コードのパケットを確認して、前記ＦＴＰシステムコアに送信し、
前記ＦＴＰシステムコアは、
前記クライアント装置と前記サーバ装置間で鍵交換を行うとともに、記憶メディアに保存された種々の設定情報に基づいて、前記クライアント装置あるいは前記サーバ装置から送られるＦＴＰコマンドの暗号化または復号化を行って、前記クライアント装置及び前記サーバ装置との間で暗号文によりファイル転送を行い、
前記ＦＴＰシステム管理アプリケーション部は、
前記ＦＴＰシステムコアに送られるＦＴＰコマンドまたはＦＴＰ応答コードに対して暗号化するか、あるいは暗号化しないかを設定するとともに、前記ＦＴＰシステムコアに送られる暗号化されたファイルデータに対して復号化するか、あるいは復号化しないかを設定する設定部を有し、前記設定部により設定した暗号化するかしないかの情報、及び復号化するかしないかの情報を設定情報として前記ＦＴＰシステムコアの前記記憶メディアに格納し、
前記ＦＴＰアプリケーション部で受信して保存した暗号文のファイルデータを平文で表示させる
ことを特徴とするＦＴＰ通信システム。
【請求項２】
ＴＣＰ２ドライバを実装したＦＴＰクライアント装置とＴＣＰ２ドライバを実装したＦＴＰサーバ装置との間でファイル転送を行うＦＴＰ通信システムに用いられるプログラムであって、
前記ＦＴＰクライアント装置及び前記ＦＴＰサーバ装置のコンピュータに、以下のような手順を実行させるコンピュータプログラム。
（ａ）ネットワーク環境に応じて、ＦＴＰコマンドメッセージの暗号化または非暗号化を設定する手順、
（ｂ）前記設定情報を基に、ＦＴＰクライアント装置あるいはＦＴＰサーバ装置自身が保有する鍵元値を作成する手順、
（ｃ）受信したＦＴＰコマンドメッセージあるいはＦＴＰ応答メッセージに付加されている鍵元値と前記装置自身が保有する鍵元値から前記ＦＴＰクライアント装置及び前記ＦＴＰサーバ装置の双方で新たな鍵を生成し、交換する手順、
（ｄ）前記ＦＴＰクライアント装置から前記ＦＴＰサーバ装置に対して、前記設定情報を基に、ＦＴＰコマンドを暗号文または平文で送る手順、
（ｅ）前記ＦＴＰサーバ装置から前記ＦＴＰクライアント装置に対して、前記設定情報を基に、前記ＦＴＰ応答コードを暗号文または平文で送る手順、
（ｆ）前記ＦＴＰサーバ装置から前記ＦＴＰクライアント装置に対して、ファイルデータを暗号文で送る手順、
（ｇ）前記ＦＴＰクライアント装置から前記ＦＴＰサーバ装置に対して、ファイルデータを暗号文で送る手順。
【請求項３】
ネットワークを介してＦＴＰサーバ装置との間でファイル転送を行うＦＴＰクライアント装置であって、
該ＦＴＰクライアント装置は、
既存のＦＴＰアプリケーション部に加えて、ＴＣＰ２コアとＦＴＰシステムコアを備えたＴＣＰ２ドライバと、ＦＴＰシステム管理アプリケーション部を備えており、
前記ＴＣＰ２ドライバの前記ＴＣＰ２コアは、前記ＦＴＰクライアント装置あるいは前記ＦＴＰサーバ装置から送信されるＦＴＰコマンドまたはＦＴＰ応答コードのパケットを確認して、前記ＦＴＰシステムコアに送信し、
前記ＦＴＰシステムコアは、
前記ＦＴＰクライアント装置と前記ＦＴＰサーバ装置間で鍵交換を行うとともに、記憶メディアに保存された種々の設定情報に基づいて、前記ＦＴＰクライアント装置あるいは前記ＦＴＰサーバ装置から送られるＦＴＰコマンドの暗号化または復号化を行って、前記ＦＴＰクライアント装置及び前記ＦＴＰサーバ装置との間で暗号文によりファイル転送を行い、
前記ＦＴＰシステム管理アプリケーション部は、
前記ＦＴＰシステムコアに送られるＦＴＰコマンドに対して暗号化するか、あるいは暗号化しないかを設定するとともに、前記ＦＴＰシステムコアに送られる暗号化されたファイルデータに対して復号化するか、あるいは復号化しないかを設定する設定部を有し、前記設定部により設定した暗号化するかしないかの情報、及び復号化するかしないかの情報を設定情報として前記ＦＴＰシステムコアの前記記憶メディアに格納し、
前記ＦＴＰアプリケーション部で受信して保存した暗号文のファイルデータを平文で表示させる
ことを特徴とするＦＴＰクライアント装置。
【請求項４】
ネットワークを介してＦＴＰクライアント装置との間でファイル転送を行うＦＴＰサーバ装置であって、
該ＦＴＰサーバ装置は、
既存のＦＴＰアプリケーション部に加えて、ＴＣＰ２コアとＦＴＰシステムコアを備えたＴＣＰ２ドライバと、ＦＴＰシステム管理アプリケーション部を備えており、
前記ＴＣＰ２ドライバの前記ＴＣＰ２コアは、前記ＦＴＰクライアント装置あるいは前記ＦＴＰサーバ装置から送信されるＦＴＰコマンドまたはＦＴＰ応答コードのパケットを確認して、前記ＦＴＰシステムコアに送信し、
前記ＦＴＰシステムコアは、
前記ＦＴＰクライアント装置と前記サーバ装置間で鍵交換を行うとともに、記憶メディアに保存された種々の設定情報に基づいて、前記ＦＴＰクライアント装置あるいは前記ＦＴＰサーバ装置から送られるＦＴＰコマンドの暗号化または復号化を行って、前記ＦＴＰクライアント装置及び前記ＦＴＰサーバ装置との間で暗号文によりファイル転送を行い、
前記ＦＴＰシステム管理アプリケーション部は、
前記ＦＴＰシステムコアに送られるＦＴＰ応答コードに対して暗号化するか、あるいは暗号化しないかを設定するとともに、前記ＦＴＰシステムコアに送られる暗号化されたファイルデータに対して復号化するか、あるいは復号化しないかを設定する設定部を有し、前記設定部により設定した暗号化するかしないかの情報、及び復号化するかしないかの情報を設定情報として前記ＦＴＰシステムコアの前記記憶メディアに格納し、
前記ＦＴＰアプリケーション部で受信して保存した暗号文のファイルデータを平文で表示させる
ことを特徴とするＦＴＰサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＦＴＰ（File Transfer Protocol）クライアントとＦＴＰサーバ間の通信において、上位アプリケーションを変更することなく相互認証と暗号化を行うことができる、盗聴、漏洩、なりすまし、改ざん等に強いＦＴＰ通信システム及びそれを実現するためのＦＴＰ通信プログラムに関する。
【背景技術】
【０００２】
近年、インターネットを利用した通信は、パソコンさえあれば、それをネットワークに接続するだけで、誰でもネットワーク上のコンピュータにアクセスできるため、社会の中で急速に普及拡大している。一方、このインターネット通信の普及拡大に伴って、ハッカー（hacker）やクラッカー（Cracker）が他人のコンピュータシステムに侵入して、ソフトウエアやデータを盗み見たり、改竄や破壊を行ったりするという社会問題も大きくなっている。
【０００３】
具体的な不正妨害のケースとしては、まず第１に、中心的なシステムが使えなくなるように、ネットワークから大量のメッセージを送りつけコンピュータシステムの運用を妨害するシステム妨害がある。この妨害によってホストが過負荷になるとシステムダウンに陥ってしまうことも起こりうる。
【０００４】
また、ホストのパスワードを入手し、機密情報を盗んだり、情報の改竄や破壊を行ったりする「不正アクセスとなりすまし」の不正妨害がある。この妨害にはコンピュータが保有する情報を勝手に書き換え、人を陥れる卑劣のものもある。また、特定のパソコンに忍び込み、メールアドレスやパスワードなど個人の機密データを搾取するスパイウエアといわれる不正行為も発生している。このようにネットワークに接続したコンピュータが持つデータベースの内容を不正に盗み見る、いわゆる盗聴行為も頻繁に行われている可能性も否定できない。
【０００５】
また、サイト若しくはサーバの運営元で、意図的に個人情報を盗むといった行為や、社内に潜むスパイなどによるサイバーテロ（Cyber  terrorism）といった危機も全くないとはいえない状況である。
【０００６】
さらに、他人のコンピュータにコンピュータ障害をもたらすプログラムである「ウイルス」を送り込むという不正妨害が最近多くなっている。この送り込まれたウイルスに、メールなどを自宅で使用したパソコンが感染し、それを社内に接続した瞬間に社内のパソコン全体が感染したり、ウイルスがコンピュータの中のファイルを破壊させたり、更には、ネットワーク全体をダウンさせたりするといった問題も生じている。
【０００７】
このため、従来のＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）やＵＤＰ（User Datagram Protocol）を利用したインターネット上での通信において、データの「漏洩」「改竄」等を防ぐ機能として、ＩＰｓｅｃ（アイピーセック：Security Architecture for Internet Protocol）やＳＳＬ（Secure Socket Layer）といわれる暗号化通信が利用されている。
【０００８】
ＩＰｓｅｃの特徴は、単に特定のアプリケーションだけを暗号化するのではなく、ホストから送信されるあらゆる通信をＩＰレベルで暗号化する点にある。これによりユーザはアプリケーションを意識することなく安全な通信を可能とすることができる。また、ＩＰｓｅｃは、将来にわたって使えるように、それ自体の仕組みを変えることなく使用する暗号アルゴリズムを変更することを可能としている。
【０００９】
また、ＳＳＬを利用することにより、クライアントとサーバは、ネットワーク上でお互いを認証できるようになり、クレジットカード情報などの機密性の高い情報を暗号化してやり取りすることが可能となる。これにより、データの盗聴、再送攻撃（ネットワーク上に流れたデータを盗聴して何度も繰り返して送ってくる攻撃）、なりすまし（本人の振りをして通信する）、データの改竄などを防止することができる。
【００１０】
本発明に用いられる暗号化通信では、トランスポート層（ＯＳＩの第４層）にあるＴＣＰ層に暗号化機能を追加している。このトランスポート層は、各ノード上で実行されている２つのプロセス間で、エラーのない、仮想的な通信路を実現するためのプロトコル層である。ネットワーク層ではデータを送ることはできるが、そのデータが確実に相手に届くという保証はない。また、送信した順に正しくデータが届くという保証もない。そこで、アプリケーションにとって使いやすくするために、エラーのない通信路を提供するのがトランスポート層である。この第４層のトランスポート層に暗号化機能を追加して、外部からの不正侵入に強い通信システムを実現した例は、本発明者らが世界に先駆けて提案したものであり、本発明者らはこの暗号化通信システムを「ＴＣＰ２」と命名している（特許文献１参照）。
【００１１】
【特許文献１】国際公開ＷＯ２００５／０１５８２７号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、特許文献１に記載の発明は、ＴＣＰ２を利用した一般的な暗号化通信システム、通信方法、通信装置及び通信プログラムにとどまり、このＴＣＰ２を搭載したＦＴＰシステムはいまだに実現されていない。
本発明の目的は、発明者らが先に提案した「ＴＣＰ２」を利用した通信システムを用いて、暗号化機能を付加したＦＴＰシステムとそれを実現するプログラムを提供することにある。
すなわち、ＦＴＰ通信のＦＴＰクライアント装置とＦＴＰサーバ装置にＴＣＰ２を実装し、Ｅｎｄ−ｔｏ−Ｅｎｄで暗号化されたファイルデータの送受信を可能とするＦＴＰシステム及びそのプログラムを提供することである。
【課題を解決するための手段】
【００１３】
前記課題を解決し、本発明の目的を達成するため、本発明は、ネットワークを介してＦＴＰクライアント装置とＦＴＰサーバ装置との間でファイル転送を行うＦＴＰ通信システムであって、ＦＴＰクライアント装置及びＦＴＰサーバ装置には、既存のＦＴＰアプリケーション部に加えて、ＴＣＰ２コアとＦＴＰシステムコアを備えたＴＣＰ２ドライバと、ＦＴＰシステム管理アプリケーション部が設けられており、ＴＣＰ２ドライバのＴＣＰ２コアは、ＦＴＰクライアント装置あるいはＦＴＰサーバ装置から送信されるＦＴＰコマンドまたはＦＴＰ応答コードのパケットを確認して、ＦＴＰシステムコアに送り、ＦＴＰシステムコアは、ＦＴＰクライアント装置とＦＴＰサーバ装置間で鍵交換を行うとともに、記憶メディアに保存された種々の設定情報に基づいて、ＦＴＰクライアント装置あるいはＦＴＰサーバ装置から送られるＦＴＰコマンドまたはＦＴＰ応答コードの暗号化または復号化を行って、ＦＴＰクライアント装置及びＦＴＰサーバ装置との間で暗号文によりファイル転送を行い、ＦＴＰシステム管理アプリケーション部は、ＦＴＰシステムコアに送られるＦＴＰコマンドまたはＦＴＰ応答コードに対して暗号化するか、あるいは暗号化しないかを設定し、また、ＦＴＰシステムコアに送られる暗号化されたファイルデータに対して復号化するか、あるいは復号化しないかを設定する設定部を有し、この設定部で設定した暗号化するかしないかの情報、及び復号化するかしないかの情報を設定情報としてＦＴＰシステムコアの前記記憶メディアに格納することを特徴としている。
【００１４】
また、本発明のＦＴＰ通信プログラムは、ＴＣＰ２ドライバを実装したＦＴＰクライアント装置とＴＣＰ２ドライバを実装したＦＴＰサーバ装置との間でファイル転送を行うＦＴＰ通信システムに用いられるプログラムである。すなわち、本発明のＦＴＰ通信プログラムは、ＦＴＰクライアント装置及びＦＴＰサーバ装置のコンピュータに、以下のような手順を実行させることを特徴としている。
（ａ）ネットワーク環境に応じて、ＦＴＰコマンドメッセージの暗号化または非暗号化を設定する手順、
（ｂ）前記設定情報を基に、ＦＴＰクライアント装置あるいはＦＴＰサーバ装置自身が保有する鍵元値を作成する手順、
（ｃ）受信したＦＴＰコマンドメッセージあるいはＦＴＰ応答メッセージに付加されている鍵元値と前記装置自身が保有する鍵元値から前記ＦＴＰクライアント装置及び前記ＦＴＰサーバ装置の双方で新たな鍵を生成し、交換する手順、
（ｄ）前記ＦＴＰクライアント装置から前記ＦＴＰサーバ装置に対して、前記設定情報を基に、ＦＴＰコマンドを暗号文または平文で送る手順、
（ｅ）前記ＦＴＰサーバ装置から前記ＦＴＰクライアント装置に対して、前記設定情報を基に、前記ＦＴＰ応答コードを暗号文または平文で送る手順、
（ｆ）前記ＦＴＰサーバ装置から前記ＦＴＰクライアント装置に対して、ファイルデータを暗号文で送る手順、
（ｇ）前記ＦＴＰクライアント装置から前記ＦＴＰサーバ装置に対して、ファイルデータを暗号文で送る手順。
【００１５】
また、本発明のＦＴＰクライアント装置は、既存のＦＴＰアプリケーション部に加えて、ＴＣＰ２コアとＦＴＰシステムコアを備えたＴＣＰ２ドライバと、ＦＴＰシステム管理アプリケーション部を備えており、ＴＣＰ２ドライバのＴＣＰ２コアは、ＦＴＰクライアント装置あるいはＦＴＰサーバ装置から送信されるＦＴＰコマンドまたはＦＴＰ応答コードのパケットを確認して、ＦＴＰシステムコアに送信し、ＦＴＰシステムコアは、ＦＴＰクライアント装置とＦＴＰサーバ装置間で鍵交換を行うとともに、記憶メディアに保存された種々の設定情報に基づいて、ＦＴＰクライアント装置あるいはＦＴＰサーバ装置から送られるＦＴＰコマンドの暗号化または復号化を行って、ＦＴＰクライアント装置及びＦＴＰサーバ装置との間で暗号文によりファイル転送を行い、ＦＴＰシステム管理アプリケーション部は、ＦＴＰシステムコアに送られるＦＴＰコマンドに対して暗号化するか、あるいは暗号化しないかを設定するとともに、ＦＴＰシステムコアに送られる暗号化されたファイルデータに対して復号化するか、あるいは復号化しないかを設定する設定部を有し、前記設定部により設定した暗号化するかしないかの情報、及び復号化するかしないかの情報を設定情報としてＦＴＰシステムコアの記憶メディアに格納し、ＦＴＰアプリケーション部で受信して保存した暗号文のファイルデータを平文で表示させることを特徴としている。
【００１６】
本発明のＦＴＰサーバ装置も、ＦＴＰクアイアンと装置と同様に、既存のＦＴＰアプリケーション部に加えて、ＴＣＰ２コアとＦＴＰシステムコアを備えたＴＣＰ２ドライバと、ＦＴＰシステム管理アプリケーション部を備えており、ＴＣＰ２ドライバのＴＣＰ２コアは、ＦＴＰクライアント装置あるいはＦＴＰサーバ装置から送信されるＦＴＰコマンドまたはＦＴＰ応答コードのパケットを確認して、ＦＴＰシステムコアに送信し、ＦＴＰシステムコアは、ＦＴＰクライアント装置とサーバ装置間で鍵交換を行うとともに、記憶メディアに保存された種々の設定情報に基づいて、ＦＴＰクライアント装置あるいはＦＴＰサーバ装置から送られるＦＴＰコマンドの暗号化または復号化を行って、ＦＴＰクライアント装置及びＦＴＰサーバ装置との間で暗号文によりファイル転送を行い、ＦＴＰシステム管理アプリケーション部は、ＦＴＰシステムコアに送られるＦＴＰ応答コードに対して暗号化するか、あるいは暗号化しないかを設定するとともに、ＦＴＰシステムコアに送られる暗号化されたファイルデータに対して復号化するか、あるいは復号化しないかを設定する設定部を有し、設定部により設定した暗号化するかしないかの情報、及び復号化するかしないかの情報を設定情報としてＦＴＰシステムコアの記憶メディアに格納し、ＦＴＰアプリケーション部で受信して保存した暗号文のファイルデータを平文で表示させることを特徴としている。
【発明の効果】
【００１７】
本発明のＦＴＰ通信システムによれば、ＴＣＰ２機能を使用して、ＦＴＰクライアント装置とＦＴＰサーバ装置との間のファイルデータを暗号化したまま転送することができるので、他人に知られることなく、権限のあるものだけがファイルの内容を知ることができるようになる。
また、既存のＦＴＰアプリケーションも備えているので、ＦＴＰクライアント装置で利用している従来のファイル転送機能をそのまま利用することができるという効果もある。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照しながら本発明の実施の形態の例を説明する。
図１は、本発明の暗号化通信システムに用いられるＴＣＰ２のプロトコルスタックを示すものである。
【００１９】
＜ＴＣＰ２プロトコルスタックの説明＞
このプロトコルスタックには、ＯＳＩの７階層の物理層（第１層）とデータリンク層（第２層）に相当する階層に、ＮＩＣ（Network Interface Card）のドライバ１１が配列されている。このドライバは、コンピュータなどのハードウエアをネットワークに接続するためのドライバであり、その内容はデータ送受信制御ソフトウエアである。例えばＥｔｈｅｒｎｅｔ（登録商標）に接続するためのＬＡＮボードまたはＬＡＮカードがこれに相当する。
【００２０】
第３層のネットワーク層には、一部がトランスポート層（第４層）まで伸びたＩＰエミュレータ（emulator）１３が存在している。上記トランスポート層に延びた部分には、トランスポートとしての機能は実装しておらず、セッション層（第５層）にネットワーク層の機能を提供しているだけある。このＩＰエミュレータ１３は、暗号化通信を行うプロトコルである「ＩＰｓｅｃ  ｏｎ  ＣＰ」１３ｂと、「ＩＰ  ｏｎ  ＣＰ」１３ａを用途に応じて切り換えて使う働きをするものである。ここで、「ｏｎ  ＣＰ」とは、クラッキング・プロテクタ（ＣＰ）による、「進入」「攻撃」の監視、破棄、切断ないし通過制限の対象となっていること、又は、設定によりなりうることを示している。
【００２１】
また、ネットワーク層にはＡＲＰ  ｏｎ  ＣＰ（Address Resolution Protocol on Cracking Protector）が配列されている。このＡＲＰ  ｏｎ  ＣＰは、クラッカー（Cracker）への保護対策を具備したＩＰアドレスからＥｔｈｅｒｎｅｔ（登録商標）の物理アドレスであるＭＡＣ（Media Access Control）アドレスを求めるのに使われるプロトコルである。ＭＡＣは、媒体アクセス制御と呼ばれる、ＬＡＮなどで利用される伝送制御技術であり、データの送受信単位であるフレームの送受信方法やフレームの形式、誤り訂正などを規定する技術として利用されている。
【００２２】
ここで、ＩＰエミュレータ１３は、本発明による各種のセキュリティ機能を、従来のＩＰ周辺のスタックに整合させるためのソフトウエア又はファームウエアである。すなわち、ＩＰエミュンレータ１３は、ＩＣＭＰ（Internet Control Message Protocol）１４ａ、ＩＧＭＰ（Internet Group Management Protocol）１４ｂ、ＴＣＰ１５、ＵＤＰ１６さらにソケット（Socket）インターフェース１７に整合させるためのソフトウエア、又はファームウエア、ないしはハードウエア（電子回路、電子部品）である。このＩＰエミュレータ１３により、ＩＰｓｅｃの暗号化・復号化及び必要な認証情報付加・認証等の前後の適合処理を行うことができる。なお、ＩＣＭＰは、ＩＰのエラーメッセージや制御メッセージを転送するプロトコルであり、ＩＧＭＰは、同一のデータを複数のホストに効率よく配送するための又は配送を受けるために構成されるホストのグループを制御するためのプロトコルである。
【００２３】
このＩＰエミュレータ１３の上層のトランスポート層（第４層）には、ＴＣＰエミュレータ１５とＵＤＰエミュレータ１６が配置されている。ＴＣＰエミュレータ１５は、暗号化通信を行うプロトコルである「ＴＣＰｓｅｃ  ｏｎ  ＣＰ」１５ｂと、通常の通信プロトコルである「ＴＣＰ  ｏｎ  ＣＰ」１５ａを用途に応じて切り換えて使う働きをする。同様に、ＵＤＰエミュレータ１６は、暗号化通信を行うプロトコルである「ＵＤＰｓｅｃ  ｏｎ  ＣＰ」１６ｂと、通常の通信プロトコルである「ＵＤＰ  ｏｎ  ＣＰ」１６ａを用途に応じて切り換えて使う働きをする。
【００２４】
また、ＴＣＰ２の最も特徴とされる点は、トランスポート層（第４層）に、ＴＣＰｓｅｃ１５ｂと、ＵＤＰｓｅｃ１６ｂの暗号化通信プロトコルを搭載したことである。
このトランスポート層（第４層）の上層のセッション層（第５層）には、ＴＣＰ及びＵＤＰ等のプロトコルとデータのやりとりを行うソケット（socket）インターフェース１７が設けられている。このソケットの意味は、既に述べたようにコンピュータが持つネットワーク内の住所に当たるＩＰアドレスと、ＩＰアドレスのサブアドレスであるポート番号を組み合わせたネットワークアドレスを意味している。実際には、一連のヘッダの追加ないし削除をまとめて行う、単一のソフトウエアプログラムモジュール（実行プログラム等）あるいは単一のハードウエアモジュール（電子回路、電子部品等）から構成されている。
【００２５】
ＴＣＰエミュレータ１５は、トランスポート層において、データの漏洩・改竄の防止の機能、すなわち暗号化、完全性認証及び相手認証等の機能を持つＴＣＰｓｅｃ１５ｂと、このような暗号化、完全性認証、及び相手認証等の機能を持たない通常のプロトコルＴＣＰ１５ａのいずれかにパケットを振り分ける働きをもっている。また、ＴＣＰｓｅｃ１５ｂ及びＴＣＰ１５ａのいずれもクラッキング・プロテクタ（ＣＰ）を備えているため、そのいずれを選択した場合でも、クラッカーによる「進入」「攻撃」に対して防御する機能を実現することができる。ＴＣＰエミュレータ１５は上位層であるソケットとのインターフェースの役割も果たしている。
【００２６】
また、既に述べたようにＴＣＰがエラー補償機能を有するのに対して、ＵＤＰはエラー補償機能を持たないが、その分転送速度が速く、かつブロードキャスト機能を備えているという特徴がある。ＵＤＰエミュレータ１６は、ＴＣＰエミュレータ１５と同様に、データの漏洩・改竄の防止の機能、すなわち暗号化、完全性認証及び相手認証等の機能を持つＵＤＰｓｅｃ１６ｂと、このような暗号化、完全性認証、及び相手認証等の機能を持たない通常のプロトコルＵＤＰ１６ａのいずれかにパケットを振り分ける働きを持っている。
【００２７】
図１に示すように、ソケット１７、ＴＣＰエミュレータ１５、ＵＤＰエミュレータ１６、「ＴＣＰｓｅｃ  ｏｎ  ＣＰ」１５ｂ、「ＵＤＰｓｅｃ  ｏｎ  ＣＰ」１６ｂ、「ＴＣＰ  ｏｎ  ＣＰ」１５ａ、「ＵＤＰ  ｏｎ  ＣＰ」１６ａ、「ＩＣＭＰ  ｏｎ  ＣＰ」１４ａ、「ＩＧＭＰ  ｏｎ  ＣＰ」１４ｂ、ＩＰエミュレータ１３、「ＩＰ  ｏｎ  ＣＰ」１３ａ、及び「ＡＲＰｏｎＣＰ」１２からなるプロトコルスタックが本発明の暗号化処理を行うためのプロトコルスタックであり、以下、このプロトコルスタックを総称してＴＣＰ２と呼んでいる（特許文献１参照）。
【００２８】
本発明のメールシステムにおいて中心的な役割を果たすＴＣＰ２は、ＴＣＰ、ＵＤＰ、ＩＰ、ＩＰｓｅｃ、ＩＣＭＰ、ＩＧＭＰ、ＡＲＰの標準プロトコルにＣＰ（クラッキング・プロテクト）を実装し、各プロトコルスタックに対する通信からの攻撃、及び、アプリケーション・プログラムからの攻撃（トロイの木馬、プログラムの改竄、正規ユーザの不正使用）を防御することができる。また、ＴＣＰ２では、ＴＣＰエミュレータ１５を実装し、このＴＣＰエミュレータ１５は、セッション層にあるソケット（Socket）１７、及びネットワーク層にあるＩＰエミュレータ１３から見て、互換性を保つため、外向きには標準ＴＣＰと同じに見せることができる。実際は、ＴＣＰ２の機能として、ＴＣＰとＴＣＰｓｅｃを切り替えて実行する。ＴＣＰｓｅｃは、トランスポート層での暗号化及び認証機能である。
【００２９】
また、同様に、ＴＣＰ２では、ＵＤＰエミュレータ１６を実装しており、ＵＤＰエミュレータ１６は、セッション層であるソケット（Socket）１７、及び、ネットワーク層であるＩＰエミュレータ１３から見て、互換性を保つため、外部からは標準ＵＤＰとして見せることができる。実際は、ＴＣＰ２の機能として、ＵＤＰ、ＵＤＰｓｅｃを切り替えて実行する。但し、ＵＤＰｓｅｃは、本発明のメールシステムには利用されない機能であるので、これ以降の説明では触れない。
【００３０】
次に、ＴＣＰ２において、特に重要な機能である「データ漏洩」を防ぐ機能であるＴＣＰｓｅｃ１５ｂについて説明する。ＴＣＰｓｅｃ１５ｂのための暗号化・復号化の方法（アルゴリズム、ロジック（論理））としては、公知の秘密鍵（共通鍵）暗号アルゴリズムが用いられる。
また、本発明のメールシステムに用いられるＴＣＰｓｅｃ１５ｂの暗号方式として、ＦＥＡＬ（Fast data Encipherment Algorithm）、ＭＩＳＴＹ、ＡＥＳ（Advanced Encryption Standard）といった暗号方式も利用されるほか、また、独自に作成した秘密の暗号化・復号化アルゴリズムを利用することもできる。ここで、ＦＥＡＬは、日本電信電話株式会社（当時）が開発した暗号方式で、暗号化と復号化に同じ鍵をもちいる秘密鍵型の暗号方式である。このＦＥＡＬは、ＤＥＳ（Data Encryption Standard：米国ＩＢＭ社が開発した共通鍵（秘密鍵）暗号化アルゴリズム）に比べて高速に暗号化と復号化ができるという利点がある。
【００３１】
次に、同じくＴＣＰ２に利用される暗号方式は、例えばＭＩＳＴＹが用いられるが、このＭＩＳＴＹは、ＩＤＥＡと同様にデータを６４ビットのブロックに区切って暗号化する。鍵の長さは１２８ビットである。暗号化と復号化には同じプログラムが使われる点はＤＥＳなどと同じである。
このように、本発明のＴＣＰｓｅｃ１５ｂの暗号方式としては、既に知られているさまざまな秘密鍵の暗号アルゴリズムを採用することができるほか、ユーザが独自に開発した秘密鍵（共通鍵）暗号方式も利用することが可能である。
【００３２】
さらに、いわゆる「なりすまし」及び「データの改竄」などを防ぐための「相手認証」及び「完全性認証」の方法として、公開鍵や事前秘密共有（Pre-shared）を利用したアルゴリズム、例えば、ＭＤ５（Message Digest 5）、ＳＨＡ１（Secure Hash Algorithm 1）などの認証アルゴリズムが用いられる。また、このような公知の認証アルゴリズムに代えて独自の一方向関数を利用したアルゴリズムを採用することもできる。
【００３３】
このＭＤ５は、認証やデジタル署名に用いられるハッシュ関数（一方向要約関数）の一つであり、原文を元に固定長のハッシュ値を発生し、これを通信経路の両端で比較することにより、通信途中で原文が改竄されていないかを検出することができるものである。このハッシュ値は擬似的な乱数のような値をとり、これを基にしては原文を再生できないようになっている。また、同じハッシュ値を生成する別のメッセージを作成することも困難になっている。
【００３４】
ＳＨＡ１も、認証やデジタル署名などに使われるハッシュ関数の一つであり、２の６４乗ビット以下の原文から１６０ビットのハッシュ値を生成し、通信経路の両端で比較することにより、通信途上の原文の改竄を検出するものである。この認証アルゴリズムは従来のインターネットの暗号化通信の代表的なものであるＩＰｓｅｃにも採用されている。
【００３５】
なお、これらの認証アルゴリズムについては、ＤＨ（Diffie-Hellman）公開鍵配送法や、ＩＰｓｅｃと同様のＩＫＥ（Internet Key Exchange）プロトコル（ＵＤＰの５００番）などにより安全な鍵交換ができるように設計され、しかも、定期的に暗号化／完全性認証アルゴリズム（論理）自体やそのための鍵の集合／定義域が変更されるように、プロトコルドライバープログラム（ＴＣＰｓｅｃ１５ｂ、ＵＤＰｓｅｃ１６ｂなど）によりスケジュールされている。
【００３６】
＜ＴＣＰ２データパケット構造の説明＞
次に、図２に基づいて、本発明のメールシステムで用いられるデータのパケット構造と、その暗号化範囲及び完全性認証の適用範囲について説明しておく。
図２は、ＴＣＰｓｅｃ／ＩＰのパケット構造と暗号化範囲及び完全性認証の適用範囲を示したものである。図２に示すように、ＩＰヘッダ２１のすぐ後に、ＴＣＰヘッダ２２及びＴＣＰｓｅｃ付加情報２３が続き、更にアプリケーションデータ２４が続く構造になっている。そして、アプリケーションデータ２４の後には、ＴＣＰｓｅｃの付加トレーラ２５とＴＣＰｓｅｃの付加認証データ２６が配列される構造となっている。ＴＣＰｓｅｃの付加トレーラ２５は、ブロック暗号で発生するデータのブランクやそのブランクの長さ、次のヘッダの番号などの暗号データをサポートする情報である。
【００３７】
ＴＣＰｓｅｃの特徴であるこれらの情報は、採用する暗号化／認証アルゴリズムによっては、ＴＣＰｓｅｃ／ＩＰの使用していないヘッダフィールド部分などに分散したり、個々のパケットからは逆算・推測できない独立した事前取決め（ネゴシエーション）により省略したりできるものである。また、ＩＰ層の上層に当たるＴＣＰ及びＩＰを使用していないプロトコルフィールドを用いて、図２に示すようなＴＣＰｓｅｃ／ＩＰパケットを構成することにより、より下層のＩＰのみに着目したＩＰｓｅｃパケットよりもパケット長を簡単に削減することができるようになる。なお、ここで暗号化範囲は、図示の通り、アプリケーションデータ２４、ＴＣＰｓｅｃ付加トレーラ２５であり、認証範囲は上記暗号化範囲の他に、ＴＣＰｓｅｃの付加情報２６が加えられる。
【００３８】
＜ＴＣＰ２を用いたＦＴＰシステムの機能ブロック図の説明＞
次に、本発明のＴＣＰ２を用いたＦＴＰシステム、特にＦＴＰクライアント装置とＦＴＰサーバとの間で通信を行うＦＴＰシステムの第１の実施の形態について図面を参照して説明する。
図３は、本発明のＦＴＰシステムに用いられるＦＴＰクライアント装置とＦＴＰサーバ装置の実施形態例のブロック構成図である。ＦＴＰクライアント装置とＦＴＰサーバとは、同じブロック構成図であるが、これらを区別するために、ＦＴＰクライアント装置では、記号“Ａ”を、ＦＴＰサーバ装置では、記号“Ｂ”を付加することにする。ＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂは、ネットワーク４０に接続されている。
【００３９】
ＦＴＰクライアント装置Ａについてまずその構成を説明する。ＦＴＰクライアント装置Ａは、入力装置３１Ａ、出力装置（表示装置）３２Ａ、既存のＦＴＰアプリケーション部３３Ａの他に、ＦＴＰシステム管理アプリケーション部３４ＡとＴＣＰ２ドライバ３５Ａを備えている。また、ＦＴＰサーバ装置Ｂから受信したファイルを保存する記憶メディア３６Ａを備えている。
【００４０】
ＴＣＰ２ドライバ３５Ａは、図４で説明するＴＣＰ２コア３７Ａと、図５で説明するＦＴＰシステムコア３８Ａ及び記憶メディア３９Ａから構成されている。記憶メディア３９Ａは、ＦＴＰクライアント装置Ａが通常有する記憶メディア３６Ａとは異なる記憶メディアであり、ＦＴＰシステムコア３８Ａが持っている秘密鍵で暗号化された状態で、後述する種々の情報を記憶するものである。
【００４１】
ここで、ＦＴＰクライアント装置Ａが接続されるネットワーク４０には、ＦＴＰサーバ装置Ｂも接続されており、ネットワーク４０を介してＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂ間でファイルの転送が行われる。ＦＴＰサーバ装置Ｂの構成もＦＴＰクライアント装置Ａと同じになるので、その説明は省略する。
【００４２】
次に、図３に示すＦＴＰクライアント装置Ａにおける動作を簡単に説明しておく。詳しくは図４〜図６で説明する。
まず、ＦＴＰサーバ装置Ｂからネットワーク４０を介して送信される暗号化されたファイルデータは、ＦＴＰクライアント装置Ａに搭載されたＴＣＰ２ドライバ３５ＡのＴＣＰ２コア３７ＡＡに送られる。そして、このＴＣＰ２コア３７ＡでＦＴＰポートのパケットであることを確認した後、このファイルデータをＦＴＰシステムコア３８Ａに送る。そしてＦＴＰシステムコア３８Ａで後述する処理がなされて既存のＦＴＰアプリケーション部３３Ａに送られる。
【００４３】
このＦＴＰシステムコア３８Ａは、ＦＴＰサーバ装置Ｂから送られるＦＴＰメッセージを分析し、このメッセージの暗号化または復号化を行う部分である。さらに、このＦＴＰシステムコア３８Ａにおいて、鍵の生成と鍵交換が行われる。さらに、ＦＴＰシステムコア３８Ａは記憶メディア３９Ａに接続されており、この記憶メディア３９ＡにＦＴＰサーバのＩＰアドレスとポート番号が保存される。また、この記憶メディア３９Ａには、種々の設定情報、ユーザＩＤとパスワード、鍵情報が保存される。ＦＴＰサーバ装置Ｂの記憶メディア３９Ｂにも、同様な情報が保存されるが、ＦＴＰクライアント装置Ａのポート番号は保存されない。ＦＴＰクライアント装置ＡのＩＰアドレスのみが保存される。
【００４４】
また、ＦＴＰシステムコア３８Ａは、ＦＴＰシステム管理アプリケーション部３４Ａに接続されている。このＦＴＰシステム管理アプリケーション部３４Ａは、通信相手の情報を管理する部分であり、使用しているネット環境に応じて暗号化するか、あるいは暗号化しないかを設定している。また、ＦＴＰサーバ装置Ｂから受信したファイルデータのうち、ディレクトリ情報以外のファイル情報を「復号化するか、しないか」を設定する。
【００４５】
以上、本発明のＦＴＰクライアント装置Ａの実施形態例の構成と動作を説明したが、ＦＴＰサーバ装置Ｂも、ＦＴＰクライアント装置Ａとほぼ同じ動作をするので、ここでは説明を省略する。
次に、ＦＴＰクライアント装置Ａを構成する各要素の具体例を、図４〜図６のブロック図と図７〜図１４のフローチャートに基づいて説明する。
【００４６】
図４は、ＴＣＰ２ドライバ３５の構成要素であるＴＣＰ２コア３７をより詳細に説明するための機能ブロック図である。ＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂで同じ構成なので、図３で付加したＡ，Ｂは省略して同一番号の符号を付している。  
図４に示すように、ＴＣＰ２コア３７は、ＦＴＰシステムコア３８からのポートサーチ要求を受けて指定ポートをサーチする指定ポートサーチ部４２と、同じくＦＴＰシステムコア３８からのフック要求を受けて要求に合致するパケットをフックするフック処理部４３を備えている。
【００４７】
ＦＴＰクライアント装置Ａの既存のＦＴＰアプリケーション部３３からのＦＴＰコマンドのメッセージパケットを受信し、それがＦＴＰコマンドのメッセージパケットであることを確認するＦＴＰコマンドメッセージパケット確認部４４とその応答メッセージを確認するためのＦＴＰ応答メッセージパケットを確認部４５とを備えている。さらに、これらＦＴＰコマンドメッセージ確認部４４とＦＴＰ応答メッセージパケット確認部４５をＦＴＰシステムコア３８に接続するパケットインターセプト部４６を有している。
【００４８】
フック処理部４３は、ＦＴＰシステムコア３８からのフック要求（所定のパケットを受信したらそれを捕まえなさいという要求）があったものを補足する処理を行う部分である。すなわち、フック処理部４３では、ＦＴＰコマンドメッセージパケット確認部４４と連携して、予めフック要求があるＩＰアドレスやポートが確認されたらこれを捕捉して、ＦＴＰシステムコア３８に送る。また、ＦＴＰ応答メッセージパケットの確認部４５も同様にそれぞれのメッセージパケットを確認すると、それをフック処理部４３で捕捉し、その結果を、パケットインターセプト部４６を経由してＦＴＰシステムコア３８に送る。以上がＴＣＰ２コア３７の構成と動作である。
【００４９】
次に、図５に基づいて、ＦＴＰシステムコア３８の構成と動作について説明する。図３、図４と同一の構成は同一符号を付し、説明は省略する。
ＦＴＰシステムコア３８は、ＴＣＰ２コア３７から送られるＦＴＰコマンドメッセージパケットの分析と認証を行う認証／分析部５０と、この認証／分析部５０で分析されかつ認証されたＦＴＰコマンドメッセージパケットを暗号化する暗号化部５１と、同様に認証／分析部５０で分析されかつ認証されたＦＴＰコマンドメッセージパケットを復号化する復号化部５２と、ＦＴＰクライアント装置間で鍵交換を行う鍵交換部５３を備えている。また、上述したように、ＦＴＰクライアント装置Ａでは、ＦＴＰシステムコア３８Ａに接続される記憶メディア３９Ａには、各種設定情報、ユーザＩＤとパスワード、ＦＴＰサーバのＩＰアドレスとポート番号、及び鍵情報等が暗号化した状態で保存されている。ここで、記憶メディア３９ＡとしてＦＴＰサーバ装置Ｂの記憶メディア３９Ｂと区別したのは、ＦＴＰサーバ装置Ｂの記憶メディア３９Ｂには、ＦＴＰクライアントのＩＰアドレスは保存されるが、そのポート番号は保存されないからである。
【００５０】
また、ＦＴＰシステムコア３８は、ＦＴＰシステム管理アプリケーション部３４と接続するためのインターフェース部５４を具備している。このインターフェース部５４を介してＦＴＰシステムコア３８の記憶メディア３９がＦＴＰシステム管理アプリケーション部３４と接続されるようになっている。
【００５１】
以下、図５に示すＦＴＰシステムコア３８の動作の説明を行う。上述したように、ＦＴＰシステムコア３８からのフック要求に基づいて、ＴＣＰ２コア３７でフックされたコマンドメッセージパケットは、ＴＣＰ２コア３７からＦＴＰシステムコア３８の認証／分析部５０に送られる。
ＦＴＰシステムコア３８の暗号化部５１は、認証／分析部５０で分析されたＦＴＰコマンドメッセージパケットを暗号化し、このＦＴＰコマンドメッセージパケットを、ＴＣＰ２コア３７を介してＦＴＰサーバ装置Ｂ（又はクライアント装置Ａ）に送る。
【００５２】
復号化部５２は、認証／分析部５０で認証されたＦＴＰコマンドメッセージを復号化して、ＴＣＰ２コア３７を介して、不図示の既存のＦＴＰアプリケーション部３３に送信する。また、鍵交換部５３は、ＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂとの間で鍵交換を行う部分である。
【００５３】
このＦＴＰ通信の暗号化と復号化に関連して、ＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂとの間に、ルータ／ファイアオール等のパケットフィルタリング機能を持つ中継装置がある場合について説明する。このような場合には、ルータ／ファイアオールがＦＴＰのデータセッションの待ち受けポートを認識するので、必要なＦＴＰコマンドとＦＴＰ応答コードを暗号化せずに平文のまま送信している。これにより、既存のネットワークに影響を与えることなく、ＦＴＰ通信が可能となる。
このため、ＴＣＰ２を用いてＦＴＰ通信を行う際には、最初に一部のＦＴＰコマンドとＦＴＰ応答コードについて、「暗号化するか／あるいは暗号化しないか」の設定を行う必要がある。
【００５４】
次に、図６に基づいてＦＴＰシステム管理アプリケーション部３４の構成と動作について説明する。ＦＴＰシステム管理アプリケーション部３４もＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂとで構成が変わらないので、単に番号のみを示しクライアントを表す‘Ａ’とサーバを表す‘Ｂ’は付加しないで説明する。
【００５５】
ＦＴＰシステム管理アプリケーション部３４は、ＦＴＰシステムコア３８と入力装３１、出力装置３２とを接続するソフトウエアであり、インターフェース６１、ユーザ登録部６２、通信相手情報管理部６３、暗号文ファイルを平文表示する表示部６４及び入出力制御部６５から構成されている。
【００５６】
入出力制御部６５からインターフェース６１を介してＦＴＰシステムコア３８でユーザ登録を行い、ユーザ登録が完了すると、ＦＴＰシステムコア３８からユーザ登録完了通知が、インターフェース６１を介してユーザ登録部６２に送られ、ユーザ登録と鍵交換が完了していることを認識する。
また、平文での表示部６４は、記憶メディア３９に暗号文で保存されているファイルを平文に変えて、出力装置３２の表示画面に表示させる機能を有している。
【００５７】
また、通信相手情報管理部６３は、ＦＴＰシステムコア３８からの通信相手情報を受け取り、これを管理する。また、設定部６６は、ＦＴＰメッセージを受信し、これを暗号化する部分と暗号化しない部分に分ける設定を行うとともに、ＦＴＰサーバ装置Ｂから受信したファイルデータのうち、ディレクトリ情報以外のファイル情報をも復号化するかしないかの設定を行う。
【００５８】
＜ＦＴＰシステムの流れ（クライアント側：初回）の説明＞
次に、図７、図８に基づいて、ＦＴＰクライアント装置ＡがＦＴＰサーバ装置Ｂからファイルデータをダウンロードする際のクライアント側のＦＴＰシステムの流れ（初回）を説明する。ここで、「初回」としたのは、２回目以降、この手続は不要となることを意味している。ここで説明するのは、クライアント装置Ａ側のＴＣＰ２ドライバ３５Ａの動作説明が中心となるので、クライアント側を表す‘Ａ’を付けて説明し、後述するＦＴＰサーバ側のシステムの説明（‘Ｂ’を付加）と区別することとする。
【００５９】
まず、ＦＴＰシステム管理アプリケーション部３４Ａの設定部６６Ａにおいて、ＦＴＰメッセージの暗号化または非暗号化する部分が設定される（ステップＳ１）。この設定は、使用しているネットワーク環境に応じて設定される。また、ステップＳ１においては、ＦＴＰサーバ装置Ｂから受信したファイルデータを復号化するか、しないかの設定も設定部６６Ａが行うことになる。なお、この設定は、ＴＣＰ２のダウンロードサーバから取得することもできる。また、設定データを保存したＦＤ，ＣＤ、ＵＳＢメモリから取得することも可能である。
【００６０】
ＦＴＰシステムコア３８Ａは、ＦＴＰシステム管理アプリケーション部３４Ａから送られる設定情報を基に、鍵元値を作成し、これを記憶メディア３９Ａに保存する（ステップＳ２）。そして、ＦＴＰシステムコア３８ＡからＴＣＰ２コア３７Ａに対してＦＴＰのサーチ要求がなされる。このサーチ要求を受けて、ＴＣＰ２コア３７Ａは、指定通信ポートをサーチし（ステップＳ３）、ＦＴＰのパケットであると認識すれば、後述するようにＦＴＰシステムコア３８にサーチしたポートを通知する。
【００６１】
ここで、ＦＴＰクライアント装置Ａは、ＦＴＰサーバ装置Ｂから送られるファイルのダウンロードの要求を行う（ステップＳ４）。まず、ＦＴＰ接続要求（ＦＴＰ  ＩＰアドレスｏｒホスト名）をＦＴＰサーバ装置Ｂに送信する。ここで「ＦＴＰ  ＩＰアドレスｏｒホスト名」は「ＩＰアドレスｏｒホスト名」のＦＴＰサーバに対して接続を要求するＦＴＰコマンドである。ＴＣＰ２コア３７Ａは、この送信されたＦＴＰ接続要求を受信し、ＦＴＰメッセージからＦＴＰのポートであることを認識すると、サーチ結果をＦＴＰシステムコア３８Ａに通知する（ステップＳ５）。また、ＦＴＰ接続要求のパケットをＦＴＰシステムコア３８Ａに送る。
【００６２】
ＦＴＰシステムコア３８Ａは、ＴＣＰ２コア３７Ａのサーチ結果を受けて、ＴＣＰ２コア３７Ａにパケットのインターセプトを要求するとともに、ＦＴＰサーバに対して、ＦＴＰ接続要求メッセージ（ＦＴＰクライアントのＩＰアドレスとホスト名）に鍵元値を付加してＦＴＰサーバ装置Ｂに送る（ステップＳ６）。
【００６３】
ＴＣＰ２コア３７ＡはＦＴＰシステムコア３８Ａからの要求を受けて、パケットのインターセプトを開始する（ステップＳ７）。この段階で、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置ＢへのＴＣＰ通信が確立されることになる。すなわち、「ポート２１」への接続が完了する。
続いて、ＦＴＰサーバ装置ＢからＦＴＰクライアント装置Ａに、応答コード「２２０」が発せられる。この応答コード「２２０」は、サービスが新規ユーザに対して使用可能であること（「ＦＴＰ  server ready」）を通知するＦＴＰの応答コードである。
【００６４】
ＴＣＰ２コア３７Ａは、ＦＴＰ接続応答のパケットを確認し、そのパケットをＦＴＰシステムコア３８Ａに送る（ステップＳ８）。ＦＴＰシステムコア３８Ａは、その認証／分析部５０Ａで「２２０」応答コードと「ＦＴＰ」メッセージを分析し、ＦＴＰ応答メッセージに付加されている鍵元値とＦＴＰシステムコアに保存されている鍵元値から、新たな鍵を生成する。この鍵の生成は、ＦＴＰシステムコア３８Ａの中の鍵交換部５３Ａで行われる。この新たに生成された鍵は記憶メディア３９Ａに保存される。また、ＦＴＰサーバ装置ＢのＩＰアドレスとポート番号を記憶メディア３９Ａに保存する（ステップＳ９）。そして、ＦＴＰサーバ装置Ｂから送られた「２２０」の応答コード「ＦＴＰ  server ready」をＦＴＰクライアント装置Ａに送る。
【００６５】
次に、ＦＴＰクライアント装置Ａから、ＦＴＰサーバ装置Ｂに対して、ユーザＩＤ（「ＵＳＥＲ  ユーザ名」）が送信される。ここで「ＵＳＥＲ  ユーザ名」は指定のユーザ名でログインすることを告げるＦＴＰコマンドである。この時、ＴＣＰ２コア３７Ａは、このユーザＩＤのパケットを確認し（ステップＳ１０）、ＦＴＰクライアント装置Ａからの「ＵＳＥＲ」メッセージをＦＴＰシステムコア３８Ａに送る。ＦＴＰシステムコア３８Ａは、この「ＵＳＥＲ」メッセージを分析し、記憶メディア３９Ａ（図５参照）に、ユーザＩＤを一時的に保存（仮保存）しておく（ステップＳ１１）。ここで、一時的に保存とは、パスワードの確認等によって認証ができていない段階、すなわち、認証後の正式な保存の前段階の保存を意味している。そして、ユーザＩＤをＦＴＰサーバ装置Ｂに送る。
【００６６】
ＦＴＰサーバ装置Ｂからは、このユーザＩＤに対する応答として、パスワードを求める「３３１」応答コードが出される。すなわち、「３３１  Password required for  ユーザ名」というものである。ＴＣＰ２コア３７Ａは、このユーザＩＤ応答のパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ１２）。ＦＴＰシステムコア３８Ａは、この「３３１」メッセージを分析し、暗号文であればこれを復号化する（ステップＳ１３）。なお、平文の場合は特別な処理をしない。そして、「３３１」応答コード（「３３１  Password required for  ユーザ名」）をＦＴＰクライアント装置Ａに送る。
【００６７】
続いて、ＦＴＰクライアント装置Ａからパスワードが送信され、ＴＣＰ２コア３７Ａでこれを確認する（ステップＳ１４）。そして、この確認したパスワードをＦＴＰシステムコア３８Ａに送る。ＦＴＰシステムコア３８Ａは、「ＰＡＳＳ」メッセージを分析し、記憶メディア３９Ａにパスワードを仮保存する（ステップＳ１５）。また、ＦＴＰシステムコア３８Ａは、その設定部６６Ａ（図６参照）で設定された内容にしたがって、暗号化／非暗号化の処理を行う。
【００６８】
すなわち、上述したように、ルータやファイアオール等のパケットフィルタリング機能を持つ中継装置がある場合であれば、ルータやファイアオールがＦＴＰのデータセッションの待ち受けポートを認識するので、必要なＦＴＰコマンドとＦＴＰ応答コードを暗号化せずに平文のまま送信する。ＦＴＰシステムコア３８Ａは、暗号化するか、暗号化しないかを設定する設定部６６Ａ（図６参照）を有し、この設定部６６Ａで、最初に一部のＦＴＰコマンドとＦＴＰ応答コードについて、「暗号化するか／あるいは暗号化しないか」の設定を行うようにしている。そして、パスワードをＦＴＰサーバ装置Ｂに送る。
【００６９】
次に、このパスワードを受信したＦＴＰサーバ装置Ｂは、ログインが完了したことを告げる「２３０」応答コードをＦＴＰクライアント装置Ａに送る。ＴＣＰ２コア３７Ａは、このパスワード応答のパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ１６）。ＦＴＰシステムコア３８Ａは、「２３０」メッセージを分析し、記憶メディア３９Ａに仮保存してあったユーザＩＤとパスワードを正式に保存する（ステップＳ１７）。そして、ＦＴＰクライアント装置Ａにユーザ名がログインされたことを通知する。
【００７０】
続いて、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂに対して、カレントディレクトリの表示、つまり現在のワーキングディレクトリを示すＦＴＰコマンド「ＰＷＤ」が送られる。ＴＣＰ２コア３７Ａは、このカレントディレクトリの表示のパケットを確認し、その結果をＦＴＰシステムコア３８Ａに送る（ステップＳ１８）。
ＦＴＰシステムコア３８Ａは、この「ＰＷＤ」メッセージを分析し、設定にしたがって暗号化／非暗号化の処理を行う（ステップＳ１９）。ＦＴＰシステムコア３８Ａは、「ＰＷＤ」メッセージの分析と暗号化／非暗号化処理を終えると、「ＰＷＤ」をＦＴＰサーバ装置Ｂに送る。
【００７１】
これを受けてＦＴＰサーバ装置Ｂは、カレントディレクトリの表示応答「２５７」を発生する。この応答コード「２５７」は、パスが作成されたことを伝える応答コードであり、例えば「“/home /fred/ ”is current directory」という表示応答になる。ＴＣＰ２コア３７Ａは、このカレントディレクトリの表示応答のパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ２０）。
ＦＴＰシステムコア３８Ａは、この「２５７」メッセージを分析し、暗号文であれば復号化処理を行う。平文であればそのままの状態で特別な処理を施さない（ステップＳ２１）。そして、「２５７」応答コードをＦＴＰクライアント装置Ａに送る。
【００７２】
続いて、図８に進み、クライアント側のＦＴＰシステムの流れ（初回）の第２段階について説明する。
第２段階では、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂに対して、「ＰＯＲＴ  ＩＰアドレスとポート番号」というＦＴＰコマンドが送られる。このコマンドは、データコネクションで使用するＩＰアドレス（通常はクライアント）とポート番号を指示するコマンドである。この命令を受けると、ＴＣＰ２コア３７Ａは、ＩＰアドレスとポート番号のパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ２２）。ＦＴＰシステムコア３８Ａは、「ＰＯＲＴ」メッセージを分析し、設定部６６Ａ（図６参照）の設定に従って暗号化／非暗号化処理を行う。そして、この「ＰＯＲＴ  ＩＰアドレスとポート番号」メッセージをＦＴＰサーバ装置Ｂに送る（ステップＳ２３）。
【００７３】
これに対して、ＦＴＰサーバ装置Ｂは、コマンドの使用が可能になったことを告げる応答コード「２００」を発生する。ＴＣＰ２コア３７Ａはこの応答コード「２００」のパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ２４）。ＦＴＰシステムコア３８Ａは、認証／分析部５０で「２００」メッセージを分析し、その復号化部５２で暗号文の復号化処理を行う（ステップＳ２５）。そして、この応答コード「２００」をＦＴＰクライアント装置Ａに送る。
【００７４】
続いて、ＦＴＰクライアント装置Ａからダウンロード要求を求める「ＲＥＴＲ  ファイル名」のメッセージがＦＴＰサーバ装置Ｂに向けて発信される。「ＲＥＴＲ  ファイル名」は、指定した内容のファイルをＦＴＰサーバ装置Ｂから取得することを命じるＦＴＰコマンドである。ＴＣＰ２コア３７Ａは、このコマンドを受けてＦＴＰコマンドメッセージパケットの確認部４４Ａでこのパケットの確認を行い、このコマンドをＦＴＰシステムコア３８Ａに送る（ステップＳ２６）。
【００７５】
ＦＴＰシステムコア３８Ａは、その認証／分析部５０Ａでコマンド「ＲＥＴＲ」メッセージを分析し、記憶メディア３９Ａに記憶されている設定情報に従って、暗号化処理を行う（ステップＳ２７）。そして、このコマンド「ＲＥＴＲ」をＦＴＰサーバ装置Ｂに送る。この段階でポート２０への接続が完成し、ＦＴＰクライアント装置ＡとＦＴＰサーバ装置ＢとのデータセッションのＴＣＰ通信が確立されたこととなる。
【００７６】
ＦＴＰサーバ装置ＢからＦＴＰクライアント装置Ａに対して、応答コード「１５０」が発信される。この応答コード「１５０」は、アスキーモードのデータを送信する通知（「１５０  ASCII data connectionファイル名」）であり、「ファイルの送信が正常に開始されること、及びデータ接続がオープンであることを示す」コードである。
ＴＣＰ２コア３７Ａは、その応答メッセージパケットの確認部４５Ａで、この応答コード「１５０」のパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ２８）。ＦＴＰシステムコア３８Ａは、その認証／分析部５０において、この「１５０」メッセージを分析し、暗号文の復号化処理を行う（ステップＳ２９）。そして、この「１５０」応答コードをＦＴＰクライアント装置Ａに送る。
【００７７】
続いて、ＦＴＰサーバ装置Ｂからクライアント装置Ａにファイルデータが送信される。このファイルデータを受信したＴＣＰ２コア３８Ａは、ＦＴＰ応答メッセージパケットの確認部４５Ａでファイルデータのパケット確認を行い、これをＦＴＰシステムコア３８Ａに送る（ステップＳ３０）。ＦＴＰシステムコア３８Ａは、その認証／分析部５０Ａにおいて、このファイルデータを分析し、記憶メディア３９Ａに保存されている設定情報に従って復号化処理、あるいは復号化しないで処理を行う（ステップＳ３１）。ここで、復号化するか、あるいは復号化しないで暗号のまま送信するかの決定はシステムが行うこととなる。そして、ファイルデータをＦＴＰクライアント装置Ａに送る。
【００７８】
この段階でＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂは、ポート２０から切断され、データセッションのＴＣＰ通信が切断される。
続いて、ＦＴＰサーバ装置Ｂから、データ転送の終了を告げる「２２６」応答コードがＦＴＰクライアント装置Ａに送られる。この「２２６」応答コードは、「２２６  ASCII Transfer complete」と記述されるもので、データの接続がクローズであること、及び要求されたファイルの処理が正常に完成したことを通知する応答コードである。
【００７９】
ＴＣＰ２コア３７Ａは、応答コードメッセージ確認部４５Ａで、この「２２６」応答コードのパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ３２）
ＦＴＰシステムコア３８Ａは、その認証／分析部５０Ａで「２２６」応答コードを分析し、暗号文を復号化し、「２２６」応答コードをＦＴＰクライアント装置Ａに送る（ステップＳ３３）。
【００８０】
最後に、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂに向けて、接続を解除することを伝える終了宣言（ＱＵＩＴ）が送られる。この終了宣言は、ログアウトすることを告げるＦＴＰコマンドであり、ＴＣＰ２コア３７Ａはこの終了宣言をそのＦＴＰコマンドメッセージ確認部４４Ａで確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ３４）。
【００８１】
ＦＴＰシステムコア３８Ａは、その認証／分析部５０Ａで、この「ＱＵＩＴ」メッセージを分析し、暗号化処理を行い、終了宣言（ＱＵＩＴ）をネットワーク４０に接続されているＦＴＰサーバＢに送る（ステップＳ３５）。その後、ＦＴＰサーバ装置Ｂからコネクションの終了を告げる終了宣言応答「２２１」メッセージがＦＴＰクライアント装置ＡのＴＣＰ２コア３７Ａに送られる。ＴＣＰ２コア３７Ａは、この終了宣言応答のパケットを確認し（ステップＳ３６）、この結果をＦＴＰシステムコア３８Ａに送る。
【００８２】
ＦＴＰシステムコア３８Ａは、ＴＣＰ２コア３７Ａからの「２２１」メッセージを分析して、暗号文を復号化し、終了宣言応答である「２２１」メッセージをＦＴＰクライアント装置Ａに送る（ステップＳ３７）。この段階で、ポート２１の接続も切断され、ＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂ間のＴＣＰ通信の制御セッションが切断される。
以上が、ＦＴＰシステムのクライアント側の流れ（初回のみ）の説明である。
【００８３】
＜ＦＴＰシステムの流れ（サーバ側：初回）の説明＞
次に、図９、図１０に基づいて、ＦＴＰクライアントがＦＴＰサーバからファイルデータをダウンロードする際のサーバ側のＦＴＰシステムの流れ（初回）について説明する。ここでの説明は、図７、図８で説明したクライアント側の説明と同じであるが、ここで説明するのは、ＦＴＰサーバ装置Ｂ側のＴＣＰ２ドライバ３５Ｂの動作説明が中心となるので、サーバ側を表す‘Ｂ’を付けて説明する。
【００８４】
まず、ＦＴＰサーバ装置ＢのＦＴＰシステム管理アプリケーション部３４Ｂの設定部６６Ｂにおいて、ＦＴＰメッセージの暗号化または非暗号化する部分が設定される（ステップＳ４０）。この設定は、使用しているネットワーク環境に応じて設定される。また、ステップＳ４０においては、ＦＴＰサーバ装置Ｂから受信したファイルデータを復号化するか、しないかの設定も設定部６６Ｂが行うことになる。なお、この設定は、ＴＣＰ２のダウンロードサーバから取得することもできる。また、設定データを保存したＦＤ，ＣＤ、ＵＳＢメモリから取得することも可能である。
【００８５】
ＦＴＰシステムコア３８Ｂは、ＦＴＰシステム管理アプリケーション部３４Ｂから送られる設定情報を基に、鍵元値を作成し、これを記憶メディア３９Ｂに保存する（ステップＳ４１）。その後、ＦＴＰシステムコア３８ＢからＴＣＰ２コア３７Ｂに対してＦＴＰのサーチ要求がなされる。このサーチ要求を受けて、ＴＣＰ２コア３７Ｂは、指定通信ポートをサーチする（ステップＳ４２）。
【００８６】
次に、ＦＴＰクライアント装置Ａより、ＦＴＰ接続要求がＦＴＰサーバ装置Ｂに送信される。ＦＴＰサーバ装置ＢのＴＣＰ２コア３７Ｂは、この送信されたＦＴＰ接続要求を受信し、そのＦＴＰメッセージからＦＴＰのポートであることを認識する。そして、ステップＳ４２のサーチ結果をＦＴＰシステムコア３８Ｂに通知する（ステップＳ４３）。また、ＦＴＰ接続要求のパケットをＦＴＰシステムコア３８Ｂに送る。
【００８７】
ＦＴＰシステムコア３８Ｂは、ＴＣＰ２コア３７Ｂのサーチ結果を受けて、ＴＣＰ２コア３７Ｂにパケットのインターセプトを要求する。また、ＦＴＰ接続要求メッセージに付加されている鍵元値とＦＴＰシステムコアに保存されている鍵元値から、新たな鍵を生成する。この鍵の生成は、ＦＴＰシステムコア３８Ｂの中の鍵交換部５３Ｂで行われる。そして、新たに生成された鍵を記憶メディア３９Ｂに保存する。また、ＦＴＰクライアント装置ＡのＩＰアドレスが記憶メディア３９Ｂに保存される（以上、ステップＳ４４）。これらの処理が終了すると、ＦＴＰシステムコア３８ＢはＦＴＰ接続要求をＦＴＰサーバ装置Ｂに送る。ＴＣＰ２コア３７ＢはＦＴＰシステムコア３８Ｂからのパケットのインターセプト要求を受けて、パケットのインターセプトを開始する（ステップＳ４５）。
【００８８】
この段階で、「ポート２１」への接続が完了し、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置ＢへのＴＣＰ通信が確立される。続いて、ＦＴＰサーバ装置ＢからＦＴＰクライアント装置Ａに、応答コード「２２０」が発せられる。この応答コード「２２０」は、サービスが新規ユーザに対して使用可能であること（「ＦＴＰ  server ready」）を通知するＦＴＰの応答コードである。
【００８９】
ＦＴＰサーバ装置Ｂから応答コード「２２０」を受けたＴＣＰ２コア３７Ｂは、ＦＴＰ接続応答コード「２２０」のパケットを確認し、その結果をＦＴＰシステムコア３８Ｂに送る（ステップＳ４６）。ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂで「２２０」応答コードと「ＦＴＰ」メッセージを分析し、ＦＴＰ接続応答メッセージ（「ＦＴＰ  server ready」）に鍵元値を付加してＦＴＰクライアント装置Ａに送る（ステップＳ４７）。
【００９０】
次に、ＦＴＰクライアント装置Ａから、ＦＴＰサーバ装置Ｂに向けてユーザＩＤ「ＵＳＥＲ  ユーザ名」が送信される。ここで「ＵＳＥＲ  ユーザ名」は指定のユーザ名でログインすることを告げるＦＴＰコマンドである。このユーザＩＤ（ユーザ名）を受信したＦＴＰサーバ装置ＢのＴＣＰ２コア３７Ｂは、そのＦＴＰコマンドメッセージ確認部４４Ｂで、このユーザＩＤのパケットを確認し（ステップＳ４８）、ＦＴＰクライアント装置Ａからの「ＵＳＥＲ」メッセージをＦＴＰシステムコア３８Ｂに送る。ＦＴＰシステムコア３８Ｂは、認証／分析部５０Ｂで、この「ＵＳＥＲ」メッセージを分析し、ユーザＩＤを記憶メディア３９Ａ（図５参照）に一時的に保存（仮保存）する（ステップＳ４９）。ここで、一時的に保存とは、パスワードの確認等によって認証ができていない段階、すなわち、認証後の正式な保存の前段階の保存を意味している。そして、ユーザＩＤをＦＴＰサーバ装置Ｂに送る。
【００９１】
次に、ＦＴＰサーバ装置Ｂから、このユーザＩＤに対する応答として、パスワードを求める「３３１」応答コードが出される。すなわち、「３３１  Password required for  ユーザ名」というものである。ＴＣＰ２コア３７Ｂは、このユーザＩＤ応答のパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ５０）。ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂで「３３１」メッセージを分析し、記憶メディア３９Ｂに記憶されている設定情報に従った処理（暗号化または非暗号化処理）を行う（ステップＳ５１）。
【００９２】
すなわち、上述したように、ルータやファイアオール等のパケットフィルタリング機能を持つ中継装置がある場合であれば、ルータやファイアオールがＦＴＰのデータセッションの待ち受けポートを認識するので、必要なＦＴＰコマンドとＦＴＰ応答コードを暗号化せずに平文のまま送信する。ＦＴＰシステムコア３８Ｂの記憶メディア３９Ｂには、暗号化されるＦＴＰコマンドとＦＴＰ応答コード、及び暗号化されないＦＴＰコマンドとＦＴＰ応答コードが設定情報として記憶されている。
この設定情報は、ＦＴＰシステムアプリケーション部３５Ｂの設定部６６Ｂ（図６参照）で設定される情報である。この設定情報に基づいて、ＦＴＰシステムコア３８Ｂは、「ＰＷＤ」メッセージの分析を行い、暗号化または非暗号化処理を行う。そして、「３３１」応答コード（「３３１  Password required for  ユーザ名」）をＦＴＰクライアント装置Ａに送る。
【００９３】
続いて、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂにパスワード「ＰＡＳＳ」が送信される。ＦＴＰサーバ装置ＢのＴＣＰ２コア３７Ｂは、この受信したパスワードのパケットを確認し（ステップＳ５２）、この確認したパスワードをＦＴＰシステムコア３８Ｂに送る。ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂで「ＰＡＳＳ」メッセージを分析し、暗号文であれば複号化し、平文であれば特別な処理を施さない。また、記憶メディア３９Ｂにパスワードを仮保存する（ステップＳ５３）。そして、パスワードをＦＴＰサーバ装置Ｂに送る。
【００９４】
次に、このパスワードを受信したＦＴＰサーバ装置Ｂは、ログインが完了したことを告げる「２３０」応答コードをＦＴＰクライアント装置Ａに送る。ＴＣＰ２コア３７Ｂは、そのＦＴＰ応答メッセージパケットの確認部４５Ｂで、パスワード応答のパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ５４）。ＦＴＰシステムコア３８Ｂは、この「２３０」メッセージを分析し、記憶メディア３９Ｂに保存されている設定情報にしたがって「暗号化または非暗号化」の処理を行う。そして、ステップＳ４９で一時的に保存していたユーザＩＤとパスワードを正式なものとして記憶メディア３９Ｂに保存する（ステップＳ５５）。これらの処理を終えると、ＦＴＰクライアント装置Ａにユーザ名がログインされたことを通知する。
【００９５】
続いて、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂに対して、カレントディレクトリの表示、つまり現在のワーキングディレクトリを示すＦＴＰコマンド「ＰＷＤ」が送られる。ＴＣＰ２コア３７Ｂは、このカレントディレクトリの表示のパケットを確認し、その結果をＦＴＰシステムコア３８Ｂに送る（ステップＳ５６）。
ＦＴＰシステムコア３８Ｂは、この「ＰＷＤ」メッセージを分析し、暗号文であれば復号化し、平文であれば特別な処理を施さない（ステップＳ５７）。そして、「ＰＷＤ」をＦＴＰサーバ装置Ｂに送る。
【００９６】
ＦＴＰサーバ装置Ｂは、ＦＴＰクライアント装置Ａからの「ＰＷＤ」（現在のディレクトリ情報）を受け取ると、カレントディレクトリの表示応答「２５７」を発生する。この応答コード「２５７」は、パスが作成されたことを伝える応答コードであり、例えば「“/home /fred/ ”is current directory」という表示応答になる。ＴＣＰ２コア３７Ｂは、このカレントディレクトリの表示応答のパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ５８）。
ＦＴＰシステムコア３８Ｂは、この「２５７」メッセージを分析し、設定にしたがって暗号化または非暗号化処理を行う（ステップＳ５９）。そして、「２５７」応答コードをＦＴＰクライアント装置Ａに送る。
【００９７】
続いて、図１０に進み、サーバ側のＦＴＰシステムの流れ（初回）の第２段階について説明する。
第２段階では、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂに対して、「ＰＯＲＴ  ＩＰアドレスとポート番号」というＦＴＰコマンドが送られる。このコマンドは、データコネクションで使用するＩＰアドレス（通常はクライアント）とポート番号を指示するコマンドである。この命令を受けたＦＴＰサーバ装置ＢのＴＣＰ２コア３７Ｂは、ＩＰアドレスとポート番号のパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ６０）。ＦＴＰシステムコア３８Ｂは、「ＰＯＲＴ」メッセージを分析し、暗号文であれば復号化し、平文であれば特別な処理を施さない。そして、この「ＰＯＲＴ  ＩＰアドレスとポート番号」メッセージをＦＴＰサーバ装置Ｂに送る（ステップＳ６１）。
【００９８】
これに対して、ＦＴＰサーバ装置Ｂは、コマンドの使用が可能になったことを告げる応答コード「２００」を発生する。ＴＣＰ２コア３７Ｂはこの応答コード「２００」のパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ６２）。ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂで「２００」メッセージを分析し、暗号化処理を行う（ステップＳ６３）。そして、この応答コード「２００」をＦＴＰクライアント装置Ａに送る。
【００９９】
続いて、ＦＴＰクライアント装置Ａからダウンロード要求を求める「ＲＥＴＲ  ファイル名」のメッセージがＦＴＰサーバ装置Ｂに向けて発信される。「ＲＥＴＲ  ファイル名」は、指定した内容のファイルをＦＴＰサーバ装置Ｂから取得することを命じるＦＴＰコマンドである。ＴＣＰ２コア３７Ｂは、このコマンドを受けてＦＴＰコマンドメッセージパケットの確認部４４Ｂでこのパケットの確認を行い、このコマンドをＦＴＰシステムコア３８Ｂに送る（ステップＳ６４）。
【０１００】
ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂでコマンド「ＲＥＴＲ」メッセージを分析し、暗号文の復号化処理を行い、コマンド「ＲＥＴＲ」をＦＴＰサーバ装置Ｂに送る（ステップＳ６５）。この段階でポート２０への接続が完了し、ＦＴＰサーバ装置ＢとＦＴＰクライアント装置ＡとのデータセッションのＴＣＰ通信が確立される。
【０１０１】
続いて、ＦＴＰサーバ装置ＢからＦＴＰクライアント装置Ａに対して、応答コード「１５０」が発信される。この応答コード「１５０」は、アスキーモードのデータを送信する通知（「１５０  ASCII data connectionファイル名」）であり、「ファイルの送信が正常に開始されること、及びデータ接続がオープンであることを示す」コードである。
ＴＣＰ２コア３７Ｂは、その応答メッセージパケットの確認部４５Ｂで、この応答コード「１５０」のパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ６６）。ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂにおいて、この「１５０」メッセージを分析し、暗号化を行う（ステップＳ６７）。そして、この「１５０」応答コードをＦＴＰクライアント装置Ａに送る。
【０１０２】
続いて、ＦＴＰサーバ装置Ｂからクライアント装置Ａにファイルデータが送信される。このファイルデータを受信したＴＣＰ２コア３８Ｂは、ＦＴＰ応答メッセージパケットの確認部４５Ｂでファイルデータのパケット確認を行い、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ６８）。ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂにおいて、このファイルデータを分析し、これを暗号化した後（ステップＳ６９）、ファイルデータをＦＴＰクライアント装置Ａに送る。
【０１０３】
この段階でＦＴＰサーバ装置ＢとＦＴＢクライアント装置Ａは、ポート２０から切断され、データセッションのＴＣＰ通信が切断される。
続いて、ＦＴＰサーバ装置Ｂから、データ転送の終了を告げる「２２６」応答コードがＦＴＰクライアント装置Ａに送られる。この「２２６」応答コードは、「２２６  ASCII Transfer complete」と記述されるもので、データの接続がクローズであること、及び要求されたファイルの処理が正常に完成したことを通知する応答コードである。
【０１０４】
ＴＣＰ２コア３７Ｂは、応答コードメッセージ確認部４５Ｂで、この「２２６」応答コードのパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ７０）。
ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂで「２２６」応答コードを分析し、暗号化処理を行う。そして、「２２６」応答コードをＦＴＰクライアント装置Ａに送る（ステップＳ７１）。
【０１０５】
最後に、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂに向けて、接続を解除することを伝える終了宣言（ＱＵＩＴ）が送られる。この終了宣言は、ログアウトすることを告げるＦＴＰコマンドであり、ＴＣＰ２コア３７Ｂはこの終了宣言をそのＦＴＰコマンドメッセージ確認部４４Ｂで確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ７２）。
【０１０６】
ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂで、この「ＱＵＩＴ」メッセージを分析し、暗号文を復号化し、終了宣言（ＱＵＩＴ）をＦＴＰサーバＢに送る（ステップＳ７３）。その後、ＦＴＰサーバ装置Ｂからコネクションの終了を告げる終了宣言応答「２２１」メッセージがＦＴＰサーバ装置ＢのＴＣＰ２コア３７Ｂに送られ、ＴＣＰ２コア３７Ｂは、この終了宣言応答のパケットを確認し（ステップＳ７４）、この結果をＦＴＰシステムコア３８Ｂに送る。
【０１０７】
ＦＴＰシステムコア３８Ｂは、ＴＣＰ２コア３７Ｂからの「２２１」メッセージを分析して、暗号化処理を行う（ステップＳ７５）。その後、終了宣言応答である「２２１」メッセージをＦＴＰクライアント装置Ａに送る。この段階で、ポート２１の接続も切断され、ＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂ間のＴＣＰ通信の制御セッションが切断される。
以上が、ＦＴＰシステムのサーバ側の流れ（初回のみ）の説明である。
【０１０８】
以上、ＦＴＰシステムのクライアント側（図７、８）とサーバ側（図９、１０）の初回の流れを説明した。次に、２回目以降の流れを説明する。
＜ＦＴＰシステムの流れ（クライアント側：２回目以降）の説明＞
まず、図１１、図１２に基づいて、ＦＴＰクライアントがＦＴＰサーバからファイルデータをダウンロードする際のクライアント側のＦＴＰシステムの流れ（２回目以降）について説明する。初回のときと同様に、クライアント装置Ａ側のＴＣＰ２ドライバ３５、ＴＣＰ２コア３７、ＦＴＰシステムコア３８等には、クライアント側を表す‘Ａ’を付けて説明し、後述するＦＴＰサーバ側のシステムには‘Ｂ’を付加して説明する。
【０１０９】
まず、クライアント装置ＡのＦＴＰシステムコア３８ＡからＴＣＰ２コア３７Ａに対してＦＴＰのフック要求が出される。ＴＣＰ２コア３７Ａは、このフック要求を受けて、登録してある全ユーザのＦＴＰサーバのＩＰアドレスとポート番号を含むパケットを捕捉（フック）する（ステップＳ８０）。ここで、ＦＴＰクライアント装置Ａは、ＦＴＰサーバ装置Ｂからファイルのダウンロードを行う。
【０１１０】
その後、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂへ、ＦＴＰ接続要求が送信される。その際に、クライアント装置ＡのＴＣＰ２コア３７Ａは、この送信されたＦＴＰ接続要求を受け付け、ＦＴＰメッセージからＦＴＰのパケットであることを認識してパケットをフックする。そして、フック結果をＦＴＰシステムコア３８Ａに通知する（ステップＳ８１）。また、ＦＴＰ接続要求のパケットをＦＴＰシステムコア３８Ａに送る。
【０１１１】
ＦＴＰシステムコア３８Ａは、ＴＣＰ２コア３７Ａのフック結果を受けて、ＴＣＰ２コア３７Ａにパケットのインターセプトを要求するとともに、ＦＴＰサーバ装置ＢにＦＴＰ接続要求を送る。また、ＦＴＰシステムコア３８Ａは、その認証／分析部５０ＡでＦＴＰメッセージを分析し、記憶メディア３９Ａに保存されている設定情報にしたがって暗号化あるいは非暗号化処理を行う（ステップＳ８２）。すなわち、上述したように、ルータやファイアオール等のパケットフィルタリング機能を持つ中継装置がある場合であれば、ルータやファイアオールがＦＴＰのデータセッションの待ち受けポートを認識するので、必要なＦＴＰコマンドとＦＴＰ応答コードを暗号化せずに平文のまま送信する。
【０１１２】
ＴＣＰ２コア３７Ａは、ＦＴＰシステムコア３８Ａからのインターセプトの要求を受けて、パケットのインターセプトを開始する（ステップＳ８３）。この段階で、「ポート２１」への接続が完了し、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置ＢへのＴＣＰ通信が確立される。
続いて、ＦＴＰサーバ装置ＢからＦＴＰクライアント装置Ａに、応答コード「２２０」が発せられる。この応答コード「２２０」は、サービスが新規ユーザに対して使用可能であること（「ＦＴＰ  server ready」）を通知するＦＴＰの応答コードである。
【０１１３】
ＴＣＰ２コア３７Ａは、ＦＴＰ接続応答のパケットを確認し、その結果をＦＴＰシステムコア３８Ａに送る（ステップＳ８４）。ＦＴＰシステムコア３８Ａは、その認証／分析部５０Ａで「２２０」応答コードと「ＦＴＰ」メッセージを分析し、暗号文であれば復号化し、平文であれば特別な処理を施さない（ステップＳ８５）。そして、ＦＴＰサーバ装置Ｂから送られた「２２０」の応答コード「ＦＴＰ  server ready」をＦＴＰクライアント装置Ａに送る。
【０１１４】
次に、ＦＴＰクライアント装置Ａから、ＦＴＰサーバ装置ＢにユーザＩＤ（「ＵＳＥＲ  ユーザ名」）が送信される。ここで「ＵＳＥＲ  ユーザ名」は指定のユーザ名でログインすることを告げるＦＴＰコマンドである。ＴＣＰ２コア３７Ａは、このユーザＩＤのパケットを確認し（ステップＳ８６）、この「ＵＳＥＲ」メッセージをＦＴＰシステムコア３８Ａに送る。ＦＴＰシステムコア３８Ａは、この「ＵＳＥＲ」メッセージを分析し、記憶メディア３９Ａに記憶されている設定情報に基づいて、暗号化処理または非暗号化処理を行う（ステップＳ８７）。そして、ユーザＩＤをＦＴＰサーバ装置Ｂに送る。
【０１１５】
続いて、ＦＴＰサーバ装置Ｂから、このユーザＩＤに対する応答として、パスワードを求める「３３１」応答コードが出される。この応答コードは、「３３１  Password required for  ユーザ名」というものである。ＴＣＰ２コア３７Ａは、このユーザＩＤ応答のパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ８８）。ＦＴＰシステムコア３８Ａは、この「３３１」メッセージを分析し、暗号文であればこれを復号化する（ステップＳ８９）。なお、平文の場合は復号化する必要がないので特別な処理を施さない。そして、「３３１」応答コード（「３３１  Password required for  ユーザ名」）をＦＴＰクライアント装置Ａに送る。
【０１１６】
続いて、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂにパスワードが送信される。ＴＣＰ２コア３７Ａはこのパスワードを確認し（ステップＳ９０）、この確認したパスワードをＦＴＰシステムコア３８Ａに送る。ＦＴＰシステムコア３８Ａは、「ＰＡＳＳ」メッセージを分析し、記憶メディア３９Ａに保存されている設定情報にしたがって暗号化処理または非暗号化処理を行う（ステップＳ９１）。そして、パスワードをＦＴＰサーバ装置Ｂに送る。
【０１１７】
次に、このパスワードを受信したＦＴＰサーバ装置Ｂは、ログインが完了したことを告げる「２３０」応答コードをＦＴＰクライアント装置Ａに送る。ＴＣＰ２コア３７Ａは、このパスワード応答のパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ９２）。ＦＴＰシステムコア３８Ａは、「２３０」メッセージを分析し、暗号文であれば復号化処理を行い、平文であれば特別な処理を施さない（ステップＳ９３）。そして、ＦＴＰクライアント装置Ａにユーザ名がログインされたことを通知する。
【０１１８】
続いて、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂに対して、カレントディレクトリの表示、つまり現在のワーキングディレクトリを示すＦＴＰコマンド「ＰＷＤ」が送られる。ＴＣＰ２コア３７Ａは、このカレントディレクトリの表示のパケットを確認し、その結果をＦＴＰシステムコア３８Ａに送る（ステップＳ９４）。
ＦＴＰシステムコア３８Ａは、この「ＰＷＤ」メッセージを分析し、設定にしたがって暗号化／非暗号化の処理を行う（ステップＳ９５）。そして、「ＰＷＤ」をＦＴＰサーバ装置Ｂに送る。
【０１１９】
これを受けてＦＴＰサーバ装置Ｂは、カレントディレクトリの表示応答「２５７」を発生する。この応答コード「２５７」は、パスが作成されたことを伝える応答コードであり、例えば「“/home /fred/ ”is current directory」という表示応答になる。ＴＣＰ２コア３７Ａは、このカレントディレクトリの表示応答のパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ９６）。
ＦＴＰシステムコア３８Ａは、この「２５７」メッセージを分析し、暗号文であれば復号化処理を行う。平文であれば特別な処理を施さない（ステップＳ９７）。そして、「２５７」応答コードをＦＴＰクライアント装置Ａに送る。
【０１２０】
続いて、図１２に進み、クライアント側のＦＴＰシステムの流れ（２回目以降）の第２段階について説明する。
第２段階では、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂに対して、「ＰＯＲＴ  ＩＰアドレスとポート番号」というＦＴＰコマンドが送られる。このコマンドは、データコネクションで使用するＩＰアドレス（通常はクライアント）とポート番号を指示するコマンドである。この命令を受けると、ＴＣＰ２コア３７Ａは、ＩＰアドレスとポート番号のパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ９８）。ＦＴＰシステムコア３８Ａは、「ＰＯＲＴ」メッセージを分析し、設定にしたがって暗号化／非暗号化処理を行う。そして、この「ＰＯＲＴ  ＩＰアドレスとポート番号」メッセージをＦＴＰサーバ装置Ｂに送る（ステップＳ９９）。
【０１２１】
これに対して、ＦＴＰサーバ装置Ｂは、コマンドの使用が可能になったことを告げる応答コード「２００」を発生する。ＴＣＰ２コア３７Ａはこの応答コード「２００」のパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ１００）。ＦＴＰシステムコア３８Ａは、認証／分析部５０Ａで「２００」メッセージを分析し、その復号化部５２で暗号文の復号化処理を行う（ステップＳ１０１）。そして、この応答コード「２００」をＦＴＰクライアント装置Ａに送る。
【０１２２】
続いて、ＦＴＰクライアント装置Ａからダウンロード要求を求める「ＲＥＴＲ  ファイル名」のメッセージがＦＴＰサーバ装置Ｂに向けて発信される。「ＲＥＴＲ  ファイル名」は、指定した内容のファイルをＦＴＰサーバ装置Ｂから取得することを命じるＦＴＰコマンドである。ＴＣＰ２コア３７Ａは、このコマンドを受けてＦＴＰコマンドメッセージパケットの確認部４４Ａでこのパケットの確認を行い、このコマンドをＦＴＰシステムコア３８Ａに送る（ステップＳ１０２）。
【０１２３】
ＦＴＰシステムコア３８Ａは、その認証／分析部５０Ａでコマンド「ＲＥＴＲ」メッセージを分析し、暗号化処理を行う（ステップＳ１０３）。そして、このコマンド「ＲＥＴＲ」をＦＴＰサーバ装置Ｂに送る。この段階でポート２０への接続が完成し、ＦＴＰクライアント装置ＡとＦＴＰサーバ装置ＢとのデータセッションのＴＣＰ通信が確立される。
【０１２４】
次に、ＦＴＰサーバ装置ＢからＦＴＰクライアント装置Ａに対して、応答コード「１５０」が発信される。この応答コード「１５０」は、アスキーモードのデータを送信する通知（「１５０  ASCII data connectionファイル名」）であり、「ファイルの送信が正常に開始されること、及びデータ接続がオープンであることを示す」コードである。
ＴＣＰ２コア３７Ａは、その応答メッセージパケットの確認部４５Ａで、この応答コード「１５０」のパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ１０４）。
ＦＴＰシステムコア３８Ａは、その認証／分析部５０Ａにおいて、この「１５０」メッセージを分析し、暗号文の復号化処理を行う（ステップＳ１０５）。そして、この「１５０」応答コードをＦＴＰクライアント装置Ａに送る。
【０１２５】
続いて、ＦＴＰサーバ装置Ｂからクライアント装置Ａにファイルデータが送信される。このファイルデータを受信したＴＣＰ２コア３８Ａは、ＦＴＰ応答メッセージパケットの確認部４５Ａでファイルデータのパケット確認を行い、これをＦＴＰシステムコア３８Ａに送る（ステップＳ１０６）。ＦＴＰシステムコア３８Ａは、その認証／分析部５０Ａにおいて、このファイルデータを分析し、記憶メディア３９Ａに保存されている設定情報に従って復号化処理、あるいは復号化しない処理を行う（ステップＳ１０７）。ここで、復号化するか、あるいは復号化しないで暗号のまま送信するかの決定はシステムが行うこととなる。そして、ファイルデータをＦＴＰクライアント装置Ａに送る。
【０１２６】
この段階でＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂは、ポート２０から切断され、データセッションのＴＣＰ通信が切断される。
続いて、ＦＴＰサーバ装置Ｂから、データ転送の終了を告げる「２２６」応答コードがＦＴＰクライアント装置Ａに送られる。この「２２６」応答コードは、「２２６  ASCII Transfer complete」と記述されるもので、データの接続がクローズであること、及び要求されたファイルの処理が正常に完成したことを通知する応答コードである。
【０１２７】
ＴＣＰ２コア３７Ａは、応答コードメッセージ確認部４５Ａで、この「２２６」応答コードのパケットを確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ１０８）ＦＴＰシステムコア３８Ａは、その認証／分析部５０Ａで「２２６」応答コードを分析し、暗号文を復号化し、「２２６」応答コードをＦＴＰクライアント装置Ａに送る（ステップＳ１０９）。
【０１２８】
最後に、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂに向けて、接続を解除することを伝える終了宣言（ＱＵＩＴ）が送られる。この終了宣言は、ログアウトすることを告げるＦＴＰコマンドであり、ＴＣＰ２コア３７Ａはこの終了宣言をそのＦＴＰコマンドメッセージ確認部４４Ａで確認し、これをＦＴＰシステムコア３８Ａに送る（ステップＳ１１０）。
【０１２９】
ＦＴＰシステムコア３８Ａは、その認証／分析部５０Ａで、この「ＱＵＩＴ」メッセージを分析し、暗号化処理を行い、終了宣言（ＱＵＩＴ）をネットワーク４０に接続されているＦＴＰサーバＢに送る（ステップＳ１１１）。その後、ＦＴＰサーバ装置Ｂからコネクションの終了を告げる終了宣言応答「２２１」メッセージがＦＴＰクライアント装置ＡのＴＣＰ２コア３７Ａに送られる。ＴＣＰ２コア３７Ａは、この終了宣言応答のパケットを確認し（ステップＳ１１２）、この結果をＦＴＰシステムコア３８Ａに送る。
【０１３０】
ＦＴＰシステムコア３８Ａは、ＴＣＰ２コア３７Ａからの「２２１」メッセージを分析して、暗号文を復号化し、終了宣言応答である「２２１」メッセージをＦＴＰクライアント装置Ａに送る（ステップＳ１１３）。この段階で、ポート２１の接続も切断され、ＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂ間のＴＣＰ通信の制御セッションが切断される。
以上が、ＦＴＰシステムのクライアント側の流れ（２回目以降）の説明である。
【０１３１】
＜ＦＴＰシステムのサーバ側の流れ（２回目以降）の説明＞
次に、ＦＴＰクライアントがＦＴＰサーバからファイルデータをダウンロードする際のＦＴＰシステムのサーバ側の流れ（２回目以降）について、図１３、図１４に基づいて説明する。
ここでの説明は、図１１、図１２で説明したクライアント側の説明（２回目以降）とほぼ同じであるが、その説明の中心は、ＦＴＰサーバ装置Ｂ側のＴＣＰ２ドライバ３５Ｂの動作説明となるので、ＦＴＰサーバ側を表す‘Ｂ’を付けて説明する。
【０１３２】
まず、ＦＴＰサーバ装置ＢのＦＴＰシステムコア３８ＢからＴＣＰ２コア３７Ｂに対してＦＴＰのフック要求が出される。ＴＣＰ２コア３７Ｂは、このフック要求を受けて、登録してある全クライアントのＩＰアドレスを含むパケットを捕捉（フック）する（ステップＳ１２０）。
【０１３３】
その後、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂへ、ＦＴＰ接続要求が送信される。ＦＴＰサーバ装置ＢのＴＣＰ２コア３７Ｂは、この送信されたＦＴＰ接続要求を受け付け、ＦＴＰメッセージからＦＴＰのパケットであることを認識してパケットをフックする。そして、フック結果をＦＴＰシステムコア３８Ｂに通知する（ステップＳ１２１）。また、ＦＴＰ接続要求のパケットをＦＴＰシステムコア３８Ｂに送る。
【０１３４】
ＦＴＰシステムコア３８Ｂは、ＴＣＰ２コア３７Ｂのフック結果を受け取り、ＴＣＰ２コア３７Ｂにパケットのインターセプトを要求する。また、ＦＴＰシステムコア８Ｂの認証／分析部５０Ｂにおいて、ＦＴＰメッセージを分析し、暗号文であれば復号化処理を行い、平文であれば特別な処理を施さない（ステップＳ１２２）。
そして、ＦＴＰシステムコア３８ＢはＦＴＰ接続要求をＦＴＰサーバ装置Ｂに送る。また、ＴＣＰ２コア３７ＢはＦＴＰシステムコア３８Ｂからのパケットのインターセプト要求を受けて、パケットのインターセプトを開始する（ステップＳ１２３）。
【０１３５】
この段階で、「ポート２１」への接続が完了し、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置ＢへのＴＣＰ通信が確立される。続いて、ＦＴＰサーバ装置ＢからＦＴＰクライアント装置Ａに、応答コード「２２０」が発せられる。この応答コード「２２０」は、サービスが新規ユーザに対して使用可能であること（「ＦＴＰ  server ready」）を通知するＦＴＰの応答コードである。
【０１３６】
ＦＴＰサーバ装置Ｂから応答コード「２２０」を受けたＴＣＰ２コア３７Ｂは、ＦＴＰ接続応答コード「２２０」のパケットを確認し、その結果をＦＴＰシステムコア３８Ｂに送る（ステップＳ１２４）。ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂで「２２０」応答コードと「ＦＴＰ」メッセージを分析し、記憶メディア３９Ｂに記憶されている設定情報に従った処理（暗号化または非暗号化処理）を行う（ステップＳ１２５）。そして、「２２０」応答コードをＦＴＰクライアント装置Ａに送る。
【０１３７】
次に、ＦＴＰクライアント装置Ａから、ＦＴＰサーバ装置Ｂに向けてユーザＩＤ「ＵＳＥＲ  ユーザ名」が送信される。ここで「ＵＳＥＲ  ユーザ名」は指定のユーザ名でログインすることを告げるＦＴＰコマンドである。このユーザＩＤ（ユーザ名）を受信したＦＴＰサーバ装置ＢのＴＣＰ２コア３７Ｂは、そのＦＴＰコマンドメッセージ確認部４４Ｂで、このユーザＩＤのパケットを確認し（ステップＳ１２６）、ＦＴＰクライアント装置Ａからの「ＵＳＥＲ」メッセージをＦＴＰシステムコア３８Ｂに送る。ＦＴＰシステムコア３８Ｂは、認証／分析部５０Ｂで、この「ＵＳＥＲ」メッセージを分析し、暗号文であれば復号化処理を行い、平文であれば特別な処理を施さない（ステップＳ１２７）。そして、ユーザＩＤをＦＴＰサーバ装置Ｂに送る。
【０１３８】
次に、ＦＴＰサーバ装置Ｂから、このユーザＩＤに対する応答として、パスワードを求める「３３１」応答コードが出される。すなわち、「３３１  Password required for  ユーザ名」というものである。ＴＣＰ２コア３７Ｂは、このユーザＩＤ応答のパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ１２８）。ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂで「３３１」メッセージを分析し、記憶メディア３９Ｂに記憶されている設定情報に従った処理（暗号化または非暗号化処理）を行う（ステップＳ１２９）。そして、「３３１」応答コード（「３３１  Password required for  ユーザ名」）をＦＴＰクライアント装置Ａに送る。
【０１３９】
続いて、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂにパスワード「ＰＡＳＳ」が送信される。ＦＴＰサーバ装置ＢのＴＣＰ２コア３７Ｂは、この受信したパスワードのパケットを確認し（ステップＳ１３０）、この確認したパスワードをＦＴＰシステムコア３８Ｂに送る。ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂで「ＰＡＳＳ」メッセージを分析し、暗号文であれば復号化処理を行い、平分であれば特別な処理は行わないで、パスワードをＦＴＰサーバ装置Ｂに送る（ステップＳ１３１）。
【０１４０】
次に、このパスワードを受信したＦＴＰサーバ装置Ｂは、ログインが完了したことを告げる「２３０」応答コードをＦＴＰクライアント装置Ａに送る。ＴＣＰ２コア３７Ｂは、そのＦＴＰ応答メッセージパケットの確認部４５Ｂで、パスワード応答のパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ１３２）。ＦＴＰシステムコア３８Ｂは、この「２３０」メッセージを分析し、記憶メディア３９Ｂに保存されている設定情報にしたがって「暗号化または非暗号化」の処理を行う。そして、クライアント装置Ａにユーザ名がログインされたことを通知する（ステップＳ１３３）。
【０１４１】
続いて、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂに対して、カレントディレクトリの表示、つまり現在のワーキングディレクトリを示すＦＴＰコマンド「ＰＷＤ」が送られる。ＴＣＰ２コア３７Ｂは、このカレントディレクトリの表示のパケットを確認し、その結果をＦＴＰシステムコア３８Ｂに送る（ステップＳ１３４）。
【０１４２】
ＦＴＰシステムコア３８Ｂは、この「ＰＷＤ」メッセージを分析し、暗号文であれば復号化処理を行い、平文であれば特別な処理を施すことなくＦＴＰサーバ装置Ｂにこの「ＰＷＤ」メッセージを送る（ステップＳ１３５）。
【０１４３】
ＦＴＰサーバ装置Ｂは、ＦＴＰクライアント装置Ａからの「ＰＷＤ」（現在のディレクトリ情報）を受け取ると、カレントディレクトリの表示応答「２５７」を発生する。この応答コード「２５７」は、パスが作成されたことを伝える応答コードであり、例えば「“/home /fred/ ”is current directory」という表示応答になる。ＴＣＰ２コア３７Ｂは、このカレントディレクトリの表示応答のパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ１３６）。
ＦＴＰシステムコア３８Ｂは、この「２５７」メッセージを分析し、設定にしたがって暗号化または非暗号化処理を行う（ステップＳ１３７）。そして、「２５７」応答コードをＦＴＰクライアント装置Ａに送る。
【０１４４】
続いて、図１４に進み、サーバ側のＦＴＰシステムの流れ（２回目以降）の第２段階について説明する。
第２段階では、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂに対して、「ＰＯＲＴ  ＩＰアドレスとポート番号」というＦＴＰコマンドが送られる。このコマンドは、データコネクションで使用するＩＰアドレス（通常はクライアント）とポート番号を指示するコマンドである。この命令を受けたＦＴＰサーバ装置ＢのＴＣＰ２コア３７Ｂは、ＩＰアドレスとポート番号のパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ１３８）。ＦＴＰシステムコア３８Ｂは、「ＰＯＲＴ」メッセージを分析し、暗号文であれば復号化し、平文であれば特別な処理を施さない。そして、この「ＰＯＲＴ  ＩＰアドレスとポート番号」メッセージをＦＴＰサーバ装置Ｂに送る（ステップＳ１３９）。
【０１４５】
これに対して、ＦＴＰサーバ装置Ｂは、コマンドの使用が可能になったことを告げる応答コード「２００」を発生する。ＴＣＰ２コア３７Ｂはこの応答コード「２００」のパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ１４０）。ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂで「２００」メッセージを分析し、暗号化処理を行う（ステップＳ１４１）。そして、この応答コード「２００」をＦＴＰクライアント装置Ａに送る。
【０１４６】
続いて、ＦＴＰクライアント装置Ａからダウンロード要求を求める「ＲＥＴＲ  ファイル名」のメッセージがＦＴＰサーバ装置Ｂに向けて発信される。「ＲＥＴＲ  ファイル名」は、指定した内容のファイルをＦＴＰサーバ装置Ｂから取得することを命じるＦＴＰコマンドである。ＴＣＰ２コア３７Ｂは、このコマンドを受けてＦＴＰコマンドメッセージパケットの確認部４４Ｂでこのパケットの確認を行い、このコマンドをＦＴＰシステムコア３８Ｂに送る（ステップＳ１４２）。
【０１４７】
ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂでコマンド「ＲＥＴＲ」メッセージを分析し、暗号文の復号化処理を行い、コマンド「ＲＥＴＲ」をＦＴＰサーバ装置Ｂに送る（ステップＳ１４３）。この段階でポート２０への接続が完了し、ＦＴＰサーバ装置ＢとＦＴＰクライアント装置ＡとのデータセッションのＴＣＰ通信が確立される。
【０１４８】
続いて、ＦＴＰサーバ装置ＢからＦＴＰクライアント装置Ａに対して、応答コード「１５０」が発信される。この応答コード「１５０」は、アスキーモードのデータを送信する通知（「１５０  ASCII data connectionファイル名」）であり、「ファイルの送信が正常に開始されること、及びデータ接続がオープンであることを示す」コードである。
ＴＣＰ２コア３７Ｂは、その応答メッセージパケットの確認部４５Ｂで、この応答コード「１５０」のパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ１４４）。
ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂにおいて、この「１５０」メッセージを分析し、暗号化処理を行う（ステップＳ１４５）。そして、この「１５０」応答コードをＦＴＰクライアント装置Ａに送る。
【０１４９】
続いて、ＦＴＰサーバ装置Ｂからクライアント装置Ａにファイルデータが送信される。このファイルデータを受信したＴＣＰ２コア３８Ｂは、ＦＴＰ応答メッセージパケットの確認部４５Ｂでファイルデータのパケット確認を行い、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ１４６）。ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂにおいて、このファイルデータを分析し、これを暗号化した後、ファイルデータをＦＴＰクライアント装置Ａに送る（ステップＳ１４７）。
【０１５０】
この段階でＦＴＰサーバ装置ＢとＦＴＢクライアント装置Ａは、ポート２０から切断され、データセッションのＴＣＰ通信が切断される。
続いて、ＦＴＰサーバ装置Ｂから、データ転送の終了を告げる「２２６」応答コードがＦＴＰクライアント装置Ａに送られる。この「２２６」応答コードは、「２２６  ASCII Transfer complete」と記述されるもので、データの接続がクローズであること、及び要求されたファイルの処理が正常に完成したことを通知する応答コードである。
【０１５１】
ＴＣＰ２コア３７Ｂは、応答コードメッセージ確認部４５Ｂで、この「２２６」応答コードのパケットを確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ１４８）ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂで「２２６」応答コードを分析し、暗号化の処理を行う。そして、「２２６」応答コードをＦＴＰクライアント装置Ａに送る（ステップＳ１４９）。
【０１５２】
最後に、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂに向けて、接続を解除することを伝える終了宣言（ＱＵＩＴ）が送られる。この終了宣言は、ログアウトすることを告げるＦＴＰコマンドであり、ＴＣＰ２コア３７Ｂはこの終了宣言をそのＦＴＰコマンドメッセージ確認部４４Ｂで確認し、これをＦＴＰシステムコア３８Ｂに送る（ステップＳ１５０）。
【０１５３】
ＦＴＰシステムコア３８Ｂは、その認証／分析部５０Ｂで、この「ＱＵＩＴ」メッセージを分析し、暗号文の復号化処理を行い、この終了宣言（ＱＵＩＴ）をＦＴＰサーバ装置Ｂに送る（ステップＳ１５１）。その後、ＦＴＰサーバ装置Ｂからコネクションの終了を告げる終了宣言応答「２２１」メッセージがＦＴＰサーバ装置ＢのＴＣＰ２コア３７Ｂに送られ、ＴＣＰ２コア３７Ｂは、この終了宣言応答のパケットを確認し（ステップＳ１５２）、この結果をＦＴＰシステムコア３８Ｂに送る。
【０１５４】
ＦＴＰシステムコア３８Ｂは、ＴＣＰ２コア３７Ｂからの「２２１」メッセージを分析して、暗号化処理を行う（ステップＳ１５３）。その後、終了宣言応答である「２２１」メッセージをＦＴＰクライアント装置Ａに送る。この段階で、ポート２１の接続も切断され、ＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂ間のＴＣＰ通信の制御セッションが切断される。
以上が、ＦＴＰシステムのサーバ側の流れ（２回目以降）の説明である。
【０１５５】
＜ＦＴＰシステムの実施例の説明＞
最後に、図１５に基づいて、いままで説明してきたＦＴＰシステムの全体の流れを概観しておく。
図１５に示されるように、ＦＴＰクライアント装置ＡとＦＴＰサーバ装置ＢはそれぞれＴＣＰ２ドライバ３５Ａ、３５Ｂを介在して接続されている。
まず、初回のみの鍵交換の手順について説明する。ＦＴＰクライアント装置ＡからＦＴＰ接続要求の送信がＦＴＰサーバ装置Ｂに発信されると、ＦＴＰクライアント装置ＡのＴＣＰ２ドライバ３５Ａで鍵元値が付加された状態で、ＦＴＰサーバ装置Ｂに送られる。
【０１５６】
ＦＴＰサーバ装置Ｂでは、ＴＣＰ２ドライバ３５Ｂでこの鍵元値を保存し、ＦＴＰのサーバソフトでＦＴＰ接続要求を受信する。次に、ＦＴＰサーバ装置ＢからＦＴＰ接続応答送信がＦＴＰクライアント装置Ａに向けて発せられる。このとき、ＴＣＰ２ドライバ３５Ｂにおいて、既に保存されている鍵元値と受信した鍵元値とで新たな鍵が生成され、この鍵元値が付加された状態でＦＴＰクライアント装置ＡにＦＴＰ接続応答が送られる。
【０１５７】
このＦＴＰ接続応答を受信したＦＴＰクライアント装置ＡのＴＣＰ２ドライバ３５Ａは、既に保存されている鍵元値と受信した鍵元値とから新たな鍵を生成する。これにより、ＦＴＰクライアント装置ＡとＦＴＰサーバ装置Ｂとの鍵交換が完了する。
この鍵交換は初回のみ行われるだけであり、２回目以降は不要となる。
【０１５８】
次に、鍵交換後のＦＴＰシステムによるファイル転送について説明する。まず、ＦＴＰクライアント装置ＡからＦＴＰサーバ装置Ｂに向けて、ＦＴＰコマンドが送信される。このとき、ＦＴＰクライアント装置ＡのＴＣＰ２ドライバ３５Ａにおいて、記憶されている設定情報に従ってＦＴＰコマンドを暗号化するか、暗号化しないで平文で送信するかが決定される。この決定はシステムが予め定める決定である。
暗号化されたＦＴＰコマンドは暗号文で送られ、暗号化されなかったＦＴＰコマンドは平文で送られる。
【０１５９】
このＦＴＰコマンドを受信したＦＴＰサーバ装置Ｂでは、そのＴＣＰ２ドライバ３５Ｂにより、暗号文は復号化され、また平文はそのままの状態で受信されて、ＦＴＰサーバソフトで処理される。そして、ＦＴＰサーバ装置ＢからＦＴＰクライアント装置Ａに対して、ＦＴＰの応答コードが送信される。ここでも、ＴＣＰ２ドライバ３５Ｂにより、記憶されている設定情報に従って暗号化されて送信される応答コードと暗号化されないで送信される応答コードに分けられる。
【０１６０】
ＦＴＰクライアント装置ＡのＴＣＰ２ドライバ３５Ａは、暗号文で受信した応答コードは復号化処理を行い、平文で受信した応答コードは処理を施さずにそのまま受信する。これにより鍵交換後のＦＴＰコマンドとその応答コードの送受信が完了する。以上がＦＴＰシステムの制御セッションの説明である。
【０１６１】
制御セッションのＴＣＰ通信が確立すると、次にデータセッションの手順、すなわちファイル転送の手順に移行し、ＦＴＰサーバ装置ＢからＦＴＰクライアント装置Ａにファイルが転送される。このとき、ＦＴＰサーバ装置ＢのＴＣＰ２ドライバ３５Ｂではファイルが暗号化されて転送される。暗号文で送られたファイルはＦＴＰクライアント装置ＡのＴＣＰ２ドライバ３５Ａで復号化されて平文として受信されるか、あるいは復号化されずに暗号文のまま受信される。このようにして、ファイルの転送が完了する。以上が、ＦＴＰシステムの概要である。
【０１６２】
以上説明したように、本発明のＦＴＰシステムでは、高いセキュリティ機能を持つＴＣＰ２を用いてファイル転送を行うので、既存の暗号化処理によるＦＴＰ通信と比べても、特にデータの漏洩、改ざん、なりすまし、進入そして攻撃に対して極めて強力な防御機能を発揮する。
【０１６３】
本発明は、以上説明した実施の形態に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない範囲において、さらに多くの実施形態を含むものであることは言うまでもない。
【図面の簡単な説明】
【０１６４】
【図１】本発明のＦＴＰシステムに用いられるＴＣＰ２のプロトコルスタックを示す図である。
【図２】本発明のＦＴＰシステムに用いられるメッセージパケットの構造を示す図である。
【図３】本発明のＦＴＰクライアント装置Ａ及びＦＴＰサーバ装置Ｂを含むＦＴＰシステムにおけるブロック構成図である。
【図４】本発明のＦＴＰシステムの構成要素であるのＴＣＰ２コアの概略を説明するためのブロック構成図である。
【図５】本発明のＦＴＰシステムの構成要素であるのＦＴＰシステムコアの概略を説明するためのブロック構成図である。
【図６】本発明のＦＴＰシステムの構成要素であるのＦＴＰシステム管理アプリケーション部の概略を説明するためのブロック構成図である。
【図７】本発明のＦＴＰシステムにおけるクライアント側の流れ（初回）の一部を示すフロー図である。
【図８】本発明のＦＴＰシステムにおけるクライアント側の流れ（初回）の一部を示すフロー図である。
【図９】本発明のＦＴＰシステムにおけるサーバ側の流れ（初回）の一部を示すフロー図である。
【図１０】本発明のＦＴＰシステムにおけるサーバ側の流れ（初回）の一部を示すフロー図である。
【図１１】本発明のＦＴＰシステムにおけるクライアント側の流れ（２回目以降）の一部を示すフロー図である。
【図１２】本発明のＦＴＰシステムにおけるクライアント側の流れ（２回目以降）の一部を示すフロー図である。
【図１３】本発明のＦＴＰシステムにおけるサーバ側の流れ（２回目以降）の一部を示すフロー図である。
【図１４】本発明のＦＴＰシステムにおけるサーバ側の流れ（２回目以降）の一部を示すフロー図である。
【図１５】本発明のＦＴＰシステムの実施例全体の概要を説明するための図である。
【符号の説明】
【０１６５】
３１・・・入力装置、３２・・・出力装置、３３・・・既存のＦＴＰアプリケーション部、３４・・・ＦＴＰシステム管理アプリケーション部、３５・・・ＴＣＰ２ドライバ、３６、３９・・・記憶メディア、３７・・・ＴＣＰ２コア、３８・・・ＦＴＰシステムコア、４０・・・ネットワーク、５０・・・認証／分析部、５１・・・暗号化部、５２・・・復号化部、５３・・・鍵交換部、５４、６１・・・インターフェース、６２・・・ユーザ登録部、６３・・・通信相手情報管理部、６５・・・入出力制御部、６６・・・設定部
【図１】
2007324727.tif 000003
【図２】
2007324727.tif 000004
【図３】
2007324727.tif 000005
【図４】
2007324727.tif 000006
【図５】
2007324727.tif 000007
【図６】
2007324727.tif 000008
【図７】
2007324727.tif 000009
【図８】
2007324727.tif 000010
【図９】
2007324727.tif 000011
【図１０】
2007324727.tif 000012
【図１１】
2007324727.tif 000013
【図１２】
2007324727.tif 000014
【図１３】
2007324727.tif 000015
【図１４】
2007324727.tif 000016
【図１５】
2007324727.tif 000017