(57)【要約】プリンタは、少なくともプリンタ位置情報を含むパスフレーズと乱数とを用いて、公開鍵暗号法により、公開鍵を生成するとともに、この乱数を保持しておく。印刷クライアントは、プリンタからその公開鍵を予め取得しておく。そして、印刷クライアントがプリンタに印刷データを送信する場合には、印刷データを予め取得した公開鍵を用いて暗号化して、印刷送信用データとして送信する。この印刷送信用データを受信したプリンタは、少なくともプリンタ位置情報を含むパスフレーズと保持している乱数とを用いて、公開鍵暗号法により、秘密鍵を生成する。そして、この秘密鍵を用いて、受信した印刷送信用データを復号する。これにより、印刷クライアントからプリンタにネットワークを介して送信する印刷データのセキュリティを確保する。
2004022350.tif 000002
【特許請求の範囲】
【請求項１】
印刷データを処理するプリンタであって、
当該プリンタの設置されている場所を特定するためのプリンタ位置情報を取得する、プリンタ位置情報取得部と、
前記プリンタ位置情報取得部からプリンタ位置情報を取得し、これを第１プリンタ位置情報とする、第１プリンタ位置情報取得部と、
前記第１プリンタ位置情報を少なくとも含むパスフレーズと、所定の数とを用いて、公開鍵を生成する、公開鍵生成部と、
前記公開鍵で暗号化された印刷データを受信する、印刷データ受信部と、
前記印刷データを受信した際に、前記プリンタ位置情報取得部からプリンタ位置情報を取得し、これを第２プリンタ位置情報とする、第２プリンタ位置情報取得部と、
前記第２プリンタ位置情報を少なくとも含むパスフレーズと、前記所定の数とを用いて、秘密鍵を生成する、秘密鍵生成部と、
前記秘密鍵を用いて、前記印刷データ受信部で受信した前記印刷データを復号する、復号部と、
を備えることを特徴とするプリンタ。
【請求項２】
前記公開鍵生成部が公開鍵を生成する際に、秘密鍵が生成された場合でも、この秘密鍵は破棄する、ことを特徴とする請求項１に記載のプリンタ。
【請求項３】
前記秘密鍵を用いて前記印刷データが復号できた場合には、前記印刷データに基づく印刷を実行し、前記秘密鍵を用いて前記印刷データが復号できなかった場合には、前記印刷データに基づく印刷を実行しない、印刷実行部を、さらに備えることを特徴とする請求項２に記載のプリンタ。
【請求項４】
前記公開鍵生成部で用いた前記所定の数を保持する、所定の数保持部を、さらに備えることを特徴とする請求項３に記載のプリンタ。
【請求項５】
印刷クライアントから公開鍵取得要求を受信する、公開鍵取得要求受信部と、
前記公開鍵生成部で生成された前記公開鍵を、前記公開鍵取得要求を送信した印刷クライアントに送信する、公開鍵送信部と、
をさらに備えることを特徴とする請求項４に記載のプリンタ。
【請求項６】
前記所定の数保持部に保持されている所定の数は、当該プリンタに１つである、ことを特徴とする請求項５に記載のプリンタ。
【請求項７】
前記所定の数保持部に保持されている所定の数は、前記印刷クライアント毎に１つである、ことを特徴とする請求項５に記載のプリンタ。
【請求項８】
前記公開鍵で暗号化された前記印刷データに加えて、前記公開鍵で暗号化されていない印刷クライアント識別情報を受信する、印刷クライアント識別情報受信部と、
前記所定の数保持部から、前記印刷クライアント識別情報に基づいて、前記印刷データを送信した印刷クライアントの所定の数を取得する、所定の数取得部と、
をさらに備えることを特徴とする、請求項７に記載のプリンタ。
【請求項９】
前記所定の数保持部に保持されている所定の数は、ユーザ毎に１つである、ことを特徴とする請求項５に記載のプリンタ。
【請求項１０】
前記公開鍵で暗号化された前記印刷データに加えて、前記公開鍵で暗号化されていないユーザ識別情報を受信する、ユーザ識別情報受信部と、
前記所定の数保持部から、前記ユーザ識別情報に基づいて、前記印刷データを送信したユーザの所定の数を取得する、所定の数取得部と、
をさらに備えることを特徴とする、請求項９に記載のプリンタ。
【請求項１１】
前記公開鍵生成部は、印刷ジョブ毎に印刷クライアントから送信される公開鍵取得要求に基づいて所定の数を生成し、前記公開鍵を生成することを特徴とする請求項４に記載のプリンタ。
【請求項１２】
秘密鍵生成部で前記秘密鍵を生成した後に、前記所定の数保持部に保持されている所定の数を削除する、所定の数削除部を、さらに備えることを特徴とする請求項１１に記載のプリンタ。
【請求項１３】
前記公開鍵生成部で生成された公開鍵と、この公開鍵を生成する際に用いた前記所定の数を印刷クライアントに送信する、公開鍵所定の数送信部と、
所定の数を印刷クライアントから受信する、所定の数受信部と、
をさらに備えるとともに、
前記秘密鍵生成部は、前記第２プリンタ位置情報を少なくとも含むパスフレーズと、前記所定の数受信部で受信した前記所定の数とを用いて、秘密鍵を生成する、
ことを特徴とする請求項３に記載のプリンタ。
【請求項１４】
印刷クライアントから公開鍵取得要求を受信した場合に、前記公開鍵生成部は、前記公開鍵と前記所定の数とを生成し、前記公開鍵所定の数送信部は、前記公開鍵と前記所定の数とを、この公開鍵取得要求を送信した印刷クライアントに送信する、ことを特徴とする請求項１３に記載のプリンタ。
【請求項１５】
前記公開鍵生成部は、印刷ジョブ毎に印刷クライアントから送信される公開鍵取得要求に基づいて所定の数を生成し、前記公開鍵を生成することを特徴とする請求項１３に記載のプリンタ。
【請求項１６】
前記公開鍵生成部が公開鍵を生成する際に用いられた所定の数は、前記公開鍵所定の数送信部が前記所定の数を印刷クライアントに送信した後に破棄する、ことを特徴とする請求項１５に記載のプリンタ。
【請求項１７】
前記公開鍵生成部で生成された公開鍵と、この公開鍵を生成する際に用いた前記所定の数を導出するのに必要な情報とを、印刷クライアントに送信する、公開鍵情報送信部と、
所定の数を印刷クライアントから受信する、所定の数受信部と、
をさらに備えるとともに、
前記秘密鍵生成部は、前記第２プリンタ位置情報を少なくとも含むパスフレーズと、前記所定の数受信部で受信した前記所定の数とを用いて、秘密鍵を生成する、
ことを特徴とする請求項３に記載のプリンタ。
【請求項１８】
前記所定の数を導出するのに必要な情報は、所定の数を導出するアルゴリズムと、導出のための付加情報である、ことを特徴とする請求項１７に記載のプリンタ。
【請求項１９】
前記所定の数は乱数である、ことを特徴とする請求項１乃至請求項１８のいずれかに記載のプリンタ。
【請求項２０】
印刷データを処理するプリンタの制御方法であって、
当該プリンタの設置されている場所を特定するためのプリンタ位置情報を、プリンタ位置情報取得部から取得し、これを第１プリンタ位置情報とするステップと、
前記第１プリンタ位置情報を少なくとも含むパスフレーズと、所定の数とを用いて、公開鍵を生成するステップと、
印刷クライアントから印刷データを受信するステップと、
前記印刷データを受信した際に、前記プリンタ位置情報取得部からプリンタ位置情報を取得し、これを第２プリンタ位置情報とするステップと、
前記第２プリンタ位置情報を少なくとも含むパスフレーズと、前記所定の数とを用いて、秘密鍵を生成するステップと、
前記秘密鍵を用いて、前記印刷データ受信部で受信した前記印刷データを復号するステップと、
を備えることを特徴とするプリンタの制御方法。
【請求項２１】
前記公開鍵を生成するステップで生成された秘密鍵を破棄するステップを、さらに備えることを特徴とする請求項２０に記載のプリンタの制御方法。
【請求項２２】
前記秘密鍵を用いて前記印刷データが復号できた場合には、前記印刷データに基づく印刷を実行し、前記秘密鍵を用いて前記印刷データが復号できなかった場合には、前記印刷データに基づく印刷を実行しないステップを、さらに備えることを特徴とする請求項２１に記載のプリンタの制御方法。
【請求項２３】
前記公開鍵生成部で用いた前記所定の数を、所定の数保持部に保持するステップを、さらに備えることを特徴とする請求項２２に記載のプリンタの制御方法。
【請求項２４】
印刷クライアントから公開鍵取得要求を受信するステップと、
前記生成された前記公開鍵を、前記公開鍵取得要求を送信した印刷クライアントに送信するステップと、
をさらに備えることを特徴とする請求項２３に記載のプリンタの制御方法。
【請求項２５】
前記所定の数保持部に保持されている所定の数は、当該プリンタに１つである、ことを特徴とする請求項２４に記載のプリンタの制御方法。
【請求項２６】
前記所定の数保持部に保持されている所定の数は、前記印刷クライアント毎に１つである、ことを特徴とする請求項２４に記載のプリンタの制御方法。
【請求項２７】
前記公開鍵で暗号化された前記印刷データに加えて、前記公開鍵で暗号化されていない印刷クライアント識別情報を受信するステップと、
前記所定の数保持部から、前記印刷クライアント識別情報に基づいて、前記印刷データを送信した印刷クライアントの所定の数を取得するステップと、
をさらに備えることを特徴とする、請求項２６に記載のプリンタの制御方法。
【請求項２８】
前記所定の数保持部に保持されている所定の数は、ユーザ毎に１つである、ことを特徴とする請求項２４に記載のプリンタの制御方法。
【請求項２９】
前記公開鍵で暗号化された前記印刷データに加えて、前記公開鍵で暗号化されていないユーザ識別情報を受信するステップと、
前記所定の数保持部から、前記ユーザ識別情報に基づいて、前記印刷データを送信したユーザの所定の数を取得するステップと、
をさらに備えることを特徴とする、請求項２８に記載のプリンタの制御方法。
【請求項３０】
前記公開鍵を生成するステップでは、印刷ジョブ毎に印刷クライアントから送信される公開鍵取得要求に基づいて所定の数を生成し、前記公開鍵を生成することを特徴とする請求項２３に記載のプリンタの制御方法。
【請求項３１】
前記秘密鍵を生成した後に、前記所定の数保持部に保持されている所定の数を削除するステップを、さらに備えることを特徴とする請求項３０に記載のプリンタの制御方法。
【請求項３２】
前記生成された公開鍵と、この公開鍵を生成する際に用いた前記所定の数を印刷クライアントに送信するステップと、
所定の数を印刷クライアントから受信するステップと、
をさらに備えるとともに、
前記秘密鍵を生成するステップでは、前記第２プリンタ位置情報を少なくとも含むパスフレーズと、前記受信した前記所定の数とを用いて、秘密鍵を生成する、
ことを特徴とする請求項２２に記載のプリンタの制御方法。
【請求項３３】
前記公開鍵を生成するステップでは、印刷クライアントから公開鍵取得要求を受信した場合に、前記公開鍵と前記所定の数とを生成し、
前記公開鍵を送信するステップでは、前記公開鍵と前記所定の数とを、この公開鍵取得要求を送信した印刷クライアントに送信する、
ことを特徴とする請求項３２に記載のプリンタの制御方法。
【請求項３４】
前記公開鍵を生成するステップでは、印刷ジョブ毎に印刷クライアントから送信される公開鍵取得要求に基づいて所定の数を生成し、前記公開鍵を生成することを特徴とする請求項３２に記載のプリンタの制御方法。
【請求項３５】
前記公開鍵を生成する際に用いられた所定の数を、前記所定の数を印刷クライアントに送信した後に破棄するステップを、さらに備えることを特徴とする請求項３４に記載のプリンタの制御方法。
【請求項３６】
前記生成された公開鍵と、この公開鍵を生成する際に用いた前記所定の数を導出するのに必要な情報とを、印刷クライアントに送信するステップと、
所定の数を印刷クライアントから受信するステップと、
をさらに備えるとともに、
前記秘密鍵を生成するステップでは、前記第２プリンタ位置情報を少なくとも含むパスフレーズと、前記受信した前記所定の数とを用いて、秘密鍵を生成する、
ことを特徴とする請求項２２に記載のプリンタの制御方法。
【請求項３７】
前記所定の数を導出するのに必要な情報は、所定の数を導出するアルゴリズムと、導出のための付加情報である、ことを特徴とする請求項３６に記載のプリンタの制御方法。
【請求項３８】
前記所定の数は乱数である、ことを特徴とする請求項２０乃至請求項３７のいずれかに記載のプリンタの制御方法。
【請求項３９】
少なくとも１台のプリンタと、前記プリンタにネットワークを介して接続される少なくとも１台の印刷クライアントとを有する、印刷システムであって、
前記プリンタは、
前記プリンタの設置されている場所を特定するためのプリンタ位置情報を取得する、プリンタ位置情報取得部と、
前記プリンタ位置情報取得部からプリンタ位置情報を取得し、これを第１プリンタ位置情報とする、第１プリンタ位置情報取得部と、
前記第１プリンタ位置情報を少なくとも含むパスフレーズと、所定の数とを用いて、公開鍵を生成する、公開鍵生成部と、
を備えており、
前記印刷クライアントは、
前記プリンタで印刷を行うための印刷データを生成する、印刷データ生成部と、
前記公開鍵で前記印刷データを暗号化し、この暗号化した印刷データを、前記プリンタに送信する、印刷データ送信部と、
を備えており、
前記プリンタは、さらに、
前記印刷クライアントから送信された、前記公開鍵で暗号化された印刷データを受信する、印刷データ受信部と、
前記印刷データを受信した際に、前記プリンタ位置情報取得部からプリンタ位置情報を取得し、これを第２プリンタ位置情報とする、第２プリンタ位置情報取得部と、
前記第２プリンタ位置情報を少なくとも含むパスフレーズと、前記所定の数とを用いて、秘密鍵を生成する、秘密鍵生成部と、
前記秘密鍵を用いて、前記印刷データ受信部で受信した前記印刷データを復号する、復号部と、
を備えることを特徴とする印刷システム。
【請求項４０】
データを処理するデータ受信装置であって、
当該データ受信装置の設置されている場所を特定するためのデータ受信装置位置情報を取得する、データ受信装置位置情報取得部と、
前記データ受信装置位置情報取得部からデータ受信装置位置情報を取得し、これを第１データ受信装置位置情報とする、第１データ受信装置位置情報取得部と、
前記第１データ受信装置位置情報を少なくとも含むパスフレーズと、乱数とを用いて、公開鍵を生成する、公開鍵生成部と、
前記公開鍵で暗号化されたデータを受信する、データ受信部と、
前記データを受信した際に、前記データ受信装置位置情報取得部からデータ受信装置位置情報を取得し、これを第２データ受信装置位置情報とする、第２データ受信装置位置情報取得部と、
前記第２データ受信装置位置情報を少なくとも含むパスフレーズと、前記所定の数とを用いて、秘密鍵を生成する、秘密鍵生成部と、
前記秘密鍵を用いて、前記印刷データ受信部で受信した前記データを復号する、復号部と、
を備えることを特徴とするデータ受信装置。
【請求項４１】
少なくとも１台のデータ受信装置と、前記データ受信装置にネットワークを介して接続される少なくとも１台のデータ送信装置とを有する、データ送受信システムであって、
前記データ受信装置は、
前記データ受信装置の設置されている場所を特定するためのデータ受信装置位置情報を取得する、データ受信装置位置情報取得部と、
前記データ受信装置位置情報取得部からデータ受信装置位置情報を取得し、これを第１データ受信装置位置情報とする、第１データ受信装置位置情報取得部と、
前記第１データ受信装置位置情報を少なくとも含むパスフレーズと、乱数とを用いて、公開鍵を生成する、公開鍵生成部と、
を備えており、
前記データ送信装置は、
前記データ受信装置で処理を行うためのデータを生成する、データ生成部と、
前記公開鍵で前記データを暗号化し、この暗号化したデータを、前記データ受信装置に送信する、データ送信部と、
を備えており、
前記データ受信装置は、さらに、
前記データ送信装置から送信された、前記公開鍵で暗号化されたデータを受信する、データ受信部と、
前記データを受信した際に、前記データ受信装置位置情報取得部からデータ受信装置位置情報を取得し、これを第２データ受信装置位置情報とする、第２データ受信装置位置情報取得部と、
前記第２データ受信装置位置情報を少なくとも含むパスフレーズと、前記所定の数とを用いて、秘密鍵を生成する、秘密鍵生成部と、
前記秘密鍵を用いて、前記印刷データ受信部で受信した前記データを復号する、復号部と、
を備えることを特徴とするデータ送受信システム。
【発明の詳細な説明】
【技術分野】  本発明は、プリンタ及び印刷システム、並びに、データ受信装置及びデータ送受信システムに関し、特に、プリンタ及びデータ受信装置に送信されるデータのセキュリティを確保したプリンタ及び印刷システム、並びに、データ受信装置及びデータ送受信システムに関する。
【背景技術】  今日、ネットワークを用いてプリンタを共有する印刷システムが、盛んに使用されるようになってきている。すなわち、１つのネットワークに、印刷クライアントとしてコンピュータを複数接続するとともに、例えば１台のプリンタをこのネットワークに接続することにより、複数の印刷クライアントからの印刷データを１台のプリンタが受け付けて、印刷を行うことができるようになってきている。
このようなネットワークを用いた印刷システムにおいては、様々なユーザが、各印刷クライアントから印刷データをプリンタに送信し、印刷を行うことができる。
しかしながら、印刷クライアントから送信された印刷データを、プリンタが無条件に印刷してしまうこととすると、ユーザが意図した場所に設置されていないプリンタであってもそのまま印刷がなされてしまうこととなる。特に、以前使用されていた場所から別な場所に移動されたプリンタの場合、ネットワーク上のアドレスであるＩＰアドレス等は変更されていないこともあることから、移動後の場所にあるプリンタで、送信した印刷データの印刷が行われてしまうこととなる。このような事態は、印刷データのセキュリティを確保したいユーザにとっては、望ましくない。
さらには、印刷クライアントから送信された印刷データを、プリンタが無条件で印刷してしまうこととすると、本来そのプリンタで印刷する権限のない印刷クライアントからの印刷データまで、プリンタが印刷をしてしまうこととなる。この場合、そのプリンタで印刷できる印刷クライアントを制限できないこととなり、やはり好ましくない。特に、不正な意図をもって大量の印刷データを送信するユーザも存在し得ることを考えると、何らかの印刷制限を設ける必要がある。
また例えば、会社のある部署で使用していたプリンタを別の部署に移動させて、さらに使用する場合もある。このような場合、これまでそのプリンタで印刷する権限を有していた印刷クライアントであっても、プリンタの移動をした後には、このプリンタで印刷する権限を与えたくないことがある。このような状況において、印刷クライアントからの印刷データを、プリンタ側で印刷しないようにする技術の必要性が認められる（特開平１１−３３１１４４号公報参照）。
さらには、ネットワーク上の経路情報を操作して、別の位置に同じプリンタを設置し、同じネットワークアドレスを使用することにより、別のプリンタがあたかも真正なプリンタになりすますことも想定できる。
また、プリンタ自体を認証するための証明書を組み込んだプリンタも存在するが、このようなプリンタを廃棄する場合には、このプリンタに組み込まれている証明書を確実に削除する必要がある。しかし、プリンタの設置場所を変更するだけで、プリンタの印刷ができなくなるのであれば、プリンタの破棄をより安全に行うことが可能になる。
そこで本発明は、前記課題に鑑みてなされたものであり、プリンタの設置されている位置情報に基づいて、印刷できる印刷データを制限することにより、印刷データ及びプリンタのセキュリティを確保した印刷システムを提供することを目的とする。また、データ受信装置の設置されている位置情報に基づいて、処理できるデータを制限することにより、送信するデータ及びデータ受信装置のセキュリティを確保したデータ送受信システムを提供することを目的とする。
【発明の開示】
上記及び他の目的を達成するため、本発明に係るプリンタは、印刷データを処理するプリンタであって、
当該プリンタの設置されている場所を特定するためのプリンタ位置情報を取得する、プリンタ位置情報取得部と、
前記プリンタ位置情報取得部からプリンタ位置情報を取得し、これを第１プリンタ位置情報とする、第１プリンタ位置情報取得部と、
前記第１プリンタ位置情報を少なくとも含むパスフレーズと、所定の数とを用いて、公開鍵を生成する、公開鍵生成部と、
前記公開鍵で暗号化された印刷データを受信する、印刷データ受信部と、
前記印刷データを受信した際に、前記プリンタ位置情報取得部からプリンタ位置情報を取得し、これを第２プリンタ位置情報とする、第２プリンタ位置情報取得部と、
前記第２プリンタ位置情報を少なくとも含むパスフレーズと、前記所定の数とを用いて、秘密鍵を生成する、秘密鍵生成部と、
前記秘密鍵を用いて、前記印刷データ受信部で受信した前記印刷データを復号する、復号部と、
を備える。
本発明の他の見地によれば、印刷データを処理するプリンタの制御方法は、
当該プリンタの設置されている場所を特定するためのプリンタ位置情報を、プリンタ位置情報取得部から取得し、これを第１プリンタ位置情報とするステップと、
前記第１プリンタ位置情報を少なくとも含むパスフレーズと、所定の数とを用いて、公開鍵を生成するステップと、
印刷クライアントから印刷データを受信するステップと、
前記印刷データを受信した際に、前記プリンタ位置情報取得部からプリンタ位置情報を取得し、これを第２プリンタ位置情報とするステップと、
前記第２プリンタ位置情報を少なくとも含むパスフレーズと、前記所定の数とを用いて、秘密鍵を生成するステップと、
前記秘密鍵を用いて、前記印刷データ受信部で受信した前記印刷データを復号するステップと、
を備える。
本発明の他の見地によれば、少なくとも１台のプリンタと、前記プリンタにネットワークを介して接続される少なくとも１台の印刷クライアントとを有する、印刷システムは、
前記プリンタは、
前記プリンタの設置されている場所を特定するためのプリンタ位置情報を取得する、プリンタ位置情報取得部と、
前記プリンタ位置情報取得部からプリンタ位置情報を取得し、これを第１プリンタ位置情報とする、第１プリンタ位置情報取得部と、
前記第１プリンタ位置情報を少なくとも含むパスフレーズと、所定の数とを用いて、公開鍵を生成する、公開鍵生成部と、
を備えており、
前記印刷クライアントは、
前記プリンタで印刷を行うための印刷データを生成する、印刷データ生成部と、
前記公開鍵で前記印刷データを暗号化し、この暗号化した印刷データを、前記プリンタに送信する、印刷データ送信部と、
を備えており、
前記プリンタは、さらに、
前記印刷クライアントから送信された、前記公開鍵で暗号化された印刷データを受信する、印刷データ受信部と、
前記印刷データを受信した際に、前記プリンタ位置情報取得部からプリンタ位置情報を取得し、これを第２プリンタ位置情報とする、第２プリンタ位置情報取得部と、
前記第２プリンタ位置情報を少なくとも含むパスフレーズと、前記所定の数とを用いて、秘密鍵を生成する、秘密鍵生成部と、
前記秘密鍵を用いて、前記印刷データ受信部で受信した前記印刷データを復号する、復号部と、
を備える。
本発明の他の見地によれば、データを処理するデータ受信装置は、
当該データ受信装置の設置されている場所を特定するためのデータ受信装置位置情報を取得する、データ受信装置位置情報取得部と、
前記データ受信装置位置情報取得部からデータ受信装置位置情報を取得し、これを第１データ受信装置位置情報とする、第１データ受信装置位置情報取得部と、
前記第１データ受信装置位置情報を少なくとも含むパスフレーズと、乱数とを用いて、公開鍵を生成する、公開鍵生成部と、
前記公開鍵で暗号化されたデータを受信する、データ受信部と、
前記データを受信した際に、前記データ受信装置位置情報取得部からデータ受信装置位置情報を取得し、これを第２データ受信装置位置情報とする、第２データ受信装置位置情報取得部と、
前記第２データ受信装置位置情報を少なくとも含むパスフレーズと、前記所定の数とを用いて、秘密鍵を生成する、秘密鍵生成部と、
前記秘密鍵を用いて、前記印刷データ受信部で受信した前記データを復号する、復号部と、
を備える。
本発明の他の見地によれば、少なくとも１台のデータ受信装置と、前記データ受信装置にネットワークを介して接続される少なくとも１台のデータ送信装置とを有する、データ送受信システムは、
前記データ受信装置は、
前記データ受信装置の設置されている場所を特定するためのデータ受信装置位置情報を取得する、データ受信装置位置情報取得部と、
前記データ受信装置位置情報取得部からデータ受信装置位置情報を取得し、これを第１データ受信装置位置情報とする、第１データ受信装置位置情報取得部と、
前記第１データ受信装置位置情報を少なくとも含むパスフレーズと、乱数とを用いて、公開鍵を生成する、公開鍵生成部と、
を備えており、
前記データ送信装置は、
前記データ受信装置で処理を行うためのデータを生成する、データ生成部と、
前記公開鍵で前記データを暗号化し、この暗号化したデータを、前記データ受信装置に送信する、データ送信部と、
を備えており、
前記データ受信装置は、さらに、
前記データ送信装置から送信された、前記公開鍵で暗号化されたデータを受信する、データ受信部と、
前記データを受信した際に、前記データ受信装置位置情報取得部からデータ受信装置位置情報を取得し、これを第２データ受信装置位置情報とする、第２データ受信装置位置情報取得部と、
前記第２データ受信装置位置情報を少なくとも含むパスフレーズと、前記所定の数とを用いて、秘密鍵を生成する、秘密鍵生成部と、
前記秘密鍵を用いて、前記印刷データ受信部で受信した前記データを復号する、復号部と、
を備える。
【図面の簡単な説明】  図１は、本発明の第１実施形態に係る印刷システムの構成の一例を示す図、
図２は、本発明の第１実施形態に係るプリンタのハードウェア構成の一例を示す図、
図３は、本発明の第１実施形態に係る印刷クライアントの構成の一例を示す図、
図４は、本発明の第１実施形態において、公開鍵と秘密鍵とを用いた、印刷データの暗号化と復号を説明するための概念図、
図５は、本発明の第１実施形態に係る印刷クライアントが実行する公開鍵要求処理を説明するフローチャートを示す図、
図６は、本発明の第１実施形態に係る印刷クライアントが備える公開鍵テーブルの構成の一例を示す図、
図７は、本発明の第１実施形態に係るプリンタが実行する公開鍵送信処理を説明するフローチャートの一部を示す図（その１）、
図８は、本発明の第１実施形態に係るプリンタが実行する公開鍵送信処理を説明するフローチャートの一部を示す図（その２）、
図９は、本発明の第１実施形態に係る印刷クライアントが実行する印刷要求処理を説明するフローチャートを示す図、
図１０は、本発明の第１実施形態に係るプリンタが実行する印刷実行処理を説明するフローチャートを示す図、
図１１は、本発明の第２実施形態に係るプリンタが実行する公開鍵送信処理を説明するフローチャートの一部を示す図、
図１２は、本発明の第２実施形態に係るプリンタが備える乱数テーブルの構成の一例を示す図、
図１３は、本発明の第２実施形態に係る印刷クライアントが実行する印刷要求処理を説明するフローチャートを示す図、
図１４は、本発明の第２実施形態において、印刷クライアントからプリンタに送信される印刷送信用データの構成の一例を示す図、
図１５は、本発明の第２実施形態に係るプリンタが実行する印刷実行処理を説明するフローチャートを示す図、
図１６は、本発明の第３実施形態に係る印刷クライアントが実行する公開鍵要求処理を説明するフローチャートを示す図、
図１７は、本発明の第３実施形態に係る印刷クライアントが備える公開鍵テーブルの構成の一例を示す図、
図１８は、本発明の第３実施形態に係るプリンタが実行する公開鍵送信処理を説明するフローチャートの一部を示す図（その１）、
図１９は、本発明の第３実施形態に係るプリンタが実行する公開鍵送信処理を説明するフローチャートの一部を示す図（その２）、
図２０は、本発明の第３実施形態に係るプリンタが備える乱数テーブルの構成の一例を示す図、
図２１は、本発明の第３実施形態に係る印刷クライアントが実行する印刷要求処理を説明するフローチャートを示す図、
図２２は、本発明の第３実施形態において、印刷クライアントからプリンタに送信される印刷送信用データの構成の一例を示す図、
図２３は、本発明の第３実施形態に係るプリンタが実行する印刷実行処理を説明するフローチャートを示す図、
図２４は、第４実施形態に係る印刷クライアントが実行する印刷要求処理を説明するフローチャートの一部を示す図（その１）、
図２５は、第４実施形態に係る印刷クライアントが実行する印刷要求処理を説明するフローチャートの一部を示す図（その２）、
図２６は、第４実施形態に係るプリンタが実行する印刷実行処理を説明するフローチャートの一部を示す図（その１）、
図２７は、第４実施形態に係るプリンタが実行する印刷実行処理を説明するフローチャートの一部を示す図（その２）、
図２８は、第４実施形態に係るプリンタが実行する印刷実行処理を説明するフローチャートの一部を示す図（その３）、
図２９は、本発明の第５実施形態において、公開鍵と秘密鍵とを用いた、印刷データの暗号化と復号を説明するための概念図、
図３０は、本発明の第５実施形態に係る印刷クライアントが実行する公開鍵要求処理を説明するフローチャートを示す図、
図３１は、本発明の第５実施形態に係る印刷クライアントが備える公開鍵テーブルの構成の一例を示す図、
図３２は、本発明の第５実施形態に係るプリンタが実行する公開鍵送信処理を説明するフローチャートの一部を示す図（その１）、
図３３は、本発明の第５実施形態に係るプリンタが実行する公開鍵送信処理を説明するフローチャートの一部を示す図（その２）、
図３４は、本発明の第５実施形態に係る印刷クライアントが実行する印刷要求処理を説明するフローチャートを示す図、
図３５は、本発明の第５実施形態に係るプリンタが実行する印刷実行処理を説明するフローチャートを示す図、
図３６は、本発明の第６実施形態に係る印刷クライアントが実行する公開鍵要求処理を説明するフローチャートを示す図、
図３７は、本発明の第６実施形態に係る印刷クライアントが備える公開鍵テーブルの構成の一例を示す図、
図３８は、本発明の第６実施形態に係る印刷クライアントが実行する印刷要求処理を説明するフローチャートを示す図、
図３９は、本実施形態に係る印刷クライアントが実行する印刷要求処理を説明するフローチャートの一部を示す図（その１）、
図４０は、本実施形態に係る印刷クライアントが実行する印刷要求処理を説明するフローチャートの一部を示す図（その２）、
図４１は、本実施形態に係るプリンタが実行する印刷実行処理を説明するフローチャートの一部を示す図（その１）、
図４２は、本実施形態に係るプリンタが実行する印刷実行処理を説明するフローチャートの一部を示す図（その２）、
図４３は、本実施形態に係るプリンタが実行する印刷実行処理を説明するフローチャートの一部を示す図（その３）、
図４４は、乱数の代わりに、プリンタから印刷クライアントにアルゴリズムと付加情報とを送信する例を説明する図（印刷クライアントからプリンタには所定の数を送信する場合）、
図４５は、図４４の変形例を示す図（印刷クライアントからプリンタにはアルゴリズムと付加情報とを送信する場合）、
図４６は、図４４の別の変形例を示す図である（印刷クライアントからプリンタにはアルゴリズムは送信せずに、付加情報を送信する場合）。
好適な実施例
〔第１実施形態〕
本発明の第１実施形態に係る印刷システムは、プリンタが設置されている位置を表すプリンタ位置情報を少なくとも用いて公開鍵を生成し、これを印刷クライアントに取得させておき、印刷クライアントが印刷データをこのプリンタに送信する際には、この取得した公開鍵を用いて印刷データを暗号化して生成した印刷送信用データとして送信することとしたものである。そして、この印刷送信用データを受信したプリンタでは、受信時に再度、その時点におけるプリンタ位置情報を少なくとも用いて秘密鍵を生成し、この秘密鍵で印刷送信用データが復号できた場合にのみ印刷を実行するようにしたものである。また、一般に、公開鍵暗号法においては、公開鍵及び秘密鍵を生成する際に、乱数を使用するが、本実施形態においては、プリンタに予め乱数を登録しておき、印刷クライアントに送信する公開鍵を生成する際に使用する乱数と、印刷送信用データを復号するために秘密鍵を生成する際に使用する乱数とが、同じものになるようにすることにより、プリンタ位置情報が不変であれば同じ秘密鍵が得られるようにしたものである。より詳しくを、以下に説明する。
まず、図１に基づいて、本実施形態に係る印刷システムの構成を説明する。図１は、本実施形態に係る印刷システムのハードウェア構成を示すブロック図である。
この図１に示すように、本実施形態に係る印刷システムは、ネットワーク１０に接続された印刷クライアント２０、２２と、同じくネットワーク１０に接続されたプリンタ３０、３２とを備えている。本実施形態においては、ネットワーク１０は、ＴＣＰ／ＩＰ（ｔｒａｎｓｍｉｓｓｉｏｎ  ｃｏｎｔｒｏｌ  ｐｒｏｔｏｃｏｌ／ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）を用いたインターネットにより構成されている。但し、ネットワーク１０の態様は、インターネットに限るものではなく、例えば、イーサーネット〔登録商標〕等のＬＡＮや、インターネットとＬＡＮとの混在により構成されていてもよい。
印刷クライアント２０、２２は、例えば、ホストコンピュータやパーソナルコンピュータと呼ばれる各種のコンピュータにより構成されている。本実施形態では、特に印刷クライアント２０、２２は、印刷データを公開鍵で暗号化した印刷送信用データを生成し、この印刷送信用データをネットワーク１０を介してプリンタ３０及び／又はプリンタ３２に送信する。このネットワーク１０に接続される印刷クライアントの台数は任意であり、１台でもよく、複数台でもよい。また、この印刷クライアントは、コンピュータに限られるものではなく、例えば、撮影した画像を印刷する必要のあるデジタルカメラや、印刷画像データをコンテンツとして蓄積してあるコンテンツサーバ等でもよい。
また本実施形態においては、プリンタ３０、３２はいわゆるネットワークプリンタである。本実施形態においては、特にプリンタ３０、３２は、印刷送信用データを印刷クライアント２０及び／又は印刷クライアント２２から受信し、この印刷送信用データを、少なくともプリンタ位置情報を含むパスフレーズと、このプリンタ３０、３２に保持されている乱数とを用いて、秘密鍵を生成し、この秘密鍵で印刷送信用データを復号する。そして、印刷送信用データの復号ができた場合には、その印刷送信用データに基づく印刷を行い、印刷送信用データの復号ができなかった場合には、その印刷送信用データに基づく印刷は行わない。
本実施形態においては、プリンタ３０、３２は、ネットワーク１０に直接接続されており、各プリンタ３０、３２は固有のネットワークアドレスを有している。したがって、印刷クライアント２０、２２は、このネットワークアドレスを指定することにより、印刷送信用データをプリンタ３０又はプリンタ３２に送信することができる。
但し、この図１においては、プリンタ３０、３２をネットワーク１０に直接接続しているが、プリンタサーバを介して接続するようにしてもよい。また、このネットワーク１０に接続されるプリンタの台数は任意であり、１台でもよく、複数台でもよい。
図２は、プリンタ３０の内部構成を説明するためのブロック図である。なお、プリンタ３２の内部構成もプリンタ３０と同様である。
この図２に示すように、プリンタ３０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４２と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４４とを備えており、これらは互いに内部バス４６を介して接続されている。また、この内部バス４６には、通信用のインターフェース４８が接続されており、この通信用のインターフェース４８を介して、上述したネットワーク１０にプリンタ３０が接続されている。さらに、内部バス４６には、インターフェース５０が接続されており、このインターフェース５０には印刷エンジン５２が接続されている。
また、内部バス４６には、位置検出部５４が接続されている。この位置検出部５４は、プリンタ３０が設置されている位置を特定する機能を有する。本実施形態においては、例えば、ＧＰＳ（ｇｌｏｂａｌ  ｐｏｓｉｔｉｏｎｉｎｇ  ｓｙｓｔｅｍ）により構成されており、このプリンタ３０が設置されている位置の緯度、経度、高度が特定できるようになっている。現時点におけるＧＰＳの精度は、緯度、経度、高度において、それぞれ±１０ｍ程度であると言われている。
但し、この位置検出部５４は、ＧＰＳを用いた構成に限らず、例えば、無線ＬＡＮによりこのプリンタ３０がネットワーク１０に接続されている場合には、このプリンタ３０が収容されている無線基地局に基づいて、プリンタ３０の位置を特定するようにしてもよい。或いは、ＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙｐｈｏｎｅ  Ｓｙｓｔｅｍ）などの移動体通信技術を利用して、プリンタ３０の位置を特定するようにしてもよい。
さらに、内部バス４６には、インターフェース５６を介して、ハードディスク５８が接続されている。本実施形態においては、このハードディスク５８は、書き換え可能な不揮発性記憶装置として機能する。
図３は、印刷クライアント２０の内部構成を説明するためのブロック図である。なお、本実施形態においては、印刷クライアント２２の内部構成も印刷クライアント２０と同様である。
この図３に示すように、本実施形態に係る印刷クライアント２０は、コンピュータ本体６０とディスプレイ６２とを備えて構成されている。
コンピュータ本体６０は、ＣＰＵ６４と、ＲＡＭ６６と、ＲＯＭ６８とを備えており、これらは互いに内部バス７０を介して接続されている。また、この内部バス７０には、通信用のインターフェース７２が接続されており、この通信用のインターフェース７２を介して、上述したネットワーク１０に印刷クライアント２０が接続されている。
さらに、内部バス７０には、インターフェース７４が接続されており、このインターフェース７４には大容量記憶装置であるハードディスク７６が接続されている。本実施形態においては、このハードディスク７６は、書き換え可能な不揮発性記憶装置として機能する。また、内部バス７０には、インターフェース７８が接続されており、このインターフェース７８から延びるケーブル８０を介して、上述したディスプレイ６２が接続されている。
次に、本実施形態に係る印刷システムにおいて、例えば、印刷クライアント２０がプリンタ３０で印刷を行う場合の処理を、概略的に説明する。
この場合、印刷クライアント２０は、予め、例えばプリンタ３０からこのプリンタ３０の公開鍵を取得しておく。本実施形態においては、この公開鍵の取得は、ネットワーク１０を介して行われる。すなわち、プリンタ３０は、公開鍵の送信を要求してきた印刷クライアント２０が正当な権限を有しているかどうかを確認し、正当な権限を有する場合にのみ、自らの公開鍵を通知する。この公開鍵は、プリンタ３０が、プリンタ３０の設置されている位置を示すプリンタ位置情報を少なくとも含むパスフレーズと、このプリンタ３０で生成されて保持されている乱数とを用いて、公開鍵暗号法により生成する。つまり、プリンタ３０では、公開鍵暗号法により使用する乱数を保持しておく機能を有している。
但し、この際、生成された秘密鍵は破棄する。すなわち、一般的な公開鍵暗号法では、公開鍵と秘密鍵は、同時に生成される。このため、本実施形態においては、公開鍵を生成する際に付随して秘密鍵が生成された場合でも、この秘密鍵を破棄することとしている。そしてこれにより、このプリンタ３０の設置場所が移動された場合には、移動前に生成された公開鍵で暗号化された印刷送信用データが、移動後のプリンタ３０で復号できないようにしているのである。
但し、プリンタ３０の公開鍵は、必ずしもネットワーク１０を介して印刷クライアント２０に通知する必要はない。例えば、印刷クライアント２０のユーザが、正当な権限を有する者であれば、プリンタ３０の設置場所に出向いて、プリンタ３０を操作することができるのであるから、ユーザがプリンタ３０のコントロールパネルを操作して、プリンタ３０の公開鍵を取得するようにしてもよい。この場合、ユーザはプリンタ３０の公開鍵をフレキシブルディスク等の記録媒体に記録し、これを印刷クライアント２０に読み込ませてもよい。
次に、印刷クライアント２０のユーザは、図４に示すように、印刷するべきデータである印刷データＤ０５を作成し、印刷クライアント２０に対してプリンタ３０を指定して印刷を指示する。
印刷クライアント２０は、印刷データＤ０５を、予め取得しておいたプリンタ３０の公開鍵を用いて暗号化し、印刷送信用データＤ１０を生成する。ここで、印刷データＤ０５は、プリンタ３０で印刷エンジン５２を駆動した印刷を行うのに必要となる本来の印刷データを示している。なお、印刷送信用データＤ１０は、この図４に示した印刷データＤ０５以外のデータを含んでいてもよい。
この印刷送信用データＤ１０を受信したプリンタ３０は、図２に示すように、この受信した印刷送信用データＤ１０をＲＡＭ４２に一旦格納する。そして、プリンタ３０は、この暗号化された印刷送信用データＤ１０を、秘密鍵を用いて復号する。すなわち、プリンタ３０は、プリンタ位置情報を少なくとも含むパスフレーズと、このプリンタ３０で生成されて保持されている乱数とを用いて、公開鍵暗号法により、秘密鍵を生成する。
続いて、プリンタ３０は、印刷送信用データＤ１０が復号できたかどうかを判断する。印刷送信用データＤ１０の復号ができた場合には、印刷送信用データＤ１０を復号することにより取得した印刷データＤ０５に基づいて印刷を行い、復号できなかった場合には、印刷は行わない。
次に、上述した処理の内容について、フローチャートを用いて詳しく説明する。まず、公開鍵を印刷クライアント２０、２２が取得する場合における、印刷クライアント２０、２２及びプリンタ３０、３２の処理について、説明する。
図５は、印刷クライアント２０、２２で実行される公開鍵要求処理を説明するフローチャートである。この公開鍵要求処理は、印刷クライアントのＲＯＭ６８又はハードディスク７６に格納されている公開鍵要求プログラムをＣＰＵ６４が読み込んで実行することにより実現される処理である。また、本実施形態においては、この公開鍵要求処理は、ユーザが印刷クライアントに公開鍵を要求する処理を起動するように指示入力した場合に、起動され、実行される処理である。
なお、以下においては、印刷クライアント２０からプリンタ３０に公開鍵を要求する場合を想定して、処理を説明する。
図５に示すように、この公開鍵要求処理においては、まず印刷クライアント２０は、プリンタ３０に接続する（ステップＳ１００）。本実施形態においては、印刷クライアント２０は、プリンタ３０のネットワークアドレスを指定することにより、印刷クライアント２０とプリンタ３０との間の接続を確立する。また、本実施形態においては、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）通信などにより、セキュリティーを確保した上で、印刷クライアント２０とプリンタ３０との間の接続を確立する。
次に、印刷クライアント２０は、プリンタ３０へ認証情報を送信する（ステップＳ１０２）。本実施形態においては、この認証情報として、印刷クライアントを特定するための印刷クライアントＩＤと、パスワードとの組み合わせを用いている。したがって、印刷クライアント２０は、印刷クライアントＩＤとパスワードとを、プリンタ３０へ送信する。
これに続いて、印刷クライアント２０は、プリンタ３０から認証が受け入れられたか否かを示す認証結果を受信するので、この認証結果に基づいて、プリンタ３０で認証が認められたかどうかを判断する（ステップＳ１０４）。認証が認められなかった場合（ステップＳ１０４：Ｎｏ）には、上述したステップＳ１０２からを繰り返す。
一方、認証が認められた場合（ステップＳ１０４：Ｙｅｓ）には、印刷クライアント２０は、公開鍵取得要求をプリンタ３０へ送信する（ステップＳ１０６）。そして、プリンタ３０から公開鍵を受信したかどうかを判断する（ステップＳ１０８）。プリンタ３０から公開鍵を受信していない場合（ステップＳ１０８：Ｎｏ）には、このステップＳ１０８を繰り返して待機する。
一方、プリンタ３０から公開鍵を受信した場合（ステップＳ１０８：Ｙｅｓ）には、この公開鍵を格納する（ステップＳ１１０）。本実施形態においては、印刷クライアント２０は、ハードディスク７６に公開鍵テーブルＴＢ１０を設けており、取得した公開鍵は、この公開鍵テーブルＴＢ１０に格納され保持される。
図６は、この公開鍵テーブルＴＢ１０の構成の一例を示す図である。この図６に示すように、公開鍵テーブルＴＢ１０は、プリンタを特定するための情報を格納する項目ＴＤ１０と、取得した公開鍵をプリンタに対応させて格納する項目ＴＤ１１とを備えている。このように、公開鍵テーブルＴＢ１０は、複数のプリンタに関する公開鍵を、各プリンタ毎に保持することができるようになっている。また、このようにハードディスク７８の公開鍵テーブルＴＢ１０に公開鍵を格納することにより、印刷クライアント２０の電源がオフされて再び電源が投入された場合でも、それ以前に取得した公開鍵をそのままハードディスク７８から読み出して使用することができるようになっている。
図５に示すように、次に、印刷クライアント２０は、プリンタ３０との接続を切断する（ステップＳ１１２）。これにより、図５に示した公開鍵要求処理は終了する。
次に、図７及び図８に基づいて、印刷クライアント２０、２２の公開鍵要求処理に対応して、プリンタ３０、３２で実行される公開鍵送信処理について説明する。この図７及び図８は、プリンタ３０、３２で実行される公開鍵送信処理を説明するフローチャートである。この公開鍵送信処理は、プリンタのＲＯＭ４４又はハードディスク５８に格納されている公開鍵送信プログラムをＣＰＵ４０が読み込んで実行することにより実現される処理である。また、この公開鍵送信処理は、上述した公開鍵要求処理に対応して、起動される処理である。
ここでも上述と同様に、印刷クライアント２０からプリンタ３０に公開鍵が要求された場合を想定して説明する。
図７に示すように、プリンタ３０は、印刷クライアント２０からの接続を待っており、印刷クライアント２０から接続を要求された場合に、印刷クライアント２０と接続を確立する（ステップＳ１２０）。これは上述した印刷クライアント２０側のステップＳ１００に対応している。すなわち、ＳＳＬ通信などでセキュリティーを確保した上で、接続を確立する。続いて、プリンタ３０は、印刷クライアント２０から認証情報を受信したかどうかを判断する（ステップＳ１２２）。認証情報を受信していない場合（ステップＳ１２２：Ｎｏ）には、このステップＳ１２２の処理を繰り返して待機する。
一方、認証情報を印刷クライアント２０から受信した場合（ステップＳ１２２：Ｙｅｓ）には、その認証情報がこのプリンタ３０に予め登録してある認証情報と一致するかどうかを判断する（ステップＳ１２４）。具体的には、上述したように、印刷クライアント２０から印刷クライアントＩＤとパスワードが認証情報として送信されてくるので、この印刷クライアントＩＤとパスワードが、このプリンタ３０に予め登録されている印刷クライアントＩＤとパスワードと一致するかどうかを判断する。
認証情報が一致しなかった場合（ステップＳ１２４：Ｎｏ）には、プリンタ３０は印刷クライアント２０に、認証が受け入れられなかった旨の認証結果を送信し（ステップＳ１２６）、後述する図８のステップＳ１５４において、印刷クライアント２０との接続を終了する。一方、認証が一致した場合（ステップＳ１２４：Ｙｅｓ）には、プリンタ３０は印刷クライアント２０に、認証が受け入れられた旨の認証結果を送信する（ステップＳ１２８）。
次に、プリンタ３０は、印刷クライアント２０から公開鍵取得要求を受信したかどうかを判断する（ステップＳ１３０）。この公開鍵取得要求を受信していない場合（ステップＳ１３０：Ｎｏ）には、このステップＳ１３０の処理を繰り返して待機する。
一方、印刷クライアント２０から公開鍵取得要求を受信した場合（ステップＳ１３０：Ｙｅｓ）には、プリンタ３０は、このプリンタ３０の機器固有情報を取得する（ステップＳ１３２）。ここで、機器固有情報とは、このプリンタ３０に関して、固有に割り当てられている識別情報であり、例えば、プリンタ３０の製造シリアルナンバー、ＭＡＣアドレス等がある。
次に、図８に示すように、プリンタ３０は、位置検出部５４から、その時点におけるプリンタ３０のプリンタ位置情報を取得する（ステップＳ１４０）。このようにプリンタ位置情報をその都度、位置検出部５４から取得することとしているのは、プリンタ３０が別の場所に移動された場合には、その移動後の位置情報を用いて公開鍵を生成するようにするためである。
次に、プリンタ３０は、機器固有情報とプリンタ位置情報とを用いてパスフレーズを作成する（ステップＳ１４２）。このパスフレーズの作成手法は種々のものが考えられるが、本実施形態においては、単純に機器固有情報の後ろにプリンタ位置情報をつなげることにより、パスフレーズを作成する。なお、パスフレーズは、これら機器固有情報及びプリンタ位置情報以外のデータを含んでいてもよい。
次に、プリンタ３０は、このプリンタ３０の乱数が予め登録されているかどうかを判断する（ステップＳ１４４）。乱数が登録されていない場合（ステップＳ１４４：Ｎｏ）には、プリンタ３０は、乱数を１つ生成して、ハードディスク５８に登録する（ステップＳ１４６）。すなわち、本実施形態においては、各プリンタは、それぞれ乱数を１度だけ生成して、ハードディスク５８に登録して保持しておくこととしている。この乱数の生成は、プリンタ３０が初めてこの公開鍵送信処理をした際に行われるものである。また、ハードディスク５８に乱数を保持するので、プリンタ３０の電源をオフにした場合でも、不揮発的に保持される。このため、再びプリンタ３０の電源をオンにした場合でも、それまで使用した乱数が有効に保持されていることとなる。なお、このプリンタ３０の乱数の生成は、必ずしも公開鍵送信処理で行う必要はなく、他の処理で行うようにしてもよい。例えば、プリンタ３０を工場から出荷する際に、予め生成してハードディスク５８に登録して保持するようにしてもよい。
一方、乱数がハードディスク５８に保持されている場合（ステップＳ１４４：Ｙｅｓ）には、このステップＳ１４６の処理をバイパスする。
次に、プリンタ３０は、ハードディスク５８から、このプリンタ３０の乱数を読み出して、取得する（ステップＳ１４８）。
次に、プリンタ３０は、ステップＳ１４２で作成したパスフレーズと、ステップＳ１４８で取得した乱数とを用いて、公開鍵暗号法により、公開鍵と秘密鍵とを生成する（ステップＳ１５０）。公開鍵暗号法では、使用するパスフレーズと乱数が同じであれば、再び、公開鍵と秘密鍵とを生成しても、同じものが生成されるという性質を有している。続いて、プリンタ３０は、この生成した公開鍵と秘密鍵のうち、公開鍵のみを印刷クライアント２０に送信する（ステップＳ１５２）。なお、秘密鍵は保存されることなく破棄される。
次に、プリンタ３０は、印刷クライアント２０との接続を終了する（ステップＳ１５４）。これにより、本実施形態に係る公開鍵送信処理が終了する。
次に、印刷クライアント２０、２２が印刷を行いたいときに、その印刷要求をプリンタ３０、３２に送信する場合の印刷クライアント２０、２２及びプリンタ３０、３２の処理について、詳しく説明する。
図９は、印刷クライアント２０、２２で実行される印刷要求処理を説明するフローチャートである。この印刷要求処理は、印刷クライアントのＲＯＭ６８又はハードディスク７６に格納されている印刷要求プログラムをＣＰＵ６４が読み込んで実行することにより実現される処理である。本実施形態においては、この印刷要求処理は、ユーザが印刷クライアントに印刷指示を入力した場合に、起動され、実行される処理である。
ここでは、印刷クライアント２０からプリンタ３０に印刷を要求する場合を想定して説明する。
この図９に示すように、印刷クライアント２０は、ユーザの印刷要求に基づいて、印刷データＤ０５を作成する（ステップＳ１６０）。この印刷データＤ０５は、プリンタ３０が通常のプリンタである場合に、印刷を実際に行うのに必要となるデータである。
次に、印刷クライアント２０は、ハードディスク７６の公開鍵テーブルＴＢ１０から、プリンタ３０の公開鍵を読み出す（ステップＳ１６２）。続いて、印刷クライアント２０は、プリンタ３０の公開鍵を用いて、印刷データＤ０５を暗号化して、印刷送信用データＤ１０を生成する（ステップＳ１６４）。なお、印刷送信用データＤ１０は、印刷データ以外のデータを含んでいてもよい。
次に、印刷クライアント２０は、プリンタ３０との接続を確立する（ステップＳ１６５）。続いて、印刷クライアント２０は、この暗号化した印刷送信用データＤ１０を、プリンタ３０に送信する（ステップＳ１６６）。具体的には、プリンタ３０のネットワークアドレスを指定して、ネットワーク１０に印刷送信用データＤ１０を送出する。
次に、印刷クライアント２０は、プリンタ３０から印刷結果情報を受信したかどうかを判断する（ステップＳ１６８）。印刷結果情報を受信していない場合（ステップＳ１６８：Ｎｏ）には、このステップＳ１６８の処理を繰り返して待機する。一方、印刷結果情報を受信した場合（ステップＳ１６８：Ｙｅｓ）には、その印刷結果情報が印刷完了通知であるかどうかを判断する（ステップＳ１７０）。
この印刷結果情報が印刷完了通知である場合（ステップＳ１７０：Ｙｅｓ）には、プリンタ３０で印刷が正常に終了したことを意味しているので、ユーザにプリンタ３０で印刷が完了した旨を通知する（ステップＳ１７２）。一方、受信した印刷結果情報が印刷完了通知でない場合（ステップＳ１７０：Ｎｏ）には、その印刷結果情報が解読不能通知であるかどうかを判断する（ステップＳ１７４）。
印刷結果情報が解読不能通知である場合（ステップＳ１７４：Ｙｅｓ）には、ユーザに、プリンタ３０で印刷送信用データＤ１０の復号ができなかったため、印刷が行われなかった旨を通知する（ステップＳ１７６）。一方、印刷結果情報が解読不能通知でない場合（ステップＳ１７４：Ｎｏ）には、その他の何らかのエラーであると考えられるので、ユーザに、そのエラーの種類に応じた通知を行う（ステップＳ１７８）。
これらステップＳ１７２、ステップＳ１７６、及び、ステップＳ１７８の通知の後、印刷クライアント２０は、プリンタ３０との接続を切断する（ステップＳ１７９）。これにより、この印刷クライアント２０における印刷要求処理は終了する。
次に、図１０に基づいて、印刷クライアント２０、２２の印刷要求処理に対応して、プリンタ３０、３２で実行される印刷実行処理について説明する。図１０は、プリンタ３０、３２で実行される印刷実行処理を説明するフローチャートである。この印刷実行処理は、プリンタ３０、３２のＲＯＭ４４又はハードディスク５８に格納されている印刷実行プログラムをＣＰＵ４０が読み込んで実行することにより実現される処理である。本実施形態においては、この印刷実行処理は、所定の時間間隔で定常的に実行されている処理である。
ここでも上述と同様に、印刷クライアント２０からプリンタ３０に印刷が要求された場合を想定して説明する。
図１０に示すように、プリンタ３０は、印刷クライアント２０からの接続を待っており、印刷クライアント２０から接続を要求された場合には、プリンタ３０は、ネットワーク１０を介した印刷クライアント２０と接続を確立する（ステップＳ１８０）。印刷クライアント２０と接続が確立した後、プリンタ３０は、印刷送信用データＤ１０をネットワーク１０から受信したかどうかを判断する（ステップＳ１８１）。何ら印刷送信用データＤ１０を受信していない場合（ステップＳ１８１：Ｎｏ）には、このステップＳ１８１の処理を繰り返して待機する。
一方、印刷送信用データＤ１０を受信した場合（ステップＳ１８１：Ｙｅｓ）には、プリンタ３０は自らの機器固有情報を取得する（ステップＳ１８２）。続いて、プリンタ３０は、位置検出部５４から、その時点におけるプリンタ３０のプリンタ位置情報を取得する（ステップＳ１８４）。このようにプリンタ位置情報を、その都度、位置検出部５４から取得することとしているのは、プリンタ３０が別の場所に移動された場合には、このプリンタ３０がユーザの意図しない場所に設置されている可能性があり、このような場合にはプリンタ３０で印刷が行われないようにするためである。
次に、プリンタ３０は、機器固有情報とプリンタ位置情報とに基づいて、パスフレーズを作成する（ステップＳ１８６）。このパスフレーズの作成手法は、上述した公開鍵送信処理におけるステップＳ１４２と同じ手法である必要がある。なぜなら、パスフレーズが異なると、印刷クライアントに送信した公開鍵で暗号化された印刷送信用データを、秘密鍵で復号できなくなってしまうからである。
次に、プリンタ３０は、ハードディスク５８から、上述したステップＳ１４６で登録されて保持されているこのプリンタ３０の乱数を読み出して、取得する（ステップＳ１８８）。続いて、プリンタ３０は、生成したパスフレーズと取得した乱数とを用いて、公開鍵暗号法により公開鍵と秘密鍵とを生成する（ステップＳ１９０）。このステップＳ１９０で使用するパスフレーズと乱数は、プリンタ３０の設置位置が移動されていなければ、上述した公開鍵送信処理におけるステップＳ１５０で使用したパスフレーズと乱数と同じである。このため、ステップＳ１５０で生成したものと同じ公開鍵と秘密鍵が生成される。続いて、プリンタ３０は、生成された秘密鍵を用いて、受信した印刷送信用データＤ１０を復号して、印刷データＤ０５を取得する（ステップＳ１９２）。
次に、プリンタ３０は、秘密鍵を用いて印刷送信用データＤ１０の復号ができたかどうかを判断する（ステップＳ１９４）。復号ができた場合（ステップＳ１９４：Ｙｅｓ）には、得られた印刷データＤ０５に基づいて、印刷エンジン５２を駆動した印刷を実行する（ステップＳ１９６）。具体的には、印刷データＤ０５の言語解釈を行い、印刷エンジン５２に適合した印刷要求データを生成する。そして、この印刷要求データを印刷エンジン５２に送信することにより、印刷エンジン５２で印刷用紙等に印刷が行われる。
このことから分かるように、本実施形態においては、位置検出部５４で検出したプリンタ位置情報を少なくとも含むパスフレーズとプリンタ３０に登録されている乱数とを用いて秘密鍵を生成し、この秘密鍵で印刷送信用データＤ１０が復号できた場合には、印刷送信用データＤ１０がプリンタ位置情報と合致したと判断することとなる。
この印刷が正常に完了した時点で、プリンタ３０は、印刷が正常に終了した旨の印刷完了通知を、印刷結果情報として、印刷クライアント２０に送信する（ステップＳ１９８）。
これに対して、ステップＳ１９４において、印刷送信用データＤ１０の復号ができなかったと判断した場合（ステップＳ１９４：Ｎｏ）には、解読不能通知を印刷結果情報として、印刷クライアント２０に送信する（ステップＳ２００）。すなわち、本実施形態においては、位置検出部５４で検出したプリンタ位置情報を少なくとも含むパスフレーズとプリンタ３０に登録されている乱数とを用いて秘密鍵を生成し、この秘密鍵で印刷送信用データＤ１０が復号できなかった場合には、印刷送信用データＤ１０がプリンタ位置情報と合致しなかった判断することとなる。
これらステップＳ１９８又はステップＳ２００の後、プリンタ３０は、印刷クライアント２０との接続を終了する（ステップＳ２０２）。そして、上述したステップＳ１８１の処理に戻る。
以上のように、本実施形態に係る印刷システムによれば、印刷クライアント２０、２２は、暗号化して送信した印刷送信用データＤ１０の印刷をできるプリンタを、プリンタ位置情報に基づいて限定することができるので、印刷クライアント２０、２２のユーザが意図していない位置にあるプリンタで印刷が行われしまうのを回避することができる。例えば、プリンタ３０が別の場所に移動されたが、ネットワーク１０内におけるプリンタ３０のネットワークアドレスは変更されていない場合に、印刷クライアント２０から誤って印刷送信用データＤ１０をこのプリンタ３０に送信してしまっても、プリンタ３０ではプリンタ位置情報が変更されているため、ステップＳ１８６で作成されるパスフレーズが移動前と異なったものになる。このため、このパスフレーズを用いて生成された秘密鍵を用いても、印刷送信用データＤ１０の復号はできず、プリンタ３０では印刷が行われない。このため、印刷データＤ０５のセキュリティを高めることができる。
一方、プリンタ３０、３２側においても、本来であればこのプリンタ３０、３２で印刷する権限のない者が、印刷データをこれらプリンタ３０、３２に送信して、大量の印刷をプリンタ３０、３２に実行させてしまうのを回避することができる。例えば、何らかの理由で、プリンタ３０のネットワークアドレスを第三者が知得して、このプリンタ３０に印刷送信用データＤ１０を送信しようとしても、このプリンタ３０の公開鍵を取得することができない。もし、このユーザが異なる公開鍵で印刷データＤ０５を暗号化して印刷送信用データＤ１０を生成したり、暗号化しないで印刷送信用データＤ１０を生成したりして、プリンタ３０に印刷送信用データＤ１０を送信したとしても、印刷実行処理のステップＳ１９４で復号できないと判断されるので、プリンタ３０に印刷を実行させることができなくなる。このため、プリンタ３０自体のセキュリティを高めることができる。
また、本実施形態においては、パスフレーズに機器固有情報も含めることとしたので、何らかの理由により第三者が、プリンタ３０の位置を知得したとしても、プリンタ３０の機器固有情報が分からなければ、プリンタ３０で使用されているパスフレーズを特定することができない。このため、第三者がこのプリンタ３０になりすまして印刷送信用データＤ１０を受信し、この印刷送信用データＤ１０を復号することを、極めて困難なものにすることができる。
さらに、本実施形態においては、パスフレーズに加えて乱数も用いて、公開鍵及び秘密鍵を生成することとしたので、第三者がこのプリンタ３０になりすまして印刷送信用データＤ１０を受信し、この印刷送信用データＤ１０を復号することを、より一層困難なものにすることができる。
また、この乱数は、各プリンタ毎に生成して、生成した乱数をハードディスクなどの書き換え可能な不揮発性記憶装置に保持しておくこととしたので、公開鍵を生成した際に使用した乱数と同じものを、秘密鍵を生成する際にも使用することができる。このため、この乱数を使用して生成した公開鍵で暗号化された印刷送信用データＤ１０を復号できる秘密鍵を、再び生成することができる。
〔第２実施形態〕
本発明の第２実施形態は、プリンタ３０、３２が、公開鍵及び秘密鍵を生成する際に用いる乱数を、印刷クライアント毎に生成し保持することにより、第三者による乱数の推測がより一層困難になるようにしたものである。より詳しくを、以下に説明する。
なお、本実施形態に係る印刷システムの構成は、上述した第１実施形態における図１と同様であり、プリンタ３０、３２の構成は、上述した図２と同様であり、印刷クライアント２０、２２の構成は、上述した図３と同様である。また、本実施形態に係る印刷クライアント２０、２２が実行する公開鍵要求処理も、上述した第１実施形態と同様である。
図１１は、本実施形態に係るプリンタ３０、３２が実行する公開鍵送信処理の一部を説明するフローチャートを示す図であり、上述した第１実施形態における図８に対応する図である。
この図１１に示すように、本実施形態に係る公開鍵送信処理は、ステップＳ１４２に示すパスフレーズの生成までは、上述した第１実施形態の処理と同様であるが、これ以降の処理が異なる。すなわち、パスフレーズの生成を終えた後、プリンタ３０は、公開鍵を要求してきた印刷クライアントの乱数が、このプリンタ３０に登録されているかどうかを判断する（ステップＳ３００）。
図１２は、本実施形態に係るプリンタ３０が保持している、各印刷クライアント毎に乱数が登録されている乱数テーブルＴＢ２０の構成の一例を示す図である。本実施形態においては、この乱数テーブルＴＢ２０は、ハードディスク５８に格納され、保持されている。
この図１２に示すように、乱数テーブルＴＢ２０は、データ項目として、印刷クライアントＩＤ  ＴＤ２０と、乱数ＴＤ２１とを備えて構成されている。印刷クライアントＩＤ  ＴＤ２０には、印刷クライアントを特定するための情報として、印刷クライアントＩＤが格納される。乱数ＴＤ２１には、印刷クライアントＩＤ  ＴＤ２０に対応する乱数が格納される。
本実施形態においては、先の第１実施形態におけるステップＳ１２２で述べたように、印刷クライアント２０、２２から識別情報として印刷クライアントＩＤとパスワードが、プリンタ３０に送信されてくる。このため、このステップＳ３００では、印刷クライアント２０、２２から受信した印刷クライアントＩＤが、この乱数テーブルＴＢ２０に登録されており、乱数が保持されているかどうかを判断する。
図１１に示すように、該当する印刷クライアントの乱数がこのプリンタ３０に登録されていない場合（ステップＳ３００：Ｎｏ）には、プリンタ３０は、この印刷クライアント用の乱数を１つ生成して、乱数テーブルＴＢ２０に登録する（ステップＳ３０２）。具体的には、その印刷クライアントの印刷クライアントＩＤと、生成した乱数とを、乱数テーブルＴＢ２０に登録する。
一方、乱数がプリンタ３０に登録されている場合（ステップＳ３００：Ｙｅｓ）には、このステップＳ３０２の処理をバイパスする。
次に、プリンタ３０は、公開鍵の送信を要求してきた印刷クライアントの乱数を、乱数テーブルＴＢ２０から読み出して、取得する（ステップＳ３０４）。
次に、プリンタ３０は、ステップＳ１４２で作成したパスフレーズと、ステップＳ３０４で取得した乱数とを用いて、公開鍵暗号法により、公開鍵と秘密鍵とを生成する（ステップＳ３０６）。そして、上述した第１実施形態と同様に、プリンタ３０は、この生成した公開鍵と秘密鍵のうち、公開鍵のみを印刷クライアント２０に送信する（ステップＳ１５２）。なお、秘密鍵は保存されることなく破棄される。
次に、プリンタ３０は、印刷クライアント２０との接続を終了する（ステップＳ１５４）。これにより、本実施形態に係る公開鍵送信処理が終了する。
次に、図１３に基づいて、本実施形態に係る印刷クライアント２０、２２が実行する印刷要求処理を説明する。この図１３は、本実施形態に係る印刷クライアント２０、２２が実行する印刷要求処理を説明するフローチャートである。
この図１３に示すように、本実施形態に係る印刷要求処理は、印刷送信用データを生成するための処理が、上述した第１実施形態と異なる。すなわち、ステップＳ１６２で公開鍵を読み出した後、印刷クライアント２０は、公開鍵を用いて、印刷データＤ０５を暗号化する（ステップＳ３１０）。
次に、印刷クライアント２０は、この暗号化した印刷データＤ０５に、自らの印刷クライアントＩＤを付加して、印刷送信用データを生成する（ステップＳ３１２）。図１４は、本実施形態に係る印刷送信用データＤ２０のフォーマットの一例を示す図である。この図１４に示すように、本実施形態に係る印刷送信用データＤ２０は、ステップＳ１６２で読み出した公開鍵で暗号化された印刷データＤ０５に、ステップＳ１６２で読み出した公開鍵で暗号化されていない印刷クライアントＩＤ  Ｄ１５を付加することにより、構成されている。
ここで、印刷クライアントＩＤ  Ｄ１５を、ステップＳ１６２で読み出した公開鍵で暗号化しないのは、プリンタ３０では印刷クライアント毎に異なる乱数を保持しているので、この印刷クライアントＩＤ  Ｄ１５が特定できないと秘密鍵を生成することができないからである。このため、ステップＳ１６２で読み出した公開鍵を用いずに、別な暗号法で、この印刷クライアントＩＤ  Ｄ１５を暗号化することはできる。なお、印刷送信用データＤ２０は、これら印刷クライアントＩＤ  Ｄ１５と印刷データＤ０５以外のデータを含んでいてもよい。
また、本実施形態においては、印刷データＤ０５とともに、印刷クライアントＩＤ  Ｄ１５を送信することとしているが、印刷クライアントＩＤ  Ｄ１５を、印刷データＤ０５とは別に送信するようにしてもよい。この場合、印刷データＤ０５との関連性が維持されていれば、印刷クライアントＩＤ  Ｄ１５は、印刷データＤ０５よりも先に送信してもよいし、後に送信してもよい。
このステップＳ３１２以降の処理は、上述した第１実施形態と同様である。
次に、図１５に基づいて、本実施形態に係るプリンタ３０、３２が実行する印刷実行処理を説明する。この図１５は、本実施形態に係るプリンタ３０、３２が実行する印刷実行処理を説明するフローチャートである。
この図１５に示すように、本実施形態に係る印刷実行処理は、乱数を取得する際の処理が、上述した第１実施形態と異なる。すなわち、プリンタ３０は、ステップＳ１８６でパスフレーズを生成した後、受信した印刷送信用データＤ２０から、印刷クライアントＩＤ  Ｄ１５を取り出して、取得する（ステップＳ３２０）。
次に、プリンタ３０は、印刷クライアントＩＤを検索キーとして、乱数テーブルＴＢ２０を検索し、該当する印刷クライアントの乱数を乱数テーブルＴＢ２０から読み出して、取得する（ステップＳ３２２）。続いて、プリンタ３０は、ステップＳ１８６で生成したパスフレーズと、ステップＳ３２２で取得した乱数とを用いて、公開鍵暗号法により公開鍵と秘密鍵とを生成する（ステップＳ３２４）。
このステップＳ３２４以降の処理は、上述した第１実施形態と同様である。
以上のように、本実施形態に係る印刷システムによっても、上述した第１実施形態と同様の効果を得ることができる。さらに、本実施形態に係る印刷システムによれば、プリンタ３０、３２は、各印刷クライアント毎に乱数を生成して、これを保持することとしたので、第三者がこの乱数を推測することを極めて困難なものにすることができる。
〔第３実施形態〕
本発明の第３実施形態は、プリンタ３０、３２が、公開鍵及び秘密鍵を生成する際に用いる乱数を、ユーザ毎に生成し保持することにより、第三者による乱数の推測がより一層困難になるようにしたものである。より詳しくを、以下に説明する。
なお、本実施形態に係る印刷システムの構成は、上述した第１実施形態における図１と同様であり、プリンタ３０、３２の構成は、上述した図２と同様であり、印刷クライアント２０、２２の構成は、上述した図３と同様である。
図１６は、本実施形態に係る印刷クライアント２０、２２が実行する公開鍵要求処理の一部を説明するフローチャートを示す図であり、上述した第１実施形態における図５に対応する図である。
この図１６に示すように、本実施形態に係る公開鍵要求処理は、ステップＳ１０４で認証が認められた場合以降の処理が、上述した第１実施形態と異なる。すなわち、ステップＳ１０４で認証が認められた場合（ステップＳ１０４：Ｙｅｓ）には、印刷クライアント２０は、この公開鍵を要求しているユーザのユーザＩＤと、公開鍵取得要求とを、プリンタ３０に送信する（ステップＳ４００）。本実施形態においては、このユーザＩＤは、ユーザがキーボード等を操作して、印刷クライアントに入力し、この入力されたユーザＩＤをプリンタ３０に送信することとしている。
次に、印刷クライアント２０は、プリンタ３０から公開鍵を受信したかどうかを判断する（ステップＳ４０２）。プリンタ３０から公開鍵を受信していない場合（ステップＳ４０２：Ｎｏ）には、このステップＳ４０２を繰り返して待機する。
一方、プリンタ３０から公開鍵を受信した場合（ステップＳ４０２：Ｙｅｓ）には、この公開鍵を格納する（ステップＳ４０２）。本実施形態においては、印刷クライアント２０は、ハードディスク７６に公開鍵テーブルＴＢ３０をプリンタ毎に設けており、取得したプリンタ位置情報は、この公開鍵テーブルＴＢ３０に格納され保持される。
図１７は、この公開鍵テーブルＴＢ３０の構成の一例を示す図である。この図１７に示すように、公開鍵テーブルＴＢ３０は、各プリンタ３０、３２毎にテーブルが形成されており、各テーブルは、ユーザを特定するための情報を格納する項目ＴＤ３０と、取得した公開鍵を各ユーザに対応させて格納する項目ＴＤ３１とを備えている。このように、公開鍵テーブルＴＢ３０は、複数のユーザに関する公開鍵を、各ユーザ毎に且つ各プリンタ毎に保持することができるようになっている。また、このようにハードディスク７８の公開鍵テーブルＴＢ３０に公開鍵を格納することにより、印刷クライアント２０の電源がオフされて再び電源が投入された場合でも、それ以前に取得した公開鍵をそのままハードディスク７８から読み出して使用することができるようになっている。
図１６に示すように、次に、印刷クライアント２０は、プリンタ３０との接続を切断する（ステップＳ４０６）。これにより、図１６に示した公開鍵要求処理は終了する。
次に、図１８及び図１９に基づいて、本実施形態に係るプリンタ３０、３２で実行される公開鍵送信処理について説明する。この図１８及び図１９は、プリンタ３０、３２で実行される公開鍵送信処理を説明するフローチャートであり、上述した第１実施形態における図７及び図８に対応している。
まず、図１８に示すように、本実施形態に係るプリンタ３０は、公開鍵取得要求とともに、ユーザＩＤを印刷クライアント２０から受信する点が、上述した第１実施形態及び第２実施形態と異なる。すなわち、ステップＳ１２８で認証が受け入れられた旨の認証結果を送信した後、プリンタ３０は、ユーザＩＤと公開鍵取得要求とを受信したかどうかを判断する（ステップＳ４１０）。そして、ユーザＩＤと公開鍵取得要求とのいずれか一方でも受信していない場合（ステップＳ４１０：Ｎｏ）には、このステップＳ４１０を繰り返して待機する。
一方、ユーザＩＤと公開鍵取得要求との双方とも受信した場合（ステップＳ４１０：Ｙｅｓ）には、上述した第１実施形態と同様に、ステップＳ１３２からの処理を実行する。
さらに、図１９に示すように、本実施形態に係るプリンタ３０は、乱数を取得する際の処理が、上述した第１実施形態及び第２実施形態と異なる。すなわち、パスフレーズの生成を終えた後、プリンタ３０は、公開鍵を要求してきたユーザの乱数が、このプリンタ３０で、この印刷クライアント２０で登録されているかどうかを判断する（ステップＳ４２０）。
図２０は、本実施形態に係るプリンタ３０が保持している、各ユーザ毎に乱数が登録されている乱数テーブルＴＢ４０の構成の一例を示す図である。本実施形態においては、この乱数テーブルＴＢ４０は、印刷クライアント毎にテーブルが形成されている。また、この乱数テーブルＴＢ４０は、ハードディスク５８に格納され、保持されている。
この図２０に示すように、乱数テーブルＴＢ４０は、データ項目として、ユーザＩＤ  ＴＤ４０と、乱数ＴＤ４１とを備えて構成されている。ユーザＩＤ  ＴＤ４０には、ユーザを特定するための情報として、ユーザＩＤが格納される。乱数ＴＤ４１には、ユーザＩＤ  ＴＤ４０に対応する乱数が格納される。
本実施形態においては、先のステップＳ１２２で述べたように、印刷クライアント２０から識別情報として印刷クライアントＩＤとパスワードが、プリンタ３０に送信されてくる。また、ステップＳ４１０で述べたように、印刷クライアント２０からユーザＩＤが送信されてくる。このため、このステップＳ３００では、印刷クライアント２０から受信した印刷クライアントＩＤに基づいて、乱数テーブルＴＢ４０における印刷クライアント２０のテーブルを特定することができる。そして、印刷クライアント２０から受信したユーザＩＤに基づいて、そのユーザに対応する乱数が、該当する印刷クライアントのテーブルに登録されているかどうかを判断することができる。
このことから分かるように、本実施形態においては、１人のユーザが複数の印刷クライアントを使用する場合も想定しており、この場合は、同じユーザであっても、印刷クライアントが異なれば、異なる乱数、つまり、異なる公開鍵と秘密鍵とを使用することとしている。
図１９に示すように、該当する印刷クライアントにおいて、該当するユーザの乱数がこのプリンタ３０に登録されていない場合（ステップＳ４２０：Ｎｏ）には、プリンタ３０は、この印刷クライアントにおける該当ユーザの乱数を１つ生成して、乱数テーブルＴＢ４０に登録する（ステップＳ４２２）。具体的には、乱数テーブルＴＢ４０の中の印刷クライアント２０のテーブルに、ユーザＩＤと、生成した乱数とを登録する。
一方、乱数がプリンタ３０に登録されている場合（ステップＳ４２０：Ｙｅｓ）には、このステップＳ４２２の処理をバイパスする。
次に、プリンタ３０は、公開鍵の送信を要求してきた印刷クライアントに対して登録されているユーザの乱数を、乱数テーブルＴＢ４０から読み出して、取得する（ステップＳ４２４）。
次に、プリンタ３０は、ステップＳ１４２で作成したパスフレーズと、ステップＳ４２４で取得した乱数とを用いて、公開鍵暗号法により、公開鍵と秘密鍵とを生成する（ステップＳ４２６）。そして、上述した第１実施形態及び第２実施形態と同様に、プリンタ３０は、この生成した公開鍵と秘密鍵のうち、公開鍵のみを印刷クライアント２０に送信する（ステップＳ１５２）。なお、秘密鍵は保存されることなく破棄される。
次に、プリンタ３０は、印刷クライアント２０との接続を終了する（ステップＳ１５４）。これにより、本実施形態に係る公開鍵送信処理が終了する。
次に、図２１に基づいて、本実施形態に係る印刷クライアント２０、２２が実行する印刷要求処理を説明する。この図２１は、本実施形態に係る印刷クライアント２０、２２が実行する印刷要求処理を説明するフローチャートである。
この図２１に示すように、本実施形態に係る印刷要求処理は、印刷送信用データを生成するための処理が、上述した第１実施形態及び第２実施形態と異なる。すなわち、ステップＳ１６２で、公開鍵テーブルＴＢ３０から該当するプリンタに対応した該当するユーザの公開鍵を読み出した後、印刷クライアント２０は、この公開鍵を用いて、印刷データＤ０５を暗号化する（ステップＳ４３０）。
次に、印刷クライアント２０は、この暗号化した印刷データＤ０５に、自らの印刷クライアントＩＤとユーザＩＤとを付加して、印刷送信用データを生成する（ステップＳ４３２）。図２２は、本実施形態に係る印刷送信用データＤ３０のフォーマットの一例を示す図である。この図２２に示すように、本実施形態に係る印刷送信用データＤ３０は、ステップＳ１６２で読み出した公開鍵で暗号化された印刷データＤ０５に、ステップＳ１６２で読み出した公開鍵で暗号化されていない印刷クライアントＩＤ  Ｄ１５と、同じくステップＳ１６２で読み出した公開鍵で暗号化されていないユーザＩＤ  Ｄ２５とを付加することにより、構成されている。
ここで、印刷クライアントＩＤ  Ｄ１５とユーザＩＤ  Ｄ２５とを、ステップＳ１６２で読み出した公開鍵で暗号化しないのは、プリンタ３０では、印刷クライアント毎に、且つ、ユーザ毎に、異なる乱数を保持しているので、この印刷クライアントＩＤ  Ｄ１５とユーザＩＤ  Ｄ２５とが特定できないと秘密鍵を生成することができないからである。このため、ステップＳ１６２で読み出した公開鍵を用いずに、別な暗号法で、この印刷クライアントＩＤ  Ｄ１５とユーザＩＤ  Ｄ２５とを暗号化することはできる。なお、印刷送信用データＤ３０は、これら印刷クライアントＩＤ  Ｄ１５とユーザＩＤ  Ｄ２５と印刷データＤ０５以外のデータを含んでいてもよい。
また、本実施形態においては、印刷データＤ０５とともに、印刷クライアントＩＤ  Ｄ１５とユーザＩＤ  Ｄ２５とを送信することとしているが、印刷クライアントＩＤ  Ｄ１５とユーザＩＤ  Ｄ２５とを、印刷データＤ０５とは別に送信するようにしてもよい。この場合、印刷データＤ０５との関連性が維持されていれば、印刷クライアントＩＤ  Ｄ１５とユーザＩＤ  Ｄ２５とは、印刷データＤ０５よりも先に送信してもよいし、後に送信してもよい。さらには、印刷クライアントＩＤ  Ｄ１５とユーザＩＤ  Ｄ２５とは、別々に送信してもよいし、同時に送信してもよい。
このステップＳ４３２以降の処理は、上述した第１実施形態及び第２実施形態と同様である。
次に、図２３に基づいて、本実施形態に係るプリンタ３０、３２が実行する印刷実行処理を説明する。この図２３は、本実施形態に係るプリンタ３０、３２が実行する印刷実行処理を説明するフローチャートである。
この図２３に示すように、本実施形態に係る印刷実行処理は、乱数を取得する際の処理が、上述した第１実施形態及び第２実施形態と異なる。すなわち、プリンタ３０は、ステップＳ１８６でパスフレーズを生成した後、受信した印刷送信用データＤ２０から、印刷クライアントＩＤ  Ｄ１５とユーザＩＤ  Ｄ２５とを取り出して、取得する（ステップＳ４４０）。
次に、プリンタ３０は、この取得した印刷クライアントＩＤとユーザＩＤとを検索キーとして、乱数テーブルＴＢ４０を検索し、該当する印刷クライアントに対して登録されているユーザの乱数を、乱数テーブルＴＢ４０から読み出して、取得する（ステップＳ４４２）。続いて、プリンタ３０は、ステップＳ１８６で生成したパスフレーズと、ステップＳ４４２で取得した乱数とを用いて、公開鍵暗号法により公開鍵と秘密鍵とを生成する（ステップＳ４４４）。
このステップＳ４４４以降の処理は、上述した第１実施形態及び第２実施形態と同様である。
以上のように、本実施形態に係る印刷システムによっても、上述した第１実施形態及び第２実施形態と同様の効果を得ることができる。さらに、本実施形態に係る印刷システムによれば、プリンタ３０、３２は、各ユーザ毎に乱数を生成して、これを保持することとしたので、第三者がこの乱数を推測することを極めて困難なものにすることができる。
〔第４実施形態〕
本発明の第４実施形態に係る印刷システムは、印刷ジョブ毎に、プリンタが設置されている位置を表すプリンタ位置情報を少なくとも含むパスフレーズを用いて公開鍵を生成し、これを印刷クライアントに送信する。印刷クライアントは、この公開鍵を用いて印刷ジョブデータを暗号化して生成した印刷送信用データを送信する。そして、この印刷送信用データを受信したプリンタでは、受信時に再度、その時点におけるプリンタ位置情報を少なくとも含むパスフレーズを用いて秘密鍵を生成し、この秘密鍵で印刷送信用データが復号できた場合にのみ印刷を実行するようにしたものである。また、一般に、公開鍵暗号法においては、公開鍵及び秘密鍵を生成する際に、乱数を使用するが、本実施形態においては、印刷クライアントに送信する公開鍵を生成する際に使用した乱数を保持しておき、印刷送信用データを復号するために秘密鍵を生成する際にも、同じ乱数を使用することにより、プリンタ位置情報が不変であれば同じ秘密鍵が得られるようにしたものである。より詳しくを、以下に説明する。
なお、本実施形態に係る印刷システムの構成は、上述した第１実施形態における図１と同様であり、プリンタ３０、３２の構成は、上述した図２と同様であり、印刷クライアント２０、２２の構成は、上述した図３と同様である。
次に、本実施形態に係る印刷システムにおいて、例えば、印刷クライアント２０がプリンタ３０で印刷を行う場合の処理を、概略的に説明する。
この場合、まず印刷クライアント２０は、プリンタ３０からこのプリンタ３０の公開鍵を取得する。本実施形態においては、この公開鍵の取得は、ネットワーク１０を介して印刷ジョブ毎に行われる。すなわち、プリンタ３０は、公開鍵の送信を要求してきた印刷クライアント２０が正当な権限を有しているかどうかを確認し、正当な権限を有する場合にのみ、自らの公開鍵を印刷クライアント２０に送信する。この公開鍵は、プリンタ３０が、プリンタ３０の設置されている位置を示すプリンタ位置情報を少なくとも含むパスフレーズと、このプリンタ３０が印刷ジョブ毎に生成した乱数とを用いて、公開鍵暗号法により生成する。プリンタ３０では、この公開鍵を生成する際に使用した乱数を保持しておく。
但し、この際、生成された秘密鍵は破棄する。すなわち、一般的な公開鍵暗号法では、公開鍵と秘密鍵は、同時に生成される。このため、本実施形態においては、公開鍵を生成する際に付随して秘密鍵が生成された場合でも、この秘密鍵を破棄することとしている。そしてこれにより、このプリンタ３０の生成した秘密鍵が漏洩する可能性を可及的に低くしている。
次に、印刷クライアント２０のユーザは、図４に示すように、プリンタ３０で印刷を実行するのに必要となるデータを含んでいる印刷ジョブデータＤ０５を作成し、印刷クライアント２０に対してプリンタ３０を指定して印刷を指示する。印刷クライアント２０は、印刷ジョブデータＤ０５を、先に取得したプリンタ３０の公開鍵を用いて暗号化し、印刷送信用データＤ１０を生成する。なお、印刷送信用データＤ１０は、この図４に示した印刷ジョブデータＤ０５以外のデータを含んでいてもよい。
この印刷送信用データＤ１０を受信したプリンタ３０は、図２に示すように、この受信した印刷送信用データＤ１０をＲＡＭ４２に一旦格納する。そして、プリンタ３０は、この暗号化された印刷送信用データＤ１０を、秘密鍵を用いて復号する。すなわち、プリンタ３０は、プリンタ位置情報を少なくとも含むパスフレーズと、このプリンタ３０で生成されて保持されている乱数とを用いて、公開鍵暗号法により、秘密鍵を生成する。そして、この秘密鍵で印刷送信用データＤ１０を復号する。
続いて、プリンタ３０は、印刷送信用データＤ１０が復号できたかどうかを判断する。印刷送信用データＤ１０の復号ができた場合には、印刷送信用データＤ１０を復号することにより取得した印刷ジョブデータＤ０５に基づいて印刷を行い、復号できなかった場合には、印刷は行わない。続いて、プリンタ３０は、保持している乱数を削除する。
次に、上述した処理の内容について、フローチャートを用いて詳しく説明する。まず、印刷クライアント２０、２２がプリンタ３０、３２に印刷を要求する場合の処理である印刷要求処理を説明する。
図２４及び図２５は、印刷クライアント２０、２２で実行される印刷要求処理を説明するフローチャートである。この印刷要求処理は、印刷クライアントのＲＯＭ６８又はハードディスク７６に格納されている印刷要求プログラムをＣＰＵ６４が読み込んで実行することにより実現される処理である。また、本実施形態においては、この印刷要求処理は、ユーザが印刷クライアント２０、２２に、印刷を実行するように指示入力した場合に、起動され、実行される処理である。
なお、以下においては、印刷クライアント２０からプリンタ３０に印刷を要求する場合を想定して、処理を説明する。
図２４に示すように、この印刷要求処理においては、まず印刷クライアント２０は、プリンタ３０にネットワーク１０を介して接続要求を送信する（ステップＳ１１００）。そして、印刷クライアント２０とプリンタ３０との間の接続を確立する（ステップＳ１１０２）。本実施形態においては、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）通信などにより、セキュリティーを確保した上で、印刷クライアント２０とプリンタ３０との間の接続を確立する。
次に、印刷クライアント２０は、プリンタ３０へ認証情報を送信する（ステップＳ１１０４）。本実施形態においては、この認証情報として、印刷クライアントを特定するための印刷クライアントＩＤと、パスワードとの組み合わせを用いている。したがって、印刷クライアント２０は、印刷クライアントＩＤとパスワードとを、プリンタ３０へ送信する。
これに続いて、印刷クライアント２０は、プリンタ３０から認証が受け入れられたか否かを示す認証結果を受信するので、この認証結果に基づいて、プリンタ３０で認証が認められたかどうかを判断する（ステップＳ１１０６）。認証が認められなかった場合（ステップＳ１１０６：Ｎｏ）には、上述したステップＳ１１０４からを繰り返す。
一方、認証が認められた場合（ステップＳ１１０６：Ｙｅｓ）には、印刷クライアント２０は、公開鍵取得要求をプリンタ３０へ送信する（ステップＳ１１０８）。そして、プリンタ３０から公開鍵を受信したかどうかを判断する（ステップＳ１１１０）。プリンタ３０から公開鍵を受信していない場合（ステップＳ１１１０：Ｎｏ）には、このステップＳ１１１０を繰り返して待機する。
一方、プリンタ３０から公開鍵を受信した場合（ステップＳ１１１０：Ｙｅｓ）には、この公開鍵を格納する（ステップＳ１１１２）。本実施形態においては、印刷クライアント２０は、ＲＡＭ６６（図３参照）にこの公開鍵を一時的に格納し保持する。このようにＲＡＭ６６に公開鍵を格納することにより、印刷クライアント２０の電源がオフされた場合には、自動的に、公開鍵が消去されるので、公開鍵の秘密性を高めることができるようになっている。
次に、プリンタ３０は、プリンタとの接続を解放する（ステップＳ１１１４）。すなわち、ＳＳＬ通信等によりセキュリティを確保した状態で、この印刷クライアント２０とプリンタ３０との間に確立されている接続を、解放する。この接続の解放は、必ずしも必要な処理ではないが、後述するステップＳ１１２６で送信する印刷送信用データＤ１０は公開鍵により別途暗号化されており、これ以降の処理でコネクション自体のセキュリティを確保する必要性に乏しいため、本実施形態では接続を解放することとしている。
次に、図２５に示すように、印刷クライアント２０は、ユーザの印刷要求に基づいて、印刷ジョブデータＤ０５を作成する（ステップＳ１１２０）。この印刷ジョブデータＤ０５は、プリンタ３０で印刷を実行するのに必要となる、暗号化されていないデータである。
次に、印刷クライアント２０は、ＲＡＭ６６から、ステップＳ１１１２で格納した公開鍵を読み出す（ステップＳ１１２２）。続いて、印刷クライアント２０は、この公開鍵を用いて、印刷ジョブデータＤ０５を暗号化して、印刷送信用データＤ１０を生成する（ステップＳ１１２４）。なお、印刷送信用データＤ１０は、印刷ジョブデータ以外のデータを含んでいてもよい。
次に、印刷クライアント２０は、新たにプリンタ３０との接続を確立する（ステップＳ１１２５）。上述したように、この接続は、必ずしもセキュリティの確保された接続でなくてもよい。
次に、印刷クライアント２０は、この暗号化した印刷送信用データＤ１０を、プリンタ３０に送信する（ステップＳ１１２６）。具体的には、プリンタ３０のネットワークアドレスを指定して、ネットワーク１０に印刷送信用データＤ１０を送出する。
次に、印刷クライアント２０は、プリンタ３０から印刷結果情報を受信したかどうかを判断する（ステップＳ１１２８）。印刷結果情報を受信していない場合（ステップＳ１１２８：Ｎｏ）には、このステップＳ１１２８の処理を繰り返して待機する。一方、印刷結果情報を受信した場合（ステップＳ１１２８：Ｙｅｓ）には、その印刷結果情報が印刷完了通知であるかどうかを判断する（ステップＳ１１３０）。
この印刷結果情報が印刷完了通知である場合（ステップＳ１１３０：Ｙｅｓ）には、プリンタ３０で印刷が正常に終了したことを意味しているので、ユーザにプリンタ３０で印刷が完了した旨を通知する（ステップＳ１１３２）。一方、受信した印刷結果情報が印刷完了通知でない場合（ステップＳ１１３０：Ｎｏ）には、その印刷結果情報が解読不能通知であるかどうかを判断する（ステップＳ１１３４）。
印刷結果情報が解読不能通知である場合（ステップＳ１１３４：Ｙｅｓ）には、ユーザに、プリンタ３０で印刷送信用データＤ１０の復号ができなかったため、印刷が行われなかった旨を通知する（ステップＳ１１３６）。一方、印刷結果情報が解読不能通知でない場合（ステップＳ１１３４：Ｎｏ）には、その他の何らかのエラーであると考えられるので、ユーザに、そのエラーの種類に応じた通知を行う（ステップＳ１１３８）。
これらステップＳ１１３２、ステップＳ１１３６、及び、ステップＳ１１３８の通知の後、印刷クライアント２０は、ステップＳ１１１２でＲＡＭ６６に格納した公開鍵を削除する（ステップＳ１１４０）。このステップＳ１１４０の処理は、必ずしも必要な処理ではないが、公開鍵の秘密性を向上させるために、本実施形態においては、１つの印刷ジョブの処理が終了する度に、取得した公開鍵を削除することとしている。
次に、印刷クライアント２０は、プリンタ３０との接続を解放する（ステップＳ１１４２）。これにより、この印刷クライアント２０における印刷要求処理は終了する。
次に、図２６乃至図２８に基づいて、印刷クライアント２０、２２の印刷要求処理に対応して、プリンタ３０、３２で実行される印刷実行処理について説明する。この図２６乃至図２８は、プリンタ３０、３２で実行される印刷実行処理を説明するフローチャートである。この印刷実行処理は、プリンタのＲＯＭ４４又はハードディスク５８に格納されている印刷実行プログラムをＣＰＵ４０が読み込んで実行することにより実現される処理である。また、この印刷実行処理は、所定の時間間隔で定常的に実行されている処理である。
ここでも上述と同様に、印刷クライアント２０からプリンタ３０に印刷が要求された場合を想定して説明する。
図２６に示すように、まず、プリンタ３０は、印刷クライアント２０から、ネットワーク１０を介して接続要求を受信したかどうかを判断する（ステップＳ１２００）。印刷クライアント２０から接続要求を受信していない場合（ステップＳ１２００：Ｎｏ）には、このステップＳ１２００の処理を繰り返して待機する。一方、印刷クライアント２０から接続要求を受信した場合（ステップＳ１２００：Ｙｅｓ）には、上述したように、ＳＳＬ通信等によりセキュリティを確保した上で、プリンタ３０と印刷クライアント２０との間の接続を確立する（ステップＳ１２０２）。
次に、プリンタ３０は、印刷クライアント２０から認証情報を受信したかどうかを判断する（ステップＳ１２０４）。認証情報を受信していない場合（ステップＳ１２０４：Ｎｏ）には、このステップＳ１２０４の処理を繰り返して待機する。
一方、認証情報を印刷クライアント２０から受信した場合（ステップＳ１２０４：Ｙｅｓ）には、その認証情報がこのプリンタ３０に予め登録してある認証情報と一致するかどうかを判断する（ステップＳ１２０６）。具体的には、上述したように、印刷クライアント２０から印刷クライアントＩＤとパスワードが認証情報として送信されてくるので、この印刷クライアントＩＤとパスワードが、予めプリンタ３０のハードディスク５８等に登録されている印刷クライアントＩＤとパスワードと一致するかどうかを判断する。
認証情報が一致しなかった場合（ステップＳ１２０６：Ｎｏ）には、プリンタ３０は印刷クライアント２０に、認証が受け入れられなかった旨の認証結果を送信し（ステップＳ１２０８）、ステップＳ１２０４の処理に戻る。一方、認証が一致した場合（ステップＳ１２０６：Ｙｅｓ）には、プリンタ３０は印刷クライアント２０に、認証が受け入れられた旨の認証結果を送信する（ステップＳ１２１０）。
次に、プリンタ３０は、印刷クライアント２０から公開鍵取得要求を受信したかどうかを判断する（ステップＳ１２１２）。この公開鍵取得要求を受信していない場合（ステップＳ１２１２：Ｎｏ）には、このステップＳ１２１２の処理を繰り返して待機する。
一方、印刷クライアント２０から公開鍵取得要求を受信した場合（ステップＳ１２１２：Ｙｅｓ）には、プリンタ３０は、このプリンタ３０の機器固有情報を取得する（ステップＳ１２１４）。ここで、機器固有情報とは、このプリンタ３０に関して、固有に割り当てられている識別情報であり、例えば、プリンタ３０の製造シリアルナンバー、ＭＡＣアドレス等がある。
次に、図２７に示すように、プリンタ３０は、位置検出部５４から、その時点におけるプリンタ３０のプリンタ位置情報を取得する（ステップＳ１２２０）。このようにプリンタ位置情報をその都度、位置検出部５４から取得することとしているのは、プリンタ３０が別の場所に移動された場合には、その移動後の位置情報を用いて公開鍵を生成するようにするためである。
次に、プリンタ３０は、機器固有情報とプリンタ位置情報とを用いてパスフレーズを作成する（ステップＳ１２２２）。このパスフレーズの作成手法は種々のものが考えられるが、本実施形態においては、単純に機器固有情報の後ろにプリンタ位置情報をつなげることにより、パスフレーズを作成する。なお、パスフレーズは、これら機器固有情報及びプリンタ位置情報以外のデータを含んでいてもよい。
次に、プリンタ３０は、乱数を１つ生成してプリンタ３０に格納する（ステップＳ１２２４）。本実施形態においては、この生成した乱数は、ＲＡＭ４２（図２参照）に格納する。このようにＲＡＭ４２に乱数を格納することにより、プリンタ３０の電源がオフされた場合には、自動的に、乱数が消去されるので、公開鍵及び秘密鍵の秘密性を高めることができるようになっている。
次に、プリンタ３０は、ステップＳ１２２２で作成したパスフレーズと、ステップＳ１２２４で生成した乱数とを用いて、公開鍵暗号法により、公開鍵と秘密鍵とを生成する（ステップＳ１２２６）。公開鍵暗号法では、使用するパスフレーズと乱数とが同じであれば、再び、公開鍵と秘密鍵とを生成しても、同じものが生成されるという性質を有している。続いて、プリンタ３０は、この生成した公開鍵と秘密鍵のうち、公開鍵のみを印刷クライアント２０に送信する（ステップＳ１２２８）。なお、秘密鍵は保存されることなく破棄される。
次に、プリンタ３０は、印刷クライアント２０との間の接続を解放する（ステップＳ１２３０）。この処理は、上述した印刷要求処理のステップＳ１１１４に対応する処理である。また、上述したように、このステップＳ１２３０の処理は、必ずしも必要な処理ではない。
次に、プリンタ３０は、印刷クライアント２０から、ネットワーク１０を介して接続要求を受信したかどうかを判断する（ステップＳ１２３２）。印刷クライアント２０から接続要求を受信していない場合（ステップＳ１２３２：Ｎｏ）には、このステップＳ１２３２の処理を繰り返して待機する。一方、印刷クライアント２０から接続要求を受信した場合（ステップＳ１２３２：Ｙｅｓ）には、プリンタ３０と印刷クライアント２０との間の接続を確立する（ステップＳ１２３４）。この接続においては、必ずしもセキュリティが確保されていなくともよい。
次に、プリンタ３０は、印刷送信用データＤ１０をネットワーク１０から受信したかどうかを判断する（ステップＳ１２３６）。何ら印刷送信用データＤ１０を受信していない場合（ステップＳ１２３６：Ｎｏ）には、このステップＳ１２３６の処理を繰り返して待機する。一方、印刷送信用データＤ１０を受信した場合（ステップＳ１２３６：Ｙｅｓ）には、プリンタ３０は自らの機器固有情報を取得する（ステップＳ１２３８）。
次に、図２８に示すように、プリンタ３０は、位置検出部５４から、その時点におけるプリンタ３０のプリンタ位置情報を取得する（ステップＳ１２４０）。このようにプリンタ位置情報を、その都度、位置検出部５４から取得することとしているのは、プリンタ３０が別の場所に移動された場合には、その移動後の位置情報を用いて秘密鍵を生成するようにするためである。
次に、プリンタ３０は、機器固有情報とプリンタ位置情報とに基づいて、パスフレーズを作成する（ステップＳ１２４２）。このパスフレーズの作成手法は、上述したステップＳ１２２２と同じ手法である必要がある。なぜなら、パスフレーズが異なると、印刷クライアントに送信した公開鍵で暗号化された印刷送信用データＤ１０を、秘密鍵で復号できなくなってしまうからである。
次に、プリンタ３０は、ステップＳ１２２４で生成し、ＲＡＭ４２に保持されているこのプリンタ３０の乱数を読み出して、取得する（ステップＳ１２４４）。続いて、プリンタ３０は、生成したパスフレーズと取得した乱数とを用いて、公開鍵暗号法により公開鍵と秘密鍵とを生成する（ステップＳ１２４６）。このステップＳ１２４６で使用するパスフレーズは、その間にプリンタ３０の設置位置が移動されていなければ、上述したステップＳ１２２６で使用したパスフレーズと同じである。また、乱数についても、上述したステップＳ１２２６と同じである。このため、ステップＳ１２２６で生成したものと同じ公開鍵と秘密鍵が生成される。続いて、プリンタ３０は、生成された秘密鍵を用いて、受信した印刷送信用データＤ１０を復号する（ステップＳ１２４８）。
次に、プリンタ３０は、秘密鍵を用いて印刷送信用データＤ１０の復号ができたかどうかを判断する（ステップＳ１２５０）。復号ができた場合（ステップＳ１２５０：Ｙｅｓ）には、得られた印刷ジョブデータＤ０５に基づいて、印刷エンジン５２を駆動した印刷を実行する（ステップＳ１２５２）。具体的には、印刷ジョブデータＤ０５の言語解釈を行い、印刷エンジン５２に適合した印刷要求データを生成する。そして、この印刷要求データを印刷エンジン５２に送信することにより、印刷エンジン５２で印刷用紙等に印刷が行われる。
このことから分かるように、本実施形態においては、位置検出部５４で検出したプリンタ位置情報を少なくとも含むパスフレーズとＲＡＭ４２に保持されている乱数とを用いて秘密鍵を生成し、この秘密鍵で印刷送信用データＤ１０が復号できた場合には、印刷送信用データＤ１０がプリンタ位置情報と合致したと判断することとなる。
この印刷が正常に完了した時点で、プリンタ３０は、印刷が正常に終了した旨の印刷完了通知を、印刷結果情報として、印刷クライアント２０に送信する（ステップＳ１２５４）。
これに対して、ステップＳ１２５０において、印刷送信用データＤ１０の復号ができなかったと判断した場合（ステップＳ１２５０：Ｎｏ）には、解読不能通知を印刷結果情報として、印刷クライアント２０に送信する（ステップＳ１２５６）。すなわち、本実施形態においては、位置検出部５４で検出したプリンタ位置情報を少なくとも含むパスフレーズとＲＡＭ４２に保持されている乱数とを用いて秘密鍵を生成し、この秘密鍵で印刷送信用データＤ１０が復号できなかった場合には、印刷送信用データＤ１０がプリンタ位置情報と合致しなかった判断することとなる。
これらステップＳ１２５４又はステップＳ１２５６の処理の後、プリンタ３０は、ＲＡＭ４２に保持されている乱数を削除する（ステップＳ１２５８）。ＲＡＭ４２から乱数を削除する処理は必ずしも必要な処理ではないが、１つの印刷ジョブに関する処理が終了する度に、ＲＡＭ４２から乱数を削除することにより、乱数の秘密性を高めることができる。
次に、プリンタ３０は、印刷クライアント２０との接続を解放する（ステップＳ１２６０）。そして、上述した図２６のステップＳ１２００の処理に戻る。
以上の、ように、本実施形態に係る印刷システムによれば、プリンタ３０、３２は、公開鍵暗号法により、印刷ジョブ毎に異なる乱数を用いて公開鍵と秘密鍵を生成し、印刷クライアント２０、２２に公開鍵を送信することとしたので、公開鍵及び秘密鍵のセキュリティを高めることができる。
しかも、公開鍵を印刷クライアント２０に送信する際に使用した乱数を保持しておき、秘密鍵を破棄することとしたので、秘密鍵のセキュリティも高めることができる。また、乱数を保持しておくこととしたので、この公開鍵を用いて暗号化された印刷送信用データＤ１０を復号する際には、この保持している乱数を用いて、再び、公開鍵暗号法により、同じ秘密鍵を生成することができ、印刷送信用データＤ１０を復号することができる。
さらに、プリンタ３０、３２においては、この秘密鍵で印刷送信用データＤ１０が復号できなかった場合には、受信した印刷送信用データＤ１０の印刷を実行しないようにしたので、不正な意図を有する第三者が、このプリンタ３０、３２で印刷を実行するのを回避することができる。
〔第５実施形態〕
本発明の第５実施形態に係る印刷システムは、プリンタが設置されている位置を表すプリンタ位置情報を少なくとも用いて公開鍵を生成し、これを印刷クライアントに取得させておき、印刷クライアントが印刷データをこのプリンタに送信する際には、この取得した公開鍵を用いて印刷データを暗号化して生成した暗号化印刷データを含んでいる印刷送信用データとして送信することとしたものである。そして、この印刷送信用データを受信したプリンタでは、受信時に再度、その時点におけるプリンタ位置情報を少なくとも用いて秘密鍵を生成し、この秘密鍵で印刷送信用データに含まれている暗号化印刷データが復号できた場合にのみ印刷を実行するようにしたものである。また、一般に、公開鍵暗号法においては、公開鍵及び秘密鍵を生成する際に、乱数を使用する。本実施形態においては、公開鍵生成時に使用した乱数を印刷クライアントに送信しておき、印刷クライアントに乱数を保持させておく。そして、印刷クライアントが暗号化印刷データをプリンタに送信する際に、この乱数も印刷送信用データに含めてプリンタに送信し、この印刷送信用データを受信したプリンタは、印刷送信用データに含まれている乱数を用いて、再び秘密鍵を生成する。これにより、公開鍵を生成する際に使用する乱数と、暗号化印刷データを復号するために秘密鍵を生成する際に使用する乱数とが、同じものになるようにし、プリンタ位置情報が不変であれば同じ秘密鍵が得られるようにしたものである。より詳しくを、以下に説明する。
なお、本実施形態に係る印刷システムの構成は、上述した第１実施形態における図１と同様であり、プリンタ３０、３２の構成は、上述した図２と同様であり、印刷クライアント２０、２２の構成は、上述した図３と同様である。
次に、本実施形態に係る印刷システムにおいて、例えば、印刷クライアント２０がプリンタ３０で印刷を行う場合の処理を、概略的に説明する。
この場合、印刷クライアント２０は、予め、例えばプリンタ３０からこのプリンタ３０の公開鍵と、この公開鍵を生成する際に使用した乱数とを取得しておく。本実施形態においては、この公開鍵と乱数の取得は、ネットワーク１０を介して行われる。すなわち、プリンタ３０は、公開鍵と乱数の送信を要求してきた印刷クライアント２０が正当な権限を有しているかどうかを確認し、正当な権限を有する場合にのみ、自らの公開鍵と、この公開鍵を生成する際に使用した乱数とを通知する。この公開鍵は、プリンタ３０が、プリンタ３０の設置されている位置を示すプリンタ位置情報を少なくとも含むパスフレーズと、生成した乱数とを用いて、公開鍵暗号法により生成する。そして、印刷クライアント２０は、公開鍵と、公開鍵暗号法によりこの公開鍵を生成する際に使用した乱数とを保持しておく機能を有している。
但し、この際、プリンタ３０は、生成された秘密鍵は破棄する。すなわち、一般的な公開鍵暗号法では、公開鍵と秘密鍵は、同時に生成される。このため、本実施形態においては、公開鍵を生成する際に付随して秘密鍵が生成された場合でも、この秘密鍵を破棄することとしている。そしてこれにより、このプリンタ３０の設置場所が移動された場合には、移動前に生成された公開鍵で暗号化して生成された暗号化印刷データが、移動後のプリンタ３０で復号できないようにしているのである。
但し、プリンタ３０の公開鍵と使用した乱数とは、必ずしもネットワーク１０を介して印刷クライアント２０に通知する必要はない。例えば、印刷クライアント２０のユーザが、正当な権限を有する者であれば、プリンタ３０の設置場所に出向いて、プリンタ３０を操作することができるのであるから、ユーザがプリンタ３０のコントロールパネルを操作して、プリンタ３０の公開鍵と使用した乱数とを取得するようにしてもよい。この場合、ユーザはプリンタ３０の公開鍵と使用した乱数とをフレキシブルディスク等の記録媒体に記録し、これを印刷クライアント２０に読み込ませてもよい。
次に、印刷クライアント２０のユーザは、図２９に示すように、印刷するべきデータを作成し、印刷クライアント２０に対してプリンタ３０を指定して印刷を指示する。印刷クライアント２０は、印刷すべきデータに基づいて、印刷データＤ０５を生成する。ここで、印刷データＤ０５は、プリンタ３０で印刷エンジン５２を駆動した印刷を行うのに必要となる本来の印刷データを示している。
印刷クライアント２０は、印刷データＤ０５をプリンタ３０から取得した公開鍵を用いて暗号化して、暗号化印刷データを生成する。そして、印刷クライアント２０は、この暗号化印刷データに、同じくプリンタ３０から取得した乱数を付加して、印刷送信用データＤ１０を生成する。なお、印刷送信用データＤ１０は、この図２９に示した暗号化印刷データと乱数以外のデータを含んでいてもよい。
この印刷送信用データＤ１０を受信したプリンタ３０は、図２に示すように、この受信した印刷送信用データＤ１０をＲＡＭ４２に一旦格納する。そして、プリンタ３０は、この印刷送信用データＤ１０に含まれている暗号化印刷データを、秘密鍵を用いて復号する。すなわち、プリンタ３０は、プリンタ位置情報を少なくとも含むパスフレーズと、この印刷送信用データＤ１０に含まれている乱数とを用いて、公開鍵暗号法により、秘密鍵を生成する。
続いて、プリンタ３０は、暗号化印刷データが復号できたかどうかを判断する。暗号化印刷データの復号ができた場合には、暗号化印刷データを復号することにより取得した印刷データＤ０５に基づいて印刷を行い、復号できなかった場合には、印刷は行わない。
次に、上述した処理の内容について、フローチャートを用いて詳しく説明する。まず、公開鍵と乱数とを印刷クライアント２０、２２が取得する場合における、印刷クライアント２０、２２及びプリンタ３０、３２の処理について、説明する。
図３０は、印刷クライアント２０、２２で実行される公開鍵要求処理を説明するフローチャートである。この公開鍵要求処理は、印刷クライアントのＲＯＭ６８又はハードディスク７６に格納されている公開鍵要求プログラムをＣＰＵ６４が読み込んで実行することにより実現される処理である。また、本実施形態においては、この公開鍵要求処理は、ユーザが印刷クライアントに公開鍵を要求する処理を起動するように指示入力した場合に、起動され、実行される処理である。
なお、以下においては、印刷クライアント２０からプリンタ３０に公開鍵を要求する場合を想定して、処理を説明する。
図３０に示すように、この公開鍵要求処理においては、まず印刷クライアント２０は、プリンタ３０に接続する（ステップＳ２１００）。本実施形態においては、印刷クライアント２０は、プリンタ３０のネットワークアドレスを指定することにより、印刷クライアント２０とプリンタ３０との間の接続を確立する。また、本実施形態においては、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）通信などにより、セキュリティーを確保した上で、印刷クライアント２０とプリンタ３０との間の接続を確立する。
次に、印刷クライアント２０は、プリンタ３０へ認証情報を送信する（ステップＳ２１０２）。本実施形態においては、この認証情報として、印刷クライアントを特定するための印刷クライアントＩＤと、パスワードとの組み合わせを用いている。したがって、印刷クライアント２０は、印刷クライアントＩＤとパスワードとを、プリンタ３０へ送信する。
これに続いて、印刷クライアント２０は、プリンタ３０から認証が受け入れられたか否かを示す認証結果を受信するので、この認証結果に基づいて、プリンタ３０で認証が認められたかどうかを判断する（ステップＳ２１０４）。認証が認められなかった場合（ステップＳ２１０４：Ｎｏ）には、上述したステップＳ２１０２からを繰り返す。
一方、認証が認められた場合（ステップＳ２１０４：Ｙｅｓ）には、印刷クライアント２０は、公開鍵取得要求をプリンタ３０へ送信する（ステップＳ２１０６）。そして、プリンタ３０から公開鍵とこの公開鍵を生成する際に使用した乱数とを受信したかどうかを判断する（ステップＳ２１０８）。プリンタ３０から公開鍵と乱数とを受信していない場合（ステップＳ２１０８：Ｎｏ）には、このステップＳ２１０８を繰り返して待機する。
一方、プリンタ３０から公開鍵と乱数とを受信した場合（ステップＳ２１０８：Ｙｅｓ）には、この公開鍵と乱数とを格納する（ステップＳ２１１０）。本実施形態においては、印刷クライアント２０は、ハードディスク７６に公開鍵テーブルＴＢ２１０を設けており、取得した公開鍵と乱数とは、この公開鍵テーブルＴＢ２１０に格納され保持される。
図３１は、この公開鍵テーブルＴＢ２１０の構成の一例を示す図である。この図３１に示すように、公開鍵テーブルＴＢ２１０は、プリンタを特定するための情報を格納する項目ＴＤ１０と、取得した公開鍵をプリンタに対応させて格納する項目ＴＤ１１と、取得した乱数をプリンタに対応させて格納する項目ＴＤ１２とを備えている。このように、公開鍵テーブルＴＢ２１０は、複数のプリンタに関する公開鍵及び乱数を、各プリンタ毎に保持することができるようになっている。また、このようにハードディスク７８の公開鍵テーブルＴＢ２１０に公開鍵及び乱数を格納することにより、印刷クライアント２０の電源がオフされて再び電源が投入された場合でも、それ以前に取得した公開鍵及び乱数をそのままハードディスク７８から読み出して使用することができるようになっている。
この公開鍵テーブルＴＢ２１０に、取得した公開鍵と乱数とを格納することにより、図３０に示した公開鍵要求処理は終了する。
次に、図３２及び図３３に基づいて、印刷クライアント２０、２２の公開鍵要求処理に対応して、プリンタ３０、３２で実行される公開鍵送信処理について説明する。この図３２及び図３３は、プリンタ３０、３２で実行される公開鍵送信処理を説明するフローチャートである。この公開鍵送信処理は、プリンタのＲＯＭ４４又はハードディスク５８に格納されている公開鍵送信プログラムをＣＰＵ４０が読み込んで実行することにより実現される処理である。また、この公開鍵送信処理は、上述した公開鍵要求処理に対応して、起動される処理である。
ここでも上述と同様に、印刷クライアント２０からプリンタ３０に公開鍵が要求された場合を想定して説明する。
図３２に示すように、まず、プリンタ３０は、印刷クライアント２０と接続を確立する（ステップＳ２１２０）。これは上述した印刷クライアント２０側のステップＳ２１００に対応している。すなわち、ＳＳＬ通信などでセキュリティーを確保した上で、接続を確立する。続いて、プリンタ３０は、印刷クライアント２０から認証情報を受信したかどうかを判断する（ステップＳ２１２２）。認証情報を受信していない場合（ステップＳ２１２２：Ｎｏ）には、このステップＳ２１２２の処理を繰り返して待機する。
一方、認証情報を印刷クライアント２０から受信した場合（ステップＳ２１２２：Ｙｅｓ）には、その認証情報がこのプリンタ３０に予め登録してある認証情報と一致するかどうかを判断する（ステップＳ２１２４）。具体的には、上述したように、印刷クライアント２０から印刷クライアントＩＤとパスワードが認証情報として送信されてくるので、この印刷クライアントＩＤとパスワードが、このプリンタ３０に予め登録されている印刷クライアントＩＤとパスワードと一致するかどうかを判断する。
認証情報が一致しなかった場合（ステップＳ２１２４：Ｎｏ）には、プリンタ３０は印刷クライアント２０に、認証が受け入れられなかった旨の認証結果を送信し（ステップＳ２１２６）、ステップＳ２１２２の処理に戻る。一方、認証が一致した場合（ステップＳ２１２４：Ｙｅｓ）には、プリンタ３０は印刷クライアント２０に、認証が受け入れられた旨の認証結果を送信する（ステップＳ２１２８）。
次に、プリンタ３０は、印刷クライアント２０から公開鍵取得要求を受信したかどうかを判断する（ステップＳ２１３０）。この公開鍵取得要求を受信していない場合（ステップＳ２１３０：Ｎｏ）には、このステップＳ２１３０の処理を繰り返して待機する。
一方、印刷クライアント２０から公開鍵取得要求を受信した場合（ステップＳ２１３０：Ｙｅｓ）には、プリンタ３０は、このプリンタ３０の機器固有情報を取得する（ステップＳ２１３２）。ここで、機器固有情報とは、このプリンタ３０に関して、固有に割り当てられている識別情報であり、例えば、プリンタ３０の製造シリアルナンバー、ＭＡＣアドレス等がある。
次に、図３３に示すように、プリンタ３０は、位置検出部５４から、その時点におけるプリンタ３０のプリンタ位置情報を取得する（ステップＳ２１４０）。このようにプリンタ位置情報をその都度、位置検出部５４から取得することとしているのは、プリンタ３０が別の場所に移動された場合には、その移動後の位置情報を用いて公開鍵を生成するようにするためである。
次に、プリンタ３０は、機器固有情報とプリンタ位置情報とを用いてパスフレーズを作成する（ステップＳ２１４２）。このパスフレーズの作成手法は種々のものが考えられるが、本実施形態においては、単純に機器固有情報の後ろにプリンタ位置情報をつなげることにより、パスフレーズを作成する。なお、パスフレーズは、これら機器固有情報及びプリンタ位置情報以外のデータを含んでいてもよい。
次に、プリンタ３０は、乱数を生成する（ステップＳ２１４４）。続いて、プリンタ３０は、ステップＳ２１４２で作成したパスフレーズと、ステップＳ２１４４で生成した乱数とを用いて、公開鍵暗号法により、公開鍵と秘密鍵とを生成する（ステップＳ２１４６）。公開鍵暗号法では、使用するパスフレーズと乱数が同じであれば、再び、公開鍵と秘密鍵とを生成しても、同じものが生成されるという性質を有している。続いて、プリンタ３０は、この生成した公開鍵と秘密鍵のうち公開鍵と、この公開鍵と秘密鍵を生成する際に使用した乱数とを印刷クライアント２０に送信する（ステップＳ２１４８）。なお、秘密鍵は保存されることなく破棄される。これにより、本実施形態に係る公開鍵送信処理が終了する。
次に、印刷クライアント２０、２２が印刷を行いたいときに、その印刷要求をプリンタ３０、３２に送信する場合の印刷クライアント２０、２２及びプリンタ３０、３２の処理について、詳しく説明する。
図３４は、印刷クライアント２０、２２で実行される印刷要求処理を説明するフローチャートである。この印刷要求処理は、印刷クライアントのＲＯＭ６８又はハードディスク７６に格納されている印刷要求プログラムをＣＰＵ６４が読み込んで実行することにより実現される処理である。本実施形態においては、この印刷要求処理は、ユーザが印刷クライアントに印刷指示を入力した場合に、起動され、実行される処理である。
ここでは、印刷クライアント２０からプリンタ３０に印刷を要求する場合を想定して説明する。
この図３４に示すように、印刷クライアント２０は、ユーザの印刷要求に基づいて、印刷データＤ０５を作成する（ステップＳ２１６０）。この印刷データＤ０５は、プリンタ３０が通常のプリンタである場合に、印刷を実際に行うのに必要となるデータである。
次に、印刷クライアント２０は、ハードディスク７６の公開鍵テーブルＴＢ２１０から、プリンタ３０の公開鍵と、この公開鍵を生成する際に使用した乱数を読み出す（ステップＳ２１６２）。続いて、印刷クライアント２０は、プリンタ３０の公開鍵を用いて、印刷データＤ０５を暗号化して、暗号化印刷データを生成する（ステップＳ２１６４）。
次に、印刷クライアント２０は、生成した暗号化印刷データに、ステップＳ２１６２で読み出した乱数を付加して、印刷送信用データＤ１０を生成する（ステップＳ２１６５）。なお、印刷送信用データＤ１０は、これら印刷データ及び乱数以外のデータを含んでいてもよい。
次に、印刷クライアント２０は、この生成した印刷送信用データＤ１０を、プリンタ３０に送信する（ステップＳ２１６６）。具体的には、プリンタ３０のネットワークアドレスを指定して、ネットワーク１０に印刷送信用データＤ１０を送出する。
次に、印刷クライアント２０は、プリンタ３０から印刷結果情報を受信したかどうかを判断する（ステップＳ２１６８）。印刷結果情報を受信していない場合（ステップＳ２１６８：Ｎｏ）には、このステップＳ２１６８の処理を繰り返して待機する。一方、印刷結果情報を受信した場合（ステップＳ２１６８：Ｙｅｓ）には、その印刷結果情報が印刷完了通知であるかどうかを判断する（ステップＳ２１７０）。
この印刷結果情報が印刷完了通知である場合（ステップＳ２１７０：Ｙｅｓ）には、プリンタ３０で印刷が正常に終了したことを意味しているので、ユーザにプリンタ３０で印刷が完了した旨を通知する（ステップＳ２１７２）。一方、受信した印刷結果情報が印刷完了通知でない場合（ステップＳ２１７０：Ｎｏ）には、その印刷結果情報が解読不能通知であるかどうかを判断する（ステップＳ２１７４）。
印刷結果情報が解読不能通知である場合（ステップＳ２１７４：Ｙｅｓ）には、ユーザに、プリンタ３０で印刷送信用データＤ１０の復号ができなかったため、印刷が行われなかった旨を通知する（ステップＳ２１７６）。一方、印刷結果情報が解読不能通知でない場合（ステップＳ２１７４：Ｎｏ）には、その他の何らかのエラーであると考えられるので、ユーザに、そのエラーの種類に応じた通知を行う（ステップＳ２１７８）。
これらステップＳ２１７２、ステップＳ２１７６、及び、ステップＳ２１７８の通知により、この印刷クライアント２０における印刷要求処理は終了する。
次に、図３５に基づいて、印刷クライアント２０、２２の印刷要求処理に対応して、プリンタ３０、３２で実行される印刷実行処理について説明する。図３５は、プリンタ３０、３２で実行される印刷実行処理を説明するフローチャートである。この印刷実行処理は、プリンタ３０、３２のＲＯＭ４４又はハードディスク５８に格納されている印刷実行プログラムをＣＰＵ４０が読み込んで実行することにより実現される処理である。本実施形態においては、この印刷実行処理は、所定の時間間隔で定常的に実行されている処理である。
ここでも上述と同様に、印刷クライアント２０からプリンタ３０に印刷が要求された場合を想定して説明する。
図３５に示すように、プリンタ３０は、印刷送信用データＤ１０をネットワーク１０から受信したかどうかを判断する（ステップＳ２１８０）。何ら印刷送信用データＤ１０を受信していない場合（ステップＳ２１８０：Ｎｏ）には、このステップＳ２１８０の処理を繰り返して待機する。
一方、印刷送信用データＤ１０を受信した場合（ステップＳ２１８０：Ｙｅｓ）には、プリンタ３０は自らの機器固有情報を取得する（ステップＳ２１８２）。続いて、プリンタ３０は、位置検出部５４から、その時点におけるプリンタ３０のプリンタ位置情報を取得する（ステップＳ２１８４）。このようにプリンタ位置情報を、その都度、位置検出部５４から取得することとしているのは、プリンタ３０が別の場所に移動された場合には、このプリンタ３０がユーザの意図しない場所に設置されている可能性があり、このような場合にはプリンタ３０で印刷が行われないようにするためである。
次に、プリンタ３０は、機器固有情報とプリンタ位置情報とに基づいて、パスフレーズを作成する（ステップＳ２１８６）。このパスフレーズの作成手法は、上述した公開鍵送信処理におけるステップＳ２１４２と同じ手法である必要がある。なぜなら、パスフレーズが異なると、印刷クライアントに送信した公開鍵で暗号化された暗号化印刷データを、秘密鍵で復号できなくなってしまうからである。
次に、プリンタ３０は、印刷送信用データＤ１０に含まれている乱数を取得する（ステップＳ２１８８）。続いて、プリンタ３０は、生成したパスフレーズと取得した乱数とを用いて、公開鍵暗号法により公開鍵と秘密鍵とを生成する（ステップＳ２１９０）。このステップＳ２１９０で使用するパスフレーズは、プリンタ３０の設置位置が移動されていなければ、上述した公開鍵送信処理におけるステップＳ２１４６で使用したパスフレーズと同じである。また、ステップＳ２１９０で使用する乱数も、ステップＳ２１４６で使用した乱数と同じはずである。このため、ステップＳ２１４６で生成したものと同じ公開鍵と秘密鍵が生成される。続いて、プリンタ３０は、生成された秘密鍵を用いて、印刷送信用データＤ１０に含まれている暗号化印刷データを復号して、印刷データＤ０５を取得する（ステップＳ２１９２）。
次に、プリンタ３０は、秘密鍵を用いて暗号化印刷データの復号ができたかどうかを判断する（ステップＳ２１９４）。復号ができた場合（ステップＳ２１９４：Ｙｅｓ）には、得られた印刷データＤ０５に基づいて、印刷エンジン５２を駆動した印刷を実行する（ステップＳ２１９６）。具体的には、印刷データＤ０５の言語解釈を行い、印刷エンジン５２に適合した印刷要求データを生成する。そして、この印刷要求データを印刷エンジン５２に送信することにより、印刷エンジン５２で印刷用紙等に印刷が行われる。
このことから分かるように、本実施形態においては、位置検出部５４で検出したプリンタ位置情報を少なくとも含むパスフレーズと、暗号化印刷データに付随して送信された乱数とを用いて秘密鍵を生成し、この秘密鍵で暗号化印刷データが復号できた場合には、この暗号化印刷データがプリンタ位置情報と合致したと判断することとなる。
この印刷が正常に完了した時点で、プリンタ３０は、印刷が正常に終了した旨の印刷完了通知を、印刷結果情報として、印刷クライアント２０に送信する（ステップＳ２１９８）。そして、上述したステップＳ２１８０の処理に戻る。
これに対して、ステップＳ２１９４において、暗号化印刷データの復号ができなかったと判断した場合（ステップＳ２１９４：Ｎｏ）には、解読不能通知を印刷結果情報として、印刷クライアント２０に送信する（ステップＳ２２００）。すなわち、本実施形態においては、位置検出部５４で検出したプリンタ位置情報を少なくとも含むパスフレーズと、暗号化印刷データに付随して送信された乱数とを用いて秘密鍵を生成し、この秘密鍵で暗号化印刷データが復号できなかった場合には、この暗号化印刷データがプリンタ位置情報と合致しなかった判断することとなる。そして、上述したステップＳ２１８０の処理に戻る。
以上のように、本実施形態に係る印刷システムによれば、印刷クライアント２０、２２は、暗号化して送信した暗号化印刷データの印刷をできるプリンタを、プリンタ位置情報に基づいて限定することができるので、印刷クライアント２０、２２のユーザが意図していない位置にあるプリンタで印刷が行われしまうのを回避することができる。例えば、プリンタ３０が別の場所に移動されたが、ネットワーク１０内におけるプリンタ３０のトワークアドレスは変更されていない場合に、印刷クライアント２０から誤って暗号化印刷データを含む印刷送信用データＤ１０をこのプリンタ３０に送信してしまっても、プリンタ３０ではプリンタ位置情報が変更されているため、ステップＳ２１８６で作成されるパスフレーズが移動前と異なったものになる。このため、このパスフレーズを用いて生成された秘密鍵を用いても、印刷送信用データＤ１０に含まれている暗号化印刷データの復号はできず、プリンタ３０では印刷が行われない。このため、印刷データＤ０５のセキュリティを高めることができる。
一方、プリンタ３０、３２側においても、本来であればこのプリンタ３０、３２で印刷する権限のない者が、印刷データをこれらプリンタ３０、３２に送信して、大量の印刷をプリンタ３０、３２に実行させてしまうのを回避することができる。例えば、何らかの理由で、プリンタ３０のネットワークアドレスを第三者が知得して、このプリンタ３０に印刷データを送信しようとしても、このプリンタ３０の公開鍵を取得することができない。もし、このユーザが異なる公開鍵で印刷データＤ０５を暗号化して、暗号化印刷データを含む印刷送信用データＤ１０を生成したり、暗号化していない印刷データを含む印刷送信用データＤ１０を生成したりして、プリンタ３０に印刷送信用データＤ１０を送信したとしても、印刷実行処理のステップＳ２１９４で復号できないと判断されるので、プリンタ３０に印刷を実行させることができなくなる。このため、プリンタ３０自体のセキュリティを高めることができる。
また、本実施形態においては、パスフレーズに機器固有情報も含めることとしたので、何らかの理由により第三者が、プリンタ３０の位置を知得したとしても、プリンタ３０の機器固有情報が分からなければ、プリンタ３０で使用されているパスフレーズを特定することができない。このため、第三者がこのプリンタ３０になりすまして印刷送信用データＤ１０を受信し、この印刷送信用データＤ１０に含まれている暗号化印刷データを復号することを、極めて困難なものにすることができる。
また、この乱数は、各印刷クライアント２０、２２毎に生成して、各印刷クライアント２０、２２が、この乱数を公開鍵とともにハードディスクなどの書き換え可能な不揮発性記憶装置に保持しておくこととした。そして、印刷クライアント２０、２２は、印刷データを暗号化した暗号化印刷データとともに、この乱数をプリンタ３０、３２に送信することとしたので、プリンタ３０、３２は、その公開鍵を生成した際に使用した乱数と同じものを、秘密鍵を生成する際にも使用することができる。このため、この乱数を使用して生成した公開鍵で暗号化された暗号化印刷データを復号できる秘密鍵を、再び生成することができる。
〔第６実施形態〕
本発明の第６実施形態は、印刷クライアント２０、２２が、プリンタ毎、且つ、ユーザ毎に、公開鍵とこの公開鍵を生成する際に使用した乱数とを保持するようにしたものである。そして、これにより、第三者による乱数の推測がより一層困難になるようにしたものである。より詳しくを、以下に説明する。
なお、本実施形態に係る印刷システムの構成は、上述した第１実施形態における図１と同様であり、プリンタ３０、３２の構成は、上述した図２と同様であり、印刷クライアント２０、２２の構成は、上述した図３と同様である。また、本実施形態に係るプリンタ３０、３２が実行する公開鍵送信処理、印刷実行処理も、上述した第５実施形態と同様である。
図３６は、本実施形態に係る印刷クライアント２０、２２が実行する公開鍵要求処理の一部を説明するフローチャートを示す図であり、上述した第５実施形態における図３０に対応する図である。
この図３６に示すように、本実施形態に係る公開鍵要求処理は、ステップＳ２１０８に示す公開鍵及び乱数の受信処理までは、上述した第５実施形態の処理と同様であるが、次のステップＳ２３００の処理が異なる。すなわち、本実施形態に係る印刷クライアント２０は、公開鍵と乱数とを受信した場合（ステップＳ２１０８：Ｙｅｓ）には、この公開鍵と乱数を、プリンタ毎に、且つ、ユーザ毎に区分して、公開鍵テーブルＴＢ２２０に格納する。
図３７は、本実施形態に係る公開鍵テーブルＴＢ２２０の一例を示す図である。この図３７に示すように、本実施形態における公開鍵テーブルＴＢ２２０は、上述した第５実施形態における公開鍵テーブルＴＢ２１０に加えて、データ項目として、ユーザＩＤを格納する項目ＴＤ２０を備えている。すなわち、本実施形態においては、印刷クライアント２０は、ユーザＩＤ毎に、公開鍵と乱数を格納することとしている。また、本実施形態の公開鍵テーブルＴＢ２２０においては、プリンタ毎にテーブルが形成されている。このため、同一のユーザＩＤであっても、プリンタが異なれば、異なる公開鍵と乱数とを保持することができるようになる。
これら公開鍵と乱数とを、公開鍵テーブルＴＢ２２０に格納することにより、本実施形態に係る公開鍵要求処理は、終了する。
次に、図３８に基づいて、本実施形態に係る印刷クライアント２０、２２が実行する印刷要求処理を説明する。この図３８は、本実施形態に係る印刷クライアント２０、２２が実行する印刷要求処理を説明するフローチャートである。
この図３８に示すように、本実施形態に係る印刷要求処理は、公開鍵と乱数とを読み出す処理が、上述した第５実施形態と異なる。すなわち、ステップＳ２１６０で印刷データＤ０５を生成した後、印刷クライアント２０は、ユーザＩＤを取得する（ステップＳ２３１０）。すなわち、プリンタ３０に印刷を指示したユーザのユーザＩＤを取得する。このユーザＩＤは、例えば、印刷クライアント２０が印刷指示を入力された際に、ユーザに対して入力を要求してもよいし、或いは、印刷クライアント２０をユーザが使用する際に認証としてユーザに入力を要求してもよい。
次に、印刷クライアント２０は、図３７の公開鍵テーブルＴＢ２２０から、印刷を要求するプリンタのテーブルに、そのユーザＩＤで格納されている公開鍵と乱数とを読み出す（ステップＳ２３１２）。すなわち、本実施形態の公開鍵テーブルＴＢ２２０においては、プリンタ毎にテーブルが構成されているので、ステップＳ２１６０で生成した印刷データＤ０５を印刷するプリンタのテーブルにおいて、このユーザＩＤで登録されている公開鍵と乱数とを読み出す。これ以降の処理は、上述した第５実施形態と同様である。
以上のように、本実施形態に係る印刷システムによっても、上述した第５実施形態と同様の効果を得ることができる。さらに、本実施形態に係る印刷システムによれば、印刷クライアント２０、２２は、プリンタ毎、且つ、ユーザ毎に公開鍵と乱数を保持することとしたので、第三者がこの乱数を推測することを極めて困難なものにすることができる。
〔第７実施形態〕
本発明の一実施形態に係る印刷システムは、印刷ジョブ毎に乱数を生成し、この生成した乱数と、プリンタが設置されている位置を表すプリンタ位置情報を少なくとも含むパスフレーズとを用いて公開鍵を生成し、この公開鍵と乱数とをプリンタから印刷クライアントに送信する。印刷クライアントは、この公開鍵を用いて印刷ジョブデータを暗号化して暗号化印刷ジョブデータを生成するとともに、この暗号化印刷ジョブデータに、プリンタから送信された乱数を付加して、印刷送信用データを生成する。そして、印刷クライアントは、この印刷送信用データをプリンタに送信する。この印刷送信用データを受信したプリンタでは、受信時に再度、その時点におけるプリンタ位置情報を少なくとも含むパスフレーズと、印刷送信用データに含まれていた乱数とを用いて秘密鍵を生成し、この秘密鍵で暗号化印刷ジョブデータが復号できた場合にのみ印刷を実行するようにしたものである。より詳しくを、以下に説明する。
なお、本実施形態に係る印刷システムの構成は、上述した第１実施形態における図１と同様であり、プリンタ３０、３２の構成は、上述した図２と同様であり、印刷クライアント２０、２２の構成は、上述した図３と同様である。
次に、本実施形態に係る印刷システムにおいて、例えば、印刷クライアント２０がプリンタ３０で印刷を行う場合の処理を、概略的に説明する。
この場合、まず印刷クライアント２０は、プリンタ３０から公開鍵とこの公開鍵を生成する際に使用した乱数を取得する。本実施形態においては、この公開鍵と乱数の取得は、ネットワーク１０を介して印刷ジョブ毎に行われる。すなわち、プリンタ３０は、公開鍵の送信を要求してきた印刷クライアント２０が正当な権限を有しているかどうかを確認し、正当な権限を有する場合にのみ、新たに生成した公開鍵と、この公開鍵を生成する際に使用した乱数とを、印刷クライアント２０に送信する。すなわち、プリンタ３０は、プリンタ３０の設置されている位置を示すプリンタ位置情報を少なくとも含むパスフレーズと、このプリンタ３０が印刷ジョブ毎に生成した乱数とを用いて、公開鍵暗号法により、公開鍵を生成する。プリンタ３０では、この公開鍵を生成する際に使用した乱数を保持しておく必要はないので、破棄する。
また、この際、生成された秘密鍵も破棄する。すなわち、一般的な公開鍵暗号法では、公開鍵と秘密鍵は、同時に生成される。このため、本実施形態においては、公開鍵を生成する際に付随して秘密鍵が生成された場合でも、この秘密鍵を破棄することとしている。そしてこれにより、このプリンタ３０の生成した秘密鍵が漏洩する可能性を可及的に低くしている。
次に、印刷クライアント２０のユーザは、図２９に示すように、印刷するべきデータを作成し、印刷クライアント２０に対してプリンタ３０を指定して印刷を指示する。印刷クライアント２０は、印刷すべきデータに基づいて、印刷ジョブデータＤ０５を生成する。ここで、印刷ジョブデータＤ０５は、プリンタ３０で印刷エンジン５２を駆動した印刷を行うのに必要となる本来の印刷データを示している。
印刷クライアント２０は、印刷ジョブデータＤ０５を、先に取得したプリンタ３０の公開鍵を用いて暗号化し、暗号化印刷ジョブデータを生成する。そして、印刷クライアント２０は、この暗号化印刷ジョブデータに、同じくプリンタ３０から取得した乱数を付加して、印刷送信用データＤ１０を生成する。なお、印刷送信用データＤ１０は、この図２９に示した暗号化印刷データと乱数以外のデータを含んでいてもよい。
この印刷送信用データＤ１０を受信したプリンタ３０は、図２に示すように、この受信した印刷送信用データＤ１０をＲＡＭ４２に一旦格納する。そして、プリンタ３０は、この印刷送信用データＤ１０に含まれている暗号化印刷ジョブデータを、秘密鍵を用いて復号する。すなわち、プリンタ３０は、プリンタ位置情報を少なくとも含むパスフレーズと、この印刷送信用データＤ１０に含まれている乱数とを用いて、公開鍵暗号法により、秘密鍵を生成する。そして、この秘密で印刷送信用データＤ１０に含まれている暗号化印刷ジョブデータを復号する。
続いて、プリンタ３０は、暗号化印刷ジョブデータが復号できたかどうかを判断する。暗号化印刷ジョブデータの復号ができた場合には、暗号化印刷ジョブデータを復号することにより取得した印刷ジョブデータＤ０５に基づいて印刷を行い、復号できなかった場合には、印刷は行わない。
次に、上述した処理の内容について、フローチャートを用いて詳しく説明する。まず、印刷クライアント２０、２２がプリンタ３０、３２に印刷を要求する場合の処理である印刷要求処理を説明する。
図３９及び図４０は、印刷クライアント２０、２２で実行される印刷要求処理を説明するフローチャートである。この印刷要求処理は、印刷クライアントのＲＯＭ６８又はハードディスク７６に格納されている印刷要求プログラムをＣＰＵ６４が読み込んで実行することにより実現される処理である。また、本実施形態においては、この印刷要求処理は、ユーザが印刷クライアント２０、２２に、印刷を実行するように指示入力した場合に、起動され、実行される処理である。
なお、以下においては、印刷クライアント２０からプリンタ３０に印刷を要求する場合を想定して、処理を説明する。
図３９に示すように、この印刷要求処理においては、まず印刷クライアント２０は、プリンタ３０にネットワーク１０を介して接続要求を送信する（ステップＳ３１００）。そして、印刷クライアント２０とプリンタ３０との間のコネクションを確立する（ステップＳ３１０２）。本実施形態においては、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）通信などにより、セキュリティーを確保した上で、印刷クライアント２０とプリンタ３０との間のコネクションを確立する。
次に、印刷クライアント２０は、プリンタ３０へ認証情報を送信する（ステップＳ３１０４）。本実施形態においては、この認証情報として、印刷クライアントを特定するための印刷クライアントＩＤと、パスワードとの組み合わせを用いている。したがって、印刷クライアント２０は、印刷クライアントＩＤとパスワードとを、プリンタ３０へ送信する。
これに続いて、印刷クライアント２０は、プリンタ３０から認証が受け入れられたか否かを示す認証結果を受信するので、この認証結果に基づいて、プリンタ３０で認証が認められたかどうかを判断する（ステップＳ３１０６）。認証が認められなかった場合（ステップＳ３１０６：Ｎｏ）には、上述したステップＳ３１０４からを繰り返す。
一方、認証が認められた場合（ステップＳ３１０６：Ｙｅｓ）には、印刷クライアント２０は、公開鍵取得要求をプリンタ３０へ送信する（ステップＳ３１０８）。そして、プリンタ３０から公開鍵と、この公開鍵を生成する際に使用した乱数とを受信したかどうかを判断する（ステップＳ３１１０）。プリンタ３０から公開鍵と乱数とを受信していない場合（ステップＳ３１１０：Ｎｏ）には、このステップＳ３１１０を繰り返して待機する。
一方、プリンタ３０から公開鍵と乱数を受信した場合（ステップＳ３１１０：Ｙｅｓ）には、この公開鍵と乱数を格納する（ステップＳ３１１２）。本実施形態においては、印刷クライアント２０は、ＲＡＭ６６（図３参照）にこの公開鍵と乱数を一時的に格納し保持する。このようにＲＡＭ６６に公開鍵と乱数を格納することにより、印刷クライアント２０の電源がオフされた場合には、自動的に、公開鍵と乱数が消去されるので、公開鍵と乱数の秘密性を高めることができるようになっている。
次に、プリンタ３０は、プリンタとのコネクションを解放する（ステップＳ３１１４）。すなわち、ＳＳＬ通信等によりセキュリティを確保した状態で、この印刷クライアント２０とプリンタ３０との間に確立されているコネクションを、解放する。このコネクションの解放は、必ずしも必要な処理ではないが、後述するステップＳ３１２６で送信する印刷ジョブデータＤ０５は公開鍵により別途暗号化されており、これ以降の処理でコネクション自体のセキュリティを確保する必要性に乏しいため、本実施形態ではコネクションを解放することとしている。
次に、図４０に示すように、印刷クライアント２０は、ユーザの印刷要求に基づいて、印刷ジョブデータＤ０５を作成する（ステップＳ３１２０）。この印刷ジョブデータＤ０５は、プリンタ３０で印刷を実行するのに必要となる、暗号化されていないデータである。
次に、印刷クライアント２０は、ＲＡＭ６６から、ステップＳ３１１２で格納した公開鍵と乱数とを読み出す（ステップＳ３１２２）。続いて、印刷クライアント２０は、この公開鍵を用いて、印刷ジョブデータＤ０５を暗号化して、暗号化印刷ジョブデータを生成する（ステップＳ３１２４）。
次に、印刷クライアント２０は、ステップＳ３１２４で生成した暗号化印刷ジョブデータに、ステップＳ３１２２で読み出した乱数を付加して、印刷送信用データＤ１０を生成する（ステップＳ３１２５）。なお、印刷送信用データＤ１０は、これら暗号化印刷ジョブデータ及び乱数以外のデータを含んでいてもよい。
次に、印刷クライアント２０は、この印刷送信用データＤ１０を、プリンタ３０に送信する（ステップＳ３１２６）。具体的には、プリンタ３０のネットワークアドレスを指定して、ネットワーク１０に印刷送信用データＤ１０を送出する。
次に、印刷クライアント２０は、プリンタ３０から印刷結果情報を受信したかどうかを判断する（ステップＳ３１２８）。印刷結果情報を受信していない場合（ステップＳ３１２８：Ｎｏ）には、このステップＳ３１２８の処理を繰り返して待機する。一方、印刷結果情報を受信した場合（ステップＳ３１２８：Ｙｅｓ）には、その印刷結果情報が印刷完了通知であるかどうかを判断する（ステップＳ３１３０）。
この印刷結果情報が印刷完了通知である場合（ステップＳ３１３０：Ｙｅｓ）には、プリンタ３０で印刷が正常に終了したことを意味しているので、ユーザにプリンタ３０で印刷が完了した旨を通知する（ステップＳ３１３２）。一方、受信した印刷結果情報が印刷完了通知でない場合（ステップＳ３１３０：Ｎｏ）には、その印刷結果情報が解読不能通知であるかどうかを判断する（ステップＳ３１３４）。
印刷結果情報が解読不能通知である場合（ステップＳ３１３４：Ｙｅｓ）には、ユーザに、プリンタ３０で印刷送信用データＤ１０の復号ができなかったため、印刷が行われなかった旨を通知する（ステップＳ３１３６）。一方、印刷結果情報が解読不能通知でない場合（ステップＳ３１３４：Ｎｏ）には、その他の何らかのエラーであると考えられるので、ユーザに、そのエラーの種類に応じた通知を行う（ステップＳ３１３８）。
これらステップＳ３１３２、ステップＳ３１３６、及び、ステップＳ３１３８の通知の後、印刷クライアント２０は、ステップＳ３１１２でＲＡＭ６６に格納した公開鍵と乱数を削除する（ステップＳ３１４０）。このステップＳ３１４０の処理は、必ずしも必要な処理ではないが、公開鍵と乱数の秘密性を向上させるために、本実施形態においては、１つの印刷ジョブの処理が終了する度に、取得した公開鍵と乱数とを削除して破棄することとしている。これにより、この印刷クライアント２０における印刷要求処理は終了する。
次に、図４１乃至図４３に基づいて、印刷クライアント２０、２２の印刷要求処理に対応して、プリンタ３０、３２で実行される印刷実行処理について説明する。この図４１乃至図４３は、プリンタ３０、３２で実行される印刷実行処理を説明するフローチャートである。この印刷実行処理は、プリンタのＲＯＭ４４又はハードディスク５８に格納されている印刷実行プログラムをＣＰＵ４０が読み込んで実行することにより実現される処理である。また、この印刷実行処理は、所定の時間間隔で定常的に実行されている処理である。
ここでも上述と同様に、印刷クライアント２０からプリンタ３０に印刷が要求された場合を想定して説明する。
図４１に示すように、まず、プリンタ３０は、印刷クライアント２０から、ネットワーク１０を介して接続要求を受信したかどうかを判断する（ステップＳ３２００）。印刷クライアント２０から接続要求を受信していない場合（ステップＳ３２００：Ｎｏ）には、このステップＳ３２００の処理を繰り返して待機する。そして、上述したように、ＳＳＬ通信等によりセキュリティを確保した上で、プリンタ３０と印刷クライアント２０との間のコネクションを確立する（ステップＳ３２０２）。
次に、プリンタ３０は、印刷クライアント２０から認証情報を受信したかどうかを判断する（ステップＳ３２０４）。認証情報を受信していない場合（ステップＳ３２０４：Ｎｏ）には、このステップＳ３２０４の処理を繰り返して待機する。
一方、認証情報を印刷クライアント２０から受信した場合（ステップＳ３２０４：Ｙｅｓ）には、その認証情報がこのプリンタ３０に予め登録してある認証情報と一致するかどうかを判断する（ステップＳ３２０６）。具体的には、上述したように、印刷クライアント２０から印刷クライアントＩＤとパスワードが認証情報として送信されてくるので、この印刷クライアントＩＤとパスワードが、予めプリンタ３０のハードディスク５８等に登録されている印刷クライアントＩＤとパスワードと一致するかどうかを判断する。
認証情報が一致しなかった場合（ステップＳ３２０６：Ｎｏ）には、プリンタ３０は印刷クライアント２０に、認証が受け入れられなかった旨の認証結果を送信し（ステップＳ３２０８）、ステップＳ３２０４の処理に戻る。一方、認証が一致した場合（ステップＳ３２０６：Ｙｅｓ）には、プリンタ３０は印刷クライアント２０に、認証が受け入れられた旨の認証結果を送信する（ステップＳ３２１０）。
次に、プリンタ３０は、印刷クライアント２０から公開鍵取得要求を受信したかどうかを判断する（ステップＳ３２１２）。この公開鍵取得要求を受信していない場合（ステップＳ３２１２：Ｎｏ）には、このステップＳ３２１２の処理を繰り返して待機する。
一方、印刷クライアント２０から公開鍵取得要求を受信した場合（ステップＳ３２１２：Ｙｅｓ）には、プリンタ３０は、このプリンタ３０の機器固有情報を取得する（ステップＳ３２１４）。ここで、機器固有情報とは、このプリンタ３０に関して、固有に割り当てられている識別情報であり、例えば、プリンタ３０の製造シリアルナンバー、ＭＡＣアドレス等がある。
次に、図４２に示すように、プリンタ３０は、位置検出部５４から、その時点におけるプリンタ３０のプリンタ位置情報を取得する（ステップＳ３２２０）。このようにプリンタ位置情報をその都度、位置検出部５４から取得することとしているのは、プリンタ３０が別の場所に移動された場合には、その移動後の位置情報を用いて公開鍵を生成するようにするためである。
次に、プリンタ３０は、機器固有情報とプリンタ位置情報とを用いてパスフレーズを作成する（ステップＳ３２２２）。このパスフレーズの作成手法は種々のものが考えられるが、本実施形態においては、単純に機器固有情報の後ろにプリンタ位置情報をつなげることにより、パスフレーズを作成する。なお、パスフレーズは、これら機器固有情報及びプリンタ位置情報以外のデータを含んでいてもよい。
次に、プリンタ３０は、乱数を１つ生成する（ステップＳ３２２４）。続いて、プリンタ３０は、ステップＳ３２２２で作成したパスフレーズと、ステップＳ３２２４で生成した乱数とを用いて、公開鍵暗号法により、公開鍵と秘密鍵とを生成する（ステップＳ３２２６）。公開鍵暗号法では、使用するパスフレーズと乱数とが同じであれば、再び、公開鍵と秘密鍵とを生成しても、同じものが生成されるという性質を有している。続いて、プリンタ３０は、公開鍵と、この公開鍵を生成する際に使用した乱数とを印刷クライアント２０に送信する（ステップＳ３２２８）。なお、公開鍵と乱数とを印刷クライアント２０に送信した後に、これら秘密鍵と乱数は保存されることなく破棄される。
次に、プリンタ３０は、印刷クライアント２０との間のコネクションを解放する（ステップＳ３２３０）。この処理は、上述した印刷要求処理のステップＳ３１１４に対応する処理である。また、上述したように、このステップＳ３２３０の処理は、必ずしも必要な処理ではない。
次に、プリンタ３０は、印刷送信用データＤ１０をネットワーク１０から受信したかどうかを判断する（ステップＳ３２３２）。何ら印刷送信用データＤ１０を受信していない場合（ステップＳ３２３２：Ｎｏ）には、このステップＳ３２３２の処理を繰り返して待機する。一方、印刷送信用データＤ１０を受信した場合（ステップＳ３２３２：Ｙｅｓ）には、プリンタ３０は自らの機器固有情報を取得する（ステップＳ３２３４）。
次に、図４３に示すように、プリンタ３０は、位置検出部５４から、その時点におけるプリンタ３０のプリンタ位置情報を取得する（ステップＳ３２４０）。このようにプリンタ位置情報を、その都度、位置検出部５４から取得することとしているのは、プリンタ３０が別の場所に移動された場合には、その移動後の位置情報を用いて秘密鍵を生成するようにするためである。
次に、プリンタ３０は、機器固有情報とプリンタ位置情報とに基づいて、パスフレーズを作成する（ステップＳ３２４２）。このパスフレーズの作成手法は、上述したステップＳ３２２２と同じ手法である必要がある。なぜなら、パスフレーズが異なると、印刷クライアントに送信した公開鍵で暗号化された印刷送信用データＤ１０を、秘密鍵で復号できなくなってしまうからである。
次に、プリンタ３０は、受信した印刷送信用データＤ１０に含まれている乱数を取得する（ステップＳ３２４４）。続いて、プリンタ３０は、生成したパスフレーズと取得した乱数とを用いて、公開鍵暗号法により公開鍵と秘密鍵とを生成する（ステップＳ３２４６）。このステップＳ３２４６で使用するパスフレーズは、その間にプリンタ３０の設置位置が移動されていなければ、上述したステップＳ３２２６で使用したパスフレーズと同じである。また、乱数についても、正当な印刷クライアント２０から送信された印刷送信用データＤ１０であれば、上述したステップＳ３２２６と同じになるはずである。このため、このステップＳ３２４６では、ステップＳ３２２６で生成したものと同じ公開鍵と秘密鍵が生成される。続いて、プリンタ３０は、生成された秘密鍵を用いて、受信した印刷送信用データＤ１０に含まれている暗号化印刷ジョブデータを復号する（ステップＳ３２４８）。
次に、プリンタ３０は、秘密鍵を用いて暗号化印刷ジョブデータの復号ができたかどうかを判断する（ステップＳ３２５０）。復号ができた場合（ステップＳ３２５０：Ｙｅｓ）には、暗号化印刷ジョブデータを復号することにより得られた印刷ジョブデータＤ０５に基づいて、印刷エンジン５２を駆動した印刷を実行する（ステップＳ３２５２）。具体的には、印刷ジョブデータＤ０５の言語解釈を行い、印刷エンジン５２に適合した印刷要求データを生成する。そして、この印刷要求データを印刷エンジン５２に送信することにより、印刷エンジン５２で印刷用紙等に印刷が行われる。
このことから分かるように、本実施形態においては、位置検出部５４で検出したプリンタ位置情報を少なくとも含むパスフレーズと、印刷送信用データＤ１０に含まれている乱数とを用いて秘密鍵を生成し、この秘密鍵で暗号化印刷ジョブデータが復号できた場合には、暗号化印刷ジョブデータがプリンタ位置情報と合致したと判断することとなる。
この印刷が正常に完了した時点で、プリンタ３０は、印刷が正常に終了した旨の印刷完了通知を、印刷結果情報として、印刷クライアント２０に送信する（ステップＳ３２５４）。
これに対して、ステップＳ３２５０において、暗号化印刷ジョブデータの復号ができなかったと判断した場合（ステップＳ３２５０：Ｎｏ）には、解読不能通知を印刷結果情報として、印刷クライアント２０に送信する（ステップＳ３２５６）。すなわち、本実施形態においては、位置検出部５４で検出したプリンタ位置情報を少なくとも含むパスフレーズと、印刷送信用データＤ１０に含まれている乱数とを用いて秘密鍵を生成し、この秘密鍵で暗号化印刷ジョブデータが復号できなかった場合には、暗号化印刷ジョブデータがプリンタ位置情報と合致しなかった判断することとなる。
これらステップＳ３２５４又はステップＳ３２５６の処理の後、プリンタ３０は、上述した図４１のステップＳ３２００の処理に戻る。
以上のように、本実施形態に係る印刷システムによれば、プリンタ３０、３２は、公開鍵暗号法により、印刷ジョブ毎に異なる乱数を用いて公開鍵と秘密鍵を生成し、印刷クライアント２０、２２に公開鍵と乱数を送信することとしたので、公開鍵、秘密鍵、及び、乱数のセキュリティを高めることができる。
しかも、公開鍵と、この公開鍵を生成する際に使用した乱数とを印刷クライアント２０に送信し、プリンタ３０側では秘密鍵と乱数を破棄することとしたので、秘密鍵のセキュリティも高めることができる。また、印刷クライアント２０、２２が乱数を一時的に保持しておき、暗号化印刷ジョブデータとともにプリンタ３０、３２にこの乱数をプリンタ３０、３２に送り返すこととした。このため、この公開鍵を用いて暗号化された暗号化印刷ジョブデータをプリンタ３０、３２が復号する際には、暗号化印刷ジョブデータとともに送信された乱数を用いて、再び、公開鍵暗号法により、同じ秘密鍵を生成することができ、暗号化印刷ジョブデータを復号することができる。
さらに、プリンタ３０、３２においては、この秘密鍵で暗号化印刷ジョブデータが復号できなかった場合には、受信した暗号化印刷ジョブデータの印刷を実行しないようにしたので、不正な意図を有する第三者が、このプリンタ３０、３２で印刷を実行するのを回避することができる。
なお本発明は上記実施形態に限定されずに種々に変形可能である。例えば、上述した実施形態においては、公開鍵及び秘密鍵を生成する際に用いる「所定の数」が乱数である場合を例に説明したが、この所定の数は乱数に限るものではない。例えば、そのプリンタでの第１回目の公開鍵及び秘密鍵の生成の場合には、所定の数を「１」とし、第２回目の公開鍵及び秘密鍵の生成の場合には、所定の数を「２」とし、第３回目の公開鍵及び秘密鍵の生成の場合には、所定の数を「３」とするように、所定の数に昇順の自然数を用いるようにしてもよい。
また、所定の数に、昇順の偶数を用いるようにしてもよいし、昇順の奇数を用いるようにしてもよい。換言すれば、所定のアルゴリズムを用いて、所定の数を生成するようにしてもよい。
また、図４４乃至図４６に示すように、プリンタ３０、３２から印刷クライアント２０、２２に所定の数を送信する代わりに、所定の数を導出する際に用いたアルゴリズム（例えば、昇順の偶数）と、そのアルゴリズムを用いて所定の数を導出するのに必要な付加情報（例えば、第１回目）を送信するようにしてもよい。
この場合、図４４に示すように、印刷クライアント２０、２２は、印刷を要求する際には、所定の数そのものをプリンタ３０、３２に送信するようにしてもよい。この場合、印刷クライアント２０、２２は、プリンタ３０、３２から受信したアルゴリズムを特定する情報と、必要な付加情報とを保持していてもよいし、或いは、所定の数を生成して所定の数を保持するようにしてもよい。
また、図４５に示すように、印刷クライアント２０、２２は、印刷を要求する際に、アルゴリズムと付加情報とをプリンタ３０、３２に送信するようにしてもよい。この場合、印刷クライアント２０、２２は、アルゴリズムを特定する情報と、必要な付加情報とを保持することとなる。
さらに、図４６に示すように、印刷クライアント２０、２２は、印刷を要求する際に、アルゴリズムを送信せずに、付加情報だけをプリンタ３０、３２に送信するようにしてもよい。なぜなら、公開鍵及び秘密鍵を生成する際に用いるアルゴリズムは、プリンタ３０、３２において固定的に定まっている場合もあるからである。
上述した実施形態においては、セキュリティを確保すべきデータを送信するデータ送信装置として印刷クライアントを例示し、そのデータを受信するデータ受信装置としてプリンタを例示して、本発明を説明したが、データ送受信システムにおけるデータ送信装置とデータ受信装置の組み合わせは、上記実施形態に限定されるものではない。
例えば、データ送受信システムにおけるデータ送信装置が画像撮影用のデジタルカメラであり、データ受信装置がデジタルカメラで撮影した画像データを蓄積するデータサーバであってもよい。この場合、デジタルカメラから送信されるデータはデータサーバから受信した公開鍵を用いて暗号化されており、このデータを受信したデータサーバでは、上述した手法により秘密鍵を生成し、このデータの復号を行うこととなる。そして、受信したデータの復号ができた場合には、そのデータを蓄積し、復号できなかった場合には、そのデータを蓄積しないこととなる。
また、データ送受信システムにおけるデータ送信装置がパーソナルコンピュータであり、データ受信装置がそのパーソナルコンピュータから送信された画像データを投影するプロジェクタであってもよい。この場合、パーソナルコンピュータから送信されるデータはプロジェクタから受信した公開鍵を用いて暗号化されており、このデータを受信したプロジェクタでは、上述した手法により秘密鍵を生成し、このデータの復号を行うこととなる。そして、受信したデータの復号ができた場合には、そのデータを投影し、復号できなかった場合には、そのデータを投影しないこととなる。
さらには、データ送受信システムにおけるデータ送信装置が音楽等のコンテンツサーバであり、データ受信装置がコンテンツサーバから送信された音楽等のコンテンツデータの再生装置であってもよい。この場合、コンテンツサーバから送信されるデータは再生装置から受信した公開鍵を用いて暗号化されており、このデータを受信した再生装置では、上述した手法により秘密鍵を生成し、このデータの復号を行うこととなる。そして、受信したデータの復号ができた場合には、そのデータを再生し、復号できなかった場合には、そのデータを再生しないこととなる。
また、上述した実施形態では、プリンタ３０、３２の印刷媒体が印刷用紙である場合を例に説明したが、印刷媒体はこれに限るものではなく、例えば、ＯＨＰシート等の他の印刷媒体であっても本発明を適用することができる。
さらに、上述の実施形態で説明した各処理については、これら各処理を実行するためのプログラムをフレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＯＭ、メモリカード等の記録媒体に記録して、記録媒体の形で頒布することが可能である。この場合、このプログラムが記録された記録媒体を印刷クライアント２０、２２及び／又はプリンタ３０、３２に読み込ませ、実行させることにより、上述した実施形態を実現することができる。
また、印刷クライアント２０、２２及び／又はプリンタ３０、３２は、オペレーティングシステムや別のアプリケーションプログラム等の他のプログラムを備える場合がある。この場合、印刷クライアント２０、２２及び／又はプリンタ３０、３２の備える他のプログラムを活用し、記録媒体には印刷クライアント２０、２２及び／又はプリンタ３０、３２が備えるプログラムの中から、上述した実施形態と同等の処理を実現するプログラムを呼び出すような命令を記録するようにしてもよい。
さらに、このようなプログラムは、記録媒体の形ではなく、ネットワークを通じて搬送波として頒布することも可能である。ネットワーク上を搬送波の形で伝送されたプログラムは、印刷クライアント２０、２２及び／又はプリンタ３０、３２に取り込まれて、このプログラムを実行することにより上述した実施形態を実現することができる。
また、記録媒体にプログラムを記録する際や、ネットワーク上を搬送波として伝送される際に、プログラムの暗号化や圧縮化がなされている場合がある。この場合には、これら記録媒体や搬送波からプログラムを読み込んだ印刷クライアント２０、２２及び／又はプリンタ３０、３２は、そのプログラムの復号や伸張を行った上で、実行する必要がある。
【図１】
2004022350.tif 000003
【図２】
2004022350.tif 000004
【図３】
2004022350.tif 000005
【図４】
2004022350.tif 000006
【図５】
2004022350.tif 000007
【図６】
2004022350.tif 000008
【図７】
2004022350.tif 000009
【図８】
2004022350.tif 000010
【図９】
2004022350.tif 000011
【図１０】
2004022350.tif 000012
【図１１】
2004022350.tif 000013
【図１２】
2004022350.tif 000014
【図１３】
2004022350.tif 000015
【図１４】
2004022350.tif 000016
【図１５】
2004022350.tif 000017
【図１６】
2004022350.tif 000018
【図１７】
2004022350.tif 000019
【図１８】
2004022350.tif 000020
【図１９】
2004022350.tif 000021
【図２０】
2004022350.tif 000022
【図２１】
2004022350.tif 000023
【図２２】
2004022350.tif 000024
【図２３】
2004022350.tif 000025
【図２４】
2004022350.tif 000026
【図２５】
2004022350.tif 000027
【図２６】
2004022350.tif 000028
【図２７】
2004022350.tif 000029
【図２８】
2004022350.tif 000030
【図２９】
2004022350.tif 000031
【図３０】
2004022350.tif 000032
【図３１】
2004022350.tif 000033
【図３２】
2004022350.tif 000034
【図３３】
2004022350.tif 000035
【図３４】
2004022350.tif 000036
【図３５】
2004022350.tif 000037
【図３６】
2004022350.tif 000038
【図３７】
2004022350.tif 000039
【図３８】
2004022350.tif 000040
【図３９】
2004022350.tif 000041
【図４０】
2004022350.tif 000042
【図４１】
2004022350.tif 000043
【図４２】
2004022350.tif 000044
【図４３】
2004022350.tif 000045
【図４４】
2004022350.tif 000046
【図４５】
2004022350.tif 000047
【図４６】
2004022350.tif 000048
【国際調査報告】
2004022350.tif 000049
2004022350.tif 000050