(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023113899
(43)【公開日】2023-08-16
(54)【発明の名称】ブロックチェーンにより実装される方法及びシステム
(51)【国際特許分類】
H04L 9/32 20060101AFI20230808BHJP
【FI】
H04L9/32 200Z
【審査請求】有
【請求項の数】19
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023095303
(22)【出願日】2023-06-09
(62)【分割の表示】P 2021197655の分割
【原出願日】2017-07-21
(31)【優先権主張番号】1613177.3
(32)【優先日】2016-07-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1613188.0
(32)【優先日】2016-07-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1613148.4
(32)【優先日】2016-07-29
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】アレン,ギャヴィン
(57)【要約】 (修正有)
【課題】ロジックの一部の実行を記録する又は表現するために、タスク又はプロセスを実施し、制御し、及び/又は自動化する方法及びシステムを提供する。
【解決手段】方法は、ブロックチェーントランザクションに含まれるredeemスクリプトがそれぞれが対応する秘密鍵に関連付けられ、エージェントがredeemスクリプトを生成する制御エージェントと通信し、制御エージェントが基本鍵を提供し、アウトプットを使用するために最小数の秘密鍵が更なるトランザクションのアンロックスクリプトに署名するために使用され、中間結果を提供するために複数の関連付けられた秘密鍵のうちのどれがアンロックスクリプトに署名するために使用されるかの決定し、及びアンロックスクリプトにより提供されるパラメータの中間結果との比較に基づき結果を提供し、異なるパラメータを提供してトランザクションのアウトプットを1回より多く使用しようと試みる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コンピュータにより実施される制御方法であって、
ブロックチェーン・ネットワークのためのブロックチェーン・トランザクションを提供するステップであって、前記ブロックチェーン・トランザクションはアウトプットに対するRedeemスクリプトを含み、前記Redeemスクリプトは、
i)複数の公開鍵であって、各々が対応する秘密鍵に関連付けられ、各公開鍵は、少なくとも1つのデータソースの可能な状態にユニークに関連付けられ、前記少なくとも1つのデータソースは、ブロックチェーンにより直接制御される複数のコンピューティングエージェントに関連付けられたセンサ又は信号生成コンポーネントを含み、前記コンピューティングエージェントの各々は、
前記センサ又は信号生成コンポーネントを介して前記少なくとも1つのデータソースの個別の可能な状態を監視して、前記少なくとも1つのデータソースの状態を示す入力を提供し、
各々の可能な状態について、個別の秘密鍵を導出する、
よう構成され、前記アウトプットを使用するために、最小数の前記秘密鍵が更なるブロックチェーン・トランザクションのアンロックスクリプトに署名するために使用されなければならい、複数の公開鍵と、
ii)ロジックであって、以下:
中間結果を提供するために、前記秘密鍵のうちのどれが前記アンロックスクリプトに署名するために使用されるかの決定、及び
前記アンロックスクリプトにより提供されるパラメータの前記中間結果に対する比較、
に基づき結果を提供するよう構成される、ロジックと、
を含む、ステップと、
前記ブロックチェーン・トランザクションの前記アウトプットを1回より多く使用しようと試みるステップであって、各試みは異なるパラメータを提供する、ステップと、
を含む方法。
【請求項2】
前記ロジックは、論理ゲートの機能を実装するよう構成される、請求項1に記載の方法。
【請求項3】
前記論理ゲートは、NOT、AND、OR、NOR、XOR、IMPLY、NAND、NONIMPLY、又はXNORゲートである、請求項2に記載の方法。
【請求項4】
前記少なくとも1つのデータソースの状態は、前記コンピューティングエージェントにより決定される、請求項1~3のいずれかに記載の方法。
【請求項5】
前記コンピューティングエージェントは制御コンピューティングエージェントと通信する、請求項4に記載の方法。
【請求項6】
前記結果はブール結果である、請求項1~5のいずれかに記載の方法。
【請求項7】
少なくとも2個のデータソースがある、請求項1~6のいずれかに記載の方法。
【請求項8】
各データソースについて各々2個の可能な状態があり、各可能な状態は、公開鍵に関連付けられ又はそれにより表される、請求項1~7のいずれかに記載の方法。
【請求項9】
前記少なくとも1つのデータソースの各々について、
前記複数の公開鍵のうちの1つの公開鍵を前記データソースの可能な状態に関連付けるステップを含み、
前記データソースの全部の可能な状態が、各々の公開鍵により表されるようにする、請求項1~8のいずれかに記載の方法。
【請求項10】
各公開鍵は、前記少なくとも1つのデータソースの可能な状態を示すブール値を表す、請求項1~9のいずれかに記載の方法。
【請求項11】
前記パラメータは、値、又はパズル、又は鍵に埋め込まれた値である、請求項1~10のいずれかに記載の方法。
【請求項12】
前記ロジックは、前記中間結果を前記パラメータと比較するために同等性チェックを実行するよう構成される、請求項1~11のいずれかに記載の方法。
【請求項13】
前記中間結果は、前記Redeemスクリプト内で提供される前記ロジックから導出される、及び/又は前記アンロックスクリプトに署名するためにどの鍵が使用されたかを決定することにより計算されるブール値である、請求項1~12のいずれかに記載の方法。
【請求項14】
基本又はマスタ鍵から、前記複数の鍵のうちの1つ以上を生成又は導出するステップ、を更に含む請求項1~13のいずれかに記載の方法。
【請求項15】
前記鍵を生成又は導出するステップは、決定論的鍵生成技術を用いて実行される、請求項14に記載の方法。
【請求項16】
コンピュータにより実装されるシステムであって、
請求項1~15のいずれかに記載のステップを実行するよう構成される少なくとも1つのコンピュータに基づくリソースと、
ブロックチェーンと、
を含むシステム。
【請求項17】
前記少なくとも1つのコンピュータに基づくリソースは、
ブロックチェーン・ネットワークにトランザクションを提出し、
トランザクションを生成し、
ロックスクリプトにデジタル署名し、及び/又は、
公開/秘密暗号鍵を生成する、
よう構成される、請求項16に記載のコンピュータにより実装されるシステム。
【請求項18】
前記結果は、処理又は機器の実行又は動作を制御し又は影響を与えるために使用される、請求項16又は17に記載のシステム。
【請求項19】
前記少なくとも1つのコンピュータに基づくリソースに入力を提供するよう配置され及び構成される少なくとも1つのセンサ又は信号生成コンポーネント、を更に含む請求項16~18のいずれかに記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、分散型台帳技術(ブロックチェーン関連技術を含む)に関し、特に、タスク又はプロセスを実施し、制御し、及び/又は自動化する際のブロックチェーンの使用に関する。本発明は、ロジックの一部の実行を記録する又は表現するための、ブロックチェーン又は関連技術の使用に関し得る。ロジックのこの部分は、AND、XOR、NOT、OR、等のような1つの論理ゲート又は複数の論理ゲートの機能を実装するために構成されて良い。
【背景技術】
【0002】
本願明細書では、この状況でブロックチェーンが現在最も広く知られた用語なので、私達は、便宜上及び参照の容易さのために用語「ブロックチェーン」を使用することに留意することが重要である。しかしながら、当該用語は、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳及びそれらの変形を含むがこれらに限定されない、電子的な、コンピュータに基づく分散型台帳の全ての形式を包含するために、ここで(請求項を含む)使用される。
【0003】
ブロックチェーンは、ブロックにより構成される、コンピュータに基づく非集中型の分散型システムとして実装される電子台帳である。また、ブロックはトランザクションにより構成される。各トランザクションは、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、ブロックは共にチェーンになって、その発端からブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能なレコードを生成する。トランザクションは、そのインプット及びアウトプットに埋め込まれたスクリプトとして知られる小さなプログラムを含む。スクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。ビットコインプラットフォーム上で、これらのスクリプトは、スタックに基づくスクリプト言語を用いて記述される。
【0004】
トランザクションがブロックチェーンに書き込まれるために、「検証され」なければならない。ネットワークノード(マイナー)は、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークから拒否される。ノードにインストールされたソフトウェアクライアントは、自身のロック及びアンロックスクリプトを実行することにより、この検証作業を未使用トランザクション(UTXO)に対して実行する。ロック及びアンロックスクリプトの実行が真と評価した場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。
【0005】
最も広く知られているブロックチェーン技術の用途はビットコイン台帳であるが、他のブロックチェーンの実装が提案され開発されている。ビットコインは便宜上及び説明を目的として本願明細書において言及されるが、本発明はビットコインのブロックチェーンと共に使用することに限定されず、代替のブロックチェーンの実装が本発明の範囲に含まれることに留意すべきである。
【0006】
ブロックチェーン技術は、暗号通貨実装の使用のために最も広く知られている。しかしながら、更に近年は、デジタル起業家が、新しいシステムを実装するために、ビットコインの基づく暗号通貨セキュリティシステムの使用、及びブロックチェーンに格納可能なデータの両者を探索し始めている。ブロックチェーンが、暗号通貨の領域に限定されない自動制御プロセスのようなタスク及びプロセスのために使用できれば、非常に有利である。このようなソリューションは、それらの用途において一層多様でありながら、ブロックチェーンの利点(例えば、永久的、イベントの耐タンパレコード、分散プロセス、等)を利用できる。
【0007】
このような改良されたソリューションが考案されている。したがって、本発明によると、添付の請求の範囲に定められるようなシステム及び方法が提供される。
【発明の概要】
【0008】
したがって、本発明によると、コンピュータにより実施される方法が提供され得る。本発明は、制御方法として記載され得る。本発明は、技術的プロセスの動作又は1又は複数の装置の動作を制御し得る。追加又は代替として、本発明は、ブロックチェーンスクリプトの実行を制御し得る。本発明は、トランザクション・アウトプット(UTXO)に関連付けられたロックスクリプトをアンロックする試みにより、生成されるアウトプットを制御し得る。本発明は、ブロックチェーン・トランザクション内のアウトプット(UTXO)がアンロックされるか否かを制御し得る。本発明は、暗号通貨の一部がブロックチェーンを介してあるパーティから別のパーティへ転送されるか否か
を制御し得る。
【0009】
本発明は、実質的に
図3に示す実施形態に従い構成され得る。
【0010】
方法は、アウトプットに対するRedeemスクリプトを含むブロックチェーン・トランザクション(Tx)を提供するステップを有し得る。ここで、Redeemスクリプトは、複数の公開鍵を指定する。これらは、暗号鍵であって良い。それらは、公開/秘密鍵ペアの部分を形成して良い。複数(又は「リスト」)の中の鍵の各々は、対応する秘密鍵に関連付けられて良い。各公開鍵は、少なくとも1つのデータソースの可能な状態にユニークに関連付けられて良い。したがって、Redeemスクリプトは、公開鍵のリストを含んで良く、これらの公開鍵の対応する秘密鍵だけが、トランザクション・アウトプット(TxO)を使用するために使用され得る。
【0011】
結果は、複数の関連秘密鍵のうちのどれがアンロックスクリプトに署名するために使用されるかにより決定され又は影響を受け得る。スクリプトに署名するために使用される秘密鍵の比較は、中間結果を提供し得る。比較は、スクリプト内で提供される既知の又は所定のパラメータ又は値に対して実行されて良い。この所定パラメータ又は値は、トランザクション・アウトプットを使用したい(又は使用しない)という計算エージェントの要望を表し得る。アンロックスクリプトを介して供給されるパラメータの中間結果に対する比較が行われて良い。
【0012】
したがって、本発明の実施形態は、ブロックチェーン・トランザクション(Tx)がスクリプトから非真の値を返すことを可能にし得る。これは、スクリプトのアウトプットがパラメータにより表される又はそれに関連付けられた供給される目標値と一致することを確認し又は決定するために、パラメータを用いて達成され得る。
【0013】
方法は、トランザクション・アウトプットを1回より多く使用しようと試みるステップを有して良い。実際には、これは、二重(又はそれより多くの)使用である。二重使用は、同額の仮想通貨を異なる受信者へ転送しようとするので、伝統的に悪い行為と考えられる。しかしながら、本願では、利益をもたらすために使用される。
【0014】
各々の使用の試みは、ブロックチェーン・ネットワークに(異なる)トランザクションを提出するステップを有して良い。各試みは、Redeemスクリプトに異なるパラメータを提供する又は供給するトランザクションを用いて実行されて良い。各試みは、異なる(ブロックチェーン)アドレスへのアウトプットを使用しようと試みるブロックチェーン・トランザクションを生成して良い。
【0015】
アンロックスクリプトにより供給されるパラメータは、真又は偽を表し得る。これは、暗号パズルのようなパズルであって良い。これは、鍵に埋め込まれた値であって良い。方法は、鍵から値を抽出するステップを有して良い。
【0016】
ロジックは、等価チェック又は比較を実行するよう構成されて良い。チェック又は比較は、中間結果をパラメータと比較して良い。中間結果は、Redeemスクリプト内で提供され又は埋め込まれたロジックを実行することにより、提供されて良い。これは、論理ゲートの機能をエミュレートする又は提供するよう構成されるロジックの部分であって良い。中間結果は、メモリ内のスタックに置かれ/それから読み出されて良い。
【0017】
方法は、トランザクションを生成するステップを含んで良い。方法は、該トランザクションをブロックチェーンに提供するステップを有して良い。
【0018】
トランザクション及び/又は更なる(使用)トランザクションは、計算エージェントにより生成されて良い。トランザクションは、センサ又は他の信号源から受信されたインプットに基づき(人間の介入無しに)自動的に生成されて良い。
【0019】
追加又は代替として、Redeemスクリプトは、複数の公開鍵のうちのどれがアンロックスクリプトに署名するために使用されるかに基づき、結果を提供するよう構成されたロジックの部分を有して良い。したがって、Redeemスクリプト内で提供されるロジックの実行は、どの関連秘密鍵がアンロックスクリプトに署名するために使用されたかにより決定され又は影響されて良い。
【0020】
追加又は代替として、最小数の上述の秘密鍵が、アウトプットを使用するために更なるブロックチェーン・トランザクションのアンロックスクリプトに署名するために必要とされ得る。
【0021】
ロジックにより提供される結果又は出力は、どの(特定の)秘密鍵がアンロックスクリプトに署名するために使用されたかの決定に依存して良い。方法は、アンロックスクリプトに署名するために使用された秘密鍵を、Redeemスクリプト内で提供された関連公開鍵に対して照合するステップを有して良い。
【0022】
有利なことに、これは、特定の鍵が使用されるのではなく、単に特定数の鍵が使用されることを要求する従来技術より、本発明が大きな制御の度合いを提供することを可能にする。複数の中からどの特定の鍵が使用されるかを決定することにより、本発明は、トランザクション・アウトプットUTXOのロック/アンロックを制御するときの、より大きな度合いの粒度又は精巧さを実現する代替の拡張されたセキュリティ技術を提供する。したがって、本発明は、暗号通貨の一部の転送を制御する改良された暗号技術を提供すると言える。
【0023】
中間結果は、Redeemスクリプト内で提供されロジックから導出され、及び/又はどの鍵がアンロックスクリプトに署名するために使用されたかを決定することにより計算されるブール値である。
【0024】
Redeemスクリプト内のロジックは、論理ゲートの機能を実装するよう構成されて良い。論理ゲートは、NOT、AND、OR、NOR、XOR、IMPLY、NAND、NONIMPLY、及び/又はXNORゲートであって良い。したがって、本発明は、論理ゲートの機能をブロックチェーン・トランザクションによりシミュレートさせ又は達成させることを可能にする技術を提供するものとして記載され得る。論理ゲートをエミュレートするスクリプトロジックの部分は、中間結果を提供して良い。
【0025】
少なくとも1つのデータソースの状態は、計算エージェントにより決定されて良い。エージェントは、条件を監視するよう構成されて良い。条件は、例えば、コンピューティングネットワーク上の条件、又は装置関連条件、又は環境要因の条件であって良く、或いは、任意の他の種類の定量化可能な条件であって良い。
【0026】
計算エージェントは、制御計算エージェントと通信して良い。制御計算エージェントは、本願明細書で「制御部」と呼ばれることがある。Redeemスクリプトは、制御部により生成されて良い。1又は複数のエージェントは、プロセス又は機器を制御するよう構成されて良い。
【0027】
1つの、幾つかの、又は全部の計算エージェントは、エージェント基本鍵と呼ばれ得る暗号鍵を有して良い。暗号鍵は、エージェントにより生成されて良い。暗号鍵は、制御部から導出され及び/又は受信されて良い。複数の鍵のうちの1又は複数は、基本又は「マスタ」鍵から生成され又は導出されて良い。鍵生成は、決定論的鍵生成技術を用いて実行されて良い。方法は、エージェントにより監視中の条件の各可能な状態について、更なる又は別個の鍵を生成し又は導出するステップを有して良い。更なる鍵は、「共有シークレットを用いる鍵の生成」と題された章で後述する技術を用いて基本鍵から導出されて良い。
【0028】
ロジックにより提供される結果は、ブール結果又は何らかの他の種類の結果であって良い。ロジックは、限定された範囲の結果から、結果を提供して良い。
【0029】
少なくとも2つのデータソースが存在して良い。各データソースについて又はそれに関連付けられた2つの可能な状態が存在して良い。各可能な状態は、公開鍵に関連付けられ又はそれにより表現されて良い。したがって、Redeemスクリプト内で提供される公開鍵のリストは、データソースが採用し又は入り得る全ての可能な状態を定義し、表現し、又は記述するために使用されて良い。
【0030】
方法は、以下のステップを有して良い:
少なくとも1つのデータソースの各々について、
複数の中の公開鍵を、データソースの可能な状態に関連付けるステップ。
【0031】
したがって、データソースの全部の可能な状態が、それぞれの公開鍵により表現される。
【0032】
言い換えると、各データソースの各可能な状態は、公開鍵に関連付けられて良く、公開鍵が該状態の(ユニークな)識別子として使用できるようにする。したがって、各鍵とデータソースの可能な状態との間のマッピングを形成するために、鍵は慎重に選択されて良い。これは、鍵がデータソースの可能な状態の表現として機能することを可能にし得る。どの秘密鍵がアンロックスクリプト中に署名するために使用されるかの分析又は決定は、次に、データソースの状態の決定を可能にし得る。
【0033】
少なくとも1つのデータソースは、センサを有して良い。追加又は代替として、データソースは、インプット信号を生成し及び/又は計算リソース又はエージェントへ送信する能力のあるソースを有して良い。
【0034】
各公開鍵は、少なくとも1つのデータソースの可能な状態を示すブール値を表現して良い。例えば、信号が受信されたか又は受信されないか、或いは、温度が20度Cより高いか。
【0035】
本発明は、対応するシステムも提供する。システムは、上述の方法の任意の実施形態を実施するよう構成されて良い。システムは、実質的に
図3に示されるような方法又は技術を実施するよう構成されて良い。
【0036】
本発明は、コンピュータにより実装されるシステムであって、
上述の任意の方法のステップを実行するよう構成される少なくとも1つのコンピュータに基づくリソースと、
ブロックチェーン又は他の種類の電子台帳、又はビットコイン台帳の変形と、
を有するシステムを提供し得る。これは分散型台帳であって良い。
【0037】
少なくとも1つのコンピュータに基づくリソースは、
トランザクションをブロックチェーン・ネットワーク(これは、ビットコインネットワークであって良く又はそうでなくて良い、これは、任意の種類の分散台帳であって良い)に提出し、及び/又は、
トランザクションを生成し、及び/又は、
ロックスクリプトにデジタル方式で署名し、及び/又は、
公開/秘密暗号鍵を生成する、よう構成されて良い。
【0038】
システムは、結果がプロセス又は機器の実行又は動作を制御する又は影響を与えるために使用されるよう構成されて良い。コンピュータに基づくリソースは、「エージェント」として参照されて良い。
【0039】
システムは、少なくとも1つのコンピュータに基づくリソースにインプットを提供するよう配置され/構成される少なくとも1つのセンサ又は他の信号/インプット生成コンポーネントを有して良い。
【0040】
本発明のある実施形態又は態様に関連して記載される任意の特徴は、1又は複数の他の実施形態又は態様と共に達成するために使用されても良い。方法に関連して記載された任意の特徴は、システムに適用可能であり、逆も同様である。
【図面の簡単な説明】
【0041】
本発明の上述の及び他の態様は、本願明細書に記載される実施形態から明らかであり、それらの実施形態を参照して教示される。本発明の実施形態は、単なる例として添付の図面を参照して以下に説明される。
【
図2】論理ゲートトランザクションにインプットを提供するために、複数の独立計算エージェントが外部環境の監視を実行する、本発明の説明のための実施形態を示す。
【
図4】本発明の一実施形態に従い構成された、トランザクション・アウトプット1がトランザクション・アウトプット2とのNORゲートを実装し、制御部に払い戻す、例示的なブロックチェーン・トランザクションを示す。
【発明を実施するための形態】
【0042】
本発明は、機能を実施するためにブロックチェーンを使用する新規且つ有利なソリューションを提供する。ブロックチェーンは、機能の実行の記録及び/又は自身の成果の結果を提供するために使用される。機能は、インプットセットに適用されアウトプットセットを返すサブルーチン又はプロシジャ(つまり、プロセス又はロジックの部分)であり得る。1つの可能な実施形態では、機能は、「オフブロックで」実行され得る。つまり、機能の実行はブロックチェーンに依存しない。機能は、コンピュータに基づくリソースにより実行される。
【0043】
ブロックチェーン(例えば、ビットコイン)トランザクションは、標準的に前のトランザクション・アウトプットを新しいトランザクション・インプットとして参照し且つ全てのインプット値を新しいアウトプットに捧げる(例えば、ビットコイン)値の転送である。トランザクションは暗号化されない。したがって、ブロックにこれまで集められた全てのトランザクションを閲覧し吟味することが可能である。しかしながら、トランザクション・アウトプットが条件付きであり又は供給される情報に依存する、機能として動作するブロックチェーン・トランザクションを構築可能であることは、非常に有利だろう。これは、ブロックチェーンを介する高機能な動作を可能にし得る。
【0044】
本発明の重要な態様は、(限定ではないが)機能入力がトランザクションのアウトプットのRedeemスクリプト内で使用される公開鍵により表現され、実際の値が公開鍵のうちの1又は複数に関連付けられた署名により表現される、ブロックチェーン・トランザクションを生成する方法を含む。
【0045】
本発明は、ブロックチェーン(例えば、ビットコイン)トランザクションが論理ゲートにより提供される機能を表すために使用され得る、以下に提供される使用例により説明される。この機能は、次に、幾つかの技術的プロセス又は機器を制御するために使用され得る。
【0046】
本発明は、ブロックチェーンを上回る、以下を含む多数の汎用的な新規な機能を提供する:
・センサ又は他の信号/インプット生成器に対してエージェントを生成する能力。ここで、エージェントは、ブロックチェーンから直接制御され、動作するために他のネットワークアクセスを必要としない;
・複数の署名により保証されるトランザクションに対して、どの公開鍵がトランザクション署名プロセスで関与したかを決定する能力;
・Redeemスクリプト内の動作(例えば、コードがどのように実行するか)を決定するために使用可能な署名鍵の中に、限定された別個の範囲のペイロード値を埋め込む能力。
【0047】
さらに、本発明の実施形態は、論理ゲート(例えば、NORゲート)を提供するために上述の要素を利用できる。ここで、A及びBからのインプット値は、署名に使用される鍵に埋め込まれ又は該鍵により表現される。
【0048】
<利点>
提案される発明は、以下の利点を提供する:
・設計により本来セキュアである(ビットコインプロトコルは信頼できるパーティを必要としない);
・分散型である。したがって、大規模の単一の障害発生点を回避し、攻撃に対して脆弱ではない;
・管理及び維持が容易であり、ビットコインネットワークは使用するのに分かり易い;
・高価でない(通常、ビットコインプロトコルの下で少ないトランザクション料金が期待されるだけである);
・グローバルであり、インターネットへのアクセスを有する誰もがいつでも使用できる;
・透過的である;
・データがブロックチェーンに書き込まれると、誰でもそれを見ることができる;
・不変であり、データがブロックチェーンに書き込まれると、誰もそれを変更できない;
・プライバシーが維持され、個人特定情報が関与しない。
【0049】
本発明を動作させるために、ビットコインプロトコル及びウォレットの既存の構成及び動作を確認しなければならない。
図1は、本発明の一実施形態に従い標準的なビットコイン・トランザクション(TX)がどのように構築されるかを示す。(ビットコインは、説明のために使用されるだけであり、他の台帳及び関連プロトコルが使用されて良く、依然として本発明の範囲に包含される)。
【0050】
<エージェント構成>
本発明の一実施形態は、
図2に示すように、この論理ゲートトランザクションにインプットを提供するために外部環境の監視を実行するよう構成される多数の独立(計算)エージェントの使用を含む。したがって、計算エージェントは、何らかの条件を監視するよう設計される。インプットは、この目的のためにセンサから受信されて良い。例えば、エージェントは、「温度が摂氏零度より低いか」のような条件、又は任意の他の種類の検査可能な条件を監視して良い。したがって、エージェントは、その観測された条件の状態を監視するよう構成されて良い。
【0051】
エージェントは、以後「制御部」として参照される制御又はマスタエージェントと通信する。制御部は、ブロックチェーン・プロトコルと共に動作するために構成される。
【0052】
1又は複数の実施形態では、従属エージェント(例えば、A及びB)は、制御部から導出される鍵を有して良い。しかしながら、留意すべきことに、エージェントA及びエージェントBは自身の生成した鍵を有し、制御部から鍵を導出しないことが可能である。これは、制御部が鍵に対して使用できる機能を制限する。
【0053】
1又は複数の実施形態では、監視されている各条件は、それら自身の鍵と共に設定された別個の監視エージェントを有する。この鍵から、それらは、それらの監視している条件からのアウトプットについて(つまり、可能な状態毎に)別個の鍵を導出する。これらの値は、それらの基本鍵から決定論的に導出可能である。これは、監視点において実行され得る、又はエージェントが値を予め導出し得る(例えば、真/偽センサが単に事前定義することが一層効率的であり得る)。鍵は、「共有シークレットを用いる鍵の生成」と題された章で後述する技術を用いて基本鍵から導出されて良い。
【0054】
<エージェントの動作>
上述の実施形態は、エージェントが非常に厳しく定義された動作を有することを可能にし、それらの基本点において、それらは単一条件を検出し及び該条件に必要に応じて応答しているセンサである。以下の表は、これらのエージェントの動作パターンを例示する。
【表1】
【0055】
ステップ2は、従来知られている複数署名トランザクションを実施するための標準的プロセスであることに留意する。新規なステップは、エージェントがセンサ値をエージェントから返される署名に埋め込むことを可能にするステップ3及び4にある。
【0056】
<データ値抽出及びトランザクション評価>
トランザクション内のRedeemスクリプトは、次に、自立エージェントにより埋め込まれた値の効率的な事実上の抽出を可能にする。しかしながら、これは、可能な値の範囲が予め分かっている場合にのみ機能する。ここで、エージェントA及びBが「真」/「偽」値を提供する例が使用されるが、より広い範囲の値も本方法を使用することができる(例えば、1、2、3、4、5)。肝心なのは、各可能な値又は状態を表現するためにユニークな鍵が使用され、したがって、Redeemスクリプトが、何の値に基づき鍵がアンロックスクリプトに署名するために使用されたかを決定できることである。しかしながら、Redeemスクリプト内で提供されるロジックはこの分析を実行するよう構成されなければならないので、方法は、無限範囲の可能な値をサポートしない。
【0057】
方法は、エージェントの可能な導出される公開鍵に対して、該エージェントにより供給される署名を評価することにより機能する。したがって、Redeemスクリプトが制御部により最初に構築されたとき、各可能なインプット値(状態)の公開鍵が何であったかを決定し、及びこれらをRedeemスクリプトのペイロードに含め得る。
【0058】
スクリプトは、このデータを抽出するために、公開鍵のうちのどれがトランザクションに署名するために使用されたかを決定することによりそれを行い、スクリプトは該公開鍵の表す値を黙示的に理解するために符号化されているので、スクリプトは、スクリプトの限定範囲内で使用する目的で該値を効率的に抽出する。
【0059】
ブロックチェーン標準の範囲内で、ビルトインOP_CHECKMULTISIGトランザクション機能は、十分な署名がアンロックスクリプトにより集められたことを決定するために、署名の評価を可能にする。しかしながら、これは、どれが使用されたかの明示的決定を可能にしない。したがって、本発明は、どれが使用されたかを決定するために特定の鍵に対して明示的に照合するためにTxを使用する技術を提供し、したがってトランザクションを介して非常に多くの複雑性を実装することを可能にするので、本発明は従来技術に優る向上を提供する。言い換えると、複数の鍵のどのサブセットが署名プロセスで使用されるかを決定することにより、ブロックチェーンを介してより高度な動作を生成することが可能である。
【0060】
例えば、第三者預託機能では、複数の第三者預託エージェントにより第三者預託を効率的に生成することが可能であるが、買い手と売り手、又は買い手及び第三者預託エージェントのうちの1つ、又は買い手と第三者預託エージェントのうちの1つの署名の準備を必要とするスクリプトルールを定める。これは、標準的構成が両方の第三者預託エージェントがトランザクションに署名することを可能にし得るので、既知の標準的ビットコインプロトコルでは可能ではない。
【0061】
<Redeemスクリプト擬似コード>
本発明の一実施形態によると、Redeemスクリプト内のロジックは以下のように構成されて良い。
【数1】
【0062】
<例示的なトランザクション>
例示的なトランザクションでは、トランザクション・アウトプット(TxO)1はトランザクション・アウトプット2とのNORゲートを実装し、制御部に払い戻す。トランザクションは
図4に示される。
【0063】
<Redeemスクリプト>
完全なRedeemスクリプトが以下に示される。これは、次に、論理コンポーネントに分解される。
【数2】
【0064】
枠内の命令コードは、データを検証可能なフォーマットにするために必要な署名操作ロジックの上に設けられるNORゲートペイロードコード(以下のブロック7)を例示する。
【0065】
論理的「下位機能」に区分するために、スクリプトは、読者の便宜のために以下の表に示すようなブロックシーケンスに分解される。
【表2-1】
【表2-2】
【0066】
<ロックスクリプト>
ロックスクリプトは、標準的なPay-to-Script-Hashモデルである。
OP_HASH160 <Redeem Script Hash> OP_EQUAL
【0067】
<アンロックスクリプト>
所要のアンロックスクリプトは次の通りである:
<Sig-Controller> <Sig-A-Used> <Sig-B-Used> <RS Block 1>
ここで、
<Sig-A-Used>は以下のいずれかである:
<Sig-A-True>;又は、
<Sig-A-False>
<Sig-B-Used>は以下のいずれかである:
<Sig-B-True>;又は、
<Sig-B-False>
【0068】
<例示:NOR論理ゲート>
NORゲートは、NOT ORを実装する論理ゲートである。つまり、両方のインプットが偽であるならば、アウトプットは真であり、その他の場合には、アウトプットは偽である。
【表3】
【0069】
NORゲートは、制御部署名、並びに真又は偽値のいずれかを表すAエージェントからの署名及びBエージェントからの別の署名(これも真又は偽のいずれか)を要求する単一のビットコイン・トランザクション・アウトプット内に実装される。
図1は、このNORゲートがビットコインプロトコルにより実装できるかの概要を示す。
【0070】
RBブロック7を後述の章で示されるように置き換えることにより、代替のゲートを実装することが可能である。
【0071】
【0072】
【0073】
【0074】
【0075】
【0076】
<NOTゲート>
このゲートは単一入力を有するだけなので、このゲートの実装は、僅かに複雑である。
【表14】
【0077】
結果として、アンロックスクリプトは次のように変化する。
【数3】
【0078】
単一入力の結果として、以下のブロックの変更が生じる。
【表15】
【0079】
以下に記載されるように多数の変化する実施形態が提供され得る。
【0080】
<変形1:真及び偽信号の生成>
本実施形態は、実質的に本発明の主題であり得る。
上述の説明は論理ゲートを表す未署名トランザクション・アウトプット(UTXO)が、ゲート条件が真であると評価された場合にのみ使用できるようにした。しかしながら、多くの状況において、回路の実際の出力に関係なく、(異なる受信側アドレスにもかかわらず)アウトプットを使用することが有利である場合がある。
【0081】
これは、本実施形態を用いて可能である。効率的に、
図1に示す実施形態は、
図3に示すように変更されて、本願において請求される発明を提供する。本実施形態では、第1トランザクション(Tx)のRedeemスクリプトに供給される追加のパラメータが存在する。この追加パラメータは、パズルであり、又は鍵に埋め込まれた値若しくは(本例におけるように)明示的に供給される値であり得る。これは、UTXOを使用すべき制御部の所望の出力を定める。
【0082】
したがって、単純な論理ゲートでは、制御部は、1回は予測される真の出力と共に、そしてもう1回は予測される偽の出力と共に、同じ署名を用いてトランザクションを2回使用しようとし得る。
【0083】
Redeemスクリプトは拡張されて、ゲート計算の終了時に、ゲートのアウトプットの等価チェックを、制御部により要求されたアウトプットに適用する。したがって、以下の通りである。
【0084】
埋め込みゲートロジックが偽を返し、且つ所望の出力が偽である場合、Redeemスクリプトは真と評価し、UTXOを使用できる;
埋め込みゲートロジックが真を返し、且つ所望の出力が真である場合、Redeemスクリプトは真と評価し、UTXOを使用できる;
埋め込みゲートロジックが真を返し、且つ所望の出力が真である場合、Redeemスクリプトは偽と評価し、UTXOを使用できない;
埋め込みゲートロジックが偽を返し、且つ所望の出力が真である場合、Redeemスクリプトは偽と評価し、UTXOを使用できない。
【0085】
<変形スクリプト>
完全なRedeemスクリプトが以下に示される。これは、次に、読者の便宜のために論理コンポーネントに分解される。最初のソリューションからの追加が反転文字で示される(削除は取消線で示される)。
【数4】
【0086】
枠内の命令コードは、データを検証可能なフォーマットにするための署名操作ロジックの上にあるNORゲートペイロードコードを例示する。
【0087】
<ロックスクリプト>
ロックスクリプトは、標準的なPay-to-Script-Hashモデルである。
OP_HASH160 <Redeem Script Hash> OP_EQUAL
【0088】
<アンロックスクリプト>
このパターンの論理ゲートのためのアンロックスクリプトは、次の通りである:
【数5】
ここで、
<Sig-A-Used>は、<Sig-A-True>又は<Sig-A-False>であり、
<Sig-B-Used>は、<Sig-B-True>又は<Sig-B-False>であり、
<Signal-Required>は真又は偽(1又は0)である。
【0089】
<変形2:隠された真及び偽信号の生成>
変形1は、真又は偽条件がスクリプトからシグナリングされたか否かが(Redeemスクリプトから)公知であるという軽微な欠点を有する。所望の信号を制御部からの署名の中に埋め込むことは、この問題を回避する。変形2では、制御部は、
図5に示されるような自身の1次鍵から導出される2個の公開鍵を有する。
【0090】
<変形スクリプト>
完全なRedeemスクリプトが以下に示される。これは、次に、論理コンポーネントに分解される。最初のソリューションからの追加が反転文字で示される(削除は取消線で示される)。
【数6】
【0091】
枠内の命令コードは、データを検証可能なフォーマットにするための署名操作ロジックの上にあるNORゲートペイロードコードを例示する。
【0092】
<ロックスクリプト>
ロックスクリプトは、標準的なPay-to-Script-Hashモデルである。
OP_HASH160 <Redeem Script Hash> OP_EQUAL
【0093】
<アンロックスクリプト>
このパターンの論理ゲートのためのアンロックスクリプトは、次の通りである:
【数7】
ここで、
<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>である。
【0094】
<変形3:単一のコードスタック>
これらのゲートを、古い(alt)スタックを使用しないで、単一スタックを用いて実装することが可能である。
【0095】
<Redeemスクリプト:概要及びNOR>
完全なRedeemスクリプトが以下に示される。これは、次に、論理コンポーネントに分解される。
【数8】
【0096】
枠内の命令コードは、データを検証可能なフォーマットにするための署名操作ロジックの上にあるNORゲートペイロードコードを例示する。
【0097】
全てのスタックは上から下へ順番に示される。
【0098】
<ロックスクリプト>
ロックスクリプトは、標準的なPay-to-Script-Hashモデルである。
OP_HASH160 <Redeem Script Hash> OP_EQUAL
【0099】
<アンロックスクリプト>
このパターンの論理ゲートのためのアンロックスクリプトは次の通りである(署名ブロックの異なる順序に留意する):
<Sig-B-Used> <Sig-A-Used> <Sig-Controller> <RS Block 1>
ここで、
<Sig-A-Used>は、<Sig-A-True>又は<Sig-A-False>であり、
<Sig-B-Used>は、<Sig-B-True>又は<Sig-B-False>である。
【0100】
<代替ゲート>
代替論理ゲートを実装するために、枠内の明示的NORコードを以下で置き換える。
【表16】
【0101】
<シナリオ:強盗警報設定(NORゲート)>
NORゲートを利用する上述の実施形態の単純な例は、強盗警報の設定である。
【0102】
本例では、エージェントAは、扉が開くと真を、閉まると偽を伝達する、搬入口ドアにあるドアセンサである。
【0103】
エージェントBもドアセンサであるが、建物内の金庫にある。エージェントBも、ドアが開くと真を、閉まると偽を伝達する。制御部は、中央警報システムであり、建物内の全てのドアが閉められた場合にだけ警報を設定する。したがって、制御部は、警報を設定するよう要求されると、種々の監視エージェントにトランザクションをブロードキャストする。トランザクションは、エージェントA及びエージェントBがそれらそれぞれのドアが閉められたことを伝達するときだけ、完了する。
【0104】
私達は、上述のように、基本鍵から新しい鍵を生成する技術を以下に説明する。
【0105】
<共有シークレットを用いる鍵の生成>
以下の技術は、
図5~9を参照して記載される。
【0106】
以下の技術を用いて、鍵は、セキュアに保持され又は再生成されて良い。特に、公開鍵を導出するために使用され得る秘密鍵の場合には、秘密鍵は分解して格納されて良い。
【0107】
ユーザ、つまりアリス又はボブは彼らの秘密鍵の一部を保持して良く、サービスプロバイダが第2の部分を保持して良く、第3の部分はリモートセキュアサイトに保持されて良い。秘密鍵は、3つの部分のうちの任意の2つを用いて再構成されて良い。あるいは、より一般的には、秘密鍵が、n個の部分のうちの任意のm個を用いて再構成されて良い。
【0108】
秘密鍵は、再構成可能な場合、使用点において公開鍵を再生成するために使用でき、秘密鍵及び公開鍵は使用後に再び廃棄できる。
【0109】
秘密鍵の分離は、シャミアの秘密分散法(Shamir’s Secret Sharing Scheme)を用いて達成されて良い。秘密鍵-公開鍵ペアは、以下の方法を用いてマスタ鍵から確定的に導出できる。この方法は、シークレット値がそれらを送信することなく参加者により共有されることを可能にする。
【0110】
システムは、以下に記載するサブキー生成の方法を用いて参加者の公開鍵を生成して良い。
【0111】
図5は、通信ネットワーク5を介して第2ノード7と通信する第1ノード3を含むシステム1を示す。第1ノード3は関連する第1処理装置23を有し、及び第2ノード5は関連する第2処理装置27を有する。第1及び第2ノード3、7は、コンピュータ、電話機、タブレットコンピュータ、モバイル通信装置、コンピュータサーバ、等のような電子装置を含んで良い。一例では、第1ノード3はクライアント(ユーザ)装置であって良く、第2ノード7はサーバであって良い。サーバは、デジタルウォレットプロバイダのサーバであって良い。
【0112】
第1ノード3は、第1ノードマスタ秘密鍵(V1C)及び第1ノードマスタ公開鍵(P1C)を有する第1非対称暗号対に関連付けられる。第2ノード(7)は、第2ノードマスタ秘密鍵(V1S)及び第2ノードマスタ公開鍵(P1S)を有する第2非対称暗号対に関連付けられる。言い換えると、第1及び第2ノードは、それぞれ、個々の公開鍵-秘密鍵ペアを保有する。
【0113】
個々の第1及び第2ノード3、7の第1及び第2非対称暗号対は、ウォレットの登録のような登録処理中に生成されて良い。各ノードの公開鍵は、通信ネットワーク5に渡るように、公に共有されて良い。
【0114】
第1ノード3及び第2ノード7の両者において共通シークレット(common secret:SC)を決定するために、ノード3、7は、通信ネットワーク5を介して秘密鍵を通信することなく、それぞれ方法300、400のステップを実行する。
【0115】
第1ノード3により実行される方法300は、少なくとも第1ノードマスタ秘密鍵(V1C)及び生成器値(Generator Value:GV)に基づき、第1ノード第2秘密鍵(V2C)を決定するステップ330を含む。生成器値は、第1ノードと第2ノードとの間で共有されるメッセージ(M)に基づいて良い。これは、以下に詳述するように、通信ネットワーク5を介してメッセージを共有するステップを含んで良い。方法300は、少なくとも第2ノードマスタ公開鍵(P1S)及び生成器値(Generator Value:GV)に基づき、第2ノード第2公開鍵(P2S)を決定するステップ370を更に含む。方法300は、第1ノード第2秘密鍵(V2C)及び第2ノード第2公開鍵(P2S)に基づき、共通シークレット(common secret:CS)を決定するステップ380を含む。
【0116】
重要なことに、同じ共通シークレット(CS)が、方法400により第2ノード7においても決定できる。方法400は、第1ノードマスタ公開鍵(P1C)及び生成器値(Generator Value:GV)に基づき、第1ノード第2公開鍵(P2C)を決定するステップ430を含む。方法400は、第2ノードマスタ秘密鍵(V1S)及び生成器値(Generator Value:GV)に基づき、第2ノード第2秘密鍵(V2S)を決定するステップ470を更に含む。方法400は、第2ノード第2秘密鍵(V2S)及び第1ノード第2公開鍵(P2C)に基づき、共通シークレット(common secret:CS)を決定するステップ480を含む。
【0117】
通信ネットワーク5は、ローカルエリアネットワーク、ワイドエリアネットワーク、セルラネットワーク、無線通信ネットワーク、インターネット、等を含んで良い。これらのネットワークでは、データは電気線、光ファイバ、又は無線のような通信媒体を介して送信されて良く、盗聴者11による様な盗聴を受けやすい場合がある。方法300、400は、通信ネットワーク5を介して共通シークレットを送信することなく、第1ノード3及び第2ノード7が共通シークレットを両方とも独立して決定できるようにする。
【0118】
したがって、1つの利点は、安全でない可能性のある通信ネットワーク5を介して秘密鍵を送信する必要を有しないで、共通シークレット(CS)が安全に且つ各ノードにより独立して決定できることである。また、共通シークレットは、秘密鍵として(又は秘密鍵の基礎として)使用されて良い。
【0119】
方法300、400は、追加ステップを含んで良い。方法300は、第1ノード3において、メッセージ(M)及び第1ノード第2秘密鍵(V2C)に基づき、署名メッセージ(SM1)を生成するステップを含んで良い。方法300は、第1署名メッセージ(SM1)を通信ネットワークを介して第2ノード7へ送信するステップ360を更に含む。一方、第2ノード7は、第1署名メッセージ(SM1)を受信するステップ440を実行して良い。方法400は、第1署名メッセージ(SM2)を第1ノード第2公開鍵(P2C)により検証するステップ450、及び第1署名メッセージ(SM1)を検証するステップの結果に基づき第1ノード3を認証するステップ460を更に含む。有利なことに、これは、第2ノード7が、(第1署名メッセージが生成された場所である)意図された第1ノードが第1ノード3であることを認証することを可能にする。これは、第1ノード3だけが、第1ノードマスタ秘密鍵(V1C)へのアクセスを有する、したがって、第1ノード3だけが、第1署名メッセージ(SM1)を生成するための第1ノード第2秘密鍵(V2C)を決定できるという仮定に基づく。理解されるべきことに、同様に、第2署名メッセージ(SM2)は、第2ノード7において生成され、第1ノード3へ送信され得る。したがって、ピアツーピアシナリオにおけるように、第1ノード3は、第2ノード7を認証できる。
【0120】
第1ノードと第2ノードの間のメッセージ(M)の共有は、様々な方法で達成されて良い。一例では、メッセージは、第1ノード3において生成されて良く、次に通信ネットワーク5を介して第2ノード7へ送信される。代替として、メッセージは、第2ノード7において生成されて良く、次に通信ネットワーク5を介して第1ノード3へ送信される。幾つかの例では、メッセージ(M)は公開されて良く、したがってセキュアでないネットワーク5を介して送信されて良い。1又は複数のメッセージ(M)は、データストア13、17、19に格納されて良い。当業者は、メッセージの共有が様々な方法で達成できることを理解する。
【0121】
有利なことに、共通シークレット(CS)の再生成を可能にするレコードは、そのレコード自体が秘密に格納され又はセキュアに送信される必要がなく、保持され得る。
【0122】
<登録の方法100、200>
登録の方法100、200の一例が以下に記載される。ここで、方法100は第1ノード3により実行され、方法200は第2ノード7により実行される。これは、それぞれ第1ノード3及び第2ノード7のために第1及び第2非対称暗号対を確立するステップを含む。非対称暗号対は、公開鍵暗号化で使用されるような、関連付けられた秘密鍵及び公開鍵を含む。本例では、非対称暗号対は、楕円曲線暗号システム(Elliptic Curve Cryptography:ECC)及び楕円曲線演算の特性を用いて生成される。
【0123】
方法100、200では、これは、共通ECCシステムに合意している110、210、且つ基点(G)を用いる、第1ノード及び第2ノードを含む(注:基点は、共通生成器として参照され得るが、用語「基点」は、生成器値GVとの混同を避けるために使用される)。一例では、共通ECCシステムは、ビットコインにより使用されるECCシステムであるsecp256K1に基づいて良い。基点(G)は、選択され、ランダムに生成され、又は割り当てられて良い。
【0124】
ここで第1ノード3について考えると、方法100は、共通ECCシステム及び基点(G)を解決するステップ110を含む。これは、第2ノード7又は第3ノード9から、共通ECCシステム及び基点を受信するステップを含んで良い。代替として、ユーザインタフェース15は、第1ノード3に関連付けられる。これにより、ユーザは、共通ECCシステム及び/又は基点(G)を選択的に提供できる。更に別の代替案では、共通ECCシステム及び/又は基点(G)の一方又は両方が、第1ノード3によりランダムに選択されて良い。第1ノード3は、通信ネットワーク5を介して、基点(G)と共に共通ECCシステムを使用することを示す通知を、第2ノード7へ送信して良い。また、第2ノード7は、共通ECCシステム及び基点(G)の使用に対する肯定応答を示す通知を送信することにより、解決して良い210。
【0125】
方法100は、第1ノード3が、第1ノードマスタ秘密鍵(V1C)及び第1ノードマスタ公開鍵(P1C)を有する第1非対称暗号対を生成するステップ120を更に含む。これは、共通ECCシステムの中で指定された許容範囲の中のランダム整数に少なくとも部分的に基づき、第1マスタ秘密鍵(V1C)を生成するステップを含む。これは、次式に従い第1ノードマスタ秘密鍵(V1C)及び基点(G)の楕円曲線点乗算に基づき、第1ノードマスタ公開鍵(P1C)を決定するステップを更に含む。
P1C=V1C×G (式1)
【0126】
したがって、第1非対称暗号対は、以下を含む:
V1C:第1ノードにより秘密に保持される第1ノードマスタ秘密鍵。
P1C:公に知らされる第1ノードマスタ公開鍵。
【0127】
第1ノード3は、第1ノードマスタ秘密鍵(V1C)及び第1ノードマスタ公開鍵(P1C)を、第1ノード3に関連付けられた第1データストア13に格納して良い。セキュリティのために、第1ノードマスタ秘密鍵(V1C)は、鍵が秘密のままであることを保証するために、第1データストア13のセキュアな部分に格納されて良い。
【0128】
方法100は、
図6に示すように、第1ノードマスタ公開鍵(P
1C)を通信ネットワーク5を介して第2ノード7へ送信するステップ130を更に含む。第2ノード7は、第1ノードマスタ公開鍵(P
1C)を受信すると220、第1ノードマスタ公開鍵(P
1C)を第2ノード7に関連付けられた第2データストア17に格納して良い230。
【0129】
第1ノード3と同様に、第2ノード7の方法200は、第2ノードマスタ秘密鍵(V1S)及び第2ノードマスタ公開鍵(P1S)を有する第2非対称暗号対を生成するステップ240を含む。第2ノードマスタ秘密鍵(V1S)も、許容範囲内のランダム整数である。また、第2ノードマスタ公開鍵(P1S)は、次式により決定される。
P1S=V1S×G (式2)
【0130】
したがって、第2非対称暗号対は、以下を含む:
V1S:第2ノードにより秘密に保持される第2ノードマスタ秘密鍵。
P1S:公に知らされる第2ノードマスタ公開鍵。
【0131】
第2ノード7は、第2非対称暗号対を第2データストア17に格納して良い。方法200は、第2ノードマスタ公開鍵(P1S)を第1ノード3へ送信するステップ250を更に含む。また、第1ノード3は、第2ノードマスタ公開鍵(P1S)を受信し140、格納して良い150。
【0132】
理解されるべきことに、幾つかの代案では、それぞれの公開マスタ鍵は、受信され、(信頼できる第三者のような)第3ノード9に関連付けられた第3データストア19に格納されて良い。これは、認証機関のような、公開ディレクトリとして動作する第三者を含んで良い。したがって、幾つかの例では、第1ノードマスタ公開鍵(P1C)は、共通シークレット(CS)が要求されるときだけ、第2ノード7により要求され受信されて良い(逆も同様である)。
【0133】
登録ステップは、初期設定として1度生じるだけで良い。
【0134】
<セッション開始及び第1ノード3による共通シークレットの決定>
共通シークレット(CS)を決定する一例が以下に記載される。共通シークレット(CS)は、第1ノード3と第2ノード7との間の特定のセッション、時間、トランザクション、又は他の目的のために使用されて良く、同じ共通シークレット(CS)を使用することが望ましい又はセキュアでなくて良い。したがって、共通シークレット(CS)は、異なるセッション、時間、トランザクション、等の間で変更されて良い。
【0135】
以下は、上述したセキュアな送信技術の説明のために提供される。
【0136】
[メッセージ(M)を生成する310]
本例では、第1ノード3により実行される方法300は、メッセージ(M)を生成するステップ310を含む。メッセージ(M)は、ランダム、疑似ランダム、又はユーザ定義であって良い。一例では、メッセージ(M)は、Unix時間又はノンス(及び任意の値)に基づく。例えば、メッセージ(M)は次のように与えられ得る。
メッセージ(M)=Unix時間+ノンス (式3)
【0137】
幾つかの例では、メッセージ(M)は任意である。しかしながら、理解されるべきことに、メッセージ(M)は、幾つかのアプリケーションで有用であり得る(Unix時間、等のような)選択的値を有して良い。
【0138】
方法300は、メッセージ(M)を通信ネットワーク3を介して第2ノード7へ送信するステップ315を含む。メッセージ(M)は秘密鍵についての情報を含まないので、メッセージ(M)は、セキュアでないネットワークを介して送信されて良い。
【0139】
[生成器値(GV)を決定する320]
方法300は、メッセージ(M)に基づき生成器値(Generator Value:GV)を決定するステップ320を更に含む。本例では、これは、メッセージの暗号ハッシュを決定するステップを含む。暗号ハッシュアルゴリズムの一例は、256ビット発生器値(GV)を生成するためにSHA-256を含む。つまり、
GV=SHA-256(M) (式4)
【0140】
理解されるべきことに、他のハッシュアルゴリズムが使用されて良い。これは、セキュアなハッシュアルゴリズム(Secure Hash Algorithm:SHA)ファミリの中の他のハッシュアルゴリズムを含んで良い。幾つかの特定の例は、SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256を含むSHA-3サブセットの中のインスタンスを含む。他のハッシュアルゴリズムは、RIPEMD(RACE Integrity Primitives Evaluation Message Digest)ファミリの中のアルゴリズムを含んで良い。特定の例は、RIPEMD-160を含んで良い。他のハッシュ関数は、Zemor-Tillichハッシュ関数及びナップサック・ハッシュ関数に基づくファミリを含んで良い。
【0141】
[第1ノード第2秘密鍵を決定する330]
方法300は、次に、第2ノードマスタ秘密鍵(V1C)及び生成器値(GV)に基づき、第1ノード第2秘密鍵(V2C)を決定するステップ330を含む。これは、次式に従い第1ノードマスタ秘密鍵(V1C)及び生成器値(GV)のスカラ加算に基づき得る。
V2C=V1C+GV (式5)
【0142】
したがって、第1ノード第2秘密鍵(V2C)は、ランダム値ではないが、代わりに第1ノードマスタ秘密鍵から確定的に導出される。暗号対の中の対応する公開鍵、つまり第1ノード第2公開鍵(P2C)は、以下の関係を有する。
P2C=V2C×G (式6.1)
【0143】
式5から式6にV2Cを代入すると、次式を得る。
P2C=(V1C+GV)×G (式7)
【0144】
ここで、「+」演算子は楕円曲線点加算を表す。楕円曲線暗号代数は、分配的であり、式7は次式のように表すことができる。
P2C=V1C×G+GV×G (式8)
【0145】
最後に、(式1)は(式7)に代入され、次式を得る。
P2C=P1C+GV×G (式9.1)
P2C=P1C+SHA-256(M)×G (式9.2)
【0146】
したがって、対応する第1ノード第2公開鍵(P2C)は、第1ノードマスタ公開鍵(P1C)及びメッセージ(M)の導出可能な所与の知識であり得る。方法400に関して以下に更に詳述するように、第2ノード7は、第1ノード第2公開鍵(P2C)を独立に決定するために、このような知識を有して良い。
【0147】
[メッセージ及び第1ノード第2秘密鍵に基づき、第1署名メッセージ(SM1)を生成する350]
方法300は、メッセージ(M)及び決定した第1ノード第2秘密鍵(V2C)に基づき、第1署名メッセージ(SM1)を生成するステップ350を更に含む。署名メッセージを生成するステップは、メッセージ(M)にデジタル方式で署名するために、デジタル署名アルゴリズムを適用するステップを含む。一例では、これは、第1署名メッセージ(SM1)を得るために、楕円曲線デジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm:ECDSA)の中でメッセージに第1ノード第2秘密鍵(V2C)を適用するステップを含む。ECDSAの例は、secp256k1、secp256r1、secp384r1、se3cp521r1を有するECCシステムに基づくものを含む。
【0148】
第1署名メッセージ(SM1)は、第2ノード7において対応する第1ノード第2公開鍵(P2C)により検証できる。第1署名メッセージ(SM1)のこの検証は、第1ノード3を認証するために第2ノード7により使用されて良い。これは、方法400において以下に議論される。
【0149】
[第2ノード第2公開鍵を決定する370’]
第1ノード3は、次に、第2ノード第2公開鍵(P2S)を決定して良い370。上述のように、第2ノード第2公開鍵(P2S)は、少なくとも第2ノードマスタ公開鍵(P1S)及び生成器値(GV)に基づいて良い。本例では、公開鍵は、基点(G)との楕円曲線点乗算により秘密鍵として決定されるので370’、第2ノード第2公開鍵(P2S)は、式6と同様に次のように表すことができる。
P2S=V2S×G (式10.1)
P2S=P1S+GV×G (式10.2)
【0150】
式10.2の数学的証明は、第1ノード第2公開鍵(P2C)について式9.1を導出するために上述したものと同じである。理解されるべきことに、第1ノード3は、第2ノード7と独立に第2ノード第2公開鍵を決定できる370。
【0151】
[第1ノード3において共通シークレットを決定する380]
第1ノード3は、次に、第1ノード第2秘密鍵(V2C)及び決定した第2ノード第2公開鍵(P2S)に基づき、共通シークレット(CS)を決定して良い380。共通シークレット(CS)は、第1ノード3により次式により決定されて良い。
S=V2C×P2S (式11)
【0152】
<第2ノード7において実行される方法400>
第2ノード7において実行される対応する方法400が、ここで説明される。理解されるべきことに、これらのステップのうちの幾つかは、第1ノード3により実行された上述のステップと同様である。
【0153】
方法400は、メッセージ(M)を通信ネットワーク5を介して第1ノード3から受信するステップ410を含む。これは、ステップ315において第1ノード3により送信されたメッセージ(M)を含んで良い。第2ノード7は、次に、メッセージ(M)に基づき生成器値(GV)を決定する420。第2ノード7により生成器値(GV)を決定するステップ420は、上述の第1ノードにより実行されるステップ320と同様である。本例では、第2ノード7は、第1ノード3と独立の、この決定するステップ420を実行する。
【0154】
次のステップは、第1ノードマスタ公開鍵(P1C)及び生成器値(GV)に基づき、第1ノード第2公開鍵(P2C)を決定するステップ430を含む。本例では、公開鍵は、基点(G)との楕円曲線点乗算により秘密鍵として決定されるので430’、第1ノード第2公開鍵(P2C)は、式9と同様に次のように表すことができる。
P2C=V2C×G (式12.1)
P2C=P1C+GV×G (式12.2)
【0155】
式12.1及び12.2の数学的証明は、式10.1及び10.2について上述したものと同じである。
【0156】
[第2ノード7が第1ノード3を認証する]
方法400は、未確認第1ノード3が第1ノード3であることを認証するために、第2ノード7により実行されるステップを含んで良い。上述のように、これは、第1ノード3から第1署名メッセージ(SM1)を受信するステップ440を含む。第2ノード7は、次に、ステップ430で決定された第1ノード第2公開鍵(P2C)により第1署名メッセージ(SM1)の署名を検証して良い450。
【0157】
デジタル署名の検証は、上述の楕円曲線デジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm:ECDSA)に従い行われて良い。重要なことに、第1ノード第2秘密鍵(V2C)により署名された第1署名メッセージ(SM1)は、V2C及びP2Cが暗号対を形成するので、対応する第1ノード第2公開鍵(P2C)によってのみ正しく検証されるべきである。これらの鍵は、第1ノード3の登録で生成された第1ノードマスタ秘密鍵(V1C)及び第1ノードマスタ公開鍵(P1C)において確定するので、第1署名メッセージ(SM1)の検証は、第1署名メッセージ(SM1)を送信する未確認第1ノードが登録中と同じ第1ノード3であることを認証する基礎として使用できる。したがって、第2ノード7は、第1署名メッセージを検証するステップ(450)の結果に基づき、第1ノード3を認証するステップ(460)を更に実行して良い。
【0158】
[第2ノード7が共通シークレットを決定する]
方法400は、第2ノード7が、第2ノードマスタ秘密鍵(V1S)及び生成器値(GV)に基づき、第2ノード第2秘密鍵(V2S)を決定するステップ470を更に含んで良い。第1ノード3により実行されるステップ330と同様に、第2ノード第2秘密鍵(V2S)は、次式に従い、第2ノードマスタ秘密鍵(V1S)及び生成器値(GV)のスカラ加算に基づき得る。
V2S=V1S+GV (式13.1)
V2S=V1S+SHA-256(M) (式13.2)
【0159】
第2ノード7は、次に、第1ノード3と独立して、次式に基づき、第2ノード第2秘密鍵(V2S)及び第1ノード第2公開鍵(P2C)に基づき、共通シークレット(CS)を決定して良い480。
S=V2S×P2C (式14)
【0160】
[第1ノード3及び第2ノード7により決定された共通シークレット(CS)の証明]
第1ノード3により決定された共通シークレット(CS)は、第2ノード7において決定された共通シークレット(CS)と同じである。式11及び式14が同じ共通シークレット(CS)を提供することの数学的証明が、ここで記載される。
【0161】
第1ノード3により決定された共通シークレット(CS)を考えると、次のように式10.1は式11に代入できる。
S=V2C×P2S (式11)
S=V2C×(V2S×G)
S=(V2C×V2S)×G (式15)
【0162】
第2ノード7により決定された共通シークレット(CS)を考えると、次のように式12.1は式14に代入できる。
S=V2S×P2C (式14)
S=V2S×(V2C×G)
S=(V2S×V2C)×G (式16)
【0163】
ECC代数学は可換性なので、次の通り式15及び式16は等価である。
S=(V2C×V2S)×G=(V2S×V2C)×G (式17)
【0164】
[共通シークレット(CS)及び秘密鍵]
共通シークレット(CS)は、ここで、第1ノード3と第2ノード7との間のセキュアな通信のために、対称鍵アルゴリズムにおいて、秘密鍵として又は秘密鍵の基礎として、使用できる。
【0165】
共通シークレット(CS)は、楕円曲線点(xS,yS)の形式であって良い。これは、ノード3、7により合意された標準的な公に知られた演算を用いて、標準的な鍵フォーマットに変換されて良い。例えば、xS値は、AES256暗号鍵として使用され得る256ビットの整数であって良い。これは、更に、160ビットの長さの鍵を必要とする任意のアプリケーションのために、RIPEMD160を用いて160ビットの整数に変換され得る。
【0166】
共通シークレット(CS)は、必要に応じて決定されて良い。重要なことに、共通シークレット(CS)はメッセージ(M)に基づき再決定できるので、第1ノード3は共通シークレット(CS)を格納する必要がない。幾つかの例では、使用されるメッセージ(M)は、マスタ秘密鍵のために要求されるのと同レベルのセキュリティを有しないデータストア13、17、19(又は他のデータストア)に格納されて良い。幾つかの例では、メッセージ(M)は公に利用可能であって良い。
【0167】
しかしながら、幾つかのアプリケーションに依存して、共通シークレット(CS)が第1ノードマスタ秘密鍵(V1C)と同じくらいセキュアに保たれるならば、共通シークレット(CS)は、第1ノードに関連付けられた第1データストア(X)に格納され得る。
【0168】
有利なことに、この技術は、単一のマスタキー暗号対に基づき、複数のセキュアな秘密鍵に対応し得る複数の共通シークレットを決定するために使用できる。
【0169】
留意すべきことに、上述の実施形態は、本発明を限定するのではなく、当業者は添付の請求項により定められる本発明の範囲から逸脱することなく多数の代替の実施形態を考案できる。請求項中、括弧内に記載された如何なる参照符号も、請求項を制限すると見なされるべきではない。用語「有する(comprising又はcomprises)」等は、全体としていかなる請求項中に及び明細書に列挙された以外の要素又はステップの存在を排除するものではない。本願明細書において、「有する(comprises)」は「含む(includes)又は構成される(consists of)」を意味し、「有する(comprising)」は「含む(including)又は構成される(including of)」を意味する。要素の単数の参照は、該要素の複数の存在を排除するものではなく、逆も同様である。本発明は、複数の別個の要素を有するハードウェアにより又は適切にプログラムされたコンピュータにより、実施され得る。複数の手段を列挙している装置の請求項では、これらの複数の手段は、1つの同一のハードウェア要素により実装することができる。特定の量が相互に異なる従属請求項に記載されるという事実は、これらの量の組合せが有利に用いることが出来ないことを示すものではない。
【符号の説明】
【0170】
3 第1ノード
5 ネットワーク
7 第2ノード
CS 共通シークレット
P1C 第1ノードマスタ公開鍵
P1S 第2ノードマスタ公開鍵
P2C 第1ノード第2公開鍵
P2S 第2ノード第2公開鍵
V1C 第1ノードマスタ秘密鍵
V1S 第2ノードマスタ秘密鍵
V2C 第1ノード第2秘密鍵
V2S 第2ノード第2秘密鍵
【外国語明細書】