(57)【要約】【課題】サービスの独立性と安定性を高めることが可能なライセンス管理システムを提供する。【解決手段】提供者端末装置２０は、入力されたアプリケーションに対して暗号化処理を行って暗号化アプリケーションを出力し、利用者端末装置１０からの要求に基づいて、ライセンス付与を行い、ライセンス情報をブロックチェーンネットワークに送信し、利用者端末装置１０は、暗号化アプリケーションの起動時に、ブロックチェーンネットワークに問い合わせ、有効なライセンスが存在するか否かを確認するライセンス認証処理を行い、有効なライセンスが確認された場合に、暗号化アプリケーションを復号して実行可能とする。【選択図】図２
2020030454.tif 000002
【特許請求の範囲】
【請求項１】
第１の装置と、第２の装置と、を備え、
前記第１の装置は、
入力されたデータの暗号化処理を行って暗号化データを出力する暗号化処理部と、
前記第２の装置の利用者に対して前記データに係るライセンスの付与を行い、当該ライセンスの付与に係るライセンス情報をブロックチェーンネットワークに送出するライセンス付与処理部と、を備え、
前記第２の装置は、
前記暗号化データの利用時に、ブロックチェーン上に記録された前記ライセンス情報に基づく認証を行うライセンス認証処理部と、
前記認証が成功した場合に前記暗号化データに対する復号処理を行う復号処理部と、
を備えることを特徴とする情報処理システム。
【請求項２】
請求項１に記載の情報処理システムにおいて、
前記暗号化データは、当該暗号化データを特定するために作成された第１の仮想通貨ウォレットアドレスを含むことを特徴とすることを特徴とする情報処理システム。
【請求項３】
請求項１又は２に記載の情報処理システムにおいて、
前記ライセンス付与処理部は、前記利用者に係る第２の仮想通貨ウォレットアドレスと、前記第１の仮想通貨ウォレットアドレスと、に基づくライセンス情報を前記ブロックチェーンネットワークに送出することを特徴とする情報処理システム。
【請求項４】
請求項１又は２に記載の情報処理システムにおいて、
前記ライセンス付与処理部は、前記利用者に係る第２の仮想通貨ウォレットアドレスと、前記第１の仮想通貨ウォレットアドレスと、前記第２の装置に係る固有情報と、に基づくライセンス情報を前記ブロックチェーンネットワークに送出することを特徴とする情報処理システム。
【請求項５】
請求項１乃至４の何れか一項に記載の情報処理システムにおいて、
前記ライセンス認証処理部は、前記認証時に、ブロックチェーンを記憶する外部装置に対する問い合わせを行い、
前記暗号化処理部は、前記データの暗号化時に、前記ライセンス認証処理部が利用可能な外部装置の接続先リストを前記暗号化データに含めることを特徴とする情報処理システム。
【請求項６】
請求項１乃至５の何れか一項に記載の情報処理システムにおいて、
前記第２の装置は、前記利用者から他の利用者に前記ライセンスを移行するための移行情報を前記ブロックチェーンネットワークに公開することにより前記ライセンスの移行を行うライセンス移行処理部を備えることを特徴とする情報処理システム。
【請求項７】
請求項６に記載の情報処理システムにおいて、
前記第２の装置は、前記ライセンスの移行を行うことを通知する移行通知を前記第１の装置に送信する移行通知送信処理部をさらに備え、
前記第１の装置は、前記移行通知に基づいて、前記利用者に仮想通貨を送金する処理を行う送金部をさらに備えることを特徴とする情報処理システム。
【請求項８】
入力されたデータの暗号化処理を行って暗号化データを出力する暗号化処理部と、
他の装置の利用者に対して前記データに係るライセンスの付与を行い、当該ライセンスの付与に係るライセンス情報をブロックチェーンネットワークにする送出するライセンス付与処理部と、を備えることを特徴とする情報処理装置。
【請求項９】
暗号化されたデータの利用時に、ブロックチェーン上に記憶されたライセンス情報に基づいて認証を行うライセンス認証処理部と、
前記認証が成功した場合に前記暗号化データに対する復号処理を行う復号処理部と、
を備えることを特徴とする情報処理装置。
【請求項１０】
データに対する暗号化処理を行い、暗号化データを生成する暗号化処理部と、
前記暗号化データの利用時に当該暗号化データのライセンス情報をブロックチェーンネットワークに問い合わせるコードを、前記暗号化処理時に前記暗号化データに付加する付加部と、
を備えることを特徴とする情報処理装置。
【請求項１１】
コンピュータによって実行される情報処理方法であって、
データに対する暗号化処理を行い、暗号化データを生成し、
前記暗号化データの利用時に当該暗号化データのライセンス情報をブロックチェーンネットワークに問い合わせるコードを、前記暗号化処理時に前記暗号化データに付加する
ことを特徴とする情報処理方法。
【請求項１２】
データに対する暗号化処理を行い、暗号化データを生成し、
前記暗号化データの利用時に当該暗号化データのライセンス情報をブロックチェーンネットワークに問い合わせるコードを、前記暗号化処理時に前記暗号化データに付加する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムに関し、特にブロックチェーンを活用してソフトウェア等のライセンスを管理するシステムに関する。
【背景技術】
【０００２】
従来、アプリケーションソフトウェア（以下、単にアプリケーションと記載する）や、音楽、電子書籍などのデジタルコンテンツ（以下、単にコンテンツと記載する）の利用に際して、利用者が正当なライセンスを保持しているか否かを所謂クライアント・サーバシステムによって判定していた。
従来の方法において、クライアント装置は、アプリケーションやコンテンツの実行、利用時にサーバ装置に許諾要求を送信する。許諾要求を受信したサーバ装置は、許諾要求を検証したのち、許諾情報をクライアント装置に送信する。クライアント装置は、この許諾情報を受信したことに応じて、アプリケーションやコンテンツの実行を可能とする。
クライアント装置が送信する許諾要求は、例えば、クライアント装置あるいはユーザ自身を特定する識別情報（ユーザＩＤ）と、ライセンスコードのペアである。このような識別情報を受信したサーバ装置は認証用データベースを参照し、該当のペアがデータベースに登録されていれば、許諾情報をクライアント装置に送信する。
または、特許文献１に開示されるシステムでは、利用者端末（クライアント装置）は、鍵生成部と、許諾要求部と、コンテンツ利用部とを備える。鍵生成部は、第１鍵ペアと第２鍵ペアとを生成する。許諾要求部は、第２鍵ペアの公開の暗号鍵を含む許諾要求を、第１鍵ペアの秘密の暗号鍵で電子署名して送信する。
それに対し、権利者端末（サーバ装置）は、鍵管理部と、許諾検証部と、許諾発行部を備える。鍵管理部は、第３鍵ペアとコンテンツ復号鍵とを格納する。許諾検証部は、利用者端末から受信した許諾要求を検証する。許諾発行部は、許諾要求に含まれる第２鍵ペアの公開の暗号鍵を用いてコンテンツ復号鍵を暗号化し、暗号化したコンテンツ復号鍵を含む許諾情報を第３鍵ペアの秘密の暗号鍵で電子署名して送信する。
許諾情報を受信した利用者端末のコンテンツ利用部は、許諾情報から第２鍵ペアの秘密の復号鍵を用いてコンテンツ復号鍵を取得し、コンテンツを利用する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−０５０７６３公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来行われているクライアント・サーバシステムに則ったライセンス認証（クラウド認証）には、以下のような問題がある。すなわち、サーバ装置、権利者端末が障害やメンテナンスによって非稼動状態にある場合、ライセンス認証を行うことが出来ない。さらに、ライセンスを付与した主体がサービスを終了し、サーバ装置や権利者端末の稼働を終了してしまった場合、もはや認証を行うことが出来ず、アプリケーションやコンテンツの利用が不可能となってしまう。
本願発明は、上記の課題を鑑みてなされたものであり、アプリケーションやコンテンツのライセンス認証を安定的、継続的に実行可能なシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明は、上述の課題を解決するためになされたものであり、以下の形態により実現することが可能である。
第１の形態は、第１の装置と、第２の装置と、を備え、前記第１の装置は、入力されたデータの暗号化処理を行って暗号化データを出力する暗号化処理部と、前記第２の装置の利用者に対して前記データに係るライセンスの付与を行い、当該ライセンスの付与に係るライセンス情報をブロックチェーンネットワークに送出するライセンス付与処理部と、を備え、前記第２の装置は、前記暗号化データの利用時に、ブロックチェーン上に記録された前記ライセンス情報に基づく認証を行うライセンス認証処理部と、前記認証が成功した場合に前記暗号化データに対する復号処理を行う復号処理部と、を備える情報処理システムを特徴とする。
第２の形態は、入力されたデータの暗号化処理を行って暗号化データを出力する暗号化処理部と、他の装置の利用者に対して前記データに係るライセンスの付与を行い、当該ライセンスの付与に係るライセンス情報をブロックチェーンネットワークにする送出するライセンス付与処理部と、を備える情報処理装置を特徴とする。
第３の形態は、暗号化されたデータの利用時に、ブロックチェーン上に記憶されたライセンス情報に基づいて認証を行うライセンス認証処理部と、前記認証が成功した場合に前記暗号化データに対する復号処理を行う復号処理部と、を備える情報処理装置を特徴とする。
第４の形態は、データに対する暗号化処理を行い、暗号化データを生成する暗号化処理部と、前記暗号化データの利用時に当該暗号化データのライセンス情報をブロックチェーンネットワークに問い合わせるコードを、前記暗号化処理時に前記暗号化データに付加する付加部と、を備える情報処理装置を特徴とする。
第５の形態は、コンピュータによって実行される情報処理方法であって、データに対する暗号化処理を行い、暗号化データを生成し、前記暗号化データの利用時に当該暗号化データのライセンス情報をブロックチェーンネットワークに問い合わせるコードを、前記暗号化処理時に前記暗号化データに付加する情報処理方法を特徴とする。
第６の形態は、データに対する暗号化処理を行い、暗号化データを生成し、前記暗号化データの利用時に当該暗号化データのライセンス情報をブロックチェーンネットワークに問い合わせるコードを、前記暗号化処理時に前記暗号化データに付加する処理をコンピュータに実行させる情報処理プログラムを特徴とする。
【発明の効果】
【０００６】
以上のように構成したので、本発明によれば、アプリケーションやコンテンツ等のライセンス認証を安定的、継続的に実行可能なシステムを実現することが出来る。
【図面の簡単な説明】
【０００７】
【図１】本実施形態のシステム構成を示す概略図である。
【図２】本実施形態のライセンス管理システムの概略を説明する図である。
【図３】本実施形態においてアプリケーションを実行する利用者端末装置の機能構成を示す図である。
【図４】本実施形態においてアプリケーションを提供する提供者端末装置の機能構成を示す図である。
【図５】暗号化ツールによって生成される暗号化アプリケーションを説明する図である。
【図６】提供者端末装置が実行するアプリケーション暗号化処理を説明するフローチャートである。
【図７】利用者端末装置が実行するアプリケーション起動時処理を説明するフローチャートである。
【図８】図７のライセンス認証処理を説明するフローチャートである。
【図９】提供者端末装置が実行するライセンス付与処理を説明するフローチャートである。
【図１０】利用者端末装置が実行するライセンス移行処理を説明するフローチャートである。
【発明を実施するための形態】
【０００８】
以下に、図面を参照して本発明の実施の形態を詳細に説明する。
図１は、本実施形態のシステム構成を示す概略図である。
図１（ａ）は、本実施形態のシステムに係るネットワーク構成を示す概略図である。
本実施形態に係るシステム１において、アプリケーションの利用者が使用する利用者端末装置１０と、アプリケーションの提供者（開発者）が使用する提供者端末装置２０と、がインターネットを介して相互に接続されている。
さらにインターネットには、ブロックチェーンネットワークに参加してマイニング作業を行うマイナーが用いる多数のマイナー装置３０が接続されている。
【０００９】
多数のマイナー装置３０ｘ（３０ｘ−１、３０ｘ−２・・・）によってブロックチェーンネットワークｘが構成され、多数のマイナー装置３０ｙ（３０ｙ−１、３０ｙ−２・・・）によってブロックチェーンネットワークｙが構成されている。
これらのブロックチェーンネットワークは、Ｐ２Ｐ（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）ネットワークであり、ブロックチェーンネットワークｘは仮想通貨Ｘのネットワーク、ブロックチェーンネットワークｙは仮想通貨Ｙのネットワークである。
【００１０】
ブロックチェーンには、仮想通貨に用いられるものを含め、多くのものが存在している。仮想通貨にも、代表的なビットコインの他に、アルトコインと呼ばれるものが知られている。アルトコインの代表的なものとして、Ｅｔｈｅｒｅｕｍ（イーサリアム）やＭｏｎａｃｏｉｎ（モナコイン：登録商標）などが知られている。
【００１１】
インターネット上においてはビットコインを運営、機能させるためのブロックチェーンネットワークと、各種アルトコインを運営、機能させるためのブロックチェーンネットワークと、が存在する。
各ブロックチェーンネットワークには、それぞれマイナー装置３０が多く接続されて、プルーフオブワーク（ＰｏＷ）を行っている。なお、他のブロックチェーンネットワークには、コンセンサスアルゴリズムとしてプルーフオブステーク（ＰｏＳ）、プルーフオブコンセンサス（ＰｏＣ）を採用するものがある。
【００１２】
いずれの場合においても、ブロックチェーンネットワークは、中央集権的なサーバを持たないＰ２Ｐネットワークである。ブロックチェーンは、ブロックチェーンネットワークに属するそれぞれのマイナー装置が有するストレージ、サーバ装置、及びプールサーバに備えるストレージに、同じ取引情報が格納されている。ブロックチェーンが、分散型取引台帳と呼ばれる所以である。
【００１３】
図１（ｂ）は、ブロックチェーンネットワークに属する装置が有するブロックチェーンを示す図である。
図１（ｂ）を用いて、ブロックチェーンの概略を説明する。
ブロックチェーンは、逐次発生する取引情報などをブロック単位で接続することにより成立する。
【００１４】
すなわち、ブロックチェーン技術では、取引記録や契約など、内容を保証したいデータをブロックという単位で扱う。ブロックを所定の方法で連結して保管したものがブロックチェーンである。ブロックチェーンの生成にあたってはハッシュ関数が用いられており、ハッシュ関数は任意長の任意データに対して固定長のハッシュ値を求めるための関数である。
ハッシュ関数には一方向性という特徴があり、任意データからハッシュ値を求めることは容易であるが、逆に、ハッシュ値から元のデータを復元することは現実的には不可能であるとされる。
【００１５】
マイナー装置は、ブロックチェーンに対して新たなブロックを接続するとき、直前のブロックのハッシュ値と、現ブロックのデータと、任意のＮｏｎｃｅとを用いた元のデータに対して、ハッシュ関数を適用する。そして、マイナー装置は、元のデータのハッシュ値の上位数ビットが０となるようなＮｏｎｃｅ値を探索する。現ブロックのデータは、接続すべき新たなブロックのトランザクションデータを１まとめにしたマークルルートと呼ばれるデータである。Ｎｏｎｃｅは、例えば、３２ｂｉｔ固定長の値である。ハッシュ関数には、例えば、任意のデータを用いて２５６ｂｉｔのハッシュ値を算出するＳＨＡ−２５６などが用いられる。ＳＨＡ−２５６を適用において、ハッシュ値の上位１０ｂｉｔが０となる確率は１０２４分の１となる。
【００１６】
マイナー装置は、ハッシュ値から元のデータを復元することは困難なので、Ｎｏｎｃｅの値を変えながら元のデータにハッシュ関数を適用し、ハッシュ値の上位数ビットに決められた個数の０が並ぶ正しいＮｏｎｃｅを探索する。正しいＮｏｎｃｅを探し出したマイナー装置は、ブロックチェーンネットワークに正しいＮｏｎｃｅを送信する。そして、ブロックチェーンネットワークに含まれる他のマイナー装置が、受け取ったＮｏｎｃｅが正しいことを承認することにより、ブロックがブロックチェーンに連結される。
上記のブロックを承認するためのコンセンサスアルゴリズムは、プルーフオブワークと呼ばれる。
プルーフオブワークによる承認作業をすることにより、ブロックチェーンの各ブロックには、図１（ｂ）に示すように、ブロックのデータと、直前のブロックのハッシュ値と、探索されたＮｏｎｃｅ値と、を含む。
【００１７】
このようなブロックチェーンは、各ブロックが直前のブロックのハッシュ値を持っているため、先端の（起点となる最古の）ブロックから順に辿ることで、全てのブロックの正当性を確認することが出来る。
なお途中のブロックを改ざんしようとすると、そのブロック以降全てのブロックのＮｏｎｃｅを再計算する必要があるが、上記した総当たりを全てのブロックについて行うしかないため、計算量的に不可能である。
このような特徴を有することで、ブロックチェーンの信頼性は担保されている。
【００１８】
なお、ブロックチェーンを利用した仮想通貨の分野において、「仮想通貨を利用者に対して送金する」とは、あくまで便宜的な表現である。
ビットコインにおいて、仮想通貨の送金は、利用者のアドレスにロックされている、ビットコインの額を含む未使用のトランザクションアウトプットをアンロックし、送金先の利用者のアドレスにロックする処理である。ビットコインでは、未使用のトランザクションアウトプットのことを、ＵＴＸＯ（Ｕｎｓｐｅｎｔ  Ｔｒａｎｓａｃｔｉｏｎ  Ｏｕｔｐｕｔ）ともいう。以下の説明では、トランザクションアウトプットのことを単にアウトプットともいう。
ＵＴＸＯは、トランザクションにおいて他のトランザクションと接続されていないアウトプットのことであり、所有者のアドレスを記載したＳｃｒｉｐｔＰｕｂＫｅｙを含んでいる。なお、所有者のアドレスは、所有者の公開鍵または公開鍵ハッシュである。以下の説明では、所有者のアドレスは、公開鍵ハッシュであるものとして説明する。
【００１９】
すなわち、仮想通貨の送金では、所有者の公開鍵ハッシュ（アドレス）を含むＳｃｒｉｐｔＰｕｂＫｅｙによってロックされているＵＴＸＯを、所有者の秘密鍵を用いて生成した電子署名によってアンロックする。そして、アンロックしたＵＴＸＯを、所有者が新たに作成したトランザクションと接続する。また、仮想通貨の送金では、新たに作成したトランザクションのＵＴＸＯを、次の所有者の公開鍵ハッシュを含むＳｃｒｉｐｔＰｕｂＫｅｙによってロックする。
所有者は、新たに作成したトランザクションをブロックチェーンネットワークに送信する。そして、マイナー装置がトランザクションを承認し、ブロックチェーンに新たに作成したトランザクションを含むブロックが組み込まれることにより、仮想通貨の送金（ＵＴＸＯの所有権の移転）が完了する。
【００２０】
従って、仮想通貨の送金では、何らかの価値情報がデータとして利用者端末装置間でやりとりされることはない。従って、端末装置内に、仮想通貨の残高を示す情報が格納されることはない。
端末装置にインストールされたウォレットソフトウェアは、利用者のアドレスに紐付けられたＵＴＸＯをブロックチェーンネットワークから検索することによって、利用者が有する仮想通貨の残高を利用者に提示する。
【００２１】
図２は、本実施形態のライセンス管理システムの概略を説明する図である。
図中の(１)〜(７)のステップに従って、処理を概説する。
（１）提供者端末装置２０は、アプリケーションを任意の手段で利用者端末装置１０に提供する。このアプリケーションは暗号化された暗号化アプリケーションの状態で配布される。利用者端末装置１０は、利用者に対する有効なライセンスの存在が確認されることを条件に、暗号化アプリケーションを復号することにより、実行することが出来る。
【００２２】
（２）利用者端末装置１０は、提供者端末装置２０に対して、暗号化アプリケーションを利用するためのライセンスの付与要求を行う。この付与要求において、利用者の仮想通貨ウォレットアドレスが送信される。
仮想通貨のウォレットアドレスによって、アプリケーションを利用する利用者が特定され得る。
アプリケーションのライセンスは、特定のウォレットアドレスを有する利用者が、そのアプリケーションを利用可能なように付与される。
【００２３】
好適には、利用者のウォレットアドレスとともに、利用者端末装置１０の端末固有情報が提供者端末装置２０に送信される。端末固有情報によっては、利用者端末装置１０が一意に特定され得る。端末固有情報とは、例えば、ＣＰＵＩＤやＤＩＳＫＩＤなどのハードウェア固有情報である。ＣＰＵＩＤは、ＣＰＵに対して製造時に一意に与えられた識別情報である。また、ＤＩＳＫＩＤは、ハードディスクに対して製造時に一意に与えられた識別情報である。
端末固有情報が送信される場合、ライセンスは、特定のウォレットアドレスを有する利用者が、そのアプリケーションを特定の利用者端末装置でのみ実行可能なように付与される。
ライセンスを有する利用者が、複数の端末装置でアプリケーションを同時起動することや、ライセンスを複数の利用者で使い回したりすることを防止することが出来る。
【００２４】
（３）利用者端末装置からのライセンスの付与要求を受信した提供者端末装置２０は、付与要求に含まれる利用者のウォレットアドレス、端末固有情報と、提供者端末装置２０が有するアプリケーションごとに作成されたイーサリアムウォレットアドレス（公開鍵）に基づいて、上記ライセンス情報としてのライセンストークンを作成する。
アプリケーションごとのウォレットアドレスによって、ライセンスの付与及び認証時に、その対象となるアプリケーションを特定することが出来る。
【００２５】
本実施形態において、仮想通貨のウォレットアドレスは、イーサリアムのウォレットアドレスが好適に用いられる。
本実施形態において、アプリケーションのライセンス情報（特定の利用者がアプリケーションのライセンスを有しているか否かを示す情報）はブロックチェーン上に記録される。そして、利用者端末装置１０におけるアプリケーションの実行時に、ブロックチェーン上に記録されたライセンス情報に基づいてライセンス認証を行う。
この仕組みは、その他のブロックチェーン（仮想通貨）、例えば、ビットコインやモナコインを用いても基本的に実現可能である。しかしながら、イーサリアムは、他のブロックチェーンシステムが備えないスマートコントラクトという仕組みを有している。
スマートコントラクトは、ブロックチェーンネットワークを構成する各ノードで実行される仮想マシン（ＥＶＭ：Ｅｔｈｅｒｕｅｍ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）で行われる分散的な処理によって実現される。
スマートコントラクトは、ブロックチェーン上で、様々な契約や売買を自動化することが出来る。
【００２６】
本実施形態の場合、スマートコントラクトでは、後述のトークン形式によるライセンス情報のブロックチェーンへの登録（デプロイ）と、ライセンス情報を用いたライセンス認証を、ブロックチェーンネットワーク上で完結した処理によって、自動的に行うことができる。
ライセンス情報は、特定のサーバではなく、ブロックチェーンのメモリ領域に格納され、ライセンス情報を用いた認証はこれも特定のサーバでなく各ノードによる分散処理によって行われる。
すなわち、他のブロックチェーンシステムではなく、時にイーサリアムを用いることで、ブロックチェーン上に記録されたライセンス情報を用いてライセンス認証を行うサーバ装置を別途用意する必要がなくなる。
本実施形態では、利用者にアプリケーションのライセンスを付与し、その付与に係るライセンス情報を登録するために用いるブロックチェーンシステムとして、イーサリアムを用いることを前提に説明を行うものとする。
（４）提供者端末装置２０は、作成したライセンストークンを、スマートコントラクトにデプロイする。これにより、利用者に対してアプリケーションのライセンスが付与されたことがブロックチェーンに登録され、ライセンスの付与が完了する。
【００２７】
（５）利用者端末装置１０は、暗号化アプリケーションの起動時に、暗号化アプリケーションに組み込まれた復号用コードを実行する。
復号用コードは、復号の条件となるライセンス認証のために、ブロックチェーンネットワーク上で実行されるスマートコントラクトに対する問い合わせを行う。
この問い合わせは、利用者のイーサリアムウォレットアドレス、暗号化アプリケーションに含まれるアプリケーションごとのイーサリアムウォレットアドレス、をクエリとしたブロックチェーンに対する検索である。
アプリケーションごとのイーサリアムウォレットアドレスによっては、ライセンス認証の対象となるアプリケーションを特定することが出来る。
【００２８】
（６）スマートコントラクトは、クエリに対する応答として、ライセンスの有無、あるいは端末固有情報を利用者端末装置１０に返す。
上記（２）乃至（４）のように、ブロックチェーン上には、利用者のイーサリアムウォレットアドレス、端末固有情報、アプリケーションごとのイーサリアムウォレットアドレスに基づいて生成されたライセンストークンが記録されている。
問い合わせを受けて、スマートコントラクトは、クエリに含まれるウォレットアドレスによって、ライセンストークンをトークンリスト中から特定する。
そして、スマートコントラクトは、特定したライセンストークンに含まれる端末固有情報を、利用者端末装置１０に返す。あるいは、単にライセンストークンの有無に基づいて、正常なライセンス有無を利用者端末装置１０に返す。
（７）利用者端末装置１０で実行されている復号用コードは、ブロックチェーン（スマートコントラクト）から返された端末固有情報と、利用者端末装置１０の実際の端末固有情報が一致したことを条件に暗号化アプリケーションを復号し、アプリケーションを実行する。
【００２９】
本実施形態をより詳細に説明する。利用者は、ダウンロードした暗号化アプリケーションを自身の利用者端末装置１０で起動する。
利用者端末装置１０にイーサリアムウォレットが存在しない場合、利用者端末装置１０では、自動的にイーサリアムウォレットが作成される。
本実施形態において、ライセンス認証は、利用者のイーサリアムウォレットアドレスを用いて行われるため、イーサリアムウォレットが作成されていることが大前提となる。従って、イーサリアムウォレットが存在しない場合、暗号化アプリケーションのライセンスは付与されていないことになる。
利用者端末装置１０は、ライセンス付与要求として、イーサリアムウォレットアドレスと、利用者端末装置１０の端末固有情報と、を提供者端末装置２０に提供する。これらの情報は、電子メールやその他の通信手段を用いて送信することが出来る。
【００３０】
提供者端末装置２０は、利用者端末装置１０から受け取ったイーサリアムウォレットアドレス及び端末固有情報に対してライセンスの付与を行う。
ライセンスの付与とは、具体的には、スマートコントラクトのＡＰＩを呼び出し、受け取ったイーサリアムウォレットアドレスにトークンを追加することである。
トークンには、利用者端末装置１０の端末固有情報を含めるため、ノードロックを行うことができる。ノードロックとはすなわち、端末固有情報で特定される特定の端末装置でのみ、暗号化アプリケーションの実行を許可するものである。複数の端末装置でのアプリケーションの同時起動を制限したい場合、トークンに端末固有情報を含めることは好適である。ただし、ライセンスの付与にあたって端末固有情報は必ずしも必要ではない。
利用者端末装置１０は、ライセンス付与要求として、イーサリアムウォレットアドレスのみを提供者端末装置２０に送信してもよい。
その場合、ライセンス情報（トークン）に端末固有情報は含まれず、上記ノードロックを行うことは出来ないが、アプリケーションを実行可能なハードウェアに制限がなくなるため、後述するライセンスの移行がより容易となる。
【００３１】
アプリケーションの提供者は、Ｓｏｌｉｄｉｔｙ等の言語を用いてトークンを記述し、これをブロックチェーンに対してデプロイするためのトランザクションを作成して公開する。
提供者端末装置２０は、ウォレットアドレスで特定される利用者がライセンスをもっていることを示すトークンを、スマートコントラクトを使用して書き込む。
トークンの実体は、スマートコントラクト上のメモリ領域に格納される。
トークンは、例えば、以下のように記述される。
2020030454.tif 000003
上記のコードにおいては、ＰＣ（利用者端末装置１０）の端末固有情報と、アプリケーションごとのイーサリアムウォレットアドレスと、購入者（利用者）のイーサリアムウォレットアドレスと、をトークンに組み込み、トークンリストにマッピングすることが行われている。
これにより、特定のアプリケーションソフトウェアに関する利用者のライセンスがブロックチェーンネットワークに記録されたことになる。
スマートコントラクトが使用できないブロックチェーンを使用する場合は、ＯＰ＿ＲＥＴＵＲＮにＰＣの固有ノード情報を記載した、提供者の秘密鍵で署名したトランザクションを購入者のアドレスに送信することによって、ブロックチェーンに書き込む。
【００３２】
暗号化アプリケーションの起動時、利用者端末装置１０にイーサリアムウォレットが見つかった場合、暗号化アプリケーションに含まれる復号用ＤＬＬ（復号用コード）は、有効なライセンスが付与されているかをブロックチェーンネットワークに問い合わせる。
イーサリアムウォレットが存在する場合でも、そのアドレスにたいして必ずしも暗号化アプリケーションのライセンスが付与されているとは限らないのは当然である。よって、復号用ＤＬＬはライセンス認証として、ブロックチェーンネットワークに対する問い合わせを行う。
この問い合わせは、アプリケーションごとのイーサリアムウォレットアドレスと、利用者のイーサリアムウォレットアドレスと、をクエリ（検索キー）として、ブロックチェーンネットワークの検索を行うことによって行われる。
検索結果は、例えば、クエリに対応する端末固有情報として返される。
復号用ＤＬＬは、返された端末固有情報と実際の端末固有情報との照合を行い、これらが一致すれば、正しくライセンスが付与されていると判断する。
ライセンス付与時に端末固有情報を送信していない場合、スマートコントラクトが返す問い合わせ結果は正常なライセンスの有無のみである。
正常なライセンスの存在が確認された結果、復号用ＤＬＬは、アプリケーションに含まれる共通鍵によって暗号化アプリケーションを復号してそれを実行可能とする。
【００３３】
なお、ライセンス認証にあたって、利用者端末装置１０がすべてのブロックチェーンのデータ（フルノード）を保持することは記録媒体の容量を考慮しても困難である。
従って、任意のサーバで起動しているフルノードに問い合わせを行うことが望ましい。
接続先のフルノードは暗号化アプリケーションの起動時に利用者が選択することができる。
また、ライセンスの二重使用を防ぐため、接続先のフルノードを、提供者端末装置２０におけるアプリケーションの暗号化時に限定可能としてもよい。すなわち、アプリケーションが使用することができるフルノードのアドレス（接続先ＵＲＬ）のリストを暗号化時に指定する。すなわち、接続先ＵＲＬのリストを暗号化アプリケーションに含める。
【００３４】
提供者端末装置２０によって、一度ライセンストークンがブロックチェーンにデプロイされると、もはや提供者端末装置２０が介在することなく、スマートコントラクトの機能として、利用者のライセンス認証が実行される。
従って、アプリケーションの提供者がサービスを終了したり、障害が発生したりすることによって、提供者端末装置２０の稼働が終了あるいは停止した場合でも、利用者端末装置１０は、ブロックチェーン上に記録されたライセンストークンを利用可能である。これにより、利用者端末１０は、提供者端末装置２０の稼働が終了あるいは停止した場合でも、ライセンス認証を行って暗号化アプリケーションを実行することが出来る。
従来のクライアントサーバ方式の認証では、サーバ装置が稼働しなければライセンス認証を行うことが出来ず、アプリケーションやコンテンツを利用することが出来ない。
しかしながら、ライセンスに必要な情報をブロックチェーン上で管理するともに、ライセンス認証をブロックチェーン上で自動的に行うようにしたことで、上記のような問題を回避することが出来る。
また、認証用のサーバ装置を常時稼働させておく必要もないため、サービスの運営側にとっても、コスト面や運用面でも非常に有利であると言える。
【００３５】
以下に、上記のような処理を実現するための本実施形態の構成を詳しく説明する。
図３は、利用者端末装置の機能構成を示す図であり、（ａ）はハードウェアによる機能構成を示す図、（ｂ）はソフトウェアによる機能構成を示すブロック図である。
利用者端末装置１０は、例えば、図３（ａ）に示すコンピュータ装置である。
利用者端末装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：プロセッサ）４１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４２と、を備える。さらに、利用者端末装置１０は、ドライブ装置４３と、記録媒体４４と、不図示のＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）と、ネットワークＩ／Ｆ４５と、を備える。
ＣＰＵ４１は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともに、利用者端末装置１０の機能を実現するプログラムを実行する。ＲＡＭ４２には、ＣＰＵ４１による処理のために各種のプログラムや一時データ、変数が展開される。
【００３６】
ドライブ装置４３は、記録媒体４４に記憶された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記録媒体４４は、ドライブ装置４３によって書き込まれた情報を記憶する。記録媒体４４は、例えば、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの種類の記憶媒体のうちの少なくとも１つである。また、例えば、利用者端末装置１０は、利用者端末装置１０内の記録媒体４４の種類に対応したドライブ装置４３を含む。
記録媒体４４及びＲＯＭのすくなくとも一方には、プログラムやデータが格納される。ネットワークＩ／Ｆ４５は、利用者端末装置１０をネットワークに接続する。
さらに、利用者端末装置１０は、マウスやキーボードなどの入力装置４６と、液晶ディスプレイなどの表示装置４７と、を備える。
【００３７】
また、図３（ｂ）に示すように、ＣＰＵ４１は、処理部として、ライセンス要求処理部５０、ライセンス認証処理部５１、復号処理部５２、ライセンス移行処理部５３と、を実行する。
ライセンス要求処理部５０は、提供者端末装置２０によって提供されるアプリケーションに対する初回のラインセンス付与を、提供者端末装置２０に対して要求する処理を行う処理部である。
ライセンス認証処理部５１、復号処理部５２は、提供者端末装置２０から提供される暗号化アプリケーションの一部であり、記録媒体４４にダウンロードされた暗号化アプリケーションが起動されることによって実行される。
ライセンス認証処理部５１は、暗号化アプリケーションの起動時に、ブロックチェーンネットワークに問い合わせを行い、有効なライセンスが存在するか否かを確認するライセンス認証を行う処理部である。ブロックチェーンネットワークへの問い合わせは、ブロックチェーンネットワークに対するライセンスの認証要求であるとも言える。
復号処理部５２は、ライセンス認証処理部５１による処理によって有効なライセンスが確認されたことを条件に、暗号化アプリケーションを復号して実行可能とする処理部である。
ライセンス移行処理部５３は、スマートコントラクトに関連する処理を行い、ライセンストークンを、他の利用者に移譲するためのトランザクションを作成、送信する処理を行う処理部である。
【００３８】
図４は、提供者端末装置の機能構成を示す図であり、（ａ）はハードウェアによる機能構成を示す図、（ｂ）はソフトウェアによる機能構成を示すブロック図である。
提供者端末装置２０は、例えば、図４（ａ）に示すコンピュータ装置である。
提供者端末装置２０は、ＣＰＵ６１と、ＲＡＭ６２と、を備える。さらに、提供者端末装置２０は、ドライブ装置６３と、記録媒体６４と、不図示のＲＯＭと、ネットワーク  Ｉ／Ｆ６５と、を備える。
ＣＰＵ６１は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともに、提供者端末装置２０の機能を実現するプログラムを実行する。ＲＡＭ６２は、ＣＰＵ６１による処理のために各種のプログラムや一時データ、変数が展開される。
【００３９】
ドライブ装置６３は、記録媒体６４に記憶された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記録媒体６４は、ドライブ装置６３によって書き込まれた情報を記憶する。記録媒体６４は、例えば、ハードディスク、ＳＳＤ、ＣＤ、ＤＶＤ、ブルーレイディスクなどの種類の記憶媒体のうちの少なくとも１つである。また、例えば、提供者端末装置２０は、提供者端末装置２０内の記録媒体６４の種類に対応したドライブ装置６３を含む。
記録媒体６４及びＲＯＭのすくなくとも一方には、プログラムやデータが格納される。ネットワーク  Ｉ／Ｆ６５は、提供者端末装置２０をネットワークに接続する。
さらに、提供者端末装置２０は、マウスやキーボードなどの入力装置６６と、液晶ディスプレイなどの表示装置６７と、を備える。
【００４０】
また、図４（ｂ）に示すように、ＣＰＵ６１は、処理部として、暗号化処理部（暗号化ツール）７１、ライセンス付与処理部７２を実行する。
暗号化処理部７１は、アプリケーションの提供者によるアプリケーションのバイナリデータの入力をうけて、暗号化処理を行い、暗号化アプリケーションを出力する暗号化ツールである。
提供者は１つのアプリケーションについて１つのイーサリアムウォレットを作成し、暗号化アプリケーションには、アプリケーションごとのイーサリアムウォレットアドレスが含まれる。
アプリケーションごとに作成されるイーサリアムウォレットアドレスによって、ライセンスの付与や認証時に、対象のアプリケーションが特定される。
イーサリアム以外のブロックチェーンシステムを用いる場合には、ウォレットアドレスによって、認証のために問い合わせるブロックチェーンを特定することも可能である。
【００４１】
ライセンス付与処理部７２は、利用者端末装置１０からのライセンス付与要求に応じて、スマートコントラクトＡＰＩを呼び出してライセンストークンの生成を行い、ブロックチェーン（スマートコントラクト）に登録（デプロイ）するスマートコントラクト処理部である。ライセンストークンは、ライセンス認証をスマートコントラクトによって行うためのライセンス情報である。
本実施形態のシステムにおいて、提供者端末装置２０は、アプリケーションのライセンストークンを、ブロックチェーン上に保持する。
【００４２】
図５は、提供者端末装置の暗号化ツールによって生成される暗号化アプリケーションを説明する図である。
上記のように提供者端末装置２０には、暗号化ツールがインストールされている。
暗号化ツールは、暗号化前アプリケーションのデータを暗号化するための暗号化コードを有する。
【００４３】
本実施形態において、アプリケーションは暗号化されて配布されるため、バイナリデータに対してなされる書き換えや解析によるクラッキングを防止することができる。
なお、採用される共通鍵暗号化方式としては、ＡＥＳ（Advanced Encryption Standard）が典型であるが、その他の共通鍵暗号化方式でもよい。
暗号化アプリケーションは、任意のウェブサイトやストアアプリ等から好適にダウンロード可能である。
【００４４】
図５（ａ）に示すように、提供者端末装置２０は、暗号化ツールにより暗号化前アプリケーションのデータを所定の共通鍵を使用して暗号化し、暗号化アプリケーションのデータを出力する。
暗号化ツールは、ブロックチェーンに問い合わせるプログラム、アプリケーションのウォレットアドレス、復合化用の共通鍵を含む復号用ダイナミックリンクライブラリ（ＤＬＬ）を予め備えている。復号用ＤＬＬは、その本体として暗号化データを復号するための復号用コードを有する。
暗号化後の暗号化アプリケーションは、上記復号用ＤＬＬと共に出力される。
アプリケーションの暗号化に用いる共通鍵は、暗号化ツールの外部から入力されてもよいし、復号用ＤＬＬに含まれるものを用いてもよい。
【００４５】
図５（ｂ）に示すように、提供者端末装置２０の記録媒体６４に格納されている暗号化前のアプリケーションは、暗号化前のプログラム、リソース、及びエントリーポイントから構成される。エントリーポイントはプログラムの始点を指し示している。
【００４６】
図５（ｃ）は、暗号化アプリケーションのデータ構成を示している。暗号化アプリケーションは、図５（ｂ）の暗号化前アプリケーションの構成にスタブプログラムが加わった構成である。
暗号化前とは異なり、エントリーポイントはスタブプログラムの始点を指し示し、スタブプログラムが、暗号化後のプログラムの始点を指し示す。
【００４７】
利用者端末装置１０にダウンロードされた暗号化アプリケーションが実行されると、スタブプログラムがまず実行される。スタブプログラムは、復号用ＤＬＬを呼び出し、暗号化プログラムの復号のための処理を行わせる。この処理は、ブロックチェーンに対してライセンスの有無を問い合わせる処理を含む。
すなわち、復号用ＤＬＬは、上記のライセンス認証処理部５１、復号処理部５２の機能に相当するプログラムを含んでいる。
復合用ＤＬＬの本体は、利用者端末装置１０で実行されたときに復号処理部５２として機能する。また、復号用ＤＬＬが含むブロックチェーンに問い合わせるプログラムは、利用者端末装置１０で実行されたときにライセンス認証処理部５１の一部として機能する。
暗号化ツールでは、任意のアプリケーションをフックして暗号化アプリケーション実行時に復号用ＤＬＬが呼ばれるようにインジェクションすることで、ブロックチェーンに問い合わせるプログラムが暗号化アプリケーションに自動的に挿入（付加）される。ブロックチェーンに問い合わせるプログラムは、ＣＰＵ４１をライセンス認証処理部５１として機能させるプログラムである。
暗号化アプリケーションにおいて暗号化されているのは、図５（ｂ）におけるプログラム本体のみである。暗号化されたプログラム本体は、図５（ｃ）の暗号化アプリケーションにおける暗号化後プログラムとなる。
復号用ＤＬＬは、エントリーポイント、リソース、スタブプログラムと同様に、暗号化後プログラムとは別体のコードとして、暗号化後アプリケーション内に挿入される。
復号用ＤＬＬは、暗号化アプリケーションの実行バイナリとは別ファイルとして付加されてもよいし、実行バイナリに含まれていてもよい。
【００４８】
図６は、提供者端末装置が実行するアプリケーション暗号化処理を説明するフローチャートである。
ＣＰＵ６１（暗号化処理部７１）は、ステップＳ５１において、暗号化対象のアプリケーションのバイナリデータの入力を受け付ける。
上記のように、アプリケーションの実行ファイルは、エントリーポイント、プログラム本体、リソースよりなる。
ＣＰＵ６１（暗号化処理部７１）は、ステップＳ５２において、入力されたアプリケーションデータのうちのプログラム本体を、所定の共通鍵を用いて暗号化し、暗号化プログラムを生成する。
【００４９】
ＣＰＵ６１（暗号化処理部７１）は、ステップＳ５３において、エントリーポイント、暗号化プログラム、リソースよりなる暗号化アプリケーションに対し、復号用ＤＬＬ、スタブブログラムを挿入する。
上記のように、復号用ＤＬＬには、ライセンス認証のためのブロックチェーンへの問い合わせプログラム、アプリケーションごとのイーサリアムウォレットアドレス、復号用の共通鍵を含む。
ＣＰＵ６１（暗号化処理部７１）は、ステップＳ５４において、エントリーポイント、暗号化プログラム、リソース、復号用ＤＬＬを含む「暗号化アプリケーション」のデータを出力する。
【００５０】
図７は、利用者端末装置が実行するアプリケーション起動時処理を説明するフローチャートである。
ＣＰＵ４１は、ステップＳ１０１において、マウスのダブルクリック操作などによるアプリケーションの起動操作が行われたか否かを判定する。
アプリケーションの起動操作が行われていないと判定した場合（ステップ１０１でＮｏ）、ＣＰＵ４１は、そのまま処理を終了する。
アプリケーションの起動操作が行われたと判定した場合（ステップＳ１０１でＹｅｓ）、ＣＰＵ４１は、ステップＳ１０２において、暗号化されたアプリケーションの起動処理を開始する。
【００５１】
ＣＰＵ４１（ライセンス要求処理部５０）は、ステップＳ１０３において、利用者端末装置１０に利用者のイーサリアムウォレットが存在するか否かを判定する。
イーサリアムウォレットが利用者端末装置１０に存在しないと判定した場合（ステップＳ１０３でＮｏ）、ＣＰＵ４１（ライセンス要求処理部５０）は、ステップＳ１０７において、イーサリアムウォレットを新規に作成する。そして、ＣＰＵ４１（ライセンス要求処理部５０）は、ステップＳ１０８において、そのイーサリアムウォレットアドレスと、利用者端末装置１０の端末固有情報を、提供者端末装置２０に対して送信することによりライセンス付与要求を行う。
【００５２】
ウォレットが存在すると判定した場合（ステップＳ１０３でＹｅｓ）、ＣＰＵ４１（ライセンス認証処理部５１）は、ステップＳ１０４において、図８で説明するライセンス認証処理を行う。
ＣＰＵ４１は、ステップＳ１０５において、ステップＳ１０４のライセンス認証が成功したか否か、すなわち、暗号化プログラムが復号されたか否か暗号化が解除されたか否かを判定する。
暗号化が解除されたと判定した場合（ステップＳ１０５でＹｅｓ）、ＣＰＵ４１は、ステップＳ１０６において、アプリケーションを起動し、処理を終了する。
暗号化が解除されていないと判定した場合（ステップＳ１０５でＮｏ）、ＣＰＵ４１は、アプリケーションを起動できず、そのまま処理を終了する。
【００５３】
図８は、図７のライセンス認証処理を説明するフローチャートである。
ライセンス認証処理部５１は、ステップＳ１１１において、有効ライセンスの有無をブロックチェーンネットワークに問い合わせる。このときライセンス認証処理部５１は、アプリケーションごとのウォレットアドレス、利用者のウォレットアドレスをブロックチェーンネットワークに送信する。
ライセンス認証処理部５１は、ステップＳ１１２において、ブロックチェーンネットワークから問い合わせ結果（端末固有情報、正常なライセンスの有無）を受信したか否かを判定する。
問い合わせ結果を受信していないと判定した場合（ステップＳ１１２でＮｏ）、ライセンス認証処理部５１は、ステップ１１２の処理を繰り返し、問い合わせ結果の受信を待機する。
【００５４】
問い合わせ結果を受信したと判定した場合（ステップＳ１１２でＹｅｓ）、ライセンス認証処理部５１は、ステップＳ１１３において、問い合わせ結果の端末固有情報が実際の端末固有情報と一致するか否か、問い合わせ結果が正常なライセンスの存在を示すか否か、を判定する。
問い合わせ結果の端末固有情報が実際の端末固有情報と一致する、あるいは問い合わせ結果が正常なライセンスの存在を示すと判定した場合（ステップＳ１１３でＹｅｓ）、ライセンス認証処理部５１は、ステップＳ１１４において、共通鍵を用いてアプリケーションの暗号化を解除し、処理を終了する。
問い合わせ結果の端末固有情報が実際の端末固有情報と一致しない、あるいは問い合わせ結果が正常なライセンスの存在を示さないと判定した場合（ステップＳ１１３でＮｏ）、ライセンス認証処理部５１は、そのまま処理を終了し、アプリケーションの暗号化を解除しない。
【００５５】
図９は、アプリケーション提供者（開発者）の端末装置が実行するライセンス付与処理を説明するフローチャートである。
ＣＰＵ６１（ライセンス付与処理部７２）は、ステップＳ２０１において、ライセンス付与要求として、利用者のイーサリアムウォレットアドレスと、利用者端末装置１０の端末固有情報を受信したか否かを判定する。上記のように、ライセンス付与要求にあたって利用者端末装置１０の端末固有情報は必須ではない。
ライセンス付与要求を受信したと判定した場合（ステップＳ２０１でＹｅｓ）、ＣＰＵ６１（ライセンス付与処理部７２）は、ステップＳ２０２において、スマートコントラクトＡＰＩ（スマートコントラクト処理部）を呼び出し、ステップＳ２０３において、利用者のウォレットアドレスに対してライセンストークンを付与し、ライセンス付与処理を終了する。
【００５６】
本実施形態のシステムにおける、ライセンス移行の手続きを説明する。
ライセンスを有する利用者は、自身のウォレットの秘密鍵を使って認証することで、ライセンストークンを別の利用者に譲渡することができる。
すなわち利用者は、任意のウォレットに対してライセンスを移行するスマートコントラクトを実行することができる。
イーサリアムにおけるスマートコントラクトの実行にはガスと呼ばれる手数料が必要となるが、利用者のウォレットに対してイーサリアムを自動的に付与することで、利用者がイーサリアムを購入する必要がないようにすることも可能である。
例えば、ライセンスの移行に先だって、一の利用者は、他の利用者にライセンスを移行する旨を示す移行通知を提供者端末装置２０に送信する。
この移行通知は、移行元の利用者のウォレットアドレス、移行先の利用者のウォレットアドレスを少なくも含む。
この場合、利用者端末装置１０は、図３（ｂ）の処理部に加え、移行通知を送信する移行通知送信部を備える。移行通知送信部は、例えば、電子メールを送信可能な電子メールクライアントソフトウェアである。そして、移行通知は、移行通知送信部によって、提供者端末装置２０に送信される。
移行通知を受け取った提供者端末装置２０は、移行通知に記載されている移行元となるウォレットアドレスに対するイーサリアムの送金を行う。
この場合、提供者端末装置２０は、図４（ｂ）の処理部に加え、移行通知を受信するための移行通知受信部と、利用者のウォレットに仮想通貨（イーサリアム）を付与するトランザクションを作成、公開する処理を行う送金部を備える。
移行通知が電子メールによって送信される場合、移行通知受信部もまた、電子メールを受信可能な電子メールクライアントソフトウェアである。
図３（ｂ）に示したライセンス移行処理部５３は、移行元利用者のウォレットを確認し、提供者端末装置２０からのイーサリアムが入金されたか否かを確認する。
ライセンス移行処理部５３は、入金を確認すると、以下に説明するライセンス移行処理を実行する。
また、提供者端末装置２０からの移行通知の送信は、ライセンスを移行するためのスマートコントラクトを実行後に行っても良い。
【００５７】
図１０は、アプリケーションの利用者端末装置が実行するライセンス移行処理を説明するフローチャートである。
ＣＰＵ４１（ライセンス移行処理部５３）は、ステップＳ３０１において、譲渡先の利用者のウォレットに対してライセンストークンを移譲するための移譲トランザクションを作成する。
移譲トランザクションには、当該利用者端末装置を利用する移行元利用者のウォレットの秘密鍵に基づく電子署名と、移行先利用者のウォレットアドレスと、が少なくとも含まれる。
ＣＰＵ４１（ライセンス移行処理部５３）は、ステップＳ３０２において、ステップＳ３０１で作成した譲渡トランザクションをブロックチェーンネットワークに公開する。
これにより、トークンを移行するスマートコントラクトがブロックチェーン上で実行され、ライセンスの移行が実現する。
なお、ライセンス移行に伴う手数料分のイーサリアムの送金は、利用者端末装置１０が送信する移行通知に基づいて行われるのではなく、提供者端末装置２０がブロックチェーンを監視し、ライセンス移行が行われたことを提供者端末装置２０が発見したことを契機に行われても良い。
この場合、提供者端末装置２０は、図４（ｂ）の処理部に加え、ブロックチェーンを常時監視するブロックチェーン監視部、利用者に仮想通貨（イーサリアム）を付与するトランザクションを作成、公開する処理を行う送金部を備える。
ブロックチェーンを監視していたブロックチェーン監視部が、ライセンス移行のための譲渡トランザクションを発見すると、送金部は、譲渡トラザクションを公開した利用者のウォレットに対して、イーサリアムを送金する処理を行う。
【００５８】
なお、本実施形態のシステム１において、このような、ブロックチェーンの監視、イーサリアムの自動付与の処理は、提供者端末装置２０で行うのではなく、これらの端末装置とは別途設けたサーバ装置によって行ってもよい。
サーバ装置は、少なくとも、制御部としてＣＰＵ、ＲＡＭを備え、ネットワークＩ／Ｆによってインターネットに接続されている。
サーバ装置のＣＰＵは、ブロックチェーンを常時監視するブロックチェーン監視部、利用者に仮想通貨（イーサリアム）を付与するトランザクションを作成、公開する処理を行う送金部を実行する。
ブロックチェーンを監視していたブロックチェーン監視部が、ライセンス移行のための譲渡トランザクションを発見すると、送金部は、譲渡トラザクションを公開した利用者のウォレットに対して、イーサリアムを送金する処理を行う。
【００５９】
上記のように構成したので、本実施形態のシステムによれば、アプリケーションを提供した提供者がサービスを終了したり、障害が発生したりすることによって提供者端末装置２０の稼働が終了あるいは停止した場合でも、利用者端末装置１０は、ブロックチェーン上に記録されたライセンストークンを利用して、常にライセンス認証を行って暗号化アプリケーションを実行することが出来る。
サービス提供側も、認証サーバ（ライセンスサーバ）を常時稼働させる必要がなくなり、コスト面や運用面で有利なシステムとすることが出来る。
【００６０】
なお、上記の説明においては、イーサリアムが有するスマートコントラクトの仕組みを用い、ブロックチェーン上にライセンスに関する情報を記録するとともに、アプリケーションにおけるライセンス認証の機能を、ブロックチェーン上で完結して（完全にサーバーレスで）実現している。
それに対し、ブロックチェーン上にライセンス情報を記録するが、ブロックチェーンを探索してライセンスの有無を問い合わせる探索サーバを別途設ける構成としてもよい。
上記で説明したイーサリアム以外のブロックチェーンのプロトコルによっても、ライセンス情報を格納するストレージとしてブロックチェーンを用い、ライセンス認証は別途設けたサーバ装置によって行うことで、類似の仕組みを実現することが出来る。
この場合、復号用ＤＬＬに含まれるライセンス認証処理部５１は、暗号化アプリケーションの実行時に探索サーバに対して問い合わせを行う。すなわち、アプリケーションのウォレットアドレス、利用者のウォレットアドレスを探索サーバに送信する。
探索サーバは、これらの情報に基づいて、ブロックチェーンのメモリ領域を探索し、ライセンスの有無をライセンス認証処理部５１に返す処理を行う。
【００６１】
また、上記の説明ではライセンスの付与、認証の対象がアプリケーションソフトウェアに限られていたが、本発明はそれに限定されることはない。
電子書籍や動画、音楽などのコンテンツについても、同様に適用可能である。
例えば、提供者は、これらのコンテンツデータを暗号化して配信する。暗号化されたコンテンツデータを取得した利用者が用いる端末装置で実行される閲覧ソフトウェアは、コンテンツの表示のたびに、ブロックチェーンネットワークに問い合わせて認証を行う。
認証が成功した場合、閲覧ソフトウェアは、暗号化コンテンツデータを復号して表示を行う。このような構成とすることにより、デジタルコンテンツを提供した提供者がサービスを終了したり、障害が発生したりすることによって提供者端末装置２０の稼働が終了あるいは停止した場合でも、利用者端末装置１０は、ブロックチェーン上に記録されたライセンストークンを利用して、ライセンス認証を行ってデジタルコンテンツを表示することが出来る。
【符号の説明】
【００６２】
１  システム、１０  利用者端末装置、２０  提供者端末装置、３０  マイナー装置、４１  ＣＰＵ、４２  ＲＡＭ、４３  ドライブ装置、４４  記録媒体、４５  ネットワークＩ／Ｆ、４６  入力装置、４７  表示装置、５１  ライセンス認証処理部、５２  復号処理部、５３  ライセンス移行処理部、６１  ＣＰＵ、６２  ＲＡＭ、６３  ドライブ装置、６４  記録媒体、６５  ネットワークＩ／Ｆ、６６  入力装置、６７  表示装置、７１  暗号化処理部（暗号化ツール）、７２  ライセンス付与処理部、７３  スマートコントラクト処理部
【図１】
2020030454.tif 000004
【図２】
2020030454.tif 000005
【図３】
2020030454.tif 000006
【図４】
2020030454.tif 000007
【図５】
2020030454.tif 000008
【図６】
2020030454.tif 000009
【図７】
2020030454.tif 000010
【図８】
2020030454.tif 000011
【図９】
2020030454.tif 000012
【図１０】
2020030454.tif 000013