図面を参照して実施例を説明する。図1は、本実施例の多機能機管理システム2の概略図を示す。多機能機管理システム2は、PC10と複数の多機能機50,90,92等を備える。PC10と各多機能機50,90,92は、LAN回線46に接続されている。PC10と各多機能機50,90,92は、相互に通信可能である。
(PCの構成)
図2は、PC10の構成を簡単に示す。PC10は、CPU12とRAM14と不揮発性メモリ20とHDD制御部22とHDD24と表示制御部32とモニタ34と操作制御部36と操作部38とLANインターフェイス40等を有する。上記の各部12,14,20,22,32,36,40は、バス線42に接続されている。
CPU12は、HDD24に記憶されているプログラム26,28,30に従って様々な処理を実行する。CPU12が実行する処理については、後で詳しく説明する。RAM14は、プログラムワーク領域16とその他の記憶領域18を有する。プログラムワーク領域16は、HDD24に記憶されているプログラム26,28,30が起動されている場合に利用されるワーク領域である。記憶領域18は、CPU12が処理を実行する過程で生成される様々な情報を記憶することができる。不揮発性メモリ20は、様々な情報を記憶することができる。不揮発性メモリ20は、例えば、後述のセキュリティ情報100(図4参照)を記憶することができる。
HDD制御部22は、CPU12からの指示に従ってHDD24を制御する。HDD24は、様々なプログラム(アプリケーション)26,28,30を記憶することができる。本実施例では、多機能機50,90,92を管理するための2種類のアプリケーション26,28がHDD24に記憶されている。アプリケーション26,28は、例えば、コンピュータ読取可能媒体からPC10にインストールされる。また、アプリケーション26,28は、例えば、インターネットのサイトからPC10にインストールされる。
SNMPv3管理アプリケーション26は、SNMPv3に従って様々なコマンドを多機能機50,90,92に送信するためのアプリケーションである。SNMPv3は、暗号化通信に対応しており、セキュリティが高いプロトコルとして知られている。RemoteSetup管理アプリケーション28は、SNMPv3と異なるプロトコルに従って様々なコマンドを多機能機50,90,92に送信するためのアプリケーションである。RemoteSetup管理アプリケーション28が利用するプロトコルは、暗号化通信に対応しておらず、SNMPv3と比べるとセキュリティが低いプロトコルであると言える。各管理アプリケーション26,28によって実現される具体的な処理の内容については、後で詳しく説明する。HDD24は、管理アプリケーション26,28以外のプログラム30(アプリケーションやOS)を記憶している。
表示制御部32は、CPU12からの指示に従ってモニタ34を制御する。モニタ34は、液晶等のディスプレイである。操作制御部36は、操作部38が操作された場合に、その操作の内容をCPU12に伝える。操作部38は、マウスやキーボードによって構成される。ユーザは、操作部38を操作することによって、様々な指示や情報をPC10に入力することができる。LANインターフェイス40は、LAN回線46に接続されている。PC10は、LANインターフェイス40及びLAN回線46を介して、各多機能機50,90,92と通信可能である。
(多機能機の構成)
図3は、多機能機50の構成を簡単に示す。多機能機90,92も、多機能機50と同様の構成を有する。多機能機50は、CPU52とROM54とRAM66と不揮発性メモリ68とLANインターフェイス70と操作キー72と表示パネル74とスキャナ制御部76とスキャナ部78と印刷制御部80と印刷部82等を有する。上記の各部52,54,66,68,70,72,74,76,80は、バス線84に接続されている。
CPU52は、ROM54に記憶されているプログラム56〜64に従って様々な処理を実行する。CPU52が実行する処理については、後で詳しく説明する。ROM54は、様々なプログラム56〜64を記憶している。システム制御プログラム56は、多機能機50を構成する各部を統括的に管理するためのプログラムである。OTP作成プログラム58は、ワンタイムパスワードを作成するためのプログラムである。SNMPv3エージェントプログラムは、SNMPv3管理アプリケーション26(図2参照)に従ってPC10から送信される様々なコマンドに対応するためのプログラムである。RemoteSetupエージェントプログラムは、RemoteSetup管理アプリケーション28(図2参照)に従ってPC10から送信される様々なコマンドに対応するためのプログラムである。各プログラム58,60,62がどのような処理をCPU52に実行させるのかについては、後で詳しく説明する。ROM54は、上記のプログラム56〜62以外のプログラム64も記憶している。
RAM66は、CPU52が処理を実行する過程で生成される様々な情報を記憶することができる。不揮発性メモリ68は、様々な情報を記憶することができる。不揮発性メモリ68は、例えば、後述のセキュリティ情報100(図4参照)を記憶することができる。また、不揮発性メモリ68は、SNMPv3で利用されるEngineIDや時間情報を記憶することもできる。
LANインターフェイス70は、LAN回線46に接続されている。多機能機50は、LANインターフェイス70及びLAN回線46を介して、PC10と通信可能である。操作キー72は、複数のキーによって構成される。ユーザは、操作キー72を操作することによって、様々な指示や情報を多機能機50に入力することができる。表示パネル74は、様々な情報を表示することができる。スキャナ制御部76は、CPU52からの指示に従ってスキャナ部78を制御する。スキャナ部78は、CCD、CIS等の画像読取機構を有する。印刷制御部80は、CPU52からの指示に従って印刷部82を制御する。印刷部82は、インクジェットタイプ、レーザタイプ等の印刷機構を有する。印刷部82は、PC10から送信された印刷データに基づいて印刷媒体に印刷することができる。印刷部82は、スキャナ部78で読み取られた画像データに基づいて印刷媒体に印刷することもできる(即ち多機能機50はコピー機能を有する)。
(PCと多機能機が実行する処理の概略)
各管理アプリケーション26,28(図2参照)に従ってPC10のCPU12が実行する処理、及び、各エージェントプログラム60,62(図3参照)に従って多機能機50のCPU52が実行する処理について、簡単に説明する。図4は、これらの処理を説明するためのタイムチャートを示す。図5は、図4の続きのタイムチャートを示す。
PC10と多機能機50のそれぞれに、SNMPv3で利用されるセキュリティ情報100が記憶されている。ユーザは、PC10と多機能機50のそれぞれに同じセキュリティ情報100を記憶させる。即ち、PC10と多機能機50は、セキュリティ情報100を共有している。これにより、PC10と多機能機50の間でSNMPv3を利用して様々なコマンドを通信することができるようになる。セキュリティ情報100は、UserName102とAuthProtocol104とAuthKey106とPrivProtocol108とPrivKey110とを含んでいる。UserName102は、ユーザ名である。なお、UserName102と同じものがSecurityNameとして利用される。AuthProtocol104は、認証プロトコルの種類である。AuthKey106は、認証プロトコルのためのローカル秘密鍵である。PrivProtocol108は、暗号化プロトコルの種類である。PrivKey110は、暗号化プロトコルのためのローカル秘密鍵である。
SNMPv3エージェントプログラム60は、AuthKey106を利用して認証用ローカル秘密鍵K1と暗号用ローカル秘密鍵K2を作成する(M1)。これらの秘密鍵K1,K2は、後述するMACを作成する際に利用される。秘密鍵K1,K2の作成手法は公知であるために、秘密鍵K1,K2の作成手法について詳しく説明しない。簡単に言うと、AuthKey106に対してXOR処理を加えることによって認証用ローカル秘密鍵K1が作成される。また、AuthKey106に所定のフィールドデータが付加されたものに対してXOR処理を加えることによって暗号用ローカル秘密鍵K2が作成される。
SNMPv3管理アプリケーション26は、EngineIDを多機能機50に要求する(P1)。多機能機50には予めEngineIDが設定されている(例えば不揮発性メモリ68(図3参照)に記憶されている)。SNMPv3エージェントプログラム60は、多機能機50に設定されているEngineIDをPC10に送信する(M2)。
SNMPv3管理アプリケーション26は、AuthKey106を利用して認証用ローカル秘密鍵K1と暗号用ローカル秘密鍵K2を作成する(P2)。PC10と多機能機50は、同じAuthKey106を記憶している。このために、P2の処理で作成される秘密鍵K1,K2は、多機能機50において上記のM1の処理で作成される秘密鍵K1,K2と同じものになる。
SNMPv3管理アプリケーション26は、GETメッセージを作成する(P3)。この処理を説明する前に、SNMPv3で利用されるリクエストメッセージの構成を説明しておく。図6〜図8は、リクエストメッセージ200の構成を示す。図6に示されるように、リクエストメッセージ200は、Version202とHeader204とSecurityParameters220とScopedPDU240とによって構成される。Version202は、SNMPのバージョンを示す情報であり、本実施例ではSNMPv3である。
Header204は、msgID206とmsgMaxSize208とmsgFlags210とmsgSecuritymodel212とによって構成される。msgID206は、メッセージの通信回数に対応するIDを格納するための領域である。msgMaxSize208は、メッセージ200のデータサイズの情報を格納するための領域である。msgFlags210は、認証の有無及び暗号化の有無に関する情報を格納するための領域である。msgSecuritymodel212は、プロトコルが拡張された場合に利用される情報を格納するための領域である。
SecurityParameters220の内容を説明する。図7は、SecurityParameters220の構成を示す。SecurityParameters220は、様々な領域222,224,226,232,234,236によって構成される。領域222は、EngineIDを格納するための領域である。領域224は、エージェントデバイス(本実施例では多機能機50等)の起動回数に関する情報を格納するための領域である。領域226には、エージェントデバイスの最新の起動開始からの経過時間を格納するための領域である。以下では、領域224と領域226を合わせて時間情報230と呼ぶ。領域232は、ユーザ名を格納するための領域である。
SNMPv3管理アプリケーション26は、上記の秘密鍵K1とメッセージ200が組み合わされたデータをダイジェスト化し、第1メッセージダイジェストを作成することができる。さらに、SNMPv3管理アプリケーション26は、上記の秘密鍵K2と上記の第1メッセージダイジェストが組み合わされたデータをダイジェスト化し、第2メッセージダイジェストを作成することができる。第2メッセージダイジェストの先頭の所定バイト(例えば12バイト)がMACである。領域234は、このようにして作成されたMACを格納するための領域である。領域236は、暗号化された情報の復号化に必要な情報を格納するための領域である。
次に、図6に示されるScopedPDU240の内容を説明する。ScopedPDU240は、contextEngineID242とcontextName244とPDU246とによって構成される。contextEngineID242は、EngineIDを格納するための領域である。領域242には、上記の領域222(図7参照)に格納されるEngineIDと同一のものが格納される。contextName244は、コンテキスト名を格納するための領域である。
図8は、PDU246の構成を示す。PDU246は、Header250とViewタイプ262とOID264とValue266とによって構成される。Viewタイプ262は、GETとSETのどちらかを格納するための領域である。OID264は、リクエストするデータの種類を特定する情報(例えばデータの識別子)を格納するための領域である。Value266は、Viewタイプ262に「SET」が設定された場合に設定値を格納するための領域である。
図4に示されるP3の処理では、図6に示される構造を持つメッセージが作成される。少し具体的に説明すると、図7に示される領域222には、上記のM2の処理で受信されたEngineIDが格納される。また、領域224と領域226の時間情報230には、ゼロが格納される。領域232には、セキュリティ情報100のUserName102が格納される。領域234には、ゼロが格納される。さらに、図8に示される領域262には、GETが格納される。SNMPv3管理アプリケーション26は、P3の処理で作成されたメッセージ及びP2の処理で作成された秘密鍵K1,K2を利用してMACを作成する(P4)。MACは、P3の処理で作成されたメッセージの領域234(図7参照)に挿入される。SNMPv3管理アプリケーション26は、メッセージを多機能機50に送信する(P5)。多機能機50は、メッセージを受信する。
SNMPv3エージェントプログラム60は、受信されたメッセージの認証処理を行なう(M3)。まず、SNMPv3エージェントプログラム60は、メッセージの領域234(図7参照)に格納されているMACを記憶する。次いで、SNMPv3エージェントプログラム60は、メッセージの領域234(図7参照)にゼロを挿入し、領域234にゼロが挿入されたメッセージと上記のM1の処理で作成された秘密鍵K1,K2とを利用してMACを作成する。ここでのMACの作成手法は、PC10での上記のP4の処理と同様である。SNMPv3エージェントプログラム60は、作成されたMACとメッセージの領域234に格納されていたMACを比較し、一致するのか否かを判断する。認証が成功した場合、後述のM4以降の処理が実行される。
SNMPv3エージェントプログラム60は、時間情報を収集する(M4)。時間情報(多機能機50の起動回数及び最新の起動開始からの経過時間)は、例えば、不揮発性メモリ68(図3参照)に記憶されている。SNMPv3エージェントプログラム60は、M4の処理で収集された時間情報を含む返信メッセージを作成する(M5)。この返信メッセージは、図6に示されるメッセージ200と同様のデータ構造を有する。時間情報は、返信メッセージのScopedPUD240(図6参照)に挿入される。SNMPv3エージェントプログラム60は、返信メッセージと秘密鍵K1,K2とを利用してMACを作成し、このMACを返信メッセージに挿入する(M6)。SNMPv3エージェントプログラム60は、返信メッセージをPC10に送信する(M7)。PC10は、返信メッセージを受信する。
図5に示されるように、SNMPv3管理アプリケーション26は、受信された返信メッセージの認証処理を行なう(P6)。この処理は、上記のM3の処理と同様である。即ち、SNMPv3管理アプリケーション26は、返信メッセージに含まれるMACを記憶する。次いで、SNMPv3管理アプリケーション26は、MACが含まれていた領域にゼロが挿入された返信メッセージと上記のP2の処理で作成された秘密鍵K1,K2とを利用してMACを作成する。SNMPv3管理アプリケーション26は、作成されたMACと返信メッセージに含まれていたMACを比較し、両者が一致するのか否かを判断する。認証が成功した場合、後述のP7以降の処理が実行される。
SNMPv3管理アプリケーション26は、返信メッセージに含まれる時間情報を記憶する(P7)。時間情報は、RAM14(図2参照)に記憶される。SNMPv3管理アプリケーション26は、GETメッセージを作成する(P8)。P8の処理は、上記のP3の処理と同様である。ただし、P8の処理では、P7の処理で記憶された時間情報が領域224及び226(図7参照)に挿入される。また、P8の処理では、ワンタイムパスワードを作成することを指示する識別子が領域264(図8参照)に挿入される。
SNMPv3管理アプリケーション26は、P8の処理で作成されたメッセージのScopedPDU240の部分を暗号化する(P9)。暗号化手法は公知であるために、暗号化について詳しく説明しない。簡単に言うと、SNMPv3管理アプリケーション26は、P2の処理で作成された暗号用ローカル秘密鍵K2から暗号化秘密鍵と初期化ベクタを作成する。SNMPv3管理アプリケーション26は、暗号化秘密鍵と初期化ベクタを利用して暗号化する。SNMPv3管理アプリケーション26は、暗号化された後のメッセージ及びP2の処理で作成された秘密鍵K1,K2を利用してMACを作成し、このMACをメッセージに挿入する(P10)。SNMPv3管理アプリケーション26は、メッセージを多機能機50に送信する(P11)。多機能機50は、メッセージを受信する。
SNMPv3エージェントプログラム60は、受信されたメッセージの認証処理を行なう(M8)。この認証処理は、M3の処理と同様である。SNMPv3エージェントプログラム60は、メッセージの復号化処理を行なう(M9)。SNMPv3エージェントプログラム60は、M1の処理で作成された暗号用ローカル秘密鍵K2を利用してメッセージを復号化する。復号化されたOIDは、ワンタイムパスワードを作成することを指示する識別子である。従って、SNMPv3エージェントプログラム60は、OTP作成プログラム58(図3参照)を起動することによって、ワンタイムパスワードを作成する(M10)。OTP作成プログラム58は、例えば、複数の文字(数字、アルファベット等)をランダムに抽出し、それらの文字を含む文字列(ワンタイムパスワード)を作成してもよい。また、OTP作成プログラム58は、例えば、前回に作成された文字列に対して所定のアルゴリズムに従って変更を加えることによって新たな文字列(ワンタイムパスワード)を作成してもよい。OTP作成プログラム58は、過去に作成されたワンタイムパスワード群と異なるワンタイムパスワードを作成することが好ましい。ワンタイムパスワードは、RAM66(図3参照)に記憶される。
SNMPv3エージェントプログラム60は、M10の処理で作成されたワンタイムパスワードを含む返信メッセージを作成する(M11)。ワンタイムパスワードは、返信メッセージのScopedPUD240(図6参照)に挿入される。SNMPv3エージェントプログラム60は、返信メッセージのScopedPUD240の部分(即ちワンタイムパスワード)を暗号化する(M12)。ここでの暗号化手法は、PC10でのP9の処理と同様である。SNMPv3エージェントプログラム60は、暗号化された返信メッセージと秘密鍵K1,K2とを利用してMACを作成し、このMACを返信メッセージに挿入する(M13)。SNMPv3エージェントプログラム60は、返信メッセージをPC10に送信する(M14)。PC10は、返信メッセージを受信する。
SNMPv3管理アプリケーション26は、受信された返信メッセージの認証処理を行なう(P12)。この処理は、上記のP6の処理と同様である。SNMPv3管理アプリケーション26は、P2の処理で作成された暗号用ローカル秘密鍵K2を利用して復号化処理を行なう(P13)。これにより、ワンタイムパスワードを得ることができる。SNMPv3管理アプリケーション26は、ワンタイムパスワードを記憶する(P14)。ワンタイムパスワードは、RAM14(図2参照)に記憶される。
SNMPv3管理アプリケーション26によってワンタイムパスワードが取得されると、RemoteSetup管理アプリケーション28は、パスワード認証リクエストを多機能機50に送信する(P15)。パスワード認証リクエストは、P14の処理で記憶されたワンタイムパスワードを含んでいる。多機能機50は、パスワード認証リクエストを受信する。
RemoteSetupエージェントプログラム62は、認証処理を行なう(M15)。具体的に言うと、RemoteSetupエージェントプログラム62は、パスワード認証リクエストに含まれるワンタイムパスワードとM10の処理で作成されたワンタイムパスワードとを比較し、両者が一致するのか否かを判断する。認証が成功した場合、RemoteSetupエージェントプログラム62は、認証OKを示す返信メッセージをPC10に送信する(M16)。PC10は、返信メッセージを受信する。
RemoteSetup管理アプリケーション28は、ユーザの指示に応じたリクエストを多機能機50に送信する(P16)。多機能機50は、リクエストを受信する。多機能機50は、リクエストに応じた処理を実行する。多機能機50は、処理を実行すると、返信メッセージをPC10に送信する(M17)。
(PCが実行する処理)
続いて、PC10のCPU12が実行する処理の内容について詳しく説明する。図9〜図11は、CPU12が実行する処理のフローチャートを示す。ユーザは、SNMPv3管理アプリケーション26を起動するための操作を操作部38(図2参照)に加えることができる。この場合、CPU12は、SNMPv3管理アプリケーション26に従って図9に示される処理を実行する。
CPU12は、初期化処理を実行する(S10)。この初期化処理では、CPU12は、例えば、各多機能機50,90,92に関するリスト情報を表示する。図12は、リスト情報の表示画面120の一例を示す。表示画面120は、各多機能機50,90,92の情報132,134,136を含んでいる。例えば、ユーザは、情報132,134,136のいずれかを選択し(即ち1つの多機能機を選択し)、SNMPv3の管理コマンド(GET又はSSET)を送信するための操作(以下では第1操作と呼ぶ)を操作部38(図2参照)に加えることができる。また、例えば、ユーザは、情報132,134,136のいずれかを選択し(即ち1つの多機能機を選択し)、RemoteSetup管理アプリケーション28を起動するための操作(以下では第2操作と呼ぶ)を操作部38に加えることもできる。図12の例では、情報134がユーザによって選択されている。図12のウィンドウ140は、上記の第2操作を実行するために開かれるウィンドウである。ウィンドウ140は、RemoteSetupという文字列142を含んでいる。ユーザは、文字列142に対して操作(例えばクリック)を加えることによって、第2操作を実行することができる。
CPU12は、ユーザによって操作が実行されることを監視している(S12)。S12でYESの場合、CPU12は、上記の第2操作が実行されたのか否かを判断する(S14)。例えば、上記の第1操作が実行された場合、S14でNOと判断される。この場合、CPU12は、第1操作に応じた処理を実行する(S16)。例えば、CPU12は、SNMPv3のGETリクエストやSETリクエストを送信する。一方において、S14でYESの場合、S18以降の処理を実行する。以下では、多機能機50について第2操作が実行されたものとして、S18以降の処理の内容を説明する。
S18では、CPU12は、多機能機50に関する情報を取得する。例えば、IPアドレス等が取得される。次いで、CPU12は、EngineID要求メッセージを作成する(S20)。CPU12は、EngineID要求メッセージを多機能機50に送信する(S22)。S22の処理は、図4のP1の処理に対応する。CPU12は、返信メッセージを受信するまで待機する(S24)。CPU12は、返信メッセージを受信すると(S24でYESの場合)、その返信メッセージに含まれる多機能機50のEngineIDを記憶する(S26)。多機能機50のEngineIDは、RAM14(図2参照)に記憶される。
続いて、CPU12は、認証用ローカル秘密鍵K1と暗号用ローカル秘密鍵K2を作成する(S28)。S28の処理は、図4のP2の処理に対応する。これらの秘密鍵K1,K2は、RAM14(図2参照)に記憶される。CPU12は、GET要求メッセージを作成する(S30)。S30の処理は、図4のP3の処理に対応する。ここでのGET要求メッセージでは、時間情報としてゼロが挿入される。次いで、CPU12は、MACを作成し、MACをGET要求メッセージに挿入する(S32)。S32の処理は、図4のP4の処理に対応する。CPU12は、GET要求メッセージを多機能機50に送信する(S34)。S34の処理は、図4のP5の処理に対応する。CPU12は、返信メッセージを受信するまで待機する(S36)。
返信メッセージを受信すると(S36でYESの場合)、図10のS40に進む。S40では、CPU12は、返信メッセージの認証処理を実行する。即ち、CPU12は、返信メッセージからMACを作成し、そのMACと返信メッセージに含まれるMACとを比較する。S40の処理は、図5のP6の処理に対応する。CPU12は、認証が成功したことを条件として、S42以降の処理を実行する。S42では、CPU12は、返信メッセージに含まれる時間情報を記憶する。時間情報は、RAM14(図2参照)に記憶される。S42の処理は、図5のP7の処理に対応する。次いで、CPU12は、GET要求メッセージを作成する(S44)。ここでのGET要求メッセージでは、OIDとしてワンタイムパスワード要求識別子が挿入される。S44の処理は、図5のP8の処理に対応する。CPU12は、GET要求メッセージのScopedPDUの部分を暗号化する(S46)。S46の処理は、図5のP9の処理に対応する。さらに、CPU12は、MACを作成し、MACをGET要求メッセージに挿入する(S48)。S48の処理は、図5のP10の処理に対応する。CPU12は、GET要求メッセージを多機能機50に送信する(S50)。S50の処理は、図5のP11の処理に対応する。CPU12は、返信メッセージを受信するまで待機する(S52)。
返信メッセージを受信すると(S52でYESの場合)、CPU12は、返信メッセージの認証処理を実行する(S54)。S54の処理は、S40の処理と同様である。S54の処理は、図5のP12の処理に対応する。次いで、CPU12は、暗号用ローカル秘密鍵K2を利用して復号化処理を実行する(S56)。これにより、ワンタイムパスワードが得られる。S56の処理は、図5のP13の処理に対応する。CPU12は、ワンタイムパスワードを記憶する(S58)。ワンタイムパスワードは、RAM14に記憶される。S58の処理は、図5のP14の処理に対応する。次いで、CPU12は、RemoteSetup管理アプリケーション28を起動する(S60)。S60を終えると、図9のS12に戻る。この場合、CPU12は、図11の処理も実行する。即ち、CPU12は、図9のS12においてユーザの操作を監視しながら図11の処理を実行する。
続いて、図11の処理について説明する。上述したように、図10のS60でRemoteSetup管理アプリケーション28が起動された場合に、図11の処理が実行される。CPU12は、RemoteSetup管理アプリケーション28に従って図11の処理を実行する。CPU12は、初期化処理を実行する(S70)。次いで、CPU12は、パスワード認証メッセージを作成する(S72)。パスワード認証メッセージには、図10のS58の処理で記憶されたワンタイムパスワードが含まれる。CPU12は、パスワード認証メッセージを多機能機50に送信する(S74)。S74の処理は、図5のP15の処理に対応する。CPU12は、返信メッセージを受信するまで待機する(S76)。
返信メッセージを受信すると(S76でYESの場合)、CPU12は、返信メッセージが認証OKを示すものであるのか否かを判断する(S78)。ここでNOの場合、CPU12は、認証が不成功であることを示す情報を表示する(S80)。S80を終えると、図11のルーチンを終了する。一方において、S78でYESの場合、CPU12は、エージェント操作画面を表示する(S82)。ここでのエージェント操作画面は、RemoteSetup管理アプリケーション28に対応する管理コマンドを多機能機50に送信する操作を加えるための画面である。例えば、多機能機50の様々な設定情報(印刷媒体のサイズ等)が表示される。ユーザは、例えば、エージェント操作画面上において多機能機50の設定情報を変更するための操作(以下では第3操作と呼ぶ)を加えることができる。
CPU12は、ユーザによって操作が実行されることを監視している(S84)。S84でYESの場合、CPU12は、ユーザの操作に応じた処理を実行する(S86)。例えば、上記の第3操作が実行された場合、CPU12は、変更後の設定情報を含むリクエストを多機能機50に送信する。この処理は、図5のP16の処理に対応する。これにより、多機能機50において設定情報が変更される。
(多機能機が実行する処理)
続いて、多機能機50のCPU52が実行する処理の内容について詳しく説明する。図13〜図16は、CPU52が実行する処理のフローチャートを示す。図13の処理は、基本的にはシステム制御プログラム56(図3参照)に従って実行される。図13〜図16の処理は、多機能機50の電源がONされると実行される。CPU52は、初期化処理を実行する(S100)。この初期化処理において、CPU52は、認証用ローカル秘密鍵K1と暗号用ローカル秘密鍵K2を作成する。S100の処理は、図4のM1の処理に対応する。
多機能機50は、様々な指示や情報を入力することができる。多機能機50は、例えば、PC10等の外部装置から送信される様々なメッセージ(リクエスト)を受信する。また、ユーザが操作キー72(図3参照)を操作した場合も、多機能機50に指示や情報が入力される。CPU52は、これらのイベントが発生することを監視している(S102)。S102でYESの場合、CPU52は、発生したイベントが管理メッセージの受信であるのか否かを判断する(S104)。ここでの管理メッセージという用語は、SNMPv3管理アプリケーション26及びRemoteSetup管理アプリケーション28に従って送信されるメッセージを総括する表現である。即ち、図9のS22、図9のS34、図10のS50、図11のS74、及び、図11のS86で送信されるメッセージが管理メッセージである。また、管理アプリケーション26,28以外の管理アプリケーションに従って送信されるメッセージが受信された場合も、S104でYESと判断される。なお、以下では、PC10から送信された管理メッセージが受信された場合を例にして、S104でYESと判断された場合の処理を説明する。
S104でNOの場合、CPU52は、イベントの内容に応じた処理を実行する(S106)。例えば、コピー機能を実行するための操作をユーザが操作キー72(図3参照)に加えた場合、CPU52は、スキャナ制御部76と印刷制御部80に指示を出力する。一方において、S104でYESの場合、CPU52は、管理メッセージのプロトコルがSNMPv3であるのか否かを判断する。図9のS22、図9のS34、又は、図10のS50で送信されたメッセージが受信された場合、CPU52は、S108でYESと判断する。この場合、CPU52は、SNMPv3エージェントプログラム60(図3参照)に従って、SNMPv3処理を実行する(S110)。SNMPv3処理の内容については、後で詳しく説明する。
一方において、S108でNOの場合、CPU52は、管理メッセージのプロトコルがRemoteSetup管理アプリケーション28で利用されているプロトコルであるのか否かを判断する(S112)。図11のS74、又は、図11のS86で送信されたメッセージが受信された場合、CPU52は、S112でYESと判断する。この場合、CPU52は、RemoteSetupエージェントプログラム62(図3参照)に従って、RemoteSetup処理を実行する(S114)。RemoteSetup処理の内容については、後で詳しく説明する。S112でNOの場合、CPU52は、管理メッセージの内容に応じた処理を実行する(S116)。
続いて、図13のS110で実行されるSNMPv3処理の内容について説明する。図14は、SNMPv3処理のフローチャートを示す。CPU52は、図13のS104で受信された管理メッセージがEngineID要求メッセージであるのか否かを判断する(S120)。即ち、CPU52は、図9のS22でPC10から送信されたメッセージが受信されたのか否かを判断する。ここでYESの場合、CPU52は、多機能機50のEngineIDを収集する(S122)。EngineIDは、不揮発性メモリ68に記憶されている。CPU52は、不揮発性メモリ68からEngineIDを読み出すことによって、S122の処理を実行する。次いで、CPU52は、S122で収集されたEngineIDを含む返信メッセージを作成する(S124)。CPU52は、S124で作成された返信メッセージをPC10に送信する(S144)。ここでのS144の処理は、図4のM2の処理に対応する。これにより、図9のS24において、PC10は、EngineIDを含む返信メッセージを受信する。
S120でNOの場合、CPU52は、図13のS104で受信された管理メッセージの認証処理を実行する(S126)。即ち、CPU52は、管理メッセージからMACを作成し、そのMACと管理メッセージに含まれるMACとを比較する。S126の処理は、図4のM3及び図5のM8の処理に対応する。なお、図5のM8に対応する処理をS126で実行する場合、CPU52は、時間情報の認証を実行する。即ち、CPU104は、図13のS104で受信された管理メッセージに含まれる時間情報と多機能機50における現在の時間情報との差が所定時間内であるのか否かを判断する。ここでの所定時間は、後述するS138の処理でレジスタに保持される。本実施例では、上記の所定時間は150秒である。CPU52は、認証が成功したのか否かを判断する(S128)。認証が成功しなかった場合、CPU52は、認証が成功しなかったことを示すメッセージを作成し、作成されたメッセージをPC10に送信する(S144)。一方において、認証が成功した場合、CPU52は、S130以降の処理を実行する。
S130では、CPU52は、管理メッセージがGET要求メッセージとSET要求メッセージのどちらであるのかを判断する。管理メッセージがSET要求メッセージである場合、CPU52は、S130でNOと判断し、SET要求メッセージに含まれるPDU246(図6参照)に対応する処理を実行する(S132)。CPU52は、例えば、必要であればScopedPDU240の復号化を実行する。さらに、CPU52は、例えば、PDU246に含まれるOID264(図8参照)によって指定された設定情報をValue266(図8参照)で指定された値に変更する。これにより、多機能機50において、設定情報が変更される。S132を終えると、CPU52は、SET要求メッセージに対応する処理を終了したことを示すメッセージを作成し、作成されたメッセージをPC10に送信する(S144)。
一方において、管理メッセージがGET要求メッセージである場合、CPU52は、S130でYESと判断し、時間情報がゼロであるのか否かを判断する(S134)。即ち、CPU52は、管理メッセージのSecurityParameters220に含まれる領域224と領域226(図7参照)にゼロが挿入されているのか否かを判断する。ここでYESの場合、CPU52は、多機能機50の時間情報を収集する(S136)。時間情報は、不揮発性メモリ68に記憶されている。CPU52は、不揮発性メモリ68から時間情報を読み出すことによって、S136の処理を実行する。S136の処理は、図4のM4の処理に対応する。次いで、CPU52は、Activate処理を実行する(S138)。具体的に言うと、CPU52は、基準値(本実施例では150秒)をレジスタに記憶させる。ここで記憶された基準値は、上記のS126の処理において時間情報の認証を実行する際に利用される。
次いで、CPU52は、S136で収集された時間情報を含む返信メッセージを作成する(S140)。S140の処理は、図4のM5の処理に対応する。さらに、CPU52は、MACを作成し、MACを返信メッセージに挿入する(S142)。S142の処理は、図4のM6の処理に対応する。CPU52は、返信メッセージを多機能機50に送信する(S144)。ここでのS144の処理は、図4のM7の処理に対応する。これにより、図9のS36において、PC10は、時間情報を含む返信メッセージを受信する。
続いて、S134でNOと判断された場合の処理について説明する。S134でNOと判断された場合、図15のS150に進む。S150では、CPU52は、暗号用ローカル秘密鍵K2を利用して復号化処理を実行する。これにより、管理メッセージのScopedPDU240(図6参照)の部分が復号化される。S150の処理は、図5のM9の処理に対応する。次いで、CPU52は、復号化されたScopedPDU240の中から、領域264(図8参照)に挿入されている識別子を特定する(S152)。即ち、CPU52は、OIDを特定する。
CPU52は、S152で特定されたOIDの内容に応じた処理を実行する(S154)。例えば、OIDがステータス情報を要求する識別子である場合、CPU52は、多機能機50のステータス情報(例えば消耗品(インクやトナー)の残量)を収集する。また、例えば、OIDがワンタイムパスワード要求識別子である場合、CPU52は、OTP作成プログラム58(図3参照)を起動し、ワンタイムパスワードを作成する。この処理は、図5のM10の処理に対応する。S154でワンタイムパスワードが作成された場合、そのワンタイムパスワードは、RAM66(図3参照)のワンタイムパスワードリストに記憶される。図17は、ワンタイムパスワードリスト150の一例を示す。ワンタイムパスワードリスト150は、ワンタイムパスワード160とデバイス情報162と有効フラグ164とが対応づけられたものである。S154でワンタイムパスワードが作成された場合、CPU52は、そのワンタイムパスワードを欄160に新たに書き込む。この段階では、新たなワンタイムパスワードに対応づけて、欄162と欄164に情報が書き込まれない。なお、欄162には、後述する図16のS188の処理でデバイス情報が書き込まれる。また、欄164には、後述するS192の処理で有効フラグが書き込まれる。なお、有効フラグは、ONとOFFのどちらかの値を持つ。
次いで、CPU52は、S154で作成(もしくは収集)された情報を含む返信メッセージを作成する(S156)。例えば、S154でワンタイムパスワードが作成された場合、CPU52は、ワンタイムパスワードを含む返信メッセージを作成する。この処理は、図5のM11の処理に対応する。CPU52は、返信メッセージのScopedPDU240(図6参照)の部分を暗号化する(S158)。S158の処理は、図5のM12の処理に対応する。さらに、CPU52は、MACを作成し、MACを返信メッセージに挿入する(S160)。S160の処理は、図5のM13の処理に対応する。CPU52は、返信メッセージを多機能機50に送信する(S144)。ここでのS144の処理は、図5のM14の処理に対応する。これにより、図10のS52において、PC10は、ワンタイムパスワードを含む返信メッセージを受信する。
続いて、図13のS112で実行されるRemoteSetup処理の内容について説明する。図16は、RemoteSetup処理のフローチャートを示す。CPU52は、図13のS104で受信された管理メッセージがパスワード認証メッセージであるのか否かを判断する(S180)。即ち、CPU52は、図11のS74でPC10から送信されたメッセージが受信されたのか否かを判断する。ここでYESの場合、CPU52は、認証処理を実行する(S182)。CPU52は、パスワード認証メッセージに含まれるワンタイムパスワードを特定する。次いで、CPU52は、パスワード認証メッセージに含まれるワンタイムパスワードがRAM66(図3参照)のワンタイムパスワードリスト150に記憶されているのか否かを判断する(S184)。具体的に言うと、CPU52は、まず、ワンタイムパスワードリスト150の中から、デバイス情報162と有効フラグ164が対応づけられていないワンタイムパスワード(群)を特定する。図17の例では、ワンタイムパスワード「fghij」が特定される。次いで、CPU52は、特定されたワンタイムパスワード(群)の中に、パスワード認証メッセージに含まれるワンタイムパスワードが存在するのか否かを判断する。S182及びS184の処理は、図5のM15の処理に対応する。
S184でNOの場合、CPU52は、認証が成功しなかったことを示すメッセージを作成する(S186)。CPU52は、S186で作成されたメッセージをPC10に送信する(S144)。これにより、PC10は、図11のS76でメッセージを受信し、S78でNOと判断し、S80でエラーを表示する。一方において、S184でYESの場合、CPU52は、ワンタイムパスワードリスト150にデバイス情報162を登録する(S188)。具体的に言うと、CPU52は、S184で認証成功と判断されたワンタイムパスワードに対応づけてPC10のIPアドレスを書き込む。例えば、S184で認証成功と判断されたワンタイムパスワードが「fghij」である場合、CPU52は、「fghij」に対応づけてPC10のIPアドレスを書き込む。
続いて、CPU52は、S188で登録されたワンタイムパスワードに対応するタイマをスタートする(S190)。後で詳しく述べるが、タイマは、ゼロから300秒までカウントする。次いで、CPU52は、ワンタイムパスワードリスト150に有効フラグONを書き込む(S192)。具体的に言うと、CPU52は、S188で登録されたデバイス情報(IPアドレス)にさらに対応づけて有効フラグONを書き込む(S192)。例えば、S192で「fghij」に対応づけてPC10のIPアドレスが書き込まれた場合、CPU52は、PC10のIPアドレスに対応づけて(即ち「fghij」に対応づけて)有効フラグONを書き込む。続いて、CPU52は、認証が成功したことを示すメッセージを作成する(S194)。CPU52は、S194で作成されたメッセージをPC10に送信する(S196)。これにより、PC10は、図11のS76でメッセージを受信し、S78でYESと判断し、S82以降の処理を実行する。S196の処理は、図5のM16の処理に対応する。
上述したように、図11のS86では、PC10は、RemoteSetup管理アプリケーション28に従ってリクエストを多機能機50に送信することができる。このようなリクエスト(管理メッセージ)が多機能機50で受信された場合、図16のS180においてNOと判断される。この場合、CPU52は、上記のリクエストの送信元(本実施例ではPC10)のIPアドレスがワンタイムパスワードリスト150に存在するのか否かを判断する(S198)。ここでYESの場合、CPU52は、上記のリクエストの送信元(本実施例ではPC10)のIPアドレスに対応づけられている有効フラグがONであるのか否かを判断する(S200)。ここでYESの場合、CPU52は、上記のリクエストに応じた処理を実行する(S202)。例えば、上記のリクエストが多機能機50の設定情報を変更することを指示するものである場合、CPU52は、設定情報を変更する。この場合、CPU52は、設定情報を変更したことを示すメッセージをPC10に送信する。また、上記のリクエストが多機能機50の所定の情報を返信することを指示するものである場合、CPU52は、上記の所定の情報を含むメッセージをPC10に送信する。S202でPC10にメッセージを送信する処理は、図5のM17の処理に対応する。なお、S198又はS200でNOと判断された場合、CPU52は、メッセージに応じた処理(S202)を実行しない。
続いて、CPU52が実行する他の処理(フローチャートには示されていない処理)について説明する。上述したように、図16のS190の処理では、ワンタイムパスワードに対応するタイマがスタートされる。CPU52は、タイマのカウント値が300秒に到達することを監視している。CPU52は、カウント値が300秒に到達したタイマに対応するワンタイムパスワードに対応づけられている有効フラグをONからOFFに変更する。これにより、ワンタイムパスワードが無効化される。なお、ワンタイムパスワードを無効化する手法は、ここで例示した手法に限られない。例えば、コネクション形式のプロトコル(例えばTCP)の場合、CPU52は、PC10とのTCPコネクションが切断されると、PC10のIPアドレスに対応づけられている有効フラグをONからOFFに変更してもよい。また、PC10からのセッション終了コマンドが受信された場合、CPU52は、PC10のIPアドレスに対応づけられている有効フラグをONからOFFに変更してもよい。また、例えば、コネクション形式と非コネクション形式のプロトコル(例えばUDP)のいずれの場合であっても、CPU52は、ワンタイムパスワードの認証回数が所定回数(1以上の整数)に到達すると、有効フラグをONからOFFに変更してもよい。
上記の多機能機管理システム2では、図11のS74で送信されるパスワード認証メッセージは、暗号化通信に対応していないプロトコルによって実行される。このために、パスワード認証メッセージの通信の過程でワンタイムパスワードが第三者に盗み見られる可能性は排除できない。しかしながら、ワンタイムパスワードは、そのワンタイムパスワードの認証が成功してから300秒が経過すると無効化される。このために、第三者がワンタイムパスワードを利用して多機能機50にアクセスしようとしても、認証が成功しない。第三者が多機能機50を不正に操作することを防止することができる。なお、PC10と多機能機50の両方に記憶されているセキュリティ情報100(図4参照)のAuthKey106やPrivKey110は、PC10から多機能機50にMACとして送信される。第三者が仮にMACを盗み見たとしても、そのMACからAuthKey106やPrivKey110を復元することはできない。このために、第三者がAuthKey106やPrivKey110を利用して多機能機50にアクセスし、多機能機50からワンタイムパスワードを取得することはできない。非常に高いセキュリティが確保されているシステム2が実現されている。
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
上記の実施例では、SNMPv3管理アプリケーション26が起動されている状態でRemoteSetup管理アプリケーション28の起動要求が入力された場合に、SNMPv3管理アプリケーション26は、ワンタイムパスワードの作成を多機能機50に要求する。この構成によると、RemoteSetup管理アプリケーション28にSNMPv3管理アプリケーション26を起動するためのプログラムを搭載しなくてもよい。しかしながら、RemoteSetup管理アプリケーション28にSNMPv3管理アプリケーション26を起動するためのプログラムを搭載してもよい。この場合、SNMPv3管理アプリケーション26が起動されていない状態でRemoteSetup管理アプリケーション28が起動された場合に、RemoteSetup管理アプリケーション28は、SNMPv3管理アプリケーション26を起動することができる。SNMPv3管理アプリケーション26は、ワンタイムパスワードの作成を多機能機50に要求することができる。
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。