説明

暗号化通信システム

【課題】上位アプリケーションのプログラムを変更することなく、データの漏洩、改竄、なりすまし、進入、攻撃の防止機能をさらに強化できるプロトコルスタックを提供する。
【解決手段】出入力又は送受信するパケット等の情報単位のうち、少なくともTCP又はUDPに該当するプロトコルのペイロードを所定の暗号化ロジックに従って暗号化して出力又は送信するプロトコル暗号化手段と、入力又は受信した該暗号化されたプロトコルを所定の復号化ロジックに従って復号化するプロトコル復号化手段と、を少なくとも備えた通信システムを提供する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信における暗号化通信システム、特に、インターネット上でのデータの「漏洩」及び「改竄」さらには「なりすまし」、「進入」ないし「攻撃」を防ぐための暗号化通信システムに関する。
【背景技術】
【0002】
近年、インターネットを利用した通信は、Windowsパソコンさえあれば、それをネットワークに接続するだけで、誰でもネットワーク上のコンピュータにアクセスできるため、社会の中で急速に普及拡大している。一方、このインターネット通信の普及拡大に伴って、ハッカー(hacker)やクラッカー(Cracker)が他人のコンピュータシステムに侵入して、ソフトウエアやデータを盗み見たり、改竄や破壊を行ったりするという社会問題も大きくなっている。
【0003】
具体的な不正妨害のケースとしては、まず第1に、中心的なシステムが使えなくなるように、ネットワークから大量のメッセージを送りつけコンピュータシステムの運用を妨害するシステム妨害がある。この妨害によってホストが過負荷になるとシステムダウンに陥ってしまうことも起こりうる。
【0004】
また、ホストのパスワードを入手し、機密情報を盗んだり、情報の改竄や破壊を行ったりする「不正アクセスとなりすまし」の不正妨害がある。この妨害にはコンピュータが保有する情報を勝手に書き換え、人を陥れる卑劣のものもある。また、特定のパソコンに忍び込み、メールアドレスやパスワードなど個人の機密データを搾取するスパイウエアといわれる不正行為も発生している。このようにネットワークに接続したコンピュータが持つデータベースの内容を不正に盗み見る、いわゆる盗聴行為も頻繁に行われている可能性も否定できない。
【0005】
また、サイト若しくはサーバの運営元で、意図的に個人情報を盗むといった行為や、社内に潜むスパイなどによるサイバーテロ(Cyber terrorism)といった危機も全くないとはいえない状況である。
さらに、他人のコンピュータにコンピュータ障害をもたらすプログラムである「ウイルス」を送り込むという不正妨害が最近多くなっている。この送り込まれたウイルスに、メールなどを自宅で使用したパソコンが感染し、それを社内に接続した瞬間に社内のパソコン全体が感染したり、ウイルスがコンピュータの中のファイルを破壊させたり、更には、ネットワーク全体をダウンさせたりするといった問題も生じている。
【0006】
このため、従来のTCP/IP(Transmission Control Protocol/Internet Protocol)やUDP(User Datagram Protocol)を利用したインターネット上での通信において、データの「漏洩」「改竄」等を防ぐ機能として、IPsec(アイピーセック:Security Architecture for Internet Protocol)やSSL(Secure Socket Layer)といわれる暗号化通信が利用されている。一般に、暗号化通信には、共通鍵(秘密鍵ともいう)暗号方式と公開鍵暗号方式があるが、IPsecは共通鍵暗号方式を用いたものが多い。共通鍵暗号方式の方が公開鍵暗号方式より暗号化・復号化の速度が速いという特徴がある。このIPsecに用いられる共通鍵暗号方式は、暗号化と復号化を同じ鍵で行う方式であり、鍵の生成は送信側又は受信側のいずれで生成してもよいが、受信側と送信側とで共通鍵を使うために、鍵の交換時に内容が外部に漏れないよう細心の注意を払わなければならない。
【0007】
共通鍵暗号方式に用いられるアルゴリズムはDES(Data Encryption Standard:米国IBM社が開発した共通鍵(秘密鍵)暗号化アルゴリズム)が代表的である。IPsecもこのDESを暗号アルゴリズムの1つに採用している。IPsecの特徴は、単に特定のアプリケーションだけを暗号化するのではなく、ホストから送信されるあらゆる通信をIPレベルで暗号化する点にある。これによりユーザはアプリケーションを意識することなく安全な通信を可能とすることができる。また、IPsecは、将来にわたって使えるように、それ自体の仕組みを変えることなく使用する暗号アルゴリズムを変更することを可能としている。
【0008】
IPsecで用いられる共通暗号鍵としては、SPI(Security Pointer Index)と呼ばれる32ビット符合が用いられ、鍵交換プロトコルとしては、IKE(Internet Key Exchange)が用いられる。さらに、IPsecには、完全性認証のためのプロトコルAH(Authentication Header)が用意されている。
【0009】
また、SSLは、米ネットスケープ社(現在AOLに吸収合併)の開発したセキュリティ機能付HTTPプロトコルであり、これを利用することによりクライアントとサーバがネットワーク上でお互いを認証できるようになり、クレジットカード情報などの機密性の高い情報を暗号化してやり取りすることが可能となる。これにより、データの盗聴、再送攻撃(ネットワーク上に流れたデータを盗聴して何度も繰り返して送ってくる攻撃)、なりすまし(本人の振りをして通信する)、データの改竄などを防止することができる。
【0010】
上述したIPsecは、IPのパケットを暗号化して送受信するものであり、したがって、TCPやUDPなどの上位のプロトコルを利用するアプリケーションソフトはIPsecが使われていることを意識する必要がない。
一方、SSLでは、互いの認証レベルではRSA(Rivest Shamir Adleman:公開鍵暗号方式を開発者3人の頭文字)公開鍵暗号技術を用いたデジタル証明書が用いられ、データの暗号化ではDESなどの共通鍵暗号技術が用いられている。このSSLは第5層のセッション層にあるため、特定のアプリケーションに依存することになる。
【非特許文献1】R.Atkinson, 1995年8月、「Security Architecture for the Internet Protocol」、RFC 1825
【発明の開示】
【発明が解決しようとする課題】
【0011】
しかしながら、SSLはアプリケーションに対する互換性を持たない点において問題がある。アプリケーションは、インターネット通信を行う際にソケット(第5層)をプログラムインターフェースとして使用する。このため、アプリケーションがSSL(第5層)を使用する場合には、このソケットインターフェースをSSLインターフェースに変更しなければならない。従って、SSLにアプリケーションの互換性はない。これに対し、IPsecは、ソケット(第5層)の下に位置しているため、アプリケーションは、ソケット(第5層)をプログラムインターフェースとしてそのまま使用することができるのでアプリケーションの互換性がある。
【0012】
一方、IPsecは最大セグメントサイズが小さくなるという問題がある。すなわち、IPsecでは、ESPヘッダ、ESPトレーラを使用するため、ペイロードが小さくなるため、フラグメント(パケットの分割)が発生し、スループットが低下する。また、TCPパケットでは、フラグメントが禁止であるため、エンドエンドで、IPsecの通過する環境を把握し、フラグメントが発生しない最大セグメントサイズを設定する必要がある。これに対し、SSLは、通過する環境を把握する必要がないため、最大セグメントサイズを設定する必要はない。
【0013】
本発明は、上述のような問題に鑑みてなされたものであり、コンピュータ端末への不正侵入を防ぐための「暗号化の機能」をアプリケーション・プログラムそれぞれに実装する必要がなく、したがって、アプリケーション・プログラム自体を再作成する必要もなく、かつ上記暗号化機能に対応していない通信相手とも従来の平文による通信でき、さらにはIPsecが利用できない環境(あるいは利用したくない状況)でも暗号化や認証の恩恵を受けることができる通信システム、特にプロトコルスタック、並びに関連する通信装置、通信方法、及びこれらを実現するための通信プログラムを提供することを目的とする。
【課題を解決するための手段】
【0014】
上記課題を解決し、本発明の目的を達成するため、本発明の暗号化通信システムは、トランスポート層に位置するTCP又はUDPプロトコルに暗号化機能を追加して複数のホスト間で通信を行う暗号化通信システムであって、通信相手との接続を行うための接続シーケンス手段と、TCP2固有情報を交換して通信相手が正当な権限を有する通信相手であるかどうかを判断し、暗号化通信に必要な鍵交換を行うためのTCPsec接続シーケンス手段と、通信路の両端で対応する暗号化及び復号化ロジックを取り決める取決め手段と、この取決め手段により取り決めた暗号化ロジックに従って、複数のホスト間で送受信する情報のパケットを暗号化して送信するプロトコル暗号化手段と、取決め手段により取り決めた復号化ロジックに従って複数のホスト間で送受信する情報のパケットを復号化するプロトコル復号化手段と、を備え、前記接続シーケンス手段は、一切のイレギュラーパターンを排除するネットワーク環境にも対応できるように、第1のホストから第2のホストへの接続要求と、第2のホストから第1のホストへの接続応答と、第1のホストから第2のホストに肯定応答を送信するという標準の接続を行い、TCPsec接続シーケンス手段は、相手方ホストとTCP2固有情報の交換を行うことにより、相手方ホストが前記暗号化通信を行う権限を有することを確認し、暗号化通信に必要な鍵交換を行い、取決め手段は、接続シーケンス手段が正当な権限を有すると判断して接続した通信相手とのみ前記トランスポート層の前記TCP又はUDPプロトコルを用いて前記暗号化及び復号化ロジックに基づいた通信を行い、プロトコル暗号化手段は、送受信される情報のパケットのうち前記TCP又はUDPプロトコルのペイロードを暗号化して送信し、プロトコル復号化手段は、送受信される情報のパケットのうち前記暗号化されたプロトコルのペイロードを復号化することを特徴とする暗号化通信システムである。
【発明を実施するための最良の形態】
【0015】
以下、図1〜図24を参照しながら本発明の実施の形態の例を説明する。
図1は、本発明の暗号化通信システムの一実施の形態に用いられるプロトコルスタックを示すものである。
【0016】
本発明に用いられるプロトコルスタックは、図1に示すように、OSI7階層の物理層(第1層)とデータリンク層(第2層)に相当する階層に、NIC(Network Interface Card)のDriver11が配列される。このドライバは、既に述べたように、コンピュータなどのハードウエアをネットワークに接続するためのインターフェースカードのドライバであり、その内容はデータ送受信制御ソフトウエアである。例えばEthernetに接続するためのLANボードまたはLANカードがこれに相当するものである。
【0017】
第3層のネットワーク層には、一部がトランスポート層(第4層)まで伸びたIPエミュレータ(emulator)3が存在している。上記延びた部分には、トランスポートとしての機能は実装していない。セッション層に、ネットワーク層の機能を提供しているだけある。このIPエミュレータ3は、暗号化通信を行うプロトコルである「IPsec on CP」13bと、「IP on CP」13aを用途に応じて切り換えて使う働きをするものである。ここで、「on CP」とは、クラッキング・プロテクタ(CP)による、「進入」「攻撃」の監視、破棄、切断ないし通過制限の対象となっていること、又は、設定によりなりうることを示している。
【0018】
また、ネットワーク層にはARP on CP(Address Resolution Protocol on Cracking Protector)が配列されている。このARP on CPは、クラッカー(Cracker)への保護対策を具備したIPアドレスからEthernetの物理アドレスであるMAC(Media Access Control)アドレスを求めるのに使われるプロトコルである。MACは、媒体アクセス制御と呼ばれる、LANなどで利用される伝送制御技術であり、データの送受信単位であるフレームの送受信方法やフレームの形式、誤り訂正などを規定する技術として利用されている。
【0019】
ここで、IPエミュレータ13は、本発明による各種のセキュリティ機能を、従来のIP周辺のスタックに整合させるためのソフトウエア又はファームウエアである。すなわち、IPのエラーメッセージや制御メッセージを転送するプロトコルであるICMP(Internet Control Message Protocol)14a、同一のデータを複数のホストに効率よく配送するための又は配送を受けるために構成されるホストのグループを制御するためのプロトコルであるIGMP(Internet Group Management Protocol)14b、TCP15、UDP16さらにソケット(Socket)インターフェース17に整合させるためのソフトウエア、又はファームウエア、ないしはハードウエア(電子回路、電子部品)である。このIPエミュレータ13により、IPsecの暗号化・復号化及び必要な認証情報付加・認証等の前後の適合処理を行うことができる。
【0020】
このIPエミュレータ13の上層のトランスポート層(第4層)には、TCPエミュレータ15とUDPエミュレータ16が配置されている。TCPエミュレータ15は、暗号化通信を行うプロトコルである「TCPsec on CP」15bと、通常の通信プロトコルである「TCP on CP」15aを用途に応じて切り換えて使う働きをする。同様に、UDPエミュレータ16は、暗号化通信を行うプロトコルである「UDPsec on CP」16bと、通常の通信プロトコルである「UDP on CP」16aを用途に応じて切り換えて使う働きをする。
【0021】
本発明の最も特徴とするべき点は、このトランスポート層(第4層)に、TCPsec15bと、UDPsec16bの暗号化通信プロトコルを搭載したことである。TCPsec15bとUDPsec16bについては後述する。
このトランスポート層(第4層)の上層のセッション層(第5層)には、TCP及びUDP等のプロトコルとデータのやりとりを行うソケット(socket)インターフェース17が設けられている。このソケットの意味は、既に述べたようにコンピュータが持つネットワーク内の住所に当たるIPアドレスと、IPアドレスのサブアドレスであるポート番号を組み合わせたネットワークアドレスを意味しており、実際には、一連のヘッダの追加ないし削除をまとめて行う、単一のソフトウエアプログラムモジュール(実行プログラム等)あるいは単一のハードウエアモジュール(電子回路、電子部品等)からなっている。
【0022】
このソケットインターフェース17は、さらに上位のアプリケーション(図2で示すECアプリケーション及び図3で示す放送アプリケーション等)からの統一的なアクセス方式を提供するものであり、引数の種類や型など従来と同様のインターフェースを保つようにしている。
TCPエミュレータ15は、トランスポート層において、データの漏洩・改竄の防止の機能、すなわち暗号化、完全性認証及び相手認証等の機能を持つTCPsec15bと、このような暗号化、完全性認証、及び相手認証等の機能を持たない通常のプロトコルTCP15aのいずれかにパケットを振り分ける働きをもっている。また、TCPsec15b及びTCP15aのいずれもクラッキング・プロテクタ(CP)を備えているため、そのいずれを選択した場合でも、クラッカーによる「進入」「攻撃」に対して防御する機能を実現することができる。TCPエミュレータ15は上位層であるソケットとのインターフェースの役割も果たしている。
【0023】
また、既に述べたようにTCPがエラー補償機能を有するのに対して、UDPはエラー補償機能を持たないが、その分転送速度が速く、かつブロードキャスト機能を備えているという特徴がある。UDPエミュレータ16は、TCPエミュレータ15と同様に、データの漏洩・改竄の防止の機能、すなわち暗号化、完全性認証及び相手認証等の機能を持つUDPsec16bと、このような暗号化、完全性認証、及び相手認証等の機能を持たない通常のプロトコルUDP16aのいずれかにパケットを振り分ける働きを持っている。
【0024】
図1に示すように、ソケット17、TCPエミュレータ15、UDPエミュレータ16、「TCPsec on CP」15b、「UDPsec on CP」16b、「TCP on CP」15a、「UDP on CP」16a、「ICMP on CP」14a、「IGMP on CP」14b、IPエミュレータ13、「IP on CP」13a、及び「ARPonCP」12からなるプロトコルスタックが本発明の暗号化処理を行うためのプロトコルスタックであり、以下、このプロトコルスタックを総称してTCP2(登録商標出願中)と呼ぶことにする。なお、TCP2には「IPsec on CP」13bは必須のものとして含まれていないが、「IPsec on CP」13bを含めてTCP2とすることもできる。
【0025】
本発明のTCP2は、TCP、UDP、IP、IPsec、ICMP、IGMP、ARPの標準プロトコルにCP(クラッキング・プロテクト)を実装し、各プロトコルスタックに対する通信からの攻撃、及び、アプリケーション・プログラムからの攻撃(トロイの木馬、プログラムの改竄、正規ユーザの不正使用)を防御することができる。また、TCP2では、TCPエミュレータ15を実装し、このTCPエミュレータ15は、セッション層にあるソケット(Socket)17、及びネットワーク層にあるIPエミュレータ13から見て、互換性を保つため、外向きには標準TCPと同じに見せることができる。実際は、TCP2の機能として、TCPとTCPsecを切り替えて実行する。TCPsecは、本発明であるトランスポート層での暗号化及び認証機能である。
【0026】
また、同様に、TCP2では、UDPエミュレータ16を実装しており、UDPエミュレータ16は、セッション層であるソケット(Socket)17、及び、ネットワーク層であるIPエミュレータ13から見て、互換性を保つため、外部からは標準UDPとして見せることができる。実際は、TCP2の機能として、UDP、UDPsecを切り替えて実行する。UDPsecは、本発明であるトランスポート層での暗号化及び認証機能である。
【0027】
次に、TCP2において、特に重要な機能である「データ漏洩」を防ぐ機能であるTCPsec15b及びUDPsec16bについて説明する。
TCPsec15b及びUDPsec16bのための暗号化・復号化の方法(アルゴリズム、ロジック(論理))としては、公知の秘密鍵(共通鍵)暗号アルゴリズムが用いられる。例えば、1960年代にIBM社によって開発された秘密鍵暗号アルゴリズムであるDES(Data Encryption Standard)や、その改良版としての3DESが用いられる。また、その他の暗号アルゴリズムとしては、1992年にスイス工科大学のJames L.Massey氏とXuejia Lai氏によって発表されたIDEA(International Data Encryption Algorithm)も用いられる。この暗号アルゴリズムは、データを64ビットのブロックに区切って暗号化するもので暗号鍵の長さは128ビットである。秘密鍵暗号を効率よく解読する線形解読法や差分解読法に対しても十分な強度を持つように設計されている。
【0028】
また、本発明に用いられるTCPsec15b及びUDPsec16bの暗号方式として、FEAL(Fast data Encipherment Algorithm)、MISTY、AES(Advanced Encryption Standard)といった暗号方式も利用されるほか、また、独自に作成した秘密の暗号化・復号化アルゴリズムを利用することもできる。ここで、FEALは、日本電信電話株式会社(当時)が開発した暗号方式で、暗号化と復号化に同じ鍵をもちいる秘密鍵型の暗号方式である。このFEALは、DESに比べて高速に暗号化と復号化ができるという利点がある。
【0029】
次に、同じく本発明に利用される暗号方式であるMISTYは、三菱電機株式会社が開発した秘密鍵型の暗号方式であり、IDEAと同様にデータを64ビットのブロックに区切って暗号化する。鍵の長さは128ビットである。暗号化と復号化には同じプログラムが使われる点はDESなどと同じである。この方式も秘密鍵暗号を効率よく解読する線形解読法や差分解読法に対しても十分な強度を持つように設計されている。
【0030】
また、AESは、米国商務省標準技術局によって選定作業が行われている、米国政府の次世代標準暗号化方式であり、現在の標準的な暗号方式であるDESに代わる次世代の暗号標準として開発が進められたものである。世界に公募して集められて幾つかの暗号方式の中から、2000年10月に、ベルギーの暗号開発者Joan Daemen氏とVincent Rijmen氏が開発したRijndaelという方式が採用された。
【0031】
このように、本発明のTCPsec15b及びUDPsec16bの暗号方式としては、既に知られているさまざまな秘密鍵の暗号アルゴリズムを採用することができるほか、ユーザが独自に開発した秘密鍵(共通鍵)暗号方式も利用することが可能である。
【0032】
さらに、いわゆる「なりすまし」及び「データの改竄」などを防ぐための「相手認証」及び「完全性認証」の方法として、公開鍵や事前秘密共有(Pre-shared)を利用したアルゴリズム、例えば、MD5(Message Digest 5)、SHA1(Secure Hash Algorithm 1)などの認証アルゴリズムが用いられる。また、このような公知の認証アルゴリズムに代えて独自の一方向関数を利用したアルゴリズムを採用することもできる。
【0033】
このMD5は、認証やデジタル署名に用いられるハッシュ関数(一方向要約関数)の一つであり、原文を元に固定長のハッシュ値を発生し、これを通信経路の両端で比較することにより、通信途中で原文が改竄されていないかを検出することができるものである。このハッシュ値は擬似的な乱数のような値をとり、これを基にしては原文を再生できないようになっている。また、同じハッシュ値を生成する別のメッセージを作成することも困難になっている。
【0034】
SHA1も、認証やデジタル署名などに使われるハッシュ関数の一つであり、2の64乗ビット以下の原文から160ビットのハッシュ値を生成し、通信経路の両端で比較することにより、通信途上の原文の改竄を検出するものである。この認証アルゴリズムは従来のインターネットの暗号化通信の代表的なものであるIPsecにも採用されている。
【0035】
なお、これらの認証アルゴリズムについては、DH(Diffie-Hellman)公開鍵配送法や、IPsecと同様のIKE(Internet Key Exchange)プロトコル(UDPの500番)などにより安全な鍵交換ができるように設計され、しかも、定期的に暗号化/完全性認証アルゴリズム(論理)自体やそのための鍵の集合/定義域が変更されるように、プロトコルドライバープログラム(TCPsec15b、UDPsec16bなど)によりスケジュールされている。
【0036】
次に、図2に基づいて、本発明の第1の実施の形態である暗号化方式TCP2(特に、TCPsec)を用いた暗号化通信について説明する。図2は、特に、EC(Electronic Commerce:電子商取引)アプリケーションに応用した通信に適用する例である。
【0037】
図2は、ネットワーク20に接続されたECアプリケーション用のクライアント端末3a、3b、3cが、いわゆるルータ又はゲートウエイのようなネットワーク制御機器2を介して他のネットワーク30に接続されたホストコンピュータ(いわゆるサーバとして機能する通信装置)に接続された場合の全体構成を示す図である。
【0038】
ネットワーク20に接続されるクライアント端末3a、クライアント端末3b及びクライアント端末3cのうち、クライアント端末3bと3cは、本発明のTCP2を実装していない。つまりクライアント端末3bと3cには、本発明の暗号化方式のためのプロトコルであるTCPsecもUDPsecも実装されていない。TCP2をサポートしているクライアント端末は3aのみである。そして、クライアント端末3bについては、不図示のネットワークポリシー設定により通常のプロトコル処理による接続、すなわち、TCPレベルについては、「データ漏洩」を防ぐ暗号化機能、「データ改竄」を防ぐ完全性認証機能、及び「なりすまし」を防ぐ相手認証機能は伴わない接続を行うようにしている。
【0039】
何れのクライアント端末3a〜3cにおいても、ソケット(socket)の上層には、EC用のアプリケーションソフトウエアが実装されている。また、ネットワーク30に接続されたホストコンピュータ1は、TCP2を搭載しており、そのソケット17の上層にECアプリケーションソフトウエア18が実装されている。図2ではUDPsecなどの不使用のプロトコルを省略しているが、このホストコンピュータ1のプロトコルスタックの構造は図1のプロトコルスタックの構造であるTCP2を構成するソフトウエアは全て搭載されている。
【0040】
すなわち、まず第1層(物理層)と第2層(データリンク層)にまたがってNICドライバ(NIC Driver)11が配置され、その上層(第3層)のネットワーク層にはARP(Address Resolution Protocol)12とIPエミュレータ13が配置されている。そして、第4層のトランスポート層にTCPエミュレータ15とUDP16が配置される。図2にUDPエミュレータ(UDPsecとUDPを含む)の記載がないのは、第1の実施形態のECアプリケーションに対する暗号化通信としては速度よりも誤り補償に重点をおくTCPsecが使用されるからである。このことは、ホストコンピュータがUDPsecを搭載していないことを意味するものではない。TCP2を搭載することは、既に説明したようにUDPsecとTCPsecの両方を搭載していることを意味している。
【0041】
ネットワーク20に接続されたクライアント端末3a、3b、3cとネットワーク30に接続されるホストコンピュータ1を介在するネットワーク制御機器2のプロトコルスタックは、NICドライバ、ARP、IPがスタックとして積み上げられたファームウエア(不揮発メモリ付電子回路)により構成されている。
また、クライアント端末3aは、本発明のTCP2をサポートする端末であるが、ここではTCPsecにのみ対応した通信装置を備えた端末としてプロトコルスタックが示されている。クライアント端末3bと3cは本発明のTCP2をサポートしていない。
【0042】
クライアント端末3aには、ネットワークを通して又はCD−ROMのような記録媒体を介して事前に配布されるプロトコルドライバソフトウエアが実装されている。また、クライアント端末3b、クライアント端末3cに対しても同様にプロトコルドライバソフトウエアが事前に配布され、実装される。
【0043】
特に、クライアント端末3cについては、従来の暗号化方式であるIPsecを実装しているが、ネットワーク制御機器(ルータ)2がTCPポート番号を参照したIPマスカレードを行っているためIPsecが有効に使えないようになっている。更にクライアント端末3cについては、不図示のネットワークポリシー設定により接続要求を破棄するようにしている。なお、このようなネットワークポリシーの設定ないしプロトコルを実装しているかどうかの確認(受信パケット解析等)自体については当業者に周知の事項であるのため、本明細書では説明を省略する。
【0044】
ホストコンピュータ1がクライアント端末3aと通信するときは、本発明のTCP2、特にTCPsecに基づいた暗号化及び復号化取決めにより、通信を行うことになるが、ホストコンピュータ1がクライアント端末3b又は3cと通信するときは、本発明のTCP2(特に、TCPsec)による暗号化及び復号化の取決めがされない状態、つまり通常のTCPプロトコルによる通信が行われることになる。もちろん、ホストコンピュータ1がIPsecをサポートしているクライアント端末3cと通信する場合には、IPsecによる暗号化通信をすることができることは当然である。なお、ホストコンピュータ1が、TCP2が搭載されていないクライアント端末3b又は3cと通信しようとしてもホストコンピュータ1の有するTCP2の働きで、通信をストップさせることも可能である。
【0045】
また、この実施の形態では、ネットワークを介してホストコンピュータ1とクライアント端末3aとが暗号化及び復号化ロジックの交換を行うようにしているが、FDやCD、UDBメモリ等のリムーバブルメディアを用いて予め通信相手同士で暗号化及び復号化のための取決めロジックを交換しておくこともできることは言うまでもない。
【0046】
次に、図3に基づいて、本発明の第2の実施形態であるTCP2の中のUDPsecの暗号化方式を用いた暗号化通信について説明する。図3は、ネットワーク20に接続された放送アプリケーション用のクライアント端末4a、4b、4cが、いわゆるルータ又はゲートウエイのようなネットワーク制御機器2を介して別のネットワーク30に接続されたホストコンピュータ(いわゆるサーバとして機能する通信装置)1と通信する通信システムの全体構成を示す図である。
【0047】
図3は、クライアント端末4a、4b、4c及びホストコンピュータ1のプロトコルスタックを示しているが、TCP2をサポートしているクライアント端末は4aと4bである。つまり端末4aと4bだけがUDPsecを備えている。各クライアント端末のソケット(socket)の上層には、放送用のアプリケーションソフトウエアが実装されている。また、ネットワーク30に接続されたホストコンピュータ1もTCP2を搭載しており、そのソケット17の上層に放送アプリケーションソフトウエア19が実装されている。図3のホストコンピュータ1も図2のホストコンピュータ1と同様に、図1のプロトコルスタックの構造であるTCP2を構成するソフトウエアは全て搭載している。
【0048】
ホストコンピュータ1が保有するプロトコルスタックは、図2のホストコンピュータ1のプロトコルスタックと略同じであるが、図2のホストコンピュータ1のプロトコルスタックと異なる点は、TCPエミュレータの代わりにUDPエミュレータ16がある点である。これは放送アプリケーションソフトでは画像等の大量のデータが取り扱われるため、データ伝送のような誤り補償よりも、高速性が重視されるためである。
【0049】
ネットワーク20に接続されたクライアント端末4a、4b、4cとネットワーク30に接続されるホストコンピュータ1を介在するネットワーク制御機器2のプロトコルスタックは、NICドライバ、ARP、IPがスタックとして積み上げられたファームウエア(不揮発メモリ付電子回路)により構成されている。
【0050】
また、クライアント端末4aは、本発明のTCP2をサポートする端末であるが、ここではUDPsecにのみ対応した通信装置を備えた端末であり、クライアント端末4bは、本発明のUDPsec及び公知のIPsecに対応した通信装置であり、クライアント端末4cは公知のIPsecにのみ対応した通信装置である。このクライアント端末4cは本発明のTCP2をサポートしていない。これらのクライアント端末4a〜4cには、図2のクライアント端末3a〜3cと同様に、ネットワークを通して又はCD−ROMのような記録媒体を介して事前に配布されるプロトコルドライバソフトウエアが実装されている。
【0051】
また、特に「データ漏洩」防止のための暗号化・復号化ロジック及び「データ改竄」防止のための認証情報付加・認証ロジックについては、ホストコンピュータ1とクライアント端末4a、4b、4cの間で対応している必要がある。公知のいわゆるIPsecと同様のポリシーで取決めを行うこともできるが、本発明の第2の実施形態においては、事前にプロトコルドライバソフトウエア自体を配布しているので、より簡潔な独自のプロトコルにより秘密鍵等を取り決めたり、より簡易な構造のパケットを使用したりすることもできる。また、公知の暗号化・復号化及び認証アルゴリズムでなく、独自で作成した暗号化・復号化及び認証アルゴリズム(ロジック)自体をプロトコルドライバのソフトウエアモジュール等として組み込むこともできる。
【0052】
なお、クライアント端末4cは、TCP2を実装していないが、インターネットで利用される公知のIPsecを実装しているため、これによってある程度セキュアな通信をすることができる。しかし、クライアント4aと4bは、対象とする放送アプリケーションのパフォーマンスないしセキュリティポリシーの都合上、IPsecではなく本発明によるTCP2の構成要素であるUDPsecを実装して使用している。IPsecではなくUDPsecを利用する理由は、例えば、UDPポート番号部分(IPペイロードに属する)をIPsecで暗号化することによるパフォーマンスの低下など、IPsec自体に脆弱さがあるからである。
【0053】
また、通信相手が正しいものかどうかを判断する相手認証プロトコルを、本発明のTCP2のTCP又はUDPプロトコルスタック、つまりTCPsec又はUDPsecに埋め込むことにより、通信相手相互間で上位アプリケーションを意識することなく、通信相手認証機能を実施することができる。この場合、コスト増にならない範囲で実質的に通信パケット数やパケット長等を増やすこともできる。
【0054】
また、特に、ネットワーク内で不特定多数の相手に向かってデータを送信するブロードキャスト機能を実施するに際して、本発明による暗号化方式であるUDPsecを利用する場合には、ブロードキャストを受けるクライアント端末3a、3bがネゴシエーション(取り決め)を開始し、通信相手認証や通信用秘密鍵を得る。そして、クライアント端末3aや3bは、通信相手の認証を行って通信用の秘密鍵を取得するまでは、ホストコンピュータ1からのUDPsecによる配信データを復号化することができない。
【0055】
次に、図4に基づいて、本発明の第1及び第2の実施形態の通信で送受信されるパケット構造と、その暗号化範囲及び完全性認証の適用範囲について説明する。
図4(a)はTCPsec/IPsecのパケット構造と各暗号化範囲と完全性認証の適応範囲を示し、図4(b)(c)はそれぞれTCPsec/IP、UDPsec/IPのパケット構造と各暗号化範囲及び完全性認証の適用範囲を示したものである。
【0056】
図4(a)に示すように、TCPsec/IPsecのパケット構造は、IPヘッダ41のすぐ後に、IPsecのESPヘッダ42が続いている。続いてTCPヘッダ43とTCPsecの付加情報44が設けられ、その後にアプリケーションデータ45が続く構造になっている。そして、アプリケーションデータ45の後には、ブロック暗号で発生するデータのブランクやそのブランクの長さ、次のヘッダの番号などの暗号データをサポートする情報であるTCPsec付加トレーラ46が配列され、その後にTCPsecの付加認証データ47が配列される。そして、さらにその後にIPのためのESPトレーラ48とESP認証データ49が配列されるパケット構造になっている。
【0057】
このうち番号41、42、48、49で示される部分はIPsec用の情報であり、番号43、44、46、47が本発明によるTCP2の中心的な役割を果たすTCPsecに関連する情報である。なお、ここではTCPsecもIPsecに準じた配列としたが、採用する暗号化や認証のアルゴリズムによっては、TCPsecの付加情報44と付加トレーラ46を省略したり、TCPsecの付加認証データ47を削減したりしても利用可能である。
【0058】
図4(a)に示すTCP2のパケット構造においては、TCPsecとIPsecの二つの方式で暗号化が行われる。この場合、まず送信側では、TCPsec側を最初に暗号化して、TCPsec認証データを付加する。次に、IPsecを暗号化し、IPsec認証データを付加している。そして、受信側では、まず、IPsecを復号化して、IPsec認証データにより受信パケットのデータを検証し、続いてTCPsec側を復号化して、TCPsec認証データで受信パケットのデータを検証する。
【0059】
このように、図4(a)に示すようなパケット構造を有するデータでは、IPsecとTCPsecの二種類の暗号アルゴリズムを用いて暗号化し、さらに完全性認証を行うので、IPsecのみと比べて外部からの侵入等にたいして格段に強固な暗号化通信システムを確立することができる。TCPsecにより暗号化される範囲は、アプリケーションデータ45、TCPsec付加トレーラ46の部分であり、TCPsecによる認証範囲としては上記暗号化範囲にさらにTCPsec付加情報44が加えられる。なお、従来のIPsecで暗号化される暗号化範囲は、TCPヘッダ43からESPトレーラ48までの部分であり、その認証範囲は、ESPヘッダ42からESPトレーラ48までの範囲となる。
【0060】
図4(b)は、TCPsec/IPのパケット構造を示しており、図4(a)と異なり、IPヘッダ41のすぐ後に、TCPヘッダ43及びTCPsec付加情報44が続き、更にアプリケーションデータ45が続く構造になっている。そして、アプリケーションデータ45の後には、ブロック暗号で発生するデータのブランクやそのブランクの長さ、次のヘッダの番号などの暗号データをサポートする情報であるTCPsecの付加トレーラ46とTCPsecの付加認証データ47が配列される構造となっている。
【0061】
ここで、番号43、44、46、47がTCPsecに特徴的な情報となる。ただし、上述したようにこれらの情報は、採用する暗号化/認証アルゴリズムによっては、TCPsec/IPの使用していないヘッダフィールド部分などに分散したり、個々のパケットからは逆算・推測できない独立した事前取決め(ネゴシエーション)により省略したりできるものである。また、IP層の上層に当たるTCP及びIPを使用していないプロトコルフィールドを用いて、図4(b)に示すようなTCPsec/IPパケットを構成することにより、より下層のIPのみに着目したIPsecパケットよりもパケット長を簡単に削減することができるようになる。なお、ここで暗号化範囲は、図示の通り、アプリケーションデータ45、TCPsec付加トレーラ46であり、認証範囲は上記暗号化範囲の他に、TCPsecの付加情報44が加えられる。
【0062】
図4(c)は、本発明におけるUDPsec/IPのパケット構造を示すものであり、UDPsec付加情報44a、UDPsec付加トレーラ46a及びUDPsec付加認証データ47aがUDPsecをサポートするために必要な情報となる。この暗号化範囲は、図示の通り、アプリケーションデータ45a、UDPsec付加トレーラ46aであり、認証範囲は上記暗号化範囲の他に、UDPsec付加情報44aが加えられる。
【0063】
次に、本発明の第1の実施の形態であるTCPsecを用いた暗号化処理システムの動作を図5〜図6、図8〜図14に示す流れ図、及び図7に示すシーケンス図に基づいて説明する。
【0064】
図5は、TCP、並びに、TCPsecのパッシブオープン(図7のホストBに相当する接続待ちのオープンであり、例えば、Webサーバが、この状態でオープンする。)における処理の流れ図であり、上位アプリケーション・プログラムで、接続待ちオープンした場合に、このTCP/TCPsecパッシブオープン処理がスタートする(ステップS1)。なお、この部分は、図7でいうとホストB側の処理がこれに相当する。
【0065】
まず、最初に、オープンするポート番号の解析が行われる(ステップS2)。この解析では、例えば、Webサーバの場合は、TCPポートの80番を使用して、その定義状態を確認する。そして次にこのポート番号80が、TCPsecのパッシブオープンが許可されているかどうかを判定する(ステップS3)。ステップS3においてTCPsecのパッシブオープンが許可されていない場合は、今度はTCPパッシブオープンが許可されているかどうかが判断される(ステップS4)。判断ステップS4でTCPパッシブオープンも許可されていない場合は、TCPsecもTCPも許可されていないことになり、TCP/TCPsecパッシブオープンは失敗となり、処理を中断する(ステップS7)。
【0066】
判断ステップS4でTCPパッシブオープンが許可されている場合、すなわちTCPsecパッシブオープンは許可されていないがTCPパッシブオープンは許可されているときは、後述する図8に示すTCPパッシブオープン処理が実行される(ステップS5)。
判断ステップS3で、TCPsecのパッシブオープンの許可状態が確認された場合は、同じく後述する図9に示すTCPsecのパッシブオープン処理が実行される(ステップS6)。
【0067】
ステップS5又はステップS6におけるTCPパッシブオープン処理又はTCPsecのパッシブオープン処理が終了するとTCP/TCPsecパッシブオープン処理を終了する(ステップS7)。このように、本例では、上位であるアプリケーションからは、TCPでパッシブオープンを行っているが、TCP2の判断により、TCPsecがサポートされていればTCPsecで通信を行い、TCPsecがサポートされていなければTCPで通信することとなる。
【0068】
次に、図6に基づいて本発明のTCP並びにTCPsecのアクティブオープン処理について説明する。TCP/TCPsecのアクティブオープンとは、接続要求のオープンであり、例えば、Webブラウザを実装するクライアント端末が、この状態でオープンすることになる。図7でいうとホストA側の処理がこれに相当する。図6は、このアクティブオープンにおける処理の流れ図であり、上位アプリケーション・プログラムにおいて接続要求オープンがなされた場合に、このTCP/TCPsecのアクティブオープン処理が開始される(ステップS8)。
【0069】
まず、最初に、オープンするポート番号の解析がなされる(ステップS9)。この解析は、例えば、Webブラウザを実装するクライアント端末アプリケーションが、TCPポートの3000番を使おうとした場合は、TCPポートの3000番の定義状態を確認する。
【0070】
次にこのポート番号3000に対してTCPsecのアクティブオープンが許可されているかどうかが判断される(ステップS10)。ステップS10においてTCPsecのアクティブオープンが許可されていないと判定された場合は、続いてTCPアクティブオープンが許可されているかどうかが判断される(ステップS11)。判断ステップS11でTCPアクティブオープンも許可されていない場合は、TCPsec、TCPのいずれのアクティブオープンも許可されていないことになり、TCP/TCPsecアクティブは失敗となり、接続処理は中断される(ステップS14)。
【0071】
判断ステップS11でTCPアクティブオープンが許可されている場合、すなわちTCPsecアクティブオープンは許可されていないがTCPアクティブオープンは許可されているときは、後述する図10に示すTCPアクティブオープン処理が実行される(ステップS12)。
【0072】
判断ステップS10で、TCPsecのアクティブオープンの許可状態が確認された場合は、後述する図11に示すTCPsecのアクティブオープン処理が実行される(ステップS13)。ステップS12又はステップS13におけるTCPsecアクティブオープン処理又はTCPsecのアクティブオープン処理が終了するとTCP/TCPsecアクティブオープン処理が終わる(ステップS14)。TCP/TCPsecアクティブオープンの場合も、TCP/TCPsecパッシブオープン(図5)の場合と同様に、上位であるアプリケーションからは、TCPでアクティブブオープンを行っているが、TCP2の判断により、TCPsecがサポートされていればTCPsecで通信を行い、TCPsecがサポートされていなければTCPで通信することとなる。
【0073】
次に、図7に基づいてアクティブオープン側のホストAとパッシブオープン側のホストB間のシーケンス処理について、本発明のTCPsecを使った通信の処理を説明する。
【0074】
図7は、本発明の暗号処理プロトコルであるTCPsecを用いたときの接続シーケンス、データ通信シーケンス及び切断シーケンスを、標準のTCPと比較して示したものである。図7(a)は標準TCP,図7(b)は本発明のTCPsecを用いた時の通信のシーケンスを示した図である。
図7(a)に示すように、標準のTCPは、ホストBのアプリケーションがTCPパッシブオープンし、ホストAのアプリケーションがTCPアクティブオープンしている。
【0075】
ホストBのアプリケーションがTCPパッシブオープンをすると、TCPパッシブオープン処理(図5のステップ5及び図8参照)を開始し、後述する図8のステップS15に示すように受信待ちとなる。ホストAのアプリケーションがTCPアクティブオープンをすると、TCPアクティブオープン処理(図6のステップS12及び図10参照)を開始し、後述する図10のステップS52に示すようにホストAからホストBに対して接続要求(SYN)が送信される。これにより、標準TCPの接続シーケンスが開始状態となる。
【0076】
ホストB側では、この接続要求(SYN)を受信するとこの接続要求の受信パケットの解析を終了し、ホストA側に接続応答(SYN・ACK)を送信する。ここでACKとは、Acknowledgementの略であり、データ転送が正常に終了したときなどに送信されるものである。ホストA側は、この接続応答(SYN・ACK)を受信すると、接続が完了した旨のACK(肯定応答)を送信し、標準TCPの接続シーケンスを終了する。
【0077】
この標準TCPの接続シーケンスを終了すると、標準TCPによるデータ通信シーケンスが有効となり、ホストA側、又は、ホストB側の何れかがデータを送信後、データを受信した側からACK(肯定応答)を返すという基本パターンを繰り返してデータの送受信が行われる。
【0078】
この標準TCPのデータ通信シーケンスでは、ホストA又はホストBの何れかが、相手に対して切断要求をすることができる。
図7(a)では、アクティブオープン側のホストAからパッシブオープン側のホストBに対して切断要求が送信された場合を示している。ホストAのアプリケーションから切断要求があると、ホストAは、切断要求(FIN)を送信する。ホストBは、この切断要求(FIN)を受信すると、後述する図8のステップS23に示すように切断応答(FIN・ACK)を送信する。ホストAは、この切断応答(FIN・ACK)を受信すると、ACK(肯定応答)を送信し、標準TCPの切断シーケンスを終了する。
【0079】
次に、本発明のTCPsecによる通信のシーケンスを図7(b)に基づいて説明する。図7(b)では、ホストBのアプリケーションがTCPsecパッシブオープンし、ホストAのアプリケーションがTCPsecアクティブオープンしている。
ホストBのアプリケーションがTCPsecパッシブオープンをすると、TCPsecパッシブオープン処理(図5のステップS6及び図9を参照)を開始し、後述する図9のステップS31に示すように受信待ちとなる。ホストAのアプリケーションがTCPsecアクティブオープンをすると、TCPsecアクティブオープン処理(図6のステップS13及び図11を参照)を開始し、図11のステップS70に示すようにホストAからホストBに対して接続要求(SYN)が送信される。これにより、TCPsecの接続シーケンスが開始状態となる。
【0080】
ホストB側では、ホストAから送信された接続要求(SYN)を受信すると、この接続要求の受信パケットの解析を終了し、ホストAに対して接続応答(SYN・ACK)を送信する。そして、ホストA側は、このホストBからの接続応答(SYN・ACK)を受信するとACK(肯定応答)を送信し、TCPsecの接続シーケンスを終了する。
【0081】
この接続シーケンスが終了すると、TCPsec接続シーケンスが有効となり、ホストAとホストBの間で、TCPsecネゴシエーションデータに含まれているTCP2の固有情報を交換し、正しい相手であることを相手に通知する。すなわち、ホストAとホストBの間で、次のTCPsecネゴシエーションデータを交換する以前に相手方端末がTCP2をサポートする端末であるか、言い換えると通信する正しい相手であるか否かを確認することができる。続いて、ホストAとホストBの間でTCPsecネゴシエーションデータを交換し、TCPsec接続シーケンスを終了する。
【0082】
このTCPsecのTCPsec接続シーケンスが終了すると、TCPsecのデータ通信シーケンスが有効となり、ホストA側又はホストB側の何れかがデータを送信後、データを受信した側からACK(肯定応答)を返す基本パターンを繰り返してデータの送受信が行われる。なお、このデータは、すべて暗号データであることは言うまでもない。
【0083】
なお、TCPsecのデータ通信シーケンスでは、ホストA又はホストBの何れかが相手方に対して切断要求をすることができる。図7(b)では、アクティブオープン側のホストAから切断を開始している。ホストAのアプリケーションから切断要求があると、ホストAは切断要求(FIN)を送信する。ホストBは、この切断要求(FIN)を受信すると、後述する図9のステップS42に示すように切断応答(FIN・ACK)を送信する。ホストAは、この切断応答(FIN・ACK)を受信すると、ACK(肯定応答)を送信し、TCPsecの切断シーケンスを終了する。
【0084】
以上、図7に基づいて、標準TCPと本発明のTCP2のひとつであるTCPsecについて通信の接続から切断までのシーケンスを説明したが、以下、TCP及びTCPsecのパッシブオープン処理、及びアクティブオープン処理について流れ図に従って順に説明する。
【0085】
まず、図5の流れ図のステップS5において、TCPパッシブオープン処理がスタートした場合の詳細について図8の流れ図に基づいて説明する。
図5のステップS5で処理するプロトコルがTCPと決定した場合に、この図8のTCPパッシブオープン処理がスタートする。最初に、受信待ちをして、受信した受信パケットの解析を行う(ステップS15)。続いてこの受信したパケットが正しいパケットであるか否か、つまりDoS攻撃におけるTCPプロトコル攻撃パターンであるかどうかを判断する(ステップS16)。そしてステップS16の判断の結果、不正パケットであると判定された場合にはその受信パケットを廃棄し(ステップS17)、次のパケットの受信を待つ。
【0086】
判断ステップS16において、受信パケットが正しいTCPパケットであると判断された場合は、続いて接続中か否か、つまり図7のホストAとホストBの接続シーケンスが完了しているかどうかが判断される(ステップS18)。判断ステップS18において、接続中であると判定された場合は、次にパケットが切断要求(図7(a)のFIN)であるか否かが判断される(ステップS19)。切断要求でなければ、続いて切断応答(図7(a)のFIN/ACK)であるか否かが判断される(ステップS20)。切断要求でもなく、切断応答でもない場合には、TCPデータの送受信処理が行われ(ステップS21)、受信パケットが切断応答である場合は、図7のホストAからACKが送信され、TCP接続が切断される(ステップS25)。判断ステップS19でホストAからの切断要求であると判断されると、これに対する切断応答がホストBから送信される(ステップS23)。
【0087】
ステップS23で切断応答が送信された場合には、最終のACKを待つ(ステップS24)。そして、最終ACKを受信した後にTCPを切断状態にして(ステップS25)、TCPパッシブオープンを終了する(ステップS26)。
判断ステップS18において、受信ポートが接続中でないとされた場合には、受信したパケットがパッシブオープン許可ポートであるか否かが判定される(ステップS27)。そして受信パケットが許可されていない場合は、受信パケットを廃棄して(ステップS28)次のパケットを待つ。また、判断ステップS27において、受信パケットがパッシブオープン許可になっているとされた場合は、次にパケットが接続要求であるか否かが判断され(ステップS29)、接続要求でない場合は、パケットを廃棄して(ステップS28)次のパケットを待つ。また、判断ステップS29で接続要求であると判断された場合には、接続応答を送信し、TCPを接続状態とする(ステップS30)。
【0088】
次に、図5のTCPsecのパッシブオープンにおける処理ステップS6の詳細について、図9の流れ図に基づいて説明する。この処理は、図5のステップS6に示されるように、受信パケットの処理がTCPsecの処理であると決定された場合の処理である。最初に、受信待ちをして、受信した受信パケットの解析がなされる(ステップS31)。続いてこの受信したパケットが正しいパケットであるか否か、つまりDoS攻撃におけるTCPプロトコル攻撃パターンでないかどうかが判断される(ステップS32)。このステップS32の判断の結果、不正パケットであると判定された場合にはその受信パケットを廃棄し(ステップS33)、ステップS31に戻り、次のパケットの受信を待つ。
【0089】
判断ステップS32において、受信パケットが正しいパケットであると判断された場合は、続いてホストAとホストBの接続が完了しているかどうか(接続中かどうか)が判断される(ステップS34)。判断ステップS34において、ホストAとホストBが接続中であると判定された場合は、次に受信したパケットが切断要求(FIN)であるのか否かが判断される(ステップS35)。切断要求でなければ、今度は受信したパケットが切断応答(FIN・ACK)であるか否かが判断される(ステップS36)。そして、受信したパケットが切断要求でもなく、切断応答でもないということであれば、後述する図12に示されるTCPsecデータの送受信処理が行われ(ステップS37)、ステップS49に進む。次に、判断ステップS36で切断応答があった場合には、ACKを送信して(ステップS38)、ホストAとホストB間のTCPsecを切断する(ステップS41)。また、判断ステップS35において、受信パケットが切断要求(FIN)であると判断された場合は、切断応答(FIN・ACK)の送信が行われる(ステップS39)。ステップS39で切断応答が送信された場合には、相手方からの最終のACKを待ち(ステップS40)、この最終ACKを受信するとTCPsecを切断状態にして(ステップS41)、TCPsecパッシブオープンを終了する(ステップS42)。
【0090】
判断ステップS34において、ホストAとホストBが接続中でないと判断された場合には、受信したパケットがパッシブオープンの許可ポートであるか否かが判断される(ステップS43)。そして受信パケットがパッシブオープンの許可ポートではない場合は、受信パケットを廃棄して(ステップS44)、ステップS31に戻り次のパケットを待つ。また、判断ステップS43おいて、受信パケットがパッシブオープン許可ポートになっているとされた場合は、後述する図13に示すTCPsecパッシブ接続処理が実行される(ステップS45)。
【0091】
続いて、共通鍵と認証データに基づいて通信相手が正常、つまり正当な権限を持った相手であるか否かが判断される(ステップS46)。正常な相手であると判断されれば、ステップS31に戻り、次の受信パケットを待つが、通信相手が正常の相手ではないと判断されると、TCPsecの接続を強制切断し(ステップS47)、TCPsecのパッシブオープンの処理を終了する(ステップS48)。
【0092】
次に、図6のステップS12に示す、TCPアクティブオープンの処理について図10の流れ図に基づいて説明する。
図10は、図6における処理するプロトコルがTCPであると決定した場合の処理を示す図であり、最初に、送信側ホストAから受信側ホストBに対して接続要求(SYN)が送信される(ステップS50)。この接続要求に対して受信側ホストBから接続応答(SYN・ACK)が送信されると、次に受信待ちをし、受信したパケットの解析が行われる(ステップS51)。次に、この受信したパケットが正しいパケットであるか否か、つまりDoS攻撃におけるTCPプロトコル攻撃パターンでないかどうかを判断する(ステップS52)。このステップS52における判断の結果、不正パケットであると判定された場合にはその受信パケットを廃棄し(ステップS53)、ステップS51に戻り、次のパケットの受信を待つ。
【0093】
判断ステップS52において、受信パケットが正しいパケットであると判断された場合は、続いて送信側(アクティブ側)ホストAと受信側(パッシブ側)ホストBが、接続中かどうかが判断される(ステップS54)。この判断ステップS54において、接続中であると判定された場合は、次に受信パケットが送信側ホストAから受信側ホストBに対しての切断要求であるか否かが判断される(ステップS55)。これが切断要求でなければ、今度は受信側ホストBから送信側ホストAに対する切断応答(FIN・ACK)であるか否かが判断される(ステップS56)。切断要求でもなく切断応答でもないということになれば、TCPデータの送受信処理が行われ(ステップS57)、次の受信パケットを待つ。判断ステップS56でホストBからホストAへの切断応答であると判断されると、ホストAは切断を肯定するACKを送信し(ステップS58)、TCPを切断する(ステップS61)。
【0094】
判断ステップS55において、受信したパケットが切断要求である場合は、ホストBからホストAに対して切断応答が送信され(ステップS59)、ホストBはホストAからの最終のACKの受信を待つ(ステップS60)。そして、ホストBがホストAから最終ACKを受信した後にTCPを切断状態にして(ステップS61)、TCPアクティブオープンを終了する(ステップS62)。
判断ステップS54において、送信側ホストAと受信側ホストBが接続中でないとされた場合には、受信したパケットがアクティブオープン許可ポートであるか否かが判定される(ステップS63)。そして受信パケットが許可されていない場合は、受信パケットを廃棄して(ステップS64)次のパケットを待つ。また、判断ステップS63において、受信パケットがアクティブオープン許可になっているとされた場合は、次に受信側ホストBからの接続応答があったか否かが判断され(ステップS65)、接続応答がなければ、パケットを廃棄して(ステップS64)次のパケットを待ち、受信側ホストBから接続応答がなされた場合には、TCPの接続状態として(ステップS66)、ステップS51に戻り、次の受信パケットを待つ。
【0095】
次に、図6のステップS13のTCPsecアクティブオープンが開始された場合の詳細な処理について図11の流れ図に基づいて説明する。
図11の流れ図に示す処理は、図6のステップS13で処理するプロトコルがTCPsecであると決定した場合に開始されるものである。最初に、送信側ホストAから受信側ホストBに対して接続要求(SYN)が送信される(ステップS70)。これに対して、受信側ホストBから接続応答(SYN・ACK)があってパケットの受信が開始され、受信したパケットの解析が行われる(ステップS71)。
【0096】
次に、受信パケットの解析の結果、受信したパケットが正しいTCPのパケットであるか否か、すなわち、DoS攻撃におけるTCPプロトコル攻撃パターンでないか否かが判断される(ステップS72)。この結果、不正パケットであると判定された場合には、そのパケットを廃棄(ステップS73)し、ステップS71に戻り次のパケットを待つ。
【0097】
判断ステップS72において、受信したパケットが正しいTCPパケットであると判定された場合は、次に送信側ホストAと受信側ホストBの接続が完了しているかどうか(接続中かどうか)が判断される(ステップS74)。そしてホストAとホストBが接続中であれば、今度は受信したパケットが切断要求(FIN)であるか否かが判断される(ステップS75)。受信したパケットが切断要求ではないときは、次に受信側ホストBから切断応答があるかどうかが判断される(ステップS76)。切断要求もなく切断応答もない場合は、図12に示すTCPsecデータの送受信処理が行われ(ステップS77)、その後ステップS87に進む。
【0098】
判断ステップS76で切断応答があった場合には、送信側ホストAから受信側ホストBに対してACKを送信して(ステップS78)、ホストAとホストB間のTCPsecを切断する(ステップS81)。また、判断ステップS75において、受信パケットが切断要求(FIN)であると判断された場合は、切断応答(FIN・ACK)の送信が行われる(ステップS79)。ステップS79で切断応答が送信された場合には、相手方からの最終のACKを待ち(ステップS80)、この最終ACKを受信するとTCPsecを切断状態にして(ステップS81)、TCPsecアクティブオープンを終了する(ステップS82)。
【0099】
判断ステップS74において、送信側ホストAと受信側ホストBの接続が完了していない、つまり接続中でないとされた場合には、受信したパケットがアクティブオープン許可ポートであるか否かが判定される(ステップS83)。そして受信されたパケットが許可されていない場合は、その受信パケットを廃棄して(ステップS85)ステップS71に戻り、次のパケットを待つ。また、判断ステップS83において、受信パケットがアクティブオープン許可になっているとされた場合は、受信されるパケットが受信側ホストBからの接続応答(SYN・ACK)のパケットであるか否かが判断され(ステップS84)、接続応答のパケットでない場合は、パケットを廃棄して(ステップS85)次のパケットを待ち、判断ステップS84で接続応答のパケットであると判断された場合には、図14でその詳細を示すTCPsecアクティブ接続処理が行われる(ステップS86)。
【0100】
ステップS86でTCPsecのアクティブ接続処理がなされると、次に受信側のホストBが正常な相手か否か、つまり接続を許可されている相手であるか否かが判断される(ステップS87)。そして、接続が許されている相手であると判断されれば、ステップS71に戻って次のパケットの受信を待ち、ステップS87で接続が許可されていない相手であると判断されると、TCPsecによる送受信を強制的に切断して(ステップS88)、TCPsecのアクティブオープンを終了する(ステップS89)。
【0101】
次に、上述した図9ステップS37及び図11のステップS76が選択された場合のTCPsecデータの送受信処理の詳細について図12の流れ図に基づいて説明する。
【0102】
まず、図9のステップS37及び図11のステップS77でTCPsecデータの送受信処理が開始すると、最初に、ホストAの上位アプリケーションからの送信要求があるか否かが判断される(ステップS90)。そして、ホストAの上位アプリケーションから送信要求があった場合は、送信側ホストAで送信データが暗号化され(ステップS91)、それに認証データが付加されて(ステップS92)、受信側ホストBに暗号化され認証データが付加されたパケットが送信される(ステップS93)。
【0103】
次に、受信側ホストBで、受信データがあるか否かが判断され(ステップS94)、受信データがある場合には、受信データの復号化が行われる(ステップS95)。次に、この受信され復号化されたデータが正しいデータであるかどうかが判断される(ステップS96)。この判断は、復号化したデータと受信された認証データとを確認することによって行われるが、復号データを確認した結果、正しいデータでないと判定された場合には、TCP/TCPsecを強制的に切断する(ステップS97)。この強制切断は、受信したデータを廃棄するとともに、送信側に切断要求をすることによって行われる。判断ステップS96で、復号化したデータが正しいデータであると判定された場合には、受信データの取り込み、すなわち上位プロトコルスタックへのデータの配達が行われ(ステップS98)、TCPsecのデータ送受信処理が完了する(ステップS99)。
【0104】
次に、図9のステップS45でTCPsecパッシブ接続処理が開始された場合の詳細の処理を図13の流れ図に基づいて説明する。
最初に、相手が正しい相手、つまり自コンピュータに接続する権限を持つコンピュータであるか否かを判断し(ステップS100)、正しい相手でない場合にはTCPsecの強制切断のための処理を実施する(ステップS101)。判断ステップS100において接続相手が正しい相手であると判断されれば、受信側ホストBから接続応答を送信する(ステップS102)。
【0105】
そして、接続応答を送信してきた相手の情報が自コンピュータ内にあるかどうかを確認する(ステップS103)。相手情報がコンピュータ内にない場合は、本システム、すなわちTCP2をインストールする際に使用した、インストールサーバから相手情報を取得する(ステップS104)。または、第三者認証のサーバから相手情報を取得してステップS105に進む。この取得する情報としては、相手側のTCP2のID、ユーザID、パスワード、バイオメトリックス情報、機器固有情報、LAN接続機器情報等の内、1つ、若しくは、複数を使用することができる。なお、サーバからの取得情報を既に自コンピュータが保有している場合であっても、有効期限若しくは有効使用回数を超えているような場合には、改めて取得動作を行う必要がある。
【0106】
次に、相手情報が正しい相手であるか否か、つまり、自分のコンピュータにアクセスすることを許容されている相手であるかどうかが判断される(ステップS105)。ここで、接続する相手が正しい相手であれば、TCPsecのパッシブ接続を完了する(ステップS106)が、正しい相手でない場合にはTCPsecの強制切断を行って接続を中止する(ステップS101)。
【0107】
次に、図11のステップS86でTCPsecのアクティブ接続処理が開始された場合の詳細の処理を図14の流れ図に基づいて説明する。
図13のパッシブ接続処理の場合と同様に、最初に、接続要求をしてきた相手が正しい相手であるどうか、つまり自コンピュータにアクセス権限を持っている相手からの通信であるかどうかを判断する(ステップS110)。正当なアクセス権限を持たない相手からの通信であれば、TCPsecのアクティブ接続を強制切断して終了する(ステップS111)。
【0108】
判断ステップS110で正しい相手であると判定されれば、送信側ホストから受信側ホストBに対して肯定的な接続応答(ACK)を送信する(ステップS112)。
次に、自コンピュータが相手側の情報を保有しているかどうかが判断される(ステップS113)。相手情報がコンピュータ内にない場合は、本システム、すなわちTCP2をインストールする際に使用した、インストールサーバから相手情報を取得する(ステップS114)。または、第三者認証のサーバから相手情報を取得してステップS115に進む。ここで、この取得する情報は、図13ステップS104と同様に、相手側のTCP2のID、ユーザID、パスワード、バイオメトリックス情報、機器固有情報、LAN接続機器情報等の内、1つ、若しくは、複数とすることができる。なお、サーバからの取得情報を既に自コンピュータが保有していたとしても、有効期限若しくは有効使用回数を超えている場合には、改めて取得動作を行う必要がある。
【0109】
次に、相手情報が正しい相手であるか否か、つまり、自分のコンピュータにアクセスすることを許容されている相手であるかどうかが判断される(ステップS115)。接続する相手が正しい相手であれば、TCPsecのアクティブ接続を完了する(ステップS116)が、正しい相手でない場合にはTCPsecの強制切断を行って接続を中止する(ステップS111)。
【0110】
以上、本発明のTCP2のうち、TCP/TCPsecを用いたパッシブオープン及びアクティブオープンの通信処理について説明した。
次に、図3で示すような、本発明の第2の実施形態であるUDP/UDPsecを用いた通信システム及び通信方法について説明する。
【0111】
図15は、本発明の第2の実施の形態に用いられるUDP/UDPsecのパッシブオープン処理について説明するための流れ図である。
この処理は、上位アプリケーション・プログラムにより開始される(ステップ120)。最初に、オープンするポート番号の解析、すなわちポート番号の定義状態が確認される(ステップ121)。次に、このポート番号がUDPsecオープンになっているか否かが判断される(ステップS122)。UDPsecがオープンになっていない場合はUDPがオープンになっているかどうかが判断される(ステップ123)。そして、UDPsec、UDPが両方ともオープン許可になっていない場合は、UDP/UDPsecは終了する(ステップS126)。判断ステップS123で、UDPがオープン許可になっている場合、つまりUDPsecはオープン許可になっていないけれどもUDPがオープン許可になっている場合は、図18に示すUDPオープン処理が実施される(ステップS124)また、判断ステップS122においてUDPsecがオープンである場合は、UDPがオープンであるか否かにかかわらず、UDPsecのオープン処理が実施されて(ステップS125)、UDP/UDPsecオープン処理は終了する(ステップS126)。なお、上位であるアプリケーションからは、UDPでオープンを行っていたとしても、TCP2の判断により、UDPsec若しくは、UDPで通信することも可能である。
【0112】
次に、本発明の第2実施の形態の1つであるUDP/UDPsecを用いたユニキャスト通信におけるシーケンス処理について図16に基づいて説明する。
図16は、標準のUDP、及び、本発明のTCP2の中のUDPsecにおけるユニキャスト通信の開始シーケンス、データ通信シーケンスのパケット(ヘッダと、ペイロードで構成する)及び、その流れを説明した図である。
【0113】
図16(a)が標準のUDPを用いた通信シーケンスを示し、図16(b)は、UDPsecによる暗号化通信のシーケンスを示す。
図16(a)の標準のUDPは、ホストA、ホストBともにアプリケーションがUDPオープンしている例を示している。ホストBのアプリケーションがUDPオープンをすると、UDPオープン処理(図15のステップS124及び図18参照)を開始する。また、同様にホストAのアプリケーションがUDPオープンした場合も上記のUDPオープン処理を開始する。これにより、UDPのデータ通信を行うことが可能となる。ここで図16(a)に示すユニキャスト通信では、ホストA、ホストBの何れからもデータの送信が可能である。
【0114】
次に、本発明のTCP2の暗号化方式の1つであるUDPsecによる通信処理のシーケンスを説明する。
図16(b)は、本発明のTCP2が持つUDPsecにより暗号化通信する場合の例であるが、この例は、ホストA、ホストBともにアプリケーションがUDPオープンし、TCP2がUDPsecでオープンと判断したケースである。
ホストBがUDPsecオープンをすると、UDPsecオープン処理(図15のステップS125及び図19を参照)が開始される。また、ホストAがUDPsecオープンした場合も同様にUDPsecオープン処理が開始される。そして、UDPsecのデータ通信が実現可能となる。
【0115】
この図16(b)に示したUDPsecを用いたユニキャスト通信においても、UDPのときと同様に、ホストA側又はホストB側の何れからもデータを送信することができる。図16(b)の場合、まず、ホストAのアプリケーションからUDPデータの送信要求があったとして説明する。アプリケーションからUDPデータの送信要求を受け取ると、ホストBは、UDPsecユニキャスト受信開始処理を開始し、ネゴシエーションを開始する。ネゴシエーションをして、相手が正しい相手であれば、ネゴシエーションを完了して、アプリケーションからUDPデータの送信要求をUDPsecデータ(暗号データ)として送信する。このUDPsecユニキャスト通信では、データを受信した側からACK(肯定応答)を返さない。このため、送達確認とデータの保証をする機能はないが、その分データの通信が高速になり、大容量の画像データなどの通信に適している。
【0116】
図17は、標準UDPと本発明のTCP2の暗号化方式であるUDPsecを用いたブロードキャスト通信の開始シーケンス、データ通信シーケンスのパケット(ヘッダと、ペイロードで構成する)及び、その流れを説明した図である。
図17(a)が、標準のUDP、図17(b)が本発明のTCP2のUDPsecによる通信のシーケンス図である。
【0117】
図17(a)の標準のUDPは、ホストA、ホストBともにアプリケーションがUDPオープンしている。そして、ホストBのアプリケーションがUDPオープンをすると、UDPオープン処理(図15のステップS124及び図18参照)を開始する。また、ホストAのアプリケーションがUDPオープンした場合も、同様にUDPオープン処理を開始する。これにより、UDPのデータ通信を行うことができる状態となる。
【0118】
また、データはホストA、ホストBの何れも発生することはできるが、図17(a)では、ブロードキャスト通信ということもあって、ホストA側からホストB側に一方向的にデータが流れる図としている。データを受信したホストB側からACK(肯定応答)を返さないため、送達確認とデータの保証をする機能は持たない。なお、データをブロードキャストする場合には、IPアドレスのサブネットアドレスをオール1にすることで、データをブロードキャストすることが可能となる。
【0119】
次に、図17(b)のUDPsecによる暗号化通信について説明する。この場合も、ホストA、ホストBともにアプリケーションがUDPオープンし、TCP2がUDPsecでオープンとしている。
ホストBがUDPsecオープンをすると、UDPsecオープン処理(図15のステップS125及び図19)を開始する。また、ホストAがUDPsecオープンしても同様に、UDPsecオープン処理を開始する。これにより、UDPsecのデータ通信を行うことができる状態となる。
【0120】
図17(b)示すように、ホストAのアプリケーションからUDPのブロードキャストデータ(IPアドレスがブロードキャストを示しているデータ)の送信要求があった場合を説明する。アプリケーションからUDPのブロードキャストデータの送信要求を受け取ると、ネゴをしないで、UDPsecで暗号データとして不特定ホストに配信する。ホストBは、ブロードキャストデータを受け取ると、後述する図19のステップS141のUDPsecブロードキャスト受信開始処理を開始する。ホストAとホストB間でネゴシエーションを開始し、相手が正しい相手であれば、ネゴシエーションを完了して、ブロードキャストデータを復号化して、アプリケーションへ送る。このとき、データを受信した側からACK(肯定応答)を返さないため、送達確認とデータの保証をする機能はない。
【0121】
次に、図18に基づいて、図15のステップS124の標準UDPのオープン処理について説明する。
図18は、UDPのオープン処理の流れ図であり、この処理は図15のステップS124で、処理するプロトコルがUDPと決定した場合に開始される処理である。
【0122】
最初に、アプリケーションからの送信要求、又は受信パケットを待ち、送信要求又はパケットを受信したときに、パケットの解析を行う(ステップS130)。ここで、受信パケットだけでなく送信要求も解析するのは、悪意を持った第三者が送信するホストA踏み台にして、ホストAを加害者として不特定多数に通信することを防ぐためである。この送受信パケットの解析を行った後に、正しいパケットであるかどうか、つまりDoS攻撃におけるUDPプロトコル攻撃パターンでないかどうかを判断する(ステップS131)。この判断ステップS131において、不正パケットであると判定された場合には、パケットを廃棄し(ステップS132)、次のパケットを待つ。
【0123】
判断ステップS131で正しいパケットであると判定された場合は、UDPデータの送受信処理が行われ(ステップS133)、続いて上位アプリケーションからUDPのクローズ要求があったかどうかが判断される(ステップS134)。上位アプリケーションよりUDPクローズ要求があった場合には、UDPオープン処理を終了する(ステップS135)。
【0124】
次に、図19に基づいて、図15のステップS125のUDPsecのオープン処理について説明する。図19は、UDPsecのオープンにおける処理の流れ図であり、図15のステップS125に示すように、処理するプロトコルがUDPsecと決定した場合にこの処理が開始される。
【0125】
最初に、アプリケーションからの送信要求又は受信パケットを待ち、送信要求又は受信したパケットの解析が行われる(ステップS140)。次に、上位アプリケーションからの送信要求あるいは送受信パケットが正しいUDPパケットであるか否か、つまりDoS攻撃におけるTCPプロトコル攻撃パターンでないかどうかを判断する(ステップS141)。判断ステップS134において正しいUDPパケットではないと判断された場合は、パケットを廃棄し(ステップS142)、次のパケットを待つ。
【0126】
判断ステップS141において、正しいUDPパケットであると判定された場合は、次にUDPsecネゴシエーションがなされた受信パケットであるか否かが判断される(ステップS143)。
【0127】
そして、この結果、UDPsecのネゴシエーションパケットであると判断された場合は、後述する図23で示すUDPsecユニキャスト受信開始処理が行われ(ステップS144)、ステップS154へ進む。
また、判断ステップS143において、UDPsecのネゴシエーションパケットではないと判断されると、続いてブロードキャスト通信であるか否かを判断する(ステップS145)。そして、ブロードキャスト通信であると判定された場合は、通信の開始パケットであるか、つまりオープン後の最初の通信パケットであるか否かを判断し(ステップS146)、開始パケットでない場合は図22で説明するUDPsecデータ送受信処理を行う(ステップS151)。判断ステップS146において通信の開始パケットであると判定された場合は、次に送信パケットであるか否かが判断される(ステップS147)。そして、この結果、送信パケットであれば、上述したUDPsecデータ送受信処理が行われる(ステップS151)が、送信パケットではないと判定された場合は、後述する図20のUDPsecブロードキャスト受信開始処理が実施される(ステップS148)。この受信開始処理の後で、送信されたパケットが正しい相手からのものであるかどうかを判断する(ステップS149)。そして、判断ステップS149で、送信されたパケットが正しい相手からのものではないと判断されると、パケットを廃棄し(ステップS150)、次のパケットを待つ。判断ステップS149で、正しい相手であると判定された場合には、図22で示すUDPsecデータ送受信処理が行われる(ステップS151)。
【0128】
また、判断ステップS145において、ブロードキャスト通信でない、すなわちユニキャスト通信であると判定された場合は、通信の開始パケット、すなわちオープン後の最初の通信パケットであるか否かが判断される(ステップS152)。この結果、開始パケットではないと判断された場合には、図22で詳述するUDPsecデータ送受信処理がなされる(ステップS151)。
【0129】
また、判断ステップS152で、オープン後の最初の通信パケットであると判断された場合は、図21で後述するUDPsecユニキャスト送信開始処理が行われる(ステップS153)。その後、通信の相手が、正しい相手であるかを判断し(ステップS154)、正しい相手である場合には、引き続きUDPsecデータ送受信処理がなされ(ステップS151)、正しい相手ではないと判定された場合には、受信したパケットを廃棄し(ステップS155)、ステップS140に戻って次のパケットを待つ。
【0130】
次に、図19のステップS148のUDPsecブロードキャスト受信の開始における処理について、図20に示す流れ図に基づいて説明する。
最初に、ブロードキャストを配信してきた相手の情報を自コンピュータが保有しているか否かを判断する(ステップS160)。そして、情報を保有していない場合には、本システムをインストールする際に使用した、インストールサーバから相手情報を取得する(ステップS161)。または、第三者認証のサーバから情報を取得する。この取得する情報は、相手のTCP2のID、ユーザID、パスワード、バイオメトリックス情報、機器固有情報、LAN接続機器情報等の内、1つ、若しくは、複数を使用する。次に、ブロードキャストを配信してきた相手が正しい相手であるかどうかを判断する(ステップS162)。そして、正しい相手であると判断されれば、UDPsecでの受信が可能であることになり、UDPsecブロードキャストの通信開始処理を終了し(ステップS164)、受信可能であることを図19のステップS149へ指示する。判断ステップS162で正しい相手ではないとされた場合には、通信の拒否を行い(ステップS163)、データを取得しない旨を同じく図19のステップS149へ指示する。なお、ステップS160で仮に相手方に関する取得情報があったとしても有効期限、若しくは、有効使用回数を超えている場合には、改めてステップS161で相手情報の取得動作を行ったほうがよい。
【0131】
次に、図19のステップS153のUDPsecユニキャスト送信開始処理について、図21に示す流れ図に基づいて説明する。
最初に、送信する相手の情報を自コンピュータが保有しているか否かを確認する(ステップS170)。そして、情報を保有していない場合には、図20のステップS161と同様な方法で相手情報を取得する(ステップS171)。この取得する情報も図20の場合と同じである。
【0132】
次に、送信する相手が正しい相手であるかどうかを判断する(ステップS172)。そして、正しい相手であると判断されれば、UDPsecでの送信が可能であることになり、UDPsecユニキャストの通信開始処理を終了し(ステップS174)、送信可能であることを図19のステップS154へ指示する。判断ステップS172で正しい相手ではないとされた場合には、通信の拒否を行い(ステップS173)、データを取得しない旨を図19のステップS154へ指示する。
【0133】
次に、図22に基づいて、図19のステップS151に示すUDPsecデータの送受信処理について説明する。
最初に、ホストAのアプリケーションから送信要求があったか否かを判断する(ステップS180)。送信要求があれば送信側ホストAにおいてデータを暗号化し(ステップS181)、この暗号化したデータに認証データを付加して(ステップS182)、受信側ホストBに認証データが付加されたパケットを送信する(ステップS183)。
【0134】
次に、受信側ホストBで、受信データがあるか否かが判断され(ステップS184)、受信データがある場合には、受信データの復号化が行われる(ステップS185)。次に、この受信され復号化されたデータが正しいデータであるかどうかが判断される(ステップS186)。この判断は、復号化したデータと受信された認証データとを確認することによって行われるが、復号データを確認した結果、正しいデータでないと判定された場合には、UDP/UDPsecを強制的に切断する(ステップS187)。判断ステップS186で、復号化したデータが正しいデータであると判定された場合には、受信データの取り込み、すなわち上位プロトコルスタックへのデータの配達が行われ(ステップS188)、UDPsecのデータ送受信処理が完了する(ステップS189)。
【0135】
次に、図23の流れ図に基づいて、図19のステップS144に示すUDPsecユニキャスト受信の開始処理について説明する。
最初に、ユニキャストで受信したパケットの相手情報を自コンピュータが保有しているか否かを判断する(ステップS190)。相手情報を持っていない場合には、本システムをインストールする際に使用した、インストールサーバあるいは第三者認証のサーバから相手情報を取得する(ステップS191)。取得する情報としては、図20のステップS161あるいは図21のステップS171と同じであり、相手のTCP2のID、ユーザID、パスワード、バイオメトリックス情報、機器固有情報、LAN接続機器情報等の内、1つ、若しくは、複数がこれに相当する。
【0136】
次に、ユニキャストを送信してきた相手が正しい相手であるか否かを判断する(ステップS192)。正しい相手であると判定されれば、UDPsecでの受信が可能であることを図19のステップS154へ伝えてUDPsecブロードキャスト通信開始処理を終了する(ステップS194)。判断ステップS192で正しい相手ではないと判断された場合には、データを取得しない旨を図19のステップS154へ伝え、通信を拒否する(ステップS193)。
【0137】
以上、本発明の第1の実施形態であるTCPsecを用いた暗号化処理及び本発明の第2の実施形態であるUDPsecを用いた暗号化処理について流れ図及びシーケンス図に基づいて詳しく説明した。
【0138】
次に、本発明のTCP2が、従来のIPsecあるいはSSLと比べて如何に優位であるかという点について、図24に基づいて説明する。
例えば、SSLでは対応が困難であった、クライアント−クライアント間の通信、TCP/IPプロトコルへのDoS攻撃、全てのUDPポートあるいはTCPポートのセキュアな通信、ソケットプログラムを変更しなければならなかったアプリケーションでの制限などに、TCP2は完全に対応している。
【0139】
また、IPsecでは対応が困難であった、エラーが多発する劣悪な環境下での通信、異なったLAN間での通信、複数キャリア経由の接続、PPPモバイル環境、ADSL環境での通信に対しても、TCP2は完全にサポートしている。
さらに、モバイル環境下やADSL環境下でVoIP(Voice over Internet Protocol)を使ったインターネットに対しても、本発明のTCP2により対応可能である。
【0140】
また、異なったLAN間や複数キャリアにまたがったLAN間でVoIPを使ったインターネット電話に対しても、IPsecとSSLでは対応不可能であったが、本発明のTCP2によれば完全に対応することができる。
【0141】
図24は、TCP2の優位性を説明するための図であるが、セキュリティのないプロトコルスタック(a)に、従来のSSLを適用したケース(b)と、IPsecを適用したケース(c)と、本発明のTCP2(TCPsec/UDPsec)を適用したケース(d)を比較して示している。図24(b)のSSLは既に述べたように、セッション層(第5層)のソケットに設けられているので、上位のアプリケーションに対する互換性がないのである。このため、SSL自体、上述のような問題を抱えることになっている。また図24(c)のIPsecは、ネットワーク層(第3層)にあり、IP層での互換性がないため、ネットワークを構成する上で上述したような様々な制約を受けることになる。これに対して、図24(d)のTCP2(TCPsec/UDPsec)は、トランスポート層(第4層)に導入する暗号化技術であり、このためアプリケーションから見るとソケットをそのまま利用することができ、またネットワークから見るとIPもそのまま利用できるのでネットワークを構成する上での制約は受けない。
【0142】
以上のように、本発明のTCP2を用いた暗号化通信システム、暗号化通信方法は、既存の暗号化処理システムに比べても、特にデータの漏洩、改ざん、なりすまし、進入そして攻撃に対して極めて高いセキュリティ機能を有するものである。
なお、本発明は、以上説明した実施の形態に限定されるものではなく、特許請求項に記載した本発明の要旨を逸脱しない範囲において、さらに多くの実施形態を含むものであることは言うまでもない。
【図面の簡単な説明】
【0143】
【図1】本発明の通信システムに用いられるTCP2のプロトコルスタックを示す図である。
【図2】本発明のTCP2を用いた通信システムの第1の実施形態(TCPsecによるECアプリケーション)におけるシステムの全体構成図である。
【図3】本発明のTCP2を用いた通信システムの第2の実施形態(UDPsecによる放送アプリケーション)におけるシステムの全体構成図である。
【図4】本発明のTCP2の中の3つのプロトコルスタックのパケット構造とその暗号化範囲及び認証範囲を示す図である。(a)、(b)(c)は、それぞれTCPsec/IPsec、TCPsec/IP、UDPsec/IPのパケット構造、及び各暗号化範囲、完全性認証の適用範囲を示す図である。
【図5】本発明のTCP2の実施形態であるTCP/TCPsecパッシブオープンの処理を示す流れ図である。
【図6】本発明のTCP2の実施形態であるTCP/TCPsecアクティブオープンの処理を示す流れ図である。
【図7】標準TCPと本発明のTCPsecのホストA(アクティブオープン)とホストB(パッシブオープン)間の通信のやり取りを示すシーケンス図である。
【図8】図5のTCPパッシブオープン処理S5の詳細を示す流れ図である。
【図9】図5のTCPsecパッシブオープン処理S6の詳細を示す流れ図である。
【図10】図6のTCPアクティブオープン処理S12の詳細を示す流れ図である。
【図11】図6のTCPsecアクティブオープン処理S13の詳細を示す流れ図である。
【図12】図9のTCPsec送受信処理S37及び図11のTCPsec送受信処理S76の詳細を示す流れ図である。
【図13】図9のTCPsecパッシブ接続処理S48の詳細を示す流れ図である。
【図14】図11のTCPsecアクティブ接続処理S88の詳細を示す流れ図である。
【図15】本発明のTCP2の実施形態であるUDP/UDPsecオープンの処理を示す流れ図である。
【図16】本発明のTCP2を用いたUDP/UDPsecユニキャスト通信のシーケンス図である。
【図17】本発明のTCP2を用いたUDP/UDPsecブロードキャスト通信のシーケンス図である。
【図18】図15のUDPオープン処理S124の詳細を示す流れ図である。
【図19】図15のUDPsecオープン処理S125の詳細を示す流れ図である。
【図20】図19のUDPsecブロードキャスト受信開始処理S141の詳細を示す流れ図である。
【図21】図19のUDPsecユニキャスト送信開始処理S146の詳細を示す流れ図である。
【図22】図19のUDPsecデータ送受信処理S144の詳細を示す流れ図である。
【図23】図19のUDPsecユニキャスト受信開始処理S137の詳細を示す流れ図である。
【図24】本発明のTCP2を従来のIPsec又はSSLを適用した場合と比較したメリットを説明するための図である。
【符号の説明】
【0144】
1・・・ホストコンピュータ、
2・・・ネットワーク制御機器(ルータ)
3a、3b、3c・・・クライアント端末
4a、4b、4c・・・クライアント端末
11・・・NICドライバ
12・・・ARP 又は ARP on CP
13・・・IPエミュレータ
13b・・・IPsec on CP
15・・・TCPエミュレータ
15b・・・TCPsec on CP
16・・・UDPエミュレータ
16b・・・UDPsec on CP
17・・・ソケット(Socket)
41・・・IPヘッダ
42・・・ESPヘッダ
43・・・TCPヘッダ
44・・・TCPsec付加情報
45・・・データ(ペイロード)
46・・・TCPsec付加トレーラ
47・・・TCPsec付加認証データ
48・・・ESPトレーラ
49・・・ESP認証データ


【特許請求の範囲】
【請求項1】
トランスポート層に位置するTCP又はUDPプロトコルに暗号化機能を追加して複数のホスト間で通信を行う暗号化通信システムであって、
通信相手との接続を行うための接続シーケンス手段と、
TCP2固有情報を交換して通信相手が正当な権限を有する通信相手であるかどうかを判断し、暗号化通信に必要な鍵交換を行うためのTCPsec接続シーケンス手段と、
通信路の両端で対応する暗号化及び復号化ロジックを取り決める取決め手段と、
前記取決め手段により取り決めた暗号化ロジックに従って、前記複数のホスト間で送受信する情報のパケットを暗号化して送信するプロトコル暗号化手段と、
前記取決め手段により取り決めた復号化ロジックに従って前記複数のホスト間で送受信する情報のパケットを復号化するプロトコル復号化手段と、を備え、
前記接続シーケンス手段は、一切のイレギュラーパターンを排除するネットワーク環境にも対応できるように、第1のホストから第2のホストへの接続要求と、第2のホストから第1のホストへの接続応答と、第1のホストから第2のホストに肯定応答を送信するという標準の接続を行い、
前記TCPsec接続シーケンス手段は、相手方ホストとTCP2固有情報の交換を行うことにより、相手方ホストが前記暗号化通信を行う権限を有することを確認し、暗号化通信に必要な鍵交換を行い、
前記取決め手段は、前記TCPsec接続シーケンス手段が正当な権限を有すると判断して接続した通信相手とのみ前記トランスポート層の前記TCP又はUDPプロトコルを用いて前記暗号化及び復号化ロジックに基づいた通信を行い、
前記プロトコル暗号化手段は、前記送受信される情報のパケットのうち前記TCP又はUDPプロトコルのペイロードを暗号化して送信し、
前記プロトコル復号化手段は、前記送受信される情報のパケットのうち前記暗号化されたプロトコルのペイロードを復号化する
ことを特徴とする暗号化通信システム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate


【公開番号】特開2007−329750(P2007−329750A)
【公開日】平成19年12月20日(2007.12.20)
【国際特許分類】
【出願番号】特願2006−159983(P2006−159983)
【出願日】平成18年6月8日(2006.6.8)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.WINDOWS
2.ETHERNET
【出願人】(503287764)ティー・ティー・ティー株式会社 (18)
【Fターム(参考)】