(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024070731
(43)【公開日】2024-05-23
(54)【発明の名称】デバイス、コンピュータプログラム、および、方法
(51)【国際特許分類】
G06F 21/44 20130101AFI20240516BHJP
【FI】
G06F21/44
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022181420
(22)【出願日】2022-11-11
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】井上 卓弥
(57)【要約】
【課題】デバイスの記憶装置に情報が不正に格納されることを抑制する。
【解決手段】デバイスは、情報送信要求を外部装置に送信し、情報送信要求に応じて外部装置から送信される第1情報と第2情報とを受信し、第2情報が特定条件を満たすか否かを判断し、第2情報が特定条件を満たす場合に、第1情報を記憶装置に格納し、第2情報が特定条件を満たさない場合に、第1情報を記憶装置に格納しない。第1情報は、仲介サーバの位置情報と、デバイスに割り当てられる識別情報と、を含む。デバイスは、記憶装置に格納される第1情報を用いて仲介サーバにアクセスして、アクセス情報を仲介サーバから取得し、取得されるアクセス情報を用いて対象サーバにアクセスして、特定のサービスを利用するための設定情報を対象サーバから取得する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
インターネットに接続可能なデバイスであって、
記憶装置と、
情報送信要求を外部装置に送信する送信部と、
前記情報送信要求に応じて前記外部装置から送信される第1情報と第2情報とを受信する受信部であって、前記第1情報は、前記インターネットを介して前記デバイスと通信可能な仲介サーバの位置情報と、前記デバイスに割り当てられる識別情報と、を含む、前記受信部と、
前記第2情報が特定条件を満たすか否かを判断する判断部と、
前記第2情報が前記特定条件を満たす場合に、前記第1情報を前記記憶装置に格納し、前記第2情報が前記特定条件を満たさない場合に、前記第1情報を前記記憶装置に格納しない格納処理部と、
前記記憶装置に格納される前記第1情報を用いて、前記位置情報によって示される前記仲介サーバにアクセスして、前記識別情報と対応付けられたアクセス情報を前記仲介サーバから取得する第1取得部であって、前記アクセス情報は前記インターネットを介して通信可能な対象サーバにアクセスするための情報であり、前記対象サーバは特定のサービスを提供するサーバである、前記第1取得部と、
取得される前記アクセス情報を用いて、前記対象サーバにアクセスして、前記特定のサービスを利用するための設定情報を前記対象サーバから取得する第2取得部と、
を備える、デバイス。
【請求項2】
請求項1に記載のデバイスであって、
前記受信部は、さらに、前記外部装置から認証情報を受信し、
前記格納処理部は、前記第2情報が前記特定条件を満たす場合に、前記認証情報に基づく情報を前記記憶装置に格納し、前記第2情報が特定条件を満たさない場合に、前記認証情報に基づく情報を前記記憶装置に格納せず、
前記第2取得部は、
前記記憶装置に格納される前記認証情報に基づく情報を用いて、前記対象サーバとの間で認証処理を実行し、
前記認証処理の結果が肯定的である場合に、前記設定情報を前記対象サーバから取得する、デバイス。
【請求項3】
請求項1に記載のデバイスであって、
前記特定条件は、前記第2情報が、予め定められた特定の文字列を含むことを含む、デバイス。
【請求項4】
請求項1に記載のデバイスであって、
前記特定条件は、前記第2情報のデータサイズが、予め定められた特定のデータサイズであることを含む、デバイス。
【請求項5】
請求項1に記載のデバイスであって、
前記送信部は、さらに、特定情報を前記外部装置に送信し、
前記特定条件は、前記第2情報が、前記特定情報に対して予め定められた特定の変換処理を実行して得られる情報であることを含む、デバイス。
【請求項6】
請求項1に記載のデバイスであって、さらに、
複数個の条件の中から前記特定条件を選択する選択部を備え、
前記送信部は、さらに、前記選択部によって選択される前記特定条件を示す情報を前記外部装置に送信し、
前記判断部は、前記第2情報が、前記選択部によって選択される前記特定条件を満たすか否かを判断する、デバイス。
【請求項7】
請求項1に記載のデバイスであって、
前記受信部は、複数個の前記特定条件に対応する複数個の前記第2情報を受信し、
前記判断部は、複数個の前記第2情報のそれぞれが、対応する前記特定条件を満たすか否かを判断し、
前記格納処理部は、複数個の前記第2情報のそれぞれが、対応する前記特定条件を満たす場合に、前記第1情報を前記記憶装置に格納し、複数個の前記第2情報のうちの少なくとも1つが、対応する前記特定条件を満たさない場合に、前記第1情報を前記記憶装置に格納しない、デバイス。
【請求項8】
インターネットに接続可能なデバイスのためのコンピュータプログラムであって、
情報送信要求を外部装置に送信する送信機能と、
前記情報送信要求に応じて前記外部装置から送信される第1情報と第2情報とを受信する受信機能であって、前記第1情報は、前記インターネットを介して前記デバイスと通信可能な仲介サーバの位置情報と、前記デバイスに割り当てられる識別情報と、を含む、前記受信機能と、
前記第2情報が特定条件を満たすか否かを判断する判断機能と、
前記第2情報が前記特定条件を満たす場合に、前記第1情報を前記デバイスの記憶装置に格納し、前記第2情報が前記特定条件を満たさない場合に、前記第1情報を前記記憶装置に格納しない格納処理機能と、
前記記憶装置に格納される前記第1情報を用いて、前記位置情報によって示される前記仲介サーバにアクセスして、前記識別情報と対応付けられたアクセス情報を前記仲介サーバから取得する第1取得機能であって、前記アクセス情報は前記インターネットを介して通信可能な対象サーバにアクセスするための情報であり、前記対象サーバは特定のサービスを提供するサーバである、前記第1取得機能と、
取得される前記アクセス情報を用いて、前記対象サーバにアクセスして、前記特定のサービスを利用するための設定情報を前記対象サーバから取得する第2取得機能と、
を前記デバイスに搭載されるコンピュータに実現させるコンピュータプログラム。
【請求項9】
インターネットに接続可能なデバイスが実行する方法であって、
情報送信要求を外部装置に送信する送信工程と、
前記情報送信要求に応じて前記外部装置から送信される第1情報と第2情報とを受信する受信工程であって、前記第1情報は、前記インターネットを介して前記デバイスと通信可能な仲介サーバの位置情報と、前記デバイスに割り当てられる識別情報と、を含む、前記受信工程と、
前記第2情報が特定条件を満たすか否かを判断する判断工程と、
前記第2情報が前記特定条件を満たす場合に、前記第1情報を前記デバイスの記憶装置に格納し、前記第2情報が前記特定条件を満たさない場合に、前記第1情報を前記記憶装置に格納しない格納処理工程と、
前記記憶装置に格納される前記第1情報を用いて、前記位置情報によって示される前記仲介サーバにアクセスして、前記識別情報と対応付けられたアクセス情報を前記仲介サーバから取得する第1取得工程であって、前記アクセス情報は前記インターネットを介して通信可能な対象サーバにアクセスするための情報であり、前記対象サーバは特定のサービスを提供するサーバである、前記第1取得工程と、
取得される前記アクセス情報を用いて、前記対象サーバにアクセスして、前記特定のサービスを利用するための設定情報を前記対象サーバから取得する第2取得工程と、
を備える方法。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、インターネットに接続可能なデバイス、コンピュータプログラム、および、方法に関する。
【背景技術】
【0002】
デバイスをインターネットに接続することによって、様々なサービスを利用可能な仕組みが知られている。非特許文献1の技術では、デバイスの製造工程において、デバイス毎にユニークな情報を含む特定情報(クレデンシャルと呼ばれる)をデバイスに格納する。デバイスの製造事業者は、該特定情報に紐付くチケット(バウチャーと呼ばれる)を発行する。デバイスの利用者が、利用を望むサービスを提供するクラウドサーバにチケットを登録すると、デバイスは、クラウドサーバと自動的に接続され、サービスを利用可能な状態になる。この技術では、利用すべきサービスをデバイスの製造後に容易に選択することができるとともに、デバイスとクラウドサーバとのセキュアな接続を実現することができる。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】"FIDO Device Onboard Specification 1.1",[online],令和4年4月19日,FIDO Alliance,[令和4年10月10日検索],インターネット<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情報と第2情報とを受信する受信部であって、前記第1情報は、前記インターネットを介して前記デバイスと通信可能な仲介サーバの位置情報と、前記デバイスに割り当てられる識別情報と、を含む、前記受信部と、前記第2情報が特定条件を満たすか否かを判断する判断部と、前記第2情報が前記特定条件を満たす場合に、前記第1情報を前記記憶装置に格納し、前記第2情報が前記特定条件を満たさない場合に、前記第1情報を前記記憶装置に格納しない格納処理部と、前記記憶装置に格納される前記第1情報を用いて、前記位置情報によって示される前記仲介サーバにアクセスして、前記識別情報と対応付けられたアクセス情報を前記仲介サーバから取得する第1取得部であって、前記アクセス情報は前記インターネットを介して通信可能な対象サーバにアクセスするための情報であり、前記対象サーバは特定のサービスを提供するサーバである、前記第1取得部と、取得される前記アクセス情報を用いて、前記対象サーバにアクセスして、前記特定のサービスを利用するための設定情報を前記対象サーバから取得する第2取得部と、を備える、デバイス。
【0008】
例えば、位置情報が不正に格納されると、不正な仲介サーバにデバイスがアクセスする可能性がある。また、識別情報が不正に格納されると、不正なアクセス情報がデバイスに提供され、不正な対象サーバにデバイスがアクセスする可能性がある。上記実施例によれば、第2情報が特定条件を満たす場合には、位置情報と識別情報とを含む第1情報を記憶装置に格納し、第2情報が特定条件を満たさない場合に、第1情報を記憶装置に格納しない。この結果、デバイスの記憶装置に第1情報が不正に格納されることを抑制することができる。
【0009】
なお、本明細書に開示された技術は、種々の形態で実現可能であり、例えば、デバイスのための方法、デバイスおよび方法の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【図面の簡単な説明】
【0010】
【
図1】製造工程におけるシステム1000Aの構成を示すブロック図。
【
図2】第1、第2実施例のクレデンシャル格納処理のシーケンス図。
【
図3】クレデンシャル情報CIとバウチャーVCとの一例を示す図。
【
図4】使用時におけるシステム1000Bの構成を示すブロック図。
【
図5】データベースおよび該データベースに格納される情報の説明図。
【
図6】システム1000Bの事前準備およびサービス処理のフローチャート。
【
図7】プリンタ100とサーバ300Aと仲介サーバ400との処理を示すシーケンス図。
【
図8】第3、第4実施例のクレデンシャル格納処理のシーケンス図。
【
図9】第5実施例のクレデンシャル格納処理のシーケンス図。
【
図10】第6実施例のクレデンシャル格納処理のシーケンス図。
【発明を実施するための形態】
【0011】
A.第1実施例
A-1.製造工程におけるシステムの構成
図1は、プリンタ100の製造工程におけるシステム1000Aの構成を示すブロック図である。システム1000Aは、プリンタ100と、設定装置10と、を備えている。システム1000Aは、後述するクレデンシャル格納処理を実行するためのシステムである。
【0012】
プリンタ100は、プリンタ100のコントローラとして、CPU110と、DRAMなどの揮発性記憶装置120と、ハードディスクやフラッシュメモリなどの不揮発性記憶装置130と、を備えている。また、プリンタ100は、画像を表示する液晶ディスプレイなどの表示部140と、ユーザによる操作を取得するためのボタンやタッチパネルなどの操作部150と、セキュリティチップ160と、印刷機構170と、通信インタフェース(IF)180と、を備えている。
【0013】
通信IF180は、インターネットITに接続するためのインタフェース、例えば、イーサネット(登録商標)に準拠した有線のインタフェースや、Wi-Fi規格に準拠した無線のインタフェースである。
【0014】
CPU110は、データ処理を行う演算装置(プロセッサ)である。揮発性記憶装置120は、CPU110が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置130には、プリンタ100を制御するためのコンピュータプログラムPGpが格納されている。
【0015】
コンピュータプログラムPGpは、本実施例では、プリンタ100の製造時に不揮発性記憶装置130に予め格納されて提供される。CPU110は、コンピュータプログラムPGpを実行することによって、プリンタ100に関連する様々な処理を実行する。例えば、CPU110は、後述するように、サーバ300A~300Dのいずれかと協働して、ユーザに対して所定のサービス(例えば、後述するセットアップサービスや消耗材管理サービスや印刷サービス)を提供する処理(以下、サービス処理とも呼ぶ)を実行する。また、CPU110は、サービス処理に先立って、製造工程において、設定装置10と協働して、後述するクレデンシャル格納処理を実行する。また、CPU110は、後述する端末装置200や対象サーバ(例えば、サーバ300A)や仲介サーバ400と協働して、サービス処理の事前準備を実行する。
【0016】
セキュリティチップ160は、例えば、TCG(Trusted Computing Group)によって定義されたセキュリティの仕様に準拠したTPM(Trusted Platform Module)である。セキュリティチップ160は、図示しないプロセッサやメモリを備えるICチップであり、本実施例では、後述するクレデンシャル情報CIを安全に格納するために用いられる。
【0017】
印刷機構170は、CPU110の制御に従って、印刷を実行する。本実施例の印刷機構170は、複数種類のインク(例えば、シアンとマゼンタとイエロとブラックとの4種類のインク)を色材として用いて、画像を記録媒体に印刷するインクジェット方式の印刷機構である。これに代えて、印刷機構170は、トナーを色材として用いて、画像を記録媒体に印刷する電子写真方式の印刷機構であっても良い。
【0018】
設定装置10は、プリンタ100の製造事業者が所有する計算機であり、例えば、パーソナルコンピュータである。設定装置10は、コントローラとして、CPU11と、DRAMなどの揮発性記憶装置12と、ハードディスクやフラッシュメモリなどの不揮発性記憶装置13と、通信IF18と、を備えている。通信IF18は、例えば、イーサネット(登録商標)に準拠した有線のインタフェースや、Wi-Fi規格に準拠した無線のインタフェースである。
【0019】
揮発性記憶装置12は、CPU11が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置13には、コンピュータプログラムPGsと、バウチャー関連情報VIと、が格納されている。
【0020】
CPU11は、コンピュータプログラムPGsを実行することによって、プリンタ100と協働して、後述するクレデンシャル格納処理を実行する。バウチャー関連情報VIは、クレデンシャル格納処理において用いられる。
【0021】
A-2.クレデンシャル格納処理
クレデンシャル格納処理は、製造工程において、プリンタ100と設定装置10とによって協働して実行される。クレデンシャル格納処理は、プリンタ100にクレデンシャル情報CIを格納するとともに、設定装置10が後述するオンボーディング処理等で用いられるバウチャーVCを生成する処理である。
【0022】
図2は、第1、第2実施例のクレデンシャル格納処理のシーケンス図である。
図3は、クレデンシャル情報CIとバウチャーVCとの一例を示す図である。
図2のクレデンシャル格納処理は、例えば、製造工程の最後に、プリンタ100と設定装置10とがローカルエリアネットワークLNを介して通信可能に接続された状態で実行される。クレデンシャル格納処理は、例えば、作業者がプリンタ100に対して、所定の開始指示を入力すると開始される。
【0023】
S2では、プリンタ100(CPU110)は、情報送信要求を設定装置10に対して送信する。プリンタ100と設定装置10との間の通信は、例えば、HTTPS(Hypertext Transfer Protocol Secure)に従って実行される。
【0024】
設定装置10(CPU11)は、情報送信要求を受信すると、S4にて、クレデンシャル情報を生成する。本実施例では、この時点で生成されるクレデンシャル情報は、
図2に示すように、プロトコル情報PIと、仲介サーバ情報RSIと、GUIDと、デバイス情報DIと、公開鍵PKmと、を含んでいる。
【0025】
プロトコル情報PIは、「FIDO Device Onboarding (FDO) Specification」(以下、FDO仕様書とも呼ぶ)に規定されたプロトコルのバージョンを示す情報である。後述する仲介サーバ400とプリンタ100との通信や、対象サーバとプリンタ100との通信は、プロトコル情報PIによって示されたバージョンのプロトコルを用いて実行される。
【0026】
GUIDは、プリンタ100を識別する識別子であり、設定装置10が生成して割り当てる。仲介サーバ情報RSIは、後述する仲介サーバ400と通信の接続を行うための情報である。仲介サーバ情報RSIは、例えば、仲介サーバ400の所在を示す位置情報(例えば、IPアドレスやURL(Uniform Resource Locator))と、ポート番号と、を含む。公開鍵Pkmは、プリンタ100の製造事業者が保有する秘密鍵と対応する公開鍵である。仲介サーバ情報RSIと公開鍵Pkmとは、例えば、バウチャー関連情報VI(
図1)に含まれている。
【0027】
デバイス情報DIは、プリンタ100に関する情報であり、プリンタ100の製造事業者が任意に記述可能な情報である。本実施例では、デバイス情報DIは、予め定められた特定の文字列を接頭語(prefix)として含む文字列である。例えば、デバイス情報DIには、接頭語「XXXX0123」と、プリンタ100の型番「PR-ABCD」)と、を組み合わせた文字列「XXXX0123_PR-ABCD」が用いられる。デバイス情報DIは、例えば、バウチャー関連情報VI(
図1)に含まれている。
【0028】
S6では、設定装置10は、S4にて生成されたクレデンシャル情報を、情報送信要求に対する応答としてプリンタ100に送信する。
【0029】
プリンタ100は、クレデンシャル情報を受信すると、S10にて、クレデンシャル情報に含まれるデバイス情報DIが特定条件を満たすか否かを判断する。本実施例では、プリンタ100は、デバイス情報DIが特定の文字列「XXXX0123」を接頭語として含む場合には、デバイス情報DIは特定条件を満たすと判断し、デバイス情報DIが特定の文字列「XXXX0123」を接頭語として含まない場合には、デバイス情報DIは特定条件を満たさないと判断する。
【0030】
デバイス情報DIが特定条件を満たす場合には(S10:YES)、プリンタ100は、S12にて、シークレットを生成する。シークレットは、例えば、ランダムに生成される所定サイズの文字列である。
【0031】
S14では、プリンタ100は、S12にて生成したシークレットと、S6にて受信したクレデンシャル情報と、を用いて、最終的なクレデンシャル情報CIを生成し、該クレデンシャル情報CIをセキュリティチップ160に格納する。
図3(A)には、最終的なクレデンシャル情報CIの一例が示されている。クレデンシャル情報CIは、S6にて受信されたクレデンシャル情報のうちのプロトコル情報PIと仲介サーバ情報RSIとGUIDとデバイス情報DIとを含む。最終的なクレデンシャル情報CIは、さらに、公開鍵ハッシュPKHと、S12にて生成されたシークレットと、を含む。公開鍵ハッシュPKHは、S6にて受信したクレデンシャル情報のうちの公開鍵PKmを所定のハッシュ関数を用いて変換することによって得られるハッシュ値である。
【0032】
S16では、プリンタ100は、HMAC(Keyed-Hashing for Message Authentication Code)を生成する。HMACは、秘密鍵とメッセージとハッシュ関数を用いて算出されるメッセージ認証コードである。本実施例では、シークレットを秘密鍵とし、S6にて受信したクレデンシャル情報をメッセージとして、HMACが算出される。S18では、プリンタ100は、生成したHMACを設定装置10に送信する。
【0033】
設定装置10は、HMACを受信すると、S18にて、該HMACと、S4にて生成したクレデンシャル情報と、を用いて、バウチャーVCを生成する。
図3(B)には、バウチャーVCの一例が示されている。
図3(B)のバウチャーVCは、バウチャーヘッダVHを含んでいる。バウチャーヘッダVHは、上述したプロトコル情報PIと、仲介サーバ情報RSIと、GUIDと、デバイス情報DIと、公開鍵PKmと、HMACと、を含んでいる。バウチャーVCは、後述するように、1以上のエントリETを含み得るが、この時点では、バウチャーVCは、エントリETを含んでいない。
【0034】
S22では、設定装置10は、完了通知をプリンタ100に送信して、処理を終了する。プリンタ100は、完了通知を受信すると、処理を終了する。以上の説明から解るように、クレデンシャル格納処理が終了すると、プリンタ100のセキュリティチップ160には、クレデンシャル情報CIが格納された状態になる。
【0035】
S10にて、デバイス情報DIが特定条件を満たさない場合には(S10:NO)、プリンタ100は、S12~S18を実行することなく、クレデンシャル格納処理を中断する。すなわち、この場合には、プリンタ100は、シークレットを生成せず、クレデンシャル情報CIをセキュリティチップ160に格納しない。さらに、プリンタ100は、HMACを設定装置10に送信せず、中断通知等を設定装置10に送信することもない。製造工程にて、正当な設定装置10と、プリンタ100と、の間で、クレデンシャル格納処理が行われる場合に、クレデンシャル格納処理が中断されることは想定されていない。不正な設定装置と、プリンタ100と、の間で、クレデンシャル格納処理が行われる場合に、クレデンシャル格納処理が中断されることが想定される。
【0036】
A-3.使用時におけるシステムの構成
図4は、プリンタ100の使用時におけるシステム1000Bの構成を示すブロック図である。システム1000Bは、プリンタ100と、プリンタ100の販売会社が所有する端末装置200と、プリンタを用いるサービスを提供するサーバ300A~300Dと、仲介サーバ400と、を備える。プリンタ100は、上述したクレデンシャル格納処理の後の状態であるので、プリンタ100のセキュリティチップ160には、クレデンシャル情報CIが格納されている。
【0037】
端末装置200は、計算機であり、例えば、パーソナルコンピュータである。変形例では、端末装置200は、スマートフォンやタブレットコンピュータであっても良い。端末装置200は、例えば、プリンタ100を販売する販売会社が所有する計算機である。
【0038】
端末装置200は、コントローラとして、CPU210と、DRAMなどの揮発性記憶装置220と、ハードディスクやフラッシュメモリなどの不揮発性記憶装置230と、を備えている。また、端末装置200は、画像を表示する液晶ディスプレイなどの表示部240と、ユーザによる操作を取得するためのボタンやタッチパネルなどの操作部250と、通信IF280と、を備えている。通信IFは、インターネットITに接続するためのインタフェース、例えば、イーサネット(登録商標)に準拠した有線のインタフェースや、Wi-Fi規格に準拠した無線のインタフェースである。
【0039】
揮発性記憶装置220は、CPU210が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置230には、ブラウザプログラムBPが格納されている。
【0040】
CPU210は、ブラウザプログラムBPを実行することによって、WEBブラウザとして機能する。WEBブラウザとして機能するCPU210は、後述するバウチャーVCをサーバ300A~300Dに登録する処理を実行する。
【0041】
サーバ300A~300Dは、例えば、サービスを提供する事業者が運用する計算機、例えば、クラウドサーバである。例えば、サーバ300A~300Dを運用する事業者は、プリンタ100を製造する事業者や、該事業者とは異なるサードパーティである。サーバ300A~300Dは、それぞれ、互いに異なる2以上の事業者によって運用される2以上のサーバを含み得る。サーバ300A~300Dによって提供されるサービスを、それぞれ、サービスA~サービスDとする。サービスA~サービスDは、例えば、セットアップサービスや消耗材管理サービスや印刷サービスを含む。セットアップサービスは、例えば、ドライバやアプリケーションなどのプログラムをプリンタ100にインストールすることや所定の設定を行うサービスである。消耗材管理サービスは、例えば、インクなどのプリンタ100の消耗材の残量を管理し、消耗材の消耗に応じて該消耗材をユーザに配送するサービスである。印刷サービスは、例えば、ユーザの端末から送信される画像ファイルを用いて印刷ジョブを生成してプリンタ100に送信することによって、プリンタ100に印刷を行わせるサービスである。
【0042】
サーバ300Aは、コントローラとしてのCPU310と、DRAMなどの揮発性記憶装置320と、ハードディスクやフラッシュメモリなどの不揮発性記憶装置330と、通信インタフェース(IF)380と、を備えている。通信IF380は、インターネットITに接続可能なインタフェースであり、例えば、イーサネット(登録商標)に準拠した有線のインタフェースである。
【0043】
CPU310は、データ処理を行う演算装置(プロセッサ)である。揮発性記憶装置320は、CPU310が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置330には、コンピュータプログラムPGaと、後述するバウチャーデータベースVDBと、が格納されている。
【0044】
コンピュータプログラムPGaは、例えば、サーバ300Aを運用する事業者によってアップロードされる形態で提供される。サーバ300AのCPU310は、コンピュータプログラムPGaを実行することによって、プリンタ100と協働して、提供すべきサービスを実現するためのサービス処理を実行する。また、CPU310は、サービス処理に先立って、端末装置200やサーバ300Aや仲介サーバ400と協働して、後述する事前準備を実行する。
【0045】
サーバ300B~300Dは、上述したサーバ300Aと同様の構成310~380(図示省略)を備えている。サーバ300B~300Dの構成の説明は省略する。
【0046】
仲介サーバ400は、例えば、所定の事業者(例えば、サービスを提供する事業者やプリンタ100を製造する事業者)が運用する計算機、例えば、クラウドサーバである。仲介サーバ400は、サーバ300Aと同様に、コントローラとしてのCPU410と、揮発性記憶装置420と、通信IF480と、を備えている。揮発性記憶装置420は、CPU410が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置430には、コンピュータプログラムPGbと、後述するアクセス情報データベースADBと、が格納されている。
【0047】
コンピュータプログラムPGbは、例えば、仲介サーバ400を運用する事業者によってアップロードされる形態で提供される。仲介サーバ400のCPU410は、コンピュータプログラムPGbを実行することによって、プリンタ100や端末装置200やサーバ300A~300Dや仲介サーバ400と協働して、後述する事前準備を実行する。
【0048】
プリンタ100と、端末装置200と、サーバ300A~300Dと、仲介サーバ400とは、それぞれ、インターネットITに接続されている。このために、これらの装置100~400は、互いに、インターネットITを介して、通信可能である。
【0049】
図5は、データベースおよび該データベースに格納される情報の説明図である。
図5(A)には、サーバ300A~300Dの不揮発性記憶装置330に格納されるバウチャーデータベースVDBの一例が示されている。バウチャーデータベースVDBには、1以上のバウチャーVC(例えば、
図5(A)のVC1、VC2)が格納されている。
【0050】
図5(B)には、バウチャーVCの一例が図示されている。バウチャーVCは、デバイス(本実施例では、プリンタ100)の所有権を証明するデータである。バウチャーVCは、上述したバウチャーヘッダVHと、1以上のエントリET(例えば、
図5(B)のET1、ET2)と、を含む。
【0051】
エントリETは、公開鍵Pksと、署名データSDと、を含む。エントリETは、バウチャーVCの受け渡し、すなわち、バウチャーVCの所有者の変更が行われる度に、1つずつ追加される情報である。公開鍵Pksは、受け渡し先が保有する秘密鍵に対応する公開鍵であり、署名データSDは、受け渡し元が保有する秘密鍵を用いて公開鍵Pksを含む情報を暗号化して得られるデータである。
図5(B)のバウチャーVCは、2個のエントリET1、ET2を含んでいる。したがって、
図5(B)のバウチャーVCは、2回の受け渡しが行われたことが解る。
【0052】
図5(C)には、アクセス情報データベースADBの一例が図示されている。アクセス情報データベースADBは、1以上のアクセス情報AIが、GUIDと対応付けて記録されている。
図5(C)の例では、アクセス情報AI1は、GUID「ID1」と対応付けて記録され、アクセス情報AI2は、GUID「ID2」と対応付けて記録される。各アクセス情報AIは、対応付けられたGUIDによって識別されるデバイス(例えば、プリンタ100)に送信されるべき情報である。
【0053】
図5(D)は、アクセス情報AIの一例が図示されている。アクセス情報AIは、デバイス(例えば、プリンタ100)と協働してサービス処理を実行すべき対象サーバ(例えば、サーバ300A)にアクセスするための情報である。アクセス情報AIは、例えば、対象サーバの所在を示す情報(例えば、IPアドレスやURL(Uniform Resource Locator))と、ポート番号と、接続に用いるプロトコルの情報と、を含む。
【0054】
A-4.システム1000Bの事前準備およびサービス処理の概略
図6は、システム1000Bの事前準備およびサービス処理のフローチャートである。
図6のS200~S600は、サービス処理(
図6のS700)に先だって行われる事前準備である。
【0055】
S200では、プリンタ100を製造事業者から販売会社にバウチャーVCとプリンタ100とが受け渡される。具体的には、販売会社は、秘密鍵と公開鍵PKs1とのキーペアを準備し、プリンタ100を発注する際に、販売会社の端末装置200から製造事業者の計算機(例えば、図示しないWEBサーバを含む計算機システム)に公開鍵PKs1を送信する。製造事業者の計算機は、該公開鍵PKs1と、該公開鍵PKs1を製造事業者の秘密鍵を用いて暗号化して得られる署名データSD1と、を含むエントリET1(
図5(B))を生成する。製造事業者の秘密鍵は、バウチャーヘッダVH(
図3(B)、
図5(B))に含まれる公開鍵PKm(
図3(B)、
図5(B))に対応する秘密鍵である。製造事業者の計算機は、設定装置10によって生成されたバウチャーVC(
図3(B))に、1個のエントリET1を付加して、エントリET1が付加されたバウチャーVCを、販売会社の端末装置200に送信する。また、製造事業者は、プリンタ100を販売会社に納品する。
【0056】
S300では、販売会社がバウチャーVCを対象サーバに登録する。例えば、ユーザは、販売会社からプリンタ100を購入する際に、プリンタ100を用いて利用可能なサービスA~Dの中から利用するサービスについて利用契約を結ぶ。ここで、利用するサービスを提供するサーバを対象サーバとも呼ぶ。以下では、サービスAを提供するサーバ300A(
図4)が対象サーバであるとして説明を行う。具体的には、販売会社の担当者は、端末装置200を操作して、サーバ300Aが提供するWEBページにアクセスして、所定の操作を行う。これによって、端末装置200とサーバ300Aとの間でバウチャーVCをサーバ300Aに登録する処理が実行される。
【0057】
具体的には、サーバ300Aは、秘密鍵と公開鍵PKs2とのキーペアを保有しており、端末装置200に公開鍵PKs2を送信する。端末装置200は、該公開鍵PKs2と、該公開鍵PKs2を、販売会社の秘密鍵(公開鍵PKs1に対応する秘密鍵)を用いて暗号化して得られる署名データSD2と、を含むエントリET2(
図5(B))を生成する。端末装置200は、S200にて受信したバウチャーVCにエントリET2を追加したバウチャーVC(
図5(B))をサーバ300Aに送信する。サーバ300Aは、受信したバウチャーVCをバウチャーデータベースVDB(
図5(A))に格納する。これによって、バウチャーVCがサーバ300Aに登録される。
【0058】
なお、変形例では、販売会社からユーザにバウチャーVCが受け渡され、ユーザが、自身の端末装置から対象サーバ(例えば、サーバ300A)にバウチャーVCを登録しても良い。
【0059】
S400では、対象サーバが仲介サーバ400にアクセス情報AIを登録する。アクセス情報AIの登録は、FDO仕様書に規定されたTO0(Transfer Ownership Protocol 0)に従って実行される。例えば、対象サーバであるサーバ300Aから仲介サーバ400に、プリンタ100がサーバ300Aにアクセスするためのアクセス情報AI(
図5(D))と、プリンタ100のGUIDと、が送信される。仲介サーバ400は、受信したアクセス情報AIをプリンタ100のGUIDと対応付けてアクセス情報データベースADB(
図4、
図5(C))に格納する。これによって、アクセス情報AIがプリンタ100のGUIDと対応付けて仲介サーバ400に登録される。
【0060】
S450では、販売会社がユーザにプリンタ100を納品する。ユーザは、納品されたプリンタ100をインターネットITに接続可能に設置して、プリンタ100の電源を投入する。
【0061】
プリンタ100の電源が投入されると、プリンタ100は、S500にて、仲介サーバ400からアクセス情報AI(
図5(D))を取得する。S600では、アクセス情報AIを用いて、プリンタ100と対象サーバとの間でオンボーディング処理が実行される。オンボーディング処理によって、プリンタ100とサーバ300Aとは、サービス処理を実行することができる状態になる。S500とS600の処理については、シーケンス図を参照して後述する。
【0062】
S700では、プリンタ100と対象サーバ(例えば、サーバ300A)とは、協働して、サービス処理を実行する。サービス処理は、例えば、サーバ300Aが提供するサービスAが消耗材管理サービスである場合には、プリンタ100が定期的にインクなどの消耗材の残量情報をサーバ300Aに送信する処理を含む。
【0063】
A-5.プリンタ100とサーバ300A、400との処理の詳細
次に、上述した事前準備のうち、プリンタ100とサーバ300Aとの間の処理と、プリンタ100と仲介サーバ400との処理について、さらに、説明する。
【0064】
図7は、プリンタ100とサーバ300Aと仲介サーバ400との処理を示すシーケンス図である。このシーケンス図のうち、S22、S24は、仲介サーバ400からアクセス情報を取得するための処理であり、
図6のS500に相当する。S26、S28は、サーバ300Aが提供するサービスAを利用可能にするための処理であり、
図6のS600に相当する。S30は、サービス処理であり、
図6のS700に相当する。
【0065】
プリンタ100の電源が投入されると、プリンタ100は、S22では、プリンタ100は、セキュリティチップ160に格納されたクレデンシャル情報CI(
図3(A))のうち、仲介サーバ情報RSIと、GUIDと、を読み出す。
【0066】
S24では、プリンタ100は、仲介サーバ400との間でアクセス情報取得処理を実行する。アクセス情報取得処理は、FDO仕様書に規定されたTO1(Transfer Ownership Protocol 1)に従って実行される。具体的には、プリンタ100は、仲介サーバ情報RSIを用いて、仲介サーバ情報RSIに含まれる位置情報(URLやIPアドレス)によって示される仲介サーバ400にアクセスする。プリンタ100は、クレデンシャル情報CIに含まれるGUID、すなわち、自身を識別するGUIDを仲介サーバ400に送信する。仲介サーバ400は、アクセス情報データベースADBにおいて、受信したGUIDに対応付けられたアクセス情報AIをプリンタ100に送信する。これによって、プリンタ100は、サーバ300Aにアクセスするためのアクセス情報AIを取得する。プリンタ100は、アクセス情報AIを不揮発性記憶装置130に格納する。
【0067】
S26では、プリンタ100は、オンボーディング処理に用いるべき情報を読み出す。例えば、不揮発性記憶装置130からアクセス情報AIが読み出され、セキュリティチップ160からクレデンシャル情報CIのうち、オンボーディング処理に用いるべき情報が読み出される。
【0068】
S28では、プリンタ100は、サーバ300Aとの間でオンボーディング処理を実行する。オンボーディング処理は、FDO仕様書に規定されたTO2(Transfer Ownership Protocol 2)に従って実行される。具体的には、プリンタ100は、アクセス情報AIに含まれる位置情報(URLやIPアドレス)によって示される対象サーバであるサーバ300Aにアクセスする。プリンタ100は、サーバ300Aとの間で、認証処理と、サービス準備処理と、を含む。
【0069】
認証処理は、プリンタ100と対象サーバとの間で、互いに相手の正当性を確認する処理である。例えば、プリンタ100は、所定のフォーマット(例えば、EAT(Entity Attestation Token)フォーマット)に従うトークンをサーバ300Aに送信し、サーバ300Aは、該トークンの正当性を指定された公開鍵を用いて検証することで、プリンタ100の正当性を確認する。
【0070】
サーバ300Aは、さらに、所定のメッセージと、秘密鍵を用いて該メッセージを暗号化することによって得られる署名データと、をプリンタ100に送信する。サーバ300Aは、プリンタ100から送信されるGUIDに対応付けられたバウチャーVCをバウチャーデータベースVDBから取得してプリンタ100に送信する。プリンタ100は、受信したバウチャーVCのバウチャーヘッダVHに含まれる公開鍵PKmを、クレデンシャル情報CIに含まれる公開鍵ハッシュPKHを用いて検証する。具体的には、プリンタ100は、公開鍵PKmを所定のハッシュ関数を用いて変換することによってハッシュ値を生成する。プリンタ100は、該ハッシュ値がクレデンシャル情報CIに含まれる公開鍵ハッシュPKHと一致するか否かを確認する。
【0071】
プリンタ100は、バウチャーVCに含まれるエントリET1、ET2を順次に検証する。例えば、プリンタ100は、検証済みの公開鍵PKmを用いてエントリET1を検証する。プリンタ100は、検証済みのエントリET1に含まれる公開鍵PKs1を用いてエントリET2を検証する。最後にプリンタ100は、検証済みのエントリET2に含まれる公開鍵PKs2を用いて、サーバ300Aから送信された署名データを検証することで、サーバ300Aの正当性を確認する。
【0072】
サービス準備処理は、認証処理によって互いの正当性が確認された後に、プリンタ100とサーバ300Aとの間でサービス処理を実行するために必要なサービス設定情報を交換する処理である。サービス準備処理が完了すると、プリンタ100とサーバ300Aとは、サービス処理を実行することができる状態になる。プリンタ100がサーバ300Aから取得するサービス設定情報は、例えば、プリンタ100とサーバ300Aとの間でサービス処理に関する通信を行う際に用いられるトークンや、フォーマット情報や、プロトコル情報を含む。
【0073】
ここで、プリンタ100がサーバ300Aの正当性を確認できる場合、すなわち、認証処理の結果が肯定的である場合には、プリンタ100は、サービス準備処理を実行して、サービス設定情報をサーバ300Aから取得する。一方、プリンタ100がサーバ300Aの正当性を確認できない場合、すなわち、認証処理の結果が否定的である場合には、プリンタ100は、サービス準備処理を実行せず、サービス設定情報を取得しない。
【0074】
オンボーディング処理後のS30では、プリンタ100と対象サーバ(サーバ300A)とは、協働して、サービス処理を実行する。
【0075】
以上説明した本実施例では、FDO仕様書に規定された手法を用いるので、例えば、以下の利点がある。上記手法では、ユーザや販売会社は、ユーザが利用することを望むサービスを提供する対象サーバにバウチャーVCを登録する(
図6のS300)ことによってサービスの提供を受けることができる。このために、ユーザや販売会社は、ユーザが提供を受けるべきサービスを容易に選択できる。
【0076】
また、プリンタ100は、対象サーバのアクセス情報AIを仲介サーバ400から取得できる(
図6のS500)。このために、プリンタ100の製造工程の段階では、仲介サーバ400に接続するための仲介サーバ情報RSIがプリンタ100(不揮発性記憶装置130)に格納されていれば良く、対象サーバのアクセス情報AIがプリンタ100に格納されている必要がない。また、プリンタ100は、対象サーバと協働してサービス処理を実行するために必要なサービス設定情報を対象サーバから取得できる(
図6のS600)。このために、プリンタ100の製造工程の段階では、サービス設定情報がプリンタ100に記憶されている必要がない。このために、プリンタ100の製造工程の段階で、利用すべきサービスを想定しておく必要がなく、例えば、プリンタ100の製造後に提供が開始されたサービスや、プリンタ100の製造時には製造事業者に認識されていなかった第三者が提供するサービスであったとしても、ユーザはプリンタ100を用いて該サービスを利用することができる。この結果、サービスの柔軟な提供と利用とを実現できる。例えば、サービスの提供者は、プリンタ100の改造等を行うことなく、新たなサービスを事後的に追加することもできる。例えば、ユーザや販売会社は、利用するサービスの選択や変更を容易に行うことができる。また、プリンタ100の製造事業者、販売業者、ユーザのいずれも、例えば、出荷時や使用時にユーザが希望するサービスに接続できるようにプリンタ100をカスタマイズする必要がないため、プリンタ100の製造事業者、販売業者、ユーザの負担を軽減できる。
【0077】
さらに、上記手法では、バウチャーVCの検証やトークンの検証を行うことによって、プリンタ100と対象サーバとは、互いの正当性を確認することができる。そして、プリンタ100や対象サーバは、相手の正当性を確認できない場合には、オンボーディング処理の実行を拒否できる。このために、プリンタ100が意図しないサーバに接続される、プリンタ100とは異なる不正なデバイスが対象サーバに接続されるなどのセキュリティ上の問題が生じることを抑制できる。
【0078】
さらに、上記実施例によれば、プリンタ100は、クレデンシャル情報CIを格納するための記憶装置としてのセキュリティチップ160を備えている。プリンタ100は、情報送信要求を設定装置10に送信する(
図2のS2)。プリンタ100は、情報送信要求に応じて設定装置10から送信されるクレデンシャル情報を受信する(
図2のS6)。受信されたクレデンシャル情報は、仲介サーバ400の位置情報を含む仲介サーバ情報RSIと、GUIDと、デバイス情報DIとを含む。プリンタ100は、デバイス情報DIが特定条件を満たすか否かを判断する(
図2のS10)。本実施例の特定条件は、デバイス情報DIが特定の文字列「XXXX0123」を接頭語として含むことである。プリンタ100は、デバイス情報DIが特定条件を満たす場合に(S10にてYES)、仲介サーバ情報RSIとGUIDとを含むクレデンシャル情報CIをセキュリティチップ160に格納する(
図2のS14)。プリンタ100は、デバイス情報DIが特定条件を満たさない場合に(S10にてNO)、処理を中断するので、該クレデンシャル情報CIをセキュリティチップ160に格納しない。プリンタ100は、セキュリティチップ160に格納される仲介サーバ情報RSIとGUIDとを用いて、仲介サーバ400にアクセスして、GUIDと対応付けられたアクセス情報AIを仲介サーバ400から取得する(
図7のS22、S24)。プリンタ100は、アクセス情報AIを用いて、対象サーバ(例えば、サーバ300A)にアクセスして、対象サーバが提供するサービスを利用するためのサービス設定情報を対象サーバから取得する(
図7のS28)。
【0079】
例えば、仲介サーバ情報RSIが不正にプリンタ100に格納されると、不正な仲介サーバにプリンタ100がアクセスする可能性がある。また、GUIDが不正にプリンタ100に格納されると、不正なアクセス情報がプリンタ100に提供され、不正な対象サーバにプリンタ100がアクセスする可能性がある。本実施例によれば、デバイス情報DIが特定条件を満たす場合には、仲介サーバ情報RSIとGUIDとを含むクレデンシャル情報CIをセキュリティチップ160に格納し、デバイス情報DIが特定条件を満たさない場合に、該クレデンシャル情報CIをセキュリティチップ160に格納しない。この結果、プリンタ100のセキュリティチップ160にクレデンシャル情報が不正に格納されることを抑制することができる。
【0080】
例えば、仮に、
図2のS10の処理を行うことなく、
図2のS6にて情報送信要求に対する応答としてクレデンシャル情報を受信した場合に、常に、
図2のS12~S22の処理が行われるとする。この場合には、例えば、プリンタ100が情報送信要求を送信する送信先が不正な設定装置であったとしても、該不正な設定装置から受信したクレデンシャル情報がプリンタ100のセキュリティチップ160に格納される。本実施例によれば、不正な設定装置が特定条件を満たすデバイス情報DIを含むクレデンシャル情報を送信しない限り、不正な設定装置から送信されるクレデンシャル情報がプリンタ100のセキュリティチップ160に格納されることはない。したがって、プリンタ100のセキュリティチップ160にクレデンシャル情報が不正に格納されることを抑制することができる。
【0081】
さらに、上記実施例によれば、
図2のS6にてプリンタ100が受信するクレデンシャル情報は、オンボーディング処理にて認証情報として用いられる公開鍵PKmを含んでいる。すなわち、プリンタ100は、
図2のS6にて公開鍵PKmを設定装置10から受信する。プリンタ100は、デバイス情報DIが特定条件を満たす場合に(S10にてYES)、公開鍵PKmに基づく情報である公開鍵ハッシュPKHを含むクレデンシャル情報CIをセキュリティチップ160に格納する。プリンタ100は、デバイス情報DIが特定条件を満たさない場合に(S10にてNO)、公開鍵ハッシュPKHを含むクレデンシャル情報CIをセキュリティチップ160に格納しない。この結果、プリンタ100のセキュリティチップ160に不正な認証情報(例えば、公開鍵)に基づく情報(例えば、公開鍵ハッシュ)が格納されることを抑制することができる。この結果、例えば、不正な対象サーバとの間の認証処理が、不正な認証情報に基づいて実行されることで、不正な対象サーバとの間の認証処理が肯定的な結果になる不具合を抑制できる。したがって、プリンタ100が不正な対象サーバにオンボードされることを抑制できる。
【0082】
さらに、上記実施例によれば、デバイス情報DIが満たすべき特定条件は、デバイス情報DIが予め定められた特定の文字列「XXXX0123」を含むことである。この結果、特定の文字列を認識している外部装置(例えば、設定装置10)に限って、プリンタ100にクレデンシャル情報CIを格納させることができる。したがって、例えば、特定の文字列を秘密に管理することで、プリンタ100のセキュリティチップ160にクレデンシャル情報が不正に格納されることを抑制することができる。
【0083】
以上の説明から解るように、第1実施例のGUIDと仲介サーバ情報RSIとは、第1情報の例であり、デバイス情報DIは、第2情報の例である。第1実施例のプリンタ100は、デバイスの例であり、設定装置10は、外部装置の例である。
【0084】
B.第2実施例
第2実施例では、クレデンシャル格納処理を継続するか中断するかを判断するための特定条件が、第1実施例とは異なる。第2実施例の特定条件は、デバイス情報DIのデータサイズが、予め定められた特定のデータサイズであることである。予め定められた特定のデータサイズは、例えば、128ビットである。
【0085】
このために、第2実施例では、
図2のS4にて、設定装置10がクレデンシャル情報を生成する際に、設定装置10は、クレデンシャル情報に含まれるデバイス情報DIのデータサイズを特定のデータサイズ(128ビット)とする。
【0086】
そして、
図2のS10では、プリンタ100は、設定装置10から受信したクレデンシャル情報に含まれるデバイス情報DIのデータサイズが特定のデータサイズ(128ビット)であるか否かを判断する。プリンタ100は、デバイス情報DIのデータサイズが特定のデータサイズ(128ビット)である場合には(S10:YES)、S12に処理を進め、デバイス情報DIのデータサイズが特定のデータサイズ(128ビット)ではない場合には(S10:NO)、クレデンシャル格納処理を中断する。第2実施例の他の処理や構成は第1実施例と同じであるので、その説明を省略する。
【0087】
以上説明した第2実施例によれば、特定のデータサイズを認識している外部装置(例えば、設定装置10)に限って、プリンタ100にクレデンシャル情報CIを格納させることができる。したがって、例えば、特定のデータサイズを秘密に管理することで、プリンタ100のセキュリティチップ160にクレデンシャル情報が不正に格納されることを抑制することができる。
【0088】
C.第3実施例
第3実施例では、クレデンシャル格納処理を継続するか中断するかを判断するための特定条件が、第1実施例とは異なる。
図8は、第3、第4実施例のクレデンシャル格納処理のシーケンス図である。
【0089】
図8のS2Bでは、プリンタ100は、情報送信要求を設定装置10に対して送信する。このときに、プリンタ100は、
図2のS2とは異なり、情報送信要求に、プリンタ100のシリアル番号を含める。変形例では、シリアル番号に代えて、他の情報、例えば、ランダムに生成された数字や文字列が情報送信要求に含めて送信されても良い。
【0090】
設定装置10は、シリアル番号を含む情報送信要求を受信すると、S4Bにて、クレデンシャル情報を生成する。第3実施例では、第1実施例(
図2)とは異なり、デバイス情報DIは、クレデンシャル格納処理を継続するか中断するかを判断するために用いられない。このために、S4Bにて生成されるデバイス情報DIは、特定の文字列「XXXX0123」を接頭語として含む必要はない。4Bにて生成されるクレデンシャル情報に含まれる他の情報は、第1実施例と同じである。
【0091】
S5Bでは、設定装置10は、情報送信要求に含まれるシリアル番号に対して、特定の変換処理を実行して、変換済情報を生成する。第3実施例の特定の変換処理は、暗号化処理である。例えば、設定装置10は、予め定められた共通鍵や初期化ベクトル(initialization vector)を用いて、予め定められた暗号化アルゴリズムに従って、シリアル番号を暗号化する。これによって、変換済情報が生成される。
【0092】
S6Bでは、設定装置10は、S4Bにて生成したクレデンシャル情報と、S5Bにて生成した変換済情報と、を、情報送信要求に対する応答としてプリンタ100に送信する。
【0093】
プリンタ100は、クレデンシャル情報と変換済情報とを受信すると、S10Bにて、変換済情報が特定条件を満たすか否かを判断する。本実施例の特定条件は、設定装置10から受信した変換済情報が、自身で生成した変換済情報と一致することである。本実施例では、プリンタ100の不揮発性記憶装置130またはセキュリティチップ160には、上述した予め定められた共通鍵や初期化ベクトルが格納されている。このために、プリンタ100は、設定装置10と同様の暗号化処理を実行することができる。プリンタ100は、自身のシリアル番号に対して、予め定められた共通鍵や初期化ベクトルを用いて、予め定められた暗号化アルゴリズムに従って、シリアル番号を暗号化する。これによって、変換済情報が生成される。プリンタ100は、設定装置10から受信した変換済情報と、自身で生成した変換済情報と、を比較して、設定装置10から受信した変換済情報が、自身で生成した変換済情報と一致するか否かを判断する。
【0094】
プリンタ100は、設定装置10から受信した変換済情報が、自身で生成した変換済情報と一致する場合には(S10B:YES)、S12に処理を進める。
図8のS12~S22の処理は、
図2の同符号の処理と同一であるので、説明を省略する。プリンタ100は、設定装置10から受信した変換済情報が、自身で生成した変換済情報と一致しない場合には(S10B:NO)、
図8のS12以降の処理を実行することなく、クレデンシャル格納処理を中断する。
【0095】
以上説明したように、第3実施例によれば、プリンタ100は、シリアル番号を設定装置10に送信する(
図8のS4B)。そして、クレデンシャル格納処理を継続するか中断するかを判断するための特定条件は、設定装置10から受信した変換済情報が、自身で生成した変換済情報と一致すること、換言すれば、受信した変換済情報が、シリアル番号に対して特定の変換処理(本実施例では暗号化処理)を実行して得られる情報であることである。この結果、特定の変換処理を実行できる外部装置(例えば、設定装置10)に限って、プリンタ100にクレデンシャル情報CIを格納させることができるので、デバイスの記憶装置にクレデンシャル情報CIが不正に格納されることを抑制することができる。したがって、例えば、特定の変換処理に用いる情報、例えば、用いるべきアルゴリズムの情報、共通鍵、初期化ベクトルを秘密に管理することで、プリンタ100のセキュリティチップ160にクレデンシャル情報が不正に格納されることを抑制することができる。
【0096】
以上の説明から解るように、第3実施例のGUIDと仲介サーバ情報RSIとは、第1情報の例であり、変換済情報は、第2情報の例である。
【0097】
D.第4実施例
上記第3実施例において、特定の変換処理は、暗号化処理であるが、特定の変換処理は、暗号化処理に限らず、他の処理が用いられても良い。第4実施例では、特定の変換処理として、ハッシュ化処理が用いられる。
【0098】
第4実施例では、
図8のS5Bにて、設定装置10は、シリアル番号に対して予め定められた文字列(ソルトと呼ばれる)を付加する。設定装置10は、ソルトが付加された後のシリアル番号に対して、予め定められたハッシュ関数を用いてハッシュ化処理を実行して、ハッシュ値を算出する。算出されたハッシュ値が第4実施例の変換済情報である。
【0099】
第4実施例では、
図8のS10Bにて、プリンタ100は、自身のシリアル番号に対して、予め定められたソルトとハッシュ関数とを用いて、ハッシュ化処理を実行して、変換済情報を生成する。プリンタ100は、設定装置10から受信した変換済情報と、自身で生成した変換済情報と、を比較して、設定装置10から受信した変換済情報が、自身で生成した変換済情報と一致するか否かを判断する。第4実施例の他の処理は、第3実施例と同一であるので、説明を省略する。
【0100】
以上説明した第3実施例によれば、第3実施例と同様に、プリンタ100は、シリアル番号を設定装置10に送信する(
図8のS4B)。そして、クレデンシャル格納処理を継続するか中断するかを判断するための特定条件は、設定装置10から受信した変換済情報が、自身で生成した変換済情報と一致すること、換言すれば、受信した変換済情報が、シリアル番号に対して特定の変換処理(本実施例ではハッシュ化処理)を実行して得られる情報であることである。この結果、特定の変換処理を実行できる外部装置(例えば、設定装置10)に限って、プリンタ100にクレデンシャル情報CIを格納させることができるので、デバイスの記憶装置に第1情報が不正に格納されることを抑制することができる。
【0101】
E.第5実施例
第5実施例では、クレデンシャル格納処理を継続するか中断するかを判断するための特定条件の候補として、複数個の条件が準備されている。複数個の条件は、例えば、第1~第4実施例のそれぞれの特定条件である。すなわち、第5実施例の複数個の条件は、以下の4つである。
(1)受信したデバイス情報DIが特定の文字列を接頭語として含むこと
(2)受信したデバイス情報DIのデータサイズが、予め定められた特定のデータサイズであること
(3)受信した変換済情報が、シリアル番号に対して所定の暗号化処理を実行して得られる情報であること
(4)受信した変換済情報が、シリアル番号に対して所定のハッシュ化処理を実行して得られる情報であること
【0102】
なお、変形例では、複数個の条件は、この4つの条件に限らず、他の様々な条件を含んでも良い。例えば、複数個の条件のうちの1つは、デバイス情報DIが第1の文字列を含むことであり、他の1つは、デバイス情報DIが第1の文字列とは異なる第2の文字列を含むことであっても良い。複数個の条件のうちの1つは、デバイス情報DIが第1のデータサイズであることであり、他の1つは、デバイス情報DIが第1のデータサイズとは異なる第2のデータサイズであることであっても良い。
【0103】
図9は、第5実施例のクレデンシャル格納処理のシーケンス図である。
図9のS1Cでは、プリンタ100は、上記の4つの条件の中から、使用すべき1つの特定条件を選択する。特定条件は、例えば、乱数を用いて、ランダムに選択される。
【0104】
S2Cでは、プリンタ100は、情報送信要求を設定装置10に対して送信する。このときに、プリンタ100は、
図2のS2とは異なり、情報送信要求に、条件指定番号を含める。条件指定番号は、4つの条件の中から選択された特定条件を示す情報であり、例えば、1~4のいずれかの番号である。上述した条件(3)、または、条件(4)が指定される場合には、情報送信要求には、さらに、第3、第4実施例と同様に、シリアル番号が含められる。
【0105】
設定装置10は、情報送信要求を受信すると、S4Cにて、クレデンシャル情報を生成する。S5Cでは、設定装置10は、条件指定番号によって指定された特定条件に従って検証情報を生成する。上記の条件(1)が指定された場合には、第1実施例で説明したように、設定装置10は、特定の文字列を接頭語として含むデバイス情報DIを検証情報として生成する。上記条件(2)が指定された場合には、第2実施例で説明したように、設定装置10は、特定のデータサイズのデバイス情報DIを検証情報として生成する。上記の条件(3)が指定された場合には、第3実施例で説明したように、設定装置10は、シリアル番号に対して暗号化処理を実行することによって得られる変換済情報を、検証情報として生成する。上記の条件(4)が指定された場合には、設定装置10は、シリアル番号に対してハッシュ化処理を実行することによって得られる変換済情報を、検証情報として生成する。
【0106】
S6Cでは、設定装置10は、クレデンシャル情報を、情報送信要求に対する応答としてプリンタ100に送信する。条件(1)、(2)が指定された場合には、第1、第2実施例と同様に、検証情報としてのデバイス情報DIを含むクレデンシャル情報がプリンタ100に送信される。条件(3)、(4)が指定された場合には、第3、第4実施例と同様に、デバイス情報DIを含むクレデンシャル情報とは別に、検証情報としての変換済情報がプリンタ100に送信される。
【0107】
S10Cでは、プリンタ100は、設定装置10から受信した検証情報(デバイス情報DIまたは変換済情報)が、S1Cにて選択された特定条件を満たすか否かを判断する。判断の具体的な手法は、第1~第4実施例にて説明したとおりであるので、その説明を省略する。
【0108】
プリンタ100は、設定装置10から受信した検証情報が特定条件を満たす場合には(S10C:YES)、S12に処理を進める。
図9のS12~S22の処理は、
図2の同符号の処理と同一であるので、説明を省略する。プリンタ100は、設定装置10から受信した検証情報が特定条件を満たさない場合には(S10C:NO)、
図9のS12以降の処理を実行することなく、クレデンシャル格納処理を中断する。
【0109】
以上説明した本実施例によれば、プリンタ100は、複数個の条件の中から特定条件を選択し(
図9(S1C))、選択された特定条件を示す条件指定番号を設定装置10に送信する(
図9(S2C)。プリンタ100は、設定装置10から受信した検証情報が、選択された特定条件を満たすか否かを判断する。このように、本実施例では、複数個の条件の中から選択される特定条件が用いられるので、プリンタ100のセキュリティチップ160にクレデンシャル情報CIが不正に格納されることをさらに効果的に抑制することができる。例えば、ランダムに選択される特定条件に応じて、適切な検証情報をプリンタ100に送信できる外部装置に限って、プリンタ100にクレデンシャル情報CIを格納させることができるので、デバイスの記憶装置にクレデンシャル情報CIが不正に格納される可能性が大幅に低減できる。
【0110】
以上の説明から解るように、第5実施例のGUIDと仲介サーバ情報RSIとは、第1情報の例であり、検証情報(変換済情報またはデバイス情報DI)は、第2情報の例である。
【0111】
F.第6実施例
第5実施例では、複数個の特定条件を用いてクレデンシャル格納処理を継続するか中断するかが判断される。
図10は、第5実施例のクレデンシャル格納処理のシーケンス図である。
図10のS1Dでは、プリンタ100は、第4実施例にて説明した4つの条件の中から、使用すべき3つの特定条件を選択する。特定条件は、例えば、乱数を用いて、ランダムに選択される。
【0112】
S2Dでは、プリンタ100は、情報送信要求を設定装置10に対して送信する。このときに、プリンタ100は、第5実施例と同様に、情報送信要求に、条件指定番号を含める。条件指定番号は、選択された3つの特定条件のうちの1つ目の条件を示す情報である。上述した条件(3)、または、条件(4)が指定される場合には、第5実施例と同様に、情報送信要求には、さらに、シリアル番号が含められる。
【0113】
設定装置10は、情報送信要求を受信すると、S4Dにて、
図9のS4Cと同様に、クレデンシャル情報を生成する。S5Dでは、
図9のS5Cと同様に、設定装置10は、条件指定番号によって指定された特定条件に従って検証情報(デバイス情報DIまたは変換済情報)を生成する。S6Dでは、
図9のS6Cと同様に、設定装置10は、クレデンシャル情報を、情報送信要求に対する応答としてプリンタ100に送信する。条件(1)、(2)が指定された場合には、第1、第2実施例と同様に、検証情報としてのデバイス情報DIを含むクレデンシャル情報がプリンタ100に送信される。条件(3)、(4)が指定された場合には、第3、第4実施例と同様に、デバイス情報DIを含むクレデンシャル情報とは別に、検証情報としての変換済情報がプリンタ100に送信される。
【0114】
S10Dでは、プリンタ100は、設定装置10から受信した検証情報(デバイス情報DIまたは変換済情報)が、S1Dにて選択された1つ目の特定条件を満たすか否かを判断する。判断の具体的な手法は、第1~第4実施例にて説明したとおりであるので、その説明を省略する。
【0115】
プリンタ100は、設定装置10から受信した検証情報が特定条件を満たす場合には(S10D:YES)、S11Dに処理を進める。プリンタ100は、設定装置10から受信した検証情報が特定条件を満たさない場合には(S10D:NO)、S11D以降の処理を実行することなく、クレデンシャル格納処理を中断する。
【0116】
S11Dでは、プリンタ100は、S1Dにて選択された3つの特定条件のうちの2つ目の条件を示す条件指定番号を含む検証情報要求を設定装置10に対して送信する。上述した条件(3)、または、条件(4)が指定される場合には、検証情報要求には、さらに、シリアル番号が含められる。S11Dにて送信される検証情報要求は、S2Dにて送信される情報送信要求と同じデータでも良いし、S2Dにて送信される情報送信要求とは異なるデータでも良い。
【0117】
S12Dでは、設定装置10は、S5Dと同様に、条件指定番号によって指定された特定条件に従って検証情報(デバイス情報DIまたは変換済情報)を生成する。S13Dでは、設定装置10は、生成した検証情報をプリンタ100に送信する。
【0118】
S15Dでは、プリンタ100は、設定装置10から受信した検証情報(デバイス情報DIまたは変換済情報)が、S1Dにて選択された2つ目の特定条件を満たすか否かを判断する。プリンタ100は、設定装置10から受信した検証情報が特定条件を満たす場合には(S15D:YES)、S16Dに処理を進める。プリンタ100は、設定装置10から受信した検証情報が特定条件を満たさない場合には(S15D:NO)、S16D以降の処理を実行することなく、クレデンシャル格納処理を中断する。
【0119】
S16Dでは、プリンタ100は、S1Dにて選択された3つの特定条件のうちの3つ目の条件を示す条件指定番号を含む検証情報要求を設定装置10に対して送信する。上述した条件(3)、または、条件(4)が指定される場合には、検証情報要求には、さらに、シリアル番号が含められる。S16Dにて送信される検証情報要求は、S2Dにて送信される情報送信要求と同じデータでも良いし、S2Dにて送信される情報送信要求とは異なるデータでも良い。
【0120】
S17Dでは、設定装置10は、S5Dと同様に、条件指定番号によって指定された特定条件に従って検証情報(デバイス情報DIまたは変換済情報)を生成する。S18Dでは、設定装置10は、生成した検証情報をプリンタ100に送信する。
【0121】
S20Dでは、プリンタ100は、設定装置10から受信した検証情報(デバイス情報DIまたは変換済情報)が、S1Dにて選択された3つ目の特定条件を満たすか否かを判断する。設定装置10から受信した検証情報が特定条件を満たす場合には(S20D:YES)、
図2のS12~S22の処理が実行される。設定装置10から受信した検証情報が特定条件を満たさない場合には(S20D:NO)、プリンタ100は、
図2のS12~S22の処理を実行することなく、クレデンシャル格納処理を中断する。
【0122】
以上説明した本実施例によれば、プリンタ100は、複数個の特定条件に対応する複数個の検証情報を受信する(
図10のS6D、S13D、S18D)。プリンタ100は、複数個の検証情報のそれぞれが、対応する特定条件を満たすか否かを判断する(
図10のS10C、S15D、S20D)。プリンタ100は、複数個の検証情報のそれぞれが、対応する前記特定条件を満たす場合に(
図10のS10CにてYES、かつ、S15DにてYES、かつ、S20DにてYES)、クレデンシャル情報をセキュリティチップ160に格納する。プリンタ100は、複数個の検証情報のうちの少なくとも1つが、対応する特定条件を満たさない場合に(
図10のS10CにてNO、または、S15DにてNO、または、S20DにてNO)、クレデンシャル情報をセキュリティチップ160に格納しない。この結果、複数個の検証情報のそれぞれが、対応する特定条件を満たす場合に限って、プリンタ100にクレデンシャル情報が格納されるので、プリンタ100にクレデンシャル情報が不正に格納されることをより確実に抑制することができる。
【0123】
G.変形例
(1)上記各実施例にて説明したクレデンシャル格納処理は、一例であり、適宜に変更され得る。例えば、第1実施例において特定の文字列を含むデバイス情報DIが、検証情報としてプリンタ100に送信されている。これに代えて、特定の文字列を含む検証情報は、クレデンシャル情報とは別に、クレデンシャル格納処理を継続するか中断するかを判断するためだけに用いる情報として、プリンタ100に送信されても良い。
【0124】
(2)第1、第2実施例において、デバイス情報DIが満たすべき特定条件は、適宜に変更され得る。例えば、特定条件は、デバイス情報DIが特定の文字列を含み、かつ、デバイス情報DIが特定のデータサイズであることであっても良い。
【0125】
(3)第3、第4実施例において、暗号化処理やハッシュ化処理の対象となるシリアル番号は、情報送信要求に含めて、プリンタ100から設定装置10に送信される。これに代えて、シリアル番号は、情報送信要求とは別に、プリンタ100から設定装置10に送信されても良い。
【0126】
(4)第5実施例において、条件指定番号は、情報送信要求に含めて、プリンタ100から設定装置10に送信される。これに代えて、条件指定番号は、情報送信要求とは別に、プリンタ100から設定装置10に送信されても良い。
【0127】
(6)第6実施例において、複数個の特定条件は、プリンタ100によってランダムに選択されている。これに代えて、複数個の特定条件は、予め定められた複数個の特定条件であっても良い。この場合には、プリンタ100から設定装置10に条件指定番号を送信しなくても良い。
【0128】
(7)第6実施例において、プリンタ100は、選択された3つの特定条件を示す条件指定番号を、
図10のS2D、S11D、S16Dの3回に分けて1つずつ設定装置10に送信している。これに代えて、プリンタ100は、3つの条件指定番号をS2Dにてまとめて設定装置10に送信しても良い。この場合には、設定装置10は、3つの特定条件に対応する3つの検証情報を、1回の通信にてまとめてプリンタ100に送信しても良い。
【0129】
(8)上記各実施例では、デバイスとしてプリンタ100が採用されている。これに限らず、対象サーバと協働してユーザに対してサービスを提供する他のデバイスが採用されても良い。他のデバイスを用いるサービスには、例えば、自宅やオフィスなどに設定された他のデバイス(例えば、監視カメラ、調理器具等の電化製品)を、端末装置(端末アプリケーション)から対象サーバを介して遠隔操作するサービスが含まれ得る。
【0130】
(9)上記各実施例において、プリンタ100は、セキュリティチップ160を搭載し、クレデンシャル情報CIは、セキュリティチップ160に格納される。これに代えて、クレデンシャル情報CIの全部または一部は、セキュリティチップ160内のメモリとは異なる記憶装置に格納されても良い。
【0131】
(10)上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。
【0132】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0133】
1000A,1000B…システム,10…設定装置,11…CPU,12…揮発性記憶装置,13…不揮発性記憶装置,18…通信IF,100…プリンタ,110…CPU,120…揮発性記憶装置,130…不揮発性記憶装置,140…表示部,150…操作部,160…セキュリティチップ,170…印刷機構,180…通信IF,200…端末装置,300A~300D…サーバ,310…CPU,320…揮発性記憶装置,330…不揮発性記憶装置,380…通信IF,400…仲介サーバ,410…CPU,420…揮発性記憶装置,430…不揮発性記憶装置,480…通信IF,ADB…アクセス情報データベース,AI…アクセス情報,BP…ブラウザプログラム,CI…クレデンシャル情報,IT…インターネット,LN…ローカルエリアネットワーク,PGa,PGb,PGp,PGs…コンピュータプログラム,VC…バウチャー,VDB…バウチャーデータベース