(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024160343
(43)【公開日】2024-11-13
(54)【発明の名称】セキュア・ダイナミック閾値署名スキームのための方法、記憶媒体及び電子デバイス
(51)【国際特許分類】
H04L 9/32 20060101AFI20241106BHJP
【FI】
H04L9/32 200B
H04L9/32 200Z
【審査請求】有
【請求項の数】17
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024134741
(22)【出願日】2024-08-13
(62)【分割の表示】P 2023072981の分割
【原出願日】2018-04-26
(31)【優先権主張番号】1707168.9
(32)【優先日】2017-05-05
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】110004381
【氏名又は名称】弁理士法人ITOH
(72)【発明者】
【氏名】トレヴェサン,トーマス
(57)【要約】 (修正有)
【課題】暗号化技術を利用することにより実施される強化されたセキュリティ・ソリューションのための、楕円曲線ディジタル署名アルゴリズム署名(r,w)を生成する方法及びデバイスを提供する。
【解決手段】方法は、ノードにより、他ノードとの署名グループを形成するステップ、ノードにより、セキュア乱数に基づいて、セキュア乱数の逆数k
-1と、セキュア乱数と楕円曲線生成ポイントGとに基づいて決定する第1署名成分rとを取得するステップ、ノードにより、プライベート・シークレット共有と、セキュア乱数の逆数と、第1署名成分とに基づいて部分的な署名v
iを決定するステップ、ノードにより、署名グループの他ノードから部分的な署名を受信するステップ及びノードにより、決定して受信した部分的な署名に基づいて第2署名成分wを生成するステップを含む。
【選択図】
図6
【特許請求の範囲】
【請求項1】
リソースに対するアクセスを制御するために処理リソースにより実行されるコンピュータ実行方法であって、第1署名成分rと第2署名成分wとを含む楕円曲線ディジタル署名アルゴリズム署名を生成するステップを含み、前記生成するステップは:
ノードにより、複数の他ノードとの署名グループを形成するステップ;
前記ノードにより、セキュア乱数に基づいて、a)前記セキュア乱数の逆数とb)前記第1署名成分rとを取得するステップであって、前記第1署名成分は前記セキュア乱数と楕円曲線生成ポイントとに基づいて決定される、ステップ;
前記ノードにより、部分的署名を決定するステップ;
前記署名グループの複数の他ノードから部分的署名を受信するステップ;
前記第2署名成分を生成するステップ;
前記署名を利用して、コンピュータ・ネットワークを介するリソースへのアクセス及び/又は転送を制御するステップ;
を含む方法。
【請求項2】
前記部分的署名は、プライベート・シークレット共有と、前記セキュア乱数の逆数と、前記第1署名成分とに基づいて決定される、請求項1に記載の方法。
【請求項3】
前記第2署名成分wは、決定され受信された部分的署名に基づいて生成される、請求項1に記載の方法。
【請求項4】
前記取得するステップは、前記逆数と前記第1署名成分とを生成するステップを含み、前記方法は前記逆数を前記複数の他ノードへ送信するステップを更に含む、請求項1に記載のコンピュータで実行される方法。
【請求項5】
前記取得するステップは、前記セキュア乱数を生成するために、前記ノードの信頼される実行環境に関連するエンクレーブを準備するステップを含む、請求項4に記載のコンピュータで実行される方法。
【請求項6】
前記取得するステップは、前記逆数と前記第1署名成分とを、前記複数の他ノードのうちの1つから受信するステップを含む、請求項1に記載のコンピュータで実行される方法。
【請求項7】
前記署名グループを形成する前に、分散された署名生成に参加する意向をシグナリングするステップを更に含む、請求項1に記載のコンピュータで実行される方法。
【請求項8】
前記部分的署名は、前記ノードの信頼される実行環境に関連するエンクレーブ内で決定される、請求項1に記載のコンピュータで実行される方法。
【請求項9】
前記部分的署名は、ラグランジュ補間を実行することにより決定される、請求項1に記載のコンピュータで実行される方法。
【請求項10】
前記第2署名成分は信頼される実行環境に関連するエンクレーブ内で生成され、前記方法は、前記第2署名成分を生成した後に、前記楕円曲線ディジタル署名アルゴリズムを、前記エンクレーブから前記ノードのホスト部分へ送信するステップを更に含む、請求項1に記載のコンピュータで実行される方法。
【請求項11】
前記署名をトランザクションに追加してそれをブロックチェーン・ネットワークへブロードキャストするステップを更に含む請求項1に記載のコンピュータで実行される方法。
【請求項12】
前記署名グループを形成する前に、グループの複数の既存のメンバーから受信されるシークレット共有データに基づいて前記シークレット共有を取得するステップを更に含む請求項1に記載のコンピュータで実行される方法。
【請求項13】
前記シークレット共有は、前記ノードの信頼される実行環境に関連するエンクレーブ内で決定される、請求項12に記載のコンピュータで実行される方法。
【請求項14】
前記部分的署名viは:
vi=k-1rbisi mod p
として決定され、biはラグランジュ補間係数であり、k-1は前記セキュア乱数の前記逆数であり、siは前記シークレット共有であり、rは前記第1署名成分であり、pは次数である、請求項1に記載のコンピュータで実行される方法。
【請求項15】
実行されると請求項1に記載の方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を含むコンピュータ読み取り可能な記憶媒体。
【請求項16】
インターフェース・デバイス;
前記インターフェースに結合されたプロセッサ;
前記プロセッサに結合されたメモリ;
を含む電子デバイスであって、前記メモリは、実行されると請求項1に記載の方法を実行するように前記プロセッサを構成するコンピュータ実行可能命令を格納している、電子デバイス。
【請求項17】
前記プロセッサは信頼される実行環境を含み、前記コンピュータ実行可能命令は前記信頼される実行環境の中で実行される、請求項16に記載の電子デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般にコンピュータ・ネットワークを介して交換又は送信されるリソースのセキュリティを保護及び強化するために暗号署名を利用することを含む、コンピュータに実装されるセキュリティ技術に関する。本発明はまた、分散された台帳(ブロックチェーン)技術に関し、特に、ディジタル台帳に関連付けられた及び/又はディジタル台帳により実行される交換及び/又は転送に対する分散された制御を提供する方法及びシステムに関する。本発明は、グループのメンバーの内の閾値数のメンバーが、そのグループを代表して有効な暗号署名を生成することを許容することに特に適しているが、これに限定されない。
【背景技術】
【0002】
この文書では、電子的な、コンピュータ・ベースの、分散型のあらゆる形態の台帳を含むように「ブロックチェーン」という用語を使用する。これらは、ブロックチェーン及びトランザクション・チェーンの技術、許可された台帳及び許可されていない台帳、共有される台帳、並びにそれらの変形を含むが、これらに限定されない。ブロックチェーン技術の最も広く知られているアプリケーションはビットコイン台帳であるが、他のブロックチェーン実装が提案され開発されている。便宜上及び説明上の目的でビットコインが本明細書で言及されているかもしれないが、本発明は、ビットコイン・ブロックチェーンと共に使用されることに限定されず、代替的なブロックチェーンの実装及びプロトコルも本発明の範囲内に属することに留意されたい。
【0003】
ブロックチェーンは、コンセンサス・ベースの電子台帳であり、これは、トランザクション及びその他の情報により構成されるブロックにより構成される、コンピュータ・ベースの分散された分散システムとして実現される。ビットコインの場合、各トランザクションは或るデータ構造であり、ブロックチェーン・システムの参加者間のディジタル資産の制御の移行をエンコードし、少なくとも1つの入力と少なくとも1つの出力とを含む。各ブロックはブロックが共にチェーン化される先の先行ブロックのハッシュを含み、その発端以来ブロックチェーンに書き込まれた全てのトランザクションの永続的で変更不可能なレコードを作成する。トランザクションはその入力及び出力に組み込まれるスクリプトとして知られている小さなプログラムを含み、プログラムはトランザクションの出力が誰によってどのようにアクセスされ得るかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトはスタック・ベースのスクリプト言語を使用して書かれる。
【0004】
トランザクションがブロックチェーンに書き込まれるためには、「検証済みである必要がある。幾つかのネットワーク・ノードは、マイナーとして動作し、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークから拒否される。例えば、ノードにインストールされているソフトウェア・クライアントは、未使用残高(UTXO)を参照するトランザクションに対して、この検証作業を実行する。検証は、トランザクションのロック及びアンロック・スクリプトを実行することによって実行され得る。ロック及びアンロック・スクリプトの実行がTRUEに評価され、特定の他の条件が満たされる場合、そのトランザクションは有効であり、そのトランザクションはブロックチェーンに書き込まれ得る。従って、トランザクションがブロックチェーンに書き込まれるためには、i)トランザクションを受け取るノードによって検証されること(トランザクションが有効である場合には、ノードはそれをネットワークの他のノードへ中継する);及びii)マイナーによって構築された新たなブロックに追加されること;及びiii)採掘されること、即ち過去のトランザクションのパブリック台帳に追加されることを必要とする。トランザクションを実質的に不可逆にするように、十分な数のブロックがブロックチェーンに追加される場合、トランザクションは承認されたと考えられる。
【発明の概要】
【0005】
ブロックチェーン・プロトコルはしばしば、未使用残高(UTXO)に対するエンカンブランス(an encumbrance)を除去する前に、多数のノード又はパーティからの署名を必要とするマルチパーティ署名機能を提供する。例えば、ビットコインのマルチシグ機能はそのような機能を提供する。マルチ・シグネチャ・スクリプトは、N個の公開鍵がロック・スクリプトで記録される条件を設定することができ、それぞれがN個の公開鍵の1つにそれぞれに関連する少なくともM個の公開鍵はエンカンブランスを解放する、即ちUTXOをアンロックするために署名を提供しなければならない。このような署名方式は、有利なセキュリティ上の恩恵を提供し、UTXOのロック/アンロックに対するより緻密な高度な制御を可能にすることによって、UTXOに対する強化された制御を提供する。しかしながら、既知のマルチシグ技術は限られた機能しか提供せず、なぜなら、署名生成に貢献しなければならない者が、ロック・スクリプトが設定された後に変わることを許容しないからである。従って、ブロックチェーン及び他のネットワークを介して転送されるもの等の電子リソースを制御する改善されたセキュリティ・メカニズムに対するニーズが存在する。
【0006】
かくて本発明によれば添付の特許請求の範囲で規定される方法が提供される。
【0007】
以下、更に詳細に説明されるように、ダイナミック・マルチパーティ閾値署名スキーム(a dynamic multiparty threshold signature scheme)は、単一の公開鍵の下で、但し各グループ・メンバーがプライベート・シークレットを保持している下で、リソース(例えば、ブロックチェーンのトランザクション出力、UTXO)の制御が、参加者のグループ内で共有されることを許容する。参加者のうちの閾値の部分集合は、アウトプットを使うために集合的に署名するように要求される。有利なことに、署名生成に寄与する何れの参加者も、各自のプライベート・シークレットを明らかにすることを必要とせずに、有効な署名が生成されることを可能にするディジタル署名スキームが説明される。閾値署名スキームに対するセキュリティを提供するために、信頼される実行環境が使用されてもよい。
【0008】
有利なことに、グループに使用される単一の公開鍵が同じままであることを許容する方式で参加者を登録及び登録解除するための技術が説明される。信頼される実行環境は、グループの単独の公開鍵を変更する必要なしに、グループ・メンバーに対するセキュアな変更を可能にするために使用される。
【0009】
従って本発明によればコンピュータで実現される方法が提供され得る。本発明はセキュリティ又は制御の方法として説明され得る。本発明はリソースを確保又は制御するように構成され得る。本発明はリソースに対するアクセスを制御するように構成され得る。制御されるリソースは、コンピュータ又はネットワーク上に記憶されるか、又はそれを介して送信される電子リソース、エンティティ又はアイテムであってもよい。場合によっては、それは「ディジタル資産」、「アウトプット」、「暗号通貨の一部」及び/又は「UTXO」と呼ばれてもよい。本発明は、リソースへのアクセス及び/又はリソースの移転を制御するように構成することができる本発明はリソースへのアクセス及び/又はその転送を制御するように構成され得る。本発明はリソースへのアクセス/その制御をロック又はアンロックするように構成され得る。場合によっては、「消費(spend)」という用語は、リソースのアンロック、即ちその制御又はリソースへのアクセスを許可することを示すように使用されてもよい。
【0010】
本方法は暗号化によって実行される方法であり得る。追加的又は代替的に、本発明は楕円曲線ディジタル署名アルゴリズム署名を生成する方法として説明され得る。署名は、第1署名成分rと第2署名成分wとを含み得る。本方法は例えばブロックチェーン・ネットワーク等のネットワークにおける1つ以上のノードによって実現され得る。
【0011】
本方法は:i)ノードにより、他ノードとの署名グループを形成するステップ;ii)ノードにより、セキュア乱数に基づいて、a)セキュア乱数の逆数とb)第1署名成分rとを取得するステップであって、第1署名成分はセキュア乱数と楕円曲線生成ポイントとに基づいて決定される、ステップ;iii)ノードにより、プライベート・シークレット共有(a private secret share)と、セキュア乱数の逆数と、第1署名成分とに基づいて部分的署名を決定するステップ;iv)ノードにより、署名グループの他ノードから部分的署名を受信するステップ;及びv)ノードにより、決定され受信された部分的署名に基づいて第2署名成分wを生成するステップを含み得る。
【0012】
本方法は、コンピュータ実現ネットワークにおけるリソースへのアクセス及び/又はリソースの転送を制御するために、署名を使用するステップを有し得る。これはブロックチェーン・ネットワークであってもよい。
【0013】
幾つかの実装において、取得するステップは、逆数と第1署名成分とを生成するステップを含む。本方法はまた逆数を他ノードへ送信するステップを含んでもよい。
【0014】
幾つかの実装において、取得するステップは、セキュア乱数を生成するために、ノードの信頼される実行環境(a trusted execution environment:TEE)に関連するエンクレーブを準備するステップを含む。
【0015】
幾つかの実装において、取得するステップは、逆数と第1署名成分とを、他ノードのうちの1つから受信するステップを含む。
【0016】
幾つかの実装において、本方法は、署名グループを形成する前に、分散された署名生成に参加する意向をシグナリングするステップを含む。
【0017】
幾つかの実装において、部分的署名は、ノードの信頼される実行環境に関連するエンクレーブ内で決定される。
【0018】
幾つかの実装において、部分的署名は、ラグランジュ補間を実行することにより決定される。
【0019】
幾つかの実装において、第2署名成分は信頼される実行環境に関連するエンクレーブ内で生成され、本方法は、第2署名成分を生成した後に、楕円曲線ディジタル署名アルゴリズムを、エンクレーブからノードのホスト部分へ送信するステップを更に含む。
【0020】
幾つかの実装において、本方法は、署名をブロックチェーン・トランザクションに追加してそれをブロックチェーン・ネットワークへブロードキャストするステップを更に含む。
【0021】
幾つかの実装において、本方法は、署名グループを形成する前に、グループの複数の既存のメンバーから受信されるシークレット共有データに基づいてシークレット共有を取得するステップを更に含む。
【0022】
幾つかの実装において、シークレット共有は、ノードの信頼される実行環境に関連するエンクレーブ内で決定される。
【0023】
幾つかの実装において、部分的署名viは:
vi=k-1rbisi mod p
として決定される。
【0024】
biはラグランジュ補間係数であり、k-1はセキュア乱数の逆数であり、siはシークレット共有であり、rは第1署名成分であり、pは次数である。
【0025】
本発明によれば、電子デバイスが提供され得る。本発明の方法に関して上記で説明された任意の特徴は、本発明に従って構成されるデバイスにも適用され得る。デバイスは、上述の方法の任意の実施形態を実装又は実行するように構成され得る。電子デバイスは、インターフェース・デバイスと、インターフェース・デバイスに結合されたプロセッサと、プロセッサに結合されたメモリとを含んでもよい。メモリは、実行されると本明細書で説明される方法を実行するようにプロセッサを構成するコンピュータ実行可能命令をそこに記憶することができる。
【0026】
本発明によれば、コンピュータ読取可能な記憶媒体が提供され得る。コンピュータ読取可能な記憶媒体は、実行されると本明細書で説明される方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を含む。
【図面の簡単な説明】
【0027】
本発明のこれら及び他の態様は、本明細書で説明される実施形態から明らかであり、それを参照して解明されるであろう。本発明の実施形態が単なる例示として様々なパラメータとともに添付図面を参照して説明される。
【0028】
【
図1】
図1は例示的なブロックチェーン・ネットワークのブロック図を示す。
【0029】
【
図2】
図2は、ブロックチェーン・ネットワーク内のノードとして機能し得る例示的な電子デバイスのブロック図を示す。
【0030】
【
図3】
図3は、グループを初期化する方法の信号図である。
【0031】
【
図4】
図4は、以前に初期化されているグループに参加する方法の信号図である。
【0032】
【
図5】
図5は、グループのメンバーを登録解除する方法の信号図である。
【0033】
【
図6】
図6は、グループのための署名を生成する方法の信号図である。
【発明を実施するための形態】
【0034】
本発明は、改良されたセキュリティ・ソリューションに関する。これらは、コンピュータ・ネットワーク上で制御されるリソースの強化されたセキュリティのために使用されることが可能である。以下の例示的な実施形態では、例えばビットコイン等のブロックチェーン・ネットワークを我々のネットワーク例として使用する。ブロックチェーンは、トークン又は暗号通貨の一部のような電子リソースの制御を、ネットワーク上のノード間で転送するために使用されることが可能である。便宜上、以下、制御されるリソースを「ディジタル資産」として言及するであろう。しかしながら、これは、如何なる点においても限定であると解釈されるべきではなく、如何なる特定のタイプの資産を意味するものとしても解釈されるべきではない。本発明は、ブロックチェーン・トランザクションによるものを上回る利点及びアプリケーションを有し、財務指向の文脈に関して使用することに限定されず、より広範な適用可能性を有する。以下に提供されるブロックチェーンの例は、説明のみのために提供されているにすぎない
【0035】
ブロックチェーン・ネットワーク
まず、ブロックチェーンに関連する例示的なブロックチェーン・ネットワーク100をブロック図形式で示す
図1を参照する。ブロックチェーン・ネットワークは、公開ブロックチェーン・ネットワークであってもよく、それは、招待されることなく、又は他のメンバーからの同意なしに、誰でも参加することが可能なピア・ツー・ピアのオープン・メンバーシップ・ネットワークである。ブロックチェーン・ネットワーク100が動作するブロックチェーン・プロトコルのインスタンスを実行する分散された電子デバイスは、ブロックチェーン・ネットワーク100に参加することができる。そのような分散された電子デバイスはノード102として言及され得る。ブロックチェーン・プロトコルは例えばビットコイン・プロトコルであってもよい。
【0036】
ブロックチェーン・プロトコルを実行し、ブロックチェーン・ネットワーク100のノード102を形成する電子デバイスは、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバー、スマートフォン等のモバイル・デバイス、スマート・ウォッチ等のウェアラブル・コンピュータ、又は他の電子デバイス等のコンピュータを含む種々のタイプのものであってもよい。
【0037】
ブロックチェーン・ネットワーク100のノード102は、有線及び無線の通信技術を含み得る適切な通信技術を使用して互いに結合される。このような通信は、ブロックチェーンに関連付けられるプロトコルを遵守する。例えば、ブロックチェーンがビットコイン・ブロックチェーンである場合、ビットコイン・プロトコルが使用されてもよい。
【0038】
ノード102は、ブロックチェーンにおける全てのトランザクションの(おそらくグローバルな)台帳を維持する。台帳は、一元化されていない分散された台帳である。各ノード102は、グローバル台帳の完全なコピー又は部分的なコピーを格納することができる。プルーフ・オブ・ワークによって保護されるブロックチェーンの場合、グローバル台帳に影響するノード102によるトランザクションは他のノード102によって検証され、それによりグローバル台帳の有効性が維持される。ブロックチェーンがプルーフ・オブ・ワークに基づくブロックチェーンである場合には、ブロックとともにサブミットされるプルーフ・オブ・ワークを検査することにより、ブロックもまた検証される。
【0039】
ノード102の少なくとも幾つかは、ブロックチェーン・ネットワーク100のマイナー104として動作する。
図1のブロックチェーン・ネットワーク100は、プルーフ・オブ・ワークのブロックチェーンであり、そこでは、マイナー104がブロックチェーンにおけるトランザクションを促すために費用のかかる計算を実行する。例えば、プルーフ・オブ・ワークのブロックチェーンは、暗号技術的問題を解決することをマイナーに要求するかもしれない。ビットコインでは、マイナー104はノンス(a nonce)を発見し、それによりブロックヘッダはSHA-256と共に、現在の困難さによって定められる値よりも小さな数字にハッシュする。プルーフ・オブ・ワーク・アルゴリズムに必要なハッシュ能力は、トランザクションは、所定数のブロックがそのトップで採掘された後、事実上不可逆であると考えられることを意味する。暗号問題を解決するマイナー104は、ブロックチェーンのための新しいブロックを作成し、その新しいブロックを他のノード102にブロードキャストする。他のノード102は、マイナー104が実際に暗号問題を解決し、従って、ブロックがブロックチェーンに追加されるべきであることを受け入れる前に、十分なプルーフ・オブ・ワークを示したことを検証する。ブロックは、ノード102のコンセンサスによってブロックチェーン(すなわち、分散されたグローバル台帳)に追加される。
【0040】
マイナー104によって作成されたブロックは、ノード102によってブロックチェーンにブロードキャストされていたトランザクション(TXs)を含む。例えば、ブロックは、ノード102の一方に関連付けられたアドレスからノード102の他方に関連付けられたアドレスへのトランザクションを含み得る。このようにして、ブロックは、或るアドレスから別のアドレスへの転送のレコードとして機能する。トランザクションがブロックに含められることを要求した者は、彼らの公開鍵に対応する秘密鍵を使用してリクエストに署名することによって、彼らが転送を開始する権限(例えば、ビットコインの場合は、アウトプットを使う権限)を与えられていることを証明する。転送は、リクエストが有効に署名されている場合に限り、ブロックに追加されることができる。
【0041】
ビットコインの場合、公開鍵とアドレスとの間に1対1の対応が存在する。即ち、各々の公開鍵は単一のアドレスに関連付けられる。従って、本明細書において、制御されるリソース(例えば、ディジタル資産)を公開鍵へ又は公開鍵から転送すること(例えば、公開鍵への支払い)、及びディジタル資産をその公開鍵に関連するアドレスへ又はアドレスから転送することは、共通する動作を示す。
【0042】
幾つかのノード102は、マイナーとしては動作せず、その代わりに検証するノードとして参加することができる。トランザクションの検証は、署名の検査、有効なUTXOに対するリファレンスの確認などを含み得る。
【0043】
図1の例は、6つのノード102を含み、そのうちの3つはマイナー104として参加している。実際には、ノード102又はマイナー104の数は異なり得る。多くのブロックチェーン・ネットワークにおいて、ノード102及びマイナー104の数は、
図1に示される数よりもはるかに大きくなり得る。
【0044】
以下に説明されるように、様々なノード102は、閾値署名スキームの下でディジタル署名を協働して生成し得るグループ110を形成するように協働し得る。図示される例では、3つのノード102がグループ110に参加するように示されている。しかしながら、グループ110の実際のメンバーの数は、はるかに大きくなり得る。
【0045】
以下、グループ110に加わる、離れる、及び参加するための技術が詳細に説明される。
【0046】
ノードとして動作する電子デバイス
図2は、ピア・ツー・ピア・ブロックチェーン・ネットワーク100(
図1)のノード102(
図1)として機能し得る例示的な電子デバイス200のコンポーネントを示すブロック図である。例示的な電子デバイス200は、処理デバイスと呼ばれてもよい。電子デバイスは、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバー、スマートフォン等のモバイル・デバイス、スマート・ウォッチ等のウェアラブル・コンピュータ、又は他のタイプの形態を含む様々な形態をとることができる。
【0047】
電子デバイス200は、プロセッサ210、メモリ220及びインターフェース・デバイス230を含む。これらのコンポーネントは、直接的又は間接的に互いに結合されることが可能であり、互いに通信することが可能である。例えば、プロセッサ210、メモリ220及びインターフェース・デバイス230は、バス240を介して互いに通信することができる。メモリ220は、ここで説明される機能を実行するための機械読取可能な命令及びデータを含むコンピュータ・ソフトウェア・プログラムを格納する。例えば、メモリは、プロセッサ210により実行されると、ここで説明される方法を電子デバイスに実行させるプロセッサ実行可能命令を含み得る。プロセッサ実行可能命令は、プロセッサ210によって実行されると、ブロックチェーン・ネットワーク100(
図1)に関連するプロトコルを電子デバイスに実行させる命令を含み得る。例えば、命令はビットコイン・プロトコルを実現するための命令を含み得る。
【0048】
メモリ220は、ブロックチェーン・ネットワーク100(
図1)のグローバル台帳又はその一部を記憶することができる。即ち、メモリ220は、ブロックチェーンの全てのブロック又は一部のブロック、例えば最新のブロック、又は幾つかのブロックにおける情報の一部を格納することができる。
【0049】
メモリ220は、
図2において単一ブロックで示されているが、実際には、電子デバイス200は、複数のメモリ・コンポーネントを含み得る。メモリ・コンポーネントは、例えば、RAM、HDD、SSD、フラッシュ・ドライブ等を含む様々なタイプのものであり得る。異なるタイプのメモリが異なる目的に適しているかもしれない。更に、メモリ220はプロセッサ210とは別に示されているが、プロセッサ210は内蔵されたメモリを含んでもよい。
【0050】
図2に示されるように、プロセッサ210は、信頼される実行環境(TEE)250等の安全な領域を含んでもよい。TEE250は、隔離された実行、信頼されるアプリケーションの完全性、及び資産の機密性のような追加のセキュリティを、電子デバイス200に提供する隔離された実行環境である。TEE250は、TEE250内にロードされたコンピュータ命令及びデータが機密性及び完全性の観点から保護されることを保証する実行空間を提供する。TEE250は、鍵などの重要なリソースの完全性及び機密性を保護するために使用されてもよい。TEE250は、少なくとも部分的にハードウェア・レベルで実現され、それにより、TEE250内で実行される命令及びデータが、電子デバイス200の残りの部分から、及び電子デバイスの所有者等の外部の者からのアクセス及び操作に対して保護される。TEE250内のデータ及び計算は、TEE250を含むノード102を操作する者から保護される。
【0051】
TEE250は、エンクレーブ(an enclave)をインスタンス化し、次にメモリのページを1ページずつ追加する一方、累積的にハッシュするように動作することができる。また、リモート・マシンが期待されるハッシュを決定して格納するように、同様な動作がリモート・マシン(ディベロッパ・マシン又は他のマシンであってもよい)上で実行されてもよい。従って、エンクレーブが承認されたアルゴリズムを実行していることを保証するために、エンクレーブの内容は、任意のリモート・マシンによって検証されることが可能である。この検証は、ハッシュを比較することによって実行されてもよい。エンクレーブが完全に構築されると、ロック・ダウンされる。TEE250でコードを実行し、コードにシークレット(secrets)を送ることは可能であるが、コードは変更不可能である。最後のハッシュは、認証鍵(an attestation key)によって署名され、データ所有者が何らかのシークレットをエンクレーブへ送る前にそれを確認するために、データ所有者にとって利用可能にされ得る。
【0052】
エンクレーブは、ホスト・システムのシステム・メモリ、BIOS及びオペレーティング・システムを含むホスト・システムのアーキテクチャを介するアクセスから物理的にセキュアである。従って、エンクレーブは、信頼されていない者によって所有され制御されるリモート・コンピュータ上で、ソフトウェアの安全で検証可能な実行を可能にする。エンクレーブ上で動作しているプロセスのメモリは、そのプロセスに対してのみアクセス可能であり、且つエンクレーブ・ソフトウェアが動作している場合に限りアクセス可能である。メモリの内容は、エンクレーブからリモート・コンピュータに又はホスト・システム自身に送信されると暗号化される。エンクレーブ・データの解読は、特定の値にハッシュするコードに対してのみ利用可能なキーを当てにする。エンクレーブ・コードが修正されていた場合、もはやこれらのキーへのアクセス権を持たなくなる。従って、エンクレーブ・コードを修正してデータにアクセスすることはできない。
【0053】
更に、TEE250は遠隔認証を動作可能にすることができ、遠隔認証は、TEE250が真正であり且つグループ110によって実現されるプロトコルに関して承認されたコンピュータ実行可能命令を実行していることを、ノード102(
図1)が他ノード102に対して証明するために使用され得る。遠隔認証は、特定のコード部分を実行すること、及びエンクレーブに対して内的に、エンクレーブに関するインターナル認証鍵によって署名されたコードのハッシュを送信することで、TEE250によって提供され得る。実際、遠隔認証は、特定の値にハッシュするコンピュータ実行可能命令をエンクレーブが実行していることを、TEE250のエンクレーブが、任意のリモート・システムに対して証明することを可能にする。
【0054】
遠隔認証は、セキュア・エンクレーブ内で動作しているコードが、署名付き証明書をエンクレーブから取得することを可能にし、そのコードは、エンクレーブ・ページ・キャッシュの所与のハッシュとともにそのエンクレーブ内で実行されている。エンクレーブ・ページ・キャッシュのハッシュは、クォート(a quote)と呼ばれてもよく、エンクレーブ・ページ・キャッシュは、指定されたコード及びデータがそのようなコードの実行中に存在する保護されたメモリのセクションである。
【0055】
TEE250は、秘密鍵、ランダム・チャレンジ、又は他のランダム・データを生成するために使用されることが可能な、TEEのエンクレーブに対して内的であるセキュア乱数発生器を備えることができる。TEE250はまた、外部メモリからデータを読み込むように構成されてもよく、外部メモリにデータを書き込むように構成されてもよい。このようなデータは、エンクレーブ内でのみ維持される秘密鍵によって暗号化されることが可能である。(「ランダム」はここでは「擬似ランダム」を含むように解釈され得る)。
【0056】
TEE250は、例えばインテル社のソフトウェア・ガード・エクステンションズ(SGX)を使用して実現されてもよい。SGXは遠隔認証をサポートしている。インテル認証サービス(IAS)等の第三者認証サービスは、これらの署名されたステートメントが、SGX仕様に従う真正のCPUsから由来していることを証明し得る。
【0057】
電子デバイス200は、ブロックチェーン・ネットワーク100(
図1)内のノード102(
図1)として動作し、グループ110(
図1)に加わったり、さもなければ参加したりすることができる。以下で説明されるように、グループ・メンバー(ここでは参加者又はノードと呼ばれてもよい)は、グループ公開鍵に関連するエンカンブランスを解放するために、有効な署名を生成するように協働する。
【0058】
閾値署名
グループ110は、許可された又は許可されていないグループであってもよい。グループ110は、ブロックチェーン・ネットワーク100(
図1)内の任意のノード102(
図1)によって(即ち、ブロックチェーン内の情報の少なくとも一部を監視及び格納する任意のノードによって)結合されてもよい。
【0059】
グループ110は、グループ公開鍵と呼ばれ得る公開鍵に関連付けられる。このグループ公開鍵は、グループ公開鍵に転送されるトークン、暗号通貨などのリソースへのアクセスを制御し、制限を負わせることができる。例えば、トランザクションのロッキング・スクリプトは、グループ110の承認なしにそのようなリソースが転送又は「消費」されることができないように、グループ公開鍵を使用してリソースをロックすることができる。
【0060】
グループ110は、閾値署名スキームに従って動作することができる。より詳細には、グループ・メンバーであるノードのうちの閾値数のノードが、有効な署名を生成するように協働する場合、グループ公開鍵によって制限される(エンカンブランスを負っている)リソースは、アンロックされ得る(即ち、エンカンブランスが解除され得る)。署名は楕円曲線ディジタル署名アルゴリズム(ECDSA)の下で有効である。ECDSAは暗号アルゴリズムであり、リソースがそれらの正当な所有者によってのみ使用され得ることを保証するために、ビットコインや他のブロックチェーン・ネットワークで使用されており、ここで説明される閾値署名スキームは、有効なECDSA署名が、グループのうちの閾値数のノードによって生成されることを可能にする。
【0061】
グループ・メンバーが有効な署名を協働して生成できるようにするために、メンバー・ノードは、別々の単位として生成されたプライベート・シークレット(即ち、ノード自体で生成されたプライベート・シークレット)を保持する。以下、より詳細に説明されるように、これらのプライベート・シークレットは、メンバー・ノードが他のメンバー・ノードに彼らのプライベート・シークレットをあらわにすることなく、トランザクションの有効な署名を生成するために使用されることが可能である。このように、リソースへのアクセスの制御のために、改良されたセキュリティ・メカニズムが提供される。
【0062】
グループ公開鍵を変更することを必要とせずにメンバー・ノードがグループに参加し及びグループから離れることを可能にする閾値署名スキームが以下に説明される。ブロックチェーン・ネットワーク100(
図1)内の複数のノード102(
図1)は、ここで説明されるような閾値署名スキームを実装することができる。このようなノード102は、閾値署名スキーム・プロトコルを実装するメモリ220(
図2)に格納されたコンピュータ実行可能命令を含み得る。このような命令は、プロセッサ210(
図2)により実行されると、閾値署名スキーム・プロトコルの1つ以上の方法を(
図2を参照して説明されるタイプの電子デバイス200のような)ノード102に実行させる。そのような方法は、
図3ないし6の方法300、400、500及び600のうちの何れか又はそれらの組み合わせを含んでもよい。本方法は、他のグループ・メンバーに関連する他のノードと協調しながらノードによって実行されてもよい。
【0063】
グループ初期化
図3をここで参照すると、グループを初期化する方法300が示されている。グループは、閾値署名スキームで使用するために初期化される。即ち、グループは、ディジタル資産のエンカンブランスを取り除くためにメンバー・ノードが有効なディジタル署名を協働して生成することを許容するように初期化される。有効なディジタル署名によって除去されるエンカンブランスは、グループ公開鍵に基づくエンカンブランスである。
【0064】
図3は、互いに協力して複数のノードによって実行される方法を示す。より詳細には、グループ・メンバーとなる各ノードは、以下に説明される方法300の動作を実行する。これらのノードは、参加者P
i又はメンバーとして後続の説明で参照され得る。最初に、n人の参加者のグループU(即ち、i=1,2,...,n)が、方法300を実行することに包含される。図示される例では、グループは3つのノード(即ち、n=3)により形成される。しかしながら、グループを形成するために、異なる数のノードが使用されてもよい。方法300を実行するノードは、各々、SGXエンクレーブE
iを実装する認証されたTEEを含む。
【0065】
実行される方法300の前に、グループを形成することになるノード102は、互いにセキュアな通信チャネルを確立し、全てが署名閾値(t+1)について合意する。各ノードとエンクレーブは、(例えば、デフィー・ヘルマン交換法を使用して)セキュア・チャネルを確立した後に、ポイント・ツー・ポイント通信をプライベートに行うことが可能であり、また、他の参加者に情報をセキュアにブロードキャストすることも可能である。参加者達はまた、楕円曲線生成ポイントGと次数pを共同で決定する。以下に説明される動作は、この楕円曲線生成ポイントGと次数pを使用して実行される。例えば、「mod p」という言及は、この次数pに従って実行されるモジュロ演算を述べている。通信セットアップの後、ノードは、以下に説明される方法300に従ってディーラー・フリー多項式生成(dealer-free polynomial generation)を実行する。
【0066】
オペレーション302において、各々の参加者Piは、ランダム度tの多項式fi(x)を生成するために、各自のエンクレーブEiを準備し、ここでxは多項式関数の変数である。ランダム度tの多項式は、ランダムに選択された多項式の係数の各々を伴う(pを法とする整数有限体における)次数tの多項式である。
【0067】
オペレーション304では、各エンクレーブが、承認された初期化命令セットを実行していることを他のエンクレーブの各々に確認するように、認証が実行される。認証の間、各エンクレーブは他のエンクレーブの各々に見積もり(a quote)を送ることができ、従って、各エンクレーブは他のエンクレーブの各々から見積もりを受け取る。これらの受け取った見積もりの各々は、認証が成功するか否かを判断するために評価される。
【0068】
オペレーション304において、各エンクレーブEiは、他のエンクレーブEjの各々に、ポイントfi(j)mod pを安全に送信し、ここでj=1,...nである。従って、オペレーション304において、各エンクレーブEiは他のエンクレーブからポイントを受信している。
【0069】
オペレーション306において、各エンクレーブはシークレット・シェアsiを決定する。より詳細には、オペレーション306において、各エンクレーブEiは、共有される多項式f(x)を決定するために、全ての受信ポイントを合計する:f1(i)+f2(i)+・・・+fn(i) mod p。即ち、共有多項式は、参加者のランダムに生成された多項式全ての合計である。次に、シークレット共有が、si=f(i) mod pとして決定され、これは多項式f(x)mod pにおけるPiポイント(即ち、x=iにおけるポイント)であり、ここで、
【0070】
【数1】
であり、ここで、a
kは多項式の項の係数であり(a
0は定数項であり、共有されるシークレットである)、xは多項式の変数である。
【0071】
従って、各々のシークレット共有は、他の参加者のランダム多項式の全てのポイント(即ち、値)の合計として決定される。各参加者は、共有多項式で異なるポイントを有するだけであり、従って多項式(及び共有されるシークレット(a0))は、t+1個のポイントにより(補間により)で再構成されることが可能である。
【0072】
オペレーション306において、各々のシークレット共有siはそれぞれのエンクレーブEiで保護される。各エンクレーブEiはまた、シークレット共有を生成するために承認された命令を実行したことを、他方のエンクレーブに対して証言することもできる。従って、シークレット共有が適切に生成されていることを補償するために、オペレーション306において遠隔認証が実行されてもよい。
【0073】
一旦シークレット共有が生成されると、オペレーション308において、(楕円曲線公開鍵である)グループ公開鍵が生成され得る。オペレーション308では、共有されるシークレットa0に対応するグループ公開鍵を決定するために、ラグランジュ補間が使用されてもよい。より具体的には、グループの参加者Pi(ここで、i=1,・・・,t+1である)はそれぞれ、ラグランジュ補間係数、楕円曲線生成ポイント、及びそれらのシークレット共有に基づいて、各自の公開鍵共有を計算するために、各自のエンクレーブを準備する。即ち、公開鍵共有は、bisi×Gとして計算されてもよい。
【0074】
ここで、b
iは
【数2】
として決定されるラグランジュ補間係数であり、Gは楕円曲線生成ポイントであり、s
iは参加者P
iに関するシークレット共有である(即ち、共有多項式におけるP
iポイントである)。
【0075】
オペレーション308の間、公開鍵共有は、参加者により、他の全ての参加者にブロードキャストされる。公開鍵共有が適切に生成されていることを確認するために、遠隔認証が使用されてもよい。
【0076】
全ての公開鍵共有を受信すると(即ち、他の参加者各々から公開鍵共有を受信した後に)、各参加者は、受信した公開鍵共有に基づいて、グループ公開鍵Aを計算することができる。より具体的には、グループ公開鍵は全ての公開鍵共有の合計として決定され得る:
【0077】
【0078】
注目すべきことに、初期化段階は信頼性のない方法で進行し、信頼できるディーラーは存在しないので、単一障害点は存在しない。多項式生成を実行すること、及びエンクレーブ内で後続の処理を実行することは、シークレット共有を保護し、これは、登録解除(
図5を参照して後述する)が安全なまま残ることを可能にする。
【0079】
グループ初期化後のグループ参加
図4をここで参照すると登録方法400が示されている。登録方法400は、新しいグループ公開鍵を発行する必要無しに、閾値署名スキームで使用するために初期化された事前に存在しているグループにノードが参加することを許容するために実行され得る。方法400は、グループが既に初期化された後に実行される(そのような初期化は、
図3の方法300に従っていてもよい)。
【0080】
図4は、互いに協力して複数のノードによって実行される方法を示す。より詳細には、既存のグループ・メンバーであるノードは、後述する方法400の少なくとも一部のオペレーションを実行し、将来のメンバーは方法400の少なくとも一部のオペレーションを実行する。(P
n+1と指定されてもよい)将来のメンバーは、グループに登録しようとしているノードである。
【0081】
方法400の実行に先立ち、参加者のうち少なくとも閾値グループ(t+1)は、彼らが将来のメンバーを登録することを希望することを、互いに通知する。これらの参加者は、登録グループUEを形成する。登録グループを構成するノードと将来のメンバーとは、セキュアな通信チャネルを確立する。将来のメンバーはまた、登録グループのノードに対して自身を証明してもよい。
【0082】
図4の例において、登録グループU
Eは3つのノード(即ち、n=3)を含む。しかしながら、登録グループを形成するノード数が少なくとも閾値(t+1)のノード数である限り、登録グループを形成するために異なる数のノードが使用されてもよい。図示される例では、将来のメンバーP
n+1は、P
4として示されている。方法400を実行するノードはそれぞれ、SGXエンクレーブE
iを実装している認証されたTEEを含む。
【0083】
オペレーション402において、将来のメンバーP4は、将来のメンバーが認証プロトコルを実行していることを確認するように、登録グループUEの全てのメンバーに認証見積もり(an attestation quote)を提供する。この認証見積もりは、登録グループ・メンバーによって受け取られ、登録グループのメンバー各々が認証見積もりを評価し、将来のメンバーが承認プロトコルを実行していることを確認する。
【0084】
オペレーション404において、登録グループ・メンバーは、各自自身のシークレット共有siを、複数のパートに分割する。より具体的には、各々の参加者Pi(i=1,・・・,t+1)は、各自のシークレット共有siに、新しいポイント(n+1)で決定されるラグランジュ補間係数を乗じるように、彼らのエンクレーブを準備する。即ち、修正されたシークレット共有si’は次のように決定されてもよい:
【0085】
【0086】
そして、各エンクレーブは、si’の各々をt+1個の部分に分割するようにセキュア乱数を生成し(そのような部分全ての合計がsi’となるようにし)、その部分はシークレット共有パートと呼ばれてもよい:
si’=s1,i+s2,i+・・・+st+1,i
【0087】
図4では、(例えばs
s,1のような)下付きのsは、共有s
iがt+1個のパートに分割されていることを示すために使用される。
【0088】
各エンクレーブEiは、シークレット共有パートsi,iを保持し、残りのシークレット共有パートを登録グループUEの他のt個のエンクレーブと交換し、それにより、各エンクレーブEiは以下のシークレット共有パートを有することになる:
si,1,si,2,...,si,t+1
【0089】
次に、各エンクレーブEiは、UEのうちの他の全てのメンバーから受け取った全てのシークレット共有パートを、そのエンクレーブEiにより維持されていたシークレット共有パートsi,iに追加し、シークレット共有合計vjを取得する:
【0090】
【0091】
オペレーション406において、各エンクレーブEiは、次いで、シークレット共有データを、将来のメンバーのエンクレーブEn+1に送る。より詳細には、オペレーション406において、各登録グループの参加者Pi各々は、次いで、その関連するエンクレーブEiを提供し、このシークレット共有合計vjを将来のメンバーのエンクレーブEn+1にプライベートに送信する。将来のメンバーのエンクレーブEn+1は、登録グループのメンバー全員から、これらのシークレット共有合計を受け取り、次いで(オペレーション408において)、受け取ったシークレット共有合計全ての合計を決定することによって、新たなシークレット共有sn+1を構築する:
【0092】
【0093】
図示の例では、nが3に等しいので、新しいシークレット共有はs4として示される。
【0094】
従って、将来メンバーは、グループの複数の既存メンバーから受け取ったシークレット共有データに基づいて、新たなシークレット共有を取得している。より詳細には、将来のメンバーは、グループの少なくとも閾値数の既存メンバーからのシークレット共有データに基づいて、新たなシークレット共有を取得している。
【0095】
追加の確認ステップとして、方法400のオペレーション406の後に、方法300のオペレーション308が実行され、グループ公開鍵を生成してもよい。その後、参加者は、グループ公開鍵が以前の値(即ち、
図4の方法400が実行される前の値)から変化していないことを確認することができる。
【0096】
グループからの脱退
グループ・メンバーは、時折、グループから脱退するかもしれない。ここで使用されるように、脱退(Disenrolling)は、グループの会員からのメンバーの登録解除又は除去を指す。このような登録解除は、登録解除されるメンバーのリクエストの際、又は他のメンバーのリクエストの際に(例えば、登録解除されることとなるメンバーが、所定の基準に従ってグループ活動に参加していない等の場合に)生じ得る。ここで
図5を参照すると、メンバーを登録解除する例示的な方法500が示されている。この方法は、ノード102により、グループの他ノード102と協力して実行されてもよい。この方法は、グループ公開鍵を修正することなく、メンバーを登録解除するために使用され得る。従って、本発明は、従来技術において以前に可能であったものと比較して、リソースに対する強化された制御を提供する、暗号による安全な改良された方法を提供する。
【0097】
登録解除を成し遂げるために、既存のグループ・メンバーのうちの閾値数n-1が協力して
図5の方法500を実行する。より詳細には、グループ内に残るすべてのグループ・メンバーが、
図5の方法500に参加する。しかしながら、登録解除されることになるグループ・メンバーは、この方法に参加しない。場合によっては、登録解除の数d
nが、既存のグループ・メンバー数と閾値署名スキームの閾値との間の差分以下である限り、1より多いグループ・メンバーが一度に登録解除されてもよい。即ち、d
n≦n-(t+1)である。
【0098】
即ち、グループを離れようとしていないグループ・メンバーの数が、閾値署名スキームの閾値t+1に少なくとも等しいことを要する。
【0099】
図5の例では、4人のメンバーの既存のグループが、参加者のうちの1人(P
4)を除外するように修正され、それにより3人のグループ・メンバーのみが残る。
【0100】
図5の方法500を実行する前に、参加者P
i(i=1,...,n-1)は互いに通信し、グループ参加者P
nの共有(the share)を取り消し、登録解除グループU
Dを形成するためのコンセンサスを通知する。登録解除グループU
Dの全てのエンクレーブが、承認された登録解除命令セットを動作させていることを保証するために、遠隔認証が使用されてもよい。より具体的には、登録解除グループの各メンバーは、登録解除グループの他のメンバーが、承認された登録解除命令セットを動作させていることを確認する。
【0101】
オペレーション502において、各参加者Piは、登録解除グループUDにおいて、多項式生成及びシェアリング(sharing)を実行する。より具体的には、各参加者Piは、登録解除グループUDにおいて、ランダム度tの多項式fi
0(x)を生成するために、各自のエンクレーブを準備する(a0=fi
0(0)=0)。
【0102】
オペレーション502において、各エンクレーブEi(i=1,...,n-1)は、次いで、その新たなランダム多項式fi
0(j)における各ポイントjを、他のエンクレーブEjそれぞれに安全に送信する(j=1,...,n-1)。各エンクレーブは、遠隔認証により他のエンクレーブを認証する。
【0103】
オペレーション504において、各エンクレーブEi(i=1,...,n-1)は、新たなシークレット共有を生成する。より詳細には、各エンクレーブEiは、次いで、新たなシークレット共有si’を決定するために、受信した全てのポイントfj’(i)(j=1,...,n-1|j≠i)を、元のシークレット共有siに追加する。例えば、新たなシークレット共有は次のように決定されてもよい:
【0104】
【0105】
追加の確認ステップとして、方法300のオペレーション308が、グループ公開鍵を生成するために、方法500のオペレーション504の後に実行されてもよい。参加者は、その後、グループ公開鍵がその以前の値(即ち、
図5の方法500が実行される前の値)から変化していないことを確認することができる。
【0106】
オペレーション504において、以前のシークレット共有は、新たなシークレット共有で上書きされ、登録解除される参加者Pnのエンクレーブにおけるシークレット共有を事実上無効化することができる。かくてそのメンバーは今やグループから登録解除される。
【0107】
注目すべきことに、登録解除方法500の間、このスキームのセキュリティは、各自の失効した鍵共有を新たな値で検証可能に上書きするn-t人の参加者を当てにするだけである。従って、セキュリティに影響を及ぼすには、t+1の閾値数のエンクレーブが打ち破られることを要する。たとえ登録解除された参加者が(駄目元で)彼らの鍵共有を回復するために彼ら自身のエンクレーブを突破できたとしても、少なくともn-t個のエンクレーブが正しく動作している限り、その共有は、共謀した攻撃に役立たない。
【0108】
署名生成
グループのメンバーにより保有するシークレット共有は、有効なECDSA署名がトランザクションに対して生成されることを許容するために使用され得る。より具体的には、グループ参加者が有効な署名を生成できるようにするために、少なくとも閾値数のシークレット共有が使用され得る。署名は、グループ公開鍵によって以前に制限されていたディジタル資産を使用するトランザクションに適用され得る。即ち、有効な署名は、以前にリソースに設けられていたエンカンブランスを除去する。ECDSA署名は、2つのコンポーネント、即ち第1コンポーネントrと第2コンポーネントwとを含む。
【0109】
図6を次に参照すると、ECDSA署名を生成する例示的な方法600が示されている。方法600は、ノード102によって、以前に形成されたグループの他ノード102と協力して実行されてもよい。グループのメンバー(即ち、方法600を協働的に実行するノード)は、上述の技術を使用して、事前に定められていてもよい。
【0110】
実行される方法に先立って、グループ内の複数の参加者(即ち、メンバー)は、特定のトランザクションTxを認証するために、分散署名生成に参加することを希望することを、他の参加者に知らせることができる。即ち、ノードは、トランザクションTxの分散署名生成に参加する意志を示すことができる。トランザクション(Tx)は、グループ公開鍵により制限されているアウトプットを使用することになるトランザクションである。即ち、トランザクションの効果は、グループ公開鍵に基づく制限をアウトプットから除去することになるであろう。トランザクションTxは、例えば、グループの参加者の1人によって提案されてもよい。
【0111】
閾値数の参加者が参加の意向を合図すると、他ノードと協力してノードによって署名グループが形成される。図示の例では、署名グループは、3人の参加者(即ち、3つのノード)を含む。しかしながら、署名グループは異なる数のノードを含むことが可能である。
【0112】
オペレーション602において、署名グループを形成するノードは、トランザクションTxに対するハッシュzを決定する。ハッシュは:z=H(Tx)として決定され、ここでHはハッシュ関数を表す。ハッシュは、署名グループのコンセンサスによって決定される。例えば、ハッシュは、署名グループの参加者の1人によって提案されてもよく、他のメンバーは、ハッシュとの一致を確認してもよい。
【0113】
オペレーション604において、署名グループを形成するノードは、セキュア乱数kに基づいて:a)セキュア乱数の逆数k-1;及びb)第1署名成分rを取得する。第1署名成分rは、セキュア乱数kと楕円曲線生成ポイントGとに基づいて決定される。より詳細には、オペレーション604において、参加者のうちの1人、例えばP1は、セキュア乱数kを生成し、このセキュア乱数の逆数k-1を計算し、また、第1署名成分rを計算するために、各自のエンクレーブE1(これは、参加者であるノードの信頼される実行環境と関連付けられている)を準備する。第1署名成分rは次のように決定されてもよい:
r=(k×G)x mod p
【0114】
オペレーション604において、このセキュア乱数の逆数k-1と第1署名成分rを計算したエンクレーブE1は、これらの値(例えば、このセキュア乱数の逆数k-1及び第1署名成分r)を、署名グループ内の他の参加者に関連するエンクレーブE2,...,Et+1へ送る。これらの値を送信するエンクレーブは、それらの完全性を遠隔的に認証し、それらが承認された命令セットを使用して生成されていることを認証する。これらの値を生成しなかったエンクレーブE2,...,Et+1は、これらの値を生成したエンクレーブE1からそれらを受け取り、値の完全性を確認する(例えば、これらの値を生成するために使用される命令セットが、承認された命令セットであることを確認することによって確認する)。
【0115】
オペレーション606において、署名グループの各ノードは、プライベート・シークレット共有と、セキュア乱数の逆数と、第1署名成分に基づいて、部分的な署名v
iを決定する。部分的な署名v
iは各ノードのエンクレーブ内で生成される。例えば、署名グループのエンクレーブE
i(i=1,...,t+1)は、次のような部分的署名を計算する:
v
i=k
-1rb
is
i mod p
ここで、b
iは:
【数8】
のように決定されるラグランジュ係数であり、k
-1はセキュア乱数の逆数であり、s
iは参加者P
iのシークレット共有であり(上記の技法を利用して以前に取得されている)、rは第1署名成分であり、pは次数である。
【0116】
従って、部分的署名の決定は、ラグランジュ補間を実行することを含み得る。
【0117】
オペレーション606において、署名グループに関する各エンクレーブEi(i=1,...,t+1)は、各ノード(より具体的には、各エンクレーブ)が署名グループの他ノードから部分的署名を受け取るように、彼らの部分的署名viを、署名グループに関する他のエンクレーブへ安全にブロードキャストする。
【0118】
オペレーション608において、署名グループの各ノード(より具体的には、各エンクレーブ)は、オペレーション606で決定され受信される部分的署名に基づいて、第2署名成分wを生成することができる。例えば、第2署名成分は次のように決定されてもよい:
【0119】
【数9】
ここで、zはトランザクション・ハッシュである。
【0120】
オペレーション608において、署名グループの各ノードは、第1署名成分及び第2署名成分を含むECDSA署名を、そのエンクラーブからノードのホスト部分(即ち、エンクラーブではないノードの部分)へ送信することができ、ノードは、トランザクション・ハッシュ(z)及びグループ公開鍵(A)に対して署名を検証することができる。
【0121】
その後、署名グループの任意の参加者は、対応するトランザクションに署名を追加してそれをブロックチェーン・ネットワークへブロードキャストすることができる。
【0122】
上述の署名スキームのセキュリティは、つかの間の秘密鍵の値に依存し、その値は、1つのエンクレーブにより生成され且つ署名グループ中の他のエンクレーブへ秘密裏に分散されて隠されたままであるセキュア乱数である。この値が、エンクレーブのうちの唯1つを突破することによって取り出されてしまった場合、共有される秘密鍵は、トランザクションの署名から決定されることが可能であり、そして、完全に異なるトランザクションを署名するために使用されることが可能である。しかしながら、そのインパクトは最小限であり、なぜならエンクレーブの物理的な突破は非常に短い時間ウィンドウ(ブロックチェーンにおけるトランザクションの確認時間)の中で生じる必要があるからである。
【0123】
上述の実施形態は本発明を限定するものではなく例示していること、及び当業者は添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、多くの代替実施形態を設計できることに留意されたい。特許請求の範囲においては、括弧内に付された任意の参照符号は、特許請求の範囲を限定するように解釈されてはならない。「含んでいる」及び「含む」等の言葉は、何らかの特許請求の範囲又は明細書全体に列挙されたもの以外の要素又はステップの存在を除外していない。本明細書において、「有する」は「含む、又はからなる」を意味し、「有している」は「含んでいる、又はから構成されている」を意味する。要素の単独の言及はそのような複数の要素を排除しておらず、逆もまた同様である。本発明は、幾つかの個別的な要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施され得る。幾つかの手段を列挙する装置クレームにおいては、これらの手段の幾つかは、一つの同一のハードウェアのアイテムによって具体化されてもよい。特定の複数の事項が相互に異なる従属請求項に記載されているという単なる事実は、これらの事項の組み合わせが有利に利用できないことを示すものではない。
【0124】
(付記1)
コンピュータで実行されるセキュリティ方法であって、第1署名成分rと第2署名成分wとを含む楕円曲線ディジタル署名アルゴリズム署名を生成するステップを含み、前記生成するステップは:
ノードにより、他ノードとの署名グループを形成するステップ;
前記ノードにより、セキュア乱数に基づいて、a)前記セキュア乱数の逆数とb)前記第1署名成分rとを取得するステップであって、前記第1署名成分は前記セキュア乱数と楕円曲線生成ポイントとに基づいて決定される、ステップ;
前記ノードにより、プライベート・シークレット共有と、前記セキュア乱数の前記逆数と、前記第1署名成分とに基づいて部分的署名を決定するステップ;
前記ノードにより、前記署名グループの他ノードから部分的署名を受信するステップ;及び
前記ノードにより、決定され受信された部分的署名に基づいて前記第2署名成分wを生成するステップ;
を含むコンピュータで実行される方法。
(付記2)
前記取得するステップは、前記逆数と前記第1署名成分とを生成するステップを含み、前記方法は前記逆数を前記他ノードへ送信するステップを更に含む、付記1に記載のコンピュータで実行される方法。
(付記3)
前記取得するステップは、前記セキュア乱数を生成するために、前記ノードの信頼される実行環境に関連するエンクレーブを準備するステップを含む、付記2に記載のコンピュータで実行される方法。
(付記4)
前記取得するステップは、前記逆数と前記第1署名成分とを、前記他ノードのうちの1つから受信するステップを含む、付記1-3のうちの何れか1項に記載のコンピュータで実行される方法。
(付記5)
前記署名グループを形成する前に、分散された署名生成に参加する意向をシグナリングするステップを更に含む、付記1-4のうちの何れか1項に記載のコンピュータで実行される方法。
(付記6)
前記部分的署名は、前記ノードの信頼される実行環境に関連するエンクレーブ内で決定される、付記1-5のうちの何れか1項に記載のコンピュータで実行される方法。
(付記7)
前記部分的署名は、ラグランジュ補間を実行することにより決定される、付記1-6のうちの何れか1項に記載のコンピュータで実行される方法。
(付記8)
前記第2署名成分は信頼される実行環境に関連するエンクレーブ内で生成され、前記方法は、前記第2署名成分を生成した後に、前記楕円曲線ディジタル署名アルゴリズムを、前記エンクレーブから前記ノードのホスト部分へ送信するステップを更に含む、付記1-7のうちの何れか1項に記載のコンピュータで実行される方法。
(付記9)
前記署名をトランザクションに追加してそれをブロックチェーン・ネットワークへブロードキャストするステップを更に含む付記1-8のうちの何れか1項に記載のコンピュータで実行される方法。
(付記10)
前記署名グループを形成する前に、グループの複数の既存のメンバーから受信されるシークレット共有データに基づいて前記シークレット共有を取得するステップを更に含む付記1-9のうちの何れか1項に記載のコンピュータで実行される方法。
(付記11)
前記シークレット共有は、前記ノードの信頼される実行環境に関連するエンクレーブ内で決定される、付記10に記載のコンピュータで実行される方法。
(付記12)
前記部分的署名viは:
vi=k-1rbisi mod p
として決定され、biはラグランジュ補間係数であり、k-1は前記セキュア乱数の前記逆数であり、siは前記シークレット共有であり、rは前記第1署名成分であり、pは次数である、付記1-11のうちの何れか1項に記載のコンピュータで実行される方法。
(付記13)
実行される場合に付記1-12のうち何れか1項に記載の方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を含むコンピュータ読み取り可能な記憶媒体。
(付記14)
インターフェース・デバイス;
前記インターフェースに結合されるプロセッサ;
前記プロセッサに結合されるメモリ;
を含む電子デバイスであって、前記メモリは、実行される場合に付記1-12のうち何れか1項に記載の方法を実行するように前記プロセッサを構成するコンピュータ実行可能命令を格納している、電子デバイス。
(付記15)
前記プロセッサは信頼される実行環境を含み、前記コンピュータ実行可能命令は前記信頼される実行環境の中で実行される、付記14に記載の電子デバイス。
【外国語明細書】