(57)【特許請求の範囲】
【請求項１】
制御下にあるスイッチにパケットに対する動作を示す制御メッセージを送信するコントローラであって、
制御下にある通信相手に検査用の前記制御メッセージである検査メッセージを送信する処理と、スイッチが前記検査メッセージに基づく処理によって送信を停止する所定のメッセージが前記通信相手から受信されたときに前記通信相手をスイッチではなく攻撃者と判定する処理とを行う制御装置を含む
コントローラ。
【請求項２】
前記制御装置は、スイッチが前記検査メッセージに基づく処理によって前記コントローラに送信する所定のメッセージが前記通信相手から受信されないときに前記通信相手を攻撃者と判定する
請求項１に記載のコントローラ。
【請求項３】
制御下にあるスイッチにパケットに対する動作を示す制御メッセージを送信するコントローラであって、
制御下にある通信相手に検査用の前記制御メッセージである検査メッセージを送信する処理と、
或るパケットに対する動作の決定の要求を前記通信相手から受信したときに前記検査メッセージとして前記或るパケットに合致するパケットの識別条件を含む第１の検査メッセージを前記通信相手に送信し、前記第１の検査メッセージの送信後に前記識別条件に合致するパケットに対する動作の決定の要求が前記通信相手から受信されたときに前記通信相手をスイッチではなく攻撃者と判定する処理とを行う制御装置を含む、
コントローラ。
【請求項４】
前記制御装置は、前記検査メッセージとして或るパケットに対する動作の有効期間を含む第２の検査メッセージを前記通信相手に送信し、前記第２の検査メッセージの送信後に前記有効期間の満了を示す応答メッセージが前記通信相手から受信されないときに前記通信相手を攻撃者と判定する
請求項３に記載のコントローラ。
【請求項５】
前記制御装置は、前記通信相手に対する前記第２の検査メッセージの送信を所定回数行い、いずれの送信についても前記応答メッセージが受信されないときに、前記通信相手を攻撃者と判定する
請求項４に記載のコントローラ。
【請求項６】
制御下にあるスイッチにパケットに対する動作を示す制御メッセージを送信するコントローラであって、
制御下にある通信相手に検査用の前記制御メッセージである検査メッセージを送信する処理と、スイッチが前記検査メッセージに基づく処理を行うことで生じる事象が前記通信相手について生じないときに前記通信相手をスイッチではなく攻撃者と判定する処理とを行う制御装置を含み、
前記制御装置は、単位時間内に前記通信相手から受信されたメッセージの数が閾値を超えたときに前記通信相手に前記検査メッセージを送信する
コントローラ。
【請求項７】
制御下にあるスイッチにパケットに対する動作を示す制御メッセージを送信するコントローラであって、
制御下にある通信相手に検査用の前記制御メッセージである検査メッセージを送信する処理と、スイッチが前記検査メッセージに基づく処理を行うことで生じる事象が前記通信相手について生じないときに前記通信相手をスイッチではなく攻撃者と判定する処理とを行う制御装置を含み、
前記制御装置は、制御下にある複数の通信相手から単位時間内に受信されたメッセージの総数が所定値を超えるときに前記複数の通信相手のそれぞれに前記検査メッセージを送信する
コントローラ。
【請求項８】
制御下にあるスイッチにパケットに対する動作を示す制御メッセージを送信するコントローラの攻撃者検知方法であって、
前記コントローラが、
制御下にある通信相手に検査用の前記制御メッセージである検査メッセージを送信し、
スイッチが前記検査メッセージに基づく処理によって送信を停止する所定のメッセージが前記通信相手から受信されたときに前記通信相手を攻撃者と判定する
ことを含むコントローラの攻撃者検知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コントローラ，及びその攻撃者検知方法に関する。
【背景技術】
【０００２】
近年、ネットワークの分野ではSoftware Defined Networking（ＳＤＮ）が注目されて
いる。ＳＤＮでは、ネットワーク全体をコントローラと呼ばれるソフトウェアが集中的に制御、管理する。これによって、ネットワークのプログラマビリティを高め、制御の自動化を達成することを目的としている。
【０００３】
ＳＤＮを実現する技術の一つとして、OpenFlowがある。OpenFlowの主たる特徴は、既存のネットワーク機器に実装されていたネットワークの経路制御機能とデータ転送機能とを分離したことである。
【０００４】
OpenFlowは、経路制御を司る“OpenFlowコントローラ”（以下「コントローラ」又は「ＯＦＣ」と表記）と、データ転送機能を備える“OpenFlowスイッチ”（以下「スイッチ」又は「ＯＦＳ」と表記）とを含む。コントローラとスイッチとのコミュニケーションは、
“OpenFlowプロトコル”によって行われる。
【０００５】
OpenFlowが適用されたOpenFlowネットワークでは、ネットワーク全体の制御をコントローラが集中的に行う。ネットワーク全体の制御の一環として、コントローラは、コントローラとセッションを確立した複数のスイッチのそれぞれの動作を制御する。これによって、ネットワークの管理や制御を効率的に行うことができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−１２２７４９号公報
【特許文献２】特開２００８−２１１４６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したように、OpenFlowネットワークでは、コントローラが集中的な管理及び制御を行う。このため、クラッカーなどの不正ユーザ（攻撃者）の端末がスイッチになりすましてコントローラの制御下に入り、コントローラに対してＤｏＳ攻撃（Denial of Service attack）を行う可能性がある。コントローラが攻撃によって動作を停止すると、その影響がネットワーク全体に及ぶ虞がある。
【０００８】
従来のOpenFlowネットワークでは、コントローラの制御下にある通信相手がスイッチか攻撃者かを判定することができない。本開示の一側面は、コントローラの制御下にある通信相手がスイッチか攻撃者かを判定することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本開示の一つの側面は、制御下にあるスイッチにパケットに対する動作を示す制御メッセージを送信するコントローラであって、制御下にある通信相手に検査用の前記制御メッセージである検査メッセージを送信する処理と、スイッチが前記検査メッセージに基づく処理を行うことで生じる事象が前記通信相手について生じないときに前記通信相手をスイッチではなく攻撃者と判定する処理とを行う制御装置を含む。
【発明の効果】
【００１０】
本開示の一側面によれば、コントローラの制御下にある通信相手がスイッチか攻撃者かを判定することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施形態１におけるOpenFlowネットワークシステムの構成例を模式的に示す図である。
【図２Ａ】図２Ａは、第１の攻撃者の検知方法の説明図である。
【図２Ｂ】図２Ｂは、第１の攻撃者の検知方法の説明図である。
【図３Ａ】図３Ａは、第２の攻撃者の検知方法の説明図である。
【図３Ｂ】図３Ｂは、第２の攻撃者の検知方法の説明図である。
【図４】図４は、コントローラとして動作可能な情報処理装置（コンピュータ）のハードウェア構成例を示す図である。
【図５】図５は、攻撃者の検知処理の例を示すフローチャートである。
【図６】図６は、検知処理に際して使用される情報を示すテーブルの例を示す。
【図７】図７は、図５に示した検査フェーズの詳細の一例である第１の検査方法（ＰＩ検査）を示すフローチャートである。
【図８Ａ】図８Ａは、Packet Inメッセージを模式的に示す図である。
【図８Ｂ】図８Ｂは、FlowModメッセージを模式的に示す図である。
【図９】図９は、図７に示したＰＩ検査に係る処理の変形例を示すフローチャートである。
【図１０】図１０は、図５に示した検査フェーズの詳細の一例である第２の検査方法（ＦＲ検査）を示すフローチャートである。
【図１１】図１１は、ＦＲ検査で使用される有効期間付きのＦＭメッセージの例を模式的に示す図である。
【図１２】図１２は、図１０に示したＦＲ検査の変形例１を示すフローチャートである。
【図１３】図１３は、図１０に示したＦＲ検査の変形例２を示すフローチャートである。
【図１４】図１４は、図５に示した検査フェーズの詳細の一例である第３の検査方法（複合検査）を示すフローチャートである。
【図１５】図１５は、実施形態２に係るOpenFlowネットワークシステムの例を示す。
【図１６】図１６は、実施形態２におけるコントローラ（ＣＰＵ）の処理例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の実施形態について説明する。実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１３】
〔実施形態１〕
＜OpenFlowネットワークシステムの構成例＞
以下に説明する実施形態１及び２では、ＳＤＮを実現する制御プロトコルのうち、最も実装が進んだプロトコルであるOpenFlowを対象とする。以下の説明において、OpenFlow 
を「ＯＦ」と表記することもある。
【００１４】
図１は、実施形態１におけるＯＦネットワークシステムの構成例を模式的に示す図である。図１において、ＯＦネットワークシステムは、コントローラ（ＯＦＣ）１と、コントローラ１の制御下にある（コントローラ１によって制御される）少なくとも１つのスイッチ（ＯＦＳ）２とを含む。図１の例では、各スイッチ２はネットワークを介してコントローラ１に接続されている。
【００１５】
図１の例では、複数のスイッチ２Ａ，２Ｂ，２Ｃが例示されている。スイッチ２Ａはスイッチ２Ｂと接続され、スイッチ２Ｂはスイッチ２Ｃと接続されている。以下の説明において、スイッチ２Ａ，２Ｂ，２Ｃを区別しない場合には、スイッチ２と表記する。各スイッチ２は、１以上のホスト（端末）３を収容している（但し、スイッチ２がホスト３を収容しない場合もある）。
【００１６】
スイッチ２Ａは、非ＯＦネットワーク４（４Ａ）と接続されており、スイッチ２Ｃは、非ＯＦネットワーク４（４Ｂ）と接続されている。非ＯＦネットワーク４は、OpenFlowと異なる規格で構築されたネットワークであり、例えば、インターネットやイントラネットのようなInternet Protocol（ＩＰ）パケットを転送するパケット網である。
【００１７】
上記構成によって、例えば、非ＯＦネットワーク４Ａから各スイッチ２Ａ，２Ｂ，２Ｃを通って非ＯＦネットワーク４Ｂへ至るパケットの転送が行われる。或いは、各非ＯＦネットワーク４Ａ，４Ｂからのパケットが所定のスイッチ２を介して端末３へ転送される。もちろん、スイッチ２に接続された端末３間のパケット通信もスイッチ２を介してなされる。
【００１８】
コントローラ１は、各スイッチ２との間でＯＦプロトコルに基づくメッセージを送受信するためのセッションを確立する。セッションの確立手順は、例えば以下の通りである。最初に、スイッチ２は、コントローラ１との間でTransmission Control Protocol（ＴＣ
Ｐ）のハンドシェイク手順（３ウェイハンドシェイク）を行い、ＴＣＰセッションを確立する。ＴＣＰセッションは、「セッション」の一例である。
【００１９】
次に、スイッチ２は、コントローラ１との間でＯＦ規格に基づくハンドシェイク手順を行う。ハンドシェイク手順の中で、スイッチ２とコントローラ１とは、Hellowメッセージと呼ばれるメッセージを相互に交換する。続いて、スイッチ２は、“features request”と呼ばれるスイッチ２の情報を含んだメッセージを送り、コントローラ１は、“features
request”の応答メッセージ(“features reply”と呼ばれる)を返信する。これによって、ＯＦ規格に基づくハンドシェイクが成立する。その後、スイッチ２とコントローラ１とは、echoメッセージを相互に送り、セッションを維持する。
【００２０】
コントローラ１は、各スイッチ２で受信されるパケットに対する経路制御を行い、各スイッチ２が受信したパケットに対して行う動作（アクション）を定義した制御情報を生成する。制御情報は、ＯＦにおいて「フロー」と呼ばれる。
【００２１】
フローは、“マッチ条件（「ルール」とも呼ばれる）”，“アクション（Action）”，及び“統計情報（Statistics）”の組で形成される。“マッチ条件”は、スイッチ２に入力されるパケットの識別条件（フローの定義条件）を示す情報であり、主にパケットのヘッダフィールドに設定されるパラメータの組み合わせで表現される。
【００２２】
“アクション”には、マッチ条件に合致するパケットに対する動作（処理）内容が定義される。“アクション”として複数の動作を定義することができる。また、“アクション”の定義がないときには、“Drop：パケットの廃棄”が行われるようにすることもできる。
【００２３】
“統計情報”として、“マッチ条件”に合致するパケット数やパケット量がカウントされる。このような統計情報は、“アクション”を実行するための条件として使用することができる。
【００２４】
コントローラ１は、１つのフローを１エントリとしたエントリ（「フローエントリ」と呼ばれる）の集合体（「フローテーブル」と呼ばれる）をスイッチ２毎に作成する。コントローラ１は、スイッチ２に対応するフローエントリを含むメッセージ（「FlowModメッ
セージ」と呼ばれる）を作成する。FlowModメッセージ（以下、「ＦＭメッセージ」とも
表記する）は、各スイッチ２との間で確立したセッションを用いて各スイッチ２に送信される。ＦＭメッセージは、「制御メッセージ」の一例である。
【００２５】
スイッチ２（各スイッチ２Ａ，２Ｂ，２Ｃ）は、ＦＭメッセージを受信すると、当該ＦＭメッセージ中のフローエントリを記憶装置に記憶する。すなわち、スイッチ２は、コントローラ１で生成されたフローエントリの集合体、すなわちフローテーブルを記憶装置に記憶する。
【００２６】
スイッチ２は、パケットを受信すると、フローテーブルを参照し、パケットと合致する（マッチする）マッチ条件を有するフローエントリを検索する。マッチ条件と合致するフローエントリが見つかると、スイッチ２は、当該エントリ中の“アクション”に示された動作を行う。例えば、アクションの内容が“Output:port1”であれば、スイッチ２は、パケットを“出力ポート１”から送出する。
【００２７】
このように、スイッチ２は、自身が受信するパケットについて、コントローラ１から受信するフロー（フローエントリ）の内容に従った動作を行う。すなわち、スイッチ２の動作は、コントローラ１が作成するフローによって制御される。
【００２８】
ＦＭメッセージに含まれるフロー（フローエントリ）には、有効期限（有効期間）を設定することができる。有効期限付きのフローエントリも、有効期限のないフローエントリと同様にスイッチ２のフローテーブルに登録される。但し、当該フローエントリは、有効期限が到来、すなわち、有効期間が満了すると、フローテーブルから削除される。
【００２９】
有効期限付きのフローエントリを削除したスイッチ２は、該当フローの削除（当該フローの有効期間の満了）を示すメッセージ（FlowRemovedメッセージと呼ばれる）をコント
ローラ１へ送信する。コントローラ１は、ＦＲメッセージの受信によって、当該ＦＲメッセージで示されたフローの削除（無効）を検知することができる。
【００３０】
上述したように、スイッチ２は、パケットを受信する毎に、フローテーブルを参照し、パケットと合致するマッチ条件を含むフローエントリを検索する。検索の結果、マッチ条件に合致するフローエントリが発見されない場合には、スイッチ２は、当該パケットを含むメッセージ（「Packet Inメッセージ」と呼ばれる）をコントローラ１へ送信する。Packet Inメッセージ（以下「ＰＩメッセージ」と表記する）は、パケットに対する動作が決定（規定）されていないパケットの受信を示すメッセージである。
【００３１】
ＰＩメッセージを受信したコントローラ１は、当該ＰＩメッセージ中のパケットを参照し、当該パケットに対するフロー（フローエントリ）を作成する。このとき、コントローラ１は、当該パケットのヘッダ情報などを参照し、当該パケットと同タイプの（同じ属性情報を有する）パケットを識別するためのマッチ条件をフローエントリに含める。
【００３２】
コントローラ１は、作成したフローエントリをＰＩメッセージの送信元のスイッチ２へ送る。スイッチ２は、フローエントリをフローテーブルに登録する。当該登録によって、スイッチ２は、上記ＰＩメッセージに含めたパケットと同タイプのパケットに合致するマッチ条件を有するフローエントリをフローテーブルから見つけることができる。これによって、スイッチ２は、当該フローエントリの“アクション”に従った動作（処理）を行うことができる。
【００３３】
＜コントローラに対する攻撃＞
不正なユーザ（攻撃者）によるコントローラ１への攻撃方法としては、以下が考えられる。図１に示すように、攻撃者の端末５がスイッチ２になりすましてコントローラ１とセッションを確立し、当該端末５からＤｏＳ攻撃を行うことが考えられる。ＤｏＳ攻撃として、端末５が大量のメッセージをコントローラ１に送信し、コントローラ１を高負荷状態にする。
【００３４】
このとき、メッセージがＯＦに従ったフォーマットで作成されていると、コントローラ１で大量に受信されたメッセージが通常の（正規の）スイッチ２からの正常メッセージであるのか、攻撃者の意図的な攻撃によるメッセージであるのかを判断することが難しい。
【００３５】
＜攻撃者の検知方法＞
本実施形態では、コントローラ１は、所定の開始トリガが発生したときに、セッションの確立相手（通信相手：「接続相手」、「クライアント」ともいう）の検査を開始する。開始トリガは、例えば、或るクライアントから大量のメッセージを受信したことである。メッセージの種類は問わない。但し、特定のメッセージについての集計を行っても良い。特定のメッセージは、ＰＩメッセージを含む。
【００３６】
また、開始トリガは大量のメッセージ受信に限定されない。例えば、或るクライアントとのＯＦ規格に基づくハンドシェイクの成功が開始トリガとされても良い。また、所定のアルゴリズムに従って、開始トリガが定期的又は周期的に発生するようにしても良い。また、開始トリガは、セッションを確立している或るクライアントについて発生してもよく、複数のクライアントを対象として発生するようにしても良い。
【００３７】
クライアントの検査として、コントローラ１は、クライアントのＯＦ規格適合（準拠）性を検査し、クライアントの振る舞い（挙動）がＯＦ規格に適合又は準拠するか否かを判定する。クライアントの挙動がＯＦ規格に適合又は準拠する場合には、コントローラ１は、クライアントが正規のスイッチ２と判定する。これに対し、クライアントの挙動がＯＦ規格に適合又は準拠しない場合には、コントローラ１は、クライアントが攻撃者（攻撃プログラム）であると判定する。
【００３８】
＜＜ＯＦ規格適合（準拠）性検査＞＞
ＯＦ規格適合性の検査及び判断として、コントローラ１は、以下のような処理を行う。コントローラ１は、所定の開始トリガの発生を機に検査を開始する。すなわち、コントローラ１は、検査対象のクライアントを被疑攻撃者とし、被疑攻撃者に検査用のＦＭメッセージを送信する。検査用のＦＭメッセージは、「検査メッセージ」の一例である。
【００３９】
このとき、検査用のＦＭメッセージを受信した被疑攻撃者がＯＦ規格に適合又は準拠しない挙動を示すことがある。この場合、検査用のＦＭメッセージの受信者が正規のスイッチ２であれば生じる事象が被疑攻撃者について生じない。このとき、コントローラ１は被疑攻撃者を攻撃者と判定する。すなわち、コントローラ１は、被疑攻撃者とのセッションが不正なセッションと判定する。以下、ＯＦ規格適合性の検査方法（ＦＭメッセージを用いた攻撃者の検知方法）の例について説明する。
【００４０】
[第１の攻撃者の検知方法]
図２Ａ及び図２Ｂは、第１の攻撃者の検知方法の説明図である。図２Ａは、クライアントが通常の（正規の）スイッチ２であるケースを示し、図２Ｂは、クライアントが攻撃者の端末５であるケースを示している。
【００４１】
図２Ａにおいて、コントローラ１は、スイッチ２を被疑攻撃者とする場合、スイッチ２から受信されたＰＩメッセージ中のパケットに対するマッチ条件及びアクション（例えば、所定ポートから送出）を規定したフローエントリを作成する。コントローラ１は、フローエントリを含む検査用のＦＭメッセージをスイッチ２へ送信する（図２Ａ＜１＞）。当該検査用のＦＭメッセージは、「第１の検査メッセージ」の一例である。
【００４２】
被疑攻撃者は正規のスイッチ２であるので、検査用のＦＭメッセージ中のフローエントリをフローテーブルに登録する。その後、スイッチ２は、ＰＩメッセージに含めたパケットと同タイプのパケットを受信した場合には、ＰＩメッセージを送信することなく、当該パケットを対応するフローエントリ中の“アクション”に従って処理する。すなわち、スイッチ２は、アクションの内容に従ってパケットを所定ポートから送出する（図２Ａ＜２＞）。
【００４３】
このように、被疑攻撃者が正規のスイッチ２であれば、ＰＩメッセージに含まれたパケットに対するＦＭメッセージを送信した後には、同タイプのパケットに係るＰＩメッセージはスイッチ２から送信されない。従って、コントローラ１から見て、同タイプのパケットについてのＰＩメッセージが受信されないという事象が生じる。
【００４４】
図２Ｂにおいて、被疑攻撃者が攻撃者の端末５である場合には、端末５で実行される攻撃プログラムは、コントローラ１に負荷をかけるメッセージをコントローラ１へ送り込むことを目的として作成されている。このため、攻撃プログラムは、スイッチ２本来の動作をカバーしていないと考えられる。すなわち、攻撃プログラムは、ＦＭメッセージの受信時における処理を含んでいないと考えられる。
【００４５】
従って、図２Ａを用いて説明したのと同様に、コントローラ１が検査用のＦＭメッセージを端末５に送信しても（図２Ｂ＜１＞）、端末５においてフローエントリの登録処理は実行されない。このため、端末５は、ＤｏＳ攻撃に係るＰＩメッセージをコントローラ１へ送信することを継続する（図２Ｂ＜２＞）。
【００４６】
このため、コントローラ１は、ＦＭメッセージを送信したにも拘わらず、同タイプのパケット（検査用のＦＭメッセージで送信したマッチ条件にマッチするパケット）を含むＰＩメッセージを受信する。すなわち、コントローラ１から見て、被疑攻撃者がスイッチ２であれば生じる事象（同タイプのパケットのＰＩメッセージが受信されない）が生じない。
【００４７】
換言すれば、被疑攻撃者がＦＭメッセージの受信時に予定される挙動と異なる挙動を示す結果、スイッチ２がＦＭメッセージを受信した場合では生じない事象が発生する。コントローラ１は、ＰＩメッセージの受信を契機に、被疑攻撃者（端末５）が攻撃者である（端末５とのセッションが不正セッションである）と判定する。このようにして、ＯＦ規格に基づくＦＭメッセージ及びＦＭメッセージに対するスイッチ２の処理を用いて攻撃者（不正セッション）が検知される。
【００４８】
[第２の攻撃者の検知方法]
図３Ａ及び図３Ｂは、第１の攻撃者の検知方法の説明図である。図３Ａは、クライアントが通常の（正規の）スイッチ２であるケースを示し、図３Ｂは、クライアントが攻撃者の端末５であるケースを示している。
【００４９】
図３Ａにおいて、コントローラ１は、スイッチ２を被疑攻撃者とする場合、スイッチ２に対して検査用のＦＭメッセージを送信する（図３Ａ＜１＞）。当該検査用のＦＭメッセージは、有効期限（有効期間）が設定された所定のフローエントリを含む。フローエント
リの内容は適宜設定可能である。当該検査用のＦＭメッセージは、「第２の検査メッセージ」の一例である。
【００５０】
スイッチ２は、検査用のＦＭメッセージを受信すると、ＦＭメッセージ中のフローエントリをフローテーブルに登録する。その後、スイッチ２は、当該フローエントリの有効期間が満了すると、当該フローエントリをフローテーブルから削除する（図３Ａ＜２＞）。そして、スイッチ２は、フローエントリの削除（有効期間の満了）を示すＦＲメッセージをコントローラ１へ送信する（図３Ａ＜３＞）。ＦＲメッセージは、「応答メッセージ」の一例である。
【００５１】
このように、検査用のＦＭメッセージがスイッチ２に送信された場合には、コントローラ１から見て、有効期間満了後にＦＲメッセージがスイッチ２から送信（コントローラ１で受信）されるという事象が生じる。
【００５２】
図３Ｂに示すように、被疑攻撃者が攻撃者の端末５である場合、端末５が実行する攻撃プログラムは、ＦＭメッセージ受信時の処理、或いは、有効期限付きのＦＭメッセージを受信したときの処理を含んでいないと考えられる。
【００５３】
このため、端末５は、コントローラ１から送信された検査用のＦＭメッセージ（有効期限付き）を受信し（図３Ｂ＜１＞）、有効期間が満了しても、ＦＲメッセージを送信しない（図３Ｂ＜２＞）。すなわち、コントローラ１から見て、有効期間が満了してもＦＲメッセージが受信されないという事象が生じる。
【００５４】
コントローラ１は、例えば、検査用のＦＭメッセージを送信した被疑攻撃者からＦＲメッセージを受信できなければ、コントローラ１は、被疑攻撃者（端末５）が攻撃者である（端末５のセッションが不正セッションである）と判定する。このようにして、ＯＦに規定されたＦＭメッセージを用いて攻撃者（不正セッション）が検知される。
【００５５】
上記した第１及び第２の検知方法によって、コントローラ１は、クライアントが攻撃者（攻撃プログラム）であると判定した場合には、コントローラ１は、典型的には、当該クライアント（端末５）とのセッションを切断し、以後の当該クライアントからのアクセスを遮断する。これによって、攻撃者からの攻撃を回避することができる。但し、クライアントが攻撃者と判定したときの処理は、上記例に限定されない。
【００５６】
上記した第１及び第２の検知方法（攻撃者（不正セッション）の判定方法）が有効である背景としては、以下が考えられる。攻撃者がコントローラ１を攻撃する際に用いる攻撃プログラムは、コントローラ１の動作を模擬するものである一方、ＯＦ規格への適合又は準拠性が必ずしも高くないと考えられる。
【００５７】
すなわち、攻撃プログラムは、ＯＦ規格に従ったコントローラ１とのセッションを確立及び維持する機能、並びに、攻撃に要するメッセージ送受信機能を備える。しかし、攻撃プログラムは攻撃と関係しない動作及び処理は備えない（作り込みが甘い）と考えられる。
【００５８】
ＯＦ規格に完全に適合した攻撃プログラムを作成すると、実際のスイッチ（ＯＦＳ）２を作成するのとほぼ等しい作業量が要求され、攻撃プログラムの開発コストが非常に高くなるからである。また、コントローラ１を攻撃する（コントローラ１に負荷をかける）ための動作として、ＰＩメッセージなどのスイッチ２からコントローラ１へ送信可能な非同期メッセージを発生させることが考えられる。この場合、フローテーブルなどの通常のスイッチ２が管理するステートの実装は攻撃に直接関係しないため、作成を省略すると考え
られるからである。
【００５９】
実施形態１では、コントローラ１に対して大量のアクセス（メッセージ受信）があった時に、クライアントが正規のスイッチ２であるのか攻撃プログラムであるのかを、ＦＭメッセージを用いた簡便な処理の追加によって判断することができる。すなわち、情報処理装置（コンピュータ）をコントローラ１として動作させるプログラムに、上記した攻撃者の検知方法（被攻撃者の検査）を行うプログラム部分を追加する。これによって、コントローラ１が攻撃者の検出機構を備えることができる。
【００６０】
上述した攻撃者の検出機構（攻撃者の検知方法）は、コントローラ１への攻撃を防ぐための他の手法と組み合わせることができる。他の手法は、例えば、クライアントとコントローラ１との接続時にクライアントの認証を行い、認証が成功しない場合にはコントローラ１とクライアントとのセッションの確立を行わない手法である。
【００６１】
＜実施形態１の詳細＞
以下、実施形態１の詳細について説明する。
＜＜情報処理装置の構成例＞＞
図４は、上述したコントローラ１として動作可能な情報処理装置（コンピュータ）１０のハードウェア構成例を示す図である。情報処理装置１０は、例えば、パーソナルコンピュータ（ＰＣ），ワークステーション（ＷＳ），サーバマシンのような専用又は汎用のコンピュータを適用することができる。但し、情報処理装置１０の種類は、上記の例示に制限されない。
【００６２】
図４において、情報処理装置１０は、バスＢを介して相互に接続されたCentral Processing Unit（ＣＰＵ）１１と、Random Access Memory（ＲＡＭ）１２と、Read Only Memory（ＲＯＭ）１３とを備えている。また、情報処理装置１０は、バスＢに接続されたハー
ドディスクドライブ（ＨＤＤ）１４と、ネットワークインタフェース（ＮＷＩ／Ｆ）１５とを備えている。さらに、情報処理装置１０は、バスＢに接続された入力インタフェース（入力Ｉ／Ｆ）１６と、出力インタフェース（出力Ｉ／Ｆ）１７とを備えている。
【００６３】
ＲＡＭ１２は、ＣＰＵ１１の作業領域として使用される。ＲＯＭ１３及びＨＤＤ１４のそれぞれは、プログラムやプログラムの実行に際して使用されるデータを記憶する。ＲＡＭ１２及びＨＤＤ１４は、プログラムの実行結果として生成されたデータを記憶することもできる。ＨＤＤ１４の代わりに、又はＨＤＤ１４に加えて、Solid State Drive（ＳＳ
Ｄ）が設けられていても良い。ＲＡＭ１２，ＲＯＭ１３，ＨＤＤ１４などは、「記憶部」、「記憶媒体」，「メモリ」，或いは「記憶装置」の一例である。
【００６４】
入力Ｉ／Ｆ１６には、入力装置１８が接続される。入力装置１８は、例えば、ボタン、キー，ポインティングデバイス（マウスなど），タッチパネルの少なくとも１つを含む。入力装置１８は、情報やデータの入力に使用される。
【００６５】
出力Ｉ／Ｆ１７には、表示装置（ディスプレイ装置）１９が接続される。表示装置１９は、各種の情報を表示する。ＮＷＩ／Ｆ１５は、通信機能を司るインタフェース回路を含み、スイッチ２（クライアント）などとネットワークを介して接続される。ＮＷＩ／Ｆ１５は、例えば、ＬＡＮカードのようなネットワークインタフェースカードを適用することができる。ＮＷＩ／Ｆ１５は、「送信装置」、「受信装置」、「通信装置」の一例である。
【００６６】
ＣＰＵ１１は、ＲＯＭ１３やＨＤＤ１４に記憶されたプログラムをＲＡＭ１２にロードして実行する。これによって、情報処理装置１０は、コントローラ１として動作する。Ｃ
ＰＵ１１は、「プロセッサ」或いは「制御装置」の一例である。
【００６７】
プログラムの実行によって、ＣＰＵ１１は、コントローラ１が実行する様々な処理を行う。ＣＰＵ１１が実行する処理は、クライアント（スイッチ２）とのセッション（コネクション）を確立及び切断する処理、フローエントリを作成（算出）する処理、ＯＦプロトコルを用いてスイッチ２とコミュニケーション（メッセージ交換）する処理などを含む。
【００６８】
各スイッチ２向けに作成されたフローエントリ（フローテーブル）は、各スイッチ２へＦＭメッセージを用いて送信されるとともに、ＲＡＭ１２及びＨＤＤ１４の少なくとも一方に記憶される。さらに、ＣＰＵ１１は、上述した攻撃者を検知する（被疑攻撃者を検査する）処理（図２）を実行する。
【００６９】
また、情報処理装置１０は、ＣＰＵ１１がスイッチ２用のプログラムを実行することによって、スイッチ２として動作することもできる。スイッチ２として動作する情報処理装置１０のＣＰＵ１１は、例えば、以下の処理を実行する。
【００７０】
ＣＰＵ１１は、ＮＷＩ／Ｆ１５で受信されるコントローラ１からのＦＭメッセージ中のフローエントリをＲＡＭ１２やＨＤＤ１４の記憶領域に記憶されたフローテーブルに登録する処理を行う。また、ＣＰＵ１１は、ＮＷＩ／Ｆ１５で受信されたパケットに対応するフローエントリをフローテーブルから検索し、発見されたフローエントリの“アクション”で定義された動作をパケットについて行う。
【００７１】
また、ＣＰＵ１１は、パケットに対応するフローエントリが発見されないときに、ＰＩメッセージをコントローラ１へ送信する処理を行う。さらに、ＣＰＵ１１は、有効期間付きのフローエントリをフローテーブルから削除した場合に、ＦＲメッセージを生成しコントローラ１へ送る処理を行う。これらのスイッチ２で行われる処理は、いずれもＯＦ規格に適合又は準拠した処理である。
【００７２】
＜＜ＣＰＵによる処理＞＞
図５は、攻撃者の検知処理（クライアントが攻撃プログラムであるか否かのチェック処理）の例を示すフローチャートである。図５に示す処理は、コントローラ１として動作する情報処理装置１０のＣＰＵ１１によって実行される。図５に示す処理は、一例として、セッションを確立している（制御下の）クライアントから大量のＰＩメッセージをコントローラ１が受信したことを契機（開始トリガ）として開始される。
【００７３】
図６は、検知処理に際して使用される情報を示すテーブルの例を示す。テーブルは、ＲＡＭ１２やＨＤＤ１４に記憶される。但し、テーブルに含まれた情報の保存形式はテーブルに限定されない。図６の例において、テーブルは、クライアント毎に、クライアントの識別情報と、クライアントとの間で確立されたセッションの識別情報と、単位時間と、メッセージ受信数とを含む。
【００７４】
クライアントの識別情報は、コントローラ１とセッションを確立した通信相手の識別情報であり、本来的にはスイッチ２の識別情報である。クライアントの識別情報としては、例えば、Data Path ID（ＤＰＩ）と呼ばれるＯＦ規格に従った識別子が適用される。ＤＰＩは、例えば、クライアントとコントローラ１とのハンドシェイク手順時に、所定のメッセージに含まれてコントローラ１に伝達される。所定のメッセージは、“features request”を含む。但し、クライアント間を識別できる限り、ＤＰＩ以外の情報を適用可能である。
【００７５】
セッションの識別情報は、セッションを用いて通信相手との間でメッセージを送受信す
るための情報を含む。セッションの識別情報は、典型的には、ＴＣＰセッションで使用される識別子（ＩＰアドレスとポート番号との組み合わせ）である。但し、セッションの識別情報は、上記に限定されない。
【００７６】
単位時間として、所定の時間長の時間を設定可能である。図６の例では、クライアント間で同一の単位時間（ｘ）が設定されている例を示しているが、クライアント間で異なる時間長の単位時間が設定されても良い。単位時間は、図示しないタイマによって計時される。
【００７７】
受信メッセージ数として、単位時間内にクライアントから受信されたメッセージの数が記憶される。計数されるメッセージの種別に制限はなく、あらゆる種類のメッセージの合計数を計数しても良い。或いは、特定の種別のメッセージの数が計数されても良い。特定の種別のメッセージは、ＰＩメッセージを含む。
【００７８】
閾値は、クライアントを被疑攻撃者と判断する程度のメッセージが受信されたことを判定するための閾値である。閾値として、適宜の数値が設定される。図６の例では、閾値として同じ値“ｙ”が設定されているが、クライアント間で異なる閾値が設定される場合もあり得る。
【００７９】
図５に示す処理は、適宜のタイミングで開始される。最初の０１の処理では、ＣＰＵ１１は、図示しないタイマを用いて単位時間“ｘ”の計時を行い、単位時間が経過（タイマが満了）すると（０１，Ｙ）、処理が０２に進む。単位時間中に、ＣＰＵ１１は、各クライアントから受信されるメッセージの数をカウントし、テーブルに記憶する処理を行う。
【００８０】
次の０２の処理では、ＣＰＵ１１は、テーブルのメッセージ受信数と閾値とを比較し、単位時間内に受信されたメッセージの数が閾値を上回っているか否かを判定する。メッセージ数が閾値以下（０２，Ｎｏ）であれば、処理が０１に戻り、タイマがリセットされて、次の単位時間が計時される。これに対し、メッセージ数が閾値を上回っている場合（０２，Ｙｅｓ）には、処理が次の０３へ進む。
【００８１】
０２の処理は、各クライアントについて実行される。０２の処理において全てのクライアントについてＮｏの判定がなされた場合に処理が０１に戻る。０２の処理においてＹｅｓの判定がなされたクライアントがある場合には、ＣＰＵ１１は、当該クライアントを被疑攻撃者として０３以降の処理を実行する。なお、受信メッセージ数と閾値との比較判定は、受信メッセージ数が閾値以上か否かによってなされても良い。
【００８２】
次の０３の処理では、ＣＰＵ１１は、クライアントのＯＦ規格適合性の検査を行う。すなわち、ＣＰＵ１１は、クライアントの振る舞い（挙動）がＯＦ規格に適合又は準拠するか否かを検査する。
【００８３】
検査の結果、クライアントの挙動がＯＦ規格に適合又は準拠する場合には（０４，Ｙｅｓ）、ＣＰＵ１１は、クライアントが正規のスイッチ２であるとの判断を以て、処理を０１に戻す。これに対し、クライアントの挙動がＯＦ規格に適合又は準拠しない場合には（０４，Ｎｏ）、ＣＰＵ１１は、クライアントが攻撃者（攻撃プログラム）であるとの判断を以て、クライアントとのセッションを切断（０５）し、当該クライアントからの以後のアクセスを拒否する設定を行う（０６）。その後、ＣＰＵ１１は、処理を０１へ戻す。
【００８４】
セッションの切断処理としては、積極的なセッションの切断（終了）シーケンスを攻撃者（端末５）との間で行うことや、攻撃者からのechoメッセージへの応答を禁止する、といった手法を採ることができる。但し、セッションの切断方法は上記手法に限定されない
。
【００８５】
アクセスを拒否する設定としては、例えば、以下の手法がある。すなわち、ＣＰＵ１１は、クライアントのＤＰＩ，ＩＰアドレス，或いはＤＰＩとＩＰアドレスとの組み合わせをＲＡＭ１２やＨＤＤ１４に記憶しておく。その後のセッション確立処理（ハンドシェイク）において、記憶したＤＰＩやＩＰアドレスがクライアントから提示されたときに、ＣＰＵ１１は、ハンドシェイクを拒絶する。なお、ＤＰＩやＩＰアドレスの組み合わせに加えて、以前のハンドシェイクに用いたソケット番号を用いる場合もあり得る。アクセス拒否の設定は、上記手法に限定されない。
【００８６】
＜＜第１の検知方法（ＰＩ検査）＞＞
図７は、図５に示した０３の処理（検査フェーズ）の詳細の一例である第１の検査方法（「ＰＩ検査」とも呼ぶ）を示すフローチャートである。ＰＩ検査は、図２Ａ及び図２Ｂを用いて説明した第１の攻撃者の検知方法を実行する処理である。
【００８７】
図７に示す処理は、例えば、クライアントのＯＦ規格適合性検査フェーズ（図５の０３）で呼び出されるサブルーチンである（以下、「サブルーチン１０」と称する）。サブルーチン１０では、最初の１１の処理において、ＣＰＵ１１は、コントローラ１がクライアント（被疑攻撃者）から受信したＰＩメッセージにマッチする検査用のフローの設定処理を行う。  
【００８８】
すなわち、ＣＰＵ１１は、被疑攻撃者のクライアントからのＰＩメッセージ受信を待ち、ＰＩメッセージが受信されると、ＰＩメッセージ中のパケットを解析する。ＣＰＵ１１は、パケットの解析を通じて、ＰＩメッセージ中のパケットに合致する被疑攻撃者向けの検査用のフロー（フローエントリ）を新規に作成する。
【００８９】
具体的には、ＣＰＵ１１は、ＰＩメッセージ中のパケットのヘッダに設定されたパラメータなどを用い、当該パケットにマッチ（合致）する“マッチ条件（ルール）”を作成するとともに、マッチ条件に対応するアクションを決定する。アクションの内容は、マッチ条件に合致したパケットを検出可能である限り、適宜決定可能である。アクションとして、ダミーのアクションを設定することもあり得る。
【００９０】
ＣＰＵ１１は、新規に作成したマッチ条件及びアクションを含む検査用のフロー（フローエントリ）をクライアント（ＰＩメッセージの送信元）向けのＦＭメッセージに含める。ＣＰＵ１１は、検査用のＦＭメッセージを検査メッセージ（第１の検査メッセージ）として、被疑攻撃者のクライアントに送信する（１２）。
【００９１】
その後、ＣＰＵ１１は、当該クライアントからのＰＩメッセージ受信を監視する状態となる（１３）。ＰＩメッセージが受信されると（１３，Ｙｅｓ）、ＣＰＵ１１は、当該ＰＩメッセージ中のパケットが検査用のフローとマッチするか否かを判定する（１４）。パケットが検査用のフローとマッチしない場合（１４，Ｎｏ）には、ＣＰＵ１１は、クライアントの挙動がＯＦ規格に適合又は準拠すると判断する。すなわち、ＣＰＵ１１は、クライアントが正規のスイッチ２であると判断する。その後、ＣＰＵ１１はサブルーチン１０を終了させて処理を０１（図５）へ戻す。
【００９２】
これに対し、パケットが検査用のフローとマッチする場合（１４，Ｙｅｓ）には、ＣＰＵ１１は、被疑攻撃者のクライアントの挙動がＯＦ規格に適合（準拠）しない、すなわちクライアントが攻撃者（攻撃プログラム）であると判断する。その後、ＣＰＵ１１は、サブルーチン１０を終了し、処理を０５（図５）へ戻す。
【００９３】
[ＰＩ検査の具体例]
図７に示したＰＩ検査の具体例について説明する。図８Ａは、ＰＩメッセージを模式的に示す図である。図８Ａに示すように、ＰＩメッセージは、ＰＩヘッダとペイロードとを含む。ペイロードには、クライアントで受信されたとされるフローが未設定のパケットが含まれる。
【００９４】
ＣＰＵ１１は、図７の１１の処理で、当該パケットの解析を行う。ＰＩメッセージ中のパケットには、図８Ａに示すように、送信元ＭＡＣアドレス（Src MAC）“Ａ”と、宛先
ＭＡＣアドレス（Dest MAC）“Ｂ”とが設定されていたと仮定する。このため、ＣＰＵ１１は、ＭＡＣアドレス“Ａ”からＭＡＣアドレス“Ｂ”宛てのパケットフローの経路計算を行い、クライアントの出力ポートを決定する。このとき、出力ポート“１”が求められたと仮定する。
【００９５】
従って、ＣＰＵ１１は、受信パケットが送信元ＭＡＣアドレス“Ａ”及び宛先ＭＡＣアドレス“Ｂ”を有することをパケットの“マッチ条件”として決定する。また、ＣＰＵ１１は、マッチ条件に対応する“アクション”として、「パケットを出力ポート“１”から出力する（Output: Port 1）」ことを決定する。そして、上記マッチ条件及びアクションを含む検査用のフローエントリを作成する。
【００９６】
ＣＰＵ１１は、検査用のフローエントリをクライアント（ＰＩメッセージの送信元）向けのＦＭメッセージに含める。図８Ｂは、ＦＭメッセージを模式的に示す図である。図８Ｂに示すように、ＦＭメッセージは、ＯＦヘッダとＦＭ情報の格納領域とを含む。当該格納領域には、クライアント向けの検査用のフローエントリが格納される。すなわち、マッチ条件（Match: (Src MAC==A) AND (Dest MAC==B)及びアクション（Action: Output: Port 1）が格納領域に設定される。
【００９７】
ＣＰＵ１１は、図７の１２の処理において、図８Ｂに示すような検査用のフローエントリを含むＦＭメッセージを被疑攻撃者のクライアントに送信する。ＦＭメッセージの送信後に、上記マッチ条件とマッチするパケットを含んだＰＩメッセージがコントローラ１で受信された場合、ＣＰＵ１１は、当該クライアントを攻撃者と判定する。
【００９８】
上述した第１の検査方法（ＰＩ検査）では、受信したＰＩメッセージのペイロード中のパケットとのマッチ条件を含む検査用のフローを含むＦＭメッセージがクライアントに送信される。その後、検査用のフローとマッチするパケットを含むＰＩメッセージが受信された場合、ＣＰＵ１１は、クライアントを不正な攻撃プログラムと判断する。
【００９９】
ＯＦ規格に適合したスイッチ２では、ＦＭメッセージを受信した場合、ＦＭメッセージ中のフローエントリをフローテーブルに登録（フローを設定）する。その後、当該フローとマッチするパケットがスイッチ２に到着した場合には、スイッチ２は、パケットにマッチするフローエントリを検出し、当該フローエントリ中のアクションに従った動作を行う。このため、スイッチ２は、コントローラ１へ当該パケットを含むＰＩメッセージを送信しない。これがＯＦ規格に適合又は準拠した正しい挙動である。
【０１００】
攻撃プログラムは、攻撃対象のコントローラ１に負荷をかけるための機能として、ＰＩメッセージをコントローラ１へ送る機能を有する。これに対し、フローテーブルの状態を管理することは必ずしも攻撃に要する動作ではない。このため、攻撃プログラムは、コントローラ１から受信されたＦＭメッセージを無視し、当該ＦＭメッセージ中のフローとマッチするパケットを含むＰＩメッセージを送信することが考えられる。従って、ＰＩ検査によって不正な攻撃プログラムを検出することができる。
【０１０１】
[ＰＩ検査の変形例]
図９は、図７に示したＰＩ検査に係る処理の変形例を示すフローチャートである。図９に示す１１及び１２の処理では、コントローラ１（ＣＰＵ１１）は、有効期間が設定された検査用のフローエントリを含むＦＭメッセージをクライアントへ送信する。次の１２Ａの処理では、ＣＰＵ１１は、有効期間のタイマ（図示せず）の計時を開始する。その後、タイマの満了を監視する（１２Ｂ）。
【０１０２】
タイマが満了する前に（１２Ｂ，Ｎｏ）受信されたＰＩメッセージ中のパケットが検査用のフローのマッチ条件とマッチするとき（１３及び１４）、ＣＰＵ１１は、クライアントを攻撃者と判定する。これに対し、ＰＩメッセージが受信されることなくタイマが満了したとき（１２Ｂ，Ｙｅｓ）、ＣＰＵ１１は、クライアントを正規のスイッチ２と判定する。
【０１０３】
当該変形例では、検査の期間（長さ）をフローの有効期間で調整することができる。すなわち、同タイプのＰＩメッセージが受信されるまで検査が徒に継続することを回避することができる。また、有効期間が満了すれば、スイッチ２内でフローエントリが削除されるので、検査用のＦＭメッセージの送信後、コントローラ１側で検査用のフローを意識した動作を行うことを回避することができる。例えば、検査用に設定したアクション（ダミーのアクション）を有効期間内にとどめることができる。
【０１０４】
＜＜第２の検査方法＞＞
図１０は、図５に示した０３の処理（検査フェーズ）の詳細の一例である第２の検査方法（「ＦＲ検査」とも呼ぶ）を示すフローチャートである。ＦＲ検査は、図３Ａ及び図３Ｂを用いて説明した第２の攻撃者の検知方法を実行する処理である。
【０１０５】
図１０に示す処理は、例えば、図５の０３の処理で呼び出されるサブルーチンである（以下、「サブルーチン２０」と称する）。サブルーチン２０では、最初の２１の処理において、ＣＰＵ１１は、被疑攻撃者のクライアントに対して、一定時間有効な（有効期間付きの）検査用のフローを設定する（フローエントリを作成する）。
【０１０６】
次の２２の処理では、ＣＰＵ１１は、２１で作成したフローエントリを含む検査用のＦＭメッセージを被疑攻撃者のクライアントへ送信する。次の２３の処理では、ＣＰＵ１１は、検査用のＦＭメッセージで送ったフローに対するＦＲメッセージを待ち受ける状態となる。
【０１０７】
ＦＲメッセージが受信された場合には（２３，Ｙｅｓ）、ＣＰＵ１１は、クライアントの挙動がＯＦ規格に適合又は準拠すると判断する。すなわち、ＣＰＵ１１は、クライアントが正規のスイッチ２であると判断する。その後、ＣＰＵ１１はサブルーチン１０を終了させて処理を０１（図５）へ戻す。
【０１０８】
これに対し、ＦＲメッセージが受信されない場合（２３，Ｎｏ）には、ＣＰＵ１１は、被疑攻撃者のクライアントの挙動がＯＦ規格に適合又は準拠しない、すなわちクライアントが攻撃者（攻撃プログラム）であると判断する。その後、ＣＰＵ１１は、サブルーチン１０を終了し、処理を０５（図５）へ戻す。
【０１０９】
上述したように、ＦＲ検査では、ＣＰＵ１１（コントローラ１）が一定時間だけ有効なフローの設定を行うＦＭメッセージをクライアントに対して発行する。クライアントがＯＦ規格に適合している場合では、クライアントは、ＦＭメッセージ中のフローエントリを指定された時間以降に削除し、削除に伴いＦＲメッセージをコントローラ１へ送信する。
【０１１０】
上記スイッチ２の動作に鑑み、ＣＰＵ１１は、発行したＦＭメッセージに従って一定時間後にＦＲメッセージが発行されているか否かをチェックする。これによって、クライアントの挙動がＯＦ規格に適合するか否かをチェックすることができる。従って、ＦＲメッセージが受信できなかった場合、ＣＰＵ１１は、クライアントを不正な攻撃プログラムと判断する。
【０１１１】
ＦＭメッセージに対する振る舞いは、攻撃に直接必要な機能ではない。また、ＦＲメッセージに関するＯＦ規格に適合した挙動は、フローの状態管理の実装によってなされる。このため、実装には工数（手間）がかかる。従って、攻撃プログラムは、フロー管理及びＦＲメッセージ送信に係る処理を有していないと考えられるため、ＦＲ検査によって攻撃者を検知することができる。
【０１１２】
[ＦＲ検査の具体例]
図１１は、ＦＲ検査で使用される有効期間付きのＦＭメッセージの例を模式的に示す図である。或るクライアントを被疑攻撃者と仮定したコントローラ１（ＣＰＵ１１）は、当該被疑攻撃者に対して設定した既存のフローと異なる有効期間付きのフローを設定する。
【０１１３】
図１１に示す例では、送信元ＭＡＣアドレスが“Ｃ”で、且つ宛先ＭＡＣアドレス“Ｄ”であることをマッチ条件とし、“マッチ条件にマッチするパケットを出力ポート１から出力する”とのアクションを有するフローを含むＦＭメッセージが図示されている。そして、当該ＦＭメッセージには、フローの有効期間が５秒（Hard timeout: 5sec）であることが設定されている。
【０１１４】
ＣＰＵ１１は、図１１に示すような検査用のＦＭメッセージを被疑攻撃者に送り、被疑攻撃者の挙動を観測する。すなわち、ＣＰＵ１１は、ＦＭメッセージの送信から５秒以上が経過した後にＦＲメッセージが被疑攻撃者から受信されるかをチェックすることで、ＯＦ規格適合性を検査する。ＦＲメッセージが受信されなければ、ＣＰＵ１１は、被疑攻撃者を不正な攻撃プログラム（攻撃者）と判断する。
【０１１５】
[ＦＲ検査の変形例１]
図１２は、図１０に示したＦＲ検査の変形例１を示すフローチャートである。図１２に示す処理は、２２以降の処理が次のように図１０の処理と異なっている。すなわち、ＣＰＵ１１は、２２の処理で検査用のＦＭメッセージを送信した後に、図示しない監視タイマの設定を行う（２３Ａ）。
【０１１６】
監視タイマの計時時間は、ＦＭメッセージに設定された有効期間に所定時間を加えた時間長である。ＣＰＵ１１は、監視タイマが満了する前に（２５，Ｎｏ）ＦＲメッセージが受信された場合には（２４，Ｙｅｓ）、クライアントがＯＦ規格に適合するスイッチ２であると判断する。これに対し、ＦＲメッセージが受信されることなく（２４，Ｎｏ）、監視タイマが満了したとき（２５，Ｙｅｓ）には、ＣＰＵ１１は、クライアントがＯＦ規格に適合しない攻撃プログラムであると判断する。ＦＲ検査の変形例１によれば、監視タイマでＦＲメッセージの受信期限が設定されることにより、検査時間が徒に長期化するのを回避することができる。
【０１１７】
[ＦＲ検査の変形例２]
コントローラ１と正規のスイッチ２との間のネットワークに障害が発生している場合においてＦＲ検査が実行されると、ネットワーク障害を起因とするＦＲメッセージのコントローラ１への未達がコントローラ１にて適合性なしと判断される可能性がある。
【０１１８】
図１３は、図１０に示したＦＲ検査の変形例２を示すフローチャートである。図１３に
示す処理では、２３においてＦＲメッセージが受信されないと判定されたときに、ＣＰＵ１１が以下の処理を行う。すなわち、ＣＰＵ１１は、ＲＡＭ１２に予め設定したＦＲの未達回数を示す変数ｉ（初期値＝０）の値をインクリメントする（２６）。続いて、ＣＰＵ１１は、現在のｉの値が予め用意された閾値（第２の閾値）以上か否かを判定する（２７）。
【０１１９】
ｉの値が閾値以上であれば、複数のＦＲ検査においてＦＲメッセージの未達が一定回数連続して発生したことになる。このため、ＣＰＵ１１は、クライアントを攻撃者と判定する。ｉの値が閾値未満であれば、処理が２１に戻る。
【０１２０】
このように、変形例２では、クライアントに対してＦＲ検査（第２の検査メッセージの送信）を所定回数行い、いずれの送信についてもＦＲメッセージ（応答メッセージ）が受信されないときに、クライアントを攻撃者と判定する。従って、ＦＲ検査の変形例２によれば、ＦＲメッセージの未達によって正規のスイッチ２が攻撃者と判定されるのを回避することができる。なお、図１３の処理において、ＦＲ検査回数に上限が設けられるようにしても良い。
【０１２１】
＜＜第３の検査方法＞＞
図１４は、図５に示した０３の処理（検査フェーズ）の詳細の一例である第３の検査方法（「複合検査」とも呼ぶ）を示すフローチャートである。複合検査は、ＰＩ検査とＦＲ検査との双方を実行する処理である。
【０１２２】
図１４において、ＣＰＵ１１は、検査を開始すると、最初の３１の処理でＦＲ検査（サブルーチン２０，図１０）を実行する。次の３２の処理で、ＣＰＵ１１は、ＦＲ検査の結果においてクライアントがＯＦ規格に適合（準拠）するか否かを判定する。ＯＦ規格に適合しない場合には（３２，Ｎｏ）、ＣＰＵ１１は、クライアントが攻撃者であると判断し、処理を０５（図５）へ進める。
【０１２３】
これに対し、ＯＦ規格に適合する場合には（３２，Ｙｅｓ）、次の３３の処理で、ＣＰＵ１１は、ＰＩ検査（サブルーチン１０，図７）を実行する。次の３４の処理で、ＰＩ検査の結果においてクライアントがＯＦ規格に適合（準拠）するか否かを判定する。ＯＦ規格に適合しない場合には（３４，Ｎｏ）、ＣＰＵ１１は、クライアントが攻撃者であると判断し、処理を０５（図５）へ進める。これに対し、ＯＦ規格に適合する場合には（３４，Ｙｅｓ）、ＣＰＵ１１は、クライアントが正規のスイッチ２であると判断し、処理を０１（図５）へ戻す。
【０１２４】
図１４に示したように、複数の検査を組み合わせた複合検査を実施することも可能である。図１４に示す例では、ＰＩ検査とＦＲ検査のうち、ＰＩ検査に比べてフローの設定に影響を与えにくいＦＲ検査を先に行い、スイッチ２におけるフローの状態が変化しないようにしてある。すなわち、ＦＲ検査は有効期間満了でフローが削除されるので、被疑攻撃者が正規のスイッチ２である場合において、フローに従った動作を行うことによる影響が少ない。但し、ＦＲ検査とＰＩ検査との順序が逆である場合も適用し得る。また、ＰＩ検査として図９に示した変形例が適用されても良く、ＦＲ検査として図１２に示した変形例１や図１３に示した変形例２が適用されても良い。
【０１２５】
＜実施形態１の効果＞
実施形態１によれば、ＦＭメッセージを用いた検査によって、ＤｏＳ攻撃を行う端末５（攻撃者）を検知することができる。このとき、端末５とのセッション切断によって、ＤｏＳ攻撃を停止することができる。また、アクセス拒否によって、今後のＤｏＳ攻撃の排除を行うことができる。
【０１２６】
検査機構は、フロー作成及びＦＭメッセージ発行というＯＦ規格に従った既存のアルゴリズムに検査用の短いルーチン（プログラム）を加えることで実装することができる。検査機構の搭載に当たり、情報処理装置１０のハードウェアを改変したり、ハードウェアを加えたりすることを要しない。このため、実施が容易である。
【０１２７】
〔実施形態２〕
以下、実施形態２について説明する。実施形態２における構成は、実施形態１の構成と共通点を有している。このため、主として相違点について説明し、共通点については説明を省略する。
【０１２８】
図１５は、実施形態２に係るＯＦネットワークシステムの例を示す。図１に示したＯＦネットワークシステムとの比較において、コントローラ１（ＯＦＣ）及びスイッチ２（ＯＦＳ）の構成について変更はない。但し、図１５では、或る攻撃者が複数の端末５とコントローラ１とのセッションをそれぞれ確立し、これらの端末５を用いてＤＤｏＳ攻撃（Distributed Denial of Service attack）を行うケースが図示されている。
【０１２９】
実施形態２として、実施形態１に示した単独の端末５を用いたＤｏＳ攻撃ではなく、複数の端末５を用いたＤＤｏＳ攻撃に対する攻撃者の検知方法について説明する。ＤＤｏＳ攻撃では、攻撃者は、単独のＤｏＳ攻撃の場合におけるメッセージ送信量より少ない送信量で、各端末５からメッセージをコントローラ１へ送信することが考えられる。しかし、コントローラ１では、単独のＤｏＳ攻撃と同等、或いはそれ以上のメッセージを受信することになる。
【０１３０】
この場合において、実施形態１では、各端末５から受信されたメッセージの数が閾値を超えないため、各端末５を被疑攻撃者とする検査が実行されない可能性がある。そこで、実施形態２では、単位時間における全クライアントから受信されたメッセージの総数（総メッセージ数）を計数し、当該メッセージ受信数が閾値（所定値）を超える場合に、全クライアントを対象とする検査を実行する。これによって、クライアントに含まれる攻撃者（複数の端末５）をあぶり出すことができる。
【０１３１】
図１６は、実施形態２におけるコントローラ１（ＣＰＵ１１）の処理例を示すフローチャートである。最初の１０１において、ＣＰＵ１１は、タイマを用いて単位時間の計時を行う。タイマの計時時間として、例えば、図６に示したテーブルにある個別のクライアント用の単位時間“ｘ”を適用することができる。
【０１３２】
１０１にて、単位時間が経過すると（１０１，Ｙｅｓ）、ＣＰＵ１１は、次の１０２の処理において、総メッセージ数が閾値を超えているか否かを判定する。すなわち、ＣＰＵ１１は、テーブル（図６）に記憶されている各クライアントの受信メッセージ数を合算して総メッセージ数を算出し、閾値（例えば閾値“ｙ”）と比較する。このとき、総メッセージ数が閾値を超えていなければ（１０２，Ｎｏ）、処理が１０１に戻る。これに対し、総メッセージ数が閾値を超えていれば（１０２，Ｙｅｓ）、処理が１０３に進む。
【０１３３】
なお、単位時間として、個別のクライアント用の単位時間“ｘ”と異なる時間を適用することもできる。また、単位時間の長さの相違に合わせて、各クライアントの受信メッセージ数とは別に、総メッセージ受信数がカウントされるようにしても良い。また、閾値として、閾値“ｙ”と異なる閾値がテーブル又は他の記憶領域に予め記憶されていても良い。
【０１３４】
１０３では、ＣＰＵ１１は、全クライアントを検査済みであるか否かを判定する。全ク
ライアントの検査が済んでいる場合には（１０３，Ｙｅｓ）、ＣＰＵ１１は、図１６の処理を終了する。或いは、１０１へ処理を戻すこともできる。
【０１３５】
全クライアントの検査が済んでいない場合には（１０３，Ｎｏ）、ＣＰＵ１１は、未検査のクライアントを１つ選択し（１０４）、選択したクライアントを対象とするＯＦ規格適合性検査を実行する（１０５）。１０５の処理は、上記した第１〜第３の検査方法のいずれが適用されても良い。
【０１３６】
１０６では、ＣＰＵ１１は、１０５における検査結果がクライアントのＯＦ規格適合性を示すか否かを判定する。クライアントが規格に適合又は準拠しない場合には（１０６，Ｎｏ）、ＣＰＵ１１は、当該クライアントとのセッションを切断し（１０７）、以降のアクセスを拒絶する設定を行う（１０８）。その後、ＣＰＵ１１は、処理を１０３へ戻す。
【０１３７】
実施形態２によれば、実施形態１と同様の効果を得ることができる。また、実施形態２では、コントローラ１（ＣＰＵ１１）は、全クライアントの検査を行い、攻撃者と判定されたクライアントに対し、セッション切断及びアクセス拒否を行う。これによって、ＤＤｏＳ攻撃を回避することができる。実施形態１で説明した個々のクライアントを対象とする処理と、実施形態２でした処理との双方は、１つのコントローラ１として動作する情報処理装置１０で実行することができる。
【０１３８】
なお、上記した実施形態では、OpenFlowをプロトコルの一例として挙げたが、OpenFlowに限定されない。すなわち、コントローラがOpenFlowにおけるFlowModメッセージに類似
したメッセージを配下の（制御下にある）スイッチへ送り、スイッチがFlowModメッセー
ジ受信時におけるOpenFlowに適合又は準拠した挙動を示すネットワークに適用可能である。この場合、ネットワークはＳＤＮを含む。
【０１３９】
以上説明した実施形態の構成は、適宜組み合わせることができる。上述した実施形態は、以下の付記を開示する。
【０１４０】
（付記１）  制御下にあるスイッチにパケットに対する動作を示す制御メッセージを送信するコントローラであって、
制御下にある通信相手に検査用の前記制御メッセージである検査メッセージを送信する処理と、スイッチが前記検査メッセージに基づく処理を行うことで生じる事象が前記通信相手について生じないときに前記通信相手をスイッチではなく攻撃者と判定する処理とを行う制御装置
を含むコントローラ。（１）
【０１４１】
（付記２）  前記制御装置は、スイッチが前記検査メッセージに基づく処理によって送信を停止する所定のメッセージが前記通信相手から受信されたときに前記通信相手を攻撃者と判定する
付記１に記載のコントローラ。（２）
【０１４２】
（付記３）  前記制御装置は、スイッチが前記検査メッセージに基づく処理によって前記コントローラに送信する所定のメッセージが前記通信相手から受信されないときに前記通信相手を攻撃者と判定する
付記１に記載のコントローラ。（３）
【０１４３】
（付記４）  前記制御装置は、或るパケットに対する動作の決定の要求を前記通信相手から受信したときに前記検査メッセージとして前記或るパケットに合致するパケットの識別条件を含む第１の検査メッセージを前記通信相手に送信し、前記第１の検査メッセージの
送信後に前記識別条件に合致するパケットに対する動作の決定の要求が前記通信相手から受信されたときに前記通信相手を攻撃者と判定する
付記１に記載のコントローラ。（４）
【０１４４】
（付記５）  前記制御装置は、前記検査メッセージとして或るパケットに対する動作の有効期間を含む第２の検査メッセージを前記通信相手に送信し、前記第２の検査メッセージの送信後に前記有効期間の満了を示す応答メッセージが前記通信相手から受信されないときに前記通信相手を攻撃者と判定する
付記１又は４に記載のコントローラ。（５）
【０１４５】
（付記６）  前記制御装置は、前記第１の検査メッセージを前記通信相手に送信する第１の検査と前記第２の検査メッセージを前記通信相手に送信する第２の検査とを前記通信相手に対して続けて行うときに前記第２の検査を前記第１の検査より先に行う
付記５に記載のコントローラ。
【０１４６】
（付記７）  前記制御装置は、所定期間有効な第１の検査メッセージを前記通信相手に送信し、前記所定期間の満了前に前記識別条件に合致するパケットに対する動作の決定の要求が前記通信相手から受信されたときに前記通信相手を攻撃者と判定する
付記４から６に記載のコントローラ。
【０１４７】
（付記８）  前記制御装置は、前記第２の検査メッセージを前記通信相手へ送信するときに、前記有効期間の満了後に満了するタイマを設定し、前記タイマの満了前に前記応答メッセージが受信されないときに前記通信相手を攻撃者と判定する
付記６から７のいずれか一項に記載のコントローラ。
【０１４８】
（付記９）  前記制御装置は、前記通信相手に対する前記第２の検査メッセージの送信を所定回数行い、いずれの送信についても前記応答メッセージが受信されないときに、前記通信相手を攻撃者と判定する
付記５から８のいずれか一項に記載のコントローラ。（６）
【０１４９】
（付記１０）  前記制御装置は、単位時間内に前記通信相手から受信されたメッセージの数が閾値を超えたときに、前記通信相手に前記検査メッセージを送信する
付記１から９のいずれか一項に記載のコントローラ。（７）
【０１５０】
（付記１１）  前記制御装置は、制御下にある複数の通信相手から単位時間内に受信されたメッセージの数が所定値を超えるときに、前記複数の通信相手のそれぞれに前記検査メッセージを送信する
付記１から１０のいずれか一項に記載のコントローラ。（８）
【０１５１】
（付記１２）  前記コントローラは、OpenFlowコントローラであり、
前記要求がOpenFlowのPacketInメッセージであり、
前記第１の検査メッセージは、前記通信相手から受信されたPacketInメッセージに含まれたパケットに合致する識別条件と当該識別条件に合致するパケットに対する動作を定めたFlowModメッセージである
付記４に記載のコントローラ。
【０１５２】
（付記１３）  前記コントローラは、OpenFlowコントローラであり、
前記第２の検査メッセージは、有効期間付きのOpenFlowのFlowModメッセージであり、
前記応答メッセージは、OpenFlowのFlowRemovedメッセージである
付記５に記載のコントローラ。
【０１５３】
（付記１４）  制御下にあるスイッチで受信されるパケットに関して当該スイッチが行う動作を示す制御メッセージを当該スイッチに送信するコントローラの攻撃者検知方法であって、
前記コントローラが、
制御下にある通信相手に検査用の前記制御メッセージである検査メッセージを送信し、
スイッチが前記検査メッセージに基づく処理を行うことで生じる事象が前記通信相手について生じないときに前記通信相手をスイッチではなく攻撃者と判定する
ことを含むコントローラの攻撃者検知方法。（９）
【符号の説明】
【０１５４】
１・・・OpenFlowコントローラ（ＯＦＣ）
２・・・OpenFlowスイッチ（ＯＦＳ）
１０・・・情報処理装置（コンピュータ）
１１・・・ＣＰＵ（プロセッサ）
１２・・・ＲＡＭ（メモリ、記憶装置）
１４・・・ＨＤＤ（記憶装置）
１５・・・通信インタフェース
【図１】
0006435695.tif 000002
【図２Ａ】
0006435695.tif 000003
【図２Ｂ】
0006435695.tif 000004
【図３Ａ】
0006435695.tif 000005
【図３Ｂ】
0006435695.tif 000006
【図４】
0006435695.tif 000007
【図５】
0006435695.tif 000008
【図６】
0006435695.tif 000009
【図７】
0006435695.tif 000010
【図８Ａ】
0006435695.tif 000011
【図８Ｂ】
0006435695.tif 000012
【図９】
0006435695.tif 000013
【図１０】
0006435695.tif 000014
【図１１】
0006435695.tif 000015
【図１２】
0006435695.tif 000016
【図１３】
0006435695.tif 000017
【図１４】
0006435695.tif 000018
【図１５】
0006435695.tif 000019
【図１６】
0006435695.tif 000020