(57)【要約】  Ｂｉｔｃｏｉｎブロックチェーンにおけるようなブロックチェーントランザクションのセキュアな通信を可能にするために、複数のノード（Ａ，Ｂ，Ｃ）の間で第１共通シークレットを共有する方法が開示される。  当該方法は、少なくとも１つの第１ノード（Ａ）について、複数の第２共通シークレット（ＳＡＰＣ、ＳＡＰＢ）を決定するステップであって、各第２共通シークレットは、前記第１ノード及びそれぞれの第２ノード（Ｂ）に共通であり、前記第１ノードにおいて前記第１ノードの第１秘密鍵（ＳＡ）及び前記第２ノードの第１公開鍵（ＰＣ、ＰＢ）に基づき決定され、前記第２ノードにおいて前記２ノードの第１秘密鍵（ＳＢ、ＳＣ）及び前記第１ノードの第１公開鍵（ＰＡ）に基づき決定される。  第２ノード（Ｂ）及び第３ノード（Ｃ）に共通な第３共通シークレット（ＳＢＰＣ、ＳＣＰＢ）は、第２ノードについて決定される。  当該方法は、第１ノードにおいて、前記第１ノードに知られている第１共通シークレットのシェアを暗号化するステップと、前記の暗号化されたシェアを第２ノードへ送信するステップと、を含む。  当該方法は、第１ノードにおいて、前記第２ノードから、前記第１共通シークレットの暗号化されたシェアを受信するステップであって、複数のノードのうちの各々が、前記第１共通シークレットにアクセスするための第１共通シークレットの閾数のシェアに達することを可能にする、ステップを更に含む。
2022500920.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードの間で第１共通シークレットを共有する方法であって、各々の前記ノードは、前記複数のノードに共通の暗号システムのそれぞれの第１秘密鍵及びそれぞれの第１公開鍵を有するそれぞれの非対称暗号第１鍵ペアに関連付けられ、前記第１共通シークレットは、前記ノードの各々の前記第１秘密鍵に基づき、前記方法は、
少なくとも１つの第１ノードについて、複数の第２共通シークレットを決定するステップであって、各々の前記第２共通シークレットは、前記第１ノード及びそれぞれの第２ノードに共通であり、前記第１ノードにおいて前記第１ノードの前記第１秘密鍵及び前記第２ノードの前記第１公開鍵に基づき決定され、前記第２ノードにおいて前記第２ノードの前記第１秘密鍵及び前記第１ノードの前記第１公開鍵に基づき決定され、前記第１共通シークレットの複数のシェアはそれぞれ、少なくとも１つのそれぞれの第２共通シークレットに基づき、前記第１共通シークレットが閾数の前記シェアにアクセス可能になるが、前記閾数より少ないシェアにアクセス不可能になる、ステップと、
少なくとも１つの第２ノードについて、少なくとも１つのそれぞれの第３共通シークレットを決定するステップであって、それぞれの第３共通シークレットは、前記第２ノード及びそれぞれの第３ノードに共通であり、前記第２ノードにおいて前記第２ノードの前記第１秘密鍵及び前記第３ノードの前記第１公開鍵に基づき決定され、前記第３ノードにおいて前記第３ノードの前記第１秘密鍵及び前記第２ノードの前記第１公開鍵に基づき決定され、前記第１共通シークレットの少なくとも１つのシェアは、少なくとも１つのそれぞれの前記第３共通シークレットに基づく、ステップと、
少なくとも１つの前記第１ノードにおいて、前記第１ノードに知られている前記第１共通シークレットの少なくとも１つのシェアを、暗号システムのそれぞれの非対称暗号第２鍵ペアの第２秘密鍵に基づき、暗号化するステップであって、前記第２鍵ペアは前記第１ノードに知られているそれぞれの前記第２共通シークレットに基づく、ステップと、
少なくとも１つの前記の暗号化されたシェアを、前記第１ノードから、前記第２鍵ペアが基づく前記第２共通シークレットが共通であるそれぞれの前記第２ノードへ送信するステップと、
少なくとも１つの前記第１ノードにおいて、少なくとも１つの前記第２ノードから、前記第２ノードに知られており前記暗号システムのそれぞれの非対称暗号第２鍵ペアの第２秘密鍵に基づき暗号化された前記第１共通シークレットの少なくとも１つのそれぞれのシェアを受信するステップであって、前記第２鍵ペアは、前記第１ノード及び前記第２ノードに共通の前記第２共通シークレットに基づき、前記複数のノードの各々が前記第１共通シークレットの前記閾数のシェアに達することを可能にする、ステップと、
を含む方法。
【請求項２】
複数の前記の暗号化されたシェアは、それぞれ、対応する前記ノードに知られている複数の前記共通シークレットの結合に基づく、請求項１に記載の方法。
【請求項３】
複数の前記の暗号化されたシェアは、対応する前記ノードに知られている複数の前記共通シークレットの少なくとも１つのそれぞれのＸＯＲ結合に基づく、請求項２に記載の方法。
【請求項４】
複数の前記の暗号化されたシェアは、対応する前記ノードに知られている複数の前記共通シークレットの乗算結合に基づく、請求項２又は３に記載の方法。
【請求項５】
前記乗算結合は（ｘ１，ｘ２，ｘ３）  ｍｏｄ  ｎの形式であり、ｘ１，ｘ２，ｘ３はノードに知られている共通シークレットであり、ｎは暗号システムの次数である、請求項４に記載の方法。
【請求項６】
複数の前第１シェアは、第１多項式関数のシェアであり、前記第１共通シークレットは、少なくとも閾数の前記シェアの多項式補間により決定される、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記第１共通シークレットの少なくとも閾数のシェアを受信するステップであって、各々の前記シェアは前記第１多項式関数のそれぞれの値に対応する、ステップと、
前記第１共通シークレットを決定するために、前記シェアの複数の知られている値から、前記第１多項式関数の係数を決定することにより、前記第１多項式関数を決定するステップと、
を更に含む請求項６に記載の方法。
【請求項８】
前記第１多項式関数を決定するステップは、誤り訂正アルゴリズムを実行するステップを含む、請求項７に記載の方法。
【請求項９】
前記第１多項式関数を決定するステップは、Ｂｅｒｌｅｋａｍｐ−Ｗｅｌｃｈ復号アルゴリズムを実行するステップを含む、請求項８に記載の方法。
【請求項１０】
前記第１多項式関数を決定するステップは、
誤り位置多項式関数及び第２多項式関数を定義するステップであって、前記第２多項式関数は、前記第１多項式関数と前記誤り位置多項式関数との積である、ステップと、
前記部分署名の複数の知られている値から、前記第２多項式関数及び前記誤り位置多項式関数の係数を決定するステップと、
前記第１共通シークレットを決定するために、前記第２多項式関数及び前記誤り検出多項式関数から前記第１多項式関数を決定するステップと、
を含む、請求項７又は８に記載の方法。
【請求項１１】
少なくとも１つの前記暗号システムは、準同型特性を有する、請求項１〜１０のいずれか一項に記載の方法。
【請求項１２】
少なくとも１つの前記暗号システムは、楕円曲線暗号システムである、請求項１１に記載の方法。
【請求項１３】
少なくとも第１ノードのマスタ秘密鍵（Ｖ１Ｃ）と前記第１及び第２ノードと共通な決定性鍵（ＤＫ）とに基づき、少なくとも１つの前記第１ノードの前記第１秘密鍵を決定するステップと、
前記第２ノードのマスタ公開鍵（Ｐ１Ｓ）と共通暗号システムを用いる前記決定性鍵（ＤＫ）の暗号化とに基づき、少なくとも１つの前記第２ノードの前記第１公開鍵（Ｐ２Ｓ）を決定するステップと、
を更に含む請求項１〜１２のいずれか一項に記載の方法。
【請求項１４】
前記決定性鍵（ＤＫ）は、メッセージ（Ｍ）に基づく、請求項１３に記載の方法。
【請求項１５】
前記メッセージ（Ｍ）及び前記第１ノードの第１秘密鍵（Ｖ２Ｃ）に基づき、第１署名付きメッセージ（ＳＭ１）を生成するステップと、
通信ネットワークを介して、前記第１署名付きメッセージ（ＳＭ１）を前記第２ノード（Ｓ）へ送信するステップであって、前記第１署名付きメッセージ（ＳＭ１）は、前記第１ノード（Ｃ）を認証するために、前記第１ノードの第１公開鍵（Ｐ２Ｃ）により検証できる、ステップと、
を更に含む請求項１４に記載の方法。
【請求項１６】
通信ネットワークを介して、前記第２ノード（Ｓ）から第２署名付きメッセージ（ＳＭ２）を受信するステップと、
前記第２ノードの前記第１公開鍵（Ｐ２Ｓ）により、前記第２署名付きメッセージ（ＳＭ２）を検証するステップと、
前記第２署名付きメッセージ（ＳＭ２）を検証した結果に基づき、前記第２ノード（Ｓ）を認証するステップと、
を更に含み、
前記第２署名付きメッセージ（ＳＭ２）は、メッセージ（Ｍ）又は第２メッセージ（Ｍ２と前記第２ノードの前記第１秘密鍵（Ｖ２Ｓ）とに基づき生成されたものである、請求項１４又は１５に記載の方法。
【請求項１７】
メッセージ（Ｍ）を生成するステップと、
通信ネットワークを介して、前記メッセージ（Ｍ）を前記第２ノードへ送信するステップと、
を更に含む請求項１４〜１６のいずれか一項に記載の方法。
【請求項１８】
通信ネットワークを介して、前記第２ノード（Ｓ）から前記メッセージ（Ｍ）を受信するステップ、
を更に含む請求項１４〜１７のいずれか一項に記載の方法。
【請求項１９】
通信ネットワークを介して、別のノードから前記メッセージ（Ｍ）を受信するステップ、
を更に含む請求項１４〜１８のいずれか一項に記載の方法。
【請求項２０】
データストア及び／又は前記第１ノード（Ｃ）に関連付けられた入力インタフェースから、前記メッセージ（Ｍ）を受信するステップ、
を含む請求項１４〜１９のいずれか一項に記載の方法。
【請求項２１】
前記暗号システムは楕円曲線暗号（ＥＣＣ）システムであり、前記第１ノードのマスタ公開鍵（Ｐ１Ｃ）及び第２ノードのマスタ公開鍵（Ｐ１Ｓ）は、それぞれ第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び第２ノードのマスタ秘密鍵（Ｖ１Ｓ）と生成元（Ｇ）との楕円曲線点積に基づく、請求項１３〜２０のいずれか一項に記載の方法。
【請求項２２】
通信ネットワークを介して、前記第２ノードのマスタ公開鍵（Ｐ１Ｓ）を受信するステップと、
前記第１ノード（Ｃ）に関連付けられたデータストアに、前記第２ノードのマスタ公開鍵（Ｐ１Ｓ）を格納するステップと、
を更に含む請求項１３〜２１のいずれか一項に記載の方法。
【請求項２３】
第１ノード（Ｃ）において、第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードのマスタ秘密鍵（Ｐ１Ｃ）を生成するステップと、
通信ネットワークを介して、前記第１ノードのマスタ公開鍵（Ｐ１Ｃ）を前記第２ノード（Ｓ）及び／又は他のノードへ送信するステップと、
前記第１ノード（Ｃ）に関連付けられた第１データストアに、前記第１ノードのマスタ秘密鍵（Ｖ１Ｃ）を格納するステップと、
を更に含む請求項１３〜２２のいずれか一項に記載の方法。
【請求項２４】
通信ネットワークを介して、前記第２ノードへ、少なくとも１つの前記共通シークレット（ＣＳ）を決定する方法のために共通暗号システムを使用することを示す通知を送信するステップ、を更に含み、
前記第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び前記第１ノードのマスタ公開鍵（Ｐ１Ｃ）を生成するステップは、
前記共通暗号システムで指定される許容範囲内のランダムな整数に基づき、前記第１ノードのマスタ秘密鍵（Ｖ１Ｃ）を生成するステップと、
前記第１ノードのマスタ秘密鍵（Ｖ１Ｃ）の暗号化に基づき、前記第１ノードのマスタ公開鍵（Ｐ１Ｃ）を決定するステップと、
を含む、請求項１３〜２３のいずれか一項に記載の方法。
【請求項２５】
前記共通暗号システムは、共通の生成元（Ｇ）を有する楕円曲線暗号（ＥＣＣ）システムであり、前記第１ノードのマスタ公開鍵（Ｐ１Ｃ）は、次式：
Ｐ１Ｃ＝Ｖ１Ｃ×Ｇ
に従い、前記第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び前記共通の生成元（Ｇ）の楕円曲線点積に基づき決定される、請求項１３〜２４のいずれか一項に記載の方法。
【請求項２６】
メッセージ（Ｍ）のハッシュを決定することに基づき、前記決定性鍵（ＤＫ）を決定するステップ、を更に含み、
前記第１ノードの第１秘密鍵（Ｖ２Ｃ）を決定するステップは、次式：
Ｖ２Ｃ＝Ｖ１Ｃ＋ＤＫ
に従う、前記第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び前記決定性鍵（ＤＫ）のスカラー加算に基づき、
前記第２ノードの第１公開鍵（Ｐ２Ｓ）を決定するステップは、次式：
Ｐ２Ｓ＝Ｐ１Ｓ＋ＤＫ×Ｇ
に従う、前記決定性鍵（ＤＫ）及び前記共通の生成元（Ｇ）の楕円曲線点積への前記第２ノードのマスタ公開鍵（Ｐ１Ｓ）の楕円曲線点加算に基づき、
前記決定性鍵（ＤＫ）は、前の決定性鍵のハッシュを決定することに基づき得る、
請求項１３〜２５のいずれか一項に記載の方法。
【請求項２７】
複数のノードの間のセキュアな通信の方法であって、前記方法は、
請求項１〜２６のいずれか一項に記載の方法により、複数のノードの間で第１共通シークレットを共有するステップと、
前記第１共通シークレットに基づき対称鍵を決定するステップと、
前記対称鍵により第１通信メッセージを暗号化して、暗号化第１通信メッセージにするステップと、
通信ネットワークを介して、前記複数のノードのうちの１つのノードから前記複数のノードのうちの他のノードへ、前記暗号化第１通信メッセージを送信するステップと、
を含む方法。
【請求項２８】
通信ネットワークを介して、前記複数のノードのうちの１つのノードから、暗号化第２通信メッセージを受信するステップと、
前記対称鍵により前記暗号化第２通信メッセージを復号して、第２通信メッセージにするステップと、
を更に含む請求項２７に記載の方法。
【請求項２９】
複数のノードの間のオンライントランザクションを実行する方法であって、前記方法は、
請求項１〜２６のいずれか一項に記載の方法により、複数のノードの間で第１共通シークレットを共有するステップと、
前記第１共通シークレットに基づき対称鍵を決定するステップと、
前記対称鍵により第１トランザクションメッセージを暗号化して、暗号化第１トランザクションメッセージにするステップと、
通信ネットワークを介して、前記複数のノードのうちの第１ノードから前記複数のノードのうちの他のノードへ、前記暗号化第１トランザクションメッセージを送信するステップと、
を含む方法。
【請求項３０】
システムであって、
プロセッサと、
前記プロセッサによる実行の結果として、前記システムに請求項１〜２９のいずれか一項に記載の方法を実行させる実行可能命令を含むメモリと、
を含むシステム。
【請求項３１】
実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、前記コンピュータシステムに、請求項１〜２９のいずれか一項に記載の方法を実行させる、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、複数のノードの間で共通シークレットを共有する方法に関し、特に、少なくとも３つのノードの間で共通シークレットを共有する方法に関する。本開示は、特に、限定ではないが、ノード間のセキュアな通信を可能にするために暗号法における使用に適し、限定ではないが、デジタルウォレット、ブロックチェーン（例えば、Ｂｉｔｃｏｉｎ）技術、及び個人向け装置のセキュリティと共に使用することに適し得る。
【背景技術】
【０００２】
本願明細書では、私たちは、全ての形式の電子的な、コンピュータに基づく、分散型台帳を包含するために用語「ブロックチェーン」を使用する。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、並びにこれらの変形を含む。他のブロックチェーン実装が提案され開発されているが、ブロックチェーン技術の最も広く知られているアプリケーションは、Ｂｉｔｃｏｉｎ台帳である。Ｂｉｔｃｏｉｎは、ここでは、便宜上及び説明の目的で参照されることがあるが、本開示はＢｉｔｃｏｉｎブロックチェーンと共に使用することに限定されず、代替のブロックチェーン実装及びプロトコルが本開示の範囲に包含されることに留意すべきである。用語「ユーザ」は、ここでは、人間またはプロセッサに基づくリソースを表してよい。
【０００３】
ブロックチェーンは、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピアの電子台帳であり、ブロックにより構成され、ブロックはまたトランザクションにより構成される。各トランザクションは、ブロックチェーンシステムの中の参加者間でデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも１つのインプット及び少なくとも１つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、これらのブロックは一緒に繋げられて、起源以来ブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能な記録を生成する。トランザクションは、スクリプトとして知られている小さなプログラムを含む。スクリプトは、それらのインプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。Ｂｉｔｃｏｉｎプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を用いて記述される。
【０００４】
トランザクションがブロックチェーンに書き込まれるためには、検証されなければならない。ネットワークノード（マイナー）は、無効なトランザクションがネットワークから拒否され、各トランザクションが有効であることを保証するために作業を実行する。ノードにインストールされたソフトウェアクライアントは、未使用トランザクション（unspent  transaction,  UTXO）のロック及びアンロックスクリプトを実行することにより、UTXOに対してこの検証作業を実行する。ロック及びアンロックスクリプトの実行が真（TRUE）と評価する場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、（ｉ）トランザクションを受信した第１ノードにより検証され、トランザクションが有効な場合には、ノードが該トランザクションをネットワーク内の他のノードに中継する、（ｉｉ）マイナーにより構築された新しいブロックに追加される、（ｉｉｉ）マイニングされる、つまり過去のトランザクションのパブリック台帳に追加される、ことが必要である。
【０００５】
ブロックチェーン技術は、暗号通貨の実装の使用のために最も広く知られているが、デジタル事業家が、Ｂｉｔｃｏｉｎの基づく暗号セキュリティシステム及び新しいシステムを実装するためにブロックチェーンに格納できるデータの両方の使用を開発し始めている。ブロックチェーンが、暗号通貨の分野に限定されない自動化タスク及びプロセスのために使用できれば、非常に有利になる。
【０００６】
このようなソリューションは、ブロックチェーンの利益（例えば、永久性、イベントの記録の耐タンパ性、分散型処理、等）を利用しながら、それらの用途をより多様化し得る。
【０００７】
国際特許出願ＷＯ２０１７／１４５０１６号は、ノード間のセキュアな通信を可能にするために、２つのノードの間で共通シークレットを共有する方法を開示している。
【０００８】
しかしながら、２つより多くのノードの間で共通シークレットを共有する方法を提供することが望ましい。
【０００９】
このような改良されたソリューションがここで考案される。
【００１０】
従って、本開示によると、添付の請求項において定められる方法が提供される。
【発明の概要】
【００１１】
本開示によると、複数のノードの間で第１共通シークレットを共有する方法であって、各々の前記ノードは、前記複数のノードに共通の暗号システムのそれぞれの第１秘密鍵及びそれぞれの第１公開鍵を有するそれぞれの非対称暗号第１鍵ペアに関連付けられ、前記第１共通シークレットは、前記ノードの各々の前記第１秘密鍵に基づき、前記方法は、
少なくとも１つの第１ノードについて、複数の第２共通シークレットを決定するステップであって、各々の前記第２共通シークレットは、前記第１ノード及びそれぞれの第２ノードに共通であり、前記第１ノードにおいて前記第１ノードの前記第１秘密鍵及び前記第２ノードの前記第１公開鍵に基づき決定され、前記第２ノードにおいて前記第２ノードの前記第１秘密鍵及び前記第１ノードの前記第１公開鍵に基づき決定され、前記第１共通シークレットの複数のシェアはそれぞれ、少なくとも１つのそれぞれの第２共通シークレットに基づき、前記第１共通シークレットが閾数の前記シェアにアクセス可能になるが、前記閾数より少ないシェアにアクセス不可能になる、ステップと、
少なくとも１つの第２ノードについて、少なくとも１つのそれぞれの第３共通シークレットを決定するステップであって、それぞれの第３共通シークレットは、前記第２ノード及びそれぞれの第３ノードに共通であり、前記第２ノードにおいて前記第２ノードの前記第１秘密鍵及び前記第３ノードの前記第１公開鍵に基づき決定され、前記第３ノードにおいて前記第３ノードの前記第１秘密鍵及び前記第２ノードの前記第１公開鍵に基づき決定され、前記第１共通シークレットの少なくとも１つのシェアは、少なくとも１つのそれぞれの前記第３共通シークレットに基づく、ステップと、
少なくとも１つの前記第１ノードにおいて、前記第１ノードに知られている前記第１共通シークレットの少なくとも１つのシェアを、暗号システムのそれぞれの非対称暗号第２鍵ペアの第２秘密鍵に基づき、暗号化するステップであって、前記第２鍵ペアは前記第１ノードに知られているそれぞれの前記第２共通シークレットに基づく、ステップと、
少なくとも１つの前記の暗号化されたシェアを、前記第１ノードから、前記第２鍵ペアが基づく前記第２共通シークレットが共通であるそれぞれの前記第２ノードへ送信するステップと、
少なくとも１つの前記第１ノードにおいて、少なくとも１つの前記第２ノードから、前記第２ノードに知られており前記暗号システムのそれぞれの非対称暗号第２鍵ペアの第２秘密鍵に基づき暗号化された前記第１シークレットの少なくとも１つのそれぞれのシェアを受信するステップであって、前記第２鍵ペアは、前記第１ノード及び前記第２ノードに共通の前記第２共通シークレットに基づき、前記複数のノードの各々が前記第１共通シークレットの前記閾数のシェアに達することを可能にする、ステップと、
を含む方法が提供される。
【００１２】
これは、複数のノードの間で共通シークレットを共有し、該共通シークレットがノードの間のセキュアな通信の基礎として使用できる、効率的な方法を提供するという利点を提供する。
【００１３】
複数の前記の暗号化されたシェアは、それぞれ、対応する前記ノードに知られている複数の前記共通シークレットの結合に基づく。
【００１４】
これは、個々の共通シークレットを第三者に対して難読化し、それにより、例えば共有されたシークレットがブロックチェーントランザクションのスクリプトに含まれるとき、プライバシを向上することを可能にしながら、効率を向上するという利点を提供する。
【００１５】
複数の前記の暗号化されたシェアは、それぞれ、対応する前記ノードに知られている複数の前記共通シークレット少なくとも１つのそれぞれのＸＯＲ結合に基づいてよい。
【００１６】
これは、処理が簡易になり、それにより、受信ノードによる第１共通シークレットの復元を簡単にするという利点を提供する。
【００１７】
複数の前記の暗号化されたシェアは、対応する前記ノードに知られている複数の前記共通シークレットの乗算結合に基づいてよい。
【００１８】
前記乗算結合は（ｘ１，ｘ２，ｘ３）  ｍｏｄ  ｎの形式であってよく、ｘ１，ｘ２，ｘ３はノードに知られている共通シークレットであり、ｎは暗号システムの次数である。
【００１９】
複数の前記シェアは、第１多項式関数のシェアであってよく、前記第１シークレットは、少なくとも閾数の前記シェアの多項式補間により、決定されてよい。
【００２０】
前記方法は、前記第１共通シークレットの少なくとも閾数のシェアを受信するステップであって、各々の前記シェアは前記第１多項式関数のそれぞれの値に対応する、ステップと、
前記第１共通シークレットを決定するために、前記シェアの複数の知られている値から、前記第１多項式関数の係数を決定することにより、前記第１多項式関数を決定するステップと、
を更に含み得る。
【００２１】
前記第１多項式関数を決定するステップは、誤り訂正アルゴリズムを実行するステップを含んでよい。
【００２２】
前記第１多項式関数を決定するステップは、Ｂｅｒｌｅｋａｍｐ−Ｗｅｌｃｈ復号アルゴリズムを実行するステップを含んでよい。
【００２３】
前記第１多項式関数を決定するステップは、
誤り位置多項式関数及び第２多項式関数を定義するステップであって、前記第２多項式関数は、前記第１多項式関数と前記誤り位置多項式関数との積である、ステップと、
前記部分署名の複数の知られている値から、前記第２多項式関数及び前記誤り位置多項式関数の係数を決定するステップと、
前記第１共通シークレットを決定するために、前記第２多項式関数及び前記誤り検出多項式関数から前記第１多項式関数を決定するステップと、を含んでよい。
【００２４】
少なくとも１つの前記暗号システムは、準同型特性を有してよい。
【００２５】
これは、方法のより柔軟な効率的な動作を可能にするという利点を提供する。
【００２６】
少なくとも１つの前記デジタル署名は、楕円曲線暗号システムに基づいてよい。
【００２７】
これは、所与の鍵サイズに高いセキュリティの利点を提供する。
【００２８】
前記方法は、少なくとも第１ノードのマスタ秘密鍵（Ｖ１Ｃ）と前記第１及び第２ノードと共通な決定性鍵（ＤＫ）とに基づき、少なくとも１つの前記第１ノードの前記第１秘密鍵を決定するステップと、
前記第２ノードのマスタ公開鍵（Ｐ１Ｓ）と前記共通暗号システムを用いる前記決定性鍵（ＤＫ）の暗号化とに基づき、少なくとも１つの前記第２ノードの前記第１公開鍵（Ｐ２Ｓ）を決定するステップと、
を更に含んでよい。
【００２９】
決定性鍵（ＤＫ）はメッセージ（Ｍ）に基づいてよい。
【００３０】
前記メッセージ（Ｍ）及び前記第１ノードの第１秘密鍵（Ｖ２Ｃ）に基づき、第１署名付きメッセージ（ＳＭ１）を生成するステップと、
前記通信ネットワークを介して、前記第１署名付きメッセージ（ＳＭ１）を前記第２ノード（Ｓ）へ送信するステップであって、前記第１署名付きメッセージ（ＳＭ１）は、前記第１ノード（Ｃ）を認証するために、前記第１ノードの第１公開鍵（Ｐ２Ｃ）により検証できる、ステップと、
を更に含んでよい。
【００３１】
前記方法は、前記通信ネットワークを介して、前記第２ノード（Ｓ）から第２署名付きメッセージ（ＳＭ２）を受信するステップと、
前記第２ノードの前記第１公開鍵（Ｐ２Ｓ）により、前記第２署名付きメッセージ（ＳＭ２）を検証するステップと、
前記第２署名付きメッセージ（ＳＭ２）を検証した結果に基づき、前記第２ノード（Ｓ）を認証するステップと、
を更に含んでよく、
前記第２署名付きメッセージ（ＳＭ２）は、メッセージ（Ｍ）又は第２メッセージ（Ｍ２）と前記第２ノードの前記第１秘密鍵（Ｖ２Ｓ）とに基づき生成されたものである。
【００３２】
前記方法は、メッセージ（Ｍ）を生成するステップと、
通信ネットワークを介して、前記メッセージ（Ｍ）を前記第２ノードへ送信するステップと、を更に含んでよい。
【００３３】
前記方法は、前記通信ネットワークを介して、前記第２ノード（Ｓ）から前記メッセージ（Ｍ）を受信するステップ、を更に含んでよい。
【００３４】
前記方法は、前記通信ネットワークを介して、別のノードから前記メッセージ（Ｍ）を受信するステップ、を更に含んでよい。
【００３５】
前記方法は、データストア及び／又は前記第１ノード（Ｃ）に関連付けられた入力インタフェースから、前記メッセージ（Ｍ）を受信するステップ、を含んでよい。
【００３６】
前記暗号システムは楕円曲線暗号（ＥＣＣ）システムであってよく、前記第１ノードのマスタ公開鍵（Ｐ１Ｃ）及び第２ノードのマスタ公開鍵（Ｐ１Ｓ）は、それぞれ第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び第２ノードのマスタ秘密鍵（Ｖ１Ｓ）と生成元（Ｇ）との楕円曲線点積に基づいてよい。
【００３７】
前記方法は、前記通信ネットワークを介して、前記第２ノードのマスタ公開鍵（Ｐ１Ｓ）を受信するステップと、
前記第１ノード（Ｃ）に関連付けられたデータストアに、前記第２ノードのマスタ公開鍵（Ｐ１Ｓ）を格納するステップと、
を更に含んでよい。
【００３８】
前記方法は、第１ノード（Ｃ）において、第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードのマスタ秘密鍵（Ｐ１Ｃ）を生成するステップと、
前記通信ネットワークを介して、前記第１ノードのマスタ公開鍵（Ｐ１Ｃ）を前記第２ノード（Ｓ）及び／又は他のノードへ送信するステップと、
前記第１ノード（Ｃ）に関連付けられた第１データストアに、前記第１ノードのマスタ秘密鍵（Ｖ１Ｃ）を格納するステップと、
を更に含んでよい。
【００３９】
前記方法は、前記通信ネットワークを介して、前記第２ノードへ、少なくとも１つの前記共通シークレット（ＣＳ）を決定する方法のために共通暗号システムを使用することを示す通知を送信するステップ、を更に含んでよく、
前記第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び前記第１ノードのマスタ公開鍵（Ｐ１Ｃ）を生成するステップは、
前記共通暗号システムで指定される許容範囲内のランダムな整数に基づき、前記第１ノードのマスタ秘密鍵（Ｖ１Ｃ）を生成するステップと、
前記第１ノードのマスタ秘密鍵（Ｖ１Ｃ）の暗号化に基づき、前記第１ノードのマスタ公開鍵（Ｐ１Ｃ）を決定するステップと、
を含む。
【００４０】
前記共通暗号システムは、共通の生成元（Ｇ）を有する楕円曲線暗号（ＥＣＣ）システムであり、前記第１ノードのマスタ公開鍵（Ｐ１Ｃ）は、次式：
Ｐ１Ｃ＝Ｖ１Ｃ×Ｇ
に従い、前記第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び前記共通の生成元（Ｇ）の楕円曲線点積に基づき決定されてよい。
【００４１】
前記方法は、メッセージ（Ｍ）のハッシュを決定することに基づき、前記決定性鍵（ＤＫ）を決定するステップ、を更に含んでよく、
前記第１ノードの第１秘密鍵（Ｖ２Ｃ）を決定するステップは、次式：
Ｖ２Ｃ＝Ｖ１Ｃ＋ＤＫ
に従う、前記第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び前記決定性鍵（ＤＫ）のスカラー加算に基づき、
前記第２ノードの第１公開鍵（Ｐ２Ｓ）を決定するステップは、次式：
Ｐ２Ｓ＝Ｐ１Ｓ＋ＤＫ×Ｇ
に従う、前記決定性鍵（ＤＫ）及び前記共通の生成元（Ｇ）の楕円曲線点積への前記第２ノードのマスタ公開鍵（Ｐ１Ｓ）の楕円曲線点加算に基づく。
【００４２】
前記決定性鍵（ＤＫ）は、前の決定性鍵のハッシュを決定することに基づいてよい。
【００４３】
本開示は、複数のノードの間のセキュアな通信の方法であって、前記方法は、
上述の方法により、第１共通シークレットを決定するステップと、
前記第１共通シークレットに基づき対称鍵を決定するステップと、
前記対称鍵により第１通信メッセージを暗号化して、暗号化第１通信メッセージにするステップと、
通信ネットワークを介して、前記複数のノードのうちの１つのノードから前記複数のノードのうちの他のノードへ、前記暗号化第１通信メッセージを送信するステップと、
を含む方法も提供し得る。
【００４４】
前記方法は、通信ネットワークを介して、前記複数のノードのうちの１つのノードから、暗号化第２通信メッセージを受信するステップと、
前記対称鍵により前記暗号化第２通信メッセージを復号して、第２通信メッセージにするステップと、
を更に含んでよい。
【００４５】
本開示は、複数のノードの間でオンライントランザクションを実行する方法であって、前記方法は、
上述の方法により、第１共通シークレットを決定するステップと、
前記第１共通シークレットに基づき対称鍵を決定するステップと、
前記対称鍵により第１トランザクションメッセージを暗号化して、暗号化第１トランザクションメッセージにするステップと、
通信ネットワークを介して、前記複数のノードのうちの第１ノードから前記複数のノードのうちの他のノードへ、前記暗号化第１トランザクションメッセージを送信するステップと、
を含む方法を更に提供し得る。
【００４６】
本開示は、プロセッサと、プロセッサによる実行の結果として、システムに本願明細書に記載のコンピュータにより実施される方法のいずれかの実施形態を実行させる実行可能命令を含むメモリと、を含むシステムも提供する。
【００４７】
本開示は、実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、少なくとも、前記コンピュータシステムに、本願明細書に記載のコンピュータにより実施される方法を実行させる、非一時的コンピュータ可読記憶媒体も提供する。
【００４８】
本開示のこれらの及び他の態様は、本願明細書に記載の実施形態から明らかであり及びそれらを参照して教示される。
【図面の簡単な説明】
【００４９】
本開示の実施形態は、単なる例を用いて及び添付の図面を参照して以下に説明される。
【図１】第１ノード及び第２ノードの共通シークレットを決定するための例示的なシステムの概略図である。
【図２】共通シークレットを決定する、コンピュータにより実施される方法のフローチャートである。
【図３】第１及び第２ノードを登録する、コンピュータにより実施される方法のフローチャートである。
【図４】共通シークレットを決定する、コンピュータにより実施される方法の別のフローチャートである。
【図５】第１及び第２ノードの間のセキュアな通信の、コンピュータにより実施される方法のフローチャートである。
【図６】第１ノード及び第２ノードを認証する、コンピュータにより実施される方法のフローチャートである。
【図７】３つのノードの間で共通シークレットを共有する、本開示を実現する方法を示す図である。
【図８】図７の方法のフローチャートである。
【図９】本開示を実現する方法において、第１共通シークレットを復元するＢｅｒｌｅｋａｍｐ−Ｗｅｌｃｈデコーダを示す。
【図１０】４つのノードの間で共通シークレットを共有する、本開示を実現する方法のフローチャートである。
【図１１】種々の実施形態が実装できるコンピューティング環境を示す概略図である。
【発明を実施するための形態】
【００５０】
＜概要＞
最初に、第１ノード（Ｃ）において、第２ノード（Ｓ）におけるものと同じ共通シークレットである共通シークレット（ＣＳ）を決定する方法、装置、及びシステムが記載される。これは、ノードのペアの間で第２共通シークレットを決定するために使用され、次に、図７及び８を参照して以下に詳述されるように、３以上のノードを含む複数のノードの間で第１共通シークレットを共有するために使用される。図１は、通信ネットワーク５を介して、第２ノード７と通信する第１ノード３を含むシステム１を示す。第１ノード３は、関連する第１処理装置２３を有し、第２ノード５は、関連する第２処理装置２７を有する。第１及び第２ノード３、７は、コンピュータ、タブレットコンピュータ、モバイル通信装置、コンピュータサーバ、等のような電子装置を含んでよい。一例では、第１ノード３はクライアント装置であってよく、第２ノード７はサーバである。
【００５１】
第１ノード３は、第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードのマスタ公開鍵（Ｐ１Ｃ）を有する第１非対称暗号ペアと関連付けられる。第２ノード（７）は、第２ノードのマスタ秘密鍵（Ｖ１Ｓ）及び第２ノードのマスタ公開鍵（Ｐ１Ｓ）を有する第２非対称暗号ペアと関連付けられる。第１及び第２ノード３、７のそれぞれの第１及び第２非対称暗号ペアは、登録（registration）中に生成されてよい。第１及び第２ノード３、７により実行される登録の方法１００、２００は、図３を参照して更詳細に後述される。各ノードの公開鍵は、例えば通信ネットワーク５を介して、公に共有されてよい。
【００５２】
第１ノード３及び第２ノード７の両方で共通シークレット（ＣＳ）を決定するために、ノード３、７は、通信ネットワーク５を介して秘密鍵を通信することなく、それぞれの方法３００、４００のステップを実行する。
【００５３】
第１ノード３で実行される方法３００は、少なくとも第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び決定性鍵（ＤＫ）に基づき第１ノードの第２秘密鍵（Ｖ２Ｃ）を決定するステップ３２０を含む。決定性鍵（deterministic  key）は、第１及び第２ノードの間で共有されるメッセージ（Ｍ）に基づいてよい。これは、以下に更に詳述するように、通信ネットワーク５を介してメッセージを共有することを含んでよい。方法３００は、少なくとも第２ノードのマスタ公開鍵（Ｐ１Ｓ）及び決定性鍵（ＤＫ）に基づき第２ノードの第２公開鍵（Ｐ２Ｓ）を決定するステップ３７０も含む。方法３００は、第１ノードの第２秘密鍵（Ｖ２Ｃ）及び第２ノードの第２公開鍵（Ｐ２Ｓ）に基づき共通シークレット（ＣＳ）を決定するステップ３８０を含む。
【００５４】
重要なことに、同じ共通シークレット（ＣＳ）が、方法４００により第２ノード７においても決定できる。方法４００は、第１ノードのマスタ公開鍵（Ｐ１Ｃ）及び決定性鍵（ＤＫ）に基づき第１ノードの第２公開鍵（Ｐ２Ｃ）を決定するステップ４３０を含む。方法４００は、第２ノードのマスタ秘密鍵（Ｖ１S）及び決定性鍵（ＤＫ）に基づき第２ノードの第２秘密鍵（Ｖ２Ｓ）を決定するステップ４７０も含む。方法４００は、第２ノードの第２秘密鍵（Ｖ２Ｓ）及び第１ノードの第２公開鍵（Ｐ２Ｃ）に基づき共通シークレット（ＣＳ）を決定するステップ４８０を含む。
【００５５】
通信ネットワーク５は、ローカルエリアネットワーク、ワイドエリアネットワーク、セルラネットワーク、無線通信ネットワーク、インターネット、等を含んでよい。
【００５６】
これらのネットワークでは、データが電線、光ファイバ、又は無線のような通信媒体を介して伝送されてよく、盗聴者によるような盗聴を受ける可能性がある。
【００５７】
方法３００、４００は、通信ネットワーク５を介して共通シークレットを送信することなく、第１ノード３及び第２ノード７両方とも独立に共通シークレットを決定できるようにし得る。従って、１つの利点は、セキュアでない可能性のある通信ネットワーク５を介して秘密鍵を送信する必要を有しないで、共通シークレット（ＣＳ）が、各ノードによりセキュアに決定され得ることである。また、共通シークレットは、通信ネットワーク５を介する第１ノード及び第２ノード３、７の間の暗号化通信のためのシークレット鍵として（又はシークレット鍵の基礎として）使用され得る。
【００５８】
方法３００、４００は、追加ステップを含んでよい。方法３００は、第１ノード３において、メッセージ（Ｍ）及び第１ノードの第２秘密鍵（Ｖ２Ｃ）に基づき、署名付きメッセージ（ＳＭ１）を生成するステップを含んでよい。方法３００は、通信ネットワークを介して、第２ノード７へ、第１署名付きメッセージ（ＳＭ１）を送信するステップ３６０を更に含む。また、第２ノード７は、第１署名付きメッセージ（ＳＭ１）を受信するステップ４４０を実行してよい。方法４００は、第１ノードの第２公開鍵（Ｐ２Ｃ）により第１署名付きメッセージ（ＳＭ１）を検証するステップ４５０と、第１署名付きメッセージ（ＳＭ１）を検証して結果に基づき、第１ノード３を認証するステップ４６０と、を更に含む。有利なことに、これは、第２ノード７が、自称（purported）第１ノード（第１署名付きメッセージが生成された場所）が第１ノード３であることを認証することを可能にする。
【００５９】
これは、第１ノード３のみが第１ノードのマスタ秘密鍵（Ｖ１Ｃ）へのアクセスを有し、従って、第１ノード３のみが第１署名付きメッセージ（ＳＭ１）を生成するための第１ノードの第２秘密鍵（Ｖ２Ｃ）を決定できるという前提に基づく。理解されるべきことに、第２署名付きメッセージ（ＳＭ２）は、第２ノード７において生成され、第１ノード３へ送信され得る。その結果、ピアツーピアシナリオのおけるように、第１ノード３は第２ノード７を認証できる。
【００６０】
第１及び第２ノードの間でメッセージ（Ｍ）を共有することは、種々の方法で達成されてよい。一例では、メッセージは、第１ノード３において生成されてよく、次に、通信ネットワーク５を介して第２ノード７へ送信される。代替として、メッセージは、第２ノード７において生成されてよく、次に、通信ネットワーク５を介して第２ノード７へ送信される。更に別の例では、メッセージは、第３ノード９において生成されてよく、メッセージは第１及び第２ノード３、７の両方へ送信される。更に別の例では、ユーザは、ユーザインタフェースを通じて、第１及び第２ノード３、７により受信されるべきメッセージを入力してよい。更に別の例では、メッセージ（Ｍ）は、データストア１９から読み出されてよく、第１及び第２ノード３、７の両方へ送信される。幾つかの例では、メッセージ（Ｍ）は、公にされてよく、従ってセキュアでないネットワーク５を介して送信されてよい。
【００６１】
更なる例では、１つ以上のメッセージ（Ｍ）が、データストア１３、１７、１９に格納されてよく、メッセージは、第１ノード３と第２ノード７との間のセッション、トランザクション、等に関連付けられてよい。従って、メッセージ（Ｍ）は、それぞれ第１ノード３及び第２ノード７において読み出され、該セッション又はトランザクションに関連付けられた共通シークレット（ＣＳ）を再生成するために使用されてよい。有利なことに、共通シークレット（ＣＳ）の再生成を可能にするためのレコードが保持されてよく、該レコード自体が秘密に格納され又はセキュアに送信される必要はない。これは、多数のトランザクションが第１ノード３及び第２ノード７において実行され、ノード自体に全部のメッセージ（Ｍ）を格納することが実用的でない場合に有利である。
【００６２】
＜登録方法１００、２００＞
登録方法１００、２００の例は、図３を参照して説明される。ここで、方法１００は第１ノード３により実行され、方法２００ｈじゃ第２ノード７により実行される。これは、それぞれの第１ノード３及び第２ノード７について、第１及び第２非対称暗号ペアを確立するステップを含む。
【００６３】
非対称暗号ペアは、公開鍵暗号化で使用されるような、関連付けられた秘密鍵及び公開鍵を含む。本例では、非対称暗号ペアは、楕円曲線暗号（ＥＣＣ）及び楕円曲線演算の特性を用いて生成される。
【００６４】
ＥＣＣについての標準は、Standards  for  Efficient  Cryptography  Group  (www.sceg.org)により策定されたもののような知られている標準を含んでよい。
【００６５】
楕円曲線暗号は、ＵＳ５,６００,７２５、ＵＳ５,７６１,３０５、ＵＳ５８８９,８６５、ＵＳ５,８９６,４５５、ＵＳ５,９３３,５０４、ＵＳ６,１２２,７３６、ＵＳ６,１４１,４２０、ＵＳ６,６１８,４８３、ＵＳ６,７０４,８７０、ＵＳ６,７８５,８１３、ＵＳ６,０７８,６６７、ＵＳ６,７９２,５３０にも記載されている。
【００６６】
方法１００、２００では、これは、第１ノード及び第２ノードが、共通ＥＣＣシステム及び共通生成元（Ｇ、common  generatorを使用することを決定するステップ１１０、２１０を含む。一例では、共通ＥＣＣシステムは、Ｂｉｔｃｏｉｎにより使用されるＥＣＣシステムであるｓｅｃｐ２５６Ｋ１に基づいてよい。共通生成元（Ｇ）は、選択され、ランダムに生成され、又は割り当てられてよい。
【００６７】
第１ノード３を参照すると、方法１００は、共通ＥＣＣシステム及び共通生成元（Ｇ）を決定するステップ１１０を含む。これは、第２ノード７又は第３ノード９から、共通ＥＣＣシステム及び共通生成元を受信するステップを含んでよい。代替として、ユーザインタフェース１５は、第１ノード３に関連付けられてよく、それにより、ユーザは、共通ＥＣＣシステム及び／又は共通生成元（Ｇ）を選択的に提供してよい。また別の代替では、ＥＣＣシステム及び／又は共通生成元（Ｇ）の一方又は両方は、第１ノード３によりランダムに選択されてよい。第１ノード３は、通信ネットワーク５を介して、共通ＥＣＣシステムを共通生成元（Ｇ）と共に使用することを示す通知を第２ノード７へ送信してよい。また、第２ノード７は、共通ＥＣＣシステム及び共通生成元（Ｇ）を使用することの肯定応答を示す通知を送信することにより、決定してよい２１０。
【００６８】
方法１００は、第１ノード３が、第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードのマスタ公開鍵（Ｐ１Ｃ）を有する第１非対称暗号ペアを生成するステップ１２０を更に含む。これは、少なくとも部分的に、共通ＥＣＣシステムで指定された許容範囲内のランダムな整数に基づき、第１ノードのマスタ秘密鍵（Ｖ１Ｃ）を生成するステップを含む。これは、次式に従い、第１ノードのマスタ秘密鍵（Ｖ１Ｃ）と共通生成元（Ｇ）との楕円曲線点積に基づき、第１ノードのマスタ公開鍵（Ｐ１Ｃ）を決定するステップを更に含む。
【００６９】
【数１】
2022500920.tif 000003
従って、第１非対称暗号ペアは以下を含む。
【００７０】
Ｖ１Ｃ：第１ノードにより秘密に保持される第１ノードのマスタ秘密鍵。
【００７１】
Ｐ１Ｃ：公に知られるようにされた第１ノードのマスタ公開鍵。
【００７２】
第１ノード３は、第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードのマスタ公開鍵（Ｐ１Ｃ）を、第１ノード３に関連付けられた第１データストア１３に格納してよい。セキュリティのために、第１ノードのマスタ秘密鍵（Ｖ１Ｃ）は、鍵田秘密のままであることを保証するために、第１データストア１３のセキュアな部分に格納されてよい。
【００７３】
方法１００は、通信ネットワーク５を介して、第２ノード７へ、第１ノードのマスタ公開鍵（Ｐ１Ｃ）を送信するステップ１３０を更に含む。第２ノード７は、第１ノードのマスタ公開鍵（Ｐ１Ｃ）を受信すると２２０、第１ノードのマスタ公開鍵（Ｐ１Ｃ）を、第２ノード７に関連付けられた第２データストア１７に格納してよい２３０。
【００７４】
第１ノード３と同様に、第２ノード７の方法２００は、第２ノードのマスタ秘密鍵（Ｖ１Ｓ）及び第２ノードのマスタ公開鍵（Ｐ１Ｓ）を有する第２非対称暗号ペアを生成するステップ２４０を含む。第２ノードのマスタ秘密鍵（Ｖ１Ｓ）は、また、許容範囲内のランダムな整数である。また、第２ノードのマスタ公開鍵（Ｐ１Ｓ）は、次式により決定される。
【００７５】
【数２】
2022500920.tif 000004
従って、第２非対称暗号ペアは以下を含む。
【００７６】
Ｖ１Ｓ：第２ノードにより秘密に保持される第２ノードのマスタ秘密鍵。
【００７７】
Ｐ１Ｓ：公に知られるようにされた第２ノードのマスタ公開鍵。
【００７８】
第２ノード７は、第２非対称暗号ペアを第２データストア１７に格納してよい。方法２００は、第１ノード３へ、第２ノードのマスタ公開鍵（Ｐ１Ｓ）を送信するステップ２５０を更に含む。また、第１ノード３は、第２ノードのマスタ公開鍵（Ｐ１Ｓ）を受信し１４０、格納してよい１５０。
【００７９】
理解されるべきことに、幾つかの代替では、それぞれの公開マスタ鍵は、受信され、（信頼できる第三者のような）第３ノード９に関連付けられた第３データストア１９に格納される。これは、証明機関のようなパブリックディレクトリとして動作する第三者を含んでよい。従って、幾つかの例では、共通シークレット（ＣＳ）を決定することが必要なときにのみ、第１ノードのマスタ公開鍵（Ｐ１Ｃ）は、第２ノード７により要求され受信されてよい（逆も同様である）。
【００８０】
登録ステップは、初期設定として１回生じる必要があるだけである。後に、マスタ鍵は、特に決定性鍵（ＤＫ）に依存する共通シークレットを生成するために、安全の問題で再利用できる。
【００８１】
＜セッション開始、及び第１ノード３による共通シークレットの決定＞
共通シークレット（ＣＳ）を決定する例は、図４を参照して以下に記載される。共通シークレット（ＣＳ）は、特定のセッション、時間、トランザクション、又は他の目的で、第１ノード３と第２ノード７との間で使用されてよく、同じ共通シークレット（ＣＳ）を使用することは望ましくなく又は安全ではない可能性がある。従って、共通シークレット（ＣＳ）は、異なるセッション、時間、トランザクション等の間で変更されてよい。
【００８２】
＜メッセージ（Ｍ）の生成３１０＞
本例では、第１ノード３により実行される方法３００は、メッセージ（Ｍ）を生成するステップ３１０を含む。メッセージ（Ｍ）は、ランダム、疑似ランダム、又はユーザにより定義されてよい。一例では、メッセージ（Ｍ）は、Ｕｎｉｘ時間及びノンス（及び任意の値）に基づく。例えば、メッセージ（Ｍ）は以下のように提供されてよい。
【００８３】
【数３】
2022500920.tif 000005
幾つかの例では、メッセージ（Ｍ）は任意である。しかしながら、メッセージ（Ｍ）が、幾つかの用途において有用であり得る（Ｕｎｉｘ時間のような）選択的な値を有してよいことが理解されるべきである。
【００８４】
方法３００は、通信ネットワークを介して、第２ノード７へ、メッセージ（Ｍ）を送信するステップ３１５を含む。メッセージ（Ｍ）は秘密鍵に関する情報を含まないので、メッセージ（Ｍ）は、セキュアでないネットワークを介して送信されてよい。
【００８５】
＜決定性鍵の決定３２０＞
方法３００は、メッセージ（Ｍ）に基づき、決定性鍵（ＤＫ）を決定するステップ３２０を更に含む。本例では、これは、メッセージの暗号ハッシュを決定するステップを含む。
【００８６】
暗号ハッシュアルゴリズムの例は、２５６ビットの決定性鍵（ＤＫ）を生成するためのＳＨＡ−２５６を含む。つまり：
【００８７】
【数４】
2022500920.tif 000006
理解されるべきことに、他のハッシュアルゴリズムが使用されてよい。これは、セキュアハッシュアルゴリズム（Secure  Hash  Algorithm  (SHA)）ファミリの中のアルゴリズムを有する。幾つかの特定の例は、ＳＨＡ３−２２４、ＳＨＡ３−２５６、ＳＨＡ３−３８４、ＳＨＡ３−５１２、ＳＨＡＫＥ１２８、ＳＨＫＥ２５６を含むＳＨＡ−３サブセットの中のインスタンスを含む。他のハッシュアルゴリズムは、ＲＩＰＥＭＤ（RACE  Integrity  Primitives  Evaluation  Message  Digest）ファミリの中のアルゴリズムを含んでよい。特定の例は、ＲＩＰＥＭＤ−１６０を含んでよい。他のハッシュアルゴリズムは、Ｚｅｍｏｒ−Ｔｉｌｌｉｃｈハッシュ関数及びナップサックに基づくハッシュ関数に基づくファミリを含んでよい。
【００８８】
＜第１ノードの第２秘密鍵の決定３３０＞
方法３００は、次に、第２ノードのマスタ秘密鍵（Ｖ１Ｃ）及び決定性鍵（ＤＫ）に基づき第１ノードの第２秘密鍵（Ｖ２Ｃ）を決定するステップ３３０を含む。
【００８９】
これは、次式に従う、第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び決定性鍵（ＤＫ）のスカラー加算に基づき得る。
【００９０】
【数５】
2022500920.tif 000007
従って、第１ノードの第２秘密鍵（Ｖ２Ｃ）は、ランダム値ではないが、代わりに、第１ノードのマスタ秘密鍵から決定的に導出される。暗号ペアの中の対応する公開鍵、つまり第１ノードの第２公開鍵（Ｐ２Ｃ）は、以下の関係を有する。
【００９１】
【数６】
2022500920.tif 000008
式５からのＶ２Ｃを式６に代入すると、
【００９２】
【数７】
2022500920.tif 000009
ここで、「＋」演算子はスカラー加算を表し、「×」演算子は楕円曲線点乗算を表す。
【００９３】
楕円曲線暗号代数学は分配的であることに留意して、式７は以下のように表される。
【００９４】
【数８】
2022500920.tif 000010
最後に、式１が式７に代入されて、以下を与える。
【００９５】
【数９】
2022500920.tif 000011
式８〜９．２で、「＋」演算子は、楕円曲線点加算を表す。従って、対応する第１ノードの第２公開鍵（Ｐ２Ｃ）は、第１ノードのマスタ公開鍵（Ｐ１Ｃ）及びメッセージ（Ｍ）の知識が与えられると、導出可能であり得る。方法４００に関して以下に更に詳述するように、第２ノード７は、第１ノードの第２公開鍵（Ｐ２Ｃ）を独立に決定するために、このような知識を有してよい。
【００９６】
＜メッセージ及び第１ノードの第２秘密鍵に基づく第１署名付きメッセージ（ＳＭ１）の生成３５０＞
方法３００は、メッセージ（Ｍ）及び決定した第１ノードの第２秘密鍵（Ｖ２Ｃ）に基づき、第１署名付きメッセージ（ＳＭ１）を生成するステップ３５０を更に含む。署名付きメッセージを生成するステップは、メッセージ（Ｍ）にデジタル方式で署名するために、デジタル署名アルゴリズムを適用するステップを含む。一例では、これは、第１署名付きメッセージ（ＳＭ１）を取得するために、第１ノードの第２秘密鍵（Ｖ２Ｃ）を、楕円曲線デジタル署名アルゴリズム（Elliptic  Curve  Digital  Signature  Algorithm  (ECDSA)）においてメッセージに適用するステップを含む。
【００９７】
ＥＣＤＳＡの例は、ｓｅｃｐ２５６ｋ１、ｓｅｃｐ２５６ｒ１、ｓｅｃｐ３８４ｒ１、ｓｅ３ｃｐ５２１ｒ１を有するＥＣＣシステムに基づくものを含む。
【００９８】
第１署名付きメッセージ（ＳＭ１）は、第２ノード７において、第１ノードの第２公開鍵（Ｐ２Ｃ）により検証できる。第１署名付きメッセージ（ＳＭ１）のこの検証は、第１ノード３を認証するために、第２ノード７により使用されてよい。これは、以下の方法４００で議論される。
【００９９】
＜第２ノードの第２公開鍵の決定３７０’＞
第１ノード３は、次に、第２ノードの第２公開鍵（Ｐ２Ｓ）を決定してよい３７０。上述のように、第２ノードの第２公開鍵（Ｐ２Ｓ）は、第２ノードのマスタ公開鍵（Ｐ１Ｓ）及び決定性鍵（ＤＫ）に基づき決定されてよい。本例では、公開鍵は、秘密鍵と生成元（Ｇ）との楕円曲線点積により決定されるので３７０’、第２ノードの第２公開鍵（Ｐ２Ｓ）は、式６と同様に、次式により表すことができる。
【０１００】
【数１０】
2022500920.tif 000012
式１０．２の数学的証明は、第１ノードの第２公開鍵（Ｐ２Ｃ）について式９．１を導出するために上述したのと同じである。第１ノード３は、第２ノード７と独立に、第２ノードの第２公開鍵を決定できる３７０。
【０１０１】
＜第１ノード３における共通シークレット３８０の決定＞
第１ノード３は、決定した第１ノードの第２秘密鍵（Ｖ２Ｃ）及び決定した第２ノードの第２公開鍵（Ｐ２Ｓ）に基づき共通シークレット（ＣＳ）を決定してよい３８０。共通シークレット（ＣＳ）は、次式により第１ノード３により決定されてよい。
【０１０２】
【数１１】
2022500920.tif 000013
＜第２ノード７において実行される方法４００＞
第２ノード７において実行される対応する方法４００が以下に説明される。理解されるべきことに、これらのステップのうちの幾つかは、第１ノード３により実行された上述のステップと同様である。
【０１０３】
方法４００は、通信ネットワーク５を介して、第１ノード３から、メッセージ（Ｍ）を受信するステップ４１０を含む。これは、ステップ３１５において第１ノード３により送信されたメッセージ（Ｍ）を含んでよい。第２ノード７は、次に、メッセージ（Ｍ）に基づき、決定性鍵（ＤＫ）を決定する４２０。第２ノード７により決定性鍵（ＤＫ）を決定するステップ４２０は、第１ノードにより実行される上述のステップ３２０と同様である。本例では、第２ノード７は、第１ノード３と独立である、この決定するステップを実行する。
【０１０４】
次のステップは、第１ノードのマスタ公開鍵（Ｐ１Ｃ）及び決定性鍵（ＤＫ）に基づき第１ノードの第２公開鍵（Ｐ２Ｃ）を決定するステップ４３０を含む。本例では、公開鍵は、秘密鍵と生成元（Ｇ）との楕円曲線点積により決定されるので４３０’、第１ノードの第２公開鍵（Ｐ２Ｃ）は、式９と同様に、次式により表すことができる。
【０１０５】
【数１２】
2022500920.tif 000014
式１２．１及び１２．２の数学的証明は、式１０．１及び１０．２について上述したものと同じである。
【０１０６】
＜第２ノード７が第１ノード３を認証する＞
方法４００は、自称第１ノード３が第１ノード３であることを認証するために、第２ノード７により実行されるステップを含んでよい。上述のように、これは、第１ノード３から第１署名付きメッセージ（ＳＭ１）を受信するステップ４４０を含む。第２ノード７は、ステップ４３０で決定された第１ノードの第２公開鍵（Ｐ２Ｃ）により、第１署名付きメッセージ（ＳＭ１）上の署名を検証してよい４５０。
【０１０７】
デジタル署名の検証は、上述のように楕円曲線デジタル署名アルゴリズム（ＥＣＤＳＡ）に従い行われてよい。重要なことに、Ｖ２Ｃ及びＰ２Ｃは暗号ペアを形成するので、第１ノードの第２秘密鍵（Ｖ２Ｃ）により署名された第１署名付きメッセージ（ＳＭ１）は、対応する第１ノードの第２公開鍵（Ｐ２Ｃ）によってよみ正しく検証されるべきである。これらの鍵は、第１ノード３の登録の際に生成された第１ノードのマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードのマスタ公開鍵（Ｐ１Ｃ）の上で確定するので、第１署名付きメッセージ（ＳＭ１）の検証は、第１署名付きメッセージ（ＳＭ１）を送信している自称第１ノードが登録中と同じ第１ノード３であることを認証する基礎として使用できる。従って、第２ノード７は、第１署名付きメッセージを検証するステップ（４５０）の結果に基づき、第１ノード３を認証するステップ（４６０）を更に実行してよい。
【０１０８】
上述の認証は、２つのノードのうちの１つが信頼できるノードであり、これらのノードのうちの１つのみが認証される必要があるシナリオに適してよい。例えば、第１ノード３はクライアントであってよく、第２ノード７はクライアントにより信頼されるサーバであってよい。従って、サーバ（第２ノード７）は、クライアントがサーバシステムにアクセスするのを許可するために、クライアント（第１ノード３）の認証情報（credentials）を認証する必要があってよい。サーバは、クライアントにサーバの認証情報を認証される必要がなくてよい。しかしながら、幾つかのシナリオでは、別の例において後述するように、ピアツーピアシナリオにおけるように、両方のノードが互いに認証されることが望ましい場合がある。
【０１０９】
＜第２ノード７が共通シークレットを決定する＞
方法４００は、第２ノード７が、第２ノードのマスタ秘密鍵（Ｖ１Ｓ）及び決定性鍵（ＤＫ）に基づき第２ノードの第２秘密鍵（Ｖ２Ｓ）を決定するステップ４７０を更に含んでよい。第１ノード３により実行されるステップ３３０と同様に、第２ノードの第２秘密鍵（Ｖ２Ｓ）は、次式に従う、第２ノードのマスタ秘密鍵（Ｖ１Ｓ）及び決定性鍵（ＤＫ）のスカラー加算に基づくことができる。
【０１１０】
【数１３】
2022500920.tif 000015
第２ノード７は、次に、第１ノード３と独立に、次式に基づき、第２ノードの第２秘密鍵（Ｖ２Ｓ）及び決定した第２ノードの第２公開鍵（Ｐ２Ｃ）に基づき共通シークレット（ＣＳ）を決定してよい４８０。
【０１１１】
【数１４】
2022500920.tif 000016
＜第１ノード３及び第２ノード７により決定される共通シークレット（ＣＳ）の証明＞
第１ノード３により決定された共通シークレット（ＣＳ）は、第２ノード７により決定された共通シークレット（ＣＳ）と同じである。式１１及び式１４が同じ共通シークレット（ＣＳ）であることの数学的証明が以下に説明される。
【０１１２】
第１ノード３により決定された共通シークレット（ＣＳ）を考えると、以下のように式１０．１は式１１に代入できる。
【０１１３】
【数１５】
2022500920.tif 000017
第２ノード７により決定された共通シークレット（ＣＳ）を考えると、以下のように式１２．１は式１４に代入できる。
【０１１４】
【数１６】
2022500920.tif 000018
ＥＣＣ代数学は可換性なので、式１５及び式１６は等価である：
【０１１５】
【数１７】
2022500920.tif 000019
＜共通シークレット（ＣＳ）及びシークレット鍵＞
共通シークレット（ＣＳ）は、第１ノード３と第２ノード７との間のセキュアな通信のために対称鍵アルゴリズムの中でシークレット鍵として又はシークレット鍵の基礎として使用されてよい。
【０１１６】
共通シークレット（ＣＳ）は、楕円曲線点（ｘＳ，ｙＳ）の形式であってよい。これは、ノード３、７により合意された標準的な公に知られている演算を用いて標準的な鍵フォーマットに変換されてよい。例えば、ｘＳ値は、ＡＥＳ２５６暗号化の鍵として使用され得る２５６ビットの整数であってよい。それは、１６０ビットの長さの鍵を必要とする任意の用途のためにＲＩＰＥＭＤ１６０を用いて、１６０ビットの整数に更に変換され得る。
【０１１７】
共通シークレット（ＣＳ）は、必要に応じて決定されてよい。重要なことに、共通シークレット（ＣＳ）はメッセージ（Ｍ）に基づき再決定できるので、第１ノード３は、共通シークレット（ＣＳ）を格納する必要がない。幾つかの例では、使用されるメッセージ（Ｍ）は、マスタ秘密鍵について要求されるのと同じレベルのセキュリティを有することなく、データストア１３、１７、１９（又は他のデータストア）に格納されてよい。幾つかの例では、メッセージ（Ｍ）は公に利用可能であってよい。
【０１１８】
しかしながら、幾つかの用途に依存して、共通シークレット（ＣＳ）が第１ノードのマスタ秘密鍵（Ｖ１Ｃ）と同じようにセキュアに保たれるならば、共通シークレット（ＣＳ）は、第１ノードに関連付けられた第１データストア（Ｘ）に格納され得る。
【０１１９】
更に、開示のシステムは、単一のマスタ鍵暗号ペアに基づき、複数のセキュアなシークレット鍵に対応してよい複数の共通シークレットの決定を可能にし得る。この利点は、以下の例により説明され得る。
【０１２０】
複数のセッションが存在し、それぞれが複数のそれぞれの共通シークレット（ＣＳ）に関連付けられる状況では、これらの複数のセッションに関連付けられたレコードを有し、それぞれの共通シークレット（ＣＳ）が将来に再決定できるようにすることが望ましい場合がある。知られているシステムでは、これは、複数のシークレット鍵をセキュアなデータストアに格納する必要があり、これは高価であり又は保守するのに不便である場合がある。
【０１２１】
これに対して、本発明のシステムは、第１及び第２ノードにおいてマスタ鍵をセキュアに保つと同時に、他の決定性鍵又はメッセージはセキュアに又は非セキュアに格納されてよい。決定性鍵（ＤＫ）、又はメッセージ（Ｍ）が非セキュアに格納される代わりに、共通シークレットを決定するために必要なマスタ秘密鍵はセキュアなままなので、複数の共通シークレット（ＣＳ）はセキュアに保たれる。
【０１２２】
方法は、例えばログインパスワードをセキュアに送信するために、一時的な通信リンクのための「セッション鍵」を生成するために使用されてもよい。
【０１２３】
＜ピアツーピア認証＞
ピアツーピアシナリオでは、第１ノード３及び第２ノード７は、互いの認証情報を認証する必要があってよい。この例は、図６を参照して以下に記載される。本例では、検証された第１署名付きメッセージ（ＳＭ１）に基づき第１ノード３を認証するための方法３００、４００のステップは、上述のものと同様である。
【０１２４】
しかしながら、第２ノード７により実行される方法４００は、メッセージ（Ｍ）及び第２ノードの秘密鍵（Ｖ２Ｓ）に基づき、第２署名付きメッセージ（ＳＭ２）を生成するステップ４６２を更に含む。幾つかの代替では、第２署名付きメッセージ（ＳＭ２）は、第２メッセージ（Ｍ２）及び第２ノードの秘密鍵（Ｖ２Ｓ）に基づいてよく、第２メッセージ（Ｍ２）は第１ノード３と共有される。方法４００は、通信ネットワーク５を介して、第１ノード３へ、第２署名付きメッセージ（ＳＭ２）を送信するステップ４６４を更に含む。
【０１２５】
第１ノード３で、方法３００は、第２ノード７から第２署名付きメッセージ（ＳＭ２）を受信するステップを含む。方法は、ステップ３７０で決定された第２ノードの第２公開鍵（Ｐ２Ｓ）により、第２署名付きメッセージ（ＳＭ２）上の署名を検証するステップ３７４を含む。方法３００は、次に、第２署名付きメッセージ（ＳＭ２）を検証した結果に基づき、第２ノード７を認証するステップ３７６を含んでよい。この結果、第１ノード３及び第２ノード７が互いに認証する。
【０１２６】
＜決定性鍵の階層構造＞
一例では、連続的な決定性鍵のシリーズが決定されてよく、各連続する鍵は、先行する決定性鍵に基づき決定されてよい。
【０１２７】
例えば、連続的な単一目的の鍵を生成するためにステップ３１０〜３７０及び４１０〜４７０を繰り返す代わりに、ノード間の事前合意により、決定性鍵の階層構造を構築するために、両方のパーティにより、前に使用された決定性鍵（ＤＫ）が繰り返し再ハッシングされ得る。事実上、メッセージ（Ｍ）のハッシュに基づく決定性鍵は、次世代の決定性鍵（ＤＫ’）のための次世代のメッセージ（Ｍ’）であり得る。これを行うことは、共通シークレットの連続的な生成が、更なるプロトコルにより確立される送信、特に共通シークレットの各世代のための複数のメッセージの送信を必要とすることなく計算できるようにする。次世代の共通シークレット（ＣＳ’）は、以下のように計算できる。
【０１２８】
先ず、第１ノード３及び第２ノード７の両方は、次世代の決定性鍵（ＤＫ’）を独立に決定する。これは、ステップ３２０及び４２０と同様であるが、以下の式により適応される。
【０１２９】
【数１８】
2022500920.tif 000020
第１ノード３は、次に、上述のステップ３７０及び３３０と同様であるが、次式により適応されて、次世代の第２ノードの第２公開鍵（Ｐ２Ｓ’）及び第１ノードの第２秘密鍵（Ｖ２Ｃ’）を決定してよい。
【０１３０】
【数１９】
2022500920.tif 000021
第２ノード７は、次に、上述のステップ４３０及び４７０と同様であるが、次式により適応されて、次世代の第１ノードの第２公開鍵（Ｐ２Ｃ’）及び第２ノードの第２秘密鍵（Ｖ２Ｓ’）を決定してよい。
【０１３１】
【数２０】
2022500920.tif 000022
第１ノード３及び第２ノード７は、次に、それぞれ、次世代の共通シークレット（ＣＳ’）を決定してよい。特に、第１ノード３は、次世代の共通シークレット（ＣＳ’）を次式により決定する。
【０１３２】
【数２１】
2022500920.tif 000023
第２ノード７は、次世代の共通シークレット（ＣＳ’）を次式により決定する。
【０１３３】
【数２２】
2022500920.tif 000024
更なる世代（ＣＳ’’、ＣＳ’’’、等）は同じ方法で計算でき、チェーン階層構造を生成する。
【０１３４】
この技術は、第１ノード３及び第２ノード７の両方が、元のメッセージ（Ｍ）又は最初に計算された決定性鍵（ＤＫ）、及びそれがどのノードに関連するか、を追跡することを要求する。これは公に知られた情報なので、この情報の保持に関してセキュリティ問題は存在しない。従って、この情報は、（ハッシュ値を公開鍵にリンクする）「ハッシュテーブル」に保持され、（例えばＴｏｒｒｅｎｔを用いて）ネットワーク５に渡り自由に分配されてよい。更に、階層構造の中のいずれの個々の共通シークレット（ＣＳ）も危険に晒されない場合、これは、秘密鍵Ｖ１Ｃ、Ｖ１Ｓがセキュアなままであるならば、階層構造の中の任意の他の共通シークレットのセキュリティに影響を与えない。
【０１３５】
＜鍵の木構造＞
上述のようなチェーン（線形）階層構造と同様に、木構造の形式の階層構造を生成できる。
【０１３６】
木構造によると、認証鍵、暗号鍵、署名鍵、支払い鍵、等のような異なる目的のための種々の鍵が、決定できる。それにより、これらの鍵は全部、単一のセキュアに維持されるマスタ鍵にリンクされる。
【０１３７】
＜実施形態の説明＞
図７は、３つのノードＡ、Ｂ、Ｃの間で第１共通シークレットを共有するための、本開示を実現する方法を示し、図８は当該方法のフローチャートを示す。各ノードＡ、Ｂ、Ｃは、それ自体の秘密鍵／公開鍵ペア（Ｓ，Ｐ）に関連付けられ、例えばノードＡの秘密鍵、公開鍵ペアは（ＳＡ，ＰＡ）である。各々の秘密鍵又は公開鍵は、図１〜６を参照して上述したのと同様の方法で、該ノードのそれぞれのマスタ秘密鍵又はマスタ公開鍵と決定性鍵とから導出されてよい。秘密−公開鍵ペアは、楕円曲線暗号システムの鍵ペアである。例えば、ＰＡ＝ＳＡ×Ｇ、Ｇは楕円曲線基準点（generator  point）である。、
ノードＡとＢ、ＡとＣ、ＢとＣの各ペアの間のセキュアな通信は、図８のステップ８０で、図１〜６を参照して上述した方法を用いてノードの各ペアの間の第２の共通シークレットを決定することにより、確立される。図７に示す構成では、以下の関係が適用される。
【０１３８】
【数２３】
2022500920.tif 000025
ノードＡ、Ｂ、Ｃの間で共有されるべき第１共通シークレットは、次の通りである。
【０１３９】
【数２４】
2022500920.tif 000026
セキュアな通信チャネルがノードの各ペアの間で確立されると、図８のステップ８２で、各ノードは、該ノードに知られている第２シークレットの結合の形式で、該第２シークレットに基づく秘密−公開鍵ペアを用いて、第１シークレットのシェアを暗号化する。これは、各ノードにより行われ、該ノードに知られている第２共通シークレットｘのペアのＸＯＲ結合を符号化する。従って、ノードＡについて、共通シークレットｘ１及びｘ２がノードＡに知られているので、ノードＡは、結合（ｘ１）ＸＯＲ（ｘ２）を計算し、次に、それぞれの通信チャネルの秘密−公開鍵ペアのうちの秘密鍵ｘ１又はｘ２に基づき、この結合を各他のノードと別個に符号化する。図８のステップ８４で、ノードＡは、次に、ｘ１に基づき暗号化された結合（ｘ１）ＸＯＲ（ｘ２）をノードＢへ、ｘ２に基づき暗号化された結合（ｘ１）ＸＯＲ（ｘ２）をノードＣへ、送信する。これらの暗号化されたシェアは、それぞれ次式により表される。
【０１４０】
【数２５】
2022500920.tif 000027
同様に、共通シークレットｘ１及びｘ３はノードＢに知られ、ｘ３は第３共通シークレットを表し、第２ノードＢ及び第３ノードＣに共通である。ノードＢは、結合（ｘ１）ＸＯＲ（ｘ３）を計算し、次に、第２共通シークレットｘ１及びｘ３に基づき、この結合を各他のノードと別個に符号化する。図８のステップ８４で、ノードＢは、次に、ｘ１に基づき暗号化された結合（ｘ１）ＸＯＲ（ｘ３）であるＥｘ１［（ｘ１）ＸＯＲ（ｘ３）］をノードＡへ、ｘ３に基づき暗号化された結合（ｘ１）ＸＯＲ（ｘ３）であるＥｘ３［（ｘ１）ＸＯＲ（ｘ３）］をノードＣへ、送信する。ノードＣは、一方で、結合ｘ２（ＸＯＲ）ｘ３を計算し、次に、第２共通シークレットｘ２及びｘ３に基づき、この結合を各他のノードと別個に符号化する。図８のステップ８４で、ノードＣは、次に、ｘ２に基づき暗号化された結合（ｘ２）ＸＯＲ（ｘ３）であるＥｘ２［（ｘ２）ＸＯＲ（ｘ３）］をノードＡへ、ｘ３に基づき暗号化されたＥｘ３［（ｘ２）ＸＯＲ（ｘ３）］をノードＢへ、送信する。
【０１４１】
図８のステップ８６で、ノードＡ、Ｂ、Ｃの各々は、他のノードから暗号化シェアを受信し、暗号化シェアを復号する。結果として、ノードの各々は、以下のように第１共有シークレット（ｘ１）ＸＯＲ（ｘ２）ＸＯＲ（ｘ３）を再構成するために必要な閾数のシェアを取得できる。
【０１４２】
ノードＡは、ノードＢからシェア（ｘ２）ＸＯＲ（ｘ３）を、ノードＣから（ｘ１）ＸＯＲ（ｘ３）を受信する。ノードＡはｘ１及びｘ２を個別に知るので、図８のステップ８８で、ノードＡは、ｘ１と（ｘ２）ＸＯＲ（ｘ３）との又はｘ２と（ｘ１）ＸＯＲ（ｘ３）とのＸＯＲ結合により、第１共通シークレット（ｘ１）ＸＯＲ（ｘ２）ＸＯＲ（ｘ３）を簡単に計算できる。同様に、ノードＢは、ノードＡからシェア（ｘ１）ＸＯＲ（ｘ２）を、ノードＣから（ｘ２）ＸＯＲ（ｘ３）を受信する。ノードＢはｘ１及びｘ３を個別に知るので、ｘ１と（ｘ２）ＸＯＲ（ｘ３）との又はｘ３と（ｘ１）ＸＯＲ（ｘ２）とのＸＯＲ結合により、第１共通シークレット（ｘ１）ＸＯＲ（ｘ２）ＸＯＲ（ｘ３）を簡単に計算できる。更に、ノードＣは、ノードＢからシェア（ｘ１）ＸＯＲ（ｘ３）を、ノードＡから（ｘ１）ＸＯＲ（ｘ２）を受信する。ノードＣはｘ２及びｘ３を個別に知るので、ｘ２と（ｘ１）ＸＯＲ（ｘ３）との又はｘ３と（ｘ１）ＸＯＲ（ｘ２）とのＸＯＲ結合により、第１共通シークレット（ｘ１）ＸＯＲ（ｘ２）ＸＯＲ（ｘ３）を簡単に計算できる。
【０１４３】
上述の第２共通シークレットについて説明した方法と同様に、第１共通シークレット（ＣＳ）は、楕円曲線点（ｘＳ，ｙＳ）の形式であってよい。これは、ノード３、７により合意された標準的な公に知られている演算を用いて標準的な鍵フォーマットに変換されてよい。例えば、ｘＳ値は、ＡＥＳ２５６暗号化の鍵として使用され得る２５６ビットの整数であってよい。それは、１６０ビットの長さの鍵を必要とする任意の用途のためにＲＩＰＥＭＤ１６０を用いて、１６０ビットの整数に更に変換され得る。
【０１４４】
ＸＯＲ暗号化以外の手段により第１共通シークレットのシェアを分配することが可能である。しかしながら、ＸＯＲ暗号化は、ブロックチェーントランザクションのスクリプトの中でブロードキャストされるとき、第２共通シークレットを難読化するという利点を提供する。その結果、第三者は、閾数の他の第２共通シークレットを知らずに第２共通シークレットを決定することができない。例えば、（ｘ１  ｘ２  ｘ３）  ｍｏｄ  ｎの形式の第２共通シークレットの単純な算術的乗算が使用できる。ここで、ｎは、使用される楕円曲線暗号システムの次数である。
【０１４５】
更に、第１共通シークレットのシェアは、当業者に馴染みのあるシャミアのシークレット共有方式又はディーラ不要のシークレット共有方式を用いて多項式関数のシェアとして分配できる。第１共通シークレットのシェアが多項式関数のシェアである場合には、第１共通シークレットの効率的な復元は、図９に示すようなＢｅｒｌｅｋａｍｐ−Ｗｅｌｃｈデコーダにより実行できる。図９を参照すると、Ｂｅｒｌｅｋａｍｐ−Ｗｅｌｃｈデコーダ７０は、多項式関数を取得するために、多項式関数のシェアの多項式補間を実行する。
【０１４６】
送信されたデータの中の誤りを訂正するためのＢｅｒｌｅｋａｍｐ−Ｗｅｌｃｈアルゴリズムの伝統的な使用において、メッセージｍはエンコーダ７２において、ｋバイトの詩リースに分割され、各バイトｃ０、ｃ１、．．．、ｃｋ−１は整数モジュロｐとして符号化される。次に、メッセージは、多項式関数により表される。
【０１４７】
【数２６】
2022500920.tif 000028
多項式関数ｍ（ｘ）の値は、次に、（ｘ，ｙ）ペアのシリーズを生成するために、ｘの多数の知られている値について決定され、これは、つぎに送信機７４により受信機７６へ送信される。
【０１４８】
受信機７６において受信されたデータＭ（つまり、受信されたメッセージ）は、元のメッセージを表す多項式関数上の点に対応するペア（ａ１，ｂ１，．．．，ａｎ，ｂｎ）を含む。
【０１４９】
【数２７】
2022500920.tif 000029
送信された（ｘ，ｙ）ペアのうちの幾つかが、送信中に壊れた場合、誤り位置多項式関数が以下のように定義できる。
【０１５０】
【数２８】
2022500920.tif 000030
積多項式関数Ｑ（ａｉ）は次式のように定義される。
【０１５１】
【数２９】
2022500920.tif 000031
次に、受信した（ａｉ，ｂｉ）ペアの各々について、ｂｉの値が壊れているか否かに拘わらず、
【０１５２】
【数３０】
2022500920.tif 000032
（ａｉ，ｂｉ）のｎ個の知られている値について、Ｅ（ａｉ）はｅ次の多項式関数であり、Ｐ（ａｉ）は（ｋ−１）次の多項式関数なので、Ｑ（ａｉ）は（ｅ＋ｋ−１）次の多項式関数である。（ａｉ，ｂｉ）の知られている値は、従って、線形系として表すことができる。
【０１５３】
【数３１】
2022500920.tif 000033
線形系は２ｅ＋ｋ−１個の未知の項を含む（Ｅ（ｘ）からｅ個、及びＱ（ｘ）からｅ＋ｋ−１個）。その結果として、ｎ＞＝２ｅ＋ｋ−１ならば、Ｑ（ａｉ）及びＥ（ａｉ）が決定できる。Ｑ（ａｉ）及びＥ（ａｉ）が決定できるならば、元のメッセージｍ（ｘ）を復元するために、Ｐ（ａｉ）が決定可能である。
【０１５４】
従って、Ｂｅｒｌｅｋａｍｐ−Ｗｅｌｃｈデコーダ７０は、多項式関数上の点を表すペアを入力として受信し、多項式関数を出力することが分かる。デコーダ７０は、従って、多項式関数により表される閾数のシェアから該多項式関数を決定するために、本開示ではラグランジュ（Lagrange）補間の代わりとして使用できる。
【０１５５】
図１０は、４つのノードＡ、Ｂ、Ｃ、Ｄの間で第１共通シークレットを共有する、本開示を実現する方法を示す。各ノードＡ、Ｂ、Ｃ、Ｄは、それ自体の秘密鍵／公開鍵ペア（Ｓ，Ｐ）に関連付けられ、例えばノードＡの秘密鍵、公開鍵ペアは（ＳＡ，ＰＡ）である。
【０１５６】
各々の秘密鍵又は公開鍵は、図１〜６を参照して上述したのと同様の方法で、該ノードのそれぞれのマスタ秘密鍵又はマスタ公開鍵と決定性鍵とから導出されてよい。秘密−公開鍵ペアは、楕円曲線暗号システムの鍵ペアである。例えば、ＰＡ＝ＳＡ×Ｇ、Ｇは楕円曲線基準点（generator  point）である。、
ノードＡとＢ、ＡとＣ、ＡとＤ、ＢとＣ、ＢとＤ、ＣとＤの各ペアの間のセキュアな通信は、図１〜６を参照して上述した方法を用いてノードの各ペアの間の第２共通シークレットを決定することにより、確立される。図１０に示す構成では、以下の関係が適用される。
【０１５７】
【数３２】
2022500920.tif 000034
【０１５８】
【数３３】
2022500920.tif 000035
セキュアな通信チャネルがノードの各ペアの間で確立されると、図７及び８を参照して上述した方法と同様の方法で、各ノードは、該ノードに知られている第２シークレットの結合の形式で、該第２シークレットに基づく秘密−公開鍵ペアを用いて、第１シークレットのシェアを暗号化する。これは、各ノードにより行われ、該ノードに知られている第２共通シークレットｘのペアのＸＯＲ結合を符号化する。従って、ノードＡについて、共通シークレットｘ１、ｘ２及びｘ３がノードＡに知られているので、ノードＡは、結合
【０１５９】
【数３４】
2022500920.tif 000036
を計算し、次に、それぞれの通信チャネルの秘密−公開鍵ペアのうちの秘密鍵ｘ１、ｘ２又はｘ３に基づき、この結合を各他のノードと別個に符号化する。
【０１６０】
本発明の実施形態では、別個の結合
【０１６１】
【数３５】
2022500920.tif 000037
は図１０において［Ａｓｈａｒｅｓ］として省略して示される。
【０１６２】
符号化された結合は、次に次式のように表される。
【０１６３】
【数３６】
2022500920.tif 000038
ノードＡは、次に、Ｅｘ１［Ａｓｈａｒｅｓ］をノードＢへ送信し、それによりｘ１が共通になり、Ｅｘ２［Ａｓｈａｒｅｓ］をノードＣへ送信し、それによりｘ２が共通になり、Ｅｘ３［Ａｓｈａｒｅｓ］をノードＤへ送信し、それによりｘ３が共通になる。
【０１６４】
同様の方法で、ノードＢは以下の結合を計算する。
【０１６５】
【数３７】
2022500920.tif 000039
そして、暗号化して以下を送信する。
【０１６６】
【数３８】
2022500920.tif 000040
ノードＣは、以下の結合を計算する。
【０１６７】
【数３９】
2022500920.tif 000041
そして、暗号化して以下を送信する。
【０１６８】
【数４０】
2022500920.tif 000042
そして、ノードＣは、以下の結合を計算する。
【０１６９】
【数４１】
2022500920.tif 000043
そして、暗号化して以下を送信する。
【０１７０】
【数４２】
2022500920.tif 000044
ノードＡ、Ｂ、Ｃ、Ｄの各々は、他のノードから暗号化シェアを受信し、適切な第２共通シークレットｘ１、ｘ２、ｘ３、ｘ４、ｘ５、又はｘ６に対応する秘密鍵を用いて暗号化シェアを復号し、その結果として、ノードの各々は、以下のように第１共通シークレット
【０１７１】
【数４３】
2022500920.tif 000045
を再構成するために必要な閾数のシェアを取得できる。
【０１７２】
ノードＡは、ノードＢからシェア
【０１７３】
【数４４】
2022500920.tif 000046
を受信し、ｘ１、ｘ２、及びｘ３を別個に知り、従って、
【０１７４】
【数４５】
2022500920.tif 000047
から、ｘ４及びｘ５をそれぞれ計算できる。
【０１７５】
ノードＡは、ノードＣからシェア
【０１７６】
【数４６】
2022500920.tif 000048
を受信し、ｘ１、ｘ２、及びｘ３を別個に知り、従って、
【０１７７】
【数４７】
2022500920.tif 000049
から、ｘ６を計算でき、結果としてｘ１〜ｘ６を別個に知り、第１共通シークレットを計算できる。
【０１７８】
同様の処理を行うことにより、他のノードＢ、Ｃ、Ｄの各々は、第２共通シークレットの全部を取得し、今やノードの全部の間で共有される第１共通シークレットを決定できる。
【０１７９】
図１１を参照すると、本開示の少なくとも一実施形態を実施するために使用され得るコンピューティング装置２６００の説明のための簡略ブロック図が提供される。種々の実施形態で、コンピューティング装置２６００は、上述の図示のシステムのうちのいずれかを実装するために使用されてよい。例えば、コンピューティング装置２６００は、データサーバ、ウェブサーバ、ポータブルコンピューティング装置、パーソナルコンピュータ、又は任意の電子コンピューティング装置として使用するために構成されてよい。図１１に示すように、コンピューティング装置２６００は、主メモリ２６０８及び永久記憶装置２６１０を含む記憶サブシステム２６０６と通信するよう構成され得る１つ以上のレベルのキャッシュメモリ及びメモリ制御部（集合的に２６０２とラベル付けされる）を備える１つ以上のプロセッサを含んでよい。主メモリ２６０８は、図示のように、動的ランダムアクセスメモリ（ＤＲＡＭ）２６１８及び読み出し専用メモリ（ＲＯＭ）２６２０を含み得る。記憶サブシステム２６０６及びキャッシュメモリ２６０２は、本開示で説明されたようなトランザクション及びブロックに関連付けられた詳細事項のような情報の記憶のために使用されてよい。プロセッサ２６０２は、本開示で説明されたような任意の実施形態のステップ又は機能を提供するために利用されてよい。
【０１８０】
プロセッサ２６０２は、１つ以上のユーザインタフェース入力装置２６１２、１つ以上のユーザインタフェース出力装置２６１４、及びネットワークインタフェースサブシステム２６１６とも通信できる。
【０１８１】
バスサブシステム２６０４は、コンピューティング装置２６００の種々のコンポーネント及びサブシステムが意図した通りに互いに通信できるようにするメカニズムを提供してよい。
【０１８２】
バスサブシステム２６０４は、単一のバスとして概略的に示されるが、バスサブシステムの代替の実施形態は、複数のバスを利用してよい。ネットワークインタフェースサブシステム２６１６は、他のコンピューティング装置及びネットワークへのインタフェースを提供してよい。
【０１８３】
ネットワークインタフェースサブシステム２６１６は、幾つかの実施形態では、コンピューティング装置２６００の他のシステムからデータを受信し及びそれへデータを送信するインタフェースとして機能してよい。例えば、ネットワークインタフェースサブシステム２６１６は、データ技術者が、装置をネットワークに接続することを可能にする。その結果、データ技術者は、データセンタのような遠隔地にいがなら、データを装置へ送信し、データを装置から受信できる。
【０１８４】
ユーザインタフェース入力装置２６１２は、キーボード、統合型マウス、トラックボール、タッチパッド、又はグラフィックタブレットのような指示装置、スキャナ、バーコードスキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイクロフォンのようなオーディオ入力装置、及び他の種類の入力装置のような、１つ以上のユーザ入力装置を含んでよい。通常、用語「入力装置」の使用は、コンピューティング装置２６００に情報を入力する全ての可能な種類の装置及びメカニズムを含むことを意図する。
【０１８５】
１つ以上のユーザインタフェース出力装置２６１４は、ディスプレイサブシステム、プリンタ、又は音声出力装置のような非視覚ディスプレイ、等を含んでよい。ディスプレイサブシステムは、陰極線管（CRT）、液晶ディスプレイ（LCD）、発光ダイオード（LED）ディスプレイ、又はプロジェクションのような平面装置、又は他のディスプレイ装置を含んでよい。通常、用語「出力装置」の使用は、コンピューティング装置２６００から情報を出力する全ての可能な種類の装置及びメカニズムを含むことを意図する。１つ以上のユーザインタフェース出力装置２６１４は、例えば、ユーザインタフェースを提示して、ここに記載したプロセス及び変形を実行するアプリケーションとのユーザ相互作用が適切であるとき、そのような相互作用を実現するために使用されてよい。
【０１８６】
記憶サブシステム２６０６は、本開示の少なくとも１つの実施形態の機能を提供する基本プログラミング及びデータ構造を記憶するコンピュータ可読記憶媒体を提供してよい。アプリケーション（例えば、プログラム、コードモジュール、命令）は、１つ以上のプロセッサにより実行されると、本開示の１つ以上の実施形態の機能を提供し、記憶サブシステム２６０６に格納されてよい。これらのアプリケーションモジュール又は命令は、１つ以上のプロセッサ２６０２により実行されてよい。記憶サブシステム２６０６は、更に、本開示に従い使用されるデータを格納するレポジトリを提供する。例えば、主メモリ２６０８及びキャッシュメモリ２６０２は、プログラム及びデータのための揮発性記憶を提供できる。永久記憶装置２６１０は、プログラム及びデータの永久（不揮発性）記憶を提供でき、磁気ハードディスクドライブ、取り外し可能媒体に関連付けられた１つ以上のフロッピディスクドライブ、取り外し可能媒体に関連付けられた１つ以上の光ドライブ（例えば、ＣＤ−ＲＯＭ、又はＤＶＤ、又はＢｌｕｅ−Ｒａｙ）ドライブ、及び他の同様の記憶媒体を含んでよい。このようなプログラム及びデータは、本開示に記載した１つ以上の実施形態のステップを実行するためのプログラム、及び本開示に記載したトランザクション及びブロックに関連付けられたデータを含み得る。
【０１８７】
コンピューティング装置２６００は、ポータブルコンピュータ装置、タブレットコンピュータ、ワークステーション、又は後述する任意の他の装置を含む種々のタイプのものであってよい。さらに、コンピューティング装置２６００は、１つ以上のポート（例えば、USB、ヘッドフォンジャック、光コネクタ、等）を通じてコンピューティング装置２６００に接続可能な別の装置を含み得る。コンピューティング装置２６００に接続され得る装置は、光ファイバコネクタを受けるよう構成される複数のポートを含んでよい。したがって、この装置は、光信号を、処理のために装置を接続するポートを通じてコンピューティング装置２６００に送信される電気信号に変換するよう構成されてよい。コンピュータ及びネットワークの絶えず変化する特性により、図１１に示したコンピューティング装置２６００の説明は、装置の好適な実施形態を説明する目的の特定の例としてのみ意図される。図１１に示したシステムより多くの又は少ないコンポーネントを有する多くの他の構成が可能である。
【０１８８】
上述の実施形態は、本開示を限定するのではなく、説明すること、及び当業者は添付の特許請求の範囲により定められる本開示の範囲から逸脱することなく多くの代替的実施形態を考案できることに留意すべきである。特許請求の範囲において、括弧内の任意の参照符号は、請求項を限定することを意図しない。用語「有する」及び「含む」（comprising、comprises）等は、任意の請求項又は明細書全体に列挙されたもの以外の要素またはステップの存在を排除しない。本願明細書では、「有する」は「有する又は構成される」を意味し、「含む」は「含む又は構成される」を意味する。要素の単数の参照は、該要素の複数の参照を排除しない。逆も同様である。本開示は、幾つかの別個の要素を含むハードウェアにより、及び適切にプログラムされたコンピュータにより、実装できる。幾つかの手段を列挙する装置クレームでは、これらの手段のうちの幾つかは、１つの同じハードウェアアイテムにより具現化されてよい。単に特定の手段が相互に異なる従属請求項に記載されるという事実は、これらの手段の組み合わせが有利に使用されないことを示さない。
【図１】
2022500920.tif 000050
【図２】
2022500920.tif 000051
【図３】
2022500920.tif 000052
【図４】
2022500920.tif 000053
【図５】
2022500920.tif 000054
【図６】
2022500920.tif 000055
【図７】
2022500920.tif 000056
【図８】
2022500920.tif 000057
【図９】
2022500920.tif 000058
【図１０】
2022500920.tif 000059
【図１１】
2022500920.tif 000060
【国際調査報告】
2022500920.tif 000061
2022500920.tif 000062