(57)【要約】【課題】  コンピュータ周辺装置におけるコンピュータ・ウイルスによる被害を最小限に抑えること。【解決手段】  本発明のコンピュータ周辺装置は、受信したデータがコンピュータ・ウイルスに感染しているかどうかを検査する検査ステップ（Ｓ２０７）を有する。この方法は、受信したデータが所定の条件（Ｓ２０３）を満たす場合には所定のデータ処理（Ｓ２０６）の後に前記検査ステップ（Ｓ２０７）を実行し、受信したデータが前記所定の条件（Ｓ２０３）を満たさない場合には所定のデータ処理（Ｓ２１０）の前段階で前記検査ステップ（Ｓ２０７）を実行するよう制御する。【選択図】  図２
2004178559.tif 000002
【特許請求の範囲】
【請求項１】
外部機器から処理対象のデータを受信し、所定のデータ処理を行うコンピュータ周辺装置であって、
受信したデータがコンピュータ・ウイルスに感染しているかどうかを検査する検査手段と、
受信したデータが所定の条件を満たす場合には前記所定のデータ処理の後に前記検査手段を起動し、受信したデータが前記所定の条件を満たさない場合には前記所定のデータ処理の前に前記検査手段を起動する制御手段と、
を有することを特徴とするコンピュータ周辺装置。
【請求項２】
コンピュータ・ウイルスに感染したデータの受信履歴を記憶する記憶手段を更に有し、
前記所定の条件は、受信したデータの供給元を特定する情報が前記受信履歴に含まれていないこと、とすることを特徴とする請求項１に記載のコンピュータ周辺装置。
【請求項３】
安全な送信元の集合を特定する情報を記述したテーブルを記憶する記憶手段を更に有し、
前記所定の条件は、受信したデータの供給元を特定する情報が前記テーブルに含まれていること、とすることを特徴とする請求項１に記載のコンピュータ周辺装置。
【請求項４】
前記所定の条件は、送信元であらかじめ行われたコンピュータ・ウイルスの検査に使用されたパターンファイルのバージョンが前記検査手段で使用されるパターンファイルのバージョンよりも古くないこと、とすることを特徴とする請求項１に記載のコンピュータ周辺装置。
【請求項５】
前記コンピュータ周辺装置は印刷装置を含むことを特徴とする請求項１から４までのいずれかに記載のコンピュータ周辺装置。
【請求項６】
外部機器から処理対象のデータを受信し、所定のデータ処理を行うコンピュータ周辺装置の制御方法であって、
受信したデータがコンピュータ・ウイルスに感染しているかどうかを検査する検査ステップと、
受信したデータが所定の条件を満たす場合には前記所定のデータ処理の後に前記検査ステップを実行し、受信したデータが前記所定の条件を満たさない場合には前記所定のデータ処理の前に前記検査ステップを実行するよう制御する制御ステップと、
を有することを特徴とするコンピュータ周辺装置の制御方法。
【請求項７】
コンピュータ・ウイルスに感染したデータの受信履歴を記憶する記憶ステップを更に有し、
前記所定の条件は、受信したデータの供給元を特定する情報が前記受信履歴に含まれていないこと、とすることを特徴とする請求項６に記載のコンピュータ周辺装置の制御方法。
【請求項８】
安全な送信元の集合を特定する情報を記述したテーブルをあらかじめ記憶する記憶ステップを更に有し、
前記所定の条件は、受信したデータの供給元を特定する情報が前記テーブルに含まれていること、とすることを特徴とする請求項６に記載のコンピュータ周辺装置の制御方法。
【請求項９】
前記所定の条件は、送信元であらかじめ行われたコンピュータ・ウイルスの検査に使用されたパターンファイルのバージョンが前記検査ステップで使用されるパターンファイルのバージョンよりも古くないこと、とすることを特徴とする請求項６に記載のコンピュータ周辺装置の制御方法。
【請求項１０】
外部機器から処理対象のデータを受信し、所定のデータ処理を行うコンピュータ周辺装置に、
受信したデータがコンピュータ・ウイルスに感染しているかどうかを検査する検査ステップ、
受信したデータが所定の条件を満たす場合には前記所定のデータ処理の後に前記検査ステップを実行し、受信したデータが前記所定の条件を満たさない場合には前記所定のデータ処理の前に前記検査ステップを実行するよう制御する制御ステップ、
を実行させるためのプログラム。
【請求項１１】
請求項１０に記載のプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部機器から供給されたデータに対して特定の処理を行うコンピュータ周辺装置におけるコンピュータ・ウイルス対策技術に関する。
【背景技術】
【０００２】
不正ジョブまたはデータの代表的な一例として、コンピュータ・ウイルスを挙げることができる。例えば、特開平６−３５０７８４号公報には、このコンピュータ・ウイルスの感染を抑制する装置として、受信したファイルがコンピュータ・ウイルスに汚染されていることを検知した場合に、汚染されたファイルを消去し、ファイル送信者に対して警告を発するファクシミリ装置が開示されている。また、特開平１１−１１９９２７号公報には、印刷用データとプログラム用言語が受信され、プログラム用言語に混入したコンピュータ・ウイルスを検知し、除去するプリンタ装置が開示されている。
【０００３】
【特許文献１】特開平６−３５０７８４号公報
【特許文献２】特開平１１−１１９９２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
近年は、プリンタ等のコンピュータ周辺装置がウイルス検査機能を有し、受信したジョブに対しウイルス検査を実施した後にデータ処理を行うウイルス検査優先モードと、受信したジョブのデータ処理を完了した後にウイルス検査を行うデータ処理優先モード（高速処理モード）とのいずれかで動作させることが可能なものもある。
【０００５】
しかし、上記のような高速処理モードを有する場合、その高速処理モードで、装置自体に問題を生じさせるようなコンピュータ・ウイルスで汚染されたジョブを断続的に受信してしまうと、装置の被害が甚大なものとなるおそれがある。
【０００６】
例えばプリンタや複合機の場合、制御プログラムは、プリンタコントローラ、ビデオコントローラなどのハードウェアを直接制御可能な強い権限を有することが多いので、悪意のあるデータをジョブに潜ませて、それを制御プログラムに処理させることで装置に被害を与えるようなアタックが考えられる。このような悪意ある第三者からのアタックの具体例を以下に挙げる。
【０００７】
第１に、クライアントＰＣ（パーソナル・コンピュータ）からプリンタに送信される印刷ジョブによる内部データ破壊が挙げられる。プリンタは通常、図１１に示すように、クライアントＰＣから転送されてきた印刷データ（ＰＤＬ ＪＯＢ）に含まれているコマンドに応じて、プリンタ内部のハードディスクの特定領域に保存されたフォントなどのデータを読み出し、コントローラ内部で展開する。第１のアタック例は、この仕組みを逆手にとり、図１２に示すように、フォントデータにみせかけた悪意のあるデータを印刷ジョブに潜ませ、このデータをプリンタ内部のハードディスクの特定領域に逆に書き込ませることで、その特定領域に保存されていたフォントやプログラムなどのデータを破壊するというものである。
【０００８】
第２に、クライアントＰＣから複合機に送信されるジョブによる無差別送信攻撃が挙げられる。複合機Ａから複合機Ｂにファクシミリを送信するケースを考える。これは通常、図１３に示すように、複合機Ａが、クライアントＰＣから受け取ったファクシミリ送信ジョブ（ＳＥＮＤジョブ）に含まれている宛先指定コマンドを読み取ることで行われる。第２のアタック例は、この仕組みを利用して、図１４に示すように、ファクシミリ送信ジョブの宛先指定コマンドに悪意のあるコードを埋め込むことで、複合機Ａ内部に保存されているアドレス帳データすべてに対して同じジョブを強制的に送信させるというものである。仮に送信先が同種の複合機である場合には、同じ処理が再帰的に繰り返され、瞬時に広範囲に悪意のあるコードが伝播する可能性もある。
【０００９】
第３に、クライアントＰＣから複合機に送信される保存ジョブによる内部データ破壊が挙げられる。複合機は通常、図１５に示すように、クライアントＰＣから転送されてきた保存ジョブ（ＢＯＸ ＪＯＢ）に含まれている保存先を制御するためのコマンドに応じて、複合機内部のハードディスクの特定領域（ボックス）にデータを保存することができる。第３のアタック例は、この仕組みを利用して、図１６に示すように、保存ジョブにおける保存先を制御するためのコマンド悪意のあるコードを潜ませ、これにより、既に保存されているボックス内部のすべてのデータを消去しながら上書きする、というものである。
【００１０】
本発明は、上記のようなコンピュータ・ウイルスによる被害を最小限に抑えることのできるコンピュータ周辺装置およびその制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一側面によれば、例えば、外部機器から処理対象のデータを受信し、所定のデータ処理を行うコンピュータ周辺装置であって、受信したデータがコンピュータ・ウイルスに感染しているかどうかを検査する検査手段と、受信したデータが所定の条件を満たす場合には前記所定のデータ処理の後に前記検査手段を起動し、受信したデータが前記所定の条件を満たさない場合には前記所定のデータ処理の前に前記検査手段を起動する制御手段とを有することを特徴とするコンピュータ周辺装置が提供される。
【発明の効果】
【００１２】
本発明によれば、コンピュータ周辺装置におけるコンピュータ・ウイルスによる被害を最小限に抑えることができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。
【００１４】
（第１の実施形態）
図１は、本実施形態におけるコンピュータ周辺装置としてのプリンタの構成を示すブロック図である。
【００１５】
プリンタ１００は、外部機器としてのクライアントＰＣ１２０と通信可能に接続されている。なお、図１にはプリンタ１００に接続されたクライアントＰＣが１台だけ描かれているが、実際には複数のクライアントＰＣが存在しうることに注意されたい。これらのクライアントＰＣはプリンタ１００へのデータの供給元となることから、以下では、「供給元コンピュータ」とよぶこともある。なお、クライアントＰＣとプリンタとの接続形態は有線、無線を問わない。
【００１６】
プリンタ１００は基本的には、クライアントＰＣ１２０から供給されるデータに基づいて印刷処理を実行する。プリンタ１００において、メインＣＰＵ１０１は、全体の制御を行う中央制御ユニットである。ネットワーク制御部１０２は、クライアントＰＣ１２０からのプリント要求やプリントデータ、保存要求や保存データの受信、ならびに、プリンタ１００のステータス情報、例えば、紙詰まりによるエラー情報などの、クライアントＰＣ１２０への送信、といった送受信を制御するユニットである。
【００１７】
周辺制御部１０３は、メインＣＰＵ１０１に接続される周辺機器となる１０４から１０８の制御を行うユニットである。ＲＡＭ１０４は、プリントデータなどを一時的に保存するとともに主記憶装置として記憶するメモリであり、ＲＯＭ１０５は、プリンタ１００自身の起動などの制御を含めた装置全体の制御を行うための制御プログラム５０等を保存する読み出し専用のメモリである。
【００１８】
ハードディスクユニット１０６は、プリントデータや保存データなどを一時的あるいは恒久的に保存したり、ＲＡＭ１０４の容量を超えるデータを一時的に退避したりする場合などの対処に用いる磁気記録媒体、すなわち、不揮発性の記憶手段である。また、このハードディスクユニット１０６は、図示の如く、コンピュータ・ウイルス（以下、単に「ウイルス」という。）の感染の有無を検査するためのウイルス検査プログラム５１、ウイルスを駆除するためのウイルス駆除プログラム５２をはじめ、ウイルス検出用のパターンファイル５３および後述するウイルス感染ログ５４も記憶している。ウイルス検査プログラム５１およびウイルス駆除プログラム５２は、上記した制御プログラム５０によりコールされて、ＲＡＭ１０４にロードされてメインＣＰＵ１０１によって実行されることになる。
【００１９】
パネル１０７は、プリンタ１００の状態を表示するモニタであり、キー１０８は、プリンタ１００本体への制御リクエストやパネル１０７への表示切替えを受け付ける入力デバイスである。
【００２０】
エンジン制御部１０９は、プリンタエンジン１１０の駆動や出力データ転送などの制御を行う制御部であり、プリンタエンジン１１０は、最終的な出力画像を出力するプリンタ機構部である。
【００２１】
上記のプリンタはウイルス検査プログラム５１によるウイルス検査機能を有し、受信したジョブに対しウイルス検査を実施した後にデータ処理を行う「ウイルス検査優先モード」と、受信したジョブに対する特定のデータ処理（例えばプリント動作）を完了した後にウイルス検査を行う「データ処理優先モード（高速処理モード）」のいずれかの動作モードで動作させることが可能である。具体的には、高速処理モードでは、ウイルス検査による動作速度の低下を回避するために、ジョブ処理終了後、または、ジョブ処理終了後一定期間ＣＰＵ１０１がジョブを受信していない状態を経過した後に、受信したプリントデータのウイルス検査を行う。
【００２２】
図２は、本実施形態におけるプリンタ１００の処理内容を示すフローチャートである。このフローチャートに対応するプログラムはＲＯＭ１０５に記憶された制御プログラム５０に含まれ、メインＣＰＵ１０１によって実行されるものである。
【００２３】
まず、ステップＳ２０１において、プリントジョブの有無を判定する。ここでプリンタ１００は、クライアントＰＣ１２０からプリント要求を受信すると、具体的には次のように動作する。まず、ネットワーク制御部１０２はプリンタ内部のステータス情報を取得するためのコマンドをメインＣＰＵ１０１に対して要求する。これに応じてメインＣＰＵ１０１は、周辺制御部１０３に対して、すべての内部機器状態の正常性を検証させる。メインＣＰＵ１０１は、プリンタ１００の内部状態に異常がないことがを確認すると、ネットワーク制御部１０２に、プリンタ１００の内部状態は正常である旨のコードを送信する。逆に、プリンタ１００の内部状態に異常がある場合は、異常個所を示すエラーコードを含むコードをネットワーク制御部１０２に送信する。ネットワーク制御部１０２は、メインＣＰＵ１０１からこのような内部状態に関するコードを受信すると、そのコードをクライアントＰＣ１２０に転送する。そして、クライアントＰＣ１２０は、受信したそのコードに基づいてプリンタ１００の内部状態が正常であると判断すると、プリントデータの送信を開始することになる。
【００２４】
ここで、クライアントＰＣ１２０からプリンタ１００に供給するプリントジョブデータの構造例を図３に示す。
【００２５】
同図に示すように、プリントジョブデータは例えば、プリントデータ３０８の他に、送信元ユーザ名３０１、送信元コンピュータ名３０２、送信元コンピュータのネットワーク物理アドレス３０３、送信元コンピュータのＩＰアドレス３０４、送信元コンピュータが属するドメイン名３０５、プリント出力許可を得るためのパスワード情報３０６、動作モード（ウイルス検査優先モード／高速処理モード）を指示する情報（フラグ）３０７、などの属性情報を含む。
【００２６】
次に、ステップＳ２０２で、クライアントＰＣ１２０からのプリントデータをすべて受信すると、そのジョブにおける動作モードの指示フラグ３０７をチェックする。ここで、高速処理モードが指示されていた場合には、ステップＳ２０３に進み、ハードディスクユニット１０６に記録されているウイルス感染ログ５４（すなわち、ウイルスに感染したデータの受信履歴）をＲＡＭ１０４にロードし、その内容を検索する。ウイルス感染ログ５４の構造例を図４に示す。
【００２７】
ウイルス感染ログ５４は例えば、ログの個別情報をインデックス付けするためのログナンバー（LOG NO）、感染データを送付したユーザ名（USER NAME）、感染データを送付した日付情報（DATE）、ウイルスの型に関する情報（VIRUS TYPE）などを含む。さらに、本実施形態によれば、このウイルス感染ログ５４は、高速処理モードによる動作の可否を示すデータ（FAST PRINT FLAG）も含む。ここでは例えば、FAST PRINT FLAG＝０であれば、高速処理モードによる動作は無効であることを示し、逆に１であれば、高速処理モードによる動作は有効であることを示している。なお、このFAST PRINT FLAGは、プリンタ１００のパネル１０７またはキー１０８からの入力に基づいて設定され得るように構成されていてもよいし、および／または、外部機器から入力された情報に基づいて設定され得るように構成されていてもよい。
【００２８】
ステップＳ２０３において、ウイルス感染ログ５４の内容を検索した結果、受信データの送信元ユーザ名３０１と一致するユーザ名（USER NAME）のログはない、または、受信データの送信元ユーザ名３０１と一致するユーザ名のログがあっても、そのログのFAST PRINT FLAGが１に設定されている場合（すなわち、高速処理モードによる動作が有効とされている場合）には、ステップＳ２０６に進み、受信したデータのジョブ処理（例えばプリント動作）を実行して、その後ステップＳ２０７に進む。
【００２９】
一方、ステップＳ２０３において、ウイルス感染ログ５４の内容を検索した結果、ウイルス感染ログ５４に受信データの送信元ユーザ名３０１と一致するユーザ名（USER NAME）のログがある場合、好ましくはなおかつ、そのログのFAST PRINT FLAGが０に設定されている場合（すなわち、高速処理モードによる動作が無効とされている場合）には、ステップＳ２０４に進み、受信したデータの中の動作モードの指示フラグ３０７を変更することで高速処理モードを解除（すなわち、ウイルス検査優先モードに変更）し、ステップＳ２０５に進む。なお、図４のLOG No.0001と0003のように、同一ユーザによる履歴が複数ある場合、例えば、それらのうち１つでもFAST PRINT FLAG＝０となっている履歴があれば、この場合にもステップＳ２０４に進んで高速処理モードを解除することが安全の観点からは好ましいであろう。ステップＳ２０５では、高速処理モードを解除した旨を報知するための警告データ（例えばハードディスク１０６に保存されている）をＲＡＭ１０４にロードし、エンジン制御部１０９からプリンタエンジン１１０に警告データをプリントデータ化し、警告データをプリント出力し、その後ステップＳ２０７に進む。このように、ステップＳ２０３においてウイルス感染ログ５４の内容に基づいて受信データの安全性が確保されていないと判断されたときは、ステップＳ２０６のジョブ処理がスキップされ、高速処理モードが解除される。
【００３０】
また、ステップＳ２０２において、高速処理モードが指示されていなかった場合（すなわち、ウイルス検査優先モードが指示されていた場合）は、そのままステップＳ２０７に進む。
【００３１】
ステップＳ２０７では、ハードディスクユニット１０６に保存されているウイルス検査プログラム５１をコールする。これに応じてウイルス検査プログラム５１およびウイルス検出用のパターンファイル５３がＲＡＭ１０４にロードされてウイルス検査プログラム５１が起動し、ウイルスチェックが行われる。そして、ステップＳ２０８で、ウイルスチェックの結果、プリントデータがウイルスに感染されているか否かを判断する。ここで、プリントデータがウイルスに感染していないと判断された場合は、ウイルス検査プログラム５１を終了してステップＳ２０９に進む。
【００３２】
ステップＳ２０９では、プリンタ１００が高速処理モードで動作中か否かを判断する。これは、ステップＳ２０６によるジョブ処理が実行されたか否かで判断できる。上記のとおり、ステップＳ２０６が実行されるのは、受信データについて高速処理モードが指示されており（ステップＳ２０２，ＹＥＳ）、なおかつ、ウイルス感染ログ５４の内容を検索した結果、問題がなかった場合（ステップＳ２０３，ＮＯ）である。この場合は、すでにステップＳ２０６でジョブ処理を終了しているので、本処理を終了する。一方、これ以外の場合にはステップＳ２１０に進み、ここで対応するジョブ処理を実行する。
【００３３】
ステップＳ２０８で、プリントデータがウイルスに感染していると判断された場合は、ステップＳ２１１に進み、ハードディスクユニット１０６に記憶されているウイルス駆除プログラム５２をコールする。これに応じてウイルス駆除プログラム５２がＲＡＭ１０４にロードされてウイルス駆除プログラム５２が起動する。これにより、プリントデータに含まれるウイルスが無効化される。
【００３４】
続くステップＳ２１２では、図４に示したようなフォーマットに従い、ＲＡＭ１０４にロードされているウイルス感染ログ５４に新たなログナンバーを生成して当該プリントデータの感染ログを追記する。こうして更新されたウイルス感染ログ５４は、ハードディスクユニット１０６にも複製される。さらに、この時点で高速処理モードが無効になっていなければ、これを無効にしておく。
【００３５】
次に、ステップＳ２１３で、受信データがウイルス感染しておりウイルス駆除を実行した旨を示す警告データ（例えばハードディスク１０６に保存されている）をＲＡＭ１０４にロードし、エンジン制御部１０９からプリンタエンジン１１０に警告データをプリントデータ化し、警告データをプリント出力し、本処理を終了する。
【００３６】
上述の第１の実施形態によれば、ウイルスチェックよりジョブ処理の実行を優先する高速処理モードが指定されていても（ステップＳ２０２，ＹＥＳ）、ステップＳ２０３においてウイルス感染ログ５４の内容を検索した結果、受信データがウイルスに感染している可能性があると判断されると、ステップＳ２０６のジョブ処理がスキップされ、その結果高速処理モードが解除される。
【００３７】
以上説明したように、本実施形態におけるプリンタは、供給されたデータのウイルスチェックを行う検査部を有するとともに、ウイルスに感染したデータの受信履歴をメモリに記憶している。このプリンタは更に、プリント動作などの所定のデータ処理の前にウイルス検査を実行するウイルス検査優先モードか、所定のデータ処理の後にウイルス検査処理を実行するデータ処理優先モード（高速処理モード）かを選択し、選択したモードに従いウイルス処理の実行タイミングを制御する制御部を有する。そして、この制御部は、高速処理モードを選択した場合において、上記受信履歴に基づいて、その高速処理モードをウイルス検査優先モードに変更する。
【００３８】
なお、以上説明した処理に加えて、ステップＳ２０３で高速処理モードが解除されてから所定期間が経過すると、高速処理モードが再設定されるようにプログラムされていてもよいであろう。
【００３９】
また、この第１の実施形態では、ステップＳ２０６の高速処理モード時のジョブ処理実行後、ステップＳ２０７に遷移し、ウイルスチェックが行われるようにした。しかし、高速処理モードのジョブが連続的に投入されている場合には、ジョブを処理していない状態が一定期間経過した後にウイルスチェックを実行するようにしてもよいし、ある特定の時刻（例えば、午前２時）にウイルスチェックを実行するようにしてもよい。
【００４０】
上述した第１の実施形態では、外部機器からプリント対象のデータを受信し、プリント処理を行うプリンタについて説明したが、本発明は、このようなプリント機能のみならず、ファクシミリ送受信機能、ネットワークを介して複数の宛先に電子データを一斉配信するユニバーサルセンド機能、機器内部の不揮発性メモリ（ハードディスクユニットなど）にデータを保存するボックス機能などを備えた複合型のデータ処理装置（複合機）などのコンピュータ周辺装置にも適用することができる。
【００４１】
（第２の実施形態）
第２の実施形態は、供給されたデータの属性情報に基づき、ウイルスチェック処理の実行タイミングを制御するものである。
【００４２】
図９は、本実施形態におけるプリンタの構成を示すブロック図である。第１の実施形態で示した図１における構成要素と同じ構成要素には同一の参照番号を付してある。ご覧のように、このプリンタの構成は上述の第１の実施形態におけるプリンタとほぼ同様であるので各々の説明は省略する。第１の実施形態におけるプリンタと相違する点は、ハードディスクユニット１０６に、後述する安全性検査用テーブル６０が更に記憶されている点である。
【００４３】
また、本実施形態におけるクライアントＰＣ１２０は具体的には図１０に示すように構成されている。
【００４４】
同図において、１はこのコンピュータ全体の制御をつかさどるＣＰＵ、２はブートプログラム等を記憶しているＲＯＭ、３は主記憶装置として機能するＲＡＭ、４は各種プログラムやデータを記憶するハードディスク装置（ＨＤＤ）である。また、５は表示しようとするイメージデータを展開するメモリ（ＶＲＡＭ）であり、ここにイメージデータ等を展開することでＣＲＴ６に表示させることができる。７および８はそれぞれ、入力デバイスとしてのキーボードおよびマウスである。９はプリンタ１００に接続するためのインタフェース（Ｉ／Ｆ）である。本実施形態では、ＨＤＤ４には、図示のように、ＯＳ４１をはじめ、プリンタ１００用のプリントジョブデータを生成するためのプリンタドライバ・プログラム４２（以下、単に「プリンタドライバ」という。）、ウイルス検査プログラム４３、ウイルス駆除プログラム４４、パターンファイル４５、ウイルス検査ログ４６などがインストールされている。
【００４５】
図５は、本実施形態におけるプリンタ１００によるデータ処理を示すフローチャートである。このフローチャートに対応するプログラムはＲＯＭ１０５に記憶された制御プログラムに含まれ、メインＣＰＵ１０１によって実行されるものである。
【００４６】
まず、ステップＳ５０１において、プリントジョブの有無を判定する。
【００４７】
ここでプリンタ１００は、クライアントＰＣ１２０からプリント要求を受信すると、次のように動作する。まず、ネットワーク制御部１０２はプリンタ内部のステータス情報を取得するためのコマンドをメインＣＰＵ１０１に対して要求する。これに応じてメインＣＰＵ１０１は、周辺制御部１０３に対して、すべての内部機器状態の正常性を検証させる。メインＣＰＵ１０１は、プリンタ１００の内部状態に異常がないことを確認すると、ネットワーク制御部１０２に、プリンタ１００の内部状態は正常である旨のコードを送信する。逆に、プリンタ１００の内部状態に異常がある場合は、異常個所を示すエラーコードを含むコードをネットワーク制御部１０２に送信する。ネットワーク制御部１０２は、メインＣＰＵ１０１からこのような内部状態に関するコードを受信すると、そのコードをクライアントＰＣ１２０に転送する。
【００４８】
クライアントＰＣ１２０は、プリンタ１００から受信したコードに基づいてプリンタ１００の内部状態が正常であると判断すると、プリンタドライバ４２を起動する。プリンタドライバ４２は、パターンファイル４５を参照して、そのファイルの属性値（例えば、パターンファイル４５のバージョン情報）を読み出すとともに、ウイルス検査ログ４６を参照して、ウイルスチェック最終履歴（例えば、最後にウイルス検査が実行された日付情報）を読み出し、これら読み出した情報を、プリンタ１００に送信しようとするプリントジョブデータに属性値として付加する。プリンタドライバは更に、送信元ユーザ名、送信元コンピュータ名、ネットワーク物理アドレス、ネットワークＩＰアドレス、送信元ドメイン名、プリンタドライバ４２のバージョン情報などを、属性値としてそのプリントジョブデータに付加する。プリンタドライバはその後、そのプリントジョブデータの送信を開始する。
【００４９】
ここで、プリンタドライバ４２によって生成されるプリントジョブデータの構造例を図６に示す。
【００５０】
同図に示すように、プリントジョブデータは、プリントデータ６１１の他に、送信元ユーザ名６０１、送信元コンピュータ名６０２、送信元コンピュータのネットワーク物理アドレス６０３、送信元コンピュータのＩＰアドレス６０４、送信元コンピュータが属する送信元ドメイン名６０５、プリント出力許可を得るためのパスワード情報６０６、動作モード（ウイルス検査優先モード／高速処理モード）を指示する情報（フラグ）６０７、送信元コンピュータにおけるウイルスチェック最終履歴６０８、送信元コンピュータにおけるパターンファイルの属性値６０９、送信元コンピュータにおけるプリンタドライバの属性値６１０、などの属性情報を含む。
【００５１】
次に、ステップＳ５０２で、クライアントＰＣ１２０からのプリントデータをすべて受信すると、そのジョブにおける動作モードの指示フラグ６０７をチェックする。ここで、高速処理モードが指示されていた場合には、ステップＳ５０３に進む。
【００５２】
ステップＳ５０３では、ハードディスク１０６に記録されている安全性検査用テーブル６０をＲＡＭ１０４にロードし、受信したプリントジョブデータに含まれる属性情報がそのテーブル６０に登録されている条件を満たしているかどうかを調べることで、そのジョブの安全性を検査する。安全性検査用テーブル６０の構造例を図７に示す。同図に示すように、安全性検査用テーブル６０は、図６に示したジョブデータの属性情報６０１〜６１０に対応する項目を有し、各項目について、安全性を判定するための条件が記述されている。図７に示したテーブルによる例をいくつか示すと、例えば、送信元コンピュータ名は「ＧＡＮＯＮ」で始まりその後に任意の数字が続くコンピュータ名であることが条件として設定されている。ウイルスチェック最終履歴については、送信元コンピュータにおいて最後にウイルス検査が実行された日付が2002.03.20以降であることが条件として設定されている。また、パターンファイル属性値については、送信元コンピュータにインストールされているパターンファイルのバージョンを示す日付が2002.03.01以降であることが条件として設定されている。
【００５３】
なお、この安全性検査用テーブル６０における各条件の登録は、プリンタ１００のパネル１０７またはキー１０８からの入力に基づいて行われるように構成されていてもよいし、および／または、外部機器から入力された情報に基づいて設定され得るように構成されていてもよい。
【００５４】
このステップＳ５０３において、安全性検査用テーブル６０に設定された条件を所定数（例えば１つ、あるいはすべてでもよい）以上満たす場合には、ステップＳ５０６に進み、受信したデータのジョブ処理（例えばプリント動作）を実行して、その後ステップ５０７に進む。
【００５５】
一方、ステップＳ５０３において、安全性検査用テーブル６０に設定された条件を所定数以上満たさない場合には、ステップＳ５０４に進み、受信したデータの中の動作モードの指示フラグ３０７を変更することで高速処理モードを解除（すなわち、ウイルス検査優先モードに変更）し、ステップＳ５０５に進む。ステップＳ５０５では、高速処理モードを解除した旨を報知するための警告データ（例えばハードディスク１０６に保存されている）をＲＡＭ１０４にロードし、エンジン制御部１０９からプリンタエンジン１１０に警告データをプリントデータ化し、警告データをプリント出力し、その後ステップＳ５０７に進む。このように、ステップＳ５０３において安全性検査用テーブル６０の内容に基づいて受信データの安全性が確保されていないと判断されたときは、ステップＳ５０６のジョブ処理がスキップされ、高速処理モードが解除される。
【００５６】
また、ステップＳ５０２において、高速処理モードが指示されていなかった場合（すなわち、ウイルス検査優先モードが指示されていた場合）は、そのままステップＳ５０７に進む。
【００５７】
ステップＳ５０７では、ハードディスクユニット１０６に保存されているウイルス検査プログラム５１をコールする。これに応じてウイルス検査プログラム５１およびウイルス検出用のパターンファイル５３がＲＡＭ１０４にロードされてウイルス検査プログラム５１が起動し、ウイルスチェックが行われる。そして、ステップＳ５０８で、ウイルスチェックの結果、プリントデータがウイルスに感染されているか否かを判断する。ここで、プリントデータがウイルスに感染していないと判断された場合は、ウイルス検査プログラム５１を終了してステップＳ５０９に進む。
【００５８】
ステップＳ５０９では、プリンタ１００が高速処理モードで動作中か否かを判断する。これは、ステップＳ５０６によるジョブ処理が実行されたか否かで判断できる。上記のとおり、ステップＳ５０６が実行されるのは、受信データについて高速処理モードが指示されており（ステップＳ５０２，ＹＥＳ）、なおかつ、安全性検査用テーブル６０に設定された条件を所定数以上満たす場合（ステップＳ５０３，ＹＥＳ）である。この場合は、すでにステップＳ５０６でジョブ処理を終了しているので、本処理を終了する。一方、これ以外の場合にはステップＳ５１０に進み、ここで対応するジョブ処理を実行する。
【００５９】
ステップＳ５０８で、プリントデータがウイルスに感染していると判断された場合は、ステップＳ５１１に進み、ハードディスクユニット１０６に記憶されているウイルス駆除プログラム５２をコールする。これに応じてウイルス駆除プログラム５２がＲＡＭ１０４にロードされてウイルス駆除プログラム５２が起動する。これにより、プリントデータに含まれるウイルスが無効化される。
【００６０】
続くステップＳ５１２では、ウイルス感染ログ５４に新たなログナンバーを生成して当該プリントデータの感染ログを追記する。加えて、受信したデータは、ステップＳ５０３で安全性検査用テーブル６０の条件を満たし安全であると判断されたにもかかわらずステップＳ５０８でウイルスに感染していることが判明したので、この受信データは安全でないと判断されるように安全性検査用テーブル６０の条件を書き換える。これにより、今後同様なデータを受信してもステップＳ５０６でジョブ処理が実行されないようにする。さらに、この時点で高速処理モードが無効になっていなければ、これを無効にしておく。
【００６１】
次に、ステップＳ５１３で、受信データがウイルス感染しておりウイルス駆除を実行した旨を示す警告データ（例えばハードディスク１０６に保存されている）をＲＡＭ１０４にロードし、エンジン制御部１０９からプリンタエンジン１１０に警告データをプリントデータ化し、警告データをプリント出力し、本処理を終了する。
【００６２】
上述の第２の実施形態によれば、ウイルスチェックよりジョブ処理の実行を優先する高速処理モードが指定されていても（ステップＳ５０２，ＹＥＳ）、ステップＳ５０３において、受信データの属性情報を安全性検査用テーブル６０に照らし合わせた結果、送信元コンピュータがテーブル６０によって限定されたものではなかったり、送信元コンピュータ側でのウイルスチェックが古いパターンファイルに基づくものであるなどが判明した場合には、その受信データの安全性が確保されていない（すなわち、受信データがウイルスに感染している可能性がある）と判断され、ステップＳ５０６のジョブ処理がスキップされ、その結果高速処理モードが解除される。
【００６３】
以上説明したように、本実施形態におけるプリンタは、供給されたデータのウイルス検査を行う検査部を有するとともに、そのウイルス検査を行う前に受信データの安全性を判断するための条件を記述したテーブルをメモリに記憶している。このプリンタは更に、ウイルス検査をプリント動作などの所定のデータ処理の前に実行するウイルス検査優先モードか、ウイルス検査を所定のデータ処理の後に実行するデータ処理優先モード（高速処理モード）かを選択し、選択したモードに従いウイルス処理の実行タイミングを制御する制御部を有する。そして、この制御部は、高速処理モードを選択した場合において、上記テーブルに記述された条件に基づいて、その高速処理モードをウイルス検査優先モードに変更する。
【００６４】
図７に示した安全性検査用テーブルには、送信元ユーザ名、送信元コンピュータ名、ネットワーク物理アドレス、ＩＰアドレス、送信元ドメイン名、に関しての条件が設定され、これにより送信元を限定することができる。そして、本実施形態によれば、受信データの供給元が上記テーブルによって限定されたものではない場合には、安全性は確保されていないとみなして高速処理モードを解除し、ステップＳ５１０でのジョブ処理の前段階として、ステップＳ５０７でウイルスチェックを実行させることができる。要するに、安全な送信元の集合を特定する情報を安全性検査用テーブルに記述しておき、受信データの供給元を特定する情報が上記テーブルに記述されていなければ高速処理モードが解除される。
【００６５】
また、図７に示した安全性検査用テーブルには、パターンファイル属性値に関して、送信元コンピュータにインストールされているパターンファイルのバージョンを示す日付が所定日（図７の例では、2002.03.01）以降であることが条件として設定されていた。この所定日は、プリンタ１００にインストールされているパターンファイル５３のバージョンを示す日付に設定しておくと好都合である。そうすれば、たとえ送信元コンピュータにおいてあらかじめウイルスチェックが行われたのちにプリントデータが送信されてきたのだとしても、そのウイルスチェックに使用されたパターンファイルがプリンタ１００におけるパターンファイル５３よりも古いバージョンである場合には、やはり安全性は確保されていないとみなして高速処理モードを解除し、これによりプリンタ側でステップＳ５０７のウイルスチェックを再度実行し、その後ステップＳ５１０でジョブ処理を実行させるようにすることができる。要するに、本実施形態によれば、送信元コンピュータにおけるパターンファイルのバージョンと、プリンタ１００におけるパターンファイルのバージョンとを比較し、プリンタ１００におけるパターンファイルのバージョンの方が新しい場合には、プリンタ側で、ジョブ処理に先立って再度ウイルスチェックを行わせる仕組みを提供することも可能である。
【００６６】
なお、以上説明した処理に加えて、ステップＳ５０３で高速処理モードが解除されてから所定期間が経過すると、高速処理モードが再設定されるようにプログラムされていてもよいであろう。
【００６７】
また、この第２の実施形態では、ステップＳ５０６の高速処理モード時のジョブ処理実行後、ステップＳ５０７に遷移し、ウイルスチェックが行われるようにした。しかし、高速処理モードのジョブが連続的に投入されている場合には、ジョブを処理していない状態が一定期間経過した後にウイルスチェックを実行するようにしてもよいし、ある特定の時刻（例えば、午前２時）にウイルスチェックを実行するようにしてもよい。
【００６８】
上述した第２の実施形態では、外部機器からプリント対象のデータを受信し、プリント処理を行うプリンタについて説明したが、本発明は、このようなプリント機能のみならず、ファクシミリ送受信機能、ネットワークを介して複数の宛先に電子データを一斉配信するユニバーサルセンド機能、機器内部の不揮発性メモリ（ハードディスクユニットなど）にデータを保存するボックス機能などを備えた複合型のデータ処理装置（複合機）などのコンピュータ周辺装置にも適用することができる。
【００６９】
図８に、複合機に適用される安全性検査用テーブルの構造例を示す。複合機の場合には上述の実施形態に示したプリントジョブだけでなくその他の種類のジョブが処理する点に留意されたい。例えば図８に示すように、プリンタドライバを経由する通常のプリントジョブの他に、ＰＤＦ（Portable Document Format）データをプリンタドライバを介さずに直接プリンタに送信するためのＰＤＦダイレクトプリントジョブ、ファクシミリ送信を行うためのファクシミリ送信ジョブ（ＳＥＮＤジョブ）、複合機内の記憶装置にデータを保存するための保存ジョブ（ＢＯＸジョブ）などがある。この場合には、図示のようにジョブの種類に応じて安全性を判断するための条件を個別に設定することができる。図８の例によれば、プリンタドライバ経由の通常のプリントジョブに対しては条件が設定されておりこの条件を満たさないと高速処理モードが解除される場合があるが、ＰＤＦダイレクトプリントジョブに対しては条件が何ら設定されていないため、高速化モードが解除されることはない。
【００７０】
また、第１および第２の実施形態におけるプリンタは、供給されたデータに含まれる指示情報に従い動作モードの選択を行うように構成されていたが、本発明はこれに限定されるものではない。例えば、動作モードの選択はプリンタ側でのユーザからの指示で行われるようにしてもよい。
【００７１】
なお本発明は、上述したような「動作モード」という明確な概念がなくとも実現されうるものである。要するに、本発明の本質的な特徴は、ウイルスチェックを起動するための「所定の判断基準」に基づいて、供給されたデータに対するウイルスチェックの実行タイミングを制御する点にある。
【００７２】
（その他の実施形態）
以上、本発明の実施形態を詳述したが、本発明は、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【００７３】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム（図２または図５に示すフローチャートに対応したプログラム）を、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータがその供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。その場合、プログラムの機能を有していれば、その形態はプログラムである必要はない。
【００７４】
従って、本発明の機能処理をコンピュータで実現するために、そのコンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の特許請求の範囲には、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００７５】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００７６】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【００７７】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、そのホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明のクレームに含まれるものである。
【００７８】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００７９】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００８０】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００８１】
【図１】実施形態におけるコンピュータ周辺装置としてのプリンタの構成を示すブロック図である。
【図２】第１の実施形態におけるプリンタの処理内容を示すフローチャートである。
【図３】第１の実施形態におけるプリンタに供給されるプリントジョブの構造例を示す図である。
【図４】第１の実施形態におけるウイルス感染ログの構造例を示す図である。
【図５】第２の実施形態におけるプリンタの処理内容を示すフローチャートである。
【図６】第２の実施形態におけるプリンタに供給されるプリントジョブの構造例を示す図である。
【図７】第２の実施形態における安全性検査用テーブルの構造例を示す図である。
【図８】複合機に適用される安全性検査用テーブルの構造例を示す図である。
【図９】第２の実施形態におけるプリンタの構成を示すブロック図である。
【図１０】第２の実施形態におけるクライアントＰＣの構成を示すブロック図である。
【図１１】通常の印刷ジョブに対する処理を説明するための図である。
【図１２】悪意のあるコードを含む印刷ジョブによる内部データ破壊を説明するための図である。
【図１３】通常の送信ジョブに対する処理を説明するための図である。
【図１４】悪意のあるコードを含む送信ジョブによる無差別送信を説明するための図である。
【図１５】通常の保存ジョブに対する処理を説明するための図である。
【図１６】悪意のあるコードを含む保存ジョブによる内部データ破壊を説明するための図である。
【図１】
2004178559.tif 000003
【図２】
2004178559.tif 000004
【図３】
2004178559.tif 000005
【図４】
2004178559.tif 000006
【図５】
2004178559.tif 000007
【図６】
2004178559.tif 000008
【図７】
2004178559.tif 000009
【図８】
2004178559.tif 000010
【図９】
2004178559.tif 000011
【図１０】
2004178559.tif 000012
【図１１】
2004178559.tif 000013
【図１２】
2004178559.tif 000014
【図１３】
2004178559.tif 000015
【図１４】
2004178559.tif 000016
【図１５】
2004178559.tif 000017
【図１６】
2004178559.tif 000018