(57)【要約】【課題】拡張辞書の書き換えに関するユーザの利便性を損なうことなくセキュリティを確保することのできる印刷制御装置、そのプログラムを提供する。【解決手段】印刷データをラスタイメージデータに展開する印刷制御装置であって、印刷データに含まれる命令の内容を、ジョブ毎の辞書２６、拡張辞書２７、標準辞書２８の優先順でこれらを参照して認識する命令認識部２４と、命令認識部２４で認識した命令の内容を実行する命令実行部２５と、を備え、命令実行部２５は、命令認識部２４で認識した第１の命令の内容が、拡張辞書２７の書き換えである場合は、書き換え対象の命令の名称が標準辞書２８に登録されているいずれかの命令の名称と一致するか否かを確認し、書き換え対象の命令の名称が標準辞書２８に登録されているいずれかの命令の名称と一致する場合は第１の命令の実行を拒否する。【選択図】図１
2019071524.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置で実行される、印刷データをラスタイメージデータに展開するプログラムであって、
印刷データに含まれる命令の内容を、ジョブ毎の辞書、拡張辞書、標準辞書の優先順でこれらを参照して認識する命令認識ステップと、
前記命令認識ステップで認識した命令の内容を実行する命令実行ステップと、
を備え、
前記命令実行ステップでは、前記命令認識ステップで認識した第１の命令の内容が、前記拡張辞書の書き換えである場合は、書き換え対象の命令の名称が前記標準辞書に登録されているいずれかの命令の名称と一致するか否かに応じて、前記第１の命令の実行を拒否するか否かを切り替える
ことを特徴とするプログラム。
【請求項２】
前記命令実行ステップでは、前記第１の命令の内容が前記拡張辞書の書き換えであって書き換え対象の命令の名称が前記標準辞書に登録されているいずれかの命令の名称と一致する場合は、前記第１の命令の実行を拒否する
ことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記拒否される命令の入力をプリンタの操作パネルで管理者から受け付ける入力ステップと、
前記入力ステップで受け付けた命令を実行する強制実行ステップと
をさらに有する
ことを特徴とする請求項１または２に記載のプログラム。
【請求項４】
前記命令実行ステップで実行を拒否した命令を保持する保持ステップと、
前記保持された命令の実行承認をプリンタの操作パネルで管理者から受け付ける承認受領ステップと、
前記承認受領ステップで実行承認を受けた命令を実行する第２強制実行ステップと、
をさらに有する
ことを特徴とする請求項１乃至３のいずれか１つに記載のプログラム。
【請求項５】
前記命令実行ステップでは、前記第１の命令の内容が、前記拡張辞書の書き換えであり、かつ書き換え対象の命令の名称が前記標準辞書に登録されているいずれの命令の名称とも一致しない場合であっても、前記書き換え対象の命令が過去にジョブで定義されたことのない命令の場合は、前記第１の命令の実行を拒否する
ことを特徴とする請求項２に記載のプログラム。
【請求項６】
前記拡張辞書を書き換える命令を有効とするか否かの設定を受け付ける設定ステップをさらに有し、
前記命令実行ステップでは、前記拡張辞書を書き換える命令を有効とする設定を前記設定ステップで受けている場合は、前記拒否を行わない
ことを特徴とする請求項１乃至５のいずれか１つに記載のプログラム。
【請求項７】
印刷データをラスタイメージデータに展開する印刷制御装置であって、
印刷データに含まれる命令の内容を、ジョブ毎の辞書、拡張辞書、標準辞書の優先順でこれらを参照して認識する命令認識部と、
前記命令認識部で認識した命令の内容を実行する命令実行部と、
を備え、
前記命令実行部は、前記命令認識部で認識した第１の命令の内容が、前記拡張辞書の書き換えである場合は、書き換え対象の命令の名称が前記標準辞書に登録されているいずれかの命令の名称と一致するか否かに応じて、前記第１の命令の実行を拒否するか否かを切り替える
ことを特徴とする印刷制御装置。
【請求項８】
前記命令実行部は、前記第１の命令の内容が前記拡張辞書の書き換えであって書き換え対象の命令の名称が前記標準辞書に登録されているいずれかの命令の名称と一致する場合は、前記第１の命令の実行を拒否する
ことを特徴とする請求項７に記載の印刷制御装置。
【請求項９】
前記拒否される命令の入力をプリンタの操作パネルで管理者から受け付ける入力部をさらに有し、
前記命令実行部は、前記入力部で受け付けた命令を実行する
ことを特徴とする請求項７または８に記載の印刷制御装置。
【請求項１０】
前記命令実行部で実行を拒否された命令を保持する保持部と、
前記保持部に保持された命令の実行承認をプリンタの操作パネルで管理者から受け付ける承認受領部と、
をさらに有し、
前記命令実行部は、前記承認受領部で実行承認を受けた命令を実行する
ことを特徴とする請求項７乃至９のいずれか１つに記載の印刷制御装置。
【請求項１１】
前記命令実行部は、前記第１の命令の内容が、前記拡張辞書の書き換えであり、かつ書き換え対象の命令の名称が前記標準辞書に登録されているいずれの命令の名称とも一致しない場合であっても、前記書き換え対象の命令が過去にジョブで定義されたことのない命令の場合は、前記第１の命令の実行を拒否する
ことを特徴とする請求項８に記載の印刷制御装置。
【請求項１２】
前記拡張辞書を書き換える命令を有効とするか否かの設定を受け付ける設定部をさらに有し、
前記命令実行部は、前記拡張辞書を書き換える命令を有効とする設定を前記設定部で受けている場合は、前記拒否を行わない
ことを特徴とする請求項７乃至１１のいずれか１つに記載の印刷制御装置。
【請求項１３】
請求項７乃至１２のいずれか１つに記載の印刷制御装置を有するプリンタ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷データをラスタイメージデータに展開する印刷制御装置のプログラム、印刷制御装置、およびこれを含むプリンタに関する。
【背景技術】
【０００２】
ＰＤＬ（Page Description Language）の１つであるPostScript（登録商標）には、標準オペレータの動作を定義する標準辞書があり、ユーザからPostScriptジョブを受けたインタプリタはジョブ内に記載されているオペレータに対して標準辞書を参照しながら処理を実行していく。たとえば、図１２の場合、「Stroke」というオペレータの内容を標準辞書を参照することで「線を引く」と認識する。図１２の場合、線とテキストを描画したページをプリント出力する、という動作が実行される。なお、PostScriptでは実行可能オブジェクトをオペレータ（最初から定義されているもの）と手続き(プログラムによって作成されるもの)に区別しているが、これらを区別しない場合はこれを、命令、と呼ぶものとする。
【０００３】
また、PostScriptには上記標準辞書の他にユーザが動作を定義できる辞書が存在する。その１つはジョブで定義される辞書である。ジョブで定義された命令は標準辞書に定義された命令よりも優先して実行される。ジョブの辞書の定義の更新は標準辞書で定義されている命令（オペレータ）に対しても実行可能という仕様になっており、各PostScriptジョブは標準オペレータの内容を任意に変更して実行することができる。たとえば、図１３の場合、ジョブの拡張辞書で「stroke」というオペレータを「点線を引く」と定義してあり、ジョブの拡張辞書は標準辞書より優先されるため、「Stroke」という標準オペレータの内容は「点線を引く」と認識される。そのため、図１３の場合、点線とテキストを描画したページをプリント出力する、という動作が実行される。
【０００４】
ジョブで定義された拡張辞書は、そのジョブを抜けた時点でリセットされ次のジョブの実行時には、各辞書は、装置起動時の状態（初期ＶＭ（仮想メモリ）と呼ばれる）に戻る。PostScriptでは、初期ＶＭにおいても拡張辞書を定義できる。すなわち、PostScriptでは、ジョブで定義された辞書（拡張辞書）、初期ＶＭの拡張辞書、初期ＶＭの標準辞書、の優先順でこれら３つの辞書が参照される。
【０００５】
初期ＶＭの拡張辞書の内容は、startjob命令及びexitserver命令を用いて更新を指示することができる。更新の指示を受けたプリンタのインタプリタはdefオペレータを介して拡張辞書の定義を更新する。
【０００６】
初期ＶＭの変更は特定のジョブだけでなく、受信した全てのPostScriptジョブに影響を与える。そのため、悪意ある攻撃者が初期ＶＭの拡張辞書を変更することで、標準辞書に定義されている標準オペレータの内容を意図的に変更することができてしまう、という問題がある。
【０００７】
たとえば、図１４に示すような攻撃を受けた場合、初期ＶＭの拡張辞書に、「showPage」は「何もしない」、と定義される。この状態で図１５のようにshowPageを含むジョブを受信しても、ユーザの意に反して、ページのプリント出力は行われない。具体的には、ユーザは、点線とテキストを描画したページをプリント出力する、というジョブを意図していたにもかかわらず、プリント出力が行われなくなる。
【０００８】
各命令には名前があり、ジョブにより生成される辞書、拡張辞書、標準辞書の順で名前を検索するため、標準命令（標準オペレータ）と同じ名前の命令（手続）がstartjobにて拡張辞書に追加されると、その名前の命令に対応する処理は標準辞書より先に参照される拡張辞書で定義された内容で実行されるため、想定外の動作となる。
【０００９】
想定外の動作を回避する技術として、下記特許文献１には、ページ毎に異なる印刷設定が可能な場合に、各ページの印刷処理開始前に１ページ目の印刷設定と現在のページの印刷設定を比較し、印刷設定が異なる場合には表示部に警告を表示する印刷装置が開示されている。また、下記特許文献２には、印刷条件に名前を付けてプリンタに登録しておき、その名前で印刷条件を呼び出して実行できるようにした印刷システムが開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１５−７９３２６号公報
【特許文献２】特開２０１３−１４９０８５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
近年、プリンタや複合機のセキュリティが重要視され、認証機関においてもセキュリティに関する評価基準が追加導入され、認証条件が厳しくなってきている。こうした中、前述した標準オペレータの内容が悪意ある攻撃者によって変更されることがセキュリティ上、問題視されている。
【００１２】
これに対して、初期ＶＭの拡張辞書を書き換えるstartjob/exitserver命令を一律に使用不可とする（インタプリタ側で受け入れない）対応を取った場合、セキュリティ上の問題は回避されるが、今度はその命令を使用したいというユーザの利便性を損なうことになってしまう。
【００１３】
本発明は、上記の問題を解決しようとするものであり、拡張辞書の書き換えに関するユーザの利便性を損なうことなくセキュリティを確保することのできる印刷制御装置のプログラム、印刷制御装置、およびこれを含むプリンタを提供することを目的としている。
【課題を解決するための手段】
【００１４】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
【００１５】
［１］情報処理装置で実行される、印刷データをラスタイメージデータに展開するプログラムであって、
印刷データに含まれる命令の内容を、ジョブ毎の辞書、拡張辞書、標準辞書の優先順でこれらを参照して認識する命令認識ステップと、
前記命令認識ステップで認識した命令の内容を実行する命令実行ステップと、
を備え、
前記命令実行ステップでは、前記命令認識ステップで認識した第１の命令の内容が、前記拡張辞書の書き換えである場合は、書き換え対象の命令の名称が前記標準辞書に登録されているいずれかの命令の名称と一致するか否かに応じて、前記第１の命令の実行を拒否するか否かを切り替える
ことを特徴とするプログラム。
【００１６】
上記発明および下記［７］に記載の発明では、拡張辞書を書き換える第１の命令が書き換え対象とする命令の名称が標準辞書に登録されている命令と同一名称か否かに応じて、第１の命令を拒否するか否かを切り替える。
【００１７】
［２］前記命令実行ステップでは、前記第１の命令の内容が前記拡張辞書の書き換えであって書き換え対象の命令の名称が前記標準辞書に登録されているいずれかの命令の名称と一致する場合は、前記第１の命令の実行を拒否する
ことを特徴とする［１］に記載のプログラム。
【００１８】
上記発明および下記［８］に記載の発明では、拡張辞書を書き換える第１の命令が書き換え対象とする命令の名称が標準辞書に登録されている命令と同一名称の場合は、第１の命令を拒否する。
【００１９】
［３］前記拒否される命令の入力をプリンタの操作パネルで管理者から受け付ける入力ステップと、
前記入力ステップで受け付けた命令を実行する強制実行ステップと
をさらに有する
ことを特徴とする［１］または［２］に記載のプログラム。
【００２０】
上記発明および下記［９］に記載の発明では、標準辞書に登録されている命令の名称と同一か否かに基づく判断で実行が拒否される命令については、プリンタの操作パネルで管理者が入力することによって実行が確保される。
【００２１】
［４］前記命令実行ステップで実行を拒否した命令を保持する保持ステップと、
前記保持された命令の実行承認をプリンタの操作パネルで管理者から受け付ける承認受領ステップと、
前記承認受領ステップで実行承認を受けた命令を実行する第２強制実行ステップと、
をさらに有する
ことを特徴とする［１］乃至［３］のいずれか１つに記載のプログラム。
【００２２】
上記発明および下記［１０］に記載の発明では、標準辞書に登録されている命令の名称と同一か否かに基づく判断で実行を拒否した命令については一時保持しておき、後に、プリンタの操作パネルで管理者から実行の承諾を受けた場合に実行する。
【００２３】
［５］前記命令実行ステップでは、前記第１の命令の内容が、前記拡張辞書の書き換えであり、かつ書き換え対象の命令の名称が前記標準辞書に登録されているいずれの命令の名称とも一致しない場合であっても、前記書き換え対象の命令が過去にジョブで定義されたことのない命令の場合は、前記第１の命令の実行を拒否する
ことを特徴とする［２］に記載のプログラム。
【００２４】
上記発明および下記［１１］に記載の発明では、拡張辞書を書き換える第１の命令が書き換え対象とする命令の名称が標準辞書に登録されている命令と同一名称の場合は第１の命令を拒否する場合において、標準辞書に登録されている命令と同一名称でない場合であっても、書き換え対象の命令が過去に定義されたことのない命令の場合は第１の命令の実行を拒否する。
【００２５】
［６］前記拡張辞書を書き換える命令を有効とするか否かの設定を受け付ける設定ステップをさらに有し、
前記命令実行ステップでは、前記拡張辞書を書き換える命令を有効とする設定を前記設定ステップで受けている場合は、前記拒否を行わない
ことを特徴とする［１］乃至［５］のいずれか１つに記載のプログラム。
【００２６】
上記発明および下記［１２］に記載の発明では、設定部で拡張辞書を書き換える命令を有効とする設定を受けている場合は、拡張辞書を書き換える命令を拒否しない。
【００２７】
［７］印刷データをラスタイメージデータに展開する印刷制御装置であって、
印刷データに含まれる命令の内容を、ジョブ毎の辞書、拡張辞書、標準辞書の優先順でこれらを参照して認識する命令認識部と、
前記命令認識部で認識した命令の内容を実行する命令実行部と、
を備え、
前記命令実行部は、前記命令認識部で認識した第１の命令の内容が、前記拡張辞書の書き換えである場合は、書き換え対象の命令の名称が前記標準辞書に登録されているいずれかの命令の名称と一致するか否かに応じて、前記第１の命令の実行を拒否するか否かを切り替える
ことを特徴とする印刷制御装置。
【００２８】
［８］前記命令実行部は、前記第１の命令の内容が前記拡張辞書の書き換えであって書き換え対象の命令の名称が前記標準辞書に登録されているいずれかの命令の名称と一致する場合は、前記第１の命令の実行を拒否する
ことを特徴とする［７］に記載の印刷制御装置。
【００２９】
［９］前記拒否される命令の入力をプリンタの操作パネルで管理者から受け付ける入力部をさらに有し、
前記命令実行部は、前記入力部で受け付けた命令を実行する
ことを特徴とする［７］または［８］に記載の印刷制御装置。
【００３０】
［１０］前記命令実行部で実行を拒否された命令を保持する保持部と、
前記保持部に保持された命令の実行承認をプリンタの操作パネルで管理者から受け付ける承認受領部と、
をさらに有し、
前記命令実行部は、前記承認受領部で実行承認を受けた命令を実行する
ことを特徴とする［７］乃至［９］のいずれか１つに記載の印刷制御装置。
【００３１】
［１１］前記命令実行部は、前記第１の命令の内容が、前記拡張辞書の書き換えであり、かつ書き換え対象の命令の名称が前記標準辞書に登録されているいずれの命令の名称とも一致しない場合であっても、前記書き換え対象の命令が過去にジョブで定義されたことのない命令の場合は、前記第１の命令の実行を拒否する
ことを特徴とする［８］に記載の印刷制御装置。
【００３２】
［１２］前記拡張辞書を書き換える命令を有効とするか否かの設定を受け付ける設定部をさらに有し、
前記命令実行部は、前記拡張辞書を書き換える命令を有効とする設定を前記設定部で受けている場合は、前記拒否を行わない
ことを特徴とする［７］乃至［１１］のいずれか１つに記載の印刷制御装置。
【００３３】
［１３］［７］乃至［１２］のいずれか１つに記載の印刷制御装置を有するプリンタ。
【発明の効果】
【００３４】
本発明に係るプログラム、印刷制御装置およびこれを含むプリンタによれば、拡張辞書の書き換えに関するユーザの利便性を損なうことなくセキュリティを確保することができる。
【図面の簡単な説明】
【００３５】
【図１】本発明の実施の形態に係るプリンタの機能を備えた複合機の概略構成を示すブロック図である。
【図２】拡張辞書にshowpageという名称の命令（標準命令と同一名称の命令）を定義するstartjob命令を受信した場合に印刷制御装置が行う動作を示す説明図である。
【図３】拡張辞書にabcdという名称の命令（標準命令と異なる名称の命令）を定義しようとするstartjob命令を受けた場合に印刷制御装置が行う動作を示す説明図である。
【図４】印刷制御装置の制御部が行う対応策１に係る処理を示す流れ図である。
【図５】印刷制御装置の制御部が行う対応策２に係る動作を示す説明図である。
【図６】印刷制御装置の制御部が行う対応策３に係る動作を示す説明図である。
【図７】印刷制御装置の制御部が行う対応策４に係る動作を示す説明図である。
【図８】対応策１、対応策３、対応策４を採用した場合に印刷制御装置が行う動作を示す流れ図である。
【図９】変形例１で、拡張辞書にshowpageという名称の命令（標準命令と同一名称の命令）を定義しようとするstartjob命令を受けた場合に印刷制御装置が行う動作を示す説明図である。
【図１０】変形例１で、拡張辞書にabcdという名称の命令（標準命令と異なる名称の命令）を定義しようとするstartjob命令を受けた場合に印刷制御装置が行う動作を示す説明図である。
【図１１】設定画面の一例を示す図である。
【図１２】従来の装置において、標準オペレータのジョブを受信した場合の動作を示す図である。
【図１３】従来の装置において、ジョブで辞書を定義した場合の動作を示す図である。
【図１４】従来の装置において、攻撃者が初期ＶＭの拡張辞書に標準オペレータと同一名称の手続きを定義した例を示す図である。
【図１５】従来の装置において、図１４の攻撃を受けた後、図１２と同じジョブを受信した場合の動作を示す図である。
【発明を実施するための形態】
【００３６】
以下、図面に基づき本発明の実施の形態を説明する。
【００３７】
図１は、本発明の実施の形態に係るプリンタの機能を備えた複合機８の一例を示している。複合機８は、ＬＡＮ（Local Area Network）などのネットワーク２に接続されており、該ネットワーク２には複合機８に印刷データを送信する情報処理端末であるＰＣ５等が接続されている。
【００３８】
複合機８は、原稿を光学的に読み取ってその複製画像を記録紙に印刷するコピー機能、読み取った原稿の画像データを一時保存したり外部端末へネットワークを通じて送信したりするスキャン機能、ユーザの情報処理端末から受信した印刷データに基づいて印刷する印刷機能などを備えている。以後、複合機８をＭＦＰとも記す。
【００３９】
複合機８は、本体部１０に、印刷制御装置２０（所謂、プリンタコントローラ）を接続して構成されている。ＰＣ５は、PostScriptなどのＰＤＬで記述された印刷データを生成して複合機８に送信し、複合機８の印刷制御装置２０は受信した印刷データの各ページをラスタライズしてラスタイメージデータを生成する機能を果たす。本体部１０は印刷制御装置２０が生成したラスタイメージデータを受け取り、これに基づいて印刷する機能を果たす。なお、本実施の形態では、印刷データはPostScriptで記述されているものとする。
【００４０】
複合機８の本体部１０は、当該本体部１０の動作を統括的に制御する制御部１１を有している。制御部１１はＣＰＵ(Central Processing Unit)を有する。制御部１１には、記憶部１２、読取部１３、プリンタエンジン部１４、操作パネル１５、ネットワーク通信部１６、メモリ制御部１７などが接続されている。
【００４１】
印刷制御装置２０は、制御部２１、記憶部２２、画像記憶部２３等を備えている。画像記憶部２３にはラスタライズしたイメージデータが一時保存される。
【００４２】
本体部１０の記憶部１２は、ＲＯＭ(Read Only Memory)、ＲＡＭ(Random Access Memory)、不揮発メモリ、ハードディスク装置などで構成される。記憶部１２には、各種のプログラムが格納されており、これらのプログラムに従って制御部１１が処理を実行することで複合機８の本体部１０としての機能が実現される。記憶部１２は、ワークメモリ、通信バッファ、ファイルや画像データの一時記憶部として使用される。
【００４３】
読取部１３は、原稿を光学的に読み取って画像データを取得する機能を果たす。読取部１３は、たとえば、プラテンガラス上に載置された原稿に光を照射する光源と、その反射光を受けて原稿を幅方向に１ライン分読み取るラインイメージセンサと、光源が光を照射する位置およびラインイメージセンサによるライン単位の読取位置を原稿の長さ方向に順次移動させる移動ユニットと、原稿からの反射光をラインイメージセンサに導いて結像させるレンズやミラーなどからなる光学経路と、ラインイメージセンサの出力するアナログ画像信号をデジタルの画像データに変換する変換部などを備えて構成される。
【００４４】
プリンタエンジン部１４は、画像データに応じた画像を記録紙上に画像形成する機能を果たす。ここでは、記録紙の搬送装置と、感光体ドラムと、帯電装置と、レーザーユニットと、現像装置と、転写分離装置と、クリーニング装置と、定着装置とを有し、電子写真プロセスによって画像形成を行う、所謂、レーザープリンタのエンジン部として構成されている。画像形成は他の方式でもかまわない。
【００４５】
操作パネル１５は、表示部と、操作部を備えたユーザインターフェイス装置である。表示部は、液晶ディスプレイ（ＬＣＤ…Liquid Crystal Display）などで構成され、各種の操作画面、設定画面などを表示する機能を果たす。操作部は、テンキーやスタートボタンなどのハードキーと、表示部の物理的画面上に設けられたタッチパネルなどで構成される。タッチパネルはタッチペンや指などで接触操作された座標位置を検出する。操作パネル１５は、ジョブの設定を受け付けるジョブ設定部としての機能を果たす。
【００４６】
ネットワーク通信部１６は、ネットワーク２を通じてユーザや管理者のＰＣ５、その他の外部装置との間で通信する機能を果たす。
【００４７】
メモリ制御部１７は、制御部１１からの指示に従って、記憶部１２への画像データの書込み、記憶部１２からの画像データの読み出しを制御する。またメモリ制御部１７は、本体部１０と印刷制御装置２０との間で画像データ（ラスタイメージデータ）を転送する機能を果たす。たとえば、メモリ制御部１７は、原稿の読み取り中に読取部１３から次々と出力される画像データを順次、記憶部１２に格納して保存する。また、記憶部１２に格納されている画像データをプリンタエンジン部１４による印刷動作のタイミングを合わせて順次読み出してプリンタエンジン部１４に出力する。また、印刷制御装置２０の画像記憶部２３２に一時記憶されているラスタイメージデータを本体部１０の記憶部１２に転送する機能を果たす。
【００４８】
印刷制御装置２０の制御部２１はＣＰＵで構成され、記憶部２２はＲＡＭ、ＲＯＭ、不揮発メモリなどで構成される。制御部２１は記憶部２２に格納されたプログラムに従って動作することで印刷制御装置２０としての各種機能を実現する。画像記憶部２３は、ハードディスク装置等の不揮発記憶装置であり、印刷データやこれをラスタライズして得たラスタイメージデータなどの記憶に使用される。
【００４９】
印刷制御装置２０の制御部１１はプログラムを実行することで、命令認識部２４、命令実行部２５の機能を果たす。また、記憶部２２には、ジョブで定義された一時的な辞書であるジョブ辞書２６、すべてのジョブに共通の拡張辞書２７および標準辞書２８が記憶される。標準辞書２７には予め設定された標準の命令(オペレータ)が登録される。拡張辞書２６にはプログラムで定義した追加の命令（手続き）が登録される。拡張辞書２７および標準辞書２８は初期ＶＭ（仮想メモリ）と呼ばれる領域に保存される。
【００５０】
命令認識部２４は、印刷データに含まれる命令の内容を、ジョブ毎の辞書、拡張辞書、標準辞書の優先順でこれらを参照して認識する。命令実行部２５は、命令認識部で認識した命令の内容を実行する。命令実行部２５が各種の命令を実行することで画像記憶部２３にラスタイメージデータが生成される。命令がプリント出力の場合、印刷制御装置２０から本体部１０の制御部１１へプリント出力の指示が送出され、これを受けた本体部１０がプリント処理を実行する。
【００５１】
PostScriptでは、startjob/exitserver命令を用いることで初期ＶＭの拡張辞書２７を書き換えて命令の追加等を行うことができる。しかし、これらの命令を自由に使えるようにした場合、背景技術で示したようなセキュリティ上の問題が生じる。そこで、本実施の形態に係る印刷制御装置２０では、startjob/exitserver命令に関して以下のような対応を行う。
【００５２】
＜対応策１＞
startjob/exitserver命令を通して、defオペレータで初期ＶＭの拡張辞書２７に命令（手続き）を定義（更新）する際、定義する命令の名称が、標準辞書２８に登録されている命令（オペレータ）と同名称か否かを判断し、同名称であれば拡張辞書２７へ追加しないように制御する。すなわち、startjob/exitserver命令の実行を拒否する。これにより、少なくとも標準辞書２８に登録されている命令（オペレータ）については標準辞書２８で定義されている内容の動作を確保することができる。
【００５３】
たとえば、図２に示すように、攻撃者から、拡張辞書にshowpageという名称の命令を定義しようとするstartjob命令を受信した場合、印刷制御装置２０の制御部２１（命令実行部２５）は、showpageと同名称の命令（オペレータ）が標準辞書２８に登録されているか否かを確認する。この場合showpageという名称の命令は標準辞書２８に登録されているので、命令実行部２５はこのstartjob命令を実行しない（拒否する）。すなわち、拡張辞書２７にshowpageという名称の命令は登録されない。
【００５４】
一方、図３に示すように、拡張辞書にabcdという名称の命令を定義しようとするstartjob命令を受けた場合は、abcdという名称の命令は標準辞書２８に登録されていないので、命令実行部２５はこのstartjob命令を実行する。すなわち、拡張辞書２７にabcdという名称の命令が追加して定義される。
【００５５】
図４は、印刷制御装置２０の制御部２１が行う＜対応策１＞に係る処理の流れを示している。初期ＶＭ上の拡張辞書２７の更新命令を受信すると（ステップＳ１０１）、該更新命令が更新対象とする命令（手続き）の名称を取得し（ステップＳ１０２）、更新対象の命令と、標準辞書２８の全ての命令（オペレータ）の名称とを比較する（ステップＳ１０３）。更新対象命令（手続き）の名称と同名称の命令（オペレータ）が標準辞書２８に登録されている場合は（ステップＳ１０４;Ｙｅｓ）、ステップＳ１０１で受けた更新命令を破棄して（ステップＳ１０５）本処理を終了する。
【００５６】
更新対象命令の名称と同名称の命令が標準辞書２８に登録されていない場合は（ステップＳ１０４;Ｎｏ）、ステップＳ１０１で受けた更新命令を実行して拡張辞書２７を書き換えて（ステップＳ１０６）、本処理を終了する。
【００５７】
対応策１では、PostScriptで標準実装されているオペレータの定義を更新することはできない一方、それ以外の名称の手続きについてはstartjob/exitserverといった拡張辞書更新用オペレータの使用を制限しないので、ユーザの利便性を損なわずにセキュリティを維持することができる。
【００５８】
しかし、対応策１では、以下の課題が残る。  
（課題１）初期ＶＭ上の拡張辞書に標準オペレータと同名称の手続きを定義できなくなる。  
（課題２）標準オペレータ以外の手続き定義は攻撃者も自由に書き換え可能になる。  
これらの課題については以下のように対応する。
【００５９】
＜対応策２＞
管理者権限が確認された管理者が複合機８の操作パネル１５から入力する場合は、初期ＶＭ上の拡張辞書に標準オペレータと同名称の手続きを定義することを可能にする。
【００６０】
すなわち、図５に示すように、ネットワークを通じて受信する命令については、初期ＶＭ上の拡張辞書に標準オペレータと同名称の手続きを定義する命令については拒否する。しかし、管理者権限の確認された管理者が初期ＶＭ上の拡張辞書に標準オペレータと同名称の手続きを定義する設定を印刷制御装置２０の操作パネル１５から行い得るようにユーザＩ／Ｆを用意する。
【００６１】
図５は、strokeという命令が実線の描画ではなく点線の描画となるように操作パネル上から初期ＶＭの拡張辞書２７を設定する例を示している。拡張辞書設定画面４０において、手続き指定の欄に標準辞書で登録されているオペレータと同名称の手続き名を入力し、設定入力の欄に処理内容を入力した後、設定変更ボタンを押下することで、初期ＶＭの拡張辞書２７にstrokeという手続きが設定登録される。
【００６２】
＜対応策３＞
startjob/extiserver命令の対象が標準オペレータと同一名称であっても該命令を即破棄せずに一時保存領域に保持し、管理者が操作パネル１５で承認操作を行った場合に、初期ＶＭの拡張辞書２７に対象の命令（手続き）が定義されるようにする。
【００６３】
図６の例では、showpageを対象とするstartjob命令や、strokeを対象とするstartjob命令は、いずれも定義対象の命令（手続き）の名称が標準辞書２８に登録されているオペレータと同一名称なので、印刷制御装置２０の制御部１１はこの命令を即実行せずに一時保存領域に保持する。その後、管理者権限の確認された管理者が所定の操作を行うことで、複合機８の操作パネル１５に、保持命令承諾画面５０が表示される。保持命令承諾画面５０には、一時保存領域に保持されている各命令（対象とする手続き）がその命令の実行を承認するか否かの選択欄と共に表示される。管理者が実行を承諾する命令の選択欄にチェックマークを入力した後、設定変更釦を押下すると、チェックマークの付された命令（対象とする手続き）が拡張辞書２７に定義される。
【００６４】
対応策２、３はいずれもネットワーク経由によるアクセスリスク、一般ユーザによる不特定多数操作のリスクに対し、操作を操作パネル１５からに限定することや管理者のみのアクセスに限定することでリスクを回避している。対応策２、３は課題１に対応するものである。
【００６５】
＜対応策４＞
対応策４は前述の課題２に対応するものであり、過去にジョブとして受信したことのあるオリジナル手続きのみを更新対象として許可し、過去にジョブとして受信したことのないオリジナル手続きを拡張辞書に登録する命令は拒否する。
【００６６】
対応策１では、標準辞書２８に存在する命令と同一名称以外の命令を対象とするstartjob/extiserver命令については無防備となってしまう。そのため、オリジナル手続きについては、過去に受信したPostScriptジョブから手続き名（このジョブで定義された手続き名）を蓄積しておき、受信履歴のあるものだけを更新対象とするように制御する。
【００６７】
複合機８の印刷制御装置２０は、受信したPostScriptジョブの中に手続きが定義されている（ジョブの辞書に手続きを定義する命令が存在する）場合、その手続きを履歴情報として保存する。図７の例では、abcという名称の手続きを定義したPostScriptジョブ１と、defという名称の手続きを定義したPostScriptジョブ２を過去に受信しており、履歴情報にそれらが登録されている。
【００６８】
この状態で、startjob命令を受信すると、印刷制御装置２０の制御部２１は、該startjob命令が対象とする命令（手続き）の名称と同一名称の命令（手続き）が履歴情報に登録されているか否かを確認し、履歴情報に登録があれば、該startjob命令を実行し、履歴情報に登録がなければ、該startjob命令を実行しない。
【００６９】
図７の例では、abcとい名称の命令（手続き）を対象とするstartjob命令は、abcという命令（手続き）が履歴情報に存在するので、実行され、その結果として初期ＶＭの拡張辞書２７にabcという名称の手続きが定義されている。一方、ghiとい名称の命令（手続き）を対象とするstartjob命令は、ghiという命令（手続き）が履歴情報に存在しないので、実行されず、その結果として初期ＶＭの拡張辞書２７にdefという名称の手続きは定義されていない。
【００７０】
図８は、対応策１、対応策３、対応策４を採用した場合の印刷制御装置２０の制御部２１が行う処理を示す流れ図である。初期ＶＭ上の拡張辞書２７の更新命令を受信すると（ステップＳ２０１）、該更新命令が更新対象とする命令（手続き）の名称を取得し（ステップＳ２０２）、更新対象の命令（手続き）と、標準辞書２８の全ての命令（オペレータ）の名称とを比較する（ステップＳ２０３）。更新対象命令の名称と同名称の命令が標準辞書２８に登録されている場合は（ステップＳ２０４;Ｙｅｓ）、その更新命令を一時保持する（ステップＳ２０６）。
【００７１】
更新対象命令の名称と同名称の命令が標準辞書２８に登録されていない場合は（ステップＳ２０４;Ｎｏ）、更新対象命令（手続き）の名称と同名称の命令（手続き）が履歴に存在するか否かを確認する（ステップＳ２０５）。履歴に同一名称の命令（手続き）が存在しなければ（ステップＳ２０５;Ｎｏ）、その更新命令を一時保持する（ステップＳ２０６）。
【００７２】
履歴に同一名称の命令（手続き）が存在する場合は（ステップＳ２０５;Ｙｅｓ）、ステップＳ２０１で受けた更新命令を実行して拡張辞書２７を書き換えて（ステップＳ２０９）、本処理を終了する。
【００７３】
ステップＳ２０６で更新命令を一時保持した場合は、その後、管理者が操作パネルから承諾操作を行うのを待機する。一定時間が経過しても操作パネルで管理者から実行の承諾を受けない更新命令については（ステップＳ２０７;Ｎｏ）、その更新命令を破棄して（ステップＳ２０８）、本処理を終了する。操作パネルを通じて管理者から実行の承諾を受けた更新命令については（ステップＳ２０７;Ｙｅｓ）、その更新命令を実行して拡張辞書２７を書き換えて（ステップＳ２０９）、本処理を終了する。
【００７４】
＜変形例１＞
前述の対応策１では、標準辞書２８に登録されている命令（オペレータ）と同一名称の命令（手続き）の拡張辞書２７への登録を拒否するようにしたが、変形例１では、標準辞書２８に登録されている命令（オペレータ）と同一名称の命令（手続き）の拡張辞書２７への登録は許可し、標準辞書２８に登録されている命令（オペレータ）と同一名称でない命令（手続き）の拡張辞書２７への登録を拒否する。
【００７５】
たとえば、ユーザから、拡張辞書にshowpageという名称の命令（手続き）を定義しようとするstartjob命令を受信している場合、印刷制御装置２０の制御部２１（命令実行部２５）は、showpageと同名称の命令（オペレータ）が標準辞書２８に登録されているか否かを確認する。Showpageは標準辞書２８に登録されている命令（オペレータ）なので、図９に示すように、命令実行部２５はこのstartjob命令を実行して拡張辞書２７にshowpageという名称の命令（手続き）を定義する。
【００７６】
一方、図１０に示すように、拡張辞書にabcdという名称の命令（手続き）を定義しようとするstartjob命令を受けた場合は、abcdという名称の命令（オペレータ）は標準辞書２８に登録されていないので、命令実行部２５はこのstartjob命令を実行しない。
【００７７】
＜変形例２＞
拡張辞書２７を書き換える命令（startjob/extiserver）を有効とするか否かの設定を設定部（操作パネル１５の設定画面）から受け付け、命令実行部２５は、拡張辞書２７を書き換える命令を有効とする設定を設定部で受けている場合は、拡張辞書２７を書き換える命令を拒否しない。
【００７８】
たとえば、図１１に示すような設定画面６０を操作パネル１５に表示して、拡張辞書２７を書き換える命令（startjob/extiserver）を有効とするか無効とするかの設定を管理者等から受け付ける。有効の設定を受けた場合は、対応策１等の処理は行わずに、拡張辞書２７を書き換える命令（startjob/extiserver）を受けた場合に無条件でそれを実行する。無効の設定を受けている場合は、拡張辞書２７を書き換える命令（startjob/extiserver）の実行をすべて拒否する。なお、設定画面６０に「判定」の項目をさらに設け、判定が設定された場合は前述したいずれかの対応策を実施するようにしてもよい。
【００７９】
このように本発明によれば、startjob/extiserver命令による拡張辞書の書き換えに関して、ユーザの利便性を損なうことなくセキュリティを確保することができる。
【００８０】
以上、本発明の実施の形態を図面によって説明してきたが、具体的な構成は実施の形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。
【００８１】
実施の形態では、対象のＰＤＬがPostScriptの場合を例に説明したが、本発明の対象はPostScriptに限定されるものではなく、初期ＶＭの拡張辞書２７と標準辞書２８のような辞書を有し、拡張辞書２７を更新する命令を有するＰＤＬであれば他の種類のＰＤＬであっても構わない。
【００８２】
実施の形態では複合機８を例に説明したが、これに限定されずプリンタ機能を有する装置であればよく、プリンタ機能のみを有する印刷装置であってもよい。
【００８３】
本発明は、印刷制御装置２０で実行されるプログラムとされてもよいし、印刷制御装置２０とされてもよい。また印刷制御装置２０を含む複合機８等のプリンタであってもよい。
【符号の説明】
【００８４】
２…ネットワーク
５…ＰＣ
８…複合機
１０…本体部
１１…制御部
１２…記憶部
１３…読取部
１４…プリンタエンジン部
１５…操作パネル
１６…ネットワーク通信部
１７…メモリ制御部
２０…印刷制御装置（プリンタコントローラ）
２１…制御部
２２…記憶部
２３…画像記憶部
２４…命令認識部
２５…命令実行部
２６…ジョブ辞書
２７…拡張辞書
２８…標準辞書
４０…拡張辞書設定画面
５０…保持命令承諾画面
６０…設定画面
【図１】
2019071524.tif 000003
【図２】
2019071524.tif 000004
【図３】
2019071524.tif 000005
【図４】
2019071524.tif 000006
【図５】
2019071524.tif 000007
【図６】
2019071524.tif 000008
【図７】
2019071524.tif 000009
【図８】
2019071524.tif 000010
【図９】
2019071524.tif 000011
【図１０】
2019071524.tif 000012
【図１１】
2019071524.tif 000013
【図１２】
2019071524.tif 000014
【図１３】
2019071524.tif 000015
【図１４】
2019071524.tif 000016
【図１５】
2019071524.tif 000017