【文献】
Integrated Encryption Scheme,[online],Wikipedia,2016年 5月 2日,[検索日 2020年12月10日]、インターネット<URL:https://en.wikipedia-on-ipfs.org/wiki/Integrated_Encryption_Scheme.html>
(58)【調査した分野】(Int.Cl.,DB名)
前記複数の注釈の各々が、注釈タイプ、注釈値のコミットメント、公開鍵暗号化または統合暗号化によって暗号化される前記注釈値、および前記公開鍵暗号化または前記統合暗号化によって暗号化される前記コミットメントを生成するために使用される乱数のうちの1つまたは複数を含む、
請求項1に記載のコンピュータで実行される方法。
前記トランザクション量の前記コミットメント、前記変化の前記コミットメント、および前記注釈値の前記コミットメントが、準同型であるコミットメントスキームを使用して生成される、
請求項2に記載のコンピュータで実行される方法。
前記複数の注釈IDの各々が、トランザクションアドレスと、トランザクション出力における前記対応する注釈の順序を示すインデックス番号とを含み、前記トランザクションアドレスが、前記トランザクションのトランザクション情報をハッシュすることによって生成される、
請求項1に記載のコンピュータで実行される方法。
前記コミットメントの中の前記トランザクション量が暗号化される前記トランザクション量と同じであるかどうか、および、前記トランザクション量の前記コミットメントを生成するために使用される乱数が前記第1の乱数と同じであるかどうかを決定するステップが、
前記ブロックチェーンネットワークの外側の前記第1のアカウントと前記第2のアカウントとの間の対話なしで、ゼロ知識証明に基づく、
請求項1に記載のコンピュータで実行される方法。
1つまたは複数のプロセッサに結合され、かつ前記1つまたは複数のプロセッサによって実行されると、請求項1から9のいずれか一項に記載の方法に従った動作を前記1つまたは複数のプロセッサに実行させる命令が記録された、
非一時的コンピュータ可読記録媒体。
【発明を実施するための形態】
【0015】
様々な図における同様の参照記号は同様の要素を示す。
【0016】
本開示の実装形態は、アカウント注釈モデルに基づくゼロ知識証明を用いた、ブロックチェーントランザクションの非対話型のプライバシーが保護される検証のためのコンピュータで実行される方法を含む。より具体的には、本開示の実装形態は、アカウント注釈モデルのもとでブロックチェーンアカウント間のトランザクションを承認することを対象とする。いくつかの実装形態では、アカウント注釈モデルでは、アカウント残高が注釈の集合体として記録される。本開示の実装形態によれば、トランザクションの承認は、トランザクション量、注釈値、またはコミットメントを生成するための乱数を明らかにすることなく、コミットメントスキームおよび公開鍵暗号化スキームまたは統合暗号化スキームに基づいて実行され得る。いくつかの実装形態では、活動は、第1のアカウントから、対応する複数の注釈を特定する複数の注釈識別子(ID)、複数の注釈の少なくとも一部分によって支払われる第1のアカウントと第2のアカウントとの間のトランザクションのトランザクション量のコミットメント、複数の注釈の合計値からトランザクション量を差し引くことによる変化のコミットメント、第2のアカウントの公開鍵によって暗号化されるトランザクション量のコミットメントを生成するために使用される第1の乱数、第2のアカウントの公開鍵によって暗号化されるトランザクション量、第1のアカウントの公開鍵によって暗号化される変化のコミットメントを生成するために使用される第2の乱数、第1のアカウントの公開鍵によって暗号化される変化、1つまたは複数のレンジプルーフ、および1つまたは複数の選択された乱数に基づいて生成されるゼロ知識証明の、デジタル署名されたコピーを受信することと、第1のアカウントの公開鍵を使用して、デジタル署名されたコピーに対応するデジタル署名を検証することと、トランザクション量および変化が0以上であることを1つまたは複数のレンジプルーフが証明すると決定することと、複数の注釈の合計値がトランザクション量および変化の合計に等しいと決定することと、コミットメントの中のトランザクション量が暗号化されるトランザクション量と同じであるかどうか、およびトランザクション量のコミットメントを生成するために使用される乱数が第1の乱数と同じであるかどうかを決定することと、コミットメントの中のトランザクション量が暗号化されるトランザクション量と同じであり、かつトランザクション量のコミットメントを生成するために使用される乱数が第1の乱数と同じである場合、複数の注釈、トランザクション量、および変化に基づいて、第1のアカウントおよび第2のアカウントを更新することとを含む。
【0017】
本開示の、および上で紹介された実装形態のさらなる文脈を提供すると、コンセンサスネットワーク(たとえば、ピアツーピアノードからなる)、分散型台帳システム、または単にブロックチェーンとも呼ばれ得る、ブロックチェーンネットワークは、参加するエンティティが安全かつ変更不可能にトランザクションを行いデータを記録することを可能にする。ブロックチェーンは、パブリックブロックチェーン、プライベートブロックチェーン、またはコンソーシアムブロックチェーンとして提供され得る。本開示の実装形態は、参加するエンティティの間で公開されているパブリックブロックチェーンに関して、本明細書でさらに詳細に説明される。しかしながら、本開示の実装形態はあらゆる適切なタイプのブロックチェーンにおいて実現され得ることが企図される。
【0018】
パブリックブロックチェーンでは、コンセンサスプロセスはコンセンサスネットワークのノードによって制御される。たとえば、数百、数千、さらには数百万ものエンティティがパブリックブロックチェーンに参加することができ、それらの各々がパブリックブロックチェーンの中の少なくとも1つのノードを運用する。したがって、パブリックブロックチェーンは、参加するエンティティに関して公開のネットワークであると見なされ得る。いくつかの例では、ブロックが有効となりブロックチェーンに追加されるには、過半数のエンティティ(ノード)がそれぞれのブロックに署名しなければならない。例示的なパブリックブロックチェーンには、ピアツーピア支払ネットワーク(暗号通貨ネットワーク)であるビットコインネットワークにおいて使用されるブロックチェーンがある。ブロックチェーンという用語は一般にビットコインネットワークに関して言及されるが、本明細書では、ブロックチェーンは、ビットコインネットワークに特に言及することなく分散型台帳を全般的に指す。
【0019】
一般に、パブリックブロックチェーンはパブリックトランザクションをサポートする。パブリックトランザクションはブロックチェーン内のノードのすべてと共有され、ブロックチェーンはすべてのノードにわたって複製される。すなわち、すべてのノードがブロックチェーンに関して完全にコンセンサスのとれた状態にある。コンセンサス(たとえば、ブロックチェーンへのブロックの追加に対する合意)を達成するために、ブロックチェーンネットワーク内でコンセンサスプロトコルが実装される。例示的なコンセンサスプロトコルには、限定はされないが、ビットコインネットワークにおいて実装されるプルーフオブワーク(POW)がある。
【0020】
本開示の実装形態は、上記の文脈に鑑みて本明細書でさらに詳細に説明される。より具体的には、上で紹介されたように、本開示の実装形態は、アカウント注釈モデルのもとでブロックチェーンアカウント間のトランザクションを承認することを対象とし、アカウント残高は注釈の集合体として記録される。いくつかの実施形態では、本明細書でさらに詳細に説明されるように、トランザクションの承認は、トランザクション量、注釈値、またはコミットメントを生成するための乱数を明らかにすることなく、コミットメントスキームおよびHEに基づいて実行され得る。
【0021】
本開示の実装形態によれば、ブロックチェーンノードは、アカウント注釈モデルを記録方法として使用することができる。アカウント残高モデルと比較すると、アカウント注釈モデルを採用するブロックチェーンノードは、アカウント残高の代わりに複数の注釈の記録をとる。複数の注釈の各々が、注釈タイプおよび注釈値と関連付けられる。注釈タイプは、注釈と関連付けられる通貨または資産のタイプであり得る。通貨のタイプは、現実の通貨または暗号通貨の任意のタイプであり得る。注釈値は、対応する注釈値を用いて注釈の額面値を示すことができる。
【0022】
データのプライバシーを保護するために、トランザクションは、ブロックチェーンユーザアカウントと関連付けられるトランザクション量または金銭の量の情報を明らかにすることなく、コミットメントに基づいてブロックチェーン(台帳)に記録され得る。乱数を使用してトランザクション量のコミットメントを生成するために、コミットメントスキームが使用され得る。例示的なコミットメントスキームには、限定はされないが、ペダーセンコミットメント(PC)スキームがある。トランザクション量はコミットメントの中に秘匿されるので、ブロックチェーンユーザアカウントの値をトランザクション量が超えないことを証明するために、1つまたは複数のレンジプルーフが使用され得る。
【0023】
アカウント残高モデルのもとでは、レンジプルーフがアカウント残高と関連付けられる。2つ以上のトランザクションが行われるが、すべてのトランザクションがブロックチェーン上で承認され記録されるのではない場合、レンジプルーフは正しくないアカウント残高と関連付けられることがあり、したがって無効であることがある。それと比較して、アカウント注釈モデルのもとでは、アカウント値は複数の注釈の合計によって計算される。あるトランザクション量がブロックチェーンユーザアカウント間で移動されるべきであるとき、合成値がそのトランザクション量以上である複数の注釈の一部分が、その移動を行うために使用され得る。追加の移動は、移動されるべき量よりも大きい合成値を残りの注釈が有するという条件のもとで行われ得る。したがって、トランザクションがブロックチェーン上で承認され記録されない場合であっても、残りの注釈の合成値がトランザクション量以上であることを示すレンジプルーフは、それでも有効であり得る。
【0024】
ユーザA(ノード)とユーザB(ノード)との間のトランザクションを承認するために、たとえば、トランザクション量および乱数は、ユーザBの公開鍵に基づいて公開鍵暗号化スキーム(たとえば、EIGamal)または統合暗号化スキーム(たとえば、ECIES)を使用して、ユーザAによって暗号化され得る。トランザクション量および乱数はまた、トランザクションを承認するためのゼロ知識証明(ZKP)を生成するために使用され得る。トランザクションのコミットメント、暗号化されたトランザクション量、暗号化された乱数、およびZKPは、トランザクションが有効であるかどうかを検証するために、ブロックチェーンノードによって使用され得る。承認プロセスの間、アカウント残高、トランザクション量、または乱数は、明らかにされる必要がなく、またはユーザBに送信される必要がない。
【0025】
図1は、本開示の実装形態を実行するために使用され得る例示的な環境100を図示する。いくつかの例では、例示的な環境100は、エンティティがパブリックブロックチェーン102に参加することを可能にする。例示的な環境100は、コンピューティングシステム106、108、およびネットワーク110を含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはこれらの組合せを含み、ウェブサイト、ユーザデバイス(たとえば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は有線および/またはワイヤレス通信リンクを通じてアクセスされ得る。
【0026】
図示される例では、コンピューティングシステム106、108は各々、パブリックブロックチェーン102の中のノードとしての参加を可能にする、任意の適切なコンピューティングシステムを含み得る。例示的なコンピューティングデバイスには、限定はされないが、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンがある。いくつかの例では、コンピューティングシステム106、108は、パブリックブロックチェーン102と対話するための、1つまたは複数のコンピュータで実施されるサービスをホストする。たとえば、コンピューティングシステム106は、第1のエンティティ(たとえば、ユーザA)が1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどの、第1のエンティティのコンピュータで実施されるサービスをホストすることができる。コンピューティングシステム108は、第2のエンティティ(たとえば、ユーザB)が1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどの、第2のエンティティのコンピュータで実施されるサービスをホストすることができる。
図1の例では、パブリックブロックチェーン102はノードのピアツーピアネットワークとして表され、コンピューティングシステム106、108はそれぞれ、パブリックブロックチェーン102に参加する第1のエンティティおよび第2のエンティティのノードを提供する。
【0027】
図2は、本開示の実装形態による例示的な概念のアーキテクチャ200を図示する。例示的な概念のアーキテクチャ200は、エンティティレイヤ202、ホストされたサービスレイヤ204、およびパブリックブロックチェーンレイヤ206を含む。図示される例では、エンティティレイヤ202は、Entity_1(E1)、Entity_2(E2)、およびEntity_3(E3)という3つのエンティティを含み、各エンティティがそれぞれのトランザクション管理システム208をもつ。
【0028】
図示される例では、ホストされるサービスレイヤ204は、各トランザクション管理システム208のためのブロックチェーンインターフェース210を含む。いくつかの例では、それぞれのトランザクション管理システム208は、通信プロトコル(たとえば、ハイパーテキスト転送プロトコルセキュア(HTTPS))を使用してネットワーク(たとえば、
図1のネットワーク110)を通じてそれぞれのブロックチェーンインターフェース210と通信する。いくつかの例では、各ブロックチェーンインターフェース210は、それぞれのトランザクション管理システム208とブロックチェーンレイヤ206との間の通信接続を提供する。より具体的には、各ブロックチェーンインターフェース210は、それぞれのエンティティがブロックチェーンレイヤ206のブロックチェーンネットワーク212に記録されるトランザクションを行うことを可能にする。いくつかの例では、ブロックチェーンインターフェース210とブロックチェーンレイヤ206との間の通信は、リモートプロシージャコール(RPC)を使用して行われる。いくつかの例では、ブロックチェーンインターフェース210は、それぞれのトランザクション管理システム208のためのブロックチェーンノードを「ホスト」する。たとえば、ブロックチェーンインターフェース210は、ブロックチェーンネットワーク212へのアクセスのためにアプリケーションプログラミングインターフェース(API)を提供する。
【0029】
本明細書で説明されるように、ブロックチェーンネットワーク212は、ブロックチェーン216に情報を変更不可能に記録する複数のノード214を含む、ピアツーピアネットワークとして提供される。単一のブロックチェーン216が概略的に図示されるが、ブロックチェーン216の複数のコピーが提供され、ブロックチェーンネットワーク212にわたって維持される。たとえば、各ノード214はブロックチェーン216のコピーを記録する。いくつかの実装形態では、ブロックチェーン216は、パブリックブロックチェーンに参加する2つ以上のエンティティの間で実行されるトランザクションと関連付けられる情報を記録する。
【0030】
図3は、本開示の実装形態による、アカウント注釈モデルに基づくブロックチェーントランザクションのプライバシーが保護された承認の例示的な方法300を図示する。高水準において、例示的な方法300が、ユーザノードA302、ユーザノードB(
図3に示されない)、およびコンセンサスノードとも呼ばれるブロックチェーンノード304によって実行される。ユーザノードA302のアカウントとユーザノードBのアカウントの両方が、アカウント注釈モデルに基づく。すなわち、ユーザノードA302およびユーザノードBの通貨が複数の注釈として保持される。価値の移動などのトランザクションが、ユーザノードA302からユーザノードBへと行われ得る。ユーザノードA302は、トランザクション量をカバーするようにそのアカウントから注釈のセットを選択することができる。注釈のセットの合計値とトランザクション量との差は、ユーザノードA302の変化として計算され得る。
【0031】
アカウントのプライバシーを保護するために、ユーザノードA302は、乱数rに基づいて、PCなどのコミットメントスキームを使用して、トランザクション量tのコミットメントを生成することができる。ユーザノードA302は、ユーザノードBの公開鍵に基づいて公開鍵暗号化スキームまたは統合暗号化スキームを使用して、トランザクション量および乱数を暗号化することができる。ユーザノードA302はまた、ユーザノードAの公開鍵に基づいて公開鍵暗号化スキームまたは統合暗号化スキームを使用して、変化および変化に対応する乱数を暗号化することができる。トランザクションの有効性を検証するために、ブロックチェーンノード304は、ZKPに基づいてコミットメントの中の対応するトランザクション量および乱数を用いて、暗号化されたトランザクション量および乱数を検証することができる。トランザクション量および乱数が一致する場合、トランザクションは、ブロックチェーンノード304によって有効であると決定される。例示的な方法300のさらなる詳細が
図3の以下の説明において論じられる。
【0032】
306において、ユーザノードA302は、トランザクション量をユーザノードBに移動させるための複数の注釈を選択する。ユーザノードA302およびユーザノードBは、ブロックチェーンコンセンサスノード、またはコンセンサスプロセスに参加することなくブロックチェーンネットワークを使用するユーザノードであり得る。前に論じられたように、ユーザノードA302は、記録をとるためにアカウント注釈モデルを使用することができる。アカウント残高モデルのもとでアカウント残高の記録をとる代わりに、ユーザノードA302のアカウント値は、その注釈の合計値によって測られる。ユーザノードA302は、トランザクション量をカバーするのに十分な複数の注釈を自身が持つ注釈から選択することができる。たとえば、トランザクション量が7.5ビットコインである場合、ユーザノードA302は、トランザクション量をカバーするために、それぞれ5ビットコイン、2ビットコイン、および1ビットコインの価値がある3つの注釈を選択することができる。
【0033】
いくつかの実装形態では、各注釈は、注釈の通貨または資産のタイプを特定する注釈タイプを有し得る。各注釈は、トランザクションIDおよびインデックス番号を含む注釈IDも有し得る。トランザクションIDは、トランザクション情報のハッシュであり得る。インデックスは、トランザクション出力における対応する注釈の順序を示し得る。たとえば、5ビットコイン、2ビットコイン、および1ビットコインという注釈量をもつ3つの注釈を送信するとき、2ビットコインの注釈は、2というインデックス番号をもつ2番目のトランザクション出力であり得る。いくつかの例では、k個の注釈が選択され、それらの注釈タイプおよび注釈IDは、NoteType
1、NoteId
a1、...、NoteType
k、NoteId
akとして表され得る。いくつかの例では、同じタイプの注釈は、トランザクション量の移動を実行するために選択され得る。いくつかの場合、変化に対応する注釈IDおよびトランザクション量は、トランザクションが作製される前に取得されることが可能ではない。そのような場合、前記注釈IDは、コンセンサスおよび契約更新を実行できるブロックチェーン契約に基づいて生成され得る。
【0034】
308において、ユーザノードA302は、複数の注釈の合計値およびトランザクション量に基づいて変化を計算する。注釈はトランザクション量より大きい合計値を有するように選択されるので、変化は、選択された注釈の合計値からトランザクション量を差し引いたものとして計算され得る。トランザクション量を表すためにtを使用し、変化を表すためにt
0を使用すると、変化の計算をt
0=a
1+...+a
k-tとして表すことができ、ここでa
1、...、a
kは、トランザクション量tをカバーするために、ユーザノードA302によって選択されるk個の注釈の注釈値である。
【0035】
310において、ユーザノードA302は、複数の注釈に対応する複数の乱数を生成し、変化に対応する乱数を計算する。複数の乱数が、注釈値のコミットメントを生み出すために生成され得る。たとえば、a
1、...、a
kは注釈値であり、注釈値に対応する乱数をr
a1、...、r
akとして表現することができる。注釈のコミットメントは、PC(r
a1、a
1)、...、PC(r
ak、a
k)として表現され得る。
【0036】
いくつかの実装形態では、乱数r
0は、変化t
0に対応するように計算され得る。この計算を、r
0=r
a1+...+r
ak-rと表現することができ、ここでrは、トランザクション量tのためのコミットメントを生み出すために生成される乱数である。r
0を計算することによって、ユーザノードA302は、移動される注釈の合計値が受け取られる注釈の合計値に等しいことを示すために、追加のZKPを生成する必要がない。
【0037】
312において、ユーザノードA302は、トランザクション量および変化のコミットメントと公開鍵暗号化された暗号文とを生成する。データのプライバシーを保護するために、注釈値、トランザクション量、および変化を含む金銭的な値は、コミットメントスキームに基づいてコミットメントによって秘匿され得る。ブロックチェーンは、記録としてコミットメントを保持することができる。いくつかの実装形態では、PCなどの準同型なコミットメントスキームが、コミットメントを生成するために使用され得る。非限定的な例としてPCを使用すると、T=PC(r,t)=g
rh
tとして表現され得るトランザクションtのPCは、乱数rを使用することによって生成されることが可能であり、ここでgおよびhは楕円曲線のジェネレータであってよく、PC(r,t)は曲線点のスカラー乗算である。藤崎-岡本コミットメントスキームなどのHEに基づく他のコミットメントスキームも、コミットメント値を生成するために使用され得ることを理解されたい。
【0038】
トランザクション量および乱数はまた、ユーザノードBの公開鍵を使用して暗号化され得る。この暗号化は、PaillierもしくはElGamalアルゴリズムなどの公開鍵暗号化スキーム、またはECIESなどの統合暗号化スキームに基づき得る。したがって、ユーザノードBは、トランザクション量および乱数を明らかにするために、その対応する公開鍵を使用することができる。公開鍵暗号化される乱数およびトランザクション量を、それぞれP
B=E(Pk
B,r)、Q
B=E(Pk
B,t)と表現することができ、ここでPk
BはユーザノードBの公開鍵を表す。
【0039】
同様に、変化のコミットメントをT
0=PC(r
0,t
0)と表現することができる。乱数r
0および変化量t
0を、それぞれP
A=E(Pk
A,r
0)、Q
A=E(Pk
A,t
0)として表現されるユーザノードA302の公開鍵としても暗号化することができ、ここでPk
AはユーザノードA302の公開鍵を表す。
【0040】
314において、ユーザノードA302は、1つまたは複数のレンジプルーフを生成する。いくつかの実装形態では、第1のレンジプルーフRP
1が、トランザクション量t≧0であることを示すために生成され得る。第2のレンジプルーフRP
2は、変化t
0≧0であることを示すために生成されることがあり、言い換えると、複数の注釈の合計値はトランザクション量以上である。
【0041】
316において、ユーザノードA302はZKPを生成する。いくつかの実装形態では、ZKPは、P
BおよびQ
Bに含まれる乱数rおよびトランザクション量tが、コミットメントTに含まれる対応する乱数およびトランザクション量に等しいことを証明するために使用され得る。いくつかの実装形態では、ZKPは、zero-knowledge succinct non-interactive argument of knowledge (zk-SNARK)を使用して生成され得る。
【0042】
318において、ユーザノードA302は、トランザクションデータのデジタル署名を生成するために秘密鍵を使用する。いくつかの実装形態では、トランザクションデータは、NoteType
1、NoteId
a1、...、NoteType
k、NoteId
ak; T
0、T、P
B、Q
B、P
A、Q
A、RP
1、RP
2、およびZKPを含み得る。
【0043】
320において、ユーザノードA302は、ブロックチェーンネットワークにトランザクションデータのデジタル署名されたコピーを提出する。
【0044】
322において、ブロックチェーンノード304はデジタル署名を検証する。デジタル署名の検証は、トランザクションデータがユーザノードA302によって送信されることを確実にできる。
【0045】
324において、ブロックチェーンノード304は、複数の注釈の注釈タイプを検証する。言い換えると、ブロックチェーンノード304は、NoteType
1〜NoteType
kが同じであることを検証する。
【0046】
326において、ブロックチェーンノード304は、選択された複数の注釈の合計値がトランザクション量と変化の合計に等しいことを検証する。言い換えると、ブロックチェーンは、a
1+...+a
k=t+t
0であることを検証する。前に論じられたように、アカウント注釈モデルのもとでは、データのプライバシーを保護するために、注釈がブロックチェーン上にPCとして保持され得る。PCの準同型性に基づいて、PC(r
a1,a
1)+...+PC(r
ak, a
k)=PC(r
a1+...+r
ak,a
1+...+a
k)であり、PC(r,t)+PC(r
0,t
0)=PC(r+r
0,t+t
0)である。したがって、PC(r
a1,a
1)+...+PC(r
ak,a
k)=PC(r,t)+PC(r
0,t
0)であることを示すことによって、a
1+...+a
k=t+t
0であることが証明され得る。
【0047】
328において、ブロックチェーンノード304は、1つまたは複数のレンジプルーフを検証する。
【0048】
330において、ブロックチェーンノード304はZKPを検証し、ZKPの検証が成功する場合、ユーザノードBの公開鍵を使用して暗号化されるトランザクション量および乱数は、PCによって秘匿される対応するトランザクション量および乱数と同じであることが証明される。上で論じられたように、ZKPはzk-SNARKを使用して生成され得る。
【0049】
いくつかの実装形態では、ZKPはSigmaプロトコルにも基づいて生成され得る。例としてPaillier公開鍵暗号化を使用すると、P
BおよびQ
Bを、それぞれP
B=E(Pk
B,r)=u
ry
n、Q
B=E(Pk,t)=u
tz
nとして表現することができ、ここでuおよびnは公開鍵であり、yおよびzは乱数である。
【0050】
Sigmaプロトコルに基づいてZKPを生成するために、ユーザノードA302は、3つの暗号文C、D、およびEを計算するために、4つの追加の乱数r
*、t
*、y
*、およびz
*を生成することができる。C、D、およびEは、C=g
r*h
t*、D=u
r*y
*n、およびE=u
t*z
*nとして表現され得る。ハッシュされた値xは、x=Hash(T,P
B,Q
B,g,h,u,n,C,D,E)として表現され得る、T、P
B、Q
B、g、h、u、n、C、D、およびEをハッシュすることによって計算され得る。4つの追加の暗号文a、b、c、およびdは、a=r
*+xr、b=t
*+xt、c=y
*y
x、d=z
*z
xとして計算され得る。最後に、ZKPはZKP=(C,D,E,a,b,c,d)として形成され得る。
【0051】
ZKPを検証するために、ブロックチェーンノード304はまず、x=Hash(T,P
B,Q
B,g,h,u,n,C,D,E)を計算することができる。ブロックチェーンノード304は、g
ah
b=CT
xであるかどうか、u
ac
n=DP
xであるかどうか、およびu
bd
n=EQ
xであるかどうかを検証することができる。そうである場合、ZKPは検証され、ユーザノードBの公開鍵を使用して暗号化されるトランザクション量および乱数は、PCによって秘匿される対応するトランザクション量および乱数と同じであることが証明される。
【0052】
別の例では、OU公開鍵暗号化が、トランザクション量および乱数を暗号化するために使用され得る。P
BおよびQ
Bをそれぞれ、P
B=E(Pk
B,r)=u
rv
y、Q
B=E(Pk,t)=u
tv
zとして表現することができ、ここでu、v、およびnは公開鍵であり、r、y、およびzは乱数である。
【0053】
Sigmaプロトコルに基づいてZKPを生成するために、ユーザノードA302は、3つの暗号文C、D、およびEを計算するために、4つの追加の乱数r
*、t
*、y
*、およびz
*を生成することができる。暗号文C、D、およびEは、C=g
r*h
t*、D=u
r*v
*y、およびE=u
t*v
*zとして計算され得る。ハッシュされた値xは、x=Hash(T,P
B,Q
B,g,h,u,v,n,C,D,E)として表現され得る、T、P
B、Q
B、g、h、u、v、n、C、D、およびEをハッシュすることによって計算され得る。4つの追加の暗号文a、b、c、およびdは、a=r
*+xr、b=t
*+xt、c=y
*+xy、d=z
*+xzとして計算され得る。最後に、ZKPはZKP=(C,D,E,a,b,c,d)として形成され得る。
【0054】
ZKPを検証するために、ブロックチェーンノード304は、x=Hash(T,P
B,Q
B,g,h,u,v,n,C,D,E)を計算することができる。ブロックチェーンノード304は、g
ah
b=CT
xであるかどうか、u
av
c=DP
xであるかどうか、およびu
bv
d=EQ
xであるかどうかを検証することができる。そうである場合、ZKPは検証され、ユーザノードBの公開鍵を使用して暗号化されるトランザクション量および乱数は、PCによって秘匿される対応するトランザクション量および乱数と同じであることが証明される。
【0055】
332において、ブロックチェーンノード304は、複数の注釈がユーザノードA302に属することを検証する。検証は、注釈ID、NoteID
aiに基づくことがあり、ここでi=1,...,kである。
【0056】
334において、ブロックチェーンノード304は、ユーザノードA302およびユーザノードBのアカウントを更新する。ユーザノードA302およびユーザノードBのアカウントはアカウント注釈モデルのもとで記録として注釈を保持するので、トランザクションの後で、ユーザノードA302から移動される複数の注釈が、ユーザノードA302のアカウントから除去され得る。変化はユーザノードAのアカウントへと戻るように加算され得る。トランザクション量、ならびに対応する注釈タイプおよび注釈IDは、ユーザノードBのアカウントに新しい注釈として加算され得る。アカウントの更新は、
図4を参照して本明細書においてさらに詳細に説明される。
【0057】
図4は、本開示の実装形態による、アカウント注釈モデルに基づく例示的なブロックチェーントランザクション400を図示する。例示的なブロックチェーントランザクション400において示されるように、ユーザノードA402はトランザクション量tをユーザノードB404に移す。トランザクションの前に、ユーザノードA402は、NoteId
a1、PC(r
a1,a
1)、E(Pk
A,r
a1)、E(Pk
A,a
1); NoteId
a2、PC(r
a2,a
2)、E(Pk
A,r
a2)、E(PK
A,a
2); ... ; NoteId
am、PC(r
am,a
m)、E(Pk
A,r
am)、E(PK
A,a
m)を含むm個の注釈を有する。
【0058】
図3を参照して例として本明細書で説明されるコミットメントスキーム、暗号化スキーム、およびトランザクションプロセスを使用すると、ユーザノードA402はトランザクションデータ408を生成し、トランザクションデータ408は、k個の選択された注釈の注釈IDと、NoteType
1、NoteId
a1、...、NoteType
k、NoteId
akとして表されるそれらのタイプとを含み得る。トランザクションデータ408はさらに、T
0、T、P
B、Q
B、P
A、Q
A、RP
1、RP
2、およびZKPを含み得る。トランザクションデータ408が生成された後で、ユーザノードA402は、デジタル署名を追加し、合意のためにデジタル署名されたトランザクションデータをブロックチェーンネットワーク406に提出することができる。
【0059】
トランザクションの後で、k個の選択された注釈が、ユーザノードA402のアカウントから除去され得る。変化がユーザノードA402へ戻るように加算され得る。したがって、ユーザノードA402は、NoteId
a(k+1)、PC(r
a(k+1),a
(k+1))、E(Pk
A,r
a(k+1))、E(Pk
A,a
(k+1))、...、NoteId
am、PC(r
am,a
m)、E(Pk
A,r
am)、E(Pk
A,a
m)、NoteId
a(m+1)、PC(r
0,t
0)、E(Pk
A,r
0)、E(Pk
A,t
0)として表される注釈を有することができ、NoteId
a(m+1)は変化t
0の注釈IDを表す。
【0060】
トランザクションの前に、ユーザノードB404は、NoteId
b1、PC(r
b1,b
1)、E(Pk
B,r
b1)、E(Pk
B,b
1); NoteId
b2、PC(r
b2,b
2)、E(Pk
B,r
b2)、E(Pk
B,b
2); ... ; NoteId
bm、PC(r
bm,b
m)、E(Pk
B,r
bm)、E(Pk
B,b
m)として表され得る、m個の注釈を有する。トランザクションの後で、トランザクション量がユーザノードB404に加算され得る。ユーザノードB404は、NoteId
b1、PC(r
b1,b
1)、E(Pk
B,r
b1)、E(Pk
B,b
1)、...、NoteId
bm、PC(r
bm,b
m)、E(Pk
B,r
bm)、E(Pk
B,b
m)、NoteId
b(m+1)、PC(r,t)、E(Pk
B,r)、E(Pk
B,t)として表される注釈を有することができ、NoteId
b(m+1)はトランザクション量tの注釈IDを表す。
【0061】
図5は、本開示の実装形態に従って実行され得る例示的なプロセス500を図示する。提示を明確にするために、以下の説明は全般に、この説明では他の図面の文脈で例示的なプロセス500を説明する。しかしながら、例示的なプロセス500は、たとえば、任意のシステム、環境、ソフトウェア、およびハードウェア、またはシステム、環境、ソフトウェア、およびハードウェアの組合せによって、適宜実行され得ることが理解されるであろう。いくつかの実装形態では、例示的なプロセス500の様々なステップは、並列に、組合せで、ループで、または任意の順序で行われ得る。
【0062】
502において、コンセンサスノードは、第1のアカウントから、対応する複数の注釈を特定する複数の注釈IDのデジタル署名されたコピーを受信する。いくつかの例では、コンセンサスノードはさらに、複数の注釈の少なくとも一部分によって支払われる、第1のアカウントと第2のアカウントとの間のトランザクションのトランザクション量のコミットメントを受信することができる。いくつかの例では、コンセンサスノードはさらに、複数の注釈の合計値からトランザクション量を差し引くことによって、変化のコミットメントを受信することができる。いくつかの例では、コンセンサスノードはさらに、第2のアカウントの公開鍵によって暗号化されるトランザクション量のコミットメントを生成するために使用される第1の乱数と、第2のアカウントの公開鍵によって暗号化されるトランザクション量とを受信することができる。いくつかの例では、コンセンサスノードはさらに、第1のアカウントの公開鍵によって暗号化される変化のコミットメントを生成するために使用される第2の乱数、第1のアカウントの公開鍵によって暗号化される変化、1つまたは複数のレンジプルーフ、および1つまたは複数の選択された乱数に基づいて生成されるゼロ知識証明を受信することができる。
【0063】
いくつかの実装形態では、複数の注釈の各々が、注釈タイプ、注釈値のコミットメント、公開鍵暗号化スキームまたは統合暗号化スキームによって暗号化される注釈値、および公開鍵暗号化スキームまたは統合暗号化スキームによって暗号化されるコミットメントを生成するために使用される乱数のうちの1つまたは複数を含む。いくつかの実装形態では、トランザクション量のコミットメント、変化のコミットメント、および注釈値のコミットメントが、準同型であるコミットメントスキームを使用して生成される。いくつかの実装形態では、複数の注釈IDの各々は、トランザクションアドレスと、トランザクション出力における対応する注釈の順序を示すインデックス番号とを含み、トランザクションアドレスは、トランザクションのトランザクション情報をハッシュすることによって生成される。いくつかの実装形態では、第1の乱数およびトランザクション量は、EIGamal、ECIESなどの暗号化スキームに基づいて、第2のアカウントの公開鍵によって暗号化される。
【0064】
504において、コンセンサスノードは、デジタル署名されたコピーに対応するデジタル署名を、第1のアカウントの公開鍵を使用して検証する。
【0065】
506において、コンセンサスノードは、トランザクション量および変化が0以上であることを1つまたは複数のレンジプルーフが証明すると決定する。
【0066】
508において、コンセンサスノードは、複数の注釈の合計値がトランザクション量と変化の合計に等しいと決定する。いくつかの実装形態では、複数の注釈の合計値がトランザクション量および変化の合計に等しいかどうかを決定することは、各注釈値のコミットメントの合計と、トランザクション量のコミットメントと変化のコミットメントの合計とを比較することに基づく。
【0067】
510において、コンセンサスノードは、コミットメントの中のトランザクション量が暗号化されるトランザクション量と同じであるかどうか、およびトランザクション量のコミットメントを生成するために使用される乱数が第1の乱数と同じであるかどうかを決定する。いくつかの実装形態では、コンセンサスノードはさらに、複数の注釈の各々が同じ注釈タイプを有すると決定する。いくつかの実装形態では、コンセンサスノードはさらに、複数の注釈IDの各々が第1のアカウントと関連付けられると決定する。いくつかの実装形態では、コミットメントの中のトランザクション量が暗号化されるトランザクション量と同じであるかどうか、および、トランザクション量のコミットメントを生成するために使用される乱数が第1の乱数と同じであるかどうかを決定することは、ブロックチェーンネットワークの外側の第1のアカウントと第2のアカウントとの間の対話なしで、ゼロ知識証明に基づく。
【0068】
512において、コンセンサスノードは、コミットメントの中のトランザクション量が暗号化されるトランザクション量と同じであり、かつトランザクション量のコミットメントを生成するために使用される乱数が第1の乱数と同じである場合、複数の注釈、トランザクション量、および変化に基づいて、第1のアカウントおよび第2のアカウントを更新する。
【0069】
本明細書で説明される主題の実装形態は、特定の利点または技術的な効果を実現するように実装され得る。たとえば、本開示の実装形態は、アカウント残高およびブロックチェーンノードのトランザクション量がトランザクションの間に非公開であることを可能にする。資金移動の受領者は、トランザクションを確認すること、またはコミットメントを検証するために乱数を使用することが必要ではなく、トランザクションの承認は非相互的であり得る。ブロックチェーンノードは、公開鍵暗号化スキームおよびコミットメントスキームに基づいてトランザクションを承認して、ゼロ知識証明を可能にできる。
【0070】
説明される方法は、様々なモバイルコンピューティングデバイスのアカウント/データセキュリティの向上を可能にする。アカウントの残高およびトランザクション量は、コミットメントスキームによって秘匿され得る。したがって、コンセンサスノードは、アカウントの実際のアカウント残高を明らかにすることなく、トランザクションの後の台帳のアカウント残高を更新することができる。トランザクションを確認するために乱数を受領者に送信する必要がないので、データ漏洩のリスクを減らすことができ、乱数を管理するために使用することが必要なコンピューティングリソースおよびメモリリソースがより少なくなる。
【0071】
本明細書で説明される実装形態および動作は、本明細書で開示される構造もしくはそれらのうちの1つまたは複数の組合せを含めて、デジタル電子回路で、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェアで実装され得る。動作は、1つまたは複数のコンピュータ可読記録デバイスに記録される、または他のソースから受信されるデータに対して、データ処理装置によって実行される動作として実施され得る。データ処理装置、コンピュータ、またはコンピューティングデバイスは、前述の1つのプログラマブルプロセッサ、1つのコンピュータ、1つのシステムオンチップ、またはこれらの複数、または組合せを例として含む、データを処理するための装置、デバイス、および機械を包含し得る。装置は、専用論理回路、たとえば、中央処理装置(CPU)、フィールドプログラマブルゲートアレイ(FPGA)、または特定用途向け集積回路(ASIC)を含み得る。装置はまた、対象のコンピュータプログラムのための実行環境を作り出すコード、たとえば、プロセッサファームウェア、プロトロルスタック、データベース管理システム、オペレーティングシステム(たとえば、1つのオペレーティングシステムまたはオペレーティングシステムの組合せ)、クロスプラットフォームランタイム環境、仮想マシン、またはこれらの1つまたは複数の組合せを構成するコードを含み得る。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【0072】
コンピュータプログラム(たとえば、プログラム、ソフトウェア、ソフトウェアアプリケーション、ソフトウェアモジュール、ソフトウェアユニット、スクリプト、またはコードとしても知られている)は、コンパイル型またはインタプリタ型言語、宣言型または手続き型言語を含む、任意の形式のプログラミング言語で書かれてよく、スタンドアロンプログラムとして、または、モジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットを含む、任意の形式で展開されてよい。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語ドキュメントに記録される1つまたは複数のスクリプト)を保持するファイルの一部分、対象のプログラムに専用の単一のファイル、または複数の協調的なファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記録するファイル)に記録され得る。コンピュータプログラムは、1つの場所に位置する、または、複数の場所に分散され通信ネットワークによって相互接続される、1つのコンピュータまたは複数のコンピュータ上で実行され得る。
【0073】
コンピュータプログラムの実行のためのプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読取り専用メモリまたはランダムアクセスメモリまたは両方から、命令およびデータを受信する。コンピュータの不可欠な要素は、命令に従って活動を実行するためのプロセッサ、ならびに、命令およびデータを記録するための1つまたは複数のメモリデバイスである。一般に、コンピュータは、データを記録するための1つまたは複数のマスストレージデバイスも含み、または、そのマスストレージデバイスからデータを受信し、もしくはそこへデータを移し、もしくはその両方を行うように、動作可能に結合される。コンピュータは、別のデバイス、たとえば、モバイルデバイス、携帯情報端末(PDA)、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記録デバイスに埋め込まれ得る。コンピュータプログラム命令およびデータを記録するのに適したデバイスは、例として、半導体メモリデバイス、磁気ディスク、および磁気光学ディスクを含む、不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用の論理回路によって補完されても、またはそれに組み込まれてもよい。
【0074】
モバイルデバイスは、ハンドセット、ユーザ機器(UE)、携帯電話(たとえば、スマートフォン)、タブレット、ウェアラブルデバイス(たとえば、スマートウォッチおよびスマート眼鏡)、人体に埋め込まれたデバイス(たとえば、バイオセンサ、人工内耳)、または他のタイプのモバイルデバイスを含み得る。モバイルデバイスは、様々な通信ネットワーク(以下で説明される)にワイヤレスに(たとえば、高周波(RF)信号を使用して)通信することができる。モバイルデバイスは、モバイルデバイスの現在の環境の特性を決定するためのセンサを含み得る。センサは、カメラ、マイクロフォン、近接センサ、GPSセンサ、モーションセンサ、加速度計、周辺光センサ、水分センサ、ジャイロスコープ、コンパス、気圧計、指紋センサ、顔認識システム、RFセンサ(たとえば、Wi-Fiおよびセルラー無線)、温度センサ、または他のタイプのセンサを含み得る。たとえば、カメラは、可動レンズまたは固定レンズ、フラッシュ、イメージセンサ、およびイメージプロセッサを伴う、前面カメラまたは後面カメラを含み得る。カメラは、顔認識および/または虹彩認識のための詳細を捉えることが可能なメガピクセルカメラであり得る。カメラは、データプロセッサ、およびメモリに記録されるまたはリモートでアクセスされる認証情報とともに、顔認識システムを形成することができる。顔認識システムまたは1つまたは複数のセンサ、たとえば、マイクロフォン、モーションセンサ、加速度計、GPSセンサ、またはRFセンサは、ユーザ認証のために使用され得る。
【0075】
ユーザとの対話を提供するために、実装形態は、ディスプレイデバイスおよび入力デバイス、たとえば、ユーザに情報を表示するための液晶ディスプレイ(LCD)または有機発光ダイオード(OLED)/仮想現実(VR)/拡張現実(AR)ディスプレイ、ならびに、ユーザがそれによってコンピュータに入力を提供できるタッチスクリーン、キーボード、およびポインティングデバイスを有する、コンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは任意の形式の感覚的なフィードバック、たとえば視覚的なフィードバック、聴覚的なフィードバック、または触覚的なフィードバックであってよく、ユーザからの入力は、音響入力、発話入力、または触覚入力を含む、任意の形式で受け取られ得る。加えて、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送信し、そこからドキュメントを受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
【0076】
実装形態は、有線またはワイヤレスデジタルデータ通信(またはそれらの組合せ)の任意の形式もしくは媒体、たとえば通信ネットワークによって相互接続されるコンピューティングデバイスを使用して実装され得る。相互接続されたデバイスの例は、一般に互いから離れており典型的には通信ネットワークを介して対話する、クライアントおよびサーバである。クライアント、たとえばモバイルデバイスは、たとえば、購入、売却、支払、贈与、送付、もしくは貸付のトランザクションの実行、またはこれらの認可を行うサーバと、またはサーバを通じて、自身でトランザクションを実行することができる。そのようなトランザクションは、活動と応答が時間的に近くなるようにリアルタイムであり得る。たとえば、ある個人は、活動および応答が実質的に同時に発生することを知覚し、その個人の活動に続く応答の時間差が1ミリ秒(ms)未満もしくは1秒(s)未満であり、または応答にシステムの処理制約を考慮した意図的な遅延がない。
【0077】
通信ネットワークの例は、ローカルエリアネットワーク(LAN)、無線アクセスネットワーク(RAN)、メトロポリタンエリアネットワーク(MAN)、およびワイドエリアネットワーク(WAN)を含む。通信ネットワークは、インターネット、別の通信ネットワーク、または通信ネットワークの組合せの、すべてもしくは一部分を含み得る。情報は、Long Term Evolution(LTE)、5G、IEEE 802、インターネットプロトコル(IP)、または他のプロトコルもしくはプロトコルの組合せを含む、様々なプロトコルおよび規格に従って通信ネットワーク上で送信され得る。通信ネットワークは、接続されたコンピューティングデバイス間で、音声データ、ビデオデータ、バイオメトリックデータ、または認証データ、または他の情報を送信することができる。
【0078】
別個の実装形態として説明される特徴は、組合せで、単一の実装形態で実装され得るが、単一の実装形態として説明される特徴は、複数の実装形態で、別々に、または任意の適切な部分組合せで実装され得る。特定の順序で説明され特許請求される動作は、特定の順序が実行されなければならないこと、またはすべての図示される動作が実行されなければならないことを要求するものとして理解されるべきではない(いくつかの動作は任意選択であり得る)。適宜、マルチタスキングまたは並列処理(またはマルチタスキングと並列処理の組合せ)が実行され得る。