(57)【特許請求の範囲】
【請求項１】
暗号化された部分と暗号化されていない部分とを有するデータをネットワークから受信する受信手段と、
前記受信手段によって受信したデータを保存する保存手段と、
前記受信手段によって受信したデータのうち、暗号化された部分を復号化する復号化手段と、
前記保存手段に保存されているデータの暗号化されていない部分と、暗号化された部分が前記復号化手段によって復号されたデータの暗号化されていない部分とに基づいて、前記復号化手段によって復号化された部分のデータに対応するデータを、前記保存手段によって保存されているデータの中から検索する検索手段と、
前記復号化手段によって復号化された部分のデータに基づいて、前記保存手段によって保存されていて前記検索手段によって検索されたデータを更新する更新手段と、
を有することを特徴とする情報処理装置。
【請求項２】
一部が暗号化されたデータをネットワークから受信する受信手段と、
前記受信手段によって受信したデータを保存する保存手段と、
前記受信手段によって受信したデータのうち、暗号化されている部分を復号化する復号化手段と、
前記復号化手段によって復号化されたデータに対応する暗号化されたデータを、前記保存手段によって保存されているデータの中から検索する検索手段と、
前記保存手段によって保存されていて前記検索手段によって検索された暗号化されたデータの中の暗号化されている部分を、前記復号化手段によって復号化されたデータで上書きする更新手段と、
を有することを特徴とする情報処理装置。
【請求項３】
前記受信手段によって受信して前記保存手段に保存されるデータの暗号化されていない部分に基づいてハッシュ値を計算する第１の計算手段と、
暗号化された部分が前記復号化手段によって復号化されたデータの暗号化されていない部分に基づいてハッシュ値を計算する第２の計算手段と、を更に有し、
前記検索手段は、前記計算されたハッシュ値を比較することによってデータを検索することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
ネットワーク層よりも上位の階層のデータが暗号化された部分であり、ネットワーク層以下の階層のデータが暗号化されていない部分であり、
前記ハッシュ値は、ネットワーク層以下の階層のデータに基づいて計算されることを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記保存手段は、前記受信手段によって受信したデータと前記第１の計算手段によって計算されたハッシュ値とを保存することを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記検索手段は、前記保存手段に保存されているデータの暗号化されていない部分と、暗号化された部分が前記復号化手段によって復号されたデータの暗号化されていない部分とを比較することによってデータを検索することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記ネットワークは、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）に従ったネットワークであり、前記受信手段により受信されるデータは、ＩＰＳｅｃ（IP Security）に従って暗号化されたデータであることを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記保存手段は、前記受信手段によって受信したデータと前記受信手段が当該データを受信した時間を示す時間情報とを保存することを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
情報処理装置の制御方法であって、
暗号化された部分と暗号化されていない部分とを有するデータをネットワークから受信する受信工程と、
前記受信工程によって受信したデータを保存手段に保存する保存工程と、
前記受信工程によって受信したデータのうち、暗号化された部分を復号化する復号化工程と、
前記保存手段に保存されているデータの暗号化されていない部分と、暗号化された部分が前記復号化工程によって復号化されたデータの暗号化されていない部分とに基づいて、前記復号化工程によって復号化された部分のデータに対応するデータを、前記保存手段によって保存されているデータの中から検索する検索工程と、
前記復号化工程によって復号化された部分のデータに基づいて、前記保存手段によって保存されていて前記検索工程によって検索されたデータを更新する更新工程と、
を有することを特徴とする制御方法。
【請求項１０】
前記受信工程によって受信して前記保存手段に保存されるデータの暗号化されていない部分に基づいてハッシュ値を計算する第１の計算工程と、
暗号化された部分が前記復号化工程によって復号化されたデータの暗号化されていない部分に基づいてハッシュ値を計算する第２の計算工程と、を更に有し、
前記検索工程では、前記計算されたハッシュ値を比較することによってデータを検索することを特徴とする請求項９に記載の制御方法。
【請求項１１】
前記検索工程では、前記保存手段に保存されているデータの暗号化されていない部分と、暗号化された部分が前記復号化工程によって復号されたデータの暗号化されていない部分とを比較することによってデータを検索することを特徴とする請求項９に記載の制御方法。
【請求項１２】
情報処理装置の制御方法であって、
一部が暗号化されたデータをネットワークから受信する受信工程と、
前記受信工程によって受信したデータを保存手段に保存する保存工程と、
前記受信工程によって受信したデータのうち、暗号化されている部分を復号化する復号化工程と、
前記復号化工程によって復号化されたデータに対応する暗号化されたデータを、前記保存手段によって保存されているデータの中から検索する検索工程と、
前記保存手段によって保存されていて前記検索工程によって検索された暗号化されたデータの中の暗号化されている部分を、前記復号化工程によって復号化されたデータで上書きする更新工程と、
を有することを特徴とする制御方法。
【請求項１３】
情報処理装置の制御方法をコンピュータに実行させるためのコンピュータで読み取り可能なプログラムであって、前記制御方法は、
暗号化された部分と暗号化されていない部分とを有するデータをネットワークから受信する受信工程と、
前記受信工程によって受信したデータを保存手段に保存する保存工程と、
前記受信工程によって受信したデータのうち、暗号化された部分を復号化する復号化工程と、
前記保存手段に保存されているデータの暗号化されていない部分と、暗号化された部分が前記復号化工程によって復号化されたデータの暗号化されていない部分とに基づいて、前記復号化工程によって復号化された部分のデータに対応するデータを、前記保存手段によって保存されているデータの中から検索する検索工程と、
前記復号化工程によって復号化された部分のデータに基づいて、前記保存手段によって保存されていて前記検索工程によって検索されたデータを更新する更新工程と、
を有することを特徴とするプログラム。
【請求項１４】
前記制御方法は、
前記受信工程によって受信して前記保存手段に保存されるデータの暗号化されていない部分に基づいてハッシュ値を計算する第１の計算工程と、
暗号化された部分が前記復号化工程によって復号化されたデータの暗号化されていない部分に基づいてハッシュ値を計算する第２の計算工程と、を更に有し、
前記検索工程では、前記計算されたハッシュ値を比較することによってデータを検索することを特徴とする請求項１３に記載のプログラム。
【請求項１５】
前記検索工程では、前記保存手段に保存されているデータの暗号化されていない部分と、暗号化された部分が前記復号化工程によって復号されたデータの暗号化されていない部分とを比較することによってデータを検索することを特徴とする請求項１３に記載のプログラム。
【請求項１６】
情報処理装置の制御方法をコンピュータに実行させるためのコンピュータで読み取り可能なプログラムであって、前記制御方法は、
一部が暗号化されたデータをネットワークから受信する受信工程と、
前記受信工程によって受信したデータを保存手段に保存する保存工程と、
前記受信工程によって受信したデータのうち、暗号化されている部分を復号化する復号化工程と、
前記復号化工程によって復号化されたデータに対応する暗号化されたデータを、前記保存手段によって保存されているデータの中から検索する検索工程と、
前記保存手段によって保存されていて前記検索工程によって検索された暗号化されたデータの中の暗号化されている部分を、前記復号化工程によって復号化されたデータで上書きする更新工程と、
を有することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化データを含むパケットデータに関する処理を行う情報処理装置、制御方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、ネットワークの通信路に接続されたネットワーク通信機器で障害が発生した場合に、通信路を流れるパケットを採取して障害の原因を調査する手法が存在する。その一般的な方法では、パケットの取得を行う専用機器をＨＵＢ等の集線機器に接続することで、ＬＡＮ（Local Area Network）上を流れるパケットを採取する。
【０００３】
採取したパケットから、調査対象となるネットワーク通信機器が送受信しているパケットのデータの内容を解析し、規定外のデータを受信している箇所や、受信パケットに対する応答遅延が発生している箇所を特定する。そして、特定した箇所が障害の原因であるか否かを判別するために、同一のパケットをネットワーク通信機器に送信して障害の再現確認を行ったり、ネットワーク通信機器の通信を司るソースコードの解析を行ったり等の原因調査を行う。
【０００４】
近年では、パケットの取得機能が備わったネットワーク通信機器も普及し始めている。これにより、パケットの採取を行うための専用機器を使用しなくてもパケットの取得が可能となる。従来は、スイッチングＨＵＢが導入された環境などにおいては専用機器を接続したとしてもパケットの採取を正しく行うことができなかった。
【０００５】
その理由は、スイッチングＨＵＢはネットワークフレームの宛て先アドレス情報を参照し、そのアドレスを持つノードが接続されたＨＵＢポートにのみパケットを転送するため、別のＨＵＢポートにパケット取得装置を接続したとしても取得できないためである。パケット取得機能が備わったネットワーク通信機器においては、パケット通信を行うノード上でパケット取得が可能になるため、そのようなスイッチングＨＵＢ環境においてもパケット採取が可能になった。
【０００６】
また、近年、インターネットで使われているネットワーク層プロトコルであるＩＰ（Internet Protocol）の通信路を暗号化する技術であるＩＰＳｅｃ（IP Security）が普及しつつある。ＩＰＳｅｃは、認証、暗号、鍵交換といった各技術の総称であり、プロトコルやヘッダ構造の集合を示す規格である。ＩＰＳｅｃにより暗号化されたパケットは、一般的に、ＩＰが位置する階層よりも上位の階層が暗号化される。
【０００７】
ＩＰＳｅｃの特徴は、ＩＰが位置する階層の上位の階層はＩＰＳｅｃを意識する必要がない点である。つまり、ＩＰより上位に位置するＴＣＰ、ＵＤＰ、ＩＣＭＰ等は、ＩＰＳｅｃが動作しているのか否かを意識することなく自身が動作することが可能となる。尚、ＴＣＰ：Transport Control Protocol。ＵＤＰ：User Datagram Protocol。ＩＣＭＰ：Internet Control Message Protocol。
【０００８】
また、ＩＰＳｅｃは、ＩＰｖ４（Internet Protocol Version 4）及びＩＰｖ６（Internet Protocol Version 6）の両方において仕様が定義されている。ＩＰＳｅｃを使用するにあたって、どのようなパケットにどのような処理を施すのかを定義したものをセキュリティポリシーと呼ぶ。セキュリティポリシーは、ＩＰＳｅｃを適用するパケットを、アドレス、上位プトロコル、ポートの観点で定義し、それらに対してどのような認証方式と暗号方式を適用するのかを定義するルールである。
【０００９】
セキュリティポリシーの集合をセキュリティポリシーデータベース（ＳＰＤ）と呼ぶ。ＩＰＳｅｃの実行モジュールは、ＳＰＤを参照することにより、どのようなパケットにどのようなＩＰＳｅｃ処理を実行すべきであるかを判断することが可能となる。このようなＩＰＳｅｃが動作する環境ではパケットが暗号化されているため、その通信路はセキュアな状態となる。従って、第三者がネットワーク上のパケットを盗聴したとしても、パケットの暗号化によりデータの機密性は保持される。
【００１０】
このような暗号化されたパケットを解析するためには、パケット取得側が予めパケットの暗号化及び復号化に必要な情報を有しており、取得した暗号化パケットに対して上記情報を基に復号化を施す。これにより、データをキャプチャするといった手法が一般的である。
【００１１】
上記の手法に関する例としては次の技術が提案されている（例えば、特許文献１参照）。特許文献１記載の提案では、ネットワーク上を流れるＫＶＭ関連パケットを採取し、それが暗号化されていた場合には、予め取得していた情報を基に復号化して情報を記録する。これにより、通信路は暗号化されたセキュアな状態が保たれると共に、復号化後のデータをキャプチャすることができる。
【特許文献１】特開２００６−２７７５１８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記ＩＰＳｅｃを導入した環境でのパケットキャプチャリングでは、ネットワークフレームのデータ全てをキャプチャしたい場合に問題がある。パケットの取得機能が備わったネットワーク通信機器がＩＰＳｅｃで通信を行う場合、ネットワーク通信機器で受信したパケットは、ＩＰ層よりも上位の階層のデータがＩＰＳｅｃにより暗号化された状態である。この暗号化部分は、ＩＰスタックの内部で動作するＩＰＳｅｃモジュールにより復号化される。
【００１３】
これに対し、一般的なパケットキャプチャリングは、ネットワークカードドライバレベルで受信パケットのデータを取得する方法が一般的である。ネットワークカードドライバから受信パケットのデータを取得することにより、受信パケットのデータをデータリンク層から取りこぼすことなく取得することが可能となる。従って、受信パケットの全てのデータを取得することが求められるパケット取得機能においては、ネットワークカードドライバレベルでのデータ取得が必須とされる。
【００１４】
しかし、ネットワークカードドライバはＩＰスタックよりも低位に位置しているため、ネットワークカードドライバから取得したデータはＩＰＳｅｃにより暗号化されている状態となっている。即ち、受信パケットを取得したとしてもＩＰ層よりも上位の階層のデータが暗号化されており、パケット解析に有益な情報が得られない結果となっていた。これは、特許文献１記載の技術のように、取得及び解析したいプロトコルがＫＶＭのようにＩＰよりも上位のプロトコルでは発生しない問題である。解析対象がＩＰよりも上位であるなら、ＩＰＳｅｃにより暗号化データを復号化した後の、生データを取得すればよいからである。
【００１５】
しかし、ネットワーク通信機器における障害の解析を目的とするパケット取得では、ネットワークフレームのデータ全てを取得することが求められる。そのため、復号化する前のネットワークカードドライバレベルでデータを取得する必要があり、取得したデータが暗号化されているという問題があった。従って、従来はデータ解析という点で問題があった。
【００１６】
本発明の目的は、暗号化されたパケットのデータを復号化された状態で保存することを可能とし、データ解析の効率化を可能とした情報処理装置、制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１７】
上述の目的を達成するために、本発明は、暗号化された部分と暗号化されていない部分とを有するデータをネットワークから受信する受信手段と、前記受信手段によって受信したデータを保存する保存手段と、前記受信手段によって受信したデータのうち、暗号化された部分を復号化する復号化手段と、前記保存手段に保存されているデータの暗号化されていない部分と、暗号化された部分が前記復号化手段によって復号されたデータの暗号化されていない部分とに基づいて、前記復号化手段によって復号化された部分のデータに対応するデータを、前記保存手段によって保存されているデータの中から検索する検索手段と、前記復号化手段によって復号化された部分のデータに基づいて、前記保存手段によって保存されていて前記検索手段によって検索されたデータを更新する更新手段と、を有することを特徴とする。
【発明の効果】
【００１８】
本発明によれば、復号化手段によって復号化された部分のデータに基づいて、保存手段によって保存されていて検索手段によって検索されたデータを更新する。これにより、ネットワーク通信で用いる通信規約の通信路を暗号化する暗号化技術により暗号化されたパケットのデータを復号化された状態で保存することが可能となり、データ解析の効率化が可能となる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態を図面に基づいて説明する。
【００２０】
［第１の実施の形態］
図１は、本発明の第１の実施の形態に係るネットワークシステムの構成例を示す図である。
【００２１】
図１において、ネットワークシステムは、情報処理装置としてのＭＦＰ（Multi Function Peripheral）１０１、パーソナルコンピュータ（以下ＰＣ）１０２、メールサーバ１０３を備えている。本実施の形態では、ＰＣ１０２がＩＰＳｅｃを適用した印刷ジョブを構成するＩＰＳｅｃパケットをＭＦＰ１０１に送信し、ＭＦＰ１０１が受信したＩＰＳｅｃパケットをパケットデータとして保存する処理を実現する構成及び制御について説明する。ＩＰＳｅｃ（IP Security）は、ＩＰの通信路を暗号化するためのセキュリティ機能を付加するプロトコルに関する技術（規約）である。
【００２２】
ＬＡＮ１０４は、ユーザ環境のネットワークであり、Ethernet（登録商標）として構成されているものとする。ＬＡＮ１０４には、ネットワークインタフェイスを有するノードとしてＭＦＰ１０１、ＰＣ１０２、メールサーバ１０３が接続されている。これらのノードは、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）に基づいて互いに通信可能である。
【００２３】
ＭＦＰ１０１は、原稿読み取りに基づく画像を印刷出力する複写機能、画像を印刷出力する印刷機能、ネットワーク通信機能を有する複合機である。ＭＦＰ１０１は、ＰＣ１０２から送信されるＩＰｓｅｃを適用した印刷ジョブを構成するＩＰＳｅｃパケットを受信して印刷処理を行う。ＭＦＰ１０１のハードウェアの詳細構成については図２において後述する。
【００２４】
ＰＣ１０２は、一般的なパーソナルコンピュータであり、ハードウェアの構成要素としてＣＰＵ、ＲＡＭ、ＲＯＭ、ＨＤＤを備える。更に、ＰＣ１０２は、ＣＤ−ＲＯＭドライブ、ＮＩＣ（Network Interface Card）、ＵＳＢ（Universal Serial Bus）ホストインタフェイス、バスを備える。ＣＰＵは、ＰＣ各部を制御する中央演算装置である。ＲＡＭ、ＲＯＭ、ＨＤＤは、記憶装置である。ＣＤ−ＲＯＭドライブは、外部記憶装置である。ＮＩＣ、ＵＳＢは、外部インタフェイスである。バスは、ＣＰＵがこれらの構成要素や周辺機器を制御するための伝送路である。ＰＣ１０２に接続される周辺機器としては、マウス、ディスプレイ、キーボード等が存在する。
【００２５】
ＰＣ１０２に導入されている主なソフトウェアとしては、ＯＳ（Operating Software）、ワードプロセッサソフトや表計算ソフトといったオフィスソフトウェアがある。ＯＳには、その一機能として印刷データをＭＦＰ１０１やプリンタ（不図示）にＬＡＮ１０４を経由して送信するためのポートモニタが備わっている。また、メールサーバ１０３との間で電子メールの送受信を行うメーラも導入されている。更に、ＯＳには、これらの通信に対してＩＰＳｅｃによる暗号化を施すＩＰＳｅｃモジュールが組み込まれている。
【００２６】
メールサーバ１０３は、ＳＭＴＰ（Simple Mail Transfer Protocol）や、ＰＯＰ３（Post Office Protocol 3）を用いて電子メールの送受信を司るサーバである。メールサーバ１０３には、各ノード（ＭＦＰ１０１、ＰＣ１０２）がメールサーバ１０３を経由して電子メールを送信することが可能な電子メールアカウントが設定されている。また、メールサーバ１０３は、送受信パケットをＩＰＳｅｃにより暗号化するＩＰＳｅｃモジュール（図３参照）がＯＳに組み込まれている。これにより、メールサーバ１０３は、ＭＦＰ１０１やＰＣ１０２とＩＰＳｅｃによる通信が可能である。
【００２７】
図２は、情報処理装置としてのＭＦＰ１０１のコントローラユニット２０００の主要部の構成を示すブロック図である。
【００２８】
図２において、コントローラユニット２０００は、ＣＰＵ２００１、ＲＡＭ２００２、ＲＯＭ２００３、ＨＤＤ２００４、操作部Ｉ／Ｆ２００６、ネットワークインタフェイス（以下Ｉ／Ｆ）２０１０、モデム２０５０を備える。更に、コントローラユニット２０００は、デバイスＩ／Ｆ２０２０、画像回転部２０３０、画像圧縮部２０４０、ラスタイメージプロセッサ２０６０、スキャナ画像処理部２０８０、プリンタ画像処理部２０９０を備える。
【００２９】
コントローラユニット２０００は、画像入力デバイスであるスキャナ２０７０で原稿から読み取られた画像データを、画像出力デバイスであるプリンタ２０９５により印刷出力する複写機能を実現するための制御を行う。また、コントローラユニット２０００は、ＬＡＮ１０４に接続することにより、画像情報やデバイス情報の入出力を行うための制御を行う。
【００３０】
ＣＰＵ２００１は、ＲＯＭ２００３に格納されているブートプログラムによりオペレーションシステム（ＯＳ）を立ち上げる。ＣＰＵ２００１は、ＯＳ上でＨＤＤ２００４に格納されているアプリケーションプログラムを実行することにより各種処理を実行する。また、ＣＰＵ２００１は、後述の各フローチャートに示す処理を実行する。ＲＡＭ２００２は、ＣＰＵ２００１の作業領域、画像データを一時記憶するための画像メモリ領域を提供する。ＨＤＤ２００４は、上記のアプリケーションプログラム、画像データを格納する。
【００３１】
操作部Ｉ／Ｆ２００６は、タッチパネルを有する操作部２０１２とのインタフェイスを司るものであり、操作部２０１２に対して表示する画像データを出力する。また、操作部Ｉ／Ｆ２００６は、ユーザにより操作部２０１２から入力された情報をＣＰＵ２００１に送出する。ネットワークＩ／Ｆ２０１０は、ＬＡＮ１０４を介してＬＡＮ１０４上の各装置との間で情報の入出力を行う。モデム２０５０は、ＷＡＮ１００７を介して情報の入出力を行う。
【００３２】
イメージバスＩ／Ｆ２００５は、システムバス２００７と画像データを高速で転送する画像バス２００８とを接続し、データ構造を変換するためのバスブリッジである。画像バス２００８は、ＰＣＩ（Peripheral Component Interconnect）バスまたはＩＥＥＥ１３９４から構成される。ラスタイメージプロセッサ（以下ＲＩＰ）２０６０は、ＰＤＬコードをビットマップイメージに展開する。デバイスＩ／Ｆ２０２０には、スキャナ２０７０及びプリンタ２０９５が接続される。デバイスＩ／Ｆ２０２０は、画像データの同期系／非同期系の変換を行う。
【００３３】
スキャナ画像処理部２０８０は、入力画像データに対して補正、加工、編集を行う。プリンタ画像処理部２０９０は、プリント出力画像データに対して補正、解像度変換を行う。画像回転部２０３０は、画像データの回転を行う。画像圧縮部２０４０は、多値画像データをＪＰＥＧデータに圧縮し、２値画像データをＪＢＩＧ、ＭＭＲ、ＭＨ等のデータに圧縮すると共に、その伸張処理を行う。尚、ＪＰＥＧ：Joint Photographic Experts Group。ＪＢＩＧ：Joint Bi-level Image Experts Group。ＭＭＲ：Modified Modified READ。ＭＨ：Modified Huffman。
【００３４】
図３は、ＭＦＰ１０１のネットワークパケット処理系の構成を示すブロック図である。尚、図３に示す構成は、本発明の受信手段、保存手段、復号化手段、検索手段、更新手段、ハッシュ値を計算する第１の計算手段および第２の計算手段を実現するための一例である。
【００３５】
図３において、本実施の形態の主要部分に関するソフトウェア構成を示している。ＭＦＰ１０１は、Ｌｉｎｕｘ等の汎用ＯＳ（Operation System）を備える。即ち、ＭＦＰ１０１は、アプリケーションプログラム（以下アプリケーションと略称）３０１、ソケットＩ／Ｆ３０２、ネットワークスタック３０３、ネットワークデバイスドライバ３０４を備える。更に、ＭＦＰ１０１は、パケット取得アプリケーション３０５、ＩＰＳｅｃモジュール３０６、ＳＰＤ３０７、パケット取得サブアプリケーション３０８、パケットデータ３０９を備える。
【００３６】
アプリケーション３０１は、ＭＦＰ１０１上で動作するネットワークアプリケーションの集合である。アプリケーション３０１に含まれるネットワークアプリケーションの詳細は図４において後述する。ソケットＩ／Ｆ３０２は、ＯＳにより提供されるソケットＩ／Ｆプログラムである。アプリケーション３０１に含まれるネットワークアプリケーションが通信を行う場合、ソケットＩ／Ｆ３０２を呼び出すことにより、データの送信や受信といった処理が可能になる。
【００３７】
ソケットＩ／Ｆ３０２は、ネットワークアプリケーションが通信を行う際に必ずしも必要なプログラムではないが、ＯＳの種類によらず汎用的なプログラム命令と処理フローを用いることができるため、アプリケーションの開発工数を削減することができる。そのため、ネットワークアプリケーションは、ソケットＩ／Ｆ３０２を呼び出してデータの送受信を行うことが一般的である。ネットワークスタック３０３は、プロトコルスタック群である。ネットワークデバイスドライバ３０４は、ネットワークＩ／Ｆ２０１０のネットワークデバイスドライバである。
【００３８】
パケット取得アプリケーション３０５は、ネットワークＩ／Ｆ２０１０がネットワークを介して送受信するパケットを取得し、パケットデータをパケットデータ３０９に記録するアプリケーションである。パケット取得アプリケーション３０５は、ネットワークデバイスドライバ３０４からデータ取得を行うことにより、ネットワークＩ／Ｆ２０１０が受信する全てのパケットと、ネットワークＩ／Ｆ２０１０が送信する全てのパケットを取得する。
【００３９】
ＩＰＳｅｃモジュール３０６は、送信パケット及び受信パケットに対してＩＰＳｅｃ処理（暗号化や復号化などの処理）を施すモジュールであり、カーネル（ＯＳの機能のうち基本的な部分）の一部として動作している。ＩＰＳｅｃモジュール３０６は、ＩＰｖ４及びＩＰｖ６のプロトコルに対してＩＰＳｅｃを適用する。ＳＰＤ３０７は、ＩＰＳｅｃモジュール３０６により使用され、ＩＰｓｅｃを適用するパケットに対してどのような認証方式と暗号方式を適用するのかを定義するためのセキュリティポリシーの集合からなるデータベースである。
【００４０】
パケット取得サブアプリケーション３０８は、ＩＰＳｅｃよりも上位層でデータの取得を行うプログラムである。パケット取得サブアプリケーション３０８は、取得したデータをパケットデータ３０９に書き込む。また、パケット取得サブアプリケーション３０８は、ＩＰ層のパケットデータの内容とＳＰＤ３０７に保持されているセキュリティポリシーの内容とを比較することで、ＩＰ層のパケットデータがＩＰＳｅｃ適用パケットデータであるか否かを判断する。パケットデータ３０９は、パケット取得アプリケーション３０５やパケット取得サブアプリケーション３０８により取得されたパケットデータを保存する領域である。
【００４１】
アプリケーション３０１、パケット取得アプリケーション３０５、パケット取得サブアプリケーション３０８は、アプリケーションスペースで動作している。ソケットＩ／Ｆ３０２、ネットワークスタック３０３、ネットワークデバイスドライバ３０４、ＩＰＳｅｃモジュール３０６は、カーネルスペースで動作している。
【００４２】
図４は、ＭＦＰ１０１のアプリケーション３０１に含まれるネットワークアプリケーションの構成を示すブロック図である。
【００４３】
図４において、ＭＦＰ１０１のアプリケーション３０１は、ＬＰＤ４０１、ＰＤＬ４０２、ＳＭＴＰ４０３、データ送信アプリケーション４０４を含む。ＬＰＤ４０１は、ＬＰＤ（Line Printer Daemon）プロトコルを使用してネットワーク経由で印刷ジョブを受信するサーバプログラムである。ＰＣ１０２がＬＰＲ（Line Printer Daemon Protocol）を使用して印刷ジョブをＭＦＰ１０１に送信すると、ＬＰＤ４０１が印刷ジョブのデータを受信する。ＬＰＤ４０１が受信した印刷ジョブデータは、ＰＤＬ４０２に転送される。
【００４４】
ＰＤＬ４０２は、印刷ジョブの展開を行うプログラムである。印刷ジョブデータは、ＰＤＬ（Page Description Language）と呼ばれる記述言語で記載される。この記述言語には、印刷ジョブデータの他に印刷に必要な情報が付加されている。例えば用紙のサイズや印刷部数といった情報がそれに当てはまる。ＰＤＬ４０２は、ＰＤＬで記載された印刷ジョブデータを展開し、印刷ジョブデータをビデオ画像に変換し、指定された印刷属性に従ってビデオデータを作成する。作成されたビデオデータは、プリンタ２０９５に転送され印刷処理が行われる。
【００４５】
データ送信アプリケーション４０４は、スキャナ２０７０により原稿からスキャンされた画像データをＬＡＮ１０４を通じてメールサーバ１０３に送信する機能である。スキャンされた画像は、ＪＰＥＧやＰＤＦ（Portable Document Format）といった画像フォーマットでファイル化される。データ送信アプリケーション４０４は、そのファイルをＳＭＴＰ４０３を通じてメールサーバ１０３に転送する。ＳＭＴＰ４０３は、ＳＭＴＰプロトコルを用いてメールサーバ１０３に電子メールの送信を行うネットワークアプリケーションである。本実施の形態では、メールサーバ１０３に電子メールを送信する設定が予めなされているものとする。
【００４６】
本実施の形態は以下の特徴を有する。
【００４７】
ＩＰＳｅｃモジュール３０６は、ネットワーク通信に対してＩＰＳｅｃを適用する。パケット取得アプリケーション３０５は、データリンク層でパケットを取得してパケットデータ３０９に保存する。また、パケット取得アプリケーション３０５は、ＩＰＳｅｃモジュール３０６によりＩＰＳｅｃが適用される以前のＩＰ層パケットデータを取得する。
【００４８】
パケット取得サブアプリケーション３０８は、ＩＰ層パケットデータがＩＰＳｅｃ適用パケットである場合、暗号部を復号したパケットデータに基づいて、パケットデータ３０９に保存されているパケットデータを更新する。即ち、パケットデータ３０９に保存されているパケットデータの暗号化されている部分を、当該部分を復号したパケットデータに上書きする。
【００４９】
また、暗号化されたデータは、当該データの一部が暗号化されており、保存された暗号化されたデータの中の暗号化されている部分を、復号化されたデータで上書きする。また、受信したデータに基づいてハッシュ値を計算する。また、復号化されたデータに基づいてハッシュ値を計算する。そして、計算されたハッシュ値を比較することによってデータを検索する。また、暗号化されたデータは、ネットワーク層よりも上位の階層のデータが暗号化されており、ネットワーク層以下の階層のデータが暗号化されていないデータである。ハッシュ値は、ネットワーク層以下の階層のデータに基づいて計算される。
【００５０】
次に、上記構成を有する本実施の形態のネットワークシステムのＭＦＰ１０１の動作について図５〜図１０を参照しながら説明する。
【００５１】
図５は、ＭＦＰ１０１のパケット受信時の処理を示すフローチャートである。
【００５２】
図５において、ＰＣ１０２がＩＰＳｅｃを適用した印刷ジョブを構成する１つのパケットをＭＦＰ１０１に対して送信し、ＭＦＰ１０１がパケットを受信した際のＭＦＰ１０１の内部処理を示している。尚、ＭＦＰ１０１とＰＣ１０２との間では、図５の内部処理を実行する前に、ＩＰＳｅｃ通信を行う上での前提処理（例えばＩＫＥ（Internet Key Exchange）を用いた互いの鍵交換）が行われているものとする。
【００５３】
ＭＦＰ１０１は、ネットワークを経由したパケットの受信を待機する受信待ち状態となっている。ＭＦＰ１０１のパケット取得アプリケーション３０５は、パケット受信の有無を監視している（ステップＳ５０１）。ネットワークＩ／Ｆ２０１０により受信したパケットを確認した場合には、ステップＳ５０２に移行する。パケット取得アプリケーション３０５は、ネットワークＩ／Ｆ２０１０から受信したパケットデータを取得し、パケットデータ３０９に保存する（ステップＳ５０２）。
【００５４】
上記ステップＳ５０２におけるパケット取得アプリケーション３０５によるパケットデータ保存処理の詳細を図６に基づき説明する。パケット取得アプリケーション３０５は、受信（取得）したパケットがＩＰＳｅｃ適用パケットであるか否かを判断する（ステップＳ６０１）。パケット取得アプリケーション３０５は、受信したパケットデータのデータリンク層に含まれる次ヘッダ情報を参照することで、上記の判断を行う。
【００５５】
データリンク層に含まれる次ヘッダ情報がＩＰ（ＩＰｖ４）またはＩＰｖ６であった場合、パケット取得アプリケーション３０５は、それらのヘッダに含まれる次ヘッダ情報を参照する。その次ヘッダ情報がＩＰＳｅｃを示すＩＤであった場合には、パケット取得アプリケーション３０５は、受信したパケットがＩＰＳｅｃ適用パケットであると判断しステップＳ６０２に移行する。
【００５６】
ステップＳ６０１で受信パケットがＩＰＳｅｃ適用パケットであると判断した場合、パケット取得アプリケーション３０５は、受信したパケットデータのＩＰヘッダ部のデータに対するハッシュ値を計算する（ステップＳ６０２）。ここでハッシュ値を算出する理由は、後述の図５のステップＳ５０７でＩＰＳｅｃの復号後のデータをパケットデータ３０９に上書きする際に、保存済みの複数のパケットデータの内、どのパケットデータに対し上書き処理を施すのかを識別するためである。
【００５７】
後述の図５のステップＳ５０７でも、同様にＩＰヘッダ部のデータに対してハッシュ値を算出することにより、パケットデータ３０９に保存されたパケットデータの中で、ハッシュ値が同値であるパケットが復号される前のパケットであると判断することができる。ここでハッシュ値を使用する理由は、ＩＰヘッダのデータそのものを使用して比較する方法では比較データ数が大きくなり処理負荷が増大するため、データを圧縮する必要があるからである。
【００５８】
次に、パケット取得アプリケーション３０５は、パケットデータ・パケットの受信時間情報・ＩＤに加えてハッシュ値をパケットデータ３０９に記録する（ステップＳ６０３）。パケットデータ３０９はＨＤＤ２００４に存在しているファイル群である。パケット取得アプリケーション３０５は、パケットデータをファイルに記載していく。ファイルが特定のファイルサイズより大きくなった場合には、パケット取得アプリケーション３０５は新規にファイルを生成する。
【００５９】
図７は、ＩＰＳｅｃが適用されたパケットデータをパケット取得アプリケーション３０５がパケットデータ３０９に記録した内容を可視化した一例である。データ部７０１は、ハッシュ情報である。本実施の形態では、ハッシュ情報は１７バイトのデータであり、最上位バイトがハッシュの有無を示す情報である。
【００６０】
ハッシュ情報の最上位バイトの値が１である場合には、２バイト目〜１７バイトまでのハッシュ値領域に有効な値が含まれていることを示す。ハッシュ情報の最上位バイトの値が０である場合には、ハッシュ値領域に値は含まれず０で埋められていることを示す。ハッシュ値領域に有効な値が含まれるのは、受信したパケットがＩＰＳｅｃを適用したパケットの場合であり、その判断は上記ステップＳ６０１で行われる。
【００６１】
データ部７０２は、時間情報である。ＭＦＰ１０１がパケットを受信した時間を図示の例（2007年6月28日9時21分48秒）のように記録している。データ部７０３〜データ部７０５は、パケットデータ本体である。パケット取得アプリケーション３０５は、受信したパケットデータ全てをパケットデータ３０９に書き込む。そのため、パケットデータ３０９に書き込まれるデータは、データリンク層データ部７０３、ＩＰ層データ部７０４、暗号化データ部７０５により構成される。本実施の形態では、暗号化データ部７０５はＥＳＰ(Encapsulating Security Payload）によりパックされているものとする。
【００６２】
尚、図７ではデータ構成を可視化するためにパケットを翻訳した形で記載しているが、パケット取得アプリケーション３０５がパケットデータ３０９に書き込む際には、データ部７０１〜暗号化データ部７０５はバイナリデータで書き込む。
【００６３】
ステップＳ６０１で受信パケットがＩＰＳｅｃ適用パケット以外のパケットであると判断した場合、パケット取得アプリケーション３０５は、パケットデータ・パケットの受信時間情報・ＩＤをパケットデータ３０９に記録する（ステップＳ６０４）。その場合、ハッシュ情報の最上位バイトの値は０となる。
【００６４】
図５に戻り、次にステップＳ５０３に移行し、ＩＰＳｅｃモジュール３０６によるＩＰＳｅｃパケットの判別処理を行う。ステップＳ５０３では、ステップＳ５０１で受信したパケットのデータはネットワークスタック３０３に渡される。ネットワークスタック３０３に渡されるデータはパケットデータのＩＰ層以降のデータである。つまり、データリンク層のデータはネットワークスタック３０３には渡されない。
【００６５】
ＩＰＳｅｃモジュール３０６は、上記パケットデータを参照し、受信パケットがＩＰＳｅｃ適用パケットであるか否かを、パケットデータに含まれる次ヘッダ情報を基に判断する（ステップＳ５０３）。受信パケットがＩＰＳｅｃ適用パケットであると判断した場合には、ＩＰＳｅｃモジュール３０６は、パケットに含まれる暗号化データ部（暗号部）の復号を行う（ステップＳ５０４）。更に、ＩＰＳｅｃモジュール３０６は、復号化されたパケットデータをネットワークスタック３０３に戻し、ステップＳ５０５に移行する。受信パケットがＩＰＳｅｃ適用パケットではないと判断した場合には、ＩＰＳｅｃモジュール３０６は、何もせずにパケットデータをネットワークスタック３０３に戻し、ステップＳ５０５に移行する。
【００６６】
次に、パケット取得サブアプリケーション３０８は、ネットワークスタック３０３に戻されたパケットデータに対して、ＩＰＳｅｃ適用パケットであったか否かの判別処理を行う。パケット取得サブアプリケーション３０８は、ＳＰＤ３０７に保持されているＩＰＳｅｃのセキュリティポリシーの内容とパケットデータの内容とを比較することで、パケットデータがＩＰＳｅｃ適用パケットであったか否かを判断する（ステップＳ５０５）。
【００６７】
図８は、ＳＰＤの内容を例示したものである。ＳＰＤとは、どのような内容のパケットに対してどのようなＩＰＳｅｃのセキュリティを適用するかというポリシーを設定したデータベースである。図８の例では３種類のポリシーが設定されていることを表している。それぞれのポリシーに対して要素８０１〜要素８０６が設定されており、要素の合致するパケットに対してＩＰＳｅｃが適用される。
【００６８】
要素８０１は、送信元ＩＰアドレス（From IP）である。要素８０２は、送信先ＩＰアドレス（To IP）である。要素８０１及び要素８０２は、ＩＰアドレス又はＩＰｖ６アドレスが記載される。要素８０３は、送信元ポート（From ポート）である。要素８０４は送信先ポート（To ポート）である。要素８０５は、プロトコルである。要素８０６は、暗号であり、要素８０１〜要素８０５に合致するパケットに対してどのような暗号を適用するのか示す情報である。
【００６９】
図５に戻り、パケット取得サブアプリケーション３０８は、受信パケットデータの内容がＳＰＤ３０７に登録されている各セキュリティポリシーに合致するか否かを調査する（ステップＳ５０６）。受信パケットデータの内容が任意のセキュリティポリシーに合致していると判断した場合には、パケット取得サブアプリケーション３０８は、復号後のパケットデータをパケットデータ３０９に上書きする処理を行う（ステップＳ５０７）。受信パケットデータの内容が任意のセキュリティポリシーに合致していないと判断した場合には、パケット取得サブアプリケーション３０８は、パケットデータをネットワークスタック３０３に返し、上位のソケットＩ／Ｆ３０２へ渡す。
【００７０】
上記ステップＳ５０７の詳細な処理を図９に基づき説明する。パケット取得サブアプリケーション３０８は、受信パケットデータのＩＰヘッダのデータに対してハッシュ値を計算する処理を行う（ステップＳ９０１）。ハッシュ値の計算は、図６のステップＳ６０２と同様の方法で行う。
【００７１】
次に、パケット取得サブアプリケーション３０８は、パケットスニファによりパケットデータ３０９に保存されている各パケットデータのハッシュ値と、ステップＳ９０１で算出したハッシュ値とを比較する。そして、パケット取得サブアプリケーション３０８は、比較に基づき、同一のハッシュ値を持つパケットデータを検索する（ステップＳ９０２）。
【００７２】
パケットデータ３０９から同一のハッシュ値を持つパケットデータが検索された場合、パケット取得サブアプリケーション３０８は次の処理を行う。パケット取得サブアプリケーション３０８は、受信パケットデータのＩＰ層より上位のデータ部を、パケットデータ３０９に保持されている対応するパケットデータのＩＰ層より上位の部分に上書きする処理を行う（ステップＳ９０３）。尚、パケットの受信時間情報は上書きしない。
【００７３】
図１０は、パケット取得サブアプリケーション３０８により上書きされた後のパケットデータ３０９のイメージを示す一例である。データ部１００１はＴＣＰデータである。パケット取得アプリケーション３０５がパケットデータ３０９にパケットデータを書き込んだ時点で、データ部１００１はＩＰＳｅｃにより暗号化されていたが、パケット取得サブアプリケーション３０８によりデータ部１００１は復号化されている。
【００７４】
以上説明したように本実施の形態によれば、ＩＰＳｅｃにより暗号化されたパケットの全データを復号化された状態で保存することが可能となり、データ解析の効率化が可能となる。
【００７５】
尚、本実施の形態では、IPヘッダのデータに対するハッシュ値を計算し、その値を比較することによって、データを上書きするパケットデータを特定していた。しかし、パケットデータの特定方法は、これに限定されるものではなく、様々な方法が考えられる。
【００７６】
例えば、IPヘッダのデータのハッシュ値を計算するのではなく、IPヘッダのデータそのものを比較してもよい。この場合、比較のためのデータ量は増加するが、ハッシュ値を計算する処理の負荷は減らすことができる。
【００７７】
または、パケットデータを受信した時間の情報を比較してもよい。または、ハッシュ値を計算する場合であっても、IPヘッダのデータのみに対するハッシュ値ではなく、Ethernet(登録商標)ヘッダからIPヘッダまでのデータに対するハッシュ値を計算してもよい。この場合、処理の負荷は増加するが、より多くのデータに対するハッシュ値を計算することになるため、比較結果の信頼性はより上がる。尚、この場合には、デバイスドライバ３０４は、Ethernet(登録商標)ヘッダの処理を行った際に、そのデータを保持しておき、パケット取得サブアプリケーション３０８は、Ethernet(登録商標)ヘッダのデータを改めて取得し直す必要がある。
【００７８】
［第２の実施の形態］
本発明の第２の実施の形態は、上記第１の実施の形態に対して、下記で説明する点において相違する。本実施の形態のその他の要素は、上記第１の実施の形態（図１〜図２）の対応するものと同一なので説明を省略する。
【００７９】
本実施の形態では、上記第１の実施の形態の異なる実装方法として、パケット取得サブアプリケーションがＩＰＳｅｃモジュールのサブセットモジュールの構成をとる場合について説明する。
【００８０】
上記第１の実施の形態では、ＩＰＳｅｃモジュール３０６が独立モジュールとしてＯＳのカーネルスペースで動作し、パケット取得サブアプリケーション３０８についても独立モジュールとしてアプリケーションスペースで動作する構成について説明した。一般的には、ＩＰＳｅｃモジュールはＯＳの一部として動作する。また、パケット取得サブアプリケーションはユーザアプリケーションとしてアプリケーションスペースで動作する。そのため、第１の実施の形態で示したような、ＩＰＳｅｃモジュールとパケット取得サブアプリケーションとが互いに独立した構成が一般的である。
【００８１】
しかしながら、所定のシステムに組み込まれる組み込み機器などではＩＰＳｅｃモジュールやパケット取得アプリケーションを全て自己開発する場合もある。そのような場合には、本実施の形態で示すような、ＩＰＳｅｃモジュールとパケット取得サブアプリケーションとが同一モジュールとして動作する構成のほうが、処理パフォーマンスやプログラムサイズの面で有利となることがある。
【００８２】
図１１は、ＭＦＰ１０１のネットワークパケット処理系の構成を示すブロック図である。
【００８３】
図１１において、ＭＦＰ１０１は、Ｌｉｎｕｘ等の汎用ＯＳを備える。即ち、ＭＦＰ１０１は、アプリケーション３０１、ソケットＩ／Ｆ３０２、ネットワークスタック３０３、ネットワークデバイスドライバ３０４、パケット取得アプリケーション３０５を備える。更に、ＭＦＰ１０１は、ＳＰＤ３０７、パケットデータ３０９、パケット取得サブアプリケーション１１０２を有するＩＰＳｅｃモジュール１１０１を備える。
【００８４】
アプリケーション３０１は、ＭＦＰ１０１上で動作するネットワークアプリケーションの集合である。第１の実施の形態と異なる点は、ＩＰＳｅｃモジュール１１０１とパケット取得サブアプリケーション１１０２との関係である。パケット取得サブアプリケーション１１０２はＩＰＳｅｃモジュール１１０１の一部として動作しており、カーネルスペースで動作している。
【００８５】
パケット受信時の処理は第１の実施の形態で示した図５のフローチャートと大きな差異はないが、詳細な処理の違いがある。ステップＳ５０５〜ステップＳ５０７の処理はパケット取得サブアプリケーション１１０２で行われる処理であるが、本実施の形態ではパケット取得サブアプリケーション１１０２はＩＰＳｅｃモジュール１１０１の内部モジュールとして動作している。これにより、ステップＳ５０４でＩＰＳｅｃモジュール１１０１が復号化した後のパケットデータをネットワークスタック３０３に戻す処理が不要となるため、処理速度の向上を図ることが可能となる。
【００８６】
［第３の実施の形態］
本発明の第３の実施の形態は、上記第１の実施の形態に対して、下記で説明する点において相違する。本実施の形態のその他の要素は、上記第１の実施の形態（図１〜図３）の対応するものと同一なので説明を省略する。
【００８７】
本実施の形態では、上記第１の実施の形態の構成において、ＭＦＰ１０１からネットワーク経由でパケットをＰＣ１０２に送信する場合について説明する。
【００８８】
ＭＦＰ１０１がＰＣ１０２にパケットデータを送信する場合、アプリケーション３０１はソケットＩ／Ｆ３０２を介してパケットデータを送信する。ソケットＩ／Ｆ３０２はネットワークスタック３０３に送信パケットデータを渡す。パケット取得サブアプリケーション３０８はネットワークスタック３０３にフッキングしているため、ネットワークスタック３０３に渡された送信パケットデータを取得することができる。
【００８９】
図１２は、ＭＦＰ１０１のパケット送信時の処理を示すフローチャートである。
【００９０】
図１２において、パケット取得サブアプリケーション３０８は、ソケットＩ／Ｆ３０２からネットワークスタック３０３に送信パケットデータが渡されたか否かを監視している（ステップＳ１２０１）。ソケットＩ／Ｆ３０２からネットワークスタック３０３に送信パケットデータが渡された場合には、パケット取得サブアプリケーション３０８は、ネットワークスタック３０３から送信パケットデータを取得する。
【００９１】
次に、パケット取得サブアプリケーション３０８は、ＳＰＤ３０７に保持されているＩＰＳｅｃのセキュリティポリシーの内容と、送信パケットデータの内容とを比較する（ステップＳ１２０２）。更に、パケット取得サブアプリケーション３０８は、送信パケットデータがＩＰＳｅｃ適用パケット（暗号対象パケット）であるか否かを判断する（ステップＳ１２０３）。パケット取得サブアプリケーション３０８がネットワークスタック３０３から取得した送信パケットデータは、ＩＰ層データまでが付加されたデータ形式であるため、ＳＰＤ３０７の保持内容との比較が可能である。
【００９２】
送信パケットデータがＩＰＳｅｃ適用パケットであると判断した場合には、ステップＳ１２０４に移行する。パケット取得サブアプリケーション３０８は、送信パケットデータのＩＰ層のハッシュ値と送信パケットデータを仮に記憶し、ステップＳ１２０５に移行する（ステップＳ１２０４）。即ち、パケット取得サブアプリケーション３０８は、送信パケットデータのＩＰ層データからハッシュ値を算出し、そのハッシュ値及び送信パケットデータを一時記憶領域に記憶する。送信パケットデータがＩＰＳｅｃ適用パケットではないと判断した場合には、直接ステップＳ１２０５に移行する。
【００９３】
一時記憶領域とは、ＲＡＭ２００２の記憶領域又はＨＤＤ２００４の記憶領域である。取得したパケットデータが送信パケットデータであった場合、一時記憶領域に記憶する。パケット取得サブアプリケーション３０８は、取得したパケットデータの送信元ＩＰアドレスが自装置（ＭＦＰ１０１）のＩＰアドレスであった場合のみ、ステップＳ１２０４の処理を行う。
【００９４】
次に、ＩＰＳｅｃモジュール３０６によるＩＰＳｅｃパケットの判別処理を行う。即ち、ＩＰＳｅｃモジュール３０６は、ネットワークスタック３０３が受け取ったパケットデータを参照し、パケットがＩＰＳｅｃ適用パケットであるか否かを、パケットデータに含まれる次ヘッダ情報を基に判断する（ステップＳ１２０５）。パケットがＩＰＳｅｃ適用パケットであると判断した場合には、ＩＰＳｅｃモジュール３０６は、パケットに含まれるＩＰ層よりも上位の層のデータの暗号化を行う（ＩＰＳｅｃを適用する）（ステップＳ１２０６）。更に、ＩＰＳｅｃモジュール３０６は、暗号化したパケットデータをネットワークスタック３０３に戻す。
【００９５】
パケットがＩＰＳｅｃ適用パケットではないと判断した場合には、ＩＰＳｅｃモジュール３０６は、何もせずにパケットデータをネットワークスタック３０３に戻す。ネットワークスタック３０３は、ＰＣ１０２に対する送信パケットデータをネットワークデバイスドライバ３０４に渡す。ネットワークデバイスドライバ３０４は、受け取った送信パケットデータにデータリンク層のデータを付加する。
【００９６】
次に、パケット取得アプリケーション３０５は、ネットワークデバイスドライバ３０４から送信パケットデータを取得する（ステップＳ１２０７）。更に、パケット取得アプリケーション３０５は、取得した送信パケットデータのＩＰ層に対するハッシュ値を計算し、パケットデータ３０９にデータを書き込む。書き込まれるデータは、パケットの送信時間情報、ハッシュ値、パケットデータ本体から構成される。
【００９７】
次に、パケット取得サブアプリケーション３０８は、パケットデータ３０９に記録されているパケットデータの中から、ステップＳ１２０４で仮記憶したハッシュ値に対応するパケットデータを参照し、仮記憶したデータに上書きする（ステップＳ１２０８）。この処理により、ステップＳ１２０６で暗号化が施され且つステップＳ１２０７でパケットデータ３０９に書き込まれたＩＰＳｅｃ適用データに対して、暗号化が施される前のデータを上書きする。これにより、非暗号化データをパケットデータ３０９に記録することが可能である。
【００９８】
［他の実施の形態］
上記各実施の形態では、図１に示すネットワークシステムを例に挙げたが、ネットワークシステムを構成する装置（ＭＦＰ、ＰＣ、メールサーバ）の設置数や種類は図示のものに限定されるものではない。
【００９９】
また、上記各実施の形態では、本発明の情報処理装置の一例としてＭＦＰとした場合を説明したが、これに限定されるものではない。本発明の情報処理装置は、ＭＦＰ以外の装置、例えば、プリンタやスキャナ、ファクシミリやコピー機、パーソナルコンピュータや携帯電話であっても構わない。
【０１００】
また、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はＣＰＵやＭＰＵ等)が記憶媒体に格納されたプログラムコードを読み出す処理である。
【０１０１】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１０２】
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【０１０３】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１０４】
更に、前述した実施形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行う場合である。
【図面の簡単な説明】
【０１０５】
【図１】本発明の第１の実施の形態に係るネットワークシステムの構成例を示す図である。
【図２】情報処理装置としてのＭＦＰのコントローラユニットの主要部の構成を示すブロック図である。
【図３】ＭＦＰのネットワークパケット処理系の構成を示すブロック図である。
【図４】ＭＦＰのアプリケーションに含まれるネットワークアプリケーションの構成を示すブロック図である。
【図５】ＭＦＰのパケット受信時の処理を示すフローチャートである。
【図６】ＭＦＰのパケット取得アプリケーションのパケットデータ保存処理を示すフローチャートである。
【図７】暗号化されたパケット構造を示す図である。
【図８】ＳＰＤの構成を示す図である。
【図９】ＭＦＰのパケット取得サブアプリケーションの処理を示すフローチャートである。
【図１０】復号後のパケット構造を示す図である。
【図１１】本発明の第２の実施の形態に係るＭＦＰのネットワークパケット処理系の構成を示すブロック図である。
【図１２】本発明の第２の実施の形態に係るＭＦＰのパケット送信時の処理を示すフローチャートである。
【符号の説明】
【０１０６】
１０１  ＭＦＰ
１０２  ＰＣ
１０３  メールサーバ
１０４  ＬＡＮ
３０１  アプリケーション
３０２  ソケットＩ／Ｆ
３０３  ネットワークスタック
３０４  ネットワークデバイスドライバ
３０５  パケット取得アプリケーション
３０６  ＩＰＳｅｃモジュール
３０８  パケット取得サブアプリケーション
３０９  パケットデータ
１１０１  ＩＰＳｅｃモジュール
１１０２  パケット取得サブアプリケーション
【図１】
0005094543.tif 000002
【図２】
0005094543.tif 000003
【図３】
0005094543.tif 000004
【図４】
0005094543.tif 000005
【図５】
0005094543.tif 000006
【図６】
0005094543.tif 000007
【図７】
0005094543.tif 000008
【図８】
0005094543.tif 000009
【図９】
0005094543.tif 000010
【図１０】
0005094543.tif 000011
【図１１】
0005094543.tif 000012
【図１２】
0005094543.tif 000013