情報処理装置、制御方法、及びプログラム
【課題】暗号化されたパケットのデータを復号化された状態で保存することを可能とし、データ解析の効率化を可能とした情報処理装置、制御方法、及びプログラムを提供する。
【解決手段】ネットワークシステムのMFP101は、パケット取得アプリケーション305、IPSecモジュール306、パケット取得サブアプリケーション308等を備える。パケット取得アプリケーション305は、データリンク層でパケットデータを取得してパケットデータ309に保存する。パケット取得アプリケーション305は、IPSecモジュール306によりIPSecが適用される以前のIP層パケットデータを取得する。パケット取得サブアプリケーション308は、IP層パケットデータがIPSec適用パケットである場合、暗号部を復号したパケットデータをパケットデータ309に保存されているパケットデータに上書きする。
【解決手段】ネットワークシステムのMFP101は、パケット取得アプリケーション305、IPSecモジュール306、パケット取得サブアプリケーション308等を備える。パケット取得アプリケーション305は、データリンク層でパケットデータを取得してパケットデータ309に保存する。パケット取得アプリケーション305は、IPSecモジュール306によりIPSecが適用される以前のIP層パケットデータを取得する。パケット取得サブアプリケーション308は、IP層パケットデータがIPSec適用パケットである場合、暗号部を復号したパケットデータをパケットデータ309に保存されているパケットデータに上書きする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化データを含むパケットデータに関する処理を行う情報処理装置、制御方法、及びプログラムに関する。
【背景技術】
【0002】
従来、ネットワークの通信路に接続されたネットワーク通信機器で障害が発生した場合に、通信路を流れるパケットを採取して障害の原因を調査する手法が存在する。その一般的な方法では、パケットの取得を行う専用機器をHUB等の集線機器に接続することで、LAN(Local Area Network)上を流れるパケットを採取する。
【0003】
採取したパケットから、調査対象となるネットワーク通信機器が送受信しているパケットのデータの内容を解析し、規定外のデータを受信している箇所や、受信パケットに対する応答遅延が発生している箇所を特定する。そして、特定した箇所が障害の原因であるか否かを判別するために、同一のパケットをネットワーク通信機器に送信して障害の再現確認を行ったり、ネットワーク通信機器の通信を司るソースコードの解析を行ったり等の原因調査を行う。
【0004】
近年では、パケットの取得機能が備わったネットワーク通信機器も普及し始めている。これにより、パケットの採取を行うための専用機器を使用しなくてもパケットの取得が可能となる。従来は、スイッチングHUBが導入された環境などにおいては専用機器を接続したとしてもパケットの採取を正しく行うことができなかった。
【0005】
その理由は、スイッチングHUBはネットワークフレームの宛て先アドレス情報を参照し、そのアドレスを持つノードが接続されたHUBポートにのみパケットを転送するため、別のHUBポートにパケット取得装置を接続したとしても取得できないためである。パケット取得機能が備わったネットワーク通信機器においては、パケット通信を行うノード上でパケット取得が可能になるため、そのようなスイッチングHUB環境においてもパケット採取が可能になった。
【0006】
また、近年、インターネットで使われているネットワーク層プロトコルであるIP(Internet Protocol)の通信路を暗号化する技術であるIPSec(IP Security)が普及しつつある。IPSecは、認証、暗号、鍵交換といった各技術の総称であり、プロトコルやヘッダ構造の集合を示す規格である。IPSecにより暗号化されたパケットは、一般的に、IPが位置する階層よりも上位の階層が暗号化される。
【0007】
IPSecの特徴は、IPが位置する階層の上位の階層はIPSecを意識する必要がない点である。つまり、IPより上位に位置するTCP、UDP、ICMP等は、IPSecが動作しているのか否かを意識することなく自身が動作することが可能となる。尚、TCP:Transport Control Protocol。UDP:User Datagram Protocol。ICMP:Internet Control Message Protocol。
【0008】
また、IPSecは、IPv4(Internet Protocol Version 4)及びIPv6(Internet Protocol Version 6)の両方において仕様が定義されている。IPSecを使用するにあたって、どのようなパケットにどのような処理を施すのかを定義したものをセキュリティポリシーと呼ぶ。セキュリティポリシーは、IPSecを適用するパケットを、アドレス、上位プトロコル、ポートの観点で定義し、それらに対してどのような認証方式と暗号方式を適用するのかを定義するルールである。
【0009】
セキュリティポリシーの集合をセキュリティポリシーデータベース(SPD)と呼ぶ。IPSecの実行モジュールは、SPDを参照することにより、どのようなパケットにどのようなIPSec処理を実行すべきであるかを判断することが可能となる。このようなIPSecが動作する環境ではパケットが暗号化されているため、その通信路はセキュアな状態となる。従って、第三者がネットワーク上のパケットを盗聴したとしても、パケットの暗号化によりデータの機密性は保持される。
【0010】
このような暗号化されたパケットを解析するためには、パケット取得側が予めパケットの暗号化及び復号化に必要な情報を有しており、取得した暗号化パケットに対して上記情報を基に復号化を施す。これにより、データをキャプチャするといった手法が一般的である。
【0011】
上記の手法に関する例としては次の技術が提案されている(例えば、特許文献1参照)。特許文献1記載の提案では、ネットワーク上を流れるKVM関連パケットを採取し、それが暗号化されていた場合には、予め取得していた情報を基に復号化して情報を記録する。これにより、通信路は暗号化されたセキュアな状態が保たれると共に、復号化後のデータをキャプチャすることができる。
【特許文献1】特開2006−277518号公報
【発明の開示】
【発明が解決しようとする課題】
【0012】
しかしながら、上記IPSecを導入した環境でのパケットキャプチャリングでは、ネットワークフレームのデータ全てをキャプチャしたい場合に問題がある。パケットの取得機能が備わったネットワーク通信機器がIPSecで通信を行う場合、ネットワーク通信機器で受信したパケットは、IP層よりも上位の階層のデータがIPSecにより暗号化された状態である。この暗号化部分は、IPスタックの内部で動作するIPSecモジュールにより復号化される。
【0013】
これに対し、一般的なパケットキャプチャリングは、ネットワークカードドライバレベルで受信パケットのデータを取得する方法が一般的である。ネットワークカードドライバから受信パケットのデータを取得することにより、受信パケットのデータをデータリンク層から取りこぼすことなく取得することが可能となる。従って、受信パケットの全てのデータを取得することが求められるパケット取得機能においては、ネットワークカードドライバレベルでのデータ取得が必須とされる。
【0014】
しかし、ネットワークカードドライバはIPスタックよりも低位に位置しているため、ネットワークカードドライバから取得したデータはIPSecにより暗号化されている状態となっている。即ち、受信パケットを取得したとしてもIP層よりも上位の階層のデータが暗号化されており、パケット解析に有益な情報が得られない結果となっていた。これは、特許文献1記載の技術のように、取得及び解析したいプロトコルがKVMのようにIPよりも上位のプロトコルでは発生しない問題である。解析対象がIPよりも上位であるなら、IPSecにより暗号化データを復号化した後の、生データを取得すればよいからである。
【0015】
しかし、ネットワーク通信機器における障害の解析を目的とするパケット取得では、ネットワークフレームのデータ全てを取得することが求められる。そのため、復号化する前のネットワークカードドライバレベルでデータを取得する必要があり、取得したデータが暗号化されているという問題があった。従って、従来はデータ解析という点で問題があった。
【0016】
本発明の目的は、暗号化されたパケットのデータを復号化された状態で保存することを可能とし、データ解析の効率化を可能とした情報処理装置、制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0017】
上述の目的を達成するために、本発明は、データをネットワークから受信する受信手段と、前記受信手段によって受信したデータを保存する保存手段と、前記受信手段によって受信したデータのうち、暗号化されたデータを復号化する復号化手段と、前記復号化手段によって復号化されたデータに対応する暗号化されたデータを、前記保存手段によって保存されたデータの中から検索する検索手段と、前記復号化手段によって復号化されたデータに基づいて、前記検索手段によって検索されたデータを更新する更新手段と、を有することを特徴とする。
【発明の効果】
【0018】
本発明によれば、復号化されたデータに対応する暗号化されたデータを、保存されたデータの中から検索し、検索されたデータを、復号化されたデータに基づいて更新する。これにより、ネットワーク通信で用いる通信規約の通信路を暗号化する暗号化技術により暗号化されたパケットのデータを復号化された状態で保存することが可能となり、データ解析の効率化が可能となる。
【発明を実施するための最良の形態】
【0019】
以下、本発明の実施の形態を図面に基づいて説明する。
【0020】
[第1の実施の形態]
図1は、本発明の第1の実施の形態に係るネットワークシステムの構成例を示す図である。
【0021】
図1において、ネットワークシステムは、情報処理装置としてのMFP(Multi Function Peripheral)101、パーソナルコンピュータ(以下PC)102、メールサーバ103を備えている。本実施の形態では、PC102がIPSecを適用した印刷ジョブを構成するIPSecパケットをMFP101に送信し、MFP101が受信したIPSecパケットをパケットデータとして保存する処理を実現する構成及び制御について説明する。IPSec(IP Security)は、IPの通信路を暗号化するためのセキュリティ機能を付加するプロトコルに関する技術(規約)である。
【0022】
LAN104は、ユーザ環境のネットワークであり、Ethernet(登録商標)として構成されているものとする。LAN104には、ネットワークインタフェイスを有するノードとしてMFP101、PC102、メールサーバ103が接続されている。これらのノードは、TCP/IP(Transmission Control Protocol/Internet Protocol)に基づいて互いに通信可能である。
【0023】
MFP101は、原稿読み取りに基づく画像を印刷出力する複写機能、画像を印刷出力する印刷機能、ネットワーク通信機能を有する複合機である。MFP101は、PC102から送信されるIPsecを適用した印刷ジョブを構成するIPSecパケットを受信して印刷処理を行う。MFP101のハードウェアの詳細構成については図2において後述する。
【0024】
PC102は、一般的なパーソナルコンピュータであり、ハードウェアの構成要素としてCPU、RAM、ROM、HDDを備える。更に、PC102は、CD−ROMドライブ、NIC(Network Interface Card)、USB(Universal Serial Bus)ホストインタフェイス、バスを備える。CPUは、PC各部を制御する中央演算装置である。RAM、ROM、HDDは、記憶装置である。CD−ROMドライブは、外部記憶装置である。NIC、USBは、外部インタフェイスである。バスは、CPUがこれらの構成要素や周辺機器を制御するための伝送路である。PC102に接続される周辺機器としては、マウス、ディスプレイ、キーボード等が存在する。
【0025】
PC102に導入されている主なソフトウェアとしては、OS(Operating Software)、ワードプロセッサソフトや表計算ソフトといったオフィスソフトウェアがある。OSには、その一機能として印刷データをMFP101やプリンタ(不図示)にLAN104を経由して送信するためのポートモニタが備わっている。また、メールサーバ103との間で電子メールの送受信を行うメーラも導入されている。更に、OSには、これらの通信に対してIPSecによる暗号化を施すIPSecモジュールが組み込まれている。
【0026】
メールサーバ103は、SMTP(Simple Mail Transfer Protocol)や、POP3(Post Office Protocol 3)を用いて電子メールの送受信を司るサーバである。メールサーバ103には、各ノード(MFP101、PC102)がメールサーバ103を経由して電子メールを送信することが可能な電子メールアカウントが設定されている。また、メールサーバ103は、送受信パケットをIPSecにより暗号化するIPSecモジュール(図3参照)がOSに組み込まれている。これにより、メールサーバ103は、MFP101やPC102とIPSecによる通信が可能である。
【0027】
図2は、情報処理装置としてのMFP101のコントローラユニット2000の主要部の構成を示すブロック図である。
【0028】
図2において、コントローラユニット2000は、CPU2001、RAM2002、ROM2003、HDD2004、操作部I/F2006、ネットワークインタフェイス(以下I/F)2010、モデム2050を備える。更に、コントローラユニット2000は、デバイスI/F2020、画像回転部2030、画像圧縮部2040、ラスタイメージプロセッサ2060、スキャナ画像処理部2080、プリンタ画像処理部2090を備える。
【0029】
コントローラユニット2000は、画像入力デバイスであるスキャナ2070で原稿から読み取られた画像データを、画像出力デバイスであるプリンタ2095により印刷出力する複写機能を実現するための制御を行う。また、コントローラユニット2000は、LAN104に接続することにより、画像情報やデバイス情報の入出力を行うための制御を行う。
【0030】
CPU2001は、ROM2003に格納されているブートプログラムによりオペレーションシステム(OS)を立ち上げる。CPU2001は、OS上でHDD2004に格納されているアプリケーションプログラムを実行することにより各種処理を実行する。また、CPU2001は、後述の各フローチャートに示す処理を実行する。RAM2002は、CPU2001の作業領域、画像データを一時記憶するための画像メモリ領域を提供する。HDD2004は、上記のアプリケーションプログラム、画像データを格納する。
【0031】
操作部I/F2006は、タッチパネルを有する操作部2012とのインタフェイスを司るものであり、操作部2012に対して表示する画像データを出力する。また、操作部I/F2006は、ユーザにより操作部2012から入力された情報をCPU2001に送出する。ネットワークI/F2010は、LAN104を介してLAN104上の各装置との間で情報の入出力を行う。モデム2050は、WAN1007を介して情報の入出力を行う。
【0032】
イメージバスI/F2005は、システムバス2007と画像データを高速で転送する画像バス2008とを接続し、データ構造を変換するためのバスブリッジである。画像バス2008は、PCI(Peripheral Component Interconnect)バスまたはIEEE1394から構成される。ラスタイメージプロセッサ(以下RIP)2060は、PDLコードをビットマップイメージに展開する。デバイスI/F2020には、スキャナ2070及びプリンタ2095が接続される。デバイスI/F2020は、画像データの同期系/非同期系の変換を行う。
【0033】
スキャナ画像処理部2080は、入力画像データに対して補正、加工、編集を行う。プリンタ画像処理部2090は、プリント出力画像データに対して補正、解像度変換を行う。画像回転部2030は、画像データの回転を行う。画像圧縮部2040は、多値画像データをJPEGデータに圧縮し、2値画像データをJBIG、MMR、MH等のデータに圧縮すると共に、その伸張処理を行う。尚、JPEG:Joint Photographic Experts Group。JBIG:Joint Bi-level Image Experts Group。MMR:Modified Modified READ。MH:Modified Huffman。
【0034】
図3は、MFP101のネットワークパケット処理系の構成を示すブロック図である。尚、図3に示す構成は、本発明の受信手段、保存手段、復号化手段、検索手段、更新手段、ハッシュ値を計算する手段を実現するための一例である。
【0035】
図3において、本実施の形態の主要部分に関するソフトウェア構成を示している。MFP101は、Linux等の汎用OS(Operation System)を備える。即ち、MFP101は、アプリケーションプログラム(以下アプリケーションと略称)301、ソケットI/F302、ネットワークスタック303、ネットワークデバイスドライバ304を備える。更に、MFP101は、パケット取得アプリケーション305、IPSecモジュール306、SPD307、パケット取得サブアプリケーション308、パケットデータ309を備える。
【0036】
アプリケーション301は、MFP101上で動作するネットワークアプリケーションの集合である。アプリケーション301に含まれるネットワークアプリケーションの詳細は図4において後述する。ソケットI/F302は、OSにより提供されるソケットI/Fプログラムである。アプリケーション301に含まれるネットワークアプリケーションが通信を行う場合、ソケットI/F302を呼び出すことにより、データの送信や受信といった処理が可能になる。
【0037】
ソケットI/F302は、ネットワークアプリケーションが通信を行う際に必ずしも必要なプログラムではないが、OSの種類によらず汎用的なプログラム命令と処理フローを用いることができるため、アプリケーションの開発工数を削減することができる。そのため、ネットワークアプリケーションは、ソケットI/F302を呼び出してデータの送受信を行うことが一般的である。ネットワークスタック303は、プロトコルスタック群である。ネットワークデバイスドライバ304は、ネットワークI/F2010のネットワークデバイスドライバである。
【0038】
パケット取得アプリケーション305は、ネットワークI/F2010がネットワークを介して送受信するパケットを取得し、パケットデータをパケットデータ309に記録するアプリケーションである。パケット取得アプリケーション305は、ネットワークデバイスドライバ304からデータ取得を行うことにより、ネットワークI/F2010が受信する全てのパケットと、ネットワークI/F2010が送信する全てのパケットを取得する。
【0039】
IPSecモジュール306は、送信パケット及び受信パケットに対してIPSec処理(暗号化や復号化などの処理)を施すモジュールであり、カーネル(OSの機能のうち基本的な部分)の一部として動作している。IPSecモジュール306は、IPv4及びIPv6のプロトコルに対してIPSecを適用する。SPD307は、IPSecモジュール306により使用され、IPsecを適用するパケットに対してどのような認証方式と暗号方式を適用するのかを定義するためのセキュリティポリシーの集合からなるデータベースである。
【0040】
パケット取得サブアプリケーション308は、IPSecよりも上位層でデータの取得を行うプログラムである。パケット取得サブアプリケーション308は、取得したデータをパケットデータ309に書き込む。また、パケット取得サブアプリケーション308は、IP層のパケットデータの内容とSPD307に保持されているセキュリティポリシーの内容とを比較することで、IP層のパケットデータがIPSec適用パケットデータであるか否かを判断する。パケットデータ309は、パケット取得アプリケーション305やパケット取得サブアプリケーション308により取得されたパケットデータを保存する領域である。
【0041】
アプリケーション301、パケット取得アプリケーション305、パケット取得サブアプリケーション308は、アプリケーションスペースで動作している。ソケットI/F302、ネットワークスタック303、ネットワークデバイスドライバ304、IPSecモジュール306は、カーネルスペースで動作している。
【0042】
図4は、MFP101のアプリケーション301に含まれるネットワークアプリケーションの構成を示すブロック図である。
【0043】
図4において、MFP101のアプリケーション301は、LPD401、PDL402、SMTP403、データ送信アプリケーション404を含む。LPD401は、LPD(Line Printer Daemon)プロトコルを使用してネットワーク経由で印刷ジョブを受信するサーバプログラムである。PC102がLPR(Line Printer Daemon Protocol)を使用して印刷ジョブをMFP101に送信すると、LPD401が印刷ジョブのデータを受信する。LPD401が受信した印刷ジョブデータは、PDL402に転送される。
【0044】
PDL402は、印刷ジョブの展開を行うプログラムである。印刷ジョブデータは、PDL(Page Description Language)と呼ばれる記述言語で記載される。この記述言語には、印刷ジョブデータの他に印刷に必要な情報が付加されている。例えば用紙のサイズや印刷部数といった情報がそれに当てはまる。PDL402は、PDLで記載された印刷ジョブデータを展開し、印刷ジョブデータをビデオ画像に変換し、指定された印刷属性に従ってビデオデータを作成する。作成されたビデオデータは、プリンタ2095に転送され印刷処理が行われる。
【0045】
データ送信アプリケーション404は、スキャナ2070により原稿からスキャンされた画像データをLAN104を通じてメールサーバ103に送信する機能である。スキャンされた画像は、JPEGやPDF(Portable Document Format)といった画像フォーマットでファイル化される。データ送信アプリケーション404は、そのファイルをSMTP403を通じてメールサーバ103に転送する。SMTP403は、SMTPプロトコルを用いてメールサーバ103に電子メールの送信を行うネットワークアプリケーションである。本実施の形態では、メールサーバ103に電子メールを送信する設定が予めなされているものとする。
【0046】
本実施の形態は以下の特徴を有する。
【0047】
IPSecモジュール306は、ネットワーク通信に対してIPSecを適用する。パケット取得アプリケーション305は、データリンク層でパケットを取得してパケットデータ309に保存する。また、パケット取得アプリケーション305は、IPSecモジュール306によりIPSecが適用される以前のIP層パケットデータを取得する。
【0048】
パケット取得サブアプリケーション308は、IP層パケットデータがIPSec適用パケットである場合、暗号部を復号したパケットデータに基づいて、パケットデータ309に保存されているパケットデータを更新する。即ち、パケットデータ309に保存されているパケットデータの暗号化されている部分を、当該部分を復号したパケットデータに上書きする。
【0049】
また、暗号化されたデータは、当該データの一部が暗号化されており、保存された暗号化されたデータの中の暗号化されている部分を、復号化されたデータで上書きする。また、受信したデータに基づいてハッシュ値を計算する。また、復号化されたデータに基づいてハッシュ値を計算する。そして、計算されたハッシュ値を比較することによってデータを検索する。また、暗号化されたデータは、ネットワーク層よりも上位の階層のデータが暗号化されており、ネットワーク層以下の階層のデータが暗号化されていないデータである。ハッシュ値は、ネットワーク層以下の階層のデータに基づいて計算される。
【0050】
次に、上記構成を有する本実施の形態のネットワークシステムのMFP101の動作について図5〜図10を参照しながら説明する。
【0051】
図5は、MFP101のパケット受信時の処理を示すフローチャートである。
【0052】
図5において、PC102がIPSecを適用した印刷ジョブを構成する1つのパケットをMFP101に対して送信し、MFP101がパケットを受信した際のMFP101の内部処理を示している。尚、MFP101とPC102との間では、図5の内部処理を実行する前に、IPSec通信を行う上での前提処理(例えばIKE(Internet Key Exchange)を用いた互いの鍵交換)が行われているものとする。
【0053】
MFP101は、ネットワークを経由したパケットの受信を待機する受信待ち状態となっている。MFP101のパケット取得アプリケーション305は、パケット受信の有無を監視している(ステップS501)。ネットワークI/F2010により受信したパケットを確認した場合には、ステップS502に移行する。パケット取得アプリケーション305は、ネットワークI/F2010から受信したパケットデータを取得し、パケットデータ309に保存する(ステップS502)。
【0054】
上記ステップS502におけるパケット取得アプリケーション305によるパケットデータ保存処理の詳細を図6に基づき説明する。パケット取得アプリケーション305は、受信(取得)したパケットがIPSec適用パケットであるか否かを判断する(ステップS601)。パケット取得アプリケーション305は、受信したパケットデータのデータリンク層に含まれる次ヘッダ情報を参照することで、上記の判断を行う。
【0055】
データリンク層に含まれる次ヘッダ情報がIP(IPv4)またはIPv6であった場合、パケット取得アプリケーション305は、それらのヘッダに含まれる次ヘッダ情報を参照する。その次ヘッダ情報がIPSecを示すIDであった場合には、パケット取得アプリケーション305は、受信したパケットがIPSec適用パケットであると判断しステップS602に移行する。
【0056】
ステップS601で受信パケットがIPSec適用パケットであると判断した場合、パケット取得アプリケーション305は、受信したパケットデータのIPヘッダ部のデータに対するハッシュ値を計算する(ステップS602)。ここでハッシュ値を算出する理由は、後述の図5のステップS507でIPSecの復号後のデータをパケットデータ309に上書きする際に、保存済みの複数のパケットデータの内、どのパケットデータに対し上書き処理を施すのかを識別するためである。
【0057】
後述の図5のステップS507でも、同様にIPヘッダ部のデータに対してハッシュ値を算出することにより、パケットデータ309に保存されたパケットデータの中で、ハッシュ値が同値であるパケットが復号される前のパケットであると判断することができる。ここでハッシュ値を使用する理由は、IPヘッダのデータそのものを使用して比較する方法では比較データ数が大きくなり処理負荷が増大するため、データを圧縮する必要があるからである。
【0058】
次に、パケット取得アプリケーション305は、パケットデータ・パケットの受信時間情報・IDに加えてハッシュ値をパケットデータ309に記録する(ステップS603)。パケットデータ309はHDD2004に存在しているファイル群である。パケット取得アプリケーション305は、パケットデータをファイルに記載していく。ファイルが特定のファイルサイズより大きくなった場合には、パケット取得アプリケーション305は新規にファイルを生成する。
【0059】
図7は、IPSecが適用されたパケットデータをパケット取得アプリケーション305がパケットデータ309に記録した内容を可視化した一例である。データ部701は、ハッシュ情報である。本実施の形態では、ハッシュ情報は17バイトのデータであり、最上位バイトがハッシュの有無を示す情報である。
【0060】
ハッシュ情報の最上位バイトの値が1である場合には、2バイト目〜17バイトまでのハッシュ値領域に有効な値が含まれていることを示す。ハッシュ情報の最上位バイトの値が0である場合には、ハッシュ値領域に値は含まれず0で埋められていることを示す。ハッシュ値領域に有効な値が含まれるのは、受信したパケットがIPSecを適用したパケットの場合であり、その判断は上記ステップS601で行われる。
【0061】
データ部702は、時間情報である。MFP101がパケットを受信した時間を図示の例(2007年6月28日9時21分48秒)のように記録している。データ部703〜データ部705は、パケットデータ本体である。パケット取得アプリケーション305は、受信したパケットデータ全てをパケットデータ309に書き込む。そのため、パケットデータ309に書き込まれるデータは、データリンク層データ部703、IP層データ部704、暗号化データ部705により構成される。本実施の形態では、暗号化データ部705はESP(Encapsulating Security Payload)によりパックされているものとする。
【0062】
尚、図7ではデータ構成を可視化するためにパケットを翻訳した形で記載しているが、パケット取得アプリケーション305がパケットデータ309に書き込む際には、データ部701〜暗号化データ部705はバイナリデータで書き込む。
【0063】
ステップS601で受信パケットがIPSec適用パケット以外のパケットであると判断した場合、パケット取得アプリケーション305は、パケットデータ・パケットの受信時間情報・IDをパケットデータ309に記録する(ステップS604)。その場合、ハッシュ情報の最上位バイトの値は0となる。
【0064】
図5に戻り、次にステップS503に移行し、IPSecモジュール306によるIPSecパケットの判別処理を行う。ステップS503では、ステップS501で受信したパケットのデータはネットワークスタック303に渡される。ネットワークスタック303に渡されるデータはパケットデータのIP層以降のデータである。つまり、データリンク層のデータはネットワークスタック303には渡されない。
【0065】
IPSecモジュール306は、上記パケットデータを参照し、受信パケットがIPSec適用パケットであるか否かを、パケットデータに含まれる次ヘッダ情報を基に判断する(ステップS503)。受信パケットがIPSec適用パケットであると判断した場合には、IPSecモジュール306は、パケットに含まれる暗号化データ部(暗号部)の復号を行う(ステップS504)。更に、IPSecモジュール306は、復号化されたパケットデータをネットワークスタック303に戻し、ステップS505に移行する。受信パケットがIPSec適用パケットではないと判断した場合には、IPSecモジュール306は、何もせずにパケットデータをネットワークスタック303に戻し、ステップS505に移行する。
【0066】
次に、パケット取得サブアプリケーション308は、ネットワークスタック303に戻されたパケットデータに対して、IPSec適用パケットであったか否かの判別処理を行う。パケット取得サブアプリケーション308は、SPD307に保持されているIPSecのセキュリティポリシーの内容とパケットデータの内容とを比較することで、パケットデータがIPSec適用パケットであったか否かを判断する(ステップS505)。
【0067】
図8は、SPDの内容を例示したものである。SPDとは、どのような内容のパケットに対してどのようなIPSecのセキュリティを適用するかというポリシーを設定したデータベースである。図8の例では3種類のポリシーが設定されていることを表している。それぞれのポリシーに対して要素801〜要素806が設定されており、要素の合致するパケットに対してIPSecが適用される。
【0068】
要素801は、送信元IPアドレス(From IP)である。要素802は、送信先IPアドレス(To IP)である。要素801及び要素802は、IPアドレス又はIPv6アドレスが記載される。要素803は、送信元ポート(From ポート)である。要素804は送信先ポート(To ポート)である。要素805は、プロトコルである。要素806は、暗号であり、要素801〜要素805に合致するパケットに対してどのような暗号を適用するのか示す情報である。
【0069】
図5に戻り、パケット取得サブアプリケーション308は、受信パケットデータの内容がSPD307に登録されている各セキュリティポリシーに合致するか否かを調査する(ステップS506)。受信パケットデータの内容が任意のセキュリティポリシーに合致していると判断した場合には、パケット取得サブアプリケーション308は、復号後のパケットデータをパケットデータ309に上書きする処理を行う(ステップS507)。受信パケットデータの内容が任意のセキュリティポリシーに合致していないと判断した場合には、パケット取得サブアプリケーション308は、パケットデータをネットワークスタック303に返し、上位のソケットI/F302へ渡す。
【0070】
上記ステップS507の詳細な処理を図9に基づき説明する。パケット取得サブアプリケーション308は、受信パケットデータのIPヘッダのデータに対してハッシュ値を計算する処理を行う(ステップS901)。ハッシュ値の計算は、図6のステップS602と同様の方法で行う。
【0071】
次に、パケット取得サブアプリケーション308は、パケットスニファによりパケットデータ309に保存されている各パケットデータのハッシュ値と、ステップS901で算出したハッシュ値とを比較する。そして、パケット取得サブアプリケーション308は、比較に基づき、同一のハッシュ値を持つパケットデータを検索する(ステップS902)。
【0072】
パケットデータ309から同一のハッシュ値を持つパケットデータが検索された場合、パケット取得サブアプリケーション308は次の処理を行う。パケット取得サブアプリケーション308は、受信パケットデータのIP層より上位のデータ部を、パケットデータ309に保持されている対応するパケットデータのIP層より上位の部分に上書きする処理を行う(ステップS903)。尚、パケットの受信時間情報は上書きしない。
【0073】
図10は、パケット取得サブアプリケーション308により上書きされた後のパケットデータ309のイメージを示す一例である。データ部1001はTCPデータである。パケット取得アプリケーション305がパケットデータ309にパケットデータを書き込んだ時点で、データ部1001はIPSecにより暗号化されていたが、パケット取得サブアプリケーション308によりデータ部1001は復号化されている。
【0074】
以上説明したように本実施の形態によれば、IPSecにより暗号化されたパケットの全データを復号化された状態で保存することが可能となり、データ解析の効率化が可能となる。
【0075】
尚、本実施の形態では、IPヘッダのデータに対するハッシュ値を計算し、その値を比較することによって、データを上書きするパケットデータを特定していた。しかし、パケットデータの特定方法は、これに限定されるものではなく、様々な方法が考えられる。
【0076】
例えば、IPヘッダのデータのハッシュ値を計算するのではなく、IPヘッダのデータそのものを比較してもよい。この場合、比較のためのデータ量は増加するが、ハッシュ値を計算する処理の負荷は減らすことができる。
【0077】
または、パケットデータを受信した時間の情報を比較してもよい。または、ハッシュ値を計算する場合であっても、IPヘッダのデータのみに対するハッシュ値ではなく、Ethernet(登録商標)ヘッダからIPヘッダまでのデータに対するハッシュ値を計算してもよい。この場合、処理の負荷は増加するが、より多くのデータに対するハッシュ値を計算することになるため、比較結果の信頼性はより上がる。尚、この場合には、デバイスドライバ304は、Ethernet(登録商標)ヘッダの処理を行った際に、そのデータを保持しておき、パケット取得サブアプリケーション308は、Ethernet(登録商標)ヘッダのデータを改めて取得し直す必要がある。
【0078】
[第2の実施の形態]
本発明の第2の実施の形態は、上記第1の実施の形態に対して、下記で説明する点において相違する。本実施の形態のその他の要素は、上記第1の実施の形態(図1〜図2)の対応するものと同一なので説明を省略する。
【0079】
本実施の形態では、上記第1の実施の形態の異なる実装方法として、パケット取得サブアプリケーションがIPSecモジュールのサブセットモジュールの構成をとる場合について説明する。
【0080】
上記第1の実施の形態では、IPSecモジュール306が独立モジュールとしてOSのカーネルスペースで動作し、パケット取得サブアプリケーション308についても独立モジュールとしてアプリケーションスペースで動作する構成について説明した。一般的には、IPSecモジュールはOSの一部として動作する。また、パケット取得サブアプリケーションはユーザアプリケーションとしてアプリケーションスペースで動作する。そのため、第1の実施の形態で示したような、IPSecモジュールとパケット取得サブアプリケーションとが互いに独立した構成が一般的である。
【0081】
しかしながら、所定のシステムに組み込まれる組み込み機器などではIPSecモジュールやパケット取得アプリケーションを全て自己開発する場合もある。そのような場合には、本実施の形態で示すような、IPSecモジュールとパケット取得サブアプリケーションとが同一モジュールとして動作する構成のほうが、処理パフォーマンスやプログラムサイズの面で有利となることがある。
【0082】
図11は、MFP101のネットワークパケット処理系の構成を示すブロック図である。
【0083】
図11において、MFP101は、Linux等の汎用OSを備える。即ち、MFP101は、アプリケーション301、ソケットI/F302、ネットワークスタック303、ネットワークデバイスドライバ304、パケット取得アプリケーション305を備える。更に、MFP101は、SPD307、パケットデータ309、パケット取得サブアプリケーション1102を有するIPSecモジュール1101を備える。
【0084】
アプリケーション301は、MFP101上で動作するネットワークアプリケーションの集合である。第1の実施の形態と異なる点は、IPSecモジュール1101とパケット取得サブアプリケーション1102との関係である。パケット取得サブアプリケーション1102はIPSecモジュール1101の一部として動作しており、カーネルスペースで動作している。
【0085】
パケット受信時の処理は第1の実施の形態で示した図5のフローチャートと大きな差異はないが、詳細な処理の違いがある。ステップS505〜ステップS507の処理はパケット取得サブアプリケーション1102で行われる処理であるが、本実施の形態ではパケット取得サブアプリケーション1102はIPSecモジュール1101の内部モジュールとして動作している。これにより、ステップS504でIPSecモジュール1101が復号化した後のパケットデータをネットワークスタック303に戻す処理が不要となるため、処理速度の向上を図ることが可能となる。
【0086】
[第3の実施の形態]
本発明の第3の実施の形態は、上記第1の実施の形態に対して、下記で説明する点において相違する。本実施の形態のその他の要素は、上記第1の実施の形態(図1〜図3)の対応するものと同一なので説明を省略する。
【0087】
本実施の形態では、上記第1の実施の形態の構成において、MFP101からネットワーク経由でパケットをPC102に送信する場合について説明する。
【0088】
MFP101がPC102にパケットデータを送信する場合、アプリケーション301はソケットI/F302を介してパケットデータを送信する。ソケットI/F302はネットワークスタック303に送信パケットデータを渡す。パケット取得サブアプリケーション308はネットワークスタック303にフッキングしているため、ネットワークスタック303に渡された送信パケットデータを取得することができる。
【0089】
図12は、MFP101のパケット送信時の処理を示すフローチャートである。
【0090】
図12において、パケット取得サブアプリケーション308は、ソケットI/F302からネットワークスタック303に送信パケットデータが渡されたか否かを監視している(ステップS1201)。ソケットI/F302からネットワークスタック303に送信パケットデータが渡された場合には、パケット取得サブアプリケーション308は、ネットワークスタック303から送信パケットデータを取得する。
【0091】
次に、パケット取得サブアプリケーション308は、SPD307に保持されているIPSecのセキュリティポリシーの内容と、送信パケットデータの内容とを比較する(ステップS1202)。更に、パケット取得サブアプリケーション308は、送信パケットデータがIPSec適用パケット(暗号対象パケット)であるか否かを判断する(ステップS1203)。パケット取得サブアプリケーション308がネットワークスタック303から取得した送信パケットデータは、IP層データまでが付加されたデータ形式であるため、SPD307の保持内容との比較が可能である。
【0092】
送信パケットデータがIPSec適用パケットであると判断した場合には、ステップS1204に移行する。パケット取得サブアプリケーション308は、送信パケットデータのIP層のハッシュ値と送信パケットデータを仮に記憶し、ステップS1205に移行する(ステップS1204)。即ち、パケット取得サブアプリケーション308は、送信パケットデータのIP層データからハッシュ値を算出し、そのハッシュ値及び送信パケットデータを一時記憶領域に記憶する。送信パケットデータがIPSec適用パケットではないと判断した場合には、直接ステップS1205に移行する。
【0093】
一時記憶領域とは、RAM2002の記憶領域又はHDD2004の記憶領域である。取得したパケットデータが送信パケットデータであった場合、一時記憶領域に記憶する。パケット取得サブアプリケーション308は、取得したパケットデータの送信元IPアドレスが自装置(MFP101)のIPアドレスであった場合のみ、ステップS1204の処理を行う。
【0094】
次に、IPSecモジュール306によるIPSecパケットの判別処理を行う。即ち、IPSecモジュール306は、ネットワークスタック303が受け取ったパケットデータを参照し、パケットがIPSec適用パケットであるか否かを、パケットデータに含まれる次ヘッダ情報を基に判断する(ステップS1205)。パケットがIPSec適用パケットであると判断した場合には、IPSecモジュール306は、パケットに含まれるIP層よりも上位の層のデータの暗号化を行う(IPSecを適用する)(ステップS1206)。更に、IPSecモジュール306は、暗号化したパケットデータをネットワークスタック303に戻す。
【0095】
パケットがIPSec適用パケットではないと判断した場合には、IPSecモジュール306は、何もせずにパケットデータをネットワークスタック303に戻す。ネットワークスタック303は、PC102に対する送信パケットデータをネットワークデバイスドライバ304に渡す。ネットワークデバイスドライバ304は、受け取った送信パケットデータにデータリンク層のデータを付加する。
【0096】
次に、パケット取得アプリケーション305は、ネットワークデバイスドライバ304から送信パケットデータを取得する(ステップS1207)。更に、パケット取得アプリケーション305は、取得した送信パケットデータのIP層に対するハッシュ値を計算し、パケットデータ309にデータを書き込む。書き込まれるデータは、パケットの送信時間情報、ハッシュ値、パケットデータ本体から構成される。
【0097】
次に、パケット取得サブアプリケーション308は、パケットデータ309に記録されているパケットデータの中から、ステップS1204で仮記憶したハッシュ値に対応するパケットデータを参照し、仮記憶したデータに上書きする(ステップS1208)。この処理により、ステップS1206で暗号化が施され且つステップS1207でパケットデータ309に書き込まれたIPSec適用データに対して、暗号化が施される前のデータを上書きする。これにより、非暗号化データをパケットデータ309に記録することが可能である。
【0098】
[他の実施の形態]
上記各実施の形態では、図1に示すネットワークシステムを例に挙げたが、ネットワークシステムを構成する装置(MFP、PC、メールサーバ)の設置数や種類は図示のものに限定されるものではない。
【0099】
また、上記各実施の形態では、本発明の情報処理装置の一例としてMFPとした場合を説明したが、これに限定されるものではない。本発明の情報処理装置は、MFP以外の装置、例えば、プリンタやスキャナ、ファクシミリやコピー機、パーソナルコンピュータや携帯電話であっても構わない。
【0100】
また、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。
【0101】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0102】
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROM等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【0103】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0104】
更に、前述した実施形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行う場合である。
【図面の簡単な説明】
【0105】
【図1】本発明の第1の実施の形態に係るネットワークシステムの構成例を示す図である。
【図2】情報処理装置としてのMFPのコントローラユニットの主要部の構成を示すブロック図である。
【図3】MFPのネットワークパケット処理系の構成を示すブロック図である。
【図4】MFPのアプリケーションに含まれるネットワークアプリケーションの構成を示すブロック図である。
【図5】MFPのパケット受信時の処理を示すフローチャートである。
【図6】MFPのパケット取得アプリケーションのパケットデータ保存処理を示すフローチャートである。
【図7】暗号化されたパケット構造を示す図である。
【図8】SPDの構成を示す図である。
【図9】MFPのパケット取得サブアプリケーションの処理を示すフローチャートである。
【図10】復号後のパケット構造を示す図である。
【図11】本発明の第2の実施の形態に係るMFPのネットワークパケット処理系の構成を示すブロック図である。
【図12】本発明の第2の実施の形態に係るMFPのパケット送信時の処理を示すフローチャートである。
【符号の説明】
【0106】
101 MFP
102 PC
103 メールサーバ
104 LAN
301 アプリケーション
302 ソケットI/F
303 ネットワークスタック
304 ネットワークデバイスドライバ
305 パケット取得アプリケーション
306 IPSecモジュール
308 パケット取得サブアプリケーション
309 パケットデータ
1101 IPSecモジュール
1102 パケット取得サブアプリケーション
【技術分野】
【0001】
本発明は、暗号化データを含むパケットデータに関する処理を行う情報処理装置、制御方法、及びプログラムに関する。
【背景技術】
【0002】
従来、ネットワークの通信路に接続されたネットワーク通信機器で障害が発生した場合に、通信路を流れるパケットを採取して障害の原因を調査する手法が存在する。その一般的な方法では、パケットの取得を行う専用機器をHUB等の集線機器に接続することで、LAN(Local Area Network)上を流れるパケットを採取する。
【0003】
採取したパケットから、調査対象となるネットワーク通信機器が送受信しているパケットのデータの内容を解析し、規定外のデータを受信している箇所や、受信パケットに対する応答遅延が発生している箇所を特定する。そして、特定した箇所が障害の原因であるか否かを判別するために、同一のパケットをネットワーク通信機器に送信して障害の再現確認を行ったり、ネットワーク通信機器の通信を司るソースコードの解析を行ったり等の原因調査を行う。
【0004】
近年では、パケットの取得機能が備わったネットワーク通信機器も普及し始めている。これにより、パケットの採取を行うための専用機器を使用しなくてもパケットの取得が可能となる。従来は、スイッチングHUBが導入された環境などにおいては専用機器を接続したとしてもパケットの採取を正しく行うことができなかった。
【0005】
その理由は、スイッチングHUBはネットワークフレームの宛て先アドレス情報を参照し、そのアドレスを持つノードが接続されたHUBポートにのみパケットを転送するため、別のHUBポートにパケット取得装置を接続したとしても取得できないためである。パケット取得機能が備わったネットワーク通信機器においては、パケット通信を行うノード上でパケット取得が可能になるため、そのようなスイッチングHUB環境においてもパケット採取が可能になった。
【0006】
また、近年、インターネットで使われているネットワーク層プロトコルであるIP(Internet Protocol)の通信路を暗号化する技術であるIPSec(IP Security)が普及しつつある。IPSecは、認証、暗号、鍵交換といった各技術の総称であり、プロトコルやヘッダ構造の集合を示す規格である。IPSecにより暗号化されたパケットは、一般的に、IPが位置する階層よりも上位の階層が暗号化される。
【0007】
IPSecの特徴は、IPが位置する階層の上位の階層はIPSecを意識する必要がない点である。つまり、IPより上位に位置するTCP、UDP、ICMP等は、IPSecが動作しているのか否かを意識することなく自身が動作することが可能となる。尚、TCP:Transport Control Protocol。UDP:User Datagram Protocol。ICMP:Internet Control Message Protocol。
【0008】
また、IPSecは、IPv4(Internet Protocol Version 4)及びIPv6(Internet Protocol Version 6)の両方において仕様が定義されている。IPSecを使用するにあたって、どのようなパケットにどのような処理を施すのかを定義したものをセキュリティポリシーと呼ぶ。セキュリティポリシーは、IPSecを適用するパケットを、アドレス、上位プトロコル、ポートの観点で定義し、それらに対してどのような認証方式と暗号方式を適用するのかを定義するルールである。
【0009】
セキュリティポリシーの集合をセキュリティポリシーデータベース(SPD)と呼ぶ。IPSecの実行モジュールは、SPDを参照することにより、どのようなパケットにどのようなIPSec処理を実行すべきであるかを判断することが可能となる。このようなIPSecが動作する環境ではパケットが暗号化されているため、その通信路はセキュアな状態となる。従って、第三者がネットワーク上のパケットを盗聴したとしても、パケットの暗号化によりデータの機密性は保持される。
【0010】
このような暗号化されたパケットを解析するためには、パケット取得側が予めパケットの暗号化及び復号化に必要な情報を有しており、取得した暗号化パケットに対して上記情報を基に復号化を施す。これにより、データをキャプチャするといった手法が一般的である。
【0011】
上記の手法に関する例としては次の技術が提案されている(例えば、特許文献1参照)。特許文献1記載の提案では、ネットワーク上を流れるKVM関連パケットを採取し、それが暗号化されていた場合には、予め取得していた情報を基に復号化して情報を記録する。これにより、通信路は暗号化されたセキュアな状態が保たれると共に、復号化後のデータをキャプチャすることができる。
【特許文献1】特開2006−277518号公報
【発明の開示】
【発明が解決しようとする課題】
【0012】
しかしながら、上記IPSecを導入した環境でのパケットキャプチャリングでは、ネットワークフレームのデータ全てをキャプチャしたい場合に問題がある。パケットの取得機能が備わったネットワーク通信機器がIPSecで通信を行う場合、ネットワーク通信機器で受信したパケットは、IP層よりも上位の階層のデータがIPSecにより暗号化された状態である。この暗号化部分は、IPスタックの内部で動作するIPSecモジュールにより復号化される。
【0013】
これに対し、一般的なパケットキャプチャリングは、ネットワークカードドライバレベルで受信パケットのデータを取得する方法が一般的である。ネットワークカードドライバから受信パケットのデータを取得することにより、受信パケットのデータをデータリンク層から取りこぼすことなく取得することが可能となる。従って、受信パケットの全てのデータを取得することが求められるパケット取得機能においては、ネットワークカードドライバレベルでのデータ取得が必須とされる。
【0014】
しかし、ネットワークカードドライバはIPスタックよりも低位に位置しているため、ネットワークカードドライバから取得したデータはIPSecにより暗号化されている状態となっている。即ち、受信パケットを取得したとしてもIP層よりも上位の階層のデータが暗号化されており、パケット解析に有益な情報が得られない結果となっていた。これは、特許文献1記載の技術のように、取得及び解析したいプロトコルがKVMのようにIPよりも上位のプロトコルでは発生しない問題である。解析対象がIPよりも上位であるなら、IPSecにより暗号化データを復号化した後の、生データを取得すればよいからである。
【0015】
しかし、ネットワーク通信機器における障害の解析を目的とするパケット取得では、ネットワークフレームのデータ全てを取得することが求められる。そのため、復号化する前のネットワークカードドライバレベルでデータを取得する必要があり、取得したデータが暗号化されているという問題があった。従って、従来はデータ解析という点で問題があった。
【0016】
本発明の目的は、暗号化されたパケットのデータを復号化された状態で保存することを可能とし、データ解析の効率化を可能とした情報処理装置、制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0017】
上述の目的を達成するために、本発明は、データをネットワークから受信する受信手段と、前記受信手段によって受信したデータを保存する保存手段と、前記受信手段によって受信したデータのうち、暗号化されたデータを復号化する復号化手段と、前記復号化手段によって復号化されたデータに対応する暗号化されたデータを、前記保存手段によって保存されたデータの中から検索する検索手段と、前記復号化手段によって復号化されたデータに基づいて、前記検索手段によって検索されたデータを更新する更新手段と、を有することを特徴とする。
【発明の効果】
【0018】
本発明によれば、復号化されたデータに対応する暗号化されたデータを、保存されたデータの中から検索し、検索されたデータを、復号化されたデータに基づいて更新する。これにより、ネットワーク通信で用いる通信規約の通信路を暗号化する暗号化技術により暗号化されたパケットのデータを復号化された状態で保存することが可能となり、データ解析の効率化が可能となる。
【発明を実施するための最良の形態】
【0019】
以下、本発明の実施の形態を図面に基づいて説明する。
【0020】
[第1の実施の形態]
図1は、本発明の第1の実施の形態に係るネットワークシステムの構成例を示す図である。
【0021】
図1において、ネットワークシステムは、情報処理装置としてのMFP(Multi Function Peripheral)101、パーソナルコンピュータ(以下PC)102、メールサーバ103を備えている。本実施の形態では、PC102がIPSecを適用した印刷ジョブを構成するIPSecパケットをMFP101に送信し、MFP101が受信したIPSecパケットをパケットデータとして保存する処理を実現する構成及び制御について説明する。IPSec(IP Security)は、IPの通信路を暗号化するためのセキュリティ機能を付加するプロトコルに関する技術(規約)である。
【0022】
LAN104は、ユーザ環境のネットワークであり、Ethernet(登録商標)として構成されているものとする。LAN104には、ネットワークインタフェイスを有するノードとしてMFP101、PC102、メールサーバ103が接続されている。これらのノードは、TCP/IP(Transmission Control Protocol/Internet Protocol)に基づいて互いに通信可能である。
【0023】
MFP101は、原稿読み取りに基づく画像を印刷出力する複写機能、画像を印刷出力する印刷機能、ネットワーク通信機能を有する複合機である。MFP101は、PC102から送信されるIPsecを適用した印刷ジョブを構成するIPSecパケットを受信して印刷処理を行う。MFP101のハードウェアの詳細構成については図2において後述する。
【0024】
PC102は、一般的なパーソナルコンピュータであり、ハードウェアの構成要素としてCPU、RAM、ROM、HDDを備える。更に、PC102は、CD−ROMドライブ、NIC(Network Interface Card)、USB(Universal Serial Bus)ホストインタフェイス、バスを備える。CPUは、PC各部を制御する中央演算装置である。RAM、ROM、HDDは、記憶装置である。CD−ROMドライブは、外部記憶装置である。NIC、USBは、外部インタフェイスである。バスは、CPUがこれらの構成要素や周辺機器を制御するための伝送路である。PC102に接続される周辺機器としては、マウス、ディスプレイ、キーボード等が存在する。
【0025】
PC102に導入されている主なソフトウェアとしては、OS(Operating Software)、ワードプロセッサソフトや表計算ソフトといったオフィスソフトウェアがある。OSには、その一機能として印刷データをMFP101やプリンタ(不図示)にLAN104を経由して送信するためのポートモニタが備わっている。また、メールサーバ103との間で電子メールの送受信を行うメーラも導入されている。更に、OSには、これらの通信に対してIPSecによる暗号化を施すIPSecモジュールが組み込まれている。
【0026】
メールサーバ103は、SMTP(Simple Mail Transfer Protocol)や、POP3(Post Office Protocol 3)を用いて電子メールの送受信を司るサーバである。メールサーバ103には、各ノード(MFP101、PC102)がメールサーバ103を経由して電子メールを送信することが可能な電子メールアカウントが設定されている。また、メールサーバ103は、送受信パケットをIPSecにより暗号化するIPSecモジュール(図3参照)がOSに組み込まれている。これにより、メールサーバ103は、MFP101やPC102とIPSecによる通信が可能である。
【0027】
図2は、情報処理装置としてのMFP101のコントローラユニット2000の主要部の構成を示すブロック図である。
【0028】
図2において、コントローラユニット2000は、CPU2001、RAM2002、ROM2003、HDD2004、操作部I/F2006、ネットワークインタフェイス(以下I/F)2010、モデム2050を備える。更に、コントローラユニット2000は、デバイスI/F2020、画像回転部2030、画像圧縮部2040、ラスタイメージプロセッサ2060、スキャナ画像処理部2080、プリンタ画像処理部2090を備える。
【0029】
コントローラユニット2000は、画像入力デバイスであるスキャナ2070で原稿から読み取られた画像データを、画像出力デバイスであるプリンタ2095により印刷出力する複写機能を実現するための制御を行う。また、コントローラユニット2000は、LAN104に接続することにより、画像情報やデバイス情報の入出力を行うための制御を行う。
【0030】
CPU2001は、ROM2003に格納されているブートプログラムによりオペレーションシステム(OS)を立ち上げる。CPU2001は、OS上でHDD2004に格納されているアプリケーションプログラムを実行することにより各種処理を実行する。また、CPU2001は、後述の各フローチャートに示す処理を実行する。RAM2002は、CPU2001の作業領域、画像データを一時記憶するための画像メモリ領域を提供する。HDD2004は、上記のアプリケーションプログラム、画像データを格納する。
【0031】
操作部I/F2006は、タッチパネルを有する操作部2012とのインタフェイスを司るものであり、操作部2012に対して表示する画像データを出力する。また、操作部I/F2006は、ユーザにより操作部2012から入力された情報をCPU2001に送出する。ネットワークI/F2010は、LAN104を介してLAN104上の各装置との間で情報の入出力を行う。モデム2050は、WAN1007を介して情報の入出力を行う。
【0032】
イメージバスI/F2005は、システムバス2007と画像データを高速で転送する画像バス2008とを接続し、データ構造を変換するためのバスブリッジである。画像バス2008は、PCI(Peripheral Component Interconnect)バスまたはIEEE1394から構成される。ラスタイメージプロセッサ(以下RIP)2060は、PDLコードをビットマップイメージに展開する。デバイスI/F2020には、スキャナ2070及びプリンタ2095が接続される。デバイスI/F2020は、画像データの同期系/非同期系の変換を行う。
【0033】
スキャナ画像処理部2080は、入力画像データに対して補正、加工、編集を行う。プリンタ画像処理部2090は、プリント出力画像データに対して補正、解像度変換を行う。画像回転部2030は、画像データの回転を行う。画像圧縮部2040は、多値画像データをJPEGデータに圧縮し、2値画像データをJBIG、MMR、MH等のデータに圧縮すると共に、その伸張処理を行う。尚、JPEG:Joint Photographic Experts Group。JBIG:Joint Bi-level Image Experts Group。MMR:Modified Modified READ。MH:Modified Huffman。
【0034】
図3は、MFP101のネットワークパケット処理系の構成を示すブロック図である。尚、図3に示す構成は、本発明の受信手段、保存手段、復号化手段、検索手段、更新手段、ハッシュ値を計算する手段を実現するための一例である。
【0035】
図3において、本実施の形態の主要部分に関するソフトウェア構成を示している。MFP101は、Linux等の汎用OS(Operation System)を備える。即ち、MFP101は、アプリケーションプログラム(以下アプリケーションと略称)301、ソケットI/F302、ネットワークスタック303、ネットワークデバイスドライバ304を備える。更に、MFP101は、パケット取得アプリケーション305、IPSecモジュール306、SPD307、パケット取得サブアプリケーション308、パケットデータ309を備える。
【0036】
アプリケーション301は、MFP101上で動作するネットワークアプリケーションの集合である。アプリケーション301に含まれるネットワークアプリケーションの詳細は図4において後述する。ソケットI/F302は、OSにより提供されるソケットI/Fプログラムである。アプリケーション301に含まれるネットワークアプリケーションが通信を行う場合、ソケットI/F302を呼び出すことにより、データの送信や受信といった処理が可能になる。
【0037】
ソケットI/F302は、ネットワークアプリケーションが通信を行う際に必ずしも必要なプログラムではないが、OSの種類によらず汎用的なプログラム命令と処理フローを用いることができるため、アプリケーションの開発工数を削減することができる。そのため、ネットワークアプリケーションは、ソケットI/F302を呼び出してデータの送受信を行うことが一般的である。ネットワークスタック303は、プロトコルスタック群である。ネットワークデバイスドライバ304は、ネットワークI/F2010のネットワークデバイスドライバである。
【0038】
パケット取得アプリケーション305は、ネットワークI/F2010がネットワークを介して送受信するパケットを取得し、パケットデータをパケットデータ309に記録するアプリケーションである。パケット取得アプリケーション305は、ネットワークデバイスドライバ304からデータ取得を行うことにより、ネットワークI/F2010が受信する全てのパケットと、ネットワークI/F2010が送信する全てのパケットを取得する。
【0039】
IPSecモジュール306は、送信パケット及び受信パケットに対してIPSec処理(暗号化や復号化などの処理)を施すモジュールであり、カーネル(OSの機能のうち基本的な部分)の一部として動作している。IPSecモジュール306は、IPv4及びIPv6のプロトコルに対してIPSecを適用する。SPD307は、IPSecモジュール306により使用され、IPsecを適用するパケットに対してどのような認証方式と暗号方式を適用するのかを定義するためのセキュリティポリシーの集合からなるデータベースである。
【0040】
パケット取得サブアプリケーション308は、IPSecよりも上位層でデータの取得を行うプログラムである。パケット取得サブアプリケーション308は、取得したデータをパケットデータ309に書き込む。また、パケット取得サブアプリケーション308は、IP層のパケットデータの内容とSPD307に保持されているセキュリティポリシーの内容とを比較することで、IP層のパケットデータがIPSec適用パケットデータであるか否かを判断する。パケットデータ309は、パケット取得アプリケーション305やパケット取得サブアプリケーション308により取得されたパケットデータを保存する領域である。
【0041】
アプリケーション301、パケット取得アプリケーション305、パケット取得サブアプリケーション308は、アプリケーションスペースで動作している。ソケットI/F302、ネットワークスタック303、ネットワークデバイスドライバ304、IPSecモジュール306は、カーネルスペースで動作している。
【0042】
図4は、MFP101のアプリケーション301に含まれるネットワークアプリケーションの構成を示すブロック図である。
【0043】
図4において、MFP101のアプリケーション301は、LPD401、PDL402、SMTP403、データ送信アプリケーション404を含む。LPD401は、LPD(Line Printer Daemon)プロトコルを使用してネットワーク経由で印刷ジョブを受信するサーバプログラムである。PC102がLPR(Line Printer Daemon Protocol)を使用して印刷ジョブをMFP101に送信すると、LPD401が印刷ジョブのデータを受信する。LPD401が受信した印刷ジョブデータは、PDL402に転送される。
【0044】
PDL402は、印刷ジョブの展開を行うプログラムである。印刷ジョブデータは、PDL(Page Description Language)と呼ばれる記述言語で記載される。この記述言語には、印刷ジョブデータの他に印刷に必要な情報が付加されている。例えば用紙のサイズや印刷部数といった情報がそれに当てはまる。PDL402は、PDLで記載された印刷ジョブデータを展開し、印刷ジョブデータをビデオ画像に変換し、指定された印刷属性に従ってビデオデータを作成する。作成されたビデオデータは、プリンタ2095に転送され印刷処理が行われる。
【0045】
データ送信アプリケーション404は、スキャナ2070により原稿からスキャンされた画像データをLAN104を通じてメールサーバ103に送信する機能である。スキャンされた画像は、JPEGやPDF(Portable Document Format)といった画像フォーマットでファイル化される。データ送信アプリケーション404は、そのファイルをSMTP403を通じてメールサーバ103に転送する。SMTP403は、SMTPプロトコルを用いてメールサーバ103に電子メールの送信を行うネットワークアプリケーションである。本実施の形態では、メールサーバ103に電子メールを送信する設定が予めなされているものとする。
【0046】
本実施の形態は以下の特徴を有する。
【0047】
IPSecモジュール306は、ネットワーク通信に対してIPSecを適用する。パケット取得アプリケーション305は、データリンク層でパケットを取得してパケットデータ309に保存する。また、パケット取得アプリケーション305は、IPSecモジュール306によりIPSecが適用される以前のIP層パケットデータを取得する。
【0048】
パケット取得サブアプリケーション308は、IP層パケットデータがIPSec適用パケットである場合、暗号部を復号したパケットデータに基づいて、パケットデータ309に保存されているパケットデータを更新する。即ち、パケットデータ309に保存されているパケットデータの暗号化されている部分を、当該部分を復号したパケットデータに上書きする。
【0049】
また、暗号化されたデータは、当該データの一部が暗号化されており、保存された暗号化されたデータの中の暗号化されている部分を、復号化されたデータで上書きする。また、受信したデータに基づいてハッシュ値を計算する。また、復号化されたデータに基づいてハッシュ値を計算する。そして、計算されたハッシュ値を比較することによってデータを検索する。また、暗号化されたデータは、ネットワーク層よりも上位の階層のデータが暗号化されており、ネットワーク層以下の階層のデータが暗号化されていないデータである。ハッシュ値は、ネットワーク層以下の階層のデータに基づいて計算される。
【0050】
次に、上記構成を有する本実施の形態のネットワークシステムのMFP101の動作について図5〜図10を参照しながら説明する。
【0051】
図5は、MFP101のパケット受信時の処理を示すフローチャートである。
【0052】
図5において、PC102がIPSecを適用した印刷ジョブを構成する1つのパケットをMFP101に対して送信し、MFP101がパケットを受信した際のMFP101の内部処理を示している。尚、MFP101とPC102との間では、図5の内部処理を実行する前に、IPSec通信を行う上での前提処理(例えばIKE(Internet Key Exchange)を用いた互いの鍵交換)が行われているものとする。
【0053】
MFP101は、ネットワークを経由したパケットの受信を待機する受信待ち状態となっている。MFP101のパケット取得アプリケーション305は、パケット受信の有無を監視している(ステップS501)。ネットワークI/F2010により受信したパケットを確認した場合には、ステップS502に移行する。パケット取得アプリケーション305は、ネットワークI/F2010から受信したパケットデータを取得し、パケットデータ309に保存する(ステップS502)。
【0054】
上記ステップS502におけるパケット取得アプリケーション305によるパケットデータ保存処理の詳細を図6に基づき説明する。パケット取得アプリケーション305は、受信(取得)したパケットがIPSec適用パケットであるか否かを判断する(ステップS601)。パケット取得アプリケーション305は、受信したパケットデータのデータリンク層に含まれる次ヘッダ情報を参照することで、上記の判断を行う。
【0055】
データリンク層に含まれる次ヘッダ情報がIP(IPv4)またはIPv6であった場合、パケット取得アプリケーション305は、それらのヘッダに含まれる次ヘッダ情報を参照する。その次ヘッダ情報がIPSecを示すIDであった場合には、パケット取得アプリケーション305は、受信したパケットがIPSec適用パケットであると判断しステップS602に移行する。
【0056】
ステップS601で受信パケットがIPSec適用パケットであると判断した場合、パケット取得アプリケーション305は、受信したパケットデータのIPヘッダ部のデータに対するハッシュ値を計算する(ステップS602)。ここでハッシュ値を算出する理由は、後述の図5のステップS507でIPSecの復号後のデータをパケットデータ309に上書きする際に、保存済みの複数のパケットデータの内、どのパケットデータに対し上書き処理を施すのかを識別するためである。
【0057】
後述の図5のステップS507でも、同様にIPヘッダ部のデータに対してハッシュ値を算出することにより、パケットデータ309に保存されたパケットデータの中で、ハッシュ値が同値であるパケットが復号される前のパケットであると判断することができる。ここでハッシュ値を使用する理由は、IPヘッダのデータそのものを使用して比較する方法では比較データ数が大きくなり処理負荷が増大するため、データを圧縮する必要があるからである。
【0058】
次に、パケット取得アプリケーション305は、パケットデータ・パケットの受信時間情報・IDに加えてハッシュ値をパケットデータ309に記録する(ステップS603)。パケットデータ309はHDD2004に存在しているファイル群である。パケット取得アプリケーション305は、パケットデータをファイルに記載していく。ファイルが特定のファイルサイズより大きくなった場合には、パケット取得アプリケーション305は新規にファイルを生成する。
【0059】
図7は、IPSecが適用されたパケットデータをパケット取得アプリケーション305がパケットデータ309に記録した内容を可視化した一例である。データ部701は、ハッシュ情報である。本実施の形態では、ハッシュ情報は17バイトのデータであり、最上位バイトがハッシュの有無を示す情報である。
【0060】
ハッシュ情報の最上位バイトの値が1である場合には、2バイト目〜17バイトまでのハッシュ値領域に有効な値が含まれていることを示す。ハッシュ情報の最上位バイトの値が0である場合には、ハッシュ値領域に値は含まれず0で埋められていることを示す。ハッシュ値領域に有効な値が含まれるのは、受信したパケットがIPSecを適用したパケットの場合であり、その判断は上記ステップS601で行われる。
【0061】
データ部702は、時間情報である。MFP101がパケットを受信した時間を図示の例(2007年6月28日9時21分48秒)のように記録している。データ部703〜データ部705は、パケットデータ本体である。パケット取得アプリケーション305は、受信したパケットデータ全てをパケットデータ309に書き込む。そのため、パケットデータ309に書き込まれるデータは、データリンク層データ部703、IP層データ部704、暗号化データ部705により構成される。本実施の形態では、暗号化データ部705はESP(Encapsulating Security Payload)によりパックされているものとする。
【0062】
尚、図7ではデータ構成を可視化するためにパケットを翻訳した形で記載しているが、パケット取得アプリケーション305がパケットデータ309に書き込む際には、データ部701〜暗号化データ部705はバイナリデータで書き込む。
【0063】
ステップS601で受信パケットがIPSec適用パケット以外のパケットであると判断した場合、パケット取得アプリケーション305は、パケットデータ・パケットの受信時間情報・IDをパケットデータ309に記録する(ステップS604)。その場合、ハッシュ情報の最上位バイトの値は0となる。
【0064】
図5に戻り、次にステップS503に移行し、IPSecモジュール306によるIPSecパケットの判別処理を行う。ステップS503では、ステップS501で受信したパケットのデータはネットワークスタック303に渡される。ネットワークスタック303に渡されるデータはパケットデータのIP層以降のデータである。つまり、データリンク層のデータはネットワークスタック303には渡されない。
【0065】
IPSecモジュール306は、上記パケットデータを参照し、受信パケットがIPSec適用パケットであるか否かを、パケットデータに含まれる次ヘッダ情報を基に判断する(ステップS503)。受信パケットがIPSec適用パケットであると判断した場合には、IPSecモジュール306は、パケットに含まれる暗号化データ部(暗号部)の復号を行う(ステップS504)。更に、IPSecモジュール306は、復号化されたパケットデータをネットワークスタック303に戻し、ステップS505に移行する。受信パケットがIPSec適用パケットではないと判断した場合には、IPSecモジュール306は、何もせずにパケットデータをネットワークスタック303に戻し、ステップS505に移行する。
【0066】
次に、パケット取得サブアプリケーション308は、ネットワークスタック303に戻されたパケットデータに対して、IPSec適用パケットであったか否かの判別処理を行う。パケット取得サブアプリケーション308は、SPD307に保持されているIPSecのセキュリティポリシーの内容とパケットデータの内容とを比較することで、パケットデータがIPSec適用パケットであったか否かを判断する(ステップS505)。
【0067】
図8は、SPDの内容を例示したものである。SPDとは、どのような内容のパケットに対してどのようなIPSecのセキュリティを適用するかというポリシーを設定したデータベースである。図8の例では3種類のポリシーが設定されていることを表している。それぞれのポリシーに対して要素801〜要素806が設定されており、要素の合致するパケットに対してIPSecが適用される。
【0068】
要素801は、送信元IPアドレス(From IP)である。要素802は、送信先IPアドレス(To IP)である。要素801及び要素802は、IPアドレス又はIPv6アドレスが記載される。要素803は、送信元ポート(From ポート)である。要素804は送信先ポート(To ポート)である。要素805は、プロトコルである。要素806は、暗号であり、要素801〜要素805に合致するパケットに対してどのような暗号を適用するのか示す情報である。
【0069】
図5に戻り、パケット取得サブアプリケーション308は、受信パケットデータの内容がSPD307に登録されている各セキュリティポリシーに合致するか否かを調査する(ステップS506)。受信パケットデータの内容が任意のセキュリティポリシーに合致していると判断した場合には、パケット取得サブアプリケーション308は、復号後のパケットデータをパケットデータ309に上書きする処理を行う(ステップS507)。受信パケットデータの内容が任意のセキュリティポリシーに合致していないと判断した場合には、パケット取得サブアプリケーション308は、パケットデータをネットワークスタック303に返し、上位のソケットI/F302へ渡す。
【0070】
上記ステップS507の詳細な処理を図9に基づき説明する。パケット取得サブアプリケーション308は、受信パケットデータのIPヘッダのデータに対してハッシュ値を計算する処理を行う(ステップS901)。ハッシュ値の計算は、図6のステップS602と同様の方法で行う。
【0071】
次に、パケット取得サブアプリケーション308は、パケットスニファによりパケットデータ309に保存されている各パケットデータのハッシュ値と、ステップS901で算出したハッシュ値とを比較する。そして、パケット取得サブアプリケーション308は、比較に基づき、同一のハッシュ値を持つパケットデータを検索する(ステップS902)。
【0072】
パケットデータ309から同一のハッシュ値を持つパケットデータが検索された場合、パケット取得サブアプリケーション308は次の処理を行う。パケット取得サブアプリケーション308は、受信パケットデータのIP層より上位のデータ部を、パケットデータ309に保持されている対応するパケットデータのIP層より上位の部分に上書きする処理を行う(ステップS903)。尚、パケットの受信時間情報は上書きしない。
【0073】
図10は、パケット取得サブアプリケーション308により上書きされた後のパケットデータ309のイメージを示す一例である。データ部1001はTCPデータである。パケット取得アプリケーション305がパケットデータ309にパケットデータを書き込んだ時点で、データ部1001はIPSecにより暗号化されていたが、パケット取得サブアプリケーション308によりデータ部1001は復号化されている。
【0074】
以上説明したように本実施の形態によれば、IPSecにより暗号化されたパケットの全データを復号化された状態で保存することが可能となり、データ解析の効率化が可能となる。
【0075】
尚、本実施の形態では、IPヘッダのデータに対するハッシュ値を計算し、その値を比較することによって、データを上書きするパケットデータを特定していた。しかし、パケットデータの特定方法は、これに限定されるものではなく、様々な方法が考えられる。
【0076】
例えば、IPヘッダのデータのハッシュ値を計算するのではなく、IPヘッダのデータそのものを比較してもよい。この場合、比較のためのデータ量は増加するが、ハッシュ値を計算する処理の負荷は減らすことができる。
【0077】
または、パケットデータを受信した時間の情報を比較してもよい。または、ハッシュ値を計算する場合であっても、IPヘッダのデータのみに対するハッシュ値ではなく、Ethernet(登録商標)ヘッダからIPヘッダまでのデータに対するハッシュ値を計算してもよい。この場合、処理の負荷は増加するが、より多くのデータに対するハッシュ値を計算することになるため、比較結果の信頼性はより上がる。尚、この場合には、デバイスドライバ304は、Ethernet(登録商標)ヘッダの処理を行った際に、そのデータを保持しておき、パケット取得サブアプリケーション308は、Ethernet(登録商標)ヘッダのデータを改めて取得し直す必要がある。
【0078】
[第2の実施の形態]
本発明の第2の実施の形態は、上記第1の実施の形態に対して、下記で説明する点において相違する。本実施の形態のその他の要素は、上記第1の実施の形態(図1〜図2)の対応するものと同一なので説明を省略する。
【0079】
本実施の形態では、上記第1の実施の形態の異なる実装方法として、パケット取得サブアプリケーションがIPSecモジュールのサブセットモジュールの構成をとる場合について説明する。
【0080】
上記第1の実施の形態では、IPSecモジュール306が独立モジュールとしてOSのカーネルスペースで動作し、パケット取得サブアプリケーション308についても独立モジュールとしてアプリケーションスペースで動作する構成について説明した。一般的には、IPSecモジュールはOSの一部として動作する。また、パケット取得サブアプリケーションはユーザアプリケーションとしてアプリケーションスペースで動作する。そのため、第1の実施の形態で示したような、IPSecモジュールとパケット取得サブアプリケーションとが互いに独立した構成が一般的である。
【0081】
しかしながら、所定のシステムに組み込まれる組み込み機器などではIPSecモジュールやパケット取得アプリケーションを全て自己開発する場合もある。そのような場合には、本実施の形態で示すような、IPSecモジュールとパケット取得サブアプリケーションとが同一モジュールとして動作する構成のほうが、処理パフォーマンスやプログラムサイズの面で有利となることがある。
【0082】
図11は、MFP101のネットワークパケット処理系の構成を示すブロック図である。
【0083】
図11において、MFP101は、Linux等の汎用OSを備える。即ち、MFP101は、アプリケーション301、ソケットI/F302、ネットワークスタック303、ネットワークデバイスドライバ304、パケット取得アプリケーション305を備える。更に、MFP101は、SPD307、パケットデータ309、パケット取得サブアプリケーション1102を有するIPSecモジュール1101を備える。
【0084】
アプリケーション301は、MFP101上で動作するネットワークアプリケーションの集合である。第1の実施の形態と異なる点は、IPSecモジュール1101とパケット取得サブアプリケーション1102との関係である。パケット取得サブアプリケーション1102はIPSecモジュール1101の一部として動作しており、カーネルスペースで動作している。
【0085】
パケット受信時の処理は第1の実施の形態で示した図5のフローチャートと大きな差異はないが、詳細な処理の違いがある。ステップS505〜ステップS507の処理はパケット取得サブアプリケーション1102で行われる処理であるが、本実施の形態ではパケット取得サブアプリケーション1102はIPSecモジュール1101の内部モジュールとして動作している。これにより、ステップS504でIPSecモジュール1101が復号化した後のパケットデータをネットワークスタック303に戻す処理が不要となるため、処理速度の向上を図ることが可能となる。
【0086】
[第3の実施の形態]
本発明の第3の実施の形態は、上記第1の実施の形態に対して、下記で説明する点において相違する。本実施の形態のその他の要素は、上記第1の実施の形態(図1〜図3)の対応するものと同一なので説明を省略する。
【0087】
本実施の形態では、上記第1の実施の形態の構成において、MFP101からネットワーク経由でパケットをPC102に送信する場合について説明する。
【0088】
MFP101がPC102にパケットデータを送信する場合、アプリケーション301はソケットI/F302を介してパケットデータを送信する。ソケットI/F302はネットワークスタック303に送信パケットデータを渡す。パケット取得サブアプリケーション308はネットワークスタック303にフッキングしているため、ネットワークスタック303に渡された送信パケットデータを取得することができる。
【0089】
図12は、MFP101のパケット送信時の処理を示すフローチャートである。
【0090】
図12において、パケット取得サブアプリケーション308は、ソケットI/F302からネットワークスタック303に送信パケットデータが渡されたか否かを監視している(ステップS1201)。ソケットI/F302からネットワークスタック303に送信パケットデータが渡された場合には、パケット取得サブアプリケーション308は、ネットワークスタック303から送信パケットデータを取得する。
【0091】
次に、パケット取得サブアプリケーション308は、SPD307に保持されているIPSecのセキュリティポリシーの内容と、送信パケットデータの内容とを比較する(ステップS1202)。更に、パケット取得サブアプリケーション308は、送信パケットデータがIPSec適用パケット(暗号対象パケット)であるか否かを判断する(ステップS1203)。パケット取得サブアプリケーション308がネットワークスタック303から取得した送信パケットデータは、IP層データまでが付加されたデータ形式であるため、SPD307の保持内容との比較が可能である。
【0092】
送信パケットデータがIPSec適用パケットであると判断した場合には、ステップS1204に移行する。パケット取得サブアプリケーション308は、送信パケットデータのIP層のハッシュ値と送信パケットデータを仮に記憶し、ステップS1205に移行する(ステップS1204)。即ち、パケット取得サブアプリケーション308は、送信パケットデータのIP層データからハッシュ値を算出し、そのハッシュ値及び送信パケットデータを一時記憶領域に記憶する。送信パケットデータがIPSec適用パケットではないと判断した場合には、直接ステップS1205に移行する。
【0093】
一時記憶領域とは、RAM2002の記憶領域又はHDD2004の記憶領域である。取得したパケットデータが送信パケットデータであった場合、一時記憶領域に記憶する。パケット取得サブアプリケーション308は、取得したパケットデータの送信元IPアドレスが自装置(MFP101)のIPアドレスであった場合のみ、ステップS1204の処理を行う。
【0094】
次に、IPSecモジュール306によるIPSecパケットの判別処理を行う。即ち、IPSecモジュール306は、ネットワークスタック303が受け取ったパケットデータを参照し、パケットがIPSec適用パケットであるか否かを、パケットデータに含まれる次ヘッダ情報を基に判断する(ステップS1205)。パケットがIPSec適用パケットであると判断した場合には、IPSecモジュール306は、パケットに含まれるIP層よりも上位の層のデータの暗号化を行う(IPSecを適用する)(ステップS1206)。更に、IPSecモジュール306は、暗号化したパケットデータをネットワークスタック303に戻す。
【0095】
パケットがIPSec適用パケットではないと判断した場合には、IPSecモジュール306は、何もせずにパケットデータをネットワークスタック303に戻す。ネットワークスタック303は、PC102に対する送信パケットデータをネットワークデバイスドライバ304に渡す。ネットワークデバイスドライバ304は、受け取った送信パケットデータにデータリンク層のデータを付加する。
【0096】
次に、パケット取得アプリケーション305は、ネットワークデバイスドライバ304から送信パケットデータを取得する(ステップS1207)。更に、パケット取得アプリケーション305は、取得した送信パケットデータのIP層に対するハッシュ値を計算し、パケットデータ309にデータを書き込む。書き込まれるデータは、パケットの送信時間情報、ハッシュ値、パケットデータ本体から構成される。
【0097】
次に、パケット取得サブアプリケーション308は、パケットデータ309に記録されているパケットデータの中から、ステップS1204で仮記憶したハッシュ値に対応するパケットデータを参照し、仮記憶したデータに上書きする(ステップS1208)。この処理により、ステップS1206で暗号化が施され且つステップS1207でパケットデータ309に書き込まれたIPSec適用データに対して、暗号化が施される前のデータを上書きする。これにより、非暗号化データをパケットデータ309に記録することが可能である。
【0098】
[他の実施の形態]
上記各実施の形態では、図1に示すネットワークシステムを例に挙げたが、ネットワークシステムを構成する装置(MFP、PC、メールサーバ)の設置数や種類は図示のものに限定されるものではない。
【0099】
また、上記各実施の形態では、本発明の情報処理装置の一例としてMFPとした場合を説明したが、これに限定されるものではない。本発明の情報処理装置は、MFP以外の装置、例えば、プリンタやスキャナ、ファクシミリやコピー機、パーソナルコンピュータや携帯電話であっても構わない。
【0100】
また、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。
【0101】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0102】
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROM等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【0103】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0104】
更に、前述した実施形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行う場合である。
【図面の簡単な説明】
【0105】
【図1】本発明の第1の実施の形態に係るネットワークシステムの構成例を示す図である。
【図2】情報処理装置としてのMFPのコントローラユニットの主要部の構成を示すブロック図である。
【図3】MFPのネットワークパケット処理系の構成を示すブロック図である。
【図4】MFPのアプリケーションに含まれるネットワークアプリケーションの構成を示すブロック図である。
【図5】MFPのパケット受信時の処理を示すフローチャートである。
【図6】MFPのパケット取得アプリケーションのパケットデータ保存処理を示すフローチャートである。
【図7】暗号化されたパケット構造を示す図である。
【図8】SPDの構成を示す図である。
【図9】MFPのパケット取得サブアプリケーションの処理を示すフローチャートである。
【図10】復号後のパケット構造を示す図である。
【図11】本発明の第2の実施の形態に係るMFPのネットワークパケット処理系の構成を示すブロック図である。
【図12】本発明の第2の実施の形態に係るMFPのパケット送信時の処理を示すフローチャートである。
【符号の説明】
【0106】
101 MFP
102 PC
103 メールサーバ
104 LAN
301 アプリケーション
302 ソケットI/F
303 ネットワークスタック
304 ネットワークデバイスドライバ
305 パケット取得アプリケーション
306 IPSecモジュール
308 パケット取得サブアプリケーション
309 パケットデータ
1101 IPSecモジュール
1102 パケット取得サブアプリケーション
【特許請求の範囲】
【請求項1】
データをネットワークから受信する受信手段と、
前記受信手段によって受信したデータを保存する保存手段と、
前記受信手段によって受信したデータのうち、暗号化されたデータを復号化する復号化手段と、
前記復号化手段によって復号化されたデータに対応する暗号化されたデータを、前記保存手段によって保存されたデータの中から検索する検索手段と、
前記復号化手段によって復号化されたデータに基づいて、前記検索手段によって検索されたデータを更新する更新手段と、
を有することを特徴とする情報処理装置。
【請求項2】
前記暗号化されたデータは、当該データの一部が暗号化されており、
前記更新手段は、前記保存手段によって保存された暗号化されたデータの中の暗号化されている部分を、前記復号化手段によって復号化されたデータで上書きすることを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記受信手段によって受信したデータに基づいてハッシュ値を計算する手段と、
前記復号化手段によって復号化されたデータに基づいてハッシュ値を計算する手段と、を更に有し、
前記検索手段は、前記計算されたハッシュ値を比較することによってデータを検索することを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
前記暗号化されたデータは、ネットワーク層よりも上位の階層のデータが暗号化されており、ネットワーク層以下の階層のデータが暗号化されていないデータであり、
前記ハッシュ値は、ネットワーク層以下の階層のデータに基づいて計算されることを特徴とする請求項3記載の情報処理装置。
【請求項5】
前記ネットワークは、TCP/IP(Transmission Control Protocol/Internet Protocol)に従ったネットワークであり、前記暗号化されたデータは、IPSec(IP Security)に従って暗号化されたデータであることを特徴とする請求項1乃至4の何れかに記載の情報処理装置。
【請求項6】
情報処理装置の制御方法において、
データをネットワークから受信する受信工程と、
前記受信工程によって受信したデータを保存する保存工程と、
前記受信工程によって受信したデータのうち、暗号化されたデータを復号化する復号化工程と、
前記復号化工程によって復号化されたデータに対応する暗号化されたデータを、前記保存工程によって保存されたデータの中から検索する検索工程と、
前記復号化工程によって復号化されたデータに基づいて、前記検索工程によって検索されたデータを更新する更新工程と、
を有することを特徴とする制御方法。
【請求項7】
情報処理装置の制御方法をコンピュータに実行させるためのコンピュータで読み取り可能なプログラムにおいて、前記制御方法は、
データをネットワークから受信する受信工程と、
前記受信工程によって受信したデータを保存する保存工程と、
前記受信工程によって受信したデータのうち、暗号化されたデータを復号化する復号化工程と、
前記復号化工程によって復号化されたデータに対応する暗号化されたデータを、前記保存工程によって保存されたデータの中から検索する検索工程と、
前記復号化工程によって復号化されたデータに基づいて、前記検索工程によって検索されたデータを更新する更新工程と、
を有することを特徴とするプログラム。
【請求項1】
データをネットワークから受信する受信手段と、
前記受信手段によって受信したデータを保存する保存手段と、
前記受信手段によって受信したデータのうち、暗号化されたデータを復号化する復号化手段と、
前記復号化手段によって復号化されたデータに対応する暗号化されたデータを、前記保存手段によって保存されたデータの中から検索する検索手段と、
前記復号化手段によって復号化されたデータに基づいて、前記検索手段によって検索されたデータを更新する更新手段と、
を有することを特徴とする情報処理装置。
【請求項2】
前記暗号化されたデータは、当該データの一部が暗号化されており、
前記更新手段は、前記保存手段によって保存された暗号化されたデータの中の暗号化されている部分を、前記復号化手段によって復号化されたデータで上書きすることを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記受信手段によって受信したデータに基づいてハッシュ値を計算する手段と、
前記復号化手段によって復号化されたデータに基づいてハッシュ値を計算する手段と、を更に有し、
前記検索手段は、前記計算されたハッシュ値を比較することによってデータを検索することを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
前記暗号化されたデータは、ネットワーク層よりも上位の階層のデータが暗号化されており、ネットワーク層以下の階層のデータが暗号化されていないデータであり、
前記ハッシュ値は、ネットワーク層以下の階層のデータに基づいて計算されることを特徴とする請求項3記載の情報処理装置。
【請求項5】
前記ネットワークは、TCP/IP(Transmission Control Protocol/Internet Protocol)に従ったネットワークであり、前記暗号化されたデータは、IPSec(IP Security)に従って暗号化されたデータであることを特徴とする請求項1乃至4の何れかに記載の情報処理装置。
【請求項6】
情報処理装置の制御方法において、
データをネットワークから受信する受信工程と、
前記受信工程によって受信したデータを保存する保存工程と、
前記受信工程によって受信したデータのうち、暗号化されたデータを復号化する復号化工程と、
前記復号化工程によって復号化されたデータに対応する暗号化されたデータを、前記保存工程によって保存されたデータの中から検索する検索工程と、
前記復号化工程によって復号化されたデータに基づいて、前記検索工程によって検索されたデータを更新する更新工程と、
を有することを特徴とする制御方法。
【請求項7】
情報処理装置の制御方法をコンピュータに実行させるためのコンピュータで読み取り可能なプログラムにおいて、前記制御方法は、
データをネットワークから受信する受信工程と、
前記受信工程によって受信したデータを保存する保存工程と、
前記受信工程によって受信したデータのうち、暗号化されたデータを復号化する復号化工程と、
前記復号化工程によって復号化されたデータに対応する暗号化されたデータを、前記保存工程によって保存されたデータの中から検索する検索工程と、
前記復号化工程によって復号化されたデータに基づいて、前記検索工程によって検索されたデータを更新する更新工程と、
を有することを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2009−278419(P2009−278419A)
【公開日】平成21年11月26日(2009.11.26)
【国際特許分類】
【出願番号】特願2008−128314(P2008−128314)
【出願日】平成20年5月15日(2008.5.15)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成21年11月26日(2009.11.26)
【国際特許分類】
【出願日】平成20年5月15日(2008.5.15)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]