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

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

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

特許7383017公開鍵結合検証を含む、コンピュータにより実施されるシステム及び方法
<>
  • 特許-公開鍵結合検証を含む、コンピュータにより実施されるシステム及び方法 図1
  • 特許-公開鍵結合検証を含む、コンピュータにより実施されるシステム及び方法 図2
  • 特許-公開鍵結合検証を含む、コンピュータにより実施されるシステム及び方法 図3
  • 特許-公開鍵結合検証を含む、コンピュータにより実施されるシステム及び方法 図4
  • 特許-公開鍵結合検証を含む、コンピュータにより実施されるシステム及び方法 図5
  • 特許-公開鍵結合検証を含む、コンピュータにより実施されるシステム及び方法 図6
  • 特許-公開鍵結合検証を含む、コンピュータにより実施されるシステム及び方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-09
(45)【発行日】2023-11-17
(54)【発明の名称】公開鍵結合検証を含む、コンピュータにより実施されるシステム及び方法
(51)【国際特許分類】
   H04L 9/32 20060101AFI20231110BHJP
【FI】
H04L9/32 200B
【請求項の数】 7
(21)【出願番号】P 2021518541
(86)(22)【出願日】2019-10-09
(65)【公表番号】
(43)【公表日】2022-01-13
(86)【国際出願番号】 IB2019058580
(87)【国際公開番号】W WO2020079534
(87)【国際公開日】2020-04-23
【審査請求日】2022-09-13
(31)【優先権主張番号】1816936.7
(32)【優先日】2018-10-17
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ライト,クレイグ スティーヴン
(72)【発明者】
【氏名】ヴォーン,オーウェン
【審査官】中里 裕正
(56)【参考文献】
【文献】国際公開第2018/185724(WO,A1)
【文献】MAXWELL, G. et al.,Simple Schnorr Multi-Signatures with Applications to Bitcoin,Cryptology ePrint Archive,Report 2018/068 ver:20180520:191909,[online],2018年05月20日,pp.1-34,<URL:https://eprint.iacr.org/2018/068/20180520:191909>
【文献】ZHAO, Y.,Aggregation of Gamma-Signatures and Applications to Bitcoin,Cryptology ePrint Archive,Report 2018/414 ver:20181205:162615,[online],2018年12月05日,pp.1-22,<URL:https:// eprint.iacr.org/2018/414/20181205:162615>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実施される方法であって、
公開鍵結合検証関数を含むブロックチェーントランザクションを設けるステップであって、前記ブロックチェーントランザクションは、前記ブロックチェーントランザクションにインプットを提供することにより、リソースへのアクセスを許可し又はリソースの制御を移転するために償還可能なように構成され、前記インプットは、
複数の公開鍵と、
前記複数の公開鍵のうちのそれぞれの2個に関連する少なくとも1つの勾配値と、
前記複数の公開鍵及び前記少なくとも1つの勾配値の結合から導出されるグループ公開鍵と、を含む、ステップと、
を含み、前記ブロックチェーントランザクションは、前記トランザクションの償還が成功すると、前記グループ公開鍵が前記複数の公開鍵の前記結合から導出されることを検証するために、前記公開鍵検証関数を前記インプットに適用するよう構成される、方法。
【請求項2】
既知の値から導出公開鍵を導出するステップと、
前記導出公開鍵を2次公開鍵のシーケンスとして構成するステップと、
を含み、前記2次公開鍵のシーケンスは、前記複数の公開鍵の部分集合である、請求項1に記載の方法。
【請求項3】
前記導出公開鍵を前記2次公開鍵のシーケンスとして構成するステップの前に、前記既知の値に制約関数を適用するステップであって、それにより前記部分集合のサイズを制限する、ステップ、を含む請求項2に記載の方法。
【請求項4】
前記複数の公開鍵のうちの更なる公開鍵及び前記導出公開鍵に少なくとも部分的に基づき、前記複数のうちの1つの公開鍵を計算するステップ、を含む請求項3に記載の方法。
【請求項5】
前記ブロックチェーントランザクションは、
前記グループ公開鍵に対応するグループ署名と、
マークルルートと、
マークルパス検証関数と、
を更に含み、前記ブロックチェーントランザクションは、前記ブロックチェーントランザクションに、
前記複数の公開鍵に関連付けられたマークルパスと、
前記グループ署名に対応するグループ秘密鍵と、
を提供することにより償還可能なように構成される、請求項1~4のいずれかに記載の方法。
【請求項6】
システムであって、
プロセッサと、
前記プロセッサによる実行の結果として、前記システムに請求項1~5のいずれか一項に記載のコンピュータにより実施される方法を実行させる実行可能命令を含むメモリと、
を含むシステム。
【請求項7】
実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、前記コンピュータシステムに、請求項1~5のいずれか一項に記載のコンピュータにより実施される方法を少なくとも実行させる、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、リソース制御及び/又はアクセスの移転に関し、より詳細には、ブロックチェーン上で暗号マルチシグネチャ方法を用いる、このような制御及び/又はアクセスの移転に関する。本開示は、限定ではなく、Bitcoinブロックチェーン又はBitcoinプロトコルの任意の変形において使用することに特に適する。
【背景技術】
【0002】
本願明細書では、私たちは、全ての形式の電子的な、コンピュータに基づく、分散型台帳を包含するために用語「ブロックチェーン」を使用する。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、並びにこれらの変形を含む。他のブロックチェーン実装が提案され開発されているが、ブロックチェーン技術の最も広く知られているアプリケーションは、Bitcoin台帳である。Bitcoinは、ここでは、便宜上及び説明の目的で参照されることがあるが、本開示はBitcoinブロックチェーンと共に使用することに限定されず、代替のブロックチェーン実装及びプロトコルが本開示の範囲に包含されることに留意すべきである。用語「ユーザ」は、ここでは、人間又はプロセッサに基づくリソースを表してよい。
【0003】
ブロックチェーンは、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピアの電子台帳であり、ブロックにより構成され、ブロックはまたトランザクションにより構成される。各トランザクションは、ブロックチェーンシステムの中の参加者間でデジタルアセット又はリソース(例えば、暗号通貨又はトークン化されたアイテム)の制御の移転を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、これらのブロックは一緒に繋げられて、起源以来ブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能な記録を生成する。トランザクションは、スクリプトとして知られている小さなプログラムを含む。スクリプトは、それらのインプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。Bitcoinプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を用いて記述される。
【0004】
トランザクションがブロックチェーンに書き込まれるためには、検証されなければならない。ネットワークノード(マイナー)は、無効なトランザクションがネットワークから拒否され、各トランザクションが有効であることを保証するために作業を実行する。ノードにインストールされたソフトウェアクライアントは、未使用トランザクション(unspent transaction, UTXO)のロック及びアンロックスクリプトを実行することにより、UTXOに対してこの検証作業を実行する。ロック及びアンロックスクリプトの実行が真(TRUE)と評価する場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、(i)トランザクションを受信した第1ノードにより検証され、トランザクションが有効な場合には、ノードが該トランザクションをネットワーク内の他のノードに中継する、(ii)マイナーにより構築された新しいブロックに追加される、(iii)マイニングされる、つまり過去のトランザクションのパブリック台帳に追加される、ことが必要である。
【0005】
ブロックチェーン技術は、暗号通貨の実装の使用のために最も広く知られているが、デジタル事業家が、Bitcoinの基づく暗号セキュリティシステム及び新しいシステムを実装するためにブロックチェーンに格納できるデータの両方の使用を開発し始めている。ブロックチェーンが、暗号通貨の分野に限定されない自動化タスク及びプロセスのために使用できれば、非常に有利になる。このようなソリューションは、ブロックチェーンの利益(例えば、永久性、イベントの記録の耐タンパ性、分散型処理、等)を利用しながら、それらの用途をより多様化し得る。
【0006】
別の領域のロックチェーンに関連する関心事項は、ブロックチェーンを介して現実世界のエンティティを表現し及び移転するための、「トークン」(又は「カラードコイン(coloured coin)」)の使用である。潜在的に極秘の又は秘密のアイテムは、識別可能な意味又は値を有しないトークンにより表すことができる。したがって、トークンは、現実世界のアイテムがブロックチェーンから参照されることを可能にする識別子として機能する。
【0007】
ブロックチェーントランザクションは、全部でN個のうちのM個の署名が、トランザクションを償還する(redeem)するためにRedeemスクリプトへのインプットとして提示される必要があるように、トランザクションを制限する組み込み(built-in)マルチシグネチャプロトコルを利用できる。例えば、トランザクションは、3-of-5マルチシグネチャ方法を用いてロックされてよい。その結果、トランザクションは、5個のうちの任意の3個の署名に対応する3個の秘密鍵を用いることによってのみ、ロック解除され得る。
【0008】
M-of-N方法について、Bitcoinプロトコルの変形で使用されるコマンドを参照すると、オペコードOP_MULTISIGは、N個の公開鍵及びM個の署名をインプットとして取り入れる。N個の公開鍵は、本例では、Redeemスクリプト自体に格納される。オペコードは、最初の署名から開始して、N個の公開鍵を検索して、署名が該公開鍵により生成されたかどうかを調べる。署名が一致しない全ての鍵をドロップする。この理由から、署名の順序は、公開鍵の提供された順序に一致しなければならない。マルチシグRedeemスクリプトの一例は以下に与えられる。
[表1]
【0009】
【表1】
これは、アンロックするために、以下のインプットの提示が必要である。
[表2]
【0010】
【表2】
以上から、Redeemスクリプトのサイズは、必要な署名の数M、及び参加者の数Nの両方と共に線形にスケーリングすることが明らかである。従って、M及びNが増大するにつれ、トランザクションを償還するためにRedeemトランザクションにおいて必要な署名の数は、増大し、公開鍵の数も増大する。その結果、伝搬するために必要なネットワーク速度、及び格納するために必要な空間、後のRedeemトランザクションが増大する。更に、RedeemトランザクションのアンロックスクリプトをRedeemスクリプトと結合するときに実行される必要のある演算の数は、N及びMで線形に増大する。
【0011】
従って、マルチシグネチャプロトコルを利用するブロックチェーントランザクション、特に膨大な数の公開鍵の記憶を必要とするトランザクションのようなブロックチェーントランザクションの送信、処理、及び記憶に関連付けられた演算及び記憶要件を低減するソリューションを提供することが望ましい。
【0012】
このような改良されたソリューションがここで考案される。したがって、本開示によると、添付の請求項において定められる方法が提供される。
【発明の概要】
【0013】
本開示により、コンピュータにより実施される方法が提供される。当該方法は、セキュリティ方法として記載され得る。
【0014】
当該方法は、
公開鍵結合検証関数を含むブロックチェーントランザクションを設けるステップであって、前記ブロックチェーントランザクションは、前記ブロックチェーントランザクションにインプットを提供することにより、リソースへのアクセスを許可し又はリソースの制御を移転するために償還可能なように構成され、前記インプットは、
複数の公開鍵と、
前記複数の公開鍵のうちのそれぞれの2個に関連する少なくとも1つの勾配値と、
前記複数の公開鍵及び前記少なくとも1つの勾配値の結合から導出されるグループ鍵と、を含む、ステップと、
を含んでよく、前記ブロックチェーントランザクションは、前記トランザクションの償還が成功すると、前記グループ鍵が前記複数の公開鍵の前記結合から導出されることを検証するために、前記公開鍵検証関数を前記インプットに適用するよう構成される、方法。
【0015】
このような方法は、セキュアな信頼できる公に検証可能な方法で、複数の秘密鍵により提示され及び/又は制御されるリソースの制御又はそれへのアクセスを移転する方法を提供する。
【0016】
当該方法は、既知の値から導出公開鍵を導出するステップと、
前記導出公開鍵を2次公開鍵のシーケンスとして構成するステップと、
を含んでよく、前記2次公開鍵のシーケンスは、前記複数の公開鍵の部分集合である。
【0017】
これは、ユーザが、方法の既知の要件を、方法で使用される公開鍵に変換することを可能にし、それにより、方法の多様性を向上するという利点を提供する。シーケンスの係数が予め計算され得るという更なる利点が提供される。それにより、方法が実行可能な速度を増大する。
【0018】
当該方法は、前記導出公開鍵を前記2次公開鍵のシーケンスとして構成するステップの前に、前記既知の値に制約関数を適用するステップであって、それにより前記部分集合のサイズを制限する、ステップ、を含んでよい。
【0019】
これは、方法の効率を更に向上するという利点を提供する。
【0020】
当該方法は、前記複数の公開鍵のうちの更なる公開鍵及び前記導出公開鍵に少なくとも部分的に基づき、前記複数のうちの1つの公開鍵を計算するステップ、を含んでよい。
【0021】
これは、1つの格納された公開鍵から、複数のうちの1つ以上が導出可能であるならば、所与の複数の公開鍵を格納するための要件を除去するという利点を提供する。
【0022】
前記ブロックチェーントランザクションは、
前記グループ公開鍵に対応するグループ署名と、
マークルルートと、
マークルパス検証関数と、
を更に含んでよく、前記ブロックチェーントランザクションは、前記ブロックチェーントランザクションに、
前記複数の公開鍵に関連付けられたマークルパスと、
前記グループ署名に対応するグループ秘密鍵と、
を提供することにより償還可能なように構成される。
【0023】
このような方法は、所与のレベルのセキュリティを達成するのに少ない処理ステップしか必要としない。それにより、セキュリティを維持しながら、方法の効率を向上するという利点を提供する。
【0024】
本開示は、プロセッサと、プロセッサによる実行の結果として、システムに本願明細書に記載のコンピュータにより実施される方法のいずれかの実施形態を実行させる実行可能命令を含むメモリと、を含むシステムも提供する。
【0025】
本開示は、実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、少なくとも、前記コンピュータシステムに、本願明細書に記載のコンピュータにより実施される方法を実行させる、非一時的コンピュータ可読記憶媒体も提供する。
【0026】
本開示のこれらの及び他の態様は、本願明細書に記載の実施形態から明らかであり及びそれらを参照して教示される。本開示の実施形態は、単なる例を用いて及び添付の図面を参照して以下に説明される。
【図面の簡単な説明】
【0027】
図1】非圧縮公開鍵のデータ符号化を示すテーブルである。
図2】本開示の実施形態を実行するスタックの進展を示すテーブルである。
図3】本開示の実施形態を実行するスタックの進展を示すテーブルである。
図4】異なるマルチシグネチャ方法の、M、N、及びスクリプトサイズの間の関係を示すテーブルである。
図5】本開示を具現化する2つのトランザクションを概略的に示す。
図6】本開示を具現化するステップのシーケンスを示すフローチャートである。
図7】種々の実施形態が実装できるコンピューティング環境を示す概略図である。
【発明を実施するための形態】
【0028】
Bitcoinスクリプトの中の2つの楕円曲線点の加算を検証する方法が開示される。2個の点P、P、及び候補解Pが与えられると、開示の方法は、スクリプトの中で、P=P+Pを検証する。一連の点加算へと前述の方法を拡張する更なる方法が開示される。
【0029】
当該方法は、多数の参加者のための、マルチシグネチャ方法のような署名方法で使用されてよい。当該方法は、楕円曲線デジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm (ECDSA))プロトコルを使用してよい。
【0030】
素数の楕円曲線は、次式により定義される。
=x+ax+b
曲線のグループ構造に従い、曲線上の2個の点P=(x,y)及びP=(x,y)が加算されて、第3の点P=(x,y)、つまりP=P+Pを得る。
【0031】
点Pは、P及びPを結ぶ線を通過し次にx軸に関して反射される楕円曲線上の点であると定義される。点加算の式は次の通りである。
【0032】
【数1】
Bitcoinプロトコルは、特に、楕円曲線パラメータがa=0及びb=7により与えられるsecp256k1協定を使用する。
【0033】
ブロックチェーントランザクションのスクリプトの中で拡張ユークリッドの互除法(extended Euclidean algorithm)を適用することは実用的ではない。これは、モジュラ逆数の計算が必要であり、従って、上述の式で定義された楕円曲線点加算をスクリプト内に実装できないからである。
【0034】
以下では、2個の点P及びPの加算の解を検証する方法が開示される。解P=P+P自体の計算は、スクリプトの外部で実行されるが、答えはスクリプト内で検証される。これは、ブロックチェーンノードに課され得る計算上の要件を低減する。
【0035】
この検証を達成するために、解P、及びλにより示されるPとPとの間の直線の勾配の値、が必要である。λの計算は、スクリプトの外部で実行されるが、λの検証はスクリプト内で実行できる。
【0036】
新たな公開鍵検証関数<Point Add P,P,λ,P>は、以下に詳細に定義され、それに提示されるλがPとPとの間の直線の勾配である場合、及びP=P+Pである場合、真(TURE)を返すよう構成される。これら2つの検証は、スクリプト内で直接達成され、トランザクションの償還が成功すると、発行される。
【0037】
関数の実行は以下のステップを含む。
【0038】
【数2】
公開鍵検証関数の連続的反復を適用することにより、任意の数nの公開鍵の和が検証され得る。ここで、唯一の制約は、ブロックチェーンプロトコルが使用されるという要件、例えばBitcoinスクリプトでは、オペコードの数(201)又はサイズ(単位:バイト)(10000)である。
【0039】
上述の公開鍵検証関数は、公開鍵のうちの2個が結合して第3の公開鍵を生じることを検証するために、3個の公開鍵で動作する。これは3個の公開鍵の加算P=P+P+P、及びそれより多くを検証するために格納できる。拡張された関数は、PointAddMultiと示され、以下に定義される。ここで、検証手順は、P、P、及びPが結合してPを生じることを検証する。
【0040】
【数3】
一般的には、つまり、結合して公開鍵Pを生じるn個の公開鍵Pが与えられると、PointAddMultiは以下のように定義できる。
【0041】
【数4】
点加算関数PointAddは、以下に開示する方法を用いて、Bitcoinスクリプト言語で構成できる。
【0042】
図1に、非圧縮公開鍵のデータ符号化が示される。ここで、データのダミー値が、よく知られた書籍であるA. Antonopoulos著、Mastering Bitcoin、2nd Edition, O’Reilly Media (2017)から取り入れられる。
【0043】
非圧縮公開鍵Pが与えられると、x及びy座標は、演算子OP_SPLITを用いてBitcoinスクリプトから以下のように直接抽出できる。
【0044】
【数5】
この演算を用いて、x及びy座標はインプットP、λ、P、Pから抽出できる。
【0045】
【数6】
留意すべき事に、上式の右辺にある項は、複製され、再配置されて、基本演算を用いて任意の所望の結合を生成し得る。
【0046】
図2を参照すると、関数PointAddの構成における第1のステップは、λのインプット値を検証することである。P≠Pの場合、以下の式が真のままであるかが調べられる。
【0047】
【数7】
これは、<y><y><λ><x><x>をインプットとして取り入れ、このインプットに対して以下の演算を行うことにより達成される。
【0048】
【数8】
これは、次式が満たされる場合、及びその場合のみ、真を返す。
【0049】
【数9】
図2のテーブルは、上述の演算が実行されるとき、スタックの進展を示す。
【0050】
=Pの場合、以下の演算が真であることを調べる、上述の式と同様の演算セットが構成できる。
【0051】
【数10】
図3を参照すると、関数PointAddの構成における第2のステップは、Pのインプット値がP+Pの和であることを検証することである。これを行うために、次式の各々が真であることが調べられる。
【0052】
【数11】
λは既に検証済みなので、以下の計算で使用できる。上述の2つの式のうちの最初の式が成り立つことを調べるために、以下がインプットとして提示され:<x><λ><x><x
以下の演算が行われる:
【0053】
【数12】
ここで、pは楕円曲線のベースフィールド(base field)の次数である。
【0054】
図3のテーブルは、上述の演算が実行されるとき、スタックの進展を示す。
【0055】
新しい公開鍵Pは、既存の公開鍵P1を、楕円曲線生成元(generator point)Gを数値Sで乗算して計算される公開鍵に加算することにより、生成できる。つまり、P=P+S・G、
【0056】
【数13】
Sは、元の公開鍵Pから導出される公開鍵Pを生成するために使用される決定鍵であってよい。
【0057】
=P+S・Gの点加算の検証は、生成元Gの定数倍(fixed multiples)を含む一連の点加算を検証することにより、達成できる。
【0058】
一例として、点加算を以下のシリーズに分解するために、倍及び加算(double-and-add)方法が使用されてよい。
【0059】
【数14】
ここで、s、...、s256∈{0,1}は、次式のようにSのバイナリ表現の係数である。
【0060】
【数15】
生成元を複数倍することにより得られる点G、2G、4G、...、2256Gは、一般に知られており、予め計算できる。これは、最終結果を得るために検証される必要のある255個の可能な個々の点加算が存在することを意味する。
【0061】
従って、P=P+S・Gは、最大で255+1=256個の点加算により検証されてよい。
【0062】
倍及び加算方法の代替として、スライドウインドウ又はモンゴメリラダー法のような他の点加算方法アルゴリズムが使用されてよい。
【0063】
計算された鍵による点加算の計算を更に管理し易くするために、Sが更に狭い範囲に制限されてよい。範囲は、アプリケーション固有であってよい。
【0064】
Sは、43億個の値の範囲を表す以下:
【0065】
【数16】
の範囲内の32ビット範囲の中の値を取る必要があってよい。しかしながら、最終結果を検証するためには、31個の個々の点加算だけでよい。これは、一例としてBitcoinでは、完全な256ビット範囲の中のSで開始し、次に該範囲を32ビットに制限するためにモジュラ演算OP_MODを適用することにより、達成されてよい。和Px+S・Gを取ることにより、範囲を難読化するために、ランダムな公開鍵Pが使用されてよい。
【0066】
一例として、中古車オークションの最高入札額が16000米ドルである。数値16000の形式のt米ドルの入札は、公開鍵Pに加算されて、加法鍵(additive key)P=P+g・Gを得ることができる。
【0067】
これは、14個の点加算により、スクリプト内で検証されてよい。
【0068】
これが入札処理でどのように使用され得るかを見るために、車に対する現在の最高入札が9000米ドルであると仮定する。これは、特定のUTXOにより追跡されている。このUXTOは、以下のRedeemスクリプトを有する。
【0069】
【数17】
これは、アンロックのためにインプットとして以下を要求する。
【0070】
【数18】
上述の点加算検証方法は、次に、P=P+t・Gを検証するために使用できる。これは、14個の個々の点加算の検証を含むことに留意する。これらの検証のためのデータは、上述のインプットの中で「検証データ(verification data)」としてラベル付けされる。
【0071】
UTXOは、t>9000の新しい入札が提供された場合に、アンロックできる。新しい入札者は、彼らの公開鍵P、及び和P=P+t・Gに対する解Pを提供しなければならない。彼らが加法鍵Pによりトランザクションに署名したという事実は、彼らをt米ドルの特定の入札に常にリンクする。
【0072】
別の例として、現在ブロックのようなブロックチェーン内のブロックによりハッシュされると、特定の閾値より下の値を生成するノンス(数値)を探すBitcoinマイナーを考える。マイナーは、トランザクションの公開鍵及びノンスの最初の9桁でロックされた該トランザクションを生成してよい。つまり、P=P+(ノンスの最初の9桁)・Gである。数値の最初の9桁について10億個もの組合せが存在する。従って、公開鍵Pは、30個の点加算を用いて検証できる。これは、鍵Pを、マイナーの公開鍵、及びマイニングされたブロックのノンスに常にリンクする。
【0073】
上述のスクリプト内の点加算検証手順は、M-of-Nマルチシグネチャ方法を用いてトランザクションに署名する効率的な方法を実施するために使用されてよい。それにより、ブロックチェーンを用いてリソースの制御又はリソースへのアクセスを移転するより効率的且つセキュアな方法を可能にする。
【0074】
M-of-N方法では、BitcoinオペコードOP_MULTISIGは、インプットとしてN個の公開鍵及びM個の署名を取り入れる。オペコードは、最初の署名から開始して、N個の公開鍵を検索して、署名が該公開鍵により生成されたかどうかを調べる。署名が一致しない全ての鍵をドロップする。この理由から、署名の順序は、公開鍵の提供された順序に一致しなければならない。
【0075】
マルチシグRedeemスクリプトは以下の通りである。
【0076】
【数19】
これは、アンロックのためにインプットとして以下を要求する:
<sig1><Sig2>...<SigM>。
【0077】
以上から、スクリプトのサイズは、必要な署名の数M、及び参加者の数Nの両方と共に線形にスケーリングすることが分かる。
【0078】
図4~6を参照すると、公開鍵の各々のM-of-N組合せに対応するリーフを有するマークル木が生成され、これは全部でN個のリーフからM個の選択することを含む。次に、マークルルートを含むRedeemスクリプトが生成される。該Redeemスクリプトは、マークルパス及び署名検証方法を含むインプットのアンロック表現を必要とする。
【0079】
リソースの制御又はリソースへのアクセスを移転する2つの方法が後述される。各々は、それら自体の利点及び欠点を有する。
1.個別署名方法これは、トランザクションに個々に署名するためにそれぞれの署名を使用し、マルチシグと同じ機能を有するが、スクリプトサイズがより小さい。
2.グループ署名方法これは、署名グループの中のM任意の参加者の単一の署名を提供する。これは、共有シークレットから導出される鍵、又はグループの公開鍵を加算することにより形成される鍵のような、参加者のうちのM人の各集合について予め合意された任意の公開鍵であってよい。後者の場合、鍵が個々のメンバの鍵の和であることを検証するための追加オプションは、前述の検証方法を使用する。
【0080】
各方法は、図4に示されたテーブルに纏めたように、異なるスケーリング特性を有する。
【0081】
4-of-5方法を考える。この場合、マークル木は、以下のリーフを有する。
【0082】
【数20】
マークル木自体は、3レベルの深さである。ルート<R>を有するマークルパスを検証する演算は、以下の通りである。
【0083】
【数21】
マークルパス及びマークルパスを検証するための演算は、NからMを選ぶ(N choose M)署名グループの選択数と共に、対数的にサイズが増大する。
【0084】
個別署名方法では、グループの各メンバは、トランザクションの個々の署名を提供する。この方法の機能は、標準的なマルチシグ方法と同じであるが、スクリプトのサイズは縮小し、スクリプトが実行される効率を向上する。スクリプトは、以下の形式を取る:
【0085】
【数22】
これは、アンロックするために、以下のインプットの提示が必要である。
【0086】
【数23】
償還者(redeemer)は、インプットとして、M個の署名をそれらの対応する公開鍵と共に、及びPのマークルパスを提供しなければならない。
【0087】
この方法でのP、...、PMのマークル木リーフへのマッピングは、例えば、OP_CATを用いるP、...、Pの連結のハッシュであってよい。
【0088】
この方法の主要な特徴は、各メンバが特定のトランザクションに署名することである。彼らは、彼らの秘密鍵に関する情報を互いに開示しないので、かれらの秘密鍵のセキュリティを損なわない。
【0089】
図4を参照すると、この方法は、従来のマルチシグ方法に勝る有利なスケーリング特性を有することが分かる。これは、マルチシグネチャ制度が小さなM及び大きなN、例えば5-of-1000、にあるとき最も顕著である。
【0090】
グループ署名方法では、トランザクションに署名するM人のメンバのグループについて、1つの署名しか必要ない。スクリプトは、以下の形式を取る。
【0091】
【数24】
これは、アンロックするために、以下のインプットの提示が必要である。
【0092】
【数25】
ここで、Pは、M人の参加者の集合についてのグループ公開鍵である。
【0093】
この方法の利点は、1つの署名しか必要ないので、アンロックスクリプトのサイズが非常に小さいことである。スクリプト内の公開鍵の加算の数は、参加者の数Mと共に線形にスケーリングする。従って、この方法は、個々の署名を調べるより、処理パワーの観点でコストの少ない演算を提供する。
【0094】
この方法は、参加者が互いに彼らの秘密鍵を共有することを要求する。これは、この方法で彼らの使用する鍵ペアが、1回限りの使用の鍵ペアであることが、本方法のセキュリティを向上するために有用であることを意味する。別の特手用は、グループ秘密鍵へのアクセスを有する任意の数の参加者が、彼らの望む任意のトランザクションに署名し得ることである。これは、方法の多様性を向上する。これらの特徴が特に望ましい用途がある。例えば、UTXOとしてブロックチェーンに記録された、良好に確立された最後の手段の条項(last-resort clause)を有効にしたいと望む取締役のグループである。これは、本方法を用いて特定のUTXOをアンロックすることにより達成されてよい。
【0095】
上述の方法では、外部観察者は全く認識されない。つまり、実際には、グループ署名方法である。署名及び対応する公開鍵がユーザのグループに関連するという事実を公にするために、本方法は、スクリプト内で、グループ公開鍵が個々の参加者の公開鍵の和であることP=P+・・・+Pが検証されることを要求するよう変更されてよい。この適応された方法は、上述の鍵加法検証方法を使用してよい。
【0096】
【数26】
これは、アンロックするために、以下のインプットの提示が必要である。
【0097】
【数27】
ここで、<Point Add Multi P,...,P,P>関数は、前に導入されたものであり、<Verification data>は、各々の個々の点加算の間の勾配を含む。
【0098】
図5は、トランザクションTx1及びTx2のペアを示す。Tx1は、Verify Markle Path関数、特定のM-of-N要件に調整されたPointAddMulti関数、及びCheckSig関数を含むRedeemスクリプトを有するUTXOを定義する。Tx2は、Tx1へのインプットの中でグループ署名、グループ署名に関連するグループ公開鍵、PointAddMulti関数により要求される勾配、ユーザのグループの公開鍵、及び関連付けられたMarkle Pathを提示することにより、Tx1のUTXOを償還することを目的とする、ブロックチェーンに後に提出されるトランザクションを定義する。
【0099】
図6は、上述の個別署名方法及びグループ署名方法に従う方法を実行するために行われるステップを示すフローチャートを示す。図6で、Tx1及びTx2は、いずれかの方法に従い使用されるトランザクションのペアを表し得る。
【0100】
図7を参照すると、本開示の少なくとも一実施形態を実施するために使用され得るコンピューティング装置2600の説明のための簡略ブロック図が提供される。種々の実施形態で、コンピューティング装置2600は、上述の図示のシステムのうちのいずれかを実装するために使用されてよい。例えば、コンピューティング装置2600は、データサーバ、ウェブサーバ、ポータブルコンピューティング装置、パーソナルコンピュータ、又は任意の電子コンピューティング装置として使用するために構成されてよい。図7に示すように、コンピューティング装置2600は、主メモリ2608及び永久記憶装置2610を含む記憶サブシステム2606と通信するよう構成され得る1つ以上のレベルのキャッシュメモリ及びメモリ制御部(集合的に2602とラベル付けされる)を備える1つ以上のプロセッサを含んでよい。主メモリ2608は、図示のように、動的ランダムアクセスメモリ(DRAM)2618及び読み出し専用メモリ(ROM)2620を含み得る。記憶サブシステム2606及びキャッシュメモリ2602は、本開示で説明されたようなトランザクション及びブロックに関連付けられた詳細事項のような情報の記憶のために使用されてよい。プロセッサ2602は、本開示で説明されたような任意の実施形態のステップ又は機能を提供するために利用されてよい。
【0101】
プロセッサ2602は、1つ以上のユーザインタフェース入力装置2612、1つ以上のユーザインタフェース出力装置2614、及びネットワークインタフェースサブシステム2616とも通信できる。
【0102】
バスサブシステム2604は、コンピューティング装置2600の種々のコンポーネント及びサブシステムが意図した通りに互いに通信できるようにするメカニズムを提供してよい。バスサブシステム2604は、単一のバスとして概略的に示されるが、バスサブシステムの代替の実施形態は、複数のバスを利用してよい。
【0103】
ネットワークインタフェースサブシステム2616は、他のコンピューティング装置及びネットワークへのインタフェースを提供してよい。ネットワークインタフェースサブシステム2616は、幾つかの実施形態では、コンピューティング装置2600の他のシステムからデータを受信し及びそれへデータを送信するインタフェースとして機能してよい。例えば、ネットワークインタフェースサブシステム2616は、データ技術者が、装置をネットワークに接続することを可能にする。その結果、データ技術者は、データセンタのような遠隔地にいがなら、データを装置へ送信し、データを装置から受信できる。
【0104】
ユーザインタフェース入力装置2612は、キーボード、統合型マウス、トラックボール、タッチパッド、又はグラフィックタブレットのような指示装置、スキャナ、バーコードスキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイクロフォンのようなオーディオ入力装置、及び他の種類の入力装置のような、1つ以上のユーザ入力装置を含んでよい。通常、用語「入力装置」の使用は、コンピューティング装置2600に情報を入力する全ての可能な種類の装置及びメカニズムを含むことを意図する。
【0105】
1つ以上のユーザインタフェース出力装置2614は、ディスプレイサブシステム、プリンタ、又は音声出力装置のような非視覚ディスプレイ、等を含んでよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、又はプロジェクションのような平面装置、又は他のディスプレイ装置を含んでよい。通常、用語「出力装置」の使用は、コンピューティング装置2600から情報を出力する全ての可能な種類の装置及びメカニズムを含むことを意図する。1つ以上のユーザインタフェース出力装置2614は、例えば、ユーザインタフェースを提示して、ここに記載したプロセス及び変形を実行するアプリケーションとのユーザ相互作用が適切であるとき、そのような相互作用を実現するために使用されてよい。
【0106】
記憶サブシステム2606は、本開示の少なくとも1つの実施形態の機能を提供する基本プログラミング及びデータ構造を記憶するコンピュータ可読記憶媒体を提供してよい。アプリケーション(例えば、プログラム、コードモジュール、命令)は、1つ以上のプロセッサにより実行されると、本開示の1つ以上の実施形態の機能を提供し、記憶サブシステム2606に格納されてよい。これらのアプリケーションモジュール又は命令は、1つ以上のプロセッサ2602により実行されてよい。記憶サブシステム2606は、更に、本開示に従い使用されるデータを格納するレポジトリを提供する。例えば、主メモリ2608及びキャッシュメモリ2602は、プログラム及びデータのための揮発性記憶を提供できる。永久記憶装置2610は、プログラム及びデータの永久(不揮発性)記憶を提供でき、磁気ハードディスクドライブ、取り外し可能媒体に関連付けられた1つ以上のフロッピディスクドライブ、取り外し可能媒体に関連付けられた1つ以上の光ドライブ(例えば、CD-ROM、又はDVD、又はBlue-Ray)ドライブ、及び他の同様の記憶媒体を含んでよい。このようなプログラム及びデータは、本開示に記載した1つ以上の実施形態のステップを実行するためのプログラム、及び本開示に記載したトランザクション及びブロックに関連付けられたデータを含み得る。
【0107】
コンピューティング装置2600は、ポータブルコンピュータ装置、タブレットコンピュータ、ワークステーション、又は後述する任意の他の装置を含む種々のタイプのものであってよい。さらに、コンピューティング装置2600は、1つ以上のポート(例えば、USB、ヘッドフォンジャック、光コネクタ、等)を通じてコンピューティング装置2600に接続可能な別の装置を含み得る。コンピューティング装置2600に接続され得る装置は、光ファイバコネクタを受けるよう構成される複数のポートを含んでよい。したがって、この装置は、光信号を、処理のために装置を接続するポートを通じてコンピューティング装置2600に送信される電気信号に変換するよう構成されてよい。コンピュータ及びネットワークの絶えず変化する特性により、図7に示したコンピューティング装置2600の説明は、装置の好適な実施形態を説明する目的の特定の例としてのみ意図される。図7に示したシステムより多くの又は少ないコンポーネントを有する多くの他の構成が可能である。
【0108】
上述の実施形態は、本発明を限定するのではなく、説明すること、及び当業者は添付の特許請求の範囲により定められる本開示の範囲から逸脱することなく多くの代替的実施形態を考案できることに留意すべきである。特許請求の範囲において、括弧内の任意の参照符号は、請求項を限定することを意図しない。用語「有する」及び「含む」(comprising、comprises)等は、任意の請求項又は明細書全体に列挙されたもの以外の要素又はステップの存在を排除しない。本願明細書では、「有する」は「有する又は構成される」を意味し、「含む」は「含む又は構成される」を意味する。要素の単数の参照は、該要素の複数の参照を排除しない。逆も同様である。本開示は、幾つかの別個の要素を含むハードウェアにより、及び適切にプログラムされたコンピュータにより、実装できる。幾つかの手段を列挙する装置クレームでは、これらの手段のうちの幾つかは、1つの同じハードウェアアイテムにより具現化されてよい。単に特定の手段が相互に異なる従属請求項に記載されるという事実は、これらの手段の組み合わせが有利に使用されないことを示さない。
図1
図2
図3
図4
図5
図6
図7