(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024108388
(43)【公開日】2024-08-13
(54)【発明の名称】デバイス、コンピュータプログラム、方法
(51)【国際特許分類】
G06F 21/44 20130101AFI20240805BHJP
【FI】
G06F21/44
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023012727
(22)【出願日】2023-01-31
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】吉田 聖也
(57)【要約】
【課題】新たな認証情報を使用してデバイスとサーバとを接続する。
【解決手段】
管理サーバによって提供される特定情報を使用して、新たな第1種認証情報を取得する。第1仲介サーバから、新たな第1種認証情報を使用することによって、サービスサーバとの接続のための第1接続情報を取得する。第1接続情報に従ってサービスサーバにアクセスすることによってサービスサーバから第2種認証情報を取得するとともに、新たな第1種認証情報と第2種認証情報とを使用する検証を行うことによってサービスサーバとの接続を確立する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
デバイスであって、
第1種認証情報を格納するように構成された記憶装置と、
管理サーバとの接続のための管理接続情報に従って前記管理サーバにアクセスすることによって前記管理サーバによって提供される特定情報を使用して、新たな第1種認証情報を取得する第1取得部と、
第1位置情報によって示される第1仲介サーバから、前記新たな第1種認証情報を使用することによって、サービスサーバとの接続のための第1接続情報を取得する第2取得部であって、前記第1仲介サーバは、前記特定情報に対応付けられる第2種認証情報であって前記管理サーバによって生成された前記第2種認証情報に対応付けられる前記第1接続情報を有する、前記第2取得部と、
前記第1接続情報に従って前記サービスサーバにアクセスすることによって前記サービスサーバから前記第2種認証情報を取得するとともに、前記新たな第1種認証情報と前記第2種認証情報とを使用する検証を行うことによって前記サービスサーバとの接続を確立する接続部と、
を備えるデバイス。
【請求項2】
請求項1に記載のデバイスであって、さらに、
前記管理サーバとの通信の前に、第2仲介サーバから前記管理サーバとの接続のための前記管理接続情報を取得する第3取得部を備える、
デバイス。
【請求項3】
請求項2に記載のデバイスであって、
前記第2仲介サーバからの前記管理接続情報の取得は、FIDO Device Onboarding (FDO) のTransfer Ownership Protocol 1 (TO1)に従って、行われる、
デバイス。
【請求項4】
請求項1から3のいずれかに記載のデバイスであって、さらに、
前記第1仲介サーバとの通信の前に、前記管理サーバから前記第1仲介サーバの前記第1位置情報を取得する第4取得部を備える、
デバイス。
【請求項5】
請求項4に記載のデバイスであって、
前記デバイスは、さらに、前記記憶装置に格納された第1種認証情報の更新が必要であるか否かを確認する確認部を備え、
前記記憶装置に格納された前記第1種認証情報の前記更新が必要であると確認される場合に、
前記第1取得部は、前記管理接続情報に従って前記管理サーバにアクセスすることによって前記管理サーバによって提供される前記特定情報を使用して、前記新たな第1種認証情報を取得し、
前記第2取得部は、前記新たな第1種認証情報の取得の後に、前記管理サーバから取得された前記第1位置情報によって示される前記第1仲介サーバから前記第1接続情報を取得し、
前記デバイスは、さらに、
前記記憶装置に格納された前記第1種認証情報の前記更新が不要であると確認される場合に、前記管理サーバにアクセスせずに、前記第1位置情報によって示される前記第1仲介サーバから、前記記憶装置に格納された前記第1種認証情報に対応付けられるサービスサーバとの接続のための第2接続情報を取得する第5取得部を備える、
デバイス。
【請求項6】
請求項4に記載のデバイスであって、
前記第1取得部は、前記管理接続情報に従って前記管理サーバにアクセスすることによって前記管理サーバによって提供される前記特定情報を使用して、前記新たな第1種認証情報を取得し、
前記第2取得部は、前記新たな第1種認証情報の取得の後に、前記管理サーバから取得された前記第1位置情報によって示される前記第1仲介サーバから前記第1接続情報を取得する、
デバイス。
【請求項7】
請求項2または3に記載のデバイスであって、
前記記憶装置は、前記第1仲介サーバの前記第1位置情報と、前記第2仲介サーバの第2位置情報と、を格納し、
前記デバイスは、さらに、前記記憶装置に格納された第1種認証情報の更新が必要であるか否かを確認する確認部を備え、
前記記憶装置に格納された前記第1種認証情報の前記更新が必要であると確認される場合に、
前記第3取得部は、前記第2位置情報によって示される前記第2仲介サーバから前記管理接続情報を取得し、
前記第1取得部は、前記管理接続情報の取得の後に、前記管理接続情報に従って前記管理サーバにアクセスすることによって前記管理サーバによって提供される前記特定情報を使用して、前記新たな第1種認証情報を取得し、
前記第2取得部は、前記新たな第1種認証情報の取得の後に、前記第1位置情報によって示される前記第1仲介サーバから前記第1接続情報を取得し、
前記デバイスは、さらに、
前記記憶装置に格納された前記第1種認証情報の前記更新が不要であると確認される場合に、前記第2仲介サーバと前記管理サーバとにアクセスせずに、前記第1位置情報によって示される前記第1仲介サーバから、前記記憶装置に格納された前記第1種認証情報に対応付けられるサービスサーバとの接続のための第2接続情報を取得する第5取得部を備える、
デバイス。
【請求項8】
請求項2または3に記載のデバイスであって、
前記記憶装置は、前記第1仲介サーバの前記第1位置情報と、前記第2仲介サーバの第2位置情報と、を格納し、
前記第3取得部は、前記第2位置情報によって示される前記第2仲介サーバから前記管理接続情報を取得し、
前記第1取得部は、前記管理接続情報の取得の後に、前記管理接続情報に従って前記管理サーバにアクセスすることによって前記管理サーバによって提供される前記特定情報を使用して、前記新たな第1種認証情報を取得し、
前記第2取得部は、前記新たな第1種認証情報の取得の後に、前記第1位置情報によって示される前記第1仲介サーバから前記第1接続情報を取得する、
デバイス。
【請求項9】
請求項1から3のいずれかに記載のデバイスであって、
前記管理サーバによる前記特定情報の提供は、FIDO Device Onboarding (FDO) のTransfer Ownership Protocol 2 (TO2)に従って、行われる、
デバイス。
【請求項10】
請求項1から3のいずれかに記載のデバイスであって、
前記サービスサーバとは異なる他のサービスサーバとの接続のための第1種認証情報が前記記憶装置に格納された後に、前記第1取得部は、前記新たな第1種認証情報を前記記憶装置に、格納する、
デバイス。
【請求項11】
コンピュータプログラムであって、
管理サーバとの接続のための管理接続情報に従って前記管理サーバにアクセスすることによって前記管理サーバによって提供される特定情報を使用して、新たな第1種認証情報を取得する第1取得機能と、
第1位置情報によって示される第1仲介サーバから、前記新たな第1種認証情報を使用することによって、サービスサーバとの接続のための第1接続情報を取得する第2取得機能であって、前記第1仲介サーバは、前記特定情報に対応付けられる第2種認証情報であって前記管理サーバによって生成された前記第2種認証情報に対応付けられる前記第1接続情報を有する、前記第2取得機能と、
前記第1接続情報に従って前記サービスサーバにアクセスすることによって前記サービスサーバから前記第2種認証情報を取得するとともに、前記新たな第1種認証情報と前記第2種認証情報とを使用する検証を行うことによって前記サービスサーバとの接続を確立する接続機能と、
をコンピュータに実現させるコンピュータプログラム。
【請求項12】
デバイスをサービスサーバに接続する方法であって、
管理サーバとの接続のための管理接続情報に従って前記管理サーバにアクセスすることによって前記管理サーバによって提供される特定情報を使用して、新たな第1種認証情報を取得する第1取得工程と、
第1位置情報によって示される第1仲介サーバから、前記新たな第1種認証情報を使用することによって、サービスサーバとの接続のための第1接続情報を取得する第2取得工程であって、前記第1仲介サーバは、前記特定情報に対応付けられる第2種認証情報であって前記管理サーバによって生成された前記第2種認証情報に対応付けられる前記第1接続情報を有する、前記第2取得工程と、
前記第1接続情報に従って前記サービスサーバにアクセスすることによって前記サービスサーバから前記第2種認証情報を取得するとともに、前記新たな第1種認証情報と前記第2種認証情報とを使用する検証を行うことによって前記サービスサーバとの接続を確立する接続工程と、
を備える方法。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、デバイスをサーバに接続する技術に関する。
【背景技術】
【0002】
ネットワークを介してデバイスとサーバとを接続するための種々の仕組みが知られている。非特許文献1の技術では、デバイスに格納されたクレデンシャルと呼ばれる認証情報と、クレデンシャルに対応付けられたバウチャーと呼ばれる情報と、を使用して、デバイスとサーバとが接続される。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】"FIDO Device Onboard Specification 1.1",[online],令和4年4月19日, FIDO Alliance, [令和5年1月6日検索],インターネット<URL:https://fidoalliance.org/specs/FDO/FIDO-Device-Onboard-PS-v1.1-20220419/FIDO-Device-Onboard-PS-v1.1-20220419.html>
【発明の概要】
【発明が解決しようとする課題】
【0004】
更新された新たな認証情報を使用してデバイスとサーバとを接続する点については、工夫の余地があった。
【0005】
本明細書は、新たな認証情報を使用してデバイスとサーバとを接続する技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]デバイスであって、第1種認証情報を格納するように構成された記憶装置と、管理サーバとの接続のための管理接続情報に従って前記管理サーバにアクセスすることによって前記管理サーバによって提供される特定情報を使用して、新たな第1種認証情報を取得する第1取得部と、第1位置情報によって示される第1仲介サーバから、前記新たな第1種認証情報を使用することによって、サービスサーバとの接続のための第1接続情報を取得する第2取得部であって、前記第1仲介サーバは、前記特定情報に対応付けられる第2種認証情報であって前記管理サーバによって生成された前記第2種認証情報に対応付けられる前記第1接続情報を有する、前記第2取得部と、前記第1接続情報に従って前記サービスサーバにアクセスすることによって前記サービスサーバから前記第2種認証情報を取得するとともに、前記新たな第1種認証情報と前記第2種認証情報とを使用する検証を行うことによって前記サービスサーバとの接続を確立する接続部と、を備えるデバイス。
【0008】
この構成によれば、デバイスは、管理サーバによって提供される特定情報を使用して取得される新たな第1種認証情報を使用して、サービスサーバとの接続を確立できる。
【0009】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、デバイス、デバイスをサービスサーバに接続する方法、デバイスの制御方法、デバイスによって実行される方法、管理サーバ、管理サーバによって実行される方法、それらの方法またはデバイスの機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
【図面の簡単な説明】
【0010】
【
図1】一実施例としてのシステムを示す説明図である。
【
図2】(A)-(I)は、サーバとの接続に使用される情報の例を示す説明図である。
【
図3】(A)-(G)は、サーバとの接続に使用される情報の例を示す説明図である。
【
図7】設定処理の別の実施例を示すシーケンス図である。
【
図8】設定処理の別の実施例を示すシーケンス図である。
【
図9】設定処理の別の実施例を示すシーケンス図である。
【
図10】設定処理の別の実施例を示すシーケンス図である。
【
図11】設定処理の別の実施例を示すシーケンス図である。
【
図12】設定処理の別の実施例を示すシーケンス図である。
【
図13】設定処理の別の実施例を示すシーケンス図である。
【
図14】バウチャーデータベースD4の変化を示す説明図である。
【発明を実施するための形態】
【0011】
A.第1実施例:
A1.システムの構成:
図1は、一実施例としてのシステムを示す説明図である。このシステム1000は、プリンタ100と、仲介サーバ200A、200Bと、サービスサーバ300A、300Bと、ベンダサーバ400と、を含む。これらの装置は、ネットワークITに接続されている。ネットワークITは、いわゆるインターネットを含んでよい。また、ネットワークITは、いわゆるローカルエリアネットワークを含んでよい。
【0012】
プリンタ100は、プロセッサ110と、記憶装置115と、表示部140と、操作部150と、印刷実行部160と、通信インタフェース180とを、有している。これらの要素は、図示しないバスを介して互いに接続されている。
【0013】
表示部140は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部150は、ボタン、レバー、表示部140上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。通信インタフェース180は、他の装置と通信するためのインタフェースである(例えば、有線LAN、IEEE802.11の無線LAN、のうちの1種以上のインタフェースを含む)。通信インタフェース180は、ネットワークITに接続されている。
【0014】
印刷実行部160は、画像を印刷する装置である。本実施例では、印刷実行部160は、いわゆるインクジェットプリンタである。印刷実行部160は、1種類以上の印刷材(例えば、シアンとマゼンタとイエローとブラックの4色のインク)を使用して、画像を印刷するように構成されている。なお、印刷実行部160は、他の方式で画像を印刷する装置であってよい(例えば、レーザープリンタ)。
【0015】
プロセッサ110は、データを処理するように構成された装置である。プロセッサ110は、例えば、CPU(Central Processing Unit)、または、SoC(System on a chip)である。記憶装置115は、揮発性記憶装置120と、不揮発性記憶装置130と、を含む。揮発性記憶装置120は、例えば、DRAMであり、不揮発性記憶装置130は、例えば、フラッシュメモリである。
【0016】
不揮発性記憶装置130は、プログラムPG1と、シリアル番号SID0と、のそれぞれのデータを格納している。プログラムPG1に従ってプロセッサ110によって実行される処理は、サービスサーバ(本実施例では、サービスサーバ300A、300Bのいずれか)との接続のための設定処理(オンボーディングとも呼ばれる)と、オンボーディングの後のサービスを受けるための処理と、を含む。シリアル番号SID0は、プリンタ100に固有な識別番号である。プログラムPG1とシリアル番号SID0とのそれぞれのデータは、プリンタ100の製造時に、不揮発性記憶装置130に格納される。なお、プログラムPG1は、ネットワークITを通じて図示しないサーバから、または、プリンタ100に接続された図示しない携帯記憶装置(例えば、USBフラッシュドライブ)から、プリンタ100の不揮発性記憶装置130に格納されてよい。
【0017】
不揮発性記憶装置130は、更に、クレデンシャルCIと、接続情報IXと、のそれぞれのデータを格納するように構成されている。これらの情報CI、IXは、サーバとの接続のために使用される(詳細は、後述)。
【0018】
次に、サーバ200A、200B、300A、300B、400のハードウェア構成について説明する。本実施例では、サーバ200A、200B、300A、300B、400は、類似するハードウェア構成を有している。図示を省略するが、仲介サーバ200A、200Bの間では、ハードウェア構成(構成210、215(220、230)、280を含む)は、同じである。サービスサーバ300A、300Bの間では、ハードウェア構成(構成310、315(320、330)、380を含む)は、同じである。以下、仲介サーバ200Aとサービスサーバ300Aとベンダサーバ400とを参照して、サーバのハードウェア構成を説明する。
【0019】
サーバ200A、300A、400は、プロセッサ210、310、410と、記憶装置215、315、415と、通信インタフェース280、380、480とを、それぞれ有している。各サーバにおいて、これらの要素は、図示しないバスを介して互いに接続されている。通信インタフェース280、380、480は、他の装置と通信するためのインタフェースである。各通信インタフェース280、380、480は、例えば、有線LAN、IEEE802.11の無線LAN、のうちの1種以上のインタフェースを含む。各通信インタフェース280、380、480は、ネットワークITに接続されている。プロセッサ210、310、410は、データを処理するように構成された装置である。各プロセッサ210、310、410は、例えば、CPU、または、SoCである。記憶装置215、315、415は、揮発性記憶装置220、320、420と、不揮発性記憶装置230、330、430とを、それぞれ含む。揮発性記憶装置220、320、420は、例えば、DRAMであり、不揮発性記憶装置230、330、430は、例えば、フラッシュメモリである。
【0020】
次に、各サーバ200A、200B、300A、300B、400について、説明する。サービスサーバ300A、300Bは、プリンタ100を使用するサービスを提供するための処理を実行する。プリンタ100を使用するサービスは、消耗品(インク、用紙など)の残量をネットワークを介して取得し、残量に応じて消耗品をユーザに配送する配送サービス、ネットワークITを介してプリンタ100に画像を印刷させるサービスなど、種々のサービスであってよい。本実施例では、第1サービスサーバ300Aが、第1サービスのための処理を実行し、第2サービスサーバ300Bが、第2サービスのための処理を実行することとする。第1サービスサーバ300Aを運用する第1サービス事業者は、第2サービスサーバ300Bを運用する第2サービス事業者と異なることとする。各サービス事業者は、プリンタ100の製造事業者とは異なることとする。
【0021】
第1サービスサーバ300Aの不揮発性記憶装置330は、プログラムPG3Aと、サービステーブルT3Aと、のそれぞれのデータを格納している。プロセッサ310は、プログラムPG3Aを実行することによって、第1サービスを提供するための種々の処理を実行する(詳細は、後述)。プログラムPG3Aは、第1サービス事業者によって、第1サービスサーバ300Aにアップロードされる。サービステーブルT3Aには、プリンタ(例えば、プリンタ100)のシリアル番号SIDとバウチャーVCとの対応関係が登録される。バウチャーVCは、プリンタとの接続のために使用される(詳細は、後述)。
【0022】
第2サービスサーバ300Bの不揮発性記憶装置330には、プログラムPG3Bと、サービステーブルT3Bと、のそれぞれのデータが格納されている。プログラムPG3Bは、第2サービスを提供するための種々の処理の手順を示している。プログラムPG3Bは、第2サービス事業者によって、第2サービスサーバ300Bにアップロードされる。サービステーブルT3Bには、第1サービスサーバ300AのサービステーブルT3Aと同様に、シリアル番号SIDとバウチャーVCとの対応関係が登録される(詳細は、後述)。
【0023】
ベンダサーバ400は、クレデンシャルCIとバウチャーVCとを更新するための処理を実行する。クレデンシャルCIとバウチャーVCとは、プリンタ100を使用するサービス(対象サービスと呼ぶ)のために、使用される。対象サービスは、変更され得る。例えば、プリンタ100のユーザが、対象サービスを変更し得る。また、プリンタ100が譲渡される場合に、新たなユーザは、従前の対象サービスとは異なるサービスを選択し得る。ベンダサーバ400は、新たな対象サービスのためのクレデンシャルCIとバウチャーVCとを準備する(詳細は、後述)。ベンダサーバ400は、プリンタ100を管理する管理事業者によって、運用される。本実施例では、管理事業者は、プリンタ100の製造事業者と同じである。これに代えて、管理事業者は、製造事業者とは異なる事業者であってよい。
【0024】
ベンダサーバ400の不揮発性記憶装置430は、プログラムPG4と、バウチャーデータベースD4と、のそれぞれのデータを格納している。プロセッサ410は、プログラムPG4を実行することによって、クレデンシャルCIとバウチャーVCとを準備するための種々の処理を実行する(詳細は後述)。プログラムPG4は、管理事業者によって、ベンダサーバ400にアップロードされる。バウチャーデータベースD4の詳細については、後述する。
【0025】
仲介サーバ200A、200Bは、適切なサーバに接続するための接続情報(例えば、IPアドレス、URL等)を、デバイス(例えば、プリンタ100)に提供する。本実施例では、第1仲介サーバ200Aは、サービスサーバ(例えば、サービスサーバ300A)との接続のための情報を提供する。第1仲介サーバ200Aは、プリンタ100の管理事業者とは異なる事業者によって、運用される。第2仲介サーバ200Bは、ベンダサーバ400との接続のための情報を提供する。第2仲介サーバ200Bは、ベンダサーバ400と同様に、管理事業者によって運用される。
【0026】
第1仲介サーバ200Aの不揮発性記憶装置230は、プログラムPG2Aと、接続情報テーブルT2Aと、のそれぞれのデータを格納している。プロセッサ210は、プログラムPG2Aを実行することによって、接続情報を提供するための種々の処理を実行する(詳細は、後述)。プログラムPG2Aは、第1仲介サーバ200Aを運用する事業者によって、第1仲介サーバ200Aにアップロードされる。接続情報テーブルT2Aの詳細については、後述する。
【0027】
第2仲介サーバ200Bの不揮発性記憶装置230には、プログラムPG2Bと、接続情報テーブルT2Bと、のそれぞれのデータが格納されている。プログラムPG2Bは、接続情報を提供するための種々の処理の手順を示している。プログラムPG2Bは、第2仲介サーバ200Bを運用する事業者(本実施例では、管理事業者)によって、第2仲介サーバ200Bにアップロードされる。接続情報テーブルT2Bの詳細については、後述する。
【0028】
A2.サーバとの接続に使用される情報と、初期化処理:
図2(A)-
図2(I)、
図3(A)-
図3(G)は、サーバとの接続に使用される情報の例を示す説明図である。本実施例では、プリンタ100(
図1)は、「FIDO Device Onboard (FDO) protocols」(以下、「FDOプロトコル」と呼ぶ)を使用して、サービスサーバとの接続のための設定処理(オンボーディングとも呼ばれる)を実行する。FDOプロトコルは、例えば、上記の「FIDO Device Onboard Specification」(以下、「FDO仕様書」と呼ぶ)によって、規定されている。オンボーディングの処理において、プリンタ100は、「デバイス」の処理を実行し、仲介サーバ200A、200Bは、「ランデブーサーバ」の処理を実行し、サービスサーバ300A、300Bは、「オーナー」の処理を実行する。
【0029】
プリンタ100の製造工程では、製造事業者は、プリンタ100と図示しない製造設定装置(例えば、コンピュータ)とを使用して、FDOプロトコルの「Device Initialize Protocol (DI)」に従って、以下の初期化処理を行う。まず、製造設定装置は、クレデンシャルを生成し、生成したクレデンシャルをプリンタ100に送信する(製造クレデンシャルと呼ぶ)。
図2(A)は、製造クレデンシャルの例を示している。製造クレデンシャルCImは、プロトコル情報PIと、仲介サーバ情報RSIと、GUIDと、デバイス情報DIと、公開鍵PKmと、を含む。
【0030】
プロトコル情報PIは、FDOプロトコルのバージョンを示している。仲介サーバ情報RSIは、ランデブーインフォとも呼ばれ、仲介サーバのネットワーク上の位置を示す位置情報(例えば、IPアドレス)を含む。
図6(B)は、仲介サーバ情報RSIの例を示している。
図6(B)では、仲介サーバ情報RSIは、2個の位置情報RSa、RSbを含んでいる。第1位置情報RSaは、第1仲介サーバ200Aを示し、第2位置情報RSbは、第2仲介サーバ200Bを示している。仲介サーバ情報RSIに含まれる位置情報の総数は、1以上の種々の数であり得る。複数の位置情報が仲介サーバ情報RSIに含まれる場合、複数の位置情報は、優先順に並べられる。そして、複数の位置情報は、優先順に従って、1つずつ参照される。GUID(
図2(A))は、プリンタ100の識別子であり、ランダムな値に設定される。デバイス情報DIは、プリンタ100の製造事業者によって任意に記述されるプリンタ100に関する情報である。公開鍵PKmは、プリンタ100の製造事業者が有する秘密鍵(製造秘密鍵と呼ぶ)に対応付けられる公開鍵である。
【0031】
製造設定装置(図示せず)は、製造クレデンシャルCImのデータをプリンタ100に送信する。プリンタ100のプロセッサ110は、ランダムな値を使用してシークレットSCを生成し、シークレットSCと製造クレデンシャルCImとを使用して、最終的なクレデンシャルを生成する(デバイスクレデンシャルとも呼ぶ)。
図2(C)は、デバイスクレデンシャルの例を示している。デバイスクレデンシャルCI(単に、クレデンシャルCIとも呼ぶ)は、製造クレデンシャルCIm(
図2(A))に含まれる情報PI、RSI、GUID、DIと同じ情報を含む。クレデンシャルCIは、更に、公開鍵ハッシュPKHと、シークレットSCと、を含む。公開鍵ハッシュPKHは、公開鍵PKm(
図2(A))を所定のハッシュ関数を使用して変換することによって得られるハッシュ値である。プロセッサ110は、クレデンシャルCIのデータを、不揮発性記憶装置130に格納する。
【0032】
プリンタ100のプロセッサ110は、更に、HMAC(Keyed-Hashing for Message Authentication Code)を生成する。本実施例では、プロセッサ110は、シークレットSCを秘密鍵として使用し、製造クレデンシャルCImをメッセージとして使用することによって、HMACを算出する。プロセッサ110は、生成したHMACを製造設定装置に送信する。
【0033】
製造設定装置は、製造クレデンシャルCImとHMACを使用して、バウチャーを生成する。
図2(D)は、バウチャーの例を示している。バウチャーVCは、バウチャーヘッダVHを含んでいる。バウチャーヘッダVHは、上述した情報PI、RSI、GUID、DI、PKm、HMACを含んでいる。バウチャーVCは、さらに、1以上のエントリ(例えば、第1エントリET1)を含み得る。エントリは、オーナーの変更(すなわち、所有権の移転)を示している。ただし、この段階では、バウチャーVCは、エントリを含んでいない。
【0034】
以上のように、FDOプロトコルのDIの処理によって、バウチャーVC(
図2(D))が生成され、プリンタ100の不揮発性記憶装置130にクレデンシャルCI(
図2(C))が格納される。以下、製造工程で不揮発性記憶装置130に格納されるクレデンシャルを、初期クレデンシャルとも呼ぶ。初期クレデンシャルに対応するバウチャーヘッダを、初期ヘッダとも呼ぶ。
【0035】
図2(E)は、初期クレデンシャルの例を示している。本実施例では、仲介サーバ情報RSIは、第2仲介サーバ200Bのための第2位置情報RSbのみを含むこととする。GUIDは、GUID0であることとする。公開鍵ハッシュPKHの算出に使用される公開鍵は、PKmaであることとする。プリンタ100の不揮発性記憶装置130には、初期クレデンシャルCI1が格納される。
【0036】
製造事業者は、初期クレデンシャルCI1に対応する初期ヘッダVHi1のデータと、製造秘密鍵SKmのデータとを、管理事業者に提供する。管理事業者は、初期ヘッダVHi1と製造秘密鍵SKmとを、バウチャーデータベースD4に登録する(詳細は、後述)。
【0037】
本実施例では、第1サービス事業者は、製造事業者に、プリンタ100を発注することとする。第1サービス事業者は、第1サービス事業者の秘密鍵に対応付けられる公開鍵のデータを、製造事業者に提供する。製造事業者は、発注に応じて、図示しない発注処理装置(例えば、コンピュータ)を使用して、プリンタ100の新しいオーナーが第1サービス事業者であることを示すエントリを、バウチャーVC(ここでは、初期ヘッダVHi1)に追加する。
図2(D)の第1エントリET1は、バウチャーVCに追加されるエントリの例を示している。第1エントリET1は、公開鍵PKs1と、署名SD1と、を含んでいる。公開鍵PKs1は、新オーナー(ここでは、第1サービス事業者)の秘密鍵に対応付けられる公開鍵である。署名SD1は、公開鍵PKs1を含む情報を旧オーナー(ここでは、製造事業者)の秘密鍵を使用して暗号化することによって得られる。1個のエントリは、所有権の1回の移転を示している。所有権の移転がN回(Nは、ゼロ以上の整数)行われる場合、バウチャーVCは、N個のエントリを含む。最後のエントリの公開鍵に対応付けられるオーナーが、最新のオーナーである。後述するように、バウチャーは、最新のオーナーに対応付けられるサービスサーバとの通信に、使用される。すなわち、エントリは、サービスサーバに対応付けられている。
【0038】
製造事業者は、発注処理装置(図示せず)を使用して、バウチャーVCに第1サービス事業者を示すエントリを追加する。これにより生成されるバウチャーを、第1バウチャーと呼ぶ。
図2(F)は、第1バウチャーの例を示している。第1バウチャーVC1aは、バウチャーヘッダVH(初期ヘッダVHi1)と第1エントリET1とを含んでいる。第1バウチャーVC1aの情報PI、RSI、GUID、DIは、初期クレデンシャルCI1(
図2(E))のものと同じである。公開鍵PKmは、PKmaである。また、HMACは、HMACaであることとする。第1エントリET1の公開鍵PKs1(すなわち、第1サービス事業者の公開鍵)は、PKsaであることとする。
【0039】
ここで、クレデンシャルの符号とバウチャーの符号とを、以下のように設定することとする。クレデンシャルの符号は、文字列「CI」とそれに続く番号とを含むこととする。バウチャーの符号は、文字列「VC」とそれに続く番号とを含むこととする。互いに対応付けられるクレデンシャルとバウチャーとには、同じ番号を含む符号が付与される。例えば、同じ「1」を含む符号で参照されるクレデンシャルCI1とバウチャーVC1aとは、互いに対応付けられている。本実施例では、クレデンシャルとバウチャーとは、公開鍵PKmによって、対応付けられる。また、バウチャーの符号の番号の後には、さらに、以下に示すエントリを示す文字が続くこととする。
「a」:第1サービス事業者(ここでは、第1サービスサーバ300A)
「b」:第2サービス事業者(ここでは、第2サービスサーバ300B)
「v」と「w」:管理事業者(ここでは、ベンダサーバ400)
第1バウチャーVC1aは、第1サービスサーバ300Aのためのエントリを含んでいる。
【0040】
発注処理装置(図示省略)は、プリンタ100のシリアル番号SID0と第1バウチャーVC1aとのそれぞれのデータを、第1サービス事業者に提供する。また、製造事業者は、プリンタ100を、第1サービス事業者に納品する。
【0041】
第1サービス事業者は、シリアル番号SID0と第1バウチャーVC1aとのそれぞれのデータを、第1サービスサーバ300AのサービステーブルT3Aに登録する。
図2(G)は、サービステーブルT3Aの例を示している。サービステーブルT3Aは、互いに対応付けられるシリアル番号SIDとバウチャーVCと格納する。図示するように、シリアル番号SID0と第1バウチャーVC1aとの組み合わせが登録されている。
【0042】
A3.設定処理(オンボーディングの処理):
図4-
図6は、設定処理の例を示すシーケンス図である。本実施例では、第1ユーザが、第1サービス事業者と第1サービスの利用契約を結び、プリンタ100の使用を開始することとする。
図4-
図6は、プリンタ100の利用契約に応じて実行される処理の例を示している。図中には、装置100、200A、200B、300A、300B、400の種々のステップが示されている。これらのステップは、装置100、200A、200B、300A、300B、400のプロセッサ110、210、310、410によって、それぞれ実行される。以下、装置100、200A、200B、300A、300B、400のプロセッサ110、210、310、410が処理を実行することを、単に、装置100、200A、200B、300A、300B、400が処理を実行する、とも表現する。
【0043】
S110では、第1サービスサーバ300Aは、更新用バウチャーの登録指示を、ベンダサーバ400に送信する。この指示は、プリンタ100に対応付けられる第1バウチャーVC1aと、プリンタ100のシリアル番号SID0と、のそれぞれのデータを含んでいる。
【0044】
S115では、第1サービス事業者は、プリンタ100を第1ユーザに送付する。この段階では、プリンタ100の不揮発性記憶装置130には、初期クレデンシャルCI1(RSI=RSb、GUID0)が格納されている。
【0045】
S120では、ベンダサーバ400は、第1バウチャーVC1aを検証する。ベンダサーバ400は、この検証により、第1バウチャーVC1aが改ざんされていないことを確認する。検証方法は、種々の方法であってよい。例えば、ベンダサーバ400は、以下に説明する簡易検証を行ってよい。ベンダサーバ400の不揮発性記憶装置430には、製造事業者の公開鍵PKmaのデータが、予め格納される。ベンダサーバ400は、第1バウチャーVC1a(
図2(F))のバウチャーヘッダVHに含まれる公開鍵PKmが製造事業者の公開鍵PKmaと同じである場合に、バウチャーヘッダVHの検証に成功したと判断する。ベンダサーバ400は、バウチャーヘッダVHに含まれる公開鍵PKmを使用して、第1エントリET1の署名SD1を検証する。バウチャーに複数のエントリが含まれる場合、検証済のエントリに含まれる公開鍵を使用して次のエントリの署名を検証する処理が、繰り返される。以上により、全てのエントリが検証される。ヘッダVHと全てのエントリのそれぞれの検証が成功する場合、第1バウチャーVC1aの検証が成功する。なお、バウチャーの検証方法は、これに代えて、FDO仕様書の「Transfer Ownership Protocol 2 (TO2)」の解説で説明されているFDOデバイスによるバウチャーの検証方法と同じであってよい。
【0046】
また、後述するように、バウチャーデータベースD4(
図3(A))には、検証済のバウチャーVCに含まれるエントリの数NEが、登録される。ベンダサーバ400は、処理対象のバウチャーVC1aに含まれるエントリの総数と、バウチャーデータベースD4中で処理対象のシリアル番号SID0に対応付けられるエントリ数NEと、を比較する(エントリ数NEが登録されていない場合、NE=ゼロであることとする)。仮に2つのオーナーが同じシリアル番号SIDに対応付けられる場合、より大きいエントリ数に対応付けられるオーナーが、より新しいオーナーである。ベンダサーバ400は、処理対象のバウチャーに含まれるエントリの総数が、バウチャーデータベースD4に登録済のエントリ数NE以下である場合には、バウチャーの検証に失敗したと判断してよい。これにより、旧オーナーのバウチャーVCを使用する不適切な処理の進行の可能性は、低減する。
【0047】
ベンダサーバ400は、バウチャーの検証(
図4:S120)に失敗する場合、設定処理を終了する(図示省略)。本実施例では、第1バウチャーVC1aの検証に成功することとする。
【0048】
第1バウチャーVC1aの検証に成功する場合、S125(
図4)で、ベンダサーバ400は、更新用バウチャーVC1uを生成する。本実施例では、ベンダサーバ400は、ランダムな値を使用して秘密鍵を生成し、秘密鍵に対応付けられる公開鍵を算出する。ベンダサーバ400は、算出した公開鍵と、シリアル番号SID0に対応付けられる製造秘密鍵SKm(
図3(A))とを使用して、ベンダサーバ400を示すエントリを生成する。ベンダサーバ400は、生成したエントリを、シリアル番号SID0に対応付けられる初期ヘッダVHi1(
図3(A))に追加することによって、更新用バウチャーVC1uを生成する。上述したように、シリアル番号SID0に対応付けられる製造秘密鍵SKmと初期ヘッダVHi1とは、バウチャーデータベースD4(
図3(A))に登録済である。
【0049】
S130で、ベンダサーバ400は、バウチャーデータベースD4を更新する。
図3(A)は、バウチャーデータベースD4の例を示している。バウチャーデータベースD4は、プリンタ名PNと、シリアル番号SIDと、GUIDと、バウチャーVCと、バウチャーヘッダVHの公開鍵PKmとHMACと、初期ヘッダVHiと製造秘密鍵SKと、検証済のオーナーOWとそのエントリ数NEと、オーナーの情報(公開鍵PKsと接続情報IX)と、の対応関係を示している。第1行D41は、S130で更新済のプリンタ100の情報を示している。
【0050】
情報PN、SID、GUID、VC、VHi、SKは、製造事業者によってバウチャーVCが生成される場合に、予め登録される。上述したように、製造事業者は、サービス事業者からの発注に応じて、最新のオーナーがそのサービス事業者であることを示すバウチャーVC(例えば、第1バウチャーVC1a(
図2(F)))を生成する。管理事業者は、製造事業者からそのバウチャーVCと他の情報PN、SID、VHi、SKを取得し、バウチャーデータベースD4に情報PN、SID、GUID、VC、VHi、SKを登録する。第1行D41の情報SID0、GUID0、VC1a、VHi1、SKmは、S110で取得されたシリアル番号SID0(すなわち、プリンタ100)に対応付けられる情報を、それぞれ示している。S130では、ベンダサーバ400は、第1行D41の他の情報を、更新する。
【0051】
バウチャーヘッダVHの公開鍵PKmとHMACとは、検証済のバウチャーVCから取得される。第1行D41の情報PKmaとHMACaは、第1バウチャーVC1a(
図2(F))から取得される。
【0052】
検証済のオーナーOWとエントリ数NEとは、検証済のバウチャーVCによって示される最新のオーナーと、検証済のバウチャーVCのエントリの総数と、を示している。第1行D41のオーナーOWは、第1サービス事業者に対応付けられる情報OWaを示している。(エントリ数は、1である)。オーナーOWは、オーナーを示す種々の情報であってよい。例えば、オーナーの識別情報(例えば、名称、識別番号など)が、オーナーOWとして登録されてよい。オーナーの識別情報は、サービスサーバからの更新バウチャー登録指示(例えば、S110(
図4))に含まれてよい。これに代えて、登録指示の送信装置(例えば、サービスサーバ300A)に予め対応付けられる情報が、オーナーの識別情報として使用されてよい。
【0053】
オーナー情報の公開鍵PKsは、最新のオーナーの公開鍵であり、検証済のバウチャーVCの最後のエントリに含まれる。第1行D41(
図3(A))の公開鍵PKsaは、第1バウチャーVC1a(
図2(F))の第1エントリET1から取得される。
【0054】
オーナー情報の接続情報IXは、オーナーのサービスサーバとの接続のための接続情報である。第1行D41の接続情報IXは、第1サービスサーバ300Aに対応付けられる接続情報IXaを示している。
図2(H)は、接続情報の例を示している。接続情報IXは、位置情報(例えば、IPアドレス、URLなど)と、ポート番号と、プロトコルと、を含む。バウチャーデータベースD4に登録される接続情報IXは、サービスサーバからの更新バウチャー登録指示(例えば、S110(
図4))に含まれてよい。これに代えて、登録指示の送信装置(例えば、サービスサーバ300A)に予め対応付けられる情報が、接続情報IXとして使用されてよい。
【0055】
以上のように、S130(
図4)では、ベンダサーバ400は、S110で取得されるバウチャーとシリアル番号SIDを使用して、情報PKm、HMAC、OW、NE、PKs、IXを含む情報を、バウチャーデータベースD4に登録する。なお、ベンダサーバ400は、更に、他の情報(例えば、情報GUID、VC)を、検証済の第1バウチャーVC1aに含まれる情報に更新してよい。
【0056】
S135では、ベンダサーバ400は、更新用バウチャーVC1uと接続情報IXu0との登録指示を、第2仲介サーバ200Bに送信する。S135は、FDOプロトコルの「Transfer Ownership Protocol 0 (TO0)」に従って、行われる。接続情報IXu0は、ベンダサーバ400との接続のための接続情報である(
図2(H))。以下、接続情報IXu0を、ベンダ接続情報IXu0とも呼ぶ。ベンダサーバ400は、自身の現行の位置情報を使用して、ベンダ接続情報IXu0を生成する。これに代えて、ベンダ接続情報IXu0は、予め決められてよい。
【0057】
S140(
図4)では、第2仲介サーバ200Bは、更新用バウチャーVC1uに含まれるGUID0と、ベンダ接続情報IXu0とを、接続情報テーブルT2Bに登録する。
図2(I)は、接続情報テーブルT2Bの例を示している。接続情報テーブルT2Bは、GUIDと接続情報IXとの対応関係を示している。第1行D2B1は、S140で登録されるGUID0と接続情報IXu0を示している。
【0058】
第1ユーザは、第1サービス事業者からプリンタ100を受け取る(
図4:115)。その後、S145で、第1ユーザは、プリンタ100の電源を投入する。本実施例では、プリンタ100は、電源投入を、ネットワークITへの接続指示として扱う。プリンタ100は、接続指示に応じて、S190を実行する。
【0059】
S190(S193、S196を含む)では、プリンタ100は、FDOプロトコルの「Transfer Ownership Protocol 1 (TO1)」に従って、第2仲介サーバ200Bからベンダ接続情報IXu0を取得する。S193では、プリンタ100は、不揮発性記憶装置130から最新のクレデンシャルCI1の仲介サーバ情報RSI(ここでは、第2位置情報RSb)とGUID0とを取得する。プリンタ100は、GUID0のデータを、第2位置情報RSbによって示される第2仲介サーバ200Bに送信する。S196では、第2仲介サーバ200Bは、接続情報テーブルT2B(
図2(I))を参照し、そして、GUID0に対応付けられるベンダ接続情報IXu0のデータを、プリンタ100に送信する。プリンタ100は、取得したベンダ接続情報IXu0のデータを、記憶装置115(例えば、不揮発性記憶装置130)に格納する。
【0060】
S200では、プリンタ100は、FDOプロトコルの「Transfer Ownership Protocol 2 (TO2)」に従って、ベンダ接続情報IXu0によって示されるベンダサーバ400との接続を行う。S200は、S201、S202、S203、S204、S206を含んでいる。
【0061】
S201では、プリンタ100は、不揮発性記憶装置130に格納されている最新のクレデンシャルCI1に含まれるGUID0のデータを、ベンダサーバ400に送信する。S202では、ベンダサーバ400は、GUID0に対応付けられる更新用バウチャーVC1uのデータを、プリンタ100に送信する。プリンタ100は、更新用バウチャーVC1uのデータを取得する。
【0062】
S203では、バウチャーの検証と、プリンタ100とベンダサーバ400との正当性の検証と、が行われる。本実施例では、FDO仕様書のTO2の解説で説明されている検証が行われる。S202では、ベンダサーバ400は、更新用バウチャーVC1uのデータに加えて、メッセージ署名のデータを、プリンタ100に送信する。メッセージ署名は、更新用バウチャーVC1uの一部を含む特定のメッセージを、秘密鍵を使用して暗号化することによって取得される。この秘密鍵は、更新用バウチャーVC1uのエントリ(S125)に含まれる公開鍵に対応付けられる秘密鍵である。S203では、プリンタ100は、最新のクレデンシャルCI1(
図2(E))の公開鍵ハッシュPKHを使用して、更新用バウチャーVC1uのバウチャーヘッダに含まれる公開鍵を検証する。プリンタ100は、検証済のバウチャーヘッダに含まれる公開鍵を使用して、第1エントリの署名を検証する。バウチャーが複数のエントリを含む場合には、検証済のエントリの公開鍵を使用して次のエントリの署名を検証する処理が、繰り返される。プリンタ100は、検証済の最後のエントリ(本実施例では、第1エントリ)に含まれる公開鍵を使用して、メッセージ署名を検証する。以上により、更新用バウチャーVC1uが検証される。また、プリンタ100とベンダサーバ400とは、予め決められたフォーマットの情報(例えば、EAT(Entity Attestation Token))を使用して、互いにの正当性を検証する。本実施例では、これらの検証に成功することとする。なお、S200では、バウチャーの検証と、プリンタ100とベンダサーバ400との正当性の検証と、の一方、または、両方が、省略されてよい。
【0063】
S204では、ベンダサーバ400は、クレデンシャルの更新のための新情報を、プリンタ100に送信する。本実施例では、ベンダサーバ400は、公開鍵PKmと仲介サーバ情報RSIとを新たに生成する。ベンダサーバ400は、ランダムな値を使用して秘密鍵を生成し、秘密鍵に対応付けられる公開鍵PKmを算出する(以下、算出される公開鍵PKmがPKmbであることとする)。ベンダサーバ400は、第1仲介サーバ200Aを示す第1位置情報RSaのみを含む仲介サーバ情報RSIを生成する。ベンダサーバ400は、新情報PKmb、RSIを示すデータを、プリンタ100に送信する。プリンタ100は、不揮発性記憶装置130に格納されている最新のクレデンシャルCI1に新情報PKmb、RSIを適用することによって、更新済のクレデンシャルCI2を生成する(第2クレデンシャルCI2と呼ぶ)。プリンタ100は、第2クレデンシャルCI2を、不揮発性記憶装置130に格納する。
図3(B)は、第2クレデンシャルCI2の例を示している。公開鍵ハッシュPKHは、新しい公開鍵PKmbから算出される。なお、本実施例では、プリンタ100は、初期クレデンシャルCI1を削除せずに、維持する。
【0064】
S206(
図4)では、プリンタ100は、シークレットSCと第2クレデンシャルCI2とを使用して、HMACを生成する。プロセッサ110は、生成したHMACのデータを、ベンダサーバ400に送信する。
【0065】
S210では、ベンダサーバ400は、S204で生成された新情報と、S206で取得されるHMACと、を使用して、新バウチャーヘッダを生成する。新バウチャーヘッダの複数の要素のうち、新情報と新たなHMACと以外の要素(例えば、プロトコル情報PI)は、S201で取得されるGUID0(以下、第1現行GUID0とも呼ぶ)に対応する検証済の第1バウチャーVC1aの対応する要素と同じ値に設定されてよい。
【0066】
S215では、ベンダサーバ400は、バウチャーデータベースD4(
図3(A))を参照し、第1現行GUID0に対応付けられるオーナーの公開鍵PKsaを取得する。ベンダサーバ400は、取得した公開鍵PKsaと、S204で生成した秘密鍵と、を使用して、第1現行GUID0に対応付けられる第1サービス事業者を示すエントリを生成する。ベンダサーバ400は、生成したエントリを新バウチャーヘッダと組み合わせることによって、新バウチャーVC2aを生成する(第2バウチャーVC2aとも呼ぶ)。
図3(C)は、第2バウチャーVC2aの例を示している。第1エントリET1は、第1サービスサーバ300Aのオーナーを示している。第2バウチャーVC2aは、S200(
図4)でプリンタ100によって生成される第2クレデンシャルCI2(
図3(B))に、対応している。
【0067】
S220(
図4)では、ベンダサーバ400は、バウチャーデータベースD4(
図3(A))を、更新する。本実施例では、ベンダサーバ400は、新たにバウチャーが生成される場合、第1現行GUID0に対応付けられるオーナーに関連する情報OW、NE、PKs、IXを削除する。
図3(D)は、バウチャーデータベースD4のシリアル番号SID0に対応付けられるオーナーに関連する情報OW、NE、PKs、IXの変化を示している。図中には、S130、S220、S330のそれぞれにおける更新済の情報が、示されている(S330については、後述)。図示するように、S220では、S130で設定された情報OWa(NE=1)、PKsa、IXaが、削除される。なお、ベンダサーバ400は、他の情報(例えば、情報GUID、VC、PKm、HMAC)を、S200、S210、S215で取得される情報に更新してよい。
【0068】
S225では、ベンダサーバ400は、第1現行GUID0に対応付けられるオーナーOWa(第1サービス事業者)の第1サービスサーバ300Aに、第2バウチャーVC2aのデータを送信する。第1サービスサーバ300Aは、取得した第2バウチャーVC2aのデータを、不揮発性記憶装置330に格納する。
【0069】
S225において、第1現行GUID0に対応付けられるサービスサーバを特定する方法は、任意の方法であってよい。例えば、ベンダサーバ400は、S220による更新前のバウチャーデータベースD4(
図3(A))から、第1現行GUID0に対応付けられる接続情報IXaを予め取得してよい。接続情報IXaは、第1現行GUID0に対応付けられる第1サービスサーバ300Aを示している。
【0070】
S230では、ベンダサーバ400は、FDOプロトコルの「Transfer Ownership Protocol 0 (TO0)」に従って、第2バウチャーVC2aと接続情報IXaとの登録指示を、第1仲介サーバ200Aに送信する。接続情報IXaは、S220による更新前のバウチャーデータベースD4(
図3(A))から、予め取得可能である。
【0071】
S235では、第1仲介サーバ200Aは、第2バウチャーVC2aに含まれるGUID0と、接続情報IXaとを、接続情報テーブルT2Aに登録する。
図3(E)は、接続情報テーブルT2Aの例を示している。接続情報テーブルT2Aは、接続情報テーブルT2B(
図2(I))と同様に、GUIDと接続情報IXとの対応関係を示している。第1行D2A1は、S235で登録されるGUID0と接続情報IXaを示している。
【0072】
プリンタ100は、
図4のS200(TO2の処理)の後、S240(
図5)で、再び、TO1の処理を実行する。本実施例では、前回のTO2の処理(ここでは、
図4のS200)の後、新たなサービスのための設定が行われていない場合(例えば、新たなサービスに使用されるサービス情報が不揮発性記憶装置130に格納されていない場合)、プリンタ100は、自発的に、TO1の処理を実行する。これに代えて、ベンダサーバ400は、S200で、プリンタ100に、TO1の処理の実行を指示してよい。
【0073】
S240(S243、S246を含む)では、S190(
図4)とは異なり、初期クレデンシャルCI1の代わりに最新の第2クレデンシャルCI2が参照される。第2クレデンシャルCI2の仲介サーバ情報RSI(ここでは、第1位置情報RSa)は、第1仲介サーバ200Aを示している。S243では、プリンタ100は、第2クレデンシャルCI2に含まれるGUID0のデータを、第1仲介サーバ200Aに送信する。S246では、第1仲介サーバ200Aは、接続情報テーブルT2A(
図3(E))を参照して、GUID0に対応付けられる接続情報IXaのデータを、プリンタ100に送信する。
【0074】
S250(S251、S252、S253を含む)では、プリンタ100は、接続情報IXaによって示される第1サービスサーバ300Aとの接続のためのTO2の処理を実行する。S250では、S200(
図4)とは異なり、初期クレデンシャルCI1の代わりに最新の第2クレデンシャルCI2が参照され、第1バウチャーVC1aの代わりに第2バウチャーVC2aが参照され、接続情報IXaによって示されるサーバは、第1サービスサーバ300Aである。
【0075】
S251では、プリンタ100は、第2クレデンシャルCI2に含まれるGUID0のデータを、第1サービスサーバ300Aに送信する。S252では、第1サービスサーバ300Aは、GUID0を示す第2バウチャーVC2aのデータと、メッセージ署名のデータとを、プリンタ100に送信する。メッセージ署名は、第2バウチャーVC2aのエントリET1(
図4:S215)に含まれる公開鍵PKsaに対応付けられる秘密鍵を使用して、生成される。プリンタ100は、第2バウチャーVC2aとメッセージ署名のデータを取得する。
【0076】
S253では、プリンタ100は、第2クレデンシャルCI2と第2バウチャーVC2aとを使用する検証を行う。本実施例では、S253でのバウチャーの検証方法は、FDO仕様書のTO2の解説で説明されているFDOデバイスによるバウチャーの検証方法と同じである。この検証では、第2クレデンシャルCI2(
図3(B)))の公開鍵ハッシュPKHを使用して、第2バウチャーVC2a(
図3(C))のヘッダVHの公開鍵PKmが検証される。検証済の公開鍵PKmを使用して、第2バウチャーVC2aのエントリET1の署名SD1が検証される。検証済のエントリET1の公開鍵PKs1を使用して、メッセージ署名が検証される。
図4のS215で説明したように、第2バウチャーVC2aは、第2クレデンシャルCI2に対応している。従って、バウチャーVC2aの検証は成功する。また、プリンタ100と第1サービスサーバ300Aとの正当性の検証も成功することとする。これらの検証の成功により、プリンタ100は、第1サービスサーバ300Aとのサービスのための接続を確立する。そして、プリンタ100と第1サービスサーバ300Aとは、第1サービスのための処理を開始する。
【0077】
第1サービスのための処理は、種々の処理を含み得る。例えば、プリンタ100と第1サービスサーバ300Aとは、サービスに使用されるサービス情報を交換する。プリンタ100は、第1サービスサーバ300Aから取得した第1サービス情報を、不揮発性記憶装置130に格納する。第1サービスサーバ300Aは、プリンタ100から取得した第2サービス情報を、不揮発性記憶装置330に格納する。第1サービス情報と第2サービス情報とは、サービスに使用される任意の情報であってよい(例えば、通信用のトークン、通信プロトコル、サービス用の識別番号、など)。
【0078】
S250の後、S255で、プリンタ100を使用するサービスを第1サービスから第2サービスへ変更するための手続きが行われることとする。例えば、第1ユーザは、プリンタ100を、第2サービスを希望する第2ユーザに譲渡する。第1ユーザ、または、第2ユーザは、第1サービスから第2サービスへの変更を、第1サービス事業者と第2サービス事業者とに通知する。
【0079】
S260では、第1ユーザは、プリンタ100の操作部150を操作することにより、ファクトリリセットの指示を入力する。S265では、プリンタ100は、指示に応じて、リセット処理を実行する。本実施例では、プリンタ100は、サービスのための第1サービス情報を、不揮発性記憶装置130から削除する。また、プリンタ100は、クレデンシャルを初期化する。具体的には、プリンタ100は、初期クレデンシャルCI1以外のクレデンシャル(ここでは、第2クレデンシャルCI2)を、不揮発性記憶装置130から削除する。これにより、最新のクレデンシャルは、初期クレデンシャルCI1になる。
【0080】
S270では、第1ユーザは、プリンタ100を第1サービス事業者に返却する。第1サービス事業者は、プリンタ100を、第2サービス事業者に送付する。第2サービス事業者は、プリンタ100を、第2ユーザに送付する。なお、第1サービス事業者と第2サービス事業者とのそれぞれによるプリンタ100の送付は、種々のタイミングで行われてよい。例えば、第1サービス事業者から第2サービス事業者へのプリンタ100の送付は、後述するS280よりも後に行われてよい。第2サービス事業者から第2ユーザへのプリンタ100の送付は、後述するS310よりも後に行われてよい。なお、第1ユーザは、プリンタ100を、直接に第2ユーザに送付してよい。
【0081】
S275では、第1サービスサーバ300Aは、第2バウチャーVC2aに、第2サービス事業者を示すエントリを追加する。これにより生成されるバウチャーを、第3バウチャーVC2abと呼ぶ。本実施例では、S255の手続きにおいて、第2サービス事業者は、第2サービス事業者の秘密鍵に対応付けられる公開鍵PKsbのデータを、第1サービス事業者に提供する。第1サービスサーバ300Aは、この公開鍵PKsbを使用して、エントリを生成する。
図3(F)は、第3バウチャーVC2abの例を示している。第3バウチャーVC2abは、第2バウチャーVC2a(
図3(C))に第2エントリET2を追加したものである。第2エントリET2の公開鍵PKs2は、第2サービス事業者の公開鍵PKsbである。第2エントリET2の署名SD2は、旧オーナーである第1サービス事業者の秘密鍵を使用して、算出される。
【0082】
S280(
図5)では、第1サービスサーバ300Aは、第3バウチャーVC2abと、プリンタ100のシリアル番号SID0と、のそれぞれのデータを、第2サービスサーバ300Bに送信する。
【0083】
続くS310、S320、S325、S330、S335、S340は、
図4のS110、S120、S125、S130、S135、S140と、それぞれ同じ手続きを示している。ただし、使用される情報は、異なり得る。また、第1サービスサーバ300Aは、第2サービスサーバ300Bに置換される。
【0084】
S310では、第2サービスサーバ300Bは、更新用バウチャーの登録指示を、ベンダサーバ400に送信する。この指示は、第3バウチャーVC2abと、プリンタ100のシリアル番号SID0と、のそれぞれのデータを含んでいる。
【0085】
S320では、ベンダサーバ400は、第3バウチャーVC2abを検証する。検証方法は、S120(
図4)での検証方法と、同じである。ベンダサーバ400は、第3バウチャーVC2ab(
図3(F))のバウチャーヘッダVHとエントリET1、ET2を、順に検証する。
【0086】
S325(
図5)は、
図4のS125と同じである。ここで、ベンダサーバ400は、新たに生成した秘密鍵と公開鍵とを使用して、新たな更新用バウチャーVC1wを生成する。
【0087】
S330では、ベンダサーバ400は、バウチャーデータベースD4(
図3(A))を更新する。本実施例では、ベンダサーバ400は、シリアル番号SID0に対応付けられるオーナーに関連する情報OW、NE、PKs、IXを、検証済の第3バウチャーVC2abによって示される最新のオーナーに関連する情報に更新する。
図3(D)に示すように、S330による更新後には、オーナーOWは、第2サービス事業者を示すオーナーOWbである(エントリ数NEは、2である)。公開鍵PKsは、第2サービス事業者の公開鍵PKsbである。この公開鍵PKsbは、検証済のバウチャーVC2ab(
図3(F))の最後のエントリET2から取得される。接続情報IXは、第2サービス事業者の第2サービスサーバ300Bを示す接続情報IXbである。この接続情報IXbは、サービスサーバからの更新バウチャー登録指示(例えば、S310(
図5))に含まれてよい。これに代えて、接続情報IXbは、更新バウチャー登録指示の送信装置(ここでは、第2サービスサーバ300B)に予め対応付けられる情報であってい。なお、ベンダサーバ400は、更に、他の情報(例えば、情報GUID、VC、PKm、HMAC)を、検証済の第3バウチャーVC2abに含まれる情報に更新してよい。
【0088】
S335(
図5)では、ベンダサーバ400は、FDOプロトコルのTO0に従って、更新用バウチャーVC1wとベンダ接続情報IXu0との登録指示を、第2仲介サーバ200Bに送信する。S340では、第2仲介サーバ200Bは、更新用バウチャーVC1wに含まれるGUID0と、接続情報IXu0とを、接続情報テーブルT2Bに登録する(
図2(I))。
【0089】
第2ユーザは、プリンタ100を受け取る(
図5:S270)。その後のS345(
図6)は、
図4のS145と同じである。
【0090】
続くS390、S400、S410、S415、S420、S425、S430、S435、S440、S450は、
図4、
図5のS190、S200、S210、S215、S220、S225、S230、S235、S240、S250と、それぞれ同じ手続きを示している。ただし、使用される情報は、異なり得る。また、第1サービスサーバ300Aは、第2サービスサーバ300Bに置換される。
【0091】
図6のS390(S393、S396を含む)では、プリンタ100は、FDOプロトコルのTO1の処理を実行する。最新のクレデンシャルCI1は、GUID0と、第2仲介サーバ200Bを示す第2位置情報RSbと、を示している。S393では、プリンタ100は、GUID0のデータを、第2仲介サーバ200Bに送信する。S396では、第2仲介サーバ200Bは、GUID0に対応付けられるベンダ接続情報IXu0のデータを、プリンタ100に送信する。
【0092】
S400(S401、S402、S403、S404、S406を含む)では、プリンタ100は、ベンダ接続情報IXu0によって示されるベンダサーバ400との接続を、FDOプロトコルのTO2に従って行う。S401、S402、S403は、
図4のS201、S202、S203と、それぞれ同じ手続きを示している(
図4の更新用バウチャーVC1uに代えて、更新用バウチャーVC1wが使用される)。S404、S406は、
図4のS204、S206と、それぞれ同じ手続きを示している。S404では、プリンタ100は、ベンダサーバ400からの新情報PKm、RSI(=RSa)を最新のクレデンシャルCI1に適用することによって、更新済のクレデンシャルCI3を生成する(第3クレデンシャルCI3と呼ぶ)。プリンタ100は、第3クレデンシャルCI3を、不揮発性記憶装置130に格納する。S406では、プリンタ100は、シークレットSCと第3クレデンシャルCI3とを使用して得られるHMACのデータを、ベンダサーバ400に送信する。
【0093】
S410では、ベンダサーバ400は、S404で生成された新情報PKm、RSIと、S406で取得されるHMACと、を使用して、新バウチャーヘッダを生成する。
【0094】
S415(
図6)では、ベンダサーバ400は、バウチャーデータベースD4(
図3(A)、
図3(D))を参照し、S401で取得されるGUID0(第2現行GUID0と呼ぶ)に対応付けられるオーナー(第2サービス事業者)の公開鍵PKsbを取得する。ベンダサーバ400は、取得した公開鍵PKsbと、S404で生成した秘密鍵と、を使用して、第2サービス事業者を示すエントリを生成する。ベンダサーバ400は、生成したエントリを新バウチャーヘッダと組み合わせることによって、新バウチャーVC3bを生成する(第4バウチャーVC3bとも呼ぶ)。
図3(G)は、第4バウチャーVC3bの例を示している。図示するように、第4バウチャーVC3bは、第2サービスサーバ300Bのオーナーを示す1個のエントリET1を含んでいる(第1サービスサーバ300Aのためのエントリは、第4バウチャーVC3bには含まれない)。また、第4バウチャーVC3bは、S400(
図6)でプリンタ100によって生成される第3クレデンシャルCI3に、対応している。
【0095】
S420では、ベンダサーバ400は、バウチャーデータベースD4(
図3(A))のうち、第2現行GUID0に対応付けられる情報を、更新する(本実施例では、オーナーに関連する情報OW、NE、PKs、IXが、削除される)。
【0096】
S425では、ベンダサーバ400は、第2現行GUID0に対応付けられる第2サービスサーバ300Bに、第4バウチャーVC3bのデータを送信する。第2サービスサーバ300Bは、取得した第4バウチャーVC3bのデータを、不揮発性記憶装置330に格納する。
【0097】
S430では、ベンダサーバ400は、FDOプロトコルのTO0に従って、第4バウチャーVC3bと接続情報IXbとの登録指示を、第1仲介サーバ200Aに送信する。接続情報IXbは、第2現行GUID0に対応付けられる第2サービスサーバ300Bを示している。接続情報IXbは、例えば、S420による更新前のバウチャーデータベースD4(
図3(D)のS330の情報)から、予め取得される。S435では、第1仲介サーバ200Aは、第4バウチャーVC3bに含まれるGUID0と、接続情報IXbとを、接続情報テーブルT2Aに登録する。
【0098】
続くS440、S450は、
図5のS240、S250と、それぞれ同じ手続きを示している。ここで、第1サービスサーバ300Aは、第2サービスサーバ300Bに置換される。
【0099】
S440(S443、S446を含む)では、プリンタ100は、接続情報を取得するためのTO1の処理を実行する。最新の第3クレデンシャルCI3は、GUID0と、第1仲介サーバ200Aを示す第1位置情報RSaと、を示している。S443では、プリンタ100は、GUID0のデータを、第1仲介サーバ200Aに送信する。S446では、第1仲介サーバ200Aは、GUID0に対応付けられる接続情報IXbのデータを、プリンタ100に送信する。
【0100】
S450(S451、S452、S453を含む)では、プリンタ100は、接続情報IXbによって示される第2サービスサーバ300Bとの接続のためのTO2の処理を実行する。S451では、プリンタ100は、最新の第3クレデンシャルCI3に含まれるGUID0のデータを、第2サービスサーバ300Bに送信する。S452では、第2サービスサーバ300Bは、GUID0を示す第4バウチャーVC3bとメッセージ署名とのデータを、プリンタ100に送信する。プリンタ100は、第4バウチャーVC3bとメッセージ署名とのデータを取得する。S453では、プリンタ100は、第3クレデンシャルCI3と第4バウチャーVC3bとを使用する検証を行う。
図6のS415で説明したように、第4バウチャーVC3bは、第3クレデンシャルCI3に対応している。従って、この検証は、成功する。また、プリンタ100と第2サービスサーバ300Bとの正当性の検証も成功することとする。これにより、プリンタ100は、第2サービスサーバ300Bとのサービスのための接続を確立する。そして、プリンタ100と第2サービスサーバ300Bとは、第2サービスのための処理を開始する。
【0101】
以上のように、本実施例では、プリンタ100(
図1)は、不揮発性記憶装置130を備えている。不揮発性記憶装置130は、クレデンシャルCI(例えば、クレデンシャルCI1、CI2、CI3)を格納するように、構成されている。S253(
図5)、S453(
図6)で説明したように、プリンタ100は、クレデンシャルCIとバウチャーVCとを使用する検証を行うことによって、サービスサーバとの接続を確立する。クレデンシャルCIとバウチャーVCとは、それぞれ、認証情報の例である。クレデンシャルCIは、プリンタ100の記憶装置に格納される第1種認証情報の例である。バウチャーVCは、クレデンシャルとともに検証に使用される第2種認証情報の例である。
【0102】
プリンタ100のプロセッサ110は、以下の処理を実行する。
図6のS400(具体的には、S401-S404)では、プリンタ100は、ベンダサーバ400との接続のためのベンダ接続情報IXu0に従ってベンダサーバ400にアクセスすることによって、ベンダサーバ400によって提供される新情報(新たな公開鍵PKmを含む)を取得する。そして、プロセッサ110は、新情報PKmを使用して、新たなクレデンシャルCI3を取得する(本実施例では、プロセッサ110は、新情報PKmを使用して、新たなクレデンシャルCI3を生成する)。新情報PKmは、新たなクレデンシャルCI3の取得に使用される特定情報の例である(特定情報PKmとも呼ぶ)。ベンダサーバ400は、特定情報PKmをプリンタ100に提供する管理サーバの例である。
【0103】
S440では、プロセッサ110は、第1位置情報RSaによって示される第1仲介サーバ200Aから、新たなクレデンシャルCI3(具体的には、クレデンシャルCI3に含まれるGUID0)を使用することによって、第2サービスサーバ300Bとの接続のための接続情報IXbを取得する。S430で説明したように、接続情報IXbは、第4バウチャーVC3bに対応付けられている。S410、S415で説明したように、第4バウチャーVC3bは、特定情報PKmを使用して、生成される。すなわち、第4バウチャーVC3bは、特定情報PKmに対応付けられている。このように、接続情報IXbは、特定情報PKmに対応付けられる第4バウチャーVC3bであってベンダサーバ400によって生成された第4バウチャーVC3bに対応付けられている。第1仲介サーバ200Aは、このような接続情報IXbを有している。
【0104】
S451、S452では、プロセッサ110は、接続情報IXbに従って第2サービスサーバ300Bにアクセスすることによって第2サービスサーバ300Bから第4バウチャーVC3bを取得する。そして、S453では、プロセッサ110は、新たなクレデンシャルCI3と第4バウチャーVC3bとを使用する検証を行うことによって、第2サービスサーバ300Bとの接続を確立する。
【0105】
このように、プリンタ100は、新たなクレデンシャルCI3を使用することによって、第2サービスサーバ300Bとのサービスのための接続を安全に確立できる。また、プリンタ100と不適切なサービスサーバとの接続の可能性は、低減する。例えば、
図6のS435の後に、以下に説明するように、不適切な第1サービスサーバ300Aとの接続のためのTO0、TO1、TO2の処理が行われると仮定する。すなわち、第1仲介サーバ200Aには、TO0の処理によって、第2バウチャーVC2aと接続情報IXaとが登録される。続くTO1の処理では、プリンタ100は、第1仲介サーバ200Aから接続情報IXaを取得する。続くTO2の処理では、プリンタ100は、第1サービスサーバ300Aから第2バウチャーVC2aを取得する。しかし、第2バウチャーVC2aのヘッダVHの公開鍵PKmは、新たな第3クレデンシャルCI3の公開鍵ハッシュPKHと整合しないので、バウチャーVC2aの検証は失敗する。このように、クレデンシャルの更新により、プリンタ100と不適切な第1サービスサーバ300Aとのサービスのための接続の確立を防ぐことができる。
【0106】
また、S400(
図6)では、プリンタ100は、ベンダサーバ400によって提供される特定情報PKmを使用して新たなクレデンシャルCI3を取得する。すなわち、クレデンシャルは、ベンダサーバ400によって管理可能である。また、本実施例では、クレデンシャルは、製造事業者、または、管理事業者にプリンタ100を送付せずに、ネットワークを介して更新可能である。
【0107】
また、
図6のS390(具体的には、S396)では、プリンタ100のプロセッサ110は、ベンダサーバ400との通信(S400)の前に、第2仲介サーバ200Bからベンダサーバ400との接続のためのベンダ接続情報IXu0を取得する。従って、プロセッサ110は、ベンダサーバ400に適切にアクセスできる。例えば、ベンダサーバ400のIPアドレスは、変更され得る。IPアドレスの変更に起因して、プリンタ100がベンダサーバ400にアクセスできない可能性がある。本実施例では、プリンタ100は、新しいIPアドレスを示すベンダ接続情報IXu0を、第2仲介サーバ200Bから取得可能である。従って、上記の不具合の可能性は、低減する。
【0108】
また、第2仲介サーバ200Bからのベンダ接続情報IXu0の取得(S390)は、FIDO Device Onboarding (FDO) のTransfer Ownership Protocol 1 (TO1)に従って、行われる。すなわち、プリンタ100のプロセッサ110は、オンボーディングの処理の一環として、ベンダ接続情報IXu0を取得できる。従って、ベンダ接続情報IXu0の取得のためのプロトコルを新たに準備する場合と比べて、プリンタ100とベンダサーバ400との安全な接続のための設計の負担は、軽減可能である。
【0109】
また、
図6のS400(具体的には、S404)では、プリンタ100のプロセッサ110は、第1仲介サーバ200Aとの通信(S440)の前に、ベンダサーバ400から第1仲介サーバ200Aの第1位置情報RSaを取得する。従って、プロセッサ110は、第1仲介サーバ200Aと適切に通信できる。例えば、第1仲介サーバ200AのIPアドレスは、変更され得る。IPアドレスの変更に起因して、プリンタ100が第1仲介サーバ200Aと通信できない可能性がある。本実施例では、プリンタ100は、新しいIPアドレスを示す第1位置情報RSaを、ベンダサーバ400から取得可能である。従って、上記の不具合の可能性は、低減する。
【0110】
また、ベンダサーバ400による特定情報PKmの提供(S404)は、FIDO Device Onboarding (FDO) のTransfer Ownership Protocol 2 (TO2)に従って、行われる。すなわち、プリンタ100のプロセッサ110は、オンボーディングの処理の一環として、特定情報PKmを取得できる。従って、特定情報PKmの取得のためのプロトコルを新たに準備する場合と比べて、プリンタ100とベンダサーバ400との安全な接続のための設計の負担は、軽減可能である。
【0111】
また、プリンタ100のプロセッサ110は、S200(
図4)で、第2サービスサーバ300Bとは異なる他のサービスサーバ300Aとの接続のためのクレデンシャルCI2を不揮発性記憶装置130に格納する。この後に、プロセッサ110は、S400(
図6)で、新たなクレデンシャルCI3を不揮発性記憶装置130に、格納する。そして、S450(具体的には、S453)では、プロセッサ110は、新たなクレデンシャルCI3を使用して、第2サービスサーバ300Bとの接続を確立する。このように、通信すべきサービスサーバが変更される場合に、プロセッサ110は、新たなクレデンシャルCI3を使用して、新たなサービスサーバ300Bとの接続を、適切に、確立できる。
【0112】
また、
図3(G)に示すように、新たなクレデンシャルCI3に対応する第4バウチャーVC3bは、第1サービスサーバ300Aのためのエントリを含まずに、第2サービスサーバ300Bのための第1エントリET1を含んでいる。すなわち、
図6のS450(具体的には、S452)では、プロセッサ110は、旧のサービスサーバ300Aとの接続のための情報を含まずに、新たなサービスサーバ300Bとの接続のための情報を含む、第4バウチャーVC3bを取得する。プリンタ100とサービスサーバとの新たな接続のための検証(S453)では、プロセッサ110は、このような第4バウチャーVC3bと、第4バウチャーVC3bに対応するクレデンシャルCI3とを、使用する。従って、旧のサービスサーバ300Aとの接続のための情報を含むバウチャー(例えば、バウチャーVC2a(
図3(C))を使用する不適切な接続の可能性は、低減する。
【0113】
B.第2実施例:
図7-
図10は、設定処理の別の実施例を示すシーケンス図である。
図4-
図6の設定処理との差異は、以下の4点である。
(1)ベンダ接続情報IXu0が、予め、プリンタ100の不揮発性記憶装置130に格納されている。
(2)プリンタ100は、クレデンシャルの更新が必要か否かを判断する。
(3)クレデンシャルの更新が必要と判断される場合に、プリンタ100は、第2仲介サーバ200BとのTO1の処理を実行せずに、ベンダサーバ400とのTO2の処理を実行する。
(4)クレデンシャルの更新が不要と判断される場合に、プリンタ100は、クレデンシャルに従って、TO1の処理とTO2の処理とを実行する。
図7-
図10において、
図4-
図6のステップと同じステップには、同じ符号を付して、説明を省略する。
【0114】
図7のS110-S145は、
図4のS110-S145と、それぞれ同じである。
【0115】
接続指示(S145)に応じて、プリンタ100は、S148で、不揮発性記憶装置130に格納されたクレデンシャルCIの更新が必要か否かを判断する。クレデンシャルCIの更新が必要であると判断するための条件は、種々の条件であってよい。本実施例では、プリンタ100は、今回の接続指示が、ファクトリリセット後の最初の接続指示である場合に、クレデンシャルCIの更新が必要であると判断する。プリンタ100の出荷後の初めての起動は、ファクトリリセット後の最初の起動として、扱われる。今回の接続指示が、ファクトリリセット後の2回目以降の接続指示である場合、プリンタ100は、クレデンシャルCIの更新が不要であると判断する。
【0116】
クレデンシャルCIの更新が必要であると判断される場合(S148:Yes)、プリンタ100は、TO1の処理(例えば、
図4のS190)を実行せずに、S200で、TO2の処理を実行する。ここで、プリンタ100は、不揮発性記憶装置130に格納されたベンダ接続情報IXu0を使用する。
【0117】
図7のS200-S235は、
図4の200-S235と、それぞれ同じである。続くS240、S250(
図8)は、
図5のS240、S250と、それぞれ同じである。
【0118】
図7のS148で、クレデンシャルCIの更新が不要であると判断される場合(S148:No)、プリンタ100は、
図10のS540、S550の処理を実行する。
図7のS200で説明したように、ファクトリリセット後の最初の接続指示に応じて、プリンタ100は、サービスサーバとの接続のためのFDOプロトコルのTO1、TO2の処理に適するクレデンシャルCI(例えば、クレデンシャルCI2)を不揮発性記憶装置130に格納する。今回の接続指示が、ファクトリリセット後の2回目以降の接続指示である場合、プリンタ100は、不揮発性記憶装置130に格納されているクレデンシャルCIを使用して、サービスサーバとの接続を、適切に、確立できる。
【0119】
S540(S543、S546を含む)では、プロセッサ110は、FDOプロトコルのTO1の処理を実行する。不揮発性記憶装置130に格納済のクレデンシャルCIの仲介サーバ情報RSIは、第1位置情報RSa(すなわち、第1仲介サーバ200A)を示している。S543では、プリンタ100は、クレデンシャルCIに含まれるGUIDのデータを、第1位置情報RSaによって示される第1仲介サーバ200Aに送信する。S546では、第1仲介サーバ200Aは、GUIDに対応付けられる接続情報IXzのデータを、プリンタ100に送信する。接続情報IXzは、サービスサーバ(例えば、第1サービスサーバ300A、または、第2サービスサーバ300B)を示している。
【0120】
S550では、プリンタ100は、接続情報IXzによって示されるサービスサーバとの接続のためのTO2の処理を実行する。そして、プリンタ100とサービスサーバとは、サービスのための処理を開始する。
【0121】
S250(
図8)の後、S255で、プリンタ100を使用するサービスを第1サービスから第2サービスへ変更するための手続きが行われる。S255-S340は、
図5のS255-S340と、それぞれ同じである。例えば、S265では、プリンタ100は、サービスのための第1サービス情報を不揮発性記憶装置130から削除し、クレデンシャルを初期化する。なお、ベンダ接続情報IXu0のデータは、削除されずに、維持される。
【0122】
第2ユーザは、プリンタ100を受け取る(
図8:S270)。その後のS345(
図9)は、
図7のS145と同じである。接続指示の入力(S345)に応じて、プリンタ100は、S348で、クレデンシャルCIの更新が必要か否かを判断する。S348の判断条件は、S148(
図7)の判断条件と同じである。クレデンシャルCIの更新が不要であると判断される場合(S348:No)、プリンタ100は、
図10のS540、S550の処理を実行する。
【0123】
クレデンシャルCIの更新が必要であると判断される場合(S348:Yes)、プリンタ100は、TO1の処理(例えば、
図6のS390)を実行せずに、S400で、TO2の処理を実行する。ここで、プリンタ100は、不揮発性記憶装置130に格納されたベンダ接続情報IXu0を使用する。
【0124】
図9のS400-S450は、
図6のS400-S450と、それぞれ同じである。
【0125】
以上のように、本実施例の設定処理(
図7-
図10)は、
図4-
図6の設定処理からS190(
図4)とS390(
図6)とを除いた残りのステップを、含んでいる。従って、本実施例は、
図4-
図6の実施例のものと同じ種々の利点を有する(S190、S390に起因する利点を除く)。
【0126】
また、プリンタ100のプロセッサ110は、以下の処理を実行する。S348(
図9)では、プロセッサ110は、不揮発性記憶装置130に格納されたクレデンシャルCIの更新が必要であるか否かを確認する。本実施例では、プロセッサ110は、外部装置に問い合わせずに、更新が必要であるか否かを判断する。そして、不揮発性記憶装置130に格納されたクレデンシャルCIの更新が必要であると確認される場合に(S348:Yes)、プロセッサ110は、S400、S440の処理を実行する。S400(具体的には、S401-S404)では、プロセッサ110は、ベンダ接続情報IXu0に従ってベンダサーバ400にアクセスすることによってベンダサーバ400によって提供される特定情報PKmを取得する。そして、プロセッサ110は、特定情報PKmを使用して、新たなクレデンシャルCI3を取得する。S440では、プロセッサ110は、新たなクレデンシャルCI3の取得(S400)の後に、ベンダサーバ400から取得された第1位置情報RSaによって示される第1仲介サーバ200Aから接続情報IXbを取得する。
【0127】
さらに、不揮発性記憶装置130に格納されたクレデンシャルCIの更新が不要であると確認される場合に(S348:No)、プロセッサ110は、ベンダサーバ400にアクセスせずに、S540(
図10)の処理を実行する。S540では、プロセッサ110は、第1位置情報RSaによって示される第1仲介サーバ200Aから、不揮発性記憶装置130に格納されたクレデンシャルCIに対応付けられるサービスサーバとの接続のための接続情報IXzを取得する。
【0128】
このように、プロセッサ110は、不揮発性記憶装置130に格納されたクレデンシャルCIの更新が必要であるか否かに応じて、サービスサーバとの接続のための適切な処理を実行できる。例えば、クレデンシャルCIの更新が不要と判断される場合には、プリンタ100とベンダサーバ400との通信(具体的には、クレデンシャルCIの更新のための通信)が省略されるので、プリンタ100とベンダサーバ400との通信負荷は、軽減可能である。
【0129】
なお、本実施例の設定処理は、第2仲介サーバ200Bを使用せずに、進行可能である。従って、S135、S140(
図7)、S335、S340(
図8)は、省略されてよい。そして、第2仲介サーバ200Bは、省略されてよい。また、クレデンシャルCIの更新が不要であると判断される場合に、プロセッサ110は、さらに、TO1の処理(
図10:S540)とTO2の処理(S550)とのそれぞれが必要か否かを判断してよい。例えば、不揮発性記憶装置130に、サービスサーバとの通信のためのサービス情報が格納されている場合、プリンタ100は、TO1の処理とTO2の処理との両方を行わずに、サービスサーバとのサービスのための通信を開始してよい。なお、クレデンシャルCIの更新が必要であると判断するための更新条件は、上記の条件に代えて、他の種々の条件であってよい。例えば、更新条件は、サービスのためのサービス情報が不揮発性記憶装置130に格納されていないこと、を含んでよい。
【0130】
また、本実施例において、S148(
図7)、S348(
図9)は、省略されてよい。すなわち、プロセッサ110は、不揮発性記憶装置130に格納されたクレデンシャルCIの更新が必要であるか否かを確認せずに、S200、S240(
図7、
図8)、S400、S440(
図9)の処理を実行してよい。この場合も、プロセッサ110は、ベンダサーバ400にアクセスすることによってベンダサーバ400によって提供される特定情報PKmを使用して、新たなクレデンシャルCIを取得する(S200、S400)。プリンタ100は、新たなクレデンシャルCIを使用することによって、サービスサーバとの接続を安全に確立できる。なお、この場合、
図8のS330でベンダサーバ400がバウチャーデータベースD4にオーナーの公開鍵PKsbを登録した後に、
図9のS410、S415、S420の処理が、複数回、繰り返され得る。繰り返されるS415のそれぞれにおいてベンダサーバ400がバウチャーデータベースD4からオーナーの公開鍵PKsを取得できるように、S420では、ベンダサーバ400は、最新のオーナーに関連する情報OW、NE、PKs、IXを、バウチャーデータベースD4から削除せずに維持することが好ましい。S420では、プロセッサ110は、サービスサーバとの接続のためのバウチャーの生成(S415)に応じて、バウチャーデータベースD4を更新する。ここで、プロセッサ110は、新たに生成されたバウチャーの情報を、バウチャーデータベースD4に登録してよい。
図7のS220についても、同じである。
【0131】
C.第3実施例:
図11-
図13は、設定処理の別の実施例を示すシーケンス図である。
図4-
図6の設定処理との差異は、以下の5点である。
(1)ベンダ接続情報IXu0が、予め、プリンタ100の不揮発性記憶装置130に格納されている。
(2)クレデンシャルCI(
図2(C))の仲介サーバ情報RSIは、2個の位置情報RSa、RSb(
図2(B))を含んでいる(優先順は、RSa、RSbの順である)
(3)プリンタ100は、ベンダサーバ400に、クレデンシャルの更新が必要か否かを問い合わせる。
(4)クレデンシャルの更新が不要と判断される場合、プリンタ100は、不揮発性記憶装置130に格納されているクレデンシャルCIを使用して、サービスサーバとの接続のためのTO1、TO2の処理を実行する。
(5)クレデンシャルの更新が必要と判断される場合、プリンタ100は、ベンダサーバ400とのTO2の処理によって、クレデンシャルを更新する。
図11-
図13において、
図4-
図6のステップと同じ手続きを示すステップには、同じ符号を付して、説明を省略する。
図4-
図6と
図11-
図13との間では、同じ符号のステップで使用される情報は、異なり得る。
【0132】
S115では、第1サービス事業者は、プリンタ100を第1ユーザに送付する。この段階では、プリンタ100の不揮発性記憶装置130には、初期クレデンシャルCI4が格納されている。初期クレデンシャルCI4の仲介サーバ情報RSIは、第1位置情報RSaと第2位置情報RSbとを含んでいる。またGUIDは、GUID0である。また、第1サービスサーバ300AのサービステーブルT3Aには、プリンタ100のシリアル番号SID0と、初期クレデンシャルCI4に対応する第5バウチャーVC4aとが、互いに対応付けて登録されている。第5バウチャーVC4aは、第1サービスサーバ300Aを示すエントリを含んでる。
【0133】
S117では、第1サービスサーバ300Aは、FDOプロトコルのTO0に従って、第5バウチャーVC4aと接続情報IXaとの登録指示を、第1仲介サーバ200Aに送信する。S118では、第1仲介サーバ200Aは、第5バウチャーVC4aに含まれるGUID0と、接続情報IXaとを、接続情報テーブルT2Aに登録する。
【0134】
S145は、
図4のS145と同じである。接続指示の入力(S145)に応じて、プリンタ100は、S150で、クレデンシャルCIの更新が必要か否かを、ベンダ接続情報IXu0によって示されるベンダサーバ400に問い合わせる。この問合せは、プリンタ100のシリアル番号SID0のデータを含んでいる。
【0135】
S155では、ベンダサーバ400は、バウチャーデータベースD4を参照して、クレデンシャルの更新が必要か否かを判断する。
図14は、バウチャーデータベースD4のシリアル番号SID0に対応付けられる情報OW、NE、PKs、IXの変化を示す説明図である。図中には、S155、S330、S355、S420のそれぞれにおける情報が、示されている。図示するように、S155では、情報OW、NE、PKs、IXは、未登録である(すなわち、シリアル番号SID0には、新オーナーの情報は、対応付けられていない)。この場合、ベンダサーバ400は、クレデンシャルの更新は不要であると判断する。S160(
図11)では、ベンダサーバ400は、更新不要を示す応答を、プリンタ100に送信する。
【0136】
S165では、プリンタ100は、ベンダサーバ400からの応答が、更新必要を示すか否かを判断する。ここで、応答は、更新不要を示している(S165:No)。この場合、プリンタ100は、
図12のS240(TO1の処理)とS250(TO2の処理)とを実行する。S240、S250の手続きは、
図5のS240、S250の手続きと、それぞれ同じである。ただし、以下に説明するように、手続きに使用される情報の一部は、
図5の実施例で参照される情報と異なっている。
【0137】
S240(S243、S246を含む)では、最新のクレデンシャルCI4は、GUID0と、位置情報RSa、RSbと、を示している。S243では、プリンタ100は、位置情報RSa、RSbのうち、第1優先の第1位置情報RSaによって示される第1仲介サーバ200Aに、GUID0のデータを送信する。S246では、第1仲介サーバ200Aは、GUID0に対応付けられる接続情報IXaのデータを、プリンタ100に送信する。
【0138】
S250のS252では、第1サービスサーバ300Aは、GUID0に対応付けられる第5バウチャーVC4aのデータを、プリンタ100に送信する。S253では、互いに対応付けられる初期クレデンシャルCI4と第5バウチャーVC4aとが使用されるので、バウチャーの検証は、成功する。プリンタ100は、第1サービスサーバ300Aとの接続を確立する。そして、プリンタ100と第1サービスサーバ300Aとは、第1サービスのための処理を開始する。
【0139】
S250の後、S255で、プリンタ100を使用するサービスを第1サービスから第2サービスへ変更するための手続きが行われる。S255-S340の手続きは、
図5のS255-S340の手続きと、それぞれ同じである。ただし、以下に説明するように、手続きに使用される情報の一部は、
図5の実施例で使用される情報と異なっている。
【0140】
例えば、S265では、プリンタ100は、サービスのための第1サービス情報を不揮発性記憶装置130から削除し、クレデンシャルを初期化する。これにより、最新のクレデンシャルは、初期クレデンシャルCI4になる。ベンダ接続情報IXu0のデータは、削除されずに、維持される。
【0141】
S275では、第1サービスサーバ300Aは、第5バウチャーVC4aに、第2サービス事業者を示すエントリを追加することによって、第6バウチャーVC4abを生成する。S280、S310、S320、S325、S330では、
図5の第3バウチャーVC2abに代えて、第6バウチャーVC4abが使用される。また、本実施例では、
図5の更新用バウチャーVC1wに代えて、初期クレデンシャルCI4に対応する更新用バウチャーVC4uが生成されることとする。S320では、検証に成功することとする。
【0142】
S330では、ベンダサーバ400は、バウチャーデータベースD4(
図14)のシリアル番号SID0に対応付けられる情報OW、NE、PKs、IXを、第6バウチャーVC4abによって示される最新のオーナーに関連する情報に更新する。
図14に示すように、S330による更新後には、オーナーOWbは、第2サービス事業者を示している(エントリ数NEは、2である)。公開鍵PKsbは、第2サービス事業者の公開鍵であり、接続情報IXbは、第2サービス事業者の第2サービスサーバ300Bを示している。
【0143】
第2ユーザは、プリンタ100を受け取る(
図12:S270)。その後のS345(
図13)は、
図11のS145と同じである。
【0144】
接続指示の入力に応じて、プリンタ100は、S350を実行する。S350の処理は、S150(
図11)の処理と同じである。
【0145】
S355では、ベンダサーバ400は、バウチャーデータベースD4を参照して、クレデンシャルの更新が必要か否かを判断する。
図14に示すように、S355では、シリアル番号SID0に対応付けられる情報OW、NE、PKs、IXは、S330による更新済の情報(すなわち、新たなオーナーの情報)を示している。すなわち、シリアル番号SID0には、新オーナーの情報が対応付けられている。この場合、ベンダサーバ400は、クレデンシャルの更新は必要であると判断する。S360(
図13)では、ベンダサーバ400は、更新必要を示す応答を、プリンタ100に送信する。
【0146】
S365では、プリンタ100は、ベンダサーバ400からの応答が、更新必要を示すか否かを判断する。ここで、応答は、更新必要を示している(S365:Yes)。この場合、S370で、プリンタ100は、最新のクレデンシャルCI4に含まれる位置情報RSa、RSbのうち、第2優先の第2位置情報RSbによって示される第2仲介サーバ200Bに、バウチャーが登録済か否かを問い合わせる。この問合せは、クレデンシャルCI4に含まれるGUID0のデータを含んでいる。
【0147】
S375では、第2仲介サーバ200Bは、接続情報テーブルT2Bを参照し、GUID0に関連する情報が登録済であるか否かを確認する。S340(
図12)で説明したように、接続情報テーブルT2Bには、GUID0に対応付けられる接続情報IXu0が登録されている。S380では、第2仲介サーバ200Bは、登録済を示す応答を、プリンタ100に送信する。仮に、第2仲介サーバ200Bからの応答が「未登録」を示す場合、プリンタ100は、設定処理を終了する(図示省略)。応答が「登録済」を示す場合、プリンタ100は、S390へ移行する。
【0148】
S390-S450の手続きは、
図6のS390-S450の手続きと、それぞれ同じである。ただし、以下に説明するように、手続きに使用される情報の一部は、
図6の実施例で使用される情報と異なり得る。
【0149】
例えば、S390では、プリンタ100は、最新のクレデンシャルCI4に含まれる位置情報RSa、RSbのうち、第2優先の第2位置情報RSbによって示される第2仲介サーバ200Bと、通信する。
【0150】
S404では、ベンダサーバ400は、第1位置情報RSaと第2位置情報RSbとを含む新たな仲介サーバ情報RSIを生成する(優先順は、RSa、RSbである)。プリンタ100は、不揮発性記憶装置130に格納されているクレデンシャルCI4に400から取得された新情報(新たな公開鍵PKmと新たな仲介サーバ情報RSIとを含む)を適用することによって、更新済の第5クレデンシャルCI5を生成する。
【0151】
S415では、ベンダサーバ400は、バウチャーデータベースD4(
図14)に登録済のオーナーの公開鍵PKsbを使用してエントリを生成し、生成したエントリを含む第7バウチャーVC5bを生成する。
【0152】
S420では、ベンダサーバ400は、バウチャーデータベースD4(
図14)のうち、S401で取得されるGUID0に対応付けられる情報を更新する(本実施例では、オーナーに関連する情報OW、NE、PKs、IXが、削除される)。
【0153】
S435では、第1仲介サーバ200Aは、第7バウチャーVC5bに含まれるGUID0と、接続情報IXbとを、接続情報テーブルT2Aに登録する。
【0154】
S440では、プリンタ100は、最新のクレデンシャルCI5に含まれる位置情報RSa、RSbのうち、第1優先の第1位置情報RSaによって示される第1仲介サーバ200Aと、通信する。S450では、プリンタ100は、接続情報IXbによって示される第2サービスサーバ300Bとの接続のためのTO2の処理を実行する。ここで、互いに対応付けられる第5クレデンシャルCI5と第7バウチャーVC5bとが使用されるので(S400、S415)、バウチャーの検証は、成功する。そして、プリンタ100と第2サービスサーバ300Bとは、サービスのための処理を開始する。
【0155】
以上のように、本実施例の設定処理(
図11-
図13)は、
図5-
図6のS240-S450を含んでいる。従って、本実施例は、
図5-
図6の実施例のS240-S450に関連するものと同じ種々の利点を有する。
【0156】
また、本実施例では、プリンタ100の不揮発性記憶装置130に格納されるクレデンシャルCI4、CI5は、いずれも、第1位置情報RSaと第2位置情報RSbとを含んでいる。すなわち、不揮発性記憶装置130は、位置情報RSa、RSbを格納している。そして、プリンタ100のプロセッサ110は、以下の処理を実行する。S150-S165(
図11)と、S350-S365(
図13)と、のそれぞれでは、プロセッサ110は、不揮発性記憶装置130に格納されたクレデンシャルCIの更新が必要であるか否かを確認する。本実施例では、プロセッサ110は、ベンダサーバ400に問い合わせることによって、更新が必要であるか否かを確認する。
【0157】
不揮発性記憶装置130に格納されたクレデンシャルCIの更新が必要であると確認される場合に(
図13:S365:Yes)、プロセッサ110は、S390、S400、S440(
図13)の処理を実行する。S390では、プロセッサ110は、第2位置情報RSbによって示される第2仲介サーバ200Bからベンダ接続情報IXu0を取得する。S400(具体的には、S401-S404)では、プロセッサ110は、ベンダ接続情報IXu0の取得の後に、ベンダ接続情報IXu0に従ってベンダサーバ400にアクセスすることによってベンダサーバ400によって提供される特定情報PKmを取得する。そして、プロセッサ110は、特定情報PKmを使用して、新たなクレデンシャルCI5を取得する。S440では、プロセッサ110は、新たなクレデンシャルCI5の取得(S400)の後に、第1位置情報RSaによって示される第1仲介サーバ200Aから接続情報IXbを取得する。
【0158】
さらに、不揮発性記憶装置130に格納されたクレデンシャルCIの更新が不要であると確認される場合に(
図11:S165:No)、プロセッサ110は、第2仲介サーバ200Bとベンダサーバ400とにアクセスせずに、S240(
図12)の処理を実行する。S240では、プロセッサ110は、第1位置情報RSaによって示される第1仲介サーバ200Aから、不揮発性記憶装置130に格納されたクレデンシャルCI4に対応付けられる第1サービスサーバ300Aとの接続のための接続情報IXaを取得する。
【0159】
このように、プロセッサ110は、不揮発性記憶装置130に格納されたクレデンシャルCIの更新が必要であるか否かに応じて、サービスサーバとの接続のための適切な処理を実行できる。例えば、クレデンシャルCIの更新が不要と判断される場合には、プリンタ100とベンダサーバ400との通信(具体的には、クレデンシャルCIの更新のための通信)が省略されるので、プリンタ100とベンダサーバ400との通信負荷は、軽減可能である。
【0160】
クレデンシャルCIの更新が必要であると判断するための条件は、上記の条件に代えて、他の種々の条件であってよい。例えば、ベンダサーバ400は、フラグのデータを不揮発性記憶装置430に格納してよい。ベンダサーバ400は、サービスサーバからの更新用バウチャーの登録指示(
図12:S310)に応じて、フラグを「更新必要」に設定する。ベンダサーバ400は、プリンタ100とのTO2の処理(
図13:S400)によって、フラグを「更新不要」に設定する。そして、ベンダサーバ400は、問合せに応じてこのフラグを参照することによって、クレデンシャルCIの更新が必要であるか否かを判断してよい。
【0161】
また、本実施例において、S150-S165(
図11)と、S350-S365(
図13)とは、省略されてよい。すなわち、プロセッサ110は、不揮発性記憶装置130に格納されたクレデンシャルCIの更新が必要であるか否かを確認せずに、S390、S400、S440(
図13)の処理を実行してよい。この場合も、プロセッサ110は、ベンダサーバ400にアクセスすることによってベンダサーバ400によって提供される特定情報PKmを使用して、新たなクレデンシャルCIを取得する(S400)。プリンタ100は、新たなクレデンシャルCIを使用することによって、サービスサーバとの接続を安全に確立できる。なお、この場合、
図12のS330でベンダサーバ400がバウチャーデータベースD4にオーナーの公開鍵PKsbを登録した後に、
図13のS410、S415、S420の処理が、複数回、繰り返され得る。繰り返されるS415のそれぞれにおいてベンダサーバ400がバウチャーデータベースD4からオーナーの公開鍵PKsを取得できるように、S420では、ベンダサーバ400は、最新のオーナーに関連する情報OW、NE、PKs、IXを、バウチャーデータベースD4から削除せずに維持することが好ましい。S420では、プロセッサ110は、サービスサーバとの接続のためのバウチャーの生成(S415)に応じて、バウチャーデータベースD4を更新する。ここで、プロセッサ110は、新たに生成されたバウチャーの情報を、バウチャーデータベースD4に登録してよい。
【0162】
D.変形例:
(1)設定処理は、上記の各実施例の設定処理に代えて、他の種々の処理であってよい。例えば、上記の各実施例において、プリンタ100のプロセッサ110は、ユーザによるプリンタ100の操作部150の操作によって入力された接続指示に応じて、設定処理を開始してよい。この場合、プロセッサ110は、電源投入を接続指示として扱わなくてよい。
【0163】
また、更新用バウチャーは、製造事業者によって、予め生成されてよい。そして、ベンダサーバ400は、予め決められた更新用バウチャーを、繰り返し、使用してよい。この場合、バウチャーデータベースD4(
図3(A))からは、初期ヘッダVHiと製造秘密鍵SKとは、省略されてよい。
【0164】
(2)設定処理は、1台のプリンタ100に複数のサービスを対応付けることができるように、構成されてよい。例えば、プリンタ100の出荷後の第1サービスのための設定処理は、
図4、
図5のS110-S250と同じであってよい。S250の後、第1ユーザは、第2サービスの追加を、第1サービス事業者と第2サービス事業者とに通知する。この通知に従って、サービスサーバ300A、300Bとベンダサーバ400とは、
図8のS275-S330の処理を実行する。第1ユーザは、プリンタ100の操作部150を操作することによって、サービスの追加のための接続指示をプリンタ100に入力する。サービスの追加のための接続指示が入力される場合、プリンタ100のプロセッサ110は、サービス情報を削除せずにクレデンシャルを初期化し、
図9のS400へ移行する。ここで、
図7-
図10の実施例と同様に、プリンタ100の不揮発性記憶装置130には、ベンダ接続情報IXu0のデータが予め格納されていることとする。プリンタ100と第1仲介サーバ200Aと第2サービスサーバ300Bとベンダサーバ400とは、
図9のS400-S450の処理を実行する。以上により、プリンタ100は、第1サービスのための処理と、第2サービスのための処理とを、並行して実行できる。
【0165】
また、1台のプリンタ100に複数のサービスを対応付けるために、
図11-
図13の実施例は、以下のように変更されてよい。プリンタ100の出荷後の第1サービスのための設定処理は、
図11、
図12のS115-S250と同じである。S250の後、第1ユーザは、第2サービスの追加を、第1サービス事業者と第2サービス事業者とに通知する。この通知に従って、第2仲介サーバ200Bとサービスサーバ300A、300Bとベンダサーバ400とは、
図12のS275-S340の処理を実行する。第1ユーザは、プリンタ100の操作部150を操作することによって、サービスの追加のための接続指示をプリンタ100に入力する。サービスの追加のための接続指示が入力される場合、プリンタ100のプロセッサ110は、サービス情報を削除せずにクレデンシャルを初期化し、
図13のS350へ移行する。プリンタ100と仲介サーバ200A、200Bと第2サービスサーバ300Bとベンダサーバ400とは、
図13のS350-S450の処理を実行する。以上により、プリンタ100は、第1サービスのための処理と、第2サービスのための処理とを、並行して実行できる。
【0166】
(3)上記の実施例と変形例とにおいて、第1仲介サーバ200Aに対する新バウチャーの登録指示、すなわち、TO0の処理(S230、S430(
図4、
図6、
図7、
図9、
図13)は、ベンダサーバ400に代えて、新バウチャーを有するサービスサーバによって行われてよい。
【0167】
(4)
図11-
図13の実施例において、クレデンシャルCIの更新が必要か否かの問合せに応答するサーバは、更新用バウチャーとサービスのための新バウチャーとを処理するベンダサーバ400とは異なる他のサーバ(確認サーバと呼ぶ)であってよい。この場合、プリンタ100の不揮発性記憶装置130には、ベンダ接続情報IXu0に代えて、確認サーバとの接続のための接続情報が、予め格納される。
【0168】
(5)上記の実施例と変形例とにおいて、設定処理で使用されるプロトコルは、FDOプロトコルに代えて、他の種々のプロトコルであってよい。例えば、認証情報の取得と、接続情報の取得と、第1種認証情報と第2種認証情報とを使用する検証と、サービスサーバとの接続の確立と、を含む設定処理は、プリンタ100の製造事業者または管理事業者によって定められた他の手順に従って、行われてよい。
【0169】
また、プリンタ100の不揮発性記憶装置130に格納される第1種認証情報は、第1種認証情報と第2種認証情報とを使用する検証で使用される種々の情報を含んでよい。第1種認証情報は、例えば、トークンを含んでよい。ベンダサーバ400によって提供される特定情報(S204、S404(
図4、
図6、など))は、新たなトークンを含んでよい。特定情報に含まれる新たなトークンを含む認証情報が、新たな第1種認証情報として取得されてよい。第1種認証情報に対応付けられる第2種認証情報は、第1種認証情報に含まれるトークンと整合する情報(例えば、トークンのハッシュ値)を含んでよい。そして、第1種認証情報と第2種認証情報とを使用する検証が成功するための条件は、第2種認証情報が第1種認証情報のトークンと整合することを含んでよい。いずれの場合も、第1種認証情報は、デバイスの識別子(例えば、GUID、シリアル番号、など)と、検証用の情報である検証情報(公開鍵ハッシュPKH、公開鍵、トークン、など)と、を含むことが好ましい。識別子は、プリンタ100に適する接続情報の取得で使用されてよい。
【0170】
(6)プリンタ100は、第1種認証情報を格納するための記憶装置として、プログラムPG1を格納する不揮発性記憶装置130とは異なる別の記憶装置を備えてよい。プリンタ100は、例えば、セキュリティチップを備えてよい。セキュリティチップは、セキュリティチップ内に格納されているデータを保護する機能を有する記憶装置である。セキュリティチップとしては、例えば、Trusted Computing Group (TCG)によって策定された規格に準拠したTrusted platform module (TPM)が採用されてよい。
【0171】
(7)各サーバの構成は、
図1の構成に限らず、他の種々の構成であってよい。例えば、ベンダサーバ400は、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、ベンダサーバ400によるデータ処理の機能を一部ずつ分担して、全体として、ベンダサーバ400の機能を提供してもよい(これらの装置を備えるシステムがベンダサーバ400に対応する)。他のサーバ200A、200B、300A、300Bについても、同様である。また、複数のサーバの間で、ハードウェア構成が異なってよい。
【0172】
(8)サービスのためにサービスサーバと通信するデバイスは、プリンタ100に代えて、他の任意の種類のデバイスであってよい。例えば、複合機、スキャナ、ミシン、カッティングマシン、工作機械、スマートフォン、監視カメラ、のいずれかが、デバイスとして使用されてよい。サービスサーバを使用して提供されるサービスは、サービスサーバを介するデバイスの遠隔操作など、任意のサービスであってよい。
【0173】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、S203(
図4など)の検証の機能は、専用のハードウェア回路によって実現されてよい。
【0174】
また、本開示の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【0175】
上記の実施例と変形例とは、適宜に組み合わせることができる。また、上記の実施例と変形例とは、本開示の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0176】
100…プリンタ、110…プロセッサ、115…記憶装置、120…揮発性記憶装置、130…不揮発性記憶装置、140…表示部、150…操作部、160…印刷実行部、180…通信インタフェース、200A…第1仲介サーバ、200B…第2仲介サーバ、210…プロセッサ、215…記憶装置、220…揮発性記憶装置、230…不揮発性記憶装置、280…通信インタフェース、300A…第1サービスサーバ、300B…第2サービスサーバ、310…プロセッサ、315…記憶装置、320…揮発性記憶装置、330…不揮発性記憶装置、380…通信インタフェース、400…ベンダサーバ、410…プロセッサ、415…記憶装置、420…揮発性記憶装置、430…不揮発性記憶装置、480…通信インタフェース、1000…システム、PG1、PG2A、PG2B、PG3A、PG3B、PG4…プログラム