(57)【要約】【課題】クライアント装置間のメール通信にＴＣＰ２を実装してセキュリティの高いメールシステムを実現する。【解決手段】ネットワークに接続され、既存のメーラを備えたクライアント装置間でメールを通信するメール通信システムであり、各クライアント装置にはＴＣＰ２ドライバが実装されている。ＴＣＰ２ドライバ３４はＴＣＰ２コア３６とメールシステムコア３７を有しており、ネットワークを経由して受信された電子メールは、このＴＣＰ２ドライバ３４で処理された後に、クアイアンと装置の既存のメーラ３１に供給される。ＴＣＰ２ドライバ３４のメールシステムコア３７では、メールの暗号化、復号化不要メールの削除等の制御が行われる。【選択図】図３
2007323172.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続され、複数のクライアント装置間で電子メールの通信を行う既存のメーラを備えたクライアント装置であって、
該クライアント装置は、
前記既存のメーラの外に、ＴＣＰ２コアとメールシステムコアを備えたＴＣＰ２ドライバと、ＴＣＰ２メールシステムアプリケーション部を備えており、
前記ＴＣＰ２コアは、既存のメーラあるいはＳＭＴＰ又はＰＯＰ３のプロトコルから送られる電子メールのパケットを認識し、前記メールシステムコアに送信する手段を有し、
前記メールシステムコアは、送受信されるメールの暗号化または復号化する手段と、他のクライアント装置との鍵交換を行う手段と、前記ＰＯＰ３のＩＰアドレスとポート、及びＳＭＴＰのＩＰアドレスとポートを保存する手段と、ユーザＩＤ・パスワード及び送信元及び送信先メールアドレスを保存する手段と、前記鍵交換により作成した鍵を保存する手段と、暗号メール、ＨＴＭＬ形式メール、あるいは添付ファイルを選択して削除する手段とを有し、
前記ＴＣＰ２メールアプリケーション部は、前記メールシステムコアから送られる電子メールに関連する鍵状態の表示を行うとともに、該電子メールの暗号化あるいは非暗号化状態、送信元メールアドレス、メール形式、及び添付ファイルの一覧表示を行う手段と、
前記既存メーラで受信した暗号メールを平文で表示する手段とを有しており、
前記ネットワークを通して受信された電子メールは、前記ＴＣＰ２ドライバによって選別処理された後に前記既存のメーラに供給されるとともに、
前記既存のメーラから前記ネットワークを介して他のクライアント装置に送信される電子メールは、前記ＴＣＰ２ドライバで送信先の他のクライアント装置を確認した後に送信されるように設定されている
ことを特徴とするクライアント装置。
【請求項２】
ネットワークに接続され、既存のメーラを備えた複数のクライアント装置間で電子メールの通信を行うメールシステムであって、
前記クライアント装置には、
既存のメール手段に加えて、ＴＣＰ２コアとメールシステムコアを備えたＴＣＰ２ドライバと、ＴＣＰ２メールアプリケーション部が設けられ、
前記ＴＣＰ２ドライバの前記ＴＣＰ２コアは、既存のメール手段あるいはネットワークに接続されメールサーバのＳＭＴＰ又はＰＯＰ３のプロトコルから送られる電子メールのパケットを、前記メールシステムコアに送信し、
前記メールシステムコアは、
送受信される電子メールの暗号化または復号化を行い、送信相手との鍵交換を行い、前記ＰＯＰ３のＩＰアドレスとポート番号及び前記ＳＭＴＰのＩＰアドレスとポート番号、ユーザＩＤ・パスワード及び送信元及び送信先メールアドレス、前記鍵交換により作成した鍵を記憶メディアに保存し、前記受信した電子メールを選択的に削除し、
前記ＴＣＰ２メールシステムアプリケーション部は、
前記メールシステムコアから送られる電子メールに関して、鍵状態の表示を行うとともに、送受信したメールの一覧表示と、
前記既存メーラで受信した暗号メールの平文表示を行うことを特徴とするメールシステム。
【請求項３】
ネットワークに接続され、既存のメーラを備えた複数のクライアント装置間でメールの通信を行うためのメール通信プログラムであって、
それぞれのクライアント装置コンピュータに、
既存のメーラ機能以外に、ＴＣＰ２コア、メールシステムコア及びＴＣＰ２メールアプリケーションの３つの機能を有するＴＣＰ２メールシステム機能を実装し、
該ＴＣＰ２コアの機能は、
既存のメーラあるいはネットワークに接続されメールサーバのＳＭＴＰ又はＰＯＰ３のプロトコルから送られる電子メールのパケットを認識してメールシステムコアに送信する機能であり、
前記メールシステムコアの機能は、送受信されるメールの暗号化または復号化を行い、送信相手との鍵交換を行い、ＰＯＰ３のＩＰアドレスとポート番号及びＳＭＴＰのＩＰアドレスとポート番号、ユーザＩＤ・パスワード及び送信元及び送信先メールアドレス、前記鍵交換により作成した鍵を記憶メディアに保存するとともに、受信した電子メールを選択的に削除する機能であり、
前記ＴＣＰ２メールシステムアプリケーションの機能は、
前記メールシステムコアから送られる電子メールに関して、鍵状態の表示を行うとともに、送受信したメールの一覧表示と、
前記既存メーラで受信した暗号メールの平文表示を行う機能であり、
前記各機能をクライアント装置コンピュータに実現させることを特徴とするコンピュータプログラム。
【請求項４】
請求項３に記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信におけるセキュリティを重視したクライアント装置とメールシステム、特に、インターネット上でのデータの「漏洩」及び「改竄」さらには「なりすまし」、「進入」ないし「攻撃」などの不正妨害に対して極めて強いクライアント装置とメールシステム、及びそれを実現するためのコンピュータプログラムに関する。
【背景技術】
【０００２】
近年、インターネットを利用した通信は、パソコンさえあれば、それをネットワークに接続するだけで、誰でもネットワーク上のコンピュータにアクセスできるため、社会の中で急速に普及拡大している。一方、このインターネット通信の普及拡大に伴って、ハッカー（hacker）やクラッカー（Cracker）が他人のコンピュータシステムに侵入して、ソフトウエアやデータを盗み見たり、改竄や破壊を行ったりするという社会問題も大きくなっている。
【０００３】
具体的な不正妨害のケースとしては、まず第１に、中心的なシステムが使えなくなるように、ネットワークから大量のメッセージを送りつけコンピュータシステムの運用を妨害するシステム妨害がある。この妨害によってホストが過負荷になるとシステムダウンに陥ってしまうことも起こりうる。
【０００４】
また、ホストのパスワードを入手し、機密情報を盗んだり、情報の改竄や破壊を行ったりする「不正アクセスとなりすまし」の不正妨害がある。この妨害にはコンピュータが保有する情報を勝手に書き換え、人を陥れる卑劣のものもある。また、特定のパソコンに忍び込み、メールアドレスやパスワードなど個人の機密データを搾取するスパイウエアといわれる不正行為も発生している。このようにネットワークに接続したコンピュータが持つデータベースの内容を不正に盗み見る、いわゆる盗聴行為も頻繁に行われている可能性も否定できない。
【０００５】
また、サイト若しくはサーバの運営元で、意図的に個人情報を盗むといった行為や、社内に潜むスパイなどによるサイバーテロ（Cyber terrorism）といった危機も全くないとはいえない状況である。
【０００６】
さらに、他人のコンピュータにコンピュータ障害をもたらすプログラムである「ウイルス」を送り込むという不正妨害が最近多くなっている。この送り込まれたウイルスに、メールなどを自宅で使用したパソコンが感染し、それを社内に接続した瞬間に社内のパソコン全体が感染したり、ウイルスがコンピュータの中のファイルを破壊させたり、更には、ネットワーク全体をダウンさせたりするといった問題も生じている。
【０００７】
このため、従来のＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）やＵＤＰ（User Datagram Protocol）を利用したインターネット上での通信において、データの「漏洩」「改竄」等を防ぐ機能として、ＩＰｓｅｃ（アイピーセック：Security Architecture for Internet Protocol）やＳＳＬ（Secure Socket Layer）といわれる暗号化通信が利用されている。
【０００８】
ＩＰｓｅｃの特徴は、単に特定のアプリケーションだけを暗号化するのではなく、ホストから送信されるあらゆる通信をＩＰレベルで暗号化する点にある。これによりユーザはアプリケーションを意識することなく安全な通信を可能とすることができる。また、ＩＰｓｅｃは、将来にわたって使えるように、それ自体の仕組みを変えることなく使用する暗号アルゴリズムを変更することを可能としている。
【０００９】
また、ＳＳＬを利用することにより、クライアントとサーバは、ネットワーク上でお互いを認証できるようになり、クレジットカード情報などの機密性の高い情報を暗号化してやり取りすることが可能となる。これにより、データの盗聴、再送攻撃（ネットワーク上に流れたデータを盗聴して何度も繰り返して送ってくる攻撃）、なりすまし（本人の振りをして通信する）、データの改竄などを防止することができる。
【００１０】
本発明に用いられる暗号化通信では、トランスポート層（ＯＳＩの第４層）にあるＴＣＰ層に暗号化機能を追加している。このトランスポート層は、各ノード上で実行されている２つのプロセス間で、エラーのない、仮想的な通信路を実現するためのプロトコル層である。ネットワーク層ではデータを送ることはできるが、そのデータが確実に相手に届くという保証はない。また、送信した順に正しくデータが届くという保証もない。そこで、アプリケーションにとって使いやすくするために、エラーのない通信路を提供するのがトランスポート層である。この第４層のトランスポート層に暗号化機能を追加して、外部からの不正侵入に強い通信システムを実現した例は、本発明者らが世界に先駆けて提案したものであり、本発明者らはこの暗号化通信システムを「ＴＣＰ２」と命名している（特許文献１参照）。
【００１１】
【特許文献１】国際公開ＷＯ２００５／０１５８２７号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、特許文献１に記載の発明は、ＴＣＰ２を利用した一般的な暗号化通信システム、通信方法、通信装置及び通信プログラムにとどまり、このＴＣＰ２を搭載したメールシステムはいまだに実現されていない。
本発明の目的は、発明者らが先に提案した「ＴＣＰ２」を利用した通信システムを用いて、暗号化機能を付加したメールシステムとそれを実現するプログラムを提供することにある。
すなわち、電子メールの送信側クライアントと受信側クライアントにＴＣＰ２を実装し、Ｅｎｄ−ｔｏ−Ｅｎｄで暗号化された電子メールの送受信を可能とする電子メールシステム及びそのプログラムを提供することである。
【課題を解決するための手段】
【００１３】
前記課題を解決し、本発明の目的を達成するため、本発明のメールシステムに用いられるクライアント装置は、ネットワークに接続され、複数のクアイアント装置間でメールの通信を行う既存のメーラを備えたクライアント装置であって、既存のメーラの外に、ＴＣＰ２コアとメールシステムコアを備えたＴＣＰ２ドライバと、ＴＣＰ２メールシステムアプリケーション部を備えており、上記ＴＣＰ２コアは、既存のメーラあるいはＳＭＴＰ又はＰＯＰ３のプロトコルから送られる電子メールのパケットを認識し、メールシステムコアに送信する手段を有し、メールシステムコアは、送受信されるメールの暗号化または復号化する手段と、他のクライアント装置との鍵交換を行う手段と、ＰＯＰ３のＩＰアドレスとポート、及びＳＭＴＰのＩＰアドレスとポートを保存する手段と、ユーザＩＤ・パスワード及び送信元及び送信先メールアドレスを保存する手段と、前記鍵交換により作成した鍵を保存する手段と、暗号メール、ＨＴＭＬ形式メール、あるいは添付ファイルを選択して削除する手段とを有し、ＴＣＰ２メールアプリケーション部は、メールシステムコアから送られる電子メールに関連する鍵状態の表示を行うとともに、該電子メールの暗号化あるいは非暗号化状態、メール形式、及び添付ファイル、送信元メールアドレスの一覧表示を行う手段と、前記既存メーラで受信した暗号メールを平文で表示する手段とを有しており、ネットワークを通して受信された電子メールは、ＴＣＰ２ドライバによって選別処理された後に既存のメーラに供給されるとともに、既存のメーラからネットワークを介して他のクライアント装置に送信されるメールは、ＴＣＰ２ドライバで送信先の他のクライアント装置を確認した後に送信されるように設定されていることを特徴とする。
【００１４】
また、本発明のメールシステムは、ネットワークに接続され、既存のメーラを備えた複数のクライアント装置間でメールの通信を行うメールシステムであって、クライアント装置には、既存のメール手段に加えて、ＴＣＰ２コアとメールシステムコアを備えたＴＣＰ２ドライバと、ＴＣＰ２メールアプリケーション部が設けられており、ＴＣＰ２ドライバのＴＣＰ２コアは、既存のメール手段あるいはネットワークに接続されメールサーバのＳＭＴＰ又はＰＯＰ３のプロトコルから送られる電子メールのパケットをメールシステムコアに送信するように構成され、メールシステムコアは、送受信されるメールの暗号化または復号化を行い、送信相手との鍵交換を行い、ＰＯＰ３のＩＰアドレスとポート番号及び前記ＳＭＴＰのＩＰアドレスとポート番号、ユーザＩＤ・パスワード及び送信元及び送信先メールアドレス、前記鍵交換により作成した鍵を記憶メディアに保存し、受信した電子メールを選択的に削除するように構成されている。そして、ＴＣＰ２メールシステムアプリケーション部は、メールシステムコアから送られる電子メールに関して、鍵状態の表示を行うとともに、送受信したメールの一覧表示と、前記既存メーラで受信した暗号メールの平文表示を行うことを特徴としている。
【００１５】
また、本発明のメールシステムに用いられるメール通信プログラムは、互いに通信を行うそれぞれのクライアント装置コンピュータに、既存のメール機能以外に、ＴＣＰ２コア、メールシステムコア及びＴＣＰ２メールアプリケーションの３つの機能を有するＴＣＰ２メールシステム機能を実装しており、このＴＣＰ２コアの機能は、既存のメーラあるいはネットワークに接続されメールサーバのＳＭＴＰ又はＰＯＰ３のプロトコルから送られる電子メールのパケットを認識してメールシステムコアに送信する機能を持っている。また、メールシステムコアの機能は、送受信されるメールの暗号化または復号化を行い、送信相手との鍵交換を行い、ＰＯＰ３のＩＰアドレスとポート番号及びＳＭＴＰのＩＰアドレスとポート番号、ユーザＩＤ・パスワード及び送信元及び送信先メールアドレス、前記鍵交換により作成した鍵を記憶メディアに保存するとともに、受信した電子メールを選択的に削除する機能を有している。さらに、ＴＣＰ２メールシステムアプリケーションの機能は、メールシステムコアから送られる電子メールに関して、鍵状態の表示を行うとともに、送受信したメールの一覧表示と、前記既存メーラで受信した暗号メールの平文表示を行う機能を有する。本発明のメール通信プログラムは、これらの各機能をクライアント装置コンピュータに実現させるものである。また、本発明はこのメール通信プログラムを記録した記録媒体もその実施の形態に含めている。
【発明の効果】
【００１６】
本発明のメールシステムによれば、ＴＣＰ２機能を使用して、電子メールのタイトル、本文及び添付ファイルのパケットを暗号化／復号化できるので、他人に知られることなく、権限のあるものだけが電子メールの内容を知ることができるようになる。
また、メール送受信プロトコル（ＳＭＴＰ，ＰＯＰ３コマンド）並びにメールヘッダ終了子、ＭＩＭＥ識別子は平文のままになっているので、クライアント装置で利用しているメールアプリケーションあるいはメールサーバが既存のまま利用できるという効果がある。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照しながら本発明の実施の形態の例を説明する。
図１は、本発明の暗号化通信システムに用いられるＴＣＰ２のプロトコルスタックを示すものである。
【００１８】
＜ＴＣＰ２プロトコルスタックの説明＞
このプロトコルスタックには、ＯＳＩの７階層の物理層（第１層）とデータリンク層（第２層）に相当する階層に、ＮＩＣ（Network Interface Card）のドライバ１１が配列されている。このドライバは、コンピュータなどのハードウエアをネットワークに接続するためのドライバであり、その内容はデータ送受信制御ソフトウエアである。例えばEthernet（登録商標）に接続するためのＬＡＮボードまたはＬＡＮカードがこれに相当する。
【００１９】
第３層のネットワーク層には、一部がトランスポート層（第４層）まで伸びたＩＰエミュレータ（emulator）１３が存在している。上記トランスポート層に延びた部分には、トランスポートとしての機能は実装しておらず、セッション層（第５層）にネットワーク層の機能を提供しているだけある。このＩＰエミュレータ１３は、暗号化通信を行うプロトコルである「ＩＰｓｅｃ  ｏｎ  ＣＰ」１３ｂと、「ＩＰ  ｏｎ  ＣＰ」１３ａを用途に応じて切り換えて使う働きをするものである。ここで、「ｏｎ  ＣＰ」とは、クラッキング・プロテクタ（ＣＰ）による、「進入」「攻撃」の監視、破棄、切断ないし通過制限の対象となっていること、又は、設定によりなりうることを示している。
【００２０】
また、ネットワーク層にはＡＲＰ  ｏｎ  ＣＰ（Address Resolution Protocol on Cracking Protector）が配列されている。このＡＲＰ  ｏｎ  ＣＰは、クラッカー（Cracker）への保護対策を具備したＩＰアドレスからEthernet（登録商標）の物理アドレスであるＭＡＣ（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）プロトコル（ＵＤＰの５００番）などにより安全な鍵交換ができるように設計され、しかも、定期的に暗号化／完全性認証アルゴリズム（論理）自体やそのための鍵の集合／定義域が変更されるように、プロトコルドライバープログラム（ＴＣＰｓｅｃ１５ｂ、ＵＤＰｓｅｃ１６ｂなど）によりスケジュールされている。
【００３５】
＜ＴＣＰ２データパケット構造の説明＞
次に、図２に基づいて、本発明のメールシステムで用いられるデータのパケット構造と、その暗号化範囲及び完全性認証の適用範囲について説明しておく。
図２は、ＴＣＰｓｅｃ／ＩＰのパケット構造と暗号化範囲及び完全性認証の適用範囲を示したものである。図２に示すように、ＩＰヘッダ２１のすぐ後に、ＴＣＰヘッダ２２及びＴＣＰｓｅｃ付加情報２３が続き、更にアプリケーションデータ２４が続く構造になっている。そして、アプリケーションデータ２４の後には、ＴＣＰｓｅｃの付加トレーラ２５とＴＣＰｓｅｃの付加認証データ２６が配列される構造となっている。ＴＣＰｓｅｃの付加トレーラ２５は、ブロック暗号で発生するデータのブランクやそのブランクの長さ、次のヘッダの番号などの暗号データをサポートする情報である。
【００３６】
ＴＣＰｓｅｃの特徴であるこれらの情報は、採用する暗号化／認証アルゴリズムによっては、ＴＣＰｓｅｃ／ＩＰの使用していないヘッダフィールド部分などに分散したり、個々のパケットからは逆算・推測できない独立した事前取決め（ネゴシエーション）により省略したりできるものである。また、ＩＰ層の上層に当たるＴＣＰ及びＩＰを使用していないプロトコルフィールドを用いて、図２に示すようなＴＣＰｓｅｃ／ＩＰパケットを構成することにより、より下層のＩＰのみに着目したＩＰｓｅｃパケットよりもパケット長を簡単に削減することができるようになる。なお、ここで暗号化範囲は、図示の通り、アプリケーションデータ２４、ＴＣＰｓｅｃ付加トレーラ２５であり、認証範囲は上記暗号化範囲の他に、ＴＣＰｓｅｃの付加情報２６が加えられる。
【００３７】
＜ＴＣＰ２メールシステムの機能ブロック図の説明＞
次に、本発明のＴＣＰ２を用いたメールシステムの第１の実施の形態について図面を参照して説明する。
図３は、本発明のメールシステムに用いられるクライアント装置の実施形態例のブロック構成図である。クライアント装置Ａ（またはＢ）は、既存のメーラ３１、入力装置３２、出力装置３３の他に、ＴＣＰ２ドライバ３４とＴＣＰ２メールシステムアプリケーション部３５を備えている。また、受信したメールを保存する記憶メディア３９を有している。
【００３８】
ＴＣＰ２ドライバ３４は、図４で説明するＴＣＰ２コア３６と、図５で説明するメールシステムコア３７及び記憶メディア３８から構成されている。記憶メディア３８は、クライアント装置Ａが通常有する記憶メディア３９とは異なる記憶メディアであり、メールシステムコアが持っている秘密鍵で暗号化された状態で、後述する種々の情報を記憶するものである。
【００３９】
ここで、クライアント装置Ａが接続されるネットワーク４０には、不図示のメールサーバと他のクライアント端末（例えばクライアント装置Ｂ）が接続されており、クライアント装置Ａとクライアント装置Ｂはネットワーク４０に接続されるメールサーバ４１（図４参照）を介してメールの交換を行うようになっている。
【００４０】
次に、図３に示すクライアント装置Ａにおける動作を簡単に説明しておく。詳しくは図４〜図６で説明する。
まず、メールサーバからネットワーク４０を介して送信される暗号化されたメールデータは、クライアント装置Ａに搭載されたＴＣＰ２ドライバ３４のＴＣＰ２コア３６に送られる。そして、このＴＣＰ２コア３６でＰＯＰ３パケットであることが確認された後、メールシステムコア３７に送られ、所定の処理がなされて既存のメーラ３１に送られる。
【００４１】
また、メールシステムコア３７は、ＴＣＰ２メールシステムアプリケーション部３５に接続されており、受信したメールの一覧表がＴＣＰ２メールアプリケーション部３５を介して出力装置３３に表示される（図７参照）。クライアント装置Ａのユーザはこの表示結果を見て、受信するか廃棄するかどうかを判断し、その判断結果を入力装置３２から入力する。入力装置３２の出力はＴＣＰ２メールシステムアプリケーション部３５を介してメールシステムコア３７に送られ、ここで不正メールの削除が実行される。
【００４２】
一方、クライアント装置Ａのメーラ３１から送られる電子メールは、ＴＣＰ２コア３６でＳＭＴＰのパケットであることが確認された後、メールシステムコア３７に送られる。そして、メールシステムコア３７で暗号化されて、ＴＣＰ２コア３６を介してネットワーク４０に接続されているメールサーバ４１（図４参照）に送られる。なお、記憶メディア３８には、図８〜図１５で説明するユーザ登録と鍵交換時に、ＰＯＰ３のＩＰアドレスとポート番号、ＳＭＴＰのＩＰアドレスとポート番号、ユーザＩＤとパスワード及び送信先と送信元のメールアドレス及び鍵情報が暗号化された状態で保存される。さらに、ＴＣＰ２の実装形態にもよるが、メール・メッセージを保存するように構成することもできる。
【００４３】
以上、本発明のメールシステムの実施形態例の概略構成を説明したが、詳細については、図４〜図６のブロック図と図８〜図２０のフローチャートによって説明されることになる。
図４は、ＴＣＰ２ドライバ３４の構成要素であるＴＣＰ２コア３６をより詳細に説明するための機能ブロック図である。図３と同一の部分は同一符号を付している。
図４に示すように、ＴＣＰ２コア３６は、メールシステムコア３７からのポートサーチ要求を受けて指定ポートをサーチする指定ポートサーチ部４２と、同じくメールシステムコア３７からのフック要求を受けて要求に合致するパケットをフックするフック処理部４３を備えている。
【００４４】
クライアント装置Ａのメーラ３１からのＰＯＰ３コマンドのメッセージパケットを受信し、それがＰＯＰ３コマンドのメッセージパケットであることを確認するＰＯＰ３コマンドメッセージパケット確認部４４と、ネットワーク４０に接続されるメールサーバ４１からの応答メッセージ確認部４５と、クライアント装置Ａのメーラ３１からのＳＭＴＰコマンドのメッセージパケットを受信し、それがＳＭＴＰコマンドのメッセージパケットであることを確認するＳＭＴＰコマンドメッセージパケット確認部４６と、ネットワーク４０に接続されるメールサーバ４１からの応答メッセージ確認部４７と、を備えている。さらに、これらＰＯＰ３あるいはＳＭＴＰのメッセージ確認部４４〜４７とメールシステムコア３７とを接続するパケットインターセプト部４８を有している。
【００４５】
フック処理部４３は、メールシステムコア３７からのフック要求（所定のパケットを受信したらそれを捕まえなさいという要求）があったものを補足する処理を行う部分である。すなわち、フック処理部４３では、ＰＯＰ３コマンドメッセージパケット確認部４４とＳＭＴＰコマンドメッセージ確認部４６と連携して、予めフック要求があるＩＰアドレスとポート番号を含むパケットが確認されたらこれを捕捉して、メールシステムコア３７に送る。また、メールシステムコア３７から予めフック要求があった受信者宣言データや鍵交換用定型データなどをＰＯＰ３コマンドメッセージパケット確認部４４とＳＭＴＰコマンドメッセージ確認部４６で確認した場合にも、これらをフック処理部４３で捕捉してメールシステムコア３７に送る。ＰＯＰ３あるいはＳＭＴＰの応答メッセージパケットの確認部４５、４７も同様にそれぞれのメッセージパケットを確認すると、それをフック処理部４３で捕捉し、その結果を、パケットインターセプト部４８を経由してメールシステムコア３７に送る。以上がＴＣＰ２コア３６の構成と動作である。
【００４６】
次に、図５に基づいて、メールシステムコア３７の構成と動作について説明する。図３、図４と同一の構成は同一符号を付し、説明は省略する。
メールシステムコア３７は、ＴＣＰ２コア３６から送られる各種コマンドメッセージパケットの中に含まれるユーザＩＤやパスワードの認証と、各種コマンドメッセージの分析とを行う認証／分析部５０と、認証／分析部５０で分析したコマンドメッセージパケットに含まれるＰＯＰ３のＩＰアドレスとポート番号、ＳＭＴＰのＩＰアドレスとポート番号、ユーザＩＤとパスワード及び送信先と送信元のメールアドレス及び鍵情報等や平文メールのタイトル、本文、添付ファイルを暗号化する暗号化部５１と、クライアント装置間の鍵交換を行う鍵交換部５３と、上述したように、ＰＯＰ３のＩＰアドレスとポート番号、ＳＭＴＰのＩＰアドレスとポート番号、ユーザＩＤとパスワード及び送信先と送信元のメールアドレス及び鍵情報等を暗号化した状態で記憶する記憶メディア３８を備えている。また、ＴＣＰ２メールシステムアプリケーション部３５と接続するためのインターフェース部５５と、表示された受信メールの一覧表（図７参照）に基づいてメールや添付ファイルの削除を行う、メール／添付ファイルの削除部５４と、記憶メディア３８に暗号化状態で記憶されている情報を復号化する復号化部５２を備えている。
【００４７】
上述したように、ＴＣＰ２コア３６は、メールシステムコア３７からのフック要求に基づいて、自端末のメーラ３１とメールサーバ４１からのコマンドメッセージパケットを捕捉している。ＴＣＰ２コア３６で捕捉されたコマンドメッセージパケットは、メールシステムコア３７の認証／分析部５０に送られる。
メールシステムコア３７の暗号化部５１は、認証／分析部５０で分析されたコマンドメッセージパケットのうち、メールのタイトル、本文、添付ファイルを暗号化し、ＴＣＰ２コア３６を介してメールサーバ４１に送る。なお、前記メールのタイトル、本文、添付ファイル以外のコマンドメッセージパケットは、暗号化部５１で暗号化せずに、ＴＣＰ２コア３６を介してメールサーバ４１に送る。
【００４８】
復号化部５２は、必要に応じて記憶メディア３８に記憶されているメール情報を含む種々の情報を復号化して、ＴＣＰ２コア３６を介してメーラ３１に送る手段である。また、鍵交換部５３は、自端末（クライアント装置Ａ）とネットワーク４０に接続される他端末（クライアント装置Ｂ）の間で鍵交換を行う手段である。暗号化部５１と復号化部５２では、メールのタイトル、本文あるいは添付ファイルが暗号化又は復号化されることになる。
【００４９】
また、メールシステムコア３７は、不正なメールを削除可能とするメール／添付ファイル等削除部５４を備えている。このメール／添付ファイル削除部５４は、インターフェース５５を介して、ＴＣＰ２メールアプリケーション部３５（図３、図６参照）に接続されている。クライアント装置Ａの操作者は、出力装置（表示装置）３３で表示された図７に示す表示データを確認して、受信するメールと削除するメールを判別する。削除メール（あるいは添付ファイル）については、破棄ボタンをクリックすることにより、これが図５のメールシステムコア３７のメール・添付ファイル削除部５４に送られてメールの削除が行われる。これにより、不正メールをクライアント装置Ａのメーラ３１に渡すことなく削除することが可能となる。
【００５０】
次に、図６に基づいてＴＣＰ２メールシステムアプリケーション部３５の構成と動作について説明する。ＴＣＰ２メールシステムアプリケーション部３５はメールシステムコア３７と入出力装置（３２、３３）とを接続するソフトウエアであり、インターフェース６１、ユーザ登録部６２、メール送受信相手情報管理部６３、メール表示部６４及び入出力制御部６５から構成されている。そして、入出力制御部６５からインターフェース６１を介してメールシステムコア３７でユーザ登録を行い、ユーザ登録が完了すると、メールシステムコア３７からユーザ登録完了通知が、インターフェース６１を介してユーザ登録部６２に送られる。そしてユーザ登録が完了したことが出力装置３３で表示される。
【００５１】
さらに、既に説明したように、出力装置３３には、図７に示すような受信メール一覧画面が表示されるようになっている。つまり、メールシステムコア３７にＰＯＰ３サーバからメールデータが送られてくると、暗号メール、添付ファイル付きメール、ＨＴＭＬメールはメールシステムコア３７で受信保留にされる。
【００５２】
そして、ＴＣＰ２メールアプリケーション部３５において、出力装置３３に受信したメールが一覧表示され、「受信」するか、「廃棄」するかが選択される。すなわち、暗号メールの場合は、「受信」ボタンを押下して本人を認証した上で、既存メーラ３１で受信することが可能となる。
また、添付ファイル付メールあるいはＨＴＭＬメールの場合は、送信元が意識して送信したものか否かを相手に確認した上で、「受信」ボタンを押して、既存メーラ３１で受信することができる。相手との確認の中で、相手が送信した覚えがない場合には、「廃棄」ボタンを押して、メールを廃棄することができる。
【００５３】
また、ＴＣＰ２メールアプリケーション部３５では、メール表示部６４によって、既存メーラで受信し記憶メディア３９に保存されている暗号メールを平文にして出力装置３３で表示させる。
【００５４】
＜ユーザ登録の流れの説明＞
次に、図８〜図１０のフローチャートに基づいて、ユーザ登録の流れについて詳細に説明する。
本発明では、メールの送信には、「ＰＯＰ  ｂｅｆｏｒｅ  ＳＭＴＰ」方式を使用する必要がある。
「ＰＯＰ  ｂｅｆｏｒｅ  ＳＭＴＰ」方式とは、ＳＭＴＰを利用する前に、必ずＰＯＰを実行するというメールの送信方式のことである。
メールの送信に使われるＳＭＴＰプロトコルには、（標準では）ユーザ認証をする仕組みがないため、どのユーザでもメールを送信することができる可能性がある。
そのため、例えばＳＰＡＭメールを送信したり、ウイルスのようなメールを送信したりすることもできてしまう。このようなＳＭＴＰサーバの不正利用を防ぐために考え出された方法の１つが「ＰＯＰ  ｂｅｆｏｒｅ  ＳＭＴＰ」である。
【００５５】
メールを受信するためのプロトコルであるＰＯＰプロトコルでは、接続の一番最初の段階でユーザ認証が行われることになっている。
そこでＳＭＴＰプロトコルで送信を行う前に、必ずこのＰＯＰによるユーザ認証を受けるようにすれば、ＳＭＴＰサーバを使用するユーザを限定することができ、不正なメールの送信を防止できる。
このような仕組みによってＳＭＴＰサーバを利用する方式をＰＯＰ  ｂｅｆｏｒｅ  ＳＭＴＰという。
【００５６】
一般的には、ＰＯＰ動作を行ってから、数分〜数十分程度の間だけ同じＩＰアドレスからのＳＭＴＰサーバへのアクセスが許可されるようになるので、ユーザはこの間にメールを送信する必要がある。
ＳＭＴＰサーバが「ＰＯＰ  ｂｅｆｏｒｅ  ＳＭＴＰ」方式を採用している場合、ユーザはメールを送信する前には必ず一度受信動作を行わなければならないが、メール・ソフトウェアによっては自動的にこれを行うものもある。
またメール・ソフトウェアがサポートしていないときには、一度手動で受信操作を行ってから、送信を行うようにすればよい。
今回の場合、ＳＭＴＰサーバが、「ＰＯＰ  ｂｅｆｏｒｅ  ＳＭＴＰ」方式を採用している／採用していない、に関わらず、ユーザはこの方法で送信を行う。
【００５７】
まず、ＴＣＰ２メールシステムにユーザを登録する時、ＴＣＰ２メールシステムアプリケーション部からユーザ登録を開始する（ステップＳ１）。すなわち、ＴＣＰ２メールシステムアプリケーション部３５は、ＴＣＰ２ドライバ３４内のメールシステムコア３７にユーザ登録要求をする。このユーザ登録要求を受けたメールシステムコア３７は、ＴＣＰ２ドライバ内のＴＣＰ２コア３６に対してメールのサーチ要求をする。
【００５８】
メールシステムコア３７からのメールサーチ要求を受けると、ＴＣＰ２コア３６は、指定通信ポートをサーチする（ステップＳ２）。
上記作業の後、既存メーラ３１から自分宛にユーザ登録用定型メールを送信する（ステップＳ３）。ここで、前述のとおりＳＭＴＰからメールの送信要求をする前にＰＯＰ３に接続する。この段階で、既存メーラ３１とネットワーク４０に接続されたメールサーバ４１（図４参照）との間でＴＣＰ２コアを介して、ＴＣＰ通信が確立されたことになる。
【００５９】
そして、ＴＣＰ２コア３６は、ネットワーク４０からＰＯＰ３接続メッセージを受け取り、ＰＯＰ３のポートであることを認識した上で、サーチしたポートをメールシステムコア３７に通知する（ステップＳ４）。例えば、指定通信ポートがＳＭＴＰ（例：２５ポート）あるいはＰＯＰ３（例：１１０ポート）のパケットであれば、メールシステムコア３７にサーチしたポートを通知する。また、このときにＴＣＰ２コア３６は、既存のメーラ３１に対してＰＯＰ３の接続メッセージを転送する。
【００６０】
メールシステムコア３７は、ＴＣＰ２コア３６からのサーチ結果を受けて、ＴＣＰ２コア３６にパケットを受信すること（インターセプト）を要求する（ステップＳ５）。このメールシステムコア３７からのインターセプト要求を受けて、ＴＣＰ２コア３６はパケットのインターセプトを開始する（ステップＳ６）。
【００６１】
続いて、既存のメーラ３１からＴＣＰ２コア３６に対して、ユーザＩＤが送信され、ＴＣＰ２コア３６は、このユーザＩＤのパケットを確認し（ステップＳ７）、メーラからの「ＵＳＥＲ」メッセージをメールシステムコア３７に送る。この「ＵＳＥＲ」はクライアントをサーバに接続する場合に発行されるＰＯＰ３の基本的なコマンドである。
【００６２】
メールシステムコア３７は、ＴＣＰ２コア３６からの「ＵＳＥＲ」メッセージを分析して、記憶メディア３８（図３、図５参照）にＰＯＰ３のＩＰアドレスとポート番号を保存するとともに、ユーザＩＤを一時的に保存しておく（ステップＳ８）。ここで、一時的に保存するとしたのは、パスワードの確認等によって認証ができていない段階であるからである。そして、ユーザＩＤをネットワーク４０に接続されているメールサーバ４１（図４参照）に送る。
【００６３】
メールサーバ４１からはこのユーザＩＤに対する応答がＴＣＰ２コア３６に返されるが、ＴＣＰ２コア３６は、ユーザＩＤ応答メッセージのパケットを確認してその結果である「＋ＯＫ」メッセージをメールシステムコア３７に送る（ステップＳ９）。この「＋ＯＫ」メッセージとは、メールサーバ４１において「ユーザＩＤが認識されたのでパスワードを送れ（User recognized, send password）」というメッセージである。メールシステムコア３７は、この「＋ＯＫ」メッセージを分析し、メーラ３１に対してメールサーバ４１からのユーザＩＤ応答を転送する（ステップＳ１０）。
【００６４】
次に、メーラ３１がパスワードメッセージをメールサーバ４１に送信する場合について説明する。まずメーラ３１から送られたパスワードメッセージは、ＴＣＰ２コア３６で確認され、メールシステムコア３７この確認のパスワードメッセージのパケットが送られる（ステップＳ１１）。メールシステムコア３７は、ＴＣＰ２コア３６からの「ＰＡＳＳ」メッセージを受け取り、これを分析する。分析した結果、記憶メディア３８にパスワードを一時的に保存（仮保存）するとともに、ネットワーク４０に接続されているメールサーバ４１に対してパスワードを送る（ステップＳ１２）。
【００６５】
次に、メールサーバ４１からパスワード応答メッセージがクライアント装置Ａに返ってくると、ＴＣＰ２コア３６でパスワード応答メッセージのパケットを確認し、メールシステムコア３７にパスワード応答メッセージのパケットを送る（ステップＳ１３）。メールシステムコア３７はパスワード応答メッセージのパケットを受け取り、メッセージを分析する。すなわち、パスワードが確認されたことを示す「＋ＯＫ」メッセージを分析し、記憶メディア３８に一時的に保存していたユーザＩＤとパスワードを記憶メディア３８に正規に保存する。これによってユーザ認証が終了したことになる。そして、ユーザＩＤとパスワードの保存終了後は、メールサーバ４１からのパスワード応答をメーラ３１に送信する。
【００６６】
このパスワード応答を受けて、メーラ３１は、接続を解除することを伝える終了宣言（ＱＵＩＴ）をＴＣＰ２コア３６に送り、ＴＣＰ２コア３６はこの終了宣言を確認したことをメールシステムコア３７に伝える（ステップＳ１５）。メールシステムコア３７は、この「ＱＵＩＴ」メッセージを分析し、終了宣言（ＱＵＩＴ）をネットワーク４０に接続されているメールサーバ４１に送る（ステップＳ１６）。
その後、メールサーバ４１から終了宣言応答がＴＣＰ２コア３６に返されるので、ＴＣＰ２コア３６は、この終了宣言応答のパケットを確認し（ステップＳ１７）、この結果をメールシステムコア３７に送る。メールシステムコア３７は、ＴＣＰ２コア３６からの「＋ＯＫ」メッセージを分析して、メーラ３１に終了宣言応答を転送する（ステップＳ１８）。これにより、ＴＣＰ２コア３６とメーラ３１の間、及びＴＣＰ２コア３６とネットワーク４０に接続されたメールサーバ４１との間のＴＣＰ通信の切断が完了する。
【００６７】
次に、図９に基づいて、ユーザ登録の流れの第２段階について説明する。
第２段階は、メーラ３１のＳＭＴＰから、ネットワーク４０に接続されているメールサーバ４１へのメール送信要求から始まる（ステップＳ１９）。これによって、メーラ３１とメールサーバ４１との間でＴＣＰ２コアを介してＴＣＰ通信が確立される。
ＴＣＰ通信が確立された後は、メールサーバ４１からＴＣＰ２コア３６に対して、ＳＭＴＰ接続メッセージが送られ、ＴＣＰ２コア３６は、ＳＭＴＰの応答コード「２２０」を受けて、ＳＭＴＰのポートであることを認識し、サーチ結果をメールシステムコア３７に通知する（ステップＳ２０）。ＳＭＴＰの応答コード「２２０」は、メールサーバとクライアント装置との間で接続の準備が完了したという通知である。
【００６８】
続いて、メールシステムコア３７は、ＴＣＰ２コア３６に対してパケットの受信（インターセプト）を要求し（ステップＳ２１）、これを受けたＴＣＰ２コア３６はパケットの受信を開始する（ステップＳ２２）。
次に、クライアント装置のメーラ３１から使用開始宣言が発せられる。この使用開始宣言は、クライアント装置からサーバに対して「これからメールを送信しますよ。」というメッセージである。ＴＣＰ２コア３６は、使用開始宣言メッセージのパケットを確認し（ステップＳ２３）、これを「ＨＥＬＯ」、「ＥＨＬＯ」メッセージとしてメールシステムコア３７に送る。
【００６９】
メールシステムコア３７は、この「ＨＥＬＯ」、「ＥＨＬＯ」メッセージを分析し、記憶メディア３８に、ＳＭＴＰのＩＰアドレスとポート番号を保存する（ステップＳ２４）。そして、使用開始宣言をネットワーク４０に接続されるメールサーバ４１に送る。メールサーバ４１からはこれに対する使用開始宣言応答が発せられ、これがＴＣＰ２コア３６で確認される（ステップＳ２５）。この使用開始宣言の応答コードは番号「２５０」で示される。この応答コード「２５０」は、「要求された処理は実行可能。完了。（Requested  mail action okay, completed）」というものである。
【００７０】
メールシステムコア３７は、この「２５０」メッセージを分析し、メールサーバ４１から送られた使用開始宣言応答をメーラ３１に送る（ステップＳ２６）。
続いて、メーラ３１から送信者宣言が送られる。ＴＣＰ２コア３６は、この送信者宣言のパケットを確認し、これをメールシステムコア３７に送る（ステップＳ２７）。この送信者宣言メッセージは「ＭＡＩＬ  ＦＲＯＭ：＜」というメッセージであり、送信者を知らせるメッセージである。メールシステムコア３７は、このメッセージを分析し、記憶メディア３８に送信元のメールアドレスを保存するとともに（ステップＳ２８）、送信者宣言をメールサーバ４１に送信する。
【００７１】
メールサーバ４１は、これを受けて送信者宣言応答を発行する。ＴＣＰ２コア３６は、この送信者宣言応答のパケットを確認し、この応答コード「２５０」をメールシステムコア３７に送る（ステップＳ２９）。メールシステムコア３７は、この「２５０」応答コードを分析した後に、受信した送信者宣言応答をクライアント装置のメーラ３１に送る（ステップＳ３０）。
【００７２】
続いて、メーラ３１は、受信者宣言メッセージを送信する。この受信者宣言メッセージは「このメールアドレスに送ってください。」ということをメールサーバ４１に伝えるメッセージであり、「ＲＣＰＴ  ＴＯ：＜」という記号で表現される。ＴＣＰ２コア３６はこの受信者宣言メッセージを確認し（ステップＳ３１）、これをメールシステムコア３７に送る。メールシステムコア３７は、この「ＲＣＰＴ  ＴＯ：＜」メッセージを分析し、メールサーバ４１に送る（ステップＳ３２）。
【００７３】
これを受けて、メールサーバ４１は受信者宣言応答をＴＣＰ２コア３６に返し、ＴＣＰ２コア３６は、この受信者宣言応答を確認し、応答コード「２５０」としてメールシステムコア３７に送る（ステップＳ３３）。メールシステムコア３７は、この受信者宣言応答を分析し、クライアント端末のメーラ３１に転送する（ステップＳ３４）。
【００７４】
続いて、図１０に示されるユーザ登録の流れの第３段階について説明する。すなわち、受信者宣言応答を受信したクライアント装置のメーラ３１は、本文開始宣言を発信する。ＴＣＰ２コア３６は、この本文開始宣言のパケットを確認して、「ＤＡＴＡ」メッセージとしてメールシステムコア３７に渡す（ステップＳ３５）。ここで「ＤＡＴＡ」は、本文の送を意味するＳＭＴＰコマンドである。メールシステムコア３７は、この「ＤＡＴＡ」メッセージを分析し、この本文開始宣言をメールサーバ４１に送信する（ステップＳ３６）。          
【００７５】
メールサーバ４１は、この本文開始宣言を受け取ると、本文開始宣言応答をクライアント装置に送る。そして、クライアント装置のＴＣＰ２コア３６が本文開始宣言応答のパケットを確認して、これを「３５４」メッセージとしてメールシステムコア３７に送る（ステップＳ３７）。ここで応答コード「３５４」は、メールの入力開始を示すＳＭＴＰの応答コードである。
メールシステムコア３７は、この「３５４」メッセージを分析し、メールサーバ４１から送信された本文開始宣言応答を自端末のメーラ３１に送る（ステップＳ３８）。
【００７６】
メーラ３１はこれを受けて、ユーザ登録用定型メール・メッセージをメールサーバ４１に送信する。この時、ＴＣＰ２コア３６は、ユーザ登録用定型メール・メッセージのパケットを確認し、これをメールシステムコア３７に送る（ステップＳ３９）。
メールシステムコア３７はユーザ登録用定型メール・メッセージのパケットを受け取り、ユーザ登録用定型メール・メッセージの分析を行う（ステップＳ４０）。そして、ユーザ登録用定型メール・メッセージをメールサーバ４１に送る。
【００７７】
次に、メールサーバ４１から送信データ応答メッセージがクライアント装置に送られる。ＴＣＰ２コア３６は、この送信データ応答メッセージのパケットを確認し、メールシステムコア３７に送信データ応答メッセージのパケットを送る（ステップＳ４１）。メールシステムコア３７はこの送信データ応答メッセージのパケットを受け取り、メッセージを分析する。すなわち、ＳＭＴＰの応答コード「２５０  ＯＫ」メッセージを分析し、ＴＣＰ２メールシステムアプリケーション部３５にユーザ登録が完了したことを通知するとともに、送信データ応答を自端末のメーラ３１に送る（ステップＳ４２）。ＴＣＰ２メールシステムアプリケーション部３５はメールシステムコア３７からの通知を受けてユーザ登録が完了したことを出力装置３３の表示画面に表示する（ステップＳ４３）。
【００７８】
メールサーバ４１からの送信データ応答を受け取ったメーラ３１は、終了宣言メッセージ「ＱＵＩＴ」をメールサーバ４１に送ることになる。この終了宣言メッセージを受信したＴＣＰ２コア３６は、このパケットを確認して（ステップＳ４４）、「ＱＵＩＴ」メッセージとしてメールシステムコア３７に送る。メールシステムコア３７は、この「ＱＵＩＴ」メッセージを分析し、メールサーバ４１に終了宣言を送信する（ステップＳ４５）。メールサーバ４１は、この終了宣言に対して、終了宣言応答を発し、これをクライアント装置に送る。そして、クライアント装置のＴＣＰ２コア３６は、受信した終了宣言応答のパケットを確認し、ＳＭＴＰの応答コード「２２１」メッセージとしてメールシステムコア３７に送る（ステップＳ４６）。「２２１」メッセージは接続を閉じることを告げるＳＭＴＰの応答コードである。メールシステムコア３７は、この「２２１」メッセージを分析し、その終了宣言応答を自端末のメーラ３１に送る。これによって、ユーザ登録の流れが全て完了し、クライアント装置のメーラ３１とメールサーバ４１とのＴＣＰ通信が切断される。
【００７９】
＜鍵交換送り側の流れの説明＞
次に、図１１〜図１３のフローチャートに基づいて、鍵交換送り側の流れについて説明する。
まず、ＴＣＰ２メールシステムのＴＣＰ２ドライバ３４のメールシステムコア３７から、ＴＣＰ２コアに、登録している全ユーザのメールサーバのＰＯＰ３，ＳＭＴＰのＩＰアドレスとボート番号のパケットを捕捉するフック要求が常時出ている（ステップＳ５０）。フック要求とは、登録されている全てのユーザに登録されているメールサーバのＰＯＰ３、ＳＭＴＰのＩＰアドレスとボート番号を含むパケットを捕捉しなさいという要求である。ＴＣＰ２コア３６は、このフック要求を受けると、登録してある全ユーザのＰＯＰ３とＳＭＴＰのサーバのＩＰアドレスとポート番号を含むパケットを捕捉（フック）する（ステップＳ５１）。
【００８０】
ここで、ＴＣＰ２メールシステムで暗号化メールの送受信をするときは、暗号化メールを送受信するユーザ間で、最初に鍵交換用定型メールの送受信を行う必要がある。
このため、まず、自端末（新規送信側端末：「クライアント装置Ａ」とする）のメーラ３１に、鍵交換用定型メールを入力し、この入力された鍵交換用定型メールをネットワーク４０に接続されたメールサーバ４１に送信する（ステップＳ５２）。メールサーバ４１は、鍵交換の相手側端末（新規受信側端末：「クライアント装置Ｂ」とする）のメールサーバに鍵交換用定型メールを転送し、相手側端末（クライアント装置Ｂ）は、そのメールサーバにアクセスすることにより鍵交換定型メールを受信することができる。
【００８１】
前記クライアント装置Ａとメールサーバ４１の間で、まず、ＳＭＴＰからメールの送信要求をする前にＰＯＰ３に接続する。この段階で、既存メーラ３１とネットワーク４０に接続されたメールサーバ４１（図４参照）との間でＴＣＰ２コアを介して、ＴＣＰ通信が確立される。
【００８２】
その後、ネットワーク４０に接続されたメールサーバ４１からは、ＰＯＰ３接続メッセージが送られるが、ＴＣＰ２コア３６は、このＰＯＰ３接続メッセージを受け取り、ＰＯＰ３のパケットであることを認識した上で、メールシステムコア３７にフック結果を通知する（ステップＳ５３）。
【００８３】
メールシステムコア３７は、ＴＣＰ２コア３６からのフック結果を受けて、ＴＣＰ２コア３６にパケットを受信すること（インターセプト）を要求する（ステップＳ５４）。このメールシステムコア３７からのインターセプト要求を受けて、ＴＣＰ２コア３６はパケットのインターセプトを開始する（ステップＳ５５）。
【００８４】
続いて、既存のメーラ３１からＴＣＰ２コア３６に対して、ユーザＩＤが送信され、ＴＣＰ２コア３６は、このユーザＩＤのパケットを確認し（ステップＳ５６）、メーラからの「ＵＳＥＲ」メッセージをメールシステムコア３７に送る。この「ＵＳＥＲ」メッセージは、ユーザ登録（図８参照）でも説明したように、クライアントをサーバに接続する場合に発行されるＰＯＰ３の基本的なコマンドである。
【００８５】
メールシステムコア３７は、ＴＣＰ２コア３６からの「ＵＳＥＲ」メッセージを分析して、記憶メディア３８（図３、図５参照）に、ユーザＩＤを一時的に保存しておく（ステップＳ５７）。ここで、一時的に保存とは、パスワードの確認等によって認証ができていない段階、すなわり、認証後の正式な保存の前段階の保存を意味している。そして、ユーザＩＤをネットワーク４０に接続されているメールサーバ４１に送る。
【００８６】
メールサーバ４１からはこのユーザＩＤに対する応答がＴＣＰ２コア３６に返されるが、ＴＣＰ２コア３６は、ユーザＩＤ応答メッセージのパケットを確認してその結果である「＋ＯＫ」メッセージをメールシステムコア３７に送る（ステップＳ５８）。この「＋ＯＫ」メッセージとは、メールサーバ４１において「ユーザＩＤが認識されたのでパスワードを送れ（User recognized, send password）」というメッセージである。メールシステムコア３７は、この「＋ＯＫ」メッセージを分析し、メーラ３１に対してメールサーバ４１からのユーザＩＤ応答を転送する（ステップＳ５９）。
【００８７】
次に、クライアント装置Ａの既存メーラ３１からネットワーク４０に接続されるメールサーバ４１へパスワードメッセージが送られる。このメーラ３１から送られたパスワードメッセージは、ＴＣＰ２コア３６で確認され、メールシステムコア３７この確認のパスワードメッセージのパケットが送られる（ステップＳ６０）。メールシステムコア３７は、ＴＣＰ２コア３６からの「ＰＡＳＳ」メッセージを受け取り、これを分析する。分析した結果、記憶メディア３８にパスワードを一時的に保存（仮保存）するとともに、ネットワーク４０に接続されているメールサーバ４１に対してパスワードを送る（ステップＳ６１）。
【００８８】
次に、メールサーバ４１からパスワード応答メッセージがクライアント装置Ａに返ってくると、ＴＣＰ２コア３６でパスワード応答メッセージのパケットを確認し、メールシステムコア３７にパスワード応答メッセージのパケットを送る（ステップＳ６２）。メールシステムコア３７はパスワード応答メッセージのパケットを受け取り、メッセージを分析する。すなわち、パスワードが確認されたことを示す「＋ＯＫ」メッセージを分析して、記憶メディア３８に一時的に保存したユーザＩＤとパスワードを、記憶メディア３８にユーザ登録してあるユーザＩＤとパスワードと照合して認証を行い、鍵情報を取得する（ステップＳ６３）。そして、鍵情報を取得後にパスワード応答をメーラ３１に送信する。
【００８９】
このパスワード応答を受けて、メーラ３１は、接続を解除することを伝える終了宣言（ＱＵＩＴ）をＴＣＰ２コア３６に送り、ＴＣＰ２コア３６はこの終了宣言を確認したことをメールシステムコア３７に伝える（ステップＳ６４）。メールシステムコア３７は、この「ＱＵＩＴ」メッセージを分析し、終了宣言（ＱＵＩＴ）をネットワーク４０に接続されているメールサーバ４１に送る（ステップＳ６５）。
その後、メールサーバ４１から終了宣言応答がＴＣＰ２コア３６に返されるので、ＴＣＰ２コア３６は、この終了宣言応答のパケットを確認し（ステップＳ６６）、この結果をメールシステムコア３７に送る。メールシステムコア３７は、ＴＣＰ２コア３６からの「＋ＯＫ」メッセージを分析して、メーラ３１に終了宣言応答を転送する（ステップＳ６７）。これにより、クライアント装置Ａとネットワーク４０に接続されたメールサーバ４１（クライアント装置Ｂ）との間のＴＣＰ通信の切断が完了する。
【００９０】
次に、図１２に基づいて、鍵交換送り側の第２段階について説明する。
第２段階は、ユーザ登録（図９参照）時と同様に、メーラ３１のＳＭＴＰから、ネットワーク４０に接続されているメールサーバ４１へのメール送信要求から始まる（ステップＳ６８）。これによって、メーラ３１とメールサーバ４１との間でＴＣＰ２コアを介してＴＣＰ通信が確立される。
ＴＣＰ通信が確立された後は、メールサーバ４１からＴＣＰ２コア３６に対して、ＳＭＴＰ接続メッセージが送られ、ＴＣＰ２コア３６は、ＳＭＴＰの応答コード「２２０」を受けて、ＳＭＴＰのポートであることを認識し、サーチ結果をメールシステムコア３７に通知する（ステップＳ６９）。
【００９１】
続いて、メールシステムコア３７は、ＴＣＰ２コア３６に対してパケットの受信（インターセプト）を要求し（ステップＳ７０）、これを受けたＴＣＰ２コア３６はパケットの受信を開始する（ステップＳ７１）。
次に、クライアント装置のメーラ３１から使用開始宣言が発せられる。この使用開始宣言は、クライアント装置からサーバに対して「これからメールを送信しますよ。」というメッセージである。ＴＣＰ２コア３６は、使用開始宣言メッセージのパケットを確認し（ステップＳ７２）、これを「ＨＥＬＯ」、「ＥＨＬＯ」メッセージとしてメールシステムコア３７に送る。
【００９２】
メールシステムコア３７は、この「ＨＥＬＯ」、「ＥＨＬＯ」メッセージを分析し、記憶メディア３８に、ＳＭＴＰのＩＰアドレスとポート番号を保存する（ステップＳ７３）。そして、使用開始宣言をネットワーク４０に接続されるメールサーバ４１に送る。メールサーバ４１からはこれに対する使用開始宣言応答が発せられ、これがＴＣＰ２コア３６で確認される（ステップＳ７４）。
【００９３】
メールシステムコア３７は、この「２５０」メッセージを分析し、メールサーバ４１から送られた使用開始宣言応答をメーラ３１に送る（ステップＳ７５）。
続いて、メーラ３１から送信者宣言が送られる。ＴＣＰ２コア３６は、この送信者宣言のパケットを確認し、これをメールシステムコア３７に送る（ステップＳ７６）。この送信者宣言メッセージは「ＭＡＩＬ  ＦＲＯＭ：＜」というメッセージであり、送信者を知らせるメッセージである。メールシステムコア３７は、このメッセージを分析し、記憶メディア３８に送信元のメールアドレスを保存するとともに（ステップＳ７７）、送信者宣言をメールサーバ４１に送信する。
【００９４】
メールサーバ４１は、これを受けて送信者宣言応答を発行する。ＴＣＰ２コア３６は、この送信者宣言応答のパケットを確認し、この応答コード「２５０」をメールシステムコア３７に送る（ステップＳ７８）。メールシステムコア３７は、この「２５０」応答コードを分析した後に、受信した送信者宣言応答をクライアント装置のメーラ３１に送る（ステップＳ７９）。
【００９５】
続いて、メーラ３１は、受信者宣言メッセージを送信する。この受信者宣言メッセージは「このメールアドレスに送ってください。」ということをメールサーバ４１に伝えるメッセージであり、「ＲＣＰＴ  ＴＯ：＜」という記号で表現される。ＴＣＰ２コア３６はこの受信者宣言メッセージを確認し（ステップＳ８０）、これをメールシステムコア３７に送る。メールシステムコア３７は、この「ＲＣＰＴ  ＴＯ：＜」メッセージを分析し、記憶メディア３８に送信先メールアドレスを保存するとともに、受信者宣言をメールサーバ４１に送る（ステップＳ８１）。
【００９６】
これを受けて、メールサーバ４１は受信者宣言応答をＴＣＰ２コア３６に返し、ＴＣＰ２コア３６は、この受信者宣言応答を確認し、応答コード「２５０」としてメールシステムコア３７に送る（ステップＳ８２）。メールシステムコア３７は、この受信者宣言応答を分析し、クライアント端末のメーラ３１に転送する（ステップＳ８３）。
【００９７】
続いて、図１３基づいて、鍵交換送り側の流れの第３段階について説明する。すなわち、受信者宣言応答を受信したクライアント装置Ａのメーラ３１は、本文開始宣言を発信する。ＴＣＰ２コア３６は、この本文開始宣言のパケットを確認して、「ＤＡＴＡ」メッセージとしてメールシステムコア３７に渡す（ステップＳ８４）。ここで「ＤＡＴＡ」は、本文の送信を意味するＳＭＴＰコマンドである。メールシステムコア３７は、この「ＤＡＴＡ」メッセージを分析し、この本文開始宣言をメールサーバ４１に送信する（ステップＳ８５）。          
【００９８】
メールサーバ４１は、この本文開始宣言を受け取ると、本文開始宣言応答をクライアント装置Ａに送る。そして、クライアント装置ＡのＴＣＰ２コア３６が本文開始宣言応答のパケットを確認して、これを「３５４」メッセージとしてメールシステムコア３７に送る（ステップＳ８６）。ここで応答コード「３５４」は、メールの入力開始を示すＳＭＴＰの応答コードである。
メールシステムコア３７は、この「３５４」メッセージを分析し、メールサーバ４１から送信された本文開始宣言応答を自端末のメーラ３１に送る（ステップＳ８７）。
【００９９】
メーラ３１はこれを受けて、鍵交換用定型メール・メッセージをメールサーバ４１に送信する。この時、ＴＣＰ２コア３６は、鍵交換用定型メール・メッセージのパケットを確認し、これをメールシステムコア３７に送る（ステップＳ８８）。
メールシステムコア３７は鍵交換用定型メール・メッセージのパケットを受け取ると、まずここで鍵交換先が送信側か否かを判断する（ステップＳ８９）。すなわち、鍵交換は、暗号メールをやり取りする端末同士（クライアント装置ＡとＢ）が、お互いに相手装置に対して鍵交換用定型メールを送る必要がある。例えば、クライアント装置Ａとクライアント装置Ｂとの間で暗号メールをやり取りする場合、まず送り側クライアント装置Ａから受け側クライアント装置Ｂに対して鍵交換用定型メール・メッセージを送り、続いて受け側クライアント装置Ｂから送り側クライアント装置Ａに対して鍵交換用定型メール・メッセージを送る。判断ステップＳ８９は、鍵交換先が送り側か受け側かの判断を行うステップである。この鍵交換用定型メール・メッセージのやり取りにメールサーバ４１（図４参照）が介在していることは言うまでもない。
【０１００】
判断ステップＳ８９において、鍵交換用定型メール・メッセージが送り側（クライアント装置Ａ）からのものであると判断された場合は、「メール・メッセージ」を分析し、ネットワーク４０に接続されたメールサーバ４１に鍵元値を付加した送信メールを送る（ステップＳ９０）。このとき、鍵元値は記憶メディア３８に記憶されるとともに、ＴＣＰ２メールシステムアプリケーション部３５に送られ、出力装置３３に現在の鍵状態が表示される（ステップＳ９１）。
【０１０１】
また、判断ステップＳ８９において、鍵交換先が送信側（クライアント装置Ａ）ではないと判断された場合、すなわち、鍵交換先が受信側（クライアント装置Ｂ）であると判断された場合は、「メール・メッセージ」を分析し、ネットワーク４０に接続されたメールサーバ４１に鍵元値を付加した送信メールを送るとともに、鍵元値を記憶メディア３８に保存する（ステップＳ９２）。そして、付加した鍵元値と既に記憶メディア３８に保存してある鍵元値とから新たな鍵を生成して、記憶メディア３８に保存する。そして、この新たに生成した鍵をＴＣＰ２メールシステムアプリケーション部３５に送り、出力装置３３に現在の鍵状態を表示する（ステップＳ９３）。以上説明したような処理を経て、鍵交換用定型メール・メッセージがメールサーバ４１（クライアント装置Ｂ）に送られる。
【０１０２】
次に、メールサーバ４１から送信データ応答メッセージがクライアント装置Ａに送られる。ＴＣＰ２コア３６は、この送信データ応答メッセージのパケットを確認し、メールシステムコア３７に送信データ応答メッセージのパケットを送る（ステップＳ９４）。メールシステムコア３７はこの送信データ応答メッセージのパケットを受け取り、メッセージを分析する。すなわち、ＳＭＴＰの応答コード「２５０  ＯＫ」メッセージを分析し、送信データ応答を自端末（クライアント装置Ａ）のメーラ３１に送る（ステップＳ９５）。
【０１０３】
こうしてメールサーバ４１からの送信データ応答を受け取ったメーラ３１は、終了宣言メッセージ「ＱＵＩＴ」をメールサーバ４１に送ることになる。この終了宣言メッセージを受信したＴＣＰ２コア３６は、このパケットを確認して（ステップＳ９６）、「ＱＵＩＴ」メッセージとしてメールシステムコア３７に送る。メールシステムコア３７は、この「ＱＵＩＴ」メッセージを分析し、メールサーバ４１に終了宣言を送信する（ステップＳ９７）。メールサーバ４１は、この終了宣言に対して、終了宣言応答を発し、これをクライアント装置Ａに送る。そして、クライアント装置ＡのＴＣＰ２コア３６は、受信した終了宣言応答のパケットを確認し、ＳＭＴＰの応答コード「２２１」メッセージとしてメールシステムコア３７に送る（ステップＳ９８）。「２２１」メッセージは接続を閉じることを告げるＳＭＴＰの応答コードである。メールシステムコア３７は、この「２２１」メッセージを分析し、その終了宣言応答を自端末のメーラ３１に送る（ステップＳ９９）。これによって、鍵交換送り側の流れが全て完了し、クライアント装置Ａのメーラ３１とメールサーバ４１とのＴＣＰ通信が切断される。
【０１０４】
＜鍵交換受け側の流れの説明＞
次に、図１４、図１５のフローチャートに基づいて鍵交換受け側の流れについて説明する。
図１４に示すように、まず、ＴＣＰ２ドライバ３４のメールシステムコア３７から、ＴＣＰ２コアに、登録している全ユーザのＰＯＰ３、ＳＭＴＰのサーバのＩＰアドレスとポート番号を含むパケットを捕捉するためのフック要求が常時出ている（ステップＳ１０１）。ＴＣＰ２コア３６は、このフック要求を受けると、登録してある全ユーザのＰＯＰ３とＳＭＴＰのサーバのＩＰアドレスとポート番号を含むパケットを捕捉（フック）する（ステップＳ１０２）。
【０１０５】
鍵交換受け側で既存メーラ３１でメールの受信を実行すると、既存メーラ３１とネットワーク４０に接続されたメールサーバ４１（図４参照）との間でＴＣＰ通信が確立される。言い換えると、既存メーラ３１を有するクライアント装置Ａとネットワーク４０に接続されるメールサーバ４１（クライアント装置Ｂといってもよい）との間でＴＣＰ通信が確立される。
【０１０６】
ネットワーク４０に接続されたメールサーバ４１からは、ＰＯＰ３接続メッセージが送られるが、ＴＣＰ２コア３６は、このＰＯＰ３接続メッセージを受け取り、ＰＯＰ３のポートからの接続メッセージであることを認識した上で、メールシステムコア３７にフック結果を通知する（ステップＳ１０３）。
【０１０７】
メールシステムコア３７は、ＴＣＰ２コア３６からのフック結果を受けて、ＴＣＰ２コア３６にパケットを受信すること（インターセプト）を要求する（ステップＳ１０４）。このメールシステムコア３７からのインターセプト要求を受けて、ＴＣＰ２コア３６はパケットのインターセプトを開始する（ステップＳ１０５）。
【０１０８】
続いて、クライアント装置Ａのメーラ３１からＴＣＰ２コア３６に対して、ユーザＩＤが送信され、ＴＣＰ２コア３６は、このユーザＩＤのパケットを確認し（ステップＳ１０６）、メーラからの「ＵＳＥＲ」メッセージをメールシステムコア３７に送る。メールシステムコア３７は、この「ＵＳＥＲ」メッセージを分析して、記憶メディア３８（図３、図５参照）に、ユーザＩＤを一時的に保存しておく（ステップＳ１０７）。ここで、一時的に保存とは、パスワードの確認等によって認証ができていない段階、すなわり、認証後の正式な保存の前段階の保存を意味している。そして、ユーザＩＤをネットワーク４０に接続されているメールサーバ４１に送る。
【０１０９】
メールサーバ４１からはこのユーザＩＤに対する応答がＴＣＰ２コア３６に返されるが、ＴＣＰ２コア３６は、ユーザＩＤ応答メッセージのパケットを確認してその結果である「＋ＯＫ」メッセージをメールシステムコア３７に送る（ステップＳ１０８）。この「＋ＯＫ」メッセージとは、メールサーバ４１において「ユーザＩＤが認識されたのでパスワードを送れ（User recognized, send password）」というメッセージである。メールシステムコア３７は、この「＋ＯＫ」メッセージを分析し、メーラ３１に対してメールサーバ４１からのユーザＩＤ応答を転送する（ステップＳ１０９）。
【０１１０】
次に、クライアント装置Ａの既存メーラ３１からネットワーク４０に接続されるメールサーバ４１へパスワードメッセージが送られる。このメーラ３１から送られたパスワードメッセージは、ＴＣＰ２コア３６で確認され、メールシステムコア３７にこの確認のパスワードメッセージのパケットが送られる（ステップＳ１１０）。メールシステムコア３７は、ＴＣＰ２コア３６からの「ＰＡＳＳ」メッセージを受け取り、これを分析する。分析した結果、記憶メディア３８にパスワードを一時的に保存（仮保存）するとともに、ネットワーク４０に接続されているメールサーバ４１に対してパスワードを送る（ステップＳ１１１）。
【０１１１】
次に、メールサーバ４１からパスワード応答メッセージがクライアント装置Ａに返ってくると、ＴＣＰ２コア３６でパスワード応答メッセージのパケットを確認し、メールシステムコア３７にパスワード応答メッセージのパケットを送る（ステップＳ１１２）。メールシステムコア３７はパスワード応答メッセージである「＋ＯＫ」メッセージのパケットを分析し、既に記録メディア３８に登録されているユーザＩＤとパスワードに基づいて上記一時的に保存されたユーザＩＤとパスワードを認証し、鍵情報を取得する（ステップＳ１１３）。そして、受け取ったパスワード応答をメーラ３１に送る。
【０１１２】
続いて、図１５に基づいて、鍵交換受け側の流れの続きを説明する。メールシステムコア３７からのパスワード応答の送信を受けて、メーラ３１は、メールのダウンロード要求を発信する。ＴＣＰ２コア３６はメーラ３１からのダウンロード要求のパケットを確認し、これを「ＲＥＴＲ」メッセージとしてメールシステムコア３７に伝える（ステップＳ１１４）。メールシステムコア３７は、この「ＲＴＥＲ」メッセージを分析し、ネットワーク４０に接続されているメールサーバ４１にメールダウンロード要求を送る（ステップＳ１１５）。ここで、「ＲＥＴＲ」メッセージは、パラメータで指定したメッセージを受け取るためのＰＯＰ３の基本的コマンドである。仮にメッセージのない行をパラメータとして指定したときは、「−ＥＲＲ  message does not exist」が返されることになっている。
【０１１３】
その後、メールサーバ４１から鍵交換用定型メール・メッセージが送られてくる。この鍵交換用定型メール・メッセージはネットワーク４０に接続されるクライアント装置Ｂ（受信側）からクライアント装置Ａ（送信側）に送られるものである。
ＴＣＰ２コア３６は、鍵交換用定型メール・メッセージのパケットを確認し、これをメールシステムコア３７に送る（ステップＳ１１６）。
【０１１４】
メールシステムコア３７は鍵交換用定型メール・メッセージのパケットを受け取ると、まずここで鍵交換先が受信側か否かを判断する（ステップＳ１１７）。例えば、クライアント装置Ａとクライアント装置Ｂとの間で暗号メールをやり取りする場合、まず送り側クライアント装置Ａから受け側クライアント装置Ｂに対して鍵交換用定型メール・メッセージを送り、続いて受け側クライアント装置Ｂから送り側クライアント装置Ａに対して鍵交換用定型メール・メッセージを送る。判断ステップＳ１１７は、鍵交換先が受け側のクライアント装置Ｂから送られてきたものかどうかを判断するステップである。このように鍵交換は暗号メールをやり取りする両者がお互いに相手に鍵交換用定型メールを送る必要がある。
【０１１５】
判断ステップＳ１１７において、鍵交換用定型メール・メッセージが受け側（クライアント装置Ｂ）からのものであると判断された場合は、「メール・メッセージ」を分析し、送信元メールアドレスと鍵元値を記憶メディア３８に保存する。また、「鍵交換用定型メール・メッセージ」と「鍵交換メール受信通知メール・メッセージと入れ替えて、メーラ３１に送信する（ステップＳ１１８）。このとき、現在の鍵状態が、ＴＣＰ２メールシステムアプリケーション部３５に送られ、出力装置３３に表示される（ステップＳ１１９）。そして、鍵交換受信メール・メッセージを自端末のメーラ３１に送る。メーラ３１はこのメッセージを受け取ると、これを記憶メディア３９に保存する（ステップＳ１２０）。
【０１１６】
また、判断ステップＳ１１７において、鍵交換先が受信側（クライアント装置Ｂ）ではないと判断された場合、すなわち、鍵交換先が送信側（クライアント装置Ａ）であると判断された場合は、「メール・メッセージ」を分析し、送信元メールアドレスと鍵元値を記憶メディア３８に保存する。また、受信したメールの鍵元値と記憶メディア３８に保存されている鍵元値から新たな鍵を生成し、この鍵を記憶メディア３８に保存する。そして、「鍵交換用定型メール・メッセージ」と「鍵交換メール受信通知メール・メッセージ」と入れ替えて、メーラ３１に送信する（以上、ステップＳ１２１）。このとき、現在の鍵状態は、ＴＣＰ２メールシステムアプリケーション部３５に送られ、出力装置３３に表示される（ステップＳ１２２）。
【０１１７】
メーラ３１は、受け取った「鍵交換メール受信通知メール・メッセージ」を記憶メディア３９に保存するとともに（ステップＳ１２３）、メッセージ削除要求「ＤＥＬＥ」をＴＣＰ２コア３６に送る。ＴＣＰ２コア３６は、このメッセージ削除要求のパケットを確認し（ステップＳ１２４）、メールシステムコア３７に送る。メールシステムコア３７は、このメッセージ削除要求「ＤＥＬＥ」を分析し、このメッセージ削除要求をメールサーバ４１に送る（ステップＳ１２５）。
【０１１８】
このメッセージ削除要求を受けて、メールサーバ４１は、メッセージ削除応答をＴＣＰ２コア３６に送り、ＴＣＰ２コア３６はこのパケットを確認する（ステップＳ１２６）。メールシステムコア３７は、このメッセージ削除応答の「＋ＯＫ」メッセージを分析し、これをメーラ３１に送る（ステップＳ１２７）。
【０１１９】
メーラ３１は、このメッセージ削除応答を受信すると、終了宣言メッセージ「ＱＵＩＴ」をメールサーバ４１に送ることになるが、この終了宣言メッセージを受信したＴＣＰ２コア３６は、このパケットを確認して（ステップＳ１２８）、「ＱＵＩＴ」メッセージとしてメールシステムコア３７に送る。メールシステムコア３７は、この「ＱＵＩＴ」メッセージを分析し、メールサーバ４１に終了宣言を送信する（ステップＳ１２９）。
【０１２０】
メールサーバ４１は、この終了宣言に対して、終了宣言応答を発し、これをクライアント装置ＡのＴＣＰ２コア３６に送る。そして、クライアント装置ＡのＴＣＰ２コア３６は、受信した終了宣言応答のパケットを確認し、ＳＭＴＰの応答コード「＋ＯＫ」メッセージとしてメールシステムコア３７に送る（ステップＳ１３０）。メールシステムコア３７は、この「＋ＯＫ」メッセージを分析し、その終了宣言応答を自端末のメーラ３１に送る（ステップＳ１３１）。これによって、鍵交換受け側の流れが全て完了し、クライアント装置Ａのメーラ３１とメールサーバ４１（クライアント装置Ｂ）とのＴＣＰ通信が切断される。
【０１２１】
＜暗号メール送信側の流れの説明＞
次に、図１６〜図１８のフローチャートに基づいて、暗号メール送信側の流れについて説明する。
まず、ＴＣＰ２ドライバ３４のメールシステムコア３７から、登録している全ユーザのＳＭＴＰとＰＯＰ３のサーバのＩＰアドレスとポート番号を含むパケットのフック要求が常時出ている（ステップＳ１３２）。ＴＣＰ２コア３６は、このフック要求を受けると、登録してある全ユーザのＰＯＰ３とＳＭＴＰのサーバのＩＰアドレスとポート番号を含むパケットを捕捉（フック）する（ステップＳ１３３）。
そして、暗号メール送信側の流れは、メーラ３１でメールを入力し、メールを鍵交換が済んでいる相手に送信する。この時、ＳＭＴＰからメールの送信要求をする前にＰＯＰ３に接続する。この段階でクライアント装置Ａ（自端末）とネットワーク４０に接続されるメールサーバ４１との間で、ＴＣＰ２コアを介してＴＣＰ通信が確立される。
【０１２２】
この段階で、ネットワーク４０に接続されたメールサーバ４１からは、ＰＯＰ３接続メッセージが送られるが、ＴＣＰ２コア３６は、このＰＯＰ３接続メッセージを受け取り、ＰＯＰ３のポートであることを認識した上で、メールシステムコア３７にフック結果を通知する（ステップＳ１３４）。
【０１２３】
メールシステムコア３７は、ＴＣＰ２コア３６からのフック結果を受けて、ＴＣＰ２コア３６にパケットのインターセプトを要求する（ステップＳ１３５）。このメールシステムコア３７からのインターセプト要求を受けて、ＴＣＰ２コア３６はパケットのインターセプトを開始する（ステップＳ１３６）。
【０１２４】
続いて、既存のメーラ３１からＴＣＰ２コア３６に対して、ユーザＩＤが送信され、ＴＣＰ２コア３６は、このユーザＩＤのパケットを確認し（ステップＳ１３７）、メーラからの「ＵＳＥＲ」メッセージをメールシステムコア３７に送る。この「ＵＳＥＲ」メッセージは、ユーザ登録（図８参照）でも説明したように、クライアントをサーバに接続する場合に発行されるＰＯＰ３の基本的なコマンドである。
【０１２５】
メールシステムコア３７は、ＴＣＰ２コア３６からの「ＵＳＥＲ」メッセージを分析して、記憶メディア３８（図３、図５参照）に、ユーザＩＤを一時的に保存（仮保存）しておく（ステップＳ１３７）。ここで、一時的に保存とは、パスワードの確認等によって認証ができていない段階、すなわり、認証後の正式な保存の前段階の保存を意味している。そして、ユーザＩＤをネットワーク４０に接続されているメールサーバ４１に送る。
【０１２６】
メールサーバ４１からはこのユーザＩＤに対する応答がＴＣＰ２コア３６に返されるが、ＴＣＰ２コア３６は、ユーザＩＤ応答メッセージのパケットを確認してその結果である「＋ＯＫ」メッセージをメールシステムコア３７に送る（ステップＳ１３９）。この「＋ＯＫ」メッセージとは、メールサーバ４１において「ユーザＩＤが認識されたのでパスワードを送れ（User recognized, send password）」というメッセージである。メールシステムコア３７は、この「＋ＯＫ」メッセージを分析し、メーラ３１に対してメールサーバ４１からのユーザＩＤ応答を転送する（ステップＳ１４０）。
【０１２７】
次に、クライアント装置Ａの既存メーラ３１からネットワーク４０に接続されるメールサーバ４１へパスワードメッセージが送られる。このメーラ３１から送られたパスワードメッセージは、ＴＣＰ２コア３６で確認され、メールシステムコア３７この確認のパスワードメッセージのパケットが送られる（ステップＳ１４１）。メールシステムコア３７は、ＴＣＰ２コア３６からの「ＰＡＳＳ」メッセージを受け取り、これを分析する。分析した結果、記憶メディア３８にパスワードを一時的に保存（仮保存）するとともに、ネットワーク４０に接続されているメールサーバ４１に対してパスワードを送る（ステップＳ１４２）。
【０１２８】
次に、メールサーバ４１からパスワード応答メッセージがクライアント装置Ａに返ってくると、ＴＣＰ２コア３６でパスワード応答メッセージのパケットを確認し、メールシステムコア３７にパスワード応答メッセージのパケットを送る（ステップＳ１４３）。メールシステムコア３７はパスワード応答メッセージのパケットを受け取り、メッセージを分析する。すなわち、パスワードが確認されたことを示す「＋ＯＫ」メッセージを分析して、記憶メディア３８に一時的に保存したユーザＩＤとパスワードを、記憶メディア３８にユーザ登録してあるユーザＩＤとパスワードと照合して認証を行い、鍵情報を取得する（ステップＳ１４４）。そして、鍵情報を取得後にパスワード応答をメーラ３１に送信する。
【０１２９】
このパスワード応答を受けて、メーラ３１は、接続を解除することを伝える終了宣言（ＱＵＩＴ）をＴＣＰ２コア３６に送り、ＴＣＰ２コア３６はこの終了宣言を確認したことをメールシステムコア３７に伝える（ステップＳ６４）。メールシステムコア３７は、この「ＱＵＩＴ」メッセージを分析し、終了宣言（ＱＵＩＴ）をネットワーク４０に接続されているメールサーバ４１に送る（ステップＳ６５）。
その後、メールサーバ４１から終了宣言応答がＴＣＰ２コア３６に返されるので、ＴＣＰ２コア３６は、この終了宣言応答のパケットを確認し（ステップＳ１４５）、この結果をメールシステムコア３７に送る。メールシステムコア３７は、ＴＣＰ２コア３６からの「＋ＯＫ」メッセージを分析して、メーラ３１に終了宣言応答を転送する（ステップＳ１４６）。これにより、クライアント装置Ａとネットワーク４０に接続されたメールサーバ４１（クライアント装置Ｂ）との間のＴＣＰ通信の切断が完了する。
【０１３０】
次に、図１７に基づいて、暗号メール送信側の流れの第２段階について説明する。
第２段階は、鍵交換送り側の流れ（図１２参照）と同様に、メーラ３１のＳＭＴＰから、ネットワーク４０に接続されているメールサーバ４１へのメール送信要求から始まる（ステップＳ１４９）。これによって、メーラ３１とメールサーバ４１との間でＴＣＰ２コアを介してＴＣＰ通信が確立される。
ＴＣＰ通信が確立された後は、メールサーバ４１からＴＣＰ２コア３６に対して、ＳＭＴＰ接続メッセージが送られ、ＴＣＰ２コア３６は、ＳＭＴＰの応答コード「２２０」を受けて、ＳＭＴＰのポートであることを認識し、サーチ結果をメールシステムコア３７に通知する（ステップＳ１５０）。
【０１３１】
続いて、メールシステムコア３７は、ＴＣＰ２コア３６に対してパケットの受信（インターセプト）を要求し（ステップＳ１５１）、これを受けたＴＣＰ２コア３６はパケットの受信を開始する（ステップＳ１５２）。
次に、クライアント装置のメーラ３１から使用開始宣言が発せられる。この使用開始宣言は、クライアント装置からサーバに対して「これからメールを送信しますよ。」というメッセージである。ＴＣＰ２コア３６は、使用開始宣言メッセージのパケットを確認し（ステップＳ１５３）、これを「ＨＥＬＯ」、「ＥＨＬＯ」メッセージとしてメールシステムコア３７に送る。
【０１３２】
メールシステムコア３７は、この「ＨＥＬＯ」、「ＥＨＬＯ」メッセージを分析し、この使用開始宣言をネットワーク４０に接続されるメールサーバ４１に送る（ステップＳ１５４）。メールサーバ４１からはこれに対する使用開始宣言応答が発せられ、これがＴＣＰ２コア３６で確認される（ステップＳ１５５）。
【０１３３】
メールシステムコア３７は、この「＋ＯＫ」メッセージを分析し、メールサーバ４１から送られた使用開始宣言応答をメーラ３１に送る（ステップＳ１５６）。
続いて、メーラ３１から送信者宣言が送られる。ＴＣＰ２コア３６は、この送信者宣言のパケットを確認し、これをメールシステムコア３７に送る（ステップＳ１５７）。この送信者宣言メッセージは「ＭＡＩＬ  ＦＲＯＭ：＜」という送信者を知らせるメッセージである。メールシステムコア３７は、このメッセージを分析し、この送信者宣言をメールサーバ４１に送信する（ステップＳ１５８）。
【０１３４】
メールサーバ４１は、これを受けて送信者宣言応答を発行する。ＴＣＰ２コア３６は、この送信者宣言応答のパケットを確認し、この応答コード「２５０」をメールシステムコア３７に送る（ステップＳ１５９）。メールシステムコア３７は、この「２５０」応答コードを分析した後に、受信した送信者宣言応答をクライアント装置のメーラ３１に送る（ステップＳ１６０）。
【０１３５】
続いて、メーラ３１は、受信者宣言メッセージを送信する。この受信者宣言メッセージは「このメールアドレスに送ってください。」ということをメールサーバ４１に伝えるメッセージであり、「ＲＣＰＴ  ＴＯ：＜」という記号で表現される。ＴＣＰ２コア３６はこの受信者宣言メッセージを確認し（ステップＳ１６１）、これをメールシステムコア３７に送る。メールシステムコア３７は、この「ＲＣＰＴ  ＴＯ：＜」メッセージを分析し、この受信者宣言をメールサーバ４１に送る（ステップＳ１６２）。
【０１３６】
これを受けて、メールサーバ４１は受信者宣言応答をＴＣＰ２コア３６に返し、ＴＣＰ２コア３６は、この受信者宣言応答を確認し、応答コード「２５０」としてメールシステムコア３７に送る（ステップＳ１６３）。メールシステムコア３７は、この受信者宣言応答を分析し、クライアント端末のメーラ３１に転送する（ステップＳ１６４）。
【０１３７】
続いて、図１８に基づいて、暗号メール送信側の流れの第３段階について説明する。すなわち、受信者宣言応答を受信したクライアント装置Ａのメーラ３１は、本文開始宣言を発信する。ＴＣＰ２コア３６は、この本文開始宣言のパケットを確認して、「ＤＡＴＡ」メッセージとしてメールシステムコア３７に渡す（ステップＳ１６５）。ここで「ＤＡＴＡ」は、本文の送信を意味するＳＭＴＰコマンドである。メールシステムコア３７は、この「ＤＡＴＡ」メッセージを分析し、この本文開始宣言をメールサーバ４１に送信する（ステップＳ１６６）。
【０１３８】
メールサーバ４１は、この本文開始宣言を受け取ると、本文開始宣言応答をクライアント装置Ａに送る。そして、クライアント装置ＡのＴＣＰ２コア３６が本文開始宣言応答のパケットを確認して、これを「３５４」メッセージとしてメールシステムコア３７に送る（ステップＳ１６７）。ここで応答コード「３５４」は、メールの入力開始を示すＳＭＴＰの応答コードである。
メールシステムコア３７は、この「３５４」メッセージを分析し、メールサーバ４１から送信された本文開始宣言応答を自端末のメーラ３１に送る（ステップＳ１６８）。
【０１３９】
メーラ３１はこれを受けて、メール・メッセージをＴＣＰ２コア３６に送り、ＴＣＰ２コア３６では、メールメッセージパケットを確認して、メールシステムコア３７に渡す（ステップＳ１６９）。メールシステムコア３７はこのメール・メッセージのパケットを受け取ると、このメール・メッセージを分析し、送信相手の鍵があることを確認し、タイトルと本文、そして添付ファイルがあれば、その暗号化を行う（ステップＳ１７０）。そして、暗号化したメール・メッセージをネットワーク４０に接続されるメールサーバ４１に送る。
【０１４０】
続いて、メールサーバ４１から送信データ応答メッセージがクライアント装置Ａに送られる。ＴＣＰ２コア３６は、この送信データ応答メッセージのパケットを確認し、メールシステムコア３７に送信データ応答メッセージのパケットを送る（ステップＳ１７１）。メールシステムコア３７はこの送信データ応答メッセージのパケットを受け取り、メッセージを分析する。すなわち、ＳＭＴＰの応答コード「２５０」メッセージを分析し、送信データ応答を自端末（クライアント装置Ａ）のメーラ３１に送る（ステップＳ１７２）。
【０１４１】
メールサーバ４１からの送信データ応答を受け取ったメーラ３１は、終了宣言メッセージ「ＱＵＩＴ」をメールサーバ４１に送る。この終了宣言メッセージを受信したＴＣＰ２コア３６は、このパケットを確認して（ステップＳ１７３）、「ＱＵＩＴ」メッセージとしてメールシステムコア３７に送る。メールシステムコア３７は、この「ＱＵＩＴ」メッセージを分析し、メールサーバ４１に終了宣言を送信する（ステップＳ１７４）。メールサーバ４１は、この終了宣言に対して、終了宣言応答を発し、これをクライアント装置Ａに送る。そして、クライアント装置ＡのＴＣＰ２コア３６は、受信した終了宣言応答のパケットを確認し、ＳＭＴＰの応答コード「２２１」メッセージとしてメールシステムコア３７に送る（ステップＳ１７５）。「２２１」メッセージは接続を閉じることを告げるＳＭＴＰの応答コードである。メールシステムコア３７は、この「２２１」メッセージを分析し、その終了宣言応答を自端末のメーラ３１に送る（ステップＳ１７６）。これによって、暗号メール送信側の流れは全て完了し、クライアント装置Ａのメーラ３１とメールサーバ４１とのＴＣＰ通信が切断される。
【０１４２】
＜暗号メール受信側の流れの説明＞
次に、図１９、図２０のフローチャートに基づいて暗号メール受信側の流れについて説明する。
図１９に示すように、ＴＣＰ２ドライバ３４のメールシステムコア３７は、起動時には常時、登録している全ユーザのＳＭＴＰとＰＯＰ３サーバのＩＰアドレスとポート番号を含むパケットを捕捉するためのフック要求を出している（ステップＳ１８０）。ＴＣＰ２コア３６は、このフック要求を受けると、登録してある全ユーザのＰＯＰ３とＳＭＴＰのサーバのＩＰアドレスとポート番号を含むパケットを捕捉（フック）する（ステップＳ１８１）。
【０１４３】
そして、暗号メールの受信側の流れは、既存メーラ３１でメールの受信を実行することで開始する。この段階で、既存メーラ３１とネットワーク４０に接続されたメールサーバ４１（図４参照）との間でＴＣＰ通信が確立される。言い換えると、既存メーラ３１を有するクライアント装置Ａとネットワーク４０に接続されるメールサーバ４１（クライアント装置Ｂといってもよい）との間でＴＣＰ通信が確立される。
【０１４４】
ネットワーク４０に接続されたメールサーバ４１からは、ＰＯＰ３接続メッセージが送られるが、ＴＣＰ２コア３６は、このＰＯＰ３接続メッセージを受け取り、ＰＯＰ３の接続であることを認識した上で、メールシステムコア３７にフック結果を通知する（ステップＳ１８３）。
【０１４５】
メールシステムコア３７は、ＴＣＰ２コア３６からのフック結果を受けて、ＴＣＰ２コア３６にパケットのインターセプトを要求する（ステップＳ１８４）。このメールシステムコア３７からのインターセプト要求を受けて、ＴＣＰ２コア３６はパケットのインターセプトを開始する（ステップＳ１８５）。
【０１４６】
続いて、クライアント装置Ａのメーラ３１からＴＣＰ２コア３６に対して、ユーザＩＤが送信され、ＴＣＰ２コア３６は、このユーザＩＤのパケットを確認し（ステップＳ１８６）、メーラからの「ＵＳＥＲ」メッセージをメールシステムコア３７に送る。メールシステムコア３７は、この「ＵＳＥＲ」メッセージを分析して、記憶メディア３８（図３、図５参照）に、ユーザＩＤを一時的に保存（仮保存）しておく（ステップＳ１８７）。ここで、一時的に保存とは、パスワードの確認等によって認証ができていない段階、すなわり、認証後の正式な保存の前段階の保存を意味している。そして、ユーザＩＤをネットワーク４０に接続されているメールサーバ４１に送る。
【０１４７】
メールサーバ４１からはこのユーザＩＤに対する応答がＴＣＰ２コア３６に返されるが、ＴＣＰ２コア３６は、ユーザＩＤ応答メッセージのパケットを確認してその結果である「＋ＯＫ」メッセージをメールシステムコア３７に送る（ステップＳ１８７）。この「＋ＯＫ」メッセージとは、メールサーバ４１において「ユーザＩＤが認識されたのでパスワードを送れ（User recognized, send password）」というメッセージである。メールシステムコア３７は、この「＋ＯＫ」メッセージを分析し、メーラ３１に対してメールサーバ４１からのユーザＩＤ応答を転送する（ステップＳ１８８）。
【０１４８】
次に、クライアント装置Ａの既存メーラ３１からネットワーク４０に接続されるメールサーバ４１へパスワードメッセージが送られる。このメーラ３１から送られたパスワードメッセージは、ＴＣＰ２コア３６で確認され、メールシステムコア３７にこの確認のパスワードメッセージのパケットが送られる（ステップＳ１８９）。メールシステムコア３７は、ＴＣＰ２コア３６からの「ＰＡＳＳ」メッセージを受け取り、これを分析する。分析した結果、記憶メディア３８にパスワードを一時的に保存（仮保存）するとともに、ネットワーク４０に接続されているメールサーバ４１に対してパスワードを送る（ステップＳ１９０）。
【０１４９】
次に、メールサーバ４１からパスワード応答メッセージがクライアント装置Ａに送られる。ＴＣＰ２コア３６でパスワード応答のパケットを確認し、メールシステムコア３７にパスワード応答メッセージのパケットを送る（ステップＳ１９１）。メールシステムコア３７はパスワード応答メッセージである「＋ＯＫ」メッセージのパケットを分析し、既に記録メディア３８に登録されているユーザＩＤとパスワード及び上記一時的に保存されたユーザＩＤとパスワードから鍵情報を取得する（ステップＳ１９２）。そして、受け取ったパスワード応答をメーラ３１に送る。
【０１５０】
続いて、図２０に基づいて、暗号メール受信側の流れの続きを説明する。メールシステムコア３７からのパスワード応答の送信を受けて、メーラ３１は、メールのダウンロード要求を発信する。ＴＣＰ２コア３６はメーラ３１からのダウンロード要求のパケットを確認し、これを「ＲＥＴＲ」メッセージとしてメールシステムコア３７に伝える（ステップＳ１９３）。メールシステムコア３７は、この「ＲＴＥＲ」メッセージを分析し、ネットワーク４０に接続されているメールサーバ４１にメールダウンロード要求を送る（ステップＳ１９４）。ここで、「ＲＥＴＲ」メッセージは、パラメータで指定したメッセージを受け取るためのＰＯＰ３の基本的コマンドである。仮にメッセージのない行をパラメータとして指定したときは、「−ＥＲＲ  message does not exist」が返されることになっている。
【０１５１】
その後、メールサーバ４１からダウンロード応答（「＋ＯＫ」メッセージ）とメール・メッセージが送られてくる。ＴＣＰ２コア３６は、このダウンロード応答（「＋ＯＫ」メッセージ）とメール・メッセージのパケットを確認し、これをメールシステムコア３７に送る（ステップＳ１９５）。
【０１５２】
メールシステムコア３７は、このダウンロード応答（「＋ＯＫ」メッセージ）とメール・メッセージを分析し、これが暗号文であればＴＣＰ２メールアプリケーション部３５に「メールの状態」と送信元メールのアドレスを通知する。ここで、「メールの状態」とは、「暗号文」であるか否か、「ＨＴＭＬ」ファイルであるかどうか、あるいは「添付ファイル」が付いているか否か等の状況をいう。なお、パケットはＴＣＰ２メールアプリケーション部３５に送らずに、メールシステムコア３７に留めておく（ステップＳ１９６）。なお、ＴＣＰ２ドライバ３４の実装形態により、メールシステムコア３７の記憶メディア３８にメール・メッセージを保存するように設定することもできる。
【０１５３】
ＴＣＰ２メールシステムアプリケーション部３５は、メールシステムコア３７から送られたメールの状態、送信元メールアドレスを出力装置３３の表示画面に表示する（ステップＳ１９７）。そして、出力装置３３に表示されたメール一覧をメール受信者が見て、入力装置３２の「受信」ボタンを押す（ステップＳ１９８）と、メールが受信され、メールシステムコア３７を経由してクライアント装置Ａのメーラ３１に受信メールが暗号文のまま送られる（ステップＳ１９９）。
ここで、基本的には暗号文のままメーラ３１に送られるのであるが、システムの設定により、復号化部５２（図５参照）で復号化し、平文でメーラに送ることも可能である。ステップＳ１９８で受信ボタンの代わりに、破棄ボタンを押せば、メールシステムコア３７のメール／添付ファイル削除部５４（図５参照）において、破棄ボタンの押されたメールが削除される。
【０１５４】
このようにしてダウンロード応答と受信されたメール・メッセージとがクライアント装置Ａのメーラ３１に送られ、記憶メディア３９に暗号文（場合によっては平文）でメール・メッセージが保存される（ステップＳ２００）。メーラ３１は、メッセージ削除要求「ＤＥＬＥ」をＴＣＰ２コア３６に送る。ＴＣＰ２コア３６は、このメッセージ削除要求のパケットを確認し（ステップＳ２０１）、メールシステムコア３７に送る。メールシステムコア３７は、このメッセージ削除要求「ＤＥＬＥ」を分析し、このメッセージ削除要求をメールサーバ４１に送る（ステップＳ２０２）。
【０１５５】
このメッセージ削除要求を受けて、メールサーバ４１は、メッセージ削除応答をＴＣＰ２コア３６に送り、ＴＣＰ２コア３６はこのパケットを確認する（ステップＳ２０３）。メールシステムコア３７は、このメッセージ削除応答の「＋ＯＫ」メッセージを分析し、これをメーラ３１に送る（ステップＳ２０４）。
【０１５６】
メーラ３１は、このメッセージ削除応答を受信すると、終了宣言メッセージ「ＱＵＩＴ」をメールサーバ４１に送ることになるが、この終了宣言メッセージを受信したＴＣＰ２コア３６は、このパケットを確認して（ステップＳ２０５）、「ＱＵＩＴ」メッセージとしてメールシステムコア３７に送る。メールシステムコア３７は、この「ＱＵＩＴ」メッセージを分析し、メールサーバ４１に終了宣言を送信する（ステップＳ２０６）。
【０１５７】
メールサーバ４１は、この終了宣言に対して、終了宣言応答を発し、これをクライアント装置ＡのＴＣＰ２コア３６に送る。そして、クライアント装置ＡのＴＣＰ２コア３６は、受信した終了宣言応答のパケットを確認し、ＳＭＴＰの応答コード「＋ＯＫ」メッセージとしてメールシステムコア３７に送る（ステップＳ２０７）。メールシステムコア３７は、この「＋ＯＫ」メッセージを分析し、その終了宣言応答を自端末のメーラ３１に送る（ステップＳ２０８）。これによって、暗号メール受信側の流れが全て完了し、クライアント装置Ａのメーラ３１とメールサーバ４１（クライアント装置Ｂ）とのＴＣＰ通信が切断される。
【０１５８】
＜ＴＣＰ２メールシステムの実施例の説明＞
最後に、図２１に基づいて、ＴＣＰ２メールシステムの全体の流れを概観しておく。
図２１に示されるように、クライアント装置Ａとクライアント装置ＢはそれぞれのメールサーバＡとメールサーバＢを介してメール通信を行う。まず、クライアント装置Ａから鍵交換用定型メールの送信が行われるが、このときクライアント装置ＡのＴＣＰ２ドライバで鍵元値が付加され、かつ保存される。このクライアント装置からの鍵交換用定型メールは、メールサーバＡ、Ｂを経由してクライアント装置ＢのＴＣＰ２ドライバに送られ、ここで鍵元値が保存されて、クライアント装置Ｂのメーラで受信される。
【０１５９】
次に、クライアント装置Ｂからクライアント装置Ａに向けて鍵交換用定型メールの送信が行われる。ここで、クライアント装置ＢのＴＣＰ２ドライバでは、鍵元値が付加、保存されるとともに、新たな鍵生成がなされる。そして、鍵交換用定型メールがメールサーバＢ、Ａを経由してクライアント装置Ａに送られる。クライアント装置Ａでは、そのＴＣＰ２ドライバで鍵元値が保存されるとともに、新たな鍵生成が行われた後、メーラが鍵交換用受信メールを受信する。この鍵交換用定型メールのやり取りは、初回のみ行われ、それ以降のメールの通信においては、不要となる。
【０１６０】
クライアント装置Ａからメールの送信が行われる。まずクライアント装置ＡのメーラはＴＣＰ２ドライバに平文のメールを送り、ＴＣＰ２ドライバは、この平文のメールを暗号化する。そして暗号化されたメールは、メールサーバＡ，Ｂを経由してクライアント装置Ｂに送られる。クライアント装置ＢのＴＣＰ２ドライバでは、その設定により、これを暗号文のまま自端末のメーラにおくるか、または復号化して平文の状態でメーラに送る。クライアント装置Ｂからクライアント装置Ａへのメール送信も同様に行われる。以上が、ＴＣＰ２メールシステムの概要である。
【０１６１】
以上説明したように、本発明のＴＣＰ２を用いたメールシステムでは、高いセキュリティ機能を持つＴＣＰ２を用いてメールの通信を行うので、既存の暗号化処理によるメール通信と比べても、特にデータの漏洩、改ざん、なりすまし、進入そして攻撃に対して極めて強力な防御機能を発揮する。
【０１６２】
本発明は、以上説明した実施の形態に限定されるものではなく、特許請求項に記載した本発明の要旨を逸脱しない範囲において、さらに多くの実施形態を含むものであることは言うまでもない。
【図面の簡単な説明】
【０１６３】
【図１】本発明のメールシステムに用いられるＴＣＰ２のプロトコルスタックを示す図である。
【図２】本発明のメールシステムに用いられるメッセージパケットの構造を示す図である。
【図３】本発明のクライアント装置におけるＴＣＰ２メールシステムのブロック構成図である。
【図４】本発明のメールシステムの構成要素であるのＴＣＰ２コアの概略を説明するためのブロック構成図である。
【図５】本発明のメールシステムの構成要素であるのメールシステムコアの概略を説明するためのブロック構成図である。
【図６】本発明のメールシステムの構成要素であるのＴＣＰ２メールシステムアプリケーション部の概略を説明するためのブロック構成図である。
【図７】ＴＣＰ２メールシステムアプリケーションによって、出力装置に表示される受信メールの一覧表を示す図である。
【図８】本発明のメールシステムにおけるユーザ登録の流れを示すフロー図の一部である。
【図９】本発明のメールシステムにおけるユーザ登録の流れを示すフロー図の一部である。
【図１０】本発明のメールシステムにおけるユーザ登録の流れを示すフロー図の一部である。
【図１１】本発明のメールシステムにおける鍵交換送り側の流れを示すフロー図の一部である。
【図１２】本発明のメールシステムにおける鍵交換送り側の流れを示すフロー図の一部である。
【図１３】本発明のメールシステムにおける鍵交換送り側の流れを示すフロー図の一部である。
【図１４】本発明のメールシステムにおける鍵交換受け側の流れを示すフロー図の一部である。
【図１５】本発明のメールシステムにおける鍵交換受け側の流れを示すフロー図の一部である。
【図１６】本発明のメールシステムにおける暗号メール送信側の流れを示すフロー図の一部である。
【図１７】本発明のメールシステムにおける暗号メール送信側の流れを示すフロー図の一部である。
【図１８】本発明のメールシステムにおける暗号メール送信側の流れを示すフロー図の一部である。
【図１９】本発明のメールシステムにおける暗号メール受信側の流れを示すフロー図の一部である。
【図２０】本発明のメールシステムにおける暗号メール受信側の流れを示すフロー図の一部である。
【図２１】本発明のＴＣＰ２メールシステムの実施例の概要を説明するための図である。
【符号の説明】
【０１６４】
３１・・・既存メーラ、３２・・・入力装置、３３・・・出力装置、３４・・・ＴＣＰ２ドライバ、３５・・・ＴＣＰ２メールシステムアプリケーション部、３６・・・ＴＣＰ２コア、３７・・・メールシステムコア、３８、３９・・・記憶メディア、４０・・・ネットワーク、４１・・・メールサーバ、５０・・・認証部、５１・・・暗号化部、５２・・・復号化部、５３・・・鍵交換部
【図１】
2007323172.tif 000003
【図２】
2007323172.tif 000004
【図３】
2007323172.tif 000005
【図４】
2007323172.tif 000006
【図５】
2007323172.tif 000007
【図６】
2007323172.tif 000008
【図７】
2007323172.tif 000009
【図８】
2007323172.tif 000010
【図９】
2007323172.tif 000011
【図１０】
2007323172.tif 000012
【図１１】
2007323172.tif 000013
【図１２】
2007323172.tif 000014
【図１３】
2007323172.tif 000015
【図１４】
2007323172.tif 000016
【図１５】
2007323172.tif 000017
【図１６】
2007323172.tif 000018
【図１７】
2007323172.tif 000019
【図１８】
2007323172.tif 000020
【図１９】
2007323172.tif 000021
【図２０】
2007323172.tif 000022
【図２１】
2007323172.tif 000023