【文献】
長沼 健 ほか,監査機能付匿名送金,2017年 暗号と情報セキュリティシンポジウム(SCIS2017)予稿集 [USB],日本,2017年 暗号と情報セキュリティシンポジウム実行,2017年 1月24日,1F2−1,p.1−5
【文献】
淵田 康之,特集:イノベーションと金融 ブロックチェーンと金融取引の革新,野村資本市場クォータリー,日本,株式会社野村資本市場研究所,2015年11月 1日,第19巻第2号(通巻74号),p.11−35
(58)【調査した分野】(Int.Cl.,DB名)
前記機密トランザクションの前記トランザクションデータは、前記機密トランザクションの前の前記クライアントノードのアカウント残高または前記機密トランザクションのトランザクション金額の一方または両方を含む、請求項1に記載の方法。
前記トランザクションデータの前記1つまたは複数のゼロ知識証明は、前記トランザクションデータの値がそれぞれの範囲内にあるという1つまたは複数のゼロ知識範囲証明を含む、請求項1に記載の方法。
前記トランザクションデータの前記1つまたは複数のゼロ知識証明は、前記クライアントノードが前記機密トランザクションの前記暗号化されたレギュレーション情報を生成する際に前記レギュレータノードの前記公開鍵を使用しているというゼロ知識証明を含む、請求項1に記載の方法。
前記機密トランザクションの前記トランザクションデータは、前記機密トランザクションの前の前記クライアントノードのアカウント残高または前記機密トランザクションのトランザクション金額のうちの1つまたは複数を含む、請求項7に記載の方法。
前記トランザクションデータの前記1つまたは複数のゼロ知識証明は、前記トランザクションデータの値がそれぞれの範囲内にあるという1つまたは複数のゼロ知識範囲証明を含む、請求項7に記載の方法。
【発明を実施するための形態】
【0022】
様々な図面における類似の参照記号は類似の要素を示す。
【0023】
本開示の実施形態は、ブロックチェーン技術(ブロックチェーン機密トランザクション、または単に、機密トランザクションと称する)に基づいた機密トランザクションのためのコンピュータ実施方法を含む。より詳細には、本開示の実施形態は、ブロックチェーン機密トランザクションを管理することを目的としている。
【0024】
いくつかの実施形態においては、動作は、ブロックチェーンネットワークのクライアントノードによって、レギュレータノードの公開鍵を取得するステップと、クライアントノードによって、機密トランザクションのトランザクションデータに暗号コミットメントスキームを適用することによってクライアントノードの機密トランザクションの1つまたは複数のコミットメント値を生成するステップと、クライアントノードによって、レギュレータノードの公開鍵を使用してトランザクションデータを暗号化することによって機密トランザクションの暗号化されたレギュレーション情報を生成するステップと、クライアントノードによって、ブロックチェーンネットワークのコンセンサスノードに、実行のために機密トランザクションの内容を送信するステップであって、機密トランザクションの内容は、1つまたは複数のコミットメント値と、暗号化されたレギュレーション情報と、トランザクションデータの1つまたは複数のゼロ知識証明とを含む、ステップとを含む。
【0025】
いくつかの実施形態においては、動作は、ブロックチェーンネットワークのレギュレータノードによって、公開鍵と秘密鍵とのペアを生成するステップと、レギュレータノードによって、公開鍵をブロックチェーンネットワークの複数のクライアントノードに公開するステップと、レギュレータノードによって、ブロックチェーンネットワークのコンセンサスノードから、クライアントノードの機密トランザクションの内容を取得するステップであって、機密トランザクションの内容は、機密トランザクションのトランザクションデータに暗号コミットメントスキームを適用することによってクライアントノードによって生成された機密トランザクションの1つまたは複数のコミットメント値と、トランザクションデータの1つまたは複数のゼロ知識証明と、レギュレータノードの公開鍵を使用してトランザクションデータを暗号化することによってクライアントノードによって生成された暗号化されたレギュレーション情報とを含む、ステップと、レギュレータノードの秘密鍵を使用して暗号化されたレギュレーション情報を復号することによってトランザクションデータを取得するステップと、レギュレータノードによって、機密トランザクションの内容および復号したトランザクションデータに基づいて機密トランザクションが正規のものであることを検証するステップとを含む。
【0026】
他の実施形態は、対応する、システムと、装置と、コンピュータストレージデバイス上に符号化された、方法のアクションを行うように構成される、コンピュータプログラムとを含む。
【0027】
本開示の実施形態についてのさらなる状況をあげるとすれば、および上述したように、コンセンサスネットワーク(例えば、ピア・ツー・ピアノードで構成される)およびブロックチェーンネットワークとも称することができる分散型台帳システム(DLS)は、参加エンティティが安全かつ変更不可能な形で取引を実施しデータを記憶することを可能にする。ブロックチェーンという用語は、Bitcoinといった暗号通貨ネットワークと一般的に関連深いが、本明細書では、いかなる特定のユースケースを指すわけではなく一般的にDLSを指すために、ブロックチェーンを使用している。上述したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供され得る。
【0028】
パブリックブロックチェーンネットワークにおいては、コンセンサスプロセスは、コンセンサスネットワークのノードによって制御される。例えば、数百、数千、さらには数百万のエンティティがパブリックブロックチェーンネットワークに協力し得るし、その各々がパブリックブロックチェーンネットワーク内の少なくとも1つのノードを管理する。それゆえ、パブリックブロックチェーンネットワークを、参加エンティティに対するパブリックネットワークとみなすことができる。いくつかの例においては、ブロックを有効とするためにおよびブロックチェーンネットワークのブロックチェーン(分散型台帳)に追加するために、大部分のエンティティ(ノード)はブロックごとに記帳する必要がある。例示的なパブリックブロックチェーンネットワークは、ピア・ツー・ピア決済ネットワークであるBitcoinネットワークを含む。Bitcoinネットワークは、ブロックチェーンと称する分散型台帳を活用する。しかしながら、上述したように、ブロックチェーンという用語は、Bitcoinネットワークを特に指すわけではなく分散型台帳を一般的に指すために使用される。
【0029】
一般に、パブリックブロックチェーンネットワークは、パブリックトランザクションをサポートする。パブリックトランザクションは、パブリックブロックチェーンネットワーク内のノードのすべてと共有され、グローバルブロックチェーンに記憶されている。グローバルブロックチェーンは、すべてのノードにわたって複製されるブロックチェーンである。すなわち、すべてのノードは、グローバルブロックチェーンに関して完全ステータスコンセンサスとなる。コンセンサス(例えば、ブロックチェーンへのブロックの追加に対する合意)を得るために、コンセンサスプロトコルがパブリックブロックチェーンネットワークにおいて実施される。例示的なコンセンサスプロトコルは、限定を意図したものではないが、Bitcoinネットワークにおいて実施されるプルーフ・オブ・ワーク(POW)を含む。
【0030】
一般に、プライベートブロックチェーンネットワークは、特定のエンティティに提供されており、読込みおよび書込みの許可を中央集権的に制御する。エンティティは、どのノードがブロックチェーンネットワークに参加することができるかを制御する。それゆえ、プライベートブロックチェーンネットワークは、誰がネットワークに参加することができるかについての制約、およびそれらの参加のレベル(例えば、あるトランザクションに限定)についての制約を設定している、許可型ネットワークと一般的には称される。(例えば、既存の参加者が新規エンティティの追加について表決する、監督機関が許可を制御することができるといった)様々なタイプのアクセス制御機構を使用することができる。
【0031】
一般に、コンソーシアムブロックチェーンネットワークは、参加エンティティの間でプライベートなものとなっている。コンソーシアムブロックチェーンネットワークにおいては、コンセンサスプロセスは権限を与えられたノードのセットによって制御され、1つまたは複数のノードがそれぞれのエンティティ(例えば、金融機関、保険会社)によって管理される。例えば、十(10)のコンソーシアムエンティティ(例えば、金融機関、保険会社)がコンソーシアムブロックチェーンネットワークを管理してもよく、その各々がコンソーシアムブロックチェーンネットワーク内の少なくとも1つのノードを管理する。それゆえ、コンソーシアムブロックチェーンネットワークを、参加エンティティに対するプライベートネットワークとみなすことができる。いくつかの例においては、ブロックを有効とするためにおよびブロックチェーンに追加するために、各エンティティ(ノード)はブロックごとに記帳する必要がある。いくつかの例においては、ブロックを有効とするためにおよびブロックチェーンに追加するために、少なくともエンティティ(ノード)のサブセット(例えば、少なくとも7つのエンティティ)はブロックごとに記帳する必要がある。
【0032】
本開示の実施形態を、コンソーシアムブロックチェーンネットワークを参照して本明細書ではさらに詳細に説明する。しかしながら、本開示の実施形態を任意の適切なタイプのブロックチェーンネットワークにおいて実現することができることは念頭に置かれたい。
【0033】
本開示の実施形態は、上記の事情を考慮して本明細書ではさらに詳細に説明する。より詳細には、および上述したように、本開示の実施形態は、ブロックチェーン機密トランザクションを管理することを目的としている。
【0034】
ブロックチェーンは、パブリックまたはプライベートピア・ツー・ピアネットワーク内のトランザクションを記録する、改竄耐性のある、共有デジタル台帳である。台帳はネットワーク内のすべてのメンバノードに分散されており、ネットワークにおいて生じるアセットトランザクションの履歴はブロックに恒久的に記録される。台帳が参加エンティティに対して完全に公になっているため、ブロックチェーン台帳自体は、プライバシー保護機能を有しておらず、アセットトランザクションの内容のプライバシーを保護する追加の技術を必要とする。
【0035】
ブロックチェーンのためのプライバシー保護のための技法は、機密トランザクションを実現してトランザクションの内容のプライバシーを保護するための技法を含み得る。機密トランザクションにおいては、トランザクションの内容は、いかなる他の部外者も対象外であり、トランザクションの参加者によってのみアクセス可能または知るところとなる。例えば、機密トランザクションは、トランザクションに参加する2人の関係者のみが取引される金額に関与することができ、外部の監視者がこの情報を知ることを防ぐ。機密トランザクションを実現するためのそのような技法が、例えば、MONEROおよびZCASHにおいて、使用されている。
【0036】
ブロックチェーンのためのプライバシー保護のための技法はまた、あるトランザクションに対する関係者の識別情報を保護するための技法を含んでいてもよく、例えば、ステルスアドレスまたはリングシグニチャ機構を使用して実現され得る。
【0037】
プライバシー保護が(例えば、機密トランザクションとの関連で)ブロックチェーンに追加されている場合には、1つまたは複数のレギュレータ(政府、業界団体など)がトランザクションを監査、検査、調査、監視、またさもなければ管理することが困難となる。例えば、ブロックチェーン上に記憶されたトランザクションの情報が暗号化されているため、コンソーシアムブロックチェーンネットワーク内のレギュレータ(またはスーパーバイザ)が機密トランザクションの内容の正規性および正当性をチェックすることが困難となり、そのことがブロックチェーンの適用を制限することとなっている。
【0038】
その問題を解決し、レギュレータが、特にブロックチェーン機密トランザクションのケースにおいて、ブロックチェーン上の内容を管理することを可能およびより容易にする例示的な技法を説明する。例示的な技法は、アカウントモデルに基づくものであり、スマートコントラクトをサポートする利点を有し得る。
【0039】
例えば、機密トランザクションを送信する際に、ユーザは、トランザクションにおいてPedersenコミットメント(以下により詳細に説明する)に対応する乱数および平文値(例えば、機密トランザクションの前のアカウント残高または機密トランザクションの送金金額)の両方を暗号化し得るし、レギュレータの公開鍵を使用してトランザクションデータの一部としてそれを暗号化および送信をし得る。レギュレータは、その秘密鍵を使用して任意の時点で各トランザクションについてのPedersenコミットメントを復号することができる、そのため、監査の時点においてチェーン内の各参加者にクエリを送信し、各参加者から返信された結果を受信し、返信された結果を解析して各トランザクションを検証するなどといった、任意の追加のチェーンインタラクションがなくても、各トランザクションがレギュレータの要件を満たしているかどうかを決定することができる。
【0040】
提案した技法は、ブロックチェーンの分散型の特性を保持し得るため、例えば、ブロックチェーントランザクションのプライバシー保護においてレギュレーションのソリューションを実施する際に、グループシグニチャベースの技術または他の技法において信頼するに値する中央ノードまたは第三者を必要としない。提案した技法は、各トランザクションが送信される前に各トランザクションを記帳することをレギュレータに要求しない。それゆえ、提案した技法は、中央ノードを当てにしておらず、そのため、ブロックチェーンネットワーク内の中央ノードがシステムパフォーマンス、セキュリティなどにおけるボトルネックとなってしまうことを回避している。
【0041】
図1は、本開示の実施形態を実行するために使用され得る例示的な環境100を図示している。いくつかの例においては、例示的な環境100は、エンティティがコンソーシアムブロックチェーンネットワーク102に参加することを可能にする。例示的な環境100は、コンピューティングデバイスまたはシステム106、108、およびネットワーク110を含む。いくつかの例においては、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはその組合せを含み、ウェブサイト、ユーザデバイス(例えば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例においては、ネットワーク110は、有線および/または無線通信リンクを介してアクセスされ得る。
【0042】
図示した例においては、コンピューティングシステム106、108の各々は、コンソーシアムブロックチェーンネットワーク102内のノードとしての参加を可能にする任意の適切なコンピューティングシステムを含み得る。例示的なコンピューティングデバイスは、限定を意図したものではないが、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンを含む。いくつかの例においては、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102とやりとりするための1つまたは複数のコンピュータ実施サービスをホストする。例えば、コンピューティングシステム106は、第1のエンティティが1つまたは複数の他のエンティティ(例えば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどといった、第1のエンティティ(例えば、ユーザA)のコンピュータ実施サービスをホストすることができる。コンピューティングシステム108は、第2のエンティティが1つまたは複数の他のエンティティ(例えば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどといった、第2のエンティティ(例えば、ユーザB)のホストコンピュータ実施サービスをホストすることができる。
図1の例においては、コンソーシアムブロックチェーンネットワーク102を、ノードからなるピア・ツー・ピアネットワークとして表しており、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102に参加する、第1のエンティティおよび第2のエンティティのノードをそれぞれ提供する。
【0043】
図2は、本開示の実施形態による、例示的な概念的機構200を図示している。例示的な概念的機構200は、エンティティレイヤ202、ホステッドサービスレイヤ204、およびブロックチェーンネットワークレイヤ206を含む。図示した例においては、エンティティレイヤ202は、3つのエンティティEntity_1(E1)、Entity_2(E2)、およびEntity_3(E3)を含み、各エンティティは、それぞれのトランザクション管理システム208を有する。
【0044】
図示した例においては、ホステッドサービスレイヤ204は、各トランザクション管理システム208のためのインターフェース210を含む。いくつかの例においては、それぞれのトランザクション管理システム208は、プロトコル(例えば、ハイパーテキスト・トランスファー・プロトコル・セキュア(HTTPS))を使用してネットワーク(例えば、
図1のネットワーク110)を介してそれぞれのインターフェース210と通信する。いくつかの例においては、各インターフェース210は、それぞれのトランザクション管理システム208とブロックチェーンネットワークレイヤ206との間の通信接続を提供する。より詳細には、インターフェース210は、ブロックチェーンネットワークレイヤ206のブロックチェーンネットワーク212と通信する。いくつかの例においては、インターフェース210とブロックチェーンネットワークレイヤ206との間の通信は、リモートプロシージャコール(RPC)を使用して実施される。いくつかの例においては、インターフェース210は、それぞれのトランザクション管理システム208のためのブロックチェーンネットワークノードを「ホスト」する。例えば、インターフェース210は、ブロックチェーンネットワーク212へのアクセスのためのアプリケーションプログラミングインターフェース(API)を提供する。
【0045】
本明細書に記載しているように、ブロックチェーンネットワーク212は、ブロックチェーン216内の情報を変更不可能な形で記録する複数のノード214を含むピア・ツー・ピアネットワークとして提供される。単一のブロックチェーン216を概略的に図示しているが、ブロックチェーン216の複数のコピーが、提供され、ブロックチェーンネットワーク212にわたって保持される。例えば、各ノード214は、ブロックチェーンのコピーを記憶する。いくつかの実施形態においては、ブロックチェーン216は、コンソーシアムブロックチェーンネットワークに参加する2つ以上のエンティティの間で行われるトランザクションに関連付けられた情報を記憶する。
【0046】
図3は、本開示の実施形態による、ブロックチェーン機密トランザクション(単にトランザクション)の例示的なレギュレーションプロセス300を図示している。A302およびB304は、あるトランザクションの2人のユーザの2つのクライアントノード(クライアント、エンティティ、参加者、または関係者とも称する)を表し、S306は、ブロックチェーンネットワーク350内にあるレギュレータ(またはスーパーバイザ)ノードである。ブロックチェーンネットワーク350は、複数のコンセンサスノード(
図3中のブロックチェーンノード308として示した)を含み得る。
【0047】
いくつかの実施形態においては、A302およびB304は、
図1および
図2に示したような第1および第2のユーザまたはエンティティに対応するコンピューティングシステム106、108の例である。各クライアントノードA302またはB304は、ブロックチェーンネットワーク350を介したトランザクションについての対応するアカウント(例えば、パブリックアカウントまたはプライベートアカウント)を有する。
【0048】
いくつかの実施形態においては、クライアントノードA302は、トランザクション情報がクライアントノードA302およびクライアントノードB304によってのみ閲覧可能またさもなければ知るところとなるがブロックチェーンネットワーク350内の他の関係者(例えば、ブロックチェーンノード308)によっては閲覧可能またさもなければ知るところとならないように、クライアントノードB304との機密トランザクションを提供し得る。
【0049】
いくつかの実施形態においては、ブロックチェーンネットワーク350において行われる一部またはすべてのトランザクションは、レギュレータノードS306によるレギュレーションに従うものであり得る。例えば、レギュレータノードS306は、例えば、トランザクションをモニタリング、調査、監査、監視、またさもなければ管理することによって特定のトランザクションがあるルールまたはレギュレーションを順守しているかどうかを決定し得る。いくつかの実施形態においては、機密トランザクションのトランザクション情報は、レギュレータノードS306によって利用可能および閲覧可能となり得る。
【0050】
いくつかの実施形態においては、機密トランザクションのプライバシーを維持しつつ機密トランザクションのトランザクション情報へのアクセスを有するように、レギュレータノードS306は、鍵のペア、公開鍵Spub316および秘密鍵Spriv326を生成し得る。レギュレータノードS306は、クライアントノードが公開鍵Spub316を使用してトランザクション情報を暗号化することができるように、ブロックチェーンネットワーク350内のクライアントノード(例えば、A302およびB304)に公開鍵Spub316を公開または発行し得る。暗号化されるため、トランザクション情報は、他の第三者には閲覧可能ではないが、レギュレータノードS306はその秘密鍵Spriv326を使用して暗号化されたトランザクション情報を復号することができるため、レギュレータノードS306に対してはアクセス可能となる。
【0051】
例えば、
図3に示しているように、トランザクションの前に、クライアントノードA302はアカウント残高aを有し、クライアントノードB304はアカウント残高bを有する。310において、クライアントノードA302が、金額tをクライアントノードB304に送金する機密トランザクションを作成する。いくつかの実施形態においては、クライアントノードA302は、ローカルで機密トランザクションの内容を構築し、機密トランザクションの内容をブロックチェーンネットワーク350(例えば、ブロックチェーンネットワーク350内の1つまたは複数のブロックチェーンノード308)に送信し得る。
【0052】
図4は、本開示の実施形態による、例示的な機密トランザクション450の例示的な内容400を図示している。図示しているように、例示的な機密トランザクション450は、
図3を参照して説明したようなクライアントノードA302からクライアントノードB304へのトランザクション金額tの送金である。
【0053】
いくつかの実施形態においては、機密トランザクション450は、トランザクションデータ(例えば、トランザクションの前のアカウント残高、およびトランザクション金額)を秘匿するために、コミットメントスキームに基づいて構築され得る。例示的なコミットメントスキームは、限定を意図したものではないが、Pedersenコミットメント(PC)を含む。例えば、クライアントノードA302は、PCを使用してトランザクション金額tおよび乱数rに基づいてコミットメント値を生成する。例えば、コミットメント値は、PC(t)=rG+tHに従って取得することができる暗号文を含む、ここで、GおよびHは楕円曲線の生成元であり得るし、PC(t)は曲線の点についてのスカラ乗算であり、tはコミットされることになる値である。PCコミットメントスキームは準同型を有し、すなわち、PC(t
1)+PC(t
2)=PC(t
1+t
2)である。暗号文PC(t)の所持者は、乱数rを使用することによってトランザクション金額tを検証することができる。PCを参照して、本開示の実施形態を本明細書ではさらに詳細に説明しているが、本開示の実施形態が任意の適切なコミットメントスキームを使用して実現することができることは念頭に置かれたい。
【0054】
例示的な機密トランザクション450において、クライアントノードA302は、トランザクション前のアカウント残高aおよび送金金額tをコミットし得る。いくつかの実施形態においては、クライアントノードA302は、トランザクション前のアカウント残高aおよび対応する乱数raに基づいてPCを使用してコミットメント値PC(a)を生成し得る。同様に、クライアントノードA302は、トランザクション前のアカウント残高tおよび対応する乱数rtに基づいてPCを使用してコミットメント値PC(t)を生成し得る。いくつかの実施形態においては、クライアントノードA302はまた、トランザクション後の残高a-tが0以上となるような十分な資金をそれが有していることをコミットし得る。例えば、クライアントノードA302は、例えば、PCの準同型の特性を前提としたコミットメント値PC(a)およびPC(t)に基づいて、コミットメント値PC(a-t)を生成し得る。コミットメント値は、例示的な機密トランザクション450の内容400に含まれ得る。
【0055】
いくつかの実施形態においては、追加のまたは異なるコミットメント値が含まれ得る。例えば、クライアントノードA302は、トランザクション情報を暗号化するためにレギュレータの公開鍵(例えば、公開鍵Spub316)をそれが使用していることをコミットし得る。例えば、クライアントノードA302は、Spubおよびトランザクション情報に基づいてコミットメント値PC(Spub)を生成し得る。
【0056】
レギュレータのレギュレーションを促進するために、クライアントノードA302はまた、レギュレータの公開鍵Spubを使用してトランザクションに関与する各Pedersenコミットメントの金額a、tおよび対応する乱数ra、rtなどのトランザクション情報を暗号化し得る。例えば、クライアントノードA302はまた、Spubを使用してトランザクション情報(例えば、ra、a、rt、t)を暗号化し、暗号化されたレギュレーション情報、例えば、encrypt(Spub,(ra|a|rt|t))として示した暗号文Mを取得し得る。一例としては、暗号文Mは、4つの要素ra、a、rt、tの暗号化されたテキストの連結、または別のフォーマットであり得る。いくつかの実施形態においては、暗号化されたレギュレーション情報は、追加のまたは異なるトランザクション情報を含み得るし、別の方式で生成され得る。
【0057】
いくつかの実施形態においては、例示的な機密トランザクション450の内容400は、送信関係者が送信している情報が正当なものであることを受信関係者が確認することができるように、1つまたは複数のゼロ知識証明を含み得る。ゼロ知識証明は、確認される情報についての実際の知識がなくとも受信関係者がこれを行うことを可能にする。ゼロ知識証明は、Proof(a-t>0)、Proof(t>0)、およびProof(a>0)などといった範囲証明、または他のタイプの証明を含み得る。ゼロ知識証明は、受信関係者(例えば、クライアントノードB)が、金額が送金される元となる残高aを知らずともまたは送金金額tさえ知らずとも、送信関係者(例えば、クライアントノードA)が送金するのに十分な資金を有している(すなわち、a-t>0)ことおよび送金金額がゼロより大きいことを確認することを可能にする。
【0058】
いくつかの実施形態においては、例示的な機密トランザクション450の内容400は、トランザクション上のAのデジタルシグニチャなどといった他のトランザクション関連情報を含み得る。
【0059】
図3に戻って参照すれば、トランザクション内容(例えば、例示的な機密トランザクションの内容400)を生成した後に、クライアントノードA302は、機密トランザクションの内容をブロックチェーンネットワーク350(例えば、ブロックチェーンネットワーク350内の1つまたは複数のブロックチェーンノード308)に送信し得る。320において、ブロックチェーンネットワーク350が、機密トランザクションを実行し得る。いくつかの実施形態においては、機密トランザクションは、ブロックチェーンネットワーク350内のブロックチェーンノード308の各々によって実行され得る。例えば、ブロックチェーンノード308の各々は、例えば、機密トランザクションの内容に含まれるコミットメント値およびゼロ知識証明のうちの1つまたは複数を検証することによって、機密トランザクションの内容が正規のものであるかどうかを決定し得る。例えば、ブロックチェーンノード308の各々は、PC(a)=PC(t)+PC(a-t)、すなわち、インプットされたトランザクション値がアウトプットされたトランザクション値に等しいことを検証することによって、コミットメント値を検証し得る。ブロックチェーンノード308の各々は、例えば、Bulletproof、MoneroのRingCTアルゴリズム、または任意の他の適切なアルゴリズムに基づいて、ゼロ知識証明を検証し得る。
【0060】
コミットメント値およびゼロ知識証明の検証が済むと、ブロックチェーンノード308の各々は、トランザクションを記録し、クライアントノードA302およびクライアントノードB304のアカウントを更新することができる。例えば、トランザクション後には、クライアントノードA302はアカウント残高a-tを有し、クライアントノードB304はアカウント残高b+tを有する。いくつかの実施形態においては、クライアントノードA302とクライアントノードB304とのトランザクション後の残高は、コミットメントスキームの準同型に起因してコミットメント値の直接的な操作によって反映され得る。例えば、クライアントノードA302は、この時点では、トランザクション後のアカウント残高のコミットメント値PC(a-t)=PC(a)-PC(t)を有し得る。クライアントノードB304は、この時点では、トランザクション後のアカウント残高のコミットメント値PC(b+t)=PC(b)+PC(t)を有し得る。
【0061】
330において、機密トランザクションを管理するために、レギュレータノードS306が、ブロックチェーンネットワーク350から機密トランザクションの内容を取得し、トランザクション情報がレギュレータの基準または要件を満たしているかどうかを決定する。例えば、レギュレータノード306は、暗号化されたレギュレーション情報(例えば、
図4に示しているような暗号文M=encrypt(Spub,(ra|a|rt|t))を含む機密トランザクションの内容を取得し得る。レギュレータノードS306は、その秘密鍵Spriv326を使用して暗号化されたレギュレーション情報を復号し、トランザクション内のPCに対応する平文トランザクション情報(例えば、ra、a、rt、t)を取得する。レギュレータノードS306は、トランザクション情報がレギュレータの基準または要件を満たしているかどうかを決定し、平文トランザクション情報に基づいてコミットメント値の正当性を検証し得る。例えば、レギュレータノードS306は、トランザクション金額が最大許容トランザクション金額を下回っているかどうかを決定することなどといった、従来のレギュレーションを行い得る。
【0062】
いくつかの実施形態においては、レギュレータノードS306は、トランザクションのトランザクションデータを自動的にレギュレータノードS306にプッシュすることができるように、ブロックチェーンネットワーク350内で行われる一部またはすべてのトランザクションに予約申込し得る。いくつかの実施形態においては、レギュレータノードS306は、ブロックチェーンネットワーク350から(例えば、ブロックチェーンネットワーク350内の1つまたは複数のブロックチェーンノード308から)一部またはすべてのトランザクションのトランザクションデータをフェッチ、プル、または取得し得る。
【0063】
図5は、本開示の実施形態による、実行され得る例示的なプロセス500を図示している。いくつかの実施形態においては、例示的なプロセス500は、1つまたは複数のコンピューティングデバイスを使用して実行される1つまたは複数のコンピュータ実行可能プログラムを使用して行われ得る。概要説明を明確にするために、以下の説明では、本説明においては他の図に則して方法500を一般的に説明している。例えば、
図3を参照して説明したように、レギュレータノード510はレギュレータノードS306であり得るし、ブロックチェーンノード520はブロックチェーンノード308であり得るし、クライアントノードA530はクライアントノードA302であり得るし、クライアントノードB540はクライアントノードB304であり得る。しかしながら、必要に応じて、例えば、任意の適切なシステム、環境、ソフトウェア、およびハードウェア、またはシステムと、環境と、ソフトウェアと、ハードウェアとの組合せによって、方法500を行い得ることを理解されよう。いくつかの実施形態においては、方法500の様々なステップは、並行して、組み合わせて、繰り返して、または任意の順序で実行され得る。
【0064】
512において、ブロックチェーンネットワークのレギュレータノード510が、公開鍵と秘密鍵とのペアを生成する。公開鍵および秘密鍵のペアは、レギュレーションのためのトランザクション情報を暗号化または復号するために使用され得る。
【0065】
514において、レギュレータノード510が、公開鍵をブロックチェーンネットワークの複数のクライアントノード(例えば、クライアントノードA530およびクライアントノードB540)に公開する。例えば、レギュレータノード510は、レギュレータノードのレギュレーションに従うブロックチェーンネットワーク(例えば、コンソーシアムブロックチェーンネットワーク)内のすべてのクライアントノードに公開鍵を発行し得る。
【0066】
532において、ブロックチェーンネットワークのクライアントノードであるクライアントノードA530が、レギュレータノード510の公開鍵を取得する。クライアントノードA530は、レギュレータノード510の公開鍵を使用してレギュレーションに従うトランザクションデータを暗号化し得るし、それによって、レギュレータノード510が公開鍵に対応する秘密鍵を使用してトランザクションデータを復号することを可能にする。
【0067】
クライアントノードA530は、クライアントノードA530のアカウントからブロックチェーンネットワークの別のクライアントノードであるクライアントノードB540のアカウントへの資金の金額の送金などといった、機密トランザクション535の準備をし得る。クライアントノードA530は、トランザクションの参加者(すなわち、本例においてはクライアントノードA530およびクライアントノードB540)およびレギュレータノード510を除く他のエンティティによる調査からトランザクションデータのプライバシーを保護するとともにトランザクションデータを秘匿するように、機密トランザクションの内容を構築し得る。いくつかの実施形態においては、クライアントノードA530は、コミットメントスキームに基づいて機密トランザクションのトランザクションデータを秘匿し得る。
【0068】
いくつかの実施形態においては、機密トランザクションのトランザクションデータは、機密トランザクションの前のクライアントノードA530のアカウント残高または機密トランザクションのトランザクション金額の一方または両方を含む。いくつかの実施形態においては、機密トランザクションのトランザクションデータは、追加のトランザクション情報(例えば、トランザクションの時間、トランザクションの関係者、アセットタイプ(例えば、株式証券または別のタイプ))を含み得る。
【0069】
534において、クライアントノードA530が、機密トランザクションのトランザクションデータに暗号コミットメントスキームを適用することによってクライアントノードA530の機密トランザクションの1つまたは複数のコミットメント値を生成する。いくつかの実施形態においては、暗号コミットメントスキームは、Pedersenコミットメントスキームまたは別のタイプのコミットメントスキームなどといった準同型暗号コミットメントスキームを含む。
【0070】
536において、クライアントノードA530が、レギュレータノード510の公開鍵を使用してトランザクションデータを暗号化することによって機密トランザクションの暗号化されたレギュレーション情報を生成する、ここで、暗号化されたレギュレーション情報は、公開鍵に対応する秘密鍵を使用したレギュレータノード510による復号を可能にするように構成される。
【0071】
いくつかの実施形態においては、暗号コミットメントスキームは、Pedersenコミットメントスキームを含む。この場合には、トランザクションデータに暗号コミットメントスキームを適用することによってクライアントノードA530の機密トランザクションの1つまたは複数のコミットメント値を生成するステップは、トランザクションデータおよびトランザクションデータに対応する乱数に基づいてクライアントノードA530の機密トランザクションの1つまたは複数のコミットメント値を生成するステップを含み、機密トランザクションの暗号化されたレギュレーション情報を生成するステップは、レギュレータノードの公開鍵を使用してトランザクションデータおよびトランザクションデータに対応する乱数を暗号化することによって機密トランザクションの暗号化されたレギュレーション情報を生成するステップを含む。
【0072】
538において、クライアントノードA530が、例えば機密トランザクションの内容をブロックチェーンノード520(例えば、ブロックチェーンネットワークのコンセンサスノード)に送信することによって、実行のためにブロックチェーンネットワークに機密トランザクションの内容を送信する。いくつかの実施形態においては、機密トランザクションの内容は、機密トランザクションのトランザクションデータに暗号コミットメントスキームを適用することによってクライアントノードA530によって生成された機密トランザクションの1つまたは複数のコミットメント値と、レギュレータノードS510の公開鍵を使用してトランザクションデータを暗号化することによってクライアントノードA530によって生成された暗号化されたレギュレーション情報と、トランザクションデータの1つまたは複数のゼロ知識証明とを含み得る。
【0073】
いくつかの実施形態においては、トランザクションデータの1つまたは複数のゼロ知識証明は、トランザクションデータの値がそれぞれの範囲内にあるという1つまたは複数のゼロ知識範囲証明を含む。例えば、1つまたは複数のゼロ知識範囲証明は、機密トランザクションの前のクライアントノードA530のアカウント残高がゼロより大きいというゼロ知識範囲証明と、機密トランザクションのトランザクション金額がゼロより大きいというゼロ知識範囲証明と、トランザクション金額が機密トランザクションの前のクライアントノードA530のアカウント残高以下であるというゼロ知識範囲証明とを含み得る。
【0074】
いくつかの実施形態においては、トランザクションデータの1つまたは複数のゼロ知識証明は、クライアントノードA530が機密トランザクションの暗号化されたレギュレーション情報を生成する際にレギュレータノード510の公開鍵を使用しているというゼロ知識証明を含む。
【0075】
いくつかの実施形態においては、機密トランザクションの内容は、クライアントノードA530のデジタルシグニチャをさらに含む。いくつかの実施形態においては、機密トランザクションの内容は、追加のまたは異なる情報を含み得る。
【0076】
522において、機密トランザクションの内容を受信する際に、ブロックチェーンノード520が、例えば機密トランザクションの内容に基づいて機密トランザクションが正当なものであることを検証することによって、機密トランザクションを実行し得る。いくつかの実施形態においては、機密トランザクションの内容に基づいて機密トランザクションが正当なものであることを検証することは、コミットメントスキームおよび/または1つまたは複数のゼロ知識証明に基づいて1つまたは複数のコミットメント値が正しいと決定すること、または、例えば
図3を参照して説明したようなアルゴリズムに従ってトランザクションデータの1つまたは複数のゼロ知識証明を検証することのうちの1つまたは複数を含み得る。
【0077】
524において、機密トランザクションが正当なものであると検証した後に、ブロックチェーンノード520が、例えば、(例えばブロックチェーンネットワーク上のブロックチェーンに機密トランザクションの内容を記憶することによって)トランザクションを記録し、例えば
図3を参照して説明した技法または他の技法に従って、機密トランザクションによってもたらされるアカウント情報(例えばクライアントノードA530およびクライアントノードB540のアカウント残高)を更新し得る。
【0078】
516において、レギュレータノード510が、ブロックチェーンノード520(例えば、ブロックチェーンネットワークのコンセンサスノード)からクライアントノードA530の機密トランザクションの内容を取得する。機密トランザクションの内容は、
図4を参照して説明したような例示的な機密トランザクション450の例示的な内容400を含み得る。
【0079】
518において、レギュレータノード510が、レギュレータノードの秘密鍵を使用して暗号化されたレギュレーション情報を復号することによってトランザクションデータを取得する。
【0080】
519において、レギュレータノード510が、機密トランザクションの内容およびトランザクションデータに基づいて機密トランザクションが正規のものであることを検証する。いくつかの実施形態においては、機密トランザクションの内容および復号したトランザクションデータに基づいて機密トランザクションが正当なものであることを検証するステップは、コミットメントスキームおよび/または1つまたは複数のゼロ知識証明に基づいて1つまたは複数のコミットメント値が正しいと決定するステップ、トランザクションデータの1つまたは複数のゼロ知識証明を検証するステップ、または、トランザクションデータの値がレギュレーションを順守していると決定するステップのうちの1つまたは複数を含む。
【0081】
いくつかの実施形態においては、トランザクションデータの1つまたは複数のゼロ知識証明を検証するステップは、機密トランザクションの前のクライアントノードA530のアカウント残高がゼロより大きいと決定するステップ、機密トランザクションのトランザクション金額がゼロより大きいと決定するステップ、または、機密トランザクションのトランザクション金額が機密トランザクションの前のクライアントノードA530のアカウント残高以下であると決定するステップのうちの1つまたは複数を含む。
【0082】
説明した特徴は、デジタル電子回路の形式で、またはコンピュータハードウェア、ファームウェア、ソフトウェアの形式で、またはそれらの組合せで実装され得る。装置は、プログラマブルプロセッサによる実行のために情報媒体に有形に具現化されたコンピュータプログラム製品の形式で(例えば、機械可読ストレージデバイスの形式で)実装されてもよく、方法のステップは、入力データに対する処理をして出力を生成することによって説明した実施形態の機能を行う命令についてのプログラムを実行するプログラマブルプロセッサによって行われ得る。説明した特徴は、データストレージシステムからデータおよび命令を受信するとともにデータストレージシステムにデータおよび命令を送信するために結合された少なくとも1つのプログラマブルプロセッサ、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを含むプログラマブルシステム上で実行可能な1つまたは複数のコンピュータプログラムの形式で有利に実装され得る。コンピュータプログラムは、あるアクティビティを行うためにコンピュータにおいて直接的または間接的に使用され得る、または、ある結果をもたらし得る、命令のセットである。コンピュータプログラムは、コンパイル型またはインタプリタ型言語を含むプログラミング言語の任意の形式で書かれてもよく、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境における使用に適した他のユニットとして、ということを含む任意の形式で、デプロイされ得る。
【0083】
命令についてのプログラムの実行に適したプロセッサは、例として、汎用および特殊用途マイクロプロセッサの両方、および任意の種類のコンピュータの単一プロセッサまたはマルチプルプロセッサの1つを含む。一般的に、プロセッサは、リードオンリーメモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信することになる。コンピュータの要素は、命令を実行するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリとを含み得る。一般的に、コンピュータはまた、データファイルを記憶するための1つまたは複数のマスストレージデバイスを含み得る、またはそのようなデバイスと通信するように動作可能なように結合されてもよく、そのようなデバイスは、内蔵型ハードディスクおよびリムーバブルディスクなどの磁気ディスク、光磁気ディスク、および光ディスクを含む。コンピュータプログラム命令およびデータを有形に具現化するのに適したストレージデバイスは、例として、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内蔵型ハードディスクおよびリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む、すべての形式の不揮発性メモリを含む。プロセッサおよびメモリは、特定用途向け集積回路(ASIC)によって補完または組み込まれていてもよい。
【0084】
ユーザとのインタラクションを提供するために、前記特徴は、ユーザに情報を表示するための陰極線管(CRT)または液晶ディスプレイ(LCD)モニタなどの表示デバイスと、ユーザがコンピュータに入力を提供し得るキーボードおよびマウスまたはトラックボールなどのポインティングデバイスとを有するコンピュータ上で実装され得る。
【0085】
前記特徴は、データサーバなどのバックエンドコンポーネントを含む、または、アプリケーションサーバもしくはインターネットサーバなどのミドルウェアコンポーネントを含む、または、グラフィックユーザインターフェースを有するクライアントコンピュータもしくはインターネットブラウザなどのフロントエンドコンポーネントを含む、または、それらの任意の組合せを含む、コンピュータシステムの形式で実装され得る。システムのコンポーネントは、通信ネットワークなどのデジタルデータ通信の任意の形式または媒体によって接続され得る。通信ネットワークの例としては、例えば、ローカルエリアネットワーク(LAN)と、ワイドエリアネットワーク(WAN)とを含み、コンピュータとネットワークとがインターネットを形成する。
【0086】
コンピュータシステムは、クライアントとサーバとを含み得る。クライアントとサーバとは、一般的に互いにリモートにあり、通常は上述したようなネットワークを介してやりとりする。クライアントとサーバとの関係は、それぞれのコンピュータ上で動作し互いにクライアントサーバ関係を有するコンピュータプログラムによって生まれる。
【0087】
加えて、図に示したロジックフローは、望ましい結果を得るために図示した特定の順序または一連の順序を必要としていない。加えて、他のステップが提供されてもよいし、またはステップが説明したフローから除去されてもよいし、他のコンポーネントが説明したシステムに追加されても削除されてもよい。それゆえ、他の実施形態も特許請求の範囲の範囲内にある。
【0088】
多くの本開示の実施形態を説明してきた。しかしながら、本開示の精神および範囲から逸脱しない限り様々な変更をしてもよいことは理解されよう。それゆえ、他の実施形態も特許請求の範囲の範囲内にある。