IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特許7554493閾ボールトを生成する、コンピュータにより実施される方法
<>
  • 特許-閾ボールトを生成する、コンピュータにより実施される方法 図1
  • 特許-閾ボールトを生成する、コンピュータにより実施される方法 図2
  • 特許-閾ボールトを生成する、コンピュータにより実施される方法 図3
  • 特許-閾ボールトを生成する、コンピュータにより実施される方法 図4
  • 特許-閾ボールトを生成する、コンピュータにより実施される方法 図5
  • 特許-閾ボールトを生成する、コンピュータにより実施される方法 図6
  • 特許-閾ボールトを生成する、コンピュータにより実施される方法 図7
  • 特許-閾ボールトを生成する、コンピュータにより実施される方法 図8
  • 特許-閾ボールトを生成する、コンピュータにより実施される方法 図9
  • 特許-閾ボールトを生成する、コンピュータにより実施される方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-11
(45)【発行日】2024-09-20
(54)【発明の名称】閾ボールトを生成する、コンピュータにより実施される方法
(51)【国際特許分類】
   H04L 9/08 20060101AFI20240912BHJP
【FI】
H04L9/08 C
H04L9/08 F
【請求項の数】 13
【外国語出願】
(21)【出願番号】P 2022206111
(22)【出願日】2022-12-23
(62)【分割の表示】P 2020506804の分割
【原出願日】2018-08-13
(65)【公開番号】P2023024683
(43)【公開日】2023-02-16
【審査請求日】2022-12-23
(31)【優先権主張番号】1713064.2
(32)【優先日】2017-08-15
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】PCT/IB2017/054961
(32)【優先日】2017-08-15
(33)【優先権主張国・地域又は機関】IB
(31)【優先権主張番号】1714660.6
(32)【優先日】2017-09-12
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】PCT/IB2017/055497
(32)【優先日】2017-09-12
(33)【優先権主張国・地域又は機関】IB
(31)【優先権主張番号】PCT/IB2017/057782
(32)【優先日】2017-12-11
(33)【優先権主張国・地域又は機関】IB
(31)【優先権主張番号】PCT/IB2018/055604
(32)【優先日】2018-07-26
(33)【優先権主張国・地域又は機関】IB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ライト,クレイグ スティーヴン
【審査官】青木 重徳
(56)【参考文献】
【文献】Steven Goldfeder et al.,Securing Bitcoin wallets via threshold signatures,SEMANTIC SCHOLAR,Corpus ID: 16244349,[オンライン],2014年,<URL: http://diyhpl.us/~bryan/papers2/bitcoin/Securing%20Bitcoin%20wallets%20via%20threshold%20signatures.pdf>,(検索日 令和4年3月23日)、インターネット
【文献】Pratyush Dikshit et al.,Efficient Weighter Threshold ECDSA for Securing Bitcoin Wallet,2017 ISEA ASIA SECURITY AND PRIVACY (ISEASP),IEEE,2017年01月29日,PAGE(S):1 - 9,http://dx.doi.org/10.1109/ISEASP.2017.7976994
【文献】Steven Goldfeder et al.,Securing Bitcoin wallets via threshold signatures,[ONLINE],2014年06月03日,https://www.semanticscholar.org/paper/Securing-Bitcoin-wallets-via-threshold-signatures-Goldfeder-Felten/3ff6215ea5060d1fffb6f46be0e23ff94c1e9ef4
【文献】Maged H. et al.,A ROBUST THRESHOLD ELLIPTIC CURVE DIGITAL SIGNATURE PROVIDING A NEW VERIFIABLE SECRET SHARING SCHEME,MIDWEST SYMPOSIUM ON CIRCUITS AND SYSTEMS[ONLINE],INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS,2003年12月27日,VOL:1,PAGE(S):276 - 280,http://dx.doi.org/10.1109/MWSCAS.2003.1562272
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
THE ACM DIGITAL LIBRARY
(57)【特許請求の範囲】
【請求項1】
閾ボールトを安全に生成する、コンピュータにより実施される方法であって、
前記閾ボールトは、公開鍵アドレス、秘密鍵及び閾値kを有し、複数のノードの中の各ノードは、各々の第1秘密及び各々のk-1次多項式関数を有し、各ノードの各々の第1秘密が前記k-1次多項式関数の定数項としてセットされ、前記複数のノードは第1ノードを含み、該第1ノードはその各々の多項式関数である第1多項式関数を有前記第1ノードによって実行される当該方法は、
前記複数のノードの中の他のノードの夫々について、前記第1多項式関数内の変数を、当該他のノードに関連した値にセットし、その値に対する前記第1多項式関数の各々の結果を求め、該各々の結果を当該他のノードへ安全に送ることと、
複数の前記他のノードから、各々の第2秘密を受信することであり、該各々の第2秘密の夫々は、前記第1ノードに関連した第1値に対する当該他のノードの各々の多項式関数の結果である、ことと、
前記他のノードに対して、前記各々の結果の夫々の楕円曲線点乗算を送ることと、
前記複数の他のノードから、該他のノードによって前記複数のノードのいずれかと共有される前記各々の第2秘密の楕円曲線点乗算を受信することと、
前記他のノードから受信された前記各々の第2秘密の和に基づき、前記秘密鍵の第1秘密鍵シェアを形成及び格納することと、
少なくとも閾数のノードから、前記各々の第2秘密の前記受信された楕円曲線点乗算の和に基づき、且つ、多項式補間を用いて、前記秘密鍵に対応する公開鍵を決定することと
を有する方法。
【請求項2】
各々の多項式関数の夫々は、当該多項式関数に対応する各々のノードによって独立して選択され、
各々の多項式関数の夫々は、係数の異なる組を有する、
請求項1に記載の方法。
【請求項3】
各々の多項式関数の夫々は、次の式
【数1】
により表され、
は、i番目のノードの多項式関数であり、nは、楕円曲線の整数位数であり、xは、当該多項式関数内の変数であり、αは、当該多項式関数のための係数の組であり、tは、インデックスである、
請求項1又は2に記載の方法。
【請求項4】
前記他のノードに対して、前記第1多項式関数の各係数の楕円曲線点乗算を送ることを更に有する、
請求項1乃至3のうちいずれか一項に記載の方法。
【請求項5】
前記複数の他のノードから、前記複数の他のノードに対応する各々の多項式関数の各係数の楕円曲線点乗算を受信することを更に有する、
請求項1乃至4のうちいずれか一項に記載の方法。
【請求項6】
前記他のノードから受信された前記各々の第2秘密を妥当性確認することを更に有する、
請求項1乃至5のうちいずれか一項に記載の方法。
【請求項7】
前記第1秘密鍵シェアを形成することは、次の式
【数2】
により表される和を決定することを含み、
A(i)は、前記第1秘密鍵シェアであり、hは、前記他のノードのインデックスであり、f()は、h番目のノードの各々の多項式関数であり、nは、楕円曲線の整数位数であり、iは、前記第1ノードに関連した前記第1値であり、
各非ヌルf(i),h=1,・・・,jは、前記各々の第2秘密のうちの1つである、
請求項1乃至6のうちいずれか一項に記載の方法。
【請求項8】
ジョイントゼロ秘密シェアのディーラーなし秘密分配に前記他のノードとともに協調して参加することを通じて前記第1秘密鍵シェアを変更することを更に有し、これによって、前記第1ノードは、第1ゼロ秘密シェアを受信し、該第1ゼロ秘密シェアを加えることによって前記第1秘密鍵シェアを変更して、変更された第1秘密鍵シェアを形成及び格納する、
請求項1乃至7のうちいずれか一項に記載の方法。
【請求項9】
前記公開鍵を決定することは、前記各々の第2秘密の前記受信された楕円曲線点乗算の複数の既知の値から前記多項式関数の係数を決定することによって、前記多項式関数を決定することを有する、
請求項1乃至8のうちいずれか一項に記載の方法。
【請求項10】
前記多項式関数を決定することは、誤り訂正アルゴリズムを実行することを有する、
請求項9に記載の方法。
【請求項11】
前記多項式関数を決定することは、バーレカンプ-ウェルチ復号化アルゴリズムを実行することを有する、
請求項9又は10に記載の方法。
【請求項12】
前記多項式関数を決定することは、
誤り位置多項式関数、及び前記多項式関数と前記誤り位置多項式関数との積である第2多項式関数とを定義することと、
前記各々の第2秘密の前記受信された楕円曲線点乗算の複数の既知の値から前記第2多項式関数及び前記誤り位置多項式関数の係数を決定することと、
前記第2多項式関数及び前記誤り位置多項式関数から前記多項式関数を決定することと
を有する、
請求項9乃至11のうちいずれか一項に記載の方法。
【請求項13】
ブロックチェーントランザクションに参加するコンピューティングデバイスであって、
当該コンピューティングデバイスは、複数のノードの中の第1ノードであり、
当該コンピューティングデバイスは、
プロセッサと、
メモリと、
前記複数のノードの中の他のノードへのネットワーク接続を提供するネットワークインターフェイスと、
前記プロセッサによって実行される場合に、該プロセッサに、請求項1乃至12のうちいずれか一項に記載の方法を実行させるコンピュータ実行可能命令を含むブロックチェーンアプリケーションと
を有する、
ンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、概して、データ及びコンピュータに基づくリソースの安全性に関係がある。より具体的には、本願は、楕円曲線暗号化(Elliptic Curve Cryptography)、楕円曲線デジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm)(ECDSA)アプリケーション、及び閾値暗号化(Threshold Cryptography)に関係がある。例えば、本願は、ECDSA要件に準拠しているデジタル署名を生成することを閾数のノードに可能にしながら、如何なるノード又はサードパーティも秘密鍵自体を生成することができないように、公開-秘密鍵対を安全に且つ非公開で協調して生成するプロセスの例を記載する。
【背景技術】
【0002】
本文書中、あらゆる形式の電子的な、コンピュータに基づく分散台帳(distributed ledgers)を含むよう語「ブロックチェーン」が使用される。それらは、合意に基づくブロックチェーン及びトランザクションチェーン技術、許可(permissioned)及び無許可(un-permissioned)台帳、共有台帳、並びにこれらの変形を含む。ブロックチェーン技術の最も広く知られた応用は、他のブロックチェーン実施が提案及び開発されているとはいえ、ビットコイン台帳である。ビットコインが、便宜上、単に説明のために本明細書で言及され得るが、本発明は、ビットコインブロックチェーンとともに使用することに限られず、代替のブロックチェーン実施及びプロトコルが本願の適用範囲内にあることが留意されるべきである。
【0003】
ブロックチェーンは、ピア・ツー・ピアの電子台帳であり、これは、トランザクションから成るブロックで構成された、コンピュータに基づく非中央集権型システムとして実装される。各トランザクションは、ブロックチェーンシステム内のアドレス間のデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも1つの入力及び少なくとも1つの出力を含む。ブロックチェーンにその始まり以来書き込まれてきた全てのトランザクションの永久的且つ不変な記録を構成するようブロックどうしが連鎖するように、各ブロックは前のブロックのハッシュを含む。
【0004】
非中央集権化(decentralisation)の概念は、ブロックチェーンシステムにおいて基本的なことである。非中央集権型システムには、分散型又は中央集権型システムとは異なり、単一障害点がないという利点がある。従って、それらは、向上した安全性及び回復力のレベルを提供する。この安全性は、楕円曲線暗号化及びECDSAのような既知の暗号化技術の使用によって更に高められる。
【0005】
ブロックチェーンシステム内のデジタルアセット(通貨、有形資産、知的資産、コンピューティング資源、又は何らかの他の物若しくはサービスを代表することができる。)に対する所有権及び制御は、公開-秘密鍵対により制御される。未使用トランザクション出力(unspent transaction output)(UTXO)アドレスは、公開鍵と同種であり、そのUXTOに割り当てられているアセットに対する制御は、対応する秘密鍵の使用によって証明される。UXTOを他のトランザクションへの入力として使用することによってデジタルアセットを移すために、入力は、対応する秘密鍵によってデジタル署名されなければならない。従って、秘密鍵の安全性及び秘密性に対する制御は、ブロックチェーンの安全性及び信頼性において基本的なことである。
【発明の概要】
【0006】
よって、そのようなシステムの安全性を更に高める解決法の必要性が存在する。本願は、とりわけ、そのような利点を提供する。
【0007】
本願は、添付の特許請求の範囲で定義される方法及びシステムを提供する。
【0008】
本願の態様によれば、閾ボールト(threshold vault)を安全に生成する、コンピュータにより実施される方法であって、前記閾ボールトは、公開鍵アドレス、秘密鍵及び閾値kを有し、複数のノードの中の各ノードは、各々の第1秘密と、及び当該ノードの各々の第1秘密が自由項としてセットされている各々のk-1次多項式関数を有し、前記複数のノードは、第1多項式関数を有する第1ノードを含む、前記方法が提供される。前記第1ノードによって実行される前記方法は、前記複数のノードの中の他のノードの夫々について、前記第1多項式関数内の変数を、当該他のノードに関連した値にセットし、その値に対する前記第1多項式関数の各々の結果を求め、該各々の結果を当該他のノードへ安全に送ることを含む。前記方法は、
少なくとも閾数の前記他のノードから、各々の第2秘密を受信し、該各々の第2秘密の夫々は、前記第1ノードに関連した第1値に対する当該他のノードの各々の多項式関数の結果である、ことと、
前記他のノードに対して、各々の結果の夫々の楕円曲線点乗算を送ることと、少なくとも前記閾数の前記他のノードから、該他のノードによって前記複数のノードのいずれかと共有される前記各々の第2秘密の楕円曲線点乗算を受信することと、
前記他のノードから受信された前記各々の第2秘密の和に基づき、前記秘密鍵の第1秘密鍵シェアを形成及び格納することと、
前記各々の第2秘密の前記受信された楕円曲線点乗算の和に基づき、且つ、多項式補間を用いて、前記秘密鍵に対応する公開鍵を決定することと
を更に含む。
【0009】
いくつかの実施において、各々の多項式関数の夫々は、その各々のノードによって独立して選択され、各々の多項式関数の夫々は、係数の異なる組を有する。多項式は、次の式
【数1】
により表され得る。
【0010】
いくつかの実施において、前記方法は、前記他のノードに対して、前記第1多項式関数の各係数の楕円曲線点乗算を送ることを含む。前記方法は、少なくとも前記閾数の前記他のノードから、それらの各々の多項式関数の各係数の楕円曲線点乗算を受信することを更に含んでもよい。また、前記方法は、前記他のノードから受信された前記各々の第2秘密を妥当性確認することを更に含んでもよい。
【0011】
前記第1秘密鍵シェアは、次の式
【数2】
により表される和を決定することから取得され得る。ここで、fは、i番目のノードの多項式関数であり、nは、楕円曲線の整数位数であり、xは、当該多項式関数内の変数であり、aは、当該多項式関数のための係数の組であり、tは、インデックスである。
【0012】
いくつかの実施において、前記方法は、ジョイントゼロ秘密シェアのディーラーなし秘密分配に前記他のノードとともに協調して参加することを通じて前記第1秘密鍵シェアを変更することを含み、これによって、前記第1ノードは、第1ゼロ秘密シェアを受信し、該第1ゼロ秘密シェアを加えることによって前記第1秘密鍵シェアを変更して、変更された第1秘密鍵シェアを形成及び格納する。
【0013】
前記公開鍵を決定することは、前記各々の第2秘密の前記受信された楕円曲線点乗算の複数の既知の値から前記多項式関数の係数を決定することによって、前記多項式関数を決定することを有してよい。
【0014】
前記多項式関数を決定することは、誤り訂正アルゴリズムを実行することを有してよい。
【0015】
前記多項式関数を決定することは、バーレカンプ-ウェルチ(Berlekamp-Welch)復号化アルゴリズムを実行することを有してよい。
【0016】
前記多項式関数を決定することは、
誤り位置(error locator)多項式関数、及び前記多項式関数と前記誤り位置多項式関数との積である第2多項式関数とを定義することと、
前記各々の第2秘密の前記受信された楕円曲線点乗算の複数の既知の値から前記第2多項式関数及び前記誤り位置多項式関数の係数を決定することと、
前記第2多項式関数及び前記誤り位置多項式関数から前記多項式関数を決定することと
を有してよい。
【0017】
他の態様で、本開示は、閾ボールトに関するメッセージのためのデジタル署名を安全に生成する、コンピュータにより実施される方法であって、前記閾ボールトは、公開鍵アドレス、秘密鍵及び閾値を有し、複数のノードの中の各ノードは、各々の秘密鍵シェア、一時鍵シェア、乗算マスクシェア、第1加算マスクシェア、及び第2加算マスクシェアを有する、前記方法を開示する。前記複数のノードの中の第1ノードによって実行される前記方法は、
前記乗算マスクシェアによって及び前記第1加算マスクシェアによってマスキングされた前記一時鍵シェアから二重マスク化された鍵シェアを、並びに前記乗算マスクシェアの楕円曲線点乗算を生成及び共有することと、
少なくとも閾数の他のノードから、それらの各々の二重マスク化された鍵シェア、及びそれらの乗算マスクシェアの各々の楕円曲線点乗算を受信することと、
前記二重マスク化された鍵シェアに対する多項式補間及び前記乗算マスクシェアの前記楕円曲線点乗算に対する多項式補間を用いて第1署名成分を決定することと、
前記第2加算マスクシェアによってマスキングされた前記メッセージ、前記秘密鍵シェア、前記第1署名成分、及び前記一時鍵シェアに基づき、第2署名成分シェアを決定及び公開することと
を含む。少なくとも前記閾数の前記他のノードの各々の第2署名成分シェアから、第2署名成分が取得される。
【0018】
いくつかの実施において、前記方法は、ディーラーなし秘密分配を用いて、前記第1ノードの秘密鍵シェア、一時鍵シェア、及び乗算マスクシェアを生成することを含む。前記方法は、ジョイントゼロ秘密シェアを用いて、前記第1ノードの第1加算マスクシェア及び第2加算マスクシェアを生成することを更に含む。いくつかの実施において、前記二重マスク化された鍵シェアを生成することは、

θ=Dk(i)α+βmodn

を決定することを含み、θは、前記二重マスク化された鍵シェアであり、Dk(i)は、前記第1ノードの一時鍵シェアであり、αは、前記第1ノードの乗算マスクシェアであり、βは、前記第1ノードの第1加算マスクシェアであり、nは、楕円曲線の整数位数である。
【0019】
いくつかの実施において、前記二重マスク化された鍵シェアに対する前記多項式補間は、乗算的にマスク化された一時鍵をもたらし、前記乗算マスクシェアの前記楕円曲線点乗算に対する前記多項式補間は、乗算マスクの楕円曲線点乗算をもたらし、前記第1署名成分を決定することは、前記乗算マスクの楕円曲線点乗算と前記乗算的にマスク化された一時鍵の逆数との積を決定することを含む。
【0020】
いくつかの実施において、前記第2署名成分シェアsを決定することは、

=Dk(i)(e+dA(i)r)+cmodn

を決定することを含み、Dk(i)は、前記第1ノードの一時鍵シェアであり、eは、前記メッセージのハッシュであり、dA(i)は、前記第1ノードの秘密鍵シェアであり、rは、前記第1署名成分であり、cは、前記第2加算マスクシェアであり、nは、楕円曲線の整数位数である。
【0021】
更に、別の実施において、前記方法は、少なくとも前記閾数の前記他のノードの前記第2署名成分シェアに対する多項式補間により前記第2署名成分を決定することを含む。いくつかの場合に、前記方法は、前記メッセージを含むトランザクションに対して前記第1署名成分及び前記第2署名成分を付加し、該トランザクションをブロックチェーンネットワークへサブミットすることを含む。
【0022】
更なる態様で、本願は、コンピュータにより実施される、マルチパーティ計算の方法であって、
複数の第1ノードの間で複数の秘密のシェアを分配し、夫々の前記秘密は、各々の多項式関数の自由項であり、夫々の前記シェアは、前記第1ノードに関連した前記多項式関数の各々の値であり、それにより、前記秘密は、閾数の前記シェアの多項式補間によってアクセス可能であり、前記閾数のシェアがない場合にアクセス不可能である、ことと、
第2ノードで、複数の前記第1ノードから、計算された秘密の各々のシェアを受信し、夫々の前記第1ノードは、該第1ノードに割り当てられている各々の複数の秘密のシェアに対して少なくとも1の所定の計算を実行することによって、前記計算された秘密のそのシェアを計算する、ことと、
前記第2ノードで、前記計算された秘密の少なくとも閾数の前記シェアの多項式補間によって、前記計算された秘密を決定することと
を有する前記方法を開示する。
【0023】
これは、第1ノードが個々の秘密又は計算された秘密を決定することができないように、計算が行われることを可能にするという利点をもたらす。
【0024】
各多項式関数、次の式
【数3】
により表されてよく、fは、i番目のノードの多項式関数であり、nは、楕円曲線の整数位数であり、xは、当該多項式関数内の変数であり、aは、当該多項式関数のための係数の組であり、tは、インデックスである。
【0025】
前記方法は、複数のノードに対して、複数の前記多項式関数の各係数の楕円曲線点乗算を送ることを更に有してよい。
【0026】
前記方法は、複数のノードに対して、該複数のノードの夫々に関連した少なくとも1の前記多項式関数の値の楕円曲線点乗算を送ることを更に有してよい。
【0027】
前記方法は、少なくとも1の前記ノードに関連した少なくとも1の前記多項式関数の値の楕円曲線点乗算と、前記多項式関数の係数の楕円曲線点乗算の和との間の一貫性を検証することを更に有してよい。
【0028】
これは、不正直な参加者がより迅速に識別され、多項式補間に寄与することから除外されることを可能にするという利点をもたらす。
【0029】
前記計算された秘密のシェアを決定することは、

μ=x・ymodn

を決定することを含んでよく、xは、第1秘密のシェアであり、yは、第2秘密のシェアであり、nは、楕円曲線の整数位数である。
【0030】
前記計算された秘密のシェアを決定することは、

+ymodn

を決定することを含んでよく、xは、第1秘密のシェアであり、yは、第2秘密のシェアであり、nは、楕円曲線の整数位数である。
【0031】
前記計算された秘密のシェアを決定することは、

-1modn

を決定することを含んでよく、x -1は、第1秘密のシェアの、nを法とする逆数であり、nは、楕円曲線の整数位数である。
【0032】
前記方法は、ゼロに等しい多項式関数の自由項であるゼロ秘密のシェアを加えることによって、前記計算された秘密の変更されたシェアを供給して、前記計算された秘密が、閾数の前記変更されたシェアの多項式補間によってアクセス可能であり、前記閾数のシェアがない場合にアクセス不可能であるようにすることを更に有してよい。
【0033】
これは、更なる安全性をプロセスに加えるという利点をもたらす。
【0034】
前記計算された秘密を決定することは、該計算された秘密のシェアの複数の既知の値から多項式関数の係数を決定することによって、前記計算された秘密のシェアに対応する前記多項式関数を決定することを有してよい。
【0035】
前記多項式関数を決定することは、誤り訂正アルゴリズムを実行することを有してよい。
【0036】
前記多項式関数を決定することは、バーレカンプ-ウェルチ復号化アルゴリズムを実行することを有してよい。
【0037】
前記多項式関数を決定することは、
誤り位置多項式関数、及び前記計算された秘密のシェアに関連した前記多項式関数と前記誤り位置多項式関数との積である第2多項式関数とを定義することと、
前記計算された秘密のシェアの複数の既知の値から前記第2多項式関数及び前記誤り位置多項式関数の係数を決定することと、
前記第2多項式関数及び前記誤り位置多項式関数から前記計算された秘密のシェアに関連した前記多項式関数を決定することと
を有してよい。
【0038】
更なる態様で、本願は、複数のノードの間で公開-秘密鍵暗号化システムの秘密鍵のシェアを分配する、コンピュータにより実施される方法であって、前記複数のノードの夫々は、各々の第1秘密、当該ノードの各々の第1秘密が自由項としてセットされた各々の第1多項式関数、及び秘密鍵の各々の第1シェアを有し、前記秘密鍵は、前記第1秘密の和であり且つ第2多項式関数の自由項であり、前記秘密鍵は、少なくとも閾数の前記第1シェアの多項式補間によってアクセス可能であり、前記閾数に満たない前記第1シェアにはアクセス不可能であり、前記複数のノードに含まれる第1ノードによって実行される当該方法は、
その各々の自由項としてセットされたゼロを有する各々の第3多項式関数を選択することと、
前記複数のノードの各他のノードについて、前記第3多項式関数内の変数を、当該他のノードに関連した値にセットし、その値に対する前記第3多項式関数の各々の結果を決定し、該各々の結果を当該他のノードへ安全に送ることと、
各他のノードから、各々の第2秘密の各々のシェアを受信し、該シェアは、前記第1ノードに関連した第1値に対する当該他のノードの各々の第3多項式関数の結果である、ことと、
前記秘密鍵の各々の第2シェアを形成及び格納し、該第2シェアは、前記各々の第1シェアの和及び前記第2秘密の前記受信されたシェアの和である、ことと
を有する前記方法を開示する。
【0039】
これは、秘密鍵自体を更新する必要なしに秘密鍵のシェアが更新されることを可能にし、それによって、悪意のある又は反応しない参加者が除外されることを可能にするという利点をもたらす。
【0040】
前記方法は、前記他のノードに対して、前記各々の結果の夫々の楕円曲線点乗算を送ることと、前記他のノードに対して、前記第1ノードに関連した前記第3多項式関数の係数の楕円曲線点乗算を送ることとを更に有してよい。
【0041】
前記方法は、各他のノードから、そのノードに関連した前記結果の楕円曲線点乗算を受信することと、各他のノードから、そのノードに関連した前記第3多項式関数の係数の楕円曲線点乗算を受信することとを更に有してよい。
【0042】
これは、悪意のある又は反応しない参加者がより容易に識別されることを可能にするという利点をもたらす。
【0043】
前記方法は、少なくとも1の他のノードに関連した前記結果の一貫性を、その、他のノードに関連した前記第3多項式関数の係数により確認することを更に有してよい。
【0044】
前記方法は、メッセージ及び前記秘密鍵の前記第2シェアに基づきデジタル署名のシェアを生成することを更に有してよい。
【0045】
前記方法は、少なくとも閾数のノードから、メッセージ及び前記秘密鍵の各々の第2シェアに基づくデジタル署名の各々のシェアを受信することと、前記デジタル署名の少なくとも閾数のシェアの多項式補間によってデジタル署名を生成することとを更に有してよい。
【0046】
本願の更なる態様によれば、上記の方法を実行するコンピュータ実装システムが提供される。
【0047】
本願のこれら及び他の態様は、本明細書で記載される実施形態から明らかであり、それらを参照して説明される。
【0048】
これより、本願の実施形態が、単なる例として、貼付の図面を参照して記載される。
【図面の簡単な説明】
【0049】
図1】例となる楕円曲線デジタル署名プロセスの部分を表す。
図2】例となる楕円曲線デジタル署名プロセスの更なる部分を表す。
図3】例となる方法によって分配されるシェアの再構成階層を表す。
図4】閾ボールトの実施に関係があるシェアの分配の例を図式的に示す。
図5】閾ボールトを用いてデジタルアセットを受信及び分配する方法の一例をフローチャート形式で示す。
図6】閾ボールトを生成する方法の例をフローチャート形式で示す。
図7】閾ボールトからアセットを分配するためのデジタル署名を生成する方法の例をフローチャート形式で示す。
図8】ブロックチェーンノードのブロック図を例示する。
図9】本発明の、閾ボールトを用いてマルチパーティ計算を実行する方法の例をフローチャート形式で示す。
図10】本発明を具現する方法において多項式補間を実行するバーレカンプ-ウェルチ復号器を示す。
【発明を実施するための形態】
【0050】
<概要>
本発明は、不正アクセスから保護される必要があるコンピュータシステム及びリソースの安全性を高めるために使用され得る新規且つ独創的な技術を提供する。以下の記載は、ビットコインを含む暗号通貨に関連したシステムに関係がある実施、使用ケース及び実例を提供する。しかし、本発明は、より広い適用性を有しており、他のタイプのシステム及びコンピュータに基づくリソースを守ために使用されてよく、本発明はこの点で制限されないことに留意することが重要である。
【0051】
本発明の実施形態は、ディーラーを伴わない展開のための能力と結合された、グループに基づく閾値暗号化の付加を可能にすることによって、改善された安全性をもたらす。実施形態はまた、メッセージの非インタラクティブな署名をサポートし、且つ、個人及びグループに分配され得るシェアへの秘密鍵の分割を提供する。更に、本発明は、不正行為又は攻撃の如何なる脅威も最小限としながら如何なる中央集権的制御の必要性も排除する分散型鍵生成システムを構築する解決法を提供する。ECDSAに対するDSAの閾値に基づく解決法の適用において、本発明は、如何なる単一障害点も緩和する完全に分配的な署名システムを提供する。
【0052】
ビットコイン又は代わりとなるものに関して使用される場合に、それは、暗号通貨を展開する無限に拡張可能であって且つ安全な手段にCLTV及びマルチシグウォレット(multisig wallets)を関係させる検索方式と結合可能である。グループ及びリングに基づくシステムによれば、本発明は、発行されたトランザクションに対してブラインド署名を実装するために利用可能である。
【0053】
本願は、ビットコインと完全互換である、閾値に基づく、ディーラーなしの秘密鍵分配システムを開示する。システムは、ビットコインウォレット内で展開される従来の個別署名システムから離れるグループ署名スキームを足場とする。展開される場合に、システムは、拡張性があり且つ堅牢であって、エラー及び悪意のある敵に耐性がある。システムは、ディーラーあり及びディーラーなし両方のシステム並びに大いに柔軟な分配組み合わせでの展開を支援する。
【0054】
個々のパーティは、単独の参加者として又は共同して、彼らの保護された鍵スライスのスライスを、安全性及び回復力のためにマシン全体に、又は役割及びアクセス制御リストの投票閾値に基づいた展開のためにグループで分配するディーラーの役割を果たすことができる。
【0055】
どの程度までスライスが分割可能であるかの深さに制限はない。この複雑性の問題は、個々の展開に対して重み付けされる必要がある。このようにして、署名及びトランザクションの記録は、この方法を用いて、グループ内からのものであっても、その後の書類で提示される拡張子を持った全ての外部の参加者から隠され得るということで、本発明の実施形態は、ユーザに対する偽名を用いた保護(pseudonymous protection)の標準を高めながら、ある程度の匿名性及びもっともらしい否認(plausible deniability)をビットコイントランザクションに導入する。
【0056】
Ibrahim et al.[2003]は、初期のロバストな閾値ECDSAスキームを開発した。続くプロトコルは、Gennaro et al.[1996]によって紹介された閾値DSSの楕円曲線式を形成するものの更なる拡張である。
【0057】
【表1】
群数学(group mathematics)の使用は、RSA及びDSAスキームから秘密の隠蔽におけるShamir[1979]の研究並びにFeldman[1987]及びPedersen[1992]の研究を拡張する検証可能秘密分散スキーム(verifiable secret sharing scheme)(VSS)の構築を可能にし、それにより、それは、ビットコイン[Koblitz,1998]のような、ECC及びECDSAに基づく署名システム内で使用され得る。本発明の実施形態は、悪意のある敵に耐性があり、停止し(halting)、傍受に対して堅牢である。
【0058】
本開示は、どのパーティも秘密鍵を知らない場合にECDSA署名の共同署名を可能にする方法の提示から始まる。更に、それは、秘密鍵を変更する必要なしに、秘密鍵対が更新及びリフレッシュされることを可能にする。これは有意な技術的利点である。
【0059】
既存の解決法は全て、信頼できるパーティを必要とする。本発明を利用することはまた、代替ブロックチェーン又はサイドチェーンの要件を陳腐化しながら、ビットコインブロックチェーン上で直接解決され得る電子ノード発行の真に分散された方法へと中央集権型システムからChaum[1983]の研究を拡張することを可能にする。
【0060】
上記の生成元Gに関して、ビットコインはsecp256k1を使用する。これは,ビットコインで使用されるECDSA曲線のパラメータを定義し、Standards for Efficient Cryptography(SEC)(Certicom Research,http://www.secg.org/sec2-v2.pdf)から参照され得る。
【0061】
<信頼の問題>
全ての既存のシステムは、ある程度の信頼を必要とする。これまで、ビットコインは、世界から隔絶されているセキュアシステムを使用した秘密鍵の保護を必要としてきたが、これは達成するのが困難であることが分かっている。注目すべきは、ビットコインが交換又は保管され得るシステムは、中央当局(centralised authority)に対する信頼を必要とする点である。本発明は、この要件を完全に変えて、プロトコルの中核的要件のいずれも変えることなく、ビットコイン内の鍵生成及びメッセージ署名プロセスを分散化及び分権化する。本明細書で言及される方法は、ビットコインプロトコルを変更せずに実装され得、実際には、署名されたメッセージの解析を通じてこのプロセスが展開されているかどうかを判定する方法はない。
【0062】
ビットコインのための分散型署名スキームを構築することにおいて、本発明は、人々又はシステムのグループが、個人が自分で署名を生成することができないように鍵を安全に保持することを可能にする。拡張される場合に、このスキームはまた、ビットコインの秘密鍵自体及びシェアの夫々の安全な回復も可能にする。グループにより生成された署名は、既存のプロトコルから生成されたものと区別不可能である。そのようなものとして、署名検証は、それが標準のトランザクションを使用して一人の署名者により成立されたかのようなままである。
【0063】
n人の参加者のグループ又はm個の参加者グループによって秘密鍵が共有されるということで、信頼性のこのような向上が実現される。トランザクションの署名には閾数の参加者が必要とされ、最小閾値を満足する参加者又は参加者グループの任意の連合が署名動作を実行することができる。重要なことに、このプロトコルは、個人又はグループが参加者の連合を作ろうと試みることができる一括処理として、又は同期して成立され得る。
【0064】
<背景研究>
最初に、Shamir[1979]が、鍵の分散管理を可能にするディーラーに基づいた秘密分散スキームを紹介した。このスキームに付随する問題は、検証不可能なディーラーを信頼する必然に由来する。このような形式のスキームは、本発明と完全互換であり、本明細書で言及されるプロセスを通じて生成される個々の鍵スライスのグループ分配のために使用され得る。
【0065】
<ジョイントランダム秘密分散(JRSS)[Pedersen,1992]>
このプロシージャの明言された目的は、どの参加者も秘密を知ることなく参加者グループが協調して秘密を共有し得る方法を構築することである。各参加者は、彼らの局部的秘密としてランダムな値を選択し、このランダムな値から導出される値を、グループによるシャミアの秘密分散スキーム(Shamir’s secret sharing scheme)(SSSS)を用いて分配する。次いで、各参加者は、自身を含む参加者から受け取られた全てのシェアを足し合わせる。この和がジョイントランダム秘密シェア(joint random secret share)である。結合された秘密値の秘密性を保つには、一人の正直な参加者によって提供されるランダムさで十分である。この状態は、たとえ(n-1)人の他の全ての参加者がランダムでない秘密値を意図的に選択するとしても、依然として保たれる。
【0066】
<ジョイントゼロ秘密分散(JZSS)[Ben-Or,1988]>
ジョイントゼロ秘密分散(Joint Zero Secret Sharing)(JZSS)はジョイントランダム秘密分散(Joint Random Secret Sharing)(JRSS)に似ているが、各参加者がランダムな値に代わるものとして0を共有する点で相違する。この技術により生成されるシェアは、JRSSアルゴリズムにおける如何なる潜在的な弱点も解消することに役立つ。
【0067】
Desmedt[1987]は、グループ指向の暗号化の概念を紹介した。このプロセスにより、参加者は、参加者の中の選択された一部しかメッセージを暗号解読することができないようにして人々のグループへメッセージを送ることが可能となった。システムにおいて、メンバーは、送信者が公開鍵を使用してメンバーを知る必要がある場合に知られていることを伝えられ、グループは、メンバーから独立して保持されるそのグループのための単一の公開鍵しかない場合に匿名である。本発明は、両方の方法を統合し、既知及び匿名の送信者及び署名者が同時にグループ内に存在することを可能にする。
【0068】
<本発明>
大きい位数の素数を有する任意の楕円曲線(CURVE)、及び素数体Zにわたって定義される位数nの基底点G∈CURVE(Z)について、如何なる参加者も閾数に満たないシェアから元の秘密鍵を再生することがでないように、鍵シェアへのECC秘密鍵の安全な分配及びその使用を可能にするシステムが構築され得る。
【0069】
未知の整数dについて、1≦d≦(n-1)の場合に、Q=d×Gを前提として、dを計算することは極めて困難であることが知られている[Kapoor,2008]。
【0070】
本発明の基本的な技術は、閾値暗号化の適用により得られる。このシステムにおいて、ECDSA秘密鍵は、潜在的なものとしてしか存在せず、どのシステムでも再生される必要がない。それらの複数のシェアの夫々は、拡張可能であって且つグループ及び個人の両方の署名フォーマットの導入を可能にする方法で、複数の参加者[p(i)]に分配される。よって、署名プロセスは、ビットコイン内で展開されるものとは異なる。このプロセスでは、調整参加者p(c)が、グループに分配されるトランザクション及びメッセージ署名を生成する。各参加者は、部分署名を計算するか又はパスするかによって、その秘密鍵シェアの使用に投票することができる。
【0071】
実際に、パスすることは、反対票(no vote)と同等である。調整参加者p(c)は、応答を照合し、最低限の閾数の部分署名を受け取った場合にそれらを結合して完全な署名を形成する。
【0072】
調整参加者p(c)は、反対票を受け入れ、他のパーティからのヌル値に基づき計算を行うか、あるいは、パーティに働きかけて、メッセージに署名するように説得するか、いずれかを行うことができる。プロトコルは、設定された調整者(coordinator)により実装され得るか、あるいは、任意の個人又はグループが、この役割を形成し、署名されるべき閾グループへのトランザクションを提案することができる。本発明は、完全に分散されたECDSA秘密鍵生成アルゴリズムを提供するようにIbrahim et al.[2003]の研究を拡張する。本願はまた、ビットコインとともに使用される分散型鍵再分散アルゴリズム及び分散型ECDSA署名アルゴリズムを提示する。鍵再分散アルゴリズムは、新しいものを支持して現在存在する全ての秘密鍵シェアを無効にするために、又は新しい参加者への秘密鍵シェアの再割り当てのために、使用されてよい。このプロトコルは、ECDSA秘密鍵だけでなく秘密鍵シェアの分散にも及ぶ。この結果は、シェアが構成され、グループ処理として採決され得ることを意味する。
【0073】
本発明は、信頼できるサードパーティが存在するための全ての要件を取り除く。その結果、既存のプロトコルと完全互換であって且つ更なる拡張性を可能にしながら残りの単一障害点を全て解消するビットコイン用の新しいオーバーレイ及びウォレットを構築することが可能である。本発明はまた、ブラインド署名の導入を可能にするように拡張することもできる。
【0074】
本発明は、秘密鍵をメモリにロードする必要がないので、信頼できるサードパーティの必要性を取り除くだけでなく、更には、広範囲の一般的な攻撃を排除する。プロトコルは、必要とされるシェア数及びシェアの分配が使用ケース、経済シナリオ及びリスク要件によって決定されることを可能にするように拡張可能である。
【0075】
本発明は、全てのサイドチャネル攻撃、従って、あらゆるキャッシュタイミング攻撃を軽減する。このシステムは、Gennaro et al.[1996]の研究を取り込み、それをDSSから拡張して、如何なるECDSAに基づくアプリケーションでも成功裏に使用され得るようにする。
【0076】
<ECDSA>
ビットコインは、secp256k1曲線に基づきECDSAを使用する。ECDSAは、最初に、楕円曲線暗号化(elliptic curve Cryptography)(ECC)を使用したDiffie-Hellmanに基づく鍵交換のための要件を変更するように、2003年にNISTによって標準化された[NIST]。ECCの生成は、他の公開/秘密鍵システムと比べた場合に、鍵サイズ及び処理電力の低減により特に重要であった。劣指数的(sub-exponential)時間アルゴリズムはECDLPについて発見されていない。ECDLPは、扱いにくいことが知られており、楕円曲線離散対数問題(elliptic curve discrete logarithm problem)を指す[Johnson,2001]。
【0077】
本願を通じて使用されるパラメータは、上記の表1で提供されている。
【0078】
<安全性の懸案事項>
システムは、ビット内の現在の制限であるECDSAの安全性によって制限される。現在、ECDSAは、秘密鍵が安全に展開され得る場合に安全なままである。本発明は、鍵の再生成イベントの前に閾数の参加者が危殆化されていることを要求する閾値まで、サイドチャネル攻撃及びメモリ開示攻撃を軽減する。更に、危殆化されていない閾値の大多数は、危殆化された参加者を閾値未満で識別することができる。
【0079】
停止性問題(Halting problem)
サービスの中断は、参加者に対してサービス拒否攻撃を仕掛けようと試みる悪意のある敵が加担する可能性がある攻撃の一種である。この攻撃により、参加者は、解析に処理時間を費やすことになる無効な署名、又はその後にドロップされることになる膨大なネットワークメッセージを受け取らざるを得ない。
【0080】
ECC又は署名暗号化(signcryption)に基づくECCのいずれかを用いて参加者へのメッセージを暗号化する要件は、このような攻撃経路(attack vector)を軽減する。攻撃者が無効な部分的に署名されたメッセージを送るには、参加者を既に危殆化している必要があるので、このような攻撃はもはや不要である。
【0081】
ランダム(Randomness)
アルゴリズム2は、たとえ(n-1)人の参加者がランダムな値を選ぶことができないとしても、十分なランダムさが導入されるシナリオを提供する。このプロトコルに追加できるものは、署名及び鍵再生成プロセスへのランダムな値の導入のためにもっぱら設計されたグループオラクルの導入である。この任意のシナリオでは、鍵スライスの夫々が同じプロトコルを用いて生成され得る。例えば、m of nのプライマリスライス要件がある場合に、基礎となる鍵スライスの夫々も、m’ of n’閾値条件を用いて生成及び管理され得る。
【0082】
このシステムを使用する参加者は、ランダムさをプロトコルに注入する以外何もしない外部オラクルを追加することができる。m’個の鍵スライス(なお、m’<n-1)を有するユーザは、彼らが保持する鍵スライスに基づき彼らの署名ソリューションを再現し処理することを選択するか、あるいは、ランダムさの導入のため以外に不要である外部オラクルを導入し得る。
【0083】
各スライスは、ロバスト性及び安全性のために同様に分割され得る。鍵スライスは、ユーザが携帯電話機又はスマートカードのような外部デバイス及びコンピュータで実行されるソフトウェアプログラムでスライスを有するように分配されてよく、それにより、彼らが部分署名を生成するために、ソースの組み合わせは必要とされることになる。
【0084】
一意のランダムな一時鍵(ephemeral key)Dが生成されるか、あるいは、秘密鍵dを再現するために情報を使用することが可能であることが重要である。
【0085】
<公開署名>
このプロトコルによるトランザクション署名の主たる目的は、ビットコイントランザクションの分散署名を可能にすることである。ブロックチェーンに公開されたことがない如何なるトランザクションも参加者によって非公開で保持され得る。従って、調整参加者p(c)が機会あるごとに、トランザクションに成功裏に署名するために、必要とされる水準の投票を達成することができなかった場合には、新しいビットコイントランザクションを生成することは不要である。鍵スライスがそれ自体閾値に対して安全である場合には、決済された如何なるトランザクションの所有権も安全なままである。
【0086】
システムが適切に展開される場合に、危殆化される参加者を(k-1)人までとする能力は、システムを、閾値未満の攻撃に対して安全なままとする。周期的な鍵再生成プロトコル(アルゴリズム2)と結合される場合に、本発明の実施形態は、サイドチャネル攻撃及びメモリ開示に耐えることができる。
【0087】
<本発明の方法及び実施>
本発明の実施形態は、階層的な導出に基づいてECCを使用して参加者間で送られる必要がある秘密情報を暗号化するので[Wright,2016]、必要に応じて、危殆化されるか又は敵意を持たれる可能性がある参加者に対して妥当性確認が行われ得るように、全てのメッセージを、全ユーザへ送られる単一のパケットにまとめることが可能であり且つ望ましい。
【0088】
署名生成は、調整参加者p(c)によって提案される。デフォルトで、任意の鍵スライスが、調整参加者として機能することができ、要件は、プロトコルの個々の実施に帰着する。使用されるアルゴリズムは、以下で説明され、後の項目は、それらの展開に関して詳細を提供する。
【0089】
<アルゴリズム1 鍵生成>
ドメインパラメータ(CURVE,濃度n,生成元G)
入力: NA
出力: 公開鍵Q
秘密鍵シェアdA(1),dA(2),・・・,dA(j)
(j)人の参加者からのk個のスライスの閾値について、構成される鍵セグメントdA(i)は、参加者(i)と、参加者(i)が鍵に(従って、ビットコイントランザクションに)署名するために秘密をやり取りする残りのパーティである、参加者(h)として指名される(j-1)人の参加者とに関連付けて構成される。
【0090】
・スキームにおいて、jは参加者の総数であり、このとき、k≦j、従って、h=j-1。
・従って、(k,j)-閾値分散スキームが存在する。
【0091】
アルゴリズム1のための方法は、次の通りである:
1)1≦i≦jとして、(j)の中の各参加者p(i)は、ECC公開鍵(すなわち、この実施では、ビットコインアドレス)を他の全ての参加者とやり取りする。このアドレスは、グループ識別アドレスであり、如何なる他の目的にも使用される必要がない。
【0092】
これは、国際特許出願WO2017/145016のプロセスから参加者の夫々の間の共有値に基づき導出されたアドレス及び鍵である点が留意されるべきである。
【0093】
2)各参加者p(i)は、他の全てのパーティから秘密であるようにランダムな係数を用いて次数(k-1)の多項式f(x)を選択する。
【0094】
この関数は、多項式自由項として選択される参加者の秘密a (i)の形で第1秘密値を条件とする。この値は共有されない。この値は、WO2017/145016で開示されているように、導出された秘密鍵を用いて計算される。
【0095】
(h)は、点(x=h)での値について参加者p(i)によって選択された関数f(x)の結果であると定義され、参加者p(i)の基本式は、関数:
【数4】
として定義される。
【0096】
この式で、aは、各参加者p(i)の秘密であり、共有されない。
【0097】
従って、各参加者p(i)は:
【数5】
であるように、自由項a0(i)がその参加者の秘密として定義されている次数(k-1)の多項式として表される秘密に保たれた関数f(x)を有する。
【0098】
3)各参加者p(i)は、上記の通りに、WO2017/145016で開示されているように、P(h)の公開鍵を用いて参加者P(h)∀h={1,・・・,(i-1),(i+1),・・・,j}への第1シェアf(h)を暗号化し、P(h)が暗号解読するために値をやり取りする。
【0099】
素数pの位数nの如何なる基底点G∈E(Z)についてもn×G=φであることが留意されるべきである。ビットコインの場合に、値は:

楕円曲線式: y=x+7
素数モジュロ: 2256-232-2-2-2-2-2-1
=FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F
基底点=04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8
位数=FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141

である。
【0100】
そのようなものとして、(b,b,b,・・・)として表現可能な整数の任意の組B:{b∈Z}について、bG=[bG+bG+・・・]modpの場合に、b=[b+b+・・・]modn。更に、bG=[b・・・]Gmodpの場合に、b=[b・・・]modn。
【0101】
が体(field)であり、nを法とするラグランジュ補間がECC秘密鍵として選択された値に対して有効に行われ得るとすれば、シャミアの秘密分散スキーム(SSSS)[5]がZに対して実施され得るという結論に至る条件が存在する。
【0102】
4)各参加者p(i)は、以下の値
【数6】
を全参加者へブロードキャストする。
【0103】
上記の式中の変数hに関連した値は、参加者P(h)がスキームにおける第3の参加者に相当する場合にはh=3であるように参加者P(h)のポジションであることができ、あるいは、同様に、整数として参加者によって使用されるECC公開鍵の値を表し得る。使用ケース及びシナリオは、いずれの実施についても存在する。後者の実施では、値h={1,・・・,j}は、個々の参加者の利用される公開鍵にマッピングされた値のアレイによって置換される。
【0104】
5)各参加者P(h≠i)は、受け取られたシェアと、各他の参加者から受け取られるものとの一貫性を検証する。すなわち:
【数7】
そして、f(h)Gは、参加者のシェアと一致する。
【0105】
6)各参加者P(h≠i)は、その参加者(P(h≠i))によって所有されている受け取られたシェアが、他の受け取られたシェアと一致することを妥当性確認する:
【数8】
実際に、このステップは、シェアf(h)の楕円曲線暗号化されたバージョン(すなわち、f(h)G)に対して、f(h)の暗号化されていないバージョンに対して実行された場合に秘密値a (i)を回復する動作を実行して、Ga (i)を回復することから成る。従って、シャミアの秘密分散スキームの場合に、係数bは、秘密をその対応するシェアから回復するのに必要なラグランジュ補間係数を表す。これに一貫性がない場合には、参加者はプロトコルを拒否し、再び開始する。
【0106】
7)このとき、参加者p(i)は各々、彼らのシェアdA(i)を、
【数9】
として計算する。ここで、Σh=1 (i)modnは、各参加者P(h≠i)から受け取られる各々の第2秘密値aの第2シェアであり、そして、

SHARE(p(i))∈Z 且つ dA(j)

このとき、
【数10】
演算Exp-Interpolate()は、楕円曲線暗号化されたシェアから楕円曲線暗号化された秘密を回復する演算として定義される。この演算は、次のように更に詳細に定義され得る。
【0107】
せいぜい(k-1)個の値がヌル(null)であり、残りの値がG×αの形をとるとして、{ω,・・・,ω}(j≧(2k-1))がセットされ、各αが何らかの(k-1)次の多項式H(・)に存在するならば、その場合に、θ=G×H(0)。
【0108】
この値は、θ=Σi∈Vω×λ=Σi∈V(G×H(i))×λβによって計算され得る。この場合に、Vは、正しいω値の(k)-サブセットであり、更には、λは、結果として起こるラグランジュ補間係数を表す。多項式は、バーレカンプ-ウェルチ復号器を使用することによって計算され得る。

リターン (dA(i),Q

このとき、dA(i)は、第3秘密値の第3シェアである。
【0109】
参加者p(i)は、このとき、署名を計算することにおいてシェアを使用する。この役割は、署名を収集するプロセスにおいて調整者となるいずれかの参加者又はパーティp(c)によって行われ得る。参加者p(c)は変化してよく、トランザクションに署名するために十分なシェアを収集しようとする各試みにおいて同じパーティである必要がない。
【0110】
従って、秘密鍵シェアdA(i)←Z は、他の参加者のシェアを知ることなしに生成された。
【0111】
<アルゴリズム2 秘密鍵の更新>
入力: dA(i)と表される秘密鍵dの参加者Pのシェア
出力: 参加者Pの新しい秘密鍵シェアdA(i)
アルゴリズム2は、秘密鍵を更新すること及びランダムさをプロトコルに加えることの両方のために使用され得る。
【0112】
[Wright,2016]のフォーマットの鍵を使用すると、このプロセスは、秘密鍵の再構成又は計算された存在さえなしで、階層的なサブキーの再計算をもたらすことができる。このようにして、正確に展開される場合に、過去に起こった如何なる大規模な不正行為又はデータベース窃盗も排除するビットコインアドレス及び秘密鍵スライスのヒエラルキーを構成することが可能である。
【0113】
1)各参加者は、その自由項としてゼロに従う次数(k-1)のランダム多項式を選択する。これは、アルゴリズム1に類似しているが、参加者は、全ての他の参加者の選択された秘密がゼロであることを妥当性確認しなければならない。
【0114】
φG=nG=0であることが留意されるべきであり、このとき、0は、楕円曲線上で無限遠にある点である。
【0115】
この式を用いると、全てのアクティブな参加者は、関数:
【数11】

を妥当性確認する。例えば、Feldman(1987)を参照されたい。
【0116】
ゼロシェアを生成: z←Z
2)dA(i)′=dA(i)+z
3)リターン: dA(i)
このアルゴリズムの結果は、元の秘密鍵に関連する新しい鍵シェアである。このアルゴリズムの変形は、とり得るビットコインアドレスを変更する必要なしに新しい鍵スライスをもたらす再分散実行に従事するか、あるいは、第1アルゴリズムのランダムさを増大させることができる。このようにして、本発明は、基礎となる秘密鍵を変えずに秘密鍵シェアを追加的にマスキングすることをグループに可能にする。このプロセスは、基礎となるビットコインアドレス及び秘密鍵を変えずに、個々の鍵シェアの継続的な使用及び展開に関連した如何なる潜在的な鍵漏えいも最小限にするために使用され得る。
【0117】
<アルゴリズム3 署名生成>
ドメインパラメータ: CURVE,濃度n,生成元G
入力: 署名されるメッセージ e=H(m)
秘密鍵シェア dA(i)∈Z
出力: 署名 e=H(m)に対して(r,s)∈Z
A)分散型鍵生成
1)アルゴリズム1により一時鍵シェアを生成する:
k(i)←Z
2)アルゴリズム1によりマスクシェアを生成する:
α←Z
3)アルゴリズム2によりマスクシェアを生成する:
β,c←Z
次数2(k-1)の多項式を用いてアルゴリズム2を2度実行することによって、それらのプロトコルで生成されるシェアは、
【数12】
と表される。これらは、加算マスク(additive masks)として使用される。マスキングされる数が次数(k-1)の2つの多項式の積を含むということで、多項式は次数2(k-1)でなければならない。これは、秘密を回復するために必要とされるシェアの必要数を2倍にする。
【0118】
β及びcのシェアは、次いで、参加者によって秘密に保たれる。
【0119】
B)署名生成
4)e=H(m) メッセージmのハッシュを妥当性確認する。
【0120】
5)θ=Dk(i)α+βmodn及びωi=G×αiをブロードキャストする。
【0121】
6)
【数13】
ここで、演算μ=Interpolate(θ,・・・,θ)modnは、シェアから秘密を回復する演算として定義される。この演算は、次のように更に詳細に定義され得る。
【0122】
大部分の(k-1)がヌル(null)であり、且つ、全ての残余値が(k-1)次多項式F(.)にあるように、{θ,・・・,θ}(j≧(2k-1))が集合を形成する場合に、μ=F(0)。
【0123】
7)
【数14】
8)(R,R)を計算する。ここで
【数15】
9)r=r=Rmodn
r=0の場合に、再び(すなわち、初期分布から)開始する。
【0124】
10)s=Dk(i)(e+dA(i)r)+cmodnをブロードキャストする。
【0125】
11)S=Interpolate(s,・・・,s)modn
s=0の場合に、アルゴリズム3を最初からやり直す(A.1)。
【0126】
12)リターン(r,s)
13)ビットコインでは、スタンダードトランザクションを形成するように(r,s)対によりトランザクションを再構成する。
【0127】
図10は、デジタルメッセージの部分署名を表す多項式関数を取得するための従来のバーレカンプ-ウェルチ復号器70の新規の使用を示す。
【0128】
伝送データ内のエラーを訂正するためのバーレカンプ-ウェルチアルゴリズムの従来の使用では、メッセージmは、符号器72で連続するk個のバイトに分けられ、各バイトc,c,・・・,ck-1は、整数モジュロpとして符号化される。次いで、メッセージは、多項式関数:
【数16】
によって表される。次いで、多項式関数m(x)の値は、(x、y)対の連続を生成するようにxの多数の既知の値について決定され、次いで、それは、送信器74によって受信器76へ送られる。
【0129】
受信器76で受信されたデータM(すなわち、受信されたメッセージ)は、元のメッセージを表す多項式関数上の点に対応する対(a,b,・・・,a,b)を有する:
【数17】
送信された(x,y)対のいくつかが送信中に破損したと考えられる場合に、誤り位置多項式関数が次のように定義され得る:

P(a)≠bの場合に、E(a)=0
他の場合に、E(a)≠0

積多項式関数(product polynomial function)Q(a)がQ(a)=b(a)と定義される場合に、夫々の受信される(a,b)対について、bの値が破損しているかどうかにかかわらず、P(a)≠bの場合にE(a)=0であるから、Q(a)=b(a)=P(a)E(a)。
【0130】
(a,b)のn個の既知の値について、E(a)は次数eの多項式関数であり、P(a)は次数(k-1)の多項式関数であるから、Q(a)は次数(e+k-1)の多項式関数である。従って、(a,b)の既知の値は、線形系として表され得る:
【数18】
線形系は、2e+k-1個の未知の項(E(x)からe及びQ(x)からe+k-1)を含み、その結果として、Q(a)及びE(a)の係数は、n≧2e+k-1の場合に決定され得る。Q(a)及びE(a)が決定され得る場合に、元のメッセージm(x)を回復するためにP(a)を決定することが可能である。
【0131】
従って、バーレカンプ-ウェルチ復号器70は、多項式関数上の点を表す対を入力として受け取り、多項式関数を出力する。従って、復号器70は、多項式によって表される閾数のシェアからその多項式を決定するために、本発明ではラグランジュ補間に代わるものとして使用され得る。
【0132】
<モデル-閾値ECDSA(T,ECDSA)>
本発明の実施形態に従って、参加者として指名されるn個のグループ又は個人のシステムが認められる。各プレイヤーは、単独の参加者若しくはグループ又はそれらの組み合わせとして個人であることができる。参加者p(i)は、一般的に導出された公開鍵計算を用いて識別子(identity)に対してマッピングされてよく、あるいは、参加者p(i)は、個人にマッピングされ直すことなしに、このプロトコルのためにのみ使用される参加者の公開鍵を用いて偽名エンティティ(pseudonymous entity)として残されてもよい。
【0133】
本発明は、スキームの有効なプレイヤー及びメンバーとしての他の参加者の認識を可能にすると同時に、グループ内のメンバーが識別されないままであることを可能にする専用のブロードキャストチャネルを導入する。メッセージが参加者p(i)からブロードキャストされるとき、グループ内のメンバーは、鍵に関連するエンドユーザ又は個人を識別することが必ずしもできなくても、メッセージを認定されたパーティに由来するものとして認める。また、そのようなシステムが保証されているならば、鍵の識別子を個人とリンクすることも可能である。
【0134】
プロセスフローは、次のように要約される。
【0135】
図1中:
ステップ1)
図1を参照されたい。
【0136】
ステップ2)
Pcが生の(raw)トランザクションをグループへ送る。これが妥当性確認する場合に(すなわち、生のトランザクションが署名されるハッシュと一致する場合に)、参加者は、それに署名することによって投票する。
【0137】
ステップ3)
肯定判断である場合に、各参加者は、部分署名されたトランザクションを返す。
【0138】
図2を参照されたい。
【0139】
ステップ4)
閾数の部分署名されたトランザクションが受け取られる場合に、Pc(又は任意の他の参加者)は完全な署名を再構成する。
【0140】
ステップ5)
Pcは、署名されたビットコイントランザクションとしてトランザクションをブロードキャストする。
【0141】
メッセージ署名の計算は、変化しない個人によって、又は一時的なブロードキャストパーティを通じて、開始され得る。プロトコル調整者の役割は、署名を収集するプロセスにおいて調整者となる任意の参加者によって又はパーティp(c)によって果たされ得る。
【0142】
<鍵生成>
変更されたECDSA鍵生成アルゴリズムは、署名スキームを完全に分散させるために使用される。このスキームでは、秘密鍵は、隠匿されたランダム秘密の組み合わせを用いて分散グループによって共同して選択される。
【0143】
閾値鍵導出アルゴリズムは、アルゴリズム1で与えられる。
【0144】
アルゴリズムは拡張可能であり、アルゴリズムの各ステップは、ディーラーなしであらゆる参加者によって同時に、あるいは、グループ又は個人又はディーラーにおいて、実行され得る。この実施は、現在のビットコインプロトコルと完全互換である。如何なる署名者も、あたかも標準の方法で署名されたかのように外部の観測者又は検証者に見える。結果として、標準フォーマットで又は本発明の高度なプロトコルを用いて鍵が生成されたかどうかを伝える方法はない。
【0145】
<署名生成>
閾値署名生成の概念は、[Shamir,1979]に記載されている。アルゴリズム3は、DHに基づくシステムに基づいており且つECDSAを可能にするように変更されている[Feldman,1987]で報告されたプロシージャに関係がある。
【0146】
本発明は、ビットコイントランザクションの処理及び署名の両方と完全互換であるようにこのプロセスを拡張する。これはまた、マルチシグトランザクションに及び、必要である複数の署名の夫々に対して、分散される鍵を求めることが可能である。
【0147】
<秘密鍵の再分散>
このプロセスは、完全分散型鍵再分散スキームを導入するように拡張され得る。この再分散は、現在の参加者がアルゴリズム2を1回実行して、結果として得られたゼロシェアを参加者の秘密鍵シェアに加える場合に、完了される。新しいシェアは、1人の参加者がランダムな値を導入した場合にランダムに分散される。
【0148】
このプロセスは、実際の秘密鍵を変更せずに、秘密鍵シェアの付加的なマスキング(additive masking)を可能にする。
【0149】
<閾値ECDSA署名導出>
閾値ECDSA署名生成システムは、[Shamir,1979]で開発されたスキームに従った[Feldman,1987]で見られる閾値DSS署名生成プロトコルに関するアイディアを用いて導出される。
【0150】
<検証>
本発明は、如何なる値も既知のビットコインアドレスへ転送される前に、メッセージのオフラインの署名及び検証を可能にする。各パーティは、アルゴリズム1で言及されたプロセスを用いて独立してアドレスを計算及び妥当性確認することができる。従って、全ての参加者は、ビットコインアドレスに資金を出すことを求める如何なる実行よりも前に、彼らのシェアが有効であると認識することができる。このプロセスでは、検証スキームが可能であるが、それらは不要である。無効な署名スライスを送ることを選択する如何なる閾値参加者も、実際には、否定的な投票を行っている。すなわち、メッセージに署名せず、従って、ビットコインでトランザクションを完了しないという投票が、無活動から達成される。その影響は、彼らが全くメッセージ署名しなかったかのようである。
【0151】
アルゴリズム2は、参加者が彼らのシェアの一貫性を検証され得る方法を提供する。閾数の悪意のない参加者が保たれる場合には、鍵再生成時に如何なる既知の悪意のある参加者も除外することが可能である。従って、鍵スライスは、新しいスライスを既知の悪意のある参加者に割り当てずに更新可能であり、スライスの再割り当てを更に可能にする方法で鍵のリフレッシュを可能にする。
【0152】
信頼性が乏しく、悪意のある敵が標準として予想されるべき環境で、安全なマルチパーティ計算を完了するときに、j/2の受動的な及びj/3の能動的な敵[Ben-Or,1989;Rabin,1988]に対して守る能力を高めながら検証プロセスのロバスト性を更に強化することが可能である。システムのロバスト性は、追加のプロセスを用いて強化され得る:
1.次数(k-1)の多項式A(x)でj人の参加者の間で共有される秘密をDとする。
2.個別に参加者p(i)は、グループに利用可能にされるDのシェアDa(i)及びDa(i)G∀(i∈0,・・・,j)を有する。
3.全ての参加者は、次に、アルゴリズム2を使用することによって秘密bを共有し、それにより、各参加者p(i)は、次数(k-1)の多項式でDの新しい隠匿されたシェアDb(i)を有する。
【数19】
に留意すべきであり、ここで、Db(i) (h)は、参加者p(h≠i)から参加者p(i)にサブミットされたサブシェアである。
4.参加者は、アルゴリズム2を使用し、それにより、各参加者p(i)は、自由項がゼロに等しい次数(2k-1)の多項式で新しい隠匿されたシェアZ(i)を有する。
5.各参加者p(i)は、Da(i)b(i) (h)G∀(h∈0,・・・,j)及びDa(i)b(i)Gをグループへ発行する。
6.各参加者p(h≠i)は、彼らがDb(i) (h)及びDa(i)Gを有するということで、Da(i)b(i) (h)Gの妥当性を検証することができる。
7.また、参加者p(i)は、
【数20】
を更に検証することができる。
【0153】
如何なる参加者も、このシステムにより、他の参加者が悪意を持って行動しているかどうかを判定することができる。
【0154】
<分散型鍵生成>
このスキームによれば安全な方法で分散型自律企業(distributed autonomous corporations)(DAC)及び分散型自律社会組織(distributed autonomous social organisations)(DASO)の両方の実施を完了することが可能である。如何なるk人のメンバーも、識別スキームを通じて(認証局によって署名及び発行されたデジタル証明書によることを含む。)そのようなグループを表すことができること、及び如何なるk人のメンバーも、組織に代わってデジタル署名を構成することができることが示されている。このシステムは、如何なる識別機能もなしで検証し、価値の移動を提供するビットコイントランザクションの署名に拡張される。これらの認証スキームは、安全であることが証明されている。
【0155】
<方法及び実施>
プロトコルは、国際特許出願WO2017/145016で開示されている技術に基づき、ECCを用いて、参加者間で送られる必要がある秘密情報を暗号化するということで、必要に応じて、危殆化されるか又は敵意を持たれる可能性がある参加者に対して妥当性確認が行われ得るように、全てのメッセージを、全ユーザへ送られる単一のパケットにまとめることが可能であり且つ望ましい。
【0156】
署名生成は、調整参加者p(c)によって提案される。デフォルトで、任意の鍵スライスが、調整参加者として機能することができ、要件は、プロトコルの個々の実施に帰着する。p(c)による有効な生のトランザクションの生成時に、トランザクション及びトランザクションのメッセージハッシュは、暗号化されたチャネルを用いて全参加者p(i≠c)へブロードキャストされる。
【0157】
A.一時鍵シェアDk(i)を生成する。
【0158】
参加者は、アルゴリズム1を用いて、次数(k-1)の多項式により、Z において一様分布した一時鍵Dを生成して、シェア
【数21】
を生成する。
【0159】
のシェアは、各参加者によって個々に保持されながら秘密に保たれる。
【0160】
B.マスクシェアαを生成する。
【0161】
各参加者は、シェア
【数22】
を生成するように、アルゴリズム1を用いて、次数(k-1)の多項式により、Z において一様分布したランダムな値αを生成する。これらは、Dk(i)を乗算的にマスキングするために使用される。
【0162】
αのシェアは秘密であり、対応する参加者によって保持される。
【0163】
C.マスクシェアβ,cを生成する。
【0164】
次数2(k-1)の多項式を用いてアルゴリズム2を2度実行する。
【0165】
これらのプロトコルで生成されるシェアを
【数23】
と表す。これらは、加算マスクとして使用される。マスキングされる数が次数(k-1)の2つの多項式の積を含むということで、多項式は次数2(k-1)でなければならない。これは、秘密を回復するために必要とされるシェアの必要数を2倍にする。
【0166】
β及びcのシェアは、参加者によって秘密に保たれるべきである。
【0167】
D.メッセージm:e=H(m)のダイジェストを計算する。
【0168】
この値は、p(c)から取得されるトランザクションの受け取られたハッシュに対してチェックされる。
【0169】
E.ν=Dk(i)α+βmodn及びω=G×αをブロードキャストする。
【0170】
参加者Pは、ν=Dk(i)α+βmodn及びω=G×αをブロードキャストする。
【0171】
から応答が受け取られない場合に、使用される値はヌル(null)にセットされる。
【0172】
【数24】
が留意されるべきである。
【0173】
F.μ=Interpolate(ν,・・・,ν)modnを計算する。
【0174】
Interpolate()[2]:
ここで、大部分の(k-1)がヌル(null)であり、且つ、全ての残余値が(k-1)次多項式F(.)にあるように、{ν,・・・,ν}(j≧(2k-1))が集合を形成する場合に、μ=F(0)。
【0175】
多項式は、一般の多項式補間を用いて計算され得る。関数“Interpolate()”は、バーレカンプ-ウェルチ補間[2]であり、BCH及びリード・ソロモン符号のためのエラー訂正アルゴリズムとして定義される。これは、http://mathworld.wolfram.com/LagrangeInterpolatingPolynomial.htmlで及びWhittaker, E. T. and Robinson, G. "Lagrange's Formula of Interpolation." §17 in The Calculus of Observations: A Treatise on Numerical Mathematics, 4th ed. New York: Dover, pp.28-30, 1967, 更に、https://jeremykun.com/2015/09/07/welch-berlekamp/で更に詳細に記載されている。
【0176】
G.θ=Exp-Interpolate(ω,・・・,ω)を計算する。
【0177】
Exp-Interpolate()[10]:
せいぜい(k-1)個の値がヌル(null)であり、残りの値がG×αの形をとるとして、{ω,・・・,ω}(j≧(2k-1))がセットされ、各αが何らかの(k-1)次の多項式H(・)に存在するならば、その場合に、θ=G×H(0)。
【0178】
この値は、θ=Σi∈Vω×λ=Σi∈V(G×H(i))×λβによって計算され得る。この場合に、Vは、正しいω値の(k)-サブセットであり、更には、λは、結果として起こるラグランジュ補間係数を表す。多項式は、バーレカンプ-ウェルチ復号器を使用することによって計算され得る。
【0179】
H.(R,R)=θ×μ-1を計算する。
【0180】
I.r=Rmodqを割り当てる。r=0の場合に、ステップAへ進む。
【0181】
各参加者p(i)は、ステップJでrの彼らのスライスを計算する。調整者p(c)は、閾数の応答を受け取った場合に、sを再構成するためにそれらの値を使用することができる。
【0182】
J.s=Dk(i)(e+DA(i)r)+cmodnをブロードキャストする。
【0183】
応答がPから懇願/受信されない場合に、使用される値はヌル(null)にセットされる。
【0184】
【数25】
が留意されるべきである。
【0185】
K.s=Interpolate(s,・・・,s)modnを計算する。
【0186】
s=0の場合に、ステップIへ進む。
【0187】
ここで、関数Interpolate()は、先に定義された通りである。
【0188】
各参加者p(i)は、ステップJでrの彼らのスライスを計算する。調整者p(c)は、閾数のs個の応答を受け取った場合に、sを再構成するためにそれらの値を使用することができる。
【0189】
L.(r,s)を返す。
【0190】
M.生のトランザクションの署名セクションを置換し、これをネットワークへブロードキャストする。
【0191】
<スライスのディーラー分配>
上記の実施形態は、グループシェアの導入を通じてはるかに柔軟にされ得る。このようにして、シェアの割り当ては、任意のレベルの階層的深さで、ディーラー、複数のディーラー、ディーラーを含まないグループ、又はそれらの任意の可能な組み合わせの間で分割され得る。
【0192】
値d及びその対応する鍵スライスdA(i)を、同じアルゴリズムを用いて導出された値により置換することによって、投票のヒエラルキーが生成され得る。例えば、スキームは:
1)ディーラーに基づく分配
2)複数のディーラー
3)ディーラーなし
から導出されるシェアを同時に統合して構築され得る。
【0193】
従って、スキームは拡張可能であり、任意のビジネス構造又は組織システムを組み込むように作られ得る。
【0194】
スライスの割り当ても拡張可能である。一様でない割り当てプロセスを展開することは、シェアに対する重み付けが加えられることを可能にする。図3に示されるスキームでは、5つの上位メンバーにより仮想組織を構築することが可能である。なお、これには、n=5の均等に重み付けされたシェアの値をセットする必要はない。この仮想組織において、次のように、上位スキーマのための投票構造をセットすることが可能である:
・閾値(0) 61シェア
・DL02 15シェア
・DL1 15シェア
・DL2 15シェア
・D 45シェア
・D 10シェア
ここで、n=100がセットされている。述べられているように、これは、任意の組織構造を反映することができる任意の値である。図3の組織は、否認(veto)シナリオ(D)を可能にし、重層的な割り当ての導入を通じて、想像可能な任意の投票構造を可能にする。
【0195】
マルチレベル下位層構造でしばしば見落とされるものは、たとえ秘密のスライスが割り当てられているとしても、それらが等しく分配される必要がなく、更には、サブグループの所有権が他のレベルの所有権を反映する必要がないことである。図3には、閾値の75%でシェアの総数の45%を制御する一見強力なブロックが存在する。シェアの下位レベル割り当てがその場合に考えられるならば、シナリオははるかに複雑になる。テーブル上で複数のレベル及び位置で議決権付きシェア(voting shares)を保持する個人との相互所有権(cross-owenership)を生成することが可能である。
【0196】
表3の分布は、(保持されるシェア,閾値,割り当て{n})と定義される。
【0197】
表3から、参加者P1及びP2は夫々投票を支配するが、参加者P4との連携は、P1又はP2が投票を拒否しない限り、P1又はP2のどちらか一方に、十分な投票ブロック(voting block)をもたらす。
【0198】
本発明における投票フォーマットの実施及び構造には制限がないので、これは、安全なバックアップ及び回復方法を確かにしながら、想像され得る如何なる組織的ヒエラルキーも構築するために使用され得る。
【0199】
【表2】
結果として、より高いレベルの署名シェアに割り当てられる拒否権及び投票権を有することが可能である。本例では、Sにおけるシェアの所有権は、DL02、D1A及びD2Aで保持され得る。
【0200】
<安全なマルチパーティ計算>
n人の参加者p(1),・・・,p(i),・・・,p(n)による安全なマルチパーティ関数計算は、x(i)を含む関数F(x,・・・,x,・・・,x)を評価する必要性に基づく問題である。x(i)は、p(i)によって供給される秘密値であって、参加者p(j≠i)又は外部のパーティがx(i)を全く知り得ないように秘密に保たれる必要がある。従って、目的は、計算の正確さを保証することが可能でありながら、各参加者の値の秘密性を保つことである。
【0201】
このシナリオで、信頼できるサードパーティTは、様々な参加者p(i:1・・・n)から全ての値x(i:1・・・n)を収集し、計算を返す。この設計は、暗黙的にTを信頼することができる理想的な世界でのみ機能する。Tが悪意があるか、無法者であるか、あるいは、危殆的であるかのいずれかである何らかの可能性がある場合に、信頼できるサードパーティの使用は実行可能でなくなる。このシナリオは、参加者が投票者であり、信頼できるサードパーティが政府によって行われる既存の選挙を反映する。
【0202】
信頼できるサードパーティを用いて安全な方法で計算され得る如何なる値も、個々の秘密x(i)の安全性を保ちながら、信頼できるパーティなしでも計算され得ることが証明されている[Bar-Ilan,1989]。ここで提示されるプロトコルは、個人の計算に対して安全であり、危険な参加者の非閾グループが協働することができる場合でさえ安全な計算を提供する。
【0203】
<単純乗算>
n人の参加者p(i:1・・・n)の間で分配される2つの秘密値x及びyが存在する場合に、両方の入力変数x及びyの秘密性を保ち、同時に、参加者p(i)が秘密性を維持することによって個々の秘密x(i:1・・・n)及びy(i:1・・・n)が保持されることを確かにしながら、積xyを計算することが可能である。
【0204】
このスキームで、x及びyは、次数(k-1)の多項式を用いて参加者の閾グループの間で夫々共有される。各参加者p(i)は、xの次数(k-1)の多項式上のx(i:1・・・n)及びyに対する次数(k-1)の多項式内のy(i:1・・・n)の彼らの共有を乗算することができる。
【0205】
アルゴリズム2を導入することは、参加者p(i)に、次数(2k-1)の多項式であるz(i)のシェアを返す。この値により、各参加者p(i)は、値x(i)(i)+z(i)を計算する。
【0206】
(i)(i)+z(i)の戻り値は、次数(2k-1)の多項式に対するx・yの計算の有効なシェアを表す。閾数のシェアのために行動する任意の参加者又は調整者は、個々のシェアの如何なる知識も得ることなしに、x・yの真の値を計算するために、各参加者によって保持されている戻り値を使用することができる。
【0207】
<単純加算>
n人の参加者p(i:1・・・n)の間で分配される2つの秘密値x及びyが存在する場合に、両方の入力変数x及びyの秘密性を保ち、同時に、参加者p(i)が秘密性を維持することによって個々の秘密x(i:1・・・n)及びy(i:1・・・n)が保持されることを確かにしながら、和x+yを計算することが可能である。
【0208】
簡単な乗算のためのプロセスのように、各参加者p(i)は、値x(i)+y(i)+z(i)を計算する。z(i)の計算は不要であるが、プロセスに更なるレベルのランダムさ及び秘密性を加える。
【0209】
(i)+y(i)+z(i)の戻り値は、次数(2k-1)の多項式に対するx+yの計算の有効なシェアを表す。閾数のシェアのために行動する任意の参加者又は調整者は、個々のシェアの如何なる知識も得ることなしに、x+yの真の値を計算するために、各参加者によって保持されている戻り値を使用することができる。
【0210】
参加者がそれほど敵対的でない場合に、これは、付加的なステップなしでx(i)+y(i)加算として簡単化され得る。
【0211】
<逆数(inverse)又は逆数(reciprocal)>
分配された秘密値、すなわち、j人の参加者の間でx(i:1・・・j)として秘密に分配されるxmodnについて、値x(i)、x又はx-1を開示する如何なる情報も公開せずに、x-1modnの値に関連した多項式のシェアを生成することが可能である[Gennaro,1996]。先と同じく、各参加者p(i)は、次数(k-1)の多項式上でx(i)によって表される値xのシェアを保持する。
【0212】
アルゴリズム1を使用して、各参加者は、次数(k-1)の多項式で未知の秘密x・yのシェアx(i)を生成する。次いで、各参加者は、アルゴリズム2を実行して、次数(2k-1)の多項式でゼロ秘密の(k-1)を計算する。各参加者(2k-1)は、値x(i)(i)+z(i)を計算する計算を行う。
【0213】
上記のInterpolate()ルーチンを使用して、各参加者は、μ=x(i)(i)+z(i)の値を計算して、μの収集された値から値μを返すことができる。次いで、各参加者は、μ-1modnの値を計算することができる。
【0214】
これらの値は、任意の参加者p(i)が次数(2k-1)の多項式でζ=γμ-1を用いてx -1の関連するシェアを計算することができるほど十分である。バーレカンプ-ウェルチ復号化スキーム[Berlekamp,1968]は、このプロセスを完了するために使用され得るいくつかの方法のうちの1つを提供する。
【0215】
図9は、数量ζ=x-1+wの安全なマルチパーティ計算を実行する方法の一例をフローチャート形式で示す。ここで、安全なマルチパーティ計算は、複数の第1ノードによって実行され、計算された秘密は、第2ノードによって回復される。最初に、ステップ901で、秘密x、y、zのシェアx、y、x1iが、第2ノードによって第1ノード間で分配される。ここで、x、y、zは、各々の多項式関数の自由項であり、zはゼロである。
【0216】
ステップ902で、各第1ノードは、μ=x+zの各々のシェアを計算する。多項式補間によって、積μ=xyが、ステップ903で、閾数のシェアμを受け取っているノード(1以上の第1ノード又は第2ノードであってよい。)によって決定される。ステップ904で、逆数μ-1modn=x-1・y-1modnが次いで決定される。ステップ905で、秘密w、zのシェアw、z2iが次いで第2ノードによって第1ノードの間で分配される。ここで、w及びzは、多項式関数の各々の自由項であり、zはゼロである。ステップ906で、各第1ノードは、共通の秘密のそのシェアζを決定する。ここで、ζ=y・μ-1+w+z2i=y・x-1・y-1+w+z2i。次いで、第2ノードは、ステップ907で閾数のシェアζを第1ノードから受け取り、ステップ908で多項式補間を実行して、個々の秘密x、y又はwが第1ノードのいずれにも利用可能でないように、計算された秘密ζ=x-1+wmodnを決定する。
【0217】
<割り当て>
検証可能且つ立証可能な方法でトランザクションに署名する能力は、非公開で所有権を証明し、更には、ブロックチェーン上で何も公に動かさずに、ビットコイン秘密鍵の所有権及び関連するビットコインアドレスを破棄又は交換する機会をもたらす。このようにして、ビットコインアドレスに資金を提供することができ、そのアドレスの内容は、公的な記録を残さずに移転又は販売され得る。このプロセスは閾値システムであるから、鍵スライスの割り当ては、ブロックチェーン上で追加の決済を記録することなしに安全に実現され得る。
【0218】
このようにして、ブロックチェーン上で既に精算されたノートの所有権を、そのノートを処理するプロセスから分離することが可能である。
【0219】
<CLTV>
ビットコインメッセージ、又はより一般的な用語では、トランザクションは、CLTV[BIP 65]エントリの包含により生成され得る。この追加により、トランザクションは、全ての鍵スライスの壊滅的な喪失が発生した場合、又はエンティティからの複数のスライスが、最小閾値による署名の安全な再構成を可能にしないように失われるか若しくは信用できないと見なされる場合でさえ、回復可能にされ得る。
【0220】
これは更に、エンティティがサードパーティサービスを使用しており、サービスが鍵へのアクセスを保持又は拒絶することができないことを確かにすることを望む場合に、可能である。時間に基づくフェイルセーフ(failsafe)でビットコイントランザクションを構成することにおいて、ユーザは、悪意のあるサードパーティ又は危殆化された交換サイト若しくは銀行が彼らの鍵へのアクセスを彼らに強要することができないことを知っている。最悪のシナリオとして、壊滅的なレベルへの危殆化は、CLTV条件に基づき、事前に定義されたアドレスへのトランザクションの時間に基づく逆戻りをもたらすことになる。この事前に定義されたアドレスは、本願で開示されるプロトコルを用いて生成され得る。そのようなものとして、容易に危殆化され得ない一連のトランザクション及び鍵を構成することが可能である。
【0221】
<安全性の懸案事項>
Benger et. al.(2014)は、フラッシュ(Flash)及びリロード(reload)方法によるECDSA秘密鍵回復の一例を提案している。この出来事は、システムRAM及びキャッシュに対する攻撃の一例にすぎない。これらの方法は、それらが秘密鍵を再構成するということで、シャミアのSSS[1979]のような手順の使用を欠いたままとする。更に、秘密鍵がいつでも再構成される任意のシナリオで、信頼性に対する要件が導入される。このシナリオでは、秘密鍵を保持するエンティティのシステム及びプロセスに依存する必要がある。
【0222】
信頼できるパーティがたとえ悪意がないとしても、彼らのプロセスに依存する必要がある。最近の多数の妥協案から分かるように、秘密鍵を再構成することへのこの依存は、攻撃の道を残している。
【0223】
既存のECDSA実装のためのドロップイン置換と、現在のビットコインプロトコルとの完全な透明性及び互換性との両方を備えているために、その実装にはハードフォーク又はソフトフォークが不要であり、実装は、如何なる現在のトランザクションとも区別不可能である。本発明は、回復機能を備えた鍵のグループ署名を可能にする個別の参加者として個人を扱うことができる。一例として、ツー・オブ・ツー(two of two)のスキームが4つの鍵スライスを用いて実装可能であり、このとき、オンラインウォレットプロバイダ又は取引所が2つの鍵スライスを保持し、エンドユーザが2つのスライスを保持する。取引所及びユーザは夫々、彼らの鍵スライスに対するツー・オブ・ツーのプロセスを有し、それらは、必要に応じてメッセージの安全な署名のためにお互いに連結して使用され得る。
【0224】
<閾ボールト>
上記のプロセス及び技術は、どのノードも秘密鍵を独立して生成することができないように、公開-秘密鍵対を生成するために使用され得る。各ノードによって個々に保持される秘密鍵シェアは、やり取りにおいて決して公開されず、安全性を更に高めるために又は鍵シェア喪失に対処するために必要に応じてリフレッシュされ得る。この機能は、ブロックチェーンネットワーク内の「閾ボールト」(Threshold Vault)の実装を促す。閾ボールトは、ブロックチェーン上のアドレスであり、それと関連付けてデジタルアセットは記録され得る。それにより、秘密鍵シェアを保持している閾数のノードが、閾ボールト内でデジタルアセットにアクセスし、それを転送し、又は別なふうにそれを扱うために協調するよう求められる。閾ボールトは、全て又は一部の鍵シェアが、入力として閾ボールトを有するトランザクションにデジタル署名するために必要とされるように、確立され得る。閾値は、ボールトの目的及び目標に応じてセットされてよい。例えば、第1目的が秘密鍵の開示に対して保護することであるいくつかの場合に、閾値は、鍵シェアの100%にセットされてよい。第1目的が投票スキームであるいくつかの場合に、鍵シェアの51%以上が閾値としてセットされてよい。一例において、鍵シェア喪失に対する安全性及び保護の両方が目的であってもよく、その場合に、(例えば)3/5閾値が、鍵シェアの3/5を制御する一次ボールト所有者により且つ鍵シェアの残り2/5を保持する1以上のサードパーティリポジトリによりセットされてよく、それによって、一次ボールト所有者が彼らの鍵シェアの1以上(しかし、全てではない。)へのアクセスを失った状況で、サードパーティリポジトリと協調して彼らに彼らの鍵シェアを使用させてもらうことを一次ボールト所有者に可能にする。このようにして、サードパーティリポジトリは、一次ボールト所有者の鍵シェアの1つが失われた場合に、“バックアップ”鍵シェアの守護者となり得る。
【0225】
一例として説明するために、これより図4を参照する。図4は、閾ボールトの実装に関連するシェアの分配の例を図式的に示す。この例には、ブロック102を含む部分ブロックチェーン100が表されている。ブロック102は、トランザクションから部分的になり、ボールトアドレスPに関連した出力106を特徴とするトランザクション104を含む。ボールトアドレスPは、公に利用可能である。その場合に、ボールトアドレスに関連した未使用トランザクション出力(UXTO)が、他のトランザクションへの入力となるよう利用可能である。
【0226】
UXTOが他のトランザクションへの入力として使用されるために、ボールトアドレスに対応する秘密鍵Vが、デジタル署名を生成することにおいて使用される必要がある。この場合に、秘密鍵Vは生成されておらず且つ生成されることはない。代わりに、秘密鍵は、複数のノード110にわたって秘密鍵シェア(V,V,・・・V)の形で保持される。これらの鍵シェアは、完全ブロックチェーンノード(例えば、サーバ、パーソナルコンピュータ、など)、ウォレットノード(例えば、パーソナルコンピュータ、タブレット、ラップトップ、モバイルデバイス、又はブロックチェーンウォレットソフトウェアを実行可能な何らかの他のネットワーク化されたコンピューティングデバイス内で実装される。)、オフラインメモリ/ストレージ(例えば、USBスティック、メモリカード、又は他の永続性デジタル記憶媒体)、オンラインリポジトリ(例えば、ブロックチェーン交換アカウント、銀行取引ネットワークデバイス、又はブロックチェーンデータを記憶する他の遠隔のサードパーティ操作サービス)、あるいは、何らかの他のそのようなコンピューティングデバイスに記憶されてよい。
【0227】
いくつかの例となる実施において、各ノードは、閾数の所有者の間の協調がボールトアドレスPに関するデジタル署名を生成するために必要とされるように、別個のエンティティによって操作又は制御され得る。いくつかの例となる実施において、たとえ鍵シェアが鍵保護のために、物理的又は論理的に、別個の電子デバイスにあるとしても、閾数のノードは単一のエンティティによって制御され得る。閾数ではなく、追加の鍵シェアが、主要所有者が鍵シェアを失った場合に鍵回復サービスの機能を果たす働きをし得る他のエンティティによって操作される電子デバイスに記憶されている。更なる他の例となる実施において、2つ(又はそれ以上)のエンティティは、例えば、2人(又はそれ以上の)パートナー、すなわち、長及び連署当局(例えば、銀行、親会社、など)の場合に、デジタル署名生成で協働するのに十分な各々の鍵シェアを制御し得る。当業者であれば、パーティ間の鍵シェアの分配及び署名のための関連閾値の設定において反映され得る論理的及び法的な関係の範囲及び種類は十分に理解されるだろう。
【0228】
これより図5を参照する。図5は、閾ボールトを用いてデジタルアセットを受け取り且つ転送する方法200を一例としてフローチャート形式で示す。この例では、複数のノードが、閾ボールトアドレスを生成することと、如何なる中央ディーラー又は当局もなしで対応する鍵シェアを秘密に且つ安全に生成及び分配することとにおいて協働すべきであり、それによって、生成プロセス中又はデジタル署名プロセス中に如何なる他のノードの鍵シェアへもアクセスするノードがないことを確かにする。
【0229】
動作202で、ノードは、閾ボールトアドレス(例えば、公開鍵)を協働して生成する。そのために、個々のノードは独立して、各個別ノードによって秘密に選択された各々の多項式に基づき、各々の秘密鍵を生成及び記憶する。各ノードによって選択された多項式は、ノード間で同意された閾値に基づく位数を有する。例えば、j個のノードの間で、閾ボールト生成プロセスを開始することにおいて、ノードは、秘密鍵を使用する(語「使用する」は、本願では、秘密鍵が如何なるノードによっても決して実際に再構成されないことを意味する。)ために必要とされるk個の協調ノードの閾値をセットすることに同意している。ここで、k≦j。閾ボールトアドレスは、ノードによって共有されている特定の多項式値に基づき且つ多項式補間を用いてノードのいずれか又は夫々によって決定され得る。
【0230】
動作204で、閾ボールトアドレスへデジタルアセットを移動させるブロックチェーン上のブロックにトランザクションが加えられる(そして、妥当性確認され且つ承認される)。
【0231】
将来のある時点として、動作206で、トランザクションが生成される(より一般的に「メッセージ」と称され得る。)。トランザクションは、そのトランザクションへの入力としてデジタルアセットを使用することを提案する。この提案されたトランザクションは、1つのノードによって又は他の無関係のノードによって生成され得る。入力として閾ボールトアドレスを特徴とするメッセージを受け取ると、ノードは、トランザクションにデジタル署名することによってそのトランザクションを承認すべきかどうかを判定する。
【0232】
ノードがトランザクションを承認するように指示されるとすると、動作208で、少なくとも閾数kのノードが、メッセージのためのデジタル署名を生成するように協働する。この協働は、使用される如何なる鍵シェアもマスキングするためにプロセス内で使用されるノード間のランダム化されたマスクシェアを生成するようにジョイントゼロ秘密分散の使用に依存し、それによって、如何なる他のノードの鍵シェアも受け取るノードがないことを確かにする。デジタル署名プロセスで使用される如何なるマスクシェア又は鍵シェアも、秘密ディーラーなし分配を用いて生成及び分配される。デジタル署名プロセスは、第1署名成分r及び第2署名成分sの決定を含む。決定プロセスにおいて、如何なる一時鍵シェア又は秘密鍵シェアも、分散される前にマスクをかけられ、如何なる分散も、先に詳述され且つ以下で更に説明されるように、他の式内に埋め込まれたマスキングされた鍵シェアを含む値を有する。従って、メッセージのためのデジタル署名は、完全な秘密鍵を生成することさえなしに、且つ、ノードのいずれかによって保持されている如何なる秘密鍵シェアも公開せずに、生成される。
【0233】
これより図6を参照する。図6は、閾ボールトアドレスを生成する方法300を一例としてフローチャート形式で示す。閾値kは前もってセットされる。ノードの夫々は、他のノードの夫々との安全な通信を確立する。これは、[Wright,2016]で記載されるように、情報の安全なやり取りのための共通の秘密を決定することを含み得る。なお、如何なる他の暗号鍵生成プロセスも、各ノードが暗号化された通信を各他のノードへ送り、暗号化された通信を各他のノードから受信し暗号解読することができるという条件で、用いられてよい。
【0234】
方法300は、ノードp(i=0~j)の夫々がそれ自身の各々の第1秘密a (i)を有していることから始まる。第1秘密は、如何なる適切な方法でも取得又は決定されてよい。
【0235】
各ノードはまた、次数k-1のそれ自身の各々の多項式f(x)を選択する。多項式の自由項、例えば、f(0)は、ノードの第1秘密、すなわち、係数aである。各々の多項式は夫々異なった係数aを有し得るが、夫々が次の式:
【数26】
で表される。
【0236】
ノードの夫々は、他のノードの夫々のために自身の多項式の値を決定する。これに関連して、xは、他のノードh=1,・・・,(i-1),(i+1),・・・,jに関連したインデックスhにセットされ得る。すなわち、各ノードは、全てのh(h≠i)について、f(h)の値を決定する。方法300の動作は、「第1ノード」iとの関連で後述される。なお、同じ又は類似した動作が、他のノードの夫々によって実行される。
【0237】
動作302によって示されるように、第1ノードiは、ノードhのための第2秘密f(h)をそのノードhと安全に(すなわち、暗号化されたチャネル上で)共有する。すなわち、各他のノードhに対して、第1ノードiは値f(h)を送る。次いで、第1ノードiはまた、全ての他のノードに対して、自身が決定した全ての第2秘密の楕円曲線点乗算(ECPM)をブロードキャストする。すなわち、第1ノードiは、他の全てのノードhに、全hについてのf(h)×Gの値を送る。第1ノードiはまた、K=0,・・・,(k-1)についての自身の多項式係数のECPMa (i)×Gをブロードキャストする(すなわち、他のノードの夫々へ送る)。従って、第1ノードiは、自身の多項式係数を公開せず、むしろ、各係数に対応する「公開鍵」を公開し、且つ、決定された第2秘密全般を公開せず、むしろ、各決定された第2秘密に対応する「公開鍵」を公開する。第1ノードiは、1つの第2秘密を各他のノードと内密にのみ共有している。
【0238】
動作304で、第1ノードiは、他のノードの各ノード(又はそれらのうちの少なくともk-1個)から、インデックスxについて当該他のノードによって決定された「第2秘密」を受信する。すなわち、第1ノードiは、夫々のh≠i(又はj-1個のノードのうちの少なくともk-1個)についての値f(i)を受信する。第1ノードiはまた、他のノードによってブロードキャストされたECPM値、すなわち、第2秘密のECPM及び各々の多項式の係数のECPMを受信する。
【0239】
図6には明示的に示されていないが、ノードは独立して、ブロードキャストされた値に基づき、他のノードから受信された第2秘密を検証及び妥当性確認し得る。すなわち、各ノードは、ノードhから取得された第2秘密が有効であることを、そのECPM値を計算し、それを当該他のノードからのブロードキャストされたECPM値と比較することによって、決定し得る。
【0240】
動作306で、第1ノードiは、他(少なくともk-1個)のノードの夫々から受信された各々の第2秘密f(i)の和として第1秘密鍵シェアdA(i)を決定し格納する。ノードiによって決定されたそれらの各々の第2秘密の和は:
【数27】
として表現され得る。
【0241】
動作308で、ノードの1つ以上(第1ノード以外のノードに委託され得るか、又はノ1よりも多いノード若しくは全てのノードによって行われ得る。)は、閾ボールトアドレス、すなわち、ノードが夫々秘密鍵シェアdA(i)を有している秘密鍵dに対応する公開鍵Q、を決定する。公開鍵は、第2秘密の閾数のECPMの和から、多項式補間を用いて取得される。上述されたように、これは」
【数28】
として表現され得る。
【0242】
明らかなように、方法300は、公開鍵Qによって与えられる閾ボールトアドレスに対応するノードで独立して生成された秘密鍵シェアdA(i)をもたらす。
【0243】
これより図7を参照する。図7は、閾ボールトに関するメッセージにデジタル署名する方法400を一例としてフローチャート形式で示す。方法400は、メッセージハッシュe=H(m)によって表され得るメッセージmのデジタル署名を生成するために使用される。メッセージmは、閾ボールトが入力である提案されたブロックチェーントランザクションと関係すると見なされ得る。従って、トランザクションが妥当性確認されるために、それは、閾ボールト公開鍵Qに対応する秘密鍵の所持を裏付けるデジタル署名を必要とする。当然、ノードのどれもが、秘密鍵を有さず、且つ、秘密鍵を生成する能力を有さず、それらは、秘密鍵シェアdA(i)しか保持していない。それでもなお、方法400は、閾数のノードがそれらの秘密鍵シェアを公開することさえせずに有効なデジタル署名を生成することにおいて協働するメカニズムを提供する。
【0244】
動作402によって示されるように、方法400は、ディーラーなし秘密分配を用いて、各ノードiについて一時鍵シェアDk(i)及び乗算マスクシェアaを生成することを含む。ノードiは、例えば、方法300を用いて生成された秘密鍵シェアdA(i)を既に保持している。動作404で、ジョイントゼロ秘密分散(JZSS)が、第1及び第2の加算マスクシェアβ及びcを生成するために(例えば、アルゴリズム2に関連して上述されたように)使用される。第1加算マスクシェア及び第2加算マスクシェアは関係しない。
【0245】
次いで、動作406で、各ノードは、乗算マスクシェア及び第1加算マスクシェアによってマスキングされた一時鍵シェアに基づき形成された二重マスク化された鍵シェアを公開する。一例において、二重マスク化された鍵シェアは、

θ=Dk(i)α+βmodn

と表される。
【0246】
各ノードはまた、乗算マスクシェアのECPMに対応する公開乗算マスクシェアを公開する。これは、

ω=G×α

と表され得る。
【0247】
いずれのノードも、自身の公開鍵シェア、一時鍵シェア、又はマスクシェアを決して公開しない。
【0248】
動作408で、第1署名成分rが、公開されたデータから決定される。決定は、ノードの夫々によって独立して、又はノードの1つによって行われ、他のノードによって共有及び/又は検証され得る。
【0249】
楕円曲線デジタル署名アルゴリズム(ECDSA)は、ランダムな値kの逆数を決定することを含む。ランダムな値は、本例では、一時鍵Dである。すなわち、逆数は、D -1を含む。第1署名成分rを決定するために、マスク化された一時鍵μが、二重マスク化された鍵シェアに対して多項式補間を用いて決定される:

μ=Interpolate(θ,・・・,θ)modn

加算マスクはジョイントゼロシェアに基づくので、それは補間から落ちて、結果μ=Dαmodnを残す。同様に、乗算マスクシェアのECPMに対する指数関数的多項式補間は、

θ=Exp-Interpolate(ω,・・・,ω
θ=G×α

を与える。次いで、第1署名成分rは、rx,y=(R,R)=θ×μ-1を計算することによって取得され、これは、

x,y=(G×α)×[Dαmodn]-1=G×D -1

である。第1署名成分rは、Rmodnである。
【0250】
動作410で、各ノード(又はそれらの少なくともk個)は、第2署名成分シェアsを決定する。第2署名成分は、一時鍵、秘密鍵、メッセージのハッシュ、及び第1署名成分を含む。どのノードも一時鍵又は秘密鍵を保持せず、それらは鍵シェアしか有さない。従って、各ノードは、第2署名成分シェアs

=Dk(i)(e+dA(i)r)+cmodn

のように生成する。次いで、この値は、ブロードキャストされるか又は他のノードと共有される。第2加算マスクシェアは、第2署名成分シェアを公開することにおける安全性を改善するために使用される。
【0251】
次いで、動作412で、第2ECDSA署名成分sが、多項式補間を通じて第2署名成分シェアから取得される:

s=Interpolate(s,・・・,s)modn

ここで、先と同じく、第2加算マスクシェアcは、それがジョイントゼロシェアに由来するので、補間から落ちる。それでもなお、それは、公開された第2署名成分シェアにランダムマスクを提供するのに役立つ。動作412は、ノードの1以上によって、又は代理ノードによって実行されてよい。2つの成分(r,s)を生成すると、メッセージmのデジタル署名は、秘密鍵シェアのいずれか又は一時鍵シェアのいずれかを公開せずに、このように生成される。
【0252】
動作414で、デジタル署名は、現在デジタル署名されているメッセージを含むブロックチェーントランザクションに組み込まれる。次いで、そのトランザクションは、妥当性確認及び最終的な確認のためにネットワークにサブミットされ得る。
【0253】
これより図8を参照する、図8は、ノード800の簡略化された例をブロック図形式で示す。ノード800は、プロセッサ802を含み、プロセッサ802は、1以上のマイクロプロセッサ、特定用途向け集積チップ(ASIC)、マイクロコントローラ、又は同様のコンピュータ処理デバイスを含んでよい。ノード800は、メモリ806を更に含み、メモリ806は、値、変数、及びいくつかの場合には、プロセッサ実行可能プログラム命令を記憶するよう、永続性及び非永続性メモリを含んでよい。ノード800は、有線又は無線ネットワーク上でネットワーク接続性を提供するネットワークインターフェイス804を更に含む。
【0254】
ノード800は、プロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション808を含む。プロセッサ実行可能命令は、実行される場合に、プロセッサ802に、本明細書で記載される機能又は動作の1つ以上を実行させる。
【0255】
本明細書で記載されるデバイス及びプロセス、並びにノードを構成するための記載された方法/プロセスを実装するあらゆるモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントが、標準のコンピュータプログラミング技術及び言語を用いて実現され得ることが理解されるだろう。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング仕様、データ構造、又は他のそのような実施詳細に限定されない。
【0256】
<おわりに>
本発明は、グループ署名プロセスの導入により、ビットコインが達成しようとしたものの基礎を形成する。分散型鍵生成システムの結合による耐障害性署名システムの付加は、全ての中央集権化及び信頼要件を除く。
【0257】
更に、暗黙的に非中央集権型のシステムの導入は、より堅牢であり且つ回復力のあるプロトコルの生成を可能にする。ECDSA[Johnson,2001]とシャミアのSSS[Shamir,1979]との間の互換性により、本発明は、新しい検証可能な秘密分散スキームによりビットコインを拡張するシステムを導入することができた。このシステムは、安全性において何も失うことなく、フェルドマン[Feldman,1987]又はペダーセン[Pedersen,1992]によって導出されたものよりもはるかに有効である。
【0258】
本願では、基本プロトコルの変更を必要とせずにビットコインの機能性を拡張するシステムが記載されてきた。本発明によれば:
1.信頼できるサードパーティは、鍵秘密の選択又は分散のためにもはや必要とされない。
2.サードパーティの信用に依存しない分散型銀行取引システムが構築され得る。
3.夫々のメンバー又はメンバーのグループは、保持されている秘密鍵のシェアが、公示されているビットコインアドレス及び公開鍵に対応することを独立して検証し得る。
4.傍受及び関連する攻撃の影響を軽減するように秘密鍵スライスをリフレッシュするプロトコルが存在する。
5.信頼できるサードパーティは、トランザクション及びメッセージのグループ署名のために不要である。
【0259】
本発明は、機密事項を扱うデータが決してメモリに現れないようにするということで、多くの現存している安全性リスクを完全に解決する。
【0260】
上記の実施形態は、本発明を制限するのではなく説明しているのであって、当業者は、添付の特許請求の範囲によって定義される本発明の適用範囲から外れることなしに、多くの代替の実施形態を設計することが可能である点が留意されるべきである。特許請求の範囲において、かっこ内の如何なる参照符号も、特許請求の範囲を制限するものとして解釈されるべきではない。語「有する」(comprising及びcomprises)などは、いずれかの請求項又は明細書の全文に挙げられているもの以外の要素又はステップの存在を除外しない。本明細書中、「有する」(comprises)は、「~を含むか、又はそれらから成る」(includes or consists of)を意味し、「有する」(comprising)は、「~を含むか、又はそれらから成る」(including or consisting of)を意味する。要素の単一参照は、そのような要素の複数参照を除外せず、逆もまた同じである。本発明は、いくつかの個別要素を有するハードウェアを用いて、且つ、適切にプログラムされたコンピュータを用いて、実施されてよい。いくつかの手段を列挙している装置クレームでは、それらの手段のうちのいくつかが、ハードウェアの同一アイテムによって具現されてもよい。特定の手段が相互に異なる請求項で挙げられているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないことを示すものではない。
【0261】
<参考文献>
1)Bar-Ilan, J. Beaver, "Non-Cryptographic Fault-Tolerant Computing in a Constant Number of Rounds", Proc. of 8th PODC, pp.201-209, 1989.
2)Berlekamp, Elwyn R. (1968), Algebraic Coding Theory, McGraw‐Hill, New York, NY.
3)Benger, N., van de Pol, J., Smart, N.P., Yarom, Y.: "Ooh Aah... Just a Little Bit": A Small Amount of Side Channel Can Go a Long Way. In: Batina, L., Robshaw, M. (eds.) Cryptographic Hardware and Embedded Systems | CHES 2014, LNCS, vol.8731, pp.75-92. Springer (2014)
4)Ben-Or, M., Goldwasser, S., Wigderson, A.: “Completeness theorems for noncryptographic fault-tolerant distributed computation”. In: Proceedings of the Twentieth Annual ACM Symposium on Theory of Computing. pp.1‐10. STOC ’88, ACM, New York, NY, USA (1988)
5)BIP 65 OP_CHECKLOCKTIMEVERIFY https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki
6)Chaum, David (1983). "Blind signatures for untraceable payments" (PDF). Advances in Cryptology Proceedings of Crypto. 82 (3): 199‐203.
7)Dawson, E.; Donovan, D. (1994), "The breadth of Shamir's secret-sharing scheme", Computers & Security, 13: Pp.69‐78
8)Desmedt. You (1987). “Society and Group Oriented Cryptography: A New Concept”. In A Conference on the Theory and Applications of Cryptographic Techniques on Advances in Cryptology (CRYPTO '87), Carl Pomerance (Ed.). Springer-Verlag, London, UK, UK, 120-127.
9)Feldman. P. “A practical scheme for non-interactive verifiable secret sharing”. In Proceedings of the 28th IEEE Annual Symposium on Foundations of Computer Science, pages 427‐437, 1987.
10)Gennaro, R., Jarecki, S., Krawczyk, H., Rabin, T.: “Robust threshold DSS signatures”. In: Proceedings of the 15th Annual International Conference on Theory and Application of Cryptographic Techniques. pp.354‐371. EUROCRYPT’96, SpringerVerlag, Berlin, Heidelberg (1996)
11)Ibrahim, M., Ali, I., Ibrahim, I., El-sawi, A.: “A robust threshold elliptic curve digital signature providing a new verifiable secret sharing scheme”. In: Circuits and Systems, 2003 IEEE 46th Midwest Symposium on. vol.1, pp.276‐280 (2003)
12)Johnson, D., Menezes, A., Vanstone, S.: “The elliptic curve digital signature algorithm (ecdsa)”. International Journal of Information Security 1(1), 36‐63 (2001)
13)Kapoor, Vivek, Vivek Sonny Abraham, and Ramesh Singh. "Elliptic Curve Cryptography." Ubiquity 2008, no. May (2008): 1-8.
14)Knuth, D. E. (1997), “The Art of Computer Programming, II: Seminumerical Algorithms” (3rd ed.), Addison-Wesley, p.505.
15)Koblitz, N. "An Elliptic Curve Implementation of the Finite Field Digital Signature Algorithm" in Advances in Cryptology ‐ Crypto '98. Lecture Notes in Computer Science, vol.1462, pp.327-337, 1998, Springer-Verlag.
16)Liu, C. L. (1968), “Introduction to Combinatorial Mathematics”, New York: McGraw-Hill.
17)National Institute of Standards and Technology: FIPS PUB 186-4: “Digital Signature Standard” (DSS) (2003)
18)Pedersen, T.: “Non-interactive and information-theoretic secure verifiable secret sharing”. In: Feigenbaum, J. (ed.) Advances in Cryptology ‐ CRYPTO ’91, LNCS, vol. 576, pp.129‐140. Springer (1992)
19)Rabin T. & Ben-Or. M. (1989) "Verifiable secret sharing and multiparty protocols with honest majority". In Proc. 21st ACM Symposium on Theory of Computing, pages 73--85, 1989.
20)Shamir, Adi (1979), "How to share a secret", Communications of the ACM, 22 (11): Pp.612‐613
21)Wright, C. & Savanah, S. (2016) “Determining a common secret for two Blockchain nodes for the secure exchange of information” International Patent Application Number Application Number: WO 2017/145016.
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10