(57)【要約】  本発明の実施形態は、暗号化技術を利用することにより実施される強化されたセキュリティ・ソリューションを提供する。ビットコイン・ブロックチェーン等のブロックチェーン技術とともに使用することに適しているが、これに限定されない。楕円曲線ディジタル署名アルゴリズム署名（ｒ，ｗ）を生成する方法及びデバイスが説明される。一実施形態において、方法は：ｉ）ノードにより、他ノードとの署名グループを形成するステップ；ｉｉ）ノードにより、セキュア乱数に基づいて、ａ）セキュア乱数の逆数とｂ）第１署名成分ｒとを取得するステップであって、第１署名成分はセキュア乱数と楕円曲線生成ポイントとに基づいて決定される、ステップ；ｉｉｉ）ノードにより、プライベート・シークレット共有と、セキュア乱数の逆数と、第１署名成分とに基づいて部分的署名を決定するステップ；ｉｖ）ノードにより、署名グループの他ノードから部分的署名を受信するステップ；及びｖ）ノードにより、決定され受信された部分的署名に基づいて第２署名成分ｗを生成するステップを含む。
2020518850.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実行されるセキュリティ方法であって、第１署名成分ｒと第２署名成分ｗとを含む楕円曲線ディジタル署名アルゴリズム署名を生成するステップを含み、前記生成するステップは：
ノードにより、他ノードとの署名グループを形成するステップ；
前記ノードにより、セキュア乱数に基づいて、ａ）前記セキュア乱数の逆数とｂ）前記第１署名成分ｒとを取得するステップであって、前記第１署名成分は前記セキュア乱数と楕円曲線生成ポイントとに基づいて決定される、ステップ；
前記ノードにより、プライベート・シークレット共有と、前記セキュア乱数の前記逆数と、前記第１署名成分とに基づいて部分的署名を決定するステップ；
前記ノードにより、前記署名グループの他ノードから部分的署名を受信するステップ；及び
前記ノードにより、決定され受信された部分的署名に基づいて前記第２署名成分ｗを生成するステップ；
を含むコンピュータで実行される方法。
【請求項２】
前記取得するステップは、前記逆数と前記第１署名成分とを生成するステップを含み、前記方法は前記逆数を前記他ノードへ送信するステップを更に含む、請求項１に記載のコンピュータで実行される方法。
【請求項３】
前記取得するステップは、前記セキュア乱数を生成するために、前記ノードの信頼される実行環境に関連するエンクレーブを準備するステップを含む、請求項２に記載のコンピュータで実行される方法。
【請求項４】
前記取得するステップは、前記逆数と前記第１署名成分とを、前記他ノードのうちの１つから受信するステップを含む、請求項１−３のうちの何れか１項に記載のコンピュータで実行される方法。
【請求項５】
前記署名グループを形成する前に、分散された署名生成に参加する意向をシグナリングするステップを更に含む、請求項１−４のうちの何れか１項に記載のコンピュータで実行される方法。
【請求項６】
前記部分的署名は、前記ノードの信頼される実行環境に関連するエンクレーブ内で決定される、請求項１−５のうちの何れか１項に記載のコンピュータで実行される方法。
【請求項７】
前記部分的署名は、ラグランジュ補間を実行することにより決定される、請求項１−６のうちの何れか１項に記載のコンピュータで実行される方法。
【請求項８】
前記第２署名成分は信頼される実行環境に関連するエンクレーブ内で生成され、前記方法は、前記第２署名成分を生成した後に、前記楕円曲線ディジタル署名アルゴリズムを、前記エンクレーブから前記ノードのホスト部分へ送信するステップを更に含む、請求項１−７のうちの何れか１項に記載のコンピュータで実行される方法。
【請求項９】
前記署名をトランザクションに追加してそれをブロックチェーン・ネットワークへブロードキャストするステップを更に含む請求項１−８のうちの何れか１項に記載のコンピュータで実行される方法。
【請求項１０】
前記署名グループを形成する前に、グループの複数の既存のメンバーから受信されるシークレット共有データに基づいて前記シークレット共有を取得するステップを更に含む請求項１−９のうちの何れか１項に記載のコンピュータで実行される方法。
【請求項１１】
前記シークレット共有は、前記ノードの信頼される実行環境に関連するエンクレーブ内で決定される、請求項１０に記載のコンピュータで実行される方法。
【請求項１２】
前記部分的署名ｖｉは：
ｖｉ＝ｋ−１ｒｂｉｓｉ  ｍｏｄ  ｐ
として決定され、ｂｉはラグランジュ補間係数であり、ｋ−１は前記セキュア乱数の前記逆数であり、ｓｉは前記シークレット共有であり、ｒは前記第１署名成分であり、ｐは次数である、請求項１−１１のうちの何れか１項に記載のコンピュータで実行される方法。
【請求項１３】
実行される場合に請求項１−１２のうち何れか１項に記載の方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を含むコンピュータ読み取り可能な記憶媒体。
【請求項１４】
インターフェース・デバイス；
前記インターフェースに結合されるプロセッサ；
前記プロセッサに結合されるメモリ；
を含む電子デバイスであって、前記メモリは、実行される場合に請求項１−１２のうち何れか１項に記載の方法を実行するように前記プロセッサを構成するコンピュータ実行可能命令を格納している、電子デバイス。
【請求項１５】
前記プロセッサは信頼される実行環境を含み、前記コンピュータ実行可能命令は前記信頼される実行環境の中で実行される、請求項１４に記載の電子デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にコンピュータ・ネットワークを介して交換又は送信されるリソースのセキュリティを保護及び強化するために暗号署名を利用することを含む、コンピュータに実装されるセキュリティ技術に関する。本発明はまた、分散された台帳（ブロックチェーン）技術に関し、特に、ディジタル台帳に関連付けられた及び／又はディジタル台帳により実行される交換及び／又は転送に対する分散された制御を提供する方法及びシステムに関する。本発明は、グループのメンバーの内の閾値数のメンバーが、そのグループを代表して有効な暗号署名を生成することを許容することに特に適しているが、これに限定されない。
【背景技術】
【０００２】
この文書では、電子的な、コンピュータ・ベースの、分散型のあらゆる形態の台帳を含むように「ブロックチェーン」という用語を使用する。これらは、ブロックチェーン及びトランザクション・チェーンの技術、許可された台帳及び許可されていない台帳、共有される台帳、並びにそれらの変形を含むが、これらに限定されない。ブロックチェーン技術の最も広く知られているアプリケーションはビットコイン台帳であるが、他のブロックチェーン実装が提案され開発されている。便宜上及び説明上の目的でビットコインが本明細書で言及されているかもしれないが、本発明は、ビットコイン・ブロックチェーンと共に使用されることに限定されず、代替的なブロックチェーンの実装及びプロトコルも本発明の範囲内に属することに留意されたい。
【０００３】
ブロックチェーンは、コンセンサス・ベースの電子台帳であり、これは、トランザクション及びその他の情報により構成されるブロックにより構成される、コンピュータ・ベースの分散された分散システムとして実現される。ビットコインの場合、各トランザクションは或るデータ構造であり、ブロックチェーン・システムの参加者間のディジタル資産の制御の移行をエンコードし、少なくとも１つの入力と少なくとも１つの出力とを含む。各ブロックはブロックが共にチェーン化される先の先行ブロックのハッシュを含み、その発端以来ブロックチェーンに書き込まれた全てのトランザクションの永続的で変更不可能なレコードを作成する。トランザクションはその入力及び出力に組み込まれるスクリプトとして知られている小さなプログラムを含み、プログラムはトランザクションの出力が誰によってどのようにアクセスされ得るかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトはスタック・ベースのスクリプト言語を使用して書かれる。
【０００４】
トランザクションがブロックチェーンに書き込まれるためには、「検証済みである必要がある。幾つかのネットワーク・ノードは、マイナーとして動作し、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークから拒否される。例えば、ノードにインストールされているソフトウェア・クライアントは、未使用残高（ＵＴＸＯ）を参照するトランザクションに対して、この検証作業を実行する。検証は、トランザクションのロック及びアンロック・スクリプトを実行することによって実行され得る。ロック及びアンロック・スクリプトの実行がＴＲＵＥに評価され、特定の他の条件が満たされる場合、そのトランザクションは有効であり、そのトランザクションはブロックチェーンに書き込まれ得る。従って、トランザクションがブロックチェーンに書き込まれるためには、ｉ）トランザクションを受け取るノードによって検証されること（トランザクションが有効である場合には、ノードはそれをネットワークの他のノードへ中継する）；及びｉｉ）マイナーによって構築された新たなブロックに追加されること；及びｉｉｉ）採掘されること、即ち過去のトランザクションのパブリック台帳に追加されることを必要とする。トランザクションを実質的に不可逆にするように、十分な数のブロックがブロックチェーンに追加される場合、トランザクションは承認されたと考えられる。
【発明の概要】
【０００５】
ブロックチェーン・プロトコルはしばしば、未使用残高（ＵＴＸＯ）に対するエンカンブランス（ａｎ  ｅｎｃｕｍｂｒａｎｃｅ）を除去する前に、多数のノード又はパーティからの署名を必要とするマルチパーティ署名機能を提供する。例えば、ビットコインのマルチシグ機能はそのような機能を提供する。マルチ・シグネチャ・スクリプトは、Ｎ個の公開鍵がロック・スクリプトで記録される条件を設定することができ、それぞれがＮ個の公開鍵の１つにそれぞれに関連する少なくともＭ個の公開鍵はエンカンブランスを解放する、即ちＵＴＸＯをアンロックするために署名を提供しなければならない。このような署名方式は、有利なセキュリティ上の恩恵を提供し、ＵＴＸＯのロック／アンロックに対するより緻密な高度な制御を可能にすることによって、ＵＴＸＯに対する強化された制御を提供する。しかしながら、既知のマルチシグ技術は限られた機能しか提供せず、なぜなら、署名生成に貢献しなければならない者が、ロック・スクリプトが設定された後に変わることを許容しないからである。従って、ブロックチェーン及び他のネットワークを介して転送されるもの等の電子リソースを制御する改善されたセキュリティ・メカニズムに対するニーズが存在する。
【０００６】
かくて本発明によれば添付の特許請求の範囲で規定される方法が提供される。
【０００７】
以下、更に詳細に説明されるように、ダイナミック・マルチパーティ閾値署名スキーム（ａ  ｄｙｎａｍｉｃ  ｍｕｌｔｉｐａｒｔｙ  ｔｈｒｅｓｈｏｌｄ  ｓｉｇｎａｔｕｒｅ  ｓｃｈｅｍｅ）は、単一の公開鍵の下で、但し各グループ・メンバーがプライベート・シークレットを保持している下で、リソース（例えば、ブロックチェーンのトランザクション出力、ＵＴＸＯ）の制御が、参加者のグループ内で共有されることを許容する。参加者のうちの閾値の部分集合は、アウトプットを使うために集合的に署名するように要求される。有利なことに、署名生成に寄与する何れの参加者も、各自のプライベート・シークレットを明らかにすることを必要とせずに、有効な署名が生成されることを可能にするディジタル署名スキームが説明される。閾値署名スキームに対するセキュリティを提供するために、信頼される実行環境が使用されてもよい。
【０００８】
有利なことに、グループに使用される単一の公開鍵が同じままであることを許容する方式で参加者を登録及び登録解除するための技術が説明される。信頼される実行環境は、グループの単独の公開鍵を変更する必要なしに、グループ・メンバーに対するセキュアな変更を可能にするために使用される。
【０００９】
従って本発明によればコンピュータで実現される方法が提供され得る。本発明はセキュリティ又は制御の方法として説明され得る。本発明はリソースを確保又は制御するように構成され得る。本発明はリソースに対するアクセスを制御するように構成され得る。制御されるリソースは、コンピュータ又はネットワーク上に記憶されるか、又はそれを介して送信される電子リソース、エンティティ又はアイテムであってもよい。場合によっては、それは「ディジタル資産」、「アウトプット」、「暗号通貨の一部」及び／又は「ＵＴＸＯ」と呼ばれてもよい。本発明は、リソースへのアクセス及び／又はリソースの移転を制御するように構成することができる本発明はリソースへのアクセス及び/又はその転送を制御するように構成され得る。本発明はリソースへのアクセス／その制御をロック又はアンロックするように構成され得る。場合によっては、「消費（ｓｐｅｎｄ）」という用語は、リソースのアンロック、即ちその制御又はリソースへのアクセスを許可することを示すように使用されてもよい。
【００１０】
本方法は暗号化によって実行される方法であり得る。追加的又は代替的に、本発明は楕円曲線ディジタル署名アルゴリズム署名を生成する方法として説明され得る。署名は、第１署名成分ｒと第２署名成分ｗとを含み得る。本方法は例えばブロックチェーン・ネットワーク等のネットワークにおける１つ以上のノードによって実現され得る。
【００１１】
本方法は：ｉ）ノードにより、他ノードとの署名グループを形成するステップ；ｉｉ）ノードにより、セキュア乱数に基づいて、ａ）セキュア乱数の逆数とｂ）第１署名成分ｒとを取得するステップであって、第１署名成分はセキュア乱数と楕円曲線生成ポイントとに基づいて決定される、ステップ；ｉｉｉ）ノードにより、プライベート・シークレット共有（ａ  ｐｒｉｖａｔｅ  ｓｅｃｒｅｔ  ｓｈａｒｅ）と、セキュア乱数の逆数と、第１署名成分とに基づいて部分的署名を決定するステップ；ｉｖ）ノードにより、署名グループの他ノードから部分的署名を受信するステップ；及びｖ）ノードにより、決定され受信された部分的署名に基づいて第２署名成分ｗを生成するステップを含み得る。
【００１２】
本方法は、コンピュータ実現ネットワークにおけるリソースへのアクセス及び／又はリソースの転送を制御するために、署名を使用するステップを有し得る。これはブロックチェーン・ネットワークであってもよい。
【００１３】
幾つかの実装において、取得するステップは、逆数と第１署名成分とを生成するステップを含む。本方法はまた逆数を他ノードへ送信するステップを含んでもよい。
【００１４】
幾つかの実装において、取得するステップは、セキュア乱数を生成するために、ノードの信頼される実行環境（ａ  ｔｒｕｓｔｅｄ  ｅｘｅｃｕｔｉｏｎ  ｅｎｖｉｒｏｎｍｅｎｔ：ＴＥＥ）に関連するエンクレーブを準備するステップを含む。
【００１５】
幾つかの実装において、取得するステップは、逆数と第１署名成分とを、他ノードのうちの１つから受信するステップを含む。
【００１６】
幾つかの実装において、本方法は、署名グループを形成する前に、分散された署名生成に参加する意向をシグナリングするステップを含む。
【００１７】
幾つかの実装において、部分的署名は、ノードの信頼される実行環境に関連するエンクレーブ内で決定される。
【００１８】
幾つかの実装において、部分的署名は、ラグランジュ補間を実行することにより決定される。
【００１９】
幾つかの実装において、第２署名成分は信頼される実行環境に関連するエンクレーブ内で生成され、本方法は、第２署名成分を生成した後に、楕円曲線ディジタル署名アルゴリズムを、エンクレーブからノードのホスト部分へ送信するステップを更に含む。
【００２０】
幾つかの実装において、本方法は、署名をブロックチェーン・トランザクションに追加してそれをブロックチェーン・ネットワークへブロードキャストするステップを更に含む。
【００２１】
幾つかの実装において、本方法は、署名グループを形成する前に、グループの複数の既存のメンバーから受信されるシークレット共有データに基づいてシークレット共有を取得するステップを更に含む。
【００２２】
幾つかの実装において、シークレット共有は、ノードの信頼される実行環境に関連するエンクレーブ内で決定される。
【００２３】
幾つかの実装において、部分的署名ｖｉは：
ｖｉ＝ｋ−１ｒｂｉｓｉ  ｍｏｄ  ｐ
として決定される。
【００２４】
ｂｉはラグランジュ補間係数であり、ｋ−１はセキュア乱数の逆数であり、ｓｉはシークレット共有であり、ｒは第１署名成分であり、ｐは次数である。
【００２５】
本発明によれば、電子デバイスが提供され得る。本発明の方法に関して上記で説明された任意の特徴は、本発明に従って構成されるデバイスにも適用され得る。デバイスは、上述の方法の任意の実施形態を実装又は実行するように構成され得る。電子デバイスは、インターフェース・デバイスと、インターフェース・デバイスに結合されたプロセッサと、プロセッサに結合されたメモリとを含んでもよい。メモリは、実行されると本明細書で説明される方法を実行するようにプロセッサを構成するコンピュータ実行可能命令をそこに記憶することができる。
【００２６】
本発明によれば、コンピュータ読取可能な記憶媒体が提供され得る。コンピュータ読取可能な記憶媒体は、実行されると本明細書で説明される方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を含む。
【図面の簡単な説明】
【００２７】
本発明のこれら及び他の態様は、本明細書で説明される実施形態から明らかであり、それを参照して解明されるであろう。本発明の実施形態が単なる例示として様々なパラメータとともに添付図面を参照して説明される。
【００２８】
【図１】図１は例示的なブロックチェーン・ネットワークのブロック図を示す。
【００２９】
【図２】図２は、ブロックチェーン・ネットワーク内のノードとして機能し得る例示的な電子デバイスのブロック図を示す。
【００３０】
【図３】図３は、グループを初期化する方法の信号図である。
【００３１】
【図４】図４は、以前に初期化されているグループに参加する方法の信号図である。
【００３２】
【図５】図５は、グループのメンバーを登録解除する方法の信号図である。
【００３３】
【図６】図６は、グループのための署名を生成する方法の信号図である。
【発明を実施するための形態】
【００３４】
本発明は、改良されたセキュリティ・ソリューションに関する。これらは、コンピュータ・ネットワーク上で制御されるリソースの強化されたセキュリティのために使用されることが可能である。以下の例示的な実施形態では、例えばビットコイン等のブロックチェーン・ネットワークを我々のネットワーク例として使用する。ブロックチェーンは、トークン又は暗号通貨の一部のような電子リソースの制御を、ネットワーク上のノード間で転送するために使用されることが可能である。便宜上、以下、制御されるリソースを「ディジタル資産」として言及するであろう。しかしながら、これは、如何なる点においても限定であると解釈されるべきではなく、如何なる特定のタイプの資産を意味するものとしても解釈されるべきではない。本発明は、ブロックチェーン・トランザクションによるものを上回る利点及びアプリケーションを有し、財務指向の文脈に関して使用することに限定されず、より広範な適用可能性を有する。以下に提供されるブロックチェーンの例は、説明のみのために提供されているにすぎない
【００３５】
ブロックチェーン・ネットワーク
まず、ブロックチェーンに関連する例示的なブロックチェーン・ネットワーク１００をブロック図形式で示す図１を参照する。ブロックチェーン・ネットワークは、公開ブロックチェーン・ネットワークであってもよく、それは、招待されることなく、又は他のメンバーからの同意なしに、誰でも参加することが可能なピア・ツー・ピアのオープン・メンバーシップ・ネットワークである。ブロックチェーン・ネットワーク１００が動作するブロックチェーン・プロトコルのインスタンスを実行する分散された電子デバイスは、ブロックチェーン・ネットワーク１００に参加することができる。そのような分散された電子デバイスはノード１０２として言及され得る。ブロックチェーン・プロトコルは例えばビットコイン・プロトコルであってもよい。
【００３６】
ブロックチェーン・プロトコルを実行し、ブロックチェーン・ネットワーク１００のノード１０２を形成する電子デバイスは、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバー、スマートフォン等のモバイル・デバイス、スマート・ウォッチ等のウェアラブル・コンピュータ、又は他の電子デバイス等のコンピュータを含む種々のタイプのものであってもよい。
【００３７】
ブロックチェーン・ネットワーク１００のノード１０２は、有線及び無線の通信技術を含み得る適切な通信技術を使用して互いに結合される。このような通信は、ブロックチェーンに関連付けられるプロトコルを遵守する。例えば、ブロックチェーンがビットコイン・ブロックチェーンである場合、ビットコイン・プロトコルが使用されてもよい。
【００３８】
ノード１０２は、ブロックチェーンにおける全てのトランザクションの（おそらくグローバルな）台帳を維持する。台帳は、一元化されていない分散された台帳である。各ノード１０２は、グローバル台帳の完全なコピー又は部分的なコピーを格納することができる。プルーフ・オブ・ワークによって保護されるブロックチェーンの場合、グローバル台帳に影響するノード１０２によるトランザクションは他のノード１０２によって検証され、それによりグローバル台帳の有効性が維持される。ブロックチェーンがプルーフ・オブ・ワークに基づくブロックチェーンである場合には、ブロックとともにサブミットされるプルーフ・オブ・ワークを検査することにより、ブロックもまた検証される。
【００３９】
ノード１０２の少なくとも幾つかは、ブロックチェーン・ネットワーク１００のマイナー１０４として動作する。図１のブロックチェーン・ネットワーク１００は、プルーフ・オブ・ワークのブロックチェーンであり、そこでは、マイナー１０４がブロックチェーンにおけるトランザクションを促すために費用のかかる計算を実行する。例えば、プルーフ・オブ・ワークのブロックチェーンは、暗号技術的問題を解決することをマイナーに要求するかもしれない。ビットコインでは、マイナー１０４はノンス（ａ  ｎｏｎｃｅ）を発見し、それによりブロックヘッダはＳＨＡ−２５６と共に、現在の困難さによって定められる値よりも小さな数字にハッシュする。プルーフ・オブ・ワーク・アルゴリズムに必要なハッシュ能力は、トランザクションは、所定数のブロックがそのトップで採掘された後、事実上不可逆であると考えられることを意味する。暗号問題を解決するマイナー１０４は、ブロックチェーンのための新しいブロックを作成し、その新しいブロックを他のノード１０２にブロードキャストする。他のノード１０２は、マイナー１０４が実際に暗号問題を解決し、従って、ブロックがブロックチェーンに追加されるべきであることを受け入れる前に、十分なプルーフ・オブ・ワークを示したことを検証する。ブロックは、ノード１０２のコンセンサスによってブロックチェーン（すなわち、分散されたグローバル台帳）に追加される。
【００４０】
マイナー１０４によって作成されたブロックは、ノード１０２によってブロックチェーンにブロードキャストされていたトランザクション（ＴＸｓ）を含む。例えば、ブロックは、ノード１０２の一方に関連付けられたアドレスからノード１０２の他方に関連付けられたアドレスへのトランザクションを含み得る。このようにして、ブロックは、或るアドレスから別のアドレスへの転送のレコードとして機能する。トランザクションがブロックに含められることを要求した者は、彼らの公開鍵に対応する秘密鍵を使用してリクエストに署名することによって、彼らが転送を開始する権限（例えば、ビットコインの場合は、アウトプットを使う権限）を与えられていることを証明する。転送は、リクエストが有効に署名されている場合に限り、ブロックに追加されることができる。
【００４１】
ビットコインの場合、公開鍵とアドレスとの間に１対１の対応が存在する。即ち、各々の公開鍵は単一のアドレスに関連付けられる。従って、本明細書において、制御されるリソース（例えば、ディジタル資産）を公開鍵へ又は公開鍵から転送すること（例えば、公開鍵への支払い）、及びディジタル資産をその公開鍵に関連するアドレスへ又はアドレスから転送することは、共通する動作を示す。
【００４２】
幾つかのノード１０２は、マイナーとしては動作せず、その代わりに検証するノードとして参加することができる。トランザクションの検証は、署名の検査、有効なＵＴＸＯに対するリファレンスの確認などを含み得る。
【００４３】
図１の例は、６つのノード１０２を含み、そのうちの３つはマイナー１０４として参加している。実際には、ノード１０２又はマイナー１０４の数は異なり得る。多くのブロックチェーン・ネットワークにおいて、ノード１０２及びマイナー１０４の数は、図１に示される数よりもはるかに大きくなり得る。
【００４４】
以下に説明されるように、様々なノード１０２は、閾値署名スキームの下でディジタル署名を協働して生成し得るグループ１１０を形成するように協働し得る。図示される例では、３つのノード１０２がグループ１１０に参加するように示されている。しかしながら、グループ１１０の実際のメンバーの数は、はるかに大きくなり得る。
【００４５】
以下、グループ１１０に加わる、離れる、及び参加するための技術が詳細に説明される。
【００４６】
ノードとして動作する電子デバイス
図２は、ピア・ツー・ピア・ブロックチェーン・ネットワーク１００（図１）のノード１０２（図１）として機能し得る例示的な電子デバイス２００のコンポーネントを示すブロック図である。例示的な電子デバイス２００は、処理デバイスと呼ばれてもよい。電子デバイスは、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバー、スマートフォン等のモバイル・デバイス、スマート・ウォッチ等のウェアラブル・コンピュータ、又は他のタイプの形態を含む様々な形態をとることができる。
【００４７】
電子デバイス２００は、プロセッサ２１０、メモリ２２０及びインターフェース・デバイス２３０を含む。これらのコンポーネントは、直接的又は間接的に互いに結合されることが可能であり、互いに通信することが可能である。例えば、プロセッサ２１０、メモリ２２０及びインターフェース・デバイス２３０は、バス２４０を介して互いに通信することができる。メモリ２２０は、ここで説明される機能を実行するための機械読取可能な命令及びデータを含むコンピュータ・ソフトウェア・プログラムを格納する。例えば、メモリは、プロセッサ２１０により実行されると、ここで説明される方法を電子デバイスに実行させるプロセッサ実行可能命令を含み得る。プロセッサ実行可能命令は、プロセッサ２１０によって実行されると、ブロックチェーン・ネットワーク１００（図１）に関連するプロトコルを電子デバイスに実行させる命令を含み得る。例えば、命令はビットコイン・プロトコルを実現するための命令を含み得る。
【００４８】
メモリ２２０は、ブロックチェーン・ネットワーク１００（図１）のグローバル台帳又はその一部を記憶することができる。即ち、メモリ２２０は、ブロックチェーンの全てのブロック又は一部のブロック、例えば最新のブロック、又は幾つかのブロックにおける情報の一部を格納することができる。
【００４９】
メモリ２２０は、図２において単一ブロックで示されているが、実際には、電子デバイス２００は、複数のメモリ・コンポーネントを含み得る。メモリ・コンポーネントは、例えば、ＲＡＭ、ＨＤＤ、ＳＳＤ、フラッシュ・ドライブ等を含む様々なタイプのものであり得る。異なるタイプのメモリが異なる目的に適しているかもしれない。更に、メモリ２２０はプロセッサ２１０とは別に示されているが、プロセッサ２１０は内蔵されたメモリを含んでもよい。
【００５０】
図２に示されるように、プロセッサ２１０は、信頼される実行環境（ＴＥＥ）２５０等の安全な領域を含んでもよい。ＴＥＥ２５０は、隔離された実行、信頼されるアプリケーションの完全性、及び資産の機密性のような追加のセキュリティを、電子デバイス２００に提供する隔離された実行環境である。ＴＥＥ２５０は、ＴＥＥ２５０内にロードされたコンピュータ命令及びデータが機密性及び完全性の観点から保護されることを保証する実行空間を提供する。ＴＥＥ２５０は、鍵などの重要なリソースの完全性及び機密性を保護するために使用されてもよい。ＴＥＥ２５０は、少なくとも部分的にハードウェア・レベルで実現され、それにより、ＴＥＥ２５０内で実行される命令及びデータが、電子デバイス２００の残りの部分から、及び電子デバイスの所有者等の外部の者からのアクセス及び操作に対して保護される。ＴＥＥ２５０内のデータ及び計算は、ＴＥＥ２５０を含むノード１０２を操作する者から保護される。
【００５１】
ＴＥＥ２５０は、エンクレーブ（ａｎ  ｅｎｃｌａｖｅ）をインスタンス化し、次にメモリのページを１ページずつ追加する一方、累積的にハッシュするように動作することができる。また、リモート・マシンが期待されるハッシュを決定して格納するように、同様な動作がリモート・マシン（ディベロッパ・マシン又は他のマシンであってもよい）上で実行されてもよい。従って、エンクレーブが承認されたアルゴリズムを実行していることを保証するために、エンクレーブの内容は、任意のリモート・マシンによって検証されることが可能である。この検証は、ハッシュを比較することによって実行されてもよい。エンクレーブが完全に構築されると、ロック・ダウンされる。ＴＥＥ２５０でコードを実行し、コードにシークレット（ｓｅｃｒｅｔｓ）を送ることは可能であるが、コードは変更不可能である。最後のハッシュは、認証鍵（ａｎ  ａｔｔｅｓｔａｔｉｏｎ  ｋｅｙ）によって署名され、データ所有者が何らかのシークレットをエンクレーブへ送る前にそれを確認するために、データ所有者にとって利用可能にされ得る。
【００５２】
エンクレーブは、ホスト・システムのシステム・メモリ、ＢＩＯＳ及びオペレーティング・システムを含むホスト・システムのアーキテクチャを介するアクセスから物理的にセキュアである。従って、エンクレーブは、信頼されていない者によって所有され制御されるリモート・コンピュータ上で、ソフトウェアの安全で検証可能な実行を可能にする。エンクレーブ上で動作しているプロセスのメモリは、そのプロセスに対してのみアクセス可能であり、且つエンクレーブ・ソフトウェアが動作している場合に限りアクセス可能である。メモリの内容は、エンクレーブからリモート・コンピュータに又はホスト・システム自身に送信されると暗号化される。エンクレーブ・データの解読は、特定の値にハッシュするコードに対してのみ利用可能なキーを当てにする。エンクレーブ・コードが修正されていた場合、もはやこれらのキーへのアクセス権を持たなくなる。従って、エンクレーブ・コードを修正してデータにアクセスすることはできない。
【００５３】
更に、ＴＥＥ２５０は遠隔認証を動作可能にすることができ、遠隔認証は、ＴＥＥ２５０が真正であり且つグループ１１０によって実現されるプロトコルに関して承認されたコンピュータ実行可能命令を実行していることを、ノード１０２（図１）が他ノード１０２に対して証明するために使用され得る。遠隔認証は、特定のコード部分を実行すること、及びエンクレーブに対して内的に、エンクレーブに関するインターナル認証鍵によって署名されたコードのハッシュを送信することで、ＴＥＥ２５０によって提供され得る。実際、遠隔認証は、特定の値にハッシュするコンピュータ実行可能命令をエンクレーブが実行していることを、ＴＥＥ２５０のエンクレーブが、任意のリモート・システムに対して証明することを可能にする。
【００５４】
遠隔認証は、セキュア・エンクレーブ内で動作しているコードが、署名付き証明書をエンクレーブから取得することを可能にし、そのコードは、エンクレーブ・ページ・キャッシュの所与のハッシュとともにそのエンクレーブ内で実行されている。エンクレーブ・ページ・キャッシュのハッシュは、クォート（ａ  ｑｕｏｔｅ）と呼ばれてもよく、エンクレーブ・ページ・キャッシュは、指定されたコード及びデータがそのようなコードの実行中に存在する保護されたメモリのセクションである。
【００５５】
ＴＥＥ２５０は、秘密鍵、ランダム・チャレンジ、又は他のランダム・データを生成するために使用されることが可能な、ＴＥＥのエンクレーブに対して内的であるセキュア乱数発生器を備えることができる。ＴＥＥ２５０はまた、外部メモリからデータを読み込むように構成されてもよく、外部メモリにデータを書き込むように構成されてもよい。このようなデータは、エンクレーブ内でのみ維持される秘密鍵によって暗号化されることが可能である。（「ランダム」はここでは「擬似ランダム」を含むように解釈され得る）。
【００５６】
ＴＥＥ２５０は、例えばインテル社のソフトウェア・ガード・エクステンションズ（ＳＧＸ）を使用して実現されてもよい。ＳＧＸは遠隔認証をサポートしている。インテル認証サービス（ＩＡＳ）等の第三者認証サービスは、これらの署名されたステートメントが、ＳＧＸ仕様に従う真正のＣＰＵｓから由来していることを証明し得る。
【００５７】
電子デバイス２００は、ブロックチェーン・ネットワーク１００（図１）内のノード１０２（図１）として動作し、グループ１１０（図１）に加わったり、さもなければ参加したりすることができる。以下で説明されるように、グループ・メンバー（ここでは参加者又はノードと呼ばれてもよい）は、グループ公開鍵に関連するエンカンブランスを解放するために、有効な署名を生成するように協働する。
【００５８】
閾値署名
グループ１１０は、許可された又は許可されていないグループであってもよい。グループ１１０は、ブロックチェーン・ネットワーク１００（図１）内の任意のノード１０２（図１）によって（即ち、ブロックチェーン内の情報の少なくとも一部を監視及び格納する任意のノードによって）結合されてもよい。
【００５９】
グループ１１０は、グループ公開鍵と呼ばれ得る公開鍵に関連付けられる。このグループ公開鍵は、グループ公開鍵に転送されるトークン、暗号通貨などのリソースへのアクセスを制御し、制限を負わせることができる。例えば、トランザクションのロッキング・スクリプトは、グループ１１０の承認なしにそのようなリソースが転送又は「消費」されることができないように、グループ公開鍵を使用してリソースをロックすることができる。
【００６０】
グループ１１０は、閾値署名スキームに従って動作することができる。より詳細には、グループ・メンバーであるノードのうちの閾値数のノードが、有効な署名を生成するように協働する場合、グループ公開鍵によって制限される（エンカンブランスを負っている）リソースは、アンロックされ得る（即ち、エンカンブランスが解除され得る）。署名は楕円曲線ディジタル署名アルゴリズム（ＥＣＤＳＡ）の下で有効である。ＥＣＤＳＡは暗号アルゴリズムであり、リソースがそれらの正当な所有者によってのみ使用され得ることを保証するために、ビットコインや他のブロックチェーン・ネットワークで使用されており、ここで説明される閾値署名スキームは、有効なＥＣＤＳＡ署名が、グループのうちの閾値数のノードによって生成されることを可能にする。
【００６１】
グループ・メンバーが有効な署名を協働して生成できるようにするために、メンバー・ノードは、別々の単位として生成されたプライベート・シークレット（即ち、ノード自体で生成されたプライベート・シークレット）を保持する。以下、より詳細に説明されるように、これらのプライベート・シークレットは、メンバー・ノードが他のメンバー・ノードに彼らのプライベート・シークレットをあらわにすることなく、トランザクションの有効な署名を生成するために使用されることが可能である。このように、リソースへのアクセスの制御のために、改良されたセキュリティ・メカニズムが提供される。
【００６２】
グループ公開鍵を変更することを必要とせずにメンバー・ノードがグループに参加し及びグループから離れることを可能にする閾値署名スキームが以下に説明される。ブロックチェーン・ネットワーク１００（図１）内の複数のノード１０２（図１）は、ここで説明されるような閾値署名スキームを実装することができる。このようなノード１０２は、閾値署名スキーム・プロトコルを実装するメモリ２２０（図２）に格納されたコンピュータ実行可能命令を含み得る。このような命令は、プロセッサ２１０（図２）により実行されると、閾値署名スキーム・プロトコルの１つ以上の方法を（図２を参照して説明されるタイプの電子デバイス２００のような）ノード１０２に実行させる。そのような方法は、図３ないし６の方法３００、４００、５００及び６００のうちの何れか又はそれらの組み合わせを含んでもよい。本方法は、他のグループ・メンバーに関連する他のノードと協調しながらノードによって実行されてもよい。
【００６３】
グループ初期化
図３をここで参照すると、グループを初期化する方法３００が示されている。グループは、閾値署名スキームで使用するために初期化される。即ち、グループは、ディジタル資産のエンカンブランスを取り除くためにメンバー・ノードが有効なディジタル署名を協働して生成することを許容するように初期化される。有効なディジタル署名によって除去されるエンカンブランスは、グループ公開鍵に基づくエンカンブランスである。
【００６４】
図３は、互いに協力して複数のノードによって実行される方法を示す。より詳細には、グループ・メンバーとなる各ノードは、以下に説明される方法３００の動作を実行する。これらのノードは、参加者Ｐｉ又はメンバーとして後続の説明で参照され得る。最初に、ｎ人の参加者のグループＵ（即ち、ｉ＝１，２，．．．，ｎ）が、方法３００を実行することに包含される。図示される例では、グループは３つのノード（即ち、ｎ＝３）により形成される。しかしながら、グループを形成するために、異なる数のノードが使用されてもよい。方法３００を実行するノードは、各々、ＳＧＸエンクレーブＥｉを実装する認証されたＴＥＥを含む。
【００６５】
実行される方法３００の前に、グループを形成することになるノード１０２は、互いにセキュアな通信チャネルを確立し、全てが署名閾値（ｔ＋１）について合意する。各ノードとエンクレーブは、（例えば、デフィー・ヘルマン交換法を使用して）セキュア・チャネルを確立した後に、ポイント・ツー・ポイント通信をプライベートに行うことが可能であり、また、他の参加者に情報をセキュアにブロードキャストすることも可能である。参加者達はまた、楕円曲線生成ポイントＧと次数ｐを共同で決定する。以下に説明される動作は、この楕円曲線生成ポイントＧと次数ｐを使用して実行される。例えば、「ｍｏｄ  ｐ」という言及は、この次数ｐに従って実行されるモジュロ演算を述べている。通信セットアップの後、ノードは、以下に説明される方法３００に従ってディーラー・フリー多項式生成（ｄｅａｌｅｒ−ｆｒｅｅ  ｐｏｌｙｎｏｍｉａｌ  ｇｅｎｅｒａｔｉｏｎ）を実行する。
【００６６】
オペレーション３０２において、各々の参加者Ｐｉは、ランダム度ｔの多項式ｆｉ（ｘ）を生成するために、各自のエンクレーブＥｉを準備し、ここでｘは多項式関数の変数である。ランダム度ｔの多項式は、ランダムに選択された多項式の係数の各々を伴う（ｐを法とする整数有限体における）次数ｔの多項式である。
【００６７】
オペレーション３０４では、各エンクレーブが、承認された初期化命令セットを実行していることを他のエンクレーブの各々に確認するように、認証が実行される。認証の間、各エンクレーブは他のエンクレーブの各々に見積もり（ａ  ｑｕｏｔｅ）を送ることができ、従って、各エンクレーブは他のエンクレーブの各々から見積もりを受け取る。これらの受け取った見積もりの各々は、認証が成功するか否かを判断するために評価される。
【００６８】
オペレーション３０４において、各エンクレーブＥｉは、他のエンクレーブＥｊの各々に、ポイントｆｉ（ｊ）ｍｏｄ  ｐを安全に送信し、ここでｊ＝１，．．．ｎである。従って、オペレーション３０４において、各エンクレーブＥｉは他のエンクレーブからポイントを受信している。
【００６９】
オペレーション３０６において、各エンクレーブはシークレット・シェアｓｉを決定する。より詳細には、オペレーション３０６において、各エンクレーブＥｉは、共有される多項式ｆ（ｘ）を決定するために、全ての受信ポイントを合計する：ｆ１（ｉ）＋ｆ２（ｉ）＋・・・＋ｆｎ（ｉ）  ｍｏｄ  ｐ。即ち、共有多項式は、参加者のランダムに生成された多項式全ての合計である。次に、シークレット共有が、ｓｉ＝ｆ（ｉ）  ｍｏｄ  ｐとして決定され、これは多項式ｆ（ｘ）ｍｏｄ  ｐにおけるＰｉポイント（即ち、ｘ＝ｉにおけるポイント）であり、ここで、
【００７０】
【数１】
2020518850.tif 000003
であり、ここで、ａｋは多項式の項の係数であり（ａ０は定数項であり、共有されるシークレットである）、ｘは多項式の変数である。
【００７１】
従って、各々のシークレット共有は、他の参加者のランダム多項式の全てのポイント（即ち、値）の合計として決定される。各参加者は、共有多項式で異なるポイントを有するだけであり、従って多項式（及び共有されるシークレット（ａ０））は、ｔ＋１個のポイントにより（補間により）で再構成されることが可能である。
【００７２】
オペレーション３０６において、各々のシークレット共有ｓｉはそれぞれのエンクレーブＥｉで保護される。各エンクレーブＥｉはまた、シークレット共有を生成するために承認された命令を実行したことを、他方のエンクレーブに対して証言することもできる。従って、シークレット共有が適切に生成されていることを補償するために、オペレーション３０６において遠隔認証が実行されてもよい。
【００７３】
一旦シークレット共有が生成されると、オペレーション３０８において、（楕円曲線公開鍵である）グループ公開鍵が生成され得る。オペレーション３０８では、共有されるシークレットａ０に対応するグループ公開鍵を決定するために、ラグランジュ補間が使用されてもよい。より具体的には、グループの参加者Ｐｉ（ここで、ｉ＝１，・・・，ｔ＋１である）はそれぞれ、ラグランジュ補間係数、楕円曲線生成ポイント、及びそれらのシークレット共有に基づいて、各自の公開鍵共有を計算するために、各自のエンクレーブを準備する。即ち、公開鍵共有は、ｂｉｓｉ×Ｇとして計算されてもよい。
【００７４】
ここで、ｂｉは
【数２】
2020518850.tif 000004
として決定されるラグランジュ補間係数であり、Ｇは楕円曲線生成ポイントであり、ｓｉは参加者Ｐｉに関するシークレット共有である（即ち、共有多項式におけるＰｉポイントである）。
【００７５】
オペレーション３０８の間、公開鍵共有は、参加者により、他の全ての参加者にブロードキャストされる。公開鍵共有が適切に生成されていることを確認するために、遠隔認証が使用されてもよい。
【００７６】
全ての公開鍵共有を受信すると（即ち、他の参加者各々から公開鍵共有を受信した後に）、各参加者は、受信した公開鍵共有に基づいて、グループ公開鍵Ａを計算することができる。より具体的には、グループ公開鍵は全ての公開鍵共有の合計として決定され得る：
【００７７】
【数３】
2020518850.tif 000005
【００７８】
注目すべきことに、初期化段階は信頼性のない方法で進行し、信頼できるディーラーは存在しないので、単一障害点は存在しない。多項式生成を実行すること、及びエンクレーブ内で後続の処理を実行することは、シークレット共有を保護し、これは、登録解除（図５を参照して後述する）が安全なまま残ることを可能にする。
【００７９】
グループ初期化後のグループ参加
図４をここで参照すると登録方法４００が示されている。登録方法４００は、新しいグループ公開鍵を発行する必要無しに、閾値署名スキームで使用するために初期化された事前に存在しているグループにノードが参加することを許容するために実行され得る。方法４００は、グループが既に初期化された後に実行される（そのような初期化は、図３の方法３００に従っていてもよい）。
【００８０】
図４は、互いに協力して複数のノードによって実行される方法を示す。より詳細には、既存のグループ・メンバーであるノードは、後述する方法４００の少なくとも一部のオペレーションを実行し、将来のメンバーは方法４００の少なくとも一部のオペレーションを実行する。（Ｐｎ＋１と指定されてもよい）将来のメンバーは、グループに登録しようとしているノードである。
【００８１】
方法４００の実行に先立ち、参加者のうち少なくとも閾値グループ（ｔ＋１）は、彼らが将来のメンバーを登録することを希望することを、互いに通知する。これらの参加者は、登録グループＵＥを形成する。登録グループを構成するノードと将来のメンバーとは、セキュアな通信チャネルを確立する。将来のメンバーはまた、登録グループのノードに対して自身を証明してもよい。
【００８２】
図４の例において、登録グループＵＥは３つのノード（即ち、ｎ＝３）を含む。しかしながら、登録グループを形成するノード数が少なくとも閾値（ｔ＋１）のノード数である限り、登録グループを形成するために異なる数のノードが使用されてもよい。図示される例では、将来のメンバーＰｎ＋１は、Ｐ４として示されている。方法４００を実行するノードはそれぞれ、ＳＧＸエンクレーブＥｉを実装している認証されたＴＥＥを含む。
【００８３】
オペレーション４０２において、将来のメンバーＰ４は、将来のメンバーが認証プロトコルを実行していることを確認するように、登録グループＵＥの全てのメンバーに認証見積もり（ａｎ  ａｔｔｅｓｔａｔｉｏｎ  ｑｕｏｔｅ）を提供する。この認証見積もりは、登録グループ・メンバーによって受け取られ、登録グループのメンバー各々が認証見積もりを評価し、将来のメンバーが承認プロトコルを実行していることを確認する。
【００８４】
オペレーション４０４において、登録グループ・メンバーは、各自自身のシークレット共有ｓｉを、複数のパートに分割する。より具体的には、各々の参加者Ｐｉ（ｉ＝１，・・・，ｔ＋１）は、各自のシークレット共有ｓｉに、新しいポイント（ｎ＋１）で決定されるラグランジュ補間係数を乗じるように、彼らのエンクレーブを準備する。即ち、修正されたシークレット共有ｓｉ’は次のように決定されてもよい：
【００８５】
【数４】
2020518850.tif 000006
【００８６】
そして、各エンクレーブは、ｓｉ’の各々をｔ＋１個の部分に分割するようにセキュア乱数を生成し（そのような部分全ての合計がｓｉ’となるようにし）、その部分はシークレット共有パートと呼ばれてもよい：
ｓｉ’＝ｓ１，ｉ＋ｓ２，ｉ＋・・・＋ｓｔ＋１，ｉ
【００８７】
図４では、（例えばｓｓ，１のような）下付きのｓは、共有ｓｉがｔ＋１個のパートに分割されていることを示すために使用される。
【００８８】
各エンクレーブＥｉは、シークレット共有パートｓｉ，ｉを保持し、残りのシークレット共有パートを登録グループＵＥの他のｔ個のエンクレーブと交換し、それにより、各エンクレーブＥｉは以下のシークレット共有パートを有することになる：
ｓｉ，１，ｓｉ，２，．．．，ｓｉ，ｔ＋１
【００８９】
次に、各エンクレーブＥｉは、ＵＥのうちの他の全てのメンバーから受け取った全てのシークレット共有パートを、そのエンクレーブＥｉにより維持されていたシークレット共有パートｓｉ，ｉに追加し、シークレット共有合計ｖｊを取得する：
【００９０】
【数５】
2020518850.tif 000007
【００９１】
オペレーション４０６において、各エンクレーブＥｉは、次いで、シークレット共有データを、将来のメンバーのエンクレーブＥｎ＋１に送る。より詳細には、オペレーション４０６において、各登録グループの参加者Ｐｉ各々は、次いで、その関連するエンクレーブＥｉを提供し、このシークレット共有合計ｖｊを将来のメンバーのエンクレーブＥｎ＋１にプライベートに送信する。将来のメンバーのエンクレーブＥｎ＋１は、登録グループのメンバー全員から、これらのシークレット共有合計を受け取り、次いで（オペレーション４０８において）、受け取ったシークレット共有合計全ての合計を決定することによって、新たなシークレット共有ｓｎ＋１を構築する：
【００９２】
【数６】
2020518850.tif 000008
【００９３】
図示の例では、ｎが３に等しいので、新しいシークレット共有はｓ４として示される。
【００９４】
従って、将来メンバーは、グループの複数の既存メンバーから受け取ったシークレット共有データに基づいて、新たなシークレット共有を取得している。より詳細には、将来のメンバーは、グループの少なくとも閾値数の既存メンバーからのシークレット共有データに基づいて、新たなシークレット共有を取得している。
【００９５】
追加の確認ステップとして、方法４００のオペレーション４０６の後に、方法３００のオペレーション３０８が実行され、グループ公開鍵を生成してもよい。その後、参加者は、グループ公開鍵が以前の値（即ち、図４の方法４００が実行される前の値）から変化していないことを確認することができる。
【００９６】
グループからの脱退
グループ・メンバーは、時折、グループから脱退するかもしれない。ここで使用されるように、脱退（Ｄｉｓｅｎｒｏｌｌｉｎｇ）は、グループの会員からのメンバーの登録解除又は除去を指す。このような登録解除は、登録解除されるメンバーのリクエストの際、又は他のメンバーのリクエストの際に（例えば、登録解除されることとなるメンバーが、所定の基準に従ってグループ活動に参加していない等の場合に）生じ得る。ここで図５を参照すると、メンバーを登録解除する例示的な方法５００が示されている。この方法は、ノード１０２により、グループの他ノード１０２と協力して実行されてもよい。この方法は、グループ公開鍵を修正することなく、メンバーを登録解除するために使用され得る。従って、本発明は、従来技術において以前に可能であったものと比較して、リソースに対する強化された制御を提供する、暗号による安全な改良された方法を提供する。
【００９７】
登録解除を成し遂げるために、既存のグループ・メンバーのうちの閾値数ｎ−１が協力して図５の方法５００を実行する。より詳細には、グループ内に残るすべてのグループ・メンバーが、図５の方法５００に参加する。しかしながら、登録解除されることになるグループ・メンバーは、この方法に参加しない。場合によっては、登録解除の数ｄｎが、既存のグループ・メンバー数と閾値署名スキームの閾値との間の差分以下である限り、１より多いグループ・メンバーが一度に登録解除されてもよい。即ち、ｄｎ≦ｎ−（ｔ＋１）である。
【００９８】
即ち、グループを離れようとしていないグループ・メンバーの数が、閾値署名スキームの閾値ｔ＋１に少なくとも等しいことを要する。
【００９９】
図５の例では、４人のメンバーの既存のグループが、参加者のうちの１人（Ｐ４）を除外するように修正され、それにより３人のグループ・メンバーのみが残る。
【０１００】
図５の方法５００を実行する前に、参加者Ｐｉ（ｉ＝１，．．．，ｎ−１）は互いに通信し、グループ参加者Ｐｎの共有（ｔｈｅ  ｓｈａｒｅ）を取り消し、登録解除グループＵＤを形成するためのコンセンサスを通知する。登録解除グループＵＤの全てのエンクレーブが、承認された登録解除命令セットを動作させていることを保証するために、遠隔認証が使用されてもよい。より具体的には、登録解除グループの各メンバーは、登録解除グループの他のメンバーが、承認された登録解除命令セットを動作させていることを確認する。
【０１０１】
オペレーション５０２において、各参加者Ｐｉは、登録解除グループＵＤにおいて、多項式生成及びシェアリング（ｓｈａｒｉｎｇ）を実行する。より具体的には、各参加者Ｐｉは、登録解除グループＵＤにおいて、ランダム度ｔの多項式ｆｉ０（ｘ）を生成するために、各自のエンクレーブを準備する（ａ０＝ｆｉ０（０）＝０）。
【０１０２】
オペレーション５０２において、各エンクレーブＥｉ（ｉ＝１，．．．，ｎ−１）は、次いで、その新たなランダム多項式ｆｉ０（ｊ）における各ポイントｊを、他のエンクレーブＥｊそれぞれに安全に送信する（ｊ＝１，．．．，ｎ−１）。各エンクレーブは、遠隔認証により他のエンクレーブを認証する。
【０１０３】
オペレーション５０４において、各エンクレーブＥｉ（ｉ＝１，．．．，ｎ−１）は、新たなシークレット共有を生成する。より詳細には、各エンクレーブＥｉは、次いで、新たなシークレット共有ｓｉ’を決定するために、受信した全てのポイントｆｊ’（ｉ）（ｊ＝１，．．．，ｎ−１｜ｊ≠ｉ）を、元のシークレット共有ｓｉに追加する。例えば、新たなシークレット共有は次のように決定されてもよい：
【０１０４】
【数７】
2020518850.tif 000009
【０１０５】
追加の確認ステップとして、方法３００のオペレーション３０８が、グループ公開鍵を生成するために、方法５００のオペレーション５０４の後に実行されてもよい。参加者は、その後、グループ公開鍵がその以前の値（即ち、図５の方法５００が実行される前の値）から変化していないことを確認することができる。
【０１０６】
オペレーション５０４において、以前のシークレット共有は、新たなシークレット共有で上書きされ、登録解除される参加者Ｐｎのエンクレーブにおけるシークレット共有を事実上無効化することができる。かくてそのメンバーは今やグループから登録解除される。
【０１０７】
注目すべきことに、登録解除方法５００の間、このスキームのセキュリティは、各自の失効した鍵共有を新たな値で検証可能に上書きするｎ−ｔ人の参加者を当てにするだけである。従って、セキュリティに影響を及ぼすには、ｔ＋１の閾値数のエンクレーブが打ち破られることを要する。たとえ登録解除された参加者が（駄目元で）彼らの鍵共有を回復するために彼ら自身のエンクレーブを突破できたとしても、少なくともｎ−ｔ個のエンクレーブが正しく動作している限り、その共有は、共謀した攻撃に役立たない。
【０１０８】
署名生成
グループのメンバーにより保有するシークレット共有は、有効なＥＣＤＳＡ署名がトランザクションに対して生成されることを許容するために使用され得る。より具体的には、グループ参加者が有効な署名を生成できるようにするために、少なくとも閾値数のシークレット共有が使用され得る。署名は、グループ公開鍵によって以前に制限されていたディジタル資産を使用するトランザクションに適用され得る。即ち、有効な署名は、以前にリソースに設けられていたエンカンブランスを除去する。ＥＣＤＳＡ署名は、２つのコンポーネント、即ち第１コンポーネントｒと第２コンポーネントｗとを含む。
【０１０９】
図６を次に参照すると、ＥＣＤＳＡ署名を生成する例示的な方法６００が示されている。方法６００は、ノード１０２によって、以前に形成されたグループの他ノード１０２と協力して実行されてもよい。グループのメンバー（即ち、方法６００を協働的に実行するノード）は、上述の技術を使用して、事前に定められていてもよい。
【０１１０】
実行される方法に先立って、グループ内の複数の参加者（即ち、メンバー）は、特定のトランザクションＴｘを認証するために、分散署名生成に参加することを希望することを、他の参加者に知らせることができる。即ち、ノードは、トランザクションＴｘの分散署名生成に参加する意志を示すことができる。トランザクション（Ｔｘ）は、グループ公開鍵により制限されているアウトプットを使用することになるトランザクションである。即ち、トランザクションの効果は、グループ公開鍵に基づく制限をアウトプットから除去することになるであろう。トランザクションＴｘは、例えば、グループの参加者の１人によって提案されてもよい。
【０１１１】
閾値数の参加者が参加の意向を合図すると、他ノードと協力してノードによって署名グループが形成される。図示の例では、署名グループは、３人の参加者（即ち、３つのノード）を含む。しかしながら、署名グループは異なる数のノードを含むことが可能である。
【０１１２】
オペレーション６０２において、署名グループを形成するノードは、トランザクションＴｘに対するハッシュｚを決定する。ハッシュは：ｚ＝Ｈ（Ｔｘ）として決定され、ここでＨはハッシュ関数を表す。ハッシュは、署名グループのコンセンサスによって決定される。例えば、ハッシュは、署名グループの参加者の１人によって提案されてもよく、他のメンバーは、ハッシュとの一致を確認してもよい。
【０１１３】
オペレーション６０４において、署名グループを形成するノードは、セキュア乱数ｋに基づいて：ａ）セキュア乱数の逆数ｋ−１；及びｂ）第１署名成分ｒを取得する。第１署名成分ｒは、セキュア乱数ｋと楕円曲線生成ポイントＧとに基づいて決定される。より詳細には、オペレーション６０４において、参加者のうちの１人、例えばＰ１は、セキュア乱数ｋを生成し、このセキュア乱数の逆数ｋ−１を計算し、また、第１署名成分ｒを計算するために、各自のエンクレーブＥ１（これは、参加者であるノードの信頼される実行環境と関連付けられている）を準備する。第１署名成分ｒは次のように決定されてもよい：
ｒ＝（ｋ×Ｇ）ｘ  ｍｏｄ  ｐ
【０１１４】
オペレーション６０４において、このセキュア乱数の逆数ｋ−１と第１署名成分ｒを計算したエンクレーブＥ１は、これらの値（例えば、このセキュア乱数の逆数ｋ−１及び第１署名成分ｒ）を、署名グループ内の他の参加者に関連するエンクレーブＥ２，．．．，Ｅｔ＋１へ送る。これらの値を送信するエンクレーブは、それらの完全性を遠隔的に認証し、それらが承認された命令セットを使用して生成されていることを認証する。これらの値を生成しなかったエンクレーブＥ２，．．．，Ｅｔ＋１は、これらの値を生成したエンクレーブＥ１からそれらを受け取り、値の完全性を確認する（例えば、これらの値を生成するために使用される命令セットが、承認された命令セットであることを確認することによって確認する）。
【０１１５】
オペレーション６０６において、署名グループの各ノードは、プライベート・シークレット共有と、セキュア乱数の逆数と、第１署名成分に基づいて、部分的な署名ｖｉを決定する。部分的な署名ｖｉは各ノードのエンクレーブ内で生成される。例えば、署名グループのエンクレーブＥｉ（ｉ＝１，．．．，ｔ＋１）は、次のような部分的署名を計算する：
ｖｉ＝ｋ−１ｒｂｉｓｉ  ｍｏｄ  ｐ
ここで、ｂｉは：
【数８】
2020518850.tif 000010
のように決定されるラグランジュ係数であり、ｋ−１はセキュア乱数の逆数であり、ｓｉは参加者Ｐｉのシークレット共有であり（上記の技法を利用して以前に取得されている）、ｒは第１署名成分であり、ｐは次数である。
【０１１６】
従って、部分的署名の決定は、ラグランジュ補間を実行することを含み得る。
【０１１７】
オペレーション６０６において、署名グループに関する各エンクレーブＥｉ（ｉ＝１，．．．，ｔ＋１）は、各ノード（より具体的には、各エンクレーブ）が署名グループの他ノードから部分的署名を受け取るように、彼らの部分的署名ｖｉを、署名グループに関する他のエンクレーブへ安全にブロードキャストする。
【０１１８】
オペレーション６０８において、署名グループの各ノード（より具体的には、各エンクレーブ）は、オペレーション６０６で決定され受信される部分的署名に基づいて、第２署名成分ｗを生成することができる。例えば、第２署名成分は次のように決定されてもよい：
【０１１９】
【数９】
2020518850.tif 000011
ここで、ｚはトランザクション・ハッシュである。
【０１２０】
オペレーション６０８において、署名グループの各ノードは、第１署名成分及び第２署名成分を含むＥＣＤＳＡ署名を、そのエンクラーブからノードのホスト部分（即ち、エンクラーブではないノードの部分）へ送信することができ、ノードは、トランザクション・ハッシュ（ｚ）及びグループ公開鍵（Ａ）に対して署名を検証することができる。
【０１２１】
その後、署名グループの任意の参加者は、対応するトランザクションに署名を追加してそれをブロックチェーン・ネットワークへブロードキャストすることができる。
【０１２２】
上述の署名スキームのセキュリティは、つかの間の秘密鍵の値に依存し、その値は、１つのエンクレーブにより生成され且つ署名グループ中の他のエンクレーブへ秘密裏に分散されて隠されたままであるセキュア乱数である。この値が、エンクレーブのうちの唯１つを突破することによって取り出されてしまった場合、共有される秘密鍵は、トランザクションの署名から決定されることが可能であり、そして、完全に異なるトランザクションを署名するために使用されることが可能である。しかしながら、そのインパクトは最小限であり、なぜならエンクレーブの物理的な突破は非常に短い時間ウィンドウ（ブロックチェーンにおけるトランザクションの確認時間）の中で生じる必要があるからである。
【０１２３】
上述の実施形態は本発明を限定するものではなく例示していること、及び当業者は添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、多くの代替実施形態を設計できることに留意されたい。特許請求の範囲においては、括弧内に付された任意の参照符号は、特許請求の範囲を限定するように解釈されてはならない。「含んでいる」及び「含む」等の言葉は、何らかの特許請求の範囲又は明細書全体に列挙されたもの以外の要素又はステップの存在を除外していない。本明細書において、「有する」は「含む、又はからなる」を意味し、「有している」は「含んでいる、又はから構成されている」を意味する。要素の単独の言及はそのような複数の要素を排除しておらず、逆もまた同様である。本発明は、幾つかの個別的な要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施され得る。幾つかの手段を列挙する装置クレームにおいては、これらの手段の幾つかは、一つの同一のハードウェアのアイテムによって具体化されてもよい。特定の複数の事項が相互に異なる従属請求項に記載されているという単なる事実は、これらの事項の組み合わせが有利に利用できないことを示すものではない。
【図１】
2020518850.tif 000012
【図２】
2020518850.tif 000013
【図３】
2020518850.tif 000014
【図４】
2020518850.tif 000015
【図５】
2020518850.tif 000016
【図６】
2020518850.tif 000017
【国際調査報告】
2020518850.tif 000018
2020518850.tif 000019