(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023181467
(43)【公開日】2023-12-21
(54)【発明の名称】双線形写像アキュムレータに基づく認証のためのブロックチェーン実装方法及びシステム
(51)【国際特許分類】
G09C 1/00 20060101AFI20231214BHJP
H04L 9/32 20060101ALI20231214BHJP
【FI】
G09C1/00 650A
H04L9/32 200Z
【審査請求】有
【請求項の数】15
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023188109
(22)【出願日】2023-11-02
(62)【分割の表示】P 2020545597の分割
【原出願日】2019-03-05
(31)【優先権主張番号】1803706.9
(32)【優先日】2018-03-08
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】バルトルッチ,シルヴィア
(72)【発明者】
【氏名】ベルナト,ポーリーン
(57)【要約】
【課題】本発明は、合意に基づくブロックチェーンのような分散台帳技術に関係があり、トランザクション入力及び出力をロック及びアンロックするためのコンピュータにより実装される方法を提供する。
【解決手段】本発明は、ブロックチェーンネットワークを用いて実施され、ブロックチェーンネットワークは、例えば、ビットコインブロックチェーンであってよい。一群のエンティティは、累積ツリーを用いてメンバーシップが証明され得るグループを形成する。累積ツリーを生成する様々な方法が記載され、中央当局を使用する方法や、中央当局の代わりに非中央集権的なプロトコルを使用する方法がある。様々な実施で、パーティは、彼らの身元を一般に明らかにすることなく、グループメンバーシップに基づくトランザクション出力をアンロックすることができる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
累積ツリーの大域ダイジェストを生成することであり、該累積ツリーの各要素がコンピュータシステムのセットの中のコンピュータシステムを表し、前記大域ダイジェストの計算は、各要素によって当該要素に関連したハッシュ値を前記累積ツリーの他の要素の夫々と共有することと、前記要素の夫々に関連した共有されたハッシュ値を結合することによって共通の秘密を決定することと、前記共通の秘密を用いて前記大域ダイジェストを計算することとを含む、前記生成することと、
分散データ構造への挿入のために、前記大域ダイジェストに少なくとも部分的に基づく認証情報を含む記録を生成することと、
前記記録を前記分散データ構造に挿入することと
を有する、コンピュータにより実施される方法。
【請求項2】
前記記録は、ロッキングスクリプトを含み、
前記認証情報は、前記累積ツリーの局所ダイジェストのハッシュを識別する、
請求項1に記載のコンピュータにより実施される方法。
【請求項3】
前記記録は、アンロッキングスクリプトを含み、
前記認証情報は、楕円曲線上の点によって表される前記累積ツリーの局所ダイジェストから導出される数を識別する、
請求項1又は2に記載のコンピュータにより実施される方法。
【請求項4】
前記記録は、アンロッキングスクリプトを含み、
前記認証情報は、楕円曲線上の点によって表される前記大域ダイジェストから導出される数を識別する、
請求項1乃至3のうちいずれか一項に記載のコンピュータにより実施される方法。
【請求項5】
前記累積ツリーの構造は、前記コンピュータシステムのセットに関連する組織構造に少なくとも部分的に基づいて決定される、
請求項1乃至4のうちいずれか一項に記載のコンピュータにより実施される方法。
【請求項6】
前記コンピュータシステムのセットの間で、ツリーパラメータのセットがネゴシエーションされ、該ツリーパラメータのセットは、ツリー深さ及び中間ノードごとの子ノードの数を含み、
前記累積ツリーは、前記ツリーパラメータのセットに従って構築される、
請求項1乃至5のうちいずれか一項に記載のコンピュータにより実施される方法。
【請求項7】
前記コンピュータシステムのセットは、各コンピュータシステムが前記累積ツリーの前記大域ダイジェスト及び前記共通の秘密を再構成することを可能にする情報を互いに共有する、
請求項1乃至6のうちいずれか一項に記載のコンピュータにより実施される方法。
【請求項8】
前記コンピュータシステムのセットの中のサブセットは、該サブセットのメンバーが当該サブセットのための局所ダイジェストを決定することができるように、当該サブセットの情報を当該サブセットの他のメンバーと共有し、
前記コンピュータシステムのセットに含まれるが前記サブセットに含まれないコンピュータシステムは、前記情報を供給されず、前記局所ダイジェストを決定することができない、
請求項1乃至7のうちいずれか一項に記載のコンピュータにより実施される方法。
【請求項9】
前記コンピュータシステムのセットに含まれるが前記サブセットに含まれない前記コンピュータシステムは、前記コンピュータシステムの前記サブセットの親ノードの局所ダイジェストのハッシュを供給される、
請求項8に記載のコンピュータにより実施される方法。
【請求項10】
前記累積ツリーの局所ダイジェストと組み合わせて前記コンピュータシステムのセットでのメンバーシップを証明するウィットネスを生成することを更に有する、
請求項1乃至9のうちいずれか一項に記載のコンピュータにより実施される方法。
【請求項11】
前記コンピュータシステムのセットでのメンバーシップは、当局コンピュータシステムによって決定され、
前記当局コンピュータシステムは、前記コンピュータシステムのセットの間で、前記累積ツリーに関連する共有されたパラメータのセットを確立する、
請求項1乃至10のうちいずれか一項に記載のコンピュータにより実施される方法。
【請求項12】
前記コンピュータシステムのセットの中の各コンピュータシステムは、前記セットの各メンバーが前記累積ツリーの前記大域ダイジェストを決定することができるように、当該コンピュータシステムのクレデンシャルのハッシュを前記セットの他のメンバーと共有する、
請求項1乃至11のうちいずれか一項に記載のコンピュータにより実施される方法。
【請求項13】
前記分散データ構造は、ブロックチェーンであり、
前記記録は、ビットコイン取引記録である、
請求項1乃至12のうちいずれか一項に記載のコンピュータにより実施される方法。
【請求項14】
プロセッサ及びメモリを有するシステムであって、
前記メモリは、前記プロセッサによる実行の結果として、当該システムに、請求項1乃至13のうちいずれか一項に記載のコンピュータにより実施される方法を実行させる実行可能命令を含む、
システム。
【請求項15】
コンピュータシステムのプロセッサによって実行される結果として、前記コンピュータシステムに、請求項1乃至13のうちいずれか一項に記載のコンピュータにより実施される方法を少なくとも実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、ブロックチェーンを介したデジタル資産の移転に関する認証に関係があり、より具体的には、グループメンバーシップの証明に基づいてデジタル資産の移転を許可することに関係がある。本発明は、グループ又はサブグループでのメンバーシップに少なくとも部分的に基づいてデジタル資産の移転を許可するビットコインスクリプトの生成に特に適しているが、それに限られない。本発明は、ブロックチェーンにより実施される認証及び許可に基づく制御動作のための暗号ソリューションを提供する。本発明によって提供される解決法は、安全性を保ちながら計算効率が良い。
【背景技術】
【0002】
本文書中、「ブロックチェーン」との用語は、いくつかのタイプの電子的な、コンピュータに基づく分散台帳(distributed ledgers)のいずれかを指す。それらは、合意に基づくブロックチェーン及びトランザクションチェーン技術、許可(permissioned)及び無許可(un-permissioned)台帳、共有台帳、並びにこれらの変形を含む。ブロックチェーン技術の最も広く知られた応用は、他のブロックチェーン実施が提案及び開発されているとはいえ、ビットコイン台帳である。ビットコインの例が、便宜上、説明のために本開示で言及され得るが、本発明は、ビットコインブロックチェーンとともに使用することに限られず、代替のブロックチェーン実施及びプロトコルが本発明の適用範囲内にあることが留意されるべきである。例えば、本発明は、どのような制約がトランザクション内で符号化され得るかに関して、ビットコインに類似した制限を有している他のブロックチェーン実施において有用であり得る。「ビットコイン」との用語は、ビットコインプロコトルから派生したあらゆるバリエーション又はバージョンを指すためにここでは使用される。
【0003】
ブロックチェーンは、ピア・ツー・ピアの電子台帳であり、これは、トランザクション及び他の情報から成るブロックで構成された、コンピュータに基づく非中央集権的な分散型システムとして実装される。例えば、ビットコインによれば、各トランザクションは、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移転を符号化するデータ構造であり、少なくとも1つの入力及び少なくとも1つの出力を含む。いくつかの実施形態において、「デジタル資産」(digital asset)は、使用権に関連するバイナリデータを指す。デジタル資産の例には、ビットコイン、イーサリアム、及びライトコインがある。いくつかの実施において、デジタル資産の制御を移転することは、第1エンティティから第2エンティティへデジタル資産の少なくとも一部を関連付けし直すことによって行われ得る。ブロックチェーンにその始まり以来書き込まれてきた全てのトランザクションの永久的且つ不変な記録を構成するようブロックどうしが連鎖するように、各ブロックは前のブロックのハッシュを含む。トランザクションは、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さいプログラムを含む。スクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。ビットコインプラットフォームで、それらのスクリプトは、スタックに基づくスクリプト言語を用いて書かれている。
【0004】
すなわち、スタックに基づくスクリプト言語は、スタックと呼ばれるデータ構造を利用してよい。スタックによれば、値(value)は、スタック上にプッシュされるか、又はスタックからポップされ得る。スタック上で実行される様々な動作は、スタックの一番上から1つ以上の値をプッシュ又はポップすることをもたらし得る。例えば、OP_EQUAL動作は、スタックから上2つのアイテムをポップし、それらを比較し、結果(例えば、等しい場合は1、等しくない場合は0)をスタック上にプッシュする。本実施形態のいくつかによって用いられるいくつかのスクリプト言語では、少なくとも2つのスタック、すなわち、メインスタック及び代替スタックが存在し得る。スクリプト言語のいくつかの動作は、一方のスタックの一番上から他方のスタックの一番上へアイテムを移動することができる。例えば、OP_TOALTSTACKは、メインスタックの一番上から代替スタックの一番上へ値を移動させる。
【0005】
トランザクションがブロックチェーンに書き込まれるために、それは“妥当性確認”(validated)されなければならない。ネットワークノード(マイナー(miner))は、各トランザクションが有効であることを確かにする動作を実行し、無効なトランザクションはネットワークから拒絶される。ノードは、他のノードとは異なる妥当性のための標準を有することができる。ブロックチェーンにおける妥当性は合意(consensus)に基づくので、トランザクションが有効であると大多数のノードが同意する場合に、トランザクションは有効と見なされる。ノードにインストールされているソフトウェアクライアントが、UTXOロッキング及びアンロッキングスクリプト実行することによって、部分的に未使用トランザクション(UTXO)を参照するトランザクションに対してこの妥当性確認動作を実行する。ロッキング及びアンロッキングスクリプトの実行が真(TRUE)と評価し、他の妥当性確認条件が、適用可能である場合に、満足されるならば、トランザクションはノードによって妥当性確認される。妥当性確認されたトランザクションは、他のネットワークノードへ伝搬され、すると直ぐに、マイナーノードは、トランザクションをブロックチェーンに含めることを選択することができる。よって、トランザクションがブロックチェーンに書き込まれるために、それは、i)トランザクションを受け取る第1ノードによって妥当性確認されなればならず、トランザクションが妥当性確認される場合に、ノードはそれをネットワーク内の他のノードへ中継し、そして、トランザクションは、ii)マイナーによって構築された新しいブロックに加えられ、iii)マイニングされ、すなわち、過去のトランザクションの公開台帳に加えられるべきである。トランザクションは、トランザクションを実際上元に戻せないようにするためにブロックチェーンに十分な数のブロックが加えられる場合に承認されていると見なされる。
【0006】
ブロックチェーン技術は、暗号通貨実施の使用のために最も広く知られているが、デジタル起業家は、新しいシステムを実施するために、ビットコインが基づく暗号化によるセキュリティ、及びブロックチェーンで保持可能であるデータの両方の使用を検討し始めている。それは、ブロックチェーンが、暗号通貨の領域に制限されない自動化されたタスク及び処理のために使用され得る場合に、大いに有利である。そのような解決法は、様々な用途で用いられながら、ブロックチェーンの利点(例えば、永久的、イベントの改ざん防止された記録、分散処理、など)を利用することができる。
【0007】
ブロックチェーントランザクション出力は、ビットコインのようなデジタル資産の所有権に関する情報及びロッキングスクリプトを含む。ロッキングスクリプトは、解除条件(encumbrance)とも呼ばれることがあり、出力を使うために満足される必要がある条件を指定することによってデジタル資産を“ロック”する。例えば、ロッキングスクリプトは、特定のデータが、関連するデジタル資産をアンロックするために、アンロッキングスクリプトで供給されることを求める。ロッキングスクリプトは、ビットコインにおいて“scriptPubKey”としても知られている。デジタル資産をアンロックするためにデータを供給するようパーティに求める技術は、ロッキングスクリプト内にデータのハッシュを埋め込むことを伴う。しかし、これは、ロッキングスクリプトが生成される時点でデータが決定されていない(知られておらず固定されていない)場合に問題を提示する。
【発明の概要】
【0008】
よって、それらの態様の1つ以上でブロックチェーン技術を改善する方法及びシステムを提供することが望ましい。そのような、改善された解決法が、目下考えられている。よって、本発明に従って、添付の特許請求の範囲で定義される方法が提供される。
【0009】
よって、累積ツリーのダイジェストを生成し、該累積ツリーの各要素がコンピュータシステムのセットの中のコンピュータシステムを表す、ことと、分散データ構造への挿入のために、ダイジェストに少なくとも部分的に基づく認証情報を含む記録を生成することと、記録を分散データ構造に挿入することとを有する、コンピュータにより実施される方法を提供することが望ましい。
【0010】
望ましくは、コンピュータにより実施される方法は、記録がロッキングスクリプトを含み、認証情報が累積ツリーの局所ダイジェストのハッシュを識別するところの実施形態であってよい。
【0011】
望ましくは、コンピュータにより実施される方法は、記録がアンロッキングスクリプトを含み、認証情報が、楕円曲線上の点によって表される局所ダイジェストから導出される数を識別するところの実施形態であってよい。
【0012】
望ましくは、コンピュータにより実施される方法は、記録がアンロッキングスクリプトを含み、認証情報が、楕円曲線上の点によって表される大域ダイジェストから導出される数を識別するところの実施形態であってよい。
【0013】
望ましくは、コンピュータにより実施される方法は、累積ツリーの構造が、コンピュータシステムのセットに関連する組織構造に少なくとも部分的に基づいて決定されるところの実施形態であってよい。
【0014】
望ましくは、コンピュータにより実施される方法は、コンピュータシステムのセットの間で、ツリーパラメータのセットがネゴシエーションされ、該ツリーパラメータのセットは、ツリー深さ及び中間ノードごとの子ノードの数を含み、累積ツリーは、ツリーパラメータのセットに従って構築されるところの実施形態であってよい。
【0015】
望ましくは、コンピュータにより実施される方法は、コンピュータシステムのセットが、各コンピュータシステムが累積ツリーの大域ダイジェスト及び共通の秘密を再構成することを可能にする情報を互いに共有するところの実施形態であってよい。
【0016】
望ましくは、コンピュータにより実施される方法は、コンピュータシステムのセットの中のサブセットが、該サブセットのメンバーが当該サブセットのための局所ダイジェストを決定することができるように、当該サブセットの情報を当該サブセットの他のメンバーと共有し、コンピュータシステムのセットに含まれるがサブセットには含まれないコンピュータシステムが、情報を供給されず、局所ダイジェストを決定することができないところの実施形態であってよい。
【0017】
望ましくは、コンピュータにより実施される方法は、コンピュータシステムのセットに含まれるがサブセットには含まれないコンピュータシステムが、コンピュータシステムのサブセットの親ノードの局所ダイジェストのハッシュを供給されるところの実施形態であってよい。
【0018】
望ましくは、コンピュータにより実施される方法は、ダイジェストと組み合わせてコンピュータシステムのセットでのメンバーシップを証明するウィットネスを生成することを更に有してよい。
【0019】
望ましくは、コンピュータにより実施される方法は、コンピュータシステムのセットでのメンバーシップが当局コンピュータシステムによって決定され、当局コンピュータシステムが、コンピュータシステムのセットの間で、累積ツリーに関連する共有されるパラメータのセットを確立するところの実施形態であってよい。
【0020】
望ましくは、コンピュータにより実施される方法は、コンピュータシステムのセットの中の各コンピュータシステムが、セットの各メンバーが累積ツリーの大域ダイジェストを決定することができるように、当該コンピュータシステムのクレデンシャルのハッシュをセットの他のメンバーと共有するところの実施形態であってよい。
【0021】
望ましくは、コンピュータにより実施される方法は、分散データ構造がブロックチェーンであり、記録がビットコイン取引記録であるところの実施形態であってよい。
【0022】
また、プロセッサ及びメモリを有するシステムであって、メモリが、プロセッサによる実行の結果として、システムに、請求される方法のいずれかを実行させる実行可能命令を含む、システムを提供することが望ましい。
【0023】
また、実行可能命令を記憶している非一時的なコンピュータ可読記憶媒体であって、実行可能命令が、コンピュータシステムのプロセッサによって実行される結果として、コンピュータシステムに、請求される方法のいずれかを少なくとも実行させる、非一時的なコンピュータ可読記憶媒体を提供することが望ましい。
【0024】
本発明は、検証方法/システムとして、及び/又はブロックチェーンを介したデジタル資産の交換若しくは移転を制御する制御方法/システムとして記載され得る。いくつかの実施において、デジタル資産は、暗号通貨の一部又はトークンである。後述されるように、本発明は、ブロックチェーンネットワーク又はプラットフォームを介して動作を実行する新しい、改善された有利な方法のためのセキュア方法/システムとしても記載され得る。
【0025】
本発明のこれら及び他の態様は、本明細書で記載される実施形態から明らかであり、それらの実施形態を参照して説明される。本発明の実施形態は、これより、単なる例として、添付の図面を参照して記載される。
【図面の簡単な説明】
【0026】
【
図1】実施形態において、ユーザがグループのメンバーであるとの証明をユーザが提供することによって特定のユーザの認証が達成されるシステムの例を表す。
【
図2】実施形態において、9つの要素のセットのための累積ツリーの例を表す。
【
図3】実施形態において、i=1,・・・,9の場合に、各要素が関連する要素を有している累積ツリーの例を表す。
【
図4】実施形態において、参加者及びグループ当局によって実行される結果として、参加者がグループメンバーシップの証明を生成することを可能にするプロセスの例を表す。
【
図5】実施形態において、ダイジェストのハッシュψ’(r)によりロックされたスクリプトの例を表す。
【
図6】実施形態において、会社に属する参加者のセットのための累積ツリーの例を表す。
【
図7】実施形態において、非中央集権的なプロトコルの場合に、秘密共有及び秘密再構成の部分として交換される情報の例を表す。
【
図8】実施形態において、非中央集権的なプロトコルの場合に、秘密共有及び秘密再構成の部分として交換される情報の例を表す。
【
図9】実施形態において、1つ以上のグループからのいずれかの参加者が、親ダイジェストの座標を供給することによって、関連する出力をアンロックすることができる非中央集権的なプロトコルのためのトランザクションロッキングスクリプトの例を表す。
【
図10】実施形態において、大域ダイジェストを再構成するための非中央集権的なプロトコルの例を表す。
【
図11】様々な実施形態が実施され得るコンピュータシステムを表す。
【発明を実施するための形態】
【0027】
本文書は、グループでのメンバーシップを供給する動作に対するパーティに少なくとも部分的に基づく動作の認証を可能にするコンピュータシステムについて記載する。いくつかの実施形態において、システムは、設定されたメンバーシップ要件を、分散ブロックチェーンデータ構造のロッキングスクリプトのような認証データに埋め込む。例えば、本明細書で記載及び提案されている技術は、ビットコイントランザクションのような暗号通貨トランザクションへのグループメンバーシップ要件の追加を容易にするために適用され得る。様々な実施形態において、ユーザは、双線形写像アキュムレータ(bilinear map accumulators)に基づくソリューションを用いて、グループへのメンバーシップを取得及び証明し、ブロックチェーンネットワーク上のトランザクションを認証することができる。電子認証システムを使用する匿名プロトコルでは、認証プロセス中に可能な限りほとんど情報を開示しないことがしばしば望ましい。一種の効率的な電子認証ソリューションは、アキュムレータに基づく。そのような暗号プリミティブは、計算効率が良くかつプライバシーが保護されているメンバーシップの証明の生成を可能にする。
【0028】
様々な実施形態において、ユーザの集合は、中央集権的なプロトコル又は非中央集権的なプロトコルを用いて、彼らのメンバーシップの証明をセキュアに計算してよい。中央集権的なプロトコルでは、グループへのメンバーシップを取得したいユーザは、中央当局とやりとりしてよい。非中央集権的なプロトコルでは、ユーザは、彼らのメンバーシップの証明を生成するために彼らの中で協働する。両方のプロトコルで、所与のグループに属する要素に関する情報を効率的に保持し、それを局所的及び大域的量で圧縮するために、階層構造、すなわち累積ツリー(accumulation tree)が作られる。様々な実施形態において、グループメンバーシップは、ユーザに関連するコンピュータシステム又はコンピュータシステム上のアカウントの代わりに確立される。例えば、ユーザは、管理者グループのメンバーであることによって動作を実行することを許可され得るが、動作は、ユーザに関連するアカウントが管理者グループでのメンバーシップを供与されていることを示すことによって許可され得る。グループメンバーシップの証明の生成及び提示は、ユーザによって操作されるコンピュータシステムによって、又はユーザの権限の下では、ユーザのアカウントクレデンシャルを用いて、実行される。
【0029】
インターネット上で及び現実の世界での電子認証サービス及びデバイスの普及により、安全な、プライバシーを強化されたソリューションの需要が高まっている。例えば、電子チケット、電子IDカード、コンピュータ認証、及びセキュア通信のような用途では、プライバシー及び安全性は非常に重要である。ユーザのプライバシー及び安全性を保護するために、開示される情報の量を減らすことが望ましい。一般に、ユーザは、所与のトランザクション又はプロセスを認証するために、可能な限りほとんど個人情報を開示すべきではない。例えば、購入を認証するために、自身が25歳以上であることをユーザが証明すべきである場合に、ユーザは、自身の年齢に関する情報のみを明らかにし、生年月日、住所などを明らかにすべきではない。しかし、現在利用可能なシステムは、明らかにされる特定の情報に対する十分な制御をユーザに認めておらず、ユーザの単一の特性を証明するためでさえユーザの身元の認証をしばしば要求する。例えば、多くのシステムで、ユーザは、ユーザの名前、住所、年齢、及び連絡先を、彼らが25歳以上であることを証明する部分として明らかにする署名証明書(signed certificate)を提供しなければならないことがある。
【0030】
本願は、情報の公開に対する改善された制御を提供することによって、この欠点に対処する様々な実施形態について記載する。例えば、ユーザに関連する特定の情報が、他の無関係な情報を開示せずに開示されることを可能にする方法が、記載される。このような技術を用いて、明らかにされるユーザ情報の量を最低限にする原理は、ビットコインブロックチェーンのようなブロックチェーンでのトランザクションの検証に適用されてよい。例えば、ビットコインブロックチェーン上で、トランザクションは、ブロックチェーン台帳で公に保持され、トランザクションロッキング及びアンロッキングスクリプトの部分として過剰量の情報を開示することは、そのユーザのプライバシーを危うくする可能性がある。本明細書で記載される技術の様々な実施形態は、そのようなスクリプトを使用するときに明らかにされる情報の範囲を制限するよう適用されてよく、安全性の向上、プライバシーの改善、及びユーザの匿名性の強化をもたらす。
【0031】
アキュムレータに基づく暗号ソリューションの様々な実施形態は、ユーザプライバシーを保つために匿名クレデンシャルシステム及び匿名電子キャッシュプロトコルで使用され得る。そのようなシステムは、一般に、3つのタイプのエンティティ:証明書発行者、検証者、及び証明書受取者(ユーザ)に依存する。一般に、ユーザは、彼らが特定の属性を保持しているとの署名/証拠を発行者から取得し、そして、ユーザは、属性自体を示さずに、ユーザが特定の属性を持っていることを証明するために証拠を示すことができる。暗号通貨トランザクションをアンロック又は署名するために使用される場合に、上記の技術は、ユーザが所与の証明書のどの部分を証明したいか、表示したいか、又は隠し続けたいかを決定することができるので、トランザクションの匿名性及びリンク不能性を強化する。
【0032】
匿名グループ内のメンバーシップは、時間とともに変化し得る。例えば、証明書は取り消される可能性があり、あるいは、新しいメンバーが、特定の状況下でグループに加わることを望む可能性がある。いくつかの実施形態において、証明書を悪用することは、グループメンバーシップの取り消し及び違反ユーザのブラックリスト掲載につながり得る。いくつかの実施で、グループマネージャ又は管理者は、取り消されたメンバーを特定するリストを公開するか、あるいは、特定の日の後に失効する証明書を発行する。しかし、匿名証明書の場合に、新しいメンバー又は取り消されたメンバーのリストを公にすることは、ユーザのプライバシーを危うくすることになる。
【0033】
様々な実施形態において、上記の問題は、ユーザの身元を明らかにする必要なしに、所与のユーザがグループの一員であるか又は取り消されたメンバーのリスト上にいることを示すゼロ知識証明(zero-knowledge proofs)の使用を通じて対処される。様々な実施で、証明に伴う追加の計算費用が発生する可能性がある。ゼロ知識証明の実施形態は、Benaloh, J., & De Mare, M.(1993年5月),One-way accumulators: A decentralized alternative to digital signatures,Workshop on the Theory and Application of Cryptographic Techniques(274~285頁),シュプリンガー,ベルリン,ハイデルベルグによって記載されているアキュムレータに基づいて構成され得る。アキュムレータは、素数に、又はアキュムレータが一定のサイズを保つ場合には、疑似累積(quasi-cumulative)ハッシュに基づき得る。
【0034】
目下の文書で使用されるように、アキュムレータは、1方向メンバーシップ関数(one-way membership function)として定義される。アキュムレータは、要素のセットSへのコミットメントであり、1つが単一のショート値(short value)への入力の大規模なセットをハッシングすることを可能にする。新しい要素sがセットに加えられる場合に、メンバーシップのウィットネス(w)又は証明が、その所与の要素について生成される。ウィットネスは、アキュムレータ値とともに、グループへのメンバーシップを証明するために使用され得る。
【0035】
様々な実施形態において、要素のセットSは、時間とともに発展し得る。いくつかの実施で、アキュムレータは、セットへの更新があるたびに再計算され得る。従って、本文書は、要素の固定のセットを表す静的なアキュムレータに焦点を当てる。特に、本文書は、ユーザのセットがアキュムレータを用いて特定のグループへのメンバーシップを証明することを可能にする中央集権的なプロトコル及び非中央集権的なプロトコルについて記載する。実施形態において、グループメンバーシップの証明は、デジタル資産の移転を認めるためにビットコインスクリプトに組み込まれてよい。
【0036】
楕円曲線金融算術は、ビットコインのような多数のブロックチェーンシステムの重要な部分である。例えば、ビットコインプロコトルにおける公開キーは、楕円曲線乗算を用いて秘密キーから計算される。整数モジュロpに対する楕円曲線は、式:
y
2≡x
3+ax+b(mod p)
によって記述される点のセットとして記述され得る。なお、
【数1】
かつpは素数である。
【0037】
本文書のために、ビットコインスクリプト内で必要とされる楕円曲線算術機能は、‘スカラーによる点乗算’(point multiplication by scalar)のそれである。これは:
【数2】
であるような演算である。なお、nは自然数であり、Pは楕円曲線上の点であり、丸囲み+は、楕円曲線上の点の加算のための演算子である。
【0038】
スカラー乗算は、順番に点加算(Point Addition)及び点倍加(Point Doubling)の楕円曲線群演算を必要とする。
【0039】
●点加算
【数3】
:この演算によれば、楕円曲線上の新しい点は、曲線の交点の否定(negation)として計算される。本文書中の他の場所で、点加算は、
【数4】
と表され得る。
【0040】
●点倍加
【数5】
:点加算を用いて、Pの点ダブル(point double)が決定され得る。本文書中の他の場所で、点倍加は、
【数6】
と表され得る。
【0041】
例えば、楕円曲線
【数7】
上の2つの点P(x
1,y
1)及びQ(x
2,y
2)を考えると:
【数8】
【0042】
一般に、閾暗号システム(threshold cryptosystem)は、(t;n)-閾値を特徴とし、nは、システム内のパーティの数であり、t+1は、秘密を再構成するために必要とされるパーティの最低限の数である。秘密共有スキームは、閾暗号システムの例であり、これによって、秘密kは、少なくともt+1個のパーティがkを再構成するために協働することができるように、n個のパーティに分けられる。結果として、いくつかの実施形態において、単一のパーティ又はパーティのグループによる秘密kのいずれかのt個の(又はより少ない)片の知識は、証明書が再構成されることを可能にしない。
【0043】
いくつかの実施形態において、シャミア(Shamir)の秘密共有(“SSS”)は、2つ以上のパーティの間の共有される秘密を決定するために使用されてよい。SSSは、多項式補間に基づき、一般性の喪失なしに(“w.l.o.g”)、秘密は、サイズp(p素数)の有限場Fpの要素であると考えられる。スキームは、ディーラと、n人の参加者U1,・・・,Unのセットと、アクセス構造A、すなわち、秘密を再構成することができる参加者のグループとを含んでも含まなくてもよい。SSSでは、任意のランダム秘密がt次多項式f(x)においてf(0)として保持され、プレイヤーiのみが、その関連するシェアf(xi)を計算することができる。n人のプレイヤーのうちのt+1人が協働する場合に、彼らは、ラグランジュ多項式補間を用いて、f(x1),f(x2),・・・,f(xn)に対応する自身の(キーkの)シェアk1,k2,・・・,knによりf(x)上の如何なる点も再構成することができる。
【0044】
ラグランジュ多項式補間を用いて、次数tの関数f(x)は、次のように、t+1個の点により再構成され得る:
【数9】
ここで、
【数10】
b
i,p(x
i)=1及びb
i,p(x
j)=0に留意されたい。
【0045】
ディーラが存在する実施形態では、ディーラは、サイズp(p素数)の有限場Fpの要素であると考えられる秘密a0=kを選択し、多項式f(x)=a0+a1x+a2x2+・・・の係数を表すt-1個の正の整数a1,・・・,at-1をランダムに取る。次いで、ディーラは、多項式に属するn個の点(xi,f(xi))を計算し、それを参加者に分配する。
【0046】
ディーラが存在しない実施形態では、ディーラなしシェア分配フェーズにおいて:
1.各プレイヤーUiは、全員に知られているxiを割り当てられる。各xiは一意である。
2.各プレイヤーUiは、次数tのランダム多項式fi(x)を生成する。
3.各プレイヤーUiは、多項式上の各々の点fi(xj)mod nを他の全てのプレイヤーに秘密に送る。実施形態において、Uiは、受取者の公開キーによりUiを暗号化し、次いで、Uiの暗号化されたバージョンを受取者へ送信することによって、秘密に送られ得る。
4.各プレイヤーUiは、彼らが受け取った全てのf1(xi),f2(xi),・・・fp(xi)(全てmod n,nは、楕円曲線上の点Gによって生成されるグループの位数である)を足し合わせて、ki=f(xi)mod nを形成する。これは、多項式f(x)mod nに対するシェアである。
【0047】
様々な実施形態において、閾署名計算の追加の要素は、k×Gの決定であり、kは秘密キーであり、Gは楕円曲線上の点である。f(x)がt次多項式である場合に、秘密kは、k=Σi∈πbi,πkiによって補間され得る。このとき、πは、シェアka,kb,・・・,kt,kt+1のサイズt+1のサブセットであり、bは補間係数である。πは、プレイヤー自身のシェアkiを明らかにせずにk×Gを計算するよう協働するt+1人のプレイヤーのグループである。kは、t次多項式上のx=0の点である。
●各プレイヤーUiは、部分bi,πki×Gを計算する。
●πに含まれるプレイヤーは、彼らの部分を足し合わせ(ラグランジュ補間により秘密kを再構成し)、
ba,πka×G+bb,πkb×G+・・・+bt+1,πkt+1×G=k×G
を与える。
【0048】
本文書中、Q=kGを計算するプロセスは、秘密シェア連結(Secret Share Joining)と呼ばれ得る。
【0049】
様々な実施形態において、双線形ペアリング及び双線形写像アキュムレータが使用されてよい。G1、G2を、生成元(generators)g1、g2による素数位数(prime order)pの2つの巡回乗法群(cyclic multiplicative groups)とする。Φ(g2)=g1であるような同型写像(isomorphism)Φ:G2→G1が存在すると仮定する。位数pの巡回乗法群であるGMを考えると、双線形ペアリングは、次の特性を有してe:G1×G2→GMと定義され得る:
1.双線形性(Bilinearity):e(Pa,Qb)=e(P,Q)ab∀P∈G1、Q∈G2及びa,b∈Zp。
2.非退化形式(Non-degeneracy):(g1,g2)≠1。
3.計算可能性(Computability):e(P,Q)∀P∈G1、Q∈G2を計算するための効率的なアルゴリズムが存在する。
【0050】
続く例では、G1=G2=G及びg1=g2=gと設定され、ペアリングe:G×G→GMが考えられる。
【0051】
実施形態において、双線形ペアリングに基づく双線形写像アキュムレータは、累積値f’(E)=g
(e1’+s)(e2’+s)・・・(en’+s)におけるn個の要素のセットE=(e
1,・・・,e
n)を累積することができる。累積値はGの要素であり、それはZ
p
*の要素を累積する。要素(e
1’,・・・,e
n’)∈Gは、セットE=(e
1,・・・,e
n)∈Gの元の要素の暗号ハッシュであり、すなわち、
【数11】
によるe
i’=h(e
i)。
【数12】
は、入力として巡回乗法群Gの要素を取り、出力として
【数13】
の整数を生成する衝突耐性ハッシュ関数である。sは、秘密を保たれるトラップドア(trapdoor)情報を表す。
【0052】
実施形態において、累積ツリー(accumulation tree)は、認証されたデータ構造並びに一定の時間更新及び一定のサイズの証明を提供するプリミティブを使用してデータを格納するために使用される。他のタイプの記憶スキームを使用することもできるが、累積ツリーを使用すると、通信及び検証のコストが削減されるだけでなく、記憶のコストも削減されるという利点がある。
【0053】
続く例において、累積ツリーは、クエリに関与するサブセットについてハッシュ値の正確さを検証するために使用される。セットのための公開ツリーダイジェスト(要素のセットの簡潔な表現)はハッシュ値を保証し、転じて、ハッシュ値はセットを検証する。
【0054】
累積ツリーは、0<ε<1として、T(ε)として表される。T(ε)は、n個のリーフを有する根付き木(rooted tree)に相当し、セットEのn個の要素が格納される。木のレベル数は、
【数14】
として定義され、一方、ノードごとの子ノードの数はO(n
ε)である。リーフ(すなわち、セット要素)は、レベル0で特定される同じレベルにある。
【0055】
図2は、実施形態において、9つの要素のセットのための累積ツリーT(ε)200の例を表す。示されている例では、累積ツリーには9つの要素及び3つのレベルがあり、各内部ノードには3つの子ノードがある。表されている例では、累積ツリーは、根ノードr202を有する。根ノードr202は、3つの子ノード:第1中間ノードd204、第2中間ノードe206、及び第3中間ノードf208を有する。3つの中間ノードの夫々には3つの子ノードがあり、それらの夫々が累積ツリーのリーフノードである。第1中間ノードd204は、第1子ノードa210、第2子ノードb212、及び第3子ノードc214を有する。第2中間ノードe206は、第1子ノードg216、第2子ノードh218、及び第3子ノードi220を有する。第3中間ノードf208は、第1子ノードj222、第2子ノードk224、及び第3子ノードl226を有する。
【0056】
要素e∈[e
1,・・・,e
9]を格納する累積ツリーT(ε)200内のリーフノードvごとに、累積値ψ(v)を要素自体の値に等しいと定義する:
ψ(v)=e
レベル1<i<l(ここで、l=2)にある累積ツリーT(ε)200内の非リーフノードvごとに、累積を次のように定義する:
【数15】
ここで、C(v)は、ノードvの子ノードのセットであり、ψ(u)は、ノードuの双線形局所ダイジェストである。例えば、
図3の累積ツリーT(ε)200の場合に、C(v=d)={a,b,c}。sは、スキームのトラップドアであり、
【数16】
は、衝突耐性ハッシュ関数である。
【0057】
セットEに属する所与の要素xの場合に、メンバーシップの証明π(x)は、累積ツリーのレイヤごとに1つである証明の順序づけられたシーケンスπ(x)={π
i,i=1,・・・,l}を有する。証明の各要素は、レベルごとに要素の局所ダイジェストα
i及びブランチウィットネスβ
iから成る対に対応する:
π
i=(α
i、β
i),i=1,・・・,l
1<i<lとして、所与のレイヤについて、我々は:
【数17】
を有する。ここで、S(v
i)は、ツリーT(ε)におけるノードv
iの兄弟(siblings)のセットに対応する。例えば、
図1の累積ツリーの場合に、兄弟のセットは、S(v=d)={e,f}である。
【0058】
所与のレイヤiの場合に、対応する証明要素は、2つのコンポーネントを含む:
●根ノードrへ要素xをリンクするノードのパスP(x):x→rで見つけられる前のレイヤ(レイヤi-1)におけるノードの双線形ダイジェストを表すαi。レイヤ1<i<lの場合に、αiは、レイヤi-1に存在する全ての要素について同じである。
●クエリされているノードからツリーの根へのパスの欠落ノードが信頼できることを証明するウィットネスである“ブランチウィットネス”を表すβi。
【0059】
様々な実施形態において、証明は、信頼できるパーティによって計算され、ユーザ/プローバ(prover)へ送られ、トラップ情報sは、プローバに知られていない。しかし、いくつかの実施形態で、量
【数18】
は、サードパーティによって公にされる。
【0060】
累積ツリーの大域的な双線形ダイジェストは、d=ψ(r)である。ここで、
ψ(r)=g(h(ψ(d))+s)(h(Ψψ(e))+s)(h(ψ(f))+s)
であり、rは、ツリーの根(root)を示す。
【0061】
実施形態において、ユーザは、その証明π(x)を、証明を検証する検証者(verifier)へ供給する。gsが公にされている実施形態では、検証者は、次の動作を行う:
1.検証者は、α1=xであることを確認する。
2.i=2,・・・,lの場合に、検証者は、e(αi,g)=e(βi-1,gs+h(αi-1))であることを検証する。
【0062】
双線形写像特性を用いて、第2の関係はまた、次の量を検証するものとして表現され得る:
【数19】
実施形態において、証明は、上記の関係が成立する場合に検証者によって受け入れられる。
【0063】
様々な実施形態において、証明は、中央集権的なプロトコル又は非中央集権的なプロトコルを用いて構成されてよい。様々な例で、双線形写像アキュムレータに基づくメンバーシップの証明(又はメンバーシップの証明の部分)は、ブロックチェーンネットワークでのトランザクションを検証するために使用される。
【0064】
本文書は、双線形写像アキュムレータを使用するプロトコルの中央集権的及び非中央集権的なバージョンについて記載する。続く例は、累積ツリーに格納されている多数の要素並びに楕円曲線及び素体(prime field)のためのパラメータを有している例を用いて、プロトコルについて説明する。
【0065】
実施形態において、累積ツリーは、証明を構成しかつ要素のセットのメンバーシップを検証するために使用される。累積ツリーは、圧縮された情報を格納するために使用可能であり、累積ツリーのダイジェストは、ツリー内又はツリーのサブパート内の要素の知識を証明することができる如何なる参加者によっても償還可能であるビットコインUTXOをロックするために使用可能である。
【0066】
図3は、実施形態において、i=1,・・・,9として、各要素が関連する要素eiを有している累積ツリー300の例を表す。示される例では、累積ツリーには9つの要素及び3つのレベルがあり、各内部ノードには3つの子ノードがある。表されている例では、累積ツリーは、根ノードV
2302を有する。根ノードV
2302は、3つの子ノード:第1中間ノードV
1304、第2中間ノード306、及び第3中間ノード308を有する。3つの中間ノードの夫々には3つの子ノードがあり、それらの夫々が累積ツリーのリーフノードである。第1中間ノードV
1304は、第1子ノードe
1310、第2子ノードe
2312、及び第3子ノードe
3314を有する。第2中間ノード306は、第1子ノードe
4316、第2子ノードe
5318、及び第3子ノードe
6320を有する。第3中間ノード308は、第1子ノードe
7322、第2子ノードe
8324、及び第3子ノードe
9326を有する。
【0067】
図3に表されている例では、累積ツリー300は9つの要素[e
1,・・・,e
9]を有する。続く例では、各要素の値は、ただ1人の個人によってしか知られておらず、従って、ツリーは、夫々1つの要素の値を知っている9人の個人を表す、と考える。
【0068】
続く例では、累積ツリー300内の第3子ノードV
0314の存在:x=e
3を証明する方法について明らかにする。x(第3子ノードV
0314)から根(根ノードV
2302)までのパスP(x)を、
図3で表されるように、P(x):v
0→v
1→v
2と定義する。
【0069】
この例で、説明のために、ビットコインプロトコルで定義されている楕円曲線を用いることに代えて、人が読むことができる数で我々の計算を行うために、パラメータの異なるセットが選択される。当業者に明らかなように、他の楕円曲線パラメータが他の実施では使用されてよい。この例の場合に、素体Fp(pは素数)にわたって定義された次の楕円曲線が使用される:
y2=x3+ax2+b
ここで、a=-7,b=10かつp=97。
【0070】
素体Fpにわたって定義された楕円曲線の点は曲線の生成元であるから、我々の例のために、生成元gはg=(1,2)であるよう選択される。秘密(トラップドア情報)はs=66であるよう選択される。この論証ために使用するよう選択されるハッシュ関数
【数20】
は、次の通りである:
h:(x,y)→x+2
ky(mod p)
それにより、2
k>P。上記の符号化は、大きい素数を使用するときにモジュロpを定義された楕円曲線上の各点(x,y)について
【数21】
において一意の解を提供する。この例のために、小さい素数(p=97)が選択されるので、このハッシュ関数は衝突耐性ではない。すなわち、我々の楕円曲線上の2つの点が同じハッシュを有する可能性は無視できない。他の実施では、大きい素数が使用されてよく、好ましい。2
k=128>p=97であるように、k=7が選択される。
【0071】
この例で、如何なる要素(曲線上の点)のハッシュについても次の表記が使用される:h(e)=e’∀e:(x,y)。そして、要素のセット[e
1,・・・,e
9]について、先に定義された楕円曲線上の点の次のセットが選択される:
【表1】
【0072】
続く例では、参加者が、累積ツリーの大域ダイジェストψ(r)=(40,96)とともに、要素xのメンバーシップの証明のための表2中の値をいかにして計算することができるかが記載される:
【表2】
【0073】
上の表は、x=e3=(9,26)であるときの証明π(x)のコンポーネントの値を示す。参加者の証明及び累積ツリーのダイジェストを計算するために参加者に与えられる情報のセットは、中央集権的なプロトコルと非中央集権的なプロトコルとでは実施時に相違し得る。従って、中央集権的なプロトコル及び非中央集権的なプロトコルは、以下では分けて記載される。
【0074】
図4は、実施形態において、参加者及びグループ当局によって実行される結果として、参加者がグループメンバーシップの証明を生成することを可能にするプロセス400の例を表す。後述される実施形態では、プロトコルの中央集権的バージョンが記載される。プロトコルの中央集権的バージョンでは、双線形写像においてトラップドア情報(秘密s)を選択し、必要な情報をツリー内の要素(要素は累積ツリーのリーフとして表される)を‘所有’している参加者に分配することに関与する個人又はエンティティによって引き受けられる当局(Authority)が存在する。本文書中、エンティティ、参加者、パーティ、又は他の主体は、コンピュータシステム、コンピュータサーバ、サーバクラスタ、モバイルデバイス、携帯電話機、又はメモリに記憶された実行可能命令を含む計算機器として実装されてよい。実行可能命令は、デバイス上でプロセッサによって読み出され実行される結果として、本明細書で記載されるサービス、関数、アルゴリズムを実装する。
【0075】
実施形態において、当局は、n人の参加者U
1,U
2,・・・,U
nの順序(ツリー内の要素の順序)(402)に加えて、ツリーの構造(例えば、レベルlの数、ノードごとの子ノードの数、など)(404)を決定する。当局はまた、プロトコルで使用する衝突耐性ハッシュ関数
【数22】
とともに、楕円曲線のためのパラメータ
【数23】
を決定し、この情報を公に利用可能にする。様々な実施で、情報は、コンピュータネットワーク上で情報をブロードキャストすることによって、又はウェブサイト若しくはウェブベースのサービスといったウェブサービスを介して情報を公開することによって、公に利用可能にされてよい。
【0076】
実施形態において、各個人の参加者は、他の参加者と一般に共有されない要素enを生成する(406)。各個人の参加者は、個々の参加者の各々の要素をハッシングする(408)。各人の要素[e1,・・・,e9]をハッシングすることによって、参加者は値[e1’,・・・,e9’](上の表に示される)を取得し、得られたハッシュ値を当局へ送る(410)。要素eiの値は、ハッシュei’を当局へ送る一参加者Uiによってしか知られていない。
【0077】
実施形態において、参加者から要素のハッシュを受信(412)した後、当局は、中間レイヤ(この例ではl=1)において、ツリーの局所ダイジェストを計算し(414)、更に大域ダイジェストを計算し(416)、そして、参加者のツリー内の各々の要素の位置に少なくとも部分的に基づいて各参加者へ関連情報を送る。
【0078】
実施形態において、当局は、要素の値を知らずに(一般に、それは、衝突耐性ハッシュ関数を用いて生成されたハッシュのみが供給される)ダイジェストを計算し、参加者は、他の参加者の要素の値(自身のものを除く)もツリーの完全な構造も知らずにダイジェストを決定する。
【0079】
実施形態において、当局は、
【数24】
を公開する。ここで、nは、(ツリーの最後から2番目のレイヤl=1における)ノード内の子の数である(本例ではh=3)。生成元g及び秘密sについて先に選択されたパラメータを考えると、楕円曲線上の次の点が見つけられる:
【表3】
実施形態において、当局は、一要素(本例ではe
3)を所有している参加者と個別にやりとして、次の情報を送る(420):
●参加者の兄弟のハッシュ、すなわち、本例ではe
1’及びe
2’。
●参加者の親の兄弟のハッシュ、すなわち、本例では、ψ’(e)及びψ’(f)。
【0080】
実施形態において、特定の参加者は、次のように、当局から受け取った情報を用いて、証明を決定することができる(422)。
【0081】
証明の第1要素は:
π
1=(α
1,β
1)
である。このとき、
α
1=ψ(v
0)=ψ(e
3)
α
1=(9,26)
かつ
【数25】
【0082】
上記の式は、楕円曲線算術により適した形で書き直され得る:
【数26】
ここで、丸囲み×は、スカラーによる楕円曲線上の点の乗算を記号で表し、丸囲み+は、楕円曲線上の2つの点の加算を表す。
【0083】
上の表でリストアップされた値を用いて、次のように、ウィットネスβ
1の値が計算され得る:
【数27】
証明の第2要素は:
π
2=(α
2,β
2)
によって与えられる。このとき、
【数28】
【0084】
要素α2は、上記の双線形写像特性を用いて
α2=β1
(e3’+s)
と書き直され得る。
【0085】
上の表でリストアップされた値を用いて、参加者は、次のように、局所ダイジェストα
2の値を計算することができる:
【数29】
【0086】
証明の第2要素の他のコンポーネントは:
β2=g(h(ψ(e))+s)(h(ψ(f))+s)
であり、このとき、
ψ(e)=g(h(e4)+s)(h(e5)+s)(h(e6)+s)
及び
ψ(f)=g(h(e7)+s)(h(e8)+s)(h(e9)+s)
【0087】
要素e
i,∀i=1,・・・,9のハッシュを用いて、当局は、各要素の値へアクセスせずにψ(e)及びψ(f)を決定することができる。次いで、当局は、次の局所ダイジェストをハッシングし、次のハッシュを参加者へ送る。
【表4】
【0088】
実施形態において、e3を所有している参加者は、自身の親の2つの兄弟のダイジェストのハッシュ、すなわち、ψ’(e)及びψ’(f)を受取さえすればよいので、参加者は、自身のパスの外のツリーの構造に関してほとんど知らない。従って、参加者は、ツリー内の一要素についての参加者の知識を証明しながら、圧縮情報によりダイジェストを生成する。
【0089】
楕円曲線算術を用いて、β
2は、次のように、β1に類似した形で表示され得る:
【数30】
【0090】
上記の例は、実施形態において、証明要素の各コンポーネント計算する方法を明らかにする。
【0091】
実施形態において、証明の第2要素の第1コンポーネントα
2を用いて、参加者は、次のように、累積ツリーの大域ダイジェストを計算することができる:
【数31】
【0092】
実施形態において、ビットコイントランザクションのトランザクションスクリプトは、大域ダイジェストψ(r)のハッシュによりロックされてよい。トランザクションは、参加者自身の要素の値にアクセスすることができ、従って、ツリーの大域ダイジェストを計算することができる参加者(グループメンバー)によってアンロック可能である。
【0093】
ダイジェストのハッシュψ’(r)によりロックされたスクリプト500の例が、
図5に表されている。アンロッキングスクリプト502は、大域ダイジェストψ(r)のx、y座標(楕円曲線上の点である)を含む。ハッシュ関数
【数32】
として、
h:(x,y)→x+2
ky(mod p)
を使用すると選択する。なお、2
k>pである。
図5において、k(504で示される)=2
kを指示され、法(modulus)はp(506で示される)である。スクリプト500は、ψ(r)の座標x、yをハッシングすることによってψ’(r)(508で示される)が実際に求められることを検証する。上記のハッシュ関数を使用することができるよう、オペコードOP_MUL及びOP_MODが再有効化されるべきである。
【0094】
続く記載は、累積ツリーの構成が非中央集権的なプロトコルで行われるところの様々な実施形態について記載する。例えば、参加者は、トラップドア情報を生成し、情報を交換して、彼らの累積ツリーの大域ダイジェストを個々に計算することができるようにするために、互いに通信する。
【0095】
非中央集権的なプロトコルの実施形態が以下で記載され、3つのフェーズを含む:
●累積ツリーの構成;
●秘密共有及び秘密再構成;並びに
●ダイジェスト計算。
【0096】
[累積ツリーの構成]
実施形態において、n人の参加者S={U
1,U
2,・・・,U
n}が彼らの累積ツリーT(ε)を構成したいと望むシステムについて記載する。実施形態において、各参加者U
iは、値が参加者に固有である要素e
iを所有している。参加者は、最初に、累積ツリー内のレベルの数を
【数33】
と決定するパラメータ0<ε<1について合意する。ノードごとの子ノードの数はO(n
ε)である。
【0097】
図6は、実施形態において、会社602に属する参加者のセットのための累積ツリー600の例を表す。実施形態において、参加者のグループは、会社の構造に少なくとも部分的に基づいて特定の構造において組織化される。例えば、参加者が、
図6で表されるような内部構造を有する会社602のメンバーである場合には、累積ツリーのレベル及びサブセットの数は、会社構造とともに参加者のポジションによって決定される。
【0098】
図6に示される例では、会社は、累積ツリー内の根ノード604によって表される。会社は、HR部門606、管理部門608、及び財務部門610を含む。HR部門606は、第1内部ノード612によって表される。管理部門608は、第2中間ノード614によって表される。財務部門610は、第3中間ノード616によって表される。
【0099】
実施形態において、各部門は、多数のエンティティ(人々、従業員、コンピュータシステム、又はデバイス)を有し、各エンティティは、対応する中間ノードの子であるリーフノードによって表される。例えば、第1中間ノード612は、3つの対応するクレデンシャル636、638及び640を有する3つの子ノード618、620及び622を有する。例えば、第2中間ノード614は、3つの対応するクレデンシャル642、644及び646を有する3つの子ノード624、6260及び628を有する。例えば、第3中間ノード616は、3つの対応するクレデンシャル648、650及び652を有する3つの子ノード630、632及び634を有する。
【0100】
実施形態において、グループが特定の階層構造で組織化されない場合には、参加者は、サブツリー内の要素の数pについて合意する。例において、
図6で、パラメータは、p=3であると決定され、各ノードは、2つの兄弟ノード(同じレベルlに位置する)を有する。参加者は、情報を見つけてp-1人の他のユーザと交換するよう通信する。
【0101】
図6で、例えば、参加者U
1(618に位置する)は、U
2(620にある)及びU
3(622にある)と通信する。参加者のランダムな順序を使用する実施形態では、参加者(よって、彼らの要素)は、ツリー内のサブグループにランダムに割り当てられる。
【0102】
[秘密共有及び秘密再構成]
実施形態において、参加者は、上記の秘密共有プロシージャを用いて共有秘密sについて合意するよう互いに協働する。秘密sは、累積ツリーのトラップドア情報として使用され、一般に、セットSのメンバーにのみ利用可能である。
【0103】
図7は、実施形態において、非中央集権的なプロトコルの場合に、秘密共有及び秘密再構成の部分として交換される情報700の例を表す。
図7に示されるように、各プレイヤーU
iは、x
iを割り当てられ、この情報は、公にされる(
図7の702を参照)。各プレイヤーU
i704は、次数tのランダム多項式f
i(x)を生成し、あらゆる他のプレイヤー706に多項式上の各々の点を、すなわち、f
i(x
j)mod nをUjへ(
図7の704、706を参照)秘密に送る。
【0104】
各プレイヤーUiは、受け取った全てのf1(xi),f2(xi),・・・fp(xi)(全てmod n,nは、楕円曲線上の点によって生成されるグループの位数である)を足し合わせて、多項式f(x)mod nに対するプレイヤーのシェアki=f(xi)mod nを構成する。
【0105】
参加者が彼らのシェアについて合意した後、参加者は、秘密sを再構成するよう協働することができ、秘密sは、累積ツリーのダイジェストを計算するために使用される。秘密を再構成するために、各プレイヤーは、a)各々のシェアkiと、b)bi,π、すなわち、彼らのラグランジュ基底多項式とを共有する。
【0106】
[ダイジェスト計算]
参加者は、a)共通秘密sを再構成し、b)各人の個々の証明及びツリーの大域ダイジェストを計算するために使用される情報を共有する。
【0107】
複数の実施が、ダイジェスト決定時に可能であり、そのうちの2つが以下で記載される。更なる実施が可能であってもよい。
【0108】
場合1-参加者は、累積ツリーの大域ダイジェストを計算することに興味がある。彼らは、トランザクションに署名するために任意の中間累積値又は局所ダイジェストを使用することを望まない。
【0109】
かような実施で、各参加者は、参加者の値のハッシュei’を他の参加者と共有する。ツリーのために選択された階層構造とは無関係に、トラップドアsは、セットSの全ての要素のハッシュとともに全てのユーザによって知られているので、あらゆる参加者が、次のように表現される場合に、累積ツリーの大域ダイジェストを計算することができる:
ψ(r)=g(e1’+s)(e2’+s)・・・(en’+s)。
【0110】
この場合に、全ての参加者は、局所ダイジェスト、我々の例では、
図6においてψ(d)、ψ(e)、ψ(f)を計算することができ、よって、それらの量は、トランザクションをロックするために使用不可能である。すなわち、如何なる参加者も、参加者が属するサブグループとは無関係に、署名することができる
この場合における値のハッシュe
i’は、
図7の708及び710で示されるようにコミュニケーションラウンド(communication round)を最適化するよう、秘密を再構成するために必要とされる情報とともに、全ての参加者710へ送られ得る。
【0111】
様々な実施形態において、ダイジェストのハッシュは、ロッキングスクリプトにおいて使用されてよい。例えば、
図5に示されるスクリプトが使用されてよい。
【0112】
場合2-参加者は、大域ダイジェスト及び局所ダイジェストの両方を計算することに興味があり、いくつかの例では、トランザクションスクリプトをロックするためにそれらを使用する。この実施では、特定のサブグループ内のユーザのみが彼らの局所ダイジェストを計算することが望ましい。
【0113】
例えば、
図6を参照すると、ユーザU
1、U
2、U
3のみがψ(d)を計算することができることが望ましい。このようにして、トランザクションスクリプトは、ψ’(d)(局所ダイジェストのハッシュ)によりロックされてよく、3人の参加者のうちのいずれかが、ハッシュψ(d)の原像(pre-image)を供給することによってトランザクションをアンロックすることができる。
【0114】
この実施形態において、兄弟と見なされる参加者(
図6の例ではU
1、U
2、U
3)のみが、彼らの値のハッシュe
i’,i=1,2,3を交換するよう通知する。ハッシュ値は、上記の場合1とは別なふうに、所与のサブツリーの兄弟の間でのみ交換され、このサブグループの参加者が彼らの共通の親のダイジェストを計算することを可能にし、(U
1、U
2、U
3)はψ(d)を計算する。他の参加者(U
4,・・・,U
9)は、圧縮情報、すなわち、後者のハッシュを受け取る。従って、この例では、プロトコルは、
図8に示されるように2つの余分のコミュニケーションラウンドを使用することになる。
【0115】
図8は、実施形態において、非中央集権的なプロトコルの場合に、秘密共有及び秘密再構成の部分として交換される情報の例を表す。最初に、秘密共有は、802及び804で全ての参加者の間で交換され、次いで、局所ダイジェストは、806及び808で兄弟間で再構成され、次いで、局所ダイジェストのハッシュは、810及び812で参加者へ送られる。
【0116】
他のサブツリーの局所ダイジェストのハッシュを考えると、全ての参加者が、全ての参加者の値のハッシュei’を知らなくても、累積ツリーの大域ダイジェストを計算することができる。1つの実施において、もしトラップドアsも全ての参加者に知られているならば、大域ダイジェストは次のように計算され得る:
ψ(r)=g(h(ψ(d))+s)(h(ψ(e))+s)(h(ψ(f))+s)。
【0117】
この第2の場合に、プロトコルの参加者は、ツリー内の各々のポジションに応じて、累積ツリーに関する異なる情報を再構成することができる。従って、階層が設定され、参加者は、階層内の各々のポジションに少なくとも部分的に基づいて異なる役割を引き受ける。
【0118】
例えば、
図6を参照すると、出力がψ’(e)又はψ’(f)によりロックされるトランザクションを生成すること可能であり、それにより、‘管理’グループ又は‘財務’グループに属する参加者のみがトランザクションに署名することができ、従って、関連するファンドをアンロックする。1つの実施において、トランザクションは、ビットコイントランザクションのような暗号通貨トランザクションである。
【0119】
図9は、実施形態において、1つ以上のグループからのいずれかの参加者が、親ダイジェストの座標を供給することによって、関連する出力をアンロックすることができる非中央集権的なプロトコルのためのトランザクションロッキングスクリプトの例を表す。ロッキングスクリプト900は、ブラケット< >内に含まれている。ファンドは、局所ダイジェストψ(e)のx、y座標(902でx
ψ(e)、y
ψ(e)により示される)又は局所ダイジェストψ(f)のx、y座標(x
ψ(f)、y
ψ(f))のどちらかをアンロッキングスクリプトにおいて供給することによって、アンロックされ得る。ロッキングスクリプトは、局所ダイジェストのハッシュ、すなわちψ’(e)912及びψ’(f)918を含む。
図9には、参加者が局所ダイジェストψ(e)の座標を供給する1つの可能な引き換えスクリプト(redeem script)が表されている(例えば、参加者は‘管理’グループに属する)。
【0120】
次のハッシュ関数
【数34】
が選択される:
h:(x,y)→x+2
ky(mod p)
なお、2
k>p。
図9では、同様に、k=2
kが指示される点に留意されたい。スクリプトは、アンロッキングスクリプトにおいて供給される座標x、yをハッシングすることによって、結果が2つの局所ダイジェストの一方のハッシュψ’(e)又はψ’(f)に対応することを検証する。スクリプトにおける更なるパラメータには、法p910、912及び累乗(power)k908、914がある。実施形態において、残りのパラメータ904、906、及び920は、結果コードであり、スクリプトが成功したか否かを示す。
【0121】
上記のハッシュ関数を使用することができるよう、オペコード(OP_CODES)OP_MUL及びOP_MODがサポートされるべきである。
【0122】
図10は、実施形態において、大域ダイジェストを再構成するための非中央集権的なプロトコル1000の例を表す。
図10は、累積ツリーの大域ダイジェストを再構成するプロトコルの非中央集権的なバージョンの場合1及び場合2について実行される動作をフローチャートの形式で表す。
図10に表されている動作は、様々な実施形態において、様々な参加者又はグループメンバーに関連するコンピュータシステムによって実行されてよい。
図10で表されるプロトコルは、コンピュータシステムのプロセッサによって実行される場合に、記載及び図示されている動作を実行するコンピュータシステムのメモリ上に記憶された命令として、実装されてよい。
【0123】
実施形態において、ブロック1002で、参加者は、使用される累積ツリーの構造について合意する。実施形態において、参加者は、累積ツリー内のレベルの数と、累積ツリー内の各中間ノードごとの子ノードの数とを含む累積ツリーのパラメータのセットを取り決める(ネゴシエーションする)。
【0124】
参加者は、共有される秘密を確立する多数の動作を実行する。ブロック1004で、各参加者Uiはxiを割り当てられ、この情報は交換される。各参加者Uiは、次数tのランダム多項式fi(x)を生成し、あらゆる他のプレイヤー706に多項式上の参加者の各々の点を、いくつかの例では、fi(xj)mod nをUj(ここで、j≠i)へ秘密に(各々の受取者の公開キーで暗号化される)送る(1006)。各プレイヤーUiは、受け取った全てのf1(xi),f2(xi),・・・fp(xi)(全てmod n,nは、楕円曲線上の点gによって生成されるグループの位数である)を足し合わせて、多項式f(x)mod nに対するプレイヤーのシェアを構成する(1008)。
【0125】
参加者が彼らのシェアについて合意した後、参加者は、秘密sを再構成するよう協働することができ、秘密sは、累積ツリーのダイジェストを計算するために使用される。場合1と標記される第1の実施では、秘密を再構成するために、各プレイヤーは、a)各々のシェアkiと、b)bi,π、すなわち、彼らのラグランジュ基底多項式と、c)彼らの値のハッシュei’とを共有する(1012)。場合2と標記される第2の実施では(1014)、秘密を再構成するために、a)各々のシェアkiと、b)bi,π、すなわち、彼らのラグランジュ基底多項式とを共有する。どちらの場合も、ブロック1018で、参加者は、上述されたように、秘密sを再構成することができる。
【0126】
夫々の場合に、参加者は、次のようにダイジェストを決定する。場合1において、ブロック1020で、参加者は、大域ダイジェストを決定することができる。場合2において、ハッシュ値は、所与のサブツリーの兄弟の間でのみ交換され(1022)、それによって、このサブグループの参加者が彼らの共通の親のダイジェストψ(a)を計算することを可能にする(1024)。他の参加者は、圧縮情報、すなわち、上記のハッシュを供給される(1026)。実施形態において、プロトコルの場合2は、図示されるように、余分のコミュニケーションラウンドを使用することになる。第1に、秘密共有は、全ての参加者の間で交換され、次いで、局所ダイジェストは、兄弟間で再構成され、次いで、局所ダイジェストのハッシュは、参加者へ送られる。望まれる場合に、いくつかの実施形態において、参加者は、ブロック1028で大域ダイジェストを決定してよい。
【0127】
本文書で記載される様々な実施形態は、効率的にグループへのメンバーシップを証明しかつブロックチェーンネットワーク上でデジタル資産の移転を認証するための解決法を提供する。
【0128】
いくつかの実施で、プロトコルは、一定サイズのオブジェクト内要素のグループ又はセット全体に関する情報、すなわち、累積ツリーのダイジェストを圧縮することを可能にする双線形写像アキュムレータに基づく。グループに関する情報は、局所ダイジェスト(中間レイヤ)及び大域ダイジェスト(ツリーの根)で累積ツリーに階層的に格納されている。
【0129】
一実施形態において、当局が累積ツリーに関する圧縮情報をユーザへ供給して、ユーザが彼らのメンバーシップの証明を計算することができるようにする中央集権的なプロトコルと、ユーザ自身が局所ダイジェストを構成するよう協働し、情報を交換して彼らの個々のメンバーシップの証明を計算する非中央集権的なプロトコルとが記載される。他の実施形態では、プロトコルの非中央集権的なバージョンがアキュミュレータを用いて記載される。非中央集権的なソリューションも、累積ツリーの局所ダイジェスト及び大域ダイジェストを構成するために必要とされる情報が(i)関連する(最低限の数の)参加者へのみ、(ii)可能な場合には(ii)可能な場合に同じコミュニケーションラウンドで送られる必要があるので、参加者間のコミュニケーションラウンドラウンドに関して効率的である。
【0130】
様々な実施で、セットにおいて保持される実際の値は、他のメンバー又は当局へ伝えられる必要がなく、それらのハッシュ値のみが伝えられればよい。これは、グループの要素が公開キー又は他のタイプの仮名及び匿名クレデンシャルである場合に、それらが決して公に開示されないことを意味する。
【0131】
参加者は、トランザクションスクリプトをロックするために、少なくとも部分的に使用ケースに基づいて、大域又は局所ダイジェストを使用することができる。このようにして、適当なサイズのスクリプトにより、所与のグループ(又はヒエラルキー内のサブグループ)に属するユーザのいずれかは、トランザクションを介したデジタル移転を認証することができる。
【0132】
図11は、本開示の少なくとも1つの実施形態を実施するために使用され得るコンピュータデバイス1100の実例となる略ブロック図である。様々な実施形態において、コンピュータデバイス1100は、先に図示及び記載されたシステムのいずれかを実施するために使用され得る。例えば、コンピュータデバイス1100は、データサーバ、ウェブサーバ、ポータブルコンピュータデバイス、パーソナルコンピュータ、又は任意の電子コンピュータデバイスとしての使用のために構成され得る。
図11に示されるように、コンピュータデバイス1100は、1つ以上のプロセッサ1102を含んでよい。プロセッサ1102は、実施形態において、バスサブシステム1104を介して多数の周辺サブシステムと通信するよう構成されかつそれらへ動作上結合される。いくつかの実施において、それらの周辺サブシステムは、メモリサブシステム1108及びファイル/ディスク記憶サブシステム1110を有する記憶サブシステム1106と、1つ以上のユーザインターフェース入力デバイス1112と、1つ以上のユーザインターフェース出力デバイス1114と、ネットワークインターフェイスサブシステム1116とを含む。そのような記憶サブシステム1106は、情報の一時的な又は長期の記憶のために使用されてよい。
【0133】
いくつかの実施形態において、バスサブシステム1104は、コンピュータデバイス1100の様々なコンポーネント及びサブシステムが意図されたように互いに通信することを可能にするメカニズムを提供する。バスサブシステム1104は、単一のバスとして概略的に示されているが、バスサブシステムの代替の実施形態は、複数のバスを利用する。いくつかの実施形態において、ネットワークインターフェイスサブシステム1116は、他のコンピュータデバイス及びネットワークへのインターフェースを提供する。ネットワークインターフェイスサブシステム1116は、いくつかの実施形態において、他のシステムからデータを受信しかつコンピュータデバイス1100から他のシステムへデータを送信するインターフェースとして機能する。いくつかの実施形態において、バスサブシステム1104は、詳細、探索項目などのようなデータを通信するために利用される。
【0134】
いくつかの実施形態において、ユーザインターフェース入力デバイス1112は、キーボード;組み込みマウス、トラックボール、タッチパッド、若しくはグラフィクスタブレットのような指示デバイス;スキャナ;バーコードスキャナ;ディスプレイに内蔵されたタッチスクリーン;発話認識システムやマイクロホンのような音声入力デバイス;及び他のタイプの入力デバイスのような1つ以上のユーザ入力デバイスを含む。一般に、「入力デバイス」との語の使用は、コンピュータデバイス1100に情報を入力するための全ての可能なタイプのデバイス及びメカニズムを含むよう意図される。いくつかの実施形態において、1つ以上のユーザインターフェース出力デバイス1114は、ディスプレイサブシステム、プリンタ、又は音声出力デバイスのような非視覚表示、などを含む。いくつかの実施形態において、ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)ようなフラットパネルデバイス、発光ダイオード(LED)ディスプレイ、又は投影型若しくは他のディスプレイデバイスを含む。一般に、「出力デバイス」との語の使用は、コンピュータデバイス1100から情報を出力するための全ての可能なタイプのデバイス及びメカニズムを含むよう意図される。1つ以上のユーザインターフェース出力デバイス1114は、例えば、記載されるプロセス及びその変形を実行するアプリケーションとのユーザインタラクションを、そのようなインタラクションが適切であり得る場合に促すよう、ユーザインターフェースを提示するために使用され得る。
【0135】
いくつかの実施形態において、記憶サブシステム1106は、本開示の少なくとも1つの実施形態の機能性を提供する基本プログラミング及びデータ構成を記憶するコンピュータ可読記憶媒体を提供する。アプリケーション(プログラム、コードモジュール、命令)は、いくつかの実施形態において1つ以上のプロセッサによって実行される場合に、本開示の1つ以上の実施形態の機能性を提供し、そして、実施形態において、記憶サブシステム1106に記憶されている。それらのアプリケーションモジュール又は命令は、1つ以上のプロセッサ1102によって実行され得る。様々な実施形態において、記憶サブシステム1106は、本開示に従って使用されるデータを記憶するレポジトリを更に提供する。いくつかの実施形態において、記憶サブシステム1106は、メモリサブシステム1108及びファイル/ディスク記憶サブシステム1110を有する。
【0136】
実施形態において、メモリサブシステム1108は、プログラム実行中の命令及びデータの記憶のためのメインラインダムアクセスメモリ(RAM)1118、及び/又は固定命令が記憶され得るリードオンリーメモリ(ROM)1120のような、多数のメモリを含む。いくつかの実施形態において、ファイル/ディスク記憶サブシステム1110は、プログラム及びデータファイルのための非一時的な恒久的(不揮発性)記憶を提供し、ハードディスクドライブ、関連するリムーバブル媒体を伴っフロッピー(登録商標)ディスクドライブ、コンパクトディスク・リードオンリーメモリ(CD-ROM)ドライブ、光学ドライブ、リムーバブル媒体カートリッジ、又は他の記憶媒体などを含むことができる。
【0137】
いくつかの実施形態において、コンピュータデバイス1100は、少なくとも1つのローカルクロック1124を含む。ローカルクロック1124は、いくつかの実施形態において、特定の開始日から発生したチェック(ticks)の数を表すカウンタであり、そして、いくつかの実施形態において、コンピュータデバイス1100の内部に配置される。様々な実施形態において、ローカルクロック1124は、特定のクロックパルスでコンピュータデバイス1100及びその中に含まれるサブシステムのためにプロセッサ内のデータ転送を同期させるために使用され、コンピュータデバイス1100とデータセンター内の他のシステムとの間の同期動作を協調させるために使用され得る。他の実施形態では、ローカルクロックは、プログラム可能な内部タイマである。
【0138】
コンピュータデバイス1100は、ポータブルコンピュータデバイス、タブレットコンピュータ、ワークステーション、又は後述される任意の他のデバイスを含む様々なタイプのいずれかであってよい。更には、コンピュータデバイス1100は、いくつかの実施形態において、1つ以上のポート(例えば、USB、ヘッドフォンジャック、ライトニングコネクタ、など)を通じてコンピュータデバイス1100へ接続され得る他のデバイスを含むことができる。実施形態において、そのようなデバイスは、光ファイバコネクタを受け入れるよう構成されたポートを含む。従って、いくつかの実施形態において、このデバイスは、光信号を、処理のために、デバイスをコンピュータデバイス1100へ接続するポートを通じて伝送される電気信号に変換するよう構成される。コンピュータ及びネットワークの常に変化している性質により、
図11に表されているコンピュータデバイス1100の記載は、デバイスの好適な実施形態を説明するために単に具体例として意図される。
図11に表されているシステムよりも多い又は少ないコンポーネントを有している多くの他の構成が可能である。
【0139】
従って、明細書及び図面は、限定の意味ではなく実例の意味で考えられるべきである。なお、様々な改良及び変更が、特許請求の範囲で示されている本発明の範囲から外れることなしに、それらに行われてよいことは、明らかである。同様に、他の変形は、本開示の範囲内にある。よって、開示されている技術は、様々な変更及び代替の構成の余地がある一方で、その特定の説明されている実施形態が図面に示されており、先に詳細に記載されている。なお、本発明を開示されている具体的な形態に制限する意図はなく、対照的に、本発明は、添付の特許請求の範囲で定義される発明の範囲内にある全ての変更、代替の構成及び同等物をカバーすべきであることが理解されるべきである。
【0140】
開示されている実施形態について記載する文脈中の「1つの~」(a又はan)及び「前記~」(the)並びにとの語及び類似の指示語の使用は、別なふうに示されない限り、又は文脈によって明らかに否定されない限り、単数及び複数の両方をカバーすると考えられるべきである。「有する」(comprising)、「備える」(having)、「含む」(including)、及び「包含する」(containing)との語は、別なふうに述べられない限りは、非限定的な(open-ended)語(すなわち、「含むが限られない」を意味する)と考えられるべきである。「接続される」(connected)との語は、修飾されずかつ物理的な接続に言及する場合に、たとえ介在する何かがあるとしても、部分的に又は全体的に包含されるか、取り付けられるか、又は接合されると考えられるべきである。本開示中の値の範囲の列挙は、別なふうに示されない限りは、範囲内にある各別個の値に個別に言及している簡便な方法としての機能を果たすよう単に意図され、各別個の値は、あたかも個別に列挙されているかのように本明細書に組み込まれる。「セット」(set)(例えば「アイテムのセット」)又は「サブセット」(subset)との語の使用は、別なふうに述べられない限り、又は文脈によって否定されない限り、1以上のメンバーを有する非空集合と考えられるべきである。更に、別なふうに述べられない限り、又は文脈によって否定されない限り、対応するセットの「サブセット」は、対応するセットの適切なサブセットを必ずしも表さず、サブセット及び対応するサブセットは等しいことがある。
【0141】
「A、B、及びCの少なくとも1つ」又は「A、B又はCの少なくとも1つ」の形を取る言い回しのような連接語は、特に別なふうに述べられない限り、又はさもなければ、文脈によって明らかに否定されない限り、アイテム、項目などがA又はB又はCのいずれかであるか、あるいは、A及びB及びCのセットの中のいずれかの非空部分集合であることを示すために一般に使用されると文脈により理解される。例えば、3つのメンバーを有するセットの実例では、「A、B、及びCの少なくとも1つ」及び「A、B又はCの少なくとも1つ」との連接語句は、次のセット:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}の中のいずれかを指す。よって、このような連接語は、一般的に、特定の実施形態がAの少なくとも1つ、Bの少なくとも1つ、及びCの少なくとも1つが夫々存在することを必要とすることを暗示するよう意図されない。
【0142】
記載されるプロセスの動作は、別なふうに示されない限り、又はさもなければ、文脈によって明らかに否定されない限り、如何なる適切な順序でも実行され得る。記載されるプロセス(あるいは、その変形及び/又は組み合わせ)は、実行可能命令により構成される1つ以上のコンピュータシステムの制御下で実行可能であり、1つ以上のプロセッサで集合的に実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、若しくは1つ以上のアプリケーション)として、ハードウェアによって、又はそれらの組み合わせによって実施されてよい。いくつかの実施形態において、コードは、例えば、1つ以上のプロセッサによって実行可能な複数の命令を有するコンピュータプログラムの形で、コンピュータ可読記憶媒体に記憶され得る。いくつかの実施形態において、コンピュータ可読記憶媒体は非一時的である。
【0143】
与えられているありとあらゆる例又は例示語(例えば、「~のような」)の使用は、単に、本発明の実施形態をより良く説明するよう意図され、別なふうに請求されない限りは、本発明の範囲を制限しない。明細書中の言語は、本発明の実施に必須なものとして如何なる請求されていない要素も示すと考えられるべきではない。
【0144】
本開示の実施形態は、本発明を実行するために本発明者に知られているベストモードを含め、記載されている。それらの実施形態の変形は、上記の記載を読むことで当業者に明らかになるだろう。本発明者は、そのような変形を必要に応じて用いることを当業者に期待しており、本発明者は、本開示実施形態が具体的に記載されているのとは別なふうに実施されることを意図する。従って、本開示の範囲は、適用される法律によって認められるように、本願に添付される特許請求の範囲で挙げられている対象の全ての変更及び同等物を含む。更に、上記の要素のその全てのとり得る変形での如何なる組み合わせも、別なふうに示されない限り、又はさもなければ、文脈によって明らかに否定されない限り、本開示の範囲によって包含されている。
【0145】
引用されている出版物、特許出願、及び特許を含む全ての参考文献は、各参考文献が参照により援用されるよう個別にかつ具体的に示されており、その全文が示されているかのように、同程度に参照により本願に援用される。
【0146】
上記の実施形態は、本発明を制限するのではなく説明しているのであって、当業者は、添付の特許請求の範囲によって定義される本発明の範囲から外れることなしに、多くの代替の実施形態を設計することが可能である点が留意されるべきである。特許請求の範囲において、かっこ内の如何なる参照符号も、特許請求の範囲を制限するものとして解釈されるべきではない。語「有する」(comprising及びcomprises)などは、いずれかの請求項又は明細書の全文に挙げられているもの以外の要素又はステップの存在を除外しない。本明細書中、「有する」(comprises)は、「~を含むか、又はそれらから成る」(includes or consists of)を意味し、「有する」(comprising)は、「~を含むか、又はそれらから成る」(including or consisting of)を意味する。要素の単一参照は、そのような要素の複数参照を除外せず、逆もまた同じである。本発明は、いくつかの個別要素を有するハードウェアを用いて、且つ、適切にプログラムされたコンピュータを用いて、実施されてよい。いくつかの手段を列挙している装置クレームでは、それらの手段のうちのいくつかが、ハードウェアの同一アイテムによって具現されてもよい。特定の手段が相互に異なる請求項で挙げられているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないことを示すものではない。
【0147】
[要約]
本開示で記載及び提案されている技術は、効率的にグループへのメンバーシップを証明し、ブロックチェーンネットワーク上でのデジタル資産の移転を認証することによって、コンピュータの分野、特に、ブロックチェーントランザクションの分野を改善する。更には、本開示で記載及び提案されている技術は、トランザクション出力を請求する場合に開示される情報の量を減らすことによって、そのようなトランザクションの安全性を改善する。様々な実施で、セットにおいて保持される実際の値は、他のメンバー又は当局へ伝えられる必要がなく、それらのハッシュ値のみが伝えられればよい。これは、グループの要素が公開キー又は他のタイプの仮名及び匿名クレデンシャルである場合に、それらが決して公に開示されないことを意味する。更に、本開示で記載及び提案されている技術は、グループメンバーシップを制御する中央当局の存在なしでグループメンバーシップを決定することで特に生じる問題を解決するために、必然的にコンピュータ技術に根ざしている。非中央集権的なソリューションはまた、累積ツリーの局所及び大域ダイジェストを構成するために必要とされる情報が(i)関係がある参加者へのみ、(ii)可能な場合に同じコミュニケーションラウンドで送られる必要があるので、参加者間のコミュニケーションラウンドに関して効率的である。
【外国語明細書】