JP6841324B2 - 通信装置、システム、方法及びプログラム - Google Patents

通信装置、システム、方法及びプログラム Download PDF

Info

Publication number
JP6841324B2
JP6841324B2 JP2019515560A JP2019515560A JP6841324B2 JP 6841324 B2 JP6841324 B2 JP 6841324B2 JP 2019515560 A JP2019515560 A JP 2019515560A JP 2019515560 A JP2019515560 A JP 2019515560A JP 6841324 B2 JP6841324 B2 JP 6841324B2
Authority
JP
Japan
Prior art keywords
packet
rule
authentication information
network element
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019515560A
Other languages
English (en)
Other versions
JP2019530344A (ja
Inventor
貴之 佐々木
貴之 佐々木
ダニエレ エンリコ アソーニ、
ダニエレ エンリコ アソーニ、
アドリアン ぺリグ、
アドリアン ぺリグ、
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JP2019530344A publication Critical patent/JP2019530344A/ja
Application granted granted Critical
Publication of JP6841324B2 publication Critical patent/JP6841324B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、通信装置、システム、方法及びプログラムに関する。
SDN(Software Defined Network)アーキテクチャでは、コントロールプレーンとデータプレーンが分離され、ネットワークインテリジェンスとその状態が論理的に集中化され、基盤となるネットワークインフラストラクチャがアプリケーションから抽象化される。その結果、これ迄にないプログラマビリティ、自動化、ネットワーク制御が提供され、通信事業者は、例えば、変化する環境やニーズに容易に適応できる、高度にスケーラブルで柔軟なネットワークが構築可能である(非特許文献1)。
図19に示されるように、SDNアーキテクチャは、通常、SDNコントローラ1と、SDNノースバウンドインターフェース4を介してSDNコントローラ1に接続されたSDNアプリケーション2と、SDNコントロールデータプレーンインターフェース(SDNサウスバウンドインターフェース5)を介してSDNコントローラ1に接続されたネットワーク要素3とを含む。SDNコントローラ1は、SDNノースバウンドインターフェース4を介してSDNアプリケーション2(ノースバウンドアプリケーション)から指示、または要件を受信し、受信した指示または要件を、SDNサウスバウンドインターフェース5を介してネットワーク要素3に中継する。
これに限定されるものではないが、ネットワークポリシーは、例えば、一連の要件を満たすポリシーベースの仮想ネットワークを動的に作成するために使用される。SDNコントローラ1は、ネットワークトポロジに基づいて経路計算を実行してもよい。また、SDNコントローラ1は、ネットワークトポロジに加えて、ネットワークポリシーに基づいて経路計算を実行してもよい。ネットワーク要素3は、パケットデータの転送および処理の機能を実行する1つ以上のスイッチを含んでもよい。ネットワーク要素3がさらに1つ以上のミドルボックスを含むネットワークシステムもあり得る。ミドルボックスは、セキュリティルールに基づいてパケットをフィルタリングするファイアウォール、NAT(Network Address Translation:ネットワークアドレス変換)を通過するパケットの送信元および/または宛先IP(Internet Protocol)アドレスを置き換えるNAT、IDS(Intrusion Detection System:侵入検知システム)、ロードバランサーなどの内の少なくとも1つを含んでもよい。SDNのデータプレーンは、エッジスイッチ及びコアスイッチを含んでもよい。エッジスイッチはネットワークの境界で動作し、ネットワークの入口および出口として機能する一方、コアスイッチはネットワークの中心で動作し、各コアスイッチはパケットに一致するルールに基づいてパケットを転送する。以下にSDNの1つの例として、オープンフロー(OpenFlow)の概要を示す。なお、オープンフローは、SDNで利用可能な唯一のプロトコルではない。
スイッチ(OpenFlow Switch(OFS)とも称される)は、フローテーブルに格納される、1つ以上のフローエントリ(ルール)を含むフローテーブルを備える。各フローエントリは、受信パケットのヘッダフィールド情報と照合されるマッチフィールドと、受信パケット数や受信バイト数などの統計情報を含むカウンタフィールドと、ヘッダフィールド情報がマッチフィールドと一致する受信パケットをどのように処理すべきかスイッチに指示する、ゼロ又はそれ以上のアクションを示すアクションフィールドとを含む。パケットを受信すると、スイッチは、受信パケットのヘッダフィールド情報を用いて、自らのフローテーブルを検索する。ミスヒット(不一致)の場合、スイッチは、セキュアチャネルを介して、Packet-Inメッセージを用いて受信パケット(第1のパケット)をコントローラ(SDNコントローラ)に送信する。
Packet-Inメッセージを受信すると、コントローラ(図19のSDNコントローラに対応)は、第1のパケットの送信元と宛先の情報に基づき、ネットワークトポロジ情報を参照してパケットの経路を算出する。当該経路に基づき、コントローラは経路上に配置された各スイッチに対してフローエントリを生成し、フロー変更(Flow-Mod)メッセージを経路上に配置された各スイッチに送信することにより、生成されたフローエントリをそれぞれのスイッチに対して設定する。
フロー変更メッセージには、例えば、スイッチのフローテーブルにフローエントリを追加するflow_mod_add、スイッチのフローテーブルからフローエントリを削除するflow_mod_delete、スイッチのフローテーブル内のフローエントリを変更するflow_mod_modifyが含まれる。Flow_mod_addは、追加されるフローエントリのマッチ条件とアクションを指定する。Flow_mod_addコマンドにおいては、追加するフローエントリの優先度を指定する優先度、フローエントリのライフサイクルを指定するハードタイムアウト、又は、同じ優先度を持つフローエントリの重複が見つかった場合、フローテーブルに新規のフローエントリを追加しないようにするチェック重複フラグ= trueなど情報項目を任意に指定してもよい。コントローラにより設定されたフローエントリのマッチフィールドに一致するヘッダを有する、第1のパケットに続く1つ以上のパケットを受信すると、経路上の各スイッチは、上記1つ以上のパケットを、例えば、フローエントリのアクションフィールドに定義されているように、次のノードに転送する。オープンフローの詳細は、以下の非特許文献2に記載されている。
SDNは、データプレーンにおいて多くの脆弱性を持つ。より具体的には、パケット転送用の、ソフトウェアでプログラム可能なネットワークスイッチは、ソフトウェア面の脆弱性を示し、攻撃(データプレーンへの攻撃)の影響を受けやすい。悪意を持つパケットが、ネットワークスイッチの動作を変更させようとする恐れがあり、侵害を受けたスイッチは、セキュリティ上重要なデータを漏洩する可能性がある。また、侵害を受けたスイッチは、攻撃者によって制御されているホストにトラフィックをリダイレクトする恐れもある。IDS(Intrusion Detection System:侵入検知システム)/IPS(Intrusion Prevention System:侵入防止システム)はリダイレクトされたトラフィックを検出できないため、既存のファイアウォールやIDS/IPSは役に立たない。
基本的に、IDS/IPSは、所定の攻撃シグネチャに基づいてトラフィックをチェックする。攻撃シグネチャは、Webアプリケーションとそのコンポーネントに対する攻撃または攻撃のクラスを識別するルール又はパターンである。
非特許文献1には、各スイッチが、パケットに対して算出されたメッセージ認証コード(Message Authentication Code:MAC)を埋め込み、次のスイッチがMACを確認し、パケットの変更、リダイレクト、及びドロップなどの悪意のあるスイッチ動作を検出できるようにした故障箇所特定技術が開示されている。
MACは、メッセージに対して生成され、メッセージの信頼性を保証するためにメッセージとともに送信される、一種の暗号化されたチェックサムである。MACアルゴリズムは、秘密鍵と認証対象のメッセージとを入力し、秘密鍵を用いて、任意の長さの入力メッセージを固定長のMACに圧縮する。図18に示すように、メッセージの送信者は、秘密鍵K(暗号化対称鍵)を用いてメッセージに対してMACアルゴリズムを実行してMACを生成し、MACとともにメッセージを受信者に送信する。メッセージとMACを受信した受信者は、メッセージと、送信者と受信者との間で共有される秘密鍵K(暗号化対称鍵)とをMACアルゴリズムに供給してMACを算出する。受信者は、算出されたMACと、送信者から受信したMACとが等しいことを検証する。算出されたMACと送信者から受信したMACとが一致する場合、受信者は、メッセージが侵害されておらず、またメッセージが不正に変更、または改ざんされていないと確実に判断できるため、受信者は受信したメッセージを受け入れることができる。送信者から送信されたMACと算出されたMACが一致しない場合、受信者は、メッセージが本物でないと確実に判断できる。
非特許文献2には、データプレーンがエッジスイッチとコアスイッチとからなるSDNsecが開示されている。エッジスイッチはネットワークの境界で動作する。コアスイッチはネットワークの中央で動作し、パケット中の転送情報に基づき、そのパケットを転送する。エッジスイッチは、送信元ホストからパケットを受信し、転送情報(SDN secパケットヘッダ)を上記パケットに埋め込む入口スイッチを含む。さらに、エッジスイッチには、コアスイッチからパケットを受信し、そのパケットを宛先に転送する出口スイッチが含まれる。パケットの転送エントリはMACを含む。 経路上の各スイッチはMACをチェックし、パス情報が変更されているか否かを検出する。さらに、各スイッチはパケットに暗号化マーキングを追加し、出口スイッチは上記マーキングをコントローラに送信するため、コントローラはパケットが実際に通過した経路を確認できる。コントローラは秘密鍵を生成し、データプレーン内のすべてのスイッチと共有する。
特許文献1には、リモートコンピューティング装置の、高信頼性実行環境において確立された、対応するリモート高信頼性メッセージモジュールとの通信に基づいて、上記リモートコンピューティング装置の認証を行うローカルコンピューティング装置が開示されている。ローカルコンピューティング装置は、リモートコンピューティング装置の認証の成功に応答して、上記リモート高信頼性モジュールと暗号鍵を交換する。発信メッセージをリモートコンピューティング装置に安全に送信するために、ローカルの高信頼性メッセージモジュールは、発信メッセージを暗号化し、リモートコンピューティング装置に送信された発信メッセージに暗号的に署名する。リモートコンピューティング装置のリモート高信頼性メッセージモジュールから着信メッセージを安全に受信するために、ローカル高信頼性メッセージモジュールは、交換された暗号鍵に基づき、着信メッセージを復号し、着信メッセージの暗号署名を検証する。
米国特許公報第2016/0065376号明細書
"Software-Defined Networking: The New Norm for Networks"、ONF White Paper、[平成24(2012)年4月13日]、インターネット〈URL:https://www.opennetworking.org/images/stories/downloads/sdn-resources/white-papers/wp-sdn-newnorm.pdf〉 "OpenFlow Switch Specification Version 1.5.0 (Protocol version 0x06)"、[平成26(2014)年12月19日]、インターネット URL:https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-switch-v1.5.0.noipr.pdf "Network Fault Localization with Small TCB"、Xin Zhan、Zongwei Zhou、Geoff Hasker、Adrian Perrig、Virgil Gligor、ICNP 2011、<インターネット URL:http://www.netsec.ethz.ch/publications/papers/TrueNet.pdf> "SDNsec: Forwarding Accountability for the SDN Data Plane"、Takayuki Sasaki、Christos Pappas、Taeho Lee、Torsten Hoefler、Adrian Perrig、ICCCN 2016、<インターネット URL:http://www.netsec.ethz.ch/publications/papers/sdnsec2016.pdf>
上記の特許文献1及び非特許文献1乃至4の各開示の全内容を、本明細書に引用をもって繰り込むものとする。
以下の分析は、本発明の発明者によって与えられたものである。
スイッチが侵害されると、そのスイッチはセキュリティ上重要なデータを漏洩させる可能性がある。侵害を受けたスイッチは、攻撃者によって制御されるホストにトラフィックをリダイレクトする可能性もある。
関連技術においては、不要な、又は悪意のあるトラフィックをフィルタリングするファイアウォールやパケットの送信元アドレスと宛先アドレスを変更するネットワークアドレス変換器を含むミドルボックス、そしてパケットを変更する可能性があるSDNスイッチが考慮されていない。パケットの変更は、MACが無効になるため誤判定の原因となる。
トラスト・コンピューティング技術の関連技術として、インテル(登録商標)SGX(Software Guard Extensions)を使用した、安全なネットワークアーキテクチャが研究テーマになっている。インテルSGXは、ユーザーレベルのコードが、通常のプロセスメモリとは異なり、より高い特権レベルの処理実行から保護されている、エンクレーブと呼ばれるメモリのプライベート領域を割り当てることを可能にする、インテルによる一連の新しい指示である。
したがって、本発明の目的は、ネットワークセキュリティを強化するために、データプレーンからの攻撃に対する耐性を向上させることができる通信装置、システム、方法およびプログラムを提供することである。
本開示の第1の側面によれば、受信したパケットの認証情報を検証する監視部と、前記パケットにマッチするルールの認証情報を検証するルール検証部とを備え、前記監視部は、認証情報が検証された前記ルールに従って、転送するパケットの認証情報を生成する通信装置が提供される。
本開示の他の側面によれば、コントローラと、複数のネットワーク要素と、を備え、
前記ネットワーク要素は、受信したパケットの認証情報を検証する監視部と、前記パケットにマッチするルールの認証情報を検証するルール検証部と、を含み、前記監視部は、認証情報が検証された前記ルールに従って、転送するパケットの認証情報を生成する通信システムが提供される。
本開示のなお他の側面によれば、複数のネットワーク要素を制御するコントローラであって、パケットの送信側及び受信側をそれぞれ形成する一対のネットワーク要素により共有され、前記送信側及び前記受信側により前記パケットの認証情報の生成と検証にそれぞれ使用される秘密鍵を生成する鍵生成部を備え、
前記鍵生成部は、ルールの送信側及び受信側をそれぞれ形成する前記コントローラ及び前記ネットワーク要素により共有され、前記コントローラ及び前記ネットワーク要素により、前記ルールの認証情報の生成と検証にそれぞれ使用される複数の秘密鍵を生成し、
前記コントローラは、
前記ネットワーク要素のためにルールを生成するルール生成部と、
前記コントローラ及び前記ネットワーク要素が共有する前記秘密鍵を用いて、前記生成されたルールに対する認証情報を生成するルール管理部と、
前記ルールを前記認証情報と共に前記ネットワーク要素に送信するルール配付部と、
を備え、
前記ネットワーク要素は、
受信したパケットの認証情報を検証し、前記パケットにマッチするルールの認証情報を検証し、
認証情報が検証された前記ルールに従って、転送するパケットの認証情報を生成するコントローラが提供される。
本開示のさらなる側面によれば、ネットワーク要素による通信方法であって、
受信したパケットの認証情報を検証する検証プロセスを行い、
前記パケットにマッチするルールの認証情報を検証する検証プロセスを行い、
前記ルールは前記コントローラから前記ネットワーク要素に設定され、
前記パケットの認証情報を生成する生成プロセスを行い、
認証情報が検証された前記ルールに基づき、前記パケットを、前記生成されたパケットの認証情報と共に転送する通信方法が提供される。
本開示のさらに他の側面によれば、
受信したパケットの認証情報を検証し、
前記パケットにマッチするルールの認証情報を検証し、
認証情報が検証された前記ルールに従って転送するパケットの認証情報を生成する、ことを含む処理をコンピュータに実行させるプログラムが提供される。
本開示のなおさらなる側面によれば、パケットの送信側及び受信側をそれぞれ形成する一対のネットワーク要素により共有され、前記送信側及び前記受信側により前記パケットの認証情報の生成と検証にそれぞれ使用される秘密鍵を生成する鍵生成処理であって、
ルールの送信側及び受信側をそれぞれ形成する前記コントローラ及び前記ネットワーク要素により共有され、前記コントローラ及び前記ネットワーク要素により、前記ルールの認証情報の生成と検証にそれぞれ使用される複数の秘密鍵を生成する鍵生成処理と、
前記ネットワーク要素のためにルールを生成するルール生成処理と、
前記コントローラ及び前記ネットワーク要素が共有する前記秘密鍵を用いて、前記生成されたルールに対する認証情報を生成するルール管理処理と、
前記ルールを前記認証情報と共に前記ネットワーク要素に送信するルール配付処理と、
を有し、
前記ネットワーク要素は、受信したパケットの認証情報を検証し、前記パケットにマッチするルールの認証情報を検証し、認証情報が検証された前記ルールに従って、転送するパケットの認証情報を生成し、
鍵生成処理、ルール生成処理、ルール管理処理、ルール配付処理をコンピュータに実行させるプログラムが提供される。
本開示の他の側面によれば、本開示の上記の側面によるプログラムが記憶されている、ROM(Read Only Memory)、又はRAM(Random Access Memory)、又はEEPROM(Electrically and Erasable Programmable Read Only Memory)、ハードディスクドライブ(HDD)、CD(Compact Disk)又はDVD(Digital Versatile Disk)などの半導体記憶装置のようなコンピュータが読み取り可能な記録媒体または非一時的な記録媒体が提供される。
本開示によれば、ネットワークセキュリティを強化するために、データプレーンからの攻撃に対する耐性を向上させることが可能になる。
本発明のさらに他の特徴及び利点は、本発明を実施することが企図されている最良の形態の単なる例示により、本発明の実施形態のみを図示及び説明した添付の図面と併せて以下の詳細な説明から当業者には容易に明らかになるであろう。理解されるように、本発明は、他の異なる実施形態が可能であり、そのいくつかの詳細は、本発明から逸脱することなく、様々な明白な点において変更可能である。従って、図面及び説明は、本質的に例示的であるとみなされるべきであり、限定的ではないとみなされるべきである。
本開示の一側面における通信装置の構成を示す図である。 本開示の一側面におけるコントローラの構成を示す図である。 本開示の第1の実施形態の通信システムを模式的に示す図である。 本開示の第1の実施形態におけるスイッチの構成を模式的に示す図である。 本開示の第1の実施形態におけるスイッチの動作を模式的に示す図である。 本開示の第1の実施形態におけるスイッチ又はボックスの構成を模式的に示す図である。 本開示の第1の実施形態におけるスイッチ又はボックスの動作を模式的に示す図である。 本開示の第1の実施形態におけるパケット注入の例を模式的に示す図である。 本開示の第2の実施形態におけるスイッチを示す図である。 ルールの重複の解決策の一例を示す図である。 ルールの重複の解決策の他の一例を示す図である。 ルールの重複の解決策のさらに他の一例を示す図である。 迂回路の一例を示す図である。 迂回に対する解決策の一例を示す図である。 迂回に対する解決策の一例を示す図である。 迂回に対する解決策の一例を示す図である。 本開示のさらなる実施形態における構成を示す図である。 送信者におけるMAC生成と受信者における確認を示す図である。 SDNアーキテクチャを説明する図である。
以下に本開示の実施形態を説明する。
<通信装置>
図1は、本開示の一側面による通信装置を示す図である。図1を参照すると、通信装置100は、隔離された実行環境101とパケット転送部104とを含む。通信装置100は、隔離された実行環境101に配置された監視部102と、隔離された実行環境101に配置されたルール検証部103とを備える。
パケット転送部104は、特に限定されないが、例えば、レイヤ2、レイヤ3のパケットスイッチング、経路検索、パケット転送などを行う。パケット転送部104は、その入出力インタフェース(ポート)間でパケット転送を行う。
隔離された実行環境101は、他のプロセス、OS(オペレーティングシステム)/ハイパーバイザ、デバイスドライバなどに割り当てられたメモリ領域から隔離され保護されているメモリ内(図17の402)の物理アドレス空間の領域内において、プロセッサ上(図17の401)で実行される特定の指示、コマンド、またはシステムコールによって作成され得るプログラミング環境である。例えば、メモリ分割技術を使用して、時間領域および空間領域におけるプロセスの保護および隔離のために隔離された実行環境101を実現してもよい。重要度が低いプロセスが、より高いレベルの重要度を持つ他のプロセスを侵害することはできない。
ハードウェアに実装される、仮想ページアドレスを物理ページアドレスに変換するメモリ管理ユニット(Memory Management Unit;MMU)を、パーティション内で実行中のプロセスが他のパーティションに割り当てられたアドレス空間に読み書きするのを防ぐためのメモリ分割(隔離)に使用してもよい。MMUは、プロセスのためのメモリ空間のベースアドレスが設定されているリロケーションレジスタを使用することにより、各プロセスの仮想(論理)アドレスから物理アドレスへのアドレス変換を行ってもよい。リロケーションレジスタのベースアドレスと論理アドレスを加算して物理アドレスが生成される。また、MMUは、生成された物理アドレスが、プロセスのベースアドレスとリミットアドレスによって定義された範囲内にあるか否かチェックしてもよい。これはメモリ保護の仕組みとして機能する。MMUは、メモリアクセス違反の発生を検出すると(例えば、プロセスがアクセス権を持たないメモリ空間へのアクセス、又は、ベースアドレスにより定義された範囲やプロセスに割り当てられた制限外のアクセスを検出した場合)、故障処理は、例外処理によりアドレス指定エラーを通知されるか、アドレス指定エラーの通知で中断される。
隔離された実行環境101は、TEE(Trusted Execution Environment)に準拠するような環境として実現されてもよい。あるいは、これに限定されないが、隔離された実行環境101として、インテル(登録商標)SGX(Software Guard Extensions)などの詮索攻撃を防ぐためのより洗練されたアプローチを採用してもよい。
隔離された実行環境101に配置された監視部102は、前段の通信装置から受信したパケットのMAC(Message Authentication Code)を検証する。監視部102は、通信装置10及びパケットの送信者の両者間で共有される鍵(暗号化対称鍵)を用いて、受信したパケットのメッセージに対してMACアルゴリズムを実行し、通信装置10がMACアルゴリズムを用いて算出したMACが、受信したMACと一致するか否かを検証する。算出したMACが、送信者から受信したMACと同一である場合、監視部102は、パケットが変更されていないと確実に判断することができる。
監視部102は、通信装置10と、パケットに一致するルールによりパケットの転送先となる次のノードとの間で共有される秘密鍵(暗号化対称鍵)を用いてMACアルゴリズムを実行し、ルールに従って、上記次のノードに転送するパケットのMACを再計算(更新)する。
パケットに対する秘密鍵を使用しMACアルゴリズムによって算出されたMACは、パケットに埋め込まれてもよい。すなわち、パケットは、その中にMACを収容するために、例えばパケットのヘッダ内に情報フィールドを有するように構成されてもよい。パケットに対するMACは、ヘッダフィールド及びパケットのペイロードに関して算出されてもよい。あるいは、 MACはヘッダフィールドのみについて算出されてもよい。この場合、ペイロードの完全性は保証されないが、パケット全体について計算するよりも軽量になる。
隔離された実行環境101に配置されたルール検証部103は、ルールのMACを検証する。通信装置10は、コントローラ(不図示)からルールを受け取る。
ルールは、当該ルールのマッチフィールドに定義された所定のマッチ条件に一致するパケットに適用される1つ以上のアクションを定義するアクションフィールドを持つ。 このルールは、受信パケットのヘッダフィールド情報と照合されるマッチフィールドと、受信パケット数や受信バイト数などの統計情報を含むカウンタフィールドと、ヘッダフィールド情報がマッチフィールドと一致する受信パケットをどのように処理すべきかスイッチに指示する、ゼロ又はそれ以上のアクションを示すアクションフィールドとを含むオープンフローネットワーク上のフローエントリでもよい。
パケットを受信すると、パケット転送部104は、受信したパケットと一致するマッチフィールド(条件)を持つルールを見つけるために、受信パケットのヘッダフィールド情報を用いてルールを検索する。パケット転送部104は、受信パケットにマッチするルールとを隔離された実行環境101に供給する。監視部102は、上述したように受信したパケットのMACの確認を行う。
ルール検証部103は、コントローラ(不図示)と通信装置100との間で共有される秘密鍵(暗号化対称鍵)を用いて、パケット転送部104から供給されたルールのMACを算出し、その算出したMACがコントローラから受信したルールのMACと一致するかどうかを検証する。算出したMACがコントローラから受信したMACと一致する場合、ルール検証部103は、ルールが変更されていないと判断する。
MACは、暗号ハッシュ関数を用いて構築されたHMAC(Hash-based Message Authentication Code:ハッシュベース・メッセージ認証コード)でもよい。あるいは、MACを、CBC-MAC(Cipher Block Chaining Message Authentication Code)などのブロック暗号アルゴリズムを用いて構築してもよい。
通信装置100は、ネットワークスイッチ、ミドルボックスなどを含むことができるが、これらに限定されない。通信装置100は、例えばNFV(Network Functions Virtualization)を用いてサーバ上に実現することができる。
<コンロトーラ及びスイッチ>
図2は、本開示の一側面によるコントローラ20及びスイッチ10−1/10−2の構成を模式的に示す図である。図2において、スイッチ10−1、10−2は、それぞれ、図1を参照して説明した通信装置100に対応する。スイッチ10−1、10−2における隔離された実行環境11、監視モジュール111、ルール検証モジュール112、そしてパケット転送エンジン12は、それぞれ、図1を参照して説明した通信装置100における隔離された実行環境101、監視部102、ルール検証部103、そしてパケット転送部104に対応する。スイッチ10−1及び10−2は、ソフトウェアでプログラム可能なネットワークスイッチとして実現されてもよい。コントローラ20は、SDNコントローラとして実現されてもよい。
図2を参照すると、コントローラ20は、プロセッサ200と、送受信部207と、記憶装置208とを含む。プロセッサ200は、鍵生成部(プロセス)201と、鍵管理部(プロセス)202と、ルール管理部(プロセス)203と、ルール配付部(プロセス)204と、ルール生成部(プロセス)205と、パス算出部(プロセス)206とを含む。各部(プロセス)201〜206のうちの少なくとも1つは、プロセッサ200上で実行される1つ以上のソフトウェアプログラムによって実現されてもよい。
鍵生成部201は、一対のスイッチ10−1及び10−2間で共有され、その一対のスイッチ10−1及び10−2によりパケットのMACの生成および確認に使用される秘密鍵(対称鍵)を生成する。
鍵生成部201は、コントローラ20と各スイッチ10−1及び10−2との間で共有され、コントローラ20によりルールのMACを生成するため、そしてスイッチ10−1及び10−2のそれぞれによりルールのMACを検証するためにそれぞれ使用される秘密鍵(対称鍵)を生成する。あるいは、鍵生成部201は、スイッチ10−1及び10−2に対してマスター鍵を生成してもよい。スイッチ10−1及び10−2は、それぞれ、コントローラ20から配付されたマスター鍵から秘密鍵を生成してもよい。
鍵管理部202は、パケットのMACを生成し検証するための秘密鍵を一対のスイッチ10−1及び10−2に配付する。鍵管理部202は、ルールのMACを検証するための秘密鍵をスイッチ10−1及び10−2にそれぞれ配付する。鍵管理部202は、鍵が記憶装置208に配付される各スイッチ10−1、10−2のノードID(アイデンティティ)(スイッチID)に対応付けて生成した各鍵を保持し管理してもよい。
ルール生成部205は、パス算出部206によるパス算出結果に基づいてルールを生成する。ルールは、ルールの送信先であるスイッチ10−1/10−2がパスに従って受信パケットを次のノードに転送するように構成されている。
パス算出部206は、送受信部207がスイッチ10−1/10−2からPacket_Inメッセージを受信した場合、記憶装置208に記憶されているネットワークトポロジ情報に基づいてパスを算出する。
ルール管理部203は、ルール生成部205により生成されたルールを管理する。ルール管理部203は、コントローラ20とスイッチ10−1/10−2との間で共有される秘密鍵を用いてルールのMACを算出する。ルール管理部203は、スイッチ10−1/10−2のアイデンティティ(ノードID)、ルールのアイデンティティ又は番号(ルールID)、ルールのMACに対応付けて、各ルールを記憶装置208に保持してもよい。
ルール配付部204は、例えば、Flow_mod_addメッセージを用いて、ルールをスイッチ10−1/10−2に送信してもよい。ルール配付部204は、ルールと共に当該ルールのMACを送信してもよい。あるいは、ルール管理部203は、例えば、ルールのMAC送信要求に対するスイッチ10−1/10−2のルール検証モジュール112からの応答として、ルールとは別に、ルールのMACを送信してもよい。
スイッチ10−1/10−2のルール検証モジュール112は、ルールが侵害されるのを防ぐために、コントローラ20から送信されたMACを、隔離された実行環境101内のルール(ルールID)に対応付けて保持してもよい。
コントローラ20の鍵管理部202は、鍵生成部201によって生成された秘密鍵(対称鍵)を、スイッチ10によって公開されている公開鍵を用いて暗号化し、暗号化された秘密鍵をスイッチ10に配付してもよい。コントローラ20は、オープンフローチャネルを用いてスイッチ10と通信する。
スイッチ10は、スイッチ10−1/10−2の秘密鍵を用いて、コントローラ20から配付された暗号化された秘密鍵を復号する。監視モジュール111は、一対のスイッチ10−1及び10−2間で共有される復号化された秘密鍵を用いて、スイッチ10−1/10−2がMACとともに受信したパケットを検証する。
スイッチ10−1/10−2のルール検証モジュール112は、スイッチ10−1/10−2とコントローラ20との間で共有される、復号化された秘密鍵を用いて、スイッチ10−1/10−2に格納されているルールのMACを検証する。スイッチ10−1/10−2のルール検証モジュール112は、算出されたMACがコントローラ20から送信されたルールのMACと一致するか否かをチェックする。
<通信システム>
図3は、本開示の第1の実施形態の通信システムを模式的に示す図である。図3を参照すると、コントローラ20と、スイッチ10と、スイッチ(SDNスイッチ)A/ボックスA10Aと、エンドホスト30−1及び30−2とが設けられている。コントローラ20は、スイッチ10と、スイッチA/ボックスA10Aと、エンドホスト30−1及び30−2とに接続されている。図3では、簡略化のために2つのスイッチを図示しているが、スイッチの数とエンドホストの数は、勿論2つに限定されない。
コントローラ20は、図2を参照して説明したように構成されてもよい。コントローラ20は、隣接する二者間で共有される秘密鍵(対称鍵)を生成する。 例えば、図3の場合、
秘密鍵:エンドホスト30−1とスイッチ10との間で共有されるK1、
秘密鍵:スイッチ10とスイッチA(ボックスA)10Aとの間で共有されるK2、
秘密鍵:スイッチA/ボックスA10Aとエンドホスト30−2との間で共有されるK3。
コントローラ20は、生成した秘密鍵K1を、エンドホスト30−1によって公開されている公開鍵pk1を用いて暗号化し、暗号化された鍵ENC(pk1、K1)をエンドホスト30−1に配付する。
エンドホスト30−1は、自身が有する秘密鍵sk1を用いて、暗号化された鍵ENC(pk1、K1)をDEC(sk1、ENC(pk1、K1))に復号し、スイッチ10に転送されるパケットのMACの生成に用いる秘密鍵K1を得る。
コントローラ20は、生成した秘密鍵K1を、スイッチ10によって公開されている公開鍵pk2を用いて暗号化し、暗号化された鍵ENC(pk2、K1)をスイッチ10に配付する。スイッチ10は、自身が有する秘密鍵sk2を用いて、暗号化された鍵をDEC(sk2、ENC(pk1、K1))に復号し、エンドホスト30−1から受信したパケットのMACの生成に用いる秘密鍵K1を得る。
スイッチ10とスイッチA/ボックスA10Aとの間で共有される鍵K2、スイッチA/ボックスA10Aとエンドホスト30−2との間で共有される鍵K3についても同様である。
コントローラ20は、コントローラ20とスイッチ10との間で共有される秘密鍵(対称鍵)k1と、コントローラ20とスイッチ10Aとの間で共有される秘密鍵(対称鍵)k2を生成し、それぞれの秘密鍵は、それらの間のルールの生成および確認に使用される。
コントローラ20は、生成した秘密鍵k1を、スイッチ10によって公開されている公開鍵pk2を用いて暗号化し、暗号化された鍵ENC(pk1、K1)をスイッチ10に配付する。
スイッチ10は、自身が有する秘密鍵sk2を用いて、暗号化された鍵ENC(pk2、k1)をDEC(sk2、ENC(pk1、K1))に復号し、受信パケットがマッチするルールのMACの確認に用いる秘密鍵k1を得る。
コントローラ20は、スイッチ10又は10Aから送信された Packet-Inメッセージを受信すると、記憶装置(図2の208)に記憶されているネットワークトポロジ情報を参照してフローの経路計算を行う。 算出されたパスに基づいて、コントローラ20は、パス上に配置されている各スイッチについてルールを生成し、例えば、Flow_Modメッセージを用いて、パス上に配置された各スイッチに対して生成されたルールを送信する。
ルールは、受信したパケットのパケットヘッダと照合するマッチフィールドと、パケットが、ルールのマッチフィールドの条件に一致するヘッダを有する場合、そのパケットに適用される1つ以上のアクションを定義するアクションフィールドとを含むように構成されてもよい。
コントローラ20は、コントローラ20とスイッチ10又は10Aとの間で共有される秘密鍵k1を用いてルールのMACを算出する。コントローラ20は、Packet-Inメッセージをコントローラ20に送信したスイッチ10又は10Aに、算出したMACと共にルールを送信する。
スイッチ10は、コントローラから受信したルールのMACを秘密鍵K1を用いて生成し、MACアルゴリズムによって生成されたMACがコントローラ20から受信したMACと一致するか否かを検証する。MACアルゴリズムにより生成されたMACが受信したMACと一致する場合、監視モジュール111は、コントローラ20からスイッチ10への送信中にパケットが改ざんされていないと見なす。
各エンドホスト30−1及び30−2は、隔離された実行環境31に配置された監視モジュール311と、レイヤ2及びレイヤ3のパケットスイッチング、経路検索、及びパケット転送を行うパケット転送エンジン32とを含む。パケット転送エンジン32は、入力インタフェースと出力インタフェースとの間でパケットを転送する。
エンドホスト30−1の監視モジュール311は、秘密鍵K1を用いて、エンドホスト30−2宛てのパケットのMACを生成する。パケット転送エンジン32は、パケット及びMACをスイッチ10に接続されている出力インタフェースに転送する。
図3において、スイッチ10は、図2を参照して説明したように構成されている。スイッチ10は、両方とも隔離された実行環境11に配置された監視モジュール111及びルール検証モジュール112、ならびにパケット転送エンジン12を含む。
監視モジュール111は、エンドホスト30−1から受信したパケットのMAC(Message Authentication Code)を検証する。監視モジュール111は、スイッチ10とエンドホスト30−1との間で共有される鍵(K1)を用いて、受信したパケットのメッセージに対してMACアルゴリズムを実行し、MACアルゴリズムで生成したMACが、受信したMACと一致するか否かを検証する。MACアルゴリズムで生成したMACが、受信したMACと同一である場合、監視モジュール111は、パケットの送信者からスイッチ10への送信中にパケットが変更されていないと判断する。
ルール検証モジュール112は、コントローラから受信したルールのMACを秘密鍵K1を用いて生成し、MACアルゴリズムによって生成されたMACがコントローラ20から受信したMACと一致するか否かを検証する。
ボックスAは、IPアドレス、ポート番号など、パケット又はフレームのヘッダの情報項目の少なくとも1つを変更するNAT(Network Address Translation:ネットワークアドレス変換)機能、パケットフィルタリング、又はVLAD(仮想LAN)IDを変更するタグ変換機能などを含んでもよい。スイッチA/ボックスA10Aは、スイッチ10Aと称される。
スイッチ10Aは、スイッチ10に含まれる構成要素に加えて、パケット変更モジュール121を含む。ルール検証モジュール112によるMACの確認にルールがパスした場合、パケット変更モジュール121は、受信したパケットのヘッダと一致するマッチフィールドと、パケット変更を示すアクションフィールドとを有するルールに基づき、受信パケットのヘッダ情報の変更を許可される。監視モジュール111は、パケット変更モジュール121によって変更されたパケットのMACを再計算(更新)する。
図3において、パケット転送エンジン12は、ルール検証モジュール112によって確認されたルールに基づき、MACと共に、変更されたパケット(変更されたパケットとMAC)をエンドホスト30−2に接続された出力インタフェースに転送する。
ボックスAは、IPアドレス、ポート番号など、パケット又はフレームのヘッダの情報項目の少なくとも1つを変更するNAT(Network Address Translation:ネットワークアドレス変換)機能、パケットフィルタリング、又はVLAD IDを変更するタグ変換機能などを含んでもよい。ボックスA又はSDNスイッチA10Aは、スイッチ10Aと称される。
スイッチ10Aは、スイッチ10に含まれる構成要素に加えて、パケット変更モジュール121を含む。パケット変更モジュール121は、受信したパケットのヘッダと一致するマッチフィールドと、パケット変更を示すアクションフィールドとを有するルールに基づき、受信パケットのヘッダ情報を変更する。
図3において、パケット転送エンジン12は、ルール検証モジュール112によって確認されたルールに基づき、変更されたパケットとMACをエンドホスト30−2に接続された出力インタフェースに転送する。
以下に図3のシステムの動作を説明する。
<初期鍵設定>
コントローラ20(またはネットワーク管理者)は、全てのスイッチ10及び10Aの公開鍵を有する。全てのスイッチ10及び10Aは、コントローラ20の公開鍵を有する。これらの公開鍵は、スイッチ10及び10Aがネットワーク管理者によって物理的に配置されるときに手動でインストールされてもよい。
<パケット確認用の鍵>
コントローラ20は、スイッチiとスイッチjとの間で共有される対称鍵K(i、j)を生成する。コントローラ20は、鍵K(i、j)を隣接する一対のスイッチi、jに配付する。上述したように、コントローラ20は、スイッチ(エッジスイッチ)とエンドホストとの間で共有される対称鍵も生成する。
コントローラ20は、スイッチi、jの公開鍵を用いて、鍵をスイッチi、jに安全に配付する。コントローラ20は、スイッチi、jの公開鍵pk1及びpk2を用いて鍵K(i、j)を暗号化する。
CK1=ENC(pk1, K(i,j))
CK2=ENC(pk2, K(i,j))
そして、暗号化された鍵CK1とCK2とを、それぞれスイッチiとスイッチjとに送る。また、コントローラ20は、スイッチ10/10Aがエンドホスト30−1/30−2に接続されたエッジスイッチであると仮定した場合、スイッチ10/10Aとエンドホスト30−1/30−2との間で共有される対称鍵を、スイッチ10/10Aとエンドホスト30−1/30−2とに配付する。
スイッチi、jは、スイッチi、jのそれぞれの秘密鍵sk1及びsk2を用いて、暗号化された鍵を復号して鍵K(i、j)を取得する。
Key(i,j)=DEC(sk1, CK1)
Key(i,j)=DEC(sk2, CK2)
エンドホスト30−1/30−2は、エンドホスト30−1/30−2のそれぞれの秘密鍵を用いて、暗号化された鍵を復号し、スイッチ10/10Aとエンドホスト30−1/30−2との間で共有される秘密鍵を取得する。
鍵K(i、j)は、パケットを送信するスイッチi及びjのうちの一方によってMACを生成するために使用される。MACと共にパケットを受信するスイッチi及びjのうちの他方のスイッチは、受信したパケットの確認のためにMACを計算する際、鍵K(i、j)を使用する。
隣接する一対のスイッチi、j(図3の10及び10A)は、ディフィー・ヘルマン鍵交換(RFC(Request for Comments)2631)を用いて鍵を交換してもよい。大きな素数pと巡回群Z/pZ = {0、1、…、p-1}の生成元である数gは、公開されている。剰余環Z/pZは、モジュロpによる除算から生じる剰余の演算を有する。 スイッチi、jは、0からp−2の間でランダムに選択された、それぞれの秘密の番号aおよびbを有する。 スイッチiは、A=g^a mod pを計算し、Aをスイッチjに送信し、スイッチjはB=g^b mod pを計算し、Bをスイッチiに送信する。スイッチiがKA=B^a mod pを計算する一方、スイッチjはKB=A^b mod pを計算する。
KA=B^a mod={g^(b)}^a mod ={g^a}^b mod p=KB、
ここで、KA、KBは、スイッチi、jにより対称鍵として使用される鍵である。鍵KA、KB は、パケットのMACの生成および確認のために、隣接する一対のスイッチによって使用されてもよい。図3の隣接する一対のスイッチ10/10A及びエンドホスト30−1/30−2も、スイッチ10/10Aがエンドホスト30−1/30−2に接続されたエッジスイッチであると仮定した場合、ディフィー・ヘルマン鍵交換を用いて鍵を交換してもよい。鍵を交換した隣接する一対のスイッチは、鍵をコントローラ20に通知してもよい。コントローラ20は、隣接する一対のスイッチのノードIDに対応付けて鍵を保持してもよい。
スイッチ(図3の10および10A)はマスター鍵から鍵を生成してもよい。コントローラ(図3の20)はマスター鍵MKをスイッチに配付する。ここで、コントローラ20は、各スイッチの公開鍵を用いてマスター鍵MKを暗号化してスイッチに配付してもよい。スイッチは、スイッチのそれぞれの秘密鍵を用いて、コントローラ20から受信した暗号化されたマスター鍵を復号化する。
次に、隣接する一対のスイッチi、j(図3の10と10A)は、マスター鍵から秘密鍵を導出する鍵導出関数kdf、又は擬似ランダム関数を使用するパスワードを用いて、スイッチi、jの間で共有され、パケットのMACを計算するために使用される対称鍵(i、j)を生成してもよい。
Key(i,j)=kdf(MK, ID(i), ID(j)) if ID(i) > ID(j)
Key(i,j)=kdf(MK, ID(j), ID(i)) if ID(i) < ID(j)
ここで、ID(i)及びID(j)は、それぞれスイッチi及びスイッチjのスイッチIDを示す。
さらに、コントローラ20及びスイッチiは、マスター鍵MKから、コントローラとスイッチIとの間で共有される対称鍵(c、i)を生成してもよい。
Key(c,i)=kdf(MK, ID(i))
機密性を保証するために、エンドホスト30−1/30−2又はスイッチ10/10Aがパケットの暗号化を望む場合、エンドホスト30−1/30−3又はスイッチ10/10Aは、鍵導出関数kdfを用いてマスター鍵から暗号化用の鍵を生成するように構成されてもよい。
Encryption key=kdf(MK,"D")
なお、"D"は、鍵を引き伸ばすための文字列であり、任意の文字列を使用することができる。
MACの生成および確認のための秘密鍵を配付するために、3つ以上のスイッチが秘密鍵を共有することを可能にするグループ鍵共有方式を使用してもよいのは勿論である。
<ルール確認用の鍵>
コントローラ20は、コントローラとスイッチi(i=1…N)との間で共有される対称鍵k(c、i)を生成する。Nはスイッチの数である(図3には2つのスイッチ10及び10Aが示されている)。この鍵k(c、i)は、MAC算出やルールの確認に用いられる。さらに、鍵k(c、i)は、スイッチiからコントローラ20に送信される統計報告の暗号化に使用されてもよい。鍵k(c、i)もまた、スイッチiの公開鍵pkiを用いて安全に配付することができる。
コントローラ20は、暗号化された鍵ENC(pki、k(c、i))をスイッチiに送信する。スイッチiは、暗号化された鍵を受け取ると、自身の秘密鍵skiを用いて暗号化された鍵ENC(pki、k(c、i))を復号し、ルールのMACの生成および確認のために、コントローラ20とスイッチIとの間で共有される対称鍵k(c、i)を取得する。
<スイッチアーキテクチャ>
図4は、図3のスイッチ10の構成を模式的に示す図である。図4を参照すると、スイッチ10は、隔離された実行環境11と、パケット転送エンジン12と、ルールデータベース13と、ネットワークスタック15とを含む。
隔離された実行環境11は、監視モジュール111と、ルール検証モジュール112と、鍵管理機能116とを含む。
ネットワークスタック15は、例えば、1つ以上のNIC(Network Interface Card)と、ネットワークドライバソフトウェアを含む。ネットワークスタック15において、NICは、少なくとも隣接するノード(前段のノードと次段のノード)及びコントローラ20に接続されている。
ルールデータベース13は、コントローラから供給されたルールを格納する記憶部である。ルールデータベース13は、オープンフロースイッチのフローテーブルに対応する。
パケット転送エンジン12は、NICからパケットを受信し、ルールデータベース13を検索する。パケット転送エンジン12は、隔離された実行環境11を呼び出す、又は起動する。
隔離された実行環境11内の鍵管理機能116は、コントローラ20から配付された鍵を取得する。コントローラ20から配付される鍵は以下を含む。
前段のノードから受信したパケットのMACを検証するために使用される第1の鍵、
次段のノードへ転送するパケットのMACを生成するために使用される第2の鍵、
コントローラ20から受信したルールのMACを検証するために使用される第3の鍵。
鍵管理機能116は、隔離された実行環境11において、安全に保護された方法でコントローラ20から配付された鍵を保持し管理してもよい。
監視モジュール111は、第1の鍵を用いて受信パケットに添付されたMACを検証するMAC検証機能113と、次段のスイッチとスイッチ10との間で共有される第2の鍵を用いてMACを更新するMAC更新機能114とを含む。MAC更新機能114によって更新されたMACは、パケットと共に、パケット転送エンジン12及びネットワークスタック15を介して次段のノードに送信される。鍵管理機能116は、パケットに対するMACの確認および生成のために、対応する秘密鍵をMAC検証機能113及びMAC更新機能に提供する。
ルール検証モジュール112は、パケットが有効なルールに従って転送されることを保証するためにルールを検証するルール検証機能115を含む。具体的には、コントローラ20は、スイッチ10とコントローラ20との間で共有される鍵を用いて、ルールを検証するためのMACを生成する。ルール検証機能115は、鍵を用いてMACを算出することによりルールを確認し、そのルールについて計算されたMACと、コントローラ20からルールと共に送信されたMACとの同等性をチェックする。鍵管理機能116は、ルールに対するMACを検証するために、対応する秘密鍵をルール検証機能115に提供する。
ルール検証モジュール112によって確認されたルールは、パケット転送エンジン12によって参照されるルールデータベース13に格納されてもよい。すなわち、パケット転送エンジン12は、送信者(前段のノード)からパケットを受信すると、当該パケットにマッチするルールを見つけるために、ルールデータベース13内のルールを検索する。
ルールには、マッチとそれに対応するアクションが含まれる。マッチは、マッチがパケットのフローを特定するように、パケットヘッダ内のフィールドにおいて特定の値(又は「ドントケア」ワイルドカード値)を使用して表現される。これに限定されないが、フローマッチステートメント(条件)は、例えば、Xかつ範囲[X1、X2]内にある送信元IPアドレス又はMACアドレス、及び/又は、指定されているか、ある範囲内にある宛先IPアドレス又はMACアドレス、TCP(Transmission Control Protocol)又はUDP(User Datagram Protocol)であるプロトコル、及び/又は、何らかの値を有する、又は何らかの範囲内にあるTCP又はUDPの送信元又は宛先ポート、又はワイルドカードについてのマッチを含んでもよい。
<パケット転送手順>
以下、図5を参照して、図4のスイッチ10におけるパケット転送手順について説明する。
<ステップS1>
パケットを受信すると、パケット転送エンジン12は、ルールデータベース13を参照して、受信したパケットのヘッダ情報にマッチするルールを検索する。
<ステップS2>
受信パケットのヘッダ情報に一致するルールのアクションがパケットの転送を指定している場合(ステップS2Aの「Yes」)、パケット転送エンジン12は、隔離された実行環境11を起動し、受信パケットと、それにマッチするルールとを隔離された実行環境11に供給する(ステップS2B)。さらに、パケット転送エンジン12は、監視モジュール111がパケット確認に使用される鍵を決定できるように、前段のスイッチ情報を与える。
<ステップS3>
監視モジュール111のMAC検証機能113は、前段のスイッチと共有する対称鍵を用いて、受信したパケットのMACの確認を行う。MACの確認が失敗した場合、MAC検証機能113はエラーコードをパケット転送エンジン12に返信してもよい。この場合、パケット転送エンジン12は、受信パケットの転送を行わない。ステップS3は、必ずしもステップS2の後でなくともよい。ステップS2とステップS3の順序は逆でもよい。
<ステップS4>
受信パケットが確認に成功した場合(確認OK)、ルール検証機能115は、コントローラ20とスイッチ10との間で共有される対称鍵を用いて、マッチするルールのMACを検証する。マッチするルールについて算出されたMACと、コントローラ20から受信したMACとが同一である場合、次のステップ5がMAC更新機能114によって実行される。ステップS4において、ルール検証機能115は、マッチするルールのMACを計算し、計算したMACと、コントローラ20からルールと共に送信され隔離された実行環境11に保持されているMACとを比較してもよい。あるいは、ルール検証機能115は、スイッチ10のルールID及びノードID(スイッチID)を指定して、マッチするルールについてのMACの送信要求をコントローラ20に発行し、コントローラ20は、上記ルールのMAC又は上記ルールのMACを上記ルールとともに返信してもよい。マッチするルールについて算出されたMACと、コントローラ20から送信されたMACとが一致しない場合(確認NG(不可))、処理はステップS8に進んでよい。
<ステップS5>
MAC更新機能114は、次段のスイッチと共有する対称鍵を用いてパケットのMACを再計算(更新)する。ここで、ステップS4の確認において成功したルールに従い次段のスイッチが決定される。
<ステップS6>
次に、隔離された実行環境11は、更新したMACと共に、パケットをパケット転送エンジン12に返す。
さらに、隔離された実行環境11は、受信パケットにマッチするルールが、ルール検証機能115により行われた確認に成功した旨をパケット転送エンジン12に通知してもよい。
<ステップS7>
パケット転送エンジン12は、ルール検証機能115による確認に成功した、マッチするルールで指定された特定のポートに、パケットを更新されたMACと共に出力する。
<ステップS8>
パケット転送エンジン12は、残りのルールについても上記ステップS1からS7を繰り返す。パケット転送エンジン12は、ルールデータベース13に残っている、検索されるべき他のルールをチェックし、残っていればステップS1に進む。図5は、図4のスイッチ10におけるパケット転送手順の一例を示す図であり、パケット転送エンジン12は、受信したパケットと、受信パケットにマッチするルールとを隔離された実行環境11に提供する。パケット転送手順に関して、ステップS3の監視モジュール111による受信パケットのMACの確認を、ステップS1(受信パケットにマッチするルールの検索)の前に行うような変形も可能である。この場合、パケット転送エンジン12は、隔離された実行環境11を起動し、隔離された実行環境11に配置された監視モジュール111に受信したパケットを提供してもよい。受信パケットが監視モジュール111によるMACの確認に成功した後、パケット転送エンジン12は、図5のステップS1(受信パケットにマッチするルールの検索)を実行し、受信パケットにマッチするルールを、隔離された実行環境11に配置されたルール検証モジュール112に提供してもよい。
<パケット変更モジュールを備えたスイッチアーキテクチャ >
図6は、図3のスイッチ10Aを示す図である。図6を参照すると、スイッチ10Aにおいて、隔離された実行環境11Aは、監視モジュール111及びルール検証モジュール112に加えて、パケット変更モジュール121を含む。パケット変更モジュール121は、パケット転送エンジン12により受信パケットとマッチすると判断されたルールに基づいて、例えば、受信パケットのヘッダ情報など、パケットを変更するように構成される。
ルールのアクションフィールドはmodify-field、すなわち、送信元/宛先IPアドレスフィールドやVLAN(仮想LAN(Local Area Network))タグなどの受信パケットのヘッダフィールドの変更を指定していると仮定する。パケット転送エンジン12は、ルールデータベース13を参照して、受信したパケットのヘッダ情報にマッチするルールの検索を行う。 マッチするルールのアクションフィールドがmodify-fieldを特定している場合、パケット転送エンジン12は、受信したパケットと、マッチするルールとを隔離された実行環境11Aに供給する。
監視モジュール111は、受信パケットのMACの確認を行う。パケット変更モジュール121は、マッチするルールのMACの確認を行う。MAC確認が成功した場合、パケット変更モジュール121は、マッチするルールのアクションに基づいて、受信パケットのヘッダフィールドを変更する。MAC更新機能114はパケットのMACを算出し、パケット転送エンジン12は更新されたMACと共にパケットを転送する。
<パケット転送手順>
以下、図7を参照して、図6のスイッチ10Aにおけるパケット転送手順について説明する。
<ステップS11>
パケット転送エンジン12はパケットを受信し、次にパケット転送エンジン12はルールデータベース13の検索を実行する。
<ステップS12>
マッチするルールがパケット変更を指定している場合(ステップ12Aの「Yes」)、パケット転送エンジン12は、隔離された実行環境を起動し、パケット及びマッチするルールを隔離された実行環境に供給する。
<ステップS13>
監視モジュール111は、受信パケットのMACの確認を行う。MACの確認が失敗した場合、MAC検証機能113はエラーコードをパケット転送エンジン12に返信してもよい。この場合、パケット転送エンジン12は、受信パケットの転送を行わない。
<ステップS14>
受信パケットが確認に成功した場合(確認OK)、ルール検証機能115は、コントローラ20とスイッチ10との間で共有される対称鍵を用いて、マッチするルールのMACを検証する。ルール検証機能115は、コントローラ20とスイッチ10Aとの間で共有される鍵を用いて、ルールのMACをチェックすることにより、パケット転送エンジン12から与えられたルールを検証する。ルール検証機能115は、鍵を用いてルールのMACを算出し、計算したMACと、コントローラ20によりそのルールについて算出されたMACとを比較する。マッチするルールについて算出されたMACとコントローラ20から送信されたMACとが同一でない場合(確認NG(不可))、処理はステップS18に進んでよい。なお、ステップS14とステップS13とは順番を入れ替えてもよい。
<ステップS15>
パケット変更モジュール121は、ルールのマッチ条件が実際に受信したパケットと一致するか否かをチェックする(ステップS15A)。ルールのマッチ条件が実際に受信パケットと一致する場合、パケット変更機能122はルールに従ってパケットの変更を行う(ステップS15B)。ルールのマッチ条件が実際に受信パケットと一致しない場合、ステップS8に進み、何らかのエラーコードがパケット転送エンジン12に返信されてもよい。
<ステップS16>
監視モジュール111は、受信パケットのMACを更新する。
<ステップS17>
次に、隔離された実行環境11は、パケットをパケット転送エンジン12に返す。
<ステップS18>
パケット転送エンジン12は、パケットを指定されたポートに出力する。パケット転送エンジン12は、ルールデータベース13に残っている、検索されるべき他のルールをチェックしてもよく、残っていれば、図5同様、ステップS11に進んでもよい。ステップS13の監視モジュール111による受信パケットのMACの確認を、ステップS11(受信パケットにマッチするルールの検索)の前に行うような変形も可能である。
<パケットの注入>
オープンフロープロトコルは、スイッチにパケットを送信させるPacket_Outメッセージをサポートする。コントローラ20は、特定のスイッチのデータプレーンにパケットを注入することができる。図8は、第1の実施形態によるパケット注入を模式的に示す図である。
Packet_Outメッセージは、スイッチのデータプレーンに注入される生パケットの位置を示す、ヘッダ及びbuffer_idフィールドと、一連のアクションが消費するバイト数を示すin_portフィールド、actions_lenと、生パケットに適用するアクションのリストであるaction[]フィールドと、生パケットを格納するバイト配列であるdata[]フィールドとを含む。
Packet_Outメッセージは、生パケットを運んでスイッチに注入するか、解放する生パケットを格納するスイッチ上のローカルバッファを示すことができる。0xffffffffの値のBuffer_idは、生パケットがバイト配列data[]内に格納されていることを示し、それ以外の場合、buffer_id値は、生パケットを格納するスイッチに、ローカルのパケットバッファを示す。
Packet_outメッセージは、パケットとMACの両方を運ぶ。スイッチ10−1は、Packet_Outメッセージに含まれるパケットを、Packet_Outメッセージで指定されたポートから転送する。次段のスイッチがMACを確認できるように、パケットには、Packet_Outメッセージが有するMACも含まれている必要がある。
スイッチ上の隔離された実行環境内での追加機能を回避するために、コントローラ20は、次段のスイッチ10−2の鍵を用いてパケットのMACを算出する。
次段のスイッチ10−2は、コントローラ20と共有する鍵を用いて、スイッチ10−1から転送されたパケットのMACを算出し、計算したMACと、スイッチ10−1からパケットと共に送信されたMACとの同等性をチェックする。
コントローラ20は全てのper-neighbor鍵を有する。この場合、Packet_Outメッセージに含まれるパケットのMACを算出するためにコントローラ20が使用する鍵と、MACを検証するためにスイッチ10−2が使用する鍵である。
<パケットドロップ>
スイッチ10の隔離された実行環境11は、コントローラ20が統計を比較することによりパケットドロップを検出できるように、定期的にルールの統計報告をコントローラ20に送信してもよい。
コントローラ20が、 正当なアクションと悪意のあるスイッチによるパケットドロップとを区別できるように、パケットドロップは、隔離された実行環境11においても実行される。
パケット変更時と同様に、パケット転送エンジン12は、受信したパケットと、当該パケットのヘッダと一致し、パケットドロップを示すアクションフィールドを有するルールとを隔離された実行環境11に与える。オープンフローのフローエントリには、明示的にドロップを表すアクションは存在しない。
その代わり、アクションセットに出力アクションがないパケットはドロップされる。これは、空の命令セットもしくは空のアクションバケットから、又はクリアアクション命令の実行後に発生する可能性がある。勿論、ルールのアクションフィールドは明示的にパケットドロップを示す。
ルール検証モジュール112は、パケットドロップを示すルールのMAC確認を行う。ルール検証モジュール112はルールのMACを算出し、算出したMACをコントローラ20から送信されたMACと比較する。それらのMACが同一である場合、パケット変更モジュール121はパケットをドロップする。
<ルールの配付>
図9は、第2の実施形態を示す図である。図9を参照すると、スイッチ10Bは、図6を参照して説明したスイッチ10Bの構成に加えて、さらにルール管理要素14を含む。重複を避けるために、スイッチ10A内の他の構成要素の説明は省略する。
ルール管理要素14は、コントローラ20から送信された1つ以上のルールを受信し、ルールデータベース13に登録する。ルールデータベース13は、オープンフローの場合と同様に、ルール(フローエントリ)をフローテーブル形式で格納してもよい。ルール管理要素14とコントローラ20との間のチャネルは、オープンフローチャネルである。
ルール管理要素14は、隔離された実行環境11の外部に配置される。これにより、隔離された実行環境11において実行されるコードやプログラムのサイズの増大を防ぐことができる。
ルールデータベース13内の複数のルールがパケットヘッダと一致する場合は、最も優先度の高いルールをパケットに適用するというポリシーである。パケット転送エンジン12は、パケットと、優先度の最も高いルールとを隔離された実行環境11に提供する。ルール管理要素14は、コントローラ20が設定する、ルールデータベース13内のルールに対する優先順位を保持してもよい。
<フローエントリのキャッシュ>
一部のソフトウェアスイッチの実現においては、パフォーマンス向上のためにフローエントリのキャッシュを使用する。例えば、Open vSwitchは、最初のパケットを受信すると、ワイルドカードを含むエントリから完全一致エントリを生成する。コントローラによりMACが生成されないため、キャッシュエントリには有効なMACがない。Open vSwitchは、分散仮想マルチレイヤスイッチの製品品質のオープンソース実装である。Open vSwitchは、ハイパーバイザ上の仮想スイッチとして実現されてもよい。
元のエントリをルール検証モジュール112に渡すために、キャッシュエントリは元のエントリへのリンクを有してもよい。キャッシュエントリが受信したパケットと一致すると、パケット転送エンジン12は、リンクを参照することによって元のエントリを取得し、元のエントリをルール検証モジュール112に渡す。
あるいは、ルール検証モジュール112は、キャッシュエントリのMACを生成してもよい。まず、パケット転送エンジン12はパケットと元のエントリとを隔離された実行環境11Aに渡し、次にルール検証モジュール112が自身の鍵を用いて完全一致のキャッシュエントリ及びそのMACを生成する。ルール検証モジュール112は、キャッシュエントリとそのMACをパケット転送エンジン12に返す。パケット転送エンジン12は、キャッシュエントリがパケットと一致すると、キャッシュエントリ及びそのMACをルール検証モジュール112に渡す。
<カウンタ>
MACに加えて、監視モジュール111はパケットにカウンタを追加してもよい。カウンタはパケットごとにインクリメントされる。カウンタを用いて、次段のスイッチはパケットドロップ、パケットの重複、及びパケットの並べ替えをチェックできる。例えば、スイッチが同じカウンタ値を受信した場合、監視モジュール111はパケットの重複が発生したと見なす。また、あるカウンタ値が欠落している場合は、パケットドロップが発生したと見なされる。さらに、パケットの並べ替えは、カウンタの順序をチェックすることによって検出することができる。
カウンタを保護するために、パケットヘッダとペイロードに加えて、パケットのMACは、カウンタについても算出できる。
<ルールの優先順位の確保>
隔離された実行環境11外の悪意のあるコードが、隔離された実行環境11に優先度の低いルールを付与する場合がある。
例として、以下のような攻撃(優先度のスプーフィング攻撃)を想定する。悪意のある(侵害された)パケット転送エンジン12は、隔離された実行環境11に低い優先順位のルールを提供することがある。これは意志決定コントローラ20への侵害につながる可能性がある。
この場合、優先度の低いルールは有効なMACを有するため、MAC検証機能113は攻撃を検出することができない。
本実施形態では、以下のようにして優先度のスプーフィング攻撃を防止することができる。
この優先度のスプーフィング攻撃の原因の根本は、複数のルールが1つのパケットに一致することである。パケットに一致するルールが1つだけなら、加害者はこの攻撃を実行できない。
そこで、コントローラ20(図2のルール管理部203)は、ルールを重複しないルールに分割することで、ルールの重複を解消してもよい。
<解決例A>
図10は、高優先度ルールと重複する低優先度ルールを複数の非重複ルール(ルール1とルール2)に分割した例Aを示す図である。
IPアドレス=192.168.0.16〜31のマッチ条件を有する高優先度のルールと、IPアドレス=192.168.0.0〜63のマッチ条件を有する低優先度のルールとが設けられているとする。
高優先度ルールと低優先度ルールは、例えば、宛先IPアドレス=192.168.0.20のヘッダを持つパケットと一致する。低優先度ルールは、それぞれ、高優先度ルールのマッチ条件と重複しないIPアドレス=192.168.0.0〜15、IPアドレス=192.168.0.32〜63のマッチ条件を有する、ルール1と2に分割される。
ルール1と2は上記パケットとマッチしなくなり、1つのルール(高優先度ルール)のみがこのパケットにマッチする。したがって、加害者は、優先度のスプーフィング攻撃を実行できない。
<解決例B>
図11は、低優先度ルールのマッチ条件を縮小する例Bを示す図である。 IPアドレス=192.168.0.16〜31のマッチ条件を有する高優先度のルールと、高優先度のルールと重複するIPアドレス=192.168.0.0〜63のマッチ条件を有する低優先度のルールとが設けられているとする。図11では、IPアドレス=192.168.0.16〜15のマッチ条件を有する低優先度のルールが、 高優先度のルールと重複しない192.168.0.32〜61の範囲に絞り込まれている。
<解決例C>
図12は、不要な場合に低優先度ルールを削除する例Cを示す図である。 IPアドレス=192.168.0.16〜31のマッチ条件を有する高優先度のルールと、高優先度のルールと重複するIPアドレス=192.168.0.0〜63のマッチ条件を有する低優先度のルールとが設けられているとする。高優先度ルールのIPアドレスの範囲は、低優先度ルールの範囲を含んでいる。この場合、低優先度ルールと高優先度ルールと間の重複を解決する1つの方法は、低優先度ルールを削除することである。
<悪意のあるエッジスイッチ>
SGXなどの隔離された実行環境は、NICなどのデバイスに安全な入出力チャネルを提供しない。したがって、スイッチのネットワークスタックが侵害されると、攻撃者はエッジスイッチの監視モジュールを迂回することができる。この攻撃はデータの流出を可能にする。データの流出は、標的のネットワークから、攻撃者が制御する場所への情報データの無許可転送である。
<データの流出>
図13は、データの流出を示す図である。悪意のあるエッジスイッチ内の侵害されたパケット転送エンジン12は、エンドホスト30又はスイッチ10から受信したパケットを、攻撃者のエンドホスト30−2に転送する。
さらに、侵害されたネットワークスタック(図4、6、9の15)は、監視モジュール111がパケットをチェックする前に着信パケットを変更することができる。このような攻撃は、エッジスイッチとエンドホストとの間に実行点が存在しないので、検出および防止することができない。
悪意のあるエッジスイッチによる攻撃の防止には3つの選択肢がある。リンク暗号化、エンドツーエンド暗号化、及びスモールボックスである。
<解決策1:リンク暗号化 >
悪意のあるエッジスイッチによる攻撃を回避するために、図14に示すようにリンク暗号化が導入される。
a)エッジスイッチとエンドホスト間のリンク。
b)エッジスイッチとその隣接スイッチ間のリンク。
エッジスイッチ10とエンドホスト30との間のリンク暗号化の場合、エッジスイッチ10は、隔離された実行環境11内に配置されたリンク暗号化モジュール120を含む。リンク暗号化モジュール120は、エンドホスト30に転送されるパケットを暗号化する。
エンドホスト30は、エッジスイッチ10からパケットを受信したパケット転送エンジン32からのパケットを復号化するリンク暗号化モジュール33を含み、復号化されたパケットデータをアプリケーション34に提供する。リンク暗号化モジュール33は、アプリケーション34からのパケットデータを暗号化し、暗号化されたパケットデータをパケット転送エンジン32に提供する。パケットのヘッダ部分は暗号化されない。エンドホスト30のパケット転送エンジン32は、暗号化されたパケットをエッジスイッチ10に転送する。エッジスイッチ10のパケット転送エンジン12は、受信したパケットのヘッダにマッチするルールを見つけるためにエッジスイッチ10に格納されているルールを検索し、パケットをリンク暗号化モジュール120に提供する。リンク暗号化モジュール120は、エンドホスト30からパケットを受信したパケット転送エンジン12により供給された暗号化されたパケットを復号し、復号されたパケットを隔離された実行環境11内の監視モジュール111に提供する。
エッジスイッチ10とその隣接スイッチ(不図示)との間のリンク暗号化の場合、エッジスイッチ10のリンク暗号化モジュール120は、パケットを確認した監視モジュール111から供給された当該パケットを暗号化して、暗号化されたパケットをパケット転送エンジン12に提供してもよい。パケット転送エンジン12は、確認されたMACを有するルールに従って、監視モジュール111によって算出されたMACと共に暗号化されたパケットを隣接スイッチに転送してもよい。リンク暗号化モジュール120は、隣接スイッチから暗号化されたパケットを受信したパケット転送エンジン12により供給された上記パケットを復号化して、隔離された実行環境11内の監視モジュール111に提供してもよい。 パケットの送信者は受信者の公開鍵を用いてパケットを暗号化し、受信者は受信者の秘密鍵を用いてパケットを復号化してもよい。あるいは、送信者と受信者は対称鍵を用いてパケットの暗号化および復号化を行ってもよい。
図15に示すように、エンドホスト30は、隔離された実行モジュール31を有してもよい。リンク暗号化モジュール33は、隔離された実行環境31に配置されている。リンク暗号鍵と暗号アルゴリズムは隔離された実行環境31で保護されている。
<解決策2:エンドツーエンド暗号化>
エンドツーエンド暗号化(End-to-end encryption;E2EE)は、データが一方の端(送信元)から、もう一方の端(宛先)に転送される間、第三者がデータにアクセスすることを防ぐことができる、安全な通信を実現するためのシステムまたはスキームである。エンドツーエンド暗号化では、送信元が暗号鍵でデータを暗号化し、暗号化されたデータは、暗号化されたデータが安全に宛先に到達するまで復号化されない。送信元のエンドホストは、暗号鍵を保護するために隔離された実行環境で暗号化を行ってもよい。エンドツーエンド暗号化は、PIN(Personal Identification Number)やパスワードなどのデータが、一方のエンドホスト上のアプリケーション(例えば、ブラウザ)と、もう一方のエンドホストとの間のどの中間ノードにも知らされないように、アプリケーション層において安全性を実現できる。
<解決策3:スモールボックス>
暗号化の代わりに、スモールボックスをネットワークの境界上(例えば、イントラネットとインターネットとの間の境界上)に配置することができる。図16は、スモールボックスの構成を示す図である。図16には、エッジスイッチ10とエンドホスト30との間に配置されたスモール(又はボックス)50の構成が示されている。
ボックス50は、自身を通過するパケットのMACを検証するために、隔離された実行環境51内に監視モジュール511を含む。ボックス50は、コントローラ20に接続されている。コントローラは、エッジスイッチ10とボックスとの間、およびボックスとエンドホスト30との間で共有される秘密鍵を配付する。
エッジスイッチ10内の侵害されたネットワークスタック(図4、6、9の15)又はパケット転送エンジン12が、監視モジュール111がパケットをチェックして、そのパケットをエンドホスト30に転送する前に、上記パケットを変更すると想定する。エッジスイッチ10は監視モジュール111を迂回する。パケット転送エンジン12は、パケット及びMACを監視モジュール111に提供せずに、パケットをMACと共にエンドホスト30に転送する。ボックス50は、エッジスイッチ10から転送されたMACと共にパケットを捕捉し、パケットのMACを検証する。
ボックス50がエッジスイッチ10から受信したMACは、スイッチ10の監視モジュール111によって生成されていないため、このMACは、ボックス50の監視モジュール511により受信パケットについて算出されたMACとは異なり、受信パケットは確認に失格する。ボックス50は、エッジスイッチ10から受信したパケットをエンドホスト30に転送しない。ボックス50が存在しなければ、エッジスイッチ10からの変更されたパケットが、エンドホスト30に転送される可能性がある。
この解決策は、エンドホスト30上にSGXなどの隔離された実行環境を必要としない。
<コンピュータプログラムの実装>
図17は、図1の通信装置100、又は図2もしくは図3のスイッチ20もしくは20Aの処理の一部または全部を、コンピュータ(プロセッサ)上で動作するソフトウェアプログラムに基づいて実現する、さらなる実施形態を示す。あるいは、図2のコントローラ20の各部201から206の処理の一部または全部を、コンピュータ(プロセッサ)上で動作するソフトウェアプログラムによって実現してもよい。この場合、図2のプロセッサ200は、図15のプロセッサ401に対応する。
コンピュータシステム400は、プロセッサ401と、メモリ402と、送信機405及び受信機406を含むネットワークインターフェース404とを含む。メモリは、図1、図2又は図3を参照して説明した通信装置100、スイッチ10、10A、又はコントローラ20の処理をプロセッサ401に実行させるためのプログラムを格納するROM(Read Only Memory)、RAM(Random Access Memory)、又はEEPROM(Electrically and Erasable Programmable Read Only Memory)、ハードディスクドライブ(HDD)、CD(Compact Disk)又はDVD(Digital Versatile Disk)などの半導体記憶装置を含んでもよい。
上記の実施形態では、スイッチやコントローラへの適用例を説明したが、勿論、本発明の適用は、SDNやオープンフローネットワークのみに限定されるものではない。本実施形態は、認証情報としてMACを用いたシステムに限定されず、例えば暗号鍵やパスワードなどを用いて生成されたデータ確認や認証情報に適用してもよい。
なお、上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
1 SDNコントローラ
2 SDNアプリケーション
3 ネットワーク要素
4 SDNノースバウンドインターフェース
5 SDNサウスバウンドインターフェース
10、10A、10B スイッチ
11、11A、31、51、101 隔離された実行環境
12、32 パケット転送エンジン
13 ルールデータベース
14 ルール管理モジュール
20 コントローラ
30、30−1、30−2 エンドホスト
100 通信装置
102 監視部
103 ルール検証部
104 パケット転送部
111、311、511 監視モジュール
112 ルール検証モジュール
113 MAC検証機能
114 MAC更新機能
115 ルール検証機能
116 鍵管理機能
121 パケット変更モジュール
122 パケット変更機能
200 プロセッサ
201 鍵生成部
202 鍵管理部
203 ルール管理部
204 ルール配付部
205 ルール生成部
206 パス算出部
207 送受信部
208 記憶装置
400 コンピュータシステム
401 プロセッサ
402 メモリ
403 ネットワークインターフェース
404 送信機
405 受信機

Claims (22)

  1. パケット転送部と、
    受信したパケットの認証情報を、前記パケットの送信元のノードとの間で共有する秘密鍵を用いて検証する監視部と、
    前記パケットにマッチするルールの認証情報を、前記ルールの送信元のコントローラとの間で共有する秘密鍵を用いて検証するルール検証部と、
    を備え、
    前記パケット転送部は、前記パケットを受信すると、通信装置に格納されているルールを検索して前記パケットにマッチするルールを見つけ、前記監視部と前記ルール検証部に、前記パケットと、前記パケットにマッチする前記ルールと、をそれぞれ提供し、
    前記パケットと前記ルールとの両方がそれぞれの認証情報の検証に合格すると、
    前記監視部は、前記認証情報の検証に合格した前記ルールに従って転送先となる次のノードを決定し、前記転送先となる次のノードとの間で共有する秘密鍵を用いて前記パケットの認証情報を生成し、
    前記パケット転送部は、前記認証情報の検証に合格した前記ルールに従って、前記生成した前記認証情報と共に前記パケットを次のノードに転送する、ことを特徴とする通信装置。
  2. 前記監視部及び前記ルール検証部のうちの少なくとも一方は、前記通信装置内に設けられた、隔離された実行環境内に配置される、ことを特徴とする請求項1記載の通信装置。
  3. パケット変更を指示し、前記認証情報の検証が合格した前記ルールに従って、前記パケットを変更するパケット変更部をさらに備える、ことを特徴とする請求項1又は2に記載の通信装置。
  4. 前記パケット変更部は、前記通信装置内に設けられた、隔離された実行環境内に配置される、ことを特徴とする請求項3記載の通信装置。
  5. 複数のルールを格納するルールデータベースと、
    前記ルールデータベースに格納された前記複数のルールを管理するルール管理部と、
    をさらに備える、ことを特徴とする請求項1乃至4のいずれか1項に記載の通信装置。
  6. 前記ルールデータベースは、1つの前記ルールと他の前記ルールとの間で重複が除去された複数の前記ルールを格納する、ことを特徴とする請求項5記載の通信装置。
  7. 前記通信装置は、
    前記ルールに基づいて、受信した前記パケットを転送するスイッチ、
    前記ルールに基づいて、受信した前記パケットを転送し、受信した前記パケットを変更できるスイッチ、又は
    ミドルボックスを含む、ことを特徴とする請求項1乃至6のいずれか1項に記載の通信装置。
  8. コントローラと、
    複数のネットワーク要素と、
    を備え、
    前記ネットワーク要素は、
    パケット転送部と、
    受信したパケットの認証情報を、前記パケットの送信元のノードとの間で共有する秘密鍵を用いて検証する監視部と、
    前記パケットにマッチするルールの認証情報を、前記ルールの送信元の前記コントローラとの間で共有する秘密鍵を用いて検証するルール検証部と、
    を備え、
    前記パケット転送部は、前記パケットを受信すると、前記ネットワーク要素に格納されているルールを検索して前記パケットにマッチするルールを見つけ、前記監視部と前記ルール検証部に、前記パケットと、前記パケットにマッチする前記ルールと、をそれぞれ提供し、
    前記パケットと前記ルールの両方がそれぞれの認証情報の検証に合格すると、
    前記監視部は、前記認証情報の検証に合格した前記ルールに従って転送先となる次のノードを決定し、前記転送先となる次のノードとの間で共有する秘密鍵を用いて前記パケットの認証情報を生成し、
    前記パケット転送部は、前記認証情報の検証に合格した前記ルールに従って、前記生成した前記パケットの認証情報と共に前記パケットを次のノードに転送する、ことを特徴とする通信システム。
  9. 前記ネットワーク要素における前記監視部及び前記ルール検証部のうちの少なくとも一方は、前記ネットワーク要素内に設けられた、隔離された実行環境内に配置される、ことを特徴とする請求項8記載の通信システム。
  10. 前記ネットワーク要素は、パケット変更を示し、前記認証情報が検証された前記ルールに従って前記パケットを変更するパケット変更部をさらに備える、ことを特徴とする請求項8又は9に記載の通信システム。
  11. 前記パケット変更部は、前記ネットワーク要素内に設けられた、隔離された実行環境内に配置される、ことを特徴とする請求項10記載の通信システム。
  12. 前記ネットワーク要素は、
    複数のルールを格納するルールデータベースと、
    前記ルールデータベースに格納された前記複数のルールを管理するルール管理部と、をさらに備える、ことを特徴とする請求項8乃至11のいずれか1項に記載の通信システム。
  13. 前記コントローラは、前記ルールデータベースに格納されている1つのルールと他のルールとの間の重複を、前記重複するルールのうちの1つを互いに重複しない複数のルールに分割、前記重複するルールの1つを縮小、又は前記重複するルールの1つを削除することにより除去するように構成され、前記重複しないルールを前記ネットワーク要素に送信する、ことを特徴とする請求項12に記載の通信システム。
  14. 前記コントローラは、
    パケットの送信側及び受信側をそれぞれ形成する一対のネットワーク要素により共有され、前記送信側及び前記受信側により前記パケットの認証情報の生成と検証にそれぞれ使用される秘密鍵を生成する鍵生成部を備え、
    前記鍵生成部は、ルールの送信側及び受信側をそれぞれ形成する前記コントローラ及び前記ネットワーク要素により共有され、前記コントローラ及び前記ネットワーク要素により前記ルールの認証情報の生成と検証にそれぞれ使用される秘密鍵を生成するように構成され、
    前記コントローラは、
    前記ネットワーク要素のためにルールを生成するルール生成部と、
    前記コントローラ及び前記ネットワーク要素が共有する前記秘密鍵を用いて、前記生成されたルールに対する認証情報を生成するルール管理部と、
    前記ルールの認証情報と共に前記ルールを前記ネットワーク要素に送信するルール配付部と、
    を含む、ことを特徴とする請求項8乃至13のいずれか1項に記載の通信システム。
  15. 前記コントローラは、注入されるパケットの認証情報を算出し、前記パケットを前記認証情報と共に前記ネットワーク要素のうちの第1のネットワーク要素に送信し、
    前記第1のネットワーク要素は、前記パケットの認証情報を生成することなく、前記ネットワーク要素のうちの第2のネットワーク要素に前記認証情報と共に前記パケットを転送し、
    前記第2のネットワーク要素は、前記コントローラと前記第2のネットワーク要素との間で共有される秘密鍵を用いて、前記第1のネットワーク要素から転送された前記パケットの前記認証情報の検証を行う、ことを特徴とする請求項8乃至14のいずれか1項に記載の通信システム。
  16. エンドホストに接続され、エッジネットワーク要素と前記エンドホストとの間の少なくとも1つのリンクが暗号化されている前記エッジネットワーク要素と、
    前記エッジネットワーク要素と隣接するネットワーク要素との間で暗号化されているリンクと、
    を備える、ことを特徴とする請求項8乃至15のいずれか1項に記載の通信システム。
  17. エッジネットワーク要素に接続され、エンドツーエンド暗号化(E2EE)を行うエンドホストを備える、ことを特徴とする請求項8乃至16のいずれか1項に記載の通信システム。
  18. エッジネットワーク要素と、前記エッジネットワーク要素に対向するエンドホストとの間に配置されたボックスを備え、
    前記ボックスは、
    前記エッジネットワーク要素から受信したパケットの認証情報を検証し、前記パケットの認証情報を生成する監視部を含む、ことを特徴とする請求項8乃至17のいずれか1項に記載の通信システム。
  19. ネットワーク要素による通信方法であって、
    パケット転送プロセスでパケットを受信すると、前記ネットワーク要素に格納されたルールを検索して前記パケットにマッチするルールを見つけ、前記受信したパケットと、前記パケットにマッチするルールと、をそれぞれ監視プロセスとルールの検証プロセスに提供し、
    前記監視プロセスでは、受信した前記パケットの認証情報を、前記パケットの送信元のノードとの間で共有する秘密鍵を用いて検証
    前記ルールの検証プロセスでは、前記パケットにマッチするルールの認証情報を、前記ルールの送信元のコントローラとの間で共有する秘密鍵を用いて検証
    前記パケットと前記ルールとの両方が、それぞれの認証情報の検証に合格すると、前記認証情報の検証に合格した前記ルールに従って転送先となる次のノードを決定し、前記転送先となる次のノードとの間で共有する秘密鍵を用いて前記パケットの認証情報を生成する生成プロセスを行い、
    認証情報が検証された前記ルールに基づき、前記認証情報の検証に合格した前記ルールに従って、前記パケットを、前記生成プロセスで生成された前記パケットの認証情報と共に次のノードに転送する、ことを特徴とする通信方法。
  20. 前記ルールが前記認証情報の検証に成功した場合、前記パケットにマッチしパケットの変更を示す前記ルールに基づいて、前記パケットを変更する、ことを特徴とする請求項19記載の通信方法。
  21. パケット転送処理と、
    受信したパケットの認証情報を、前記パケットの送信元のノードとの間で共有する秘密鍵を用いて検証する監視処理と、
    前記パケットにマッチするルールの認証情報を、前記ルールの送信元のコントローラとの間で共有する秘密鍵を用いて検証するルール検証処理と、をコンピュータに実行させるプログラムであって、
    前記パケット転送処理は、前記パケットを受信すると、前記コンピュータに格納されているルールを検索して前記パケットにマッチするルールを見つけ、前記パケットと、前記パケットにマッチする前記ルールと、を前記監視処理と前記ルール検証処理にそれぞれ提供し、
    前記パケットと前記ルールの両方がそれぞれの認証情報の検証に合格すると、
    前記監視処理は、前記認証情報の検証に合格した前記ルールに従って転送先となる次のノードを決定し、前記転送先となる次のノードとの間で共有する秘密鍵を用いて前記パケットの認証情報を生成し、
    前記パケット転送処理は、前記認証情報の検証に合格した前記ルールに従って前記ルールに従って、前記生成した前記パケットの認証情報と共に前記パケットを次のノードに転送する、ことを含むプログラム。
  22. 認証情報が検証され、パケット変更を示す前記ルールに従って、前記パケットを変更することをさらに含む、請求項21記載のプログラム。
JP2019515560A 2016-09-20 2016-09-20 通信装置、システム、方法及びプログラム Active JP6841324B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/004289 WO2018055654A1 (en) 2016-09-20 2016-09-20 Communication apparatus, system, method, and program

Publications (2)

Publication Number Publication Date
JP2019530344A JP2019530344A (ja) 2019-10-17
JP6841324B2 true JP6841324B2 (ja) 2021-03-10

Family

ID=57121471

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019515560A Active JP6841324B2 (ja) 2016-09-20 2016-09-20 通信装置、システム、方法及びプログラム

Country Status (3)

Country Link
US (1) US11297070B2 (ja)
JP (1) JP6841324B2 (ja)
WO (1) WO2018055654A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11086939B2 (en) * 2019-05-28 2021-08-10 Salesforce.Com, Inc. Generation of regular expressions
US11394702B2 (en) * 2019-09-23 2022-07-19 T-Mobile Usa, Inc. Authentication system when authentication is not functioning
US11489823B2 (en) * 2020-03-04 2022-11-01 Cisco Technology, Inc. Network enclave attestation for network and compute devices
US11971980B2 (en) * 2020-05-28 2024-04-30 Red Hat, Inc. Using trusted execution environments to perform a communal operation for mutually-untrusted devices
US12093371B2 (en) 2020-05-28 2024-09-17 Red Hat, Inc. Data distribution using a trusted execution environment in an untrusted device
US11947659B2 (en) 2020-05-28 2024-04-02 Red Hat, Inc. Data distribution across multiple devices using a trusted execution environment in a mobile device
US11388153B2 (en) * 2020-08-25 2022-07-12 United States Of America As Represented By The Secretary Of The Navy One-time pad encryption in a secure communication network
US11848924B2 (en) 2020-10-12 2023-12-19 Red Hat, Inc. Multi-factor system-to-system authentication using secure execution environments
US11722437B2 (en) * 2021-09-14 2023-08-08 Netscout Systems, Inc. Configuration of a scalable IP network implementation of a switch stack
CN113992513B (zh) * 2021-10-26 2023-10-27 新华三信息安全技术有限公司 一种设备信息托管方法和装置
EP4423984A1 (en) * 2021-10-26 2024-09-04 Arista Networks, Inc. Filtering vlan packets having malformed tpids
CN113824747B (zh) 2021-11-25 2022-02-18 之江实验室 一种支持报文负载加密可定义的数据平面可编程实现方法
US12045602B2 (en) 2022-03-25 2024-07-23 Woven By Toyota, Inc. Correctness verification system, method, device, and program

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4815917B2 (ja) * 2005-07-21 2011-11-16 日本電気株式会社 トラフィック検出装置、通信品質監視装置、方法、及び、プログラム
US8695089B2 (en) * 2007-03-30 2014-04-08 International Business Machines Corporation Method and system for resilient packet traceback in wireless mesh and sensor networks
US10210008B2 (en) * 2009-07-31 2019-02-19 Nec Corporation Control server, service providing system, and method of providing a virtual infrastructure
EP2715991A4 (en) * 2011-05-23 2014-11-26 Nec Corp COMMUNICATION SYSTEM, CONTROL DEVICE, COMMUNICATION PROCESS AND PROGRAM
KR20130085543A (ko) 2011-12-19 2013-07-30 한국전자통신연구원 도메인 기반 패킷 포워딩 방법 및 시스템
WO2015084878A1 (en) * 2013-12-02 2015-06-11 Akamai Technologies, Inc. Virtual private network (vpn)-as-a-service with delivery optimizations while maintaining end-to-end data security
US20150229618A1 (en) 2014-02-11 2015-08-13 Futurewei Technologies, Inc. System and Method for Securing Source Routing Using Public Key based Digital Signature
KR20170024032A (ko) 2014-06-30 2017-03-06 알까뗄 루슨트 소프트웨어 정의 네트워크에서의 보안
US9467296B2 (en) 2014-08-29 2016-10-11 Intel Corporation Virally distributable trusted messaging
US10044502B2 (en) * 2015-07-31 2018-08-07 Nicira, Inc. Distributed VPN service
US10567347B2 (en) * 2015-07-31 2020-02-18 Nicira, Inc. Distributed tunneling for VPN

Also Published As

Publication number Publication date
US11297070B2 (en) 2022-04-05
US20210281577A1 (en) 2021-09-09
JP2019530344A (ja) 2019-10-17
WO2018055654A1 (en) 2018-03-29

Similar Documents

Publication Publication Date Title
JP6841324B2 (ja) 通信装置、システム、方法及びプログラム
Mamdouh et al. Authentication and identity management of IoHT devices: achievements, challenges, and future directions
JP6525478B2 (ja) 仮想化とクラウド・コンピューティングの安全確保と管理に適用される、 安全未確保のコンピュータ環境で暗号化キーを確保する方法と装置。
CN103907330B (zh) 在网络环境中用于重定向的防火墙发现的系统和方法
JP5965478B2 (ja) ネットワークにおけるコンポーネントを認証するためのシステムおよび方法
US8800024B2 (en) System and method for host-initiated firewall discovery in a network environment
AU2009276580B2 (en) Network architecture for secure data communications
US20040210754A1 (en) Shared security transform device, system and methods
US9614669B1 (en) Secure network communications using hardware security barriers
Murphy et al. Strong security for active networks
US8175271B2 (en) Method and system for security protocol partitioning and virtualization
KR20150141362A (ko) 네트워크 노드 및 네트워크 노드의 동작 방법
Bose et al. Blockchain as a service for software defined networks: A denial of service attack perspective
CN106797378B (zh) 用于控制通信网络的装置和方法
US20140082719A1 (en) Method and device for network communication management
Paladi et al. TruSDN: Bootstrapping trust in cloud network infrastructure
US10116646B2 (en) Software-defined network threat control
Pandya et al. Framework for securing SDN southbound communication
JP6289656B2 (ja) セキュアなコンピュータシステム間の通信のための方法及びコンピュータネットワーク・インフラストラクチャ
Velayutham Mitigating security threats in service function chaining: A study on attack vectors and solutions for enhancing nfv and sdn-based network architectures
Kumar et al. Security Infrastructure for Cyber Attack Targeted Networks and Services
Gupta et al. Cloud security using encryption techniques
Sharma et al. Secure communication on noc based mpsoc
KR102571495B1 (ko) 광 전송 설비용 보안 시스템 및 방법
Asoni et al. Alcatraz: Data exfiltration-resilient corporate network architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190319

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200819

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210201

R150 Certificate of patent or registration of utility model

Ref document number: 6841324

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350