【文献】
吉濱 佐知子 ほか,分散台帳技術におけるインテグリティとプライバシー保護,CSS2017 コンピュータセキュリティシンポジウム2017 論文集 [CD−ROM],日本,一般社団法人情報処理学会,2017年10月16日,Vol.2017 No.2,p.680−687
【文献】
Torben Pryds Pedersen,Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing,LNCS, Advances in Cryptology - CRYPTO '91,Springer,1992年,Vol. 576,p. 129-140
(58)【調査した分野】(Int.Cl.,DB名)
前記第1キーを生成するステップは、Diffie−Hellman(DH)キー交換プロトコルの下において、前記トランザクションの送信者のプライベートキーSK_A及び前記受領者のパブリックキーPK_Bに基づいて前記第1キーを生成するステップを有する請求項1に記載の方法。
前記コミットメント方式は、少なくとも前記トランザクションブラインディングファクタr_tに基づいた、且つ、前記トランザクション金額tが、コミット済みの値である状態における、Pedersenコミットメントを有する請求項1に記載の方法。
前記トランザクションブラインディングファクタr_t及び前記トランザクション金額tの前記組合せは、前記トランザクションブラインディングファクタr_t及び前記トランザクション金額tの連結を有する請求項1に記載の方法。
前記トランザクションの前記受領者と関連する前記受領者ノードが前記トランザクションを検証するべく、前記トランザクションコミットメント値T及び前記暗号化済みの組合せを前記受領者ノードに送信するステップは、
前記トランザクションコミットメント値T及び前記暗号化済みの組合せを前記トランザクションの前記受領者と関連する前記受領者ノードに送信し、これにより、前記受領者ノードが、
前記トランザクションの前記受領者のプライベートキーSK_B及び送信者のパブリックキーPK_Aに基づいて前記対称キーペアの第2キーを生成し、
前記トランザクションブラインディングファクタr_t及び前記トランザクション金額tを取得するべく、前記受領者によって生成された前記第2キーによって前記暗号化済みの組合せを暗号解読し、且つ、
少なくとも前記トランザクションコミットメント値T、前記トランザクションブラインディングファクタr_t、及び前記トランザクション金額tに基づいて、前記トランザクションを検証する、
ようにするステップを有する請求項1に記載の方法。
前記受領者ノードが、少なくとも前記トランザクションコミットメント値T、前記トランザクションブラインディングファクタr_t、及び前記トランザクション金額tに基づいて前記トランザクションを検証するようにするステップは、前記受領者ノードが、
前記トランザクションコミットメント値Tが前記トランザクション金額tの前記コミットメント方式とマッチングしていないと前記トランザクションブラインディングファクタr_tに基づいて判定することに応答して、前記トランザクションを拒絶し、且つ、
前記トランザクションコミットメント値Tが前記トランザクション金額tの前記コミットメント方式とマッチングしていると前記トランザクションブラインディングファクタr_tに基づいて判定することに応答して、受領者署名SIGBを生成して前記送信者と関連する送信者ノードに返すべく前記トランザクションに署名することにより、前記トランザクションを承認する、
ようにするステップを有する請求項5に記載の方法。
前記受領者署名SIGBの受け取りに応答して、送信者署名SIGAを生成するべく前記トランザクションに署名することにより、前記トランザクションを承認するステップと、
ブロックチェーンネットワーク内の1つ又は複数のノードが前記トランザクションを検証するべく、前記暗号化済みの組合せ、前記暗号化済みの別の組合せ、前記トランザクションコミットメント値T、前記変化コミットメント値Y、前記送信者署名SIGA、及び前記受領者署名SIGBを有する前記トランザクションを前記1つ又は複数のノードにサブミットするステップと、
を更に有する請求項7に記載の方法。
前記ブロックチェーンネットワーク内の前記1つ又は複数のノードが前記トランザクションを検証するべく、前記暗号化済みの組合せ、前記暗号化済みの別の組合せ、前記トランザクションコミットメント値T、前記変化コミットメント値Y、前記送信者署名SIGA、及び前記受領者署名SIGBを有する前記トランザクションを前記1つ又は複数のノードにサブミットするステップは、
前記暗号化済みの組合せ、前記暗号化済みの別の組合せ、前記トランザクションコミットメント値T、前記変化コミットメント値Y、前記送信者署名SIGA、及び前記受領者署名SIGBを有する前記トランザクションを前記ブロックチェーンネットワーク内の前記1つ又は複数のノードにサブミットし、これにより、前記1つ又は複数のノードが、前記トランザクションの検証の成功に応答して、前記トランザクション金額tを前記受領者に発行し、前記トランザクションのために利用された前記1つ又は複数の資産を除去し、且つ、前記変化yを前記送信者に発行するようにするステップ、
を有する請求項8に記載の方法。
前記第1キーを生成するステップは、Diffie−Hellman(DH)キー交換プロトコルの下において、前記トランザクションの送信者のプライベートキーSK_A及び前記受領者のパブリックキーPK_Bに基づいて前記第1キーを生成するステップを有する請求項10に記載のストレージ媒体。
前記コミットメント方式は、少なくとも前記トランザクションブラインディングファクタr_tに基づいた、且つ、前記トランザクション金額tが、コミット済みの値である状態における、Pedersenコミットメントを有する請求項10に記載のストレージ媒体。
前記トランザクションブラインディングファクタr_t及び前記トランザクション金額tの前記組合せは、前記トランザクションブラインディングファクタr_t及び前記トランザクション金額tの連結を有する請求項10に記載のストレージ媒体。
前記トランザクションの前記受領者と関連する前記受領者ノードが前記トランザクションを検証するべく、前記トランザクションコミットメント値T及び前記暗号化済みの組合せを前記受領者ノードに送信するステップは、前記トランザクションコミットメント値T及び前記暗号化済みの組合せを前記トランザクションの前記受領者と関連する前記受領者ノードに送信し、これにより、前記受領者ノードが、
前記トランザクションの前記受領者のプライベートキーSK_B及び送信者のパブリックキーPK_Aに基づいて前記対称キーペアの第2キーを生成し、
前記トランザクションブラインディングファクタr_t及び前記トランザクション金額tを取得するべく、前記受領者ノードによって生成された前記第2キーによって前記暗号化済みの組合せを暗号解読し、且つ、
少なくとも前記トランザクションコミットメント値T、前記トランザクションブラインディングファクタr_t、及び前記トランザクション金額Tに基づいて前記トランザクションを検証する、
ようにするステップを有する請求項10に記載のストレージ媒体。
前記受領者ノードが、少なくとも前記トランザクションコミットメント値T、前記トランザクションブラインディングファクタr_t、及び前記トランザクション金額tに基づいて前記トランザクションを検証するようにするステップは、前記受領者ノードが、
前記トランザクションコミットメント値Tが前記トランザクション金額tの前記コミットメント方式とマッチングしていないと前記トランザクションブラインディングファクタr_tに基づいて判定することに応答して、前記トランザクションを拒絶し、且つ、
前記トランザクションコミットメント値Tが前記トランザクション金額tの前記コミットメント方式とマッチングしていると前記トランザクションブラインディングファクタr_tに基づいて判定することに応答して、受領者署名SIGBを生成して前記送信者と関連する送信者ノードに返すべく前記トランザクションに署名することにより、前記トランザクションを承認する、
ようにするステップを有する請求項14に記載のストレージ媒体。
前記ブロックチェーンネットワーク内の前記1つ又は複数のノードが前記トランザクションを検証するべく、前記暗号化済みの組合せ、前記暗号化済みの別の組合せ、前記トランザクションコミットメント値T、前記変化コミットメント値Y、前記送信者署名SIGA、及び前記受領者署名SIGBを有する前記トランザクションを前記1つ又は複数のノードにサブミットするステップは、
前記暗号化済みの組合せ、前記暗号化済みの別の組合せ、前記トランザクションコミットメント値T、前記変化コミットメント値Y、前記送信者署名SIGA、及び前記受領者署名SIGBを有する前記トランザクションを前記ブロックチェーンネットワーク内の前記1つ又は複数のノードにサブミットし、これにより、前記1つ又は複数のノードが、前記トランザクションの検証の成功に応答して、前記トランザクション金額tを前記受領者に発行し、前記トランザクションのために利用された前記1つ又は複数の資産を除去し、且つ、前記変化yを前記送信者に発行する、ようにするステップ
を有する請求項17に記載のストレージ媒体。
前記対称キーペアの前記第2キーを生成するステップは、Diffie−Hellman(DH)キー交換プロトコルの下において前記受領者のプライベートキーSK_B及び前記送信者のパブリックキーPK_Aに基づいて前記対称キーペアの前記第2キーを生成するステップを有し、且つ、
前記コミットメント方式は、少なくとも前記トランザクションブラインディングファクタr_tに基づいた、且つ、前記トランザクション金額tが、コミット済みの値である状態における、Pedersenコミットメントを有する請求項20に記載の方法。
【発明を実施するための形態】
【0027】
ブロックチェーンは、一般に分散型の台帳と呼称される、分散型のデータベースとして見なされてもよく、その理由は、動作が、ネットワーク内の様々なノード(例えば、演算装置)によって実行されているからである。任意の情報が、ブロックチェーン内に書き込まれてもよく、保存されてもよく、且つ、これから読み取られてもよい。だれもが、ノードとなるように、サーバーをセットアップすることができると共に、ブロックチェーンネットワークに加入することできる。任意のノードが、ブロックを現時点のブロックチェーンに追加するためのハッシュ計算などの、複雑な演算を実行することにより、ブロックチェーンを維持するための演算パワーを提供できると共に、追加されたブロックは、様々なタイプのデータ又は情報を収容することができる。追加されたブロック用の演算パワーを提供したノードには、トークン(例えば、デジタル通貨単位)によって報いることができる。ブロックチェーンは、中央ノードを有していないことから、それぞれのノードは、等しく、且つ、ブロックチェーンデータベース全体を保持している。
【0028】
ノードは、例えば、ブロックチェーンネットワークをサポートすると共にその円滑な稼働を維持する演算装置又は大規模なコンピュータシステムである。フルノード及び軽量ノードという、2つのタイプのノードが存在している。フルノードは、ブロックチェーンの完全な複写を維持している。ブロックチェーンネットワーク上のフルノードは、自身が受け取るトランザクション及びブロックを検証し、且つ、トランザクションのコンセンサス検証を提供するべく、それらを接続されているピアに中継している。その一方で、軽量ノードは、ブロックチェーンの一部分をダウンロードするのみである。例えば、軽量ノードは、デジタル通貨トランザクションのために使用されている。軽量ノードは、取引の実行を所望する際には、フルノードに対して通信することになる。
【0029】
この分散化プロパティは、制御された位置における管理センタの出現の防止を支援することができる。例えば、ビットコインブロックチェーンの維持は、稼働エリア内のビットコインソフトウェアの通信ノードのネットワークによって実行されている。本開示においては、例として、ビットコイン及びイーサリアムなどの、1つ又は複数のブロックチェーン又はデジタル通貨を使用することとする。当業者は、本開示において開示されている技術的解決策は、その他のタイプのブロックチェーン及びデジタル通貨を使用することが可能であり、或いは、これらに適用されうることを理解するであろう。即ち、従来の意味おける銀行、機関、又は管理者の代わりに、ビットコインソフトウェアを実行するコンピュータサーバーの形態において、複数の仲介者が存在している。これらのコンピュータサーバーは、インターネットを介して接続されたネットワークを形成しており、この場合には、だれもが、ネットワークに潜在的に加入することができる。ネットワークによって受け入れられるトランザクションは、「ユーザーAがZビットコインをユーザーBに送信することを所望している」という形態を有していてもよく、この場合に、トランザクションは、容易に入手可能なソフトウェアアプリケーションを使用することにより、ネットワークにブロードキャストされる。コンピュータサーバーは、これらの経済的なトランザクションを検証し、そのレコードを台帳の自身の複写に追加し、且つ、次いで、これらの台帳への追加をネットワークのその他のサーバーにブロードキャストするように動作可能であるビットコインサーバーとして機能する。
【0030】
ブロックチェーンの維持は、「マイニング(mining)」と呼称され、且つ、このような維持を実行した者は、上述のように、新しく生成されたビットコイン及びトランザクション料金によって報われる。例えば、ノードは、ブロックチェーンネットワークが合意した規則の組に基づいて、トランザクションが有効であるかどうかを判定することができる。マイナー(miner)は、任意の大陸に位置していてもよく、且つ、それぞれのトランザクションの有効性を検証すると共にそのトランザクションをブロックチェーンに追加することにより、支払を処理することができる。このような検証は、複数のマイナーによって提供されるコンセンサスを介して実現されており、且つ、システマチックな共謀が存在していないことを仮定している。この結果、すべてのデータが一貫性を有することになり、その理由は、演算が有効となるには、特定の要件を充足しなければならず、且つ、ブロックチェーンが一貫性を有することを保証するために、すべてのノードが同期化されることになるからである。従って、データをブロックチェーンノードの分散型システム内において一貫性を有する方式によって保存することができる。
【0031】
マイニングプロセスを通じて、資産移転などのトランザクションが、ネットワークノードにより、検証され、且つ、ブロックチェーンのブロックの成長するチェーンに追加される。ブロックチェーン全体を調査することにより、検証は、例えば、支払パーティが移転資産に対するアクセスを有しているかどうか、資産が以前に使用されているかどうか、移転金額が正しいかどうかなどを含むことができる。例えば、送信者によってサインオフされた仮想的なトランザクション(例えば、UTXO(Unspent Transaction Output)モデルの下のビットコインのトランザクション、アカウント/残高モデルの下のイーサリアムコインのトランザクション)においては、提案されたトランザクションをマイニングのためにブロックチェーンネットワークにブロードキャストすることができる。マイナーは、トランザクションが、ブロックチェーン履歴に従って実行される適格性を有しているかどうかをチェックする必要がある。送信者のワレット残高が、既存のブロックチェーン履歴に従って、十分な資金を有している場合には、トランザクションは、有効であると見なされ、且つ、ブロックに追加することができる。検証されたら、これらの資産移転は、ブロックチェーンに追加される次のブロック内に包含することができる。
【0032】
ブロックは、データベースレコードによく似ている。データを書き込むたびに、ブロックが生成される。これらのブロックは、相互接続されたネットワークとなるように、暗号法を使用することにより、リンク及び保護されている。それぞれのブロックは、以前のブロックに接続されており、この点も、「ブロックチェーン」の由来である。それぞれのブロックは、通常、以前のブロックの暗号学的ハッシュ、生成時刻、及び実際のデータを含んでいる。例えば、それぞれのブロックは、現時点のブロックの特徴値を記録するためのブロックヘッダと、実際のデータ(例えば、トランザクションデータ)を記録するためのボディと、という2つの部分を含む。ブロックのチェーンは、ブロックヘッダを介してリンクされている。それぞれのブロックヘッダは、バージョン、以前のブロックのハッシュ、マークルルート、タイムスタンプ、難易度ターゲット、及びノンスなどの、複数の特徴値を含むことができる。以前のブロックのハッシュは、以前のブロックのアドレスのみならず、以前のブロックの内部のデータのハッシュをも含んでおり、これにより、ブロックチェーンは、不変性を有している。ノンスとは、含まれている際に、規定された数のリーディングゼロビットを有するハッシュをもたらす数である。
【0033】
マイニングのために、新しいブロックのコンテンツのハッシュがノードによって取得される。新しいストリングを取得するべく、ノンス(例えば、ランダムストリング)がハッシュに付加される。新しいストリングが再度ハッシュ化される。次いで、最終的なハッシュが難易度ターゲット(例えば、レベル)と比較され、且つ、最終的なハッシュが実際に難易度ターゲット未満であるかどうかが判定される。難易度ターゲット未満ではない場合には、ノンスが変更され、且つ、プロセスが再度繰り返される。難易度ターゲット未満である場合には、ブロックがチェーンに追加され、且つ、パブリック台帳が更新され、且つ、追加について警告される。成功的な追加の責任を担ったノードは、例えば、それ自体に対する報酬トランザクションを新しいブロック内に追加することにより、ビットコインによって報いられる(コインベース生成と呼称される)。
【0034】
即ち、すべての出力「Y」について、大きな最小エントロピーを有する分布からkが選択された場合には、H(k|x)=Yとなるような、入力xを見出すことが可能であり、この場合に、Kは、ノンスであり、xは、ブロックのハッシュであり、Yは、難易度ターゲットであり、且つ、「|」は、連結を表記している。暗号学的ハッシュが基本的にランダムであることを理由として、その出力をその入力から予測しえないという意味において、例えば、1、次いで2、次いで3、以下同様、という、1つずつ整数を試みるという、ノンスを見出す1つの既知の方法しか存在しておらず、これは、ブルートフォースと呼称される場合がある。リーディングゼロの数が大きいほど、平均で、必須のノンスYを見出すのに所要する時間が長くなる。一例においては、ビットコインシステムは、ノンスを見出すための平均時間が約10分となるように、リーディングゼロの数を常に調節している。この結果、演算ハードウェアの処理能力が時間と共に増大するのに伴って、年々、ビットコインプロトコルは、マイニングが常に実装のために約10分の持続時間を所要するようにするべく、更に多くのリーディングゼロビットを単純に必要とすることになる。
【0035】
上述のように、ハッシュ化は、ブロックチェーンのための重要な礎石である。ハッシュアルゴリズムは、任意の長さのメッセージを固定長のメッセージダイジェストに圧縮するための関数として理解することができる。より一般的に使用されているのは、MD5及びSHAである。いくつかの実施形態においては、ブロックチェーンのハッシュ長は、256ビットであり、これは、オリジナルのコンテンツとは無関係に、256ビットの2進数が最終的に算出されることを意味している。そして、オリジナルコンテンツが異なっている限り、対応するハッシュが一意であることを保証することができる。例えば、「123」というストリングのハッシュは、a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(16進数)であり、これは、2進に変換された際に256ビットを有しており、且つ、このハッシュを有しているのは、「123」のみである。ブロックチェーン内のハッシュアルゴリズムは、不可逆的であり、即ち、順方向(「123」からa8fdc205a9f19cc1c7507a60c4f01b1c7507a60c4f01b13d11d7fd0へ)の計算は容易であるが、逆方向の計算は、すべての演算リソースが動員された場合にも、実行不能である。従って、ブロックチェーンのそれぞれのブロックのハッシュは、一意である。
【0036】
更には、ブロックのコンテンツが変化した場合には、そのハッシュも変化することになる。ブロックとハッシュは、1対1の対応関係にあり、且つ、それぞれのブロックのハッシュは、具体的には、ブロックヘッダについて算出されている。即ち、長いストリングを形成するべく、ブロックヘッダの特徴値が接続され、且つ、このストリングについて、ハッシュが算出される。例えば、「Hash=SHA256(block header)」が、ブロックハッシュの計算式であり、SHA256は、ブロックヘッダに適用されるブロックチェーンハッシュアルゴリズムである。ハッシュは、ブロックボディではなく、ブロックヘッダによって一意に判定されている。上述のように、ブロックヘッダは、現時点のブロックのハッシュ及び以前のブロックのハッシュを含む、多数のコンテンツを収容している。これは、現時点のブロックのコンテンツが変化した場合に、或いは、以前のブロックのハッシュが変化した場合に、その結果、現時点のブロック内のハッシュの変化が生じることを意味している。ハッカーがブロックを変更した場合には、そのブロックのハッシュが変化する。この結果、後のブロックが変更済みのブロックに接続するためには、ハッカーは、すべての後続のブロックを変更しなければならず、その理由は、次のブロックが、以前のブロックのハッシュを含まなければならないからである。さもなければ、変更済みのブロックは、ブロックチェーンから切り離されることになる。設計上の理由から、ハッシュ計算には、時間を所要し、且つ、ハッカーがネットワーク全体の演算パワーの51%超を支配していない限り、複数のブロックを短期間で変更することは、ほとんど不可能である。従って、ブロックチェーンは、その独自の信頼性を保証しており、且つ、データは、一旦書き込まれたら、改竄することができない。
【0037】
マイナーが新しいブロックのハッシュ(即ち、適格性を有する署名又は解)を見出したら、マイナーは、この署名をすべてのその他のマイナー(ブロックチェーンのノード)にブロードキャストする。次いで、その他のマイナーは、自身の順番において、解が送信者のブロックの問題に対応しているかどうかを検証する(即ち、ハッシュ入力が、その署名を実際に結果的にもたらすかどうかを判定する)。解が有効である場合には、その他のマイナーは、解を確認することになり、且つ、新しいブロックがブロックチェーンに追加されうることに合意することになる。従って、新しいブロックに関するコンセンサスに到達することになる。これは、「プルーフオブワーク(proof of work)」とも呼称されている。コンセンサスに到達したブロックは、いまや、ブロックチェーンに追加することが可能であり、且つ、その署名と共に、ネットワーク上のすべてのノードにブロードキャストされる。ノードは、ブロックの内部のトランザクションが、その時点において、現時点のワレット残高(トランザクション履歴)と正しく対応している限り、ブロックを受け付けることになり、且つ、そのブロックをそのトランザクションデータに保存することになる。また、新しいブロックがこのブロックに追加されるたびに、この追加が、その前のブロックの別の「確認」としてカウントされている。例えば、トランザクションがブロック502内において含まれており、且つ、ブロックチェーンの長さが507ブロックである場合には、これは、トランザクションが、(ブロック507〜502に対応する)5回の確認を有することを意味している。トランザクションが有する確認が多いほど、攻撃者による変更が困難になる。
【0038】
いくつかの実施形態においては、例示用のブロックチェーン資産システムは、パブリックキー暗号法を利用しており、この場合には、1つのパブリックキー及び1つのプライベートキーという、2つの暗号キーが生成される。パブリックキーは、アカウント番号であると考えることが可能であり、且つ、プライベートキーは、所有権証明書であると考えることができる。例えば、ビットコインワレットは、パブリック及びプライベートキーの集合体である。特定の資産アドレスと関連する資産(例えば、デジタル通貨、現金資産、株式、エクイティ、債券)の所有権は、そのアドレスに属するプライベートキーの知識によって実証することができる。例えば、しばしば、「ビットコインクライアントソフトウェア」と呼称される、ビットコインワレットソフトウェアは、所与のユーザーがビットコインの取引を実行することを許容している。ワレットプログラムは、プライベートキーを生成及び保存すると共に、ビットコインネットワーク上においてピアと通信している。
【0039】
ブロックチェーントランザクションにおいて、支払者と被支払者は、そのパブリック暗号キーにより、ブロックチェーン内において識別されている。例えば、大部分の現代のビットコイン移転は、1つのパブリックキーから異なるパブリックキーへのものである。実際には、これらのキーのハッシュが、ブロックチェーン内において使用されており、且つ、「ビットコインアドレス」と呼称されている。原則的に、仮想的な攻撃者である人物Sは、その名称の代わりに、ユーザーのビットコインアドレスを使用することにより、「人物Aが人物Sに100ビットコインを支払う」というような、トランザクションをブロックチェーン台帳に単純に追加することにより、人物Aからお金を盗みうるであろう。ビットコインプロトコルは、すべての移転が支払者のプライベートキーによってデジタル署名されることを必要とすることにより、この種の盗難を防止しており、且つ、ブロックチェーン台帳に追加することができるのは、署名済みの移転のみである。人物Sは、人物Aの署名を偽造することができないことから、人物Sは、「人物Aが人物Sに200ビットコインを支払う」に等しい、エントリをブロックチェーンに追加することにより、人物Aを騙すことができない。同時に、だれもが、人物Aの署名を彼/彼女のパブリックキーを使用することによって検証することが可能であり、且つ、従って、彼/彼女は、彼/彼女が支払者であるすべてのトランザクションをブロックチェーン内において認可している。
【0040】
ビットコイントランザクションのコンテキストにおいては、いくつかのビットコインをユーザーBに移転するべく、ユーザーAは、トランザクションに関する情報を含むレコードをノードを通じて構築することができる。レコードは、ユーザーAの署名キー(プライベートキー)によって署名されてもよく、且つ、ユーザーAのパブリック検証キー及びユーザーBのパブリック検証キーを含む。署名は、トランザクションがユーザーから到来したことを確認するべく使用されており、且つ、トランザクションが、発行の後に、だれかによって変更されることをも防止している。レコードは、新しいブロック内において同じ時間ウィンドウにおいて発生したその他のレコードとバンドルされた状態において、フルノードにブロードキャストすることができる。レコードを受け取った際に、フルノードは、ブロックチェーンシステム内においてそれまでに発生したすべてのトランザクションの台帳にレコードを内蔵すること、上述のマイニングプロセスを通じて以前に受け付けられたブロックチェーンに新しいブロックを追加すること、に関して機能することができると共に、ネットワークのコンセンサス規則に照らして追加されたブロックを検証することができる。
【0041】
UTXO(Unspent Transaction Output)モデル及びアカウント/残高モデルは、ブロックチェーントランザクションを実装するための2つの例示用のモデルである。UTXOは、ブロックチェーンオブジェクトモデルである。UTXOの下においては、資産は、新しいトランザクションにおいて入力として使用されうる、未使用のブロックチェーントランザクションの出力によって表されている。例えば、移転対象であるユーザーAの資産は、UTXOの形態を有することができる。資産を使用(取引)するには、ユーザーAは、プライベートキーによってサインオフしなければならない。ビットコインは、UTXOモデルを使用したデジタル通貨の一例である。有効なブロックチェーントランザクションのケースにおいては、更なるトランザクションを実現するべく、未使用の出力を使用することができる。いくつかの実施形態においては、二重使用及び不正行為を防止するべく、更なるトランザクションにおいて使用されうるのは、未使用の出力のみである。これを理由として、ブロックチェーンに対する入力は、トランザクションが発生した際に削除される一方で、同時に、出力がUTXOの形態で生成されている。これらの未使用のトランザクション出力は、将来のトランザクションを目的として、(例えば、デジタル通貨ワレットを有する人物などのプライベートキーの保持者によって)使用することができる。
【0042】
その一方で、アカウント/残高モデル(或いは、アカウントに基づいたトランザクションモデルとも呼称される)は、それぞれのアカウントの残高をグローバルな状態として追跡している。使用するトランザクション金額以上であることを確認するべく、アカウントの残高がチェックされている。以下、イーサリアムにおいてアカウント/残高モデルが機能している方式の一例を提供する。
【0043】
1.アリスは、5イーサをマイニングを通じて取得する。これは、システム内においては、アリスが5イーサを有していると記録される。
【0044】
2.アリスは、ボブに1イーサを付与することを所望しており、従って、システムは、まず、1イーサをアリスのアカウントから控除し、従って、アリスは、いまや、4イーサを有している。
【0045】
3.次いで、システムは、ボブのアカウントを1イーサだけ増大させる。システムは、ボブが、当初、2イーサを有していたことを知っており、従って、ボブの残高は、3イーサに増大される。
【0046】
イーサリアムにおける記録の維持は、銀行におけるものに類似しうる。よく似たものが、ATM/デビットカードの使用である。銀行は、それぞれのデビットカードが有している金額を追跡しており、且つ、ボブがお金を使う必要がある際に、銀行は、トランザクションを承認する前に、ボブが十分な残高を有していることを確認するべく、その記録をチェックしている。
【0047】
ブロックチェーン及びその他の類似の台帳は、完全にパブリック状態にあることから、ブロックチェーン自体は、プライバシー保護を有してはいない。P2Pネットワークのパブリック特性は、その使用者が名称によって識別されない一方で、個人及び企業に対するトランザクションのリンキングが可能であることを意味している。例えば、国境に跨った送金においては、或いは、サプライチェーンにおいては、トランザクション金額は、極めて高度なレベルのプライバシー保護値を有しており、その理由は、トランザクション金額情報により、トランザクションパーティの特定の場所及びアイデンティティを推定することができるからである。トランザクションの主題は、例えば、お金、トークン、デジタル通貨、契約、証書、医療の記録、顧客の詳細、株式、債券、エクイティ、又はデジタルの形態において記述されうる任意のその他の資産を有することができる。UTXOモデルは、例えば、Monero及びゼロ知識暗号法Zcashにおけるリング署名を通じて、匿名性をトランザクション金額に提供しうるが、トランザクション金額は、アカウント/残高モデルの下においては、保護されていない状態に留まっている。従って、本開示によって対処されている技術的問題は、トランザクション金額のプライバシーなどの、オンライン情報を保護する方式である。このようなトランザクションは、アカウント/残高モデルの下のものであってもよい。
【0048】
いくつかの既存の技術は、トランザクション金額を暗号化するべく、且つ、アカウント/残高モデルを置換するべく、Pedersenコミットメント方式を使用することを提案している。この方式の下においては、送信者は、トランザクション金額及びトランザクション金額のPedersenコミットメントに対応するランダム数をブロックチェーンとは切り離された状態の保護されたチャネルを通じて被支払者に送信している。被支払者は、ランダム数がトランザクションコミットメントとマッチングしているかどうかを検証し、且つ、ローカルな保存を実行している。例えば、アカウント/残高モデルの下においては、アカウントは、マージされるのではなく、集計される、資産を維持するためのワレット(アカウント)として取り扱うことができる。それぞれの資産は、1つの資産タイプ(例えば、暗号通貨)に対応していてもよく、且つ、アカウントの残高は、資産値の合計である。同一タイプの資産でさえ、マージされない。トランザクションにおいては、移転資産の受領者を規定することができると共に、トランザクションに資金供給するべく、対応する資産をワレットから除去することができる。ブロックチェーンノードは、支払ワレットが、トランザクションをカバーするための十分な1つ又は複数の資産を有していることを検証し、且つ、次いで、ノードが、支払ワレットから移転される資産を削除し、且つ、対応する資産を受領者ワレットに追加している。
【0049】
但し、このような方式には、限界が依然として存在している。第1に、この方式は、ランダム数及び暗号化済みのアカウント残高に対応するプレーンテキスト残高を管理するために、ユーザーが永続的な保存をローカルに維持することを必要としていると共に、管理の実装が複雑であり、第2には、単一のローカルノード内におけるブラインディングファクタ(例えば、ランダム数)及び「Pedersen資産」に対応するプレーンテキスト残高の保存が失われやすい又は破壊されやすい一方で、アカウント残高の頻繁な変化に起因して、マルチノードのバックアップ保存の実現が困難である。
【0050】
本開示において提示されているシステム及び方法は、上述の限界を克服することができると共に、コミットメント方式におけるトランザクション金額、資産値、及びブラインディングファクタ用の安定したプライバシー保護を実現することができる。これを目的として、ランダム数及びプレーンテキスト残高を暗号化/暗号解読し、これにより、便利な管理を提供するべく、Diffie−Hellman(DH)キー交換プロトコルによって取得された対称キーを使用することができる。更には、ブロックチェーン内において暗号化済みの情報を保存することにより、コミットメント方式におけるトランザクション金額、資産値、及びブラインディングファクタが、容易に失われない、又は改竄されない、ことが保証されている。
【0051】
本開示の図について説明する前に、まずは、Pedersenコミットメント及びDiffie−Hellman(DH)キー交換プロトコルについて説明する。
【0052】
いくつかの実施形態においては、コミットメント方式(例えば、Pedersenコミットメント)は、特定の値a(例えば、トランザクション金額、資産値、キーパラメータ)を以下のように暗号化することができる。
【0054】
ここで、rは、隠蔽を提供するランダムなブラインディングファクタであり(或いは、この代わりに、バインディングファクタとも呼称される)、G及びHは、楕円曲線の公的に合意されたジェネレータ/ベースポイントであると共に、ランダムに選択されてもよく、snは、コミットメントの値であり、且つ、C(sn)は、コミットメントとして利用されると共に相手方に付与される曲線値であり、且つ、Hは、別の曲線ポイントである。即ち、G及びHは、ノードにとって既知のパラメータであってよい。Hの「隠し事はない(nothing up my sleeve)」生成は、H=Hash(G)により、ベースポイントGを1つのポイントから別のものにマッピングするハッシュ関数によってハッシュ化することにより、生成することができる。H及びGは、所与のシステムのパブリックパラメータ(例えば、楕円曲線上のランダムに生成されたポイント)である。以上は、楕円曲線の形態におけるPedersenコミットメントの一例を提供しているが、この代わりに、Pedersenコミットメント又はその他のコミットメント方式の様々なその他の形態を使用することができる。
【0055】
コミットメント方式は、データの秘密性を維持する一方で、データがデータの送信者によって後から変更されえないように、データにコミットしている。コミットメント値(例えば、PC(a))しか知らない場合には、彼らは、コミットされている基礎をなすデータ値(例えば、a)を判定することできない。データ(例えば、a)及びブラインディングファクタ(例えば、r)の両方は、(例えば、イニシエータノードにより)後から明かしてもよく、これにより、コミットメントの受領者(例えば、コンセンサスノード)は、コミットメントを実行することが可能であり、且つ、コミットされているデータが、明かされたデータとマッチングしていることを検証することができる。ブラインディングファクタが存在している理由は、これなしには、だれかがデータの推定を試みうるからである。
【0056】
コミットメント方式は、コミットされた値が、プライベートな状態に留まる一方で、コミットしているパーティがコミットメントプロセスの必要なパラメータを明かした際には後の時点において明かされうるように、送信者(コミットしているパーティ)が値(例えば、a)に対してコミットするための1つの方法である。強力なコミットメント方式は、情報隠蔽型及び演算拘束型の両方であってもよい。隠蔽とは、所与の値aとその値のコミットメントであるPC(a)が関係付け不能であるという概念を意味している。即ち、PC(a)は、aに関するなんらの情報をも明らかにすることがない。PC(a)、G、及びHが判明している状態においても、ランダム数rに起因して、aを知ることは、ほとんど不可能である。コミットメント方式は、2つの異なる値が同一のコミットメントを結果的にもたらしうるそれなりの方法が存在していない場合には、拘束型である。Pedersenコミットメントは、離散対数の仮定の下において、完全に隠蔽型であり、且つ、演算拘束型である。更には、r、G、H、及びPC(a)が判明している状態において、PC(a)=r×G+a×Hであるかどうかを判定することにより、PC(a)を検証することができる。
【0057】
Pedersenコミットメントは、コミットメントが加算可能であり、且つ、コミットメントの組の合計は、(ブラインディングファクタの合計として設定されたブラインディングファクタを有する)データの合計に対するコミットメントと同一である、という更なるプロパティを有しており、即ち、PC(r
1,data
1)+PC(r
2,data
2)==PC(r
1+r
2,data
1+data
2);PC(r
1,data
1)−PC(r
1,data
1)==0である。換言すれば、コミットメントは、加算を維持し、且つ、可換性が適用される、即ち、Pedersenコミットメントは、基礎をなすデータが、まるで暗号化されていないかのように、数学的に操作されうる、という点において、加法的に準同形である。
【0058】
一実施形態においては、入力値を暗号化するべく使用されるPedersenコミットメントは、楕円曲線ポイントを使用することにより、構築することができる。従来、楕円曲線暗号法(EEC:Elliptic Curve Cryptography)パブキーは、グループ用のジェネレータ(G)を秘密キー(r)によって乗算することにより、生成されており、即ち、Pub=rGである。結果は、33バイトアレイとしてシリアライズすることができる。ECCパブリックキーは、Pedersenコミットメントとの関係において上述の加法的に準同形であるというプロパティを順守することができる。即ち、Pub1+Pub2=(r1+r2(mod n))Gである。
【0059】
入力値のPedersenコミットメントは、だれもが第1ジェネレータGとの関係における第2ジェネレータHの離散対数(或いは、逆もまた然り)を知らないように、グループ用の更なるジェネレータ(以下の式におけるH)を選択することにより、生成されてもよく、これは、だれもが、
xG=Hとなるようなxを知らないことを意味している。これは、例えば、Gの暗号学的ハッシュを使用してHを選択することにより、実現されてもよく、即ち、H=to_point(SHA256(ENCODE(G)))である。
【0060】
2つのジェネレータG及びHが付与された場合に、入力値を暗号化するための例示用のコミットメント方式は、commitment=rG+aHとして定義することができる。ここで、rは、秘密のブラインディングファクタであってもよく、且つ、aは、コミットされている入力値であってよい。従って、snがコミットされる場合に、上述のコミットメント方式であるPC(a)=r×G+a×Hを得ることができる。Pedersenコミットメントは、情報理論的にプライベートであり、任意のコミットメントについて、任意の金額がそのコミットメントとマッチングするようにすることになるなんらかのブラインディングファクタが存在している。Pedersenコミットメントは、任意のマッピングを演算することができないという点において、偽のコミットメントに対して演算的に安全でありうる。
【0061】
値をコミットしたパーティ(ノード)は、コミットメント方程式を完成させるオリジナルの値a及びファクタrを開示することにより、コミットメントを公開することができる。次いで、値PC(a)の公開を所望するパーティは、共有されているオリジナルの値が、実際に、当初受け取られたコミットメントPC(a)にマッチングしていることを検証するべく、コミットメントを再度演算することになる。従って、情報タイプ情報を一意の連番にマッピングし、且つ、次いで、これをPedersenコミットメントによって暗号化することにより、資産タイプ情報を保護することができる。コミットメントを生成する際に選択されるランダム数rが、だれかがコミットメント値PC(a)に従ってコミットされた資産タイプのタイプを推定することをほとんど不可能にしている。
【0062】
いくつかの実施形態においては、Diffie−Hellman(DH)キー交換は、パブリックチャネル上において暗号キーを安全に交換するための方法として使用することができる。指数キー交換とも呼称されるDHキー交換は、決して直接的に送信されることがないコンポーネントに基づいて暗号解読キーを生成するべく特定の累乗に累乗された数を使用するデジタル暗号化の方法であり、これにより、暗号解読志望者のタスクが数学的に不可能なものとなっている。
【0063】
Diffie−Hellman(DH)キー交換を実装した一例においては、二人のエンドユーザーであるアリス及びボブは、プライベートであると彼らが認知しているチャネル上において通信しつつ、pが素数であり、且つ、qがpのジェネレータとなるように、正の整数p及びqについて相互に合意している。ジェネレータqは、p未満の正の整数乗に累乗された際に、任意の2つのこのような整数について、同一の結果を決して生成しない数である。pの値は、大きくてもよいが、qの値は、通常、小さい。即ち、qは、pを法とする原始根である。
【0064】
アリス及びボブがp及びqについてプライベートに合意したら、彼らは、正の整数であるパーソナルキーa及びbを選択するが、これらは、いずれも、pを法とする素数未満であり、且つ、いずれも、ランダムに生成することができる。いずれのユーザーも、自身のパーソナルキーをだれにも明かすことがなく、且つ、理想的には、彼らは、これらの数を記憶しており、従って、これらを書き留めたり、或いは、これらをどこかに保存したりしない。次に、アリス及びボブは、次式に従って、自身のパーソナルキーに基づいて、パブリックキーであるa
*及びb
*を演算すする。
【0065】
a
*=q
a mod p、及び、
b
*=q
b mod p
【0066】
二人のユーザーは、インターネット又は企業内のワイドエリアネットワーク(WAN:Wide Area Network)などの、安全ではないと仮定される通信媒体上において、自身のパブリックキーa
*及びb
*を共有することができる。これらのパブリックキーから、いずれかのユーザーにより、自身の独自のパーソナルキーに基づいて、数k1を生成することができる。
【0067】
アリスは、k1=(b
*)
a mod pという式を使用することにより、k1を演算する。
【0068】
ボブは、k1=(a
*)
b mod pという式を使用することにより、k1を演算する。
【0069】
k1の値は、上述の2つの式のいずれかに従って同一であることが判明する。但し、k1の計算において重要であるパーソナルキーa及びbは、パブリック媒体上において通信されてはいない。p、q、a
*、及びb
*によっても、a及びbを算出することは依然として非常に困難である。これは、大きな、且つ、明らかにランダムな、数であることから、潜在的なハッカーは、数百万回の試みを実施するための強力なコンピュータの支援を有する場合にも、k1を正しく推定する可能性をほとんど有してはいない。従って、二人のユーザーは、理論的には、暗号解読キーであるk1を使用することにより、自身が選択した暗号化方法により、パブリック媒体上においてプライベートに通信することができる。
【0070】
Diffe−Hellman(DH)キー交換を実装した別の例においては、すべての計算は、通常は、大きな素数を法とする乗法的グループ(例えば、古典的なDHの場合)又は楕円曲線グループ(例えば、楕円曲線Diffie−Hellmanの場合)などである、Diffie−Hellman問題が困難であると考えられる、十分なサイズを有する離散グループ内において発生している。
【0071】
取引を実行する2つのパーティの場合には、それぞれのパーティがプライベートキーa又はbを選択する。
【0072】
それぞれのパーティが、対応するパブリックキーaG又はbGを算出する。
【0073】
それぞれのパーティが、パブリックキーaG又はbGをその他のパーティに送信する。
【0074】
それぞれのパーティが、新しい共有された秘密であるa(bG)=b(aG)を算出するべく、受け取ったパブリックキーを自身の独自のプライベートキーと共に使用するが、これらは、対称キーペアの対称キーと呼称される場合がある。
【0075】
後述するように、この例示用の方法は、対称キーであるabG及びbaGを生成するべく、使用することができる。このキー交換の結果が、共有された秘密であり、これは、次いで、対称暗号化方式のキーの組を導出するべく、キー導出関数(例えば、ランダム数と資産値の連結などの、両方のパーティにとって既知であるその他の入力を使用する暗号化関数E())と共に使用することができる。或いは、この代わりに、例えば、パブリックキーg
a及びg
b並びに共有されているキーg
ab又はg
baの生成によるものなどの、様々なその他の演算方法を使用することもできる。
【0076】
トランザクションにおいては、ユーザープライバシーを保護するべく、情報保護が重要であり、且つ、トランザクション金額は、保護を欠いた情報の1つのタイプである。
図1は、様々な実施形態による情報保護用の例示用のシステム100を示している。図示のように、ブロックチェーンネットワークは、複数のノード(例えば、サーバーやコンピュータなどの内部において実装されたフルノード)を有する。ある種のブロックチェーンプラットフォーム(例えば、NEO)の場合には、特定レベルの投票権を有するフルノードがコンセンサスノードと呼称される場合があり、これらは、トランザクション検証の責任を担っている。本開示においては、フルノード、コンセンサスノード、又はその他の等価なノードがトランザクションを検証することができる。
【0077】
また、
図1に示されているように、ユーザーA及びユーザーBは、トランザクションを実行するべく軽量ノードとして機能する、ラップトップ及び携帯電話機などの、対応する装置を使用することもできる。例えば、ユーザーAは、ユーザーAのアカウント内のなんらかの資産をユーザーBのアカウントに移転することにより、ユーザーBとの間において取引を実行することを所望しうる。ユーザーA及びユーザーBは、トランザクションのための適切なブロックチェーンソフトウェアがインストールされている対応する装置を使用することができる。ユーザーAの装置は、受領者ノードBと呼称されるユーザーBの装置との間においてトランザクションを開始するイニシエータノードAと呼称することができる。ノードAは、ノード1との間の通信を通じてブロックチェーンにアクセスすることができると共に、ノードBは、ノード2との間の通信を通じてブロックチェーンにアクセスすることができる。例えば、ノードA及びノードBは、ブロックチェーンへのトランザクションの追加を要求するべく、トランザクションをノード1及びノード2を通じてブロックチェーンにサブミットすることができる。ブロックチェーンとは切り離された状態において、ノードA及びノードBは、その他の通信のチャネル(例えば、ノード1及び2を経由しない通常のインターネット通信)を有することができる。
【0078】
図1のノードのそれぞれは、プロセッサと、ノード(例えば、プロセッサ)が本明細書において記述されている情報保護用の様々なステップを実行するようにするべく、プロセッサによって実行される命令を保存する一時的はないコンピュータ可読ストレージ媒体と、を有することができる。それぞれのノードには、その他のノード及び/又はその他の装置と通信するべく、ソフトウェア(例えば、トランザクションプログラム)及びハードウェア(例えば、配線、無線接続)をインストールすることができる。ノードのハードウェア及びソフトウェアの更なる詳細については、
図5を参照して後述する。
【0079】
図2は、様々な実施形態による、送信者ノードA、受領者ノードB、及び1つ又は複数の検証ノードの間におけるトランザクション及び検証用の例示用のステップを示している。以下において提示されている動作は、例示となることを意図したものである。実装形態に応じて、例示用のステップは、様々な順序において、或いは、並行的に、実行される、更に多くの数の、更に少ない数の、或いは、代替的な、ステップを含むことができる。
【0080】
様々な実施形態においては、トランザクションパーティ(送信者ノードA及び受領者ユーザーB)のアカウントは、アカウント/残高モデルのために構成されている。ユーザーA及びユーザーBは、自身のラップトップや携帯電話機などのような、1つ又は複数の装置を介して、トランザクションを実行するべく、以下のステップを実行することができる。装置には、様々なステップを実行するべく、適切なソフトウェア及びハードウェアをインストールすることができる。それぞれのアカウントは、暗号学的なプライベートキー(秘密キー)−パブリックキーのペアと関連付けることができる。プライベートキーは、SK=xとして表記されてもよく、且つ、パブリックキーは、PK=xGとして表記されてもよく、ここで、Gは、グループのジェネレータである。それぞれのアカウントは、それぞれが(V=PC(r,v),E(K,r,v))として表記される、様々な資産を収容していてもよく、ここで、vは、資産の額面価額を表し、Vは、額面価額vのPedersenコミットメントを表し、rは、ブラインディングファクタ(例えば、ランダム数)であり、PC()は、Pedersenコミットメントアルゴリズムであり、E()は、暗号化アルゴリズム(例えば、対称キー暗号化アルゴリズム)であり、且つ、Kは、暗号化キーである。一例においては、それぞれの資産は、(V=PC(r,v),E(K,r||v))として表記され、この場合に、||は、連結を表している。また、それぞれの資産は、資産のソース情報などの、列挙されているもの以外の情報を含むこともできる。
【0081】
一例においては、ユーザーAが、ブロックチェーン検証されたトランザクションにおいて、ユーザーBに対する金額tの取引を成功的に実行する前の、Aのアカウント及びBのアカウントのアドレス及び資産は、以下のとおりである。
【0082】
Aのアカウントの場合(アカウントA):
アドレス:(SK_A=a,PK_A=aG)
それぞれ、値a_1〜a_mの資産A_1〜A_mは、次のように表記される。
(A_1=PC(r_{a_1},a_1),E(K_A,r_{a_1}||a_1)),
(A_2=PC(r_{a_2},a_2),E(K_A,r_{a_2}||a_2)),
...
(A_m=PC(r_{a_m},a_m),E(K_A,r_{a_m}||a_m))
【0083】
Bのアカウントの場合(アカウントB):
アドレス:(SK_B=b,PK_B=bG)
それぞれ、値b_1〜b_nの資産B_1〜B_nは、次のように表記される。
(B_1=PC(r_{b_1},b_1),E(K_B,r_{b_1}||b_1)),
(B_2=PC(r_{b_2},b_2),E(K_B,r_{b_2}||b_2)),
...
(B_n=PC(r_{b_n},b_n),E(K_B,r_{b_n}||b_n))
【0084】
いくつかの実施形態においては、キー生成は、アカウント/残高モデルの下において、それぞれのアカウントごとに、ecp256k1という楕円曲線に基づいたものであってよい。例えば、イーサリアムのecp256k1上において、1〜2
256−1の間の任意の数が、有効なプライベートキーSKであってよい。良好なライブラリは、十分なランダム性を考慮することにより、プライベートキーを生成する。イーサリアムは、プライベートキーSKの長さが256ビットとなることを必要としている。パブリックキーの生成は、ECC暗号法のグループ動作を使用することにより、実行される。パブリックキーPKを導出するべく、プライベートキーをGによって乗算することができる。パブリックキーPKを導出するべく使用される乗算は、ECC乗算(楕円曲線ポイント乗算)であり、これは、通常の乗算とは異なっている。Gは、ECC暗号法のドメインパラメータの1つであるジェネレータポイントである。Gは、ecp256k1の固定値を有することができる。アドレスは、例えば、パブリックキーPKのハッシュの最後の20バイトであってよい。
【0085】
いくつかの実施形態においては、ステップ201において、ノードAは、ノードBとの間においてトランザクションを開始することができる。例えば、ユーザーA及びユーザーBは、トランザクション金額tをユーザーAのアカウントAからユーザーBのアカウントBにネゴシエートすることができる。アカウントA及びアカウントBは、本明細書において記述されている「ワレット」に対応しうる。アカウントAは、1つ又は複数の資産を有することができる。資産は、例えば、お金、トークン、デジタル通貨、契約、証書、医療の記録、顧客の詳細、株式、債券、エクイティ、又はデジタルの形態において記述されうる任意のその他の資産を有することができる。アカウントBは、1つ又は複数の資産を有していてもよく、或いは、資産を有していなくてもよい。それぞれの資産は、ブロックチェーンのブロック内において保存されている様々なブロックチェーン情報と関連付けられていてもよく、ブロックチェーン情報は、例えば、資産タイプを表すNoteType、資産の一意の識別情報を表すNoteID、資産値のコミットメント(例えば、Pedersenコミットメント)値を表すコミットメント値、ランダム数及び資産値の暗号化などを有する。
【0086】
アカウントAとの関係において記述されているように、いくつかの実施形態においては、A_1〜A_mは、それぞれ、資産値a_1〜a_m及びランダム数r_1〜r_mに対応している。ランダム数r_1〜r_mに基づいて、ノードAは、暗号化済みのコミットメント値を取得するべく、アカウントA内の資産値をコミットメント方式(例えば、Pedersenコミットメント)に対してコミットすることができる。例えば、暗号化済みのコミットメント値は、PC_1〜PC_mであってよく、この場合に、PC_i=PC(r_{a_i},a_i)=r_{a_i}×G+a_i×Hであり、この場合に、G及びHは、既知のパラメータであり、且つ、iは、1〜mである。第1フィールドであるPC(...)に加えて、それぞれの資産は、上述のように、第2フィールドE(...)とも関連付けられている。第2フィールドであるE(...)は、キーK_Aによって暗号化された対応するランダム数の暗号化及び資産値の暗号化を表すことができる。例えば、暗号化は、E(K_A, r_{a_i}||a_i))であってよい。それぞれの資産ごとのPC(...)及びE(...)は、以前のトランザクションから継承されてもよい。同一のメカニズムが、アカウントB及びその資産に適用されてもよい。
【0087】
いくつかの実施形態においては、K_Aは、様々なタイプの暗号化キーを有することができる。例えば、K_Aは、更に後述するa
*PK_A=aaGであってもよく、且つ、K_Bは、更に後述するa
*PK_B=abGであってもよく、ここで、a、b、及びGは、ECC乗算によって乗算することができる。
【0088】
いくつかの実施形態においては、トランザクション金額tを充足するべく、ユーザーAは、少なくともtだけ、アカウントAからの1つ又は複数の資産の集計された値を利用してもよい。例えば、
図1を参照すれば、ノードAは、このトランザクションのために、資産A_1及びA_2を選択することができる。ノードAは、資産PC(r_1,a_1)及びPC(r_2,a_2)をノード1から読み取ることができる。ランダム数r_1及びr_2がノードAに既知である状態において、ノードAは、a_1及びa_2の合計がトランザクション金額t未満ではないことを保証するために、資産値a_1及びa_2を取得するべく、読み取られた資産PC(r_1,a_1)及びPC(r_2,a_2)を暗号解読することができる。様々なレートに基づいて、アカウント内において、異なる資産を互いに交換することができる。
【0089】
いくつかの実施形態においては、tを超過する、選択された資産値の金額は、存在している場合には、変化としてyに設定されている。例えば、ノードAは、変化y=a_1+a_2−tを判定することができる。ノードAは、t及びyのPedersenコミットメントを生成するべく、ランダム数r_t及びr_yをブラインディングファクタとして選択してもよく、即ち、T=PC(r_t,t)であり、Y=PC(r_y,y)である。即ち、ノードAは、tのランダム数r_t及びyのランダム数r_yを生成することができる。ノードAは、コミットメント値T=(PC(r_t,t)を取得するべく、t及びr_tをコミットメント方式(例えば、準同形暗号化)に対してコミットすることが可能であり、且つ、コミットメント値Y=(PC(r_y,y)を取得するべく、y及びr_yをコミットメント方式(例えば、準同形暗号化)に対してコミットすることができる。
【0090】
更には、いくつかの実施形態においては、ノードAは、対称キーペアの第1キーa
*PK_B=abGを生成すると共に、別のキーa
*PK_A=aaGを生成している。ノードAは、暗号化E(abG,r_t||t)を付与する、(r_t||t)を暗号化するべく、第1キーabGを使用し、且つ、暗号化E(aaG,r_y||y)を付与する、(r_y||y)を暗号化するべく、キーaaGを使用する。
図3A及び
図3Bは、この例に準拠したものでありうる。ノードAによる暗号化E(abG,r_t||t)の取得の代替肢として、ユーザーAは、トランザクション情報と共に、r_t及びtをノードBに送信し、これにより、ノードBが、(r_t||t)を暗号化するべく、対称キーペアの第2キーb*PK_A=baGを生成するようにしてもよい。ノードBは、ノードAによる検証を許容するべく、暗号化をノードAに送信することになろう。
図4A及び
図4Bは、この例に準拠したものでありうる。本開示の様々な例において、連結が使用されているが、暗号化関数又はその他の動作のために、入力、出力、又はその他のパラメータの代替的な組合せを使用することができる。
【0091】
更には、いくつかの実施形態においては、ノードAは、PC(r
t,t)の値及びPC(r
y,y)の値が、それぞれ、有効な範囲内にあるかどうかをブロックチェーンノードに対して証明するべく、範囲証明RPを生成することができる。例えば、PC(r
t,t)の有効な値を得るべく、トランザクション金額tは、有効範囲[0,2
n−1]内にあってよく、且つ、PC(r
y,y)の有効な値を得るべく、変化yは、有効範囲[0,2
n−1]内にあってよい。一実施形態においては、ノードAは、ブロックチェーンノード(例えば、コンセンサスノード)が後のステップにおいてトランザクション金額t及び変化yが有効な範囲内にあるかどうかを範囲証明に基づいて検証するべく、(r_y,y,Y,r_t,t,T)に関係する範囲証明RPを生成するために、ブロック証明技法を使用することができる。範囲証明は、例えば、BulletproofやBorromeanリング署名などを有することができる。
【0092】
ステップ202において、ノードAは、トランザクション情報を(例えば、ブロックチェーンとは切り離された、保護されたチャネルを通じて)ノードBに送信することができる。送信されるトランザクション情報は、例えば、コミットメント値T=PC(r_t,t)、コミットメント値Y=PC(r_y,y)、暗号化E(abG,r_t||t)、暗号化E(aaG,r_y||y)、範囲証明RPなどを有することができる。コミットメント値Y=PC(r_y,y)、暗号化E(aaG,r_y||Y)、及び範囲証明RPは、任意選択であってよく、その理由は、ノードBは、アカウントAに返送される変化に注意しなくてもよいからである。いくつかの実施形態においては、ブロックチェーンとは切り離された通信チャネルを介した送信は、トランザクション情報がブロックチェーン内に記録されることを防止することが可能であると共に、送信者ノードA及び受領者ノードB以外のノードがトランザクション情報を取得することを防止することができる。E(aaG,r_y||y)は、ノードBに送信される必要はないであろうが、ユーザーAが変化Yを使用するために将来において必要とされる場合があり、その理由は、変化をアカウントAに返す必要があるからである。
【0093】
ステップ203において、ノードBは、ランダム数r_t、トランザクション金額t、及びコミットメント値Tを検証することができる。いくつかの実施形態においては、ノードBは、対称キーペアの第2キーb
*Pk_A=baGを生成することができると共に、暗号化E(abG,r_t||t)を暗号解読してr_t||tを取得するべく、第2キーbaGを使用することができる。r_t||tから、ノードBは、r_t及びtを取得することができると共に、次いで、r_t及びtがT=PC(r_t,t)とマッチングしているかどうかを検証することができる。即ち、ノードBは、Pedersenコミットメントアルゴリズムに従って、ランダム数r_t及びトランザクション金額tに基づいて、コミットメント値T=PC(r_t,t)が正しいかどうかを検証することができる。マッチング/検証に失敗した場合には、ノードBは、トランザクションを拒絶してもよく、且つ、マッチング/検証に成功した場合には、ノードBは、ステップ204において、ノードAに回答するべく、トランザクションに署名することができる。
【0094】
ステップ204において、ノードBは、署名SIGBを生成するべく、ユーザーBのプライベートキーSK_Bによってトランザクションに署名することができる。署名は、楕円曲線デジタル署名アルゴリズム(ECDSA:Elliptic Curve Digital Signature Algorithm)などの、デジタル署名アルゴリズム(DSA:Digital Signature Algorithm)に準拠したものであってよく、これにより、署名の受信者は、署名されたデータを認証するべく、署名者のパブリックキーによって署名を検証することができる。署名SIGBは、受領者ノードBがトランザクションに合意していることを通知している。
【0095】
ステップ205において、ノードBは、署名SIGBと共に、署名済みのトランザクションをノードAに返送することができる。
【0096】
ステップ206において、SIGBの検証に失敗した場合には、ノードAは、トランザクションを拒絶することができる。SIGBの検証に成功した場合には、ノードAは、署名SIGAを生成するべく、ユーザーAのプライベートキーSK_Aによってトランザクションに署名することができる。同様に、この署名も、デジタル署名アルゴリズム(DSA)に準拠したものであってもよい。一実施形態においては、ノードAは、署名SIGAを生成するべく、ユーザーAのプライベートキーにより、(E(abG, r_t||t);E(aaG,r_y||y);Y;T;RP)に署名することができる。
【0097】
ステップ207において、ノードAは、トランザクションをブロックチェーンにサブミットし、これにより、ブロックチェーンノードが、トランザクションを検証し、且つ、トランザクションをブロックチェーンに追加しうるかどうかを判定する、ようにすることができる。一実施形態においては、ノードAは、トランザクションを実行するべく、ノード1を介して、トランザクション(E(abG,r_t||t);E(aaG,r_y||y);Y;T;RP;SIGA;SIGB)をブロックチェーンにサブミットすることができる。トランザクションは、更なるパラメータを有していてもよく、或いは、列挙されたパラメータのすべてを有していなくてもよい。トランザクションは、検証のために、ブロックチェーン内の1つ又は複数のノード(例えば、コンセンサスノード)にブロードキャストすることができる。検証に成功した場合には、トランザクションは、ブロックチェーンに追加される。検証に失敗した場合には、トランザクションは、ブロックチェーンへの追加が拒絶される。
【0098】
ステップ208〜213において、1つ又は複数ノード(例えば、コンセンサスノード)は、サブミットされたトランザクションの署名、範囲証明、及びその他の情報を検証している。検証に失敗した場合には、ノードは、トランザクションを拒絶する。検証に成功した場合には、ノードは、トランザクションを受け付け、ユーザーAのアカウント及びユーザーBのアカウントを別個に更新する。
【0099】
いくつかの実施形態においては、トランザクションを実行するべく、様々なブロックチェーンノードにより、トランザクション情報を検証することができる。トランザクション情報は、トランザクションアドレスTXID、1つ又は複数の署名、入力、及び出力を有することができる。TXIDは、トランザクションコンテンツのハッシュを有することができる。署名は、送信者及び受領者による暗号キー署名を有することができる。入力は、ブロックチェーン内の送信者のアカウントのアドレスやトランザクションのために送信者のブロックチェーンアカウントから利用される1つ又は複数の資産などを有することができる。出力は、ブロックチェーン内の受領者のアカウントのアドレス、1つ又は複数の受領者資産の1つ又は複数の資産タイプ、1つ又は複数の受領者資産の1つ又は複数のコミットメント値などを有することができる。入力及び出力は、表の形態におけるインデックス付けされた情報を有することができる。いくつかの実施形態においては、NoteID値の値は、「TXID+出力における資産のインデックス」であってよい。
【0100】
いくつかの実施形態においては、ブロックチェーンの1つ又は複数のノードは、サブミットされたトランザクション(E(abG,r_t||t);E(aaG,r_y||y);Y;T;RP;SIGA;SIGB)を検証することができる。
【0101】
ステップ208において、ノードは、トランザクションが、二重使用防止メカニズム又はリプレイ攻撃防止メカニズムを使用することにより、実行されたかどうかを検証することができる。トランザクションが実行されている場合には、ノードは、トランザクションを拒絶してもよく、さもなければ、方法は、ステップ209に進むことができる。
【0102】
ステップ209において、ノードは、(例えば、それぞれ、Aのパブリックキー及びBのパブリックキーに基づいて)署名SIGA及びSIGBをチェックすることができる。署名のいずれかが誤っている場合には、ノードは、トランザクションを拒絶してもよく、さもなければ、方法は、ステップ210に進むことができる。
【0103】
任意選択のステップ210において、ノードは、資産タイプが一貫性を有するかどうかを検証することができる。例えば、ノードは、A_1〜A_2のNoteType内の資産タイプが、トランザクション金額tの1つ又は複数の資産タイプと一貫性を有しているかどうかを検証することができる。資産タイプのいずれかが一貫性を有していない場合には、ノードは、トランザクションを拒絶してもよく、さもなければ、方法は、ステップ211に進むことができる。いくつかの実施形態においては、ワレット内のオリジナルの資産タイプが、交換レートに基づいて別のタイプに変換済みであってもよく、従って、このステップがスキップされてもよい。
【0104】
ステップ211において、ノードは、PC(r
t,t)の値及びPC(r
y,y)の値を検証するべく、範囲証明RPをチェックすることができる。一実施形態においては、ノードは、トランザクション金額tがゼロ以上であるかどうか、並びに、変化yがゼロ以上であるかどうか、を検証するべく、範囲証明RPをチェックすることができる。検証に失敗した場合には、ノードは、トランザクションを拒絶してもよく、さもなければ、方法は、ステップ212に進むことができる。
【0105】
ステップ212において、ノードは、トランザクションの入力と出力が一貫性を有しているかどうかをチェックすることができる。チェックに失敗した場合には、ノードは、トランザクションを拒絶してもよく、さもなければ、方法は、ステップ213に進むことができる。
【0106】
ステップ213において、ノードは、ノードAがトランザクションのために利用される1つ又は複数の資産を有しているかどうかを検証することができる。一実施形態においては、ノードは、アカウントAに対応する情報などの、ブロックチェーン内において保存されている情報に基づいて、この検証を実行することができる。情報は、すべての資産の以前のトランザクション情報を有することができる。従って、ノードは、アカウントAがトランザクション用の取引用資産を有しているかどうかを判定することができる。判定が、「いいえ」である場合には、ノードは、トランザクションを拒絶してもよく、さもなければ、方法は、ステップ214に進むことができる。
【0107】
ステップ214において、ノードは、アカウントA及びアカウントBを更新することができる。例えば、ノードは、金額tの取引用の資産をアカウントAから除去することができると共に、これをアカウントBに追加することができる。準同形のプロパティに基づいて、Y=(PC(r_y,y)であり、且つ、ノード1は、r_yを知っていると共にブロックチェーンからのコミットメント値Yにアクセスしうることから、ノード1は、資産値yを取得するべくYを暗号解読することが可能であると共に、これをアカウントAに返すことができる。ノード2は、ステップ202において、ノード1からランダム数r_tを取得し、且つ、ブロックチェーンからコミットメント値Tを取得することができる。従って、ノード2は、資産値tを取得するべくTを暗号解読することが可能であり、且つ、これをアカウントBに追加することができる。
【0108】
一例においては、アカウントA及びアカウントBへの更新の後に、アカウントAは、利用された資産に対する変化yを受け取ると共に、その利用されていない資産を受け取っている。例えば、利用された資産は、アカウントAに返された変化yを有するトランザクションにおいて除去されたA_1及びA_2であってもよく、且つ、利用されていない資産は、A_3、...、A_mである。アカウントBは、トランザクション金額tを受け取ると共に、そのオリジナルの資産(例えば、B_1、...、B_n)を受け取る。Aのアカウント及びBのアカウント内の資産は、以下のとおりである。
【0109】
Aのアカウント(アカウントA)の場合に、更新済みの資産は、次式のように表記される。
【0110】
(Y=PC(r_y,y),E(aaG,r_y||y)),
...
(A_m=PC(r_{a_m},a_m),E(K_A,r_{a_m}||a_m))
【0111】
Bのアカウント(アカウントB)の場合に、更新済みの資産は、次式のように表記される。
【0112】
(B_1=PC(r_{b_1},b_1),E(K_B,r_{b_1}||b_1)),
(B_2=PC(r_{b_2},b_2),E(K_B,r_{b_2}||b_2)),
...
(B_n=PC(r_{b_n},b_n),E(K_B,r_{b_n}||b_n)),
(T=PC(r_t,t),E(abG,r_t||t))
【0113】
本開示は、それぞれ、送信者及び受領者を示すべく、ノードA/ユーザーA及びノードB/ユーザーBを使用しているが、送信者及び受領者は、同一のノード/ユーザーであってもよい。例えば、トランザクションの変化y(アカウントA内の利用された合計資産−トランザクション金額)は、トランザクションの送信者に返送することができる。従って、本明細書において記述されているノードBによって実行される様々なステップは、この代わりに、ノードAによって実行されてもよい。
【0114】
図3Aは、本開示の様々な実施形態による情報保護用の例示用の方法300のフローチャートを示している。方法300は、
図1のシステム100の1つ又は複数のコンポーネント(例えば、ノードA、ノード1、ノードA及びノード1の組合せ)によって実装することができる。方法300は、プロセッサと、システム又は装置(例えば、プロセッサ)が方法300を実行するようにするべく、プロセッサによって実行される命令を保存する一時的ではないコンピュータ可読ストレージ媒体(例えば、メモリ)と、を有するシステム又は装置(例えば、コンピュータ、サーバー)によって実装することができる。以下において提示されている方法300の動作は、例示となることを意図したものである。実装形態に応じて、例示用の方法300は、様々な順序において、或いは、並行して、実行される、更に多くの数の、更に少ない数の、或いは、代替的な、ステップを含むことができる。
【0115】
ブロック301は、トランザクションコミットメント値Tを取得するべく、トランザクションのトランザクション金額tをコミットメント方式によってコミットするステップを有しており、コミットメント方式は、少なくともトランザクションブラインディングファクタr_tを有する。例えば、上述のように、T=PC(r_t,t)である。いくつかの実施形態においては、コミットメント方式は、少なくともトランザクションブラインディングファクタr_tに基づいた、且つ、トランザクション金額tが、コミット済みの値である状態における、Pedersenコミットメントを有する。
【0116】
ブロック302は、対称キーペアの第1キーを生成するステップを有する。例えば、上述のように、SK_A=aであり、PK_B=bGであり、且つ、第1キーは、a
*PK_B=abGであってもよい。いくつかの実施形態においては、第1キー及び第2キーを生成するステップは、Diffie−Hellman(DH)キー交換プロトコルの下において、トランザクションの送信者のプライベートキーSK_A及び受領者のパブリックキーPK_Bに基づいて、第1キー及び第2キーを生成するステップを有する。
【0117】
ブロック303は、トランザクションブラインディングファクタr_t及びトランザクション金額tの組合せ(例えば、連結)を第1キーによって暗号化するステップを有する。例えば、上述のように、ノードAは、暗号化E(abG,r_t||t)を付与する(r_t||t)を暗号化するべく、第1キーabGを使用することができる。
【0118】
ブロック304は、受領者ノードがトランザクションを検証するべく、トランザクションコミットメント値T及び暗号化済みの組合せをトランザクションの受領者と関連する受領者ノードに送信するステップを有する。いくつかの実施形態においては、トランザクションの受領者と関連する受領者ノードがトランザクションを検証するべく、トランザクションコミットメント値T及び暗号化済みの組合せを受領者ノードに送信するステップは、トランザクションコミットメント値T及び暗号化済みの組合せをトランザクションの受領者と関連する受領者ノードに送信し、これにより、受領者ノードが、受領者のプライベートキーSK_B及び送信者のパブリックキーPK_Aに基づいて対称キーペアの第2キーを生成し、トランザクションブラインディングファクタr_t及びトランザクション金額tを取得するべく暗号化済みの組合せを受領者ノードによって生成された第2キーによって暗号解読し、且つ、少なくともトランザクションコミットメント値T、トランザクションブラインディングファクタr_t、及びトランザクション金額tに基づいてトランザクションを検証するようにするステップを有する。例えば、ステップ203を参照されたい。例えば、上述のように、受領者ノードは、第2キーb
*PK_A=baGを独立的に生成してもよい。キーabG及びbaGは、対称であり、且つ、等しい。即ち、受領者ノードは、第1キーabGを送信者ノードから受け取らなくてもよく、且つ、その代わりに、受領者ノードは、abGの等価物として、第2キーbaGを独立的に生成している。
【0119】
いくつかの実施形態においては、受領者ノードが、少なくともトランザクションコミットメント値T、トランザクションブラインディングファクタr_t、及びトランザクション金額tに基づいてトランザクションを検証するようにするステップは、受領者ノードが、トランザクションコミットメント値Tがトランザクション金額tのコミットメント方式とマッチングしていないとトランザクションブラインディングファクタr_tに基づいて判定することに応答して、トランザクションを拒絶し、且つ、トランザクションコミットメント値Tがトランザクション金額tのコミットメント方式とマッチングしているとトランザクションブラインディングファクタr_tに基づいて判定することに応答して、受領者署名SIGBを生成して送信者と関連する送信者ノードに返すべくトランザクションに署名することにより、トランザクションを承認するようにするステップを有する。
【0120】
いくつかの実施形態においては、暗号化済みの組合せを受領者と関連する受領者ノードに送信するステップ(ブロック304)の前に、方法は、変化コミットメント値Yを取得するべくトランザクションの変化yをコミットメント方式によってコミットするステップであって、コミットメント方式は、少なくとも変化ブラインディングファクタr_yを有し、変化yは、トランザクションのために利用される送信者の1つ又は複数の資産からトランザクション金額tを差し引いたものである、ステップと、送信者のプライベートキーSK_A及び送信者のパブリックキーPK_Aに基づいて別のキーを生成するステップと、変化ブラインディングファクタr_y及び変化yの別の組合せを別のキーによって暗号化するステップと、を更に有する。例えば、上述のように、Y=PC(r_y,y)であり、PK_A=aであり、且つ、ノードAは、キーa
*PK_A=aaGを生成してもよく、且つ、(r_y||y)を暗号化するべく、キーaaGを使用してもよく、この結果、E(aaG,r_y||y)が得られる。
【0121】
いくつかの実施形態においては、方法は、受領者署名SIGBの受け取りに応答して、送信者署名SIGAを生成するべくトランザクションに署名することにより、トランザクションを承認するステップと、ブロックチェーンネットワーク内の1つ又は複数のノードがトランザクションを検証するべく、暗号化済みの組合せ、暗号化済みの別の組合せ、トランザクションコミットメント値T、変化コミットメント値Y、送信者署名SIGA、及び受領署名SIGBを有するトランザクションを1つ又は複数のノードにサブミットするステップと、を更に有する。更なる詳細については、ステップ208〜213を参照して上述したとおりである。
【0122】
いくつかの実施形態においては、ブロックチェーンネットワーク内の1つ又は複数のノードがトランザクションを検証するべく、暗号化済みの組合せ、暗号化済みの別の組合せ、トランザクションコミットメント値T、変化コミットメント値y、送信者署名SIGA、及び受領者署名SIGBを有するトランザクションを1つ又は複数のノードにサブミットするステップは、暗号化済みの組合せ、暗号化済みの別の組合せ、トランザクションコミットメント値T、変化コミットメント値Y、送信者署名SIGA、及び受領者署名SIGBを有するトランザクションをブロックチェーンネットワーク内の1つ又は複数のノードにサブミットし、これにより、1つ又は複数のノードが、トランザクションの検証の成功に応答して、トランザクション金額tを受領者に発行し、トランザクションのために利用された1つ又は複数の資産を除去し、且つ、変化yを送信者に発行するようにするステップを有する。更なる詳細については、ステップ214を参照して上述したとおりである。
【0123】
図3Bは、本開示の様々な実施形態による情報保護用の例示用の方法400のフローチャートを示している。方法400は、
図1のシステム100の1つ又は複数のコンポーネント(例えば、ノードB、ノード2、ノードB及びノード2の組合せなど)によって実装することができる。方法400は、プロセッサと、システム又は装置(例えば、プロセッサ)が方法400を実行するようにするべく、プロセッサによって実行される命令を保存する一時的ではないコンピュータ可読ストレージ媒体(例えば、メモリ)と、を有するシステム又は装置(例えば、コンピュータ、サーバー)によって実装することができる。以下において提示されている方法400の動作は、例示となることを意図したものである。実装形態に応じて、例示用の方法400は、様々な順序において、或いは、並行して、実行される、更に多くの数の、更に少ない数の、或いは、代替的な、ステップを含むことができる。
【0124】
ブロック401は、対称キーペアの第1キーによって暗号化されたトランザクションブラインディングファクタr_t及びトランザクション金額tの組合せを取得するステップと、トランザクションコミットメント値Tを取得するステップと、を有する。トランザクション金額tは、トランザクションコミットメント値Tを取得するべく、トランザクションの送信者と関連する送信者ノードにより、コミットメント方式によってコミットされ、コミットメント方式は、少なくともトランザクションブラインディングファクタr_tを有する。いくつかの実施形態においては、第1キーは、トランザクションの送信者のプライベートキーSK_A及びトランザクションの受領者のパブリックキーPK_Bに基づいて、送信者ノードによって生成されている。
【0125】
ブロック402は、対称キーペアの第2キーを生成するステップを有する。いくつかの実施形態においては、対称キーペアの第2キーを生成するステップは、Diffie−Hellman(DH)キー交換プロトコルの下において、トランザクションの受領者のプライベートキーSK_B及び送信者のパブリックキーPK_Aに基づいて対称キーペアの第2キーを生成するステップを有する。
【0126】
ブロック403は、トランザクションブラインディングファクタr_t及びトランザクション金額tを取得するべく、受領者と関連する受領者ノードによって生成された第2キーにより、取得された組合せを暗号解読するステップを有する。
【0127】
ブロック404は、少なくともトランザクションコミットメント値T、トランザクションブラインディングファクタr_t、及びトランザクション金額tに基づいてトランザクションを検証するステップを有する。
【0128】
ノードAにおける(r_t||t)などの組合せ(r_t,t)を暗号化するステップの代わりに、ノードAは、(r_t,t)をノードBに送信し、これにより、
図4A及び
図4Bを参照して後述するように、ノードBが組合せ(r_t,t)を暗号化するようにしてもよい。
図1〜
図3のその他のステップ及び説明は、同様に、
図4A及び
図4Bにも適用しうる。
【0129】
図4Aは、本開示の様々な実施形態による情報保護用の例示用の方法440のフローチャートを示している。方法440は、
図1のシステム100の1つ又は複数のコンポーネント(例えば、ノードA、ノード1、ノードA及びノード1の組合せ)によって実装することができる。方法440は、プロセッサと、システム又は装置(例えば、プロセッサ)が方法440を実行するようにするべく、プロセッサによって実行される命令を保存する一時的ではないコンピュータ可読ストレージ媒体(例えば、メモリ)と、を有するシステム又は装置(例えば、コンピュータ、サーバー)によって実装することができる。以下において提示されている方法440の動作は、例示となることを意図したものである。実装形態に応じて、例示用の方法440は、様々な順序において、或いは、並行して、実行される、更に多くの数の、更に少ない数の、或いは、代替的な、ステップを含むことができる。
【0130】
ブロック441は、トランザクションコミットメント値Tを取得するべく、トランザクションのトランザクション金額tをコミットメント方式によってコミットするステップを有しており、コミットメント方式は、少なくともトランザクションブラインディングファクタr_tを有する。
【0131】
ブロック442は、受領者ノードが、トランザクションを検証するべく、且つ、トランザクションブラインディングファクタr_t及びトランザクション金額tを対称キーペアの第2キーによって暗号化するべく、トランザクション金額t、トランザクションブラインディングファクタr_t、及びトランザクションコミットメント値Tをトランザクションの受領者と関連する受領者ノードに送信するステップを有する。例えば、ノードBは、T=(PC(r_t,t)であるかどうかを検証することができると共に、ノードBは、E(baG,r_t||t)を取得するべく、キーbaGによって組合せを暗号化することができる。
【0132】
ブロック443は、受領者ノードから、トランザクションブラインディングファクタr_t及びトランザクション金額tの暗号化済みの組合せ(例えば、E(baG,r_t||t)を取得するステップを有する。
【0133】
ブロック444は、暗号化済みの組合せを暗号解読してトランザクションを検証するべく、対称キーペアの第1キーを生成するステップを有する。例えば、ノードAは、E(baG,r_t||t)を暗号解読するべく、第1キーabGを生成することができると共に、r_t及びtが正しいかどうかを検証することができる。r_t及びtが送信者及び受領者ノードによって相互に検証されたら、トランザクションを検証するためにブロックチェーンにサブミットすることができる。
【0134】
図4Bは、本開示の様々な実施形態による情報保護用の例示用の方法450のフローチャートを示している。方法450は、
図1のシステム100の1つ又は複数のコンポーネント(例えば、ノードB、ノード2、ノードB及びノード2の組合せなど)によって実装することができる。方法450は、プロセッサと、システム又は装置(例えば、プロセッサ)が方法450を実行するようにするべく、プロセッサによって実行される命令を保存する一時的ではないコンピュータ可読ストレージ媒体(例えば、メモリ)と、を有するシステム又は装置(例えば、コンピュータ、サーバー)によって実装することができる。以下において提示されている方法450の動作は、例示となることを意図したものである。実装形態に応じて、例示用の方法450は、様々な順序において、或いは、並行して、実行される、更に多くの数の、更に少ない数の、或いは、代替的な、ステップを含むことができる。
【0135】
ブロック451は、トランザクションのトランザクション金額t、トランザクションブラインディングファクタr_t、及びトランザクションコミットメント値Tを取得するステップを有する。
【0136】
ブロック452は、取得されたトランザクション金額t、取得されたトランザクションブラインディングファクタr_t、及び取得されたトランザクションコミットメント値Tに基づいて、トランザクションを検証するステップを有する。
【0137】
ブロック453は、トランザクションの検証の成功に応答して、暗号化済みの組合せ(例えば、E(baG,r_t||t))を取得するべく、トランザクションブラインディングファクタr_t及びトランザクション金額tを対称キーペアの第2キーによって暗号化するステップを有する。
【0138】
ブロック454は、暗号化済みの組合せをトランザクションの送信者と関連する送信者ノードに送信するステップを有する。
【0139】
図示のように、演算技術の様々な改善を通じて、トランザクション金額のプライバシーを保護することができる。例えば、アカウント構造は、資産値のPedersenコミットメントと関連する第1フィールド(例えば、第1フィールドは、PC(r_{a_i},a_i)であり、iは、1〜mである)及びPedersenコミットメント及び資産値用のランダム数と関連する第2フィールド(例えば、第2フィールドは、E(...)である)などの、1つ又は複数のフィールドを有する。また、第1フィールド及び第2フィールドは、トランザクションステップにおいても使用され、且つ、ブロックチェーン内において保存されている。
【0140】
別の例の場合には、対称キーは、それぞれのPedersenコミットメント及び対応する資産値のランダム数を暗号化するべく、且つ、暗号化済みのランダム数及び資産値を含むトランザクションをブロックチェーン内において保存するべく、使用されている。この方式は、このようなランダム数のローカル管理を不要としており、且つ、分散型の且つ一貫性を有するブロックチェーン保存に基づいてセキュリティを促進している。
【0141】
更には、DHキー交換プロトコル又は代替プロトコルの下においては、直接的な通信が存在していない場合にも、ユーザーA及びユーザーBは、コミットメント及び資産値のランダム数を暗号化/暗号解読するべく、共通秘密(対称キーペアabG及びbaG)を共有している。対称キーペアは、対応するアカウントのパブリック−プライベートキーペアから取得されていることから、暗号化キーの更なる追加を伴うことなしに、ブロックチェーンを通じて、コミットメントのランダム数を効果的に保存することができる。
【0142】
更に別の例の場合には、トランザクションの既存の資産が新しい資産及びトランザクションに照らしてバランスしており、且つ、それぞれの新しい資産の値が妥当な範囲内にある、ことを証明するべく、範囲証明が使用されている。更には、トランザクションパーティは、コミットされた値が取引資産の値とマッチングしているかどうかを検証するべく、コミットされたランダム数及び新しい資産の値を保護されたブロックチェーンとは切り離されたチャネルを通じて受領者に送信することができる。
【0143】
従って、Pedersenコミットメントのランダム数は、破壊のリスクを伴うことなしに、且つ、更なるキー管理の負担の生成を伴うことなしに、便利に管理することができる。従って、トランザクションのプライバシーを完全に保護することが可能であり、且つ、トランザクション金額を秘密として維持することができる。
【0144】
本明細書において記述されている技法は、1つ又は複数の特殊目的演算装置によって実装される。特殊目的演算装置は、デスクトップコンピュータシステム、サーバーコンピュータシステム、携帯型コンピュータシステム、ハンドヘルド装置、ネットワーキング装置、又は技法を実装するべく配線接続された且つ/又はプログラムのロジックを内蔵する任意のその他の装置又は装置の組合せであってもよい。1つ又は複数の演算装置は、一般に、オペレーティングシステムソフトウェアによって制御及び調整されている。従来のオペレーティングシステムは、その他のものに加えて、実行のためにコンピュータプロセスを制御及びスケジューリングし、メモリ管理を実行し、ファイルシステム、ネットワーキング、入出力サービスを提供し、且つ、グラフィカルユーザーインターフェイス(「GUI:Graphical User Interface」)などの、ユーザーインターフェイス機能を提供している。
【0145】
図5は、本明細書において記述されている実施形態の任意のものが実装されうるコンピュータシステム500を示すブロック図である。システム500は、本明細書において記述されているノードの任意のものの内部において実装することができると共に、情報保護方法用の対応するステップを実行するように構成することができる。コンピュータシステム500は、バス502又は情報を伝達するためのその他の通信メカニズムと、情報を処理するべくバス502と結合された1つ又は複数のハードウェアプロセッサ504と、を含む。1つ又は複数のハードウェアプロセッサ504は、例えば、1つ又は複数の汎用マイクロプロセッサであってよい。
【0146】
また、コンピュータシステム500は、1つ又は複数のプロセッサ504によって実行される情報及び命令を保存するべくバス502に結合された、ランダムアクセスメモリ(RAM:Random Access Memory)、キャッシュ、及び/又はその他のダイナミックストレージ装置などの、メインメモリ506を含む。また、メインメモリ506は、1つ又は複数のプロセッサ504によって実行される命令の実行の際に、一時的変数又はその他の中間情報を保存するべく、使用することもできる。このような命令は、1つ又は複数のプロセッサ504からアクセス可能であるストレージ媒体内において保存された際に、コンピュータシステム500を命令の内部において規定された動作を実行するべくカスタマイズされた特殊目的機械に変換する。コンピュータシステム500は、読み出し専用メモリ(ROM:Read Only Memory)508又は1つ又は複数のプロセッサ504用のスタティックな情報及び命令を保存するべくバス502に結合されたその他のスタティックストレージ装置を更に含む。磁気ディスク、光ディスク、又はUSBサムドライブ(Flashドライブ)などのような、ストレージ装置510が、情報及び命令を保存するべく、提供され、且つ、バス502に結合されている。
【0147】
コンピュータシステム500は、コンピュータシステムとの組合せにおいて、コンピュータシステム500が特殊目的機械となるようにする又はプログラムする、カスタマイズされた配線接続されたロジック、1つ又は複数のASIC又はFPGA、ファームウェア、及び/又はプログラムロジックを使用することにより、本明細書において記述されている技法を実装することができる。一実施形態によれば、本明細書において記述されている動作、方法、及びプロセスは、1つ又は複数のプロセッサ504がメインメモリ506内において含まれている1つ又は複数の命令の1つ又は複数のシーケンスを実行することに応答して、コンピュータシステム500によって実行されている。このような命令は、ストレージ装置510などの別のストレージ媒体からメインメモリ506内に読み込むことができる。メインメモリ506内において含まれている命令のシーケンスを実行することにより、1つ又は複数のプロセッサ504は、本明細書において記述されているプロセスステップを実行する。代替実施形態においては、ソフトウェア命令の代わりに、或いは、これとの組合せおいて、配線接続された回路を使用することができる。
【0148】
メインメモリ506、ROM508、及び/又はストレージ
装置510は、一時的ではないストレージ媒体を含むことができる。本明細書において使用されている「一時的ではない媒体(non−transitory media)」という用語及び類似の用語は、機械が特定の方式で稼働するようにする、データ及び/又は命令を保存する媒体を意味しており、媒体は、一時的な信号を除外している。このような一時的ではない媒体は、不揮発性の媒体及び/又は揮発性の媒体を有することができる。不揮発性の媒体は、例えば、ストレージ装置510などの、光又は磁気ディスクを含む。揮発性の媒体は、メインメモリ506などの、ダイナミックメモリを含む。一時的ではない媒体の一般的な形態は、例えば、フロッピーディスク、フレキシブルディスク、半導体ドライブ、磁気テープ又は任意のその他の磁気データストレージ媒体、CD−ROM、任意のその他の光データストレージ媒体、孔のパターンを有する任意の物理的媒体、RAM、PROM、EPROM、FLASH−EPROM、NVRAM、任意のその他のメモリチップ又はカートリッジ、及びこれらのもののネットワーク接続されたバージョンを含む。
【0149】
また、コンピュータシステム500は、バス502に結合されたネットワークインターフェイス518を含む。ネットワークインターフェイス518は、1つ又は複数のローカルネットワークに接続された1つ又は複数のネットワークリンクに対する双方向データ通信結合を提供している。例えば、ネットワークインターフェイス518は、統合型サービスデジタルネットワーク(ISDN:Integrated Services Ditital Network)カード、ケーブルモデム、衛星モデム、又は電話線の対応するタイプに対してデータ通信接続を提供するモデムであってもよい。別の例として、ネットワークインターフェイス518は、互換性を有するローカルエリアネットワーク(LAN:Local Area Network)(或いは、WANと通信するためのWANコンポーネント)に対してデータ通信接続を提供するべく、LANカードであってもよい。また、無線リンクを実装することもできる。任意のこのような実装形態においては、ネットワークインターフェイス518は、様々なタイプの情報を表すデジタルデータストリームを搬送する電気、電磁、又は光信号を送信及び受信している。
【0150】
コンピュータシステム500は、1つ又は複数のネットワーク、ネットワークリンク、及びネットワークインターフェイス518を通じて、メッセージを送信することが可能であり、且つ、プログラムコードを含むデータを受信することができる。インターネットの例においては、サーバーは、要求されたアプリケーションプログラムのコードをインターネット、ISP、ローカルネットワーク、及びネットワークインターフェイス518を通じて送信することができよう。
【0151】
受け取られたコードは、受け取られるのに伴って、1つ又は複数のプロセッサ504によって実行されてもよく、且つ/又は、後で実行するべく、ストレージ装置510又はその他の不揮発性のストレージ内において保存されてもよい。
【0152】
以上の節において記述されているプロセス、方法、及びアルゴリズムのそれぞれは、1つ又は複数のコンピュータシステム又はコンピュータハードウェアを有するコンピュータプロセスによって実行されるコードモジュールとして実施されてもよく、且つ、これにより、完全に又は部分的に、自動化されてもよい。プロセス及びアルゴリズムは、アプリケーション固有の回路において、部分的に又は完全に実装されてもよい。
【0153】
上述の様々な特徴及びプロセスは、互いに独立的に使用されてもよく、或いは、様々な方式によって組み合わせられてもよい。すべての可能な組合せ及びサブ組合せは、本開示の範囲に含まれることが意図されている。これに加えて、特定の方法又はプロセスブロックは、いくつかの実装形態においては、省略されてもよい。また、本明細書において記述されている方法及びプロセスは、任意の特定のシーケンスに限定されるものではなく、且つ、これらに関係するブロック及び状態は、適するその他のシーケンスにおいて実行することができる。例えば、記述されているブロック又は状態は、具体的に開示されているもの以外の順序において実行されてもよく、或いは、複数のブロック又は状態が、単一のブロック又は状態において組み合わせられてもよい。例示用のブロック又は状態は、連続的に、並行して、或いは、なんらかのその他の方式により、実行されてもよい。ブロック又は状態は、開示されている例示用の実施形態に追加されてもよく、或いは、これから除去されてもよい。本明細書において記述されている例示用のシステム及びコンポーネントは、記述されているものとは異なる方式により、構成されてもよい。例えば、要素は、開示されている例示用の実施形態に追加されてもよく、これから除去されてもよく、或いは、これらとの比較において再構成されてもよい。
【0154】
本明細書において記述されている例示用の方法の様々な動作は、少なくとも部分的に、アルゴリズムにより、実行されてもよい。アルゴリズムは、メモリ(例えば、上述の一時的ではないコンピュータ可読ストレージ媒体)内において保存されたプログラムコード又は命令に含まれていてもよい。このようなアルゴリズムは、機械学習アルゴリズムを有することができる。いくつかの実施形態においては、機械学習アルゴリズムは、機能を実行するように明示的にコンピュータをプログラミングすることはできないが、機能を実行する予測モデルを生成するべく、トレーニングデータから学習することができる。
【0155】
本明細書において記述されている例示用の方法の様々な動作は、少なくとも部分的に、関連する動作を実行するように、(例えば、ソフトウェアによって)一時的に構成された、或いは、永久的に構成された、1つ又は複数のプロセッサによって実行することができる。一時的に構成されているのか又は永久的に構成されているのかとは無関係に、このようなプロセッサは、本明細書において記述されている1つ又は複数の動作又は機能を実行するべく動作する、プロセッサ実装されたエンジンを構成することができる。
【0156】
同様に、本明細書において記述されている方法は、少なくとも部分的にプロセッサ実装されてもよく、この場合に、特定の1つ又は複数のプロセッサは、ハードウェアの一例である。例えば、方法の動作のうちの少なくともいくつかは、1つ又は複数のプロセッサ又はプロセッサ実装されたエンジンによって実行されてもよい。更には、1つ又は複数のプロセッサは、「クラウド演算」環境内において、或いは、「ソフトウェアアズアサービス(Saas:Software as a service)」として、関連する動作の実行をサポートするように動作することもできる。例えば、動作のうちの少なくともいくつかは、これらの動作がネットワーク(例えば、インターネット)を介して、且つ、1つ又は複数の適切なインターフェイス(例えば、アプリケーションプログラムインターフェイス(API:Application Program Interface))を介して、アクセス可能である状態において、(プロセッサを含む機械の例としての)コンピュータのグループによって実行されてもよい。
【0157】
特定の動作の実行は、単一の機械内に存在するのみならず、いくつかの機械に跨って配備された、プロセッサに跨って分散させられてもよい。いくつかの例示用の実施形態においては、プロセッサ又はプロセッサ実装されたエンジンは、単一の地理的場所内(例えば、自宅環境内、オフィス環境内、又はサーバーファーム内)において配置されてもよい。その他の例示用の実施形態においては、プロセッサ又はプロセッサ実装されたエンジンは、いくつかの地理的場所に跨って分散させられてもよい。
【0158】
本明細書の全体を通じて、複数のインスタンスにより、単一のインスタンスとして記述されているコンポーネント、動作、又は構造を実装することができる。1つ又は複数の方法の個々の動作が、別個の動作として図示及び記述されているが、個々の動作のうちの1つ又は複数が同時に実行されてもよく、従って、動作が図示の順序において実行されることを必要としているものは、なにもない。例示用の構成において別個のコンポーネントとして提示されている構造及び機能は、組み合わせられた構造又はコンポーネントとして実装されてもよい。同様に、単一のコンポーネントとして提示されている構造及び機能も、別個のコンポーネントとして実装されてもよい。これらの及びその他の変更、変形、追加、及び改善は、本明細書における主題の範囲に含まれる。
【0159】
以上、特定の例示用の実施形態を参照し、主題の概要について説明したが、本開示の実施形態のより広い範囲を逸脱することなしに、これらの実施形態に対して様々な変更及び変形を実施することができる。本主題のこのような実施形態は、本明細書においては、利便を目的としてのみ、且つ、複数が実際に開示されている場合に、本出願の範囲を任意の単一の開示又は概念に自発的に限定する意図を伴うことなしに、個々に又は集合的に、「発明」という用語のみにより、参照されている場合がある。「発明を実施するための形態」は、限定の意味において解釈されてはならず、且つ、様々な実施形態の範囲は、添付の請求項に許される均等物の完全な範囲と共に、添付の請求項によってのみ定義される。