特許6894160
【登録日】令和3年6月7日(2021.6.7)
【発行日】令和3年6月23日(2021.6.23)
【発明の名称】スマートコントラクトに基づいた利用権情報処理装置、利用権情報処理システム、および利用権情報処理方法
【出願日】令和2年11月11日(2020.11.11)
【優先日】令和1年12月13日(2019.12.13)
【特許権者】
【識別番号】519446241
【氏名又は名称】a42株式会社
【発明者】
【氏名】守屋 英義
【発明者】
【氏名】橘 博之
【要約】
【課題】認証サーバーを用いることなくセキュアに利用権を管理して正当なユーザーに対して適切に機器の利用を許可するための利用権情報処理装置を提供する。
【解決手段】利用権情報処理装置は、スマートコントラクトを用いて、制御対象となる機器をユーザーが利用するための認証および認可に関する処理を行う。利用権情報処理装置は、ユーザーが使用するユーザー端末との間で共有され処理ごとに異なる値を有する認証用データを記憶し、ユーザー端末においてユーザーに対応する秘密鍵を用いて認証用データを署名することによって生成された署名データをユーザー端末から受信し、署名データおよび認証用データから楕円曲線デジタル署名アルゴリズムを用いて秘密鍵に対応する公開鍵を導出し、公開鍵または対応する識別情報を用いてスマートコントラクトにおいて公開鍵または識別情報に関連付けて予め記録されたユーザーの機器の利用権に関する情報を取得する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スマートコントラクトに基づいた利用権情報処理装置、利用権情報処理システム、および利用権情報処理方法に関する。より具体的には、本発明は、電子署名検証およびスマートコントラクトの状態に基づき、サービスおよび装置の利用権を管理することを可能とする技術に関する。
【背景技術】
【0002】
ブロックチェーンは、改竄が困難な方法でデータを記録する分散台帳技術である。
【0003】
スマートコントラクトは、ブロックチェーンの応用例であり、分散台帳上に管理するデータおよび処理条件をプログラムにより定義可能にするシステムであって、分散台帳上に記録されたデータの取得、および、分散台帳に格納されたトランザクションの内容に応じて、所定のプログラムの実行および分散台帳上のデータ変更を行うことを特徴とする(非特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【非特許文献1】Ethereum Yellow Paper:a formal specification of Ethereum,a programmable blockchain<URL:https://ethereum.github.io/yellowpaper/paper.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、近年では、情報通信技術の発展や環境保全意識の高まり等に伴い、カーシェアリングやシェアオフィス等のように、様々なモノが、特定のユーザーに所有されるのではなく、不特定多数のユーザーに共有されて利用されることが多くなっている。
【0006】
このようなシェアリングを円滑に実行するためには、対象物の利用権、すなわち対象物を利用するための鍵をどのように管理し、どのように各ユーザーに受け渡すかが重要な課
題となる。現在、利用権を受け渡す方法としては、物理的な鍵を用意して実際に各ユーザーに受け渡す方式と、WEBシステムを構築して電子的な鍵を各ユーザーに受け渡す方式がある。
【0007】
しかしながら、物理的な鍵を使用する方式は、管理や受け渡しに要する手間、破損や紛失等のリスクといった観点から望ましくない。また、近年主流となっているWEBシステムを使用する方式は、認証サーバーをセキュアに構築し運用するためのコストや負荷が極めて高いという問題がある。
【0008】
本発明は、上記事情に鑑みてなされたものであり、認証サーバーを用いることなくセキュアにユーザーの利用権を管理し、正当なユーザーに対して適切に機器の利用を許可(認可)できるようにするための利用権情報処理装置、利用権情報処理システム、および利用権情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記目的は、下記の手段によって達成される。
【0010】
利用権情報処理装置は、ブロックチェーン上に記録されるコードをコンピューターが実行することによって機能するスマートコントラクトを用いて、制御対象となる機器をユーザーが利用するための認証および認可に関する処理を行うために設けられ、記憶部、受信部、導出部、および取得部を有する。記憶部は、ユーザーが使用するユーザー端末との間で共有され、処理ごとに異なる値を有する認証用データを記憶する。受信部は、ユーザー端末においてユーザーに対応する秘密鍵を用いて、所定の署名アルゴリズムによって認証用データを署名することによって生成された署名データを、ユーザー端末から受信する。導出部は、受信部において受信された署名データおよび認証用データから、楕円曲線デジタル署名アルゴリズムを用いて秘密鍵に対応する公開鍵を導出する。取得部は、公開鍵または公開鍵に対応する識別情報を用いて、スマートコントラクトにおいて公開鍵または識別情報に関連付けて予め記録されたユーザーの機器の利用権に関する情報を取得する。
【0011】
利用権情報処理システムは、上記の利用権情報処理装置と、ユーザーによって使用されるユーザー端末と、を有する。ユーザー端末は、ユーザーからの指示に基づいて、機器を利用するための要求を利用権情報処理装置に送信し、ユーザーに対応する秘密鍵を用いて、楕円曲線デジタル署名アルゴリズムによって利用権情報処理装置と共有される認証用データに署名して署名データを生成し、生成された署名データを利用権情報処理装置に送信する。
【0012】
利用権情報処理方法は、ブロックチェーン上に記録されるコードをコンピューターが実行することによって機能するスマートコントラクトを用いて、制御対象となる機器をユーザーが利用するための認証および認可に関する処理を行うように構成され、ユーザーが使用するユーザー端末との間で共有され、処理ごとに異なる値を有する認証用データを記憶するステップ(a)と、ユーザー端末においてユーザーに対応する秘密鍵を用いて所定の署名アルゴリズムによって認証用データを署名することによって生成された署名データを、ユーザー端末から受信するステップ(b)と、ステップ(b)において受信された署名データおよび認証用データから、楕円曲線デジタル署名アルゴリズムを用いて秘密鍵に対応する公開鍵を導出するステップ(c)と、公開鍵または公開鍵に対応する識別情報を用いて、スマートコントラクトにおいて公開鍵または識別情報に関連付けて予め記録されたユーザーの機器の利用権に関する情報を取得するステップ(d)と、を有する。
【発明の効果】
【0013】
本発明の利用権情報処理装置によれば、ユーザー端末から受信した署名データと、ユー
ザー端末に送信した認証用データから、秘密鍵に対応する公開鍵を導出する。そして、利用権情報処理装置は、公開鍵または公開鍵に対応する識別情報を用いて、スマートコントラクトにおいて公開鍵または識別情報に関連付けて予め記録されたユーザーの機器の利用権に関する情報を取得する。これにより、構築および運用に莫大なコストと負荷のかかる認証サーバーを用いることなく、データ改竄耐性の高いブロックチェーン上のデータによってセキュアに利用権を管理することができ、正当なユーザーに対して適切に機器の利用を許可することができる。
【図面の簡単な説明】
【0014】
【図1】本発明の一実施形態に係る利用権情報処理装置が適用される利用権情報処理システムの概略構成を示す図である。
【図2】ユーザー端末の概略構成を示すブロック図である。
【図3】情報処理装置の概略構成を示すブロック図である。
【図4】制御対象機器の概略構成を示すブロック図である。
【図5】ピア・ツー・ピアネットワークに接続するノードとなるサーバーの概略構成を示すブロック図である。
【図6】情報処理装置のCPUの機能構成を示すブロック図である。
【図7】利用権情報処理システムにおいて実行される利用権登録(購入)処理の手順を示すシーケンスチャートである。
【図8】ブロックチェーン上に記録されるアドレスごとの利用権情報の一例を示す図である。
【図9】利用権情報処理システムにおいて実行される認証および認可処理の手順の一例を示すシーケンスチャートである。
【図10】利用権情報処理システムにおいて実行される認証および認可処理の手順の他の例を示すシーケンスチャートである。
【発明を実施するための形態】
【0015】
以下、添付した図面を参照して、本発明の実施形態を説明する。なお、図面の説明において同一の要素には同一の符号を付し、重複する説明を省略する。また、図面の寸法比率は、説明の都合上誇張されており、実際の比率とは異なる場合がある。
【0016】
<利用権情報処理システムの構成>
図1は、本発明の一実施形態に係る利用権情報処理装置が適用される利用権情報処理システムの概略構成を示す図である。
【0017】
図1に示すように、利用権情報処理システムは、ユーザー端末100、利用権情報処理装置として機能する情報処理装置200、制御対象機器300、およびピア・ツー・ピアネットワークに接続するノードとなるサーバー400を有する。利用権情報処理システムは、認証サーバーを用いることなくセキュアに制御対象機器300の利用権を管理して正当なユーザーに対して適切に制御対象機器300の利用を許可するためのシステムである。ユーザー端末100は、インターネット等のネットワークや各種無線通信等を介して情報処理装置200、制御対象機器300、サーバー400等と相互に通信可能に接続されている。情報処理装置200は、インターネット等のネットワークや各種無線通信等を介してユーザー端末100、制御対象機器300、サーバー400等と相互に通信可能に接続されている。制御対象機器300は、各種無線通信等を介してユーザー端末100、情報処理装置200と相互に通信可能に接続されている。サーバー400は、インターネット等のネットワークや各種無線通信等を介してユーザー端末100、情報処理装置200と相互に通信可能に接続されている。また、サーバー400は、ピア・ツー・ピアネットワークを介して他のサーバー400a、400b等と相互に通信可能に接続されている。なお、各構成間の接続は、上記の例に限定されず、各構成同士が任意の方法によって接続
されてもよい。
【0018】
以下、各構成について詳細に説明する。
【0019】
<ユーザー端末100>
ユーザー端末100は、ユーザーが使用するスマートフォン等のモバイル端末やノートPC、デスクトップPCなどの情報端末である。
【0020】
図2は、ユーザー端末の概略構成を示すブロック図である。
【0021】
図2に示すように、ユーザー端末100は、CPU(Central Processing Unit)110、ROM(Read Only Memory)120、RAM(Random Access Memory)130、ストレージ140、通信インターフェース150および操作表示部160を有する。各構成は、バス170を介して相互に通信可能に接続されている。
【0022】
CPU110は、ROM120やストレージ140に記録されているプログラムにしたがって、上記各構成の制御や各種の演算処理を行う。
【0023】
ROM120は、各種プログラムや各種データを格納する。
【0024】
RAM130は、作業領域として一時的にプログラムやデータを記憶する。
【0025】
ストレージ140は、オペレーティングシステムを含む各種プログラムや、各種データを格納する。たとえば、ストレージ140には、ネットワークを介して情報処理装置200等の他の装置との間で各種情報を送受信したり、他の装置から提供される各種情報を表示したりするためのアプリケーションがインストールされている。
【0026】
通信インターフェース150は、情報処理装置200等の外部機器と通信するためのインターフェースである。通信インターフェース150としては、たとえば、携帯電話通信用の3G、4G等の規格や、Wi−Fi(登録商標)等の規格が用いられる。通信インターフェース150として、Bluetooth(登録商標)等の近距離無線通信のための規格が用いられ、近接する近距離無線通信装置との通信が行われてもよい。
【0027】
操作表示部160は、たとえば、タッチパネル式のディスプレイであり、各種情報を表示すると共に、ユーザーからの各種入力を受け付ける。
【0028】
<情報処理装置200>
情報処理装置200は、たとえばサーバー等のコンピューターであり、本実施形態では利用権情報処理装置として機能する。
【0029】
図3は、情報処理装置の概略構成を示すブロック図である。
【0030】
図3に示すように、情報処理装置200は、CPU210、ROM220、RAM230、ストレージ240、通信インターフェース250および操作表示部260を有する。各構成は、バス270を介して相互に通信可能に接続されている。なお、CPU210、ROM220、RAM230、ストレージ240、通信インターフェース250および操作表示部260は、ユーザー端末100の対応する各構成と同様の機能を有するため、重複する説明は省略する。
【0031】
ストレージ240には、各種処理を行うためのプログラムやデータがインストールされている。また、ストレージ240には、ユーザー端末100、制御対象機器300、サーバー400と通信を行うための各種識別情報等が記憶される。また、ストレージ240には、認証用データを生成するためのプログラムや、署名データを検証するためのプログラム、アクセストークンを生成するためのプログラムなどが記憶される。
【0032】
CPU210は、本実施形態では、受信部、導出部、取得部、認証用データ生成部、判断部、トークン生成部、および正当性確認部として機能する。CPU210によって実現される各機能について、詳細は後述する。また、ストレージ240は、本実施形態では、記憶部として機能する。
【0033】
<制御対象機器300>
制御対象機器300は、ユーザーが利用権を得て制御する対象となる機器であり、たとえば、カーシェアリングにおける車両の電子制御可能な鍵や、シェアオフィスサービスにおける建物の電子制御可能な鍵等である。制御対象機器300は、上記のような鍵に限定されず、ユーザーによって利用される電子制御可能な機器であればいかなる機器であってもよい。
【0034】
図4は、制御対象機器の概略構成を示すブロック図である。
【0035】
図4に示すように、制御対象機器300は、CPU310、ROM320、RAM330、ストレージ340、通信インターフェース350および操作表示部360を有する。各構成は、バス370を介して相互に通信可能に接続されている。なお、CPU310、ROM320、RAM330、ストレージ340、通信インターフェース350および操作表示部360は、ユーザー端末100の対応する各構成と同様の機能を有するため、重複する説明は省略する。
【0036】
ストレージ340には、制御指示を実行して制御対象機器300を動作させるための各種プログラムやデータが記憶される。
【0037】
<サーバー400>
サーバー400は、ピア・ツー・ピアネットワークに接続するノードであり、当該ピア・ツー・ピアネットワークを介して他のノードであるサーバー400a、400b等と相互に通信する。サーバー400等の各ノードは、共通のブロックチェーンを記憶し、ブロックチェーン上に記録されるコードを実行することによってスマートコントラクトを実行する。サーバー400は、ブロックチェーンにおける全ての情報を保有するフルノードであってもよく、各データを証明するためのハッシュ値等の情報を保有するライトノードであってもよい。
【0038】
図5は、サーバーの概略構成を示すブロック図である。
【0039】
図5に示すように、サーバー400は、CPU410、ROM420、RAM430、ストレージ440、通信インターフェース450、および操作表示460部を有する。各構成は、バス470を介して相互に通信可能に接続されている。なお、CPU410、ROM420、RAM430、通信インターフェース450および操作表示部460は、ユーザー端末100の対応する各構成と同様の機能を有するため、重複する説明は省略する。
【0040】
ストレージ440には、スマートコントラクトを実行するためのコードや設定値等が記録されたブロックチェーン500が記憶されている。ブロックチェーン500については
、スマートコントラクトを実行可能なEthereum等の公知のブロックチェーンのプラットフォームによって構成されうるため、詳細な説明は割愛する。また、秘密鍵、公開鍵を用いた電子署名の方式についても、公知の技術であるため、詳細な説明は割愛する。
【0041】
たとえば、スマートコントラクトを実現するためのブロックチェーンのプラットフォームとしてEthereumが用いられる場合、ユーザーは自身のEthereumアカウントを有し、当該アカウントには、ユーザーの秘密鍵、ユーザーの公開鍵、およびユーザーのアドレスが対応付けられる。ユーザーの秘密鍵と公開鍵とは、ブロックチェーンプラットが採用する電子署名アルゴリズムにおいて使用される暗号化方式において対応付けられて定義される。ユーザーのアドレスは、ユーザーを特定するための情報であり、たとえばユーザーの公開鍵から一意に導出可能な情報が用いられる。スマートコントラクトを実現するためのブロックチェーンのプラットフォームはEthereumに限定されず、EOS、NEO、Zilliqa、あるいは独自に構築されたプラットフォーム等の各種プラットフォームが用いられる。
【0042】
<情報処理装置200の機能>
図6は、情報処理装置のCPUの機能構成を示すブロック図である。
【0043】
図6に示すように、情報処理装置200は、CPU210がストレージ240に記憶されたプログラムを読み込んで処理を実行することによって、受信部211、導出部212、取得部213、認証用データ生成部214、判断部215、トークン生成部216、正当性確認部217として機能する。
【0044】
受信部211は、ユーザー端末100においてユーザーに対応する秘密鍵を用いて、所定の署名アルゴリズムによって認証用データを署名することによって生成された署名データを、ユーザー端末100から受信する。受信部211は、ユーザー端末100から制御対象機器300に対する制御指示をさらに受信してもよい。
【0045】
導出部212は、受信部211において受信された署名データおよび認証用データから、所定の署名アルゴリズムを用いて秘密鍵に対応する公開鍵を導出する。
【0046】
取得部213は、導出部212によって導出された公開鍵または当該公開鍵に対応する識別情報を用いて、スマートコントラクトにおいて公開鍵または識別情報に関連付けて予め記録されたユーザーの制御対象機器300の利用権に関する情報を取得する。
【0047】
認証用データ生成部214は、ユーザーが使用するユーザー端末100からの要求に基づいて認証用データを生成し、生成された認証用データをユーザー端末100に送信することによって、認証用データを情報処理装置200とユーザー端末100との間で共有させる。
【0048】
判断部215は、取得部213によって取得された利用権に関する情報に基づいて、ユーザーによる制御対象機器300の利用可否を判断する。
【0049】
トークン生成部216は、取得部213によって取得された利用権に関する情報に基づいてユーザーによる制御対象機器300の利用が可能と判断された場合に、アクセストークンを生成してユーザー端末100に送信する。
【0050】
正当性確認部217は、ユーザー端末100から制御指示と共にアクセストークンを受け付けた制御対象機器300から、アクセストークンを受信し、制御対象機器300から受信したアクセストークンとトークン生成部216によって生成されたアクセストークン
とが同一であるか否かを判断し、同一である場合にアクセストークンが正当である旨を示す情報を制御対象機器300に送信する。
【0051】
<利用権情報処理システムにおける処理の概要>
以下、利用権情報処理システムにおいて実行される処理の例について説明する。
【0052】
まず、利用権を登録(購入)する処理について説明する。
【0053】
図7は、利用権情報処理システムにおいて実行される利用権登録(購入)処理の手順を示すシーケンスチャートである。図8は、ブロックチェーン上に記録されるアドレスごとの利用権情報の一例を示す図である。図7のシーケンスチャートに示される各装置の処理は、各装置のストレージにプログラムとして記憶されており、各装置のCPUが各部を制御することにより実行される。
【0054】
図7に示すように、ユーザー端末100は、制御対象機器300を利用するための指示をユーザーから受け付け、制御対象機器300の利用権を購入するためのスマートコントラクトを含むトランザクションデータ(TXデータ)を生成する(ステップS101)。たとえば、所定の宛先アドレスに所定の数量の暗号通貨を送信することによって、所定の時間分の利用権を購入できるサービスを提供する事業者を介して制御対象機器300を利用する場合、TXデータには、ユーザーのアドレス、宛先アドレス(スマートコントラクトのアドレス)、暗号通貨の数量、利用権の購入意思を示す情報、利用開始時間を示す情報等が含まれる。たとえば、利用権の購入意思を示す情報として、スマートコントラクトにおいて定義された購入を示すメソッド(関数)が用いられ、当該メソッドの引数として、ユーザーのアドレスや利用開始時間を示す情報が設定されてもよい。
【0055】
続いて、ユーザー端末100は、生成したTXデータについて、ストレージ140に予め記憶されたユーザーの秘密鍵を用いて電子署名を生成する(ステップS102)。
【0056】
続いて、ユーザー端末100は、生成した電子署名と共にTXデータをサーバー400に送信する(ステップS103)。
【0057】
サーバー400は、受信したTXデータをピア・ツー・ピアネットワークに対してブロードキャストする(ステップS104)。ピア・ツー・ピアネットワークに接続されたサーバー等のノードによってブロックチェーン500のマイニングが実行されてブロックが生成されると、TXデータに含まれるスマートコントラクトが実行される(ステップS105)。
【0058】
これにより、ブロックチェーン500上に、図8に示すようなユーザーのアドレスごとの利用権情報が記録される。図8の例では、ユーザーのアドレスと、当該ユーザーの利用開始時間と、利用終了時間とが関連付けられて記録されている。この場合、ユーザーのアドレスと現在時刻がわかれば、その時点で当該ユーザーに利用権があるか否かが容易に判断できる。ブロックチェーン500上に記録される利用権情報の形態は、図8の例に限定されず、任意の形態によって実装されうる。たとえば、利用権情報として、利用可否等のステータスを示す情報が関連付けられて記録されてもよい。また、利用権情報として、たとえば、利用可能時間数に関する情報や利用回数に関する情報、利用可能な曜日や時間帯、利用可能な位置、領域、範囲、利用可能な制御対象機器300の種類、それらの組み合わせ等の任意の利用条件に関する情報が記録されうる。また、利用権情報として、利用可能な条件のみならず、利用不能な条件(除外条件)に関する情報が記録されてもよい。すなわち、利用権情報としては、利用権を定義するための様々な条件を表現するための情報が適宜設定されうる。
【0059】
サーバー400は、TXデータに基づいてスマートコントラクトが実行された結果をユーザー端末100に通知し(ステップS106)、ユーザー端末100は、通知された結果を操作表示部160に表示する(ステップS107)。
【0060】
なお、上記の例では、ユーザー端末100においてTXデータを生成してサーバー400に送信するものとして説明したが、これらの処理は、いわゆる交換所と称される代行業者が運営するサーバー等によって実行されてもよい。
【0061】
次に、ユーザーを認証して利用権を確認し、ユーザーによる利用を認可する処理について説明する。
【0062】
図9は、利用権情報処理システムにおいて実行される認証および認可処理の手順を示すシーケンスチャートである。図9のシーケンスチャートに示される各装置の処理は、各装置のストレージにプログラムとして記憶されており、各装置のCPUが各部を制御することにより実行される。
【0063】
図9に示すように、ユーザー端末100は、ユーザーからの指示等に基づいて、制御対象機器300の制御に関する機器制御要求を生成し(ステップS201)、情報処理装置200に送信する(ステップS202)。
【0064】
情報処理装置200は、ユーザー端末100から機器制御要求を受信すると、認証用データを生成し(ステップS203)、ユーザー端末100に送信する(ステップS204)。認証用データは、ユーザー端末100およびユーザーの正当性を確認するための情報であり、ユーザー端末100と情報処理装置200との間で共有され、毎回の処理ごとに異なる値を有する情報である。本実施形態では、認証用データは、情報処理装置200によって、毎回異なる値を有するようにランダムに生成される。情報処理装置200は、ユーザー端末100に送信した認証用データを当該ユーザー端末100に関する情報と関連付けてストレージ240に記憶する。
【0065】
ユーザー端末100は、情報処理装置200から受信した認証用データについて、ユーザーに対応する秘密鍵を用いて、所定の署名アルゴリズムによって電子署名を行って署名データを生成し(ステップS205)、情報処理装置200に送信する(ステップS206)。本実施形態において、所定の署名アルゴリズムとしては、認証用データと、認証用データを秘密鍵によって署名した署名データとから、当該秘密鍵に対応する公開鍵を導出可能である楕円曲線デジタル署名アルゴリズムが用いられる。
【0066】
情報処理装置200は、ユーザー端末100から受信した署名データを上記の署名アルゴリズムによって検証し(ステップS207)、署名データを署名したユーザーの秘密鍵に対応する公開鍵を導出する(ステップS208)。具体的には、情報処理装置200は、ユーザー端末100から受信した署名データと、ストレージ240に記憶されている当該ユーザー端末100に送信した認証用データとを用いて、楕円曲線デジタル署名アルゴリズムによる署名データの検証を行うことによってユーザーの公開鍵を導出する。
【0067】
情報処理装置200は、導出した公開鍵からユーザーの識別情報であるアドレスを導出する(ステップS209)。なお、アドレスとして公開鍵の値がそのまま使用されている場合は、ステップS209の処理は省略されてもよい。
【0068】
情報処理装置200は、導出したユーザーのアドレスをサーバー400に送信して、ユーザーの制御対象機器300に関する利用権に関する情報を要求する(ステップS210
)。
【0069】
サーバー400は、受信したユーザーのアドレスを用いて、ブロックチェーン上のスマートコントラクトにおいてユーザーのアドレスに関連付けられて予め記録されているユーザーの制御対象機器300に関する利用権に関する情報を確認する(ステップS211)。
【0070】
サーバー400は、ステップS211の処理において確認した利用権に関する情報を情報処理装置200に送信する(ステップS212)。
【0071】
情報処理装置200は、サーバー400から送信された利用権に関する情報の内容を確認し、ユーザーが制御対象機器300の利用権を保有している状態であれば、ユーザーによる制御対象機器300の制御を許可してアクセストークンを生成し(ステップS213)、ユーザー端末100に送信する(ステップS214)。アクセストークンは、処理ごとにユニークに生成される情報であり、たとえば16バイト、または32バイト等の十分な大きさまたは長さを有するランダムな値である。アクセストークンは、ユーザーが制御対象機器300を制御する際に認証コードとして使用される。アクセストークンには、当該アクセストークンの利用期限に関する情報が含まれる。情報処理装置200は、ユーザー端末100に送信したアクセストークンを、当該ユーザー端末100または当該ユーザー端末100を使用するユーザーに関する情報等と関連付けてストレージ240に記憶する。なお、ユーザーが制御対象機器300の利用権を保有していない状態であれば、情報処理装置200は、ユーザーによる制御対象機器300の制御を許可せずに、その旨をユーザー端末100に通知する。
【0072】
ユーザー端末100は、制御対象機器300を制御するための制御指示に情報処理装置200から送信されたアクセストークンを付加し(ステップS215)、制御対象機器300に送信する(ステップS216)。
【0073】
制御対象機器300は、ユーザー端末100から送信された制御指示およびアクセストークンを取得し(ステップS217)、当該ユーザー端末100またはユーザーに関する情報と共にアクセストークンを情報処理装置200に送信する(ステップS218)。
【0074】
情報処理装置200は、制御対象機器300から送信されたアクセストークンの正当性を確認する(ステップS219)。具体的には、情報処理装置200は、制御対象機器300から送信された当該ユーザー端末100またはユーザーに関する情報を用いてストレージ240を検索し、当該ユーザー端末100またはユーザーに関する情報に関連付けて記憶されているアクセストークンを抽出する。そして、情報処理装置200は、ストレージ240から抽出されたアクセストークンと、制御対象機器300から送信されたアクセストークンと比較し、両者が同一である場合にアクセストークンが正当であると判断する。この場合、情報処理装置200は、アクセストークンが正当である旨を示す情報(正当性情報)を制御対象機器300に送信する(ステップS220)。一方、両者が同一でない場合、アクセストークンは正当でないと判断される。また、アクセストークンに含まれる利用期限が徒過している場合も、アクセストークンは正当でないと判断される。アクセストークンが正当でないと判断されると、情報処理装置200は、制御対象機器300にその旨を通知し、制御対象機器300は、ユーザー端末100にその旨を通知する。
【0075】
制御対象機器300は、情報処理装置200から送信された正当性情報を確認して、ユーザー端末100から受信している制御指示を実行する(ステップS221)。
【0076】
なお、本発明は、上述した実施形態のみに限定されるものではなく、特許請求の範囲内
において、種々改変することができる。
【0077】
たとえば、上記の実施形態においては、図9のステップS216の処理において、ユーザー端末100が制御対象機器300に制御指示を送信する例について説明したが、これに限定されない。たとえば、ユーザー端末100は、情報処理装置200に制御指示を送信し、情報処理装置200が制御対象機器300に制御指示を送信してもよい。この場合、情報処理装置200のCPU210は、機器制御部として機能する。以下、この例について、具体的に説明する。
【0078】
図10は、利用権情報処理システムにおいて実行される認証および認可処理の手順の他の例を示すシーケンスチャートである。図10のステップS201〜S212の処理は、図9と同様であるため説明を省略する。
【0079】
図10に示すように、情報処理装置200は、サーバー400から送信された利用権に関する情報の内容を確認し、ユーザーが制御対象機器300の利用権を保有している状態であれば、ユーザーによる制御対象機器300の制御を許可して(ステップS313)、ユーザー端末100にその旨を通知する(ステップS314)。
【0080】
ユーザー端末100は、制御対象機器300を制御するための制御指示を生成し(ステップS315)、情報処理装置200に送信する(ステップS316)。
【0081】
情報処理装置200は、ユーザー端末100から送信された制御指示を確認し(ステップS317)、制御対象機器300に送信する(ステップS318)。
【0082】
制御対象機器300は、情報処理装置200から送信された制御指示を確認して実行する(ステップS319)。
【0083】
なお、上記では、ステップ315の処理において制御指示が新たに生成されるものとして説明したが、制御指示は、ステップS201の処理において生成される機器制御要求に含まれていてもよい。この場合、情報処理装置200は、ステップS313の処理において機器制御を許可すると、既に受信している機器制御要求に含まれる制御指示を制御対象機器300に送信することができる。これにより、ステップS314〜S317の処理は省略されうる。
【0084】
また、上記の実施形態においては、ユーザー端末100は、ランダムな値である認証用データのみをユーザーの秘密鍵で署名する例について説明したが、これに限定されない。ユーザー端末100は、認証用データに制御指示等の任意の情報を付加してユーザーの秘密鍵で署名することができる。この場合でも、情報処理装置200は、認証用データおよび付加された任意の情報と、署名された署名データから、ユーザーの公開鍵を導出してアドレスを導出することができる。
【0085】
さらに、上記の実施形態においては、認証用データは、情報処理装置200によって、毎回異なる値を有するようにランダムに生成されるものとして説明したが、これに限定されない。認証用データは、ユーザー端末100と情報処理装置200との間で共有され、毎回の処理ごとに異なる値を有する情報であればよい。したがって、ユーザー端末100と情報処理装置200との間で、AES方式等の暗号化を行う場合、AESの暗号化処理において、ユーザー端末100と情報処理装置200との間で共有されるランダムな値(イニシャライゼーションベクター)が用いられるため、これを認証用データの代わりに用いることができる。たとえば、ユーザー端末100は、制御指示をAES方式で暗号化した情報を認証用データとして生成し、これをユーザーの秘密鍵で署名して署名データを情
報処理装置200に送信する。この場合、情報処理装置200は、制御指示をAES方式で暗号化した情報と署名データからユーザーの公開鍵を導出できる。
【0086】
また、利用権情報処理システムが有するユーザー端末100、情報処理装置200、制御対象機器300、サーバー400の各構成は、それぞれ上記の構成要素以外の構成要素を含んでいてもよく、あるいは、上記の構成要素のうちの一部が含まれていなくてもよい。
【0087】
また、ユーザー端末100、情報処理装置200、制御対象機器300、サーバー400は、それぞれ複数の装置によって構成されてもよく、あるいは単一の装置によって構成されてもよい。また、各構成が有する機能は、他の構成によって実現されてもよい。たとえば、情報処理装置200とサーバー400とが1つの装置によって実現されてもよい。また、情報処理装置200が制御対象機器300に組み込まれ、情報処理装置200によって実行されるものとして説明した各処理が、制御対象機器300によって実行されてもよい。また、情報処理装置200が有する機能が、ユーザー端末100のアプリケーションとして実装され、ユーザー端末100によって実行されてもよい。
【0088】
また、上述した実施形態に係る利用権情報処理システムにおける処理は、上記のフローチャートまたはシーケンスチャートのステップ以外のステップを含んでもよく、あるいは、上述したステップのうちの一部を含まなくてもよい。また、ステップの順序は、上述した実施形態に限定されない。さらに、各ステップは、他のステップと組み合わされて一つのステップとして実行されてもよく、他のステップに含まれて実行されてもよく、複数のステップに分割されて実行されてもよい。また、一部のステップが省略されてもよく、他のステップが追加されてもよい。
【0089】
以上のように、本実施形態の情報処理装置200によれば、ユーザー端末100から受信した署名データと、ユーザー端末100に送信した認証用データから、秘密鍵に対応する公開鍵を導出する。そして、情報処理装置200は、公開鍵または公開鍵に対応する識別情報を用いて、スマートコントラクトにおいて公開鍵または識別情報に関連付けて予め記録されたユーザーの制御対象機器300の利用権に関する情報を取得する。これにより、構築および運用に莫大なコストと負荷のかかる認証サーバーを用いることなく、データ改竄耐性の高いブロックチェーン上のデータによってセキュアにユーザーの利用権を管理することができ、正当なユーザーに対して適切に制御対象機器300の利用を許可(認可)することができる。
【0090】
また、情報処理装置200は、ユーザー端末100からの要求に基づいて認証用データを生成し、生成された認証用データをユーザー端末100に送信することによって認証用データをユーザー端末100との間で共有させる。これにより、ユーザー端末100から要求がある毎に異なる認証用データが生成されて電子署名に利用されるため、不正なユーザー端末100による署名データの不正利用等を抑止して、よりセキュアに利用権を管理することができる。
【0091】
また、情報処理装置200は、取得された利用権に関する情報に基づいて、ユーザーによる制御対象機器300の利用可否を判断する。これにより、迅速かつ確実に、正当なユーザーに対して制御対象機器300の利用を許可することができる。
【0092】
また、所定の署名アルゴリズムとして、署名データおよび認証用データから公開鍵を導出可能である楕円曲線デジタル署名アルゴリズムが用いられる。これにより、情報処理装置200は、秘密鍵によって署名された結果である署名データおよび署名される対象のデータである認証用データから、公開鍵を導出することができる。その結果、ユーザー端末
100と情報処理装置200との間で、署名検証のための公開鍵を事前に共有する必要性をなくすことができる。公開鍵を事前に共有するためには、受け取った公開鍵が正当なものであるか否かをチェックした上で保存という処理が発生してしまう。本実施形態によれば、署名データおよび認証用データから公開鍵を導出することができるため、公開鍵を事前に共有したり、公開鍵の正当性をチェックしたりする必要がなく、効率的にシステムを構築・運用することができる。
【0093】
また、識別情報は、公開鍵から一意に導出可能なアドレス情報である。したがって、ユーザーを識別するための情報を別途用意して管理する必要がなく、より効率的にシステムを構築・運用することができる。
【0094】
また、スマートコントラクトにおいて、公開鍵または識別情報に関連付けて、機器の利用権に関する情報として、利用可能時間に関する情報が記録される。これにより、利用可能時間を指定してユーザーに利用権を付与するサービスを提供することができ、サービス提供事業者およびユーザーの利便性を高めることができる。
【0095】
また、スマートコントラクトにおいて、公開鍵または識別情報に関連付けて、機器の利用権に関する情報として、利用可能回数に関する情報が記録される。これにより、利用可能回数を指定してユーザーに利用権を付与するサービスを提供することができ、サービス提供事業者およびユーザーの利便性を高めることができる。
【0096】
また、情報処理装置200は、取得した利用権に関する情報に基づいてユーザーによる制御対象機器300の利用が可能と判断された場合に、アクセストークンを生成してユーザー端末100に送信する。そして、ユーザー端末100から制御指示と共にアクセストークンを受け付けた制御対象機器300から、アクセストークンを受信し、制御対象機器300から受信したアクセストークンと、生成したアクセストークンとが同一であるか否かを判断し、同一である場合にアクセストークンが正当である旨を示す情報を制御対象機器300に送信する。これにより、ユーザーの利用権を確認した情報処理装置200が、制御対象機器300を直接制御せず、他の装置が制御対象機器300を制御する場合でも、確実に正当なユーザーによる制御対象機器300の利用を実現することができる。
【0097】
また、アクセストークンは、処理ごとにユニークに生成されるデータであり、利用期限に関する情報を含む。これにより、ユーザーの利用権を確認した情報処理装置200が、制御対象機器300を直接制御せず、他の装置が制御対象機器300を制御する場合でも、より確実に正当なユーザーによる制御対象機器300の利用を実現することができる。
【0098】
また、情報処理装置200は、ユーザー端末100から制御対象機器300に対する制御指示をさらに受信し、取得した利用権に関する情報に基づいてユーザーによる制御対象機器300の利用が可能と判断された場合に、制御対象機器300に対して制御指示を送信してもよい。これにより、ユーザーの利用権を確認した情報処理装置200が、制御対象機器300を直接制御できるため、迅速、確実かつ効率的に正当なユーザーによる制御対象機器300の利用を実現することができる。
【0099】
上述した実施形態に係る利用権情報処理システムにおける各種処理を行う手段および方法は、専用のハードウェア回路、またはプログラムされたコンピューターのいずれによっても実現することが可能である。上記プログラムは、たとえば、フレキシブルディスクおよびCD−ROM等のコンピューター読み取り可能な記録媒体によって提供されてもよいし、インターネット等のネットワークを介してオンラインで提供されてもよい。この場合、コンピューター読み取り可能な記録媒体に記録されたプログラムは、通常、ハードディスク等の記憶部に転送され記憶される。また、上記プログラムは、単独のアプリケーショ
ンソフトとして提供されてもよいし、利用権情報処理システムの一機能としてその装置のソフトウエアに組み込まれてもよい。
【0100】
本出願は、2019年12月13日に出願された日本特許出願(特願2019−225375号)に基づいており、その開示内容は、参照され、全体として組み入れられている。
【符号の説明】
【0101】
100 ユーザー端末、
200 情報処理装置、
300 制御対象機器、
400 サーバー、
500 ブロックチェーン、
110、210、310、410 CPU、
120、220、320、420 ROM、
130、230、330、430 RAM、
140、240、340、440 ストレージ、
150、250、350、450 通信インターフェース、
160、260、360、460 操作表示部。