IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ブラザー工業株式会社の特許一覧

特開2023-155012デバイス、および、コンピュータプログラム
<>
  • 特開-デバイス、および、コンピュータプログラム 図1
  • 特開-デバイス、および、コンピュータプログラム 図2
  • 特開-デバイス、および、コンピュータプログラム 図3
  • 特開-デバイス、および、コンピュータプログラム 図4
  • 特開-デバイス、および、コンピュータプログラム 図5
  • 特開-デバイス、および、コンピュータプログラム 図6
  • 特開-デバイス、および、コンピュータプログラム 図7
  • 特開-デバイス、および、コンピュータプログラム 図8
  • 特開-デバイス、および、コンピュータプログラム 図9
  • 特開-デバイス、および、コンピュータプログラム 図10
  • 特開-デバイス、および、コンピュータプログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023155012
(43)【公開日】2023-10-20
(54)【発明の名称】デバイス、および、コンピュータプログラム
(51)【国際特許分類】
   G06F 21/44 20130101AFI20231013BHJP
   H04L 67/562 20220101ALI20231013BHJP
   H04N 1/00 20060101ALI20231013BHJP
   B41J 29/00 20060101ALI20231013BHJP
   B41J 29/38 20060101ALI20231013BHJP
【FI】
G06F21/44
H04L67/562
H04N1/00 127A
H04N1/00 838
B41J29/00 Z
B41J29/38 401
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022064709
(22)【出願日】2022-04-08
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】森 匡平
【テーマコード(参考)】
2C061
5C062
【Fターム(参考)】
2C061AP01
2C061AQ05
2C061AQ06
2C061CL10
2C061HJ08
2C061HK05
2C061HK11
2C061HN15
2C061HQ17
5C062AA05
5C062AB38
5C062AC38
5C062AF02
5C062AF12
5C062AF14
(57)【要約】
【課題】デバイスを含むシステムのセキュリティと利便性とを両立する。
【解決手段】デバイスは、識別情報と接続情報とを対応付けて記憶する仲介サーバから、自身を示すデバイス識別情報と対応付けられた接続情報を受信する情報受信部と、接続情報を用いて対象サーバに接続する接続部と、対象サーバと接続後に処理を実行する通信処理部と、を備える。通信処理部は、対象サーバから認証情報を受信し、認証情報が真正であるか否かを検証し、認証情報が真正であり、かつ、特定条件が満たされる場合に、認証情報の更新処理を実行せずに、認証後処理を実行し、認証情報が真正であり、かつ、特定条件が満たされない場合に、認証情報の更新処理と、認証後処理と、を実行する。
【選択図】 図6
【特許請求の範囲】
【請求項1】
デバイスであって、
前記デバイスを示すデバイス識別情報と、接続情報と、を対応付けて記憶する仲介サーバから、自身を示す前記デバイス識別情報と対応付けられた前記接続情報を受信する情報受信部であって、前記接続情報は、前記デバイス識別情報と対応付けられた認証情報を記憶する対象サーバに接続するための情報である、前記情報受信部と、
前記接続情報を用いて、前記対象サーバに接続する接続部と、
前記対象サーバと接続後に、前記対象サーバとの通信を含む処理を実行する通信処理部と、
を備え、
前記通信処理部は、
前記対象サーバから前記認証情報を受信し、
前記認証情報が真正であるか否かを検証し、
前記認証情報が真正であり、かつ、特定条件が満たされる場合に、前記認証情報の更新処理を実行せずに、認証後処理を実行し、
前記認証情報が真正であり、かつ、特定条件が満たされない場合に、前記認証情報の更新処理と、前記認証後処理と、を実行する、デバイス。
【請求項2】
請求項1に記載のデバイスであって、
前記特定条件は、前記対象サーバが特定のサーバであることである、デバイス。
【請求項3】
請求項2に記載のデバイスであって、
前記接続情報は、前記対象サーバの所在を示す所在情報を含み、
前記特定条件は、前記所在情報が、前記特定の対象サーバの所在を示す特定所在情報であることを含む、デバイス。
【請求項4】
請求項3に記載のデバイスであって、
前記対象サーバは、第1の対象サーバと第2の対象サーバとを含み、
前記通信処理部は、
前記第1の対象サーバとの接続時に、前記第1の対象サーバから前記第2の対象サーバの所在情報を前記特定所在情報として受信し、
前記第2の対象サーバとの接続時に、前記特定所在情報に基づいて、前記特定条件が満たされるか否かを判断する、デバイス。
【請求項5】
請求項1に記載のデバイスであって、
前記認証情報は、前記デバイスの所有者の変更に応じて増加する1以上の特定情報を含み、
前記特定条件は、前記認証情報に含まれる前記特定情報の個数が所定数以下であることを含む、デバイス。
【請求項6】
請求項1に記載のデバイスであって、
前記通信処理部は、前記特定条件が満たされない場合に、前記認証情報を更新すべきことを示す情報を前記対象サーバに送信する、デバイス。
【請求項7】
請求項6に記載のデバイスであって、
前記通信処理部は、
前記特定条件が満たされる場合に、前記対象サーバから前記認証情報を更新しないことを示す情報を受信することに応じて、前記認証情報を更新しないことを認める情報を前記対象サーバに送信し、
前記特定条件が満たされない場合に、前記対象サーバから前記認証情報を更新しないことを示す情報を受信することに応じて、前記認証情報を更新すべきことを示す情報を前記対象サーバに送信する、デバイス。
【請求項8】
請求項7に記載のデバイスであって、さらに、
前記認証情報を更新しないことを認める情報は、nullを示す値であり、
前記認証情報を更新すべきことを示す情報は、特定のエラーを示す情報である、デバイス。
【請求項9】
請求項7または8に記載のデバイスであって、
前記通信処理部は、前記特定条件が満たされない場合に、前記認証情報を更新すべきことを示す情報を前記対象サーバに送信した後に、前記対象サーバから前記認証情報の一部を構成すべき第1情報を受信することに応じて、前記第1情報を用いて生成される第2情報を前記対象サーバに送信することによって、更新前の前記認証情報を、前記第1情報と前記第2情報とを含む前記認証情報に更新する、デバイス。
【請求項10】
デバイスを制御するためのコンピュータプログラムであって、
前記デバイスを示すデバイス識別情報と、接続情報と、を対応付けて記憶する仲介サーバから、自身を示す前記デバイス識別情報と対応付けられた前記接続情報を受信する情報受信機能であって、前記接続情報は、前記デバイス識別情報と対応付けられた認証情報を記憶する対象サーバに接続するための情報である、前記情報受信機能と、
前記接続情報を用いて、前記対象サーバに接続する接続機能と、
前記対象サーバと接続後に、前記対象サーバとの通信を含む処理を実行する通信処理機能と、
をコンピュータに実現させ、
前記通信処理機能は、
前記対象サーバから前記認証情報を受信し、
前記認証情報が真正であるか否かを検証し、
前記認証情報が真正であり、かつ、特定条件が満たされる場合に、前記認証情報の更新処理を実行せずに、認証後処理を実行し、
前記認証情報が真正であり、かつ、特定条件が満たされない場合に、前記認証情報の更新処理と、前記認証後処理と、を実行する、コンピュータプログラム。

【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、サーバに接続されるデバイス、および、コンピュータプログラムに関する。
【背景技術】
【0002】
特許文献1に開示されたシステムでは、複合機(MFP)は、接続先提供サーバにアクセスして、アプリケーションを記憶するサーバのURLを受信する。複合機は、受信したURLを用いて、サーバにアクセスして、アプリケーションをダウンロードする。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】国際公開第2017/150472号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記技術では、複合機とサーバとの間で行われる認証の仕組みについて十分な工夫がなされているとは言えなかった。この結果、複合機を含むシステムのセキュリティや利便性について問題が生じる可能性があった。
【0005】
本明細書は、デバイスを含むシステムのセキュリティと利便性とを両立し得る技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]デバイスであって、
前記デバイスを示すデバイス識別情報と、接続情報と、を対応付けて記憶する仲介サーバから、自身を示す前記デバイス識別情報と対応付けられた前記接続情報を受信する情報受信部であって、前記接続情報は、前記デバイス識別情報と対応付けられた認証情報を記憶する対象サーバに接続するための情報である、前記情報受信部と、前記接続情報を用いて、前記対象サーバに接続する接続部と、前記対象サーバと接続後に、前記対象サーバとの通信を含む処理を実行する通信処理部と、を備え、前記通信処理部は、前記対象サーバから前記認証情報を受信し、前記認証情報が真正であるか否かを検証し、前記認証情報が真正であり、かつ、特定条件が満たされる場合に、前記認証情報の更新処理を実行せずに、認証後処理を実行し、前記認証情報が真正であり、かつ、特定条件が満たされない場合に、前記認証情報の更新処理と、前記認証後処理と、を実行する、デバイス。
【0008】
認証情報の更新処理が実行されない場合には、その後に、同一の認証情報を他の対象サーバが使用できる。このために、認証情報の更新処理を常に実行しない場合には、デバイスを含むシステムのセキュリティが低下する場合がある。認証情報の更新処理が実行される場合には、その後に、同一の認証情報を他の対象サーバが使用できない。このために、認証情報の更新処理を常に実行する場合には、システムの利便性が低下する場合がある。本実施例では、特定条件が満たされる場合に、認証情報の更新処理が実行されず、特定条件が満たされない場合に、認証情報の更新処理が実行される。この結果、デバイスを含むシステムのセキュリティと利便性とを両立し得る。
【0009】
なお、本明細書に開示された技術は、種々の形態で実現可能であり、例えば、対象サーバとデバイスとを含むシステム、デバイスまたはシステムにおける方法、これらの装置および方法の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【図面の簡単な説明】
【0010】
図1】システム1000の構成を示すブロック図。
図2】データベースおよびデータベースに格納される情報の説明図。
図3】プリンタ100が販売会社に納品されるまでのシーケンス図。
図4】プリンタ100がサーバ300A、300Bとサービス処理を実行可能に接続されるまでの第2のシーケンス図。
図5】プリンタ100がサーバ300A、300Bとサービス処理を実行可能に接続されるまでの第1のシーケンス図。
図6】更新関連処理のうち、プリンタ100が実行する処理のフローチャート。
図7】プリンタ100がサーバ300Cとサービス処理を実行可能に接続されるまでの第1のシーケンス図。
図8】プリンタ100がサーバ300Cとサービス処理を実行可能に接続されるまでの第2のシーケンス図。
図9】実施例のバウチャーVCの更新と再利用について説明する図。
図10】比較例1の説明図。
図11】比較例2の説明図。
【発明を実施するための形態】
【0011】
A.第1実施例
A-1.システム1000の構成
図1は、システム1000の構成を示すブロック図である。システム1000は、プリンタ100と、プリンタ100の販売会社が所有する端末装置200と、プリンタを用いるサービスを提供するサーバ300A~300Dと、仲介サーバ400と、を備える。
【0012】
プリンタ100は、プリンタ100のコントローラとして、CPU110と、DRAMなどの揮発性記憶装置120と、ハードディスクやフラッシュメモリなどの不揮発性記憶装置130と、を備えている。また、プリンタ100は、画像を表示する液晶ディスプレイなどの表示部140と、ユーザによる操作を取得するためのボタンやタッチパネルなどの操作部150と、印刷機構170と、通信インタフェース(IF)180と、を備えている。
【0013】
通信IF180は、インターネットITに接続するためのインタフェース、例えば、イーサネット(登録商標)に準拠した有線のインタフェースや、Wi-Fi規格に準拠した無線のインタフェースである。
【0014】
CPU110は、データ処理を行う演算装置(プロセッサ)である。揮発性記憶装置120は、CPU110が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置130には、プリンタ100を制御するためのコンピュータプログラムPGpと、後述するバウチャーヘッダVHと、特定所在情報SIと、が格納されている。
【0015】
コンピュータプログラムPGpは、本実施例では、プリンタ100の製造時に不揮発性記憶装置130に予め格納されて提供される。これに代えて、コンピュータプログラムPGpは、例えば、インターネットITを介して接続されたサーバからダウンロードされる形態、あるいは、CD-ROMなどに記録された形態で提供され得る。
【0016】
CPU110は、コンピュータプログラムPGpを実行することによって、プリンタ100の制御を実行する。例えば、後述するように、CPU110は、サーバ300A~300Dのいずれかと協働して、ユーザに対して所定のサービス(例えば、後述するセットアップサービスや消耗材管理サービスや印刷サービス)を提供する処理(以下、サービス処理とも呼ぶ)を実行する。また、後述するように、CPU110は、サービス処理に先立って、端末装置200や対象サーバや仲介サーバ400と協働して、後述する事前準備を実行する。
【0017】
特定所在情報SIは、後述する事前準備において用いられる情報である。特定所在情報SIは、対象サーバ(サーバ300A~300D)のうちの特定のサーバの所在情報(IPアドレスやURL)であり、本実施例では、サーバ300A、300Bの所在情報である。特定所在情報SIは、プリンタ100の製造時に工場にて不揮発性記憶装置130に格納される。
【0018】
印刷機構170は、CPU110の制御に従って、印刷を実行する。本実施例の印刷機構170は、複数種類のインク(例えば、シアンとマゼンタとイエロとブラックとの4種類のインク)を色材として用いて、画像を記録媒体に印刷するインクジェット方式の印刷機構である。これに代えて、印刷機構170は、トナーを色材として用いて、画像を記録媒体に印刷する電子写真方式の印刷機構であっても良い。
【0019】
端末装置200は、計算機であり、例えば、パーソナルコンピュータである。変形例では、端末装置200は、スマートフォンやタブレットコンピュータであっても良い。端末装置200は、例えば、プリンタ100をユーザに販売する販売会社B(後述)が所有する計算機である。
【0020】
端末装置200は、コントローラとして、CPU210と、DRAMなどの揮発性記憶装置220と、ハードディスクやフラッシュメモリなどの不揮発性記憶装置230と、を備えている。また、端末装置200は、画像を表示する液晶ディスプレイなどの表示部240と、ユーザによる操作を取得するためのボタンやタッチパネルなどの操作部250と、通信IF280と、を備えている。通信IFは、インターネットITに接続するためのインタフェース、例えば、イーサネット(登録商標)に準拠した有線のインタフェースや、Wi-Fi規格に準拠した無線のインタフェースである。
【0021】
揮発性記憶装置220は、CPU210が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置230には、ブラウザプログラムBPが格納されている。
【0022】
CPU210は、ブラウザプログラムBPを実行することによって、WEBブラウザとして機能する。WEBブラウザとして機能するCPU210は、後述するバウチャーVCをサーバ300A、300Bに登録する処理を実行する。
【0023】
サーバ300A~300Eは、例えば、サービスを提供する事業者が運用する計算機、例えば、クラウドサーバである。例えば、サーバ300A~300Eを運用する事業者は、プリンタ100を製造する事業者や、該事業者とは異なるサードパーティである。サーバ300A~300Eは、それぞれ、互いに異なる2以上の事業者によって運用される2以上のサーバを含み得る。サーバ300A~300Eによって提供されるサービスを、それぞれ、サービスA~サービスDとする。サービスA~サービスDは、例えば、セットアップサービスや消耗材管理サービスや印刷サービスを含む。セットアップサービスは、例えば、ドライバやアプリケーションなどのプログラムをプリンタ100にインストールすることや所定の設定を行うサービスである。消耗材管理サービスは、例えば、インクなどのプリンタ100の消耗材の残量を管理し、消耗材の消耗に応じて該消耗材をユーザに配送するサービスである。印刷サービスは、例えば、ユーザの端末から送信される画像ファイルを用いて印刷ジョブを生成してプリンタ100に送信することによって、プリンタ100に印刷を行わせるサービスである。
【0024】
サーバ300Aは、コントローラとしてのCPU310と、DRAMなどの揮発性記憶装置320と、ハードディスクやフラッシュメモリなどの不揮発性記憶装置330と、通信インタフェース(IF)380と、を備えている。通信IF380は、例えば、イーサネット(登録商標)に準拠した有線のインタフェースである。
【0025】
CPU310は、データ処理を行う演算装置(プロセッサ)である。揮発性記憶装置320は、CPU310が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置330には、コンピュータプログラムPGaと、後述するバウチャーデータベースVDBと、が格納されている。
【0026】
コンピュータプログラムPGaは、例えば、サーバ300Aを運用する事業者によってアップロードされる形態で提供される。サーバ300AのCPU310は、コンピュータプログラムPGaを実行することによって、プリンタ100と協働して、提供すべきサービスを実現するためのサービス処理を実行する。また、CPU310は、サービス処理に先立って、端末装置200やサーバ300Aや仲介サーバ400と協働して、後述する事前準備を実行する。
【0027】
サーバ300B~300Dは、上述したサーバ300Aと同様の構成310~380(図示省略)を備えている。サーバ300B~300Dの構成の説明は省略する。
【0028】
仲介サーバ400は、例えば、所定の事業者(例えば、サービスを提供する事業者やプリンタ100を製造する事業者)が運用する計算機、例えば、クラウドサーバである。仲介サーバ400は、サーバ300Aと同様に、コントローラとしてのCPU410と、揮発性記憶装置420と、通信IF480と、を備えている。揮発性記憶装置420は、CPU410が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置430には、コンピュータプログラムPGbと、後述する接続情報データベースCDBと、が格納されている。
【0029】
コンピュータプログラムPGbは、例えば、仲介サーバ400を運用する事業者によってアップロードされる形態で提供される。仲介サーバ400のCPU410は、コンピュータプログラムPGbを実行することによって、プリンタ100や端末装置200やサーバ300A~300Dや仲介サーバ400と協働して、後述する事前準備を実行する。
【0030】
プリンタ100と、端末装置200と、サーバ300A~300Dと、仲介サーバ400とは、それぞれ、インターネットITに接続されている。このために、これらの装置100~400は、互いに、インターネットITを介して、通信可能である。
【0031】
図2は、データベースおよび該データベースに格納される情報の説明図である。図2(A)には、サーバ300A~300Dの不揮発性記憶装置330に格納されるバウチャーデータベースVDBの一例が示されている。バウチャーデータベースVDBには、1以上のバウチャーVC(例えば、図2(A)のVC1、VC2)が格納されている。
【0032】
図2(B)には、バウチャーVCの一例が図示されている。バウチャーVCは、デバイス(本実施例では、プリンタ100)の所有権を証明するデータである。バウチャーVCは、バウチャーヘッダVHと、1以上のエントリET(例えば、図2(B)のET1、ET2)と、を含む。
【0033】
バウチャーヘッダVHは、GUIDと、仲介サーバ情報RSIと、公開鍵PKmと、HMACと、を含んでいる。GUIDは、プリンタ100を識別する識別子である。仲介サーバ情報RSIは、仲介サーバ400と通信の接続を行うための情報である。仲介サーバ情報RSIは、例えば、仲介サーバ400の所在を示す情報(例えば、IPアドレスやURL(Uniform Resource Locator))と、ポート番号と、接続に用いるプロトコルの情報と、を含む。公開鍵Pkmは、プリンタ100の製造事業者が保有する秘密鍵と対応する公開鍵である。HMAC(hash message authentication code)は、メッセージ認証符号であり、例えば、プリンタ100が保有する秘密鍵(図示省略)とハッシュ関数とデータ(例えば、バウチャーヘッダVHとプリンタ100が保有するシークレット)を用いて計算される。
【0034】
バウチャーヘッダVHは、図1に示すように、プリンタ100の不揮発性記憶装置130にも格納されている。
【0035】
エントリETは、公開鍵Pksと、署名データSDと、を含む。エントリETは、バウチャーVCの受け渡し、すなわち、バウチャーVCの所有者の変更が行われる度に、1つずつ追加される情報である。公開鍵Pksは、受け渡し先が保有する秘密鍵に対応する公開鍵であり、署名データSDは、受け渡し元が保有する秘密鍵を用いて公開鍵Pksを暗号化して得られるデータである。図2(B)のバウチャーVCは、2個のエントリET1、ET2を含んでいる。したがって、図2(B)のバウチャーVCは、2回の受け渡しが行われたことが解る。バウチャーVCに含まれるエントリETとHMACは、後述するオンボーディング処理における認証処理に用いられる。
【0036】
図2(C)には、接続情報データベースCDBの一例が図示されている。接続情報データベースCDBは、1以上の接続情報CIが、GUIDと対応付けて記録されている。図2(C)の例では、接続情報CI1は、GUID「ID1」と対応付けて記録され、接続情報CI2は、GUID「ID2」と対応付けて記録される。各接続情報CIは、対応付けられたGUIDによって識別されるデバイス(例えば、プリンタ100)に送信されるべき情報である。
【0037】
図2(D)は、接続情報CIの一例が図示されている。接続情報CIは、デバイス(例えば、プリンタ100)と協働してサービス処理を実行すべきサーバ(例えば、サーバ300A)と通信の接続を行うための情報である。接続情報CIは、例えば、仲介サーバ400の所在を示す情報(例えば、IPアドレスやURL(Uniform Resource Locator))と、ポート番号と、接続に用いるプロトコルの情報と、を含む。
【0038】
A-2.プリンタ100の製造からサービスの事前準備までの工程
以下では、プリンタ100の製造からサービスの事前準備までの工程について説明する。本実施例では、プリンタ100は、製造事業者によって製造され、販売会社Aを経由して、販売会社Bに納品される。その後、プリンタ100は、販売会社BからユーザAに納品され、サービスA、Bを提供するサーバ300A、300Bとサービス処理を実行可能に接続される。
【0039】
図3は、プリンタ100が製造事業者から販売会社Aを経由して、販売会社Bに納品されるまでのシーケンス図である。
【0040】
S2では、プリンタ100の製造工程において、プリンタ100にバウチャーヘッダVHが格納される。バウチャーヘッダVHの格納は、例えば、FIDO Allianceによって公開されている標準仕様である「FIDO Device Onboarding (FDO) Specification」(以下、FDO仕様書とも呼ぶ)に規定されたDI(Device Initialize Protocol)に従って実行される。これによって、図2(B)のバウチャーVCのうちのバウチャーヘッダVHが生成されて、プリンタ100の不揮発性記憶装置130に格納される。
【0041】
S4~S10では、製造事業者から販売会社AにバウチャーVCaとプリンタ100とが受け渡される。S4では、製造事業者は、販売会社Aから公開鍵PKs1を受け取る。例えば、販売会社Aは、秘密鍵と公開鍵PKs1とのキーペアを準備し、プリンタ100を発注する際に、販売会社Aの計算機(図示省略)から製造事業者の計算機(図示省略)に公開鍵PKs1を送信する。S6では、製造事業者は、計算機を用いてバウチャー延長処理を実行する。例えば、製造事業者の計算機は、販売会社Aから受け取った公開鍵PKs1と、該公開鍵PKs1を製造事業者の秘密鍵を用いて暗号化して得られる署名データSD1と、を含むエントリET1(図2(B))を生成する。製造事業者の秘密鍵は、S2にて生成されるバウチャーヘッダVHに含まれる公開鍵PKm(図2(B))に対応する秘密鍵である。S8では、製造事業者の計算機は、バウチャーヘッダVHと、1個のエントリET1と、を含むバウチャーVCaを、販売会社Aの計算機に送信する。S10では、製造事業者から販売会社Aにプリンタ100が納品される。
【0042】
S12~S20では、販売会社Aから販売会社BにバウチャーVCaとプリンタ100とが受け渡される。S12では、販売会社Aは、販売会社Bから公開鍵PKs2を受け取る。例えば、販売会社Bは、秘密鍵と公開鍵PKs2とのキーペアを準備し、プリンタ100を発注する際に、販売会社Bの端末装置200から販売会社Aの計算機に公開鍵PKs2を送信する。S14では、販売会社Aは、計算機を用いてバウチャー延長処理を実行する。例えば、販売会社Aの計算機は、販売会社Bから受け取った公開鍵PKs2と、該公開鍵PKs2を販売会社Aの秘密鍵を用いて暗号化して得られる署名データSD2と、を含むエントリET2(図2(B))を生成する。製造事業者の秘密鍵は、S4にて製造事業者に送信された販売会社Aの公開鍵PKs1に対応する秘密鍵である。S18では、販売会社Aの計算機は、製造事業者から受け取ったバウチャーVCaにエントリET2を追加したバウチャーVCaを、販売会社Bの端末装置200に送信する。S20では、販売会社Aから販売会社Bにプリンタ100が納品される。
【0043】
このように、販売会社Aが製造事業者から受け取るバウチャーVCaに含まれるエントリETの個数(エントリ数とも呼ぶ)enは、1である。販売会社Bが販売会社Aから受け取るバウチャーVCaのエントリ数enは、2である。
【0044】
図4図5は、プリンタ100が販売会社BからユーザAに納品され、サーバ300A、300Bとサービス処理を実行可能に接続されるまでのシーケンス図である。
【0045】
S22にて、ユーザAがプリンタ100を注文すると、S24にて、販売会社Bは、注文されたプリンタ100を発送する。プリンタ100の注文時には、販売会社BとユーザAとの間にて、サービスAとサービスBの利用契約が結ばれたものとする。
【0046】
販売会社Bは、プリンタ100を発送すると、プリンタ100がユーザAに到着するよりも前に、S26とS30を実行する。
【0047】
S26では、販売会社Bは、利用するサービスAを提供するサーバ300AにバウチャーVCaを登録する。具体的には、販売会社の担当者は、端末装置200を操作して、サーバ300Aが提供するWEBページにアクセスして、所定の操作を行う。これによって、端末装置200は、サーバ300AにバウチャーVCaを送信する。サーバ300Aは、受信したバウチャーVCaをバウチャーデータベースVDBに格納する(図2)。
【0048】
S30では、販売会社Bは、利用するサービスBを提供するサーバ300BにバウチャーVCaを登録する。例えば、S26と同様に、端末装置200は、サーバ300BにバウチャーVCaを送信し、サーバ300Bは、受信したバウチャーVCaをバウチャーデータベースVDBに格納する(図2)。ここで、利用するサービスを提供するサーバを対象サーバとも呼ぶ。図4の例では、サービスA、Bを提供するサーバ300A、300B(図1)が対象サーバである。
【0049】
なお、本実施例では、バウチャーVCaが対象サーバに登録される際に、バウチャーVCaの延長処理は実行されないので、バウチャーVCaのエントリ数enは増加しない。変形例では、バウチャーVCaが対象サーバに登録される際に、バウチャーVCaの延長処理が実行されても良い。例えば、サーバ300Aは、秘密鍵と公開鍵とのキーペアを保有しており、端末装置200に公開鍵を送信する。端末装置200は、該公開鍵と、該公開鍵を販売会社の秘密鍵(公開鍵PKs2に対応する秘密鍵)を用いて暗号化して得られる署名データと、を含むエントリを生成する。端末装置200は、販売会社Aから受信したバウチャーVCaにエントリを1つ追加したバウチャーVCaをサーバ300Aに送信する。この場合には、サーバ300Aに登録されるバウチャーVCaのエントリ数enは3である。
【0050】
また、変形例では、販売会社BからユーザAにバウチャーVCaが受け渡され、ユーザAが、自身の端末装置からサーバ300A、300BにバウチャーVCaを登録しても良い。
【0051】
サーバ300Aは、バウチャーVCaを受信すると、S28にて、仲介サーバ400に接続情報CIaを登録する。接続情報CIaは、サーバ300Aに接続するための接続情報CI(図2(D))である。接続情報CIaの登録は、FDO仕様書に規定されたTO0(Transfer Ownership Protocol 0)に従って実行される。例えば、サーバ300Aから仲介サーバ400に、接続情報CIaと、受信したバウチャーVCaに含まれるプリンタ100のGUIDと、が送信される。仲介サーバ400は、受信した接続情報CIaをプリンタ100のGUIDと対応付けて接続情報データベースCDB(図1図2(C))に格納する。これによって、接続情報CIaがプリンタ100のGUIDと対応付けて仲介サーバ400に登録される。
【0052】
サーバ300Bは、バウチャーVCaを受信すると、S32にて、仲介サーバ400に接続情報CIbを登録する。接続情報CIbは、サーバ300Bに接続するための接続情報CIである。接続情報CIaの登録は、S28と同様に行われる。これによって、接続情報CIbがプリンタ100のGUIDと対応付けて仲介サーバ400に登録される。
【0053】
ユーザAにプリンタ100が納品されると、ユーザAは、納品されたプリンタ100をインターネットITに接続可能に設置して、S33にて、プリンタ100の電源を投入する。
【0054】
プリンタ100の電源が投入されると、S34にて、プリンタ100と仲介サーバ400との間で接続情報取得処理が実行される。例えば、プリンタ100は、不揮発性記憶装置130に格納されたバウチャーヘッダVH(図1)に含まれる仲介サーバ情報RSIを読み出す。プリンタ100は、仲介サーバ情報RSIを用いて、仲介サーバ400との通信の接続を確立し、接続情報取得処理を実行する。接続情報取得処理は、FDO仕様書に規定されたTO1(Transfer Ownership Protocol 1)に従って実行される。具体的には、プリンタ100は、バウチャーヘッダVHに含まれるGUID、すなわち、自身を識別するGUIDを仲介サーバ400に送信する。仲介サーバ400は、接続情報データベースCDBにおいて、受信したGUIDに対応付けられた接続情報CIa、CIbを1つずつ順次にプリンタ100に送信する。これによって、初回の接続情報取得処理では、プリンタ100は、サーバ300Aに接続するための接続情報CIaを取得する。
【0055】
S35~S46では、プリンタ100とサーバ300Aとの間でオンボーディング処理が実行される。オンボーディング処理は、FDO仕様書に規定されたTO2(Transfer Ownership Protocol 2)に従って実行される。
【0056】
S35では、プリンタ100とサーバ300Aとの間で接続確立処理が実行される。接続確立処理は、例えば、TCP(Transmission Control Protocol)とIP(Internet Protocol)に従って、プリンタ100上で動作するアプリケーションと、サーバ300A上で動作するアプリケーションと、の間の接続を確立する処理である。例えば、プリンタ100は、取得した接続情報CIを不揮発性記憶装置130から読み出し、該接続情報CIを用いて、サーバ300Aに接続要求を送信することによって、接続確立処理を実行する。
【0057】
S36~S38では、認証処理が実行される。例えば、S36では、サーバ300Aは、バウチャーデータベースVDBからプリンタ100のGUIDを含むバウチャーVCaを取得し、プリンタ100に送信する。S37では、プリンタ100は、バウチャーVCaを検証することで、サーバ300Aの正当性を確認する。
【0058】
例えば、プリンタ100は、バウチャーVCaに含まれるエントリET1、ET2を順次に検証する。例えば、プリンタ100は、バウチャーヘッダVHに含まれる公開鍵PKmを用いてエントリET1を検証する。プリンタ100は、検証済みのエントリET1に含まれる公開鍵PKs1を用いてエントリET2を検証する。最後にプリンタ100は、検証済みのエントリET2に含まれる公開鍵PKs2を用いて、サーバ300Aから送信された署名データ(図示省略)が真正であることを検証することで、サーバ300Aの正当性を確認する。
【0059】
プリンタ100は、バウチャーVcが真正であることの検証に成功すると、S38にて、検証に成功したことを示す検証成功通知をサーバ300Aに送信する。なお、プリンタ100は、バウチャーVcの検証に失敗した場合には、オンボーディング処理を中断する(図示省略)。
【0060】
なお、オンボーディング処理の認証処理では、所定のフォーマット(例えば、EAT(Entity Attestation Token)フォーマット)に従うトークンを用いて、サーバ300Aがプリンタ100の正当性を確認する処理も行われるが、当該処理の図示および説明は省略する。サーバ300Aがプリンタ100の正当性を確認できない場合にも、オンボーディング処理は中断される。
【0061】
S40~S44では、プリンタ100とサーバ300Aとの間で、バウチャーVCの更新に関連する処理である更新関連処理が実行される。ここで、S40~S44の説明の前に、バウチャー更新処理について別のフローチャートを参照して説明する。
【0062】
図6は、更新関連処理のうち、プリンタ100が実行する処理のフローチャートである。S120では、プリンタ100は、対象サーバ(例えば、サーバ300A)からバウチャー情報を受信する。
【0063】
バウチャー情報は、バウチャーヘッダVH(図2(B))のうち、HMACを除いた情報、例えば、GUIDと仲介サーバ情報RSIと公開鍵等を含む。ここで、対象サーバから送信されるバウチャー情報は、更新無しのバウチャー情報と、更新されたバウチャー情報と、の2種類が存在する。更新無しのバウチャー情報は、現時点で有効なバウチャーVCに含まれるバウチャー情報である。すなわち、実行中のオンボーディング処理において認証処理に用いられるバウチャーVCに含まれるバウチャー情報である。更新されたバウチャー情報は、現時点で有効なバウチャーVCに含まれるバウチャー情報とは異なるバウチャー情報である。更新されたバウチャー情報は、例えば、対象サーバによって新たに生成されたGUIDや公開鍵を含む。
【0064】
更新無しのバウチャー情報は、バウチャーVCを更新しないこと、すなわち、現在のバウチャーVCを有効なまま維持することをプリンタ100に要求する維持要求である、と言うことができる。更新されたバウチャー情報は、バウチャーVCを更新すること、すなわち、現在のバウチャーVCを無効にして新たなバウチャーVCを生成することをプリンタ100に要求する更新要求である、と言うことができる。バウチャーVCが更新されると、現在のバウチャーVCは、次回以降のオンボーディング処理では、正当なバウチャーVCとは扱われない。バウチャーVCが更新されないと、現在のバウチャーVCは、次回以降のオンボーディング処理でも、正当なバウチャーVCとして扱われる。
【0065】
S125では、プリンタ100は、受信したバウチャー情報が更新要求であるか維持要求であるかを判断する。例えば、プリンタ100は、受信したバウチャー情報が更新されたバウチャー情報であるか更新無しのバウチャー情報であるかを、不揮発性記憶装置130に格納されたバウチャーヘッダVHとの比較に基づいて判断する。
【0066】
受信したバウチャー情報が更新されたバウチャー情報、すなわち、更新要求である場合には(S125:YES)、プリンタ100は、S135にて、新たなHMACを生成して、該HMACを対象サーバに送信する。例えば、新たなHMACは、プリンタ100が保有する秘密鍵(図示省略)と、ハッシュ関数と、受信したバウチャー情報と、プリンタ100が新たに生成したシークレットと、を用いて、が生成される。
【0067】
S150では、プリンタ100は、不揮発性記憶装置130に格納されたバウチャーヘッダVHを更新する。更新後のバウチャーヘッダVHは、S120にて受信されたバウチャー情報と、S135にて生成されたHMACと、を含む。
【0068】
受信したバウチャー情報が更新無しのバウチャー情報、すなわち、維持要求である場合には(S125:NO)、プリンタ100は、S130にて、再利用条件が満たされるか否かを判断する。再利用条件は、バウチャーVCを更新せずに、再利用することを認めるための条件である。第1実施例の再利用条件は、接続先の対象サーバの所在情報(例えば、IPアドレス)が、特定所在情報SIであることである。本実施例では、上述のように、サーバ300Aとサーバ300Bとの所在情報が特定所在情報SIとして、プリンタ100の不揮発性記憶装置130に記録されている(図1)。このために、プリンタ100は、サーバ300Aが対象サーバである場合とサーバ300Bが対象サーバである場合とには、再利用条件が満たされると判断する。プリンタ100は、サーバ300A、300Bとは異なるサーバ(例えば、サーバ300C、300D)が対象サーバである場合には、再利用条件が満たされないと判断する。
【0069】
再利用条件が満たされる場合には(S130:YES)、プリンタ100は、S140にて、バウチャーVCを更新せずに維持することを認めることを示す承認通知を、更新無しのバウチャー情報(維持要求)に対する応答として対象サーバに送信する。承認通知は、本実施例では、nullを示す値である。
【0070】
バウチャーヘッダを更新した場合(S150)と、承認通知を送信した場合(S140)には、プリンタ100は、オンボーディング処理を継続し、後述するサービス準備処理に処理を進める。
【0071】
再利用条件が満たされない場合には(S130:NO)、プリンタ100は、S145にて、バウチャーVCを更新せずに維持することを認めないことを示す更新エラー通知を、更新無しのバウチャー情報(維持要求)に対する応答として対象サーバに送信する。更新エラー通知は、バウチャーVCを更新すべきことを示す情報である、とも言うことができる。
【0072】
更新エラー通知が送信される場合には、プリンタ100は、オンボーディング処理を中断する。この場合には、この時点では、プリンタ100は、サービス準備処理に処理を進めない。
【0073】
図4に戻って説明を続ける。図4のS40では、サーバ300Aからプリンタ100に、更新無しのバウチャー情報、すなわち、上述したバウチャーVCの維持要求が送信される(図6のS120)。本実施例の対象サーバ(サーバ300A~300D)は、最初のオンボーディング処理では、認証処理の後、維持要求(更新無しのバウチャー情報)を送信する仕様になっている。そして、対象サーバは、後述するように、バウチャーVCを更新せずに維持することがプリンタ100に認められない場合には、再度、オンボーディング処理を実行して、更新要求を送信する仕様になっている。
【0074】
プリンタ100は、更新無しのバウチャー情報を受信すると(図6のS120、S125にてYES)、再利用条件が満たされるか否かを判断する(図6のS130)。図4の例では、対象サーバはサーバ300Aであるので、対象サーバの所在情報(例えば、IPアドレス)は、特定所在情報SIに含まれる1つの所在情報と一致する。このために、図4の例では、プリンタ100は、S42にて、再利用条件が満たされると判断し(図6のS130にてYES)、S44にて、承認通知をサーバ300Aに送信する(図6のS140)。
【0075】
図4のS46では、プリンタ100とサーバ300Aとの間でサービス準備処理が実行される。サービス準備処理は、プリンタ100とサーバ300Aとの間でサービス処理を実行するために必要なサービス情報を交換する処理である。サービス情報は、例えば、プリンタ100とサーバ300Aとの間でサービス処理に関する通信を行う際に用いられるトークンや、フォーマット情報や、プロトコル情報を含む。サービス準備処理によって、プリンタ100は、サーバ300Aにオンボードされる。ここで、「プリンタ100が対象サーバにオンボードされる」とは、「プリンタ100が対象サーバと協働してサービス処理を実行することができる状態になる」ことを意味する。
【0076】
プリンタ100は、サーバ300Aとのオンボーディング処理が終了すると、図5のS48にて、仲介サーバ400との間で、再度、接続情報取得処理を実行する。この2回目の接続情報取得処理では、プリンタ100は、サーバ300Bに接続するための接続情報CIbを取得する。
【0077】
図5のS50~64では、プリンタ100とサーバ300Bとの間でオンボーディング処理が実行される。図5のS50~64の処理は、図4のS35~46の処理と同様に実行される。
【0078】
S50では、プリンタ100とサーバ300Bとの間で接続確立処理が実行される。S52では、サーバ300Bは、バウチャーVCaをプリンタ100に送信する。S54では、プリンタ100は、バウチャーVCaを検証することで、サーバ300Bの正当性を確認する。プリンタ100は、バウチャーVcの検証に成功すると、S56にて、検証に成功したことを示す検証成功通知をサーバ300Bに送信する。
【0079】
S58~S62では、プリンタ100とサーバ300Bとの間で更新関連処理が実行される。図5のS58では、サーバ300Bからプリンタ100に、更新無しのバウチャー情報、すなわち、上述したバウチャーVCの維持要求が送信される。図5の例では、対象サーバはサーバ300Bであるので、対象サーバの所在情報(例えば、IPアドレス)は、特定所在情報SIに含まれる所在情報と一致する。このために、図5の例では、プリンタ100は、S60にて、再利用条件が満たされると判断し(図6のS130にてYES)、S62にて、承認通知をサーバ300Bに送信する(図6のS140)。
【0080】
図5のS64では、プリンタ100とサーバ300Bとの間でサービス準備処理が実行される。サービス準備処理によって、プリンタ100はサーバ300Bにオンボードされる。
【0081】
図4図5の処理が実行されることによって、ユーザは、プリンタ100を用いて、サーバ300Aが提供するサービスAと、サーバ300Bが提供するサービスBと、を利用できる。
【0082】
以上説明した手法を用いることによって、例えば、以下の利点がある。上記手法では、ユーザや販売会社は、ユーザが利用することを望むサービスを提供する対象サーバにバウチャーVCを登録する(図4のS26、S30)ことによってサービスの提供を受けることができる。このために、ユーザや販売会社は、ユーザが提供を受けるべきサービスを容易に選択できる。
【0083】
また、プリンタ100は、対象サーバの接続情報CIを仲介サーバ400から取得できる(図4のS34、図5のS48)。このために、プリンタ100の製造工程の段階では、仲介サーバ400に接続するための仲介サーバ情報RSIがプリンタ100(不揮発性記憶装置130)に記憶されていれば良く、対象サーバの接続情報CIがプリンタ100に記憶されている必要がない。また、プリンタ100は、対象サーバと協働してサービス処理を実行するために必要なサービス情報を対象サーバから取得できる(図4のS46、図5のS64)。このために、プリンタ100の製造工程の段階では、サービス情報がプリンタ100に記憶されている必要がない。このために、プリンタ100の製造工程の段階で、利用すべきサービスを想定しておく必要がなく、例えば、プリンタ100の製造後に提供が開始されたサービスや、プリンタ100の製造時には製造事業者に認識されていなかった第三者が提供するサービスであったとしても、ユーザはプリンタ100を用いて該サービスを利用することができる。この結果、サービスの柔軟な提供と利用とを実現できる。例えば、サービスの提供者は、プリンタ100の改造等を行うことなく、新たなサービスを事後的に追加することもできる。例えば、ユーザや販売会社は、利用するサービスの選択や変更を容易に行うことができる。また、プリンタ100の製造事業者、販売業者、ユーザのいずれも、例えば、出荷時や使用時にユーザが希望するサービスに接続できるようにプリンタ100をカスタマイズする必要がないため、プリンタ100の製造事業者、販売業者、ユーザの負担を軽減できる。
【0084】
さらに、上記手法では、バウチャーVCの検証やトークンの検証を行うことによって、プリンタ100と対象サーバとは、互いの正当性を確認することができる。そして、プリンタ100や対象サーバは、相手の正当性を確認できない場合には、オンボーディング処理の実行を拒否できる。このために、プリンタ100が意図しないサーバにオンボードされる、プリンタ100とは異なる不正なデバイスが対象サーバにオンボードされるなどのセキュリティ上の問題が生じることを抑制できる。
【0085】
A-3.プリンタ100の再販後のサービスの事前準備
以下では、図4図5の処理の後に、プリンタ100が、ユーザAからユーザBに再販された場合において、再販後のプリンタ100においてサービスの事前準備が行われるまでの工程について説明する。本実施例では、プリンタ100は、ユーザAからユーザBに納品され、サービスCを提供するサーバ300Cとサービス処理を実行可能に接続される。
【0086】
図7図8は、プリンタ100がユーザAからユーザBに納品され、サーバ300Cとサービス処理を実行可能に接続されるまでのシーケンス図である。
【0087】
S72にて、ユーザAは、プリンタ100の注文と、ユーザBの公開鍵と、をユーザBから受け取る。例えば、ユーザBの公開鍵は、ユーザBの端末装置(図示省略)からユーザAの端末装置(図示省略)に送信される。
【0088】
S74では、ユーザBは、プリンタ100とバウチャーVCcとを、ユーザAから受け取る。例えば、ユーザAは、プリンタ100に対してオンボード状態の初期化指示を入力して、プリンタ100のオンボード状態を初期化した後に、プリンタ100をユーザBに納品する。オンボード状態が初期化されることで、プリンタ100はサーバ300A、300Bにオンボードされていない状態に戻る。さらに、ユーザAは、端末装置を用いてバウチャー延長処理を実行する。具体的には、ユーザAの端末装置は、ユーザBから受け取った公開鍵と、該公開鍵をユーザAの秘密鍵を用いて暗号化して得られる署名データと、を含むエントリETを生成する。ユーザAの端末装置は、販売会社Bから受け取ったバウチャーVCaに、生成したエントリETを追加することで、延長済みのバウチャーVCaを生成する。ユーザAの端末装置は、延長済みのバウチャーVCaを、ユーザBの端末装置に送信する。以上の説明から解るように、ユーザBが受け取るバウチャーVCaのエントリ数enは、3である。
【0089】
S76では、ユーザBは、利用するサービスCを提供するサーバ300CにバウチャーVCaを登録する。具体的には、ユーザBは、端末装置を操作して、端末装置200からサーバ300CにバウチャーVCaを送信する。サーバ300Cは、受信したバウチャーVCaをバウチャーデータベースVDBに格納する。
【0090】
サーバ300Cは、バウチャーVCaを受信すると、S78にて、仲介サーバ400に接続情報CIcを登録する。接続情報CIcは、サーバ300Cに接続するための接続情報CI(図2(D))である。接続情報CIcの登録は、上述した図4のS28と同様に実行される。これによって、接続情報CIcがプリンタ100のGUIDと対応付けて仲介サーバ400に登録される。
【0091】
ユーザBは、仲介サーバ400に接続情報CIcを登録すると、プリンタ100をインターネットITに接続可能に設置して、S79にて、プリンタ100の電源を投入する。
【0092】
プリンタ100の電源が投入されると、S80にて、プリンタ100と仲介サーバ400との間で接続情報取得処理が実行される。接続情報取得処理は、上述した図4のS34と同様に実行される。これによって、プリンタ100は、サーバ300Cに接続するための接続情報CIcを取得する。
【0093】
S82~S94では、プリンタ100とサーバ300Cとの間で1回目のオンボーディング処理が実行される。
【0094】
S82では、プリンタ100とサーバ300Cとの間で接続確立処理が実行される。S84では、サーバ300Cは、バウチャーVCaをプリンタ100に送信する。S86では、プリンタ100は、バウチャーVCaを検証することで、サーバ300Cの正当性を確認する。プリンタ100は、バウチャーVcの検証に成功すると、S88にて、検証に成功したことを示す検証成功通知をサーバ300Cに送信する。
【0095】
S90~S94では、プリンタ100とサーバ300Cとの間で更新関連処理が実行される。S90では、サーバ300Cからプリンタ100に、更新無しのバウチャー情報、すなわち、上述したバウチャーVCの維持要求が送信される。図7の例では、対象サーバはサーバ300Cであるので、対象サーバの所在情報(例えば、IPアドレス)は、特定所在情報SIに含まれるいずれの所在情報とも一致しない。このために、図7の例では、プリンタ100は、S92にて、再利用条件が満たされないと判断し(図6のS130にてNO)、S94にて、更新エラー通知をサーバ300Cに送信する(図6のS145)。この場合には、図6にも示すように、プリンタ100とサーバ300Cとの間でサービス準備処理は実行されず、オンボーディング処理は中断される。
【0096】
オンボーディング処理が更新エラー通知を受信して中断された場合には、図8のS96~S114に示すように、プリンタ100とサーバ300Cとの間で、再度、オンボーディング処理が実行される。図8のS96~S102の処理は、図7のS82~S88の処理と同一である。
【0097】
S104~S112では、プリンタ100とサーバ300Cとの間で更新関連処理が実行される。2回目のオンボーディング処理では、S104にて、サーバ300Cからプリンタ100に、更新されたバウチャー情報、すなわち、上述したバウチャーVCの更新要求が送信される。プリンタ100は、更新要求を受信すると、S106にて、更新されたバウチャー情報を用いてHMACを生成し、S108にて、該HMACをサーバ300Cに送信する(図6のS125にてYES、S135)。S110では、プリンタ100は、不揮発性記憶装置130に格納されたバウチャーヘッダVHを、S104にて受信されたバウチャー情報と、S106にて生成されたHMACと、を含む新たなバウチャーヘッダVHに更新する。S115では、サーバ300Cは、バウチャーデータベースVDBに格納されたバウチャーVCaを、新たなバウチャーヘッダVHを含むバウチャーVCbに更新する。この時点における新たなバウチャーVCbのエントリ数enは0である。すなわち、新たなバウチャーVCbはエントリETを含んでいない。
【0098】
図8のS114では、プリンタ100とサーバ300Cとの間でサービス準備処理が実行される。サービス準備処理によって、プリンタ100は、サーバ300Cにオンボードされる。
【0099】
図9は、本実施例のバウチャーVCの更新と再利用について説明する図である。バウチャーVCの更新処理が実行されない場合には、その後に、同一のバウチャーVCを他の対象サーバが再利用できる。例えば、プリンタ100とサーバ300Aの間のオンボーディング処理OBa(図9)において、上述したように更新処理が実行されない(図4のS40~S44)。このため、プリンタ100とサーバ300Bの間のオンボーディング処理OBb(図9)においても、バウチャーVCaが真正なバウチャーVCとして扱われる。このために、オンボーディング処理OBbでは、バウチャーVCaを用いて、プリンタ100がサーバ300Bにオンボードされる。したがって、販売会社Bは、図9に矢印で示すサーバ300Aへの登録処理REaにてバウチャーVCaを登録し、サーバ300Bへの登録処理REbにおいても同一のバウチャーVCaを登録すれば良い。
【0100】
バウチャーVCの更新処理が実行される場合には、その後に、同一のバウチャーVCを他の対象サーバが再利用できない。例えば、プリンタ100とサーバ300Cの間のオンボーディング処理OBc(図9)では、上述したように更新処理が実行される(図7のS90~S94、図8のS104~S112)。これによって、更新後のバウチャーVCbが真正なバウチャーとなり、更新前のバウチャーVCaは無効な(真正でない)バウチャーとなる。同様に、プリンタ100とサーバ300Dの間のオンボーディング処理OBdでも、更新処理が実行される。
【0101】
例えば、図9に示すように、プリンタ100がユーザBからユーザCに再販された後に、プリンタ100をサーバ300Dにオンボードする場合には、プリンタ100とサーバ300Dとの間のオンボーディング処理OBdに先だって行われる登録処理REdでは、更新後のバウチャーVCbがサーバ300Dに登録される必要がある。このために、例えば、ユーザBは、プリンタ100をユーザCに引き渡す際に、サーバ300CからバウチャーVCbを受け取り、ユーザCに引き渡す。例えば、ユーザBは、自身の端末装置からユーザCから受け取った公開鍵をサーバ300Cに送信する。サーバ300Cは、受け取った公開鍵を用いてバウチャーVCbの延長処理を行い、延長済みのバウチャーVCb(エントリ数en=1)をユーザBの端末装置に送信する。ユーザBは、自身の端末装置からユーザCの端末装置にバウチャーVCbを送信する。ユーザCは、自身の端末装置を用いて、バウチャーVCbをサーバ300Dに登録する登録処理REdを実行する。
【0102】
以上説明した本実施例によれば、プリンタ100は、GUIDと接続情報CIとを対応付けて記憶する仲介サーバ400から、自身を示すGUIDと対応付けられた接続情報CIを受信する(図4のS34、図5のS48、図7のS80)。接続情報CIは、バウチャーVCを記憶する対象サーバ(サーバ300A~300D)に接続するための情報である。プリンタ100は、接続情報CIを用いて対象サーバに接続し(図4のS35、図5のS50、図7のS82、図8のS96)、対象サーバと接続後に、対象サーバとの通信を含む処理(図4のS36~S46、図5のS52~S64、図7のS84~S94、図8のS98~S114)を実行する。プリンタ100は、対象サーバからバウチャーVCを受信し(図4のS36、図5のS52、図7のS84)、バウチャーVCが真正であるか否かを検証する(図4のS37、図5のS54、図7のS86)。プリンタ100は、バウチャーVCが真正であり(図4のS38、図5のS56)、かつ、再利用条件が満たされる場合に(図4のS42、図5のS60)、バウチャーVCの更新処理を実行せずに、サービス準備処理を実行する(図4のS46、図5のS64)。プリンタ100は、バウチャーVCが真正であり(図7のS88)、かつ、再利用条件が満たされない場合に(図7のS92)、バウチャーVCの更新処理(図8のS140~S110)と、サービス準備処理(図8のS114)と、を実行する。この結果、プリンタ100を含むシステム1000のセキュリティと利便性とを両立し得る。以下に比較例1、2と比較しつつ、さらに説明する。
【0103】
常にバウチャーVCの再利用を認めない場合を比較例1として説明する。図10は、比較例1の説明図である。比較例1では、常にバウチャーVCの再利用が認められないので、オンボーディング処理OBa~OBdのいずれにおいてもバウチャーVCが更新される。このために、オンボーディング処理OBa~OBdのそれぞれで真正と認められるバウチャーVCは、それぞれ異なるバウチャーVCa~VCdである(図10)。したがって、オンボーディング処理OBa~OBdのそれぞれに先だって行われる登録処理REa~REdでは、それぞれ、異なるバウチャーVCa~VCdが登録される必要がある。
【0104】
このために、比較例1では、例えば、販売会社Bは、オンボーディング処理OBaが行われた後に、サーバ300Aから更新後のバウチャーVCbを取得して、該バウチャーVCbをサーバ300Bに登録する登録処理REbを行う必要がある。すなわち、販売会社Bは、実施例のように、プリンタ100の発送時に、登録処理REbを完了することができない。販売会社Bは、プリンタ100がユーザAに納品され、プリンタ100に電源が投入されてオンボーディング処理OBaが実行されたことが確認された後に、上述のように登録処理REbを行う必要があり、販売会社Bの負担が増大する。あるいは、ユーザAが自身で、オンボーディング処理OBaが実行されたことが確認して、登録処理REbを行っても良いが、この場合には、ユーザAの負担が増大する。これに対して、本実施例によれば、オンボーディング処理OBa、OBbにてバウチャーVCが更新されない。この結果、オンボーディング処理OBa、OBbの一方が実行された後も、バウチャーVCaが真正なバウチャーVCである。このために、本実施例では、販売会社Bが、プリンタ100の発送時に、バウチャーVCaを登録する登録処理REa、REbを実行しておけば、プリンタ100の電源投入時に、オンボーディング処理OBa、OBbが実行されて、プリンタ100はサーバ300A、300Bの両方にオンボードされる。この結果、本実施例によれば、比較例1と比較して、システム1000の利便性が向上する。
【0105】
次に、常にバウチャーVCの再利用を認める場合を比較例2として説明する。図11は、比較例2の説明図である。比較例2では、常にバウチャーVCの再利用が認められるので、オンボーディング処理OBa~OBdのいずれにおいてもバウチャーVCが更新されない。このために、オンボーディング処理OBa~OBdのそれぞれで真正と認められるバウチャーVCは、同一のバウチャーVCaである(図11)。したがって、オンボーディング処理OBa~OBdのそれぞれに先立って行われる登録処理REa~REdでは、それぞれ、同一のバウチャーVCaが登録される。
【0106】
このために、比較例2では、例えば、プリンタ100が複数回に亘って再販され、プリンタ100の所有者が変わる場合においても、現在の所有者よりも前の所有者や販売会社Bが所有するバウチャーVCaが常に真正なまま維持される。この結果、例えば、ユーザCにプリンタ100の所有者が変わった後に、ユーザAや販売会社Bが誤ってバウチャーVCaを、サーバ300A、300Bなどに登録すれば、ユーザCの意図に反して、プリンタ100がサーバ300A、300Bにオンボードされる。また、プリンタ100の所有者が変わる度に、真正なバウチャーVCaの所有者が増加するので、真正なバウチャーVCaが第三者に漏洩する可能性も高くなる。この結果、プリンタ100が、ユーザCが意図しないサーバ(例えば不正なサーバ)にオンボードされる可能性も高くなる。これに対して、本実施例によれば、例えば、予め定められた特定の所在情報を有するサーバ300A、300Bとは異なるサーバ(例えば、サーバ300C)にプリンタ100がオンボードされた時点で、バウチャーVCの更新が行われる。このために、その後は、更新前のバウチャーVCaは真正なバウチャーVCとして使用できなくなる。したがって、本実施例によれば、ユーザの意図に反して、プリンタ100がサーバにオンボードされる可能性が低減されて、比較例2と比較してシステム1000のセキュリティが向上する。
【0107】
以上の説明から解るように、本実施例によれば、再利用条件が満たされる場合に、バウチャーVCの更新処理が実行されず、再利用条件が満たされない場合に、バウチャーVCの更新処理が実行されることで、システム1000のセキュリティと利便性とが両立され得る。
【0108】
本実施例によれば、再利用条件は、オンボーディング処理にてプリンタ100と接続される対象サーバが特定の対象サーバ(本実施例ではサーバ300A、300B)であることである。この結果、バウチャーVCを更新することなく、プリンタ100をオンボードできる対象サーバが限定されるので、システム1000のセキュリティを向上できる。また、販売会社Bがプリンタ100を直接販売したユーザが利用する可能性が高いサービスを提供するサーバ(本実施例ではサーバ300A、300B)は、バウチャーVCの更新を行うことなく、プリンタ100をオンボードできるので、例えば、販売会社Bおよび販売会社Bの顧客(例えば、ユーザA)の利便性を向上できる。
【0109】
さらに、本実施例によれば、接続情報CIは、対象サーバの所在を示す所在情報(例えば、IPアドレスやURL)を含み(図2(D))、プリンタ100は、該所在情報が、特定の対象サーバ(本実施例ではサーバ300A、300B)の所在を示す特定所在情報SI(図1)である場合に、再利用条件が満たされると判断する(図6のS130)。この結果、プリンタ100は、再利用条件が満たされるか否かを容易に判断することができる。
【0110】
さらに、本実施例によれば、プリンタ100は、再利用条件が満たされない場合に(図6のS130にてNO、図7のS92)、更新エラー通知を対象サーバに送信する(図6のS145、図7のS94)。更新エラー通知は、上述したように、バウチャーVCを更新すべきことを示す情報である。この結果、プリンタ100は、更新エラー通知を送信することで、対象サーバにバウチャーVCを更新させることができる。
【0111】
具体的には、プリンタ100は、再利用条件が満たされない場合に(図6のS130にてNO、図7のS92)、対象サーバからバウチャーVCを更新しないことを示す情報(具体的には、更新無しのバウチャー情報(維持要求))を受信することに応じて、更新エラー通知を対象サーバに送信する(図6のS145、図7のS94)。プリンタ100は、再利用条件が満たされる場合に(図6のS130にてYES、図4のS42、図5のS60)、対象サーバからバウチャーVCを更新しないことを示す情報を受信することに応じて、バウチャーVCを更新しないことを認める情報(具体的には、承認通知)を対象サーバに送信する(図6のS140、図4のS44、図5のS62)。この結果、プリンタ100は、バウチャーVCの更新を行うか否かを制御することができる。
【0112】
さらに、上述のように、バウチャーVCを更新しないことを認める情報(承認通知)は、nullを示す値であり、バウチャーVCを更新すべきことを示す情報は、特定のエラーを示す情報(更新エラー通知)である。この結果、プリンタ100は、nullを示す値を対象サーバに送信することで、バウチャーVCを更新しないことを認めることを対象サーバに通知できる。また、プリンタ100は、特定のエラーを送信することで、バウチャーVCを更新すべきことを対象サーバに通知できる。
【0113】
さらに、上記実施例では、再利用条件が満たされない場合に、更新エラー通知を対象サーバに送信した(図7のS94)後に、更新されたバウチャー情報を受信(図8のS104)することに応じて、更新されたバウチャー情報を用いて生成されるHMACを対象サーバに送信する(図8のS108、図6のS135)ことによって、更新前のバウチャーVCを、更新されたバウチャー情報とHMACとを含むバウチャーVCに更新する(図8のS110、S112、図6のS150)。この結果、再利用条件が満たされない場合にバウチャーVCを更新することができる。
【0114】
以上の説明から解るように、上記実施例のGUIDは、デバイス識別情報の例であり、バウチャーVCは、認証情報の例である。更新されたバウチャー情報は、第1情報の例であり、HMACは、第2情報の例である。
【0115】
B.第2実施例
第2実施例は、第1実施例と再利用条件が異なる。第2実施例の再利用条件は、図6に示すように、バウチャーVCのエントリ数enが所定数Pn以下であること(第1条件とも呼ぶ)と、バウチャーVCが工場出荷時から更新されていないこと(第2条件とも呼ぶ)と、を含む。所定数Pnは、例えば、2である。
【0116】
第2実施例の更新関連処理(図6)では、プリンタ100は、S130にて、上記第1条件と第2条件との両方が満たされる場合に、再利用条件が満たされると判断し、上記第1条件と第2条件とのいずれか一方が満たされない場合に、再利用条件が満たされないと判断する。プリンタ100は、対象サーバから受信されるバウチャーVCに含まれるエントリETの個数をカウントすることで、バウチャーVCのエントリ数enを認識して、第1条件が満たされるか否かを判断する。また、例えば、プリンタ100は、バウチャー更新フラグ(図示省略)を不揮発性記憶装置130に保持する。バウチャー更新フラグは、工場出荷時には、OFFに設定される。プリンタ100は、S150にて、バウチャーVC(バウチャーヘッダVH)を更新する際に、バウチャー更新フラグをONに設定する。プリンタ100は、S130にて、バウチャー更新フラグがOFFである場合に、第2条件が満たされると判断する。
【0117】
例えば、図9の例では、オンボーディング処理OBa、OBbで用いられるバウチャーVCaのエントリ数enは2である。また、バウチャーVCaは、工場出荷時に作成されたバウチャーVCであるので、工場出荷時からバウチャーVCの更新は行われていない。このために、オンボーディング処理OBa、OBbでは、再利用条件が満たされると判断されて、バウチャーVCの更新は行われない。
【0118】
一方、図9の例では、オンボーディング処理OBcが行われる時点では、プリンタ100がユーザAからユーザBに再販されているので、オンボーディング処理OBcにて用いられるバウチャーVCaのエントリ数enは3である。このために、オンボーディング処理OBcでは、第1条件が満たされないために再利用条件が満たされないと判断されて、バウチャーVCの更新が行われる。
【0119】
図9の例では、オンボーディング処理OBdにて用いられるバウチャーVCbは、工場出荷時に生成されるバウチャーVCaとは異なる。すなわち、オンボーディング処理OBdが行われる時点は、バウチャーVCの更新が行われた後である。このために、オンボーディング処理OBdでは、第2条件が満たされないために再利用条件が満たされないと判断されて、バウチャーVCの更新が行われる。この結果、第2実施例においても、第1実施例と同様に、システム1000のセキュリティと利便性とを両立し得る。
【0120】
以上説明した第2実施例によれば、バウチャーVCは、プリンタ100の所有者の変更に応じて増加する1以上のエントリETを含む(図2(B))。再利用条件は、上述のように、バウチャーVCに含まれるエントリETの個数(エントリ数en)が所定数Pn以下であることである第1条件を含む。プリンタ100の所有者の変更があった場合には、セキュリティの観点からバウチャーVCの更新が行われることが好ましい場合がある。例えば、上述のように、プリンタ100の過去の所有者が真正なバウチャーVCを所有していると、現在のプリンタ100のユーザの意図に反して、プリンタ100が対象サーバにオンボードされる可能性が高くなり得るためである。本実施例によれば、プリンタ100の所有者の変更に応じて増加するエントリETの個数を用いてバウチャーVCの更新処理を行うか否かを適切に切り替えることができる。したがって、システム1000のセキュリティと利便性とを両立し得る。
【0121】
C.変形例
(1)上記第1実施例では、図1の特定所在情報SIは、サーバ300Aとサーバ300Bとの所在情報を含んでおり、特定所在情報SIは工場にて不揮発性記憶装置130に格納されている。これに代えて、例えば、工場にて格納される特定所在情報SIは、例えば、セットアップサービスを提供する対象サーバ、例えば、サーバ300Aの所在情報だけとし、他の特定所在情報(例えば、サーバ300Bの所在情報)は、サーバ300Aから取得されても良い。例えば、プリンタ100がサーバ300Aにオンボードされた後(図4のS46のサービス準備処理の後)に、図4にて破線で囲まれたS47に示すように、サーバ300Aからプリンタ100に、サーバ300Bの所在情報が特定所在情報としてプリンタ100に送信されても良い。
【0122】
本変形例によれば、プリンタ100は、サーバ300Aとの接続時に、サーバ300Aからサーバ300Bの所在情報を特定所在情報として受信し(図4のS47)、サーバ300Bとの接続時に、該特定所在情報に基づいて、再利用条件が満たされるか否かを判断する(図5のS60)。この結果、例えば、プリンタ100の製造時に、サーバ300Bの特定所在情報をプリンタ100に格納することなく、事後的に、プリンタ100に特定所在情報を取得させることができる。この結果、例えば、プリンタ100の製造後に、新たにサービスを開始した対象サーバであっても、該対象サーバとのオンボーディング処理においてバウチャーVCが更新されないように、事後的に設定することができる。プリンタ100の製造後に、特定所在情報にて指定すべき対象サーバの追加や削除を容易に行うことができる。
【0123】
(2)上記各実施例の再利用条件は、一例であり、これに限られない。例えば、再利用条件は、プリンタ100が製造された後に実行されたオンボーディング処理の回数が、所定回数(例えば、2回)以下であることであっても良い。また、再利用条件は、プリンタ100が工場から出荷された後の初回の電源投入時から所定期間(例えば、1時間や1週間)内であることであっても良い。また、再利用条件は、例えば、上記各実施例の再利用条件と、本変形例で例示した再利用条件と、を適宜に組み合わせた条件であっても良い。例えば、再利用条件は、バウチャーVCのエントリ数enが所定個数以下であり、かつ、初回の電源投入時から所定期間内であることであっても良いし、バウチャーVCのエントリ数enが所定個数以下であり、かつ、対象サーバの所在情報が特定所在情報であることであっても良い。
【0124】
(3)上記第1実施例では、プリンタ100は、再利用条件を判断する際に、対象サーバの所在情報(例えば、IPアドレス)が、特定所在情報であるか否かに基づいて、対象サーバが特定のサーバであるか否かを判断している。これに代えて、例えば、オンボーディング処理の過程(例えば、認証処理の過程)で対象サーバからプリンタ100に所定の情報(例えば、提供サービスの名称)を送信し、プリンタ100は該所定の情報に基づいて、対象サーバが特定のサーバであるか否かを判断しても良い。
【0125】
(4)上記各実施例では、オンボーディング処理では、プリンタ100は、FDO仕様書に規定されたTO2に従って、認証情報であるバウチャーVCの更新やバウチャーVCの維持を実行している。対象サーバが対応していれば、プリンタ100は、例えば、プリンタ100の製造事業者が定めた仕様などの別の手法を用いて、認証情報の更新や維持を行っても良い。
【0126】
この場合には、例えば、プリンタ100から対象サーバに送信される承認通知は、nullとは異なる情報が用いられ得る。また、プリンタ100から対象サーバに送信される認証情報を更新すべきことを示す情報は、更新エラー通知とは異なる情報が用いられ得る。
【0127】
また、この場合には、例えば、プリンタ100は、再利用条件が満たされない場合には、プリンタ100が更新後の認証情報を生成して対象サーバに送信し、再利用条件が満たされる場合には、プリンタ100が更新前と同一の認証情報を対象サーバに送信しても良い。そして、対象サーバは、プリンタ100から送信される認証情報を有効な認証情報として自身の記憶装置に格納しても良い。
【0128】
(5)上記各実施例では、プリンタ100および対象サーバは、FDO仕様書に従って動作するので、認証情報として、GUIDを含むバウチャーVCが用いられている。このために、バウチャーVCがGUIDを含むことによって、バウチャーVCは、当該GUID、ひいては、当該GUIDが割り当てられたデバイス(本実施例ではプリンタ100)と対応付けられている。これに代えて、例えば、プリンタ100の製造事業者が定めた仕様などの別の手法が用いられる場合には、認証情報はバウチャーVCとは異なる情報であっても良い。この場合には、例えば、対象サーバは、所定のデバイス識別情報(例えば、シリアル番号)と、該デバイス識別情報を含まない所定の認証情報と、を対応付けて、テーブルに記録しても良い。そして、オンボーディング処理では、対象サーバは、所定の認証情報をプリンタ100に送信し、プリンタ100は該所定の認証情報を真正であるか否かを検証しても良い。
【0129】
(6)上記各実施例では、デバイスとしてプリンタ100が採用されている。これに限らず、対象サーバと協働してユーザに対してサービスを提供する他のデバイスが採用されても良い。他のデバイスを用いるサービスには、例えば、自宅やオフィスなどに設定された他のデバイス(例えば、監視カメラ、調理器具等の電化製品)を、端末装置(端末アプリケーション)から対象サーバを介して遠隔操作するサービスが含まれ得る。
【0130】
(7)上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。
【0131】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0132】
1000…システム,100…プリンタ,110…CPU,120…揮発性記憶装置,130…不揮発性記憶装置,140…表示部,150…操作部,170…印刷機構,180…通信IF,200…端末装置,210…CPU,220…揮発性記憶装置,230…不揮発性記憶装置,240…表示部,250…操作部,280…通信IF,300A~300D…サーバ,310…CPU,320…揮発性記憶装置,330…不揮発性記憶装置,380…通信IF,400…仲介サーバ,410…CPU,420…揮発性記憶装置,430…不揮発性記憶装置,480…通信IF,BP…ブラウザプログラム,CDB…接続情報データベース,CI…接続情報,ET…エントリ,IT…インターネット,PGa,PGb,PGp…コンピュータプログラム,RSI…仲介サーバ情報,SI…特定所在情報,VC…バウチャー,VDB…バウチャーデータベース,VH…バウチャーヘッダ,en…エントリ数
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11