以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
<第1実施形態>
図1は、第1実施形態に係る通信システム100の構成例を示す図である。第1実施形態では、通信システム100は、SDN(Software-Defined Network)のネットワークを想定する。ただし、通信システム100は、SDNのネットワークに限定されない。
通信システム100は、セキュリティ通信制御装置1と、コントローラ2と、複数のスイッチ3と、複数の通信端末4とを含む。スイッチ3は、例えば、SDNスイッチである。コントローラ2は、例えば、SDNコントローラである。SDNスイッチの一例は、OpenFlowスイッチである。SDNコントローラの一例は、OpenFlowコントローラである。
図1では、スイッチ#1(SW#1)、スイッチ#2(SW#2)、スイッチ#3(SW#3)の3台が示されている。これらのスイッチを総称する場合には、スイッチ3、と表記する。各スイッチを区別する場合には、スイッチ#1、スイッチ#2、スイッチ#3と表記する。また、図1では、通信端末として、送信元端末#Aと宛先端末#Bとが示されている。これらの通信端末を総称する場合には、通信端末4、と表記する。各通信端末を区別する場合には、送信元端末#A、宛先端末#Bと表記する。
コントローラ2は、スイッチ3を制御する装置である。セキュリティ通信制御装置1は、コントローラ2と通信端末4とを制御し、通信端末4間の、第1実施形態に係るセキュ
リティ対策がなされた通信経路の制御を行う装置である。以降、第1実施形態に係るセキュリティ対策がなされた通信を、セキュア通信、と称する。セキュリティ通信制御装置1は、「通信制御装置」の一例である。スイッチ3は、「中継装置」の一例である。
通信システム100では、スイッチ3とコントローラ2との間の制御信号、及び、セキュリティ通信制御装置1とコントローラ2と通信端末4との間の制御信号が通過するネットワークと、ユーザデータが通過するネットワークとが、物理的又は論理的に分離されている。スイッチ3とコントローラ2との間の制御信号、及び、セキュリティ通信制御装置1とコントローラ2と通信端末4との間の制御信号を扱うプロトコルをコントロールプレーンという。スイッチ3間を中継されるユーザデータを伝送するユーザ信号を扱うプロトコルをデータプレーンという。第1実施形態では、スイッチ3とコントローラ2との間のコントロールプレーンでは、OpenFlowが用いられることを想定する。図1では、コントロールプレーンの通信は点線で示されている。データプレーンの通信は、実線で示されている。
また、図1では、スイッチ#2とスイッチ#3との間には、外部ネットワーク(外部NW)が存在する。外部ネットワークは、通信システム100の管理外のネットワークである。そのため、外部ネットワークを経由する第1実施形態に係るセキュア通信は、外部ネットワークを経由する際には、一旦、通常の通信に変換される。
図2は、第1実施形態に係るセキュア通信のセキュリティ対策処理の一例を示す図である。第1実施形態では、発信側の装置は、(1)パケットのヘッダ内の宛先アドレスを架空のアドレスに書き換え、(2)ダミーパケットを追加し、(3)各パケットのペイロードに、本来の宛先アドレス又はダミーパケットであることを示す情報を挿入する。ダミーパケットのヘッダ内の宛先アドレスも架空のアドレスである。
ヘッダ内の架空の宛先アドレスは、同じフローに含まれるパケットのうち少なくとも2つのパケット群間で異なる値となるように設定される。同じフローに含まれるパケットのうち、少なくとも2つのパケット群間で異なる値となる架空の宛先アドレスの設定とは、例えば、以下の通りである。同じフローに含まれるパケットにおいて、1つのパケットの架空の宛先アドレスがAであり、その他のパケットの架空の宛先アドレスはBである。同じフローに含まれるパケットにおいて、複数のパケットの架空の宛先アドレスがAであり、その他のパケットの架空の宛先アドレスはBである。同じフローに含まれるパケットにおいて、架空の宛先アドレスは、いずれのパケットについても重複しない。
すなわち、同じフローに含まれるパケットのうち、少なくとも2つのパケット群間で異なる値となるように架空の宛先アドレスを設定することは、同じフローに含まれる全パケットにおいて、架空の宛先アドレスが同一の値とならないように設定することである。また、同じフローのパケットであることが特定されないために、架空の宛先アドレスがばらつくように設定されることである。
第1実施形態では、架空の宛先アドレスとして、パケットごとに算出される乱数が用いられる。また、ヘッダ内の架空の宛先アドレスは、その一部が、本来の宛先アドレス又はダミーパケットであることを示す情報の、ペイロード内の挿入位置を示すために用いられる。
中継装置は、パケットのペイロード内の本来の宛先アドレス又はダミーパケットであることを示す情報を確認して、転送する。
受信側の装置は、パケットのペイロード内の本来の宛先アドレスでヘッダ内の架空の宛
先アドレスを書き換え、ペイロード内の本来の宛先アドレスを削除して、本来のパケットを再生する。また、ダミーパケットの場合には、受信側の装置は、ダミーパケットを廃棄する。
第1実施形態に係る通信システム100の場合には、スイッチ#2とスイッチ#3との間に外部ネットワークが存在する。外部ネットワーク内では、上記の加工がなされていない通常のフォーマットのパケットのヘッダ内の宛先アドレスに基づいて転送が行われる。そのため、外部ネットワークを転送先とするスイッチ3は、受信側の装置と同様の処理を行う。また、外部ネットワークから受信するパケットを外部ネットワーク外のスイッチ3に転送するスイッチ3は、送信側の装置と同様の処理を行う。
例えば、図1において、送信元端末#Aから宛先端末#Bへの通信のパケットは、送信元端末#A、スイッチ#1、スイッチ#2、外部ネットワーク、スイッチ#3、宛先端末#Bの経路を通る。この場合には、上記の送信側の装置として動作する装置は、送信元端末#A、スイッチ#3となる。また、上記の受信側の装置として動作する装置は、宛先端末#B、スイッチ#2となる。上記の中継装置として動作する装置は、スイッチ#1となる。送信側の装置として動作する装置、受信側の装置として動作する装置、中継装置として動作する装置は、いずれも、「通信装置」の一例である。送信元端末#Aは、「送信装置」の一例である。宛先端末#Bは、「受信装置」の一例である。スイッチ#1は、「中継装置」の一例である。
また、通信システム100はSDNのネットワークが想定されているので、第1実施形態では、各スイッチ3の挙動は、コントローラ2が制御する。また、送信元端末#A、宛先端末#B、コントローラ2に対するセキュア通信に係る設定及び解除は、セキュリティ通信制御装置1が行う。
第1実施形態に係るセキュア通信では、ヘッダ内の宛先アドレスが、同一フローに含まれるパケットのうち少なくとも2つのパケット群間で異なる値となる架空の宛先アドレスに書き換えられる。宛先アドレスは、フロー識別情報として用いられることが多い情報の一つである。したがって、第1実施形態に係るセキュア通信では、本来同じフローに属するパケットが、第3者からは、同じフローに属するパケットとして識別されることが困難である。第3者は、1つのフローに属する全パケットを収集しないと、本来の通信データを取得することができない。したがって、第1実施形態に係るセキュア通信によれば、第3者による通信内容の解析を困難にすることができる。
また、第1実施形態では、所定の割合でダミーパケットを混在させるので、より通信内容の解析を困難にすることができる。
図3は、第1実施形態に係るセキュア通信のパケットの構成の一例を示す図である。パケットは、ヘッダとペイロードとを含む。ヘッダには、宛先IPアドレス、送信元IPアドレス等の情報が含まれる。ペイロードには、データが含まれる。通常、パケット中継の際には、ヘッダの情報が参照される。
第1実施形態では、ヘッダ内の宛先アドレスが格納されているフィールドの32ビットのうちの連続する複数ビット(ビット列)が、ペイロード内の本来の宛先アドレスの挿入位置を示す情報として用いられる。ヘッダ内の、ペイロード内の本来の宛先アドレスの挿入位置を示す情報として用いられる、ビット列の位置を、以降、確認位置と称する。
すなわち、コントローラ2、スイッチ3、宛先端末#B等のセキュア通信のパケットを中継又は受信する装置は、ヘッダ内の確認位置のビット列を参照することで、ペイロード
内の本来の宛先アドレスの挿入位置を取得することができる。パケットがダミーパケットである場合には、ヘッダ内の確認位置のビット列の値に対応するペイロード内の位置に、ダミーパケットであることを示す値が格納される。ダミーパケットを示す値は、宛先アドレスと同じサイズの32ビットで定義される。
例えば、ヘッダ内の宛先アドレスのフィールドの先頭1バイトが確認位置であり、確認位置のビット列の値が10である場合には、ペイロードの先頭から10バイト目の位置に本来の宛先アドレスが挿入されていることが示される。
第1実施形態では、ヘッダ内の宛先アドレスのフィールドに格納される架空のアドレスは、乱数である。すなわち、確認位置のビット列の値、すなわち、ペイロード内の本来の宛先アドレスの挿入位置は、パケットごとに、ランダムに決定される。また、ヘッダ内の確認位置は、セキュア通信ごと、すなわち、フローごとに、ランダムに決定される。
第1実施形態において、本来の宛先アドレスは、「第1の情報」の一例である。また、ヘッダ内の宛先アドレスのフィールドは、「第1のフィールド」の一例である。また、ヘッダ内の宛先アドレスのフィールドに本来のアドレスの代わりに格納される値(架空の宛先アドレス、乱数)は、「第2の情報」の一例である。通常の通信のフォーマットのパケットは、「第1のパケット」の一例である。セキュア通信のフォーマットのパケットは、「第2のパケット」の一例である。フローは、「フローを識別可能な識別情報が共通している複数の第1のパケット」、「複数の第1のパケットによって形成されるパケット群」の一例である。ヘッダ内の確認位置は、「第1のフィールドの所定部分」の一例である。ヘッダ内の確認位置を示す情報は、「ペイロード内の第1の情報の挿入位置に関する情報」の一例である。
<装置構成>
図4は、セキュリティ通信制御装置1のハードウェア構成の一例を示す図である。セキュリティ通信制御装置1は、例えば、専用又は汎用のコンピュータである。セキュリティ通信制御装置1は、CPU(Central Processing Unit)101、メモリ102、ネット
ワークインタフェース103、外部記憶装置インタフェース104、入出力装置インタフェース105を備える。CPU 101、メモリ102、ネットワークインタフェース103、外部記憶装置インタフェース104、入出力装置インタフェース105は、バスによって電気的に接続される。
メモリ102は、主記憶装置として用いられる記憶装置である。メモリ102は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)を含む。RAMは、例えば、DRAM(Dynamic RAM)、SRAM(Static RAM)、SDRAM(Synchronous
DRAM)、のような半導体メモリである。メモリ102は、CPU 101に、ROMや外部記憶装置に格納されているプログラムをロードする作業領域を提供したり、バッファとして用いられたりする。
外部記憶装置インタフェース104は、外部記憶装置とのインタフェースである。外部記憶装置は、例えば、不揮発性メモリである。不揮発性メモリは、例えば、EPROM(Erasable Programmable ROM)、又はハードディスクドライブ(Hard Disk Drive)等である。外部記憶装置は、例えば、OS(Operating System)、セキュア通信制御プログラム、その他アプリケーションプログラム等が格納される。セキュア通信制御プログラムは、通信端末4間のセキュア通信を設定及び解除するためのプログラムである。なお、外部記憶装置は、セキュリティ通信制御装置1の内部に搭載されてもよい。
CPU 101は、外部記憶装置に保持されたOSやプログラムをメモリ102にロー
ドして実行することによって、様々な処理を実行する。CPU 101は、複数であってもよい。CPU 101は、「通信制御装置」の「制御部」の一例である。
ネットワークインタフェース103は、例えば、光ケーブル、LAN(Local Area Network)ケーブル等の有線のネットワーク回線のケーブルを接続する回路及びポートである。ネットワークインタフェース103は、「通信制御装置」の「送信部」、「受信部」の一例である。
入出力装置インタフェース105は、入力装置、及び、出力装置とのインタフェースである。入力装置は、例えば、キーボード、マウス等のポインティングデバイスである。出力装置は、例えば、ディスプレイ、プリンタである。
なお、図4に示されるセキュリティ通信制御装置1のハードウェア構成は、一例であり、上記に限られず、実施の形態に応じて、適宜、構成要素の省略や置換、追加が可能である。例えば、セキュリティ通信制御装置1は、CPU 101の他に、DSP(Digital Signal Processor)、ネットワークプロセッサ等のプロセッサを備えてもよい。
コントローラ2は、例えば、専用又は汎用のコンピュータである。コントローラ2は、ハードウェア構成として、CPU、メモリ、ネットワークインタフェース、入出力インタフェース、外部記憶装置インタフェース等を備える。各ハードウェア構成要素については、概要はセキュリティ通信制御装置1と同様であり、説明を省略する。ただし、コントローラ2は、外部記憶装置に、OpenFlowコントローラ用プログラムと、セキュア通信設定プログラムとを記憶する。OpenFlowコントローラ用プログラムは、OpenFlowによって定義されているOpenFlowコントローラとしての処理を実行させるためのプログラムである。セキュア通信設定プログラムは、セキュア通信の設定に係る処理のためのプログラムである。コントローラ2のCPUは、「通信装置」の「制御部」、「受信部」の一例である。コントローラ2のネットワークインタフェースは、「通信装置」の「送信部」、「受信部」の一例である。
通信端末4は、例えば、PC、スマートフォン、携帯電話端末、タブレット端末等である。通信端末4は、ハードウェア構成として、CPU、メモリ、ネットワークインタフェース、入出力装置、外部記憶装置等を備える。各ハードウェア構成要素については、概要はセキュリティ通信制御装置1と同様であり、説明を省略する。通信端末4は、外部記憶装置に、セキュア通信利用プログラムを記憶する。セキュア通信利用プログラムは、通信端末4が、送信元又は宛先としてセキュア通信を利用する場合の処理のためのプログラムである。通信端末4のCPUは、「通信装置」の「制御部」、「受信部」の一例である。通信端末4のネットワークインタフェースは、「通信装置」の「送信部」、「受信部」の一例である。
図5は、スイッチ3のハードウェア構成の一例を示す図である。スイッチ3は、例えば、SDNスイッチである。スイッチ3は、例えば、CPU 301、メモリ302、ネットワークインタフェース303、パケット転送装置304を備える。CPU 301、メモリ302、ネットワークインタフェース303の説明は、セキュリティ通信制御装置1のCPU 101、メモリ102、ネットワークインタフェース103と同様であるため省略する。スイッチ3のメモリ302には、OpenFlowスイッチ用プログラムが格納されている。OpenFlowスイッチ用プログラムは、OpenFlowによって定義されているOpenFlowスイッチとしての処理を実行させるためのプログラムである。
スイッチ3は、ネットワークインタフェース303を複数備える。パケット転送装置3
04は、例えば、スイッチ回路であって、複数のネットワークインタフェース303間のパケット転送を行う。
なお、図5に示されるスイッチ3のハードウェア構成は、一例であり、スイッチ3のハードウェア構成は、図5に示されるものに限定されない。スイッチ3のCPU 301は、「通信装置」の「制御部」、「受信部」の一例である。
図6は、セキュリティ通信制御装置1の機能構成の一例を示す図である。セキュリティ通信制御装置1は、機能構成として、通信部11、経路管理部12、通信端末指示部13、通信経路情報テーブル14、セキュア通信カウンタ15を備える。通信部11は、ネットワークインタフェース103に相当する機能構成である。経路管理部12、通信端末指示部13、通信経路情報テーブル14、セキュア通信カウンタ15は、セキュリティ通信制御装置1のCPU 101がセキュア通信制御プログラムを実行することによって達成される機能構成である。通信部11は、「通信制御装置」の「受信部」、「送信部」の一例である。
経路管理部12は、セキュア通信の経路を確立又は解放するための処理を行う。より具体的には、経路管理部12は、通信部11を通じて、通信端末4からセキュア通信確立依頼を受信する。セキュア通信確立依頼は、セキュア通信の要求が発生した、セキュア通信の送信元の通信端末4からセキュリティ通信制御装置1に宛てて送信される。セキュア通信確立依頼には、例えば、送信元の通信端末4と宛先の通信端末4との情報が含まれる。セキュア通信確立依頼に含まれる、送信元の通信端末4と宛先の通信端末4との情報は、例えば、送信元端末及び宛先端末の識別情報である。通信端末4の識別情報は、例えば、IPアドレスである。
セキュア通信確立依頼を受信すると、経路管理部12は、送信元の通信端末4から宛先の通信端末4までの経路情報を取得し、セキュア通信設定依頼をコントローラ2に送信する。セキュア通信設定依頼には、セキュア通信を識別するためのセキュア通信IDと、該当のセキュア通信のパケットに関する情報と、が含まれる。セキュア通信IDは、経路管理部12によって、セキュア通信カウンタ15から取得される。セキュア通信設定依頼に含まれる、該当のセキュア通信のパケットに関する情報の詳細は、後述される。経路管理部12は、「通信制御装置」の「制御部」の一例である。セキュア通信確立依頼は、「通信の要求」の一例である。
通信端末指示部13は、通信部11を通じて、セキュア通信の送信元及び宛先となる通信端末4に対して、セキュア通信設定依頼を送信する。通信端末4に送信されるセキュア通信設定依頼は、コントローラ2に対して送信されるセキュア通信設定依頼と含まれる情報が異なる。
通信端末4に送信されるセキュア通信設定依頼には、例えば、セキュア通信ID、送信元及び宛先の通信端末4の識別情報、ヘッダ内における確認位置、ダミーパケットの値等である。通信端末4の識別情報は、例えば、IPアドレスである。通信端末4の識別情報は、宛先の通信端末4がセキュア通信のパケットをフィルタリングするために用いられる。
経路管理部12は、通信部11を通じて、送信元の通信端末4からセキュア通信の終了通知を受信する。セキュア通信の終了通知を受信した場合には、経路管理部12は、コントローラ2に、セキュア通信開放依頼を送信する。セキュア通信開放依頼には、開放対象のセキュア通信IDが含まれる。また、経路管理部12は、通信端末指示部13に、宛先の通信端末4へのセキュア通信開放依頼の送信を指示する。
また、経路管理部12は、送信元の通信端末4からセキュア通信の終了通知を受信した場合には、通信経路情報テーブル14の該当エントリを更新する。セキュア通信の終了通知を受信した場合の通信経路情報テーブル14の更新は、後述される。経路管理部12は、通信経路情報テーブル14の該当エントリの更新が終了すると、送信元の通信端末4に、セキュア通信の開放処理の終了を通知する。
セキュア通信カウンタ15は、セキュア通信を識別するためのセキュア通信IDのカウンタである。通信端末4からセキュア通信確立依頼を受信した時点のセキュア通信カウンタ15が示す値が、該当のセキュア通信のセキュア通信IDとなる。セキュア通信カウンタ15は、経路管理部12によってカウンタ値が読み出される度に、経路管理部12によって1加算された値に更新される。
図7は、セキュリティ通信制御装置1の通信経路情報テーブル14の一例を示す図である。通信経路情報テーブル14は、通信システム100内の各2拠点間の経路情報と、セキュア通信に関する情報とを格納するテーブルである。通信経路情報テーブル14は、メモリ102に記憶される。通信経路情報テーブル14は、経路管理部12によって管理される。通信経路情報テーブル14のエントリには、例えば、送信元端末の識別情報、宛先端末の識別情報、セキュア通信ID、経路上の通信装置の識別情報、確認位置、ダミーの値、の項目が含まれる。
「送信元端末」、「宛先端末」には、例えば、送信元又は宛先の通信端末4のIPアドレスが用いられる。なお、図7では、便宜上、「送信元端末」、「宛先端末」には、IPアドレスの代わりに、装置名が用いられている。
「セキュア通信ID」には、該当のセキュア通信のセキュア通信確立依頼の受信時に、セキュア通信カウンタ15が保持する値が格納される。セキュア通信IDは、通信システム100において、重複しないように設定される。第1実施形態では、送信元と宛先との通信端末4の組合せに対してセキュア通信IDが割り当てられる。したがって、第1実施形態では、送信元IPアドレスと宛先IPアドレスとが、フロー識別情報として用いられる。また、第1実施形態では、1つのセキュア通信は、1つのフローとして識別される。
「通信装置1」、「通信装置2」、「通信装置3」、...には、送信元の通信端末4に近い順で経路上の通信装置の識別情報が格納される。送信元の通信端末4と宛先の通信端末4との間の経路は、例えば、予め通信経路情報テーブル14に登録されていてもよい。または、経路管理部12が、通信端末4からセキュア通信確立依頼を受信した場合に、コントローラ2のルーティングの機能によって算出された経路をコントローラ2から取得してもよい。
経路上の通信装置の識別情報は、例えば、IPアドレス、装置名等のいずれかが用いられる。図7に示される例では、便宜上、経路上の通信装置の識別情報として、装置名が格納されている。通信装置の装置名“OFSW”は、OpenFlowスイッチであるスイッチ3を示す。通信装置の装置名“extNW”は、外部ネットワークを示す。
「確認位置」には、該当のセキュア通信のパケットのヘッダ内の、ペイロード内の本来のアドレスの挿入位置を示す情報に用いられるビット列の位置を示す情報が含まれる。ヘッダ内の宛先アドレスのフィールドは、32ビット(4バイト)のサイズである。例えば、「確認位置」に「宛先アドレスの1バイト目」が格納されている場合には、ペイロード内の本来の宛先アドレスの挿入位置を示す情報には、ヘッダ内の宛先アドレスのフィールドの1バイト目の8ビットが用いられていることが示される。「確認位置」は、該当のセ
キュア通信のセキュア通信確立依頼が受信された場合に、経路管理部12によって、ランダムに決定される。すなわち、セキュア通信ごとに「確認位置」が決定される。
「ダミーの値」には、「確認位置」によって示されるペイロード内の位置に格納される、ダミーパケットであることを示す値が格納される。ダミーパケットであることを示す値は、例えば、通信システム100で予め決められた値を、セキュア通信間で統一して用いてもよい。または、ダミーパケットであることを示す値は、セキュア通信ごとに、経路管理部12が決定してもよい。図7に示される例では、ダミーパケットであることを示す値は、0(32ビットがすべて0)である。
送信元の通信端末4からセキュア通信の終了通知が受信された場合には、セキュア通信の終了通知に含まれるセキュア通信IDに該当するエントリの「セキュア通信ID」、「確認位置」、「ダミーの値」に格納される値が削除される。
図8は、コントローラ2の機能構成の一例を示す図である。コントローラ2は、機能構成として、通信部21、パケット操作部22、スイッチ制御部23、宛先判定テーブル24を備える。通信部21は、ネットワークインタフェースに相当する機能構成である。パケット操作部22、宛先判定テーブル24は、コントローラ2のCPUが外部記憶装置に記憶されているセキュア通信設定プログラムを実行することによって達成される機能構成である。通信部21は、「通信装置」の「送信部」、「受信部」の一例である。
パケット操作部22は、通信部21を通じて、セキュリティ通信制御装置1から、セキュア通信設定依頼、セキュア通信開放依頼を受信する。パケット操作部22は、セキュア通信設定依頼を受信した場合には、セキュア通信設定依頼に含まれる情報を宛先判定テーブル24に登録する。また、パケット操作部22は、セキュア通信設定依頼に含まれる情報をスイッチ制御部23に出力する。パケット操作部22は、セキュア通信開放依頼を受信した場合には、セキュア通信開放依頼に含まれるセキュア通信IDに該当する宛先判定テーブル24のエントリを削除し、セキュリティ通信制御装置1に応答を送信する。
宛先判定テーブル24は、セキュア通信のパケットに関する処理内容を格納する。宛先判定テーブル24は、コントローラ2のメモリ内に記憶される。宛先判定テーブル24は、パケット操作部22によって管理される。宛先判定テーブル24の詳細は、後述される。
スイッチ制御部23は、コントローラ2のCPUが外部記憶装置に格納されるOpenFlowコントローラ用プログラムを実行することによって達成される機能構成である。スイッチ制御部23は、パケット操作部22から入力されるセキュア通信設定依頼に含まれる情報に基づいて、セキュア通信のパケットの受信時の動作を対象のスイッチ3に設定する。
OpenFlowでは、スイッチ3は、フローテーブルに従ってパケットを転送する。フローテーブルは、処理対象となるパケットの条件と、条件に該当したパケットの処理内容とが定義されたテーブルである。コントローラ2は、FlowModメッセージを用いることによって、スイッチ3にフローテーブルのエントリを通知し、該エントリをフローテーブルに登録させることができる。また、OpenFlowでは、スイッチ3からコントローラ2へ、受信したパケットの処理を問い合わせたり、依頼したりできるPacketInメッセージがある。
第1実施形態では、セキュア通信のパケットは、ヘッダ内の宛先アドレスが同一フロー内でバラバラの値になるように、本来のアドレスとは異なる情報で書き換えられている。
そのため、スイッチ3がセキュア通信のパケットを中継する際には、本来の宛先アドレスにパケットを転送するために、スイッチ3には、ペイロード内から本来の宛先アドレスを抽出することが求められる。
しかしながら、OpenFlowのフローテーブルにおいて、パケットの転送先を指定するコマンドは用意されているが、パケットのペイロードから本来のアドレスを抽出する処理を定義するコマンドは用意されていない。
そのため、第1実施形態では、スイッチ制御部23は、セキュア通信のパケットを受信した場合には、コントローラ2に該パケットを含むPacketInメッセージを送信するようにスイッチ3に指示する。より具体的には、スイッチ制御部23は、処理対象のパケットの条件を、セキュア通信のパケットとし、条件に該当したパケットの処理内容を、PacketInメッセージの送信とする、フローエントリをスイッチ3に送信する。該フローエントリは、FlowModメッセージによって送信される。PacketInメッセージには、PacketInメッセージ送信を指示するフローエントリの処理対象の条件に該当したパケットを含めることができる。したがって、スイッチ制御部23は、スイッチ3に、セキュア通信のパケットを含むPacketInメッセージの送信を指示する。
スイッチ3からの、セキュア通信のパケットを含むPacketInメッセージは、通信部21を通じて、パケット操作部22に受信される。パケット操作部22は、セキュア通信のパケットを含むPacketInメッセージを受信すると、宛先判定テーブル24に基づいて、パケットの本来のアドレスに応じた転送先を取得する。パケット操作部22は、取得した転送先へのパケットの転送を指示するPacketOutメッセージを該当のスイッチ3に送信する。PacketOutメッセージは、PacketInメッセージに対する応答であって、スイッチ3にパケットの出力を指示するメッセージである。また、PacketOutメッセージには、スイッチ3に出力させるパケットを含めることができるので、パケット操作部22は、PacketOutメッセージにパケットを含める。
また、スイッチ制御部23は、セキュア通信開放依頼が受信された場合には、各スイッチ3に対して、開放対象のセキュリティ通信に係るPacketInメッセージの送信の設定の解除指示を送信する。PacketInメッセージの送信の設定の解除指示は、例えば、FlowModメッセージによって送信される。パケット操作部22、スイッチ制御部23は、「第2のパケットが受信された場合に、前記第2のパケットのペイロード内の第1の情報に基づいて、前記第2のパケットの転送先を判定する制御部」の一例である。
図9は、コントローラ2の宛先判定テーブル24の一例である。宛先判定テーブル24は、セキュア通信のパケットに対する処理内容を記憶する。宛先判定テーブル24のエントリには、セキュア通信ID、OpenFlowスイッチ、送信元、転送先、確認位置、ダミーの値、動作種別の項目が含まれる。宛先判定テーブル24は、OpenFlowスイッチ、送信元の項目の値をキーとして検索される。
「セキュア通信ID」には、該エントリの対象となるセキュア通信のセキュア通信IDが格納される。「OpenFlowスイッチ」には、該エントリの対象となるスイッチ3の識別情報が格納される。「送信元」には、該エントリの対象のセキュア通信の送信元端末の識別情報が格納される。「転送先」には、該エントリの対象のセキュア通信のパケットの、該エントリの対象のスイッチ3からの転送先となる装置の識別情報が格納される。宛先判定テーブル24で用いられる、スイッチ3、通信端末4の識別情報は、IPアドレ
ス、装置名等のいずれであってもよい。図9に示される例では、スイッチ3、通信端末4の識別情報として、装置名が使用されている。
「確認位置」には、該エントリの対象のセキュア通信におけるパケットのヘッダ内の確認位置を示す情報が格納される。「ダミーの値」には、「確認位置」によって示されるペイロード内の位置に格納される、ダミーパケットであることを示す値が格納される。
「動作種別」には、「中継」、「発側」、「受側」のいずれかを示す値が格納される。「動作種別」が「中継」である場合には、パケット操作部22は、セキュア通信のパケットを通知するPacketInメッセージの送信元のスイッチ3に対して、該パケットの転送先の情報を含むPacketOutメッセージを送信する。PacketOutメッセージで通知される、パケットの転送先の情報は、PacketInメッセージで通知されたセキュア通信のパケットに該当する宛先判定テーブル24の「転送先」に格納される情報である。
「動作種別」が「受側」である場合には、パケット操作部22は、PacketInメッセージで通知されたパケットについて、以下の処理を行う。この場合には、PacketInメッセージに含まれるパケットは、セキュア通信のフォーマットのパケットである。パケット操作部22は、PacketInメッセージに含まれるパケットについて、ペイロードに格納されている宛先アドレスでヘッダ内の宛先アドレスを書き換え、ペイロードに格納されている宛先アドレスを削除する。すなわち、「動作種別」が「受側」である場合には、パケット操作部22は、セキュア通信のフォーマットのパケットを通常のフォーマットのパケットに変換する処理を行う。パケット操作部22は、通常のフォーマットに変換されたパケットと、該パケットの転送先の情報とを含むPacketOutメッセージをPacketInメッセージの送信元のスイッチ3に送信する。
「動作種別」が「発側」である場合には、パケット操作部22は、PacketInメッセージで通知されたパケットについて、以下の処理を行う。この場合には、PacketInメッセージに含まれるパケットは、通常の通信のフォーマットのパケットである。パケット操作部22は、PacketInメッセージに含まれるパケットについて、乱数を算出し、ヘッダ内の宛先アドレスのフィールドに算出した乱数を格納する。また、パケット操作部22は、ヘッダ内の確認位置のビット列の値に対応するペイロード内の位置に、ヘッダの宛先アドレスのフィールドに格納されていたIPアドレスを挿入する。
すなわち、「動作種別」が「発側」である場合には、パケット操作部22は、通常のフォーマットのパケットをセキュア通信のフォーマットのパケットに変換する処理を行う。パケット操作部22は、セキュア通信のフォーマットに変換されたパケットと、該パケットの転送先の情報とを含むPacketOutメッセージをPacketInメッセージの送信元のスイッチ3に送信する。
宛先判定テーブル24のエントリに格納される情報は、セキュリティ通信制御装置1からのセキュア通信設定依頼に含まれている。すなわち、セキュリティ通信制御装置1からのセキュア通信設定依頼に含まれるセキュア通信のパケットに関する情報には、第1実施形態では、セキュア通信ID、スイッチ3の識別情報、送信元の通信端末4の識別情報、転送先の装置の識別情報、確認位置、ダミーの値、動作種別が含まれる。
例えば、図9に示される宛先判定テーブル24の一行目のエントリは、「OpenFlowスイッチ」がスイッチ#1、「送信元」が通信端末#Aである。したがって、一行目のエントリは、スイッチ#1から、送信元が通信端末#Aであるパケットを含むPacketInメッセージを受信した場合の、コントローラ2の処理を示すエントリである。
一行目のエントリは、「動作種別」が「中継」、「転送先」がスイッチ#2である。したがって、一行目のエントリに合致するセキュア通信のパケットに対して、パケット操作部22は、該パケットの転送先としてスイッチ#2を通知するPacketOutメッセージをPacketInメッセージの送信元のスイッチ#1に通知する。
図9に示される宛先判定テーブル24の二行目のエントリは、「OpenFlowスイッチ」がスイッチ#2、「送信元」が通信端末#Aである。したがって、二行目のエントリは、スイッチ#2から、送信元が通信端末#Aであるパケットを含むPacketInメッセージを受信した場合の、コントローラ2の処理を示すエントリである。
二行目のエントリは、「動作種別」が「受側」、「転送先」がヘッダの宛先アドレス、「確認位置」が「宛先アドレスの1バイト目」である。したがって、パケット操作部22は、二行目のエントリに合致するパケットのペイロードの、ヘッダの宛先アドレスの1バイト目の値に相当する位置から本来の宛先アドレスを取得する。パケット操作部22は、該パケットのヘッダ内の宛先アドレスのフィールドを、ペイロードから取得した本来の宛先アドレスに書き換える。また、ペイロード内に挿入されていた本来のアドレスを削除する。
次に、パケット操作部22は、変換後のパケットの転送先として、変換後のパケットのヘッダ内の宛先アドレスと、変換後のパケットを含むPacketOutメッセージをPacketInメッセージの送信元のスイッチ#2に通知する。なお、PacketInメッセージによって通知されたパケットの、ヘッダ内の確認位置によって示されるペイロード内の位置に、ダミーの値が格納されている場合には、該パケットは廃棄される。
図9に示される宛先判定テーブル24の三行目のエントリは、「OpenFlowスイッチ」がスイッチ#3、「送信元」が通信端末#Aである。したがって、三行目のエントリは、スイッチ#3から、送信元が通信端末#Aであるパケットを含むPacketInメッセージを受信した場合の、コントローラ2の処理を示すエントリである。
三行目のエントリは、「動作種別」が「送側」、「転送先」が通信端末#B、「確認位置」が「宛先アドレスの1バイト目」である。したがって、パケット操作部22は、三行目のエントリに合致するパケットについて、ヘッダの宛先アドレスのフィールドに乱数を格納し、ヘッダの宛先アドレスの1バイト目の確認位置のビット列の値に対応するペイロード内の位置に、本来の宛先アドレスを挿入する。
次に、パケット操作部22は、変換後のパケットの転送先として、通信端末#Bと、変換後のパケットとを含むPacketOutメッセージを、PacketInメッセージの送信元のスイッチ#3に通知する。また、パケット操作部22は、所定の割合で、ダミーパケットを生成して、転送先として通信端末#Bと、ダミーパケットとを含むPacketOutメッセージを、PacketInメッセージの送信元のスイッチ#3に通知する。宛先判定テーブル24は、「通信装置」の「記憶部」の一例である。
図10は、スイッチ3の機能構成の一例を示す図である。スイッチ3は、機能構成として、Cプレーン通信部31、Dプレーン通信部32、転送先設定部33、パケット転送部34、パケット転送テーブル35を備える。Cプレーン通信部31、Dプレーン通信部32は、それぞれ、ネットワークインタフェース303に相当する。Cプレーン通信部31は、コントロールプレーンのインタフェースである。Dプレーン通信部32は、データプレーンのインタフェースである。
転送先設定部33、パケット転送部34、パケット転送テーブル35は、CPU 301が外部記憶装置に記憶されているOpenFlowスイッチ用プログラムを実行することによって達成される機能構成である。
転送先設定部33は、Cプレーン通信部31を通じて、コントローラ2からのFlowModメッセージ、PacketOutメッセージを受信する。コントローラ2からFlowModメッセージを受信した場合には、転送先設定部33は、FlowModメッセージに含まれるフローエントリをフローテーブル(図示せず)に登録する。コントローラ2からPacketOutメッセージを受信した場合には、転送先設定部33は、PacketOutメッセージによって出力が指示されたパケットと、該パケットの転送先とを、パケット転送部34に出力する。FlowModメッセージにフローエントリの削除指示が含まれている場合には、転送先設定部33は、フローテーブルから該当のエントリを削除する。
また、転送先設定部33は、パケット転送部34からPacketInメッセージの送信の指示の入力を受ける。転送先設定部33は、パケット転送部34からの指示に従って、PacketInメッセージを生成し、Cプレーン通信部31を通じて、コントローラ2にPacketInメッセージを送信する。第1実施形態では、PacketInメッセージには、PacketInメッセージの送信の契機となるパケットが含まれることとする。
パケット転送部34は、Dプレーン通信部32を通じて、データプレーンを流れるパケットを受信する。パケット転送部34は、フローテーブルから、受信したパケットの転送先を取得して、転送先に応じたインタフェースからパケットを出力する。フローテーブルにおいて、PacketInメッセージの送信が設定されている場合には、パケット転送部34は、転送先設定部33に、PacketInメッセージの送信を指示する。
図11は、スイッチ3のパケット転送テーブル35の一例である。パケット転送テーブル35は、セキュア通信のパケットの転送先の情報を保持するテーブルである。パケット転送テーブル35は、第1実施形態では、フローテーブルに含まれるフローエントリのうち、セキュア通信に関するフローエントリである。すなわち、第1実施形態では、パケット転送テーブル35は、フローテーブルの一部である。パケット転送テーブル35は、スイッチ3のメモリ302に格納されている。パケット転送テーブル35は、転送先設定部33によって管理される。
パケット転送テーブル35のエントリには、送信元、宛先、転送先の項目が含まれる。それぞれ送信元、宛先、転送先となる装置の識別情報が格納される。装置の識別情報は、IPアドレスが用いられる。図11では、装置の識別情報として、便宜上、装置名が用いられている。コントローラ2へPacketInメッセージを送信する場合には、転送先がコントローラ2となる。
パケット転送テーブル35は、第1実施形態では、フローテーブルの一部である。そのため、パケット転送テーブル35のエントリにおいて、処理対象のパケットの条件に該当するのは、「送信元」と「宛先」との項目である。条件に合致するパケットに対する処理に該当するのは、「転送先」の項目である。
図12は、通信端末4の機能構成の一例を示す図である。通信端末4は、機能構成として、通信部41、パケット操作部42、通信管理部43、セキュリティ通信管理テーブル44を含む。通信部41は、ネットワークインタフェースに相当する。パケット操作部42、通信管理部43、セキュリティ通信管理テーブル44は、CPUが外部記憶装置に記
憶されているセキュア通信利用プログラムを実行することによって達成される機能構成である。
通信管理部43は、通信部41を通じて、セキュリティ通信制御装置1に対する送受信を行う。通信端末4が送信元である場合には、通信管理部43は、例えば、アプリケーションからのセキュア通信の要求を受けて、セキュリティ通信制御装置1にセキュア通信確立依頼を送信する。セキュア通信確立依頼には、送信元として自通信端末4の識別情報と宛先の通信端末4の識別情報とが含まれる。
また、通信管理部43は、通信端末4が送信元である場合には、例えば、アプリケーションからのセキュア通信の終了を受けて、セキュリティ通信制御装置1にセキュア通信の終了を通知する。セキュア通信の終了通知には、セキュア通信IDが含まれる。
通信端末4が送信元又は宛先のいずれの場合でも、通信管理部43は、通信部41を通じて、セキュリティ通信制御装置1からセキュア通信設定依頼及びセキュア通信開放依頼を受信する。セキュア通信設定依頼には、セキュア通信ID、送信元及び宛先の識別情報、確認位置、ダミーの値が含まれている。通信管理部43は、受信したセキュア通信設定依頼に含まれる情報を、セキュリティ通信管理テーブル44に登録する。セキュア通信開放依頼には、セキュア通信IDが含まれている。通信管理部43は、セキュア通信開放依頼を受信すると、セキュリティ通信管理テーブル44の対象のセキュア通信IDに該当するエントリを削除する。
パケット操作部42は、パケットの送信処理又は受信処理を行う。セキュア通信において、通信端末4が送信元として動作する場合には、パケット操作部42は、乱数を算出し、ヘッダ内の宛先アドレスのフィールドに算出した乱数を格納する。また、パケット操作部22は、ヘッダ内の宛先フィールドに格納されていた本来の宛先アドレスを、ヘッダ内の確認位置のビット列の値に相当するペイロードの位置に挿入する。ヘッダ内の確認位置は、セキュリティ通信管理テーブル44から取得される。パケット操作部42は、セキュア通信のフォーマットに変換したパケットを、通信部41を通じて、宛先の通信端末4に送信する。
セキュア通信において、通信端末4が宛先として動作する場合には、パケット操作部42は、通信部41を通じて、セキュア通信のフォーマットのパケットを受信する。パケットの送信元アドレスがセキュリティ通信管理テーブル44に登録されているパケットを受信した場合に、パケット操作部42は、受信したセキュア通信のフォーマットのパケットからデータを取得して、アプリケーションに出力する。具体的には、パケット操作部42は、ヘッダを削除し、パケットのヘッダの確認位置のビット列の値に相当するペイロード内の位置から本来の宛先アドレスを削除してえられるデータをアプリケーションに出力する。ヘッダの確認位置は、セキュリティ通信管理テーブル44から取得される。
図13は、セキュリティ通信管理テーブル44の一例である。セキュリティ通信管理テーブル44は、通信端末4が行っているセキュア通信に関する情報を保持するテーブルである。セキュリティ通信管理テーブル44は、通信端末4のメモリに格納されている。セキュリティ通信管理テーブル44は、通信管理部43によって管理されている。
セキュリティ通信管理テーブル44のエントリには、セキュア通信ID、送信元、宛先、確認位置、ダミーの値、の項目が含まれる。「送信元」、「宛先」には、それぞれ、送信元、宛先となる通信端末4の識別情報が格納される。通信端末4が送信元である場合には、「送信元」に自装置の識別情報が格納されてもよいし、「送信元」が空欄であっても
よい。通信端末4が宛先である場合には、「宛先」に自装置の識別情報が格納されてもよいし、「宛先」が空欄であってもよい。
セキュリティ通信管理テーブル44のエントリの、セキュア通信ID、送信元、宛先、確認位置、ダミーの値、の項目の値は、セキュリティ通信制御装置1からのセキュア通信設定依頼に含まれている。
<処理の流れ>
図14A、図14B、図14C、及び、図14Dは、セキュリティ通信制御装置1の経路管理部12の処理のフローチャートの一例である。図14A〜図14Dに示される処理は、セキュリティ通信制御装置1が通信端末4からの通信を受信した場合に開始される。図14A〜図14Dに示される処理の実行主体は、セキュア通信制御プログラムを実行するCPU 101であるが、便宜上、機能構成である経路管理部12を主体として説明する。
OP1では、経路管理部12は、通信部11を通じて、通信端末4からの通信を受信する。OP2では、経路管理部12は、通信端末4から受信した通信の内容を解析する。通信端末4からの通信の内容がセキュア通信確立依頼である場合には(OP2:確立依頼)、処理がOP3に進む。通信端末4からの通信の内容がセキュア通信の終了通知である場合には(OP2:終了通知)、処理が図14DのOP21に進む。
図14AのOP3からOP9の処理、図14Bの処理、図14Cの処理は、通信端末4からセキュア通信確立依頼を受信した場合の処理である。OP3では、経路管理部12は、通信経路情報テーブル14を更新する。
より具体的には、経路管理部12は、セキュア通信確立依頼に含まれる送信元及び宛先の通信端末4の識別情報をキーとして、通信経路情報テーブル14を検索する。経路管理部12は、セキュア通信確立依頼に含まれる送信元及び宛先の通信端末4の識別情報に合致するエントリを検出し、セキュア通信IDをセキュア通信カウンタ15から取得し、検出したエントリの「通信ID」に格納する(図7参照)。また、経路管理部12は、通信経路情報テーブル14の検出したエントリの「確認位置」の値を決定し、格納する。また、経路管理部12は、通信経路情報テーブル14の検出したエントリの「ダミーの値」に、所定の値を格納する。
OP4では、経路管理部12は、通信経路情報テーブル14の検出したエントリの「通信装置1」の値を参照する。
OP5では、経路管理部12は、通信経路情報テーブル14の検出したエントリの「通信装置N」の値が外部ネットワークを示す値であるか否かを判定する。Nは初期値1であり、1ずつ加算される変数である。「通信装置N」の値が外部ネットワークを示す値である場合には(OP5:YES)、処理がOP6に進む。「通信装置N」の値が外部ネットワークを示す値でない場合には(OP5:NO)、処理がOP7に進む。
OP6では、「通信装置N」の値が外部ネットワークを示す値であるので、経路管理部12は、通信経路情報テーブル14の検出されたエントリにおける次の「通信装置」の値を参照する。変数Nは、1加算された値に更新される。その後、処理がOP5に進む。
OP7では、「通信装置N」の値が外部ネットワークを示す値でないので、経路管理部12は、通信経路情報テーブル14の検出されたエントリにおける、前段の「通信装置N−1」の値が外部ネットワークを示す値であるか否かを判定する。前段の「通信装置N−
1」の値が外部ネットワークを示す値である場合には(OP7:YES)、処理がOP8に進む。前段の「通信装置N−1」の値が外部ネットワークを示す値でない場合には(OP7:NO)、処理が図14BのOP10に進む。
OP8では、経路管理部12は、「通信装置N」の装置の「動作種別」を「発側」と判定し、コントローラ2に、「動作種別」が「発側」を含むセキュア通信設定依頼を送信する。OP8で送信されるセキュア通信設定依頼には、セキュア通信ID、対象のスイッチ3の識別情報、送信元の通信端末4の識別情報、転送先の装置の識別情報、ヘッダ内の確認位置、ダミーの値、動作種別として「発側」が含まれる。セキュア通信設定依頼に含まれる、セキュア通信ID、対象のスイッチ3の識別情報、送信元の通信端末4の識別情報、転送先の装置の識別情報、ヘッダ内の確認位置、ダミーの値は、それぞれ、通信経路情報テーブル14の検出されたエントリの、「通信ID」、「通信装置N」、「通信装置N+1」、「確認位置」、「ダミーの値」の項目に格納される値である。
すなわち、OP8の処理は、経路管理部12が、コントローラ2に、(1)該当のスイッチ3から該当のセキュア通信の全パケットについてPacketInメッセージを取得すること、(2)送信側の装置として通常のフォーマットのパケットをセキュア通信のフォーマットに変換すること、(3)変換後のパケットと転送先の情報とをスイッチ3にPacketOutメッセージで送信すること、を指示していることを意味する。
OP9では、経路管理部12は、コントローラ2からの応答を受信する。その後、処理が図14CのOP16に進む。
図14BのOP10では、経路管理部12は、通信経路情報テーブル14の検出されたエントリにおける次の「通信装置N+1」の値が、外部ネットワークを示す値であるかを判定する。「通信装置N+1」の値が外部ネットワークを示す値である場合には(OP10:YES)、処理がOP15に進む。「通信装置N+1」の値が外部ネットワークを示す値でない場合には(OP10:NO)、処理がOP11に進む。
OP11では、経路管理部12は、通信経路情報テーブル14の検出されたエントリにおける「通信装置N+1」の値が、スイッチ3であるかを判定する。「通信装置N+1」の値がスイッチ3である場合には(OP11:YES)、処理がOP12に進む。「通信装置N+1」の値がスイッチ3でない、すなわち、「通信装置N+1」に値が格納されていない場合には(OP11:NO)、処理が図14CのOP16に進む。
OP12では、経路管理部12は、「通信装置N」の装置の「動作種別」を「中継」と判定し、コントローラ2に、「動作種別」が「中継」を含むセキュア通信設定依頼を送信する。OP12で送信されるセキュア通信設定依頼には、セキュア通信ID、対象のスイッチ3の識別情報、送信元の通信端末4の識別情報、転送先の装置の識別情報、ヘッダ内の確認位置、ダミーの値、動作種別として「中継」が含まれる。
すなわち、OP12の処理は、経路管理部12が、コントローラ2に、(1)該当のスイッチ3から該当のセキュア通信の全パケットについてPacketInメッセージを取得すること、(2)転送先の情報をスイッチ3にPacketOutメッセージで送信すること、を指示していることを意味する。
OP13では、経路管理部12は、OP12において送信したセキュア通信設定依頼に対する応答をコントローラ2から受信する。OP14では、経路管理部12は、通信経路情報テーブル14の検出されたエントリにおける、次の「通信装置」の値を参照する。変数Nは、1加算された値に更新される。その後、処理が図14AのOP5に進む。
OP15では、経路管理部12は、「通信装置N」の装置の「動作種別」を「受側」と判定し、コントローラ2に、「動作種別」が「受側」を含むセキュア通信設定依頼を送信する。OP15で送信されるセキュア通信設定依頼には、セキュア通信ID、対象のスイッチ3の識別情報、送信元の通信端末4の識別情報、転送先の装置の識別情報、ヘッダ内の確認位置、ダミーの値、動作種別として「受側」が含まれる。
すなわち、OP15の処理は、経路管理部12が、コントローラ2に、(1)該当のスイッチ3から対象のセキュア通信の全パケットについてPacketInメッセージを取得すること、(2)受側装置として該当のセキュア通信のフォーマットのパケットを通常のフォーマットに変換すること、(3)変換後のパケットと、転送先の情報とをスイッチ3にPacketOutメッセージで送信すること、を指示していることを意味する。その後、処理がOP13に進む。
図14CのOP16では、経路管理部12は、通信経路情報テーブル14の検出されたエントリにおける「通信装置N+1」に値が格納されているか否かを判定する。「通信装置N+1」の値が格納されていない場合には(OP16:YES)、処理がOP17に進む。「通信装置N+1」に値が格納されている場合には(OP16:NO)、処理がOP20−1に進む。例えば、「通信装置N−1」の値が外部ネットワークであり、「通信装置N+1」の値がスイッチ3である場合には、OP16のNOに該当し、処理がOP20−1に進む。
OP17では、経路管理部12は、通信端末指示部13に対して、宛先の通信端末4にセキュア通信設定依頼を送信することを指示する。通信端末指示部13は、経路管理部12からの指示を受けて、宛先の通信端末4のセキュア通信設定依頼を送信する。通信端末4に送信されるセキュア通信設定依頼には、通信経路情報テーブル14の検出されたエントリにおける「送信元」、「宛先」、「セキュア通信ID」、「確認位置」、「ダミーの値」の項目の値が含まれる。
OP18では、経路管理部12は、OP15において送信したセキュア通信設定依頼に対する応答を宛先の通信端末4から受信する。
OP19では、経路管理部12は、通信端末指示部13に対して、送信元の通信端末4にセキュア通信設定依頼を送信することを指示する。通信端末4に送信されるセキュア通信設定依頼は、OP17において送信されるものと同じである。
OP20では、経路管理部12は、OP19において送信したセキュア通信設定依頼に対する応答を送信元の通信端末4から受信する。その後、図14Cに示される処理が終了する。
OP20−1では、経路管理部12は、通信経路情報テーブル14の検出されたエントリにおける、次の「通信装置」の値を参照する。変数Nは、1加算された値に更新される。その後、処理が図14AのOP5に進む。
図14Dに示される処理は、通信端末4から通信が、セキュア通信の終了通知である場合の処理である。OP21では、経路管理部12は、通信経路情報テーブル14から、セキュア通信の終了通知に含まれるセキュア通信IDに該当するエントリを検索する。
OP22では、経路管理部12は、OP21において検出された通信経路情報テーブル14のエントリに基づいて、経路上にスイッチ3が存在するか否かを判定する。経路上に
スイッチ3が存在する場合には(OP22:YES)、処理がOP23に進む。経路上にスイッチ3が存在しない場合には(OP22:NO)、処理がOP25に進む。
OP23では、経路管理部12は、コントローラ2に対して、セキュア通信開放依頼を送信する。セキュア通信開放依頼には、セキュア通信の終了通知に含まれるセキュア通信IDが含まれる。
OP24では、経路管理部12は、OP23において送信したセキュア通信開放依頼に対する応答をコントローラ2から受信する。
OP25では、経路管理部12は、通信端末指示部13に、宛先の通信端末4に対するセキュア通信開放依頼の送信を指示する。通信端末指示部13は、経路管理部12からの指示に従って、宛先の通信端末4にセキュア通信開放依頼を送信する。セキュア通信開放依頼には、セキュア通信の終了通知に含まれるセキュア通信IDが含まれる。
OP26では、経路管理部12は、OP25において送信したセキュア通信開放依頼に対する応答を宛先の通信端末4から受信する。
OP27では、経路管理部12は、OP21において検出された通信経路情報テーブル14のエントリの「セキュア通信ID」、「確認位置」、「ダミーの値」に格納される値を削除する。
OP28では、経路管理部12は、通信端末指示部13に、送信元の通信端末4に対するセキュア通信の解放処理終了の通知の送信を指示する。通信端末指示部13は、経路管理部12からの指示に従って、送信元の通信端末4にセキュア通信の解放処理終了の通知を送信する。その後、図14Dに示される処理が終了する。
図15A及び図15Bは、セキュリティ通信制御装置1からの通信を受信した場合の、コントローラ2のパケット操作部22の処理のフローチャートの一例である。図15A及び図15Bに示される処理は、コントローラ2がセキュリティ通信制御装置1からの通信を受信した場合に開始される。図15A及び図15Bに示される処理の実行主体は、セキュア通信設定プログラムを実行するコントローラ2のCPUであるが、便宜上、機能構成であるパケット操作部22を主体として説明する。
OP31では、パケット操作部22は、セキュリティ通信制御装置1からの通信を受信する。
OP32では、パケット操作部22は、セキュリティ通信制御装置1からの通信の内容を解析する。セキュリティ通信制御装置1からの通信の内容がセキュア通信設定依頼である場合には(OP32:設定依頼)、処理がOP33に進む。セキュリティ通信制御装置からの通信の内容がセキュア通信開放依頼である場合には(OP32:開放依頼)、処理が図15BのOP41に進む。
OP33からOP36の処理は、セキュリティ通信制御装置1からセキュア通信設定依頼を受信した場合の処理である。OP33では、パケット操作部22は、セキュア通信設定依頼に含まれる情報を、宛先判定テーブル24に登録する。セキュア通信設定依頼には、宛先判定テーブル24のエントリの項目である、セキュア通信ID、OpenFlowスイッチ、送信元、転送先、確認位置、ダミーの値、動作種別が含まれている。
OP34では、パケット操作部22は、セキュア通信設定依頼によって指定されるスイ
ッチ3に対して、セキュア通信設定依頼によって指定される送信元からのパケットについてPacketInメッセージを送信することを指示する。第1実施形態では、OP34では、FlowModメッセージが用いられる。FlowModメッセージには、フローエントリと該フローエントリの登録指示とが含まれる。フローエントリには、処理対象のパケットの条件としてセキュア通信設定依頼によって指定される送信元の通信端末4の識別情報と、条件に合致したパケットについての処理としてPacketInメッセージの送信とが含まれる。
OP35では、パケット操作部22は、OP34において送信した指示に対する応答を、スイッチ3から受信する。
OP36では、パケット操作部22は、セキュア通信設定依頼の応答として、セキュリティ通信制御装置1に、設定完了を通知する。その後、図15Aに示される処理が終了する。
図15BのOP41からOP45の処理は、コントローラ2がセキュリティ通信制御装置1からセキュア通信開放依頼を受信した場合の処理である。OP41では、パケット操作部22は、セキュア通信開放依頼に含まれるセキュア通信IDをキーとして宛先判定テーブル24を検索する。
OP42では、パケット操作部22は、セキュア通信開放依頼に含まれるセキュア通信IDに該当する宛先判定テーブル24のエントリに含まれる各スイッチ3に対して、PacketInメッセージの送信処理の終了を指示する。第1実施形態では、OP34で送信されたFlowModメッセージと同じ内容のフローエントリと、該フローエントリの削除指示とを含むFlowModメッセージが送信される。
OP43では、パケット操作部22は、OP42において送信した指示に対する応答を、スイッチ3から受信する。
OP44では、パケット操作部22は、宛先判定テーブル24から、セキュア通信開放依頼に含まれるセキュア通信IDに合致するエントリをすべて削除する。
OP45では、パケット操作部22は、セキュア通信開放依頼の応答として、セキュリティ通信制御装置1に、開放完了を通知する。その後、図15Bに示される処理が終了する。
図16A及び図16Bは、スイッチ3からPacketInメッセージを受信した場合の、コントローラ2のパケット操作部22の処理のフローチャートの一例である。図16A及び図16Bに示される処理は、コントローラ2がスイッチ3からのPacketInメッセージを受信した場合に開始される。図16A及び図16Bは、図15A及び図15と同様に、機能構成であるパケット操作部22を主体として説明される。
OP51では、パケット操作部22は、スイッチ3からのPacketInメッセージを受信する。
OP52では、パケット操作部22は、PacketInメッセージの送信元であるスイッチ3の識別情報と、PacketInメッセージに含まれるパケットの送信元IPアドレスとをキーに、宛先判定テーブル24を検索する。
OP53では、パケット操作部22は、OP52において検出された宛先判定テーブル
24のエントリの「動作種別」が「発側」であるか否かを判定する。「動作種別」が「発側」である場合には(OP53:YES)、処理がOP54に進む。「動作種別」が「発側」でない場合には(OP53:NO)、処理が図16BのOP61に進む。
OP54からOP59の処理は、OP52において検出された宛先判定テーブル24のエントリの「動作種別」が「発側」である場合の処理である。この場合には、PacketInメッセージに含まれているパケットは、セキュリティ通信のフォーマットのパケットではなく、通常のフォーマットのパケットである。
OP54では、パケット操作部22は、PacketInメッセージに含まれるパケットのヘッダ内の宛先アドレスのフィールドに格納されている宛先アドレスを一時保存する。
OP55では、パケット操作部22は、PacketInメッセージに含まれるパケットのヘッダ内の宛先アドレスのフィールドの値を乱数で置き換える。
OP56では、パケット操作部22は、置き換えられた宛先アドレスのフィールドの確認位置のビット列の値に相当するペイロード内の位置に、一時保存されている本来の宛先アドレスを挿入する。ヘッダ内の確認位置のビット列が示す値を、以降、DAとする。すなわち、OP56では、パケット操作部22は、ペイロードの先頭からDAバイト目に、本来の宛先アドレスを挿入する。
OP57では、パケット操作部22は、PacketInメッセージの送信元のスイッチ3から、PacketInメッセージに含まれるパケットのフローのパケットを所定数処理するごとに1つダミーパケットを生成する。ダミーパケットのヘッダ内の送信元アドレスは、PacketInメッセージに含まれるパケットのヘッダ内の送信元アドレスと同じである。ダミーパケットのヘッダ内の宛先アドレスは、乱数が格納される。
OP58では、パケット操作部22は、ペイロード内のDAバイト目にダミーパケットであることを示す値を格納する。なお、OP58においてDAは、ダミーパケットのヘッダ内の確認位置のビット列の値である。なお、OP57、OP58の処理は、ダミーパケットが生成されるタイミングで実行され、それ以外では、実行されない。
OP59では、パケット操作部22は、OP56の処理後のパケットを含み、転送先としてOP52において検出した宛先判定テーブル24のエントリの「転送先」を指定するPacketOutメッセージを送信する。PacketOutメッセージは、PacketInメッセージの送信元であるスイッチ3に送信される。OP57、OP58の処理が実行されている場合には、パケット操作部22は、ダミーパケットについても同様の処理を行う。その後、図16Aに示される処理が終了する。
図16BのOP61からOP66の処理は、OP52において検出された宛先判定テーブル24のエントリの「動作種別」が「受側」、又は、「中継」である場合の処理である。この場合には、PacketInメッセージに含まれているパケットは、セキュリティ通信のフォーマットのパケットである。
OP61では、パケット操作部22は、OP52において検出された宛先判定テーブル24のエントリの「動作種別」が「中継」であるか否かを判定する。「動作種別」が「中継」である場合には(OP61:YES)、処理がOP62に進む。「動作種別」が「中継」でない、すなわち、「動作種別」が「受側」である場合には(OP61:NO)、処理がOP63に進む。
OP62では、「動作種別」が「中継」であるので、パケット操作部22は、宛先判定テーブル24のエントリの「転送先」を転送先に指定するPacketOutメッセージをPacketInメッセージの送信元のスイッチ3に送信する。その後、図16Bに示される処理が終了する。
OP63からOP66の処理は、「動作種別」が「受側」である場合の処理である。OP63では、パケット操作部22は、ペイロードの先頭からDAバイト目の値が、ダミーパケットであることを示す値であるか否かを判定する。この場合のDAは、PacketInメッセージに含まれるパケットのヘッダ内の確認位置におけるビット列の値である。確認位置とダミーの値とは、OP52において検出された宛先判定テーブル24のエントリから取得される。
ペイロードの先頭からDAバイト目の値が、ダミーパケットであることを示す値である場合には(OP63:YES)、処理がOP66に進む。OP66では、PacketInメッセージに含まれるパケットはダミーパケットであるので、パケット操作部22は、該パケットを廃棄する。
ペイロードの先頭からDAバイト目の値が、ダミーパケットであることを示す値でない場合には(OP63:NO)、処理がOP64に進む。
OP64では、パケット操作部22は、ペイロードの先頭からDAバイト目に格納されているアドレスでヘッダ内の宛先アドレスのフィールドを書換、ペイロードの先頭からDAバイト目に格納されているアドレスを削除する。
OP65では、パケット操作部22は、宛先判定テーブル24のエントリの「転送先」を転送先に指定するPacketOutメッセージをPacketInメッセージの送信元のスイッチ3に送信する。PacketInメッセージには、OP64において処理されたパケットが格納される。その後、図16Bに示される処理が終了する。
図17は、スイッチ3の転送先設定部33のコントローラ2からの通信を受信した場合の処理のフローチャートの一例である。図17に示される処理は、スイッチ3がコントローラ2からの通信を受信した場合に開始される。図17に示される例の処理の実行主体は、OpenFlowスイッチ用プログラムを実行するスイッチ3のCPU 301であるが、便宜上、機能構成の転送先設定部33を主体として説明される。
OP71では、転送先設定部33は、Cプレーン通信部31を通じて、コントローラ2からの通信を受信する。
OP72では、転送先設定部33は、コントローラ2からの通信の内容を解析する。コントローラ2からの通信の内容がFlowModメッセージである場合には(OP72:FlowMod)、処理がOP74に進む。コントローラ2からの通信の内容がPacketOutメッセージである場合には(OP72:PacketOut)、処理がOP73に進む。
OP73では、転送先設定部33は、PacketOutメッセージで指定される転送先へPacketOutメッセージで指定されるパケットを出力するように、パケット転送部34に指示する。パケット転送部34は、PacketOutメッセージで指定される転送先へPacketOutメッセージで指定されるパケットを転送する。その後、図17に示される処理が終了する。
OP74では、転送先設定部33は、FlowModメッセージがフローエントリの登録指示を含むか否かを判定する。FlowModメッセージがフローエントリの登録指示を含む場合には(OP74:登録)、処理がOP75に進む。FlowModメッセージがフローエントリの削除指示を含む場合には(OP74:削除)、処理がOP77に進む。
OP75では、転送先設定部33は、FlowModメッセージに含まれるフローエントリをフローテーブルに登録する。OP76では、転送先設定部33は、Cプレーン通信部31を通じて、コントローラ2に設定完了を通知する。その後、図17に示される処理が終了する。
OP77では、転送先設定部33は、FlowModメッセージに含まれるフローエントリに合致するフローエントリをフローテーブルから削除する。OP78では、転送先設定部33は、Cプレーン通信部31を通じて、コントローラ2に設定解除完了を通知する。その後、図17に示される処理が終了する。
図18は、スイッチ3のパケット転送部34の、データプレーンでパケットを受信した場合の処理のフローチャートの一例である。図18に示される処理は、データプレーンでパケットを受信した場合に開始される。図18の処理も、図17と同様に、機能構成であるパケット転送部34を主体として説明される。
OP81では、パケット転送部34は、Dプレーン通信部32を通じてパケットを受信する。OP82では、パケット転送部34は、受信パケットの送信元アドレスをキーに、パケット転送テーブル35を検索する。
OP83では、パケット転送部34は、パケット転送テーブル35に、受信パケットの送信元アドレスに合致するエントリがあるか否かを判定する。パケット転送テーブル35に、受信パケットの送信元アドレスに合致するエントリがある場合には(OP83:YES)、処理がOP84に進む。パケット転送テーブル35に、受信パケットの送信元アドレスに合致するエントリがない場合には(OP83:NO)、処理がOP87に進む。
OP84では、パケット転送部34は、パケット転送テーブル35の受信パケットの送信元アドレスに合致するエントリがPacketInメッセージの送信を指示するものであるか否かを判定する。パケット転送テーブル35の受信パケットの送信元アドレスに合致するエントリがPacketInメッセージの送信を指示するものである場合には(OP84:YES)、処理がOP85に進む。パケット転送テーブル35の受信パケットの送信元アドレスに合致するエントリがPacketInメッセージの送信を指示するものでない場合には(OP84:NO)、処理がOP86に進む。
OP85では、パケット転送部34は、転送先設定部33にPacketInメッセージの送信を指示する。これによって、転送先設定部33はCプレーン通信部31を通じて、コントローラ2にPacketInメッセージを送信する。その後、図18に示される処理が終了する。
OP86では、パケット転送部34は、パケット転送テーブル35の受信パケットの送信元アドレスに合致するエントリによって示される転送先に、パケットを転送する。その後、図18に示される処理が終了する。
OP87では、パケット転送部34は、受信パケットの宛先アドレス、送信元アドレス等と合致するフローエントリに従って、パケットを転送する。その後、図18に示される
処理が終了する。
図19Aは、送信元としての通信端末4の処理のフローチャートの一例である。図19Aに示される処理は、例えば、通信端末4のアプリケーションからセキュアな通信に対する要求が発生すると開始される。図19Aに示される処理の実行主体は、通信端末4のCPUであるが、便宜上、CPUが外部記憶装置に記憶されるセキュア通信利用プログラムを実行することによって達成される機能構成である、パケット操作部42、通信管理部43を主体として説明される。
OP91では、通信管理部43は、例えば、アプリケーションからのセキュアな通信に対する要求の発生を検出する。
OP92では、通信管理部43は、通信部41を通じて、セキュリティ通信制御装置1に対して、セキュア通信確立依頼を送信する。セキュア通信確立依頼には、送信元アドレスと宛先アドレスとが含まれる。なお、セキュア通信確立依頼に含まれる送信元アドレスは、自装置のアドレスである。
OP93では、通信管理部43は、通信部41を通じて、セキュリティ通信制御装置1から、セキュア通信設定依頼を受信する。セキュア通信設定依頼には、セキュア通信ID、送信元アドレス、宛先アドレス、確認位置、ダミーの値が含まれている。OP94では、通信管理部43は、セキュア通信設定依頼に含まれる情報を、セキュリティ通信管理テーブル44に登録する。
OP95では、通信管理部43は、通信部41を通じて、セキュリティ通信制御装置1に、設定完了を通知する。
OP96では、パケット操作部42は、セキュア通信送信処理を行う。セキュア通信送信処理は、パケットをセキュア通信のフォーマットに変換して送信する処理である。セキュア通信送信処理の詳細は後述される。セキュア通信のパケットの送信が終了すると、処理がOP97に進む。
OP97では、通信管理部43は、通信部41を通じて、セキュリティ通信制御装置1に対して、セキュア通信の終了通知を送信する。セキュア通信の終了通知には、終了したセキュア通信のセキュア通信IDが含まれている。
OP98では、通信管理部43は、通信部41を通じて、セキュリティ通信制御装置1から、セキュア通信開放処理の終了通知を受信する。セキュア通信開放処理の終了通知には、セキュア通信IDが含まれている。
OP99では、通信管理部43は、セキュリティ通信管理テーブル44の、セキュア通信開放処理の終了通知に含まれるセキュア通信IDに該当するエントリを削除する。その後、図19Aに示される処理が終了する。
図19Bは、通信端末4のセキュリティ通信送信処理のフローチャートの一例である。OP101では、パケット操作部42は、変数nを1に設定する。変数nは、ダミーパケットの生成及び送信のタイミングを計るために用いられる。変数nは、1からNまでの値をとる。Nは、例えば、5である。Nの値は、例えば、通信システム100の管理者によって決定されてもよいし、符号化のアルゴリズムに依存して決定されてもよい。
OP102では、パケット操作部42は、送信パケットのヘッダ内の宛先アドレスのフ
ィールドを、乱数で置き換える。
OP103では、パケット操作部42は、送信パケットのペイロードの先頭からDAバイト目に、本来の宛先アドレスを挿入する。OP103におけるDAは、OP102でヘッダ内の宛先アドレスのフィールドに置き換えられた乱数の、確認位置のビット列の値である。確認位置は、セキュリティ通信管理テーブル44の該当エントリから取得される。
OP104では、パケット操作部42は、OP102、OP103の処理によってセキュア通信のフォーマットに変換されたパケットを、通信部41を通じて送信する。
OP105では、パケット操作部42は、送信対象のパケットが終了したか否かを判定する。送信対象のパケットが終了した場合には(OP105:YES)、図19Bに示される処理が終了し、処理が、図19AのOP97に進む。送信対象のパケットが残っている場合には(OP105:NO)、処理がOP106に進む。
OP106では、パケット操作部42は、変数nが最大値Nであるか否かを判定する。変数nが最大値Nである場合には(OP106:YES)、処理がOP108に進む。変数nが最大値Nでない場合には(OP106:NO)、処理がOP107に進む。
OP107では、変数nが最大値Nでないので、パケット操作部42は、変数nを1加算した値に更新する。その後、処理がOP102に進み、次の送信パケットについて処理が行われる。
OP108では、変数nが最大値Nであり、ダミーパケットの生成及び送信のタイミングであるので、パケット操作部42は、ダミーパケットを生成する。ダミーパケットのヘッダ内の宛先アドレスは乱数であり、送信元アドレスは自装置のアドレスである。
OP109では、パケット操作部42は、ダミーパケットのペイロードの先頭からDAバイト目に、ダミーパケットであることを示す値を挿入する。ダミーパケットであることを示す値は、セキュリティ通信管理テーブル44の該当エントリから取得される。OP109におけるDAは、ダミーパケットのヘッダ内の宛先アドレスのフィールド内の乱数の、確認位置のビット列の値である。確認位置は、セキュリティ通信管理テーブル44の該当エントリから取得される。
OP110では、パケット操作部42は、通信部41を通じて、ダミーパケットを送信する。その後、処理がOP101に進み、次のパケットについて処理が行われる。
図20は、宛先の通信端末4の、セキュリティ通信制御装置1からの通信を受信した場合の処理のフローチャートの一例である。図20に示される処理は、通信端末4がセキュリティ通信制御装置1からの通信を受信すると開始される。図20に示される処理の実行主体は、CPUであるが、便宜上、機能構成である通信管理部43を主体として説明する。
OP111では、通信管理部43は、通信部41を通じて、セキュリティ通信制御装置1からの通信を受信する。
OP112では、通信管理部43は、セキュリティ通信制御装置1からの通信内容を解析する。セキュリティ通信制御装置1からの通信内容が、自装置のアドレスを宛先アドレスとして含むセキュア通信設定依頼である場合には(OP112:設定依頼)、処理がOP113に進む。セキュリティ通信制御装置1からの通信内容がセキュア通信開放依頼で
ある場合には(OP112:開放依頼)、処理がOP115に進む。
セキュリティ通信制御装置1からの通信内容が、自装置のアドレスを宛先アドレスとして含むセキュア通信設定依頼でもセキュア通信開放依頼でもない場合には(OP112:
その他)、図20に示される処理が終了する。自装置のアドレスを宛先アドレスとして含むセキュア通信設定依頼でもセキュア通信開放依頼でもないセキュリティ通信制御装置1からの通信内容は、例えば、自装置のアドレスを送信元アドレスとして含むセキュア通信設定依頼である。
OP113では、通信管理部43は、セキュア通信設定依頼に含まれる情報を、セキュリティ通信管理テーブル44に登録する。セキュア通信設定依頼には、セキュア通信ID、宛先アドレス、送信元アドレス、確認位置、ダミーの値が含まれている。
OP114では、通信管理部43は、通信部41を通じて、セキュリティ通信制御装置1に、セキュア通信設定依頼の応答として、設定完了を通知する。その後、図20に示される処理が終了する。
OP115では、通信管理部43は、セキュア通信開放依頼に含まれるセキュア通信IDに合致するセキュリティ通信管理テーブル44のエントリを削除する。OP116では、通信管理部43は、セキュア通信開放依頼の応答として、通信部41を通じて、セキュリティ通信制御装置1に、セキュア通信の開放処理の終了を通知する。その後、図20に示される処理が終了する。
図21は、宛先の通信端末4の、送信元の通信端末4からの通信を受信した場合の処理のフローチャートの一例である。図21に示される処理は、通信端末4が、パケットを受信し、受信パケットの送信元アドレスがセキュリティ通信管理テーブル44に登録されている場合に開始される。図21に示される処理の実行主体は、CPUであるが、便宜上、機能構成であるパケット操作部42を主体として説明する。
OP121では、パケット操作部42は、通信部41を通じて、送信元アドレスがセキュリティ通信管理テーブル44に登録されているパケットを受信する。
OP122では、パケット操作部42は、受信パケットのペイロードの先頭からDAバイト目に格納されている値が、ダミーパケットであることを示す値であるか否かを判定する。OP122におけるDAは、受信パケットの送信元アドレスに合致するセキュリティ通信管理テーブル44のエントリの「確認位置」の値である。また、ダミーパケットであることを示す値も、受信パケットの送信元アドレスに合致するセキュリティ通信管理テーブル44のエントリの「ダミーの値」から取得される。
受信パケットのペイロードの先頭からDAバイト目に格納されている値が、ダミーパケットであることを示す値である場合には(OP122:YES)、処理がOP125に進む。受信パケットのペイロードの先頭からDAバイト目に格納されている値が、ダミーパケットであることを示す値でない場合には(OP122:NO)、処理がOP123に進む。
OP123では、パケット操作部42は、受信パケットのペイロードの先頭からDAバイト目に格納されている値が自装置のアドレスであるか否かを判定する。OP123におけるDAは、OP122におけるDAと同じ値である。受信パケットのペイロードの先頭からDAバイト目に格納されている値が自装置のアドレスである場合には(OP123:YES)、処理がOP124に進む。受信パケットのペイロードの先頭からDAバイト目
に格納されている値が自装置のアドレスでない場合には(OP123:NO)、処理がOP125に進む。
OP124では、パケット操作部42は、受信パケットのペイロードの先頭からDAバイト目に格納されているアドレスを削除し、受信パケットのペイロードを取り込む、例えば、パケット操作部42は、受信パケットのペイロードのデータを対象のアプリケーションに渡す。その後、図21に示される処理が終了する。
OP125では、受信パケットはダミーパケット、又は、他の装置宛ての通信のパケットであるので、パケット操作部42は、受信パケットを廃棄する。その後、図21に示される処理が終了する。
なお、図14A〜図21に示されるフローチャートは、いずれも、一例であって、実施の形態に応じて適宜、処理の順序等が変更されてもよい。
<具体例>
図22は、通信システム100における、セキュア通信が開始される前の設定処理のシーケンスの一例を示す図である。図22では、図1に示される通信システム100を前提とする。
S1では、送信元端末#Aにおいて、宛先端末#Bへのセキュア通信の要求が発生し(図19A、OP91)、送信元端末#Aは、セキュア通信確立依頼をセキュリティ通信制御装置1に送信する(図19A、OP92)。セキュア通信確立依頼には、送信元端末#Aと宛先端末#BとのIPアドレスが含まれている。
S2では、セキュリティ通信制御装置1は、セキュア通信確立依頼を受信し(図14A、OP2:確立依頼)、送信元端末#Aと宛先端末#Bとの間のセキュア通信ID、確認位置等を決定し、通信経路情報テーブル14を更新する(図14A、OP3)。S2において更新された通信経路情報テーブル14は、図7に示されるものであるとする。
S3では、セキュリティ通信制御装置1は、コントローラ2に、セキュア通信設定依頼を送信する。図22に示される例において、送信元端末#Aと宛先端末#Bとの間の経路において、1番目に経由する装置は、スイッチ#1である(図7参照)。スイッチ#1の前後には外部ネットワークが存在せず(図14A、OP7:NO、図14、OP10:NO)、次段にスイッチ#2が存在するので(図14B、OP11:YES)、セキュリティ通信制御装置1は、スイッチ#1についての動作種別を「中継」と判定する(図14B、OP12)。したがって、S3において送信されるセキュア通信設定依頼には、セキュア通信ID「1」、スイッチの識別情報「1」、送信元「通信端末#A」、転送先「スイッチ#2」、確認位置「宛先アドレスの1バイト目」、ダミーの値「0」、動作種別「中継」が含まれる。
S4では、コントローラ2は、セキュリティ通信制御装置1からセキュア通信設定依頼を受信し(図15A、OP31、OP32:NO)、セキュア通信設定依頼に含まれる情報を、宛先判定テーブル24に登録する(図15A、OP33)。S4で登録される宛先判定テーブル24のエントリは、図9の一行目のエントリである。
S5では、コントローラ2は、スイッチ#1に、PacketIn指示を含むFlowModメッセージを送信する(図15A、OP34)。S5で送信されるFlowModメッセージには、通信端末#Aを送信元とするパケットを受信した場合に、PacketInメッセージを送信することを示すフローエントリが含まれている。
S6では、スイッチ#1は、FlowModメッセージを受信し(図17、OP71、OP72:FlowMod)、FlowModメッセージに含まれるフローエントリをフローテーブルに登録し(図17、OP74:登録、OP75)、応答として設定完了をコ
ントローラ2に通知する(図17、OP76)。S6においてスイッチ#1のフローテーブル(パケット転送テーブル35)に登録されるエントリは、図11に示されるパケット転送テーブル35のエントリであるとする。
S7では、コントローラ2は、スイッチ#1から設定完了を受信し(図15A、OP35)、セキュリティ通信制御装置1に設定完了を通知する(図15A、OP36)。
S8では、セキュリティ通信制御装置1は、コントローラ2に、セキュア通信設定依頼を送信する。図22に示される例において、送信元端末#Aと宛先端末#Bとの間の経路において、スイッチ#1の次に経由する装置は、スイッチ#2である(図7参照)。スイッチ#2の前段には外部ネットワークが存在せず(図14A、OP7:NO)、次段に外部ネットワークであるセキュアネットワークが存在する(図14B、OP10:YES)。したがって、セキュリティ通信制御装置1は、スイッチ#2についての動作種別を「受側」と判定する(図14B、OP15)。したがって、S8において送信されるセキュア通信設定依頼には、セキュア通信ID「1」、スイッチの識別情報「1」、送信元「通信端末#A」、転送先「外部ネットワーク」、確認位置「宛先アドレスの1バイト目」、ダミーの値「0」、動作種別「受側」が含まれる。
S9では、コントローラ2は、セキュリティ通信制御装置1からセキュア通信設定依頼を受信し(図15A、OP31、OP32:NO)、セキュア通信設定依頼に含まれる情報を、宛先判定テーブル24に登録する(図15A、OP33)。S5で登録される宛先判定テーブル24のエントリは、図9に示される宛先判定テーブル24の二行目のエントリである。
S10では、コントローラ2は、スイッチ#2に、PacketIn指示を含むFlowModメッセージを送信する(図15A、OP34)。S10で送信されるFlowModメッセージには、通信端末#Aを送信元とするパケットを受信した場合に、PacketInメッセージを送信することを示すフローエントリが含まれている。
S11では、スイッチ#2は、FlowModメッセージを受信し(図17、OP71、OP72:FlowMod)、FlowModメッセージに含まれるフローエントリをフローテーブルに登録し(図17、OP74:登録、OP75)、応答として設定完了を
コントローラに通知する(図17、OP76)。S11においてスイッチ#2のフローテーブル(パケット転送テーブル35)に登録されるエントリは、図11に示されるパケット転送テーブル35のエントリであるとする。
S12では、コントローラ2は、スイッチ#2から設定完了を受信し(図15A、OP35)、セキュリティ通信制御装置1に設定完了を通知する(図15A、OP36)。
S13では、セキュリティ通信制御装置1は、コントローラ2に、セキュア通信設定依頼を送信する。図22に示される例において、送信元端末#Aと宛先端末#Bとの間の経路において、セキュアネットワークの次に経由する装置は、スイッチ#3である(図7参照)。スイッチ#3の前段には外部ネットワークが存在するので(図14A、OP7:YES)、セキュリティ通信制御装置1は、スイッチ#3についての動作種別を「発側」と判定する(図14A、OP8)。したがって、S13において送信されるセキュア通信設定依頼には、セキュア通信ID「1」、スイッチの識別情報「3」、送信元「通信端末#A」、転送先「通信端末#B」、確認位置「宛先アドレスの1バイト目」、ダミーの値「0」、動作種別「発側」が含まれる。
S14では、コントローラ2は、セキュリティ通信制御装置1からセキュア通信設定依頼を受信し(図15A、OP31、OP32:NO)、セキュア通信設定依頼に含まれる情報を、宛先判定テーブル24に登録する(図15A、OP33)。S14で登録される宛先判定テーブル24のエントリは、図9に示される宛先判定テーブル24の三行目のエントリである。
S15では、コントローラ2は、スイッチ#3に、PacketIn指示を含むFlowModメッセージを送信する(図15A、OP34)。S15で送信されるFlowModメッセージには、通信端末#Aを送信元とするパケットを受信した場合に、PacketInメッセージを送信することを示すフローエントリが含まれている。
S16では、スイッチ#3は、FlowModメッセージを受信し(図17、OP71、OP72:FlowMod)、FlowModメッセージに含まれるフローエントリをフローテーブルに登録し(図17、OP74:登録、OP75)、応答として設定完了を
コントローラ2に通知する(図17、OP76)。S16においてスイッチ#3のフローテーブル(パケット転送テーブル35)に登録されるエントリは、図11に示されるパケット転送テーブル35のエントリであるとする。
S17では、コントローラ2は、スイッチ#3から設定完了を受信し(図15A、OP35)、セキュリティ通信制御装置1に設定完了を通知する(図15A、OP36)。
S18では、セキュリティ通信制御装置1は、コントローラ2からの設定完了を受信し(図14A、OP9)、宛先端末#Bにセキュア通信設定依頼を送信する(図14C、OP17)。送信元端末#Aと宛先端末#Bとの間の経路において、スイッチ#3の次は宛先端末#Bであるからである(図14C、OP16:YES)。S18において送信されるセキュア通信設定依頼には、セキュア通信ID「1」、送信元「通信端末#A」、宛先「通信端末#B」、確認位置「宛先アドレスの1バイト目」、ダミーの値「0」が含まれる。
S19では、宛先端末#Bは、セキュリティ通信制御装置1からセキュア通信設定依頼を受信し(図20、OP111、OP112:設定依頼)、セキュア通信設定依頼に含ま
れる情報をセキュリティ通信管理テーブル44に登録する(図20、OP113)。S20では、宛先端末#Bは、セキュリティ通信制御装置1に設定完了を通知する(図20、OP114)。
S21では、セキュリティ通信制御装置1は、宛先端末#Bから設定完了を受信し(図14C、OP18)、送信元端末#Aに対して、セキュア通信設定依頼を送信する(図14C、OP19)。送信元端末#Aに対して送信されるセキュア通信設定依頼は、S18において宛先端末#Bに送信されるものと同じ情報を含む。
S22では、送信元端末#Aは、セキュリティ通信制御装置1からセキュア通信設定依頼を受信し(図19A、OP93)、セキュア通信設定依頼の情報をセキュリティ通信管理テーブル44に登録し(図19A、OP94)、セキュリティ通信制御装置1に設定完了を送信する(図19A、OP95)。以上で、セキュア通信の設定が完了し、送信元端末#Aからのセキュア通信のパケットの送信が開始される。
図23は、通信システム100における、セキュア通信の転送処理のシーケンスの一例
を示す図である。図23では、引き続き、図1に示される通信システム100を前提とし、且つ、図22のセキュア通信の設定処理が終了している状態であるとする。図23では、コントロールプレーンの通信は点線で、データプレーンの通信は実線で示されている。
S31では、送信元端末#Aは、セキュア通信のフォーマットのパケットを送信する。送信元端末#Aから送信されたパケットは、スイッチ#1に届く。
S32では、スイッチ#1は、パケットを受信し(図18、OP81)、パケット転送テーブル35(フローテーブル、図11参照)にしたがって、送信元端末#Aからのパケットについて、コントローラ2にPacketInメッセージを送信する(図18、OP85)。
S33では、コントローラ2は、スイッチ#1からPacketInメッセージを受信し(図16A、OP51)、スイッチ#1にPacketOutメッセージを送信する。コントローラ2における宛先判定テーブル24のスイッチ#1に該当するエントリでは、「動作種別」が「中継」である(図16B、OP61:YES)。したがって、S33で送信されるPacketOutメッセージには、パケットの転送先としてスイッチ#2が指定されている(図16B、OP62)。
S34では、スイッチ#1は、PacketOutメッセージに指定された転送先であるスイッチ#2にパケットを転送する。
S35では、スイッチ#2は、パケットを受信し(図18、OP81)、パケット転送テーブル35(フローテーブル、図11参照)にしたがって、送信元端末#Aからのパケットについて、コントローラ2にPacketInメッセージを送信する(図18、OP85)。
S36では、コントローラ2は、スイッチ#2からPacketInメッセージを受信し(図16A、OP51)、PacketInメッセージに含まれるパケットを、通常のフォーマットのパケットに変換する(図16B、OP64)。コントローラ2における宛先判定テーブル24のスイッチ#2に該当するエントリでは、「動作種別」が「受側」であるためである(図16B、OP61:NO)。なお、受信パケットがダミーパケットである場合には、コントローラ2は、パケットを廃棄する。
S37では、コントローラ2は、スイッチ#2にPacketOutメッセージを送信する。S37で送信されるPacketOutメッセージには、パケットの転送先として宛先端末#Bと、セキュア通信のフォーマットから通常のフォーマットに変換されたパケットとが含まれている(図16B、OP65)。
S38では、スイッチ#2は、PacketOutメッセージに指定された転送先である宛先端末#Bに宛ててパケットを転送する。パケットは、セキュアネットワーク(図22では図示せず)を経由して、スイッチ#3に届く。
S39では、スイッチ#3は、パケットを受信し(図18、OP81)、パケット転送テーブル35(フローテーブル、図11参照)にしたがって、送信元端末#Aからのパケットについて、コントローラ2にPacketInメッセージを送信する(図18、OP85)。
S40では、コントローラ2は、スイッチ#3からPacketInメッセージを受信し(図16A、OP51)、通常のフォーマットのパケットをセキュア通信のフォーマッ
トのパケットに変換する(図16A、OP54〜OP56)。コントローラ2における宛先判定テーブル24のスイッチ#3に該当するエントリでは、「動作種別」が「発側」であるからである(図16A、OP53:YES)。
S41では、コントローラ2は、スイッチ#3にPacketOutメッセージを送信する。S41で送信されるPacketOutメッセージには、パケットの転送先として宛先端末#Bと、セキュア通信のフォーマットに変換されたパケットが含まれている(図16A、OP59)。
S42では、スイッチ#3は、PacketOutメッセージに指定された転送先である宛先端末#Bにパケットを転送する。これによって、宛先端末#Bに送信元端末#Aから送信されたセキュア通信のパケットが届く。
図24は、通信システム100における、セキュア通信の開放処理のシーケンスの一例を示す図である。図24では、引き続き、図1に示される通信システム100を前提とし、且つ、図23のセキュア通信の転送処理が行われている状態であるとする。
S51では、宛先端末#Bとのセキュア通信のデータ送信が終了し、送信元端末#Aは、セキュア通信の終了通知をセキュリティ通信制御装置1に送信する(図19A、OP97)。セキュア通信の終了通知には、セキュア通信ID「1」が含まれている。
S52では、セキュリティ通信制御装置1は、送信元端末#Aからセキュア通信の終了通知を受信し(図14A、OP1、OP2:終了通知)、コントローラ2にセキュア通信
開放依頼を送信する(図14D、OP21〜OP23)。セキュア通信開放依頼には、開放対象であるセキュア通信ID「1」が含まれている。
S53では、コントローラ2は、セキュア通信開放依頼を受信し(図15A、OP31、OP32:YES)、セキュア通信ID「1」をキーに宛先判定テーブル24を検索する。
S54では、コントローラ2は、宛先判定テーブル24から検出されたスイッチ#1〜#3に、PacketInメッセージの送信の指示の削除を通知する(図15B、OP41、OP42)。この通知は、FlowModメッセージによって通知される。S53で送信されるFlowModメッセージには、フローエントリの削除指示と、削除対象であるフローエントリが含まれている。
S55では、スイッチ#1〜#3は、コントローラ2からのFlowModメッセージを受信し(図17、OP71、OP72:FlowMod)、合致するエントリをフローテーブルから削除し(図17、OP73:削除、OP77)、設定解除完了をコントローラ2に通知する(図17、OP78)。S55で削除されるフローテーブルのエントリは、FlowModメッセージに含まれるフローエントリと合致するものであって、図22のS6、S11、S16において登録されたものである。
S56では、コントローラ2は、スイッチ#1〜#3から設定解除完了を受信し(図15B、OP43)、S53で検出された宛先判定テーブル24のエントリを削除する。(図15B、OP44)S57では、コントローラ2は、セキュリティ通信制御装置1にセキュア通信経路の開放完了を通知する(図15B、OP45)。
S58では、セキュリティ通信制御装置1は、コントローラ2からセキュア通信の開放完了を受信し(図14D、OP24)、宛先端末#Bにセキュア通信開放依頼を送信する。S57において送信されるセキュア通信開放依頼には、開放対象のセキュア通信ID「1」が含まれている。
S59では、宛先端末#Bは、セキュア通信開放依頼を受信し(図20、OP111、OP112:開放依頼)、セキュリティ通信管理テーブル44のセキュア通信開放依頼に
含まれるセキュア通信ID「1」に合致するエントリを削除する(図20、OP115)。S60では、宛先端末#Bは、セキュリティ通信制御装置1に、開放処理の終了を通知する(図20、OP116)。
S60では、セキュリティ通信制御装置1は、宛先端末#Bから開放処理の終了通知を受信し(図14D、OP26)、通信経路情報テーブル14のセキュア通信ID「1」のエントリから、セキュア通信ID、確認位置、ダミーの値等を削除する(図14D、OP27)。S61では、セキュリティ通信制御装置1は、送信元端末#Aに、セキュア通信経路の開放処理の終了を通知する(図14D、OP28)。
S62では、送信元端末#Aは、セキュア通信経路の開放処理の終了通知を受信し(図19A、OP98)、セキュリティ通信管理テーブル44のセキュア通信ID「1」のエントリを削除する(図19A、OP99)。
<第1実施形態の作用効果>
第1実施形態では、セキュア通信のパケットは、本来の宛先アドレスがペイロード内に挿入され、ヘッダ内の宛先アドレスのフィールドには、乱数が格納されて、生成され、送信される。フローの識別に用いられるヘッダ内の宛先アドレスのフィールドの値が、同一フローのパケット間でばらばらの値になるため、経路上で第3者にセキュア通信のパケットが抜き取られたとしても、第3者が同一フローのパケットを収集することができない。したがって、第1実施形態では、第3者によるフローの特定を困難にすることができる。
第1実施形態では、ヘッダ内の宛先アドレスフィールドに格納される乱数は、パケットごとに算出される。したがって、ヘッダ内の宛先アドレスのフィールドの値がパケットごとに異なり、フローの特定をより困難にしている。
第1実施形態では、セキュア通信のパケットのヘッダ内の確認位置が、ペイロード内の本来の宛先アドレスの格納位置を示す。ヘッダ内の宛先アドレスフィールドには、パケットごとに算出される乱数が格納されるので、ペイロード内の本来の宛先アドレスの格納位置もパケットごとに異なる。すなわち、本来の宛先アドレスのペイロード内の格納位置が一様でないため、よりフローの特定をより困難にし、セキュリティが高まる。
第1実施形態では、セキュア通信ごと、すなわち、フロー毎に、セキュア通信のパケットのヘッダ内の確認位置が決定される。これによって、セキュア通信のパケットのヘッダ内の確認位置は、通信システム100内のフロー間で一様でないため、セキュア通信のフローの特定をより困難にし、セキュリティが高まる。
第1実施形態では、送信元の通信端末4は、セキュア通信において、所定の割合でダミーパケットを送信する。また、ダミーパケットであることを示す値も、ヘッダ内の確認位置のビット列が示す値に相当するペイロード内の位置に格納される。したがって、第3者からダミーパケットであることを特定されることを困難にし、よりセキュア通信のセキュリティを高めることができる。
また、第1実施形態では、セキュリティ通信制御装置1が、送信元の通信端末4からセキュア通信確立依頼を受信した場合に、コントローラ2にセキュア通信設定依頼を送信す
る。コントローラ2は、各スイッチに、セキュア通信のパケットを受信した場合に、コントローラ2にPacketInメッセージを送信するように指示する。コントローラ2は、PacketInメッセージでセキュア通信のパケットを受信した場合には、ペイロード内の本来の宛先アドレスに基づいて、該パケットの転送先を決定する。したがって、セキュリティ通信制御装置1によるセキュア通信設定依頼の送信によって、通信システム100内のスイッチ3によって、セキュア通信のパケットが本来の宛先に転送されるようにすることができる。
セキュリティ通信制御装置1からコントローラ2、送信元の通信端末4、及び宛先の通信端末4に通知されるセキュア通信設定依頼には、ヘッダ内の確認位置の情報が含まれる。これによって、送信元の通信端末4はセキュア通信のパケットを送信することができる。コントローラ2は、セキュア通信のパケットの本来の宛先アドレスをペイロードから取得することができ、転送先を決定することができる。すなわち、セキュリティ通信制御装置1から送信されるセキュア通信設定依頼によって、通信システム100において、送信元の通信端末4と宛先の通信端末4との間でセキュア通信を行うことを可能とする。
セキュリティ通信制御装置1は、送信元の通信端末4と宛先の通信端末4との間の経路上の、各スイッチ3の「動作種別」を、「受側」、「発側」、「中継」
のうちのいずれかに判定し、セキュア通信設定依頼に含めて、コントローラ2に通知する。コントローラ2は、PacketInメッセージの送信元のスイッチ3の「動作種別」に応じて、PacketInメッセージに含まれるセキュア通信のパケットの処理を行う。
「動作種別」が「発側」である場合には、コントローラ2は、通常のパケットをセキュア通信のパケットのフォーマットに変換し、PacketInメッセージの送信元のスイッチ3に変換後のパケットを送信する。「動作種別」が「受側」である場合には、コントローラ2は、セキュア通信のパケットを通常のパケットのフォーマットに変換し、PacketInメッセージの送信元のスイッチ3に変換後のパケットを送信する。これによって、送信元の通信端末4と宛先の通信端末4との経路上に、外部のネットワークが存在している場合でも、セキュア通信を行うことができる。
また、「動作種別」が「発側」である場合には、コントローラ2は、所定の割合でダミーパケットを生成して、PacketInメッセージの送信元のスイッチ3に転送させる。「動作種別」が「受側」である場合には、コントローラ2は、セキュア通信のパケットがダミーパケットである場合には、ダミーパケットを廃棄する。これによって、送信元の通信端末4と宛先の通信端末4との経路上に、外部のネットワークが存在している場合には、ダミーパケットを外部ネットワークに流さずに済む。また、外部ネットワークを経由した場合に、再度ダミーパケットをセキュア通信に含めることができる。
セキュリティ通信制御装置1がコントローラ2に対してセキュア通信設定依頼を送信することで、SDNのような、スイッチ3を一元管理するシステムにおいて、セキュア通信を行うことができる。
<変形例1>
第1実施形態では、セキュア通信のパケットは、本来の宛先アドレスがペイロード内に挿入され、ヘッダ内の宛先アドレスフィールドに乱数が格納される。宛先アドレスに代えて、セキュア通信のパケットの本来の送信元アドレスがペイロード内に挿入され、ヘッダ内の送信元アドレスのフィールドに乱数が格納されるようにしてもよい。
変形例1の場合には、パケットの宛先アドレスは本来の宛先アドレスのままであり、ス
イッチ3及びセキュアネットワーク内の中継装置の通常の宛先アドレスに従った転送処理によって、パケットは宛先の通信端末4まで届けられる。そのため、変形例1では、セキュリティ通信制御装置1は、コントローラ2にセキュア通信設定依頼を送信しなくてもよい。また、変形例1では、コントローラ2は、宛先判定テーブル24を備えなくてもよい。
また、変形例1の場合には、セキュリティ通信制御装置1の通信経路情報テーブル14のエントリは、セキュア通信ID、送信元、宛先、確認位置、ダミーの値の項目を含めばよい。ただし、確認位置は、送信元アドレスのフィールド内の確認位置を示すこととなる。
変形例1の場合には、セキュリティ通信制御装置1は、送信元の通信端末4からセキュア通信確立依頼を受信すると、セキュア通信ID、確認位置を決定し、送信元及び宛先の通信端末4に、セキュア通信設定依頼を送信する。
送信元の通信端末4は、パケットのヘッダ内の送信元アドレスのフィールドに乱数を格納する。また、送信元の通信端末4は、ヘッダ内の送信元アドレスのフィールド内の確認位置のビット列が示す値に相当するペイロード内の位置に本来の送信元アドレス(自装置のアドレス)を格納して、該パケットを送信する。
宛先の通信端末4は、受信パケットのヘッダ内の送信元アドレスのフィールドの確認位置のビット列が示すペイロードの位置に、セキュリティ通信管理テーブル44に登録されている送信元アドレスが格納されているか否かを判定する。ペイロードの該位置に、セキュリティ通信管理テーブル44に登録されている送信元アドレスが格納されている場合には、宛先の通信端末4は、受信パケットのデータを取り込む。ペイロードの該位置に、セキュリティ通信管理テーブル44に登録されている送信元アドレスが格納されていない場合には、宛先の通信端末4は、受信パケットを廃棄する。
なお、変形例1においても、所定の割合でダミーパケットが生成及び送信される。
ただし、セキュア通信に対して中継装置によってフロー制御が行われる場合には、第1実施形態と同様に、セキュリティ通信制御装置1は、コントローラ2にセキュア通信設定依頼を送信し、コントローラ2は、宛先判定テーブル24を備える。セキュリティ通信制御装置1の通信経路情報テーブル14は、第1実施形態と同様のデータ構造となる。
この場合には、セキュリティ通信制御装置1、コントローラ2、スイッチ3は、「宛先アドレス」を「送信元アドレス」に置き換えて、第1実施形態と同様の処理を行う。すなわち、スイッチ3は、宛先アドレスがパケット転送テーブル35に登録されているアドレスであるパケットを受信した場合に、コントローラ2にPacketInメッセージを送信する。コントローラ2は、PacketInメッセージを受信すると、宛先判定テーブル24に従って、処理を行い、PacketOutメッセージをスイッチ3に送信する。
変形例1によれば、ヘッダ内の送信元アドレスに乱数が格納されるので、第3者によるフローの特定を困難にすることができる。変形例1におけるヘッダ内の送信元アドレスのフィールドは、「第1のフィールド」の一例である。変形例1における本来の送信元アドレスは、「第1の情報」の一例である。変形例1におけるヘッダ内の送信元アドレスのフィールドに本来の送信元アドレスの代わりに格納される値は、「第2の情報」の一例である。
<変形例2>
送信元の通信端末4と宛先の通信端末4の間の経路上で、或る2装置間は、宛先アドレスが乱数に置き換えられ、別の或る2装置間は送信元アドレスが乱数に置き換えられるようにしてもよい。例えば、通信システム100において、送信元端末#Aからスイッチ#2までの間は、宛先アドレスが乱数に置き換えられ、スイッチ#3から宛先端末#Bまでの間は送信元アドレスが乱数に置き換えられるようにしてもよい。
変形例2では、セキュリティ通信制御装置1の通信経路情報テーブル14のエントリは、宛先アドレスが乱数に置き換えられる区間と、送信元アドレスが乱数に置き換えられる区間とで、分けられる。宛先アドレスが乱数に置き換えられる区間のエントリの「確認位置」には、宛先アドレスのフィールド内の確認位置の情報が格納される。送信元アドレスが乱数に置き換えられる区間のエントリの「確認位置」には、送信元アドレスのフィールド内の確認位置の情報が格納される。変形例2では、セキュリティ通信制御装置1は、上述の通信経路情報テーブル14に基づいて、第1実施形態と同様の処理を行えばよい。
コントローラ2は、宛先アドレスが乱数に置き換えられる区間のスイッチ3に対しては、送信元アドレスが指定のアドレスである場合にPacketInメッセージを送信するように指示する。送信元アドレスが乱数に置き換えられる区間のスイッチ3に対しては、コントローラ2は、宛先アドレスが指定のアドレスである場合にPacketInメッセージを送信するように指示する。
送信元及び宛先の通信端末4は、セキュア通信設定依頼に含まれる確認位置が宛先アドレス内の位置である場合には、第1実施形態と同様の処理を行う。送信元及び宛先の通信端末4は、セキュア通信設定依頼に含まれる確認位置が送信元アドレス内の位置である場合には、変形例1と同様の処理を行う。
変形例2では、送信元と宛先との間の経路上で、宛先アドレスが乱数に置き換えられる区間と、送信元アドレスが乱数に置き換えられる区間とが混在する。これによって、よりフローの特定を困難にすることができ、セキュリティを高めることができる。
<変形例3>
変形例3では、本来の宛先アドレスと送信元アドレスの双方がペイロードの所定位置に格納され、ヘッダ内の宛先アドレスと送信元アドレスとのフィールドには、乱数が格納される。変形例3では、例えば、セキュア通信のパケットであることを明示するために、IPヘッダに、セキュア通信であることを示すフラグが格納される。
送信元の通信端末4は、セキュア通信のパケットのヘッダに、セキュア通信であることを示すフラグを立てて、ヘッダ内の宛先アドレスと送信元アドレスとを乱数で置き換える。送信元の通信端末4は、ヘッダ内の宛先アドレスの確認位置のビット列が示す値に相当するペイロード内の位置に、本来の宛先アドレスを挿入する。同様に、送信元の通信端末4は、ヘッダ内の送信元アドレスの確認位置のビット列が示す値に相当するペイロード内の位置に、本来の送信元アドレスを挿入する。
宛先の通信端末4は、受信パケットのヘッダ内のセキュア通信であることを示すフラグが立っている場合には、ペイロード内から本来の宛先アドレスと送信元アドレスとを取得し、データを取り込む。具体的には、宛先の通信端末4は、ヘッダ内の宛先アドレス及び送信元アドレスのフィールドの確認位置のビット列が示す値に相当するそれぞれのペイロードの位置から宛先アドレス及び送信元アドレスを取得し、ペイロードから削除する。
コントローラ2及びスイッチ3は第1実施形態と同様の処理を行う。又は、コントローラ2及びスイッチ3は、受信パケットのヘッダ内のセキュア通信であることを示すフラグに基づいてセキュア通信のパケットを検出し、第1実施形態及び変形例1の処理を行ってもよい。
変形例3によれば、ヘッダ内の本来の宛先アドレスと送信元アドレスとが乱数に置き換えられるので、よりセキュリティを高めることができる。変形例3における送信元アドレスと宛先アドレスとのフィールドは、「第1のフィールド」の一例である。変形例3における送信元アドレスと宛先アドレスとは、「第1の情報」の一例である。変形例3におけるヘッダ内の送信元アドレス及び宛先アドレスのフィールドに、本来の送信元アドレス及び宛先アドレスの代わりに格納される値は、「第2の情報」の一例である。
<その他>
なお、第1実施形態及び変形例1〜3では、セキュリティ通信制御装置1とコントローラ2とは別の装置として説明されたが、これに限定されない。セキュリティ通信制御装置1とコントローラ2とは、同じ装置上で実装されてもよい。
また、第1実施形態及び変形例1〜3では、通信ネットワーク100はSDNネットワークであることを前提として説明されたが、通信ネットワーク100は、SDNネットワークに限定されない。通信ネットワーク100は、ルータやレイヤ3スイッチ等で形成されるネットワークであってもよい。
通信ネットワーク100がルータやレイヤ3スイッチ等で形成されるネットワークである場合には、通信ネットワーク100には、コントローラ2は存在しなくてもよい。セキュリティ通信制御装置1は、ルータやレイヤ3スイッチにセキュア通信設定依頼を送信する。ルータやレイヤ3スイッチは、コントローラ2の宛先判定テーブル24を有し、宛先判定テーブル24に基づいて、第1実施形態でコントローラ2がPacketInメッセージに含まれるパケットに対して行う処理と同様の処理を行う。
また、第1実施形態及び変形例1〜3では、ヘッダ内の宛先又は/及び送信元アドレスのフィールドの確認位置を、セキュリティ通信制御装置1がセキュリティ通信ごとに、決定するが、これに代えて、送信元の通信端末4が、確認位置を決定してもよい。
また、第1実施形態及び変形例1〜3では、ヘッダ内の宛先アドレス又は/及び送信元アドレスが乱数に置き換えられるが、ヘッダ内のフロー識別情報として用いられる他の情報が乱数に置き換えられてもよい。ヘッダ内のフロー識別情報として用いられる他の情報には、例えば、TCP/UDPのポート番号、プロトコル番号等がある。この場合には、乱数に置き換えられるヘッダ内の情報が、「第1の情報」の一例となる。
また、第1実施形態及び変形例1〜3では、ダミーパケットであることを示す値は、ペイロード内に格納される。これに代えて、ダミーパケットであることを示す値は、ヘッダ内の宛先アドレスや送信元アドレスのフィールド等の、乱数に置き換えられるフィールドに格納されてもよい。
第1実施形態では、送信元端末#Aから宛先端末#Bへの方向の通信について説明された。例えば、送信元端末#Aから宛先端末#Bへの通信において、戻りパケットがある場合には、宛先端末#Bを送信元とし、送信元端末#Aを宛先とするセキュア通信が確立される。この場合には、宛先端末#Bからセキュリティ通信制御装置1に対してセキュア通信確立依頼が送信される。
<記録媒体>
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実
現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ROM(リードオンリーメモリ)等がある。さらに、SSD(Solid State Drive)は、コンピュータ等から取り外し可能な記録媒体としても、コ
ンピュータ等に固定された記録媒体としても利用可能である。
<付記>
上記の実施形態は、以下の付記を開示する。
(付記1)
第1のフィールドを含むヘッダとペイロードとを含み、前記第1のフィールドに格納されている第1の情報を含む、フローを識別可能な識別情報が共通している複数の第1のパケットのそれぞれについて、前記第1の情報の代わりに、前記複数の第1のパケットのうちの少なくとも2つのパケット群間で異なる値となる第2の情報が前記第1のフィールドに格納され、前記第1の情報が前記ペイロード内に挿入されることによって、取得される複数の第2のパケットを送信する送信部、
を備える通信装置。
(付記2)
前記複数の第1のパケットのそれぞれについて、前記第1の情報の代わりに、前記第2の情報を前記第1のフィールドに格納し、前記第1の情報を前記ペイロード内に挿入して、前記複数の第2のパケットを取得する制御部、
をさらに備える付記1に記載の通信装置。
(付記3)
前記制御部は、前記第2の情報を、前記複数の第1のパケットのそれぞれについて決定する、
付記2に記載の通信装置。
(付記4)
前記制御部は、前記第1のフィールドの所定部分に該当する前記第2の情報の一部分が示す値に相当する前記ペイロード内の位置に前記第1の情報を挿入する、
付記3に記載の通信装置。
(付記5)
前記第1のフィールドの前記所定部分は、前記複数の第1のパケットにより形成されるパケット群ごとに決定される、
付記4に記載の通信装置。
(付記6)
前記送信部は、前記複数の第1のパケットには含まれておらず、ダミーパケットであることを示す情報が格納されている、少なくとも1つのダミーパケットを前記複数の第2のパケットと混在させて送信する、
付記1から5のいずれか一つに記載の通信装置。
(付記7)
前記第1の情報は、宛先アドレス又は送信元アドレスのいずれか一方又は両方である、付記1から6のいずれか一つに記載の通信装置。
(付記8)
第1のフィールドを含むヘッダとペイロードとを含み、前記第1のフィールドに格納されている第1の情報を含む、フローを識別可能な識別情報が共通している複数の第1のパケットのそれぞれについて、前記第1の情報の代わりに、前記複数の第1のパケットのうちの少なくとも2つのパケット群間で異なる値となる第2の情報が前記第1のフィールドに格納され、前記第1の情報が前記ペイロード内に挿入されることによって、取得される複数の第2のパケットを含むパケットを受信する受信部、
を備える通信装置。
(付記9)
前記第1のフィールドとは異なる前記ヘッダ内の第2のフィールドに格納される第3の情報を記憶する記憶部と、
前記受信部による受信パケットの前記第2のフィールドに前記第3の情報が格納されている場合に、前記受信パケットについて、前記受信パケットのペイロードから第1の情報を削除して、前記ペイロードに含まれるデータを取得する制御部と、
をさらに備える付記8に記載の通信装置。
(付記10)
前記第2の情報は、前記複数の第1のパケットのそれぞれについて決定されている、
付記8又は9に記載の通信装置。
(付記11)
前記制御部は、前記受信パケットについて、前記第1のフィールドの所定部分に該当する前記第2の情報の一部分が示す値に相当する前記ペイロード内の位置に前記第1の情報が格納されているか判定し、前記第1の情報が格納されていない場合には、前記受信パケットを廃棄する、
付記9又は10に記載の通信装置。
(付記12)
前記第1のフィールドの前記所定部分は、前記複数の第1のパケットにより形成されるパケット群ごとに決定されている、
付記11に記載の通信装置。
(付記13)
前記受信部は、前記複数の第1のパケットには含まれておらず、ダミーパケットであることを示す情報が格納されており、前記複数の第2のパケットと混在して送信される、少なくとも1つのダミーパケットを受信し、
前記制御部は、受信パケットに、前記ダミーパケットであることを示す情報が格納されている場合には、前記受信パケットを廃棄する、
付記9から12のいずれか一つに記載の通信装置。
(付記14)
第1のフィールドを含むヘッダとペイロードとを含み、前記第1のフィールドに格納されている第1の情報を含む、フローを識別可能な識別情報が共通している複数の第1のパケットのそれぞれについて、前記第1の情報の代わりに、前記複数の第1のパケットのうちの少なくとも2つのパケット群間で異なる値となる第2の情報が前記第1のフィールドに格納され、前記第1の情報が前記ペイロード内に挿入されて、取得される複数の第2のパケットを送信する送信部、
を備える送信装置と、
前記複数の第2のパケットを含むパケットを受信する受信部、
を備える受信装置と、
を含む通信システム。
(付記15)
第1のフィールドを含むヘッダとペイロードとを含み、前記第1のフィールドに格納されている第1の情報を含む、フローを識別可能な識別情報が共通している複数の第1のパケットのそれぞれについて、前記第1の情報の代わりに、前記複数の第1のパケットのうちの少なくとも2つのパケット群間で異なる値となる第2の情報が格納され、前記第1の
情報が前記ペイロード内に挿入されて、取得される複数の第2のパケットを送信する送信装置から受信装置への通信の要求を受信する受信部と、
前記通信の要求が受信された場合に、前記送信装置と前記受信装置との間の経路上に存在する1又は複数の中継装置について、第2のパケットを受信した場合に、前記第2のパケットのペイロード内に挿入されている第1の情報に基づいて前記第2のパケットを転送する指示を送信する送信部と、
を備える通信制御装置。
(付記16)
前記送信部は、前記通信の要求が受信された場合に、前記1又は複数の中継装置について、前記第2のパケットのペイロード内の前記第1の情報の挿入位置に関する情報をさらに送信し、前記送信装置と前記受信装置とに、前記ペイロード内の前記第1の情報の挿入位置に関する情報を送信する、
付記15に記載の通信制御装置。
(付記17)
前記経路上において外部ネットワークを転送先とする第1の中継装置について、第2のパケットを受信した場合に、前記第2のパケットから第1のパケットを取得し、前記第1のパケットを前記外部ネットワークに転送することを指示することを判定し、前記経路上において外部ネットワークを転送元とする第2の中継装置について、第1のパケットを受信した場合に、前記第1のパケットから第2のパケットを取得し、前記第2のパケットを転送先に転送することを指示することを判定する制御部、
をさらに備える付記15又は16に記載の通信制御装置。
(付記18)
前記制御部は、前記第1の中継装置に、ダミーパケットであることを示す値と、受信パケットに前記ダミーパケットであることを示す値が格納されている場合に、前記受信パケットを廃棄することを指示することを判定し、前記第2の中継装置に、前記ダミーパケットであることを示す値と、前記ダミーパケットであることを示す値を含むダミーパケットを前記取得された第2のパケットに混在させて送信させることを指示することを判定する、
付記17に記載の通信制御装置。
(付記19)
前記制御部は、前記ペイロード内の前記第1の情報の挿入位置に関する情報が格納される、前記第1のフィールドにおける所定部分を、前記複数の第1のパケットにより形成されるパケット群ごとに決定する、
付記16から18のいずれか一つに記載の通信制御装置。
(付記20)
前記送信部は、前記経路上の前記1又は複数の中継装置についての指示を、前記1又は複数の中継装置を制御する中継制御装置に送信する、
付記15から19のいずれか一つに記載の通信制御装置。
(付記21)
前記第2の情報は、前記複数の第1のパケットのそれぞれについて決定されている、
付記15から20のいずれか一つに記載の通信制御装置。
(付記22)
第1のフィールドを含むヘッダとペイロードとを含み、前記第1のフィールドに格納されている第1の情報を含む、フローを識別可能な識別情報が共通している複数の第1のパケットのそれぞれについて、前記第1の情報の代わりに、前記複数の第1のパケットのうちの少なくとも2つのパケット群間で異なる値となる第2の情報が前記第1のフィールドに格納され、前記第1の情報が前記ペイロード内に挿入されて、取得される複数の第2のパケットを含むパケットを受信する受信部と、
第2のパケットが受信された場合に、前記第2のパケットのペイロード内の第1の情報に基づいて、前記第2のパケットの転送先を判定する制御部と、
を備える通信装置。
(付記23)
前記第2のパケットと前記転送先の情報とを、中継装置に送信する送信部、をさらに備え、
前記受信部は、前記中継装置から前記第2のパケットを受信する、
付記22に記載の通信装置。
(付記24)
中継装置の識別情報と、転送先の情報と、ペイロード内の第1の情報の挿入位置との対応付けを記憶する記憶部をさらに備え、
前記制御部は、第2のパケットが第1の中継装置から受信され、前記第1の中継装置に対応する転送先が他の中継装置である場合に、前記第2のパケットと前記転送先の情報として前記他の中継装置の識別情報とを前記第1の中継装置に送信することを判定し、第2のパケットが第2の中継装置から受信され、前記第2の中継装置に対応する転送先が外部ネットワークである場合に、前記第2の中継装置に対応するペイロード内の第1の情報の挿入位置から前記第1の情報を取得し、前記第2のパケットのヘッダ内の第1のフィールドに前記第1の情報を格納し、前記第2のパケットのペイロードから前記第1の情報を削除して、前記第2のパケットから第1のパケットを取得し、取得した前記第1のパケットと前記転送先として外部ネットワークを示す情報とを前記第2の中継装置に送信することを判定する、
付記23に記載の通信装置。
(付記25)
前記受信部は、第3の中継装置から第1のパケットを受信し、
前記制御部は、前記第1のパケットが前記第3の中継装置から受信され、前記第3の中継装置に対応する転送先が他の中継装置である場合に、前記第1のパケットの第1のフィールドに第2の情報を格納し、前記第3の中継装置に対応するペイロード内の第1の情報の挿入位置に前記第1のフィールドに格納されていた第1の情報を挿入して、第2のパケットを取得し、取得した前記第2のパケットと前記転送先として前記他の中継装置の識別情報とを前記第3の中継装置に送信することを判定する、
付記23又は24に記載の通信装置。
(付記26)
前記第2のパケットを前記転送先に送信する送信部をさらに備える、
付記22に記載の通信装置。
(付記27)
通信装置が、
第1のフィールドを含むヘッダとペイロードとを含み、前記第1のフィールドに格納されている第1の情報を含む、フローを識別可能な識別情報が共通している複数の第1のパケットのそれぞれについて、前記第1の情報の代わりに、前記複数の第1のパケットのうちの少なくとも2つのパケット群間で異なる値となる第2の情報が前記第1のフィールドに格納され、前記第1の情報が前記ペイロード内に挿入されて、取得される複数の第2のパケットを送信する、
通信方法。
(付記28)
通信制御装置が、
第1のフィールドを含むヘッダとペイロードとを含み、前記第1のフィールドに格納されている第1の情報を含む、フローを識別可能な識別情報が共通している複数の第1のパケットのそれぞれについて、前記第1の情報の代わりに、前記複数の第1のパケットのうちの少なくとも2つのパケット群間で異なる値となる第2の情報が前記第1のフィールドに格納され、前記第1の情報が前記ペイロード内に挿入されて、取得される複数の第2のパケットを送信する送信装置から受信装置への通信の要求を受信し、
前記通信の要求が受信された場合に、前記送信装置と前記受信装置との間の経路上に存
在する1又は複数の中継装置について、ペイロード内の第1の情報の挿入位置に関する情報と、第2のパケットを受信した場合に、前記第2のパケットのペイロード内に挿入されている第1の情報に基づいて前記第2のパケットを転送する指示と、を送信し、前記送信装置と前記受信装置とに、前記ペイロード内の第1の情報の挿入位置に関する情報を送信する、
通信制御方法。
(付記29)
通信装置が、
第1のフィールドを含むヘッダとペイロードとを含み、前記第1のフィールドに格納されている第1の情報を含む、フローを識別可能な識別情報が共通している複数の第1のパケットのそれぞれについて、前記複数の第1のパケットのうちの少なくとも2つのパケット群間で異なる値となる第2の情報が前記第1のフィールドに格納され、前記第1の情報が前記ペイロード内に挿入されて、取得される複数の第2のパケットを含むパケットを受信し、
第2のパケットが受信された場合に、前記第2のパケットのペイロード内の第1の情報に基づいて、前記第2のパケットの転送先を判定する、
通信方法。
(付記30)
パケットを中継する1又は複数の中継装置と、
前記複数の中継装置を制御する中継制御装置と、
前記中継制御装置、送信装置、及び、宛先装置を制御する通信制御装置と、
を含む通信システムであって、
前記通信制御装置は、
第1のフィールドを含むヘッダとペイロードとを含み、前記第1のフィールドに格納されている第1の情報を含む、フローを識別可能な識別情報が共通している複数の第1のパケットのそれぞれについて、前記第1の情報が前記ペイロード内に挿入され、前記第1のフィールドに、前記複数の第1のパケット間で少なくとも2つの値をとる第2の情報が格納されて、生成された複数の第2のパケットを送信する送信装置から受信装置への通信の要求を受信する受信部と、
前記通信の要求が受信された場合に、前記送信装置と前記受信装置への経路上に存在する前記1又は複数の中継装置について、前記第2のパケットを受信した場合に、前記ペイロード内に挿入されている前記第1の情報に基づいて前記第2のパケットを転送することの指示を前記中継制御装置に送信する送信部と、
を備え、
前記中継制御装置は、
前記通信制御装置から、前記指示を受信する受信部と、
前記通信制御装置から前記指示を受信した場合に、前記1又は複数の中継装置に前記第2のパケットの前記中継制御装置への送信指示の送信を判定する制御部と、
前記中継装置に前記送信指示を送信する送信部と、
を備え、
前記受信部は、前記第2のパケットを前記1又は複数の中継装置のいずれかから受信し、
前記制御部は、前記第2のパケットが受信された場合に、前記ペイロード内から前記第1の情報を取得し、前記第1の情報に基づいて、前記第2のパケットの転送先を判定し、
前記送信部は、第2のパケットと前記転送先の情報とを、中継装置に送信する、
通信システム。