(57)【要約】【課題】  ファーストプリントを素早く行うことができるようにするとともに、印刷データの改ざんを有効に防止できるようにする。【解決手段】  印刷ジョブデータを小さなデータ断片であるチャンクに分割するデータ分割手段と、前記データ分割手段によって分割されたチャンクごとにデータのハッシュ値を計算するハッシュ計算手段と、前記計算したハッシュ値を、前記ハッシュ値を計算したチャンクとは異なる所定のチャンクに付加して１単位の送信データを生成するハッシュ値付加手段と、前記ハッシュ値付加手段により生成された１単位の送信データをネットワークプリンタに送信するデータ送信手段とを設ける。【選択図】  図４
2006011857.tif 000002
【特許請求の範囲】
【請求項１】
印刷ジョブデータを小さなデータ断片であるチャンクに分割するデータ分割手段と、
前記データ分割手段によって分割されたチャンクごとにデータのハッシュ値を計算するハッシュ計算手段と、
前記ハッシュ計算手段により計算したハッシュ値を、前記ハッシュ値を計算したチャンクとは異なる所定のチャンクに付加して１単位の送信データを生成するハッシュ値付加手段と、
前記ハッシュ値付加手段により生成された１単位の送信データをネットワークプリンタに送信するデータ送信手段とを有することを特徴とする印刷クライアント。
【請求項２】
前記ハッシュ計算手段により計算したハッシュ値をメモリに一時的に格納しておくハッシュ値格納手段を有し、
前記ハッシュ値付加手段は、前記ハッシュ値格納手段によりメモリに格納しておいたハッシュ値を、前記ハッシュ値を計算したチャンクとは異なる所定のチャンクに付加して前記１単位の送信データを生成することを特徴とする請求項１に記載の印刷クライアント。
【請求項３】
前記ハッシュ値付加手段は、前記ハッシュ値格納手段によりメモリに格納しておいたハッシュ値を、前記ハッシュ値を計算したチャンクの次のチャンクに付加して前記１単位の送信データを生成することを特徴とする請求項２に記載の印刷クライアント。
【請求項４】
前記データ送信手段から最初に送信する送信データに電子署名を付加する電子署名付加手段を有することを特徴とする請求項１〜３の何れか１項に記載の印刷クライアント。
【請求項５】
ネットワークを介して送られてきた印刷データを印刷するためのネットワークプリンタであって、
前記ネットワークを介して受信したデータブロックからハッシュ値を計算するハッシュ計算手段と、
前記ハッシュ計算手段が前記ハッシュ値を計算するもとになった受信データブロックとは異なる所定の受信データブロックからヘッダを取り出すヘッダ取り出し手段と、
前記ヘッダ取り出し手段によって取り出したヘッダと、前記ハッシュ計算手段が計算したハッシュ値との一致を判断するデータ真正性判断手段とを有することを特徴とするネットワークプリンタ。
【請求項６】
前記ヘッダ取り出し手段は、前記ハッシュ値を計算するもとになった受信データブロックの次の受信データブロックからヘッダを取り出すことを特徴とする請求項５に記載のネットワークプリンタ。
【請求項７】
請求項１〜４の何れか１項に記載の印刷クライアントと、請求項５または６に記載のネットワークプリンタとを有することを特徴とする印刷システム。
【請求項８】
印刷ジョブデータを小さなデータ断片であるチャンクに分割するデータ分割工程と、
前記データ分割工程において分割されたチャンクごとにデータのハッシュ値を計算するハッシュ計算工程と、
前記ハッシュ計算工程において計算したハッシュ値を、前記ハッシュ値を計算したチャンクとは異なる所定のチャンクに付加して１単位の送信データを生成するハッシュ値付加工程と、
前記ハッシュ値付加工程において生成された１単位の送信データをネットワークプリンタに送信するデータ送信工程とを有することを特徴とする印刷クライアント制御方法。
【請求項９】
前記ハッシュ計算工程において計算したハッシュ値をメモリに一時的に格納しておくハッシュ値格納工程を有し、
前記ハッシュ値付加工程は、前記ハッシュ値格納工程においてメモリに格納しておいたハッシュ値を、前記ハッシュ値を計算したチャンクとは異なる所定のチャンクに付加して前記１単位の送信データを生成することを特徴とする請求項８に記載の印刷クライアント制御方法。
【請求項１０】
前記ハッシュ値付加工程は、前記ハッシュ値格納工程においてメモリに格納しておいたハッシュ値を、前記ハッシュ値を計算したチャンクの次のチャンクに付加して前記１単位の送信データを生成することを特徴とする請求項９に記載の印刷クライアント制御方法。
【請求項１１】
前記データ送信工程において最初に送信する送信データに電子署名を付加する電子署名付加工程を有することを特徴とする請求項８〜１０の何れか１項に記載の印刷クライアント制御方法。
【請求項１２】
ネットワークを介して送られてきた印刷データを印刷するためのネットワークプリンタ制御方法であって、
前記ネットワークを介して受信したデータブロックからハッシュ値を計算するハッシュ計算工程と、
前記ハッシュ計算工程で前記ハッシュ値を計算するもとになった受信データブロックとは異なる所定の受信データブロックからヘッダを取り出すヘッダ取り出し工程と、
前記ヘッダ取り出し工程において取り出したヘッダと、前記ハッシュ計算工程で計算したハッシュ値との一致を判断するデータ真正性判断工程とを有することを特徴とするネットワークプリンタ制御方法。
【請求項１３】
前記ヘッダ取り出し工程は、前記ハッシュ値を計算するもとになった受信データブロックの次の受信データブロックからヘッダを取り出すことを特徴とする請求項１２に記載のネットワークプリンタ制御方法。
【請求項１４】
印刷ジョブデータを小さなデータ断片であるチャンクに分割するデータ分割工程と、
前記データ分割工程において分割されたチャンクごとにデータのハッシュ値を計算するハッシュ計算工程と、
前記ハッシュ計算工程において計算したハッシュ値を、前記ハッシュ値を計算したチャンクとは異なる所定のチャンクに付加して１単位の送信データを生成するハッシュ値付加工程と、
前記ハッシュ値付加工程において生成された１単位の送信データをネットワークプリンタに送信するデータ送信工程とを有する印刷クライアント制御方法をコンピュータに実行させることを特徴とするコンピュータプログラム。
【請求項１５】
ネットワークを介して送られてきた印刷データを印刷するためのネットワークプリンタ制御方法をコンピュータに実行させるプログラムであって、
前記ネットワークを介して受信したデータブロックからハッシュ値を計算するハッシュ計算工程と、
前記ハッシュ計算工程で前記ハッシュ値を計算するもとになった受信データブロックとは異なる所定の受信データブロックからヘッダを取り出すヘッダ取り出し工程と、
前記ヘッダ取り出し工程において取り出したヘッダと、前記ハッシュ計算工程で計算したハッシュ値との一致を判断するデータ真正性判断工程とを有するネットワークプリンタ制御方法をコンピュータに実行させることを特徴とするコンピュータプログラム。
【請求項１６】
前記請求項１４または１５に記載のコンピュータプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は印刷クライアント、ネットワークプリンタ及び印刷システムに関し、特に、パーソナルコンピュータ（ＰＣ）などの印刷クライアントから、例えばプリンタ装置などの印刷デバイスにネットワークを介して印刷ジョブを送信する際に、その印刷ジョブデータが途中で改ざんされることを防止するために用いて好適な技術に関する。
【背景技術】
【０００２】
従来、クライアントからネットワークを介して印刷データをプリンタに送って印刷する系においては、経路上で印刷データが改ざんされるという潜在的な脅威が存在している。
図１は、その脅威の存在を示すネットワークプリントシステムの概念を説明する図である。図１に示したように、印刷クライアント１０１からネットワークプリンタ１０２に対して、ネットワーク（ＬＡＮ）１０４を介して印刷データが送られるのであるが、途中で攻撃者１０３（例えば、プリンタドライバ）が、例えばネットワークプリンタ１０２のネットワークアドレスを詐称するなどの方法により印刷データを横取りし、それを改ざんした上でネットワークプリンタ１０２に送ることにより、印刷結果を改ざんすることが可能である。
【０００３】
従来、このような脅威に対抗するために、印刷ジョブに限らず、データの改ざん防止については、データ作成側においてハッシュ関数によってデータ全体のハッシュ値を計算した後、そのハッシュ値に電子署名を付加し、データ検証側で電子署名を検証することによってデータが改ざんされているかどうかをチェックすることが一般的である。ネットワーク１０４上を流れる印刷ジョブの改ざん防止についても、同様の手法でチェックをする方法が開示されている（例えば、特許文献１参照）。
【０００４】
【特許文献１】特開２００３−０８４９６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
図２は、ハッシュを計算する方法を簡単に説明した図である。
まず、印刷データ２０１が生成されるのを待ち、そのハッシュ値２０２を計算し、それを前記印刷データ２０１に付加した送信データ（ｄ１）２０３を作成する。ハッシュ値２０２は、例えば、印刷データを１方向性関数、例えばSHA-1やMD5といった既知のハッシュ関数を通すことによって得ることができる。
【０００６】
そして、前記送信データ（ｄ１）２０３を受信したネットワークプリンタにおいて、受信したデータのうち印刷データ部分からハッシュ値を計算して、受信したデータ（ｄ１）２０３に含まれていたハッシュ値２０２との一致を確認することにより、印刷データが途中で改ざんされているかどうかを判断できるようになっている。
【０００７】
ところが、このような方法で印刷データの正否を検証しようとすると、全部の印刷データが揃うまでハッシュ値の計算を行うことができず、データの送出が行えないので、印刷の開始（いわゆるファーストプリント）が遅れてしまう問題点があった。この問題は、特に印刷データが何百ページ分にも及ぶデータ量が多い場合に顕著に現れる。
【０００８】
本発明はこのような状況のもとでなされたものであり、ファーストプリントを素早く行うことができるようにするとともに、印刷データの改ざんを有効に防止できるようにすることを目的としている。
【課題を解決するための手段】
【０００９】
本発明の印刷クライアントは、印刷ジョブデータを小さなデータ断片であるチャンクに分割するデータ分割手段と、前記データ分割手段によって分割されたチャンクごとにデータのハッシュ値を計算するハッシュ計算手段と、前記ハッシュ計算手段により計算したハッシュ値を、前記ハッシュ値を計算したチャンクとは異なる所定のチャンクに付加して１単位の送信データを生成するハッシュ値付加手段と、前記ハッシュ値付加手段により生成された１単位の送信データをネットワークプリンタに送信するデータ送信手段とを有することを特徴としている。
【００１０】
本発明のネットワークプリンタは、ネットワークを介して送られてきた印刷データを印刷するためのネットワークプリンタであって、前記ネットワークを介して受信したデータブロックからハッシュ値を計算するハッシュ計算手段と、前記ハッシュ計算手段が前記ハッシュ値を計算するもとになった受信データブロックとは異なる所定の受信データブロックからヘッダを取り出すヘッダ取り出し手段と、前記ヘッダ取り出し手段によって取り出したヘッダと、前記ハッシュ計算手段が計算したハッシュ値との一致を判断するデータ真正性判断手段とを有することを特徴としている。
【００１１】
本発明の印刷システムは、前記の何れかに記載の印刷クライアントと、前記の何れかに記載のネットワークプリンタとを有することを特徴としている。
【００１２】
本発明の印刷クライアント制御方法は、印刷ジョブデータを小さなデータ断片であるチャンクに分割するデータ分割工程と、前記データ分割工程において分割されたチャンクごとにデータのハッシュ値を計算するハッシュ計算工程と、前記ハッシュ計算工程において計算したハッシュ値を、前記ハッシュ値を計算したチャンクとは異なる所定のチャンクに付加して１単位の送信データを生成するハッシュ値付加工程と、前記ハッシュ値付加工程において生成された１単位の送信データをネットワークプリンタに送信するデータ送信工程とを有することを特徴としている。
【００１３】
本発明のネットワークプリンタ制御方法は、ネットワークを介して送られてきた印刷データを印刷するためのネットワークプリンタ制御方法であって、前記ネットワークを介して受信したデータブロックからハッシュ値を計算するハッシュ計算工程と、前記ハッシュ計算工程で前記ハッシュ値を計算するもとになった受信データブロックとは異なる所定の受信データブロックからヘッダを取り出すヘッダ取り出し工程と、前記ヘッダ取り出し工程において取り出したヘッダと、前記ハッシュ計算工程で計算したハッシュ値との一致を判断するデータ真正性判断工程とを有することを特徴としている。
【００１４】
本発明のコンピュータプログラムは、印刷ジョブデータを小さなデータ断片であるチャンクに分割するデータ分割工程と、前記データ分割工程において分割されたチャンクごとにデータのハッシュ値を計算するハッシュ計算工程と、前記ハッシュ計算工程において計算したハッシュ値を、前記ハッシュ値を計算したチャンクとは異なる所定のチャンクに付加して１単位の送信データを生成するハッシュ値付加工程と、前記ハッシュ値付加工程において生成された１単位の送信データをネットワークプリンタに送信するデータ送信工程とを有する印刷クライアント制御方法をコンピュータに実行させることを特徴としている。
また、本発明のコンピュータプログラムの他の特徴とするところは、ネットワークを介して送られてきた印刷データを印刷するためのネットワークプリンタ制御方法をコンピュータに実行させるプログラムであって、前記ネットワークを介して受信したデータブロックからハッシュ値を計算するハッシュ計算工程と、前記ハッシュ計算工程で前記ハッシュ値を計算するもとになった受信データブロックとは異なる所定の受信データブロックからヘッダを取り出すヘッダ取り出し工程と、前記ヘッダ取り出し工程において取り出したヘッダと、前記ハッシュ計算工程で計算したハッシュ値との一致を判断するデータ真正性判断工程とを有するネットワークプリンタ制御方法をコンピュータに実行させることを特徴としている。
【００１５】
本発明の記録媒体は、前記に記載のコンピュータプログラムを記録したことを特徴としている。
【発明の効果】
【００１６】
本発明によれば、印刷データが大量であったとしても、データの送出を遅らせることなく、ファーストプリントを素早く行うことが可能となるとともに、印刷データの改ざんを有効に防止することができる。
【発明を実施するための最良の形態】
【００１７】
（第１の実施の形態）
図１は、本発明が実行されるネットワークプリントシステムの概念を説明する図であり、図２はハッシュの計算を行う方法を簡単に説明した図である。
図３は、一般的なコンピュータの内部構成を示したものであり、本実施の形態の印刷クライアント１０１、あるいはネットワークプリンタ１０２のコントローラも同様に構成されているものである。
【００１８】
図３において、３００はコンピュータ全体である。コンピュータ３００は、ＲＯＭ３０２あるいは例えばディスクコンロトーラ３０７により制御されるハードディスク３１１などの大規模記憶装置に記憶されたソフトウェアを実行するＣＰＵ３０１を備え、システムバス３０４に接続される各デバイスを総括的に制御する。
【００１９】
３０３はＲＡＭで、ＣＰＵ３０１の主メモリ、ワークエリア等として機能する。３０５は外部入力コントローラ（ＫＢＤ Ｃ）で、コンピュータに備えられた各種ボタンあるいはキーボード３０９等からの指示入力を制御する。３０６はディスプレイコントローラ（ＤＩＳＰＣ）で、表示モジュール（ＤＩＳＰＬＡＹ）３１０の表示を制御する。３０８はネットワークインタフェースカード（ＮＩＣ）で、ＬＡＮ１０４を介して、他のネットワーク機器あるいはファイルサーバ等と双方向にデータをやりとりする。３１２はタイマである。
【００２０】
図４は、本実施の形態における、印刷データからハッシュ値を計算し、送信する方法を示す図である。さらに、図６は、その手順を示したフローチャートである。以下、図６の手順に沿って、図４も用いながら、印刷データからハッシュ値を計算して付加し、ネットワークプリンタに送信する手順について説明する。
【００２１】
図６の手順は、印刷クライアント１０１上のＣＰＵ３０１によって実行される。さらに前提として、印刷すべき文書や画像等のデータは、プリンタドライバモジュールによってプリンタが読解可能な形式、すなわちＰＤＬデータに変換され、それが図６の手順を実施するモジュールに順次受け渡されるものとする。
【００２２】
印刷データの送出にあたっては、まずステップＳ６０１で乱数ＲＮＤ４１０を発生させる計算を行う。次に、ステップＳ６０２において、前記ステップＳ６０１で発生させた乱数のハッシュ値４２０を計算する。次に、ステップＳ６０３において、前記ステップＳ６０２で計算したハッシュ値４２０に電子署名４４０を付加して、合わせてヘッダＮとし、ＲＡＭ３０３に一時的に格納しておく。
【００２３】
次に、ステップＳ６０４に進み、プリンタドライバで順次生成されるＰＤＬデータのうち、最初の適当な長さの部分を分割してＰＤＬデータの断片（ｄ１）４１１として受け取り、ＲＡＭ３０３上の一時バッファに格納する。続くステップＳ６０５において、先ほどステップＳ６０３においてＲＡＭ３０３に一時的に格納しておいたヘッダＮを取り出して、先のステップＳ６０５で一時バッファに格納しておいたＰＤＬデータの断片（ｄ１）にヘッダとして付加し、１単位の送信データ４３０を形成する。
【００２４】
続くステップＳ６０６において、ＮＩＣ３０８を制御して、ＬＡＮ１０４を介してネットワークプリンタ１０２に、送信データ４３０を送信する。続くステップＳ６０７において、一時バッファに格納してあるＰＤＬデータのハッシュ値を計算し、それを次のＰＤＬデータブロックに付加すべきヘッダＮとして、ＲＡＭ３０３上に一時的に格納しておくとともに、ＰＤＬデータとヘッダとを合わせて送信データ４３０として格納していた一時バッファを解放する。
【００２５】
続くステップＳ６０８において、プリンタドライバから受け取るべき印刷データがもう無いかどうかを判断する。もし、ステップＳ６０７において、もう印刷データが無いと判断されたら、ステップＳ６０９に進み、ステップＳ６０７において一時的に格納しておいたヘッダ情報を取り出し、ＮＩＣ３０８を制御して、ＬＡＮ１０４を介してネットワークプリンタ１０２に、最終ヘッダＮを送信する。
【００２６】
一方、ステップＳ６０８において、まだ印刷データがあると判断された場合には、ステップＳ６０４に戻り、次のＰＤＬデータの断片（ｄ２）４１２、ＰＤＬデータの断片（ｄ３）４１３を順次に受け取り、ＰＤＬデータのハッシュ値（ｈ１）４２１、ＰＤＬデータのハッシュ値（ｈ２）４２２、ＰＤＬデータのハッシュ値（ｈ３）４２３を生成する処理を続ける。
【００２７】
また、前記ＰＤＬデータのハッシュ値（ｈ１）とＰＤＬデータの断片（ｄ２）とを組み合わせて送信データ４３１を生成する。同様に、前記ＰＤＬデータのハッシュ値（ｈ２）とＰＤＬデータの断片（ｄ３）とを組み合わせて送信データ４３２を生成する。また、組み合わせるべきＰＤＬデータの断片が無い場合には、前記ＰＤＬデータのハッシュ値（ｈ３）とＰＤＬデータの無意味な断片（ＮＵＬＬ）とを組み合わせて送信データ４３３を生成する。なお、前述の処理において、ＰＤＬデータのハッシュ値を生成する処理タイミングと、ＰＤＬデータの断片を受け取るタイミングとを合わせるようにすることにより、前記ハッシュ値をバッファに一時的に格納する処理を省略することができる。
【００２８】
このような手順の処理を行うことにより、図４に示したように、前のＰＤＬデータブロックのハッシュ値を次のＰＤＬデータブロックに付加して送信データとし、順次送信していく。なお、最初の送信データにだけ署名（Ｓｉｇｎａｔｕｒｅ）を付加するのは、その送信データのすり替えを防ぐためである。最初の送信データのすり替えを防止できれば、あとはハッシュ値のチェインによって、PDLデータ全体のすり替えあるいは改ざんを確実に防止することができる。
【００２９】
ところで、ハッシュ値を次のデータブロックに付加するのは以下のような理由による。例えば、図５に示したように、計算したハッシュ値を元のＰＤＬデータ断片（ｄ１）５１１、（ｄ２）５１２、（ｄ３）５１３に付加した場合、データを改ざんしようとする攻撃者の立場から見ると、ハッシュ値が付加されたデータブロック（図５における５３１、５３２および５３３）を横取りすれば、改ざんしたデータに自分でハッシュ値（５２１，５２２，５２３）を付加することができてしまう。送信データがすりかえられたとしても、受信側ではそれに気がつくことができなくなってしまうためである。
【００３０】
このすり替えを防ぐために、全ての送信データ断片にクライアント側で電子署名をつけることも解のひとつではあるが、電子署名は時間のかかる操作であるので、今度はパフォーマンスに悪影響が発生する。それに対して、本実施の形態では、電子署名は一回だけで済むので、こちらの方が有利である。
【００３１】
図７は、本実施の形態における、ネットワークプリンタ１０２のデータ受信動作の手順を示すフローチャートである。
図７に示した手順は、ネットワークプリンタ１０２上のＣＰＵ３０１によって実行される。
【００３２】
ネットワークプリンタ１０２のデータ受信動作においては、まずステップＳ７０１で、ＮＩＣ３０８を操作して、ＬＡＮ１０４から最初のデータ断片を受け取る。続くステップＳ７０２で受信データのヘッダに含まれる電子署名を検証する。
【００３３】
ステップＳ７０２の検証の結果、もし署名が正しければ、ステップＳ７０３に進む。ステップＳ７０３では、受信データの中からＰＤＬデータを取り出し、不図示の印刷エンジンに送ってそのＰＤＬデータの印刷処理を行う。続くステップＳ７０４で、受信データはこれで終わりかどうかを判断する。この判断の結果、もし終わりでは無いと判断されたら、ステップＳ７０５に進む。
【００３４】
ステップＳ７０５〜ステップＳ７０８までは、受信したデータが改ざんされていないことを順次確認する手順である。
先ず、ステップＳ７０５では、ステップＳ７０３で印刷したＰＤＬデータのハッシュ値を計算し、一時記憶領域に格納しておく。続くステップＳ７０６でＮＩＣ３０８を操作して、ＬＡＮ１０４から次のデータ断片を受け取る。
【００３５】
続くステップＳ７０７で、先のステップＳ７０６で受信したデータの中からヘッダ部分を取り出す。そこには、クライアント側で計算した、ＰＤＬデータのハッシュ値が入っているはずである。続くステップＳ７０８において、先のステップＳ７０５で計算したハッシュ値と先のステップＳ７０７で取り出した値が同じであるかどうかによってデータが正しいかどうかを判断する。
【００３６】
この判断の結果、もし、ステップＳ７０８において、データが正しいと判断された場合にはステップＳ７０３に戻って印刷処理を続行する。また、ステップＳ７０８においてデータが正しくないと判断された場合には、ただちに印刷処理を中断すべく、処理を終了する。先のステップＳ７０２で署名が正しくないと判断された場合、ならびに先のステップＳ７０４でデータは終わりであると判断された場合も、受信データの印刷処理は終了である。
【００３７】
上記で説明した本実施の形態に係る印刷クライアント、あるいはネットワークプリンタのプログラムは、外部からインストールされるプログラムによって、印刷クライアント１０１あるいはネットワークプリンタ１０２の各デバイスによって遂行されても良い。その場合、そのプログラムはＣＤ−ＲＯＭやフラッシュメモリやフロッピー（登録商標）ディスクなどの記憶媒体により、あるいは電子メールやパソコン通信などのネットワークを介して、外部の記憶媒体からプログラムを含む情報群を印刷クライアント１０１あるいはネットワークプリンタ１０２の各デバイス上にロードすることにより、印刷クライアント１０１あるいはネットワークプリンタ１０２の各デバイスに供給される場合でも本発明は適用されるものである。
【００３８】
図９は、記憶媒体の一例であるＣＤ−ＲＯＭのメモリマップを示す図である。図９において、９９９９はディレクトリ情報を記憶してある領域で、以降のインストールプログラムを記憶してある領域９９９８および印刷クライアントあるいはネットワークプリンタの制御プログラムを記憶してある領域９９９７の位置を示している。
【００３９】
９９９８は、インストールプログラムを記憶してある領域である。９９９７は、印刷クライアントあるいはネットワークプリンタの制御プログラムを記憶してある領域である。本実施の形態の印刷クライアントあるいはネットワークプリンタの制御プログラムが１０１あるいは１０２の各デバイスにインストールされる際には、まずインストールプログラムを記憶してある領域９９９８に記憶されているインストールプログラムがシステムにロードされ、ＣＰＵ３０１によって実行される。
【００４０】
次に、ＣＰＵ３０１によって実行されるインストールプログラムが、デバイス制御プログラムを記憶してある領域９９９７から印刷クライアントあるいはネットワークプリンタの制御プログラムを読み出して、ＲＯＭ３０２の内容を書き換えるか、あるいは大規模記憶装置（ＨＤ）３１１にインストールする。この場合、ＲＯＭ３０２は単純なマスクＲＯＭではなく、フラッシュＲＯＭなどの書き換え可能がＲＯＭである必要がある。
【００４１】
なお、本発明は、複数の機器（例えば、ホストコンピュータ、インタフェース機器、リーダなど）から構成されるシステムあるいは統合装置に適用してもよく、ひとつの機器からなる装置に適用してもよい。
【００４２】
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【００４３】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００４４】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【００４５】
また、コンピュータが読み出したプログラムコードを実行することによって、前述した実施形態の機能が実現される他、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００４６】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００４７】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体から、そのプログラムをパソコン通信など通信ラインを介して要求者にそのプログラムを配信する場合にも適用できることは言うまでもない。
【００４８】
（第２の実施の形態）
上述した第１の実施の形態においては、ハッシュをとる元データとしてＰＤＬデータのデータ断片（（ｄ１）８１１、（ｄ２）８１２、（ｄ３）８１３）を対象としたが、例えば図８に示すように、ヘッダＮを含めた送信データ全体８３０のハッシュ値（ｈ１）８２１を計算して、それを次の送信データのヘッダに入れるようにしても良い。
【００４９】
同様に、ハッシュ値（ｈ１）とデータ断片（ｄ２）を含めた送信データ全体８３１のハッシュ値（ｈ２）８２２を計算して、それを次の送信データのヘッダに入れるようにしても良い。また、ハッシュ値（ｈ２）とデータ断片（ｄ３）を含めた送信データ全体８３２のハッシュ値（ｈ３）８２３を計算して、それを次の送信データのヘッダに入れるようにしても良い。さらに、ハッシュ値（ｈ３）とデータ断片（ＮＵＬＬ）を含めた送信データ全体８３３のハッシュ値を計算するようにしても良い。
【００５０】
（第３の実施の形態）
上述した第１の実施の形態においては、ハッシュ値を「次の」データ断片に付加するようにしたが、ハッシュ値を付加する場所は、「次の」データ断片に限定されるものではない。例えば、二つ先のデータ断片に付加するようにしても良い。要は、ハッシュ値を計算する元となったデータ断片以外のデータ断片に付加することが肝要である。
【図面の簡単な説明】
【００５１】
【図１】図経路上のデータ改ざんの脅威を示す概念を示す図である。
【図２】ハッシュ値の付加方法の一例を示す図である。
【図３】実施の形態の印刷クライアントあるいはプリンタの内部構成例を示すブロック図である。
【図４】実施の形態のハッシュ値付加方法を示す図である。
【図５】改ざんの脅威が残るハッシュ値付加方法を示す図である。
【図６】実施の形態の印刷クライアントの動作を説明するフローチャートである。
【図７】実施の形態のプリンタの動作を説明するフローチャートである。
【図８】第２の実施の形態におけるハッシュ値付加方法を示す図である。
【図９】本実施の形態のソフトウェアの記憶媒体におけるメモリマップの一例を示す図である。
【符号の説明】
【００５２】
１０４  ＬＡＮ
３００  コンピュータ
３０１  ＣＰＵ
３０２  ＲＯＭ、
３０３  ＲＡＭ
３０４  システムバス
３０５  外部入力コントローラ（ＫＢＤ Ｃ）
３０６  ディスプレイコントローラ（ＤＩＳＰＣ）
３０７  ディスクコントローラ
３０８  ネットワークインタフェースカード（ＮＩＣ）
３０９  キーボード
３１０  表示モジュール（ＤＩＳＰＬＡＹ）
３１１  ハードディスク
３１２  タイマ
【図１】
2006011857.tif 000003
【図２】
2006011857.tif 000004
【図３】
2006011857.tif 000005
【図４】
2006011857.tif 000006
【図５】
2006011857.tif 000007
【図６】
2006011857.tif 000008
【図７】
2006011857.tif 000009
【図８】
2006011857.tif 000010
【図９】
2006011857.tif 000011