(57)【要約】【課題】印刷処理のパフォーマンスを維持しつつドライバとプリンタとの間のデータを保護する。【解決手段】印刷データの一部について暗号化が指定されている場合、クライアント１０２はプリンタ１０４のサポートする機能を判定して、部分暗号化に対応していれば、指定部分を暗号化し、ＰＤＬコマンドまたはＸＭＬタグによりその部分を特定してプリンタに送信する。プリンタ１０４はそれを復号して印刷出力する。一方部分暗号化をサポートしないプリンタ１５１に対しては、印刷を中止するか、あるいは暗号化を指定された部分について、他の文字列に置換してからプリンタ１５１に印刷データを送信する。【選択図】図１
2006107459.tif 000002
【特許請求の範囲】
【請求項１】
印刷制御装置において、
文書データを取得する取得手段と、
前記取得手段に取得された文書データの中から、暗号化対象となるデータを特定する特定手段と、
前記特定手段により特定されたデータを暗号化する暗号化手段と、
前記暗号化手段が暗号化したデータを画像形成装置に対して送信する送信手段とを備え、
前記特定手段は、指定情報により指定されているデータを、暗号化対象として特定することを特徴とする印刷制御装置。
【請求項２】
文書データに含まれる情報と、印刷制御装置内に指定情報として予め登録されている情報とが一致する場合に、文書データに含まれる情報を前記指定情報として検出する検出手段をさらに有することを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
前記暗号化手段が暗号化に用いた鍵情報を暗号化し、該暗号化した鍵情報と前記暗号化手段が暗号化したデータとを含む印刷ジョブを生成するジョブ生成手段をさらに備え、
前記送信手段は、前記ジョブ生成手段により生成された印刷ジョブを送信することを特徴とする請求項１に記載の印刷制御装置。
【請求項４】
前記画像形成装置が部分的に暗号化されたデータに対応するか否かを判定する判定手段と、
前記判定手段により対応しないと判定された場合、部分的に暗号化された印刷データの印刷処理の続行をするか否かをユーザに確認する確認手段とをさらに備えることを特徴とする請求項１に記載の印刷制御装置。
【請求項５】
前記ジョブ生成手段は、前記確認手段により続行することが確認された場合、前記指定情報により指定された部分を除いた印刷ジョブを生成することを特徴とする請求項３に記載の印刷制御装置。
【請求項６】
前記ジョブ生成手段は、前記鍵情報を、前記画像形成装置に対応する公開鍵により暗号化することを特徴とする請求項３に記載の印刷制御装置。
【請求項７】
指定情報を印刷制御装置に入力する入力手段と、
文書データに含まれる情報と、前記入力手段により入力された指定情報とが一致するか否かを判別する判別手段とをさらに備え、
文書データに含まれる情報と、前記入力手段により入力された指定情報とが一致すると前記判別手段により判別した場合に、当該一致した指定情報により指定されたデータを暗号化対象である部分として前記特定手段により特定することを特徴とする請求項１に記載の印刷制御装置。
【請求項８】
プリンタドライバのユーザインタフェースを介して前記入力手段は指定情報を入力することを特徴とする請求項７に記載の印刷制御装置。
【請求項９】
アプリケーションのユーザインタフェースを介して前記入力手段は指定情報を入力することを特徴とする請求項７に記載の印刷制御装置。
【請求項１０】
指定情報により指定されたデータを含む文書データの印刷処理を続行するか否かユーザに確認する確認手段と、
前記確認手段により印刷処理を続行することが確認された場合、前記指定情報により指定されたデータを除いて印刷データを生成し、印刷処理を続行しないことが確認された場合、前記文書データに基づく印刷データの生成を中止する印刷データ生成手段と
を備えることを特徴とする印刷制御装置。
【請求項１１】
前記確認手段により印刷処理を続行することが確認された場合、前記指定情報により指定されたデータを所定の文字列に置換して印刷する印刷データを生成することを特徴とする請求項１０に記載の印刷制御装置。
【請求項１２】
前記文書データはＸＭＬデータであり、前記指定情報はＸＭＬデータで記述されたタグ情報であることを特徴とする請求項１０に記載の印刷制御装置。
【請求項１３】
アプリケーションにより生成された文書データを解釈できる印刷装置が出力先として選択された場合に当該文書データを暗号化する第１暗号化手段と、
アプリケーションにより生成された文書データを解釈できない印刷装置が出力先として選択された場合にアプリケーションからプリンタドライバに対して文書データを入力する入力手段と、
前記入力手段が入力した文書データに基づき、プリンタドライバを実行して印刷データを生成する生成手段と、
前記生成手段に生成された印刷データを暗号化する第２暗号化手段と、
前記第１暗号化手段により暗号化された文書データ、又は、前記第２暗号化手段により暗号化された印刷データを送信する送信手段を有することを特徴とする印刷制御装置。
【請求項１４】
前記文書データを解釈できる印刷装置が出力先として選択されたか、文書データを解釈できない印刷装置が出力先として選択されたかを、プリンタドライバが取得する情報を用いて判断する判断手段と、
前記判断手段の判断結果に応じて、文書データを暗号化して印刷装置に送信するか、アプリケーションがプリンタドライバに対して文書データを暗号化せずに入力するかを決定する決定手段をさらに備えることを特徴とする請求項１３に記載の印刷制御装置。
【請求項１５】
前記判断手段は、アプリケーションがプリンタドライバから取得した情報を用いて判断することを特徴とする請求項１４に記載の印刷制御装置。
【請求項１６】
前記プリンタドライバが取得する情報とは、出力先として選択された印刷装置に対応するポート名、又は、ドライバ名、又は、機種名、又は、印刷装置の暗号化の能力を示す情報のいずれかひとつであることを特徴とする請求項１４に記載の印刷制御装置。
【請求項１７】
プリンタドライバがアプリケーションから暗号化印刷の指定がされた印刷データを取得する取得手段と、
前記取得手段が取得した印刷データに設定されている出力先が、暗号化印刷に対応しているか否かをプリンタドライバを実行して判断する判断手段と、
印刷ジョブの出力先が暗号化印刷に対応していないと前記判断手段が判断した場合に、判断結果をプリンタドライバからアプリケーションに通知する通知手段と
を備えることを特徴とする印刷制御装置。
【請求項１８】
文書データを取得する取得工程と
前記取得工程に取得された文書データの中から、暗号化対象となるデータを特定する特定工程と、
前記特定工程により特定されたデータを暗号化する暗号化工程と、
前記暗号化工程が暗号化したデータを画像形成装置に対して送信する送信工程とを備え、
前記特定工程は、前記指定情報により指定されているデータを、暗号化対象として特定することを特徴とする印刷制御方法。
【請求項１９】
文書データに含まれる情報と、印刷制御装置内に指定情報として予め登録されている情報とが一致する場合に、文書データに含まれる情報を前記指定情報として検出する検出工程をさらに有することを特徴とする請求項１８に記載の印刷制御方法。
【請求項２０】
前記暗号化工程により暗号化に用いられた鍵情報を暗号化し、該暗号化した鍵情報と前記暗号化工程が暗号化したデータとを含む印刷ジョブを生成するジョブ生成工程をさらに備え、
前記送信工程は、前記ジョブ生成工程により生成された印刷ジョブを送信することを特徴とする請求項１８に記載の印刷制御方法。
【請求項２１】
前記画像形成装置が部分的に暗号化されたデータに対応するか否かを判定する判定工程と、
前記判定工程により対応しないと判定された場合、部分的に暗号化された印刷データの印刷処理の続行をするか否かをユーザに確認する確認工程とをさらに備えることを特徴とする請求項１８に記載の印刷制御方法。
【請求項２２】
前記ジョブ生成工程は、前記確認工程により続行することが確認された場合、前記指定情報により指定された部分を除いた印刷ジョブを生成することを特徴とする請求項２０に記載の印刷制御方法。
【請求項２３】
前記ジョブ生成工程は、前記鍵情報を、前記画像形成装置に対応する公開鍵により暗号化することを特徴とする請求項２０に記載の印刷制御方法。
【請求項２４】
指定情報を印刷制御装置に入力する入力工程と、
文書データに含まれる情報と、前記入力工程により入力された指定情報とが一致するか否かを判別する判別工程とをさらに備え、
文書データに含まれる情報と、前記入力工程により入力された指定情報とが一致すると前記判別工程により判別した場合に、当該一致した指定情報により指定されたデータを暗号化対象である部分として前記特定工程により特定することを特徴とする請求項１８に記載の印刷制御方法。
【請求項２５】
プリンタドライバのユーザインタフェースを介して前記入力工程は指定情報を入力することを特徴とする請求項２４に記載の印刷制御方法。
【請求項２６】
アプリケーションのユーザインタフェースを介して前記入力工程は指定情報を入力することを特徴とする請求項２４に記載の印刷制御方法。
【請求項２７】
指定情報により指定されたデータを含む文書データの印刷処理を続行するか否かユーザに確認する確認工程と、
前記確認工程により印刷処理を続行することが確認された場合、前記指定情報により指定されたデータを除いて印刷データを生成し、印刷処理を続行しないことが確認された場合、前記文書データに基づく印刷データの生成を中止する印刷データ生成工程と
を備えることを特徴とする印刷制御方法。
【請求項２８】
前記確認工程により印刷処理を続行することが確認された場合、前記指定情報により指定されたデータを所定の文字列に置換して印刷する印刷データを生成することを特徴とする請求項２７に記載の印刷制御方法。
【請求項２９】
前記文書データはＸＭＬデータであり、前記指定情報はＸＭＬデータで記述されたタグ情報であることを特徴とする請求項２７に記載の印刷制御方法。
【請求項３０】
アプリケーションにより生成された文書データを解釈できる印刷装置が出力先として選択された場合に当該文書データを暗号化する第１暗号化工程と、
アプリケーションにより生成された文書データを解釈できない印刷装置が出力先として選択された場合にアプリケーションからプリンタドライバに対して文書データを入力する入力工程と、
前記入力工程が入力した文書データに基づき、プリンタドライバを実行して印刷データを生成する生成工程と、
前記生成工程に生成された印刷データを暗号化する第２暗号化工程と、
前記第１暗号化工程により暗号化された文書データ、又は、前記第２暗号化工程により暗号化された印刷データを送信する送信工程を有することを特徴とする印刷制御方法。
【請求項３１】
前記文書データを解釈できる印刷装置が出力先として選択されたか、文書データを解釈できない印刷装置が出力先として選択されたかを、プリンタドライバが取得する情報を用いて判断する判断工程と、
前記判断工程の判断結果に応じて、文書データを暗号化して印刷装置に送信するか、アプリケーションがプリンタドライバに対して文書データを暗号化せずに入力するかを決定する決定工程をさらに備えることを特徴とする請求項３０に記載の印刷制御方法。
【請求項３２】
前記判断工程は、アプリケーションがプリンタドライバから取得した情報を用いて判断することを特徴とする請求項３１に記載の印刷制御方法。
【請求項３３】
前記プリンタドライバが取得する情報とは、出力先として選択された印刷装置に対応するポート名、又は、ドライバ名、又は、機種名、又は、印刷装置の暗号化の能力を示す情報のいずれかひとつであることを特徴とする請求項３１に記載の印刷制御方法。
【請求項３４】
プリンタドライバがアプリケーションから暗号化印刷の指定がされた印刷データを取得する取得工程と、
前記取得工程が取得した印刷データに設定されている出力先が、暗号化印刷に対応しているか否かをプリンタドライバを実行して判断する判断工程と、
印刷ジョブの出力先が暗号化印刷に対応していないと前記判断工程が判断した場合に、判断結果をプリンタドライバからアプリケーションに通知する通知工程と
を備えることを特徴とする印刷制御方法。
【請求項３５】
コンピュータにより読み取り可能な媒体に記録されたプログラムであって、
文書データを取得する取得工程のコードと、
前記取得工程に取得された文書データの中から、暗号化対象となるデータを特定する特定工程のコードと、
前記特定工程により特定されたデータを暗号化する暗号化工程のコードと、
前記暗号化工程が暗号化したデータを画像形成装置に対して送信する送信工程のコードとを備え、
前記特定工程により、前記指定情報により指定されているデータが、暗号化対象として特定されることを特徴とするプログラム。
【請求項３６】
コンピュータにより読み取り可能な媒体に記録されたプログラムであって、
指定情報により指定されたデータを含む文書データの印刷処理を続行するか否かユーザに確認する確認工程のコードと、
前記確認工程により印刷処理を続行することが確認された場合、前記指定情報により指定されたデータを除いて印刷データを生成し、印刷処理を続行しないことが確認された場合、前記文書データに基づく印刷データの生成を中止する印刷データ生成工程のコードとを備えることを特徴とするプログラム。
【請求項３７】
コンピュータにより読み取り可能な媒体に記録されたプログラムであって、
アプリケーションにより生成された文書データを解釈できる印刷装置が出力先として選択された場合に当該文書データを暗号化する第１暗号化工程のコードと、
アプリケーションにより生成された文書データを解釈できない印刷装置が出力先として選択された場合にアプリケーションからプリンタドライバに対して文書データを入力する入力工程のコードと、
前記入力工程が入力した文書データに基づき、プリンタドライバを実行して印刷データを生成する生成工程のコードと、
前記生成工程に生成された印刷データを暗号化する第２暗号化工程のコードと、
前記第１暗号化工程により暗号化された文書データ、又は、前記第２暗号化工程により暗号化された印刷データを送信する送信工程のコードを有することを特徴とするプログラム。
【請求項３８】
コンピュータにより読み取り可能な媒体に記録されたプリンタドライバプログラムであって、
アプリケーションから暗号化印刷の指定がされた印刷データを取得する取得工程のコードと、
前記取得工程が取得した印刷データに設定されている出力先が、暗号化印刷に対応しているか否かを判断する判断工程のコードと、
印刷ジョブの出力先が暗号化印刷に対応していないと前記判断工程が判断した場合に、判断結果をアプリケーションに通知する通知工程のコードとを備えることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえばコンピュータにおいて実行されるプリンタドライバ等とプリンタとの間におけるデータの機密保護を目的とした暗号化印刷処理方法及び装置に関する。
【背景技術】
【０００２】
従来、プリンタはコンピュータと１対１に接続されることが多かったのに対して、最近では、プリンタを、ネットワークにより複数のコンピュータ等により共有されるいわゆるネットワークプリンタとして利用することが多い。このネットワークプリンタを利用する場合、印刷対象のデータ（印刷データ）は共有されるネットワークを流れる。そのために、印刷データそのものが盗聴されるおそれや、プリンタが利用者から離れている場合には、プリンタにより印刷物が出力されてから利用者がその印刷物を回収するまでの間に印刷物が無権限者に読まれたり、あるいは印刷物が持ちさられるおそれがあった。そこで、印刷されるデータを、それにアクセスする権限が与えられていない無権限者から保護するために、機密保護の技術、いわゆるセキュアプリントの技術が考案されている。
【０００３】
コンピュータのプリンタドライバとプリンタとの間における印刷データの機密保護のためには、データの暗号化が行われる。プリンタドライバは、プリンタに送信する全ての印刷データ、ＰＤＬプリンタの場合にはＰＤＬデータ全体に対して暗号化処理を施した後、プリンタに送信する。プリンタは暗号化されたＰＤＬデータを受信して復号処理を施し、復号後のＰＤＬデータに基づいて印刷処理を行う必要があった（例えば特許文献１等参照）。
【０００４】
また、画像データの所定の上位ビットを暗号化したり、印刷データに含まれる所定の印刷制御コマンドのみを暗号化して、画像形成装置に送信する技術は存在した（特許文献２）。
【特許文献１】特開2001-186358号公報
【特許文献２】特開2000-276309号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このために、従来の暗号化印刷技術では、ドライバがＰＤＬデータ全体に対して暗号化処理を施していたため、データ量が大きくなればなるほど、暗号化に伴う処理、特にプリンタでの復号処理に時間がかかり、パフォーマンスが著しく悪化する。このようにパフォーマンスを維持しながらドライバとプリンタとの間におけるデータを覗き見や改竄等から保護することは困難であった。
【０００６】
また、文書データの所望の部分を指定して暗号化することはできなかったため、文書データの所望の部分を、確実には保護できないという問題があった。一方、文書データ又は印刷データの全体を暗号化すると、データを暗号化する処理の負荷が大きいという問題があった。
【０００７】
またアプリケーションが生成した文書データを解釈できる印刷装置や、文書データを解釈できないが、プリンタドライバが生成した印刷データは解釈できる印刷装置が混在するシステムが考案されつつある。文書データを解釈できないがプリンタドライバが生成した印刷データは解釈できる印刷装置に文書データをそのまま送信しても、文書データの情報を出力させることができない。そこで、プリンタドライバを用いて文書データから印刷データを生成することになる。このとき、プリンタドライバの知らない暗号化鍵を用いて暗号化したデータを、アプリケーション等からプリンタドライバに入力すると、プリンタドライバが当該文書データを復号できないという問題がある。また、暗号化処理を施さなければ印刷データといえども可読であるため、通信路上でのデータのセキュリティが保証できないという問題がある。
【０００８】
本発明は、上述の問題点の少なくともひとつを解決するためになされたものである。文書データの保護したい部分を通信路上において改竄や盗み見から確実に保護するとともに、暗号化の処理負荷を低減することが本発明のひとつの目的である。
【０００９】
さらに、アプリケーションが生成した文書データを解釈できる印刷装置と解釈できない印刷装置が混在する環境下において、プリンタドライバ又はアプリケーションが暗号化処理を施したデータを出力できる仕組みを提供することがさらに別の目的である。
【課題を解決するための手段】
【００１０】
上記目的を達成するために本発明は以下の構成を備える。すなわち、印刷制御装置において、文書データを取得する取得手段と、前記取得手段に取得された文書データの中から、暗号化対象となるデータを特定する特定手段と、前記特定手段により特定されたデータを暗号化する暗号化手段と、前記暗号化手段が暗号化したデータを画像形成装置に対して送信する送信手段とを備え、前記特定手段は、前記指定情報により指定されているデータを、暗号化対象として特定する。
【発明の効果】
【００１１】
本発明により、文書データの保護したい部分を通信路上において改竄や盗み見から確実に保護するとともに、暗号化の処理負荷を低減することができる。
【００１２】
さらに、本発明により、アプリケーションが生成した文書データを解釈できる印刷装置と解釈できない印刷装置が混在する環境下において、プリンタドライバ又はアプリケーションが暗号化処理を施したデータを出力できる仕組みを提供することができる。
【００１３】
さらに、本発明の別の側面によれば、部分暗号化指定データであることを認識する手段を持つことによって、印刷データの部分暗号化を実現できる。プリンタは、印刷データ全体に対して復号処理を施す必要がなくなるため、パフォーマンスを維持しながら、同時にドライバとプリンタとの間でデータを保護することができる。
【００１４】
また、本発明の別の側面によれば、利用するプリンタが部分暗号化に未対応のプリンタであっても、暗号化部分のデータを当該プリンタにより処理可能なデータに変換することで、データの機密性を損なわず、プリンタの停止や不測の動作を防止することができる。  また、本発明のさらに別の側面によれば、プリンタによるＸＭＬの部分暗号化指定に対する対応の有無に応じて、プリンタがサポートするデータ形式でプリンタにデータを送信することで、ＸＭＬ形式でデータをプリンタに送信することができる。
【００１５】
さらに請求項１に係る発明によれば、文書データ中の特定部分を暗号化して、プリンタ等の画像形成装置に送信することで、文書データの特定部文について盗聴等から保護することができる。
【００１６】
さらに請求項２に係る発明によれば、あらかじめ指定情報を登録しておくことで、指定情報に一致する情報は自動的に暗号化できる。このため、指定情報を画像形成の都度指定する労力を節約できる。
【００１７】
さらに請求項３に係る発明によれば、鍵情報も暗号化して画像形成装置に送信することで、画像形成装置が復号鍵を保存する必要がなく、暗号鍵の交換を適宜行うことができる。このため保護がより強固なものとなる。
【００１８】
さらに請求項４に係る発明によれば、文書データの送信先の画像形成装置が部分暗号化に対応していない場合、部分暗号化された印刷データの印刷処理の続行をするか否かをユーザに指定させることができる。
【００１９】
さらに請求項５に係る発明によれば、部分暗号化に対応していない画像形成装置により部分暗号化された印刷データの印刷処理の続行する場合、暗号化対象部分を除いた印刷ジョブを生成することで、データを保護することができる。
【００２０】
さらに請求項６に係る発明によれば、画像形成装置に送信する鍵情報を画像形成装置に対応した公開鍵により暗号化することで、鍵情報のための暗号化鍵の管理が簡略化される。
【００２１】
さらに請求項７に係る発明によれば、文書データ中の特定部分を暗号化して、プリンタ等の画像形成装置に送信することで、文書データの特定部文について盗聴等から保護することができる。
【００２２】
さらに請求項１０に係る発明によれば、文書データの送信先の画像形成装置が部分暗号化に対応していない場合、部分暗号化された印刷データの印刷処理の続行をするか否かをユーザに指定させることができる。
【００２３】
さらに請求項１１に係る発明によれば、部分暗号化に対応していない画像形成装置で部分暗号化された印刷データの印刷処理の続行をする場合、暗号化対象部分を所定の文字列に置換して印刷することで、データを保護することができる。
【００２４】
さらに請求項１３に係る発明によれば、選択された印刷装置がアプリケーションにより生成された文書データを解釈できる場合には文書データを第１暗号化手段により暗号化し、アプリケーションにより生成された文書データを解釈できない場合には文書データに基いて印刷データを生成し、その印刷データを暗号化第２暗号化手段により暗号化し、暗号化された文書データ又は印刷データを送信することで、送信されたデータを保護するとともに、送信先で確実に復号できる。
【００２５】
さらに請求項１４に係る発明によれば、選択された印刷装置が文書データを解釈できるか否かを自動的に判断できる。
【００２６】
さらに請求項１６に係る発明によれば、選択された印刷装置が文書データを解釈できるか否かを、印刷装置に対応するポート名、又は、ドライバ名、又は、機種名、又は、印刷装置の暗号化の能力を示す情報のいずれかひとつを用いて判断することができる。
【００２７】
さらに請求項１７に係る発明によれば、印刷ジョブの出力先が暗号化印刷に対応していないことをプリンタドライバにより判定し、それをアプリケーションに通知することで、暗号化の対象を自動的に決定できる。
【発明を実施するための最良の形態】
【００２８】
＜システム構成＞
図１は、本発明の一実施形態に係るシステム構成図である。図１において、ユーザ１０１により使用されるクライアントコンピュータ（以下、クライアントと呼ぶ。）１０２およびプリンタ１０４、１５１がネットワーク１０３で接続されている。クライアント１０２は、印刷データを生成するアプリケーションプログラム（以下、アプリケーションと呼ぶ。）１０５とプリンタ１０４、１５１を制御するためのプリンタドライバプログラム（以下、単にドライバと呼ぶ。）１０６を備えている。本実施形態では、アプリケーション１０５及びプリンタ１０４は部分暗号化をサポートするＸＡＭＬ（ＥｘｔｅｎｓｉｂｌｅＡｐｐｌｉｃａｔｉｏｎ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）に対応しているものとし、プリンタ１５１は未対応のいわゆるレガシプリンタである。すなわち、アプリケーション１０５はＸＡＭＬ形式のデータを生成し、出力し、読み込み、処理することができる。ＸＡＭＬとは、マイクロソフト社により仕様が決定された、ＸＭＬで記述された言語の一種である。なお、ＸＭＬで記述された言語により定義されたデータはＸＭＬドキュメントと呼ぶことが多いが、本実施形態ではＸＭＬデータと呼ぶ。したがって、ＸＡＭＬで記述したデータもＸＭＬデータである。
【００２９】
ＸＭＬデータはテキストデータであり、その内容を作成者以外の他人が理解することが容易なデータ形式である。ＸＭＬでは、特定の重要な情報（例えばクレジットカード番号や個人情報など）を保護することを目的として、データを部分的に暗号化する規格が標準で定められている。このためにＸＭＬベースのＸＡＭＬもまた部分暗号化したデータを記述することができる。ＸＭＬはコンピュータ間のデータの互換性を確保するための標準形式として採用されることもあり得る。そのような場合には、コンピュータから出力されるデータはＸＭＬデータとなり、したがってＸＭＬ対応のコンピュータはＸＭＬの部分暗号化に対応し、部分暗号化されたデータを生成することができる。しかしながら、コンピュータがＸＭＬに対応しても、コンピュータが使用するプリンタがＸＭＬに対応していないケースもあり得る。またプリンタがネットワーク環境で使用されることを考慮すれば、ＸＭＬに対応したプリンタと対応していないプリンタが一つのネットワークに混在することもあり得る。
【００３０】
そこで本実施形態では、クライアントコンピュータ１０２はＸＭＬ対応のコンピュータでありとし、プリンタがＸＭＬ対応であれば（これをＸＭＬプリンタと呼ぶ。）、ＸＭＬデータをそのプリンタに対する印刷データとして出力し、プリンタがＸＭＬ対応でなければプリンタが処理し得るＰＤＬ等で記述された印刷データをそのプリンタに出力する。なお、クライアントコンピュータ１０２がＸＭＬ対応のコンピュータでない場合には、プリンタに対してＸＭＬデータを出力することはないものとする。また本実施形態のＸＭＬプリンタはＸＭＬデータ以外のデータを受信しないものとして説明するが、受信したデータを記述形式を判別する能力を有し、従来のＰＤＬも解釈実行する能力を有するものであってもよい。なお本実施形態では記述が冗長となることを避けるために「部分暗号化」の「部分」をしばしば省略して「暗号化」や「暗号化ＸＸ」などと記載している。しかし本実施形態において「暗号化」とはデータの一部を暗号化する「部分暗号化」を意味している。
【００３１】
さて、アプリケーション１０５は、たとえばアプリケーション１０５により作成されたデータ等に基づいて印刷するためのデータを生成する印刷データ生成部１１０を備えている。ドライバ１０６は、アプリケーション１０５の印刷データ生成部１１０により生成された印刷データを取得する印刷データ取得部１１１、プリンタ１０４に関する情報を保存し、維持管理するプリンタ情報管理部１１２、印刷データ取得部１１１により取得した印刷データに基づいて印刷ジョブを生成する印刷ジョブ生成部１１３、生成した印刷ジョブをプリンタ１０４に送信する印刷ジョブ送信部１１６を備えている。また、印刷ジョブ生成部１１３は、印刷データに含まれる部分暗号化の指定や、指定された暗号化対象の部分を認識する暗号化指定認識部１１４と、部分暗号化の指定に応じて、指定された部分の暗号化等の、図４等を参照して後述する暗号化処理を実行する暗号化処理部１１５とを備えている。
【００３２】
ユーザ１０１は、クライアント１０２上のアプリケーション１０５を使用して、部分的な暗号化を伴う印刷ジョブ生成要求を発生する。たとえば、ユーザ１０１は、クライアント１０２の表示部に表示されたデータのうち、指定した暗号化対象とする部分、あるいは所定の暗号化対象部分について、その暗号化を指定するとともに、そのデータの印刷を指定する。暗号化の指定は、たとえばメニュー等から暗号化指示のための項目を選択することなどにより行われる。この、部分暗号化を行う旨の指定および暗号化対象部分の指定を伴う印刷指示が、部分暗号化を伴う印刷ジョブ生成要求となる。
【００３３】
アプリケーション１０５の印刷データ生成部１１０は、部分的な暗号化を伴う印刷ジョブ生成要求を受けて、指定された部分を暗号化した印刷データを生成する。アプリケーション１０５は、ユーザの部分的な暗号化を伴う印刷ジョブ生成要求を、ドライバ１０６上のプリンタ情報管理部１１２に伝える。部分的な暗号化を伴う印刷ジョブ生成要求を受けたプリンタ情報管理部１１３は、送信先のプリンタがＸＡＭＬ対応プリンタかレガシープリンタ（ＰＤＬプリンタ）かを、保存しているプリンタ情報１１２ａに基づいて判断し、アプリケーション１０５に判断結果を返す。プリンタ情報１１２ａはドライバプログラムに埋め込まれたコードであっても良いが、プリンタから取り込んだ情報であってもよい。
【００３４】
プリンタ情報管理部１１２からＸＡＭＬ対応プリンタであるという判断結果を受け取ったアプリケーション１０５は、部分的な暗号化を指定された印刷データの指定箇所を、暗号化指定タグで囲み、中身をＸＭＬ暗号化フォーマットに従って別途指定されたセッション鍵で暗号化し、ＸＡＭＬ形式の印刷データを生成してセッション鍵とともにドライバの印刷データ取得部１１１に渡す。セッション鍵とともに渡すことは、たとえば、セッション鍵を、それを示すタグで囲んでデータに付加することで実現できる。レガシープリンタ（ＰＤＬプリンタ）であるという判断結果を受け取ったアプリケーション１０５は、部分的な暗号化を指定された印刷データの指定箇所を暗号化指定タグで囲み、その中身は暗号化せずに、ドライバの印刷データ取得部１１１に渡す。このように、アプリケーション１０５はＸＭＬデータをドライバ１０６に渡す。
【００３５】
印刷データ取得部１１１は、受け取った印刷データを印刷ジョブ生成部１１３上の暗号化指定認識部１１４に渡す。暗号化指定認識部１１４は、受け取った印刷データ中の暗号化指定タグを認識し、暗号化処理部１１５に部分暗号化印刷用の処理を依頼する。部分暗号化印刷用の処理は、送信先のプリンタがＸＡＭＬプリンタであるか、レガシープリンタであるかによって異なる。ＸＡＭＬプリンタである場合は、セッション鍵を格納しているタグの中身がプリンタの公開鍵で暗号化され書き換えられる。なおＸＡＭＬプリンタはＸＡＭＬで記述されたデータを解釈して処理し、記述に従って印刷出力することができる。レガシープリンタである場合は、暗号化指定タグの中身を、ＰＤＬデータに変換した後で、セッション鍵を生成して暗号化し、暗号化されていることを示すＰＤＬコマンドで包んで印刷ジョブを生成する。セッション鍵はプリンタの公開鍵で暗号化して印刷ジョブに追加する。生成された印刷ジョブは、印刷ジョブ送信部１１６によって、プリンタ１０４に送信される。
【００３６】
以上述べたように、文書データを取得し、当該文書データの中から、暗号化対象となるデータをアプリケーション又はプリンタドライバは特定する。アプリケーション又はプリンタドライバにより特定されたデータをＯＳ又はプリンタドライバ又はアプリケーションが暗号化する。そして、その暗号化したデータをプリンタに対してLANカードを介して送信してもよい。
【００３７】
アプリケーション又はプリンタドライバは，指定情報の一例である暗号化指定タグにより指定されているデータを、暗号化対象として特定してもよい。
【００３８】
また、文書データに含まれる情報であるタグ情報と、印刷制御装置内に指定情報として予め登録されている暗号化指定タグとが一致する場合に、当該文書データに含まれるタグ情報を、暗号化指定タグとしてアプリケーション又はプリンタドライバが検出してもよい。
【００３９】
印刷ジョブはプリンタの印刷ジョブ取得部１２１によって取得され、印刷ジョブ解析部１２０に渡される。印刷ジョブ解析部１２０は暗号化指定認識部１２２に印刷ジョブを渡して、暗号化を指定された箇所を認識させる。暗号化指定認識部１２２は、受け取った印刷ジョブを解析して暗号化指定タグを見つけたら、暗号化処理部に部分暗号化印刷用の処理を依頼する。暗号化処理部による部分暗号化印刷用の処理は、プリンタがＸＡＭＬ対応であるか、レガシープリンタであるかによって異なる。ＸＡＭＬ対応プリンタならば、暗号化指定タグを認識して、タグ中にある暗号化されたセッション鍵が格納されているタグの中身を、公開鍵・秘密鍵管理部１２４上に管理されているプリンタの秘密鍵で復号して暗号化されたデータを復号し、復号されたＸＭＬデータを印刷ジョブ解析部１２０に返す。印刷ジョブ解析部１２０は、すべての印刷ジョブの解析が終了したら、印刷ジョブを印刷出力部１２５に渡し、印刷出力する。
【００４０】
一方、レガシープリンタならば、暗号化されていることを示すＰＤＬコマンドを認識して、印刷ジョブ中の暗号化されたセッション鍵を、公開鍵・秘密鍵管理部１２４上に管理されているプリンタの秘密鍵で復号し、部分的に暗号化されたデータを復号し、復号されたＰＤＬデータを印刷ジョブ解析部１２０に返す。印刷ジョブ解析部１２０は、すべての印刷ジョブの解析が終了したら、印刷ジョブを印刷出力部１２５に渡し、印刷出力する。
【００４１】
＜ハードウエア構成＞
図２は、本発明のクライアント１０２あるいはプリンタ１０４、１５１を構成するコンピュータの内部構成を示した図である。図２において、２００は、本発明のクライアントあるいは、プリンタであり、図１におけるクライアントコンピュータ１０２あるいは、プリンタ１０４、１５１と同等である。クライアントあるいはプリンタ２００は、ＲＯＭ２０２もしくはハードディスク（ＨＤ）２０４に記憶されたソフトウェアを実行するＣＰＵ２０１を備え、システムバス２０６に接続される各デバイスを総括的に制御する。２０３はＲＡＭで、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。２０５はＬＡＮで、ネットワーク２０７を通じて、他のネットワーク機器あるいは他のＰＣと双方向にデータをやりとりする。ＣＰＵ２０１はプログラムを実行することで、後述する図４以降のフローチャートに示す手順を実現する。なお、プリンタ１０４、１５１は、図２のように構成されるコントローラに加えてプリンタエンジンとエンジンを制御するエンジンコントローラを有する。ただし、本実施形態のプリンタの動作は図２のコントローラ部分により実行されるので、それらの構成は省略した。
【００４２】
＜データの例＞
以下、フローチャートを用いて、上述の実施形態のシステム動作を説明する。図１２は、データの一例を示す。印刷データ１２１１は、プリンタがレガシプリンタであると判断された場合にアプリケーション１０５により生成されるもので、ＸＭＬデータであり、暗号化指定部分１２００が＜EncryptedData＞タグで指定されているが、その内容は平文である。ＰＤＬデータ１２１２は部分暗号化をサポートするＰＤＬを処理可能なレガシプリンタに対して生成される印刷ジョブに伴う印刷データである。ＰＤＬデータ１２１２は、そのヘッダ部分に部分的な暗号化を指定する指定情報の一例である暗号化指定情報１２０１と、暗号化対象部分を特定するための対象部分情報１２０２と、プリンタの公開鍵で暗号化されたセッション鍵１２０４とを含む。そしてデータ本体部においては、対象部分情報１２０２で特定される暗号化対象部分１２０５が、セッション鍵で暗号化されている。また、ＰＤＬデータ１２１３は部分暗号化をサポートするＰＤＬを処理できないレガシプリンタに対して生成される印刷ジョブに伴う印刷データである。プリンタにおいて認識および処理できない暗号化指定情報１２０１や対象部分情報１２０２はヘッダ情報に含まれない。また、暗号化対象部分１２０６は本来の情報とは別に指定される情報に置換されている（図１２では「暗号化されています」という文字列）。
【００４３】
一方、印刷データ１２２１は、プリンタがＸＡＭＬプリンタであると判断された場合にアプリケーション１０５により生成されるもので、ＸＭＬデータであり、暗号化指定部分１２３２は＜EncryptedData＞タグで指定されており、その内容は＜EncryptedData＞タグ内に記述された＜Keyinfo＞タグで指定されたセッション鍵１２３１により暗号化されている。ＸＭＬデータ１２２２は、プリンタドライバよりプリンタに対して出力される印刷ジョブに伴う印刷データである。ＸＭＬデータ１２２２は、その＜Keyinfo＞タグで指定されたセッション鍵がプリンタの公開鍵で暗号化されたデータ１２３３である点でＸＭＬデータ１２２１と相違する。
【００４４】
＜アプリケーションによる印刷処理手順＞
さて、図１のシステムにおけるアプリケーション１０５の印刷データ生成部１１０による処理を図３に示す。印刷データ生成部１１０は、プログラムが開始すると、まず出力先のプリンタがＸＡＭＬ対応プリンタであるかドライバ１０６に問い合わせを行う（ステップＳ３０２）。プリンタ１０６のプリンタ情報管理部１１２はプリンタ情報１１２ａに基づいて印刷データ作成部１１０に応答する。印刷データ作成部１１０は、プリンタがＸＡＭＬ対応プリンタであった場合、図１２のＸＭＬデータ１２２１を生成し処理を終了する（ステップＳ３０４）。もしＸＡＭＬ対応プリンタで無かった場合は、ＰＤＬプリンタ用の印刷データ生成処理が施され、図１２のＸＡＭＬデータ１２１１を生成して処理を終了する（ステップＳ３０３）。両データの相違は、ＰＤＬプリンタについて、暗号化対象の部分を暗号化せずに、暗号化を示す＜EncryptedData＞タグで示すのに止まるに対して、ＸＡＭＬプリンタについては暗号化対象の部分を暗号化しておくことにある。もちろんこの場合には暗号化に用いたセッション鍵もデータに付加されている。
【００４５】
図１３（ａ）にアプリケーションプログラム１０５が暗号化する部分を設定するためのユーザインターフェースを、図１３（ｂ）に設定されたタグテーブルの一例を示す。アプリケーション１０５（または、アプリケーション１４１１）の印刷設定メニュー中の暗号化印刷用自動認識タグ登録ボタンを押下すると、ウインドウ１３０１が表示される。そこでオペレータは暗号化の対象とする部分をタグの単位で指定することができる。たとえば、クレジットカード番号を示す＜CreditCard＞タグや、電話番号を示す＜TelephoneNumber＞タグ、暗号化することを指定する＜EncryptedData＞タグなどを指定できる。もちろん指定はオペレータに任されている。登録方法は、テキスト入力による新規登録方法、及び、CSVファイルなどからのインポートによる登録方法、などがある。また、登録の利便性を高めるため、設定ファイルをCSVなどの形式でエキスポートすることも可能である。また、登録されたタグは、ハードディスクやメモリに確保されるテーブル１３０２に登録され、アプリケーション１４１１中のＵＩ制御部１４１２が保持する。ＸＡＭＬ対応アプリケーションで生成されるデータはＸＡＭＬ形式であり、図１３（ａ）に示したようなタグが含まれる場合がある。具体的には、アプリケーション１０５（または、アプリケーション１４１１）は印刷実行のタイミングで、ＵＩ制御部１４１２が保持しているテーブル１３０２を参照し、もしテーブル１３０２に記載されているタグが印刷対象データの中に含まれていた場合、印刷データ生成部１４１３は、タグの中身を＜EncryptedData＞〜＜/Encrypteddata＞タグで囲い暗号化して、ドライバ１０６に渡すことにより、部分暗号化を自動で実行することが可能になる。もちろんこの暗号化の指定方法は一例であって、指定の仕方として他の方法も採用し得る。尚、本タグ登録（入力）処理は、ドライバ１４０１からでも実行可能なことを図１４を用いて示す。タグ登録処理をドライバ１４０１から実行する場合は、ウィンドウ１３０１、及び登録タグのデータは、ドライバＵＩ制御部１４０２が保持する。次に、ドライバからタグ登録処理を行う場合の処理について述べる。ドライバでタグ登録処理を行う場合は、ドライバ１４０１中のＰＤＬ生成部１４０３が、ＰＤＬデータ生成時にＵＩ制御部１４０２の保持する登録タグテーブル１３０２を参照し、もしテーブル１３０２に記載されているタグがアプリケーションから受け取った印刷データに含まれている場合には、タグの中身を＜EncryptedData＞〜＜/Encrypteddata＞タグで囲いタグの中身を暗号化する。
【００４６】
ステップＳ３０３においては、アプリケーションデータからテーブル１３０２に登録されたタグを検索し、発見したタグを＜EncryptedData＞によって囲んで、暗号化指定がされた部分であることが示される。また、ステップＳ３０４においては、テーブル１３０２に登録されたタグを検索して、発見したタグに含まれる部分をタグごと暗号化して、＜EncryptedData＞によって囲んで暗号化された部分であることが示される。
【００４７】
＜プリンタドライバによる印刷処理手順（ＸＡＭＬ非対応）＞
図４は、図１のシステムにおけるドライバ１０６の動作を示すフローチャートである。プログラムが開始すると（ステップＳ４０１）、まずステップＳ４０２において、印刷ジョブ生成部１１３は、プリンタ情報管理部１１２に問い合わせて、出力先のプリンタがＸＡＭＬ対応プリンタであるか判断する。もし、ＸＡＭＬ対応プリンタならば、ステップＳ４０５に進む。ステップＳ４０５において、印刷ジョブ生成部１１３は、ＸＡＭＬ対応プリンタ用の印刷ジョブ生成処理を行い、図１２のＸＭＬデータ１２２２を生成して処理を終了する。ステップＳ４０２において、もしＸＡＭＬ対応プリンタで無い場合は、ステップＳ４０４に進む。ステップＳ４０４において、印刷ジョブ生成部１１３は、ＰＤＬ対応プリンタ用の印刷ジョブ生成処理を行い、図１２のＰＤＬデータ１２２２またはＰＤＬデータ１２２１を生成して処理を終了する。
【００４８】
図５は、図４のステップＳ４０４の詳細を示すフローチャートである。本動作は、クライアント１０２上のＣＰＵ２０１によって実行される。プログラムが開始すると（ステップＳ５０１）、まずステップＳ５０２において、印刷データ取得部１１１は、アプリケーション１０５から印刷データを取得し、ステップＳ５０３に進む。ステップＳ５０３において、暗号化指定認識部１１４は、ＪＴ（ジョブチケット）に部分的な暗号化を伴う印刷指定があるかどうか判断する。すなわち、暗号化指定認識部１１４は、取得された文書データの中から、暗号化対象となるデータを特定する特定手段として機能する。もし、ジョブチケットに部分的な暗号化を伴う印刷指定がある場合は、ステップＳ５０４に進む。もし、ジョブチケットに部分的な暗号化を伴う印刷指定がない場合は、ステップＳ５０９に進む。なお図１２の例ではアプリケーションはジョブチケットを作成せず、部分的な暗号化の指定を＜EncryptedData＞タグにより示している。そこで、ジョブチケットのテストに代えてこのタグの存在を調べ、存在すれば部分的な暗号化を伴う印刷指定があると判定することができる。なお、ジョブチケットとは印刷の詳細を指定するための情報であって、ＸＡＭＬ対応のアプリケーションであっても、印刷ジョブのヘッダに相当する情報として付加する場合がある。そのような場合には、ジョブチケットにも部分的な暗号化を伴う印刷指定を示す情報が埋め込まれるので（たとえば図１２のＰＤＬデータ１２１２のように）、それをテストすることでも判定できる。
【００４９】
部分的な暗号化を伴う印刷指定があると判定された場合、ステップＳ５０４において、プリンタ情報管理部１１２は、プリンタが部分暗号化印刷に対応しているか判断する。もし、部分暗号印刷に対応しているならば、ステップＳ５０５に進む。もし、部分暗号化印刷に対応していない場合は、ステップＳ５１０に進む。なおこの判定も、プリンタ情報１１２ａに基づいて判定することができる。判定はプリンタの型番等に基づいて行うこともできるし、サポートする機能そのものを示す情報に基づいて行うこともできる。これら情報はプリンタドライバに埋め込まれていても良いし、プリンタ１０４、１５１から読み出すこともできる。
【００５０】
さて、ステップＳ５０５において、暗号化処理部１１５は、プリンタ情報管理部１１２からプリンタの公開鍵を取得してステップＳ５０６に進む。ステップＳ５０６において、セッション鍵を生成する。次にステップＳ５０７に進み、セッション鍵を、取得したプリンタの公開鍵で暗号化して、暗号化セッション鍵を印刷ジョブに伴うデータとして追加し、ステップＳ５０８に進む。すなわち暗号化処理部１１５は、特定されたデータを暗号化する暗号化手段として機能する。さらにステップＳ５０８において、印刷ジョブ生成部１１３は、ＰＤＬデータを生成し、第二暗号化手段の一例である暗号化処理部１１５によって、暗号化前の、前述のセッション鍵を用いて暗号化する。そして、不要になった暗号化されていないセッション鍵は削除する。なお、セッション鍵を暗号化する前に、ＰＤＬを生成し、ＰＤＬを暗号化してからセッション鍵を暗号化して印刷データに付加して送信すると好適である。
【００５１】
その次にステップＳ５０９に進む。ステップＳ５０９において、印刷ジョブ送信部１１６は、印刷ジョブを送信し、処理を終了する。プリンタの公開鍵はネットワークを介してプリンタから取得しても良いし、鍵を管理するサーバから取得しても良いし、オペレータによりオフラインで入力されても良い。
【００５２】
一方プリンタが部分的暗号化印刷に対応していない場合には、ステップＳ５１０において、暗号化処理部１１５は、たとえば図１１に示すような、ユーザに印刷処理を続行するか否かを確認するための警告ダイアログを表示する。ここで、プリンタドライバのプリンタ情報管理部を判断手段の一例であるＣＰＵが実行して、印刷ジョブの出力先が暗号化印刷に対応していないとＣＰＵ２０１が判断した場合に、判断結果をプリンタ情報管理部からアプリケーション１０５に通知手段の一例であるＣＰＵ２０１が通知するようにしてもよい。図１１に示すダイアログは、アプリケーション１０５によって表示されても良い。
【００５３】
もし、ステップＳ５１１における判定においてＯＫボタンが押されるなどして続行が確認された場合にはステップＳ５０８に進んでＰＤＬデータを生成する。キャンセルボタンが押されるなどして中止が確認された場合には、ステップＳ５１２に進み、ジョブをキャンセルして処理を終了する。すなわち、暗号化処理部１１５は、暗号化手段としての機能のみならず、指定情報により指定されたデータを含む文書データの印刷処理を続行するか否かユーザに確認する確認手段としても機能する。
【００５４】
図６は、図５のフローチャートにおけるステップＳ５０８の動作を示すフローチャートである。なおアプリケーション１０５が生成する印刷データは、本実施形態ではたとえばオブジェクト単位で定義されており、図６のＰＤＬデータ処理の単位はそのオブジェクト単位である。しかし処理単位はオブジェクトに限らず、たとえばライン単位やバンド単位などの単位であってもよい。
【００５５】
プログラムが開始すると（ステップＳ６０１）、まず、ステップＳ６０２において、ドライバ１０６上の暗号化指定認識部１１４は、処理対象となっている印刷データが暗号化指定箇所（暗号化指定された部分）であるか判断する。もし、暗号化指定箇所である場合は、ステップＳ６０３に進む。ステップＳ６０３において、暗号化指定認識部１１４は、プリンタ情報管理部１１２に対して出力先のプリンタが部分暗号化印刷に対応したプリンタであるか問い合わせる。もし、部分暗号化印刷に対応したプリンタならばステップＳ６０４に進み、処理対象のデータをＰＤＬコマンドに変換する。そして、ステップＳ６０５に進み、ステップＳ０４で生成したＰＤＬコマンドをステップＳ５０６で生成したセッション鍵で暗号化する。ステップＳ６０６では、暗号化したデータを、暗号化されていることを示すＰＤＬコマンドで包み、ステップＳ６０２に進む（図１２のＰＤＬデータ１２１２参照）。
【００５６】
もし、ステップＳ６０２において処理対象となっている部分が暗号化指定箇所でないと判定された場合は、ステップＳ６０７に進み処理対象部分をＰＤＬコマンドに変換しステップＳ６０２に進む。
【００５７】
また、ステップＳ６０３において、使用するプリンタが部分暗号化印刷に対応したプリンタでないと判定された場合は、ステップＳ６０８に進み、処理対象となっているデータを所定の定型文（例えば、「暗号化されています」等）を示すＰＤＬコマンドに変換してステップＳ６０２に進む（図１２のＰＤＬデータ１２１３参照）。図６のＰＤＬデータ生成ルーチンは、すべての印刷データをＰＤＬに変換するまで繰り返し行われる。
【００５８】
このように、アプリケーション又はプリンタドライバは、指定情報の一例である暗号化指定タグにより指定されたデータを含む文書データの印刷処理を続行するか否かユーザに確認する。そして、印刷処理を続行することが確認された場合、前記暗号化指定タグにより指定されたデータを除いて、所定の文字列に置換して、印刷データを生成する。また、処理対象となっているデータを単に削除しても良い。
そして、印刷処理を続行しないことが確認された場合、前記文書データに基づく印刷データの生成をプリンタドライバは中止する。
【００５９】
以上のようにして、部分暗号化印刷に対応したプリンタのドライバは、部分暗号化に対応したプリンタに対しては指定箇所を暗号化したＰＤＬデータを送信するものの、部分暗号化印刷に対応していないプリンタに対しては、処理を中止するか、暗号化対象部分を他のデータ、たとえば文字列等に置換してからプリンタに送信する。このため、レガシプリンタを使用する場合にも、暗号化することを指定されたデータを保護することができる。
【００６０】
＜プリンタの動作（ＸＡＭＬ非対応）＞
図７は、図１のシステムにおけるプリンタ１０４の動作を示すフローチャートである。ここで、プリンタ１０４は、部分暗号化印刷に対応したＰＤＬプリンタとする。本動作は、プリンタ１０４上のＣＰＵ２０１によって実行される。プログラムが開始（ステップＳ７０１）すると、ステップＳ７０２において、印刷ジョブ取得部１２１によって印刷ジョブが取得されステップＳ７０３に進む。ステップＳ７０３において、印刷ジョブ解析部１２０は、ＪＴ（ジョブチケット：たとえばＰＤＬデータのヘッドとして付加されている情報）に、部分的な暗号化データが含まれていることを示す暗号化指定情報１２０１があるかどうか判断する。もし、暗号化指定情報１２０１がある場合は、ステップＳ７０４に進む。ステップＳ７０４において、部分暗号化処理部１２３は、公開鍵・秘密鍵管理部１２４にアクセスし、プリンタの秘密鍵を読み出して、それを使ってジョブに追加され暗号化されているセッション鍵を復号し、それを所定のメモリロケーションに保存してステップＳ７０５に進む。ステップＳ７０５において、印刷ジョブ解析部１２０は、すべての印刷ジョブを解析してステップＳ７０６に進む。ステップＳ７０６において、印刷出力部１２５は印刷出力を行い、処理を終了する。一方ステップＳ７０３において、ＪＴに部分暗号化指定が含まれていない場合、ステップＳ７０５に進む。
【００６１】
図８は、図７のシステムにおけるステップＳ７０５の動作を示すフローチャートである。図８の処理はＰＤＬコマンド単位に処理が行われる。本動作は、プリンタ１０４上のＣＰＵ２０１によって実行される。プログラムが開始（ステップＳ８０１）されると、まずステップＳ８０２において印刷ジョブ解析部１２０は、処理対象のＰＤＬコマンドが暗号化されていることを示すＰＤＬコマンドかどうか判断する。もし、暗号化されていることを示すＰＤＬコマンドならば、ステップＳ８０３に進む。ステップＳ８０３において、部分暗号化処理部１２３は、ステップＳ７０４で保存しておいたセッション鍵で中身（ＰＤＬコマンドのオペランド部分）を復号し、ステップＳ８０４に進む。ステップＳ８０４において、印刷ジョブ解析部１２０は、復号して得たＰＤＬコマンドに従って描画処理を施し、ステップＳ８０２に進む。
【００６２】
一方、ステップＳ８０２において、処理対象のＰＤＬコマンドが暗号化されていることを示すＰＤＬコマンドで無かった場合、ステップＳ８０４に進む。
【００６３】
以上のようにして、部分暗号化印刷に対応したＰＤＬプリンタは、暗号化された部分を復号して、本来印刷されるべき画像を形成しそれを印刷出力することができる。なお、部分暗号化印刷に対応していないプリンタ１５１は、ステップＳ７０２→ステップＳ８０４→ステップＳ７０６の順に画像形成処理を実行する。このため、ドライバにおいて暗号化対象部部分が他の文字列等に置換されていている場合には、その文字列を、本来印刷されるべき暗号化対象のデータに代えて印刷出力する。
【００６４】
＜プリンタドライバによる印刷処理手順（ＸＡＭＬ対応）＞
図９は、図４のシステムにおけるステップＳ４０５の動作を示すフローチャートである。本動作は、クライアント１０２上のＣＰＵ２０１によって実行される。プログラムが開始（ステップＳ９０１）すると、まず、ステップＳ９０２においてドライバ１０６上の印刷データ取得部１１１は、アプリケーション１０５からＸＡＭＬ印刷データ（図１２のデータ１２２１参照）を取得してステップＳ９０３に進む。ステップＳ９０３において、印刷ジョブ生成部１１３上の暗号化指定認識部１１４は、ＸＡＭＬ印刷データを解析し＜EncryptedData＞タグであるかどうか判断する。もし＜EncryptedData＞タグがあればステップＳ９０４に進む。ステップＳ９０４において、暗号化処理部１１５は、プリンタ情報管理部１１２からプリンタの公開鍵を取得してステップＳ９０５に進む。ステップＳ９０５において、第一暗号化手段の一例である暗号化処理部１１５は、＜KeyInfo＞タグ中のセッション鍵情報をステップＳ９０４で取得したプリンタの公開鍵で暗号化し、＜KeyInfo＞タグ中のセッション鍵情報を暗号化したセッション鍵情報で置き換えて、ステップＳ９０６に進む（図１２のデータ１２２２参照）。
【００６５】
尚、本動作は、図１４のアプリケーション１４１１における印刷データ生成部１４１３が行ってもよい。その場合は、印刷データ生成部１４１３がステップＳ９０１からＳ９０５までの処理をおこなったあとの印刷データをプリンタドライバ１０６に渡す。
【００６６】
アプリケーション１４１１により生成された文書データを解釈できる印刷装置の一例であるプリンタ１０４が出力先として選択された場合には、当該文書データをプリンタドライバ又はオペレーティングシステム又はアプリケーションの暗号化処理部を用いて暗号化する。
【００６７】
アプリケーション１４１１により生成された文書データを解釈できない印刷装置の一例である他のプリンタが出力先として選択された場合には、プリンタドライバのＰＤＬ処理部１４０３に対して文書データを、アプリケーション１４１１は暗号化せずに入力する。
【００６８】
ＣＰＵ２０１は、アプリケーション１４１１が入力した文書データに基づき、プリンタドライバのＰＤＬ処理部１４０３を実行して印刷データを生成する。この生成された印刷データをプリンタドライバ、又は、オペレーティングシステム、又はアプリケーションの暗号化処理部が暗号化する。この暗号化処理部により暗号化された文書データ、又は、暗号化処理部により暗号化された印刷データを、ＯＳが制御するＬＡＮカード２０５を介して送信する。
【００６９】
また、前記文書データを解釈できるプリンタが出力先として選択されたか、文書データを解釈できないプリンタが出力先として選択されたかを、プリンタドライバが取得する情報を、プリンタドライバからアプリケーションが取得して判断しても良い。例えば、プリンタドライバから取得する情報としては、プリンタの機種名、ホストにインストールされている印刷先として選択したドライバ名、プリンタに対応するポート名が挙げられる。
【００７０】
そして、アプリケーション又はプリンタドライバの判断結果に応じて、文書データを暗号化して印刷装置に送信するか、アプリケーションがプリンタドライバに対して文書データを暗号化せずに入力するかをアプリケーション又はプリンタドライバが決定してもよい。
【００７１】
さらに、図１３（ａ）に表示されるユーザインタフェースを介して、指定情報の一例である暗号化指定タグを入力することが出来る。すなわち、指定情報の一例である暗号化指定タグをクライアント１０２のユーザインタフェースを介して入力する。
【００７２】
そして、文書データに含まれる情報の一例であるタグ文字列と、ユーザインタフェースを介して入力された指定情報の一例である暗号化指定タグとが一致するか否かを判別するアプリケーション１４１１又はプリンタドライバ１４０１が判別する。
【００７３】
次に、文書データに含まれるタグ文字列と、ユーザインタフェースにより入力された暗号化指定タグとが一致すると判別された場合に、当該一致したタグ文字列により指定されたデータを暗号化対象である部分としてアプリケーション１４１１又はプリンタドライバ１４０１が特定する。なお、入力画面のユーザインタフェース（図１３（ａ））は、図１４のドライバ１４０１のＵＩ制御部１４０２がＣＲＴ２０８に表示する処理を制御してもよい。また、入力画面のユーザインタフェース（図１３（ａ））は、図１４のアプリケーション１４１１のＵＩ制御部１４１２がＣＲＴ２０８に表示する処理を制御してもよい。
【００７４】
一方ステップＳ９０３において＜EncryptedData＞タグはないと判定されたならば、ステップＳ９０６に進む。ステップＳ９０６において、印刷ジョブ送信部１１６は、プリンタへ印刷ジョブを送信し、処理を終了する。
【００７５】
以上のように、本実施形態のドライバはＸＡＭＬプリンタに対してはアプリケーションで生成されたＸＡＭＬデータを、必要に応じてセッション鍵の暗号化を行うほか、そのままプリンタに送信する。
【００７６】
＜プリンタの動作（ＸＡＭＬ対応）＞
図１０は、図１のシステムにおけるプリンタ１０４の動作を示すフローチャートである。ここで、プリンタ１０４は、ＸＡＭＬプリンタである。本動作は、プリンタ１０４上のＣＰＵ２０１によって実行される。プログラムが開始（ステップＳ１００１）すると、ステップＳ１００２において、印刷ジョブ取得部１２１によって印刷ジョブが取得されステップＳ１００３に進む。ステップＳ１００３において、印刷ジョブ解析部１２０の暗号化指定認識部１２２は、＜EncryptedData＞タグがあるかどうか判断する。もし、＜EncryptedData＞タグであるならば、ステップＳ１００４に進む。ステップＳ１００４において、暗号化処理部１２３は、公開鍵・秘密鍵管理部１２４にアクセスしてプリンタの秘密鍵を取得し、取得した秘密鍵を使って＜KeyInfo＞タグの中身、すなわちセッション鍵を復号する。ステップＳ１００５においては、暗号化処理部１２３は、＜CipherData＞タグの中身を復号したセッション鍵で復号し、ステップＳ１００６に進む。ステップＳ１００６において、印刷出力部１２５は、ＸＡＭＬによる記述に従って印刷出力を行い、処理を終了する。
【００７７】
一方ステップＳ１００３において、＜EncryptedData＞タグがなかいと判定された場合、ステップＳ１００６に進んでＸＡＭＬデータを解釈して印刷出力を実行する。
【００７８】
＜アプリケーションＵＩから暗号化部指定し印刷データを生成する方法＞
暗号化部の指定をタグの登録により利便化する方法を既に述べたが、アプリケーションＵＩからの指定によってオンデマンドに行う方法について図１５及び図１６を用いて述べる。
このプログラムは、アプリケーション１０５により実行される。アプリケーション１０５の「ＵＩから暗号化部を指定」ボタンを押下する（ステップＳ１５０２）と、印刷プレビュー画面が表示される（ステップＳ１５０３）。ステップＳ１５０５において、ＵＩ上で任意の暗号化部分がマウスドラッグにより選択された場合（図１６）、ステップＳ１５０６において、選択された部分を＜EncryptedData＞〜＜/EncryptedData＞で囲み暗号化した後、印刷データを生成し、処理を終了する。尚、本動作は、ドライバ１４０１により実行されてもよい。この場合は、印刷プレビュー画面の表示は、ＵＩ制御部１４０２にいより行い、暗号化及び印刷データの生成は、ＰＤＬ生成部１４０３によって行う。
【００７９】
以上のように本実施形態によれば、部分暗号化指定データであることを認識する手段を持つことによって、印刷データの部分暗号化を実現できる。プリンタは、印刷データ全体に対して復号処理を施す必要がなくなるため、パフォーマンスを維持しながら、同時にドライバとプリンタとの間でデータを保護することができる。また、利用するプリンタが部分暗号化に未対応のプリンタであっても、暗号化部分のデータを当該プリンタにより処理可能なデータに変換することで、データの機密性を損なわず、プリンタの停止や暗号化されたデータを平文のＰＤＬコマンドとして解釈されることによる不測の動作を防止することができる。また、プリンタによるＸＭＬの部分暗号化指定に対する対応の有無に応じて、プリンタがサポートするデータ形式でプリンタにデータを送信することで、ＸＭＬ形式でデータをプリンタに送信することができる。
【００８０】
本発明によれば、部分暗号化指定データであることを認識する手段を持つことによって、印刷データの部分暗号化を実現できる。プリンタは、印刷データ全体に対して復号処理を施す必要がなくなるため、パフォーマンスを維持しながら、同時にドライバとプリンタとの間でデータを保護することができる。
【００８１】
また、本実施形態の別の側面によれば、利用するプリンタが部分暗号化に未対応のプリンタであっても、暗号化部分のデータを当該プリンタにより処理可能なデータに変換することで、データの機密性を損なわず、プリンタの停止や不測の動作を防止することができる。 
また、本実施形態のさらに別の側面によれば、プリンタによるＸＭＬの部分暗号化指定に対する対応の有無に応じて、プリンタがサポートするデータ形式でプリンタにデータを送信することで、ＸＭＬ形式でデータをプリンタに送信することができる。
【００８２】
［その他の実施形態］
なお本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。また本発明の目的は、前述の実施形態の機能を実現するプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータが記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８３】
また、本発明には、プログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(ＯＳ)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた場合についても、本発明は適用される。その場合、書き込まれたプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される。 
【図面の簡単な説明】
【００８４】
【図１】本発明の一実施形態に係るシステム構成図。
【図２】本発明のクライアント１０２あるいはプリンタ１０４を構成するコンピュータの内部構成を示した図。
【図３】本実施形態のアプリケーションの動作を示すフローチャート。
【図４】アプリから印刷要求を受けた直後のドライバの処理を示す図。
【図５】図４のステップＳ４０４の動作を示すフローチャート。
【図６】図５のステップＳ５０８の動作を示すフローチャート。
【図７】図１のシステムにおけるＰＤＬプリンタの動作を示すフローチャート。
【図８】図７のステップＳ７０５の動作を示すフローチャート。
【図９】図４のステップＳ４０５の動作を示すフローチャート。
【図１０】図１のシステムにおけるＸＡＭＬプリンタの動作を示すフローチャート。
【図１１】図５のステップＳ５１０の警告ダイアログの一例を示す図。
【図１２】本実施形態のプリンタシステムで扱われるデータの一例を示す図。
【図１３】本実施形態のアプリケーションによりプリンタシステムで扱われるデータの一例を示す図。
【図１４】本実施形態のアプリケーション及びドライバのモジュール構成図の一例。
【図１５】アプリケーションＵＩから暗号化部の選択指定を行う動作のフローチャート。
【図１６】図１５のステップＳ１５０４におけるＵＩの一例を示す図。
【図１】
2006107459.tif 000003
【図２】
2006107459.tif 000004
【図３】
2006107459.tif 000005
【図４】
2006107459.tif 000006
【図５】
2006107459.tif 000007
【図６】
2006107459.tif 000008
【図７】
2006107459.tif 000009
【図８】
2006107459.tif 000010
【図９】
2006107459.tif 000011
【図１０】
2006107459.tif 000012
【図１１】
2006107459.tif 000013
【図１２】
2006107459.tif 000014
【図１３】
2006107459.tif 000015
【図１４】
2006107459.tif 000016
【図１５】
2006107459.tif 000017
【図１６】
2006107459.tif 000018