(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-25
(54)【発明の名称】ネットワークトランスポート層データ処理方法、機器および記憶媒体
(51)【国際特許分類】
G06F 21/60 20130101AFI20240718BHJP
G06F 21/51 20130101ALI20240718BHJP
【FI】
G06F21/60 320
G06F21/51
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023575990
(86)(22)【出願日】2022-04-29
(85)【翻訳文提出日】2023-12-08
(86)【国際出願番号】 CN2022090383
(87)【国際公開番号】W WO2022257643
(87)【国際公開日】2022-12-15
(31)【優先権主張番号】202110655627.0
(32)【優先日】2021-06-11
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】511151662
【氏名又は名称】中興通訊股▲ふん▼有限公司
【氏名又は名称原語表記】ZTE CORPORATION
【住所又は居所原語表記】ZTE Plaza,Keji Road South,Hi-Tech Industrial Park,Nanshan Shenzhen,Guangdong 518057 China
(74)【代理人】
【識別番号】100112656
【氏名又は名称】宮田 英毅
(74)【代理人】
【識別番号】100089118
【氏名又は名称】酒井 宏明
(72)【発明者】
【氏名】郭天
(57)【要約】
本願実施例は通信分野に関し、ネットワークトランスポート層データ処理方法、機器および記憶媒体を開示する。本願のネットワークトランスポート層データ処理方法は、カーネルで動作する拡張バークレーパケットフィルタeBPFプログラムに適用され、配布する必要があるネットワークトランスポート層データパケットを取得するステップと、前記ネットワークトランスポート層データパケットを解析するステップと、前記ネットワークトランスポート層データパケットに対して行う必要があるネットワークトランスポート層データ処理方式を特定するステップと、前記ネットワークトランスポート層データ処理方式に基づいて、前記ネットワークトランスポート層データパケットに対して処理を行うステップと、を含む。
【特許請求の範囲】
【請求項1】
カーネルで動作する拡張バークレーパケットフィルタeBPFプログラムに適用されるネットワークトランスポート層データ処理方法であって、
配布する必要があるネットワークトランスポート層データパケットを取得するステップと、
前記ネットワークトランスポート層データパケットを解析して、前記ネットワークトランスポート層データパケットに対して行う必要があるネットワークトランスポート層データ処理方式を決定するステップと、
前記ネットワークトランスポート層データ処理方式に基づいて、前記ネットワークトランスポート層データパケットに対して処理を行うステップと、を含む、
ネットワークトランスポート層データ処理方法。
【請求項2】
前記ネットワークトランスポート層データパケットを解析して、前記ネットワークトランスポート層データパケットに対して行う必要があるネットワークトランスポート層データ処理方式を決定する前記ステップは、
前記ネットワークトランスポート層データパケットを解析して、前記ネットワークトランスポート層データパケットのプロトコルヘッダを抽出するステップと、
前記プロトコルヘッダと、ユーザプレーンで動作する管理プログラムによって提供される、予め設定された暗号化/復号条件とに基づいて、前記ネットワークトランスポート層データパケットに暗号化または復号が必要か否かを判定するステップと、
前記ネットワークトランスポート層データパケットに暗号化を行う必要がある場合、前記ネットワークデータに対して行う必要があるネットワークトランスポート層データ処理方式を暗号化処理に決定するステップと、
前記ネットワークトランスポート層データパケットに復号を行う必要がある場合、前記ネットワークデータに対して行う必要があるネットワークトランスポート層データ処理方式を復号処理に決定するステップと、を含む、
請求項1に記載のネットワークトランスポート層データ処理方法。
【請求項3】
前記ネットワークトランスポート層データ処理方式は前記暗号化処理であり、
前記ネットワークトランスポート層データ処理方式に基づいて、前記ネットワークトランスポート層データパケットに対して処理を行う前記ステップは、
前記管理プログラムによって提供される、予め設定された暗号化ルールの中から、対象暗号化ルールを選択するステップと、
前記対象暗号化ルールに基づいて、前記ネットワークトランスポート層データパケットのペイロード部分に対して暗号化処理を行うステップと、
暗号化された前記ペイロード部分に基づいて、前記プロトコルヘッダを更新して、暗号化された前記ネットワークトランスポート層データパケットを得るステップと、
暗号化された前記ネットワークトランスポート層データパケットをカーネルに渡し、前記カーネルが暗号化された前記ネットワークトランスポート層データパケットの配布を行うステップと、を含む、
請求項2に記載のネットワークトランスポート層データ処理方法。
【請求項4】
前記ネットワークトランスポート層データ処理方式は、前記復号処理であり、
前記ネットワークトランスポート層データ処理方式に基づいて、前記ネットワークトランスポート層データパケットに対して処理を行う前記ステップは、
前記管理プログラムによって提供される、予め設定された復号ルールの中から、対象復号ルールを選択するステップと、
前記対象復号ルールに基づいて、前記ネットワークトランスポート層データパケットのペイロード部分に対して復号処理を行うステップと、
復号された前記ペイロード部分に基づいて、前記プロトコルヘッダを更新して、復号された前記ネットワークトランスポート層データパケットを得るステップと、
復号された前記ネットワークトランスポート層データパケットをカーネルに渡し、前記カーネルが復号された前記ネットワークトランスポート層データパケットの配布を行うステップと、を含む、
請求項2に記載のネットワークトランスポート層データ処理方法。
【請求項5】
ユーザプレーンで動作する管理プログラムから送信された設定情報更新指令を受信するステップと、
前記設定情報更新指令に基づいて、予め設定された設定情報を更新するステップと、を含み、
前記設定情報は、暗号化/復号条件と暗号化ルールと復号ルールとのうちのいずれか1つまたは複数を含む、
請求項1~4のいずれか一項に記載のネットワークトランスポート層データ処理方法。
【請求項6】
ユーザプレーンで動作する管理プログラムに適用されるネットワークトランスポート層データ処理方法であって、
前記管理プログラム起動後に、カーネルで動作するeBPFプログラムに対する操作指令、および/または前記eBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データを受信したか否かをモニタリングするステップと、
前記eBPFプログラムに対する操作指令を受信した場合、前記操作指令に基づいて前記eBPFプログラムに対して処理を行うステップと、
前記eBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データを受信した場合、前記集計データに対して処理を行うステップと、を含む、
ネットワークトランスポート層データ処理方法。
【請求項7】
前記操作指令は、設定情報更新指令またはeBPFプログラム置換指令またはeBPFプログラムアンロード指令であり、
前記eBPFプログラムに対する操作指令を受信した場合、前記操作指令に基づいて前記eBPFプログラムに対して処理を行う前記ステップは、
前記操作指令が前記設定情報更新指令である場合、前記設定情報更新指令から更新する必要がある設定情報を抽出し、抽出した前記更新する必要がある設定情報に基づいて、前記eBPFプログラムに対応する設定情報マッピングテーブルを更新するステップと、
前記操作指令が前記eBPFプログラム置換指令である場合、前記eBPFプログラム置換指令から置換eBPFプログラムを抽出して、前記置換eBPFプログラムをカーネルに登録し、前記置換eBPFプログラムを前記カーネルに登録した後で、前記カーネルで動作している前記eBPFプログラムをアンロードするステップと、
前記操作指令が前記eBPFプログラムアンロード指令である場合、前記カーネルで動作している前記eBPFプログラムをアンロードするステップと、を含む、
請求項6に記載のネットワークトランスポート層データ処理方法。
【請求項8】
前記eBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データを受信した場合、前記集計データに対して処理を行う前記ステップは、
前記集計データを所定の記憶領域に記憶し、および/または所定の形式で表示するステップを含む、
請求項6または7に記載のネットワークトランスポート層データ処理方法。
【請求項9】
前記管理プログラム起動後に、カーネルで動作するeBPFプログラムに対する操作指令、および/または前記eBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データを受信したか否かをモニタリングするステップの前に、
所定のアドレスから、暗号化/復号条件と暗号化ルールと復号ルールとのうちのいずれか1つまたは複数を含む設定情報を読み取るステップと、
カーネルに登録する必要がある前記eBPFプログラムおよび前記設定情報の完全性を検査するステップと、
前記eBPFプログラムおよび前記設定情報がいずれも完全であった場合、前記eBPFプログラムをカーネルに登録して、前記eBPFプログラムをカーネルで動作させるステップと、
前記設定情報を前記eBPFプログラムに対応する設定情報マッピングテーブルに設定するステップと、を含む、
請求項6~8のいずれか一項に記載のネットワークトランスポート層データ処理方法。
【請求項10】
ユーザプレーンで動作する管理プログラムおよびカーネルで動作するeBPFプログラムと、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに通信接続されたメモリと、を含み、
前記管理プログラムは所在環境のカーネルに前記eBPFプログラムをロードして、前記eBPFプログラムを前記カーネルで動作させるために用いられ、前記メモリには前記少なくとも1つのプロセッサに実行される指令が記憶され、前記指令は前記少なくとも1つのプロセッサで実行されて、前記少なくとも1つのプロセッサが請求項1~5のいずれか一項に記載のネットワークトランスポート層データ処理方法、または請求項6~9のいずれか一項に記載のネットワークトランスポート層データ処理方法を実行できるようにする、
ネットワークトランスポート層データ処理機器。
【請求項11】
コンピュータプログラムが記憶されたコンピュータ可読記憶媒体であって、前記コンピュータプログラムはプロセッサにより実行されたとき、請求項1~5のいずれか一項に記載のネットワークトランスポート層データ処理方法、または請求項6~9のいずれか一項に記載のネットワークトランスポート層データ処理方法を実現する、
コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願は出願番号202110655627.0、出願日2021年06月11日の中国専利出願に基づき、当該中国専利出願の優先権を主張する。当該中国専利出願の内容は援用によりすべて本願に組み入まれる。
【0002】
本願実施例は通信分野に関し、特にネットワークトランスポート層データ処理方法、機器および記憶媒体に関する。
【背景技術】
【0003】
現在、ネットワークの安全環境が日増しに厳しくなるにつれ、システム間プロセスのネットワークトランスポート層通信の暗号化およびその他安全保護措置の重要性がますます高くなってきている。Linuxは目下業界で主流の業務用製品運行システムとして、多くのインストール用ネットワークトランスポート層暗号化プロトコルと、関連インプリメンテーションを提供している。現在、比較的普及したネットワークトランスポート層の暗号化処理方法またはメカニズムとして、インターネット安全プロトコル(Internet Protocol Security,IPSec)とトランスポート層安全プロトコル(Transport Layer Security,TLS)がある。
図1に示すように、実際の運用において、IPSecは開放型システム間相互接続参照モデル(Open System Interconnection Reference Model、OSIモデル)の第3層に位置するネットワーク層で動作し、IPプロトコルのパケットに対して暗号化と認証を行うことで、IPプロトコルに基づくあらゆる通信を保護する。TLSはOSIモデルの第4層に位置するトランスポート層で動作し、一般的に、信頼性の高いトランスポート層プロトコル、例えばコネクション型の伝送制御プロトコル(Transmission Control Protocol,TCP)や、コネクションレス型のユーザデータグラムプロトコル(User Datagram Protocol,UDP)をベースとして、上位層アプリケーションにデータの安全とトータルな保護を提供する。具体的には、クライアント・サーバモデル方式を採用して、2つのアプリケーションプログラム間に安全なトランスポートコネクション/トンネルを構築し、やり取りするデータの盗聴や改ざんを防止している。
【0004】
上記の暗号化処理方法またはメカニズムは、カーネルにおけるデータの暗号化または復号処理を実現できるが、IPSecプロトコルに基づいた方式は、実際の運用においては、例えば新たな仮想ネットワーク機器を創設したり、グローバルルーティングテーブルを変更したりするなど、システム管理者がシステムのネットワーク設定または接続トポロジーを変更する必要がある。即ちシステムの運行環境に対して侵入的な設定を行う必要がある。一方、TLSプロトコルに基づいた方式は、実際の運用においてはアプリケーションプログラムが自発的にトランスポートコネクション/トンネルの構築プロセスを立ち上げて関与する必要があり、関連設定パラメータやデジタル証明書などのセンシティブデータも、通常はアプリケーションプログラム自身でメンテナンスする必要がある。即ちエクスペリエンスプログラム自身に対して侵入的な設定を行う必要がある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
つまり、従来のネットワークトランスポート層の暗号化処理方法は、システム環境または上位層アプリケーションに対して透過的ではない。それらは、システム環境または上位層アプリケーションが自身の状態を変更するとともに、実際の暗号化/復号のフローに関与することを必要とする。このような非透過性が、余分な配置、設定、運営管理および開発の負担をもたらすと同時に、余分なリスクももたらす。例えば、設定またはインプリメントを1つ間違っただけで、データの保護に失敗するかシステム環境に悪影響を与え、ひいては他のアプリケーションにも影響するおそれがある。
【課題を解決するための手段】
【0006】
本願の実施例で提供するネットワークトランスポート層データ処理方法は、カーネルで動作する拡張バークレーパケットフィルタeBPFプログラムに適用されるネットワークトランスポート層データ処理方法であって、配布する必要があるネットワークトランスポート層データパケットを取得するステップと、前記ネットワークトランスポート層データパケットを解析して、前記ネットワークトランスポート層データパケットに対して行う必要があるネットワークトランスポート層データ処理方式を特定するステップと、前記ネットワークトランスポート層データ処理方式に基づいて、前記ネットワークトランスポート層データパケットに対して処理を行うステップと、を含む。
【0007】
本願の実施例でさらに提供するネットワークトランスポート層データ処理方法は、ユーザプレーンで動作する管理プログラムに適用されるネットワークトランスポート層データ処理方法であって、前記管理プログラム起動後に、カーネルで動作するeBPFプログラムに対する操作指令および/または前記eBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データを受信したか否かをモニタリングするステップと、前記eBPFプログラムに対する操作指令を受信した場合、前記操作指令に基づいて前記eBPFプログラムに対して処理を行うステップと、前記eBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データを受信した場合、前記集計データに対して処理を行うステップと、を含む。
【0008】
本願の実施例でさらに提供するネットワークトランスポート層データ処理機器は、ユーザプレーンで動作する管理プログラムおよびカーネルで動作するeBPFプログラムと、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに通信接続されたメモリと、を含み、前記管理プログラムは所在環境のカーネルに前記eBPFプログラムをロードして、前記eBPFプログラムを前記カーネルで動作させるために用いられ、前記メモリには前記少なくとも1つのプロセッサに実行される指令が記憶され、前記指令は前記少なくとも1つのプロセッサに実行されて、前記少なくとも1つのプロセッサが上記のいずれか1つのネットワークトランスポート層データ処理方法を実行できるようにする。
【0009】
本願実施例はさらに、コンピュータプログラムが記憶されたコンピュータ可読記憶媒体を提供する。前記コンピュータプログラムはプロセッサに実行されたとき、上記のいずれか1つのネットワークトランスポート層データ処理方法を実現する。
【図面の簡単な説明】
【0010】
実施例に対応する図面によって、1つまたは複数の実施例を例示的に説明する。これらの例示的な説明は実施例を限定するものではない。
【0011】
【
図1】
図1は従来のIPSecプロトコル、TLSプロトコルおよびOSIモデルの対応関係の概要図である。
【
図2】
図2は本願実施例で提供する管理プログラムに適用されるネットワークトランスポート層データ処理方法のフロー概要図である。
【
図3】
図3は本願実施例で提供する管理プログラムに適用されるネットワークトランスポート層データ処理方法の別のフロー概要図である。
【
図4】
図4は
図2または
図3に示すネットワークトランスポート層データ処理方法に係る、管理プログラムとeBPFプログラムとのインタラクションの概要図である。
【
図5】
図5は本願実施例で提供するeBPFプログラムに適用されるネットワークトランスポート層データ処理方法のフロー概要図である。
【
図6】
図6は本願実施例で提供するeBPFプログラムに適用されるネットワークトランスポート層データ処理方法の別のフロー概要図である。
【
図7】
図7は本願実施例で提供するネットワークトランスポート層データ処理方法に基づいて、ノードAとノードBの間で完全透過的伝送暗号化を実現する概要図である。
【
図8】
図8は本願実施例で提供するネットワークトランスポート層データ処理方法に基づいて、ノードAとノードBの間で上位層アプリケーションプログラムとの共同暗号化を実現する概要図である。
【
図9】
図9は本願実施例で提供するネットワークトランスポート層データ処理機器の構造模式図である。
【発明を実施するための形態】
【0012】
本願実施例における「および/または」という用語は、関連する対象の関連関係を示すもので、例えば「Aおよび/またはB」は、Aのみが存在する、AとBが同時に存在する、Bのみが存在する、の3種類の状況が存在しうることを表す。記号「/」は通常、前後の関連対象が「または」の関係であることを表す。
【0013】
本願実施例における「複数個の」とは2個または2個以上を指し、それ以外の助数詞の場合も同様である。
【0014】
本願実施例の目的、技術スキームおよび利点をより明確にするために、以下、図面と組み合わせて本願の各実施例を詳細に説明する。しかし、当業者であれば理解できることであるが、本願の各実施例においては、読者に本願がよりよく理解されるよう多くの技術的な細部を示している。ただし、これら技術的な細部が無かったり、以下の各実施例に基づいて様々な変更修正を行ったりしても、本願が保護を求める技術スキームを実現することは可能である。以下の各実施例の線引きは説明の便宜のためであり、本願の具体的実現方法をなんら限定するものではなく、各実施例は矛盾しないことを前提に相互に結合や引用が可能である。
【0015】
本願実施例で提供するネットワークトランスポート層データ処理方法、機器および記憶媒体は、eBPFプログラムを管理できる管理プログラムをユーザプレーンにロードして動作させ、さらに管理プログラムを利用して予めカーネルにeBPFプログラムを登録することで、eBPFプログラムによって、カーネルが配布する必要がある、例えば送信するネットワークトランスポート層のデータパケット、受信したネットワークトランスポート層のデータパケットをフックして、配布する必要があるネットワークトランスポート層のデータパケットの、ネットワークトランスポート層データ処理方式を決定し、最終的にeBPFプログラムにより、決定したネットワークトランスポート層データ処理方式に基づいて、現在フックしているネットワークトランスポート層データパケットに対する処理を行う。ネットワークトランスポート層データ処理のプロセス全体を、書き換えられたカーネル内のeBPFプログラムで完遂できるので、システム環境または上位層アプリケーションが自身の状態を変更して、実際のネットワークトランスポート層データ処理のプロセスに関与する必要がなく、システム環境または上位層アプリケーションに対する透過化を実現する。したがって余分な配置、設定、運営管理および開発コストを必要とせず、システム環境と上位層アプリケーションの優れた互換性も保証される。
【0016】
その上、本実施例で提供するネットワークトランスポート層データ処理スキームは、単にカーネルにロードされたeBPFプログラムに基づいてネットワークトランスポート層データパケットに暗号化または復号処理を行う以外に、eBPFプログラムが上位層アプリケーション、例えばユーザプレーンで動作するアプリケーションプログラムと協力して、共同暗号化または復号処理を実現するように設定することもできる。したがって実際のサービス要求に応じて、アップロードアプリケーションの変更をできる限り小さくした状態で、上位層アプリケーションと共同の暗号化/復号方式により、ネットワークトランスポート層データパケットの伝送過程での安全性をより一層高めることができる。
【0017】
また、eBPF技術自身の安全性と高性能に基づいて、本実施例で提供するネットワークトランスポート層データ処理スキームの安全性および全体性能も保証される。
【0018】
図2を参照されたい。
図2は本願実施例で提供するネットワークトランスポート層データ処理方法のフローチャートである。本実施例において、当該方法は主としてユーザプレーンで動作する管理プログラムに適用される。
【0019】
図2に示すように、本実施例で提供するネットワークトランスポート層データ処理方法は、以下のステップを含む。
【0020】
ステップ201:管理プログラム起動後に、カーネルで動作するeBPFプログラムに対する操作指令、および/またはeBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データを受信したか否かモニタリングする。
【0021】
なお、本実施例におけるeBPFプログラム(extended Berkeley Packet Filter、拡張バークレーパケットフィルタ)の元来の目的は、IPTABLE(ネットワークファイアウォールの一種)に取って代わる新しいパケットフィルタを実現することであったが、その後の推移で機能が拡張された。現在のeBPFプログラムは本質的にはカーネル内で動作する特殊なコードであり、ユーザは規定の制限内でファンクションコードを編集することができる。これらのコードはバイトコードにコンパイルされた後、カーネル内のある特殊な仮想マシンにロードされて実行される。したがって、実際のサービス要求に応じてeBPFプログラムを管理できるようにするために、本実施例ではユーザプレーンで動作する管理プログラムを提供し、これによりユーザが管理プログラムを通じて、カーネル内で動作するeBPFプログラムの管理を実現できるようする。
【0022】
上記説明に基づき、本実施例で提供するネットワークトランスポート層データ処理方法の実現およびeBPFプログラムに対する管理を保証するため、管理プログラムはカーネルへのeBPFプログラムのロードまたは登録を担当するだけでなく、さらにユーザインタラクションインタフェースを提供する。
【0023】
本実施例において、上記の管理プログラムがカーネルにeBPFプログラムをロードすることは、eBPFプログラムの対応機能を実現するバイトコードをカーネルの指定位置へロードすることである。これにより、カーネルがネットワークトランスポート層データパケットを配布する必要がある場合、例えば外部へ送信するかまたは受信した場合、カーネルに到達したネットワークトランスポート層データパケットがカーネル内にロードされたeBPFプログラムによりフックされ、さらにeBPFプログラムが、対応する機能インタフェース/関数に基づいて、ネットワークトランスポート層データパケットに相応の処理を行うことができる。
【0024】
対応的に、管理プログラムが提供するユーザインタラクションインタフェースは、具体的には、カーネル内で動作するeBPFプログラムに対するユーザからの操作指令を受信するために用いられる。
【0025】
一例として、管理プログラムはさらに、eBPFプログラムからフィードバックされた、ネットワークトランスポート層データパケットの処理プロセスで生じた成功した暗号化の数/復号の数などの集計データ、および/またはeBPFプログラムの動作状態や現在の設定パラメータなどの情報を、ユーザインタラクションインタフェースを介してユーザにフィードバックし、ユーザがeBPFプログラムの現在の動作状況に基づいて後続の操作を行えるようにする。
【0026】
上記の説明からわかるように、管理プログラム起動後に、具体的にはユーザインタラクションインタフェースをモニタリングすることにより、カーネルで動作するeBPFプログラムに対する操作指令が現在あるか否かを判定し、カーネル内で動作するeBPFプログラムとのインタラクション用のインタフェース、例えばシステムコール/インタフェース(syscall)をモニタリングすることにより、eBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データを受信したか否かを判定する。
【0027】
対応的に、カーネルで動作するeBPFプログラムに対する操作指令を受信したことを検出した場合,ステップ202へ進む。カーネルで動作するeBPFプログラムが出力したネットワークトランスポート層データパケットを受信したことを検出した場合、ステップ203へ進む。
【0028】
なお、一例として、管理プログラムは、カーネルで動作するeBPFプログラムからフィードバックされた現在状態情報、例えば、復号に成功したネットワークトランスポート層データパケットの数、暗号化に成功したネットワークトランスポート層データパケットの数、およびeBPFプログラムが現在暗号化/復号を行うとき準拠する暗号化/復号条件やルールなどを受信した場合、予め設定されたサービス要求に基づいて、受信した上記情報を記憶および/または所定の形式で表示するか、あるいはユーザインタラクションインタフェースを介してユーザにフィードバックすることができる。
【0029】
ステップ202:操作指令に基づいてeBPFプログラムに対して処理を行う。
【0030】
一例として、管理プログラムがユーザインタラクションインタフェースを介して受信する、カーネル内で動作しているeBPFプログラムに対する操作指令は、設定情報更新指令、eBPFプログラム置換指令、またはeBPFプログラムアンロード指令の3つに分けられる。
【0031】
対応的に、上記3つの異なる操作指令に対応して、管理プログラムがすでにカーネル内で動作しているeBPFプログラムに対して行う処理も異なる。具体的には以下のとおりである。
【0032】
(1)操作指令が設定情報更新指令である場合、すでにカーネル内で動作しているeBPFプログラムに対する処理は具体的には以下のとおりである。
【0033】
まず、設定情報更新指令から、更新する必要のある設定情報を抽出する。
【0034】
なお、本実施例で述べる設定情報は、暗号化/復号条件、暗号化ルール、復号ルールのうちのいずれか1つまたは複数を含む。
【0035】
上記の暗号化/復号条件は、具体的には、どのネットワークトランスポート層プロトコルを採用するか、暗号化処理または復号処理を行う必要がある、対応する4タプル(送信元ポート番号、宛先ポート番号、送信元IPアドレス、宛先IPアドレス)のネットワークトランスポート層データパケット、について予め取り決めたものである。
【0036】
対応的に、上記の暗号化ルールは少なくとも、暗号化処理を行う必要があるネットワークトランスポート層データパケットに対する暗号化処理に用いる、具体的暗号化アルゴリズムを含む。
【0037】
本実施例において、規定の暗号化アルゴリズムがキーを使用する必要がある場合、暗号化ルールにはさらに、規定の暗号化アルゴリズムで暗号化するためのキーが含まれる必要がある。
【0038】
対応的に、上記の復号ルールは少なくとも、復号処理を行う必要があるネットワークトランスポート層データパケットに対する復号処理に用いる、具体的復号アルゴリズムを含む。
【0039】
本実施例において、規定の復号アルゴリズムでキーを使用する必要がある場合、復号ルールにはさらに、規定の復号アルゴリズムで復号するためのキーが含まれる必要がある。
【0040】
また、暗号化処理と復号処理は、通常ペアになって現れるものである。したがってネットワークトランスポート層データパケットの送信側、例えばノードAのカーネル内で動作するeBPFプログラムの暗号化処理に関する関連設定情報は、ネットワークトランスポート層データパケットの受信側、例えばノードBのカーネル内で動作するeBPFプログラムの復号処理に関する関連設定情報と相互に適合する必要がある。
【0041】
そして、抽出した更新する必要がある設定情報に基づいて、すでにカーネル内で動作しているeBPFプログラムに対応する設定情報マッピングテーブルを更新する。
【0042】
本実施例で述べる設定情報マッピングテーブルとは、eBPF技術に係るBPF MAPである。具体的な運用においては、カーネル内で動作可能な異なるeBPFプログラムごとに、それぞれ1つの対応するBPF MAPが設計されてもよいし、1つの全面的なBPF MAPを設計し、カーネル内で動作可能なすべてのeBPFプログラムが統一して1つのBPF MAPを共有してもよい。どちらの方式にせよ、サービス要求に基づいて事前にBPF MAPを設計する場合、eBPFプログラムが暗号化、復号等を行うのに必要なパラメータをBPF MAPに定義する必要がある。
【0043】
対応的に、設計されたBPF MAPに基づいて、管理プログラムがカーネル内で動作するeBPFプログラムを管理するとき、設定情報の変更が必要な場合は、変更する必要がある設定情報を当該BPF MAPにおいて更新するだけでよく、eBPFプログラムはカーネルによって有効化された後は,自律的にBPF MAPで必要な設定情報を捜して、捜し出した設定情報に基づいて相応の操作を行う。
【0044】
つまり、BFP MAPは実質的にはカーネルが提供する一種の交換メカニズム/通信メカニズムであり、BPF MAPに基づいて、ユーザプレーンで動作する管理プログラムと、カーネルで動作するeBPFプログラムとのインタラクションが実現する。
【0045】
(2)操作指令がeBPFプログラム置換指令である場合、すでにカーネル内で動作しているeBPFプログラムに対する処理は具体的には以下のとおりである。
【0046】
まず、eBPFプログラム置換指令から置換eBPFプログラムを抽出する。
【0047】
そして、置換eBPFプログラムをカーネルに登録するとともに、置換eBPFプログラムをカーネルに登録した後で、カーネルで動作しているeBPFプログラムをアンロードする。
【0048】
(3)操作指令がeBPFプログラムアンロード指令である場合、すでにカーネル内で動作しているeBPFプログラムに対する処理として、具体的にはカーネル内で動作するeBPFプログラムをアンロードする。
【0049】
ステップ203:集計データを処理する。
【0050】
一例として、管理プログラムがeBPFプログラムから提供された、ネットワークトランスポート層データパケットに対して暗号化/復号処理を行うとき集計した集計データ、例えば成功した暗号化の数または成功した復号の数を受信した場合、受信した集計データに対する処理は、集計データを所定の記憶領域に記憶し、および/または所定の形式で表示することであってよい。
【0051】
また、付け加えると、実際の運用においては、管理プログラムは受信した操作指令がeBPFプログラムアンロード指令であるとき、eBPFプログラムのアンロード後に現在のメッセージ処理操作から退出し、本実施例で提供するネットワークトランスポート層データ処理方法の実行を停止する。それ以外の状況では、例えば設定パラメータ変更指令またはeBPFプログラム置換指令に基づいて、すでにカーネル内で動作するeBPFプログラムに対する処理または集計データの処理を完了すると、自動で次のメッセージ処理に移る。
【0052】
上記の説明から容易に理解されるとおり、本実施例で提供するネットワークトランスポート層データ処理方法は、ユーザプレーンに管理プログラムを配置して起動させ、管理プログラムによってカーネルに暗号化/復号処理を実現可能なeBPFプログラムをロードし、カーネル内で動作するeBPFプログラムからのフィードバックおよびユーザからの操作指令をモニタリングする。さらに、モニタリングの検出結果に基づいて、ユーザプレーンにおいて対応する結果をそのまま示すか、あるいはカーネル内で動作するeBPFプログラムに対する管理を行い,これによりeBPFプログラムに対する動的管理を実現する。プロセス全体にわたって、システム環境または上位層アプリケーションは自身の状態を変更して、実際のネットワークトランスポート層データ処理プロセスに関与する必要がないので、システム環境、上位層アプリケーションが何ら変更されない状況において、ネットワークトランスポート層データの暗号化/復号処理を実現できる。
【0053】
また、管理プログラムがカーネル内で動作するeBPFプログラムを直接管理するので、システム環境や上位層アプリケーションが感知しない状況で、暗号化/復号処理を行うeBPFプログラムの有効化や無効化、設定情報の変更などの操作を実現できる。これにより、伝送が必要なデータ即ちネットワークトランスポート層データパケットに対する暗号化/復号処理を動的に調整でき、ネットワークトランスポート層データ処理を、実際の変動するサービス要求により合致させることができる。
【0054】
これに基づいて、本実施例で提供するネットワークトランスポート層データ処理方法は、システム環境またはアップロードアプリケーションに対する透過性を真に実現するので、余分な配置、設定、運営管理および開発コストを必要とせず、システム環境と上位層アプリケーションの優れた互換性も保証される。
【0055】
また、eBPF技術自身の安全性と高性能に基づいて、本実施例で提供するネットワークトランスポート層データ処理スキームの安全性および全体性能も保証される。
【0056】
また、一例として、絶対的な透過性を追及しない場合、または特殊なデータ保護の要求がある場合、eBPFプログラムと上位層アプリケーションとが協力してデータの暗号化または保護を実現してもよい。例えば、上位層アプリケーションが故意に不正な内容のデータパケットを送信してみる。受信側の環境において対応するeBPFプログラムが配置されている(且つパラメータ設定が正確な)場合、受信側カーネルがデータを見る前に、eBPFプログラムが不正なデータを修復した後で、処理するようカーネルに渡すことができる。これにより受信側アプリケーションは正確に情報を読み取ることができる。受信側の環境において対応するeBPFプログラムが配置されていない(またはパラメータ設定が正確でない)場合、受信側カーネル(および伝送路を傍受している悪意の第三者)はデータパケットが不正であると見なしてこれを破棄することで、データの安全を保護する。
【0057】
このような共同暗号化方式では、ノード、例えばノードAで上位層アプリケーションにより暗号化する場合、外部へネットワークトランスポート層データパケットを送信するだけのノードAについては、ユーザプレーンに管理プログラムを配置せず、カーネル内にeBPFプログラムをロードしなくてよい。
【0058】
対応的に、ノードAで上位層アプリケーションにより暗号化したネットワークトランスポート層データパケットを受信するノードBについては、ユーザプレーンに管理プログラムを配置し、カーネル内にeBPFプログラムをロードする必要があり、これにより、協力してネットワークトランスポート層データパケットに対する処理を実現する。
【0059】
図3を参照されたい。
図3は本願実施例で提供するネットワークトランスポート層データ処理方法の別のフローチャートである。本実施例において、当該方法は主としてユーザプレーンで動作する管理プログラムに適用される。
【0060】
本実施例において、管理プログラムを導入してカーネルにeBPFプログラムをロードする具体的操作は、
図3に示すとおりであって、本実施例で提供するネットワークトランスポート層データ処理方法は以下のステップを含む。
【0061】
ステップ301:所定のアドレスから設定情報を読み取る。
【0062】
本実施例において、カーネルに配布する必要があるネットワークトランスポート層データが存在する場合、カーネルが他のノードから受信した、対内的なネットワークトランスポート層データパケットであるか、カーネルが他のノードへ送信する必要がある、対外的なネットワークトランスポート層データパケットであるかに関わらず、カーネルに到達したときに、カーネル内で動作するeBPFプログラムにフックされ、eBPFプログラムによってフックされたネットワークトランスポート層データパケットに対する相応のネットワークトランスポート層データ処理、例えば暗号化処理または復号処理が行われることを保証するために、カーネル内ですでにeBPFプログラムが動作していることが保証される必要がある。したがって、本実施例で提供するネットワークトランスポート層データ処理方法を最初に実行する場合、管理プログラムがユーザプレーンに配置され起動された後、管理プログラムはまず所定のアドレスから、例えばユーザプレーンに記憶されたいずれかの設定情報ファイルから、設定情報を読み取る必要がある。
【0063】
また、本実施例において、管理プログラムが所定のアドレスから読み取る設定情報も、同様に暗号化/復号条件、暗号化ルール、復号ルールのうちのいずれか1つまたは複数を含む。
【0064】
ステップ302:カーネルに登録する必要があるeBPFプログラムおよび設定情報の完全性を検査する。
【0065】
本実施例において、カーネルに登録されたeBPFプログラムに基づいたネットワークトランスポート層データパケットの処理の性能や安全性を保証するために、管理プログラムは、予め設計されたeBPFプログラムをカーネルに登録し、読み取った設定情報をeBPFプログラムに対応する設定情報マッピングテーブルに設定する前に、まずeBPFプログラムおよび設定情報の完全性を検査する必要がある。
【0066】
ステップ303:eBPFプログラムおよび設定情報がいずれも完全であった場合、eBPFプログラムをカーネルに登録して、eBPFプログラムをカーネルで動作させる。
【0067】
具体的には、管理プログラムは所在環境のカーネルにeBPFプログラムのバイトコードをロードし、さらにeBPFプログラムをカーネル内にロードした後、続けてシステムコール/インタフェース(syscall)を介して、eBPFプログラムとデータ交換を行う。
【0068】
また、管理プログラムは、外部から入力される操作指令に基づいてカーネル内で動作するeBPFプログラムに相応の処理を行えるよう、対外的に管理およびクエリ用インタフェース、例えばユーザインタラクションインタフェースを提供する。
【0069】
ステップ304:設定情報をeBPFプログラムに対応する設定情報マッピングテーブルに設定する。
【0070】
本実施例で述べる設定情報マッピングテーブルとは、eBPF技術に係るBPF MAPである。実際の運用においては、本実施例で提供するeBPFプログラムと管理プログラムとの間で、1つまたは複数のBPF MAPによって設定データまたは動作時に集計された集計データのやり取りを行う。
【0071】
なお、上記の例は本実施例の技術スキームがよりよく理解されるよう例示したものに過ぎず、本実施例を一意に限定するものではない。
【0072】
ステップ305:メッセージ処理サイクル操作に入る。
【0073】
本実施例において、上記のメッセージ処理サイクル操作に入るとは以下のことを指す。予めメッセージキューを構築し、処理する必要があるメッセージ、例えばeBPFプログラムに対する操作指令、および/またはeBPFプログラムがBPF MAPに書き込んだ、ネットワークトランスポート層データパケット処理のプロセスで集計した集計データを検出するたびに、まず受信した処理する必要があるメッセージをメッセージキューに追加する。そして、メッセージキューから処理する必要がある情報を順次読み取り、現在読み取った処理する必要がある情報の具体的タイプに応じて、ステップ306からステップ309のいずれか1つのステップに進み、対応する操作を実行する。
【0074】
ステップ306:eBPFプログラムに対する設定情報更新指令を受信した場合、設定情報更新指令から更新する必要がある設定情報を抽出し、抽出した更新する必要がある設定情報に基づいて、eBPFプログラムに対応する設定情報マッピングテーブルを更新する。
【0075】
ステップ307:eBPFプログラムに対するeBPFプログラム置換指令を受信した場合、eBPFプログラム置換指令から置換eBPFプログラムを抽出して、置換eBPFプログラムをカーネルに登録し、置換eBPFプログラムをカーネルに登録した後で、カーネルで動作している前記eBPFプログラムをアンロードする。
【0076】
ステップ308:eBPFプログラムに対するeBPFプログラムアンロード指令を受信した場合、カーネルで動作している前記eBPFプログラムをアンロードする。
【0077】
ステップ309:eBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データである場合、集計データを所定の記憶領域に記憶し、および/または所定の形式で表示する。
【0078】
本実施例におけるステップ306からステップ307と、
図2に示す実施例におけるステップ202およびステップ203で示したいくつかの具体的処理方法とが、ほぼ同じであることは容易にわかるので、ここでは説明を繰り返さない。
【0079】
また、本実施例に係る管理プログラム、読み取る必要がある設定情報、eBPFプログラム、外部入力とのインタラクションに関しては、具体的には
図4に示したとおりであり、ここでは説明を繰り返さない。
【0080】
したがって、本実施例で提供するネットワークトランスポート層データ処理方法は、ネットワークトランスポート層データ処理を行う前に、ユーザプレーンで動作する管理プログラムを利用してカーネルにeBPFプログラムをロードするとともに、eBPFプログラムの設定管理を行って、例えばeBPFプログラムが暗号化/復号処理で使用する設定情報を設定情報マッピングテーブルに設定する。これによりカーネルが配布する必要があるネットワークトランスポート層データパケットが存在するとき、eBPFプログラムによって相応の暗号化処理、復号処理を行うことができる。
【0081】
図5を参照されたい。
図5は本願実施例で提供するネットワークトランスポート層データ処理方法のフローチャートである。本実施例において、当該方法は主として、カーネルで動作するeBPFプログラムに適用される。
【0082】
なお、本実施例で述べるネットワークトランスポート層データ処理方法は、具体的にはカーネルで動作するeBPFプログラムの、カーネルが配布する必要があるネットワークトランスポート層データパケットに対する暗号化処理または復号処理を指す。
【0083】
図5に示すように、本実施例で提供するネットワークトランスポート層データ処理方法は以下のステップを含む。
【0084】
ステップ501:配布する必要があるネットワークトランスポート層データパケットを取得する。
【0085】
本実施例において述べる配布する必要があるネットワークトランスポート層データパケットとは、具体的にはカーネルが当ノードの上位層アプリケーション、例えばユーザプレーン上で動作するアプリケーションプログラムに対して配布する必要がある、受信したネットワークトランスポート層データパケットを指す。つまり、配布する必要があるネットワークトランスポート層データパケットは、他のノードから来たものである。
【0086】
また、一例として、配布する必要があるネットワークトランスポート層データパケットは、カーネルから他のノードへ配布されるものでもよい。つまり、配布する必要があるネットワークトランスポート層データパケットは、カーネルから他のノードへ送信する必要があるものである。
【0087】
また、付け加えると、実際の運用においては、カーネル内にロードされるeBPFプログラムは、常に動作状態もしくは有効状態にあるわけではなく、配布する必要があるネットワークトランスポート層データパケットがカーネルに到達したときに、はじめてカーネルによってトリガーされて、本実施例で提供するネットワークトランスポート層データ処理方法を実行する。
【0088】
対応的に、上記取得した配布する必要があるネットワークトランスポート層データパケットは、実質的にはカーネルがeBPFプログラムをトリガーした後、eBPFプログラムに伝送される。
【0089】
ステップ502:ネットワークトランスポート層データパケットを解析して、ネットワークトランスポート層データパケットに対して行う必要があるネットワークトランスポート層データ処理方式を決定する。
【0090】
本実施例において、通常の場合、ネットワークトランスポート層データパケットのプロトコルヘッダには、当該ネットワークトランスポート層データパケットの伝送に用いたプロトコルや、4タプル等の情報が付帯されている。したがってネットワークトランスポート層データパケットに対して行う必要があるネットワークトランスポート層データ処理方式を決定する場合、ネットワークトランスポート層データパケットの解析を行って、さらにネットワークトランスポート層データパケットのプロトコルヘッダを抽出し、プロトコルヘッダと予め設定された暗号化/復号条件とに基づいて、当該ネットワークトランスポート層データパケットが暗号化または復号する必要があるか否かを判断する。
【0091】
対応的に、判断の結果、ネットワークトランスポート層データパケットに対して暗号化を行う必要があると判定された場合、ネットワークトランスポート層データに行う必要があるネットワークトランスポート層データ処理方式を暗号化処理に決定する。判断の結果、ネットワークトランスポート層データパケットに対して復号を行う必要があると判定された場合、ネットワークトランスポート層データに行う必要があるネットワークトランスポート層データ処理方式を復号処理に決定する。
【0092】
なお、本実施例において述べる暗号化/復号条件は、具体的にはユーザプレーンで動作する管理プログラムによって提供される。実際の運用において、暗号化/復号条件は、予め規定された、どのようなプロトコルで伝送されたネットワークトランスポート層データパケットに対して、暗号化または復号を行うかであってよい。
【0093】
さらに、暗号化/復号条件は、ある具体的なポート番号(送信元ポート番号および/または宛先ポート番号)、ある具体的なIPアドレス(送信元IPアドレスおよび/または宛先IPアドレス)に対しする規定でもよい。
【0094】
なお、上記の例は本実施例の技術スキームがよりよく理解されるよう例示したものに過ぎず、本実施例を一意に限定するものではない。
【0095】
また、実際の運用において、ネットワークトランスポート層データパケットに対して行う必要があるネットワークトランスポート層データ処理方式を決定する前に、まず、ネットワークトランスポート層データパケットにネットワークトランスポート層データ処理を行う必要があるか否かを判定し、必要がなければ、直接カーネルに渡して後続の配布操作を行わせ、必要があれば、行う必要があるネットワークトランスポート層データ処理方式を決定するようにしてもよい。
【0096】
また、本実施例において、配布する必要があるネットワークトランスポート層データパケットに対して行うネットワークトランスポート層データ処理方式は、暗号化処理と復号処理に大きく分けられる。そして実際の運用において、通常は他のノードへ送信する必要があるネットワークトランスポート層データパケットであれば暗号化処理を行い、他のノードから受信したネットワークトランスポート層データパケットに行う必要があるのは復号処理である。これに基づいて、ネットワークトランスポート層データパケットに対して行う必要があるネットワークトランスポート層データ処理方式を決定する場合、具体的にはまず現在のネットワークデータが送信する必要があるものか、受信したものかを特定すればよい。
【0097】
対応的に、受信したものであれば、具体的にネットワークトランスポート層データパケットの復号が必要か否かを判定する。送信する必要があるものであれば、具体的にネットワークトランスポート層データパケットの暗号化が必要か否かを判定する。
【0098】
ステップ503:ネットワークトランスポート層データ処理方式に基づいて、ネットワークトランスポート層データパケットに対して処理を行う。
【0099】
本実施例において、決定されたネットワークトランスポート層データ処理方式が暗号化処理である場合、ネットワークトランスポート層データパケットに対して具体的に以下の処理を行う。
【0100】
まず、予め設定された暗号化ルールの中から、対象暗号化ルールを選択する。
【0101】
本実施例において、上記予め設定された暗号化ルールも、同様にユーザプレーンで動作する管理プログラムによって提供される。具体的には、管理プログラムが所定のアドレスから暗号化ルールを含んだ設定情報を読み取り、読み取った設定情報をeBPFプログラムに対応する設定情報マッピングテーブルに設定する。したがって、上記対象暗号化ルールを選択する操作とは、具体的は設定情報マッピングテーブルから現在暗号化処理を行う必要があるネットワークトランスポート層データパケットに適合する暗号化ルールを選択することである。
【0102】
なお、実際の運用において、暗号化ルールは少なくとも具体的な暗号化アルゴリズムを含む必要がある。
【0103】
キーが関わるものであれば、暗号化ルールはさらに暗号化キーを含む必要があるが、暗号化パラメータとして理解してよい。
【0104】
また、現在暗号化処理を行う必要があるネットワークトランスポート層データパケットに適合する対象暗号化ルールを、いかに選択するかについては、実際の運用においては、現在暗号化処理を行う必要があるネットワークトランスポート層データパケットの、プロトコルヘッダの内容に基づいて特定できる。
【0105】
例えば、あるプロトコル、ある特定のポート番号、またはある特定のIPアドレスに対応して用いる具体的な暗号化方法およびキーを予め規定しておけば、対象暗号化ルールを選択するとき、暗号化処理を行う必要があるネットワークトランスポート層データパケットのプロトコルヘッダに基づいて、高速かつ正確に当該ネットワークトランスポート層データパケットに適合する1つの暗号化ルールを選択することができる。
【0106】
また、付け加えると、一例として、暗号化を行う必要があるネットワークトランスポート層データパケットすべてに対し、同一の暗号化ルールを用いてもよい。
【0107】
次に、対象暗号化ルールに基づいて、ネットワークトランスポート層データパケットのペイロード部分に対して暗号化処理を行う。
【0108】
次に、暗号化されたペイロード部分に基づいて、プロトコルヘッダを更新して、暗号化されたネットワークトランスポート層データパケットを得る。
【0109】
暗号化処理を行った後、通常、暗号化後のペイロード部分の長さは暗号化前のペイロード部分の長さと差異が生じる。したがって、暗号化処理後のネットワークトランスポート層データパケットが他のノードへ伝送された後,プロトコルヘッダに記録された長さ情報と実際に受信したネットワークトランスポート層データパケットのペイロード部分の長さが一致しないことで暗号化されたネットワークトランスポート層データパケットが不正データであると誤解されることがないように保証しなければならない。そのため、対象暗号化ルールに基づいてネットワークトランスポート層データパケットのペイロード部分に対して暗号化処理を行った後、暗号化後のペイロード部分に基づいてプロトコルヘッダを更新して、最終的に得られた暗号化後のネットワークトランスポート層データパケットのプロトコルヘッダに記録された情報が、暗号化後のペイロード部分の長さと一致することを保証する必要がある。
【0110】
最後に、暗号化されたネットワークトランスポート層データパケットをカーネルに渡し、カーネルが暗号化されたネットワークトランスポート層データパケットの配布を行う。
【0111】
これにより、配布する必要があるネットワークトランスポート層データの暗号化処理が実現する。
【0112】
対応的に、決定されたネットワークトランスポート層データ処理方式が復号処理である場合、ネットワークトランスポート層データパケットに対して行う具体的処理方法は次のとおりである。まず、予め設定された復号ルールの中から、対象復号ルールを選択する。次に、対象復号ルールに基づいて、ネットワークトランスポート層データパケットのペイロード部分に対して復号処理を行う。次に、復号後のペイロード部分に基づいてプロトコルヘッダを更新して、復号されたネットワークトランスポート層データパケットを得る。最後に、復号されたネットワークトランスポート層データパケットをカーネルに渡し、カーネルが復号後のネットワークトランスポート層データパケットの配布を行う。
【0113】
eBPFプログラムの暗号化処理を経たネットワークトランスポート層データパケットが相手側ノードのカーネルに届いてから、相手側ノードのカーネル内で動作するeBPFプログラムによって復号されることを保証するには、復号ルールが暗号化ルールに対応している必要がある。それにより暗号化されたネットワークトランスポート層データパケットが復号され、元のネットワークトランスポート層データパケットに戻ることが保証される。
【0114】
したがって、本実施例で提供するネットワークトランスポート層データ処理方法は、eBPFプログラムを管理できる管理プログラムをユーザプレーンにロードして動作させ、管理プログラムを利用して予めeBPFプログラムをカーネルに登録し、カーネルが配布すべき、例えば送信するネットワークトランスポート層データパケットや受信したネットワークトランスポート層データパケットを、eBPFプログラムがフックする。そして配布する必要があるネットワークトランスポート層データパケットに対するネットワークトランスポート層データ処理方式を決定し、最後に、決定したネットワークトランスポート層データ処理方式に基づいて,eBPFプログラムが現在フックしているネットワークトランスポート層データパケットに対して処理を行う。ネットワークトランスポート層データ処理のプロセス全体を、書き換えられたカーネル内のeBPFプログラムで完遂できるので、システム環境または上位層アプリケーションが自身の状態を変更して、実際のネットワークトランスポート層データ処理のプロセスに関与する必要がなく、システム環境または上位層アプリケーションに対する透過化を実現する。したがって余分な配置、設定、運営管理および開発コストを必要とせず、システム環境と上位層アプリケーションの優れた互換性も保証される。
【0115】
また、一例として、絶対的な透過性を追及しない場合、または特殊なデータ保護の要求がある場合、eBPFプログラムと上位層アプリケーションとが協力してデータの暗号化または保護を実現してもよい。例えば、上位層アプリケーションが故意に不正な内容のデータパケットを送信してみる。受信側の環境において対応するeBPFプログラムが配置されている(且つパラメータ設定が正確な)場合、受信側カーネルがデータを見る前に、eBPFプログラムが不正なデータを修復した後で、処理するようカーネルに渡すことができる。これにより受信側アプリケーションは正確に情報を読み取ることができる。受信側の環境において対応するeBPFプログラムが配置されていない(またはパラメータ設定が正確でない)場合、受信側カーネル(および伝送路を傍受している悪意の第三者)はデータパケットが不正であると見なしてこれを破棄することで、データの安全を保護する。
【0116】
このような共同暗号化方式では、ノード、例えばノードAで上位層アプリケーションにより暗号化する場合、外部へネットワークトランスポート層データパケットを送信するだけのノードAについては、ユーザプレーンに管理プログラムを配置せず、カーネル内にeBPFプログラムをロードしなくてよい。
【0117】
対応的に、ノードAで上位層アプリケーションにより暗号化したネットワークトランスポート層データパケットを受信するノードBについては、ユーザプレーンに管理プログラムを配置し、カーネル内にeBPFプログラムをロードする必要があり、これにより、協力してネットワークトランスポート層データパケットに対する処理を実現する。
【0118】
また、eBPF技術自身の安全性と高性能に基づいて、本実施例で提供するネットワークトランスポート層データ処理スキームの安全性および全体性能も保証される。
【0119】
また、付け加えると、eBPFプログラムはユーザプレーンで動作する管理プログラムによってカーネルにロードされ、管理プログラムによってeBPFプログラムを管理することができる。したがって、実際の運用において、カーネル内で動作しているeBPFプログラムは、ユーザプレーンの管理プログラムから送信された設定情報更新指令を受信した場合、設定情報更新指令に基づいて、予め設定されている設定情報を更新する。即ち、設定情報マッピングテーブルに設定されている設定情報、具体的には暗号化/復号条件、暗号化ルール、復号ルールのうちのいずれか1つまたは複数を更新する。これにより、カーネル内で動作するeBPFプログラムの動的な更新を実現して、カーネル内で動作するeBPFプログラムが実際のネットワークトランスポート層データ処理の要求によりよく適応できるようにする。
【0120】
図6を参照されたい。
図6は本願実施例で提供するネットワークトランスポート層データ処理方法のフローチャートである。本実施例において、当該方法は主として、カーネルで動作するeBPFプログラムに適用される。
【0121】
図6に示すように、本実施例で提供するネットワークトランスポート層データ処理方法は以下のステップを含む。
【0122】
ステップ601:配布する必要があるネットワークトランスポート層データパケットを取得する。
【0123】
本実施例におけるステップ601と、
図5に示す実施例におけるステップ501とがほぼ同じであることは容易にわかるので、ここでは説明を繰り返さない。
【0124】
ステップ602:ネットワークトランスポート層データパケットを解析して、ネットワークトランスポート層データパケットの処理が必要か否かを判定する。
【0125】
本実施例において、カーネルが配布する必要があるネットワークトランスポート層データパケットは、例えば単に相手側ノードに送信した情報または要求を受け取ったという応答である場合など、すべてに暗号化または復号処理が必要なわけではない。したがって、配布する必要があるネットワークトランスポート層データパケットのネットワークトランスポート層データ処理方式を決定する前に、まず解析されたネットワークトランスポート層データパケットのプロトコルヘッダに付帯した識別情報に基づいて、現在配布する必要があるネットワークトランスポート層データパケットに暗号化処理または復号処理を行う必要があるか否かを判定することができる。
【0126】
対応的に、ネットワークトランスポート層データパケットに処理を行う必要があると判定された場合、ステップ603に進み、ネットワークトランスポート層データパケットに行う必要がある具体的なネットワークトランスポート層データ処理方式を決定する。逆に、ネットワークトランスポート層データパケットに処理を行う必要がないと判定された場合、そのままステップ610へ進み、フックしたネットワークトランスポート層データパケットをそのままカーネルに渡し、カーネルがそれを配布すればよい。
【0127】
ステップ603:ネットワークトランスポート層データパケットが送信する必要があるネットワークトランスポート層データパケットであるか、それとも受信したネットワークトランスポート層データパケットであるかを特定する。
【0128】
上記説明からもわかるように、ネットワークトランスポート層データ処理を行う必要があるネットワークトランスポート層データパケットにおいて、ネットワークトランスポート層データパケットがカーネルによって他のノードへ送信する必要があるネットワークトランスポート層データパケットである場合、行う必要があるネットワークトランスポート層データ処理方式は暗号化処理である。
【0129】
対応的に、ネットワークトランスポート層データ処理を行う必要があるネットワークトランスポート層データパケットが、カーネルから上位層アプリケーション即ちユーザプレーンに位置するアプリケーションプログラムへフィードバックする必要がある、もしくはカーネルが他のノードから受信したネットワークトランスポート層データパケットである場合、行う必要があるネットワークトランスポート層データ処理方式は復号処理である。
【0130】
これに基づいて、ネットワークトランスポート層データパケットが送信する必要があるネットワークトランスポート層データパケットか、それとも受信したネットワークトランスポート層データパケットかを特定するだけで、処理を行う必要があるネットワークトランスポート層データパケットの具体的処理方式を速やかに決定することができる。
【0131】
対応的に、ネットワークトランスポート層データパケットが送信する必要があるネットワークトランスポート層データパケットであると特定された場合、ステップ603へ進む。逆に、ネットワークトランスポート層データパケットが受信したネットワークトランスポート層データパケットであると特定された場合、ステップ607へ進む。
【0132】
ステップ604:ネットワークトランスポート層データパケットのペイロード部分に対して暗号化を行う。
【0133】
ステップ605:ネットワークトランスポート層データパケットのプロトコルヘッダを更新する。
【0134】
ステップ606:暗号化されたネットワークトランスポート層データパケットをカーネルに渡し、カーネルが暗号化されたネットワークトランスポート層データパケットの配布を行う。
【0135】
ステップ607:ネットワークトランスポート層データパケットのペイロード部分に対して復号を行う。
【0136】
ステップ608:ネットワークトランスポート層データパケットのプロトコルヘッダを更新する。
【0137】
ステップ609:復号されたネットワークトランスポート層データパケットをカーネルに渡し、カーネルが復号されたネットワークトランスポート層データパケットの配布を行う。
【0138】
ステップ610:ネットワークトランスポート層データパケットをカーネルに渡し、カーネルがネットワークトランスポート層データパケットの配布を行う。
【0139】
これにより、本実施例で提供するネットワークトランスポート層データ処理方法は、eBPFプログラムを利用することで、従来のネットワークトランスポート層データ伝送暗号化プロトコルが使用されるとき、システム環境および上位層アプリケーションに対して侵入による影響を与えることを良好に解決し、よりフレキシブルでより強大なデータ伝送暗号化および保護機能を提供するとともに、安全性においてより優れたアイソレーションと保証をもたらす。
【0140】
なお、eBPF技術は複数のプログラムタイプをサポートしており、異なるタイプのプログラムは異なる用途に用いられるが、現在伝送暗号化機能の実現により適しているのはトラフィックコントロール(Traffic Control,TC)タイプである。したがって、本実施例において述べるネットワークトランスポート層データパケットに対して暗号化処理または暗号化処理を行うeBPFプログラムは、具体的にはTCタイプのeBPFプログラムである。カーネル内にTCタイプのeBPFプログラムをロードすることで、Linuxカーネルがネットワークトランスポート層データパケットを処理する入口と出口を直接フックすることができる。カーネルがネットワークトランスポート層データパケットの受信または送信を行う前に、TCプログラムが元のネットワークトランスポート層データパケットを一時保管するメモリバッファ領域に直接アクセスする。そして元のネットワークトランスポート層データパケットに対応するメモリバッファ領域のアドレスに基づいて、メモリバッファ領域から処理する必要があるネットワークトランスポート層データパケットを取得する。次に取得したネットワークトランスポート層データパケットに対して相応のネットワークトランスポート層データ処理操作を行い、相応のネットワークトランスポート層データ処理操作が完了した後、カーネルに渡し、カーネルがそれを配布処理する。
【0141】
明らかに、TCタイプのeBPFプログラムを利用することにより、データ暗号化/復号の具体的インプリメントおよび設定ロジックを1つのソフトハードウェアユニットに集積でき、これによりシステム環境および上位層アプリケーションが詳細をまったく了解していない状況で、ネットワークトランスポート層データの暗号化/復号を完了することができる。それに加えて、eBPFプログラムはカーネルと同様に、動作時に動的にロード/アンロードすることができるので、本実施例で提供するネットワークトランスポート層データ処理方法は、動作時の暗号化/復号機能の有効化/無効化、または暗号化アルゴリズムおよび設定データの動的な置換を実現でき、同時にオペレーティングシステムおよび上位層アプリケーションはこれら動作変更を一切認識しなくてよい。
【0142】
なお、本実施例においてTCタイプのeBPFプログラムを用いることは、目下のeBPF技術の現状に基づいて決定したことであり、今後のeBPF技術の急速な進化において他の好適なタイプが登場した場合、それによってもやはり本実施例で実施する方法を実現することができる。即ち、本実施例においてTCタイプのeBPFプログラムを用いてネットワーク伝送データ処理を実現することは、1つの具体的実現方式に過ぎず、本実施例で提供する技術スキーム自体になんらかの限定を加えるものではない。
【0143】
また、一例として、絶対的な透過性を追及しない場合、または特殊なデータ保護の要求がある場合、eBPFプログラムと上位層アプリケーションとが協力してデータの暗号化または保護を実現してもよい。例えば、上位層アプリケーションが故意に不正な内容のデータパケットを送信してみる。受信側の環境において対応するeBPFプログラムが配置されている(且つパラメータ設定が正確な)場合、受信側カーネルがデータを見る前に、eBPFプログラムが不正なデータを修復した後で、処理するようカーネルに渡すことができる。これにより受信側アプリケーションは正確に情報を読み取ることができる。受信側の環境において対応するeBPFプログラムが配置されていない(またはパラメータ設定が正確でない)場合、受信側カーネル(および伝送路を傍受している悪意の第三者)はデータパケットが不正であると見なしてこれを破棄することで、データの安全を保護する。
【0144】
また、本実施例で提供する、ユーザプレーンで動作する管理プログラムに適用されるネットワークトランスポート層データ処理方法と、カーネルで動作するeBPFプログラムに適用されるネットワークトランスポート層データ処理がよりよく理解されるよう、以下では
図7と
図8を結び付けて、管理プログラムとeBPFプログラムの協力により実現されるネットワークトランスポート層データ処理、具体的には暗号化および復号のプロセスを詳細に説明する。
【0145】
まず説明しておく点として、実際の運用において、ネットワークトランスポート層データパケットの受信側(以下、データ受信側と称する)およびネットワークトランスポート層データパケットの送信側(以下、データ送信側と称する)は、いずれもLinuxシステムを使用していなければならず、同時にカーネルのバージョンは4.3以上で、eBPF関連機能が起動されている必要がある。
【0146】
さらに、データ通信の双方が、即ちデータ送信側およびデータ受信側が、例えばIP、TCP/UDPといった標準的なネットワークトランスポート層プロトコルスタックを使用して通信する必要がある。
【0147】
また、実際の運用においては、ユーザプレーンで動作する管理プログラムおよびカーネルで動作するeBPFプログラムは、1つのソフトウェアパッケージSDKにパッケージングされて、ソフトウェアの形態で配布および配置されてもよいし、1つのモバイル式ハードウェア内にパッケージングされて、ハードウェアユニットの形態で配布および配置されてもよい。
【0148】
また、現在、市場では一部の主流メーカーのネットワークカードは、すでにeBPFプログラムを直接ロードおよび動作させることをサポートしている。これは、具体的なネットワークトランスポート層データ処理作業がオペレーティングシステムのカーネルに依存せずに、ネットワークカード内の専用チップで完了できることを意味している。したがって、このタイプの機器については、eBPFプログラムは直接当該機器内にロードして動作させることができるので、ユーザプレーンで動作する管理プログラムのみを管理して、両者の通信を確立するだけでよい。
【0149】
図7を参照されたい。
図7はノードAとノードBの間で完全透過的伝送暗号化を実現する概要図である。即ち、ユーザプレーンに位置するアプリケーションプログラム(上位層アプリケーション)は暗号化および復号に関与せず、ノードAおよびノードBのシステム環境、上位層アプリケーションのどちらもが、伝送暗号化の全プロセスを感知しない。
【0150】
後続の説明の便宜上、まず上位層アプリケーション、即ちアプリケーションプログラムと、暗号化システム(管理プログラム+eBPFプログラム)が以下のような設定を満たすものであると仮定する。
【0151】
上位層アプリケーションは、
図7におけるノードAとノードBのように、TCPプロトコルで1080番ポートにおいて別のリモート端の同じアプリケーションと通信する。ノードAとノードBのネットワーク機器はいずれもeth0である。eBPFプログラムのファイル名はeBPF.elfである。eBPFプログラムにおいて暗号化を担当する関数名はencryptであり、eBPFプログラムにおいて復号を担当する関数名はdecryptである。
【0152】
管理プログラムは、ノードAおよびノードB上で動作する必要があり、次のようなコマンドによってeBPFプログラムをロードする(具体的には、eBPFプログラムにおける暗号化関数と復号関数をロードする)。
【0153】
eBPFプログラムにおける暗号化関数をロードする:<tc filter add dev eth0 egress bpf da obj eBPF.elf sec encrypt>
【0154】
eBPFプログラムにおける復号関数をロードする:<tc filter add dev eth0 inress bpf da obj eBPF.elf sec decrypt>
【0155】
上記2つのロードコマンドが実行されると、ノードAのカーネルであるかノードBのカーネルであるかに関わらず、eth0にネットワークトランスポート層データパケットを送信する場合(egress)、以前にマウントしたeBPFプログラムにおけるencrypt関数を呼び出すとともに、元のカーネルデータバッファ(socket kernel buffer,skb)ポインタを関数に伝達する。
【0156】
encrypt関数の具体的処理プロセスは以下の通りである。
【0157】
(1)skbに対してイーサネットプロトコル分析を行う(ethernetヘッダを解析して剥離する)。
【0158】
(2)ネットワークトランスポート層データパケットのペイロード部分がIPプロトコルであるか否かを判定する。否であればそのまま処理を終了する。即ちステップ(10)へ進む。
【0159】
(3)ペイロード部分に対してIPプロトコル分析を行い(IPヘッダを解析して剥離し)、IPヘッダのペイロードプロトコルがTCPを示していなければ、そのまま処理を終了する。即ちステップ(10)へ進む。
【0160】
(4)ペイロード部分に対してTCPプロトコル分析を行い(TCPヘッダを解析して剥離し)、対象ポートが1080であるか否かを判定する。否であればそのまま処理を終了する。即ちステップ(10)へ進む。
【0161】
(5)IPプロトコルのデータペイロード範囲(開始ポインタと終了ポインタ)を計算する。
【0162】
(6)ストリーム暗号化アルゴリズム(Rivest Cipher 4,RC4)を使用してIPプロトコルペイロードに対して暗号化を行う。
【0163】
なお、上に示したのは具体的暗号化アルゴリズムの1つに過ぎず、実際の運用において、当業者であれば必要に応じて暗号化アルゴリズムを選択して、選択した暗号化アルゴリズムを管理プログラムへ送信し、管理プログラムによって設定を行うことができよう。
【0164】
(7)暗号化後のデータをライトバックし(カーネル内のbpf helper関数におけるbpf_skb_store_bytesを利用できる)、IPヘッダを更新する(主に長さとチェックコードを更新。bpf helper関数におけるbpf_l3_csum_replaceを利用できる)。
【0165】
(8)カーネル内のbpf helper関数:bpf_skb_adjust_roomを呼び出して、skbを更新する。
【0166】
(9)処理を終了する(カーネルは続けて更新完了後のデータの送信作業を行う)。
【0167】
これにより、eBPFプログラムのネットワークトランスポート層データパケットに対する暗号化処理が完了する。
【0168】
対応的に、ロードコマンドが実行されると、ノードAのカーネルであるかノードBのカーネルであるかに関わらず、eth0からネットワークトランスポート層データパケットを受信した場合(ingress)、前にマウントしたeBPFプログラムにおけるdecrypt関数を呼び出すとともに、元のデータバッファ(sk_buff,skb)ポインタを関数に伝達する。
【0169】
decrypt関数の具体的処理プロセスは以下の通りである。
【0170】
(1)skbに対してイーサネットプロトコル分析を行う(ethernetヘッダを解析して剥離する)。
【0171】
(2)ペイロード部分がIPプロトコルであるか否か判定する。否であればそのまま処理を終了する。即ちステップ(9)へ進む。
【0172】
(3)IPプロトコル分析を行い(IPヘッダを解析して剥離し)、IPヘッダのペイロードプロトコルがTCPを示していなければ、そのまま処理を終了する。即ちステップ(9)へ進む。
【0173】
(4)ペイロード部分に対してTCPプロトコル分析を行い(TCPヘッダを解析して剥離し)、フォーマットが正確であれば、データが暗号化されていないことを意味するので、そのまま処理を終了する。即ちステップ(9)へ進む。
【0174】
(5)RC4アルゴリズムを使用してIPペイロード部分に対して復号処理を行う。
【0175】
なお、上記の暗号化プロセスはRC4アルゴリズムを用いたものだったので、復号プロセスでも同様にRC4アルゴリズムを用いる必要がある。
【0176】
(6)復号後のデータに対して、TCPプロトコルヘッダ検査を行い、例えば、あるフィールドの値が正当な範囲内になかったり、対象ポートが1080でないなど、データが不正なものであった場合、そのまま処理を終了する。即ちステップ(9)へ進む。
【0177】
(7)復号後のデータをライトバックし(bpf helper関数:bpf_skb_store_bytesを利用できる)、IPヘッダを更新する(主に長さとチェックコードを更新。bpf helper関数:bpf_l3_csum_replaceを利用できる)。
【0178】
(8)カーネル内のbpf helper関数:bpf_skb_adjust_roomを呼び出して、skbを更新する。
【0179】
(9)処理を終了する(カーネルは続けて更新完了後のデータの受信作業を行う)。
【0180】
これにより、eBPFプログラムのネットワークトランスポート層データパケットに対する復号処理が完了する。
【0181】
また、付け加えると、実際の運用においてencrypt関数とdecrypt関数はさらに以下のような操作を実行する必要がある。
【0182】
指定された設定情報マッピングテーブル(BPF MAP)から、管理プログラムによって伝達される必要なパラメータ、例えばRC4暗号化アルゴリズムの関連パラメータやTCPポート番号などを取得する。また、暗号化/復号パケット総数や成功/失敗回数など、一部の動作集計データを指定されたBPF MAPに記録する。
【0183】
また、付け加えると、管理プログラムは初期化段階でeBPFプログラムをロードするだけでなく、さらに、BPF MAPを通じてencrypt関数とdecrypt関数に必要なパラメータ、例えばRC4暗号化アルゴリズムの関連パラメータやTCPポート番号などを伝達する作業や、BPF MAPを通じてencrypt関数およびdecrypt関数が動作時に記録した集計データ、例えば暗号化/復号パケット総数や成功/失敗回数などを取りまとめる作業や、コマンドライン(またはRestfulなどその他の形式の)インタフェースを通じてeBPFプログラムの動作パラメータ、例えば4タプルの情報(ポート番号、アドレスなど)や、動作状態、例えば暗号化/復号の成功数、不正または正当なデータをいくつ検出したかなどを、ユーザが管理・問い合わせできるようにする作業などを担当する。
【0184】
上記説明からわかるように、完全透過的伝送暗号化方式においては、上位層アプリケーションはネットワークトランスポート層の暗号化/復号フローに関与しない。したがって下位層の伝送暗号化システムで採用されたアルゴリズム、パラメータ、タイミングなどの詳細を一切認識せず、ネットワークデータを送受信する際も暗号化/復号を考慮せずにすべてクリアテキストフォーマットで処理する。このように、上位層アプリケーションが操作または設定変更をなんら行う必要なしにネットワークトランスポート層データの暗号化/復号を実現でき、しかも上位層アプリケーションは暗号化フローの詳細を一切認識していないので、万一攻撃者が攻略したとしても実際の暗号化/復号フローの詳細を理解できず、またキーなどの肝要な暗号化/復号のセンシティブデータを得ることもできない。したがって従来の非透過的伝送暗号化における余分な配置、設定、運営管理、開発の負担や、リスクをもたらすという技術的課題を解決するだけでなく、伝送するネットワークトランスポート層データパケットにおけるデータコンテンツの安全性も保証される。
【0185】
図8を参照されたい。
図8はノードAとノードBとの間で上位層アプリケーションプログラムとの共同暗号化を実現する概要図である。即ち、ユーザプレーンに位置するアプリケーションプログラムが、カーネルで動作するeBPFプログラムによる、配布する必要があるネットワークトランスポート層データパケットに対する暗号化処理または復号処理に関与する。
【0186】
具体的には、上位層アプリケーションが関与する共同伝送暗号化方式において、上位層アプリケーションは暗号化システムと協力して伝送データの暗号化/復号フローを達成する。協力の方法としては次のような複数の方式がある。
【0187】
方式1:アプリケーションプログラムが、送信するデータの暗号化を担当し、相手側eBPFプログラムが、受信したデータの復号を担当する。
【0188】
方式2:アプリケーションプログラムが、受信したデータの復号を担当し、相手側eBPFプログラムが、送信するデータの暗号化を担当する。
【0189】
方式3:アプリケーションプログラムが、送信データおよび受信データの暗号化と復号を担当し、eBPFプログラムが、データを送信および受信するときの暗号化されたデータに対するスランブリングとデスクランブリングを担当する。即ちeBPFプログラムが上位層アプリケーションによって暗号化または復号されたデータの二次処理を行う。
【0190】
なお、上記の異なる協力方式も、対象となるのはただ1つ、即ち上位層アプリケーションとeBPFプログラムが必ず存在する状況において、はじめて正常に達成されるデータの暗号化/復号プロセスである。いずれか1つの部分が欠けるだけで、データを正常に復号することはできない。このような柔軟で多様な共同暗号化/復号メカニズムは、透過性を一部損なう(上位層のタスクとして暗号化/復号プロセスに関与する必要がある)ものの、データ暗号化の全体的な安全性を有効に向上させることができる。
【0191】
上記の方式3については、実際の運用において,ノードAおよびノードBにいずれも管理プログラムおよびeBPFプログラムを配置するとともに、eBPFプログラムがencrypt関数およびdecrypt関数の呼び出しをサポートするようにする必要がある。これで
図7に対する説明とほぼ同様に実現することができるが、ユーザプレーンのアプリケーションプログラムには、暗号化および暗号化操作が追加される。
【0192】
以下、
図8と結び付けて上記の方式1を具体的に説明する。その他の共同暗号化方式も構想は類似しており、具体的な実施動作および適用場面が異なるだけである。
【0193】
上記の方式1では、具体的にはノードAにおいて、アプリケーションプログラムが、所定の暗号化アルゴリズム、例えば非対称暗号化アルゴリズムを用いて送信する必要があるデータを暗号化し、ノードBにおいて、ユーザプレーンに配置された管理プログラムが、カーネル内に復号用のeBPFプログラムをロードする。当該方法は特に、データ送信側のアプリケーションを完全に制御できる(コードおよび設定を変更できる)場面、データ伝送チャネルが信頼できず制御もできない場面、データ受信側のアプリケーションを制御できない(コードおよび設定を変更できない)場面、送信側と受信側が存在する環境のネットワーク設定を変更できないまたは変更しにくい場面、送信データに対する暗号化のみが要求され、リモート端から返送される応答データの暗号化は要求されない場面、という特徴および要求がある場面に適用される。
【0194】
後続の説明の便宜上、まず上位層アプリケーションと暗号化システムとが以下のような設定を満たすものであると仮定する。
【0195】
上位層アプリケーションは、
図8におけるノードAとノードBのように、TCPプロトコルで1080番ポートにおいて別のリモート端の同じアプリケーションと通信する。ノードAおよびノードBのネットワーク機器はいずれもeth0である。ノードBのユーザプレーンで管理プログラムが動作し、ノードBのカーネルでeBPFプログラムが動作する。当該eBPFプログラムのファイル名はeBPF.elfであり、当該eBPFプログラムは復号のみを担当する。復号を担当する関数名はdecryptである。
【0196】
データ送信側、即ち
図8におけるノードAでは、上位層アプリケーションは1種の非対称暗号化アルゴリズム(例えばX25519楕円曲線暗号化アルゴリズムまたは類似する他のアルゴリズム)を使い、公開鍵を用いて送信する必要があるTCPペイロードデータに対して暗号化を行ってから送信する。また、ノードAには管理プログラムが存在する必要がなく、またいかなるeBPFプログラムもロードする必要はない。
【0197】
データ受信側、即ち
図8におけるノードBでは、ユーザプレーンに管理プログラムが存在する必要があり、カーネルにはeBPFプログラムが存在する必要がある。さらにノードBにおける管理プログラムは、次のようなコマンドによってeBPFプログラム(具体的にはeBPFプログラムにおける復号関数)をロードする必要がある。eBPFプログラムにおける復号関数をロードする:<tc filter add dev eth0 inress bpf da obj eBPF.elf sec decrypt>。
【0198】
対応的に、ロードコマンドが実行されると、ノードBのカーネルは、ノードAから送信されたネットワークトランスポート層データパケットをeth0から受信した場合(ingress)、以前にマウントしたeBPFプログラムにおけるdecrypt関数を呼び出すとともに、skbポインタを関数に伝達する。
【0199】
decrypt関数の具体的処理プロセスは以下の通りである。
【0200】
(1)skbに対してイーサネットプロトコル分析を行う(ethernetヘッダを解析して剥離する)。
【0201】
(2)ペイロード部分がIPプロトコルであるか否か判定する。否であればそのまま処理を終了する。即ちステップ(8)へ進む。
【0202】
(3)IPプロトコル分析を行い(IPヘッダを解析して剥離し)、IPヘッダのペイロードプロトコルがTCPを示していなければ、そのまま処理を終了する。即ちステップ(8)へ進む。
【0203】
(4)ペイロード部分に対してTCPプロトコル分析を行い(TCPヘッダを解析して剥離し)、フォーマットが不正であるか、または対象ポートが1080でない場合、そのまま処理を終了する。即ちステップ(8)へ進む。
【0204】
(5)X25519アルゴリズムと秘密鍵を使用してTCPペイロード部分に対して復号処理を行う。
【0205】
なお、上に示したのは具体的復号アルゴリズムの1つに過ぎず、実際の運用において、当業者であれば必要に応じて暗号化アルゴリズムを選択して、選択した復号アルゴリズムを管理プログラムへ送信し、管理プログラムによって設定を行うことができよう。
【0206】
また、eBPFプログラムが復号を行うとき準拠する復号方法は、ノードAにおけるアプリケーションプログラムが採用した暗号化方法に対応している必要がある。
【0207】
(6)復号後のデータをライトバックし(bpf helper関数におけるbpf_skb_store_bytesを利用できる)、TCPヘッドおよびIPヘッダを更新する(主に長さとチェックコードを更新。bpf helper関数におけるbpf_l3_csum_replacebpf_l3_csum_replaceおよびbpf_l4_csum_replaceを利用できる)。
【0208】
(7)カーネル内のbpf helper関数におけるbpf_skb_adjust_roomを呼び出して、skbを更新する。
【0209】
(8)処理を終了する(カーネルは続けて更新完了後のデータの受信作業を行う)。
【0210】
これにより、ノードBにおいて、カーネル内のeBPFプログラムを利用した、ネットワークトランスポート層データパケットに対する復号が完了する。
【0211】
また、付け加えると、decrypt関数はさらに、指定されたBPF MAPから管理プログラムが伝達する操作、X25519暗号化アルゴリズムの関連パラメータや秘密鍵、TCPポート番号など、必要なパラメータを取得する操作、暗号化/復号パケット総数や成功/失敗回数など、一部の動作集計データを指定されたBPF MAPに記録する操作を行う必要がある。
【0212】
また、付け加えると、実際の運用において、ノードBのユーザプレーンで動作する管理プログラムは初期化段階でeBPFプログラムをロードするだけでなく、さらに、BPF MAPを通じてdecrypt関数に必要なパラメータ、例えばX25519暗号化アルゴリズムの関連パラメータや秘密鍵、TCPポート番号などを伝達する作業、BPF MAPを通じて、decrypt関数が動作時に記録した集計データ、例えば復号パケット総数や成功/失敗回数などを取りまとめる作業、コマンドライン(またはRestfulなど、その他の形式の)インタフェースを通じて、eBPFプログラムの動作パラメータや動作状態をユーザが管理・問い合わせできるようにする作業などを担当する。
【0213】
これにより、上位層アプリケーションとeBPFプログラムとの共同暗号化を実現し、透過性をできる限り保証した状況において、伝送するデータの安全性をより向上させることができる。
【0214】
上記の説明からわかるように、本実施例で提供するネットワークトランスポート層データ処理方法は、システム環境設定と上位層アプリケーションが感知しない状況下でネットワークトランスポート層通信暗号化を実現する。したがって配置コストが低く、環境とアプリケーションの優れた互換性を備えている。また、運用中に随時、暗号化のアルゴリズム、パラメータの変更およびスイッチのアクティベートができ、上位層アプリケーションが当該システムと協力してカスタマイズされた共同暗号化保護メカニズムを実現することも選択できるので、優れた柔軟性と拡張性能を備えている。最後に、eBPF技術に基づいているため、当該方法は安全性と性能面でも保証されている。
【0215】
また、上記の各種方法のステップの線引きは、説明を明確にするためだけのものである。実現化する場合は1つのステップにまとめるか、いずれかのステップを分割して複数のステップに分解してもよく、同じ論理関係が含まれていさえすれば、すべて本願の保護範囲に含まれる。アルゴリズムまたはフローに、さして重要でない変更を加えたり、さして重要でない設計を取り入れたりしても、アルゴリズムとフローの核心設計が変わっていなければ、本願の保護範囲に含まれる。
【0216】
図9を参照されたい。
図9は本願実施例で提供するネットワークトランスポート層データ処理機器の構造模式図である。
【0217】
図9に示すように、本実施例で提供するネットワークトランスポート層データ処理機器は、少なくとも1つのプロセッサ901と、少なくとも1つのプロセッサに通信接続されたメモリ902とを含む。
【0218】
また、完全透過的伝送暗号化を実現できるよう、あるいはサービス要求に応じて上位層アプリケーションプログラムと共同で伝送暗号化を実現するために、ネットワークトランスポート層データ処理機器はさらに、ユーザプレーンで動作する管理プログラムと、カーネルで動作するeBPFプログラムとを含む。
【0219】
管理プログラムは、所在環境のカーネルにeBPFプログラムをロードもしくは登録し、eBPFプログラムがカーネル内で動作できるようにするために用いられる。メモリ902には少なくとも1つのプロセッサ901によって実行されうる指令が記憶され、指令は少なくとも1つのプロセッサ901で実行されて、少なくとも1つのプロセッサ901に、上記の管理プログラムに適用される方法実施例で説明したネットワークトランスポート層データ処理方法、またはeBPFプログラムに適用される方法実施例で説明したネットワークトランスポート層データ処理方法を実行させることができる。
【0220】
メモリ902とプロセッサ901とはバス方式で接続される。バスは任意の数量の相互に接続したバスおよびブリッジを含んでもよく、バスが1つまたは複数のプロセッサ901とメモリ902の各種回路を1つに接続してもよい。バスはさらに例えば周辺機器、電圧レギュレータ、パワーマネジメント回路などといったその他各種回路を1つに接続していてもよいが、これらは本分野では公知であるのでここで詳しく説明しない。バスインタフェースはバスと送受信機との間のインタフェースである。送受信機は1つのコンポーネントでもよいし、複数のコンポーネント、例えば複数の受信機および送信機でもよく、伝送媒体上での他の各種装置と通信するための手段を提供する。プロセッサ901で処理されたデータはアンテナを介して無線媒体により伝送される。さらに、アンテナはデータを受信してデータをプロセッサ901へ伝送する。
【0221】
プロセッサ901はバスの管理および通常の処理を担当し、さらにタイマー、周辺インタフェース、電圧調節、電源管理およびその他の制御機能を含む、各種機能を提供することができる。メモリ902は、プロセッサ901が操作を実行する際に使用するデータを記憶するために用いることができる。
【0222】
本願実施例はさらに、コンピュータプログラムが記憶された、コンピュータ可読記憶媒体に関する。コンピュータプログラムは、プロセッサによって実行されると上記方法実施例で説明したネットワークトランスポート層データ処理方法を実現する。
【0223】
即ち、当業者であればわかるように、上記実施例の方法における全部または一部のステップは、プログラムによって関連ハードウェアに指令することで達成される。当該プログラムは1つの記憶媒体に記憶され、1つの機器(シングルチップコンピュータ、チップなど)またはプロセッサ(processor)に本願の各実施例で述べた方法の全部または一部のステップを実行させるためのいくつかの指令が含まれている。前述の記憶媒体は、Uディスク、モバイルハードディスク、ROM(Read-Only Memory)、RAM(Random Access Memory)、磁気ディスクまたは光ディスクなど、プログラムコードを記憶可能な各種の媒体を含む。
【0224】
当業者であればわかるように、上記の各実施例は本願を実現する具体的な実施例であるが、実際の運用においては、本願の主旨および範囲を逸脱せずに、形式上および詳細部分で様々な変更が可能である。
【手続補正書】
【提出日】2023-12-08
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0016
【補正方法】変更
【補正の内容】
【0016】
その上、本実施例で提供するネットワークトランスポート層データ処理スキームは、単にカーネルにロードされたeBPFプログラムに基づいてネットワークトランスポート層データパケットに暗号化または復号処理を行う以外に、eBPFプログラムが上位層アプリケーション、例えばユーザプレーンで動作するアプリケーションプログラムと協力して、共同暗号化または復号処理を実現するように設定することもできる。したがって実際のサービス要求に応じて、上位層アプリケーションの変更をできる限り小さくした状態で、上位層アプリケーションと共同の暗号化/復号方式により、ネットワークトランスポート層データパケットの伝送過程での安全性をより一層高めることができる。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0077
【補正方法】変更
【補正の内容】
【0077】
ステップ309:eBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データを受信した場合、集計データを所定の記憶領域に記憶し、および/または所定の形式で表示する。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0140
【補正方法】変更
【補正の内容】
【0140】
なお、eBPF技術は複数のプログラムタイプをサポートしており、異なるタイプのプログラムは異なる用途に用いられるが、現在伝送暗号化機能の実現により適しているのはトラフィックコントロール(Traffic Control,TC)タイプである。したがって、本実施例において述べるネットワークトランスポート層データパケットに対して暗号化処理または復号処理を行うeBPFプログラムは、具体的にはTCタイプのeBPFプログラムである。カーネル内にTCタイプのeBPFプログラムをロードすることで、Linuxカーネルがネットワークトランスポート層データパケットを処理する入口と出口を直接フックすることができる。カーネルがネットワークトランスポート層データパケットの受信または送信を行う前に、TCプログラムが元のネットワークトランスポート層データパケットを一時保管するメモリバッファ領域に直接アクセスする。そして元のネットワークトランスポート層データパケットに対応するメモリバッファ領域のアドレスに基づいて、メモリバッファ領域から処理する必要があるネットワークトランスポート層データパケットを取得する。次に取得したネットワークトランスポート層データパケットに対して相応のネットワークトランスポート層データ処理操作を行い、相応のネットワークトランスポート層データ処理操作が完了した後、カーネルに渡し、カーネルがそれを配布処理する。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0158
【補正方法】変更
【補正の内容】
【0158】
(2)ネットワークトランスポート層データパケットのペイロード部分がIPプロトコルであるか否かを判定する。否であればそのまま処理を終了する。即ちステップ(9)へ進む。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0159
【補正方法】変更
【補正の内容】
【0159】
(3)ペイロード部分に対してIPプロトコル分析を行い(IPヘッダを解析して剥離し)、IPヘッダのペイロードプロトコルがTCPを示していなければ、そのまま処理を終了する。即ちステップ(9)へ進む。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0160
【補正方法】変更
【補正の内容】
【0160】
(4)ペイロード部分に対してTCPプロトコル分析を行い(TCPヘッダを解析して剥離し)、対象ポートが1080であるか否かを判定する。否であればそのまま処理を終了する。即ちステップ(9)へ進む。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0191
【補正方法】変更
【補正の内容】
【0191】
上記の方式3については、実際の運用において,ノードAおよびノードBにいずれも管理プログラムおよびeBPFプログラムを配置するとともに、eBPFプログラムがencrypt関数およびdecrypt関数の呼び出しをサポートするようにする必要がある。これで
図7に対する説明とほぼ同様に実現することができるが、ユーザプレーンのアプリケーションプログラムには、暗号化および
復号操作が追加される。
【手続補正8】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
カーネルで動作する拡張バークレーパケットフィルタeBPFプログラムに適用されるネットワークトランスポート層データ処理方法であって、
配布する必要があるネットワークトランスポート層データパケットを取得するステップと、
前記ネットワークトランスポート層データパケットを解析して、前記ネットワークトランスポート層データパケットに対して行う必要があるネットワークトランスポート層データ処理方式を決定するステップと、
前記ネットワークトランスポート層データ処理方式に基づいて、前記ネットワークトランスポート層データパケットに対して処理を行うステップと、を含む、
ネットワークトランスポート層データ処理方法。
【請求項2】
前記ネットワークトランスポート層データパケットを解析して、前記ネットワークトランスポート層データパケットに対して行う必要があるネットワークトランスポート層データ処理方式を決定する前記ステップは、
前記ネットワークトランスポート層データパケットを解析して、前記ネットワークトランスポート層データパケットのプロトコルヘッダを抽出するステップと、
前記プロトコルヘッダと、ユーザプレーンで動作する管理プログラムによって提供される、予め設定された暗号化/復号条件とに基づいて、前記ネットワークトランスポート層データパケットに暗号化または復号が必要か否かを判定するステップと、
前記ネットワークトランスポート層データパケットに暗号化を行う必要がある場合、前記
ネットワークトランスポート層データに対して行う必要があるネットワークトランスポート層データ処理方式を暗号化処理に決定するステップと、
前記ネットワークトランスポート層データパケットに復号を行う必要がある場合、前記
ネットワークトランスポート層データに対して行う必要があるネットワークトランスポート層データ処理方式を復号処理に決定するステップと、を含む、
請求項1に記載のネットワークトランスポート層データ処理方法。
【請求項3】
前記ネットワークトランスポート層データ処理方式は前記暗号化処理であり、
前記ネットワークトランスポート層データ処理方式に基づいて、前記ネットワークトランスポート層データパケットに対して処理を行う前記ステップは、
前記管理プログラムによって提供される、予め設定された暗号化ルールの中から、対象暗号化ルールを選択するステップと、
前記対象暗号化ルールに基づいて、前記ネットワークトランスポート層データパケットのペイロード部分に対して暗号化処理を行うステップと、
暗号化された前記ペイロード部分に基づいて、前記プロトコルヘッダを更新して、暗号化された前記ネットワークトランスポート層データパケットを得るステップと、
暗号化された前記ネットワークトランスポート層データパケットをカーネルに渡し、前記カーネルが暗号化された前記ネットワークトランスポート層データパケットの配布を行うステップと、を含む、
請求項2に記載のネットワークトランスポート層データ処理方法。
【請求項4】
前記ネットワークトランスポート層データ処理方式は、前記復号処理であり、
前記ネットワークトランスポート層データ処理方式に基づいて、前記ネットワークトランスポート層データパケットに対して処理を行う前記ステップは、
前記管理プログラムによって提供される、予め設定された復号ルールの中から、対象復号ルールを選択するステップと、
前記対象復号ルールに基づいて、前記ネットワークトランスポート層データパケットのペイロード部分に対して復号処理を行うステップと、
復号された前記ペイロード部分に基づいて、前記プロトコルヘッダを更新して、復号された前記ネットワークトランスポート層データパケットを得るステップと、
復号された前記ネットワークトランスポート層データパケットをカーネルに渡し、前記カーネルが復号された前記ネットワークトランスポート層データパケットの配布を行うステップと、を含む、
請求項2に記載のネットワークトランスポート層データ処理方法。
【請求項5】
ユーザプレーンで動作する管理プログラムから送信された設定情報更新指令を受信するステップと、
前記設定情報更新指令に基づいて、予め設定された設定情報を更新するステップと、を含み、
前記設定情報は、暗号化/復号条件と暗号化ルールと復号ルールとのうちのいずれか1つまたは複数を含む、
請求項1~4のいずれか一項に記載のネットワークトランスポート層データ処理方法。
【請求項6】
ユーザプレーンで動作する管理プログラムに適用されるネットワークトランスポート層データ処理方法であって、
前記管理プログラム起動後に、カーネルで動作するeBPFプログラムに対する操作指令、および/または前記eBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データを受信したか否かをモニタリングするステップと、
前記eBPFプログラムに対する操作指令を受信した場合、前記操作指令に基づいて前記eBPFプログラムに対して処理を行うステップと、
前記eBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データを受信した場合、前記集計データに対して処理を行うステップと、を含む、
ネットワークトランスポート層データ処理方法。
【請求項7】
前記操作指令は、設定情報更新指令またはeBPFプログラム置換指令またはeBPFプログラムアンロード指令であり、
前記eBPFプログラムに対する操作指令を受信した場合、前記操作指令に基づいて前記eBPFプログラムに対して処理を行う前記ステップは、
前記操作指令が前記設定情報更新指令である場合、前記設定情報更新指令から更新する必要がある設定情報を抽出し、抽出した前記更新する必要がある設定情報に基づいて、前記eBPFプログラムに対応する設定情報マッピングテーブルを更新するステップと、
前記操作指令が前記eBPFプログラム置換指令である場合、前記eBPFプログラム置換指令から置換eBPFプログラムを抽出して、前記置換eBPFプログラムをカーネルに登録し、前記置換eBPFプログラムを前記カーネルに登録した後で、前記カーネルで動作している前記eBPFプログラムをアンロードするステップと、
前記操作指令が前記eBPFプログラムアンロード指令である場合、前記カーネルで動作している前記eBPFプログラムをアンロードするステップと、を含む、
請求項6に記載のネットワークトランスポート層データ処理方法。
【請求項8】
前記eBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データを受信した場合、前記集計データに対して処理を行う前記ステップは、
前記集計データを所定の記憶領域に記憶し、および/または所定の形式で表示するステップを含む、
請求項6または7に記載のネットワークトランスポート層データ処理方法。
【請求項9】
前記管理プログラム起動後に、カーネルで動作するeBPFプログラムに対する操作指令、および/または前記eBPFプログラムが集計した、ネットワークトランスポート層データパケットに対する処理プロセスにおける集計データを受信したか否かをモニタリングするステップの前に、
所定のアドレスから、暗号化/復号条件と暗号化ルールと復号ルールとのうちのいずれか1つまたは複数を含む設定情報を読み取るステップと、
カーネルに登録する必要がある前記eBPFプログラムおよび前記設定情報の完全性を検査するステップと、
前記eBPFプログラムおよび前記設定情報がいずれも完全であった場合、前記eBPFプログラムをカーネルに登録して、前記eBPFプログラムをカーネルで動作させるステップと、
前記設定情報を前記eBPFプログラムに対応する設定情報マッピングテーブルに設定するステップと、を含む、
請求項
6または7に記載のネットワークトランスポート層データ処理方法。
【請求項10】
ユーザプレーンで動作する管理プログラムおよびカーネルで動作するeBPFプログラムと、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに通信接続されたメモリと、を含み、
前記管理プログラムは所在環境のカーネルに前記eBPFプログラムをロードして、前記eBPFプログラムを前記カーネルで動作させるために用いられ、前記メモリには前記少なくとも1つのプロセッサに実行される指令が記憶され、前記指令は前記少なくとも1つのプロセッサで実行されて、前記少なくとも1つのプロセッサが請求項
1~4のいずれか一項に記載のネットワークトランスポート層データ処理方法、または請求項
6または7に記載のネットワークトランスポート層データ処理方法を実行できるようにする、
ネットワークトランスポート層データ処理機器。
【請求項11】
コンピュータプログラムが記憶されたコンピュータ可読記憶媒体であって、前記コンピュータプログラムはプロセッサにより実行されたとき、請求項
1~4のいずれか一項に記載のネットワークトランスポート層データ処理方法、または請求項
6または7に記載のネットワークトランスポート層データ処理方法を実現する、
コンピュータ可読記憶媒体。
【国際調査報告】