(57)【要約】  本発明は、概して分散型台帳技術（ブロックチェーン関連技術を含む）に関し、特にタスク又はプロセスを実施し、制御し、及び／又は自動化する際のブロックチェーンの使用に関する。本発明は、ブロックチェーン、又はロジックの一部の実行を記録する又は表現する関連技術の使用に関する。このロジックの一部は、ＡＮＤ、ＸＯＲ、ＮＯＴ、ＯＲ、等のような論理ゲート又は複数の論理ゲートの機能を実装するよう構成されて良い。本発明の一実施形態は、アウトプットに対するＲｅｄｅｅｍスクリプトを有するブロックチェーン・トランザクションを提供するステップであって、前記Ｒｅｄｅｅｍスクリプトは、ｉ）複数の公開鍵であって、複数の公開鍵の各々は対応する秘密鍵に関連付けられ、各公開鍵は少なくとも１つのデータソースの可能な状態にユニークに関連付けられ、最小数の前記秘密鍵が、前記アウトプットを使用するために、更なるブロックチェーン・トランザクションのアンロックスクリプトに署名するために使用されなければならない、複数の公開鍵と、ｉｉ）ロジックであって、Ａ）中間結果を提供するために、複数の関連付けられた秘密鍵のうちのどれがアンロックスクリプトに署名するために使用されるかの決定と、Ｂ）アンロックスクリプトにより供給されたパラメータの中間結果に対する比較と、に基づき結果を提供するロジックと、を含む、ステップを有する。方法は、トランザクション・アウトプットを１回より多く使用しようと試みるステップであって、各試みは異なるパラメータを供給する、ステップも有する。
2019528592.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実施される制御方法であって、
アウトプットに対するＲｅｄｅｅｍスクリプトを有するブロックチェーン・トランザクションを提供するステップであって、前記Ｒｅｄｅｅｍスクリプトは、
ｉ）複数の公開鍵であって、複数の公開鍵の各々は対応する秘密鍵に関連付けられ、各公開鍵は少なくとも１つのデータソースの可能な状態にユニークに関連付けられ、最小数の前記秘密鍵が、前記アウトプットを使用するために、更なるブロックチェーン・トランザクションのアンロックスクリプトに署名するために使用されなければならない、複数の公開鍵と、
ｉｉ）ロジックであって、
−中間結果を提供するために、前記複数の関連付けられた秘密鍵のうちのどれが前記アンロックスクリプトに署名するために使用されるかの決定、及び、
−前記アンロックスクリプトにより供給されるパラメータの前記中間結果に対する比較、
に基づき結果を提供するよう構成されたロジックと、を有する、ステップと、
前記トランザクション・アウトプットを１回より多く使用しようと試みるステップであって、各試みは異なるパラメータを供給する、ステップと、
を有する方法。
【請求項２】
前記ロジックは、論理ゲートの機能を実装するよう構成される、請求項１に記載の方法。
【請求項３】
前記論理ゲートは、ＮＯＴ、ＡＮＤ、ＯＲ、ＮＯＲ、ＸＯＲ、ＩＭＰＬＹ、ＮＡＮＤ、ＮＯＮＩＭＰＬＹ、又はＸＮＯＲゲートである、請求項２に記載の方法。
【請求項４】
前記少なくとも１つのデータソースの前記状態は、計算エージェントにより決定される、請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
前記計算エージェントは、制御計算エージェントと通信する、請求項４に記載の方法。
【請求項６】
前記結果はブール結果である、請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
少なくとも２つのデータソースが存在する、請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
各データソースについてそれぞれ２つの可能な状態が存在し、各可能な状態は公開鍵に関連付けられる又は公開鍵により表現される、請求項１乃至７のいずれか一項に記載の方法。
【請求項９】
前記少なくとも１つのデータソースの各々について、
複数のうちの１つの公開鍵を前記データソースの可能な状態に関連付けるステップであって、前記データソースの全部の可能な状態がそれぞれの公開鍵により表現されるようにする、ステップ、を有する請求項１乃至８のいずれか一項に記載の方法。
【請求項１０】
前記少なくとも１つのデータソースは、センサ又は信号生成コンポーネントを有する、請求項１乃至９のいずれか一項に記載の方法。
【請求項１１】
各公開鍵は、前記少なくとも１つのデータソースの可能な状態を示すブール値を表現する、請求項１乃至１０のいずれか一項に記載の方法。
【請求項１２】
前記パラメータは値、又はパズル、又は鍵に埋め込まれた値である、請求項１乃至１１のいずれか一項に記載の方法。
【請求項１３】
前記ロジックは、前記中間結果を前記パラメータと比較するために等価チェックを実行するよう構成される、請求項１乃至１２のいずれか一項に記載の方法。
【請求項１４】
前記中間結果は、前記Ｒｅｄｅｅｍスクリプト内で提供される前記ロジックから導出され、及び／又は前記アンロックスクリプトに署名するためにどの鍵が使用されたかを決定することにより計算されるブール値である、請求項１乃至１３のいずれか一項に記載の方法。
【請求項１５】
基本又はマスタ鍵から前記複数の鍵のうちの１又は複数を生成する又は導出するステップ、を更に有する請求項１乃至１４のいずれか一項に記載の方法。
【請求項１６】
鍵を生成する又は導出するステップは、決定論的鍵生成技術を用いて実行される、請求項１５に記載の方法。
【請求項１７】
コンピュータにより実装されるシステムであって、
請求項１乃至１６のいずれか一項に記載のステップを実行するよう構成される少なくとも１つのコンピュータに基づくリソースと、
ブロックチェーンと、
を有するシステム。
【請求項１８】
前記少なくとも１つのコンピュータに基づくリソースは、
ブロックチェーン・ネットワークにトランザクションを提出し、
トランザクションを生成し、
ロックスクリプトにデジタル方式で署名し、及び／又は、
公開／秘密暗号鍵を生成する、
よう構成される、請求項１７に記載のコンピュータにより実装されるシステム。
【請求項１９】
前記結果は、プロセス又は機器の実行又は動作を制御する又は影響を与えるために使用される、請求項１７又は１８に記載のシステム。
【請求項２０】
前記少なくとも１つのコンピュータに基づくリソースにインプットを提供するよう配置され構成される少なくとも１つのセンサ又は信号生成コンポーネントを更に有する請求項１７乃至１９のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、分散型台帳技術（ブロックチェーン関連技術を含む）に関し、特に、タスク又はプロセスを実施し、制御し、及び／又は自動化する際のブロックチェーンの使用に関する。本発明は、ロジックの一部の実行を記録する又は表現するための、ブロックチェーン又は関連技術の使用に関し得る。ロジックのこの部分は、ＡＮＤ、ＸＯＲ、ＮＯＴ、ＯＲ、等のような１つの論理ゲート又は複数の論理ゲートの機能を実装するために構成されて良い。
【背景技術】
【０００２】
本願明細書では、この状況でブロックチェーンが現在最も広く知られた用語なので、私達は、便宜上及び参照の容易さのために用語「ブロックチェーン」を使用することに留意することが重要である。しかしながら、当該用語は、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳及びそれらの変形を含むがこれらに限定されない、電子的な、コンピュータに基づく分散型台帳の全ての形式を包含するために、ここで（請求項を含む）使用される。
【０００３】
ブロックチェーンは、ブロックにより構成される、コンピュータに基づく非集中型の分散型システムとして実装される電子台帳である。また、ブロックはトランザクションにより構成される。各トランザクションは、少なくとも１つのインプット及び少なくとも１つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、ブロックは共にチェーンになって、その発端からブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能なレコードを生成する。トランザクションは、そのインプット及びアウトプットに埋め込まれたスクリプトとして知られる小さなプログラムを含む。スクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。ビットコインプラットフォーム上で、これらのスクリプトは、スタックに基づくスクリプト言語を用いて記述される。
【０００４】
トランザクションがブロックチェーンに書き込まれるために、「検証され」なければならない。ネットワークノード（マイナー）は、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークから拒否される。ノードにインストールされたソフトウェアクライアントは、自身のロック及びアンロックスクリプトを実行することにより、この検証作業を未使用トランザクション（ＵＴＸＯ）に対して実行する。ロック及びアンロックスクリプトの実行が真と評価した場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。
【０００５】
最も広く知られているブロックチェーン技術の用途はビットコイン台帳であるが、他のブロックチェーンの実装が提案され開発されている。ビットコインは便宜上及び説明を目的として本願明細書において言及されるが、本発明はビットコインのブロックチェーンと共に使用することに限定されず、代替のブロックチェーンの実装が本発明の範囲に含まれることに留意すべきである。
【０００６】
ブロックチェーン技術は、暗号通貨実装の使用のために最も広く知られている。しかしながら、更に近年は、デジタル起業家が、新しいシステムを実装するために、ビットコインの基づく暗号通貨セキュリティシステムの使用、及びブロックチェーンに格納可能なデータの両者を探索し始めている。ブロックチェーンが、暗号通貨の領域に限定されない自動制御プロセスのようなタスク及びプロセスのために使用できれば、非常に有利である。このようなソリューションは、それらの用途において一層多様でありながら、ブロックチェーンの利点（例えば、永久的、イベントの耐タンパレコード、分散プロセス、等）を利用できる。
【０００７】
このような改良されたソリューションが考案されている。したがって、本発明によると、添付の請求の範囲に定められるようなシステム及び方法が提供される。
【発明の概要】
【０００８】
したがって、本発明によると、コンピュータにより実施される方法が提供され得る。本発明は、制御方法として記載され得る。本発明は、技術的プロセスの動作又は１又は複数の装置の動作を制御し得る。追加又は代替として、本発明は、ブロックチェーンスクリプトの実行を制御し得る。本発明は、トランザクション・アウトプット（ＵＴＸＯ）に関連付けられたロックスクリプトをアンロックする試みにより、生成されるアウトプットを制御し得る。本発明は、ブロックチェーン・トランザクション内のアウトプット（ＵＴＸＯ）がアンロックされるか否かを制御し得る。本発明は、暗号通貨の一部がブロックチェーンを介してあるパーティから別のパーティへ転送されるか否か
を制御し得る。
【０００９】
本発明は、実質的に図３に示す実施形態に従い構成され得る。
【００１０】
方法は、アウトプットに対するＲｅｄｅｅｍスクリプトを含むブロックチェーン・トランザクション（Ｔｘ）を提供するステップを有し得る。ここで、Ｒｅｄｅｅｍスクリプトは、複数の公開鍵を指定する。これらは、暗号鍵であって良い。それらは、公開／秘密鍵ペアの部分を形成して良い。複数（又は「リスト」）の中の鍵の各々は、対応する秘密鍵に関連付けられて良い。各公開鍵は、少なくとも１つのデータソースの可能な状態にユニークに関連付けられて良い。したがって、Ｒｅｄｅｅｍスクリプトは、公開鍵のリストを含んで良く、これらの公開鍵の対応する秘密鍵だけが、トランザクション・アウトプット（ＴｘＯ）を使用するために使用され得る。
【００１１】
結果は、複数の関連秘密鍵のうちのどれがアンロックスクリプトに署名するために使用されるかにより決定され又は影響を受け得る。スクリプトに署名するために使用される秘密鍵の比較は、中間結果を提供し得る。比較は、スクリプト内で提供される既知の又は所定のパラメータ又は値に対して実行されて良い。この所定パラメータ又は値は、トランザクション・アウトプットを使用したい（又は使用しない）という計算エージェントの要望を表し得る。アンロックスクリプトを介して供給されるパラメータの中間結果に対する比較が行われて良い。
【００１２】
したがって、本発明の実施形態は、ブロックチェーン・トランザクション（Ｔｘ）がスクリプトから非真の値を返すことを可能にし得る。これは、スクリプトのアウトプットがパラメータにより表される又はそれに関連付けられた供給される目標値と一致することを確認し又は決定するために、パラメータを用いて達成され得る。
【００１３】
方法は、トランザクション・アウトプットを１回より多く使用しようと試みるステップを有して良い。実際には、これは、二重（又はそれより多くの）使用である。二重使用は、同額の仮想通貨を異なる受信者へ転送しようとするので、伝統的に悪い行為と考えられる。しかしながら、本願では、利益をもたらすために使用される。
【００１４】
各々の使用の試みは、ブロックチェーン・ネットワークに（異なる）トランザクションを提出するステップを有して良い。各試みは、Ｒｅｄｅｅｍスクリプトに異なるパラメータを提供する又は供給するトランザクションを用いて実行されて良い。各試みは、異なる（ブロックチェーン）アドレスへのアウトプットを使用しようと試みるブロックチェーン・トランザクションを生成して良い。
【００１５】
アンロックスクリプトにより供給されるパラメータは、真又は偽を表し得る。これは、暗号パズルのようなパズルであって良い。これは、鍵に埋め込まれた値であって良い。方法は、鍵から値を抽出するステップを有して良い。
【００１６】
ロジックは、等価チェック又は比較を実行するよう構成されて良い。チェック又は比較は、中間結果をパラメータと比較して良い。中間結果は、Ｒｅｄｅｅｍスクリプト内で提供され又は埋め込まれたロジックを実行することにより、提供されて良い。これは、論理ゲートの機能をエミュレートする又は提供するよう構成されるロジックの部分であって良い。中間結果は、メモリ内のスタックに置かれ／それから読み出されて良い。
【００１７】
方法は、トランザクションを生成するステップを含んで良い。方法は、該トランザクションをブロックチェーンに提供するステップを有して良い。
【００１８】
トランザクション及び／又は更なる（使用）トランザクションは、計算エージェントにより生成されて良い。トランザクションは、センサ又は他の信号源から受信されたインプットに基づき（人間の介入無しに）自動的に生成されて良い。
【００１９】
追加又は代替として、Ｒｅｄｅｅｍスクリプトは、複数の公開鍵のうちのどれがアンロックスクリプトに署名するために使用されるかに基づき、結果を提供するよう構成されたロジックの部分を有して良い。したがって、Ｒｅｄｅｅｍスクリプト内で提供されるロジックの実行は、どの関連秘密鍵がアンロックスクリプトに署名するために使用されたかにより決定され又は影響されて良い。
【００２０】
追加又は代替として、最小数の上述の秘密鍵が、アウトプットを使用するために更なるブロックチェーン・トランザクションのアンロックスクリプトに署名するために必要とされ得る。
【００２１】
ロジックにより提供される結果又は出力は、どの（特定の）秘密鍵がアンロックスクリプトに署名するために使用されたかの決定に依存して良い。方法は、アンロックスクリプトに署名するために使用された秘密鍵を、Ｒｅｄｅｅｍスクリプト内で提供された関連公開鍵に対して照合するステップを有して良い。
【００２２】
有利なことに、これは、特定の鍵が使用されるのではなく、単に特定数の鍵が使用されることを要求する従来技術より、本発明が大きな制御の度合いを提供することを可能にする。複数の中からどの特定の鍵が使用されるかを決定することにより、本発明は、トランザクション・アウトプットＵＴＸＯのロック／アンロックを制御するときの、より大きな度合いの粒度又は精巧さを実現する代替の拡張されたセキュリティ技術を提供する。したがって、本発明は、暗号通貨の一部の転送を制御する改良された暗号技術を提供すると言える。
【００２３】
中間結果は、Ｒｅｄｅｅｍスクリプト内で提供されロジックから導出され、及び／又はどの鍵がアンロックスクリプトに署名するために使用されたかを決定することにより計算されるブール値である。
【００２４】
Ｒｅｄｅｅｍスクリプト内のロジックは、論理ゲートの機能を実装するよう構成されて良い。論理ゲートは、ＮＯＴ、ＡＮＤ、ＯＲ、ＮＯＲ、ＸＯＲ、ＩＭＰＬＹ、ＮＡＮＤ、ＮＯＮＩＭＰＬＹ、及び／又はＸＮＯＲゲートであって良い。したがって、本発明は、論理ゲートの機能をブロックチェーン・トランザクションによりシミュレートさせ又は達成させることを可能にする技術を提供するものとして記載され得る。論理ゲートをエミュレートするスクリプトロジックの部分は、中間結果を提供して良い。
【００２５】
少なくとも１つのデータソースの状態は、計算エージェントにより決定されて良い。エージェントは、条件を監視するよう構成されて良い。条件は、例えば、コンピューティングネットワーク上の条件、又は装置関連条件、又は環境要因の条件であって良く、或いは、任意の他の種類の定量化可能な条件であって良い。
【００２６】
計算エージェントは、制御計算エージェントと通信して良い。制御計算エージェントは、本願明細書で「制御部」と呼ばれることがある。Ｒｅｄｅｅｍスクリプトは、制御部により生成されて良い。１又は複数のエージェントは、プロセス又は機器を制御するよう構成されて良い。
【００２７】
１つの、幾つかの、又は全部の計算エージェントは、エージェント基本鍵と呼ばれ得る暗号鍵を有して良い。暗号鍵は、エージェントにより生成されて良い。暗号鍵は、制御部から導出され及び／又は受信されて良い。複数の鍵のうちの１又は複数は、基本又は「マスタ」鍵から生成され又は導出されて良い。鍵生成は、決定論的鍵生成技術を用いて実行されて良い。方法は、エージェントにより監視中の条件の各可能な状態について、更なる又は別個の鍵を生成し又は導出するステップを有して良い。更なる鍵は、「共有シークレットを用いる鍵の生成」と題された章で後述する技術を用いて基本鍵から導出されて良い。
【００２８】
ロジックにより提供される結果は、ブール結果又は何らかの他の種類の結果であって良い。ロジックは、限定された範囲の結果から、結果を提供して良い。
【００２９】
少なくとも２つのデータソースが存在して良い。各データソースについて又はそれに関連付けられた２つの可能な状態が存在して良い。各可能な状態は、公開鍵に関連付けられ又はそれにより表現されて良い。したがって、Ｒｅｄｅｅｍスクリプト内で提供される公開鍵のリストは、データソースが採用し又は入り得る全ての可能な状態を定義し、表現し、又は記述するために使用されて良い。
【００３０】
方法は、以下のステップを有して良い：
少なくとも１つのデータソースの各々について、
複数の中の公開鍵を、データソースの可能な状態に関連付けるステップ。
【００３１】
したがって、データソースの全部の可能な状態が、それぞれの公開鍵により表現される。
【００３２】
言い換えると、各データソースの各可能な状態は、公開鍵に関連付けられて良く、公開鍵が該状態の（ユニークな）識別子として使用できるようにする。したがって、各鍵とデータソースの可能な状態との間のマッピングを形成するために、鍵は慎重に選択されて良い。これは、鍵がデータソースの可能な状態の表現として機能することを可能にし得る。どの秘密鍵がアンロックスクリプト中に署名するために使用されるかの分析又は決定は、次に、データソースの状態の決定を可能にし得る。
【００３３】
少なくとも１つのデータソースは、センサを有して良い。追加又は代替として、データソースは、インプット信号を生成し及び／又は計算リソース又はエージェントへ送信する能力のあるソースを有して良い。
【００３４】
各公開鍵は、少なくとも１つのデータソースの可能な状態を示すブール値を表現して良い。例えば、信号が受信されたか又は受信されないか、或いは、温度が２０度Ｃより高いか。
【００３５】
本発明は、対応するシステムも提供する。システムは、上述の方法の任意の実施形態を実施するよう構成されて良い。システムは、実質的に図３に示されるような方法又は技術を実施するよう構成されて良い。
【００３６】
本発明は、コンピュータにより実装されるシステムであって、
上述の任意の方法のステップを実行するよう構成される少なくとも１つのコンピュータに基づくリソースと、
ブロックチェーン又は他の種類の電子台帳、又はビットコイン台帳の変形と、
を有するシステムを提供し得る。これは分散型台帳であって良い。
【００３７】
少なくとも１つのコンピュータに基づくリソースは、
トランザクションをブロックチェーン・ネットワーク（これは、ビットコインネットワークであって良く又はそうでなくて良い、これは、任意の種類の分散台帳であって良い）に提出し、及び／又は、
トランザクションを生成し、及び／又は、
ロックスクリプトにデジタル方式で署名し、及び／又は、
公開／秘密暗号鍵を生成する、よう構成されて良い。
【００３８】
システムは、結果がプロセス又は機器の実行又は動作を制御する又は影響を与えるために使用されるよう構成されて良い。コンピュータに基づくリソースは、「エージェント」として参照されて良い。
【００３９】
システムは、少なくとも１つのコンピュータに基づくリソースにインプットを提供するよう配置され／構成される少なくとも１つのセンサ又は他の信号／インプット生成コンポーネントを有して良い。
【００４０】
本発明のある実施形態又は態様に関連して記載される任意の特徴は、１又は複数の他の実施形態又は態様と共に達成するために使用されても良い。方法に関連して記載された任意の特徴は、システムに適用可能であり、逆も同様である。
【図面の簡単な説明】
【００４１】
本発明の上述の及び他の態様は、本願明細書に記載される実施形態から明らかであり、それらの実施形態を参照して教示される。本発明の実施形態は、単なる例として添付の図面を参照して以下に説明される。
【図１】本発明の一実施形態の図を示す。
【図２】論理ゲートトランザクションにインプットを提供するために、複数の独立計算エージェントが外部環境の監視を実行する、本発明の説明のための実施形態を示す。
【図３】本発明の好適な実施形態の概要を示す。
【図４】本発明の一実施形態に従い構成された、トランザクション・アウトプット１がトランザクション・アウトプット２とのＮＯＲゲートを実装し、制御部に払い戻す、例示的なブロックチェーン・トランザクションを示す。
【図５】本発明の別の実施形態の概要を示す。
【図６】基本鍵から暗号鍵を生成する技術を示す。
【図７】基本鍵から暗号鍵を生成する技術を示す。
【図８】基本鍵から暗号鍵を生成する技術を示す。
【図９】基本鍵から暗号鍵を生成する技術を示す。
【図１０】基本鍵から暗号鍵を生成する技術を示す。
【発明を実施するための形態】
【００４２】
本発明は、機能を実施するためにブロックチェーンを使用する新規且つ有利なソリューションを提供する。ブロックチェーンは、機能の実行の記録及び／又は自身の成果の結果を提供するために使用される。機能は、インプットセットに適用されアウトプットセットを返すサブルーチン又はプロシジャ（つまり、プロセス又はロジックの部分）であり得る。１つの可能な実施形態では、機能は、「オフブロックで」実行され得る。つまり、機能の実行はブロックチェーンに依存しない。機能は、コンピュータに基づくリソースにより実行される。
【００４３】
ブロックチェーン（例えば、ビットコイン）トランザクションは、標準的に前のトランザクション・アウトプットを新しいトランザクション・インプットとして参照し且つ全てのインプット値を新しいアウトプットに捧げる（例えば、ビットコイン）値の転送である。トランザクションは暗号化されない。したがって、ブロックにこれまで集められた全てのトランザクションを閲覧し吟味することが可能である。しかしながら、トランザクション・アウトプットが条件付きであり又は供給される情報に依存する、機能として動作するブロックチェーン・トランザクションを構築可能であることは、非常に有利だろう。これは、ブロックチェーンを介する高機能な動作を可能にし得る。
【００４４】
本発明の重要な態様は、（限定ではないが）機能入力がトランザクションのアウトプットのＲｅｄｅｅｍスクリプト内で使用される公開鍵により表現され、実際の値が公開鍵のうちの１又は複数に関連付けられた署名により表現される、ブロックチェーン・トランザクションを生成する方法を含む。
【００４５】
本発明は、ブロックチェーン（例えば、ビットコイン）トランザクションが論理ゲートにより提供される機能を表すために使用され得る、以下に提供される使用例により説明される。この機能は、次に、幾つかの技術的プロセス又は機器を制御するために使用され得る。
【００４６】
本発明は、ブロックチェーンを上回る、以下を含む多数の汎用的な新規な機能を提供する：
・センサ又は他の信号／インプット生成器に対してエージェントを生成する能力。ここで、エージェントは、ブロックチェーンから直接制御され、動作するために他のネットワークアクセスを必要としない；
・複数の署名により保証されるトランザクションに対して、どの公開鍵がトランザクション署名プロセスで関与したかを決定する能力；
・Ｒｅｄｅｅｍスクリプト内の動作（例えば、コードがどのように実行するか）を決定するために使用可能な署名鍵の中に、限定された別個の範囲のペイロード値を埋め込む能力。
【００４７】
さらに、本発明の実施形態は、論理ゲート（例えば、ＮＯＲゲート）を提供するために上述の要素を利用できる。ここで、Ａ及びＢからのインプット値は、署名に使用される鍵に埋め込まれ又は該鍵により表現される。
【００４８】
＜利点＞
提案される発明は、以下の利点を提供する：
・設計により本来セキュアである（ビットコインプロトコルは信頼できるパーティを必要としない）；
・分散型である。したがって、大規模の単一の障害発生点を回避し、攻撃に対して脆弱ではない；
・管理及び維持が容易であり、ビットコインネットワークは使用するのに分かり易い；
・高価でない（通常、ビットコインプロトコルの下で少ないトランザクション料金が期待されるだけである）；
・グローバルであり、インターネットへのアクセスを有する誰もがいつでも使用できる；
・透過的である；
・データがブロックチェーンに書き込まれると、誰でもそれを見ることができる；
・不変であり、データがブロックチェーンに書き込まれると、誰もそれを変更できない；
・プライバシーが維持され、個人特定情報が関与しない。
【００４９】
本発明を動作させるために、ビットコインプロトコル及びウォレットの既存の構成及び動作を確認しなければならない。図１は、本発明の一実施形態に従い標準的なビットコイン・トランザクション（ＴＸ）がどのように構築されるかを示す。（ビットコインは、説明のために使用されるだけであり、他の台帳及び関連プロトコルが使用されて良く、依然として本発明の範囲に包含される）。
【００５０】
＜エージェント構成＞
本発明の一実施形態は、図２に示すように、この論理ゲートトランザクションにインプットを提供するために外部環境の監視を実行するよう構成される多数の独立（計算）エージェントの使用を含む。したがって、計算エージェントは、何らかの条件を監視するよう設計される。インプットは、この目的のためにセンサから受信されて良い。例えば、エージェントは、「温度が摂氏零度より低いか」のような条件、又は任意の他の種類の検査可能な条件を監視して良い。したがって、エージェントは、その観測された条件の状態を監視するよう構成されて良い。
【００５１】
エージェントは、以後「制御部」として参照される制御又はマスタエージェントと通信する。制御部は、ブロックチェーン・プロトコルと共に動作するために構成される。
【００５２】
１又は複数の実施形態では、従属エージェント（例えば、Ａ及びＢ）は、制御部から導出される鍵を有して良い。しかしながら、留意すべきことに、エージェントＡ及びエージェントＢは自身の生成した鍵を有し、制御部から鍵を導出しないことが可能である。これは、制御部が鍵に対して使用できる機能を制限する。
【００５３】
１又は複数の実施形態では、監視されている各条件は、それら自身の鍵と共に設定された別個の監視エージェントを有する。この鍵から、それらは、それらの監視している条件からのアウトプットについて（つまり、可能な状態毎に）別個の鍵を導出する。これらの値は、それらの基本鍵から決定論的に導出可能である。これは、監視点において実行され得る、又はエージェントが値を予め導出し得る（例えば、真／偽センサが単に事前定義することが一層効率的であり得る）。鍵は、「共有シークレットを用いる鍵の生成」と題された章で後述する技術を用いて基本鍵から導出されて良い。
【００５４】
＜エージェントの動作＞
上述の実施形態は、エージェントが非常に厳しく定義された動作を有することを可能にし、それらの基本点において、それらは単一条件を検出し及び該条件に必要に応じて応答しているセンサである。以下の表は、これらのエージェントの動作パターンを例示する。
【表１】
2019528592.tif 000003
【００５５】
ステップ２は、従来知られている複数署名トランザクションを実施するための標準的プロセスであることに留意する。新規なステップは、エージェントがセンサ値をエージェントから返される署名に埋め込むことを可能にするステップ３及び４にある。
【００５６】
＜データ値抽出及びトランザクション評価＞
トランザクション内のＲｅｄｅｅｍスクリプトは、次に、自立エージェントにより埋め込まれた値の効率的な事実上の抽出を可能にする。しかしながら、これは、可能な値の範囲が予め分かっている場合にのみ機能する。ここで、エージェントＡ及びＢが「真」／「偽」値を提供する例が使用されるが、より広い範囲の値も本方法を使用することができる（例えば、１、２、３、４、５）。肝心なのは、各可能な値又は状態を表現するためにユニークな鍵が使用され、したがって、Ｒｅｄｅｅｍスクリプトが、何の値に基づき鍵がアンロックスクリプトに署名するために使用されたかを決定できることである。しかしながら、Ｒｅｄｅｅｍスクリプト内で提供されるロジックはこの分析を実行するよう構成されなければならないので、方法は、無限範囲の可能な値をサポートしない。
【００５７】
方法は、エージェントの可能な導出される公開鍵に対して、該エージェントにより供給される署名を評価することにより機能する。したがって、Ｒｅｄｅｅｍスクリプトが制御部により最初に構築されたとき、各可能なインプット値（状態）の公開鍵が何であったかを決定し、及びこれらをＲｅｄｅｅｍスクリプトのペイロードに含め得る。
【００５８】
スクリプトは、このデータを抽出するために、公開鍵のうちのどれがトランザクションに署名するために使用されたかを決定することによりそれを行い、スクリプトは該公開鍵の表す値を黙示的に理解するために符号化されているので、スクリプトは、スクリプトの限定範囲内で使用する目的で該値を効率的に抽出する。
【００５９】
ブロックチェーン標準の範囲内で、ビルトインＯＰ＿ＣＨＥＣＫＭＵＬＴＩＳＩＧトランザクション機能は、十分な署名がアンロックスクリプトにより集められたことを決定するために、署名の評価を可能にする。しかしながら、これは、どれが使用されたかの明示的決定を可能にしない。したがって、本発明は、どれが使用されたかを決定するために特定の鍵に対して明示的に照合するためにＴｘを使用する技術を提供し、したがってトランザクションを介して非常に多くの複雑性を実装することを可能にするので、本発明は従来技術に優る向上を提供する。言い換えると、複数の鍵のどのサブセットが署名プロセスで使用されるかを決定することにより、ブロックチェーンを介してより高度な動作を生成することが可能である。
【００６０】
例えば、第三者預託機能では、複数の第三者預託エージェントにより第三者預託を効率的に生成することが可能であるが、買い手と売り手、又は買い手及び第三者預託エージェントのうちの１つ、又は買い手と第三者預託エージェントのうちの１つの署名の準備を必要とするスクリプトルールを定める。これは、標準的構成が両方の第三者預託エージェントがトランザクションに署名することを可能にし得るので、既知の標準的ビットコインプロトコルでは可能ではない。
【００６１】
＜Ｒｅｄｅｅｍスクリプト擬似コード＞
本発明の一実施形態によると、Ｒｅｄｅｅｍスクリプト内のロジックは以下のように構成されて良い。
【数１】
2019528592.tif 000004
【００６２】
＜例示的なトランザクション＞
例示的なトランザクションでは、トランザクション・アウトプット（ＴｘＯ）１はトランザクション・アウトプット２とのＮＯＲゲートを実装し、制御部に払い戻す。トランザクションは図４に示される。
【００６３】
＜Ｒｅｄｅｅｍスクリプト＞
完全なＲｅｄｅｅｍスクリプトが以下に示される。これは、次に、論理コンポーネントに分解される。
【数２】
2019528592.tif 000005
【００６４】
枠内の命令コードは、データを検証可能なフォーマットにするために必要な署名操作ロジックの上に設けられるＮＯＲゲートペイロードコード（以下のブロック７）を例示する。
【００６５】
論理的「下位機能」に区分するために、スクリプトは、読者の便宜のために以下の表に示すようなブロックシーケンスに分解される。
【表２−１】
2019528592.tif 000006
【表２−２】
2019528592.tif 000007
【００６６】
＜ロックスクリプト＞
ロックスクリプトは、標準的なＰａｙ−ｔｏ−Ｓｃｒｉｐｔ−Ｈａｓｈモデルである。
OP_HASH１６０  <Redeem  Script  Hash>  OP_EQUAL
【００６７】
＜アンロックスクリプト＞
所要のアンロックスクリプトは次の通りである：
<Sig-Controller>  <Sig-A-Used>  <Sig-B-Used>  <RS  Block  １>
ここで、
<Sig-A-Used>は以下のいずれかである：
<Sig-A-True>;又は、
<Sig-A-False>
<Sig-B-Used>は以下のいずれかである：
<Sig-B-True>;又は、
<Sig-B-False>
【００６８】
＜例示：ＮＯＲ論理ゲート＞
ＮＯＲゲートは、ＮＯＴ  ＯＲを実装する論理ゲートである。つまり、両方のインプットが偽であるならば、アウトプットは真であり、その他の場合には、アウトプットは偽である。
【表３】
2019528592.tif 000008
【００６９】
ＮＯＲゲートは、制御部署名、並びに真又は偽値のいずれかを表すＡエージェントからの署名及びＢエージェントからの別の署名（これも真又は偽のいずれか）を要求する単一のビットコイン・トランザクション・アウトプット内に実装される。図１は、このＮＯＲゲートがビットコインプロトコルにより実装できるかの概要を示す。
【００７０】
ＲＢブロック７を後述の章で示されるように置き換えることにより、代替のゲートを実装することが可能である。
【００７１】
＜ＡＮＤゲート＞
【表４】
2019528592.tif 000009
【表５】
2019528592.tif 000010
【００７２】
＜ＮＡＮＤゲート＞
【表６】
2019528592.tif 000011
【表７】
2019528592.tif 000012
【００７３】
＜ＯＲゲート＞
【表８】
2019528592.tif 000013
【表９】
2019528592.tif 000014
【００７４】
＜ＸＯＲゲート＞
【表１０】
2019528592.tif 000015
【表１１】
2019528592.tif 000016
【００７５】
＜ＸＮＯＲゲート＞
【表１２】
2019528592.tif 000017
【表１３】
2019528592.tif 000018
【００７６】
＜ＮＯＴゲート＞
このゲートは単一入力を有するだけなので、このゲートの実装は、僅かに複雑である。
【表１４】
2019528592.tif 000019
【００７７】
結果として、アンロックスクリプトは次のように変化する。
【数３】
2019528592.tif 000020
【００７８】
単一入力の結果として、以下のブロックの変更が生じる。
【表１５】
2019528592.tif 000021
【００７９】
以下に記載されるように多数の変化する実施形態が提供され得る。
【００８０】
＜変形１：真及び偽信号の生成＞
本実施形態は、実質的に本発明の主題であり得る。
上述の説明は論理ゲートを表す未署名トランザクション・アウトプット（ＵＴＸＯ）が、ゲート条件が真であると評価された場合にのみ使用できるようにした。しかしながら、多くの状況において、回路の実際の出力に関係なく、（異なる受信側アドレスにもかかわらず）アウトプットを使用することが有利である場合がある。
【００８１】
これは、本実施形態を用いて可能である。効率的に、図１に示す実施形態は、図３に示すように変更されて、本願において請求される発明を提供する。本実施形態では、第１トランザクション（Ｔｘ）のＲｅｄｅｅｍスクリプトに供給される追加のパラメータが存在する。この追加パラメータは、パズルであり、又は鍵に埋め込まれた値若しくは（本例におけるように）明示的に供給される値であり得る。これは、ＵＴＸＯを使用すべき制御部の所望の出力を定める。
【００８２】
したがって、単純な論理ゲートでは、制御部は、１回は予測される真の出力と共に、そしてもう１回は予測される偽の出力と共に、同じ署名を用いてトランザクションを２回使用しようとし得る。
【００８３】
Ｒｅｄｅｅｍスクリプトは拡張されて、ゲート計算の終了時に、ゲートのアウトプットの等価チェックを、制御部により要求されたアウトプットに適用する。したがって、以下の通りである。
【００８４】
埋め込みゲートロジックが偽を返し、且つ所望の出力が偽である場合、Ｒｅｄｅｅｍスクリプトは真と評価し、ＵＴＸＯを使用できる；
埋め込みゲートロジックが真を返し、且つ所望の出力が真である場合、Ｒｅｄｅｅｍスクリプトは真と評価し、ＵＴＸＯを使用できる；
埋め込みゲートロジックが真を返し、且つ所望の出力が真である場合、Ｒｅｄｅｅｍスクリプトは偽と評価し、ＵＴＸＯを使用できない；
埋め込みゲートロジックが偽を返し、且つ所望の出力が真である場合、Ｒｅｄｅｅｍスクリプトは偽と評価し、ＵＴＸＯを使用できない。
【００８５】
＜変形スクリプト＞
完全なＲｅｄｅｅｍスクリプトが以下に示される。これは、次に、読者の便宜のために論理コンポーネントに分解される。最初のソリューションからの追加が反転文字で示される（削除は取消線で示される）。
【数４】
2019528592.tif 000022
【００８６】
枠内の命令コードは、データを検証可能なフォーマットにするための署名操作ロジックの上にあるＮＯＲゲートペイロードコードを例示する。
【００８７】
＜ロックスクリプト＞
ロックスクリプトは、標準的なＰａｙ−ｔｏ−Ｓｃｒｉｐｔ−Ｈａｓｈモデルである。
OP_HASH１６０  <Redeem  Script  Hash>  OP_EQUAL
【００８８】
＜アンロックスクリプト＞
このパターンの論理ゲートのためのアンロックスクリプトは、次の通りである：
【数５】
2019528592.tif 000023
ここで、
<Sig-A-Used>は、<Sig-A-True>又は<Sig-A-False>であり、
<Sig-B-Used>は、<Sig-B-True>又は<Sig-B-False>であり、
<Signal-Required>は真又は偽（１又は０）である。
【００８９】
＜変形２：隠された真及び偽信号の生成＞
変形１は、真又は偽条件がスクリプトからシグナリングされたか否かが（Ｒｅｄｅｅｍスクリプトから）公知であるという軽微な欠点を有する。所望の信号を制御部からの署名の中に埋め込むことは、この問題を回避する。変形２では、制御部は、図５に示されるような自身の１次鍵から導出される２個の公開鍵を有する。
【００９０】
＜変形スクリプト＞
完全なＲｅｄｅｅｍスクリプトが以下に示される。これは、次に、論理コンポーネントに分解される。最初のソリューションからの追加が反転文字で示される（削除は取消線で示される）。
【数６】
2019528592.tif 000024
【００９１】
枠内の命令コードは、データを検証可能なフォーマットにするための署名操作ロジックの上にあるＮＯＲゲートペイロードコードを例示する。
【００９２】
＜ロックスクリプト＞
ロックスクリプトは、標準的なＰａｙ−ｔｏ−Ｓｃｒｉｐｔ−Ｈａｓｈモデルである。
OP_HASH１６０  <Redeem  Script  Hash>  OP_EQUAL
【００９３】
＜アンロックスクリプト＞
このパターンの論理ゲートのためのアンロックスクリプトは、次の通りである：
【数７】
2019528592.tif 000025
ここで、
<Sig-A-Used>は、<Sig-A-True>又は<Sig-A-False>であり、
<Sig-B-Used>は、<Sig-B-True>又は<Sig-B-False>であり、
<Sig-Control-Desire>は、<Sig-Control-Desire-True>又は<Sig-Control-Desire-False>である。
【００９４】
＜変形３：単一のコードスタック＞
これらのゲートを、古い（ａｌｔ）スタックを使用しないで、単一スタックを用いて実装することが可能である。
【００９５】
＜Ｒｅｄｅｅｍスクリプト：概要及びＮＯＲ＞
完全なＲｅｄｅｅｍスクリプトが以下に示される。これは、次に、論理コンポーネントに分解される。
【数８】
2019528592.tif 000026
【００９６】
枠内の命令コードは、データを検証可能なフォーマットにするための署名操作ロジックの上にあるＮＯＲゲートペイロードコードを例示する。
【００９７】
全てのスタックは上から下へ順番に示される。
【００９８】
＜ロックスクリプト＞
ロックスクリプトは、標準的なＰａｙ−ｔｏ−Ｓｃｒｉｐｔ−Ｈａｓｈモデルである。
OP_HASH１６０  <Redeem  Script  Hash>  OP_EQUAL
【００９９】
＜アンロックスクリプト＞
このパターンの論理ゲートのためのアンロックスクリプトは次の通りである（署名ブロックの異なる順序に留意する）：
<Sig-B-Used>  <Sig-A-Used>  <Sig-Controller>  <RS  Block  １>
ここで、
<Sig-A-Used>は、<Sig-A-True>又は<Sig-A-False>であり、
<Sig-B-Used>は、<Sig-B-True>又は<Sig-B-False>である。
【０１００】
＜代替ゲート＞
代替論理ゲートを実装するために、枠内の明示的ＮＯＲコードを以下で置き換える。
【表１６】
2019528592.tif 000027
【０１０１】
＜シナリオ：強盗警報設定（ＮＯＲゲート）＞
ＮＯＲゲートを利用する上述の実施形態の単純な例は、強盗警報の設定である。
【０１０２】
本例では、エージェントＡは、扉が開くと真を、閉まると偽を伝達する、搬入口ドアにあるドアセンサである。
【０１０３】
エージェントＢもドアセンサであるが、建物内の金庫にある。エージェントＢも、ドアが開くと真を、閉まると偽を伝達する。制御部は、中央警報システムであり、建物内の全てのドアが閉められた場合にだけ警報を設定する。したがって、制御部は、警報を設定するよう要求されると、種々の監視エージェントにトランザクションをブロードキャストする。トランザクションは、エージェントＡ及びエージェントＢがそれらそれぞれのドアが閉められたことを伝達するときだけ、完了する。
【０１０４】
私達は、上述のように、基本鍵から新しい鍵を生成する技術を以下に説明する。
【０１０５】
＜共有シークレットを用いる鍵の生成＞
以下の技術は、図５〜９を参照して記載される。
【０１０６】
以下の技術を用いて、鍵は、セキュアに保持され又は再生成されて良い。特に、公開鍵を導出するために使用され得る秘密鍵の場合には、秘密鍵は分解して格納されて良い。
【０１０７】
ユーザ、つまりアリス又はボブは彼らの秘密鍵の一部を保持して良く、サービスプロバイダが第２の部分を保持して良く、第３の部分はリモートセキュアサイトに保持されて良い。秘密鍵は、３つの部分のうちの任意の２つを用いて再構成されて良い。あるいは、より一般的には、秘密鍵が、ｎ個の部分のうちの任意のｍ個を用いて再構成されて良い。
【０１０８】
秘密鍵は、再構成可能な場合、使用点において公開鍵を再生成するために使用でき、秘密鍵及び公開鍵は使用後に再び廃棄できる。
【０１０９】
秘密鍵の分離は、シャミアの秘密分散法（Shamir’s  Secret  Sharing  Scheme）を用いて達成されて良い。秘密鍵−公開鍵ペアは、以下の方法を用いてマスタ鍵から確定的に導出できる。この方法は、シークレット値がそれらを送信することなく参加者により共有されることを可能にする。
【０１１０】
システムは、以下に記載するサブキー生成の方法を用いて参加者の公開鍵を生成して良い。
【０１１１】
図５は、通信ネットワーク５を介して第２ノード７と通信する第１ノード３を含むシステム１を示す。第１ノード３は関連する第１処理装置２３を有し、及び第２ノード５は関連する第２処理装置２７を有する。第１及び第２ノード３、７は、コンピュータ、電話機、タブレットコンピュータ、モバイル通信装置、コンピュータサーバ、等のような電子装置を含んで良い。一例では、第１ノード３はクライアント（ユーザ）装置であって良く、第２ノード７はサーバであって良い。サーバは、デジタルウォレットプロバイダのサーバであって良い。
【０１１２】
第１ノード３は、第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードマスタ公開鍵（Ｐ１Ｃ）を有する第１非対称暗号対に関連付けられる。第２ノード（７）は、第２ノードマスタ秘密鍵（Ｖ１Ｓ）及び第２ノードマスタ公開鍵（Ｐ１Ｓ）を有する第２非対称暗号対に関連付けられる。言い換えると、第１及び第２ノードは、それぞれ、個々の公開鍵−秘密鍵ペアを保有する。
【０１１３】
個々の第１及び第２ノード３、７の第１及び第２非対称暗号対は、ウォレットの登録のような登録処理中に生成されて良い。各ノードの公開鍵は、通信ネットワーク５に渡るように、公に共有されて良い。
【０１１４】
第１ノード３及び第２ノード７の両者において共通シークレット（common  secret：ＳＣ）を決定するために、ノード３、７は、通信ネットワーク５を介して秘密鍵を通信することなく、それぞれ方法３００、４００のステップを実行する。
【０１１５】
第１ノード３により実行される方法３００は、少なくとも第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び生成器値（Generator  Value：ＧＶ）に基づき、第１ノード第２秘密鍵（Ｖ２Ｃ）を決定するステップ３３０を含む。生成器値は、第１ノードと第２ノードとの間で共有されるメッセージ（Ｍ）に基づいて良い。これは、以下に詳述するように、通信ネットワーク５を介してメッセージを共有するステップを含んで良い。方法３００は、少なくとも第２ノードマスタ公開鍵（Ｐ１Ｓ）及び生成器値（Generator  Value：ＧＶ）に基づき、第２ノード第２公開鍵（Ｐ２Ｓ）を決定するステップ３７０を更に含む。方法３００は、第１ノード第２秘密鍵（Ｖ２Ｃ）及び第２ノード第２公開鍵（Ｐ２Ｓ）に基づき、共通シークレット（common  secret：ＣＳ）を決定するステップ３８０を含む。
【０１１６】
重要なことに、同じ共通シークレット（ＣＳ）が、方法４００により第２ノード７においても決定できる。方法４００は、第１ノードマスタ公開鍵（Ｐ１Ｃ）及び生成器値（Generator  Value：ＧＶ）に基づき、第１ノード第２公開鍵（Ｐ２Ｃ）を決定するステップ４３０を含む。方法４００は、第２ノードマスタ秘密鍵（Ｖ１Ｓ）及び生成器値（Generator  Value：ＧＶ）に基づき、第２ノード第２秘密鍵（Ｖ２Ｓ）を決定するステップ４７０を更に含む。方法４００は、第２ノード第２秘密鍵（Ｖ２Ｓ）及び第１ノード第２公開鍵（Ｐ２Ｃ）に基づき、共通シークレット（common  secret：ＣＳ）を決定するステップ４８０を含む。
【０１１７】
通信ネットワーク５は、ローカルエリアネットワーク、ワイドエリアネットワーク、セルラネットワーク、無線通信ネットワーク、インターネット、等を含んで良い。これらのネットワークでは、データは電気線、光ファイバ、又は無線のような通信媒体を介して送信されて良く、盗聴者１１による様な盗聴を受けやすい場合がある。方法３００、４００は、通信ネットワーク５を介して共通シークレットを送信することなく、第１ノード３及び第２ノード７が共通シークレットを両方とも独立して決定できるようにする。
【０１１８】
したがって、１つの利点は、安全でない可能性のある通信ネットワーク５を介して秘密鍵を送信する必要を有しないで、共通シークレット（ＣＳ）が安全に且つ各ノードにより独立して決定できることである。また、共通シークレットは、秘密鍵として（又は秘密鍵の基礎として）使用されて良い。
【０１１９】
方法３００、４００は、追加ステップを含んで良い。方法３００は、第１ノード３において、メッセージ（Ｍ）及び第１ノード第２秘密鍵（Ｖ２Ｃ）に基づき、署名メッセージ（ＳＭ１）を生成するステップを含んで良い。方法３００は、第１署名メッセージ（ＳＭ１）を通信ネットワークを介して第２ノード７へ送信するステップ３６０を更に含む。一方、第２ノード７は、第１署名メッセージ（ＳＭ１）を受信するステップ４４０を実行して良い。方法４００は、第１署名メッセージ（ＳＭ２）を第１ノード第２公開鍵（Ｐ２Ｃ）により検証するステップ４５０、及び第１署名メッセージ（ＳＭ１）を検証するステップの結果に基づき第１ノード３を認証するステップ４６０を更に含む。有利なことに、これは、第２ノード７が、（第１署名メッセージが生成された場所である）意図された第１ノードが第１ノード３であることを認証することを可能にする。これは、第１ノード３だけが、第１ノードマスタ秘密鍵（Ｖ１Ｃ）へのアクセスを有する、したがって、第１ノード３だけが、第１署名メッセージ（ＳＭ１）を生成するための第１ノード第２秘密鍵（Ｖ２Ｃ）を決定できるという仮定に基づく。理解されるべきことに、同様に、第２署名メッセージ（ＳＭ２）は、第２ノード７において生成され、第１ノード３へ送信され得る。したがって、ピアツーピアシナリオにおけるように、第１ノード３は、第２ノード７を認証できる。
【０１２０】
第１ノードと第２ノードの間のメッセージ（Ｍ）の共有は、様々な方法で達成されて良い。一例では、メッセージは、第１ノード３において生成されて良く、次に通信ネットワーク５を介して第２ノード７へ送信される。代替として、メッセージは、第２ノード７において生成されて良く、次に通信ネットワーク５を介して第１ノード３へ送信される。幾つかの例では、メッセージ（Ｍ）は公開されて良く、したがってセキュアでないネットワーク５を介して送信されて良い。１又は複数のメッセージ（Ｍ）は、データストア１３、１７、１９に格納されて良い。当業者は、メッセージの共有が様々な方法で達成できることを理解する。
【０１２１】
有利なことに、共通シークレット（ＣＳ）の再生成を可能にするレコードは、そのレコード自体が秘密に格納され又はセキュアに送信される必要がなく、保持され得る。
【０１２２】
＜登録の方法１００、２００＞
登録の方法１００、２００の一例が以下に記載される。ここで、方法１００は第１ノード３により実行され、方法２００は第２ノード７により実行される。これは、それぞれ第１ノード３及び第２ノード７のために第１及び第２非対称暗号対を確立するステップを含む。非対称暗号対は、公開鍵暗号化で使用されるような、関連付けられた秘密鍵及び公開鍵を含む。本例では、非対称暗号対は、楕円曲線暗号システム（Elliptic  Curve  Cryptography：ＥＣＣ）及び楕円曲線演算の特性を用いて生成される。
【０１２３】
方法１００、２００では、これは、共通ＥＣＣシステムに合意している１１０、２１０、且つ基点（Ｇ）を用いる、第１ノード及び第２ノードを含む（注：基点は、共通生成器として参照され得るが、用語「基点」は、生成器値ＧＶとの混同を避けるために使用される）。一例では、共通ＥＣＣシステムは、ビットコインにより使用されるＥＣＣシステムであるｓｅｃｐ２５６Ｋ１に基づいて良い。基点（Ｇ）は、選択され、ランダムに生成され、又は割り当てられて良い。
【０１２４】
ここで第１ノード３について考えると、方法１００は、共通ＥＣＣシステム及び基点（Ｇ）を解決するステップ１１０を含む。これは、第２ノード７又は第３ノード９から、共通ＥＣＣシステム及び基点を受信するステップを含んで良い。代替として、ユーザインタフェース１５は、第１ノード３に関連付けられる。これにより、ユーザは、共通ＥＣＣシステム及び／又は基点（Ｇ）を選択的に提供できる。更に別の代替案では、共通ＥＣＣシステム及び／又は基点（Ｇ）の一方又は両方が、第１ノード３によりランダムに選択されて良い。第１ノード３は、通信ネットワーク５を介して、基点（Ｇ）と共に共通ＥＣＣシステムを使用することを示す通知を、第２ノード７へ送信して良い。また、第２ノード７は、共通ＥＣＣシステム及び基点（Ｇ）の使用に対する肯定応答を示す通知を送信することにより、解決して良い２１０。
【０１２５】
方法１００は、第１ノード３が、第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードマスタ公開鍵（Ｐ１Ｃ）を有する第１非対称暗号対を生成するステップ１２０を更に含む。これは、共通ＥＣＣシステムの中で指定された許容範囲の中のランダム整数に少なくとも部分的に基づき、第１マスタ秘密鍵（Ｖ１Ｃ）を生成するステップを含む。これは、次式に従い第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び基点（Ｇ）の楕円曲線点乗算に基づき、第１ノードマスタ公開鍵（Ｐ１Ｃ）を決定するステップを更に含む。
Ｐ１Ｃ＝Ｖ１Ｃ×Ｇ  （式１）
【０１２６】
したがって、第１非対称暗号対は、以下を含む：
Ｖ１Ｃ：第１ノードにより秘密に保持される第１ノードマスタ秘密鍵。
Ｐ１Ｃ：公に知らされる第１ノードマスタ公開鍵。
【０１２７】
第１ノード３は、第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードマスタ公開鍵（Ｐ１Ｃ）を、第１ノード３に関連付けられた第１データストア１３に格納して良い。セキュリティのために、第１ノードマスタ秘密鍵（Ｖ１Ｃ）は、鍵が秘密のままであることを保証するために、第１データストア１３のセキュアな部分に格納されて良い。
【０１２８】
方法１００は、図６に示すように、第１ノードマスタ公開鍵（Ｐ１Ｃ）を通信ネットワーク５を介して第２ノード７へ送信するステップ１３０を更に含む。第２ノード７は、第１ノードマスタ公開鍵（Ｐ１Ｃ）を受信すると２２０、第１ノードマスタ公開鍵（Ｐ１Ｃ）を第２ノード７に関連付けられた第２データストア１７に格納して良い２３０。
【０１２９】
第１ノード３と同様に、第２ノード７の方法２００は、第２ノードマスタ秘密鍵（Ｖ１Ｓ）及び第２ノードマスタ公開鍵（Ｐ１Ｓ）を有する第２非対称暗号対を生成するステップ２４０を含む。第２ノードマスタ秘密鍵（Ｖ１Ｓ）も、許容範囲内のランダム整数である。また、第２ノードマスタ公開鍵（Ｐ１Ｓ）は、次式により決定される。
Ｐ１Ｓ＝Ｖ１Ｓ×Ｇ  （式２）
【０１３０】
したがって、第２非対称暗号対は、以下を含む：
Ｖ１Ｓ：第２ノードにより秘密に保持される第２ノードマスタ秘密鍵。
Ｐ１Ｓ：公に知らされる第２ノードマスタ公開鍵。
【０１３１】
第２ノード７は、第２非対称暗号対を第２データストア１７に格納して良い。方法２００は、第２ノードマスタ公開鍵（Ｐ１Ｓ）を第１ノード３へ送信するステップ２５０を更に含む。また、第１ノード３は、第２ノードマスタ公開鍵（Ｐ１Ｓ）を受信し１４０、格納して良い１５０。
【０１３２】
理解されるべきことに、幾つかの代案では、それぞれの公開マスタ鍵は、受信され、（信頼できる第三者のような）第３ノード９に関連付けられた第３データストア１９に格納されて良い。これは、認証機関のような、公開ディレクトリとして動作する第三者を含んで良い。したがって、幾つかの例では、第１ノードマスタ公開鍵（Ｐ１Ｃ）は、共通シークレット（ＣＳ）が要求されるときだけ、第２ノード７により要求され受信されて良い（逆も同様である）。
【０１３３】
登録ステップは、初期設定として１度生じるだけで良い。
【０１３４】
＜セッション開始及び第１ノード３による共通シークレットの決定＞
共通シークレット（ＣＳ）を決定する一例が以下に記載される。共通シークレット（ＣＳ）は、第１ノード３と第２ノード７との間の特定のセッション、時間、トランザクション、又は他の目的のために使用されて良く、同じ共通シークレット（ＣＳ）を使用することが望ましい又はセキュアでなくて良い。したがって、共通シークレット（ＣＳ）は、異なるセッション、時間、トランザクション、等の間で変更されて良い。
【０１３５】
以下は、上述したセキュアな送信技術の説明のために提供される。
【０１３６】
［メッセージ（Ｍ）を生成する３１０］
本例では、第１ノード３により実行される方法３００は、メッセージ（Ｍ）を生成するステップ３１０を含む。メッセージ（Ｍ）は、ランダム、疑似ランダム、又はユーザ定義であって良い。一例では、メッセージ（Ｍ）は、Ｕｎｉｘ時間又はノンス（及び任意の値）に基づく。例えば、メッセージ（Ｍ）は次のように与えられ得る。
メッセージ（Ｍ）＝Ｕｎｉｘ時間＋ノンス    （式３）
【０１３７】
幾つかの例では、メッセージ（Ｍ）は任意である。しかしながら、理解されるべきことに、メッセージ（Ｍ）は、幾つかのアプリケーションで有用であり得る（Ｕｎｉｘ時間、等のような）選択的値を有して良い。
【０１３８】
方法３００は、メッセージ（Ｍ）を通信ネットワーク３を介して第２ノード７へ送信するステップ３１５を含む。メッセージ（Ｍ）は秘密鍵についての情報を含まないので、メッセージ（Ｍ）は、セキュアでないネットワークを介して送信されて良い。
【０１３９】
［生成器値（ＧＶ）を決定する３２０］
方法３００は、メッセージ（Ｍ）に基づき生成器値（Generator  Value：ＧＶ）を決定するステップ３２０を更に含む。本例では、これは、メッセージの暗号ハッシュを決定するステップを含む。暗号ハッシュアルゴリズムの一例は、２５６ビット発生器値（ＧＶ）を生成するためにＳＨＡ−２５６を含む。つまり、
ＧＶ＝ＳＨＡ−２５６（Ｍ）    （式４）
【０１４０】
理解されるべきことに、他のハッシュアルゴリズムが使用されて良い。これは、セキュアなハッシュアルゴリズム（Secure  Hash  Algorithm：ＳＨＡ）ファミリの中の他のハッシュアルゴリズムを含んで良い。幾つかの特定の例は、ＳＨＡ３−２２４、ＳＨＡ３−２５６、ＳＨＡ３−３８４、ＳＨＡ３−５１２、ＳＨＡＫＥ１２８、ＳＨＡＫＥ２５６を含むＳＨＡ−３サブセットの中のインスタンスを含む。他のハッシュアルゴリズムは、ＲＩＰＥＭＤ（RACE  Integrity  Primitives  Evaluation  Message  Digest）ファミリの中のアルゴリズムを含んで良い。特定の例は、ＲＩＰＥＭＤ−１６０を含んで良い。他のハッシュ関数は、Ｚｅｍｏｒ−Ｔｉｌｌｉｃｈハッシュ関数及びナップサック・ハッシュ関数に基づくファミリを含んで良い。
【０１４１】
［第１ノード第２秘密鍵を決定する３３０］
方法３００は、次に、第２ノードマスタ秘密鍵（Ｖ１Ｃ）及び生成器値（ＧＶ）に基づき、第１ノード第２秘密鍵（Ｖ２Ｃ）を決定するステップ３３０を含む。これは、次式に従い第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び生成器値（ＧＶ）のスカラ加算に基づき得る。
Ｖ２Ｃ＝Ｖ１Ｃ＋ＧＶ    （式５）
【０１４２】
したがって、第１ノード第２秘密鍵（Ｖ２Ｃ）は、ランダム値ではないが、代わりに第１ノードマスタ秘密鍵から確定的に導出される。暗号対の中の対応する公開鍵、つまり第１ノード第２公開鍵（Ｐ２Ｃ）は、以下の関係を有する。
Ｐ２Ｃ＝Ｖ２Ｃ×Ｇ  （式６．１）
【０１４３】
式５から式６にＶ２Ｃを代入すると、次式を得る。
Ｐ２Ｃ＝（Ｖ１Ｃ＋ＧＶ）×Ｇ    （式７）
【０１４４】
ここで、「＋」演算子は楕円曲線点加算を表す。楕円曲線暗号代数は、分配的であり、式７は次式のように表すことができる。
Ｐ２Ｃ＝Ｖ１Ｃ×Ｇ＋ＧＶ×Ｇ    （式８）
【０１４５】
最後に、（式１）は（式７）に代入され、次式を得る。
Ｐ２Ｃ＝Ｐ１Ｃ＋ＧＶ×Ｇ    （式９．１）
Ｐ２Ｃ＝Ｐ１Ｃ＋ＳＨＡ−２５６（Ｍ）×Ｇ    （式９．２）
【０１４６】
したがって、対応する第１ノード第２公開鍵（Ｐ２Ｃ）は、第１ノードマスタ公開鍵（Ｐ１Ｃ）及びメッセージ（Ｍ）の導出可能な所与の知識であり得る。方法４００に関して以下に更に詳述するように、第２ノード７は、第１ノード第２公開鍵（Ｐ２Ｃ）を独立に決定するために、このような知識を有して良い。
【０１４７】
［メッセージ及び第１ノード第２秘密鍵に基づき、第１署名メッセージ（ＳＭ１）を生成する３５０］
方法３００は、メッセージ（Ｍ）及び決定した第１ノード第２秘密鍵（Ｖ２Ｃ）に基づき、第１署名メッセージ（ＳＭ１）を生成するステップ３５０を更に含む。署名メッセージを生成するステップは、メッセージ（Ｍ）にデジタル方式で署名するために、デジタル署名アルゴリズムを適用するステップを含む。一例では、これは、第１署名メッセージ（ＳＭ１）を得るために、楕円曲線デジタル署名アルゴリズム（Elliptic  Curve  Digital  Signature  Algorithm：ＥＣＤＳＡ）の中でメッセージに第１ノード第２秘密鍵（Ｖ２Ｃ）を適用するステップを含む。ＥＣＤＳＡの例は、ｓｅｃｐ２５６ｋ１、ｓｅｃｐ２５６ｒ１、ｓｅｃｐ３８４ｒ１、ｓｅ３ｃｐ５２１ｒ１を有するＥＣＣシステムに基づくものを含む。
【０１４８】
第１署名メッセージ（ＳＭ１）は、第２ノード７において対応する第１ノード第２公開鍵（Ｐ２Ｃ）により検証できる。第１署名メッセージ（ＳＭ１）のこの検証は、第１ノード３を認証するために第２ノード７により使用されて良い。これは、方法４００において以下に議論される。
【０１４９】
［第２ノード第２公開鍵を決定する３７０’］
第１ノード３は、次に、第２ノード第２公開鍵（Ｐ２Ｓ）を決定して良い３７０。上述のように、第２ノード第２公開鍵（Ｐ２Ｓ）は、少なくとも第２ノードマスタ公開鍵（Ｐ１Ｓ）及び生成器値（ＧＶ）に基づいて良い。本例では、公開鍵は、基点（Ｇ）との楕円曲線点乗算により秘密鍵として決定されるので３７０’、第２ノード第２公開鍵（Ｐ２Ｓ）は、式６と同様に次のように表すことができる。
Ｐ２Ｓ＝Ｖ２Ｓ×Ｇ  （式１０．１）
Ｐ２Ｓ＝Ｐ１Ｓ＋ＧＶ×Ｇ    （式１０．２）
【０１５０】
式１０．２の数学的証明は、第１ノード第２公開鍵（Ｐ２Ｃ）について式９．１を導出するために上述したものと同じである。理解されるべきことに、第１ノード３は、第２ノード７と独立に第２ノード第２公開鍵を決定できる３７０。
【０１５１】
［第１ノード３において共通シークレットを決定する３８０］
第１ノード３は、次に、第１ノード第２秘密鍵（Ｖ２Ｃ）及び決定した第２ノード第２公開鍵（Ｐ２Ｓ）に基づき、共通シークレット（ＣＳ）を決定して良い３８０。共通シークレット（ＣＳ）は、第１ノード３により次式により決定されて良い。
Ｓ＝Ｖ２Ｃ×Ｐ２Ｓ    （式１１）
【０１５２】
＜第２ノード７において実行される方法４００＞
第２ノード７において実行される対応する方法４００が、ここで説明される。理解されるべきことに、これらのステップのうちの幾つかは、第１ノード３により実行された上述のステップと同様である。
【０１５３】
方法４００は、メッセージ（Ｍ）を通信ネットワーク５を介して第１ノード３から受信するステップ４１０を含む。これは、ステップ３１５において第１ノード３により送信されたメッセージ（Ｍ）を含んで良い。第２ノード７は、次に、メッセージ（Ｍ）に基づき生成器値（ＧＶ）を決定する４２０。第２ノード７により生成器値（ＧＶ）を決定するステップ４２０は、上述の第１ノードにより実行されるステップ３２０と同様である。本例では、第２ノード７は、第１ノード３と独立の、この決定するステップ４２０を実行する。
【０１５４】
次のステップは、第１ノードマスタ公開鍵（Ｐ１Ｃ）及び生成器値（ＧＶ）に基づき、第１ノード第２公開鍵（Ｐ２Ｃ）を決定するステップ４３０を含む。本例では、公開鍵は、基点（Ｇ）との楕円曲線点乗算により秘密鍵として決定されるので４３０’、第１ノード第２公開鍵（Ｐ２Ｃ）は、式９と同様に次のように表すことができる。
Ｐ２Ｃ＝Ｖ２Ｃ×Ｇ  （式１２．１）
Ｐ２Ｃ＝Ｐ１Ｃ＋ＧＶ×Ｇ    （式１２．２）
【０１５５】
式１２．１及び１２．２の数学的証明は、式１０．１及び１０．２について上述したものと同じである。
【０１５６】
［第２ノード７が第１ノード３を認証する］
方法４００は、未確認第１ノード３が第１ノード３であることを認証するために、第２ノード７により実行されるステップを含んで良い。上述のように、これは、第１ノード３から第１署名メッセージ（ＳＭ１）を受信するステップ４４０を含む。第２ノード７は、次に、ステップ４３０で決定された第１ノード第２公開鍵（Ｐ２Ｃ）により第１署名メッセージ（ＳＭ１）の署名を検証して良い４５０。
【０１５７】
デジタル署名の検証は、上述の楕円曲線デジタル署名アルゴリズム（Elliptic  Curve  Digital  Signature  Algorithm：ＥＣＤＳＡ）に従い行われて良い。重要なことに、第１ノード第２秘密鍵（Ｖ２Ｃ）により署名された第１署名メッセージ（ＳＭ１）は、Ｖ２Ｃ及びＰ２Ｃが暗号対を形成するので、対応する第１ノード第２公開鍵（Ｐ２Ｃ）によってのみ正しく検証されるべきである。これらの鍵は、第１ノード３の登録で生成された第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードマスタ公開鍵（Ｐ１Ｃ）において確定するので、第１署名メッセージ（ＳＭ１）の検証は、第１署名メッセージ（ＳＭ１）を送信する未確認第１ノードが登録中と同じ第１ノード３であることを認証する基礎として使用できる。したがって、第２ノード７は、第１署名メッセージを検証するステップ（４５０）の結果に基づき、第１ノード３を認証するステップ（４６０）を更に実行して良い。
【０１５８】
［第２ノード７が共通シークレットを決定する］
方法４００は、第２ノード７が、第２ノードマスタ秘密鍵（Ｖ１Ｓ）及び生成器値（ＧＶ）に基づき、第２ノード第２秘密鍵（Ｖ２Ｓ）を決定するステップ４７０を更に含んで良い。第１ノード３により実行されるステップ３３０と同様に、第２ノード第２秘密鍵（Ｖ２Ｓ）は、次式に従い、第２ノードマスタ秘密鍵（Ｖ１Ｓ）及び生成器値（ＧＶ）のスカラ加算に基づき得る。
Ｖ２Ｓ＝Ｖ１Ｓ＋ＧＶ    （式１３．１）
Ｖ２Ｓ＝Ｖ１Ｓ＋ＳＨＡ−２５６（Ｍ）    （式１３．２）
【０１５９】
第２ノード７は、次に、第１ノード３と独立して、次式に基づき、第２ノード第２秘密鍵（Ｖ２Ｓ）及び第１ノード第２公開鍵（Ｐ２Ｃ）に基づき、共通シークレット（ＣＳ）を決定して良い４８０。
Ｓ＝Ｖ２Ｓ×Ｐ２Ｃ  （式１４）
【０１６０】
［第１ノード３及び第２ノード７により決定された共通シークレット（ＣＳ）の証明］
第１ノード３により決定された共通シークレット（ＣＳ）は、第２ノード７において決定された共通シークレット（ＣＳ）と同じである。式１１及び式１４が同じ共通シークレット（ＣＳ）を提供することの数学的証明が、ここで記載される。
【０１６１】
第１ノード３により決定された共通シークレット（ＣＳ）を考えると、次のように式１０．１は式１１に代入できる。
Ｓ＝Ｖ２Ｃ×Ｐ２Ｓ    （式１１）
Ｓ＝Ｖ２Ｃ×（Ｖ２Ｓ×Ｇ）
Ｓ＝（Ｖ２Ｃ×Ｖ２Ｓ）×Ｇ  （式１５）
【０１６２】
第２ノード７により決定された共通シークレット（ＣＳ）を考えると、次のように式１２．１は式１４に代入できる。
Ｓ＝Ｖ２Ｓ×Ｐ２Ｃ  （式１４）
Ｓ＝Ｖ２Ｓ×（Ｖ２Ｃ×Ｇ）
Ｓ＝（Ｖ２Ｓ×Ｖ２Ｃ）×Ｇ  （式１６）
【０１６３】
ＥＣＣ代数学は可換性なので、次の通り式１５及び式１６は等価である。
Ｓ＝（Ｖ２Ｃ×Ｖ２Ｓ）×Ｇ＝（Ｖ２Ｓ×Ｖ２Ｃ）×Ｇ    （式１７）
【０１６４】
［共通シークレット（ＣＳ）及び秘密鍵］
共通シークレット（ＣＳ）は、ここで、第１ノード３と第２ノード７との間のセキュアな通信のために、対称鍵アルゴリズムにおいて、秘密鍵として又は秘密鍵の基礎として、使用できる。
【０１６５】
共通シークレット（ＣＳ）は、楕円曲線点（ｘＳ，ｙＳ）の形式であって良い。これは、ノード３、７により合意された標準的な公に知られた演算を用いて、標準的な鍵フォーマットに変換されて良い。例えば、ｘＳ値は、ＡＥＳ２５６暗号鍵として使用され得る２５６ビットの整数であって良い。これは、更に、１６０ビットの長さの鍵を必要とする任意のアプリケーションのために、ＲＩＰＥＭＤ１６０を用いて１６０ビットの整数に変換され得る。
【０１６６】
共通シークレット（ＣＳ）は、必要に応じて決定されて良い。重要なことに、共通シークレット（ＣＳ）はメッセージ（Ｍ）に基づき再決定できるので、第１ノード３は共通シークレット（ＣＳ）を格納する必要がない。幾つかの例では、使用されるメッセージ（Ｍ）は、マスタ秘密鍵のために要求されるのと同レベルのセキュリティを有しないデータストア１３、１７、１９（又は他のデータストア）に格納されて良い。幾つかの例では、メッセージ（Ｍ）は公に利用可能であって良い。
【０１６７】
しかしながら、幾つかのアプリケーションに依存して、共通シークレット（ＣＳ）が第１ノードマスタ秘密鍵（Ｖ１Ｃ）と同じくらいセキュアに保たれるならば、共通シークレット（ＣＳ）は、第１ノードに関連付けられた第１データストア（Ｘ）に格納され得る。
【０１６８】
有利なことに、この技術は、単一のマスタキー暗号対に基づき、複数のセキュアな秘密鍵に対応し得る複数の共通シークレットを決定するために使用できる。
【０１６９】
留意すべきことに、上述の実施形態は、本発明を限定するのではなく、当業者は添付の請求項により定められる本発明の範囲から逸脱することなく多数の代替の実施形態を考案できる。請求項中、括弧内に記載された如何なる参照符号も、請求項を制限すると見なされるべきではない。用語「有する（comprising又はcomprises）」等は、全体としていかなる請求項中に及び明細書に列挙された以外の要素又はステップの存在を排除するものではない。本願明細書において、「有する（comprises）」は「含む（includes）又は構成される（consists  of）」を意味し、「有する（comprising）」は「含む（including）又は構成される（including  of）」を意味する。要素の単数の参照は、該要素の複数の存在を排除するものではなく、逆も同様である。本発明は、複数の別個の要素を有するハードウェアにより又は適切にプログラムされたコンピュータにより、実施され得る。複数の手段を列挙している装置の請求項では、これらの複数の手段は、１つの同一のハードウェア要素により実装することができる。特定の量が相互に異なる従属請求項に記載されるという事実は、これらの量の組合せが有利に用いることが出来ないことを示すものではない。
【図１】
2019528592.tif 000028
【図２】
2019528592.tif 000029
【図３】
2019528592.tif 000030
【図４】
2019528592.tif 000031
【図５】
2019528592.tif 000032
【図６】
2019528592.tif 000033
【図７】
2019528592.tif 000034
【図８】
2019528592.tif 000035
【図９】
2019528592.tif 000036
【図１０】
2019528592.tif 000037
【国際調査報告】
2019528592.tif 000038
2019528592.tif 000039
2019528592.tif 000040