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