(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-11-13
(54)【発明の名称】ネットワークセキュリティ保護方法および保護デバイス
(51)【国際特許分類】
H04L 41/0604 20220101AFI20231106BHJP
H04L 12/22 20060101ALI20231106BHJP
H04L 43/02 20220101ALI20231106BHJP
【FI】
H04L41/0604
H04L12/22
H04L43/02
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023527654
(86)(22)【出願日】2021-04-20
(85)【翻訳文提出日】2023-05-30
(86)【国際出願番号】 CN2021088490
(87)【国際公開番号】W WO2022100002
(87)【国際公開日】2022-05-19
(31)【優先権主張番号】202011250597.7
(32)【優先日】2020-11-10
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100132481
【氏名又は名称】赤澤 克豪
(74)【代理人】
【識別番号】100115635
【氏名又は名称】窪田 郁大
(72)【発明者】
【氏名】何 新乾
(72)【発明者】
【氏名】周 侃
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030GA15
5K030HD03
5K030KA07
5K030LB19
(57)【要約】
本出願は、ネットワークセキュリティ保護方法および保護デバイスを提供し、通信技術の分野に関する。保護デバイスは、セッションにおいてクライアントデバイスとサーバとの間で交換されるデータパケットのアプリケーション層データに基づいて、異なる検出モード間での適応的な切り替えを実装する。これは、フローモードのみが使用される場合に脅威が見逃される場合を回避し、プロキシモードのみが使用される場合に大量の不必要なリソースが占有される場合を回避する。したがって、保護効果が改善される。
【特許請求の範囲】
【請求項1】
ネットワークセキュリティ保護方法であって、前記方法は、
保護デバイスによって、第1のモードを使用して、伝送制御プロトコルTCPセッションにおけるデータパケットに対してセキュリティ検出を行う処理において、前記TCPセッションにおける第1のデータパケットを取得するステップであって、前記TCPセッションは、クライアントデバイスとサーバとの間のセッションであり、前記保護デバイスは、前記クライアントデバイスと前記サーバとの間に配置され、前記第1のモードは、前記保護デバイスによってサポートされる検出モードのセット内のモードである、ステップと、
前記保護デバイスによって、前記第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り替えることを決定するステップであって、前記第2のモードは、前記検出モードのセット内の前記第1のモード以外のモードである、ステップと、
前記保護デバイスによって、前記第2のモードに切り替え、前記第2のモードを使用して、前記TCPセッションにおける後続のパケットに対してセキュリティ検出を行うステップと
を含む、方法。
【請求項2】
前記検出モードセットは、パケットフィルタリングモード、フローモード、またはプロキシモードを含む請求項1に記載の方法。
【請求項3】
前記第1のモードは、フローモードであり、前記第2のモードは、プロキシモードであり、前記保護デバイスによって、前記第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り替えることを決定する前記ステップは、
前記保護デバイスによって、前記アプリケーション層データに基づいて、前記第1のデータパケットのアプリケーション層プロトコルタイプを識別するステップと、
前記保護デバイスによって、アプリケーション層プロトコルタイプと検出モードとの間の対応に基づいて、前記第1のデータパケットの前記アプリケーション層プロトコルタイプが前記プロキシモードに対応すると決定するステップと、
前記保護デバイスによって、切り替えられるべき前記第2のモードが、前記第1のデータパケットの前記アプリケーション層プロトコルタイプに対応する前記プロキシモードであると決定するステップと
を含む請求項1に記載の方法。
【請求項4】
前記第1のモードは、プロキシモードであり、前記第2のモードは、フローモードであり、前記セキュリティ検出は、アンチウイルスAV検出であり、前記保護デバイスによって、前記第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り替えることを決定する前記ステップは、
前記保護デバイスによって、前記第1のデータパケットの前記アプリケーション層データに対して行われるAV検出の結果が、ウィルスはないというものである場合、前記保護デバイスによって、切り替えられるべき前記第2のモードが前記フローモードであると決定するステップ
を含む請求項1に記載の方法。
【請求項5】
前記第1のモードは、プロキシモードであり、前記第2のモードは、フローモードであり、前記保護デバイスによって、前記第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り替えることを決定する前記ステップは、
前記第1のデータパケットの前記アプリケーション層データが、前記クライアントデバイスおよび前記サーバが前記TCPセッションにおいて暗号化された通信を行おうとしていることを示す場合、前記保護デバイスによって、切り替えられるべき前記第2のモードが前記フローモードであると決定するステップ
を含む請求項1に記載の方法。
【請求項6】
保護デバイスによって、TCPセッションにおいて第1のデータパケットを取得する前記ステップの前に、前記方法は、
前記保護デバイスによって、前記クライアントデバイスと前記サーバとの間で送信される第1のハンドシェイクパケットを取得するステップであって、前記第1のハンドシェイクパケットは、前記TCPセッションを作成するために使用され、前記第1のハンドシェイクパケットは、第1のオプションおよび第2のオプションを備え、前記第1のオプションは、前記保護デバイスによってサポートされるオプションであり、前記第2のオプションは、前記保護デバイスによってサポートされないオプションである、ステップと、
前記保護デバイスによって、前記第1のハンドシェイクパケットから前記第2のオプションを削除して、第2のハンドシェイクパケットを取得するステップと、
前記保護デバイスによって、前記第1のハンドシェイクパケットの宛先デバイスへ前記第2のハンドシェイクパケットを送るステップと
をさらに含む請求項1乃至5のいずれか一項に記載の方法。
【請求項7】
前記第1のモードは、前記フローモードであり、前記第2のモードは、前記プロキシモードであり、前記保護デバイスによって、前記第2のモードに切り換える前記ステップは、
前記保護デバイスによって、前記第1のオプションに基づいて、前記TCPセッションにおいて第2のデータパケットについての肯定応答パケットを生成するステップであって、前記第2のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって受信され、バッファされたパケットである、ステップと、
前記保護デバイスによって、前記第2のデータパケットのソースデバイスへ前記第2のデータパケットについての前記肯定応答パケットを送るステップであって、前記第2のデータパケットの前記ソースデバイスは、前記クライアントデバイスまたは前記サーバである、ステップと
を含む請求項6に記載の方法。
【請求項8】
前記第1のモードは、前記フローモードであり、前記第2のモードは、前記プロキシモードであり、前記保護デバイスによって、前記第2のモードに切り替える前記ステップは、
前記TCPセッションにおける第3のデータパケットが再送信条件を満たす場合、前記保護デバイスによって、前記第1のオプションに基づいて、前記第3のデータパケットの宛先デバイスへ前記第3のデータパケットを再送するステップであって、前記第3のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって送られたパケットであり、前記第3のデータパケットの前記宛先デバイスは、前記クライアントデバイスまたは前記サーバである、ステップ
を含む請求項6に記載の方法。
【請求項9】
前記第1のモードは、前記プロキシモードであり、前記第2のモードは、前記フローモードであり、前記保護デバイスによって、前記第2のモードに切り替える前記ステップは、
前記TCPセッションにおける第4のデータパケットが再送信条件を満たす場合、前記保護デバイスによって、前記第1のオプションに基づいて、前記第4のデータパケットの宛先デバイスへ前記第4のデータパケットを再送するステップであって、前記第4のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって送られたパケットであり、前記第4のデータパケットの前記宛先デバイスは、前記クライアントデバイスまたは前記サーバである、ステップ
を含む請求項6に記載の方法。
【請求項10】
前記第1のモードは、前記プロキシモードであり、前記第2のモードは、前記フローモードであり、前記保護デバイスによって、前記第2のモードに切り替える前記ステップは、
前記保護デバイスによって、前記TCPセッションにおいて第5のデータパケットを検出して、第6のデータパケットを取得するステップであって、前記第5のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって受信されたパケットであり、前記保護デバイスは、前記第1のオプションに基づいて、前記第5のデータパケットを構文解析した後に、前記第5のデータパケットのソースデバイスへ前記第5のデータパケットについての肯定応答パケットを送っており、前記第5のデータパケットの前記ソースデバイスは、前記クライアントデバイスまたは前記サーバである、ステップと、
前記保護デバイスによって、前記第1のオプションに基づいて、前記第5のデータパケットの宛先デバイスへ前記第6のデータパケットを送るステップであって、前記第5のデータパケットの前記ソースデバイスが前記クライアントデバイスである場合、前記第5のデータパケットの前記宛先デバイスは、前記サーバであり、または、前記第5のデータパケットの前記ソースデバイスが前記サーバである場合、前記第5のデータパケットの前記宛先デバイスは、前記クライアントデバイスである、ステップ
を含む請求項6に記載の方法。
【請求項11】
前記第6のデータパケットが再送信条件を満たす場合、前記保護デバイスによって、前記第1のオプションに基づいて、前記第5のデータパケットの前記宛先デバイスへ前記第6のデータパケットを再送する、請求項10に記載の方法。
【請求項12】
前記再送信条件は、前記保護デバイスが、データパケットについての肯定応答パケットを受信していないことを含み、または
前記第1のオプションは、選択的な肯定応答SACKオプションであり、前記再送信条件は、前記保護デバイスが、データパケットの宛先デバイスからのSACKオプション内の情報に基づいて、前記データパケットにおいてパケット損失が発生したと決定することを含む請求項8、9、または11に記載の方法。
【請求項13】
前記第1のハンドシェイクパケットは、前記クライアントデバイスからの同期シーケンス番号SYNパケットであり、前記第1のハンドシェイクパケットの前記宛先デバイスは、前記サーバであり、または
前記第1のハンドシェイクパケットは、前記サーバからの同期シーケンス番号肯定応答SYN ACKパケットであり、前記第1のハンドシェイクパケットの前記宛先デバイスは、前記クライアントデバイスである請求項6乃至12のいずれか一項に記載の方法。
【請求項14】
保護デバイスであって、前記保護デバイスは、クライアントデバイスとサーバとの間に配置され、前記保護デバイスは、
第1のモードを使用して、伝送制御プロトコルTCPセッションにおいてデータパケットに対してセキュリティ検出を行うように構成された処理ユニットであって、前記第1のモードは、前記保護デバイスによってサポートされる検出モードのセット内のモードである、処理ユニットと、
前記処理ユニットが、前記第1のモードを使用して、セキュリティ検出を行う処理において、前記TCPセッションにおいて第1のデータパケットを取得するように構成された取得ユニットであって、前記TCPセッションは、前記クライアントデバイスと前記サーバとの間のセッションである、取得ユニットと
を備え、
前記処理ユニットは、前記第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り替えることを決定するようにさらに構成され、前記第2のモードは、前記検出モードのセット内の前記第1のモード以外のモードであり、
前記処理ユニットは、前記第2のモードに切り替え、前記第2のモードを使用して、前記TCPセッションにおける後続のパケットに対してセキュリティ検出を行うようにさらに構成される、保護デバイス。
【請求項15】
前記第1のモードは、フローモードであり、前記第2のモードは、プロキシモードであり、前記処理ユニットは、前記アプリケーション層データに基づいて、前記第1のデータパケットのアプリケーション層プロトコルタイプを識別し、アプリケーション層プロトコルタイプと検出モードとの間の対応に基づいて、前記第1のデータパケットの前記アプリケーション層プロトコルタイプが前記プロキシモードに対応すると決定し、切り替えられるべき前記第2のモードが、前記第1のデータパケットの前記アプリケーション層プロトコルタイプに対応する前記プロキシモードであると決定するように構成される請求項14に記載の保護デバイス。
【請求項16】
前記第1のモードは、プロキシモードであり、前記第2のモードは、フローモードであり、前記セキュリティ検出は、アンチウイルスAV検出であり、前記処理ユニットは、前記第1のデータパケットの前記アプリケーション層データに対して行われるAV検出の結果が、ウィルスはないというものである場合、切り替えられるべき前記第2のモードが前記フローモードであると決定するように構成される請求項14に記載の保護デバイス。
【請求項17】
前記第1のモードは、プロキシモードであり、前記第2のモードは、フローモードであり、前記処理ユニットは、前記第1のデータパケットの前記アプリケーション層データが、前記クライアントデバイスおよび前記サーバが前記TCPセッションにおいて暗号化された通信を行おうとしていることを示す場合、切り替えられるべき前記第2のモードが前記フローモードであると決定するように構成される請求項14に記載の保護デバイス。
【請求項18】
前記取得ユニットは、前記クライアントデバイスと前記サーバとの間で送信される第1のハンドシェイクパケットを取得するようにさらに構成され、前記第1のハンドシェイクパケットは、前記TCPセッションを作成するために使用され、前記第1のハンドシェイクパケットは、第1のオプションおよび第2のオプションを含み、前記第1のオプションは、前記保護デバイスによってサポートされるオプションであり、前記第2のオプションは、前記保護デバイスによってサポートされないオプションであり、
前記処理ユニットは、前記第1のハンドシェイクパケットから第2のオプションを削除して、第2のハンドシェイクパケットを取得するようにさらに構成され、
前記保護デバイスは、送信ユニットをさらに備え、前記送信ユニットは、前記第1のハンドシェイクパケットの宛先デバイスへ前記第2のハンドシェイクパケットを送るように構成される請求項14乃至17のいずれか一項に記載の保護デバイス。
【請求項19】
前記第1のモードは、前記フローモードであり、前記第2のモードは、前記プロキシモードであり、前記処理ユニットは、前記第1のオプションに基づいて、前記TCPセッションにおける第2のデータパケットについての肯定応答パケットを生成するように構成され、前記第2のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって受信され、バッファされたパケットであり、
前記送信ユニットは、前記第2のデータパケットのソースデバイスへ前記第2のデータパケットについての前記肯定応答パケットを送るように構成され、前記第2のデータパケットの前記ソースデバイスは、前記クライアントデバイスまたは前記サーバである請求項18に記載の保護デバイス。
【請求項20】
前記第1のモードは、前記フローモードであり、前記第2のモードは、前記プロキシモードであり、前記送信ユニットは、前記TCPセッションにおける第3のデータパケットが再送信条件を満たす場合、前記第1のオプションに基づいて、前記第3のデータパケットの宛先デバイスへ前記第3のデータパケットを再送するように構成され、前記第3のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって送られたパケットであり、前記第3のデータパケットの前記宛先デバイスは、前記クライアントデバイスまたは前記サーバである請求項18に記載の保護デバイス。
【請求項21】
前記第1のモードは、前記プロキシモードであり、前記第2のモードは、前記フローモードであり、前記送信ユニットは、前記TCPセッションにおける第4のデータパケットが再送信条件を満たす場合、前記第1のオプションに基づいて、前記第4のデータパケットの宛先デバイスへ前記第4のデータパケットを再送するように構成され、前記第4のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって送られたパケットであり、前記第4のデータパケットの前記宛先デバイスは、前記クライアントデバイスまたは前記サーバである請求項18に記載の保護デバイス。
【請求項22】
前記第1のモードは、前記プロキシモードであり、前記第2のモードは、前記フローモードであり、前記処理ユニットは、前記TCPセッションにおける第5のデータパケットを検出して、第6のデータパケットを取得するように構成され、前記第5のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって受信されたパケットであり、前記保護デバイスは、前記第1のオプションに基づいて、前記第5のデータパケットを構文解析した後に、前記第5のデータパケットのソースデバイスへ前記第5のデータパケットについての肯定応答パケットを送っており、前記第5のデータパケットの前記ソースデバイスは、前記クライアントデバイスまたは前記サーバであり、
前記送信ユニットは、前記第1のオプションに基づいて、前記第5のデータパケットの宛先デバイスへ前記第6のデータパケットを送るように構成され、前記第5のデータパケットの前記ソースデバイスが前記クライアントデバイスである場合、前記第5のデータパケットの前記宛先デバイスは、前記サーバであり、または、前記第5のデータパケットの前記ソースデバイスが前記サーバである場合、前記第5のデータパケットの前記宛先デバイスは、前記クライアントデバイスである請求項18に記載の保護デバイス。
【請求項23】
前記送信ユニットは、前記第6のデータパケットが再送信条件を満たす場合、前記第1のオプションに基づいて、前記第5のデータパケットの前記宛先デバイスへ前記第6のデータパケットを再送するように構成される請求項22に記載の保護デバイス。
【請求項24】
保護デバイスであって、前記保護デバイスは、プロセッサと通信インターフェースとを備え、前記プロセッサは、プログラムコードを実行して、前記保護デバイスが、請求項1乃至13のいずれか一項に記載の方法を行うことを可能にするように構成され、前記通信インターフェースは、パケットを受信するように、または送るように構成される、保護デバイス。
【請求項25】
コンピュータプログラム製品であって、前記コンピュータプログラム製品は、1つまたは複数のコンピュータプログラム命令を備え、前記コンピュータプログラム命令が、コンピュータによってロードされ、実行される場合、前記コンピュータは、請求項1乃至13のいずれか一項に記載のネットワークセキュリティ保護方法を行うことを可能にされる、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、通信技術の分野に関し、特に、ネットワークセキュリティ保護方法および保護デバイスに関する。
【背景技術】
【0002】
本出願は、2020年11月10日に出願され、「NETWORK SECURITY PROTECTION METHOD AND PROTECTION DEVICE」と題された中国特許出願第202011250597.7号の優先権を主張し、この中国特許出願は、その全体が参照によって本明細書に組み込まれている。
【0003】
既存のネットワークセキュリティ保護解決策の基本原理は、2つのネットワークの間、または保護されるデバイスと別のデバイスとの間に、保護デバイス(例えば、ファイアウォール)を配置することであり、保護デバイスは、保護デバイスを通過するパケットを検出する。保護デバイスの検出モードは、パケットフィルタリングモード、フローモード、およびプロキシモードを含む。パケットフィルタリングモードは、単純な処理ロジックを有する。パケットフィルタリングモードの原理は、保護デバイスが、ファイアウォールを通って流れるデータパケットのパケットヘッダ情報と特定された規則とを比較し、比較結果に基づいて、データパケットを転送するか、またはデータパケットを破棄するかを決定するというものである。
【0004】
フローモードの基本原理は、保護デバイスが、通信ピア(例えば、クライアントデバイスおよびサーバ)間の通信セッションにおけるパケットに対して、パケットフィルタリングモードにおける検出と同様の検出を行い、検出結果およびセッションコンテキスト情報に基づいて、セッションに脅威があるかどうか、およびパケットを破棄するか、またはパケットを転送するかを決定するというものである。フローモードにおいて、保護デバイスが、クライアントデバイスまたはサーバによって送られたパケットを修正することはほとんどなく、保護デバイスが、クライアントデバイスおよびサーバへ能動的にパケットを送ることはほとんどない。しかしながら、フローモードにおいて、複雑なネットワーク攻撃を検出することは困難であり、セキュリティ保護要件が十分に満たされることはできない。例えば、アンチウイルスシナリオにおいて、フローモードは、通常、高度なウィルスが検出されることができず、ウィルス拡散が完全に阻止されることはできない場合を引き起こす。
【0005】
プロキシモードの原理は、サーバの代わりに保護デバイスが、クライアントデバイスへ肯定応答パケットを送り、クライアントデバイスの代わりに保護デバイスが、サーバへ肯定応答パケットを送るというものである。プロキシモードにおいて、保護デバイスは、パケットを確実に送るために、伝送制御プロトコル/インターネットプロトコル(transmission control protocol/internet protocol、TCP/IP)プロトコルスタックを使用する必要がある。プロキシモードは、複雑なネットワーク攻撃を検出することを助け、セキュリティ保護要件をより良好に満たすことができる。しかしながら、プロキシモードにおいて、保護デバイスは、大量のデータパケットをバッファおよび再アセンブルし、完全なプロトコルスタックをサポートする必要がある。したがって、大量のリソースが消費される。
【0006】
前述の3つの検出モードにおいて、パケットフィルタリングモードおよびフローモードは、複雑な攻撃を検出する能力を著しく欠いており、プロキシモードは、あまりにも多くのリソースを消費し、包括的な検出を実装することができない。結果として、既存のネットワークセキュリティ保護技術は、不十分な保護効果を有する。
【発明の概要】
【0007】
本出願の実施形態は、ネットワークセキュリティ保護技術の保護効果を改善するための、ネットワークセキュリティ保護方法および保護デバイスを提供する。技術的解決策は、以下の通りである。
【0008】
第1の態様によれば、ネットワークセキュリティ保護方法が提供される。本方法において、保護デバイスは、第1のモードを使用してTCPセッションにおけるデータパケットに対してセキュリティ検出を行う処理において、TCPセッションにおける第1のデータパケットを取得し、TCPセッションは、クライアントデバイスとサーバとの間のセッションであり、保護デバイスは、クライアントデバイスとサーバとの間に配置され、第1のモードは、保護デバイスによってサポートされる検出モードのセット内のモードであり、保護デバイスは、第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り換えることを決定し、第2のモードは、検出モードのセット内の第1のモード以外のモードであり、保護デバイスは、第2のモードに切り替え、第2のモードを使用して、TCPセッションにおける後続のパケットに対してセキュリティ検出を行う。
【0009】
第1の態様において提供される方法において、保護デバイスは、セッションにおいてクライアントデバイスとサーバとの間で交換されるデータパケットに基づいて、異なる検出モードの間で適応的に切り替える。これは、フローモードのみが使用される場合に脅威が見逃される場合を回避し、プロキシモードのみが使用される場合に大量の不必要なリソースが占有される場合を回避する。したがって、保護効果および性能が改善される。
【0010】
任意選択で、検出モードセットは、パケットフィルタリングモード、フローモード、またはプロキシモードを含む。
【0011】
前述の任意選択の手法において、保護デバイスが複数の検出モードをサポートする場合、保護デバイスは、パケットフィルタリングモード、フローモード、またはプロキシモードなどの複数のモード内のモードを必要に応じて選択し、それによって、より多くの適用シナリオの要件を満たし、柔軟性を改善することができる。
【0012】
任意選択で、第1のモードは、フローモードであり、第2のモードは、プロキシモードであり、保護デバイスが、第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り替えることを決定することは、以下を含む。保護デバイスは、アプリケーション層データに基づいて、第1のデータパケットのアプリケーション層プロトコルタイプを識別し、保護デバイスは、アプリケーション層プロトコルタイプと検出モードとの間の対応に基づいて、第1のデータパケットのアプリケーション層プロトコルタイプがプロキシモードに対応すると決定し、保護デバイスは、切り替えられるべき第2のモードが、第1のデータパケットのアプリケーション層プロトコルタイプに対応するプロキシモードであると決定する。
【0013】
前述の任意選択の手法において、同じTCPセッション相互作用処理において、検出モードは、アプリケーション層プロトコルタイプに基づいて、適応的に選択され、その結果、保護デバイスの検出モードがアプリケーション層検出の要件を満たすことが確実にされ、それによって、セキュリティとデバイスリソース占有とのバランスを取ることを助ける。
【0014】
任意選択で、第1のモードは、プロキシモードであり、第2のモードは、フローモードであり、セキュリティ検出は、アンチウイルス(anti-virus、AV)検出であり、保護デバイスが、第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り替えることを決定することは、以下を含む。第1のデータパケットのアプリケーション層データに対して保護デバイスによって行われるAV検出の結果が、ウィルスが存在しないというものである場合、保護デバイスは、切り替えられるべき第2のモードがフローモードであると決定する。
【0015】
前述の任意選択の手法において、AV検出結果に基づいて、クライアントデバイスとサーバとの間で交換されるデータパケットがウィルスを含まないことを見出した場合、保護デバイスは、プロキシモードからフローモードに切り替えて、フローモードを使用して後続の処理手順を加速し、デバイスのリソース占有を低減し、検出性能を改善することを助ける。
【0016】
任意選択で、第1のモードは、プロキシモードであり、第2のモードは、フローモードであり、保護デバイスが、第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り替えることを決定することは、以下を含む。第1のデータパケットのアプリケーション層データが、クライアントデバイスおよびサーバがTCPセッションにおいて暗号化された通信を行おうとしていることを示す場合、保護デバイスは、切り替えられるべき第2のモードがフローモードであると決定する。
【0017】
前述の任意選択の手法において、保護デバイスは、クライアントデバイスおよびサーバが暗号化された通信を続いて行おうとしていることを見出した場合、プロキシモードからフローモードに切り替える。これは、保護デバイスが暗号化/復号機能をサポートしないことが理由で、保護デバイスがプロキシモードを使用して、暗号化されたデータを検出することができないシナリオに際してフローモードに戻ることを助け、それによって、フローモードを使用して後続の処理手順を加速し、デバイスのリソース占有を低減し、検出性能を改善する。
【0018】
任意選択で、保護デバイスが、TCPセッションにおいて第1のデータパケットを取得する前に、本方法は、以下をさらに含む。
保護デバイスは、クライアントデバイスとサーバとの間で送信された第1のハンドシェイクパケットを取得し、第1のハンドシェイクパケットは、TCPセッションを作成するために使用され、第1のハンドシェイクパケットは、第1のオプションおよび第2のオプションを含み、第1のオプションは、保護デバイスによってサポートされるオプションであり、第2のオプションは、保護デバイスによってサポートされないオプションであり、保護デバイスは、第1のハンドシェイクパケットから第2のオプションを削除して、第2のハンドシェイクパケットを取得し、保護デバイスは、第1のハンドシェイクパケットの宛先デバイスへ第2のハンドシェイクパケットを送る。
【0019】
前述の任意選択の手法において、クライアントデバイスおよびサーバデバイスが、保護デバイスによってサポートされないオプションを使用することによって通信を行うことが理由で、モード切り替え手順においてクライアントまたはサーバによって使用されるオプションを構文解析することが保護デバイスにとって困難な場合に引き起こされるパケット送信障害が回避され、それによって、モード切り替え手順における信頼性および成功率を改善する。
【0020】
任意選択で、第1のモードは、フローモードであり、第2のモードは、プロキシモードであり、保護デバイスが第2のモードに切り替えることは、以下を含む。保護デバイスは、第1のオプションに基づいて、TCPセッションにおける第2のデータパケットについての肯定応答パケットを生成し、第2のデータパケットは、保護デバイスによって第1のモードを使用して受信され、バッファされたパケットであり、保護デバイスは、第2のデータパケットのソースデバイスへ第2のデータパケットについての肯定応答パケットを送り、第2のデータパケットのソースデバイスは、クライアントデバイスまたはサーバである。
【0021】
前述の任意選択の手法において、データパケットがフローモードを使用してバッファされた複雑な場合おいて、モードをどのように切り替えるかに関する実装が提供され、それによって、解決策の可用性を改善する。
【0022】
任意選択で、第1のモードは、フローモードであり、第2のモードは、プロキシモードであり、保護デバイスが第2のモードに切り替えることは、以下を含む。TCPセッションにおける第3のデータパケットが再送信条件を満たす場合、保護デバイスは、第1のオプションに基づいて、第3のデータパケットの宛先デバイスへ第3のデータパケットを再送し、第3のデータパケットは、保護デバイスによって第1のモードを使用して送られたパケットであり、第3のデータパケットの宛先デバイスは、クライアントデバイスまたはサーバである。
【0023】
前述の任意選択の手法において、データパケットがフローモードを使用して送られた複雑な場合において、モードをどのように切り替えるかに関する実装が提供され、それによって、解決策の可用性を改善する。
【0024】
任意選択で、第1のモードは、プロキシモードであり、第2のモードは、フローモードであり、保護デバイスが第2のモードに切り替えることは、以下を含む。TCPセッションにおける第4のデータパケットが再送信条件を満たす場合、保護デバイスは、第1のオプションに基づいて、第4のデータパケットの宛先デバイスへ第4のデータパケットを再送し、第4のデータパケットは、保護デバイスによって第1のモードを使用して送られたパケットであり、第4のデータパケットの宛先デバイスは、クライアントデバイスまたはサーバである。
【0025】
前述の任意選択の手法において、データパケットがプロキシモードを使用して送られた複雑な場合において、モードをどのように切り替えるかに関する実装が提供され、それによって、解決策の可用性を改善する。
【0026】
任意選択で、第1のモードは、プロキシモードであり、第2のモードは、フローモードであり、保護デバイスが第2のモードに切り替えることは、以下を含む。保護デバイスは、TCPセッションにおける第5のデータパケットを検出して、第6のデータパケットを取得し、第5のデータパケットは、保護デバイスによって第1のモードを使用して受信されたパケットであり、保護デバイスは、第1のオプションに基づいて第5のデータパケットを構文解析した後に、第5のデータパケットのソースデバイスへ第5のデータパケットについての肯定応答パケットを送り、第5のデータパケットのソースデバイスは、クライアントデバイスまたはサーバであり、保護デバイスは、第1のオプションに基づいて、第5のデータパケットの宛先デバイスへ第6のデータパケットを送り、第5のデータパケットのソースデバイスがクライアントデバイスである場合、第5のデータパケットの宛先デバイスは、サーバであり、または第5のデータパケットのソースデバイスがサーバである場合、第5のデータパケットの宛先デバイスは、クライアントデバイスである。
【0027】
前述の任意選択の手法において、データパケットがプロキシモードを使用して受信された複雑な場合において、モードをどのように切り替えるかに関する実装が提供され、それによって、解決策の可用性を改善する。
【0028】
任意選択で、第6のデータパケットが再送信条件を満たす場合、保護デバイスは、第1のオプションに基づいて、第5のデータパケットの宛先デバイスへ第6のデータパケットを再送する。
【0029】
前述の任意選択の手法において、プロキシモードを使用して以前に送られたデータパケットの送信障害が回避され、通信信頼性が改善される。
【0030】
任意選択で、再送信条件は、以下を含む。保護デバイスは、データパケットについての肯定応答パケットを受信しておらず、または、第1のオプションは、選択的な肯定応答(selective acknowledgement、SACK)オプションであり、再送信条件は、以下を含む。保護デバイスは、データパケットの宛先デバイスからのSACKオプションにおける情報に基づいて、データパケットにおいてパケット損失が発生したと決定する。
【0031】
前述の任意選択の手法は、保護デバイスがプロキシモードを使用してパケット送信信頼性を確実にすることを助ける。
【0032】
任意選択で、第1のハンドシェイクパケットは、クライアントデバイスからの同期シーケンス番号(synchronize sequence numbers、SYN)パケットであり、第1のハンドシェイクパケットの宛先デバイスは、サーバであり、または、第1のハンドシェイクパケットは、サーバからの同期シーケンス番号肯定応答(synchronize sequence numbers acknowledgement、SYN ACK)パケットであり、第1のハンドシェイクパケットの宛先デバイスは、クライアントデバイスである。
【0033】
第2の態様によれば、保護デバイスが提供される。保護デバイスは、第1の態様または第1の態様の任意選択の手法のいずれか1つを実装する機能を有する。保護デバイスは、少なくとも1ユニットを含み、少なくとも1ユニットは、第1の態様または第1の態様の任意選択の手法のいずれか1つにおいて提供される方法を実装するように構成される。
【0034】
いくつかの実施形態において、保護デバイスにおけるユニットは、ソフトウェアを使用することによって実装され、保護デバイスにおけるユニットは、プログラムモジュールである。いくつかの他の実施形態において、保護デバイスにおけるユニットは、ハードウェアまたはファームウェアを使用することによって実装される。第2の態様において提供される保護デバイスの詳細については、第1の態様または第1の態様の任意選択の手法のいずれか1つを参照されたい。詳細は、ここでは再度説明されない。
【0035】
第3の態様によれば、保護デバイスが提供される。保護デバイスは、プロセッサと通信インターフェースとを含む。プロセッサは、命令を実行し、その結果、保護デバイスが、第1の態様または第1の態様の任意選択の手法のいずれか1つにおいて提供される方法を行うように構成される。通信インターフェースは、パケットを受信するように、または送るように構成される。第3の態様において提供される保護デバイスの詳細については、第1の態様または第1の態様の任意選択の手法のいずれか1つを参照されたい。詳細は、ここでは再度説明されない。
【0036】
第4の態様によれば、コンピュータ可読記憶媒体が提供される。記憶媒体は、少なくとも1つの命令を記憶し、命令は、プロセッサによって読み取られ、その結果、保護デバイスは、第1の態様または第1の態様の任意選択の手法のいずれか1つにおいて提供される方法を行う。
【0037】
第5の態様によれば、コンピュータプログラム製品が提供される。コンピュータプログラム製品は、1つまたは複数のコンピュータプログラム命令を含み、コンピュータプログラム命令がコンピュータによってロードされ、実行される場合、コンピュータは、第1の態様または第1の態様の任意選択の手法のいずれか1つにおいて提供される方法を行うことを可能にされる。
【0038】
第6の態様によれば、チップが提供される。チップが保護デバイス上で稼働する場合、保護デバイスは、第1の態様または第1の態様の任意選択の手法のいずれか1つにおいて提供される方法を行うことを可能にされる。
【0039】
第7の態様によれば、ネットワークシステムが提供される。ネットワークシステムは、保護デバイスと、クライアントデバイスと、サーバとを含み、保護デバイスは、第1の態様または第1の態様の任意選択の手法のいずれか1つによる方法を行うように構成される。
【図面の簡単な説明】
【0040】
【
図1】本出願の一実施形態による、フローモードにおけるパケット交換のフローチャートである。
【
図2】本出願の一実施形態による、プロキシモードにおけるパケット交換のフローチャートである。
【
図3】本出願の一実施形態による典型的な適用シナリオの概略図である。
【
図4】本出願の一実施形態による保護デバイスの構造の概略図である。
【
図5】本出願の一実施形態によるネットワークセキュリティ保護方法のフローチャートである。
【
図6】本出願の一実施形態による、クライアントとサーバとの間の三方向ハンドシェイクのフローチャートである。
【
図7】本出願の一実施形態による、三方向ハンドシェイクフェーズにおける保護デバイスの処理のフローチャートである。
【
図8】本出願の一実施形態による保護デバイスのシステムアーキテクチャの図である。
【
図9】本出願の一実施形態による保護デバイスのシステムアーキテクチャの図である。
【
図10】本出願の一実施形態による保護デバイスの構造の概略図である。
【発明を実施するための形態】
【0041】
本出願の目的、技術的解決策、および利点をより明確にするために、以下は、添付の図面を参照しつつ、本出願の実装を詳細にさらに説明する。
【0042】
最も初期のファイアウォールは、転送されたデータパケットをフィルタリングするために従来のルータに基づいたアクセス制御リスト(access control list、ACL)を追加することによって実装され、パケットフィルタリングファイアウォールと称される。パケットフィルタリングの基本原理は、以下の通りでる。ファイアウォールは、まず、転送されるべきデータパケットのパケットヘッダ情報を取得する。パケットヘッダ情報は、ネットワーク層情報、例えば、インターネットプロトコル(internet protocol、IP)アドレス、ソースポート、および宛先ポートなどである。次いで、ファイアウォールは、パケットヘッダ情報と特定された規則(ACLにおけるエントリ)とを比較し、ファイアウォールは、比較結果に基づいて、データパケットを転送または破棄する。
【0043】
例えば、ACLを使用することによって特定される規則は、外部インターネットのユーザが、企業の内部サーバ(ポート80)のみにアクセスすることを可能にされるが、ファイル転送プロトコル(file transfer protocol、FTP)サーバ(ポート21)にアクセスすることができないというものである。この場合において、ファイアウォールがパケットフィルタリング手段を使用する場合において、データパケットが外部インターネットからのものであり、宛先ポート番号が80であるとき、ファイアウォールは、データパケットを転送し、または、データパケットが外部インターネットからのものであり、宛先ポート番号が21であるとき、ファイアウォールは、データパケットを破棄する。
【0044】
フローモード(flow mode)は、前述のパケットフィルタリングモードに基づいたセッション状態情報をさらに伴う。
図1は、フローモードにおけるパケット交換の処理を示す。フローモードにおいて、ファイアウォールは、クライアントおよびサーバによって送られた元のパケットに対してパケットフィルタリングマッチングを行い、パケットを破棄するか、またはパケットを転送するかを決定する。フローモードにおいて、ファイアウォールは、セッション状態情報を維持するが、ファイアウォールは、パケットを修正することはほとんどなく、パケットを能動的に生成し、クライアントおよびサーバへパケットを送ることはほとんどない。パケット送信の信頼性は、クライアントおよびサーバに配置される伝送制御プロトコル(transmission control protocol、TCP)/IPプロトコルスタックに依存する。例えば、クライアントによって送られたデータパケットが、ファイアウォールによって検出された後に、データパケットがサーバへ送られているときに予期せず失われた場合、クライアント上のTCP再送信機構に基づいて、クライアントは、失われたパケット損失を再送する責任を負う。
【0045】
ネットワークおよびアプリケーションの複雑さの増加に伴って、ネットワーク層情報検出のための単純なパケットフィルタリング技術は、セキュリティ保護要件を満たすことができない。例えば、パケットが、ハイパーテキスト転送プロトコル(hyper text transfer protocol、HTTP)トンネリング技術を使用することによって送信される場合、ポート80は、FTPアプリケーションを実際に搬送することができる。
【0046】
これを考慮して、コンテンツ層データを検査するためのディープパケットインスペクション(deep packet inspection、DPI)技術が出現する。典型的なDPI技術は、例えば、アプリケーション識別技術および侵入防止システム(intrusion prevention system、IPS)技術を含む。しかしながら、フローモードは、依然としてDPI技術において主に使用されている。具体的には、パケットは修正されることがほとんどなく、新しいパケットは生成されることがほとんどない。ほとんどの場合において、セキュリティ検出のみが元のパケットに対して行われるが、検出されるコンテンツは、ネットワーク層情報のみからアプリケーション層情報へ深化し、すなわち、パケットコンテンツ全体が検出される。新しいパケットを生成する場合は、通常、以下の通りである。攻撃が検出された場合、またはセッションがブロックされる必要がある場合、保護デバイスは、接続再設定(reset the connection、RST)パケットを単純に構築し、TCPに従ってRSTパケットを送って、トラフィックをブロックする。
【0047】
しかしながら、検出結果を取得するために比較的大量のデータが必要とされる、または比較的大量のデータが修正される必要がある、いくつかの複雑なセキュリティ検出サービスの場合、フローモードは、複雑なセキュリティ検出サービスを十分にサポートすることができない。例えば、アンチウイルス(anti-virus、AV)シナリオにおいて、攻撃が検出されないという問題が、フローモードにおいて発生する可能性がある。これは、フローモードが大きな限界を有するからである。フローモードの限界は、以下の通りである。データ取得は、フローモードを使用するクライアントとサーバとの間の通信に依存する。受信されたデータは、フローモードを使用して、できるだけ早く転送される必要がある。さもなければ、クライアントとサーバとの間の相互作用が影響を受け得る。
【0048】
AV検出シナリオが、例として使用される。アンチウイルス機能は、いくつかの進化したウィルスを検出するために、完全な送信されたファイルが取得されることを必要とする。しかしながら、TCP送信機構は、クライアントが特定のデータ(ファイルの一部)を送った後に、サーバが応答する必要があり、クライアントは、応答を受信した後にのみ、後続のデータを送り続けることを必要とする。しかしながら、サーバは、サーバがクライアントからデータを受信した後にのみ、応答する。したがって、ファイアウォールがフローモードを使用する場合、データパケットのみが送られることが可能である。サーバが、ファイアウォールからデータパケットを受信し、応答した後にのみ、クライアントは、後続のデータパケットを送る。ファイアウォールは、データパケットが送られた後にのみ、(ファイアウォールによってバッファされ、コピーされた)抽出されたファイルに対してウィルス検出を行い始めることができる。この場合において、ファイアウォールがウィルスを発見しても、ファイアウォールは、ウィルスをブロックすることができない。これは、ほとんど全部のデータパケットがサーバへ送られており、ウィルスの実際に有効な部分が送られており、攻撃が形成されているからである。サーバのための保護効果が不十分であることは明らかである。また、フローモードにおいて、ファイアウォールがウィルスを検出しても、ファイアウォールは、セッションを単純にブロックすることによって攻撃をブロックすることしかできず、ユーザがセッション中断理由を十分に認識することを確実にすることができない。また、セッションがブロックされた場合、アプリケーションは、いくつかの再開可能なデータ転送機構を通じて、残りのデータコンテンツを送ることができる。結果として、ファイアウォールは、ウィルス拡散を完全にはブロックすることができない。
【0049】
ウィルスをブロックするために、プロキシモード(proxy mode)を導入する研究もある。
【0050】
図2は、プロキシモードにおけるパケット交換の処理を示す。プロキシモードにおいて、ファイアウォールは、シミュレーションされるサーバとしての役割を果たし、サーバの代わりにファイアウォールが、クライアントと相互作用する。また、ファイアウォールは、シミュレーションされるクライアントとしての役割を果たし、クライアントの代わりにファイアウォールが、サーバと相互作用する。例えば、ウィルス検出シナリオにおいて、サーバの代わりにファイアウォールが、クライアントへ肯定応答(acknowledgement、ACK)パケットを送り、その結果、クライアントは、肯定応答パケットのトリガリングの下で、後続のデータパケットを送り続ける。ファイアウォールとクライアントとがデータパケットを交換する処理において、データパケットは、サーバへ送られない。ファイアウォールが、クライアントから全てのデータパケットを取得し、次いで、完全なファイルコンテンツを取得した後に、ファイアウォールは、ウィルス検出を開始する。ファイアウォールがウィルスを発見した場合、ファイアウォールは、ウィルスを含有するファイル全体を削除して、ウィルスがサーバへ送られないことを確実にする。代替として、ファイアウォールは、アタッチメントを削除しないが、プロンプト情報を追加することによってアタッチメント内のウィルスの存在をユーザに通知する。ウィルスが発見されないファイルの場合、クライアントの代わりにファイアウォールが、サーバへファイルを送る。
【0051】
プロキシモードにおいて、ファイアウォールは、データパケットのソース側(例えば、クライアント)へ肯定応答パケットを能動的に返し、その結果、ソース側は、肯定応答パケットのトリガリングの下で、後続のデータパケットを送り続けることが、プロキシモードの原理から分かる。したがって、ファイアウォールは、より多くのデータパケットを受信し、それによって、検出のためのより多くのデータを取得することができる。プロキシモードが複雑なネットワーク攻撃を検出し、セキュリティ検出の精度を改善することに役立つことは明らかである。また、プロキシモードにおいて、ファイアウォールは、ファイルの完全なコンテンツを検出し、ファイルが安全であると決定した後にのみ、データパケットの宛先側(例えば、サーバ)へファイルを転送する。これは、ファイルがウィルスを含有することは検出されたが、ウィルスを含有するファイルが宛先側へ転送済みとなる場合を回避する。ウィルス拡散がより良好にブロックされることが可能であり、セキュリティ保護の効果が改善されることが可能であることは、明らかである。
【0052】
しかしながら、プロキシモードにおいて、ファイアウォールがデータパケットの宛先側(例えば、サーバ)へデータパケットを転送する前に、ファイアウォールは、データパケットのソース側(例えば、クライアント)へ肯定応答パケットを送っている。したがって、ファイアウォールが、データパケットの宛先側へデータパケットを続いて送る処理において、データパケットが失われていると、ファイアウォールは、データパケットを再送信する必要がある。したがって、ファイアウォールは、再送信機能を実装するために完全なTCP/IPプロトコルスタックを有する必要があり、肯定応答パケットが受信されないデータパケットをバッファする必要がある。
【0053】
フローモードおよびプロキシモードを要約することによって、2つの検出モードにおいて、プロキシモードは、アンチウイルスなどの複雑なサービスの要件を満たすことができ、より良好な保護効果を有することができることが分かる。しかしながら、プロキシモードにおいて、ファイアウォールは、大量のパケットをバッファする必要があり、パケットを確実に送るためにTCP/IPプロトコルスタックをサポートする必要がある。したがって、フローモードと比較して、プロキシモードは、より多くのリソースを消費する必要があり、プロキシモードは、より複雑な処理ロジックを有する。
【0054】
一般的な解決策は、ファイアウォールが、ユーザの設定に基づいたプロキシモードを使用して、複雑なサービス処理を必要とするトラフィックを処理し、ファイアウォールが、フローモードを使用して、他のトラフィックを処理することである。
【0055】
しかしながら、プロキシモードを使用する従来の処理解決策において、標準的なTCP/IPプロトコルスタックのセッションを確立することは、ファイアウォールが、TCP同期シーケンス番号(synchronize sequence numbers、SYN)パケットを受信する瞬間に、処理のためにプロキシモードを使用するべきかどうかを決定することを必要とする。しかしながら、ライブネットワーク(非標準ポート)上のトラフィックの複雑さ、およびユーザ設定(アプリケーション層ベースの設定)の柔軟性に起因して、特定のデータパケット交換を行った後にのみ、ファイアウォールは、処理のためにプロキシモードを使用するべきかどうかを決定することができる。
【0056】
非標準ポートのパケットは、アプリケーション層プロトコルに対応する標準ポート番号を使用することによって、サーバまたはクライアントによって交換されないパケットである。非標準ポートのパケットを検出するシナリオにおいて、ファイアウォールは、パケットのポート番号を使用することによってアプリケーション層プロトコルのタイプを直接識別することができない。メールが簡易メール転送プロトコル(simple mail transfer protocol、SMTP)に基づいて送信されるシナリオが、例として使用される。一般に、SMTPはTCPポート25上で稼働し、すなわち、SMTPに対応する標準ポート番号は25である。しかしながら、多くのシナリオにおいて、メールサーバは、ポート25を使用せず、任意のTCPポート上で稼働する。例えば、前もって知られておらず、かつ、TCPポート26上で稼働するSMTPメールサーバが、ライブネットワーク内に存在する。クライアントは、このサーバを通じてメールを送る。ファイアウォールが、クライアントによって送られたSYNパケットを受信した場合、ファイアウォールデバイスは、SYNパケット内のポート番号が26であることを見出す。しかしながら、ファイアウォールデバイスは、TCPポート26上で稼働するプロトコルを前もって知らない。したがって、SYNパケットを受信した場合、ファイアウォールは、このセッションを処理するためにプロキシモードを使用するべきかどうかを決定することができない。
【0057】
前述のシナリオにおける要件を考慮して、いくつかの研究において、ファイアウォールが、SYNパケット、例えば、TCPポート25上にないSMTPトラフィック、またはTCPポート443上にないセキュリティソケット層(security sockets layer、SSL)トラフィックを受信する場合に、プロキシモードを使用するべきかどうかを決定することができない場合について、ファイアウォールは、トラフィックを検出するためにフローモードをデフォルトで使用する。ファイアウォールが、プロトコル識別を通じてパケットのプロトコルタイプを見出した後に、ファイアウォールは、サーバIPアドレスおよびポート番号を記録して、プロトコル識別テーブルを形成する。新しいセッションが続いて確立される場合、すなわち、後続のセッションのSYNパケットが到着する場合、ファイアウォールは、プロトコル識別テーブルに基づいてプロトコルタイプを識別した後に、プロキシモードを使用して、後続のセッションを処理する。
【0058】
研究過程において、前述の解決策が多くの欠点を有することが見出されている。第1のフローは、プロキシモードを使用して処理されない。したがって、検出のためにプロキシモードに依存する複雑なサービス、例えば、SSL復号などの特性の場合、第1のフローにおいて攻撃挙動がある場合、ファイアウォールは、その攻撃挙動を検出することができない。結果として、攻撃は検出されず、ネットワークセキュリティは著しく影響を受ける。また、プロトコル識別の精度、ならびに同じサーバIPアドレスおよびポート上のプロトコルの動的な変化は、この方法の不正確な適用につながることがあり、上位層サービスの正確な実装が確実にされることができない。
【0059】
攻撃が検出されないという問題を回避するために、別の方法は、受信されたSYNパケットを処理するためにプロキシモードを使用するべきかどうかが決定されない場合に、ファイアウォールが処理のためにプロキシモードをデフォルトで使用するというものである。
【0060】
研究過程において、前述の解決策も多くの欠点を有することが見出されている。ファイアウォールは、プロキシモードを使用して処理される必要のない大量のトラフィックを処理するためにプロキシモードを使用するので、ファイアウォールは、大量のデバイスリソースを消費し、不十分な性能を有する。ファイアウォールによって検出されることが可能な全体的なトラフィックが減少し、処理遅延が増加し、不十分なユーザ体験をもたらす。ユーザは、必要なセキュリティ検出がトラフィックに対して行われることを確実にするために、ファイアウォールに対してデバイス更新を行うことさえ必要とされ得る。
【0061】
これを考慮して、本出願の実施形態は、フローモードとプロキシモードとの間で適応的に切り替えるための解決策を提供する。この技術的解決策を実装することによって、ファイアウォールまたは別の保護デバイスは、アプリケーション層のセキュリティ検出要件に基づいて、同じTCPセッション内の後続のデータパケットを検出するために、フローモードまたはプロキシモードを動的に選択し、それによって、オンデマンドの動的な切り替えを実装することができる。
【0062】
したがって、この技術的解決策は、フローモードとプロキシモードとの両方を利用し、単一の検出モードが使用される場合に存在する前述の欠点を克服することができる。具体的には、フローモードが第1のフローに対してデフォルトで使用される解決策と比較して、この技術的解決策は、全てのトラフィック、非標準ポートの第1のフローに対してさえ、十分なセキュリティ検出が行われることを確実にすることができ、脅威が見逃されず、それによって、セキュリティ保護効果を十分に改善する。プロキシモードがデフォルトで使用される解決策と比較して、この技術的解決策は、プロキシセッションの量を大幅に低減し、デバイスのリソース消費を低減し、デバイスの全体的な処理能力を改善する。
【0063】
以下は、システム稼働環境、ハードウェア装置、ソフトウェア装置、および方法手順などの複数の視点から、技術的解決策を詳細に説明する。
【0064】
図3を参照すると、以下は、本出願の一実施形態において提供されるシステム稼働環境を説明する。
【0065】
図3は、本出願の一実施形態による典型的な適用シナリオ10の概略図である。適用シナリオ10は、クライアントデバイス11、サーバ12、および保護デバイス13を含む。以下は、クライアントデバイス11、サーバ12、および保護デバイス13を別々に説明する。
【0066】
(1)クライアントデバイス11
【0067】
クライアントデバイス11は、TCPセッションにおいてアクセスを開始するデバイスである。クライアントデバイス11は、パーソナルコンピュータ、携帯電話、サーバ12、ノート型コンピュータ、IP電話、カメラ、タブレット型コンピュータ、ウェアラブルデバイス等を含むが、これらに限定されない。例えば、クライアントデバイス11は、企業内の従業員のオフィスデバイスである。
【0068】
いくつかの実施形態において、メールボックスクライアントまたはファイル転送クライアントなどのアプリケーションが、クライアントデバイス11にインストールされる。クライアントデバイス11は、アプリケーションを使用することによってアプリケーション層データを生成し、アプリケーション層プロトコルに基づいて、サーバ12とアプリケーション層データを交換して、以下の方法実施形態をトリガする。例示的なシナリオにおいて、メールボックスクライアントを稼働させる処理では、クライアントデバイス11は、SMTPに基づいてサーバ12へメールを送信する。別の例示的なシナリオにおいて、ファイル転送クライアントを稼働させる処理では、クライアントデバイス11は、FTPに基づいてサーバ12へファイルを送信する。
【0069】
いくつかの実施形態において、システムアーキテクチャ10は、多数のクライアントデバイス11を含む。簡潔さのために、1つのクライアントデバイス11が、
図3における説明のための例として使用されている。
【0070】
(2)サーバ12
【0071】
サーバ12は、TCPセッションにおいてサービスを提供するデバイスである。例えば、サーバ12は、メールサーバ12であり、メールサーバ12は、SMTPに基づいて、クライアントのためのメール転送サービスを提供する。別の例として、サーバ12は、ファイルサーバ12であり、ファイルサーバ12は、FTPに基づいて、クライアントのためのファイル転送サービスを提供する。別の例として、サーバ12は、ウェブサイトサーバである。
【0072】
クライアントデバイス11とサーバ12との間のファイル転送は、双方向であってよく、すなわち、クライアントデバイス11は、サーバ12へファイルを送ってよく、サーバ12は、クライアントデバイス11へファイルを送ってよい。
【0073】
(3)保護デバイス13
【0074】
保護デバイス13は、クライアントデバイス11とサーバ12との間に配置される。保護デバイス13は、ネットワーク上でクライアントデバイス11およびサーバ12に別々に接続される。保護デバイス13は、ネットワーク内で送信されるパケットに対してセキュリティ検出を行うように構成される。セキュリティ検出は、IPS検出、AV検出等を含むが、これらに限定されない。保護デバイス13は、ファイアウォール、侵入検出システム(intrusion detection system、IDS)デバイス、またはIPSデバイスを含むが、これらに限定されない。保護デバイス13は、例えば、ネットワーク内でインラインモードで配置されるネットワーク検出デバイスである。
【0075】
保護デバイス13によってサポートされる複数の検出モードは、検出モードセットを形成する。検出モードセットは、少なくとも1つの検出モードを含む。例えば、検出モードセットは、パケットフィルタリングモード、フローモード、プロキシモード等を含む。
【0076】
以下は、保護デバイス13によってサポートされる検出モードのセットが、フローモードおよびプロキシモードを含む例を使用することによって、保護デバイス13の内部論理機能アーキテクチャを説明する。
【0077】
図3に示されるように、保護デバイス13は、上位層サービスモジュール130、フローモード処理モジュール131、プロキシモード処理モジュール132、およびTCP/IPプロトコルスタックモジュール133を含む。
【0078】
(a)上位層サービスモジュール130
【0079】
上位層サービスモジュール130は、例えば、保護デバイス13上でアプリケーションを使用することによって実装される。上位層サービスモジュール130は、アプリケーション層においてサービスを処理するように構成される。本出願のいくつかの実施形態において、上位層サービスモジュール130は、アプリケーション層データに基づいてプロトコル識別を行って、識別されたプロトコルタイプに基づいて、パケットを検出するために使用されるべき特定の検出モードを決定するように構成される。
【0080】
(b)フローモード処理モジュール131
【0081】
フローモード処理モジュール131は、フローモードを使用して、TCPセッションにおいてパケットを処理するタスクの責任を負う。例えば、フローモード処理モジュール131は、フローモードを使用して、クライアントデバイス11またはサーバ12からデータパケットを受信し、受信されたデータパケットをバッファし、クライアントデバイス11またはサーバ12へデータパケットを転送し、クライアントデバイス11またはサーバ12から肯定応答パケットを受信し、クライアントデバイス11またはサーバ12へ肯定応答パケットを転送するように構成される。フローモード処理モジュール131の具体的な構成については、
図8における関連する説明を参照されたい。
【0082】
(c)プロキシモード処理モジュール132
【0083】
プロキシモード処理モジュール132は、プロキシモードを使用して、TCPセッションにおいてパケットを処理するタスクの責任を負う。いくつかの実施形態において、プロキシモード処理モジュール132およびTCP/IPプロトコルスタックモジュール133は、別々に配設される。プロキシモード処理モジュール132およびTCP/IPプロトコルスタックモジュール133が別々に配設される例は、
図3における説明のために使用される。いくつかの他の実施形態において、プロキシモード処理モジュール132およびTCP/IPプロトコルスタックモジュール133は、同じモジュール内に一体化される。
【0084】
(d)TCP/IPプロトコルスタックモジュール133
【0085】
TCP/IPプロトコルスタックモジュール133は、TCP/IPに基づいてパケットを送信して、パケット送信信頼性を確実にするように構成される。TCP/IPプロトコルスタックモジュール133の具体的な構成については、
図8または
図9における関連する説明を参照されたい。いくつかの実施形態において、TCP/IPプロトコルスタックモジュール133は、ソフトウェアを使用することによって実装される。いくつかの他の実施形態において、TCP/IPプロトコルスタックモジュール133は、ハードウェアを使用することによって実装され、またはソフトウェアとハードウェアとの組み合わせを使用することによって実装される。例えば、保護デバイス13は、アクセラレータを用いて構成される。アクセラレータは、TCP/IPプロトコルスタックに関連するステップを処理するための専用ハードウェアである。TCP/IPプロトコルスタックモジュール133は、アクセラレータを使用することによって実装されて、TCP/IPプロトコルスタックをアクセラレータにオフロードし、それによって、中央処理ユニット(central processing unit、CPU)の負荷を低減する。
【0086】
TCP/IPプロトコルスタックモジュール133は、主に肯定応答返答および再送信機構を使用することによって送信信頼性を確実にする。具体的には、TCP/IPプロトコルスタックモジュール133がデータパケットを受信した後に、TCP/IPプロトコルスタックモジュール133は、データパケットのソース側へ肯定応答パケットを返す。TCP/IPプロトコルスタックモジュール133がデータパケットを送った後に、データパケットが再送信条件を満たす場合、TCP/IPプロトコルスタックモジュール133は、データパケットの宛先側へデータパケットを再送する。
【0087】
いくつかの実施形態において、再送信条件は、データパケットについての肯定応答パケットが受信されないことを含む。例えば、TCP/IPプロトコルスタックモジュール133がピア側へデータパケットを送った後に、データパケットに対応する肯定応答パケットが、予め設定された期間内に受信されない場合、再送信条件が満たされ、TCP/IPプロトコルスタックモジュール133は、データパケットを自動的に再送信する。
【0088】
いくつかの他の実施形態において、再送信条件は、ピア側(クライアントデバイス11またはサーバ12)によって送られる肯定応答パケット内の選択的肯定応答(selective acknowledgement、SACK)オプションにおける情報に基づいて、パケット損失がデータパケット内で発生したと決定することを含む。この再送信条件は、TCP/IPプロトコルスタックモジュール133がSACKオプションをサポートする場合に適用可能である。具体的には、TCP/IPプロトコルスタックモジュール133がピア側へデータパケットを送った後に、TCP/IPプロトコルスタックモジュール133は、ピア側から肯定応答パケットを受信する。TCP/IPプロトコルスタックモジュール133が、肯定応答パケット内のSACKオプションにおける範囲および記録された最大シーケンス番号(sequence number、Seq)に基づいて、データパケットは失われたと決定した場合、TCP/IPプロトコルスタックモジュール133は、データパケットを再送信する。例えば、保護デバイス13は、そのSeq番号がそれぞれ1、2、3および4である、4つのパケットを送る。そのSeq番号が1であるパケットは、ネットワーク上の理由で失われ、そのSeq番号が2、3、および4である3つのパケットは、ピア側へ成功裡に送信される。ピア側が、そのSeq番号が2、3、および4である3つのパケットを受信した場合、ピア側は、肯定応答パケット内のSACKオプションを使用することによって、そのSeq番号が2、3、および4である3つのパケットが受信され、そのSeq番号が1であるパケットのみが受信されないことを保護デバイス13に通知する。この場合において、そのSeq番号が1であるパケットは、再送信条件を満たし、保護デバイス13は、そのSeq番号が1であるパケットを再送信する。
【0089】
図4は、本出願の一実施形態による保護デバイスの構造の概略図である。任意選択で、
図4に示される構造を有する保護デバイスは、
図3、
図8、または
図9における保護デバイス13である。
【0090】
保護デバイス200は、少なくとも1つのプロセッサ201、通信バス202、メモリ203、および少なくとも1つの通信インターフェース204を含む。
【0091】
プロセッサ201は、例えば、本出願の解決策を実装するように構成された、汎用中央処理ユニット(central processing unit、CPU)、ネットワークプロセッサ(network processor、NP)、グラフィック処理ユニット(graphics processing unit、GPU)、ニューラルネットワーク処理ユニット(neural-network processing units、NPU)、データ処理ユニット(data processing unit、DPU)、マイクロプロセッサ、または、1つもしくは複数の集積回路である。例えば、プロセッサ201は、特定用途向け集積回路(application-specific integrated circuit、ASIC)、プログラマブルロジックデバイス(programmable logic device、PLD)、または、これらの組み合わせを含む。PLDは、例えば、複合プログラマブルロジックデバイス(complex programmable logic device、CPLD)、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)、ジェネリックアレイロジック(generic array logic、GAL)、または、これらの任意の組合せである。
【0092】
いくつかの実施形態において、プロセッサ201は、
図5に示される方法500におけるS520およびS530を行う際に保護デバイス200をサポートするように構成される。いくつかの実施形態において、プロセッサ201は、
図7に示される方法700におけるS720およびS750を行う際に保護デバイス200をサポートするようにさらに構成される。
【0093】
通信バス202は、前述の構成要素間で情報を送信するように構成される。通信バス202は、アドレスバス、データバス、制御バス等に分類され得る。表現の簡単さのために、1つの太線のみが、
図4における表現のために使用されているが、これは、1つのバスのみまたは1つのタイプのバスのみがあることを意味しない。
【0094】
メモリ203は、例えば、読み出し専用メモリ(read-only memory、ROM)、もしくは静的な情報および命令を記憶することができる別のタイプの静的記憶デバイス、ランダムアクセスメモリ(random access memory、RAM)、もしくは情報および命令を記憶することができる別のタイプの動的記憶デバイス、電気的消去可能プログラマブル読み出し専用メモリ(electrically erasable programmable read-only memory、EEPROM)、コンパクトディスク読み出し専用メモリ(compact disc read-only memory、CD-ROM)もしくは別のコンパクトディスクストレージ、光ディスクストレージ(コンパクトディスク、レーザディスク、光ディスク、デジタル多用途ディスク、ブルーレイディスク等を含む)、磁気ディスクストレージ媒体もしくは別の磁気ストレージデバイス、または、期待されるプログラムコードを命令もしくはデータ構造の形式で搬送もしくは記憶するために使用されることが可能であり、かつ、コンピュータによってアクセスされることが可能である任意の他の媒体であるが、これらに限定されない。例えば、メモリ203は、独立して存在し、通信バス202を使用することによってプロセッサ201へ接続される。メモリ203は、代替として、プロセッサ201に一体化されてよい。
【0095】
いくつかの実施形態において、メモリ203は、受信されたパケットをバッファする際、および送られたパケットをバッファする際に、保護デバイス200をサポートするように構成される。例えば、
図8または
図9を参照すると、メモリ203は、受信されたパケットキュー13111、受信されたパケットキュー13121、送られたパケットキュー13312、または送られたパケットキュー13322のうちの少なくとも1つを含む。
【0096】
通信インターフェース204は、送受信機などの任意の装置を使用することによって、別のデバイスまたは通信ネットワークと通信するように構成される。例えば、
図3に示される配置シナリオを参照すると、通信インターフェース204は、クライアントデバイス11またはサーバ12と通信するように構成される。通信インターフェース204は、有線通信インターフェースを含み、または無線通信インターフェースを含んでよい。有線通信インターフェースは、例えば、イーサネットインターフェースであってよい。イーサネットインターフェースは、光学インターフェース、電気インターフェース、または、これらの組み合わせであってよい。無線通信インターフェースは、無線ローカルエリアネットワーク(wireless local area network、WLAN)インターフェース、セルラーネットワーク通信インターフェース、または、これらの組み合わせであってよい。
【0097】
いくつかの実施形態において、通信インターフェース204は、
図5に示される方法500におけるS510を行う際に保護デバイス200をサポートするように構成される。いくつかの実施形態において、通信インターフェース204は、
図7に示される方法700におけるS730およびS780を行う際に保護デバイス200をサポートするようにさらに構成される。
【0098】
特定の実装期間中に、一実施形態において、プロセッサ201は、1つまたは複数のCPU、例えば、
図4に示されるCPU0およびCPU1を含み得る。
【0099】
特定の実装期間中に、一実施形態において、保護デバイス200は、複数のプロセッサ、例えば、
図4に示されるプロセッサ201およびプロセッサ205を含み得る。プロセッサの各々は、シングルコアプロセッサ(single-CPU)またはマルチコアプロセッサ(multi-CPU)であり得る。本明細書におけるプロセッサは、データ(例えば、コンピュータプログラム命令)を処理するように構成された、1つまたは複数のデバイス、回路、および/または処理コアであり得る。
【0100】
特定の実装期間中に、一実施形態において、保護デバイス200は、出力デバイスおよび入力デバイスをさらに含んでよい。出力デバイスは、プロセッサ201と通信し、複数の手法で情報を表示し得る。例えば、出力デバイスは、液晶ディスプレイ(liquid crystal display、LCD)、発光ダイオード(light-emitting diode、LED)表示デバイス、ブラウン管(cathode ray tube、CRT)表示デバイス、またはプロジェクター(projector)であってよい。入力デバイスは、プロセッサ201と通信し、複数の手法でユーザから入力を受信し得る。例えば、入力デバイスは、マウス、キーボード、タッチスクリーンデバイス、または感知デバイスであってよい。
【0101】
いくつかの実施形態において、メモリ203は、本出願の解決策を行うためのプログラムコード210を記憶するように構成され、プロセッサ201は、メモリ203内に記憶されたプログラムコード210を実行し得る。具体的には、保護デバイス200は、プロセッサ201とメモリ203内のプログラムコード210とを使用することによって、
図5に示される方法500または
図7に示される方法700を実装し得る。
【0102】
本出願のこの実施形態における保護デバイス200は、
図5に示される方法500または
図7に示される方法700における保護デバイスに対応し得る。また、保護デバイス200内のプロセッサ201、通信インターフェース204等は、
図5に示される方法500または
図7に示される方法700における保護デバイスの機能および/または様々な実装されたステップならびに方法を実装し得る。簡潔さのために、詳細は、ここでは再度説明されない。
【0103】
図5を参照して、以下は、本出願の一実施形態において提供されるネットワークセキュリティ保護方法を説明する。
【0104】
図5は、本出願の一実施形態によるネットワークセキュリティ保護方法500のフローチャートである。
【0105】
任意選択で、方法500におけるクライアントデバイス、サーバ、および保護デバイスのネットワーク配置シナリオが、
図3に示される。方法500におけるクライアントデバイスは、
図3におけるクライアントデバイス11であり、方法500におけるサーバは、システムアーキテクチャ10におけるサーバ12であり、方法500における保護デバイスは、
図3における保護デバイス13である。
【0106】
任意選択で、方法500における保護デバイスは、
図4に示される構造を有する。
【0107】
方法500は、ステップS510からステップS530を含む。ステップS510からステップS530において、保護デバイスがモード切り替えを一回行う処理は、保護デバイスがTCPセッションのために検出モードをどのように切り替えるかを説明するための例として使用される。保護デバイスは、実際の状況に応じて、モード切り替えを複数回行ってよく、各モード切り替え処理は、ステップS510からステップS530における処理と同様である。
【0108】
ステップS510:保護デバイスは、第1のモードを使用して、TCPセッションにおけるデータパケットに対してセキュリティ検出を行う処理において、TCPセッションにおける第1のデータパケットを取得する。
【0109】
この実施形態において、異なる検出モードを区別するために、「第1のモード」および「第2のモード」が、異なる検出モードを説明するために使用される。異なるデータパケットを区別するために、「第1のデータパケット」および「第2のデータパケット」が、異なるデータパケットを説明するために使用される。
【0110】
第1のモードは、保護デバイスによってサポートされる検出モードのセット内のモードである。例えば、第1のモードは、フローモード、プロキシモード、またはパケットフィルタリングモードである。
【0111】
第1のデータパケットは、第1のモードを使用して、保護デバイスによって受信され、バッファされたパケットである。第1のデータパケットは、クライアントデバイスとサーバとの間で交換されたコンテンツを含む。いくつかの実施形態において、第1のデータパケットのソースデバイスは、クライアントデバイスであり、第1のデータパケットの宛先デバイスは、サーバである。例えば、第1のデータパケットは、サーバからのデータパケットに基づいてクライアントデバイスによって生成されるパケットであり、第1のデータパケットは、クライアントデバイスがサーバへフィードバックする必要のある応答コンテンツを含む。いくつかの他の実施形態において、第1のデータパケットのソースデバイスは、サーバであり、第1のデータパケットの宛先デバイスは、クライアントデバイスである。例えば、第1のデータパケットは、クライアントデバイスからのデータパケットに基づいてサーバによって生成されるパケットであり、第1のデータパケットは、サーバがクライアントデバイスへフィードバックする必要のある応答コンテンツを含む。
【0112】
ステップS520:保護デバイスは、第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り換えることを決定する。
【0113】
第2のモードは、検出モードのセット内の第1のモード以外のモードである。例えば、第1のモードはフローモードであり、第2のモードはプロキシモードであり、保護デバイスは、方法500を行うことによって、フローモードからプロキシモードへ切り替える。別の例として、第1のモードはプロキシモードであり、第2のモードはフローモードであり、保護デバイスは、方法500を行うことによって、プロキシモードからフローモードに切り替える。別の例として、第1のモードはパケットフィルタリングモードであり、第2のモードはプロキシモードであり、保護デバイスは、方法500を行うことによって、パケットフィルタリングモードからプロキシモードに切り替える。別の例として、第1のモードはプロキシモードであり、第2のモードはパケットフィルタリングモードであり、保護デバイスは、方法500を行うことによって、プロキシモードからパケットフィルタリングモードに切り替える。
【0114】
ステップS530:保護デバイスは、第2のモードに切り替え、第2のモードを使用して、TCPセッションにおける後続のパケットに対してセキュリティ検出を行う。
【0115】
いくつかの実施形態において、ステップS510からステップS530は、1つのTCPセッションにおいて複数回行われる。具体的には、保護デバイスは、ステップS510からステップS530を複数回行って、1つのTCPセッションにおいて検出モードを複数回切り替える。例えば、TCPセッションが確立された後に、保護デバイスは、まず、フローモードを使用して、TCPセッションにおけるデータパケットを検出する。次いで、保護デバイスは、ステップS510からステップS530を行って、フローモードからプロキシモードに切り替え、プロキシモードを使用して、TCPセッションにおける後続のデータパケットを検出する。次いで、保護デバイスは、ステップS510からステップS530を行って、プロキシモードからフローモードに再び切り替え、TCPセッションが終了するまで、フローモードを使用して、TCPセッションにおける後続のデータパケットを検出する。
【0116】
上記に提供される方法において、保護デバイスは、セッションにおいてクライアントデバイスとサーバとの間で交換されるデータパケットに基づいて、異なる検出モード間で適応的に切り替える。これは、要件に基づいてモード選択を行うこと助け、フローモードのみが使用される場合に脅威が見逃される場合を回避し、プロキシモードのみが使用される場合に大量の不必要なリソースが占有される場合を回避する。したがって、保護効果および性能が改善される。
【0117】
ステップS520において、保護デバイスが特定の検出モードに切り替えることをどのように決定するかには、複数の実装がある。以下は、説明のための例として、実装1から実装3を使用する。
【0118】
実装1:保護デバイスは、アプリケーション層プロトコルタイプに基づいて、切り替えられるべき検出モードを決定する。
【0119】
アプリケーション層プロトコルは、クライアントデバイス上のアプリケーションおよびサーバ上のアプリケーションによって使用されて、パケットを互いに送信するためのプロトコルである。多くのタイプのアプリケーション層プロトコルがある。例えば、アプリケーション層プロトコルは、電子メール転送プロトコルである。例えば、アプリケーション層プロトコルは、SMTP、ポストオフィスプロトコル3(post office protocol 3、POP3)、またはインターネットメッセージアクセスプロトコル4(internet message access protocol 4、IMAP4)である。別の例として、アプリケーション層プロトコルは、ファイル転送プロトコルである。例えば、アプリケーション層プロトコルは、FTPである。もちろん、アプリケーション層プロトコルは、任意選択で、TCP/IPプロトコルスイートに所属する別のプロトコルであり、アプリケーション層プロトコルの特定のタイプは、この実施形態において限定されない。
【0120】
いくつかの実施形態において、実装1において、第1のモードはフローモードであり、第2のモードはプロキシモードである。言いかえれば、実装1は、フローモードからプロキシモードに切り替えるシナリオに対して適用される。例えば、TCPセッションがクライアントデバイスとサーバとの間に確立された後に、保護デバイスは、以下のステップS5201からステップS5203を行う。
【0121】
ステップS5201:保護デバイスは、アプリケーション層データに基づいて、第1のデータパケットのアプリケーション層プロトコルタイプを識別する。
【0122】
いくつかの実施形態において、保護デバイスは、アプリケーション層データ、およびアプリケーション層プロトコルに対応するキーワードに基づいて、アプリケーション層プロトコルタイプを識別する。
【0123】
例えば、アプリケーション層プロトコルに対応するキーワードは、アプリケーション層プロトコルの仕様に従ってデータパケットに含まれる必要のあるキーワードである。例えば、アプリケーション層プロトコルに対応するキーワードは、アプリケーション層プロトコルに関連する標準またはドラフトを使用することによって特定される。いくつかの実施形態において、アプリケーション層プロトコルに対応するキーワードは、アプリケーション層プロトコルにおいてログインコマンド内で搬送されるキーワードである。ログインコマンドは、サーバにログインすることを要求するために使用される。2つのプロトコル、すなわち、SMTPおよびFTPを参照して、以下は、キーワードと、キーワードを使用することによってアプリケーション層プロトコルタイプを識別する手法とを説明するための例を使用する。
【0124】
例えば、アプリケーション層プロトコルはSMTPであり、SMTPにおけるログインコマンドは、HELO(hello、hello)コマンドを含む。SMTPに対応するキーワードは、例えば、HELOコマンド内で搬送されるキーワードである。HELOコマンド内で搬送されるキーワードは、HELOである。HELOコマンドのフォーマットは、「HELO xxxx」として簡単に表現され得る。「HELO xxxx」における「xxxx」は、HELOコマンドに含まれるパラメータであり、パラメータは、通常、SMTPクライアントのドメインネームを意味する。この場合において、保護デバイスによって受信されるアプリケーション層データがHELOを含む場合、保護デバイスは、アプリケーション層プロトコルのタイプがSMTPであると識別し得る。もちろん、HELOコマンドは、SMTPにおけるログインコマンドの例にすぎず、HELOは、SMTPに対応するキーワードの例にすぎない。HELOコマンドは、SMTPにおける別のログインコマンド、例えば、EHLO(extended hello)コマンドに置換され得る。SMTPに対応するキーワードは、別のログインコマンドにおけるキーワードに置換され得る。SMTPを識別するために使用されるキーワードは、この実施形態において限定されない。
【0125】
別の例として、アプリケーション層プロトコルは、FTPであり、FTPにおけるログインコマンドは、USERコマンドを含む。TPに対応するキーワードは、例えば、USERコマンド内で搬送されるキーワードである。具体的には、USERコマンド内で搬送されるキーワードは、USERである。USERコマンドは、「USER xxx」として簡単に表現され得る。「USER xxx」における「xxx」は、USERコマンドに含まれるパラメータであり、パラメータは、通常、ユーザ名を意味する。この場合において、保護デバイスによって受信されたアプリケーション層データが、USERを含む場合、保護デバイスは、アプリケーション層プロトコルのタイプがFTPであると識別し得る。もちろん、USERコマンドは、FTPにおけるログインコマンドの例にすぎず、USERは、FTPに対応するキーワードの例にすぎない。USERコマンドは、FTPにおける別のログインコマンド、例えば、passコマンドまたはpavsコマンドに置換され得る。FTPに対応するキーワードは、別のログインコマンドにおけるキーワード、例えば、passまたはpavsに置換され得る。FTPを識別するために使用されるキーワードは、この実施形態において限定されない。
【0126】
ステップS5202:保護デバイスは、アプリケーション層プロトコルタイプと検出モードとの間の対応に基づいて、第1のデータパケットのアプリケーション層プロトコルタイプがプロキシモードに対応すると決定する。
【0127】
例えば、アプリケーション層プロトコルタイプと検出モードとの間の対応は、SMTPとプロキシモードとの間の対応を含む。保護デバイスが、アプリケーション層プロトコルタイプはSMTPであると識別した後に、保護デバイスは、SMTPとプロキシモードとの間の対応に基づいて、第1のデータパケットのアプリケーション層プロトコルタイプはプロキシモードに対応すると決定する。この場合において、保護デバイスは、プロキシモードに切り替え、プロキシモードを使用して、SMTPに基づいて送信されるメールに対してアンチウイルス検出を行う。
【0128】
別の例として、アプリケーション層プロトコルタイプと検出モードとの間の対応は、FTPとフローモードとの間の対応を含む。保護デバイスが、アプリケーション層プロトコルタイプはFTPであると識別した後に、保護デバイスは、FTPとフローモードとの間の対応に基づいて、第1のデータパケットのアプリケーション層プロトコルタイプはフローモードに対応すると決定する。この場合において、保護デバイスは、フローモードを使用して、TCPセッションにおける後続のパケットに対してセキュリティ検出を行い続ける。
【0129】
ステップS5203:保護デバイスは、切り替えられるべき第2のモードが、第1のデータパケットのアプリケーション層プロトコルタイプに対応するプロキシモードであると決定する。
【0130】
以下は、2つの例、すなわち、例1および例2を使用することによって、保護デバイスが、実装1においてステップS5201におけるプロトコルに対応するキーワードを使用することによって、どのようにプロトコルタイプを識別するかを説明する。
【0131】
例1:クライアントは、SMTPに基づいて、サーバと相互作用する。
【0132】
TCPセッションがクライアントデバイスとサーバとの間に確立された後に、サーバは、クライアントデバイスへウェルカムメッセージを送る。保護デバイスがサーバからウェルカムメッセージを受信した後に、保護デバイスは、クライアントデバイスへウェルカムメッセージを転送する。ウェルカムメッセージを受信した後に、クライアントデバイスは、「HELO xxxx」を含むアプリケーション層データを送る。アプリケーション層データを受信した後に、保護デバイスは、アプリケーション層データが「HELO」を含むことを見出し、次いで、SMTPが現在のTCPセッションにおいて稼働されることを識別する。
【0133】
例えば、クライアントによって送られるアプリケーション層データは、以下の通りである。
220 dshnayder.fscinternet.com ESMTP postfix
HELO localhost
MAIL FROM: <test>
RCPT TO: <test@dshnayder.fscinternet.com>
data
From:“test” <test>
To: <test@dshnayder.fscinternet.com>
Subject:open object tag-exploit.html
Content-Type:text/html;charset=“iso-8859-1
【0134】
ここでは、「220 dshnayder.fscinternet.com ESMTP postfix」は、ウェルカムメッセージであり、「HELO localhost」は、HELOコマンドである。
【0135】
例2:クライアントは、FTPに基づいて、サーバと相互作用する。
【0136】
TCPセッションがクライアントデバイスとサーバとの間に確立された後に、サーバは、クライアントデバイスへウェルカムメッセージを送る。保護デバイスがサーバからウェルカムメッセージを受信した後に、保護デバイスは、クライアントデバイスへウェルカムメッセージを転送する。ウェルカムメッセージを受信した後に、クライアントデバイスは、「USER xxx」を含むアプリケーション層データを送る。アプリケーション層データを受信した後に、保護デバイスは、アプリケーション層データが「USER」を含むことを見出し、次いで、FTPが現在のTCPセッションにおいて稼働されることを識別する。
【0137】
例えば、クライアントによって送られるアプリケーション層データは、以下の通りである。
220 redhat_52.test FTP server(Version wu-2.4.2-academ[BETA-18](1)Mon Aug 3 19:17:20 EDT 1998)ready.
USER anonymous
331 Guest login ok,send your complete e-mail address as password.
PASS hi@blahblah.net
230 Guest login ok,access restrictions apply.
MKD /incoming
550 /incoming:Permission denied.
CND /incoming
250 CWD command successful.
【0138】
ここでは、「220 redhat_52.test FTP server(Version wu-2.4.2-academ[BETA-18](1)Mon Aug 3 19:17:20 EDT 1998)ready」は、ウェルカムメッセージであり、「USER anonymous」は、USERコマンドである。USERコマンドは、FTPサーバへの匿名ログインを示す。
【0139】
前述の例1および例2においては、2つのアプリケーション層プロトコル、すなわち、SMTPおよびFTPが、説明のための例として使用されている。実装1の適用範囲は、これらのプロトコルに限定されない。実装1は、プロトコルタイプおよびアプリケーション層データに基づいており、かつ、検出モードが変更されることを必要とするかどうかが、いくつかのパケットが交換された後にのみ決定されることが可能である、様々なトラフィック処理シナリオに対して適用されることが可能である。
【0140】
保護デバイスがアプリケーション層プロトコルタイプと検出モードとの間の対応をどのように取得するかには、複数の実装がある。いくつかの実施形態において、保護デバイスは、ユーザの設定動作に基づいて、アプリケーション層プロトコルタイプと検出モードとの間の対応を決定する。例えば、ユーザは、SMTPに基づいて送信されるトラフィックに対してAV検出を設定する。AV検出のためにプロキシモードが通常は必要とされるので、保護デバイスは、SMTPがプロキシモードに対応すると決定する。
【0141】
いくつかの実施形態において、保護デバイスがトラフィックを検出する処理において、ユーザは、設定を修正し、その結果、アプリケーション層プロトコルタイプと検出モードとの間の対応が更新される。このシナリオにおいて、保護デバイスは、アプリケーション層プロトコルタイプと検出モードとの間の更新された対応に基づいて、どの検出モードに切り替えられるべきかを決定し、その結果、ユーザ設定がリアルタイムで有効になる。例えば、ユーザは、トラフィックを検出するために元はフローモードを使用することから、トラフィックを検出するためにプロキシモードを使用することへ変更するように設定を修正する。設定修正を検出した後に、保護デバイスは、トラフィックのための検出モードをプロキシモードに切り替える。
【0142】
実装1において説明される解決策を行うことによって、保護デバイスは、アプリケーション層検出の要件に動的に基づいて、同じTCPセッションの相互作用処理における検出モードを適応的に選択することができる。これは、オンデマンドの動的な切り替えを実装し、セキュリティとデバイスリソース占有とのバランスを取る。
【0143】
実装2:保護デバイスは、AV検出結果に基づいて、切り替えられるべき検出モードを決定する。
【0144】
いくつかの実施形態において、実装2において、第1のモードはプロキシモードであり、第2のモードはフローモードである。言いかえれば、実装2は、プロキシモードからフローモードに切り替えるシナリオに対して適用される。
【0145】
具体的には、保護デバイスは、第1のデータパケットのアプリケーション層データに対してAV検出を行って、AV検出結果を取得する。AV検出結果が、ウィルスはないというものである場合、保護デバイスは、切り替えられるべき第2のモードがフローモードであると決定する。例えば、クライアントがSMTPに基づいてサーバと相互作用するシナリオにおいて、保護デバイスがクライアントとサーバとの間のメールを転送する場合、保護デバイスは、プロキシモードを使用して、メールのコンテンツ(メールアタッチメントを含む)に対してAV検出を行う。メールのAV検出結果が、メールはウィルスを含有しない、またはメールは安全であるというものである場合、保護デバイスは、プロキシモードからフローモードに切り替える。
【0146】
実装3:保護デバイスは、クライアントおよびサーバが暗号化された通信を開始しようとしていることを識別することによって、切り替えられるべき検出モードを決定する。
【0147】
いくつかの実施形態において、実装3において、第1のモードはプロキシモードであり、第2のモードはフローモードである。言いかえれば、実装3は、プロキシモードからフローモードに切り替えるシナリオに対して適用される。具体的には、第1のデータパケットのアプリケーション層データが、クライアントデバイスおよびサーバがTCPセッションにおいて暗号化された通信を行おうとしていることを示す場合、保護デバイスは、切り替えられるべき第2のモードがフローモードであると決定する。いくつかの実施形態において、保護デバイスは、暗号化された通信コマンドのキーワードを予め記憶し、第1のデータパケットのアプリケーション層データが、暗号化された通信コマンドのキーワードを含む場合、クライアントデバイスおよびサーバが暗号化された通信を行おうとしていると決定する。例えば、暗号化された通信コマンドは、starttlsコマンドである。
【0148】
実装1から実装3は、互いに組み合わされ得る。実装1と実装2との組み合わせが、例として使用される。例示的な適用シナリオにおいて、保護デバイスは、前述の方法500を使用することによって、SMTPベースのメールに対してセキュリティ検出を行い、サーバは、具体的にはメールサーバであり、SMTPクライアントが、クライアントデバイスにインストールされる。セッションがSMTPクライアントとメールサーバとの間に確立された後に、保護デバイスは、まず、フローモードを使用して、セッション内のデータパケットを検出する。次いで、セッションにおけるSMTPクライアントとメールサーバとの間の相互作用期間中に、保護デバイスが、SMTPクライアントとメールサーバとの間で交換されるデータパケットを使用することによって、セッションに対応するアプリケーション層プロトコルはSMTPであることを見出した場合、保護デバイスは、フローモードからプロキシモードに切り替える。保護デバイスは、プロキシモードを使用して、セッションにおいてSMTPクライアントとメールサーバとの間で交換される後続のデータパケットを検出する。具体的には、保護デバイスは、SMTPクライアントによって送られる全てのメールデータに対してACKを行い、その結果、SMTPクライアントは、保護デバイスへメール全体(アタッチメントを含む)を完全に送る。保護デバイスは、メールデータに対してアンチウイルス検出を行う。保護デバイスが、メールデータはウィルスを含有しないと決定した場合、SMTPクライアントの代わりに保護デバイスが、保護デバイスのTCP/IPプロトコルスタックを通じて、サーバへメールデータを送る。保護デバイスが、プロキシモードを使用して、1回または複数回検出を行うことによって、SMTPクライアントとサーバとの間で送信されるメールは安全であると決定した場合、保護デバイスは、プロキシモードからフローモードに切り替えて、後続の処理手順を加速させる。
【0149】
以下は、三方向ハンドシェイクフェーズにおける保護デバイスの処理手順を説明する。
【0150】
理解を簡単にするために、以下は、まず、TCPにおける三方向ハンドシェイク原理を説明する。
【0151】
図6は、クライアントとサーバとの間の三方向ハンドシェイクのフローチャートである。
図6に示される手順において、クライアントは、TCPセッションのイニシエータであり、サーバは、TCPセッションのレシーバである。クライアントとサーバとの間の相互作用は、主に3つのフェーズ、すなわち、セッション確立、データ送信、およびセッション終了を含む。
図6は、データ送信の具体的な手順を示していない。
【0152】
セッションは、三方向ハンドシェイク(three-way handshake)を通じて確立される。クライアントおよびサーバが、TCPを使用することによってデータを送信する必要がある場合、クライアントは、SYNパケットを使用してTCPセッションを開始して、ネゴシエーションを確立する。これは、三方向ハンドシェイクと称される。三方向ハンドシェイクは、3つのパケット、すなわち、SYNパケット、同期シーケンス番号肯定応答(synchronize sequence numbers acknowledgement、SYN ACK)パケット、およびACKパケットの相互作用処理に関連する。具体的には、三方向ハンドシェイクは、以下のステップ1からステップ3を含む。
【0153】
ステップ1:クライアントは、サーバへSYNパケットを送る。SYNパケットは、TCPセッションを確立するために必要とされるオプションを含む。例えば、オプションは、最大セグメントサイズ(maximum segment size、MSS)、SACK、データバッファサイズ(TCPウィンドウ)等である。
【0154】
SYNパケット内のSeq番号は、クライアントの最初のシーケンス番号(initial sequence number、ISN)である。SYNパケット内のISNは、クライアントによってランダムに生成される値である。SYNパケット内のISNは、ISN(c)として簡単に表現され得る。ISN(c)における「c」は、クライアント(client)を意味する。
【0155】
ステップ2:サーバは、SYNパケットを受信し、サーバは、クライアントへSYN ACKパケットを送る。SYN ACKパケットは、サーバによってサポートされるオプションを含む。サーバは、SYN ACKパケットを送って、クライアントからのSYNパケットが受信されたことをクライアントに通知し、サポートされるオプションをクライアントに通知する。
【0156】
SYN ACKパケット内のSeq番号は、ISNである。SYN ACKパケット内のISNは、サーバによってランダムに生成される値である。SYN ACKパケット内のISNは、ISN(s)として簡単に表現され得る。ISN(s)における「s」は、サーバ(server)を意味する。SYN ACKパケット内のACK番号は、ISN(c)+1である。
【0157】
ステップ3:クライアントは、SYN ACKパケットを受信し、クライアントは、サーバへACKパケットを送って、三方向ハンドシェイクを完了する。ACKパケット内のSeq番号は、ISN(c)+1である。ACKパケット内のACK番号は、ISN(s)+1である。
【0158】
クライアントとサーバとの間のハンドシェイクが完了した後に、クライアントおよびサーバが、データ送信フェーズにおいてデータパケットを交換する場合、クライアントおよびサーバは、ハンドシェイクを通じてネゴシエートされるパケットシーケンス番号(Seq)およびMSSを使用することによって、セグメント内のデータを連続して送る。各回にクライアントまたはサーバによって送られるデータの量の最大値は、ピアパーティによってアドバタイズされるウィンドウサイズである。レシーバは、ACKパケットを使用することによって、受信されたデータパケットを肯定応答し、レシーバによって受信されることが可能な最大データ長を更新する。また、ネットワーク内の異常なパケット損失、および過度に速い送信によって引き起こされたパケット損失を処理するために、一連のタイマおよび輻輳アルゴリズムが、TCPにおいてさらに必要とされる。
【0159】
前述の記載は、三方向ハンドシェイクの基本原理を説明している。任意選択で、バージョン限界または性能限界などの要因に起因して、いくつかの場合において、保護デバイスのプロトコルスタックは、全部のオプションではなく、一部のオプションのみをサポートしてよい。クライアントデバイスおよびサーバが、保護デバイスのプロトコルスタックによってサポートされないオプションを使用することによって、セッションネゴシエーションを行う場合に、保護デバイスがプロキシモードを使用して検出を行うとき、検出は失敗し得る。この場合において、本出願の一実施形態は、改善されたパケット処理手法を提供する。保護デバイスは、三方向ハンドシェイクフェーズにおいて、交換されたパケットを処理して、プロトコルスタックがオプションをサポートしないという要因によって引き起こされる検出障害を回避する。以下は、本出願の一実施形態による、三方向ハンドシェイクフェーズにおける保護デバイスの処理手順を説明する。
【0160】
三方向ハンドシェイクフェーズにおける保護デバイスの処理手順は、以下のステップS501からステップS503を含む。
【0161】
以下に説明されるステップS501からステップS503と、ステップS510からステップS530との間の関係は、ステップS501からステップS503と、ステップS510からステップS530とがそれぞれ、同じTCPセッションの異なるフェーズのためのものである、というものである。ステップS501からステップS503は、TCPセッション確立をトリガするために、三方向ハンドシェイクフェーズに対して適用される。ステップS510からステップS530は、TCPセッション確立後に、データ送信フェーズに対して適用される。時系列の観点から、保護デバイスは、まず、三方向ハンドシェイクフェーズにおいてステップS501からステップS503を行う。TCPセッションが確立された場合、クライアントデバイスおよびサーバがデータパケットを交換する処理において、保護デバイスは、前述のステップS510からステップS530を行う。
【0162】
ステップS501:保護デバイスは、クライアントデバイスとサーバとの間で送信される第1のハンドシェイクパケットを取得する。
【0163】
第1のハンドシェイクパケットは、TCPセッションを作成するために使用される。第1のハンドシェイクパケットは、TCPにおける三方向ハンドシェイクパケットである。具体的には、第1のハンドシェイクパケットは、SYNパケットまたはSYN ACKパケットのうちの少なくとも1つである。第1のハンドシェイクパケットは、TCPヘッダを含み、TCPヘッダは、可変長を有するオプション(option)フィールドを含む。オプションフィールドのコンテンツは、オプションに関する具体的な情報である。オプションは、SACKオプション、MSSオプション、ウィンドウ拡張オプション、タイムスタンプオプション等を含むが、これらに限定されない。
【0164】
第1のハンドシェイクパケットがSYNパケットである場合、第1のハンドシェイクパケットのソースデバイスは、クライアントデバイスである。ステップS501は、以下を含む。保護デバイスは、クライアントデバイスからSYNパケットを受信する。
【0165】
第1のハンドシェイクパケットがSYN ACKパケットである場合、第1のハンドシェイクパケットのソースデバイスは、サーバである。ステップS501は、以下を含む。保護デバイスは、サーバからSYN ACKパケットを受信する。
【0166】
ステップS502:保護デバイスは、第1のハンドシェイクパケットから第2のオプションを削除して、第2のハンドシェイクパケットを取得する。
【0167】
例えば、第1のハンドシェイクパケットは、第1のオプションと第2のオプションとを含む。保護デバイスは、第1のオプションおよび第2のオプションが保護デバイスのTCP/IPプロトコルスタックによってサポートされるオプションであるかどうかを別々に決定する。保護デバイスが、第1のオプションは保護デバイスのTCP/IPプロトコルスタックによってサポートされるオプションであると決定した場合、保護デバイスは、第1のオプションを予約する。保護デバイスが、第2のオプションは保護デバイスのTCP/IPプロトコルスタックによってサポートされないオプションであると決定した場合、保護デバイスは、第2のオプションを削除する。処理を通じて保護デバイスによって取得された第2のハンドシェイクパケットは、第1のオプションを含むが、第2のオプションを含まない。
【0168】
ステップS503:保護デバイスは、第1のハンドシェイクパケットの宛先デバイスへ、第2のハンドシェイクパケットを送る。
【0169】
第1のハンドシェイクパケットがSYNパケットである場合、第1のハンドシェイクパケットの宛先デバイスは、サーバである。第2のハンドシェイクパケットは、オプションを削除することによって取得されるSYNパケットである。ステップS503は、以下を含む。保護デバイスは、オプションを削除することによって取得されたSYNパケットをサーバへ送る。
【0170】
第1のハンドシェイクパケットがSYN ACKパケットである場合、第1のハンドシェイクパケットの宛先デバイスは、クライアントデバイスである。第2のハンドシェイクパケットは、オプションを削除することによって取得されるSYN ACKパケットである。ステップS503は、以下を含む。保護デバイスは、オプションを削除することによって取得されたSYN ACKパケットをクライアントデバイスへ送る。
【0171】
前述の記載は、ステップS501からステップS503を使用することによって、保護デバイスが三方向ハンドシェイクフェーズにおいてオプションを削除する手順を説明している。以下は、前述のオプション削除手順に基づいて、三方向ハンドシェイクを行う完全な手順を説明する。
【0172】
図7を参照されたい。本出願の一実施形態において、三方向ハンドシェイクフェーズは、
図7に示される手順700を含む。手順700は、以下のステップS710からステップS780を含む。ステップS710およびステップS720におけるSYNパケット、ならびにステップS740およびステップS750におけるSYN ACKパケットは、第1のハンドシェイクパケットの例である。ステップS720およびステップS730においてオプションを削除することによって取得されたSYNパケット、ならびにステップS750およびステップS760においてオプションを削除することによって取得されたSYN ACKパケットは、第2のハンドシェイクパケットの例である。
【0173】
ステップS710:クライアントデバイスは、SYNパケットを生成し、送る。
【0174】
ステップS720:保護デバイスは、クライアントからSYNパケットを受信する。保護デバイスは、SYNパケットを構文解析し、SYNパケットから、クライアントのMSS、ウィンドウ、タイムスタンプ、およびSACKなどのオプションを抽出する。保護デバイスは、保護デバイスのローカルTCP/IPプロトコルスタックによってサポートされるオプションに基づいて、SYNパケットから、ローカルTCP/IPプロトコルスタックによってサポートされないオプションを削除し、SYNパケット内のローカルTCP/IPプロトコルスタックによってサポートされるオプションを予約して、オプションを削除することによって取得されたSYNパケットを取得する。
【0175】
ステップS730:保護デバイスは、オプションを削除することによって取得されたSYNパケットをサーバへ送る。
【0176】
ステップS740:サーバは、オプションを削除することによって取得されたSYNパケットを受信し、SYN ACKパケットを生成し、送る。
【0177】
ステップS750:保護デバイスは、サーバからSYN ACKパケットを受信する。ステップS720におけるそれと同様に、保護デバイスは、SYN ACKパケットを構文解析し、SYN ACKパケットから、サーバのMSS、ウィンドウ、タイムスタンプ、およびSACKなどのオプションを抽出する。保護デバイスは、保護デバイスのローカルTCP/IPプロトコルスタックによってサポートされるオプションに基づいて、SYN ACKパケットから、サポートされないオプションを削除し、SYN ACKパケット内のローカルTCP/IPプロトコルスタックによってサポートされるオプションを予約して、オプションを削除することによって取得されたSYN ACKパケットを取得する。
【0178】
ステップS760:保護デバイスは、オプションを削除することによって取得されたSYN ACKパケットをクライアントへ送る。
【0179】
ステップS770:クライアントは、オプションを削除することによって取得されたSYN ACKパケットを受信し、ACKパケットを生成し、送る。
【0180】
ステップS780:保護デバイスは、クライアントからACKパケットを受信し、保護デバイスは、クライアントからサーバへACKパケットを転送して、クライアントとサーバとの間のセッションの確立を完了する。
【0181】
前述の記載は、この実施形態において提供される三方向ハンドシェイク手順を説明しており、以下は、三方向ハンドシェイク手順に基づいて、モード切り替えを行う手順を説明する。
【0182】
以下に説明されるモード切り替え手順は、前述の方法500におけるステップS530の例である。上述した三方向ハンドシェイク手順と、以下に説明されるモード切り替え手順との間の主な関連性は、保護デバイスが三方向ハンドシェイク手順においてサポートされないオプションを削除するので、モード切り替え手順においてパケット交換に関連するオプションは、保護デバイスのTCP/IPプロトコルスタックによってサポートされるオプションであることが確実にされることが可能である点にあり、それによって、モード切り替え手順においてクライアントまたはサーバによって使用されるオプションを保護デバイスが構文解析することが困難であることが理由で引き起こされるパケット送信故障を回避し、モード切り替え手順における信頼性および成功率を改善する。以下は、そのような効果を達成するための原理を説明する。
【0183】
TCPにおいて、どのオプションがTCPセッションにおいてデータパケットを送信するために使用されるかは、三方向ハンドシェイクパケット使用することによってネゴシエートされる。具体的には、三方向ハンドシェイクフェーズにおいて、送信側および受信側(クライアントおよびサーバ)は各々、送信側または受信側によってサポートされるオプションを三方向ハンドシェイクパケットに対して追加し、三方向ハンドシェイクパケットをピアエンドへ送って、送信側または受信側によってサポートされるオプションのピア側に通知する。送信側または受信側が、ピア側から三方向ハンドシェイクパケットを受信した後に、三方向ハンドシェイクパケットがオプションを搬送し、送信側または受信側がそのオプションをサポートする場合、送信側または受信側は、そのオプションをネゴシエートされたオプションとして使用する。セッションが確立された後に、送信側または受信側は、ネゴシエートされたオプションを使用して、データを送信する。
【0184】
しかしながら、この実施形態において提供される三方向ハンドシェイク手順において、保護デバイスは、三方向ハンドシェイクパケットから、サポートされないオプションを削除し、オプションを削除することによって取得された三方向ハンドシェイクパケットをクライアントデバイスまたはサーバへ転送する。したがって、クライアントデバイスまたはサーバへ送信される三方向ハンドシェイクパケットは、保護デバイスによってサポートされないオプションを含まない。言いかえれば、クライアントデバイスまたはサーバへ送信される三方向ハンドシェイクパケット内の全てのオプションは、保護デバイスによってサポートされるオプションである。したがって、クライアントデバイスとサーバとによってネゴシエートされた各オプションは、保護デバイスによってサポートされるオプションである。これは、クライアントデバイスとサーバとによってネゴシエートされたオプションが、保護デバイスによってサポートされないオプションを含む場合を回避する。そのため、セッションが確立された後に、セッションにおいてクライアントとサーバとの間で交換されるパケット内の全てのオプションは、保護デバイスによってサポートされるオプションである。
【0185】
したがって、この実施形態において提供されるモード切り替え手順において、クライアントとサーバとの間のセッションの処理において、保護デバイスが、現在のセッションについての検出モードを切り替えることを決定した場合、モード切り替えの後に保護デバイスによって受信されるパケット内のオプションは、保護デバイスによってサポートされるオプションであるので、保護デバイスは、切り替えの後に使用されるモードにおいて、保護デバイスによってサポートされるオプションを使用することによって、受信されたパケットを処理して、保護デバイスが、セッション処理において切り替えの後に使用されるモードに成功裡に入ることを確実にすることができ、その結果、セッションにおける後続のパケットは、切り替えの後に使用されるモードにおいて検出されることが可能である。
【0186】
例えば、切り替え後に使用されるモードがプロキシモードである場合、保護デバイスは、保護デバイスのTCP/IPプロトコルスタックの能力に基づいて、最初の三方向ハンドシェイクフェーズにおけるクライアントデバイスとサーバとの間のハンドシェイクに干渉して、クライアントデバイスとサーバとによってネゴシエートされる全てのオプションが、保護デバイスのローカルTCP/IPプロトコルスタックによってサポートされることが可能であることを確実にする。したがって、続いてプロキシモードに切り替えられると、クライアントデバイスとサーバとが、ネゴシエートされたオプションを使用することによってパケットを交換する場合、保護デバイスのTCP/IPプロトコルスタックは、サポートされるオプションを使用することによって、クライアントデバイスと相互作用するためのサーバに置換することができ、保護デバイスのTCP/IPプロトコルスタックは、サポートされるオプションを使用することによって、サーバと相互作用するためのクライアントデバイスに置換することができ、その結果、プロキシモードを使用して検出を行うタスクが、誤りなしで成功裡に実行される。例えば、保護デバイス上のTCP/IPプロトコルスタックはSACKオプションをサポートしないが、クライアントデバイスおよびサーバがSACKオプションをサポートする場合に、クライアントデバイスとサーバとが三方向ハンドシェイクフェーズにおいてSACKオプションを使用することをネゴシエートするとき、保護デバイスがプロキシモードに切り替えた後に、保護デバイスがSACKオプションを構文解析することは困難である。結果として、送信故障が引き起こされ、サービスが中断される。しかしながら、保護デバイスは、ハンドシェイクパケット内のSACKオプションを削除し、その結果、クライアントデバイスとサーバとは、三方向ハンドシェイクフェーズにおいてSACKオプションを使用することをネゴシエートしない。したがって、保護デバイスがプロキシモードに切り替えた後に、受信され続けるパケットはSACKオプションを含まず、それによって、保護デバイスがSACKオプションを構文解析することが困難であるために引き起こされる送信故障を回避する。
【0187】
保護デバイスによってフローモードとプロキシモードとの間で行われるモード切り替えは、保護デバイスによって行われるモード切り替えの特定の処理を説明するために、以下で例として使用される。詳細については、以下のシナリオ1およびシナリオ2を参照されたい。
【0188】
シナリオ1:フローモードからプロキシモードへの切り替え
【0189】
シナリオ1において、保護デバイスは、フローモードを使用して、いくつかのデータパケットをバッファ済みであり得る。例えば、フローモードにおいて、保護デバイスは、ウィンドウ内で受信されたデータパケットをバッファして、フローリアセンブリを行う。別の例として、保護デバイスは、ピア側へ転送済みであるが、ピア側が肯定応答パケットを返していない、いくつかのデータパケットを、フローモードを使用して、バッファする。これらの以前にバッファされたデータパケットに対して、保護デバイスは、以下の解決策を行って、モード切り替え処理過程をさらに加速し、オプション削除によってもたらされる効果を達成することに基づいて、モード切り替え処理遅延を低減する。
【0190】
以下は、2つの態様、すなわち、態様(1)および態様(2)を使用することによって、シナリオ1における具体的な実装を説明する。
【0191】
態様(1)は、フローモードを使用して以前にバッファされた受信されたデータパケットを、保護デバイスがどのように処理するかを説明する。
【0192】
保護デバイスがTCPセッションについてフローモードからプロキシモードに切り替える処理において、保護デバイスは、保護デバイスのTCP/IPプロトコルスタックを使用することによって、フローモードを使用して、以前にバッファされた受信されたデータパケットに対してACK処理を実行する。具体的には、フローモードを使用して、以前にバッファされた、クライアントデバイスによって送られたデータパケットに対して、保護デバイスは、TCP/IPプロトコルスタックを通じて肯定応答パケットを能動的に生成し、肯定応答パケットをクライアントデバイスへ送って、クライアントデバイスに応答するためのシミュレーションされるサーバとして動作する。フローモードを使用して、以前にバッファされた、サーバによって送られたデータパケットに対して、保護デバイスは、TCP/IPプロトコルスタックを通じて肯定応答パケットを能動的に生成し、肯定応答パケットをサーバへ送って、サーバに応答するためのシミュレーションされるクライアントデバイスとして動作する。
【0193】
例えば、保護デバイスは、三方向ハンドシェイクフェーズにおいて、第1のオプション(保護デバイスによってサポートされるオプション)を予約し、第2のオプション(保護デバイスによってサポートされないオプション)を削除する。前述の方法500において、第1のモードはフローモードであり、第2のモードはプロキシモードである。前述の方法500において、保護デバイスは、第1のモードを使用して、第2のデータパケットを受信し、バッファする。保護デバイスが第2のモードに切り替えることを決定した後に、保護デバイスは、第1のオプションに基づいて、TCPセッションにおける第2のデータパケットについての肯定応答パケットを生成し、保護デバイスは、第2のデータパケットについての肯定応答パケットを第2のデータパケットのソースデバイスへ送る。
【0194】
いくつかの実施形態において、第2のデータパケットは、クライアントによってサーバへ送られるパケットである。具体的には、保護デバイスが、第1のモードを使用して、TCPセッションにおいてデータパケットを検出する処理において、クライアントは、第2のデータパケットを送り、保護デバイスは、クライアントから第2のデータパケットを受信し、バッファし、保護デバイスが第2のモードに切り替えることを決定した後に、保護デバイスは、第2のデータパケットについての肯定応答パケットをクライアントへ送る。
【0195】
いくつかの他の実施形態において、第2のデータパケットは、サーバによってクライアントへ送られるパケットである。具体的には、保護デバイスが、第1のモードを使用して、TCPセッションにおいてデータパケットを検出する処理において、サーバは、第2のデータパケットを送り、保護デバイスは、サーバから第2のデータパケットを受信し、バッファし、保護デバイスが第2のモードに切り替えることを決定した後に、保護デバイスは、第2のデータパケットについての肯定応答パケットをサーバへ送る。
【0196】
態様(2)は、フローモードを使用してピア側へ転送済みであるが、ピア側から肯定応答パケットが受信されないデータパケットを、保護デバイスがどのように処理するかを説明する。
【0197】
保護デバイスがTCPセッションについてフローモードからプロキシモードへ切り替える処理において、フローモードを使用してピア側へ転送済みであるが、ピア側から肯定応答パケットが受信されないデータパケットについて、保護デバイスは、保護デバイスのTCP/IPプロトコルスタックを使用することによって、データパケットの送信信頼性について責任を負う。具体的には、フローモードを使用してサーバへ転送済みであるが、肯定応答パケットが受信されないデータパケットについて、保護デバイスは、シミュレーションされるクライアントとしての役割を果たし、パケット損失が発生した場合に、データパケットをサーバへ再送信して、データパケットがサーバに到達することを確実にする。フローモードを使用してクライアントへ転送済みであるが、肯定応答パケットが受信されないデータパケットについて、保護デバイスは、シミュレーションされるサーバとしての役割を果たし、パケット損失が発生した場合に、データパケットをクライアントへ再送信して、データパケットがクライアントに到達することを確実にする。
【0198】
例えば、保護デバイスは、三方向ハンドシェイクフェーズにおいて、第1のオプション(保護デバイスによってサポートされるオプション)を予約し、第2のオプション(保護デバイスによってサポートされないオプション)を削除する。前述の方法500において、第1のモードはフローモードであり、第2のモードはプロキシモードである。前述の方法500において、保護デバイスは、第1のモードを使用して、TCPセッションにおける第3のデータパケットを送る。保護デバイスが第2のモードに切り替えることを決定した後に、第3のデータパケットが再送信条件を満たす場合、保護デバイスは、第1のオプションに基づいて、第3のデータパケットの宛先デバイスへ第3のデータパケットを再送する。
【0199】
いくつかの実施形態において、第3のデータパケットは、クライアントによってサーバへ送られるパケットである。具体的には、保護デバイスが第1のモードを使用して、TCPセッションにおいてデータパケットを検出する処理において、クライアントは、第3のデータパケットを送り、保護デバイスは、第3のデータパケットを受信し、第3のデータパケットに対してセキュリティ検出を行い、第3のデータパケットをサーバへ転送し、保護デバイスが第2のモードに切り替えることを決定した後に、第3のデータパケットが再送信条件を満たす場合、保護デバイスは、第3のデータパケットをサーバへ再送する。
【0200】
いくつかの実施形態において、第3のデータパケットは、サーバによってクライアントへ送られるパケットである。具体的には、保護デバイスが第1のモードを使用して、TCPセッションにおいてデータパケットを検出する処理において、サーバは、第3のデータパケットを送り、保護デバイスは、第3のデータパケットを受信し、第3のデータパケットに対してセキュリティ検出を行い、第3のデータパケットをクライアントへ転送し、保護デバイスが第2のモードに切り替えることを決定した後に、第3のデータパケットが再送信条件を満たす場合、保護デバイスは、第3のデータパケットをクライアントへ再送する。
【0201】
前述の態様(1)および態様(2)から、フローモードからプロキシモードに切り替えるシナリオにおいて、保護デバイスは、ハンドシェイクフェーズにおいてネゴシエートされるオプション(第1のオプション)に基づいて、フローモードを使用して以前にバッファされたパケットに対してACK処理を行い、信頼できる送信について責任を負い、その結果、フローモードを使用して保護デバイスによって以前にバッファされたデータパケットも、プロキシモードを使用して迅速に処理されることが可能であり、それによって、フローモードからプロキシモードに切り替えるために必要とされる時間を短縮することが分かる。
【0202】
図8を参照されたい。保護デバイスは、
図8における機能的なモジュールを提供することによって、前述の処理手順をサポートする。
【0203】
保護デバイスのTCP制御層は、フローモード処理モジュール1311、TCP/IPプロトコルスタックモジュール1331、フローモード処理モジュール1312、およびTCP/IPプロトコルスタックモジュール1332を含む。
図3におけるフローモード処理モジュール131は、
図8におけるフローモード処理モジュール1311と、フローモード処理モジュール1312とを含む。
図3におけるTCP/IPプロトコルスタックモジュール133は、
図8におけるTCP/IPプロトコルスタックモジュール1331と、TCP/IPプロトコルスタックモジュール1332とを含む。
【0204】
フローモード処理モジュール1311は、フローモードを使用して、クライアントデバイス11との相互作用を処理するように構成される。フローモード処理モジュール1311は、受信されたパケットキュー13111と、送られたパケットキュー13112とを含む。受信されたパケットキュー13111は、フローモードを使用して、クライアントデバイス11から受信されたデータパケットをバッファするように構成される。いくつかの実施形態において、受信されたパケットキュー13111は、1つのウィンドウ内でクライアントデバイス11から受信されたデータパケットをバッファするように特に構成される。受信されたパケットキュー13111内にバッファされたデータパケットは、TCP層においてフローリアセンブリを行うために使用される。送られたパケットキュー13112は、フローモードを使用して、クライアントデバイス11へ送られたデータパケットをバッファするように構成される。いくつかの実施形態において、送られたパケットキュー13112は、送られてはいるが、クライアントデバイス11からの肯定応答パケットが依然として受信されないデータパケットをバッファするように特に構成される。
【0205】
フローモード処理モジュール1312は、フローモードを使用して、サーバ12との相互作用を処理するように構成される。フローモード処理モジュール1312は、受信されたパケットキュー13121と、送られたパケットキュー13122とを含む。受信されたパケットキュー13121は、フローモードを使用して、サーバ12から受信されたデータパケットをバッファするように構成される。いくつかの実施形態において、受信されたパケットキュー13121は、1つのウィンドウ内でサーバ12から受信されたデータパケットをバッファするように特に構成される。受信されたパケットキュー13121にバッファされたデータパケットは、TCP層においてフローリアセンブリを行うために使用される。送られたパケットキュー13122は、フローモードを使用して、サーバ12へ送信されたデータパケットをバッファするように構成される。いくつかの実施形態において、送られたパケットキュー13122は、送られてはいるが、サーバ12からの肯定応答パケットが依然として受信されないデータパケットをバッファするように特に構成される。
【0206】
TCP/IPプロトコルスタックモジュール1331は、クライアントデバイス11と相互作用するように構成されたTCP/IPプロトコルスタックモジュールである。
【0207】
TCP/IPプロトコルスタックモジュール1331は、受信されたパケットキュー13311と、送られたパケットキュー13312とを含む。受信されたパケットキュー13311は、プロキシモードを使用して、クライアントデバイス11から受信されたデータパケットをバッファするように構成される。送られたパケットキュー13312は、プロキシモードを使用して、クライアントデバイス11へ送られるデータパケットをバッファするように構成される。いくつかの実施形態において、送られたパケットキュー13312は、プロキシモードを使用してクライアントデバイス11へ送られてはいるが、肯定応答パケットが依然として受信されないデータパケットをバッファするように特に構成される。
【0208】
TCP/IPプロトコルスタックモジュール1332は、サーバ12と相互作用するTCP/IPプロトコルスタックモジュールである。TCP/IPプロトコルスタックモジュール1332は、受信されたパケットキュー13321と、送られたパケットキュー13322とを含む。受信されたパケットキュー13321は、プロキシモードを使用して、サーバ12から受信されたデータパケットをバッファするように構成される。送られたパケットキュー13322は、プロキシモードを使用して、サーバ12へ送信されるデータパケットをバッファするように構成される。いくつかの実施形態において、送られたパケットキュー13322は、プロキシモードを使用してサーバ12へ送信されてはいるが、肯定応答パケットが依然として受信されないデータパケットをバッファするように特に構成される。
【0209】
以下は、保護デバイスが
図3または
図8に示されるモジュール使用することによってフローモードからプロキシモードに切り替える処理手順をどのように実装するかを説明する。
【0210】
図3および
図8に示されるように、上位層サービスモジュール130が、処理のためにプロキシモードに入ることが必要であると決定した場合、上位層サービスモジュール130は、TCP制御層へ命令を供給して、プロキシモードに切り替えられる必要があることをTCP制御層に通知する。上位層サービスモジュール130によって送られた命令を受信した後に、TCP制御層は、以下のステップS530aからステップS530dを行う。
【0211】
ステップS530a:TCP制御層は、フローモード処理モジュール131によって記録されたTCP三方向ハンドシェイクネゴシエーション情報に基づいて、TCP/IPプロトコルスタックモジュール133を使用することによってセッションペアを迅速に確立する。セッションペアは、プロキシサーバセッションと、プロキシクライアントセッションとを含む。プロキシサーバセッションは、実際のクライアントとの相互作用について責任を負う。プロキシクライアントセッションは、実際のサーバとの相互作用について責任を負う。ネゴシエーション情報は、三方向ハンドシェイク処理期間中にネゴシエートされるオプション(例えば、第1のオプション)を含む。
【0212】
ステップS530b:TCP制御層は、フローモード処理モジュール131においてバッファされたデータパケットをTCP/IPプロトコルスタックモジュール133へ送る。TCP/IPプロトコルスタックモジュール133は、フローモード処理モジュール131から送られるパケットに対してACK処理を行って、実際のクライアントまたは実際のサーバに応答する。
【0213】
具体的には、
図8に示されるように、フローモード処理モジュール1311における受信されたパケットキュー13111は、クライアントデバイス11からのデータパケットをバッファする。TCP制御層は、受信されたパケットキュー13111内にバッファされたデータパケットを、TCP/IPプロトコルスタックモジュール1331内の受信されたパケットキュー13311へ送る。TCP/IPプロトコルスタックモジュール1331は、フローモード処理モジュール1311によって送られたパケットに対してACK処理を行って、クライアントデバイス11に応答する。
【0214】
フローモード処理モジュール1312内の受信されたパケットキュー13121は、サーバ12からのデータパケットをバッファする。TCP制御層は、受信されたパケットキュー13121内にバッファされたデータパケットを、TCP/IPプロトコルスタックモジュール1332内の受信されたパケットキュー13321へ送る。TCP/IPプロトコルスタックモジュール1332は、フローモード処理モジュール1312によって送られたパケットに対してACK処理を行って、サーバ12に応答する。
【0215】
ステップS530c:TCP制御層は、TCP/IPプロトコルスタックモジュール/プロキシモード処理モジュール内の送られたパケットキューに対して、フローモード処理モジュール131によって転送済みであるが、ACKが依然として受信されないパケットを追加する。具体的には、フローモード処理モジュール1311とTCP/IPプロトコルスタックモジュール1331とは両方とも、クライアントデバイス11との相互作用を処理する責任を負い、フローモード処理モジュール1312とTCP/IPプロトコルスタックモジュール1332とは両方とも、サーバ12との相互作用を処理する責任を負う。フローモードからプロキシモードに切り替える処理において、TCP制御層は、フローモード処理モジュール1311内の送られたパケットキュー13112内にバッファされたパケットを、TCP/IPプロトコルスタックモジュール1331内の送られたパケットキュー13312に対して追加する。TCP制御層は、フローモード処理モジュール1312内の送られたパケットキュー13122内にバッファされたパケットを、TCP/IPプロトコルスタックモジュール1332内の送られたパケットキュー13322に対して追加する。
【0216】
例えば、上位層サービスモジュール130は、クライアントデバイス11によって送られたデータパケットに基づいて、プロキシモードが使用される必要があると決定する。TCP制御層が、TCP/IPプロトコルスタックモジュール1331へ、クライアントデバイス11によって続いて送られたデータパケットを送った後に、TCP制御層は、TCP/IPプロトコルスタックモジュール1331へ、フローモード処理モジュール1311によってクライアントデバイス11へ転送されたデータパケットを送って、TCP/IPプロトコルスタックモジュール1331を使用することによってプロキシクライアントの機能実装する必要がある。TCP/IPプロトコルスタックモジュール1331は、パケット損失またはタイムアウトによって引き起こされる再送信動作について責任を負う。
【0217】
ステップS530d:TCP制御層は、フローモードにおいて使用されたリソースをクリアし、TCPセッションにおける後続のパケットを処理するためにプロキシモードに入る。
【0218】
例えば、TCP制御層は、フローモード処理モジュール1311内の受信されたパケットキュー13111および送られたパケットキュー13112、ならびにフローモード処理モジュール1312内の受信されたパケットキュー13121および送られたパケットキュー13122によって占有されるバッファ空間を解放する。
【0219】
上記に提供されるシステムアーキテクチャにおいては、カスタマイズされたTCP/IPプロトコルスタックが使用されており、その結果、フローモードからプロキシモードへの適応的な切り替えが、データパケット交換フェーズにおけるデータパケット交換に基づいて実装されるだけでなく、データパケットがフローモードを使用してバッファされた複雑な場合もサポートされ、それによって、解決策の可用性を改善する。
【0220】
シナリオ2:プロキシモードからフローモードへの切り替え
【0221】
保護デバイスが処理のためにプロキシモードを使用する処理において、保護デバイスのTCP/IPプロトコルスタックモジュールと保護デバイスの上位層サービスモジュールとは各々、特定の量のデータパケットをバッファする。プロキシモードからフローモードに切り替えるための理想的な時点は、保護デバイスのTCP/IPプロトコルスタックモジュールおよび上位層サービスモジュールのいずれも、バッファされたデータパケットを有しないところである。そのような理想的な時点においてモード切り替えが行われる場合、保護デバイスは、フローモード処理に関連するリソース、状態等を確立し、TCP/IPプロトコルスタックに関連するリソースを解放して、モード切り替えを完了する。しかしながら、一般に、この理想的な状態は満たされることができない。これは、TCP/IPプロトコルスタックモジュール内の2つのタイプのバッファ(受信されたパケットキューおよび送られたパケットキュー)が、通常は空ではないからである。例えば、保護デバイスがプロキシモードに切り換えることを決定した場合、TCP/IPプロトコルスタックモジュール内の送られたパケットキューは、送られており、かつ、ピア側から肯定応答が待たれる、バッファされたいくつかのパケットを有することがあり、TCP/IPプロトコルスタックモジュール内の受信されたパケットキューは、TCP/IPプロトコルスタックモジュールによって肯定応答されており、かつ、上位層サービス処理を待つ、バッファされたいくつかのパケットを有することがある。プロキシモードを使用して以前にバッファされたこれらのデータパケットに対して、保護デバイスは、以下の解決策を行って、オプション削除によってもたらされる効果を達成することに基づいて、これらのデータパケットの送信信頼性をさらに確実にする。
【0222】
以下は、2つの態様、すなわち、態様(a)および態様(b)を使用することによって、シナリオ2における具体的な実装を説明する。
【0223】
態様(a)は、保護デバイスが、プロキシモードを使用して、以前にバッファされている送られたデータパケットをどのように処理するかを説明する。
【0224】
保護デバイスが、TCPセッションについてプロキシモードからフローモードに切り替える処理において、プロキシモードを使用して以前に送られたデータパケットについて、保護デバイスは、保護デバイスのTCP/IPプロトコルスタックを使用することによって、これらのデータパケットの送信信頼性について責任を負う。具体的には、保護デバイスは、これらのデータパケットについて、ピア側からの肯定応答パケットを待ち続ける。保護デバイスが、これらのデータパケットについて、ピア側からの肯定応答パケットを受信した後に、保護デバイスは、これらのデータパケットをバッファから削除する。保護デバイスが、タイムアウト前に肯定応答パケットが受信されないという事実、SACKオプション、または別の手法に基づいて、パケット損失がこれらのデータパケットにおいて発生したことを見出した場合、保護デバイスは再送信を行う。
【0225】
例えば、保護デバイスは、三方向ハンドシェイクフェーズにおいて、第1のオプション(保護デバイスによってサポートされるオプション)を予約し、第2のオプション(保護デバイスによってサポートされないオプション)を削除する。前述の方法500において、第1のモードはプロキシモードであり、第2のモードはフローモードである。前述の方法500において、保護デバイスは、第1のモードを使用して、TCPセッションにおける第4のデータパケットを送っている。保護デバイスが第2のモードに切り換えることを決定した後に、第4のデータパケットが再送信条件を満たす場合、保護デバイスは、第1のオプションに基づいて、第4のデータパケットの宛先デバイスへ第4のデータパケットを再送する。
【0226】
いくつかの実施形態において、第4のデータパケットは、クライアントによってサーバへ送られるパケットである。具体的には、保護デバイスが第1のモードを使用してTCPセッションにおいてデータパケットを検出する処理において、クライアントは、第4のデータパケットを送り、保護デバイスは、第4のデータパケットを受信し、第1のオプションに基づいて第4のデータパケットを構文解析した後に、保護デバイスは、クライアントデバイスへ肯定応答パケットを送る。また、保護デバイスは、第4のデータパケットに対してセキュリティ検出を行う。第4のデータパケットに対する検出が成功した場合、保護デバイスは、第4のデータパケットをサーバへ送る。保護デバイスが第2のモードに切り換えることを決定した後に、第4のデータパケットが再送信条件を満たす場合、保護デバイスは、第1のオプションに基づいて、第4のデータパケットをサーバへ再送する。
【0227】
いくつかの他の実施形態において、第4のデータパケットは、サーバによってクライアントへ送られるパケットである。具体的には、保護デバイスが第1のモードを使用してTCPセッションにおいてデータパケットを検出する処理において、サーバは、第4のデータパケットを送り、保護デバイスは、第4のデータパケットを受信し、第1のオプションに基づいて第4のデータパケットを構文解析した後に、保護デバイスは、肯定応答パケットをサーバへ送る。また、保護デバイスは、第4のデータパケットに対してセキュリティ検出を行う。第4のデータパケットに対する検出が成功した場合、保護デバイスは、第4のデータパケットをクライアントへ送る。保護デバイスが第2のモードに切り換えることを決定した後に、第4のデータパケットが再送信条件を満たす場合、保護デバイスは、第1のオプションに基づいて、第4のデータパケットをクライアントへ再送する。
【0228】
態様(b)は、保護デバイスが、プロキシモードを使用して、以前にバッファされている受信されたデータパケットをどのように処理するかを説明する。
【0229】
保護デバイスがTCPセッションについてプロキシモードからフローモードに切り替える処理において、プロキシモードを使用して、受信され、肯定応答されたデータパケットについて、保護デバイスは、まず、これらのデータパケットに対してセキュリティ検出を行い、次いで、保護デバイスのTCP/IPプロトコルスタックモジュールを使用することによって、検出されたデータパケットを確実に送る。信頼できる送信とは、TCP/IPプロトコルスタックがTCP再送信機構に基づいて、TCPセッションのピア側(クライアントまたはサーバ)へデータパケットを送ることを意味する。
【0230】
例えば、保護デバイスは、三方向ハンドシェイクフェーズにおいて、第1のオプション(保護デバイスによってサポートされるオプション)を予約し、第2のオプション(保護デバイスによってサポートされないオプション)を削除する。前述の方法500において、第1のモードはプロキシモードであり、第2のモードはフローモードである。前述の方法500において、保護デバイスは、第1のモードを使用して、TCPセッションにおける第5のデータパケットを受信済みであり、保護デバイスは、第1のオプションに基づいて第5のデータパケットを構文解析した後に、第5のデータパケットのソースデバイスへ第5のデータパケットについての肯定応答パケットを送っている。保護デバイスが第2のモードに切り換えることを決定した後に、保護デバイスは、第5のデータパケットを検出して、第6のデータパケットを取得し、保護デバイスは、第1のオプションに基づいて、第5のデータパケットの宛先デバイスへ第6のデータパケットを送る。
【0231】
いくつかの実施形態において、第5のデータパケットは、クライアントによってサーバへ送られるパケットである。具体的には、保護デバイスが第1のモードを使用してTCPセッションにおいてデータパケットを検出する処理において、クライアントは、第5のデータパケットを送り、保護デバイスは、第5のデータパケットを受信し、第1のオプションに基づいて第5のデータパケットを構文解析した後に、保護デバイスは、クライアントデバイスへ第5のデータパケットについての肯定応答パケットを送る。保護デバイスが第2のモードに切り替えることを決定した後に、保護デバイスは、第5のデータパケットを検出して、第6のデータパケットを取得し、保護デバイスは、第1のオプションに基づいて、第6のデータパケットをサーバへ送る。また、第6のデータパケットが再送信条件を満たす場合、保護デバイスは、第1のオプションに基づいて、サーバへ第6のデータパケットを再送する。
【0232】
いくつかの他の実施形態において、第5のデータパケットは、サーバによってクライアントへ送られるパケットである。具体的には、保護デバイスが第1のモードを使用してTCPセッションにおいてデータパケットを検出する処理において、サーバは、第5のデータパケットを送り、保護デバイスは、第5のデータパケットを受信し、第1のオプションに基づいて第5のデータパケットを構文解析した後に、保護デバイスは、第5のデータパケットについての肯定応答パケットをサーバへ送る。保護デバイスが第2のモードに切り替えることを決定した後に、保護デバイスは、第5のデータパケットを検出して、第6のデータパケットを取得し、保護デバイスは、第1のオプションに基づいて、第6のデータパケットをクライアントへ送る。また、第6のデータパケットが再送信条件を満たす場合、保護デバイスは、第1のオプションに基づいて、クライアントへ第6のデータパケットを再送する。
【0233】
図9を参照して、以下は、保護デバイスが、
図9に示されるモジュールを使用することによって、プロキシモードからフローモードに切り替える処理手順をどのように実装するかを説明する。
【0234】
図9を参照されたい。保護デバイスがプロキシモードからフローモードに切り替えるステップは、以下のステップS530a’からステップS530i’を含む。
【0235】
ステップS530a’:TCP制御層は、新しいパケットをプロトコルスタックにプッシュする動作を停止する。具体的には、上位層サービスモジュール130がフローモードに切り替えることを決定した後に、TCP制御層がクライアントデバイス11からデータパケットを新たに受信した場合、TCP制御層は、TCP/IPプロトコルスタックモジュール1331内の受信されたパケットキュー13111にデータパケットを追加することを停止し、TCP制御層がサーバ12からデータパケットを新たに受信した場合、TCP制御層は、TCP/IPプロトコルスタックモジュール1332内の受信されたパケットキュー13321にデータパケットを追加することを停止する。
【0236】
ステップS530b’:TCP制御層は、TCP/IPプロトコルスタックモジュール1331内の受信されたパケットキュー13111内の順不同のデータパケット、およびTCP/IPプロトコルスタックモジュール1332内の受信されたパケットキュー13321内の順不同のデータパケットを破棄する。
【0237】
具体的には、TCP/IPプロトコルスタックモジュールが、順不同なデータパケットについての肯定応答パケットを返さないので、順不同なデータパケットは確実に破棄されることが可能である。順不同なデータパケットは、データパケットのSeq番号が連続しないことを意味する。例えば、TCP/IPプロトコルスタックモジュール1331内の受信されたパケットキュー13111は、そのSeq番号が1から5であるデータパケット、および、そのSeq番号が8から10であるデータパケットをバッファするが、TCP/IPプロトコルスタックモジュール1331内の受信されたパケットキュー13111は、そのSeq番号が6および7であるデータパケットを含有しない。この場合において、そのSeq番号が8から10であるデータパケットは、順不同なデータパケットである。ステップS530bを行う場合、TCP制御層は、そのSeq番号が8から10であるデータパケットを破棄する。
【0238】
ステップS530c’:TCP制御層は、TCP/IPプロトコルスタックモジュール1331内の受信されたパケットキュー13111内のデータパケット、およびTCP/IPプロトコルスタックモジュール1332内の受信されたパケットキュー13321のデータパケットを、処理のために上位層サービスモジュール130へ投入し、TCP/IPプロトコルスタックモジュール1331内の受信されたパケットキュー13111、およびTCP/IPプロトコルスタックモジュール1332内の受信されたパケットキュー13321をクリアする。
【0239】
ステップS530d’:上位層サービスモジュール130は、処理されたデータパケットをTCP制御層へ送り、次いで、上位層サービスモジュール130は、バッファをクリアする。TCP制御層は、ピア側におけるTCP/IPプロトコルスタックモジュール内の送られたパケットキューへ、処理されたデータパケットを送る。
【0240】
具体的には、データパケットが、TCP/IPプロトコルスタックモジュール1331内の受信されたパケットキュー13111からのものである場合、TCP制御層は、TCP/IPプロトコルスタックモジュール1332内の送られたパケットキュー13322へ、データパケットを送り、TCP/IPプロトコルスタックモジュール1332内の送られたパケットキュー13322は、サーバ12へデータパケットを送る。データパケットが、TCP/IPプロトコルスタックモジュール1332内の受信されたパケットキュー13321からのものである場合、TCP制御層は、TCP/IPプロトコルスタックモジュール1331内の送られたパケットキュー13312へデータパケットを送り、TCP/IPプロトコルスタックモジュール1331内の送られたパケットキュー13312は、クライアントへデータパケットを送る。
【0241】
ステップS530e’:送られたパケットキュー内のデータパケットについては、保護デバイスは、TCP/IPプロトコルスタックモジュールを使用することによってデータパケットを確実に送り、TCP/IPプロトコルスタックモジュールによって送られたデータパケットの最大Seq番号を記録する。送られたデータパケットの最大Seq番号は、例えば、送られたデータの長さに基づいて、初期シーケンス番号(ISN)を増加させることによって取得される値である。例えば、クライアントの初期シーケンス番号、すなわち、ISN(c)が1000であり、保護デバイスが、クライアントのための2000バイトのデータを転送済みである場合、最大Seq番号は3001であり、ただし、SYNパケットは、1バイトを占有する。
【0242】
ステップS530f’:クライアントまたはサーバから後続のデータパケットを受信した後に、保護デバイスは、フローモードを使用して、後続のデータパケットを処理する。
【0243】
保護デバイスが、クライアントまたはサーバから肯定応答パケットを受信した場合、肯定応答パケットを処理するステップは、以下のステップS530g’またはステップS530h’を含む。具体的には、保護デバイスがSACKオプションをサポートしない場合、保護デバイスは、三方向ハンドシェイクフェーズにおいてハンドシェイクパケットからSACKオプションを削除し、以下のステップS530g’に従って、肯定応答パケットを処理する。保護デバイスがSACKオプションをサポートする場合、保護デバイスは、三方向ハンドシェイクフェーズにおいてハンドシェイクパケット内のSACKオプションを予約し、以下のステップS530h’に従って、肯定応答パケットを処理する。
【0244】
ステップS530g’:保護デバイスが、肯定応答パケットについてSACKオプションをサポートしない場合、保護デバイスは、肯定応答パケットのACK番号を決定する。肯定応答パケットのACK番号が、記録された最大Seq番号以下ある場合、保護デバイスは、TCP/IPプロトコルスタックモジュールへ肯定応答パケットを送る。肯定応答パケットのACK番号が、記録された最大Seq番号より大きい場合、保護デバイスは、ステップS530iへジャンプし、フローモードを使用して、肯定応答パケットを処理する。
【0245】
TCP/IPプロトコルスタックモジュールへ肯定応答パケットを送ることと、フローモードを使用して肯定応答パケットを処理することとは、2つの異なるアクションである。
【0246】
保護デバイスが、フローモードを使用して、肯定応答パケットを処理する場合、保護デバイスは、ピア側へ肯定応答パケットを転送する。例えば、肯定応答パケットがサーバからのものである場合、保護デバイスは、クライアントへ肯定応答パケットを転送する。肯定応答パケットがクライアントからのものである場合、保護デバイスは、サーバへ肯定応答パケットを転送する。
【0247】
保護デバイスが、TCP/IPプロトコルスタックモジュールへ肯定応答パケットを送る場合、保護デバイスは、ピア側へ肯定応答パケットを転送しない。代わりに、TCP/IPプロトコルスタックモジュールは、肯定応答パケットを処理する。例えば、肯定応答パケットがサーバからのものである場合、保護デバイスは、クライアントへ肯定応答パケットを転送しない。代わりに、TCP/IPプロトコルスタックモジュールは、シミュレーションされるサーバとして動作して、肯定応答パケットを処理する。
【0248】
ステップS530h’:保護デバイスがSACKオプションをサポートする場合、保護デバイスは、SACKオプションにおける範囲および記録された最大Seq番号に基づいて、TCPに従って処理を行う。肯定応答パケットが、TCP/IPプロトコルスタックによって送られたデータパケットについての肯定応答パケットである場合、保護デバイスは、処理のためにTCP/IPプロトコルスタックへ肯定応答パケットを送る。肯定応答パケットが、フローモードを使用して転送されたデータパケットについての肯定応答パケットである場合、保護デバイスは、フローモードを使用して肯定応答パケットを処理して、処理のためにピアデバイスへ肯定応答パケットを送る。さらに、SACKオプションが、TCP/IPプロトコルスタックによって送られたデータと、フローモードを使用して転送されたデータとの両方を肯定応答する場合、保護デバイスは、TCP/IPプロトコルスタックによる処理とフローモードを使用した処理とのために肯定応答パケットを分割する。
【0249】
例えば、ソース側は、7つのパケットを連続して送り、7つのパケットは、それぞれパケット1、パケット2、パケット3、パケット4、パケット5、パケット6、およびパケット7である。パケット4は失われ、パケット1、パケット2、パケット3、パケット5、パケット6、およびパケット7は、宛先側へ成功裡に送信される。ソース側と宛先側とが、三方向ハンドシェイク期間中にSACKオプションを使用することをネゴシエートする場合、宛先側は、SACKオプションを使用して、パケット4が失われたことを示すことができる。具体的には、宛先側によって返される肯定応答パケットは、ACK番号とSACKオプションとを含む。ACK番号は、パケット1、パケット2、およびパケット3が受信済みであることを示すために使用され、SACKオプション内のシーケンス番号は、パケット5、パケット6、およびパケット7が受信済みであることを示すために使用される。したがって、送り側は、SACKオプション内のACK番号およびシーケンス番号に基づいて、パケット4が失われたことを知ることができる。保護デバイスがプロキシモードからフローモードに切り換えるシナリオを参照すると、例えば、保護デバイスは、プロキシモードを使用して、パケット1、パケット2、パケット3、パケット4、およびパケット5を受信し、保護デバイスは、保護デバイスのTCP/IPプロトコルスタックを使用することによって、パケット1、パケット2、パケット3、パケット4、およびパケット5を送る。フローモードに切り替えることを決定した後に、保護デバイスは、続いてパケット6およびパケット7を受信する。保護デバイスは、フローモードを使用して、パケット6およびパケット7を転送する。保護デバイス、クライアント、およびサーバが全て、SACKオプションを使用する場合、保護デバイスは、肯定応答パケットを受信した場合に、肯定応答パケットを分割する。保護デバイスは、保護デバイスのTCP/IPプロトコルスタックを使用することによって、肯定応答パケット内のパケット1、パケット2、パケット3、パケット4、およびパケット5に対応するコンテンツを処理する。例えば、パケット4が失われた場合、保護デバイスは、保護デバイスのTCP/IPプロトコルスタックを使用することによって、パケット4を再送信する。肯定応答パケット内のパケット6およびパケット7に対応するコンテンツについては、保護デバイスは、フローモードを使用して、コンテンツを処理するようにソース側に通知する。
【0250】
ステップS530i’:TCP/IPプロトコルスタックモジュール内の現在のTCPセッションについての送られたパケットキュー内にバッファされた全てのデータパケットが送られ、これらのデータパケットについての肯定応答パケットを保護デバイスが受信済みである場合、保護デバイスは、TCP/IPプロトコルスタックモジュールの関連するリソースを削除する。保護デバイスは、フローモードを使用して、TCPセッションにおける全ての後続のパケットを処理する。
【0251】
上記に提供されるシステムアーキテクチャにおいては、カスタマイズされたTCP/IPプロトコルスタックが使用されており、その結果、プロキシモードからフローモードへの適応的な切り替えが、データパケット交換フェーズにおけるデータパケット交換結果に基づいて実装されるだけでなく、データパケットがプロキシモードを使用してバッファされた複雑な場合もサポートされ、それによって、解決策の可用性を改善する。
【0252】
図10は、保護デバイスの可能な構造の概略図である。
【0253】
例えば、
図10に示される保護デバイス800は、
図5に示される方法500における保護デバイスの機能を実装する。いくつかの実施形態において、
図10に示される保護デバイス800は、
図7に示される方法700における保護デバイスの機能を実装するようにさらに構成される。
【0254】
いくつかの実施形態において、
図10に示される保護デバイス800は、
図3、
図8、または
図9における保護デバイス13である。例えば、
図10に示される保護デバイス800内の処理ユニット802は、
図8または
図9におけるフローモード処理モジュール1311、TCP/IPプロトコルスタックモジュール1331、フローモード処理モジュール1312、およびTCP/IPプロトコルスタックモジュール1332のうちの少なくとも1つを使用することによって実装される。
【0255】
図10に示されるように、保護デバイス800は、取得ユニット801と処理ユニット802とを含む。任意選択で、保護デバイス800は、送信ユニットをさらに含む。保護デバイス800内のユニットの全部または一部は、ソフトウェア、ハードウェア、ファームウェア、または、これらの任意の組合せを使用することによって実装される。保護デバイス800内のユニットは、方法500または方法700における保護デバイスの対応する機能を行うように別々に構成される。具体的には、取得ユニット801は、S510を行う際に保護デバイス800をサポートするように構成される。処理ユニット802は、S520およびS530を行う際に保護デバイス800をサポートするように構成される。いくつかの実施形態において、処理ユニット802は、S720およびS750を行う際に保護デバイス800をサポートするようにさらに構成される。送信ユニットは、S730およびS780を行う際に保護デバイス800をサポートするように構成される。
【0256】
本出願のこの実施形態において、ユニットへの分割は、例であり、単なる論理的な機能分割である。実際の実装期間中には、別の分割手法が任意選択で使用されてよい。
【0257】
いくつかの実施形態において、保護デバイス800内のユニットは、1つのユニットへ一体化される。例えば、保護デバイス800内のユニットは、同じチップ上に一体化される。チップは、処理回路、ならびに処理回路に内部で接続され、処理回路と通信する入力インターフェースおよび出力インターフェースを含む。処理ユニット802は、チップ内の処理回路を使用することによって実装される。取得ユニット801は、チップ内の入力インターフェースを使用することによって実装される。送信ユニットは、チップ内の出力インターフェースを使用することによって実装される。例えば、チップは、1つまたは複数のフィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)、プログラマブル論理デバイス(programmable logic device、PLD)、コントローラ、状態機械、ゲートロジック、ディスクリートハードウェア構成要素、任意の他の適切な回路、または本出願において説明される様々な機能を行うことができる回路の任意の組み合わせを使用することによって実装される。
【0258】
いくつかの他の実施形態において、保護デバイス800の各ユニットは、物理的に単独で存在する。いくつかの他の実施形態において、保護デバイス800のいくつかのユニットは、物理的に単独で存在し、その他のユニットは、1つのユニットへ一体化される。例えば、いくつかの実施形態において、保護デバイス800内の取得ユニット801および送信ユニットは、同じハードウェア(通信インターフェースなど)へ一体化される。いくつかの実施形態において、異なるユニットの一体化は、ハードウェアの形式で実装され、すなわち、異なるユニットが、同じハードウェアに対応する。別の例として、異なるユニットの一体化は、ソフトウェアユニットの形式で実装される。
【0259】
保護デバイス800が、ハードウェアを使用することによって実装される場合、保護デバイス800内の処理ユニット802は、例えば、
図4に示される保護デバイス200内のプロセッサ201を使用することによって実装される。保護デバイス800内の取得ユニット801および送信ユニットは、例えば、
図4に示される保護デバイス200内の通信インターフェース204を使用することによって実装される。
【0260】
保護デバイス800が、ソフトウェアを使用することによって実装される場合、保護デバイス800内の各ユニットは、例えば、保護デバイス200内のプロセッサ201が、メモリ203に記憶されたプログラムコード210を読み取った後に生成されるソフトウェアである。例えば、保護デバイス800は、仮想化デバイスである。仮想化デバイスは、バーチャルマシン、コンテナ、およびポッドのうちの少なくとも1つを含むが、これらに限定されない。いくつかの実施形態において、保護デバイス800は、バーチャルマシンの形式でハードウェアデバイス(例えば、物理サーバ)上に配置される。例えば、保護デバイス800は、ネットワーク機能仮想化(network functions virtualization、NFV)技術と組み合わせて汎用物理サーバに基づいて実装される。バーチャルマシンが実装のために使用される場合、保護デバイス800は、例えば、バーチャルホスト、仮想ルータ、または仮想スイッチである。本出願を読むことによって、当業者は、NFV技術を参照した仮想化を通じて、汎用物理サーバ上の保護デバイス800を取得し得る。いくつかの他の実施形態において、保護デバイス800は、コンテナ(例えば、ドッカーコンテナ)の形式でハードウェアデバイス上に配置される。例えば、保護デバイス800が前述の方法実施形態を行う手順は、イメージファイル内にパッケージ化され、ハードウェアデバイスは、イメージファイルを稼働させることによって保護デバイス800を作成する。いくつかの他の実施形態において、保護デバイス800は、ポッドの形式でハードウェアデバイス上に配置される。ポッドは、複数のコンテナを含み、各コンテナは、保護デバイス800内の1つまたは複数のユニットを実装するように構成される。
【0261】
当業者は、本明細書において開示される実施形態において説明される例と組み合わせて、方法ステップおよびユニットが、電子ハードウェア、コンピュータソフトウェア、または、これらの組み合わせによって実行されることが可能であることを認識し得る。ハードウェアとソフトウェアとの間の互換性を明確に説明するために、前述の記載は、各実施形態のステップおよび構成を機能に従って一般に説明してきた。機能がハードウェアによって行われるか、またはソフトウェアによって行われるかは、技術的解決策の特定の用途および設計制約に依存する。当業者は、特定の用途ごとに、説明される機能を実装するために異なる方法を使用し得るが、その実装が本出願の範囲を越えると見なされるべきではない。
【0262】
好都合で簡単な説明の目的のために、前述の説明されるシステム、装置、およびユニットの詳細な動作処理については、前述の方法実施形態における対応する処理を参照することが、当業者によって明確に理解され得る。詳細は、ここでは再度説明されない。
【0263】
本出願において、「第1の」および「第2の」などの用語は、基本的に同じ機能を有する同じアイテムまたは同様のアイテムを区別するために使用されている。「第1の」と「第2の」との間に論理的または時系列的な依存性はなく、数量および実行シーケンスは限定されないことが理解されるべきである。例えば、様々な例の範囲から逸脱せずに、第1のデータパケットは、第2のデータパケットと称されてよく、同様に、第2のデータパケットは、第1のデータパケットと称されてよい。第1のデータパケットと第2のデータパケットとの両方が、データパケットであってよく、いくつかの場合においては、別々の異なるデータパケットであってよい。
【0264】
本出願における「少なくとも1つの」という用語は、1つまたは複数を意味する。
【0265】
前述の実施形態の全部または一部は、ソフトウェア、ハードウェア、ファームウェア、または、これらの任意の組合せによって実装され得る。ソフトウェアが、実施形態を実装するために使用される場合、実施形態は、コンピュータプログラム製品の形式で完全にまたは部分的に実装され得る。コンピュータプログラム製品は、1つまたは複数のコンピュータプログラム命令を含む。コンピュータプログラム命令が、コンピュータ上にロードされ、実行される場合、本出願の実施形態による手順または機能の全部または一部が生成される。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、または他のプログラム可能な装置であってよい。
【0266】
コンピュータ命令は、コンピュータ可読記憶媒体に記憶されてよく、またはコンピュータ可読記憶媒体から別のコンピュータ可読記憶媒体へ送信されてよい。例えば、コンピュータプログラム命令は、ウェブサイト、コンピュータ、サーバ、またはデータセンタから、別のウェブサイト、コンピュータ、サーバ、またはデータセンタへ、有線手法または無線手法で送信され得る。コンピュータ可読記憶媒体は、コンピュータによってアクセス可能な任意の使用可能な媒体、または、1つもしくは複数の使用可能な媒体を一体化したサーバまたはデータセンタなどのデータ記憶デバイスであってよい。使用可能な媒体は、磁気媒体(例えば、フロッピーディスク、ハードディスク、または磁気テープ)、光学媒体(例えば、デジタルビデオディスク(digital video disc、DVD))、半導体媒体(例えば、ソリッドステートドライブ)等であってよい。前述の記憶媒体は、プログラムコードを記憶することができる任意の媒体、例えば、USBフラッシュドライブ、リムーバブルハードディスク、読み出し専用メモリ(read-only memory、ROM)、ランダムアクセスメモリ(random access memory、RAM)、磁気ディスク、または光ディスクなどを含む。
【0267】
前述の実施形態は、本出願を限定するためではなく、単に本出願の技術的解決策を説明するために意図されている。本出願は、前述の実施形態を参照して詳細に説明されているが、当業者は、本出願の実施形態の技術的解決策の範囲から逸脱せずに、前述の実施形態において説明される技術的解決策に対する変形を依然として行ってよく、または、そのいくつかの技術的特徴に対して均等な置換を行ってよいことを理解するべきである。
【手続補正書】
【提出日】2023-05-30
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ネットワークセキュリティ保護方法であって、前記方法は、
保護デバイスによって、第1のモードを使用して、伝送制御プロトコルTCPセッションにおけるデータパケットに対してセキュリティ検出を行う処理において、前記TCPセッションにおける第1のデータパケットを取得するステップであって、前記TCPセッションは、クライアントデバイスとサーバとの間のセッションであり、前記保護デバイスは、前記クライアントデバイスと前記サーバとの間に配置され、前記第1のモードは、前記保護デバイスによってサポートされる検出モードのセット内のモードである、ステップと、
前記保護デバイスによって、前記第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り替えることを決定するステップであって、前記第2のモードは、前記検出モードのセット内の前記第1のモード以外のモードである、ステップと、
前記保護デバイスによって、前記第2のモードに切り替え、前記第2のモードを使用して、前記TCPセッションにおける後続のパケットに対してセキュリティ検出を行うステップと
を含む、方法。
【請求項2】
前記第1のモードは、フローモードであり、前記第2のモードは、プロキシモードであり、前記保護デバイスによって、前記第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り替えることを決定する前記ステップは、
前記保護デバイスによって、前記アプリケーション層データに基づいて、前記第1のデータパケットのアプリケーション層プロトコルタイプを識別するステップと、
前記保護デバイスによって、アプリケーション層プロトコルタイプと検出モードとの間の対応に基づいて、前記第1のデータパケットの前記アプリケーション層プロトコルタイプが前記プロキシモードに対応すると決定するステップと、
前記保護デバイスによって、切り替えられるべき前記第2のモードが、前記第1のデータパケットの前記アプリケーション層プロトコルタイプに対応する前記プロキシモードであると決定するステップと
を含む請求項1に記載の方法。
【請求項3】
前記第1のモードは、プロキシモードであり、前記第2のモードは、フローモードであり、前記セキュリティ検出は、アンチウイルスAV検出であり、前記保護デバイスによって、前記第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り替えることを決定する前記ステップは、
前記保護デバイスによって、前記第1のデータパケットの前記アプリケーション層データに対して行われるAV検出の結果が、ウィルスはないというものである場合、前記保護デバイスによって、切り替えられるべき前記第2のモードが前記フローモードであると決定するステップ
を含む請求項1に記載の方法。
【請求項4】
前記第1のモードは、プロキシモードであり、前記第2のモードは、フローモードであり、前記保護デバイスによって、前記第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り替えることを決定する前記ステップは、
前記第1のデータパケットの前記アプリケーション層データが、前記クライアントデバイスおよび前記サーバが前記TCPセッションにおいて暗号化された通信を行おうとしていることを示す場合、前記保護デバイスによって、切り替えられるべき前記第2のモードが前記フローモードであると決定するステップ
を含む請求項1に記載の方法。
【請求項5】
保護デバイスによって、TCPセッションにおいて第1のデータパケットを取得する前記ステップの前に、前記方法は、
前記保護デバイスによって、前記クライアントデバイスと前記サーバとの間で送信される第1のハンドシェイクパケットを取得するステップであって、前記第1のハンドシェイクパケットは、前記TCPセッションを作成するために使用され、前記第1のハンドシェイクパケットは、第1のオプションおよび第2のオプションを備え、前記第1のオプションは、前記保護デバイスによってサポートされるオプションであり、前記第2のオプションは、前記保護デバイスによってサポートされないオプションである、ステップと、
前記保護デバイスによって、前記第1のハンドシェイクパケットから前記第2のオプションを削除して、第2のハンドシェイクパケットを取得するステップと、
前記保護デバイスによって、前記第1のハンドシェイクパケットの宛先デバイスへ前記第2のハンドシェイクパケットを送るステップと
をさらに含む請求項
1に記載の方法。
【請求項6】
前記第1のモードは
、フローモードであり、前記第2のモードは
、プロキシモードであり、前記保護デバイスによって、前記第2のモードに切り換える前記ステップは、
前記保護デバイスによって、前記第1のオプションに基づいて、前記TCPセッションにおいて第2のデータパケットについての肯定応答パケットを生成するステップであって、前記第2のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって受信され、バッファされたパケットである、ステップと、
前記保護デバイスによって、前記第2のデータパケットのソースデバイスへ前記第2のデータパケットについての前記肯定応答パケットを送るステップであって、前記第2のデータパケットの前記ソースデバイスは、前記クライアントデバイスまたは前記サーバである、ステップと
を含む請求項
5に記載の方法。
【請求項7】
前記第1のモードは
、フローモードであり、前記第2のモードは
、プロキシモードであり、前記保護デバイスによって、前記第2のモードに切り替える前記ステップは、
前記TCPセッションにおける第3のデータパケットが再送信条件を満たす場合、前記保護デバイスによって、前記第1のオプションに基づいて、前記第3のデータパケットの宛先デバイスへ前記第3のデータパケットを再送するステップであって、前記第3のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって送られたパケットであり、前記第3のデータパケットの前記宛先デバイスは、前記クライアントデバイスまたは前記サーバである、ステップ
を含む請求項
5に記載の方法。
【請求項8】
前記第1のモードは
、プロキシモードであり、前記第2のモードは
、フローモードであり、前記保護デバイスによって、前記第2のモードに切り替える前記ステップは、
前記TCPセッションにおける第4のデータパケットが再送信条件を満たす場合、前記保護デバイスによって、前記第1のオプションに基づいて、前記第4のデータパケットの宛先デバイスへ前記第4のデータパケットを再送するステップであって、前記第4のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって送られたパケットであり、前記第4のデータパケットの前記宛先デバイスは、前記クライアントデバイスまたは前記サーバである、ステップ
を含む請求項
5に記載の方法。
【請求項9】
前記第1のモードは
、プロキシモードであり、前記第2のモードは
、フローモードであり、前記保護デバイスによって、前記第2のモードに切り替える前記ステップは、
前記保護デバイスによって、前記TCPセッションにおいて第5のデータパケットを検出して、第6のデータパケットを取得するステップであって、前記第5のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって受信されたパケットであり、前記保護デバイスは、前記第1のオプションに基づいて、前記第5のデータパケットを構文解析した後に、前記第5のデータパケットのソースデバイスへ前記第5のデータパケットについての肯定応答パケットを送っており、前記第5のデータパケットの前記ソースデバイスは、前記クライアントデバイスまたは前記サーバである、ステップと、
前記保護デバイスによって、前記第1のオプションに基づいて、前記第5のデータパケットの宛先デバイスへ前記第6のデータパケットを送るステップであって、前記第5のデータパケットの前記ソースデバイスが前記クライアントデバイスである場合、前記第5のデータパケットの前記宛先デバイスは、前記サーバであり、または、前記第5のデータパケットの前記ソースデバイスが前記サーバである場合、前記第5のデータパケットの前記宛先デバイスは、前記クライアントデバイスである、ステップ
を含む請求項
5に記載の方法。
【請求項10】
前記第6のデータパケットが再送信条件を満たす場合、前記保護デバイスによって、前記第1のオプションに基づいて、前記第5のデータパケットの前記宛先デバイスへ前記第6のデータパケットを再送する
ステップをさらに含む請求項
9に記載の方法。
【請求項11】
前記再送信条件は、前記保護デバイスが、データパケットについての肯定応答パケットを受信していないことを含み、または
前記第1のオプションは、選択的な肯定応答SACKオプションであり、前記再送信条件は、前記保護デバイスが、データパケットの宛先デバイスからのSACKオプション内の情報に基づいて、前記データパケットにおいてパケット損失が発生したと決定することを含む請求項
7、
8、または
10に記載の方法。
【請求項12】
前記第1のハンドシェイクパケットは、前記クライアントデバイスからの同期シーケンス番号SYNパケットであり、前記第1のハンドシェイクパケットの前記宛先デバイスは、前記サーバであり、または
前記第1のハンドシェイクパケットは、前記サーバからの同期シーケンス番号肯定応答SYN ACKパケットであり、前記第1のハンドシェイクパケットの前記宛先デバイスは、前記クライアントデバイスである請求項
5乃至
10のいずれか一項に記載の方法。
【請求項13】
前記検出モードのセットは、パケットフィルタリングモード、フローモード、またはプロキシモードを含む請求項1乃至10のいずれか一項に記載の方法。
【請求項14】
保護デバイスであって、前記保護デバイスは、クライアントデバイスとサーバとの間に配置され、前記保護デバイスは、
第1のモードを使用して、伝送制御プロトコルTCPセッションにおいてデータパケットに対してセキュリティ検出を行うように構成された処理ユニットであって、前記第1のモードは、前記保護デバイスによってサポートされる検出モードのセット内のモードである、処理ユニットと、
前記処理ユニットが、前記第1のモードを使用して、セキュリティ検出を行う処理において、前記TCPセッションにおいて第1のデータパケットを取得するように構成された取得ユニットであって、前記TCPセッションは、前記クライアントデバイスと前記サーバとの間のセッションである、取得ユニットと
を備え、
前記処理ユニットは、前記第1のデータパケットのアプリケーション層データに基づいて、第2のモードに切り替えることを決定するようにさらに構成され、前記第2のモードは、前記検出モードのセット内の前記第1のモード以外のモードであり、
前記処理ユニットは、前記第2のモードに切り替え、前記第2のモードを使用して、前記TCPセッションにおける後続のパケットに対してセキュリティ検出を行うようにさらに構成される、保護デバイス。
【請求項15】
前記第1のモードは、フローモードであり、前記第2のモードは、プロキシモードであり、前記処理ユニットは、前記アプリケーション層データに基づいて、前記第1のデータパケットのアプリケーション層プロトコルタイプを識別し、アプリケーション層プロトコルタイプと検出モードとの間の対応に基づいて、前記第1のデータパケットの前記アプリケーション層プロトコルタイプが前記プロキシモードに対応すると決定し、切り替えられるべき前記第2のモードが、前記第1のデータパケットの前記アプリケーション層プロトコルタイプに対応する前記プロキシモードであると決定するように構成される請求項14に記載の保護デバイス。
【請求項16】
前記第1のモードは、プロキシモードであり、前記第2のモードは、フローモードであり、前記セキュリティ検出は、アンチウイルスAV検出であり、前記処理ユニットは、前記第1のデータパケットの前記アプリケーション層データに対して行われるAV検出の結果が、ウィルスはないというものである場合、切り替えられるべき前記第2のモードが前記フローモードであると決定するように構成される請求項14に記載の保護デバイス。
【請求項17】
前記第1のモードは、プロキシモードであり、前記第2のモードは、フローモードであり、前記処理ユニットは、前記第1のデータパケットの前記アプリケーション層データが、前記クライアントデバイスおよび前記サーバが前記TCPセッションにおいて暗号化された通信を行おうとしていることを示す場合、切り替えられるべき前記第2のモードが前記フローモードであると決定するように構成される請求項14に記載の保護デバイス。
【請求項18】
前記取得ユニットは、前記クライアントデバイスと前記サーバとの間で送信される第1のハンドシェイクパケットを取得するようにさらに構成され、前記第1のハンドシェイクパケットは、前記TCPセッションを作成するために使用され、前記第1のハンドシェイクパケットは、第1のオプションおよび第2のオプションを含み、前記第1のオプションは、前記保護デバイスによってサポートされるオプションであり、前記第2のオプションは、前記保護デバイスによってサポートされないオプションであり、
前記処理ユニットは、前記第1のハンドシェイクパケットから第2のオプションを削除して、第2のハンドシェイクパケットを取得するようにさらに構成され、
前記保護デバイスは、送信ユニットをさらに備え、前記送信ユニットは、前記第1のハンドシェイクパケットの宛先デバイスへ前記第2のハンドシェイクパケットを送るように構成される請求項14乃至17のいずれか一項に記載の保護デバイス。
【請求項19】
前記第1のモードは
、フローモードであり、前記第2のモードは
、プロキシモードであり、前記処理ユニットは、前記第1のオプションに基づいて、前記TCPセッションにおける第2のデータパケットについての肯定応答パケットを生成するように構成され、前記第2のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって受信され、バッファされたパケットであり、
前記送信ユニットは、前記第2のデータパケットのソースデバイスへ前記第2のデータパケットについての前記肯定応答パケットを送るように構成され、前記第2のデータパケットの前記ソースデバイスは、前記クライアントデバイスまたは前記サーバである請求項18に記載の保護デバイス。
【請求項20】
前記第1のモードは
、フローモードであり、前記第2のモードは
、プロキシモードであり、前記送信ユニットは、前記TCPセッションにおける第3のデータパケットが再送信条件を満たす場合、前記第1のオプションに基づいて、前記第3のデータパケットの宛先デバイスへ前記第3のデータパケットを再送するように構成され、前記第3のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって送られたパケットであり、前記第3のデータパケットの前記宛先デバイスは、前記クライアントデバイスまたは前記サーバである請求項18に記載の保護デバイス。
【請求項21】
前記第1のモードは
、プロキシモードであり、前記第2のモードは
、フローモードであり、前記送信ユニットは、前記TCPセッションにおける第4のデータパケットが再送信条件を満たす場合、前記第1のオプションに基づいて、前記第4のデータパケットの宛先デバイスへ前記第4のデータパケットを再送するように構成され、前記第4のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって送られたパケットであり、前記第4のデータパケットの前記宛先デバイスは、前記クライアントデバイスまたは前記サーバである請求項18に記載の保護デバイス。
【請求項22】
前記第1のモードは
、プロキシモードであり、前記第2のモードは
、フローモードであり、前記処理ユニットは、前記TCPセッションにおける第5のデータパケットを検出して、第6のデータパケットを取得するように構成され、前記第5のデータパケットは、前記第1のモードを使用して、前記保護デバイスによって受信されたパケットであり、前記保護デバイスは、前記第1のオプションに基づいて、前記第5のデータパケットを構文解析した後に、前記第5のデータパケットのソースデバイスへ前記第5のデータパケットについての肯定応答パケットを送っており、前記第5のデータパケットの前記ソースデバイスは、前記クライアントデバイスまたは前記サーバであり、
前記送信ユニットは、前記第1のオプションに基づいて、前記第5のデータパケットの宛先デバイスへ前記第6のデータパケットを送るように構成され、前記第5のデータパケットの前記ソースデバイスが前記クライアントデバイスである場合、前記第5のデータパケットの前記宛先デバイスは、前記サーバであり、または、前記第5のデータパケットの前記ソースデバイスが前記サーバである場合、前記第5のデータパケットの前記宛先デバイスは、前記クライアントデバイスである請求項18に記載の保護デバイス。
【請求項23】
前記送信ユニットは、前記第6のデータパケットが再送信条件を満たす場合、前記第1のオプションに基づいて、前記第5のデータパケットの前記宛先デバイスへ前記第6のデータパケットを再送するように構成される請求項22に記載の保護デバイス。
【請求項24】
保護デバイスであって、前記保護デバイスは、プロセッサと通信インターフェースとを備え、前記プロセッサは、プログラムコードを実行して、前記保護デバイスが、請求項1乃至
9のいずれか一項に記載の方法を行うことを可能にするように構成され、前記通信インターフェースは、パケットを受信するように、または送るように構成される、保護デバイス。
【請求項25】
コンピュータプログラ
ムであって、前記コンピュータプログラ
ムは、1つまたは複数のコンピュータプログラム命令を備え、前記コンピュータプログラム命令が、コンピュータによってロードされ、実行される場合、前記コンピュータは、請求項1乃至
9のいずれか一項に記載のネットワークセキュリティ保護方法を行うことを可能にされる、コンピュータプログラ
ム。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0069
【補正方法】変更
【補正の内容】
【0069】
いくつかの実施形態において、
適用シナリオ10は、多数のクライアントデバイス11を含む。簡潔さのために、1つのクライアントデバイス11が、
図3における説明のための例として使用されている。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0105
【補正方法】変更
【補正の内容】
【0105】
任意選択で、方法500におけるクライアントデバイス、サーバ、および保護デバイスのネットワーク配置シナリオが、
図3に示される。方法500におけるクライアントデバイスは、
図3におけるクライアントデバイス11であり、方法500におけるサーバは、
適用シナリオ10におけるサーバ12であり、方法500における保護デバイスは、
図3における保護デバイス13である。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0125
【補正方法】変更
【補正の内容】
【0125】
別の例として、アプリケーション層プロトコルは、FTPであり、FTPにおけるログインコマンドは、USERコマンドを含む。TPに対応するキーワードは、例えば、USERコマンド内で搬送されるキーワードである。具体的には、USERコマンド内で搬送されるキーワードは、USERである。USERコマンドは、「USER xxx」として簡単に表現され得る。「USER xxx」における「xxx」は、USERコマンドに含まれるパラメータであり、パラメータは、通常、ユーザ名を意味する。この場合において、保護デバイスによって受信されたアプリケーション層データが、USERを含む場合、保護デバイスは、アプリケーション層プロトコルのタイプがFTPであると識別し得る。もちろん、USERコマンドは、FTPにおけるログインコマンドの例にすぎず、USERは、FTPに対応するキーワードの例にすぎない。USERコマンドは、FTPにおける別のログインコマンド、例えば、passコマンドまたはpasvコマンドに置換され得る。FTPに対応するキーワードは、別のログインコマンドにおけるキーワード、例えば、passまたはpasvに置換され得る。FTPを識別するために使用されるキーワードは、この実施形態において限定されない。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0158
【補正方法】変更
【補正の内容】
【0158】
クライアントとサーバとの間のハンドシェイクが完了した後に、クライアントおよびサーバが、データ送信フェーズにおいてデータパケットを交換する場合、クライアントおよびサーバは、ハンドシェイクを通じてネゴシエートされるパケットシーケンス番号(Seq)およびMSSを使用することによって、セグメント内のデータを連続して送る。各回にクライアントまたはサーバによって送られるデータの量の最大値は、ピアパーティによってアドバタイズされるウィンドウサイズである。レシーバは、ACKパケットを使用することによって、受信されたデータパケットを肯定応答し、レシーバによって受信されることが可能なデータの最大データ長を更新する。また、ネットワーク内の異常なパケット損失、および過度に速い送信によって引き起こされたパケット損失を処理するために、一連のタイマおよび輻輳アルゴリズムが、TCPにおいてさらに必要とされる。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0237
【補正方法】変更
【補正の内容】
【0237】
具体的には、TCP/IPプロトコルスタックモジュールが、順不同なデータパケットについての肯定応答パケットを返さないので、順不同なデータパケットは確実に破棄されることが可能である。順不同なデータパケットは、データパケットのSeq番号が連続しないことを意味する。例えば、TCP/IPプロトコルスタックモジュール1331内の受信されたパケットキュー13111は、そのSeq番号が1から5であるデータパケット、および、そのSeq番号が8から10であるデータパケットをバッファするが、TCP/IPプロトコルスタックモジュール1331内の受信されたパケットキュー13111は、そのSeq番号が6および7であるデータパケットを含有しない。この場合において、そのSeq番号が8から10であるデータパケットは、順不同なデータパケットである。ステップS530b’を行う場合、TCP制御層は、そのSeq番号が8から10であるデータパケットを破棄する。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0244
【補正方法】変更
【補正の内容】
【0244】
ステップS530g’:保護デバイスが、肯定応答パケットについてSACKオプションをサポートしない場合、保護デバイスは、肯定応答パケットのACK番号を決定する。肯定応答パケットのACK番号が、記録された最大Seq番号以下ある場合、保護デバイスは、TCP/IPプロトコルスタックモジュールへ肯定応答パケットを送る。肯定応答パケットのACK番号が、記録された最大Seq番号より大きい場合、保護デバイスは、ステップS530i’へジャンプし、フローモードを使用して、肯定応答パケットを処理する。
【国際調査報告】