特開2017-69856(P2017-69856A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社エヴリカの特許一覧

<>
  • 特開2017069856-情報処理装置、方法およびプログラム 図000003
  • 特開2017069856-情報処理装置、方法およびプログラム 図000004
  • 特開2017069856-情報処理装置、方法およびプログラム 図000005
  • 特開2017069856-情報処理装置、方法およびプログラム 図000006
  • 特開2017069856-情報処理装置、方法およびプログラム 図000007
  • 特開2017069856-情報処理装置、方法およびプログラム 図000008
  • 特開2017069856-情報処理装置、方法およびプログラム 図000009
  • 特開2017069856-情報処理装置、方法およびプログラム 図000010
  • 特開2017069856-情報処理装置、方法およびプログラム 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2017-69856(P2017-69856A)
(43)【公開日】2017年4月6日
(54)【発明の名称】情報処理装置、方法およびプログラム
(51)【国際特許分類】
   H04L 12/70 20130101AFI20170317BHJP
【FI】
   H04L12/70 100Z
【審査請求】未請求
【請求項の数】10
【出願形態】OL
【全頁数】16
(21)【出願番号】特願2015-195713(P2015-195713)
(22)【出願日】2015年10月1日
(71)【出願人】
【識別番号】510068091
【氏名又は名称】株式会社エヴリカ
(74)【代理人】
【識別番号】100145838
【弁理士】
【氏名又は名称】畑添 隆人
(72)【発明者】
【氏名】山田 直樹
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030GA02
5K030GA06
5K030GA15
5K030JA10
5K030KX11
5K030MA04
5K030MA13
5K030MC08
(57)【要約】
【課題】ネットワーク上のデータを取得して検査する際に、検査対象のデータのバッファに必要な記憶領域のサイズを低減させることを課題とする。
【解決手段】通信検査装置20に、ネットワークを流れる、コンテンツを含むデータを、宛先に到達する前に取得するデータ取得部22と、所定のサイズを有するバッファ領域に、取得されたデータをバッファするバッファ部31と、バッファ部31によってバッファされたデータを、宛先で組み立てられることで得られるファイルの前方から後方への順に相当する順序で参照することで、コンテンツを検査する検査部26と、バッファ部31によってバッファされたデータのうち、検査部26による参照が完了した部分を、コンテンツ全体の検査が終了する前に、宛先に転送する転送部28と、を備えた。
【選択図】図3
【特許請求の範囲】
【請求項1】
ネットワークを流れる、コンテンツを含むデータを、宛先に到達する前に取得するデータ取得手段と、
所定のサイズを有するバッファ領域に、取得された前記データをバッファするバッファ手段と、
前記バッファ手段によってバッファされたデータを、前記宛先で組み立てられることで得られるファイルの前方から後方への順に相当する順序で参照することで、前記コンテンツを検査する検査手段と、
前記バッファ手段によってバッファされたデータのうち、前記検査手段による参照が完了した部分を、前記コンテンツ全体の検査が終了する前に、前記宛先に転送する転送手段と、
を備える情報処理装置。
【請求項2】
前記バッファ手段は、前記データが複数のパケットに分割されて順次取得される場合、前記データのうち新たに取得したパケットに含まれる部分を、未転送のデータがバッファされている領域を除く領域にバッファする、
請求項1に記載の情報処理装置。
【請求項3】
前記検査手段は、前記バッファ領域の参照ポイントを示すポインターを、宛先で組み立てられることで得られるファイルの前方から後方への順に相当する順序で制御することで、バッファされたデータを前記順序で参照する、
請求項2に記載の情報処理装置。
【請求項4】
前記バッファ領域において、前記データのうち新たに取得するパケットに含まれる部分をバッファするための空き領域が足りているか否かを判定する判定手段を更に備え、
前記転送手段は、前記判定手段によって空き領域が足りていないと判定された場合に、前記バッファ手段によってバッファされたデータのうち、前記検査手段による参照が完了した部分を転送する、
請求項1から3の何れか一項に記載の情報処理装置。
【請求項5】
前記判定手段は、前記データのうち新たに取得するパケットに含まれる部分のサイズと、前記バッファ領域の空き領域のサイズとを比較することで、前記バッファ領域において空き領域が足りているか否かを判定する、
請求項4に記載の情報処理装置。
【請求項6】
前記検査手段は、前記データ取得手段による前記コンテンツ全体の取得が完了する前に、該コンテンツの検査を開始する、
請求項1から5の何れか一項に記載の情報処理装置。
【請求項7】
前記検査手段は、該コンテンツが前記宛先への転送が許可されるコンテンツであるか否かを検査し、
前記転送手段は、前記検査手段による検査結果が、該コンテンツが前記宛先への転送が許可されるコンテンツであるという検査結果であった場合に、該コンテンツを含むデータのうち送信済みの部分を除く前記データを、前記宛先に転送する、
請求項1から6の何れか一項に記載の情報処理装置。
【請求項8】
前記検査手段による検査結果が、該コンテンツが前記宛先への転送が許可されるコンテンツではないという検査結果であった場合に、前記転送手段による転送を中止する中止手段を更に備える、
請求項7に記載の情報処理装置。
【請求項9】
コンピューターが、
ネットワークを流れる、コンテンツを含むデータを、宛先に到達する前に取得するデータ取得ステップと、
所定のサイズを有するバッファ領域に、取得された前記データをバッファするバッファステップと、
前記バッファステップでバッファされたデータを、前記宛先で組み立てられることで得られるファイルの前方から後方への順に相当する順序で参照することで、前記コンテンツを検査する検査ステップと、
前記バッファステップでバッファされたデータのうち、前記検査ステップにおける参照が完了した部分を、前記コンテンツ全体の検査が終了する前に、前記宛先に転送する転送ステップと、
を実行する方法。
【請求項10】
コンピューターを、
ネットワークを流れる、コンテンツを含むデータを、宛先に到達する前に取得するデータ取得手段と、
所定のサイズを有するバッファ領域に、取得された前記データをバッファするバッファ手段と、
前記バッファ手段によってバッファされたデータを、前記宛先で組み立てられることで得られるファイルの前方から後方への順に相当する順序で参照することで、前記コンテンツを検査する検査手段と、
前記バッファ手段によってバッファされたデータのうち、前記検査手段による参照が完了した部分を、前記コンテンツ全体の検査が終了する前に、前記宛先に転送する転送手段と、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ネットワーク上でデータを検査するための技術に関する。
【背景技術】
【0002】
従来、データパケットの境界で分割されたパターンを検索するためにコンピュータネットワーク上でデータパケットストリームを検査するための方法として、2つ以上のデータパケットがデータパケットストリームにおいて連続するか否かを判断し、連続するデータパケットからのペイロードを結合し、連続するデータパケットからの結合したペイロードを解析し、文字の組み合わせからなる複数のパターンを検索する方法、および、データパケットが所定時間以上システム中にあるときに、所定の判断基準に基づきデータパケットを出力データストリームに戻す方法、が提案されている(特許文献1を参照)。
【0003】
また、従来、インターネットへ接続する複数の加入者端末を収容するグループセンター局に接続されているゾーンセンター局内に、各加入者端末のユーザーID毎に、インターネットとの間で転送されるパケットデータを一時記憶する記憶装置と、記憶装置に記憶された複数のパケットデータをインターネット内のIPアドレスとネットワーク内の地域IPアドレスに対応させてファイルデータに組み立てて、組み立てたデータ内にコンピュータウイルスが存在するか否かを判定し、コンピュータウイルスが存在しないと判定したデータを加入者端末へ転送する機能とを備えるゲートウェイが提案されている(特許文献2を参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特表2009−510815号公報
【特許文献2】特開2001−256045号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来、ネットワーク上のデータを検査するために、データが宛先に到達する前にデータを取り込んで検査し、検査が終了した後に当該宛先に転送する技術がある。しかし、このような技術では、データ全体の検査が完了するまでデータをバッファしておく必要があるため、大きな記憶領域が必要である。
【0006】
本開示は、上記した問題に鑑み、ネットワーク上のデータを取得して検査する際に、検査対象のデータのバッファに必要な記憶領域のサイズを低減させることを課題とする。
【課題を解決するための手段】
【0007】
本開示の一例は、ネットワークを流れる、コンテンツを含むデータを、宛先に到達する前に取得するデータ取得手段と、所定のサイズを有するバッファ領域に、取得された前記データをバッファするバッファ手段と、前記バッファ手段によってバッファされたデータを、前記宛先で組み立てられることで得られるファイルの前方から後方への順に相当する順序で参照することで、前記コンテンツを検査する検査手段と、前記バッファ手段によってバッファされたデータのうち、前記検査手段による参照が完了した部分を、前記コンテンツ全体の検査が終了する前に、前記宛先に転送する転送手段と、を備える情報処理装置である。
【0008】
本開示は、情報処理装置、システム、コンピューターによって実行される方法またはコンピューターに実行させるプログラムとして把握することが可能である。また、本開示は、そのようなプログラムをコンピューターその他の装置、機械等が読み取り可能な記録媒体に記録したものとしても把握できる。ここで、コンピューター等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的または化学的作用によって蓄積し、コンピューター等から読み取ることができる記録媒体をいう。
【発明の効果】
【0009】
本開示によれば、ネットワーク上のデータを取得して検査する際に、検査対象のデータのバッファに必要な記憶領域のサイズを低減させることが可能となる。
【図面の簡単な説明】
【0010】
図1】実施形態に係るシステムの構成を示す概略図である。
図2】実施形態に係る通信検査装置のハードウェア構成を示す図である。
図3】実施形態に係る通信検査装置の機能構成の概略を示す図である。
図4】実施形態に係るパケット処理の流れの概要を示すフローチャートAである。
図5】実施形態に係るパケット処理の流れの概要を示すフローチャートBである。
図6】実施形態に係るパケット処理が実行された場合のコンテンツ全体におけるバッファ処理およびコンテンツの検査の様子を示す図である。
図7】実施形態に係るヘッダー送信処理の流れの概要を示すフローチャートである。
図8】実施形態において、パケット処理およびヘッダー送信処理を実行した場合のパケットの流れを示す図である。
図9】実施形態において、パケット処理およびヘッダー送信処理を実行した場合のパケットの流れのバリエーションを示す図である。
【発明を実施するための形態】
【0011】
以下、本開示に係る情報処理装置、方法およびプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係る情報処理装置、方法およびプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施の態様に応じた具体的構成が適宜採用され、また、種々の改良や変形が行われてよい。
【0012】
本実施形態では、本開示に係る情報処理装置、方法およびプログラムを、通信検査装置において実施した場合の実施の形態について説明する。但し、本開示に係る情報処理装置、方法およびプログラムは、ネットワーク上のデータを検査するための技術について広く用いることが可能であり、本開示の適用対象は、本実施形態において示した例に限定されない。
【0013】
<システムの構成>
図1は、本実施形態に係るシステム1の構成を示す概略図である。本実施形態に係るシステム1は、複数の情報処理端末90(以下、「クライアント90」と称する)が接続されるネットワークセグメント2と、クライアント90に係る通信を中継するための通信検査装置20と、を備える。また、ネットワークセグメント2内のクライアント90は、インターネットや広域ネットワークを介して遠隔地において接続された各種のサーバーと、通信検査装置20を介して通信可能である。本実施形態において、通信検査装置20は、ネットワークセグメント2において、クライアント90とインターネットとの間に接続されることで、通過するパケットを取得する。そして、通信検査装置20は、取得したパケットのうち、検査対象でないパケット、および検査の結果転送してもよいと判定されたパケットを転送する。
【0014】
図2は、本実施形態に係る通信検査装置20のハードウェア構成を示す図である。通信検査装置20は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、EEPROM(Electrically Erasable and Programmable Read Only Memory)やHDD(Hard Disk Drive)等の記憶装置14、NIC(Network Interface Card)15等の通信ユニット、等を備えるコンピューターである。但し、通信検査装置20の具体的なハードウェア構成に関しては、実施の態様に応じて適宜省略や置換、追加が可能である。また、通信検査装置20は、単一の装置に限定されない。通信検査装置20は、所謂クラウドや分散コンピューティングの技術等を用いた、複数の装置によって実現されてよい。
【0015】
図3は、本実施形態に係る通信検査装置20の機能構成の概略を示す図である。通信検査装置20は、記憶装置14に記録されているプログラムが、RAM13に読み出され、CPU11によって実行されることで、コンテンツ要求検知部21、データ取得部22、送信回数予測部23、抽出部24、ヘッダー生成部25、検査部26、検査中送信部27、転送部28、中止部29、検査結果通知部30、バッファ部31および判定部32を備える情報処理装置として機能する。なお、本実施形態では、通信検査装置20の備える各機能は、汎用プロセッサであるCPU11によって実行されるが、これらの機能の一部または全部は、1または複数の専用プロセッサによって実行されてもよい。また、これらの機能の一部または全部は、クラウド技術等を用いて、遠隔値に設置された装置や、分散設置された複数の装置によって実行されてもよい。
【0016】
コンテンツ要求検知部21は、送信元、宛先および要求コンテンツの種類の少なくとも何れかが所定の条件に合致するコンテンツ要求(接続要求)を検知する。
【0017】
データ取得部22は、ネットワークに接続された端末によって送受信される通信に係る、ヘッダーとコンテンツを含むデータを、宛先に到達する前に取得する。なお、本実施形態において、通信検査装置20は、ネットワークセグメント2に接続されたクライアント90による通信の他、通信検査装置20を介する全ての通信を、検査の対象とすることが出来る。
【0018】
バッファ部31は、所定のサイズを有するRAM13上のコンテンツバッファ領域に、取得されたデータをバッファする。ここで、バッファ部31は、データが複数のパケットに分割されて順次取得される場合、データのうち新たに取得したパケットに含まれる部分を、未転送のデータがバッファされている領域を除く領域にバッファする。換言すれば、バッファ部31は、データのうち新たに取得したパケットに含まれる部分を、データがバッファされていない領域または転送済のデータがバッファされている領域にバッファする。以下、未転送のデータがバッファされている領域を除く領域を、「空き領域」と称する。なお、本実施形態において、バッファ部31によって所定のサイズを有するコンテンツバッファ領域にバッファされるのはデータのうちコンテンツの部分であり、コンテンツのヘッダーについては、RAM13上の別の領域にバッファされる。
【0019】
判定部32は、コンテンツバッファ領域において、データのうち新たに取得するパケットに含まれる部分をバッファするための空き領域が足りているか否かを判定する。具体的には、判定部32は、データのうち新たに取得するパケットに含まれる部分のサイズと、コンテンツバッファ領域の空き領域のサイズとを比較することで、コンテンツバッファ領域において空き領域が足りているか否かを判定する。ここで、空き領域が足りていないと判定された場合、転送部28に、バッファ部31によってバッファされたデータのうち、検査部26による参照が完了した部分を転送させることで、コンテンツバッファ領域を確保する。
【0020】
送信回数予測部23は、データ取得部22によって取得されるコンテンツの検査に必要な検査時間を予測し、予測された検査時間に基づいて、検査中送信部27による送信回数を予測する。より具体的には、送信回数予測部23は、検査部26による検査が開始されてから転送部28によるコンテンツ部分の先頭部分の転送が開始されるまでの時間を予測する。
【0021】
抽出部24は、データ取得部22によって取得されたデータに含まれるヘッダーから、宛先に受信されるコンテンツを確定させないヘッダーを抽出する。
【0022】
ヘッダー生成部25は、宛先に受信されるコンテンツを確定させないヘッダーを生成する。
【0023】
検査部26は、データ取得部22によって取得されたコンテンツが、当該データに設定された宛先への転送が許可されるコンテンツであるか否かを、予め定められた検査項目に従って検査する。例えば、検査部26は、コンテンツにマルウェアが含まれているか否か、コンテンツに望ましくない表現が含まれているか否か、等を検査する。但し、本開示に係る検査において採用され得る具体的な検査項目や検査手法は、本実施形態における例示に限定されない。具体的な検査項目や検査手法には、既知の、または将来開発される様々な検査項目および検査手法が採用されてよい。
【0024】
なお、検査部26は、データ取得部22によるコンテンツ全体の取得が完了する前に、当該コンテンツの検査を開始する。そして、検査部26は、バッファ部31によってバッファされたデータを、宛先で組み立てられることで得られるファイルの前方から後方への順に相当する順序で参照することで、コンテンツを検査する。より具体的には、検査部26は、コンテンツバッファ領域の参照ポイントを示すポインターを、当該コンテンツバッファ領域におけるデータの並びに関係なく、宛先で組み立てられることで得られるファイルの前方から後方への順に相当する順序で制御して、バッファされたデータを参照する。
【0025】
即ち、本実施形態に係る検査部26は、RAM13のコンテンツバッファ領域に、コンテンツ全体が保持されていない状態でコンテンツの検査を行う。上述の通り、検査部26は、バッファ部31によってバッファされたデータを、宛先で組み立てられることで得られるファイルの前方から後方への順に相当する順序で参照するが、この際、検査部26は、検査経過をRAM13上において管理し、コンテンツを前方から後方へ参照しながら検査を行い、検査経過を逐次更新する。例えば、検査がパターンマッチングによって行われている場合、検査経過には、パターンマッチングによるマッチングの有無が記録され、検査がハッシュ演算等によって行われている場合、検査経過には、コンテンツにおける参照が完了した位置までのハッシュ演算結果が記録される。
【0026】
検査中送信部27は、検査部26による検査が開始されてから転送部28によるコンテンツ部分の先頭部分の転送が開始されるまでの間、宛先におけるデータの受信待ち時間がタイムアウトしない間隔で、データに含まれるヘッダーの少なくとも一部を当該データの宛先に送信する。なお、本実施形態では、タイムアウト防止のために送信されるデータとして、ヘッダーを送信することとしているが、タイムアウト防止のために送信されるデータは、クライアント90に受信される後続データの種類やサイズ等を確定させないものであればよく、ヘッダーに限定されない。
【0027】
転送部28は、バッファ部31によってバッファされたデータのうち、検査部26による参照が完了した部分を、コンテンツ全体の検査が終了する前に、当該データの宛先に転送する。なお、判定部32の説明において上述した通り、この転送は、判定部32によって空き領域が足りていないと判定された場合に行われてもよい。また、転送部28は、検査部26によるコンテンツ全体の検査が完了した後、検査結果が、該コンテンツが宛先への転送が許可されるコンテンツであるという検査結果であった場合に、該コンテンツを含むデータのうち送信済みの部分を除くデータを、当該データの宛先に転送する。
【0028】
中止部29は、検査部26による検査結果が、当該コンテンツが当該データの宛先への転送が許可されるコンテンツではないという検査結果であった場合に、転送部28による転送を中止する。
【0029】
検査結果通知部30は、検査部26による検査結果が、当該コンテンツが当該データの宛先への転送が許可されるコンテンツではないという検査結果であった場合に、当該検査結果をデータの宛先に通知するための情報を、検査中送信部27または転送部28によって送信済みの部分に続くデータの一部として、当該宛先に送信する。
【0030】
<処理の流れ>
次に、本実施形態に係るシステム1によって実行される処理の流れを、フローチャートを用いて説明する。なお、以下に説明するフローチャートに示された処理の具体的な内容および処理順序は、本開示を実施するための一例である。具体的な処理内容および処理順序は、本開示の実施の形態に応じて適宜選択されてよい。
【0031】
図4および図5は、本実施形態に係るパケット処理の流れの概要を示すフローチャートである。本実施形態に係るパケット処理は、通信検査装置20によって、ネットワーク上を流れる接続要求パケット(例えば、TCPのSYNパケット)が受信されたことを契機として実行される。
【0032】
ステップS101では、接続要求が取り込まれる。コンテンツ要求検知部21は、受信されたパケットのヘッダーに設定されている送信元および宛先を参照して、取り込みの対象となるパケット(例えば、クライアント90からサーバーへの接続要求パケット)であるか否かを判定し、取り込みの対象となるパケットを取り込み、RAM12に記憶する(所謂フック処理)。取り込みの対象でないと判定されたパケットは、通信検査装置20に取り込まれることなく、宛先に転送される(図示は省略する)。取り込みの対象であるか否かは、パケットの送信元および宛先が、予め設定された送信元IPアドレスおよび宛先IPアドレスのリストに登録されているか否かを照合することによって判定される。この照合に用いられるリストは、ホワイトリストであってもブラックリストであってもよい。また、パケットが取り込みの対象であるか否かの判定には、本開示とは異なる手法が採用されてもよい。その後、処理はステップS102へ進む。
【0033】
ステップS102では、クライアント90の要求に係るコンテンツを検査対象とするか否かが判定される。コンテンツ要求検知部21は、ステップS101で取り込まれた接続要求に係るコネクションに属するパケットを受信し、当該パケットのリクエストラインおよびヘッダーを参照して、当該パケットが、検査部26による検査対象となる所定の種類のコンテンツを要求するパケットであるか否かを判定する。検査対象コンテンツを要求するパケットであるか否かは、パケットのリクエストラインおよびヘッダーが、予め設定された検査対象リストに登録されている情報と合致または近似するか否かを照合することによって判定される。
【0034】
例えば、HTTPパケットが、以下に示されたリクエストラインおよびヘッダーを有する場合、当該パケットは、検査対象のコンテンツを要求するものであると判定される。
GET / HTTP/1.1
Host: sample.site
Accept: */*
User-Agent: UserAgent 1.0
Accept-Language: ja
Accept-Encoding: gzip, deflate
Connection: keep-alive
パケットが検査対象コンテンツを要求するパケットではないと判定された場合、当該パケットによって要求されたコンテンツは検査対象とはならず、パケットは転送され(ステップS119)、本フローチャートに示された処理は終了する。一方、パケットが検査対象コンテンツを要求するパケットであると判定された場合、当該パケットによって要求されたコンテンツは、後述するステップS113における検査の対象として設定され、処理はステップS103へ進む。
【0035】
ステップS103およびステップS104では、接続要求およびコンテンツ要求が送信される。通信検査装置20は、ステップS101の接続要求に係るサーバーに接続し、ステップS102のコンテンツ要求に係るコンテンツを、当該サーバーに要求する。この際、通信検査装置20は、ステップS101およびステップS102で受信されたパケットをそのままサーバーに転送してもよいし、必要に応じて送信元IPアドレスをアドレス変換してからサーバーに送信してもよい。その後、処理はステップS105へ進む。
【0036】
ステップS105では、レスポンスステータスおよび/またはヘッダーを含むパケットが受信される。データ取得部22は、ステップS104で送信されたコンテンツ要求パケットへの応答パケットとしてサーバーから送信された、レスポンスステータスまたはヘッダーを含むデータを、クライアント90に到達する前に取得する。ここで、データが複数のパケットに分割されて送信されている場合には、データ取得部22は、複数のパケットを組み立てることで、レスポンスステータスまたはヘッダーを含むデータを取得する。また、通信検査装置20は、ヘッダーの内容を参照して、当該ヘッダーに続くコンテンツを、検査部26による検査対象とするか否かを判定する。この判定は、例えば、ヘッダーの内容から特定されたコンテンツの種類を、検査対象とする(または、検査対象としない)コンテンツの種類のリストと照合することで行われる。また、この判定は、ヘッダーの内容から特定されたコンテンツのサイズと、検査対象とするサイズの上限とを比較することによって行われてもよい。
【0037】
例えば、HTTPデータが、以下に示されたレスポンスステータスおよびヘッダーを有する場合、後続コンテンツが検査対象であると判定される。
HTTP/1.1 200 OK
Server: Apache
Date: xxxxxxxx GMT
Content-Type: application/octet-stream
Content-Length: 108
Connection: keep-alive
Cache-Control: max-age=0, no-cache
Pragma: no-cache
判定の結果、コンテンツを検査対象としないと判定された場合、当該パケットに係るコネクションは検査の対象外に設定され、本フローチャートに示された処理は終了する(図示は省略する)。一方、コンテンツを検査対象とする場合、処理はステップS106へ進む。
【0038】
ステップS106では、後述するヘッダー送信処理による送信回数が予測される。送信回数予測部23は、はじめに、ステップS105で受信されたパケットのヘッダーを参照してヘッダーおよびコンテンツの先頭部分(コンテンツを含む1つ目のパケットに含まれるコンテンツ部分)のサイズを把握し、これを、検査部26による処理能力(例えば、所定時間あたりに検査可能なデータサイズ)で除算することで、ヘッダーの検査およびコンテンツの先頭部分の検査が完了し、コンテンツの先頭部分の転送が開始されるまでに必要な検査時間を予測する。そして、送信回数予測部23は、予測された検査時間を、検査中送信部27による送信間隔で除算することで、送信回数を予測する。ここで、検査中送信部27による送信間隔には、コンテンツを受信するクライアント90において、コンテンツに係るパケット受信の待ち時間がタイムアウトしない間隔が予め設定される。その後、処理はステップS107へ進む。
【0039】
ステップS107では、検査中に送信可能なヘッダーの部分が抽出される。抽出部24は、ステップS105において受信されたヘッダーから、宛先に受信されるコンテンツを確定させないヘッダー部分を抽出する。換言すれば、抽出部24は、検査中送信部27によって送信済みの部分に続くデータの一部として、仮にサーバーから送信されたデータ以外のデータ(例えば、検査結果)が宛先に送信された場合に、該宛先による該データの処理に不都合(例えば、データサイズの矛盾や、コンテンツの種類の矛盾)が生じるヘッダー部分を除外することで、宛先に受信されるコンテンツを確定させないヘッダーを抽出する。
【0040】
例えば、ステップS105の説明において例示したヘッダーのうち、以下に示す部分は、コンテンツの種類およびサイズを限定するヘッダー部分であり、その後に送信可能なデータを限定してしまうヘッダー部分である。
Content-Type: application/octet-stream
Content-Length: 108
このため、抽出部24は、上記したヘッダー部分を除いた部分を、コンテンツを確定させないヘッダーとして抽出する。
【0041】
なお、本実施形態では、コンテンツの送受信にHTTP(Hypertext Transfer Protocol)が用いられる場合を例に挙げて説明しているが、本開示は、その他のプロトコルにも適用可能である。例えば、コンテンツの送受信に用いられるプロトコルがPOP3(Post Office Protocol Version 3)である場合には、ヘッダー中のFromフィールド、Toフィールド、CcフィールドおよびSubjectフィールド等が、コンテンツの種類およびサイズを限定するヘッダーであるため、抽出部24は、これらの部分を除くヘッダーを抽出する。
【0042】
また、抽出部24は、データ取得部22によって取得されたデータに含まれるヘッダーから、宛先に受信されるコンテンツを確定させないヘッダーを、ステップS106で予測された送信回数に応じて決定された量だけ抽出することとしてもよい。具体的には、抽出部24は、ステップS106で予測された送信回数に分けて送信可能な量、ヘッダー部分を抽出してもよい。なお、抽出可能なヘッダー部分の量が、送信回数分に満たない場合、抽出部24は、コンテンツを確定させないヘッダー部分を全て抽出する。その後、処理はステップS108へ進む。
【0043】
ステップS108およびステップS109では、コンテンツを含むパケットが受信され、コンテンツバッファの空き領域が足りているか否かが判定される。データ取得部22は、ステップS104で送信されたコンテンツ要求パケットへの応答パケットとしてサーバーから送信された、コンテンツを含むパケットを受信する(ステップS108)。そして、判定部32は、コンテンツバッファの空き領域のサイズと、次にバッファされるデータのサイズとを比較することで、受信されたパケットに含まれるコンテンツをバッファするための空き領域が有るか否かを判定する(ステップS109)。
【0044】
具体的には、判定部32は、コンテンツバッファの空き領域のサイズが、受信されたパケットに含まれるコンテンツ部分のサイズよりも大きい場合には、受信されたコンテンツをバッファするための空き領域が足りていると判定する。空き領域が足りていると判定された場合、空き領域の確保は不要であるため、処理はステップS112へ進む。一方、判定部32は、コンテンツバッファの空き領域のサイズが、受信されたコンテンツのサイズよりも小さい場合には、受信されたコンテンツをバッファするための空き領域が不足していると判定する。空き領域が不足していると判定された場合、空き領域の確保が必要であるため、処理はステップS110へ進む。
【0045】
ステップS110およびステップS111では、コンテンツバッファの空き領域が確保される。転送部28は、バッファされたデータのうち、最も古い時点でバッファされたデータから順に(FIFO:First In, First Out)、当該データの宛先であるクライアント90に転送(送信)する(ステップS110)。また、バッファ部31は、ステップS109で転送されたデータを、コンテンツバッファから削除する(ステップS111)。なお、ここでいうコンテンツバッファからの削除は、転送済みのデータが記録されていた領域に次に受信されるパケットのデータを記録可能なようにすることであり、データの完全な消去(ゼロクリア等)を意味するものではない。その後、処理はステップS112へ進む。
【0046】
ステップS112からステップS115では、受信されたコンテンツが検査される。データ取得部22は、コンテンツを含むデータを、クライアント90に到達する前に取得し、取得したデータをコンテンツバッファに記録することで、当該データに含まれるコンテンツのうち、少なくとも当該データに係る部分の検査が完了するまで、宛先クライアント90への転送を保留する(ステップS112)。
【0047】
そして、データの転送が保留されている間に、検査部26は、取得されたコンテンツが、クライアント90への転送が許可されるコンテンツであるか否かを、予め定められた検査項目に従って検査する(ステップS113)。ここで、データが複数のパケットに分割されて送信されている場合には、検査部26は、複数のパケットの夫々がデータ取得部22によって取得される毎に、パケットからデータを取り出してバッファし、順次検査を行う。コンテンツ全体の検査が完了する前に、即ち検査の途中で、当該コンテンツが、クライアント90への転送が許可されないコンテンツであると判定された場合(ステップS114)、コンテンツの検査は中断され、処理はステップS118へ進む。検査が中断されない場合、ステップS108からステップS115の処理はコンテンツ全体の検査が完了するまで繰り返され、コンテンツ全体の検査が完了すると(ステップS115)、処理はステップS116へ進む。
【0048】
なお、ステップS108からステップS115におけるコンテンツの受信および検査が行われている間、通信検査装置20は、クライアント90における受信待ち時間のタイムアウトを防止するため、ヘッダー送信処理を実行する。ヘッダー送信処理の詳細については、図7を用いて後述する。
【0049】
ステップS116では、検査結果が判定される。ステップS108からステップS115における検査の結果、コンテンツが、クライアント90への転送が許可されるコンテンツであると判定された場合、処理はステップS117へ進む。一方、コンテンツが、クライアント90への転送が許可されないコンテンツであると判定された場合、処理はステップS118へ進む。
【0050】
ステップS117では、データが転送される。転送部28は、コンテンツを含むデータのうち、既に送信済みの部分を除くデータ、即ち、バッファされているデータを、当該データの宛先であるクライアント90に転送(送信)する。その後、本フローチャートに示された処理は終了する。
【0051】
ステップS118では、データの転送が中止され、検査結果情報が通知される。中止部29は、検査部26による検査結果が、当該コンテンツが当該データの宛先への転送が許可されるコンテンツではないという検査結果であった場合に、転送部28による転送を中止する。このため、本実施形態に係るシステムによれば、望ましくないコンテンツが、クライアント90に対して送信されてしまうことを防止することが出来る。そして、検査結果通知部30は、当該検査結果をデータの宛先に通知するための情報を、検査中送信部27によって送信済みの部分に続くデータの一部(ヘッダーおよびコンテンツ等)として、当該宛先に送信する。具体的には、検査結果通知部30は、クライアント90が要求したコンテンツに、マルウェアや望ましくない表現等が含まれていることを、クライアント90のユーザーに通知するためのコンテンツ(例えば、Webページ)と、当該コンテンツに適したヘッダー(例えば、コンテンツの種類およびサイズを限定するヘッダー)とを生成し、クライアント90に対して送信する。その後、本フローチャートに示された処理は終了する。
【0052】
図6は、本実施形態に係るパケット処理が実行された場合のコンテンツ全体におけるバッファ処理およびコンテンツの検査の様子を示す図である。ここで、コンテンツの検査とは、コンテンツ全体を1つのまとまりとした検査であり、単に順次送信されてくるパケットを検査するパケット検査とは異なる。本実施形態において、コンテンツ検査は、コンテンツ全体を1つのファイルとして、先頭から順に検査を行う。
【0053】
検査の内容は、例えば、パターンマッチングやハッシュ演算等であるが、このような処理は、コンテンツ(ファイル)全体がRAM13上にロードされていることを必ずしも必要としない。即ち、これらの検査は、コンテンツの内容を先頭から順に参照することができれば可能なものであるため、本実施形態に係る通信検査装置20は、コンテンツ(ファイル)全体をRAM13(コンテンツバッファ)に蓄積することなく、コンテンツの先頭からFIFO方式でバッファされている部分を順に参照することで、検査を行う。検査が終了した部分については、コンテンツバッファの空き容量に応じてFIFO方式で転送され、コンテンツバッファから削除されていくため、コンテンツの先頭から順に「転送済」となる。また、バッファされている部分よりも後方のコンテンツは、サーバーから「未受信」である。但し、コンテンツバッファに余裕がある場合には、コンテンツ(ファイル)全体をRAM13(コンテンツバッファ)に蓄積してもよい。
【0054】
図7は、本実施形態に係るヘッダー送信処理の流れの概要を示すフローチャートである。本実施形態に係るヘッダー送信処理は、図4および図5に示されたパケット処理において、ステップS108からステップS115に示されたコンテンツ検査が開始されたことを契機として実行される。
【0055】
ステップS201では、ヘッダーの一部が送信される。検査中送信部27は、データに含まれるヘッダーの少なくとも一部を、当該データの宛先であるクライアント90に送信する。なお、本実施形態では、タイムアウト防止のために送信されるデータとして、抽出部24によって抽出されたヘッダーの一部、または、ヘッダー生成部25によって生成されたヘッダーが用いられているが、タイムアウト防止のために送信されるデータは、クライアント90に受信される後続データの種類やサイズ等を確定させないものであればよく、ヘッダーに限定されない。その後、処理はステップS202へ進む。
【0056】
ステップS202では、検査の終了またはデータ転送の開始がされたか否かが判定される。検査中送信部27は、上述したパケット処理のステップS108からステップS115に示されたコンテンツ検査が終了したか否か、およびコンテンツバッファの空き領域確保のためのデータ転送が開始されたか否かを判定する。コンテンツ検査が終了していないと判定された場合、処理はステップS203へ進む。一方、コンテンツ検査が終了したと判定された場合、本フローチャートに示された処理は終了する。なお、本実施形態では、検査部26によるコンテンツ検査が終了したか否かを確認して、ヘッダー送信処理を継続するか否かを決定することとしているが、ヘッダー送信処理の継続/終了の判定は、検査開始から検査時間(ステップS106で算出)が経過したか否かに基づいて判定されてもよい。
【0057】
ステップS203およびステップS204では、未送信のヘッダーが無い場合に、タイムアウト防止用のヘッダーが生成される。ヘッダー生成部25は、ステップS107で抽出されたヘッダーが全てクライアント90に対して送信され、送信可能なヘッダーが尽きた場合(ステップS203のNO)、タイムアウト防止用のヘッダーを生成する(ステップS204)。ここで生成されるヘッダーは、ステップS107で抽出されたヘッダーと同様、宛先に受信されるコンテンツを確定させないヘッダーである。また、ヘッダー生成部25は、宛先に受信されるコンテンツを確定させないヘッダーとして、例えば、名称が「X−」から始まるオリジナルヘッダーを生成してよい。
【0058】
なお、本実施形態では、抽出されたヘッダーが尽きた場合に、ヘッダー生成部25にタイムアウト防止用のヘッダーを生成させ、検査中送信部27に送信させることとしているが、このような構成に代えて、検査中送信部27に、サーバーから受信されたデータ中のヘッダー以外の部分(例えば、コンテンツ中の、クライアント90に送信してよい部分)を少しずつ送信させる構成が採用されてもよい。
【0059】
ステップS205では、送信間隔の経過が待たれる。検査中送信部27は、予め設定された送信間隔の経過を待つ。上述の通り、送信間隔には、コンテンツを受信するクライアント90において、コンテンツに係るパケット受信の待ち時間がタイムアウトしない間隔が予め設定される。送信間隔が経過すると、処理はステップS201へ進み、ヘッダーの続きが一部送信される(ステップS201)。即ち、本実施形態に係るシステムによれば、検査中送信部27は、検査部26による検査が行われている間、宛先におけるデータの受信待ち時間がタイムアウトしない間隔で、データに含まれるヘッダーを一部ずつ当該データの宛先に送信する。
【0060】
図8および図9は、本実施形態において、パケット処理およびヘッダー送信処理を実行した場合のパケットの流れを示す図である。本実施形態に係る情報処理装置、方法およびプログラムによれば、コンテンツ要求に応じてサーバーから送信されたデータを通信検査装置20が検査している間、データのうちコンテンツを確定させない部分(ヘッダー等)を分割してクライアント90に送信することで、コンテンツ検査中のタイムアウトを防止することが出来る。
【0061】
また、図9は、コンテンツのサイズがコンテンツバッファのサイズよりも大きいために、検査中にバッファされているデータがクライアントに転送される場合のパケットの流れが示されている。例えば、1のコネクションまたはクライアントに割り当てられるコンテンツバッファのサイズがパケット2つ分相当であった場合、分割されたコンテンツの3つ目が含まれるパケットをバッファする前に、先頭のコンテンツから順にクライアントへの転送およびコンテンツバッファからの削除が開始される。このコンテンツバッファからの転送・削除の処理は、先述の通りFIFO方式で行われる。
【0062】
なお、受信待ち時間のタイムアウトを防止するための技術として、従来、空のパケットを一定時間毎に送信することで、TCP(Transmission Control Protocol)層等の下位層でのタイムアウトを防止する技術(例えば、TCPにおけるkeep-alive)が用いられることがあるが、これは、アプリケーション層でのタイムアウトを防止するものではなかった。本実施形態に示された情報処理装置、方法およびプログラムによれば、TCP層のような下位層におけるタイムアウトのみならず、アプリケーション層におけるタイムアウトも防止することが出来る。
【0063】
また、本実施形態に係る情報処理装置、方法およびプログラムによれば、クライアント90において受信待ち時間のタイムアウトを起こさせずに、コンテンツ全体の検査が終了するまでクライアント90にコンテンツを受信させないようにすることが出来る。更に、不適切なコンテンツが検出された場合には、専用のアプリケーション等を用いることなく、クライアント90のコンテンツ要求に対する応答データとして、ユーザーに通知することが出来る。
【0064】
なお、本実施形態では、本発明をHTTP1.1において用いる例について説明したが、本発明を適用可能なプロトコルは、本実施形態における開示に限定されない。例えば、本発明は、同一セッション内でリクエストに対して返信されるコンテンツを含むパケットの順序が制限されないようなプロトコル(例えば、HTTP2.0)にも適用することが可能である。
【符号の説明】
【0065】
1 システム
20 通信検査装置
90 クライアント
図1
図2
図3
図4
図5
図6
図7
図8
図9