(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-04
(45)【発行日】2022-04-12
(54)【発明の名称】情報処理システム、情報処理装置、情報処理方法及び情報処理プログラム
(51)【国際特許分類】
G06F 21/10 20130101AFI20220405BHJP
G06Q 20/06 20120101ALI20220405BHJP
G06Q 20/38 20120101ALI20220405BHJP
H04L 9/32 20060101ALI20220405BHJP
【FI】
G06F21/10
G06Q20/06 300
G06Q20/38 310
H04L9/32 200Z
(21)【出願番号】P 2018153949
(22)【出願日】2018-08-20
【審査請求日】2021-02-10
(73)【特許権者】
【識別番号】398034168
【氏名又は名称】株式会社アクセル
(74)【代理人】
【識別番号】100085660
【氏名又は名称】鈴木 均
(74)【代理人】
【識別番号】100149892
【氏名又は名称】小川 弥生
(74)【代理人】
【識別番号】100185672
【氏名又は名称】池田 雅人
(72)【発明者】
【氏名】客野 一樹
【審査官】小林 秀和
(56)【参考文献】
【文献】国際公開第2018/075129(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/10
H04L 9/32
G06Q 20/06
G06Q 20/38
(57)【特許請求の範囲】
【請求項1】
第1の装置と、第2の装置と、を備え、
前記第1の装置は、
入力されたデータの暗号化処理を行って暗号化データを出力する暗号化処理部と、
前記第2の装置の利用者に対して前記データに係るライセンスの付与を行い、当該ライセンスの付与に係るライセンス情報をブロックチェーンネットワークに送出するライセンス付与処理部と、を備え、
前記暗号化データは、当該暗号化データを特定するために作成された第1の仮想通貨ウォレットアドレスを含み、
前記第2の装置は、
前記暗号化データの利用時に、ブロックチェーン上に記録され
たライセンス情報に基づく認証を行うライセンス認証処理部と、
前記認証が成功した場合に前記暗号化データに対する復号処理を行う復号処理部と、
を備える、
ことを特徴とする情報処理システム。
【請求項2】
請求項1に記載の情報処理システムにおいて、
前記ライセンス付与処理部は、前記利用者に係る第2の仮想通貨ウォレットアドレスと、前記第1の仮想通貨ウォレットアドレスと、に基づくライセンス情報を前記ブロックチェーンネットワークに送出することを特徴とする情報処理システム。
【請求項3】
請求項1に記載の情報処理システムにおいて、
前記ライセンス付与処理部は、前記利用者に係る第2の仮想通貨ウォレットアドレスと、前記第1の仮想通貨ウォレットアドレスと、前記第2の装置に係る固有情報と、に基づくライセンス情報を前記ブロックチェーンネットワークに送出することを特徴とする情報処理システム。
【請求項4】
請求項1乃至3の何れか一項に記載の情報処理システムにおいて、
前記ライセンス認証処理部は、前記認証時に、ブロックチェーンを記憶する外部装置に対する問い合わせを行い、
前記暗号化処理部は、前記データの暗号化時に、前記ライセンス認証処理部が利用可能な外部装置の接続先リストを前記暗号化データに含めることを特徴とする情報処理システム。
【請求項5】
請求項1乃至4の何れか一項に記載の情報処理システムにおいて、
前記第2の装置は、前記利用者から他の利用者に前記ライセンスを移行するための移行情報を前記ブロックチェーンネットワークに公開することにより前記ライセンスの移行を行うライセンス移行処理部を備えることを特徴とする情報処理システム。
【請求項6】
請求項5に記載の情報処理システムにおいて、
前記第2の装置は、前記ライセンスの移行を行うことを通知する移行通知を前記第1の装置に送信する移行通知送信処理部をさらに備え、
前記第1の装置は、前記移行通知に基づいて、前記利用者に仮想通貨を送金する処理を行う送金部をさらに備えることを特徴とする情報処理システム。
【請求項7】
入力されたデータの暗号化処理を行って暗号化データを出力する暗号化処理部と、
他の装置の利用者に対して前記データに係るライセンスの付与を行い、当該ライセンスの付与に係るライセンス情報をブロックチェーンネットワークにする送出するライセンス付与処理部と、を備え、
前記暗号化データは、当該暗号化データを特定するために作成された第1の仮想通貨ウォレットアドレスを含む、
ことを特徴とする情報処理装置。
【請求項8】
暗号化データの利用時に、ブロックチェーン上に記憶されたライセンス情報に基づいて認証を行うライセンス認証処理部と、
前記認証が成功した場合に前記暗号化データに対する復号処理を行う復号処理部と、
を備え、
前記暗号化データは、当該暗号化データを特定するために作成された第1の仮想通貨ウォレットアドレスを含む、
ことを特徴とする情報処理装置。
【請求項9】
データに対する暗号化処理を行い、暗号化データを生成する暗号化処理部と、
前記データの利用者に対して前記データに係るライセンスの付与を行い、前記ライセンスの付与に係るライセンス情報をブロックチェーンネットワークに送出するライセンス付与処理部と、
前記暗号化データの利用時に
前記ライセンス情報
に応じて認証を行うために、前記ライセンス情報をブロックチェーンネットワークに問い合わせるコードを
、前記暗号化データに付加する付加部と、
を備え
、
前記付加部は、さらに、
前記暗号化データの利用時に前記暗号化データを特定するために作成された第1の仮想通貨ウォレットアドレスを前記暗号化データに付加する
ことを特徴とする情報処理装置。
【請求項10】
コンピュータによって実行される情報処理方法であって、
データに対する暗号化処理を行い、暗号化データを生成し、
前記データの利用者に対して前記データに係るライセンスを付与し、
前記ライセンスの付与に係るライセンス情報をブロックチェーンネットワークに送出し、
前記暗号化データの利用時に
前記ライセンス情報
に応じて認証を行うために、前記ライセンス情報をブロックチェーンネットワークに問い合わせるコードを
、前記暗号化データに付加
し、
前記暗号化データの利用時に前記暗号化データを特定するために作成された第1の仮想通貨ウォレットアドレスを前記暗号化データに付加する
ことを特徴とする情報処理方法。
【請求項11】
データに対する暗号化処理を行い、暗号化データを生成し、
前記データの利用者に対して前記データに係るライセンスを付与し、
前記ライセンスの付与に係るライセンス情報をブロックチェーンネットワークに送出し、
前記暗号化データの利用時に
前記ライセンス情報
に応じて認証を行うために、前記ライセンス情報をブロックチェーンネットワークに問い合わせるコードを
、前記暗号化データに付加
し、
前記暗号化データの利用時に前記暗号化データを特定するために作成された第1の仮想通貨ウォレットアドレスを前記暗号化データに付加する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システムに関し、特にブロックチェーンを活用してソフトウェア等のライセンスを管理するシステムに関する。
【背景技術】
【0002】
従来、アプリケーションソフトウェア(以下、単にアプリケーションと記載する)や、音楽、電子書籍などのデジタルコンテンツ(以下、単にコンテンツと記載する)の利用に際して、利用者が正当なライセンスを保持しているか否かを所謂クライアント・サーバシステムによって判定していた。
従来の方法において、クライアント装置は、アプリケーションやコンテンツの実行、利用時にサーバ装置に許諾要求を送信する。許諾要求を受信したサーバ装置は、許諾要求を検証したのち、許諾情報をクライアント装置に送信する。クライアント装置は、この許諾情報を受信したことに応じて、アプリケーションやコンテンツの実行を可能とする。
クライアント装置が送信する許諾要求は、例えば、クライアント装置あるいはユーザ自身を特定する識別情報(ユーザID)と、ライセンスコードのペアである。このような識別情報を受信したサーバ装置は認証用データベースを参照し、該当のペアがデータベースに登録されていれば、許諾情報をクライアント装置に送信する。
または、特許文献1に開示されるシステムでは、利用者端末(クライアント装置)は、鍵生成部と、許諾要求部と、コンテンツ利用部とを備える。鍵生成部は、第1鍵ペアと第2鍵ペアとを生成する。許諾要求部は、第2鍵ペアの公開の暗号鍵を含む許諾要求を、第1鍵ペアの秘密の暗号鍵で電子署名して送信する。
それに対し、権利者端末(サーバ装置)は、鍵管理部と、許諾検証部と、許諾発行部を備える。鍵管理部は、第3鍵ペアとコンテンツ復号鍵とを格納する。許諾検証部は、利用者端末から受信した許諾要求を検証する。許諾発行部は、許諾要求に含まれる第2鍵ペアの公開の暗号鍵を用いてコンテンツ復号鍵を暗号化し、暗号化したコンテンツ復号鍵を含む許諾情報を第3鍵ペアの秘密の暗号鍵で電子署名して送信する。
許諾情報を受信した利用者端末のコンテンツ利用部は、許諾情報から第2鍵ペアの秘密の復号鍵を用いてコンテンツ復号鍵を取得し、コンテンツを利用する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来行われているクライアント・サーバシステムに則ったライセンス認証(クラウド認証)には、以下のような問題がある。すなわち、サーバ装置、権利者端末が障害やメンテナンスによって非稼動状態にある場合、ライセンス認証を行うことが出来ない。さらに、ライセンスを付与した主体がサービスを終了し、サーバ装置や権利者端末の稼働を終了してしまった場合、もはや認証を行うことが出来ず、アプリケーションやコンテンツの利用が不可能となってしまう。
本願発明は、上記の課題を鑑みてなされたものであり、アプリケーションやコンテンツのライセンス認証を安定的、継続的に実行可能なシステムを提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明は、上述の課題を解決するためになされたものであり、以下の形態により実現することが可能である。
第1の形態は、第1の装置と、第2の装置と、を備え、前記第1の装置は、入力されたデータの暗号化処理を行って暗号化データを出力する暗号化処理部と、前記第2の装置の利用者に対して前記データに係るライセンスの付与を行い、当該ライセンスの付与に係るライセンス情報をブロックチェーンネットワークに送出するライセンス付与処理部と、を備え、前記暗号化データは、当該暗号化データを特定するために作成された第1の仮想通貨ウォレットアドレスを含み、前記第2の装置は、前記暗号化データの利用時に、ブロックチェーン上に記録されたライセンス情報に基づく認証を行うライセンス認証処理部と、前記認証が成功した場合に前記暗号化データに対する復号処理を行う復号処理部と、を備える、情報処理システムを特徴とする。
第2の形態は、入力されたデータの暗号化処理を行って暗号化データを出力する暗号化処理部と、他の装置の利用者に対して前記データに係るライセンスの付与を行い、当該ライセンスの付与に係るライセンス情報をブロックチェーンネットワークにする送出するライセンス付与処理部と、を備え、前記暗号化データは、当該暗号化データを特定するために作成された第1の仮想通貨ウォレットアドレスを含む情報処理装置を特徴とする。
第3の形態は、暗号化データの利用時に、ブロックチェーン上に記憶されたライセンス情報に基づいて認証を行うライセンス認証処理部と、前記認証が成功した場合に前記暗号化データに対する復号処理を行う復号処理部と、を備え、前記暗号化データは、当該暗号化データを特定するために作成された第1の仮想通貨ウォレットアドレスを含む情報処理装置を特徴とする。
第4の形態は、データに対する暗号化処理を行い、暗号化データを生成する暗号化処理部と、前記データの利用者に対して前記データに係るライセンスの付与を行い、前記ライセンスの付与に係るライセンス情報をブロックチェーンネットワークに送出するライセンス付与処理部と、前記暗号化データの利用時に前記ライセンス情報に応じて認証を行うために、前記ライセンス情報をブロックチェーンネットワークに問い合わせるコードを、前記暗号化データに付加する付加部と、を備え、前記付加部は、さらに、前記暗号化データの利用時に前記暗号化データを特定するために作成された第1の仮想通貨ウォレットアドレスを前記暗号化データに付加する情報処理装置を特徴とする。
第5の形態は、コンピュータによって実行される情報処理方法であって、データに対する暗号化処理を行い、暗号化データを生成し、前記データの利用者に対して前記データに係るライセンスを付与し、前記ライセンスの付与に係るライセンス情報をブロックチェーンネットワークに送出し、前記暗号化データの利用時に前記ライセンス情報に応じて認証を行うために、前記ライセンス情報をブロックチェーンネットワークに問い合わせるコードを、前記暗号化データに付加し、前記暗号化データの利用時に前記暗号化データを特定するために作成された第1の仮想通貨ウォレットアドレスを前記暗号化データに付加する情報処理方法を特徴とする。
第6の形態は、データに対する暗号化処理を行い、暗号化データを生成し、前記データの利用者に対して前記データに係るライセンスを付与し、前記ライセンスの付与に係るライセンス情報をブロックチェーンネットワークに送出し、前記暗号化データの利用時に前記ライセンス情報に応じて認証を行うために、前記ライセンス情報をブロックチェーンネットワークに問い合わせるコードを、前記暗号化データに付加し、前記暗号化データの利用時に前記暗号化データを特定するために作成された第1の仮想通貨ウォレットアドレスを前記暗号化データに付加する処理をコンピュータに実行させる情報処理プログラムを特徴とする。
【発明の効果】
【0006】
以上のように構成したので、本発明によれば、アプリケーションやコンテンツ等のライセンス認証を安定的、継続的に実行可能なシステムを実現することが出来る。
【図面の簡単な説明】
【0007】
【
図1】本実施形態のシステム構成を示す概略図である。
【
図2】本実施形態のライセンス管理システムの概略を説明する図である。
【
図3】本実施形態においてアプリケーションを実行する利用者端末装置の機能構成を示す図である。
【
図4】本実施形態においてアプリケーションを提供する提供者端末装置の機能構成を示す図である。
【
図5】暗号化ツールによって生成される暗号化アプリケーションを説明する図である。
【
図6】提供者端末装置が実行するアプリケーション暗号化処理を説明するフローチャートである。
【
図7】利用者端末装置が実行するアプリケーション起動時処理を説明するフローチャートである。
【
図8】
図7のライセンス認証処理を説明するフローチャートである。
【
図9】提供者端末装置が実行するライセンス付与処理を説明するフローチャートである。
【
図10】利用者端末装置が実行するライセンス移行処理を説明するフローチャートである。
【発明を実施するための形態】
【0008】
以下に、図面を参照して本発明の実施の形態を詳細に説明する。
図1は、本実施形態のシステム構成を示す概略図である。
図1(a)は、本実施形態のシステムに係るネットワーク構成を示す概略図である。
本実施形態に係るシステム1において、アプリケーションの利用者が使用する利用者端末装置10と、アプリケーションの提供者(開発者)が使用する提供者端末装置20と、がインターネットを介して相互に接続されている。
さらにインターネットには、ブロックチェーンネットワークに参加してマイニング作業を行うマイナーが用いる多数のマイナー装置30が接続されている。
【0009】
多数のマイナー装置30x(30x-1、30x-2・・・)によってブロックチェーンネットワークxが構成され、多数のマイナー装置30y(30y-1、30y-2・・・)によってブロックチェーンネットワークyが構成されている。
これらのブロックチェーンネットワークは、P2P(Peer to Peer)ネットワークであり、ブロックチェーンネットワークxは仮想通貨Xのネットワーク、ブロックチェーンネットワークyは仮想通貨Yのネットワークである。
【0010】
ブロックチェーンには、仮想通貨に用いられるものを含め、多くのものが存在している。仮想通貨にも、代表的なビットコインの他に、アルトコインと呼ばれるものが知られている。アルトコインの代表的なものとして、Ethereum(イーサリアム)やMonacoin(モナコイン:登録商標)などが知られている。
【0011】
インターネット上においてはビットコインを運営、機能させるためのブロックチェーンネットワークと、各種アルトコインを運営、機能させるためのブロックチェーンネットワークと、が存在する。
各ブロックチェーンネットワークには、それぞれマイナー装置30が多く接続されて、プルーフオブワーク(PoW)を行っている。なお、他のブロックチェーンネットワークには、コンセンサスアルゴリズムとしてプルーフオブステーク(PoS)、プルーフオブコンセンサス(PoC)を採用するものがある。
【0012】
いずれの場合においても、ブロックチェーンネットワークは、中央集権的なサーバを持たないP2Pネットワークである。ブロックチェーンは、ブロックチェーンネットワークに属するそれぞれのマイナー装置が有するストレージ、サーバ装置、及びプールサーバに備えるストレージに、同じ取引情報が格納されている。ブロックチェーンが、分散型取引台帳と呼ばれる所以である。
【0013】
図1(b)は、ブロックチェーンネットワークに属する装置が有するブロックチェーンを示す図である。
図1(b)を用いて、ブロックチェーンの概略を説明する。
ブロックチェーンは、逐次発生する取引情報などをブロック単位で接続することにより成立する。
【0014】
すなわち、ブロックチェーン技術では、取引記録や契約など、内容を保証したいデータをブロックという単位で扱う。ブロックを所定の方法で連結して保管したものがブロックチェーンである。ブロックチェーンの生成にあたってはハッシュ関数が用いられており、ハッシュ関数は任意長の任意データに対して固定長のハッシュ値を求めるための関数である。
ハッシュ関数には一方向性という特徴があり、任意データからハッシュ値を求めることは容易であるが、逆に、ハッシュ値から元のデータを復元することは現実的には不可能であるとされる。
【0015】
マイナー装置は、ブロックチェーンに対して新たなブロックを接続するとき、直前のブロックのハッシュ値と、現ブロックのデータと、任意のNonceとを用いた元のデータに対して、ハッシュ関数を適用する。そして、マイナー装置は、元のデータのハッシュ値の上位数ビットが0となるようなNonce値を探索する。現ブロックのデータは、接続すべき新たなブロックのトランザクションデータを1まとめにしたマークルルートと呼ばれるデータである。Nonceは、例えば、32bit固定長の値である。ハッシュ関数には、例えば、任意のデータを用いて256bitのハッシュ値を算出するSHA-256などが用いられる。SHA-256を適用において、ハッシュ値の上位10bitが0となる確率は1024分の1となる。
【0016】
マイナー装置は、ハッシュ値から元のデータを復元することは困難なので、Nonceの値を変えながら元のデータにハッシュ関数を適用し、ハッシュ値の上位数ビットに決められた個数の0が並ぶ正しいNonceを探索する。正しいNonceを探し出したマイナー装置は、ブロックチェーンネットワークに正しいNonceを送信する。そして、ブロックチェーンネットワークに含まれる他のマイナー装置が、受け取ったNonceが正しいことを承認することにより、ブロックがブロックチェーンに連結される。
上記のブロックを承認するためのコンセンサスアルゴリズムは、プルーフオブワークと呼ばれる。
プルーフオブワークによる承認作業をすることにより、ブロックチェーンの各ブロックには、
図1(b)に示すように、ブロックのデータと、直前のブロックのハッシュ値と、探索されたNonce値と、を含む。
【0017】
このようなブロックチェーンは、各ブロックが直前のブロックのハッシュ値を持っているため、先端の(起点となる最古の)ブロックから順に辿ることで、全てのブロックの正当性を確認することが出来る。
なお途中のブロックを改ざんしようとすると、そのブロック以降全てのブロックのNonceを再計算する必要があるが、上記した総当たりを全てのブロックについて行うしかないため、計算量的に不可能である。
このような特徴を有することで、ブロックチェーンの信頼性は担保されている。
【0018】
なお、ブロックチェーンを利用した仮想通貨の分野において、「仮想通貨を利用者に対して送金する」とは、あくまで便宜的な表現である。
ビットコインにおいて、仮想通貨の送金は、利用者のアドレスにロックされている、ビットコインの額を含む未使用のトランザクションアウトプットをアンロックし、送金先の利用者のアドレスにロックする処理である。ビットコインでは、未使用のトランザクションアウトプットのことを、UTXO(Unspent Transaction Output)ともいう。以下の説明では、トランザクションアウトプットのことを単にアウトプットともいう。
UTXOは、トランザクションにおいて他のトランザクションと接続されていないアウトプットのことであり、所有者のアドレスを記載したScriptPubKeyを含んでいる。なお、所有者のアドレスは、所有者の公開鍵または公開鍵ハッシュである。以下の説明では、所有者のアドレスは、公開鍵ハッシュであるものとして説明する。
【0019】
すなわち、仮想通貨の送金では、所有者の公開鍵ハッシュ(アドレス)を含むScriptPubKeyによってロックされているUTXOを、所有者の秘密鍵を用いて生成した電子署名によってアンロックする。そして、アンロックしたUTXOを、所有者が新たに作成したトランザクションと接続する。また、仮想通貨の送金では、新たに作成したトランザクションのUTXOを、次の所有者の公開鍵ハッシュを含むScriptPubKeyによってロックする。
所有者は、新たに作成したトランザクションをブロックチェーンネットワークに送信する。そして、マイナー装置がトランザクションを承認し、ブロックチェーンに新たに作成したトランザクションを含むブロックが組み込まれることにより、仮想通貨の送金(UTXOの所有権の移転)が完了する。
【0020】
従って、仮想通貨の送金では、何らかの価値情報がデータとして利用者端末装置間でやりとりされることはない。従って、端末装置内に、仮想通貨の残高を示す情報が格納されることはない。
端末装置にインストールされたウォレットソフトウェアは、利用者のアドレスに紐付けられたUTXOをブロックチェーンネットワークから検索することによって、利用者が有する仮想通貨の残高を利用者に提示する。
【0021】
図2は、本実施形態のライセンス管理システムの概略を説明する図である。
図中の(1)~(7)のステップに従って、処理を概説する。
(1)提供者端末装置20は、アプリケーションを任意の手段で利用者端末装置10に提供する。このアプリケーションは暗号化された暗号化アプリケーションの状態で配布される。利用者端末装置10は、利用者に対する有効なライセンスの存在が確認されることを条件に、暗号化アプリケーションを復号することにより、実行することが出来る。
【0022】
(2)利用者端末装置10は、提供者端末装置20に対して、暗号化アプリケーションを利用するためのライセンスの付与要求を行う。この付与要求において、利用者の仮想通貨ウォレットアドレスが送信される。
仮想通貨のウォレットアドレスによって、アプリケーションを利用する利用者が特定され得る。
アプリケーションのライセンスは、特定のウォレットアドレスを有する利用者が、そのアプリケーションを利用可能なように付与される。
【0023】
好適には、利用者のウォレットアドレスとともに、利用者端末装置10の端末固有情報が提供者端末装置20に送信される。端末固有情報によっては、利用者端末装置10が一意に特定され得る。端末固有情報とは、例えば、CPUIDやDISKIDなどのハードウェア固有情報である。CPUIDは、CPUに対して製造時に一意に与えられた識別情報である。また、DISKIDは、ハードディスクに対して製造時に一意に与えられた識別情報である。
端末固有情報が送信される場合、ライセンスは、特定のウォレットアドレスを有する利用者が、そのアプリケーションを特定の利用者端末装置でのみ実行可能なように付与される。
ライセンスを有する利用者が、複数の端末装置でアプリケーションを同時起動することや、ライセンスを複数の利用者で使い回したりすることを防止することが出来る。
【0024】
(3)利用者端末装置からのライセンスの付与要求を受信した提供者端末装置20は、付与要求に含まれる利用者のウォレットアドレス、端末固有情報と、提供者端末装置20が有するアプリケーションごとに作成されたイーサリアムウォレットアドレス(公開鍵)に基づいて、上記ライセンス情報としてのライセンストークンを作成する。
アプリケーションごとのウォレットアドレスによって、ライセンスの付与及び認証時に、その対象となるアプリケーションを特定することが出来る。
【0025】
本実施形態において、仮想通貨のウォレットアドレスは、イーサリアムのウォレットアドレスが好適に用いられる。
本実施形態において、アプリケーションのライセンス情報(特定の利用者がアプリケーションのライセンスを有しているか否かを示す情報)はブロックチェーン上に記録される。そして、利用者端末装置10におけるアプリケーションの実行時に、ブロックチェーン上に記録されたライセンス情報に基づいてライセンス認証を行う。
この仕組みは、その他のブロックチェーン(仮想通貨)、例えば、ビットコインやモナコインを用いても基本的に実現可能である。しかしながら、イーサリアムは、他のブロックチェーンシステムが備えないスマートコントラクトという仕組みを有している。
スマートコントラクトは、ブロックチェーンネットワークを構成する各ノードで実行される仮想マシン(EVM:Etheruem Virtual Machine)で行われる分散的な処理によって実現される。
スマートコントラクトは、ブロックチェーン上で、様々な契約や売買を自動化することが出来る。
【0026】
本実施形態の場合、スマートコントラクトでは、後述のトークン形式によるライセンス情報のブロックチェーンへの登録(デプロイ)と、ライセンス情報を用いたライセンス認証を、ブロックチェーンネットワーク上で完結した処理によって、自動的に行うことができる。
ライセンス情報は、特定のサーバではなく、ブロックチェーンのメモリ領域に格納され、ライセンス情報を用いた認証はこれも特定のサーバでなく各ノードによる分散処理によって行われる。
すなわち、他のブロックチェーンシステムではなく、時にイーサリアムを用いることで、ブロックチェーン上に記録されたライセンス情報を用いてライセンス認証を行うサーバ装置を別途用意する必要がなくなる。
本実施形態では、利用者にアプリケーションのライセンスを付与し、その付与に係るライセンス情報を登録するために用いるブロックチェーンシステムとして、イーサリアムを用いることを前提に説明を行うものとする。
(4)提供者端末装置20は、作成したライセンストークンを、スマートコントラクトにデプロイする。これにより、利用者に対してアプリケーションのライセンスが付与されたことがブロックチェーンに登録され、ライセンスの付与が完了する。
【0027】
(5)利用者端末装置10は、暗号化アプリケーションの起動時に、暗号化アプリケーションに組み込まれた復号用コードを実行する。
復号用コードは、復号の条件となるライセンス認証のために、ブロックチェーンネットワーク上で実行されるスマートコントラクトに対する問い合わせを行う。
この問い合わせは、利用者のイーサリアムウォレットアドレス、暗号化アプリケーションに含まれるアプリケーションごとのイーサリアムウォレットアドレス、をクエリとしたブロックチェーンに対する検索である。
アプリケーションごとのイーサリアムウォレットアドレスによっては、ライセンス認証の対象となるアプリケーションを特定することが出来る。
【0028】
(6)スマートコントラクトは、クエリに対する応答として、ライセンスの有無、あるいは端末固有情報を利用者端末装置10に返す。
上記(2)乃至(4)のように、ブロックチェーン上には、利用者のイーサリアムウォレットアドレス、端末固有情報、アプリケーションごとのイーサリアムウォレットアドレスに基づいて生成されたライセンストークンが記録されている。
問い合わせを受けて、スマートコントラクトは、クエリに含まれるウォレットアドレスによって、ライセンストークンをトークンリスト中から特定する。
そして、スマートコントラクトは、特定したライセンストークンに含まれる端末固有情報を、利用者端末装置10に返す。あるいは、単にライセンストークンの有無に基づいて、正常なライセンス有無を利用者端末装置10に返す。
(7)利用者端末装置10で実行されている復号用コードは、ブロックチェーン(スマートコントラクト)から返された端末固有情報と、利用者端末装置10の実際の端末固有情報が一致したことを条件に暗号化アプリケーションを復号し、アプリケーションを実行する。
【0029】
本実施形態をより詳細に説明する。利用者は、ダウンロードした暗号化アプリケーションを自身の利用者端末装置10で起動する。
利用者端末装置10にイーサリアムウォレットが存在しない場合、利用者端末装置10では、自動的にイーサリアムウォレットが作成される。
本実施形態において、ライセンス認証は、利用者のイーサリアムウォレットアドレスを用いて行われるため、イーサリアムウォレットが作成されていることが大前提となる。従って、イーサリアムウォレットが存在しない場合、暗号化アプリケーションのライセンスは付与されていないことになる。
利用者端末装置10は、ライセンス付与要求として、イーサリアムウォレットアドレスと、利用者端末装置10の端末固有情報と、を提供者端末装置20に提供する。これらの情報は、電子メールやその他の通信手段を用いて送信することが出来る。
【0030】
提供者端末装置20は、利用者端末装置10から受け取ったイーサリアムウォレットアドレス及び端末固有情報に対してライセンスの付与を行う。
ライセンスの付与とは、具体的には、スマートコントラクトのAPIを呼び出し、受け取ったイーサリアムウォレットアドレスにトークンを追加することである。
トークンには、利用者端末装置10の端末固有情報を含めるため、ノードロックを行うことができる。ノードロックとはすなわち、端末固有情報で特定される特定の端末装置でのみ、暗号化アプリケーションの実行を許可するものである。複数の端末装置でのアプリケーションの同時起動を制限したい場合、トークンに端末固有情報を含めることは好適である。ただし、ライセンスの付与にあたって端末固有情報は必ずしも必要ではない。
利用者端末装置10は、ライセンス付与要求として、イーサリアムウォレットアドレスのみを提供者端末装置20に送信してもよい。
その場合、ライセンス情報(トークン)に端末固有情報は含まれず、上記ノードロックを行うことは出来ないが、アプリケーションを実行可能なハードウェアに制限がなくなるため、後述するライセンスの移行がより容易となる。
【0031】
アプリケーションの提供者は、Solidity等の言語を用いてトークンを記述し、これをブロックチェーンに対してデプロイするためのトランザクションを作成して公開する。
提供者端末装置20は、ウォレットアドレスで特定される利用者がライセンスをもっていることを示すトークンを、スマートコントラクトを使用して書き込む。
トークンの実体は、スマートコントラクト上のメモリ領域に格納される。
トークンは、例えば、以下のように記述される。
上記のコードにおいては、PC(利用者端末装置10)の端末固有情報と、アプリケーションごとのイーサリアムウォレットアドレスと、購入者(利用者)のイーサリアムウォレットアドレスと、をトークンに組み込み、トークンリストにマッピングすることが行われている。
これにより、特定のアプリケーションソフトウェアに関する利用者のライセンスがブロックチェーンネットワークに記録されたことになる。
スマートコントラクトが使用できないブロックチェーンを使用する場合は、OP_RETURNにPCの固有ノード情報を記載した、提供者の秘密鍵で署名したトランザクションを購入者のアドレスに送信することによって、ブロックチェーンに書き込む。
【0032】
暗号化アプリケーションの起動時、利用者端末装置10にイーサリアムウォレットが見つかった場合、暗号化アプリケーションに含まれる復号用DLL(復号用コード)は、有効なライセンスが付与されているかをブロックチェーンネットワークに問い合わせる。
イーサリアムウォレットが存在する場合でも、そのアドレスにたいして必ずしも暗号化アプリケーションのライセンスが付与されているとは限らないのは当然である。よって、復号用DLLはライセンス認証として、ブロックチェーンネットワークに対する問い合わせを行う。
この問い合わせは、アプリケーションごとのイーサリアムウォレットアドレスと、利用者のイーサリアムウォレットアドレスと、をクエリ(検索キー)として、ブロックチェーンネットワークの検索を行うことによって行われる。
検索結果は、例えば、クエリに対応する端末固有情報として返される。
復号用DLLは、返された端末固有情報と実際の端末固有情報との照合を行い、これらが一致すれば、正しくライセンスが付与されていると判断する。
ライセンス付与時に端末固有情報を送信していない場合、スマートコントラクトが返す問い合わせ結果は正常なライセンスの有無のみである。
正常なライセンスの存在が確認された結果、復号用DLLは、アプリケーションに含まれる共通鍵によって暗号化アプリケーションを復号してそれを実行可能とする。
【0033】
なお、ライセンス認証にあたって、利用者端末装置10がすべてのブロックチェーンのデータ(フルノード)を保持することは記録媒体の容量を考慮しても困難である。
従って、任意のサーバで起動しているフルノードに問い合わせを行うことが望ましい。
接続先のフルノードは暗号化アプリケーションの起動時に利用者が選択することができる。
また、ライセンスの二重使用を防ぐため、接続先のフルノードを、提供者端末装置20におけるアプリケーションの暗号化時に限定可能としてもよい。すなわち、アプリケーションが使用することができるフルノードのアドレス(接続先URL)のリストを暗号化時に指定する。すなわち、接続先URLのリストを暗号化アプリケーションに含める。
【0034】
提供者端末装置20によって、一度ライセンストークンがブロックチェーンにデプロイされると、もはや提供者端末装置20が介在することなく、スマートコントラクトの機能として、利用者のライセンス認証が実行される。
従って、アプリケーションの提供者がサービスを終了したり、障害が発生したりすることによって、提供者端末装置20の稼働が終了あるいは停止した場合でも、利用者端末装置10は、ブロックチェーン上に記録されたライセンストークンを利用可能である。これにより、利用者端末10は、提供者端末装置20の稼働が終了あるいは停止した場合でも、ライセンス認証を行って暗号化アプリケーションを実行することが出来る。
従来のクライアントサーバ方式の認証では、サーバ装置が稼働しなければライセンス認証を行うことが出来ず、アプリケーションやコンテンツを利用することが出来ない。
しかしながら、ライセンスに必要な情報をブロックチェーン上で管理するともに、ライセンス認証をブロックチェーン上で自動的に行うようにしたことで、上記のような問題を回避することが出来る。
また、認証用のサーバ装置を常時稼働させておく必要もないため、サービスの運営側にとっても、コスト面や運用面でも非常に有利であると言える。
【0035】
以下に、上記のような処理を実現するための本実施形態の構成を詳しく説明する。
図3は、利用者端末装置の機能構成を示す図であり、(a)はハードウェアによる機能構成を示す図、(b)はソフトウェアによる機能構成を示すブロック図である。
利用者端末装置10は、例えば、
図3(a)に示すコンピュータ装置である。
利用者端末装置10は、CPU(Central Processing Unit:プロセッサ)41と、RAM(Random Access Memory)42と、を備える。さらに、利用者端末装置10は、ドライブ装置43と、記録媒体44と、不図示のROM(Read Only Memory)と、ネットワークI/F45と、を備える。
CPU41は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともに、利用者端末装置10の機能を実現するプログラムを実行する。RAM42には、CPU41による処理のために各種のプログラムや一時データ、変数が展開される。
【0036】
ドライブ装置43は、記録媒体44に記憶された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記録媒体44は、ドライブ装置43によって書き込まれた情報を記憶する。記録媒体44は、例えば、ハードディスク、SSD(Solid State Drive)、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスクなどの種類の記憶媒体のうちの少なくとも1つである。また、例えば、利用者端末装置10は、利用者端末装置10内の記録媒体44の種類に対応したドライブ装置43を含む。
記録媒体44及びROMのすくなくとも一方には、プログラムやデータが格納される。ネットワークI/F45は、利用者端末装置10をネットワークに接続する。
さらに、利用者端末装置10は、マウスやキーボードなどの入力装置46と、液晶ディスプレイなどの表示装置47と、を備える。
【0037】
また、
図3(b)に示すように、CPU41は、処理部として、ライセンス要求処理部50、ライセンス認証処理部51、復号処理部52、ライセンス移行処理部53と、を実行する。
ライセンス要求処理部50は、提供者端末装置20によって提供されるアプリケーションに対する初回のラインセンス付与を、提供者端末装置20に対して要求する処理を行う処理部である。
ライセンス認証処理部51、復号処理部52は、提供者端末装置20から提供される暗号化アプリケーションの一部であり、記録媒体44にダウンロードされた暗号化アプリケーションが起動されることによって実行される。
ライセンス認証処理部51は、暗号化アプリケーションの起動時に、ブロックチェーンネットワークに問い合わせを行い、有効なライセンスが存在するか否かを確認するライセンス認証を行う処理部である。ブロックチェーンネットワークへの問い合わせは、ブロックチェーンネットワークに対するライセンスの認証要求であるとも言える。
復号処理部52は、ライセンス認証処理部51による処理によって有効なライセンスが確認されたことを条件に、暗号化アプリケーションを復号して実行可能とする処理部である。
ライセンス移行処理部53は、スマートコントラクトに関連する処理を行い、ライセンストークンを、他の利用者に移譲するためのトランザクションを作成、送信する処理を行う処理部である。
【0038】
図4は、提供者端末装置の機能構成を示す図であり、(a)はハードウェアによる機能構成を示す図、(b)はソフトウェアによる機能構成を示すブロック図である。
提供者端末装置20は、例えば、
図4(a)に示すコンピュータ装置である。
提供者端末装置20は、CPU61と、RAM62と、を備える。さらに、提供者端末装置20は、ドライブ装置63と、記録媒体64と、不図示のROMと、ネットワーク I/F65と、を備える。
CPU61は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともに、提供者端末装置20の機能を実現するプログラムを実行する。RAM62は、CPU61による処理のために各種のプログラムや一時データ、変数が展開される。
【0039】
ドライブ装置63は、記録媒体64に記憶された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記録媒体64は、ドライブ装置63によって書き込まれた情報を記憶する。記録媒体64は、例えば、ハードディスク、SSD、CD、DVD、ブルーレイディスクなどの種類の記憶媒体のうちの少なくとも1つである。また、例えば、提供者端末装置20は、提供者端末装置20内の記録媒体64の種類に対応したドライブ装置63を含む。
記録媒体64及びROMのすくなくとも一方には、プログラムやデータが格納される。ネットワーク I/F65は、提供者端末装置20をネットワークに接続する。
さらに、提供者端末装置20は、マウスやキーボードなどの入力装置66と、液晶ディスプレイなどの表示装置67と、を備える。
【0040】
また、
図4(b)に示すように、CPU61は、処理部として、暗号化処理部(暗号化ツール)71、ライセンス付与処理部72を実行する。
暗号化処理部71は、アプリケーションの提供者によるアプリケーションのバイナリデータの入力をうけて、暗号化処理を行い、暗号化アプリケーションを出力する暗号化ツールである。
提供者は1つのアプリケーションについて1つのイーサリアムウォレットを作成し、暗号化アプリケーションには、アプリケーションごとのイーサリアムウォレットアドレスが含まれる。
アプリケーションごとに作成されるイーサリアムウォレットアドレスによって、ライセンスの付与や認証時に、対象のアプリケーションが特定される。
イーサリアム以外のブロックチェーンシステムを用いる場合には、ウォレットアドレスによって、認証のために問い合わせるブロックチェーンを特定することも可能である。
【0041】
ライセンス付与処理部72は、利用者端末装置10からのライセンス付与要求に応じて、スマートコントラクトAPIを呼び出してライセンストークンの生成を行い、ブロックチェーン(スマートコントラクト)に登録(デプロイ)するスマートコントラクト処理部である。ライセンストークンは、ライセンス認証をスマートコントラクトによって行うためのライセンス情報である。
本実施形態のシステムにおいて、提供者端末装置20は、アプリケーションのライセンストークンを、ブロックチェーン上に保持する。
【0042】
図5は、提供者端末装置の暗号化ツールによって生成される暗号化アプリケーションを説明する図である。
上記のように提供者端末装置20には、暗号化ツールがインストールされている。
暗号化ツールは、暗号化前アプリケーションのデータを暗号化するための暗号化コードを有する。
【0043】
本実施形態において、アプリケーションは暗号化されて配布されるため、バイナリデータに対してなされる書き換えや解析によるクラッキングを防止することができる。
なお、採用される共通鍵暗号化方式としては、AES(Advanced Encryption Standard)が典型であるが、その他の共通鍵暗号化方式でもよい。
暗号化アプリケーションは、任意のウェブサイトやストアアプリ等から好適にダウンロード可能である。
【0044】
図5(a)に示すように、提供者端末装置20は、暗号化ツールにより暗号化前アプリケーションのデータを所定の共通鍵を使用して暗号化し、暗号化アプリケーションのデータを出力する。
暗号化ツールは、ブロックチェーンに問い合わせるプログラム、アプリケーションのウォレットアドレス、復合化用の共通鍵を含む復号用ダイナミックリンクライブラリ(DLL)を予め備えている。復号用DLLは、その本体として暗号化データを復号するための復号用コードを有する。
暗号化後の暗号化アプリケーションは、上記復号用DLLと共に出力される。
アプリケーションの暗号化に用いる共通鍵は、暗号化ツールの外部から入力されてもよいし、復号用DLLに含まれるものを用いてもよい。
【0045】
図5(b)に示すように、提供者端末装置20の記録媒体64に格納されている暗号化前のアプリケーションは、暗号化前のプログラム、リソース、及びエントリーポイントから構成される。エントリーポイントはプログラムの始点を指し示している。
【0046】
図5(c)は、暗号化アプリケーションのデータ構成を示している。暗号化アプリケーションは、
図5(b)の暗号化前アプリケーションの構成にスタブプログラムが加わった構成である。
暗号化前とは異なり、エントリーポイントはスタブプログラムの始点を指し示し、スタブプログラムが、暗号化後のプログラムの始点を指し示す。
【0047】
利用者端末装置10にダウンロードされた暗号化アプリケーションが実行されると、スタブプログラムがまず実行される。スタブプログラムは、復号用DLLを呼び出し、暗号化プログラムの復号のための処理を行わせる。この処理は、ブロックチェーンに対してライセンスの有無を問い合わせる処理を含む。
すなわち、復号用DLLは、上記のライセンス認証処理部51、復号処理部52の機能に相当するプログラムを含んでいる。
復合用DLLの本体は、利用者端末装置10で実行されたときに復号処理部52として機能する。また、復号用DLLが含むブロックチェーンに問い合わせるプログラムは、利用者端末装置10で実行されたときにライセンス認証処理部51の一部として機能する。
暗号化ツールでは、任意のアプリケーションをフックして暗号化アプリケーション実行時に復号用DLLが呼ばれるようにインジェクションすることで、ブロックチェーンに問い合わせるプログラムが暗号化アプリケーションに自動的に挿入(付加)される。ブロックチェーンに問い合わせるプログラムは、CPU41をライセンス認証処理部51として機能させるプログラムである。
暗号化アプリケーションにおいて暗号化されているのは、
図5(b)におけるプログラム本体のみである。暗号化されたプログラム本体は、
図5(c)の暗号化アプリケーションにおける暗号化後プログラムとなる。
復号用DLLは、エントリーポイント、リソース、スタブプログラムと同様に、暗号化後プログラムとは別体のコードとして、暗号化後アプリケーション内に挿入される。
復号用DLLは、暗号化アプリケーションの実行バイナリとは別ファイルとして付加されてもよいし、実行バイナリに含まれていてもよい。
【0048】
図6は、提供者端末装置が実行するアプリケーション暗号化処理を説明するフローチャートである。
CPU61(暗号化処理部71)は、ステップS51において、暗号化対象のアプリケーションのバイナリデータの入力を受け付ける。
上記のように、アプリケーションの実行ファイルは、エントリーポイント、プログラム本体、リソースよりなる。
CPU61(暗号化処理部71)は、ステップS52において、入力されたアプリケーションデータのうちのプログラム本体を、所定の共通鍵を用いて暗号化し、暗号化プログラムを生成する。
【0049】
CPU61(暗号化処理部71)は、ステップS53において、エントリーポイント、暗号化プログラム、リソースよりなる暗号化アプリケーションに対し、復号用DLL、スタブブログラムを挿入する。
上記のように、復号用DLLには、ライセンス認証のためのブロックチェーンへの問い合わせプログラム、アプリケーションごとのイーサリアムウォレットアドレス、復号用の共通鍵を含む。
CPU61(暗号化処理部71)は、ステップS54において、エントリーポイント、暗号化プログラム、リソース、復号用DLLを含む「暗号化アプリケーション」のデータを出力する。
【0050】
図7は、利用者端末装置が実行するアプリケーション起動時処理を説明するフローチャートである。
CPU41は、ステップS101において、マウスのダブルクリック操作などによるアプリケーションの起動操作が行われたか否かを判定する。
アプリケーションの起動操作が行われていないと判定した場合(ステップ101でNo)、CPU41は、そのまま処理を終了する。
アプリケーションの起動操作が行われたと判定した場合(ステップS101でYes)、CPU41は、ステップS102において、暗号化されたアプリケーションの起動処理を開始する。
【0051】
CPU41(ライセンス要求処理部50)は、ステップS103において、利用者端末装置10に利用者のイーサリアムウォレットが存在するか否かを判定する。
イーサリアムウォレットが利用者端末装置10に存在しないと判定した場合(ステップS103でNo)、CPU41(ライセンス要求処理部50)は、ステップS107において、イーサリアムウォレットを新規に作成する。そして、CPU41(ライセンス要求処理部50)は、ステップS108において、そのイーサリアムウォレットアドレスと、利用者端末装置10の端末固有情報を、提供者端末装置20に対して送信することによりライセンス付与要求を行う。
【0052】
ウォレットが存在すると判定した場合(ステップS103でYes)、CPU41(ライセンス認証処理部51)は、ステップS104において、
図8で説明するライセンス認証処理を行う。
CPU41は、ステップS105において、ステップS104のライセンス認証が成功したか否か、すなわち、暗号化プログラムが復号されたか否か暗号化が解除されたか否かを判定する。
暗号化が解除されたと判定した場合(ステップS105でYes)、CPU41は、ステップS106において、アプリケーションを起動し、処理を終了する。
暗号化が解除されていないと判定した場合(ステップS105でNo)、CPU41は、アプリケーションを起動できず、そのまま処理を終了する。
【0053】
図8は、
図7のライセンス認証処理を説明するフローチャートである。
ライセンス認証処理部51は、ステップS111において、有効ライセンスの有無をブロックチェーンネットワークに問い合わせる。このときライセンス認証処理部51は、アプリケーションごとのウォレットアドレス、利用者のウォレットアドレスをブロックチェーンネットワークに送信する。
ライセンス認証処理部51は、ステップS112において、ブロックチェーンネットワークから問い合わせ結果(端末固有情報、正常なライセンスの有無)を受信したか否かを判定する。
問い合わせ結果を受信していないと判定した場合(ステップS112でNo)、ライセンス認証処理部51は、ステップ112の処理を繰り返し、問い合わせ結果の受信を待機する。
【0054】
問い合わせ結果を受信したと判定した場合(ステップS112でYes)、ライセンス認証処理部51は、ステップS113において、問い合わせ結果の端末固有情報が実際の端末固有情報と一致するか否か、問い合わせ結果が正常なライセンスの存在を示すか否か、を判定する。
問い合わせ結果の端末固有情報が実際の端末固有情報と一致する、あるいは問い合わせ結果が正常なライセンスの存在を示すと判定した場合(ステップS113でYes)、ライセンス認証処理部51は、ステップS114において、共通鍵を用いてアプリケーションの暗号化を解除し、処理を終了する。
問い合わせ結果の端末固有情報が実際の端末固有情報と一致しない、あるいは問い合わせ結果が正常なライセンスの存在を示さないと判定した場合(ステップS113でNo)、ライセンス認証処理部51は、そのまま処理を終了し、アプリケーションの暗号化を解除しない。
【0055】
図9は、アプリケーション提供者(開発者)の端末装置が実行するライセンス付与処理を説明するフローチャートである。
CPU61(ライセンス付与処理部72)は、ステップS201において、ライセンス付与要求として、利用者のイーサリアムウォレットアドレスと、利用者端末装置10の端末固有情報を受信したか否かを判定する。上記のように、ライセンス付与要求にあたって利用者端末装置10の端末固有情報は必須ではない。
ライセンス付与要求を受信したと判定した場合(ステップS201でYes)、CPU61(ライセンス付与処理部72)は、ステップS202において、スマートコントラクトAPI(スマートコントラクト処理部)を呼び出し、ステップS203において、利用者のウォレットアドレスに対してライセンストークンを付与し、ライセンス付与処理を終了する。
【0056】
本実施形態のシステムにおける、ライセンス移行の手続きを説明する。
ライセンスを有する利用者は、自身のウォレットの秘密鍵を使って認証することで、ライセンストークンを別の利用者に譲渡することができる。
すなわち利用者は、任意のウォレットに対してライセンスを移行するスマートコントラクトを実行することができる。
イーサリアムにおけるスマートコントラクトの実行にはガスと呼ばれる手数料が必要となるが、利用者のウォレットに対してイーサリアムを自動的に付与することで、利用者がイーサリアムを購入する必要がないようにすることも可能である。
例えば、ライセンスの移行に先だって、一の利用者は、他の利用者にライセンスを移行する旨を示す移行通知を提供者端末装置20に送信する。
この移行通知は、移行元の利用者のウォレットアドレス、移行先の利用者のウォレットアドレスを少なくも含む。
この場合、利用者端末装置10は、
図3(b)の処理部に加え、移行通知を送信する移行通知送信部を備える。移行通知送信部は、例えば、電子メールを送信可能な電子メールクライアントソフトウェアである。そして、移行通知は、移行通知送信部によって、提供者端末装置20に送信される。
移行通知を受け取った提供者端末装置20は、移行通知に記載されている移行元となるウォレットアドレスに対するイーサリアムの送金を行う。
この場合、提供者端末装置20は、
図4(b)の処理部に加え、移行通知を受信するための移行通知受信部と、利用者のウォレットに仮想通貨(イーサリアム)を付与するトランザクションを作成、公開する処理を行う送金部を備える。
移行通知が電子メールによって送信される場合、移行通知受信部もまた、電子メールを受信可能な電子メールクライアントソフトウェアである。
図3(b)に示したライセンス移行処理部53は、移行元利用者のウォレットを確認し、提供者端末装置20からのイーサリアムが入金されたか否かを確認する。
ライセンス移行処理部53は、入金を確認すると、以下に説明するライセンス移行処理を実行する。
また、提供者端末装置20からの移行通知の送信は、ライセンスを移行するためのスマートコントラクトを実行後に行っても良い。
【0057】
図10は、アプリケーションの利用者端末装置が実行するライセンス移行処理を説明するフローチャートである。
CPU41(ライセンス移行処理部53)は、ステップS301において、譲渡先の利用者のウォレットに対してライセンストークンを移譲するための移譲トランザクションを作成する。
移譲トランザクションには、当該利用者端末装置を利用する移行元利用者のウォレットの秘密鍵に基づく電子署名と、移行先利用者のウォレットアドレスと、が少なくとも含まれる。
CPU41(ライセンス移行処理部53)は、ステップS302において、ステップS301で作成した譲渡トランザクションをブロックチェーンネットワークに公開する。
これにより、トークンを移行するスマートコントラクトがブロックチェーン上で実行され、ライセンスの移行が実現する。
なお、ライセンス移行に伴う手数料分のイーサリアムの送金は、利用者端末装置10が送信する移行通知に基づいて行われるのではなく、提供者端末装置20がブロックチェーンを監視し、ライセンス移行が行われたことを提供者端末装置20が発見したことを契機に行われても良い。
この場合、提供者端末装置20は、
図4(b)の処理部に加え、ブロックチェーンを常時監視するブロックチェーン監視部、利用者に仮想通貨(イーサリアム)を付与するトランザクションを作成、公開する処理を行う送金部を備える。
ブロックチェーンを監視していたブロックチェーン監視部が、ライセンス移行のための譲渡トランザクションを発見すると、送金部は、譲渡トラザクションを公開した利用者のウォレットに対して、イーサリアムを送金する処理を行う。
【0058】
なお、本実施形態のシステム1において、このような、ブロックチェーンの監視、イーサリアムの自動付与の処理は、提供者端末装置20で行うのではなく、これらの端末装置とは別途設けたサーバ装置によって行ってもよい。
サーバ装置は、少なくとも、制御部としてCPU、RAMを備え、ネットワークI/Fによってインターネットに接続されている。
サーバ装置のCPUは、ブロックチェーンを常時監視するブロックチェーン監視部、利用者に仮想通貨(イーサリアム)を付与するトランザクションを作成、公開する処理を行う送金部を実行する。
ブロックチェーンを監視していたブロックチェーン監視部が、ライセンス移行のための譲渡トランザクションを発見すると、送金部は、譲渡トラザクションを公開した利用者のウォレットに対して、イーサリアムを送金する処理を行う。
【0059】
上記のように構成したので、本実施形態のシステムによれば、アプリケーションを提供した提供者がサービスを終了したり、障害が発生したりすることによって提供者端末装置20の稼働が終了あるいは停止した場合でも、利用者端末装置10は、ブロックチェーン上に記録されたライセンストークンを利用して、常にライセンス認証を行って暗号化アプリケーションを実行することが出来る。
サービス提供側も、認証サーバ(ライセンスサーバ)を常時稼働させる必要がなくなり、コスト面や運用面で有利なシステムとすることが出来る。
【0060】
なお、上記の説明においては、イーサリアムが有するスマートコントラクトの仕組みを用い、ブロックチェーン上にライセンスに関する情報を記録するとともに、アプリケーションにおけるライセンス認証の機能を、ブロックチェーン上で完結して(完全にサーバーレスで)実現している。
それに対し、ブロックチェーン上にライセンス情報を記録するが、ブロックチェーンを探索してライセンスの有無を問い合わせる探索サーバを別途設ける構成としてもよい。
上記で説明したイーサリアム以外のブロックチェーンのプロトコルによっても、ライセンス情報を格納するストレージとしてブロックチェーンを用い、ライセンス認証は別途設けたサーバ装置によって行うことで、類似の仕組みを実現することが出来る。
この場合、復号用DLLに含まれるライセンス認証処理部51は、暗号化アプリケーションの実行時に探索サーバに対して問い合わせを行う。すなわち、アプリケーションのウォレットアドレス、利用者のウォレットアドレスを探索サーバに送信する。
探索サーバは、これらの情報に基づいて、ブロックチェーンのメモリ領域を探索し、ライセンスの有無をライセンス認証処理部51に返す処理を行う。
【0061】
また、上記の説明ではライセンスの付与、認証の対象がアプリケーションソフトウェアに限られていたが、本発明はそれに限定されることはない。
電子書籍や動画、音楽などのコンテンツについても、同様に適用可能である。
例えば、提供者は、これらのコンテンツデータを暗号化して配信する。暗号化されたコンテンツデータを取得した利用者が用いる端末装置で実行される閲覧ソフトウェアは、コンテンツの表示のたびに、ブロックチェーンネットワークに問い合わせて認証を行う。
認証が成功した場合、閲覧ソフトウェアは、暗号化コンテンツデータを復号して表示を行う。このような構成とすることにより、デジタルコンテンツを提供した提供者がサービスを終了したり、障害が発生したりすることによって提供者端末装置20の稼働が終了あるいは停止した場合でも、利用者端末装置10は、ブロックチェーン上に記録されたライセンストークンを利用して、ライセンス認証を行ってデジタルコンテンツを表示することが出来る。
【符号の説明】
【0062】
1 システム、10 利用者端末装置、20 提供者端末装置、30 マイナー装置、41 CPU、42 RAM、43 ドライブ装置、44 記録媒体、45 ネットワークI/F、46 入力装置、47 表示装置、51 ライセンス認証処理部、52 復号処理部、53 ライセンス移行処理部、61 CPU、62 RAM、63 ドライブ装置、64 記録媒体、65 ネットワークI/F、66 入力装置、67 表示装置、71 暗号化処理部(暗号化ツール)、72 ライセンス付与処理部、73 スマートコントラクト処理部