IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特開2024-63228暗号材料を安全に共有するためのシステム及び方法
<>
  • 特開-暗号材料を安全に共有するためのシステム及び方法 図1
  • 特開-暗号材料を安全に共有するためのシステム及び方法 図2
  • 特開-暗号材料を安全に共有するためのシステム及び方法 図3
  • 特開-暗号材料を安全に共有するためのシステム及び方法 図4
  • 特開-暗号材料を安全に共有するためのシステム及び方法 図5
  • 特開-暗号材料を安全に共有するためのシステム及び方法 図6
  • 特開-暗号材料を安全に共有するためのシステム及び方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024063228
(43)【公開日】2024-05-10
(54)【発明の名称】暗号材料を安全に共有するためのシステム及び方法
(51)【国際特許分類】
   H04L 9/08 20060101AFI20240501BHJP
   H04L 9/32 20060101ALI20240501BHJP
【FI】
H04L9/08 C
H04L9/32 200Z
【審査請求】有
【請求項の数】12
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024035452
(22)【出願日】2024-03-08
(62)【分割の表示】P 2020531060の分割
【原出願日】2018-12-07
(31)【優先権主張番号】1720768.9
(32)【優先日】2017-12-13
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1813772.9
(32)【優先日】2018-08-23
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1813770.3
(32)【優先日】2018-08-23
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】コヴァチ,アレクサンドラ
(72)【発明者】
【氏名】マデオ,シモーネ
(72)【発明者】
【氏名】モティリンスキ,パトリック
(72)【発明者】
【氏名】ヴィンセント,ステファヌ
(57)【要約】      (修正有)
【課題】複数の参加者が各々共有秘密を公開することなく共有秘密に基づく数量を生成及び交換する。
【解決手段】第1コンピューティングエンティティは、楕円曲線値の第1セットを生成するために、第1多項式を決定し、楕円曲線点のセットを第2コンピューティングエンティティに利用可能にし、第1コンピューティングエンティティは、第2コンピューティングエンティティから、第2コンピューティングエンティティによって生成された楕円曲線点の一部又はすべてに対応する楕円曲線点の第2セットを受け取り、楕円曲線点の第1及び第2セットの少なくとも一部に基づいて、同一の共通参照文字列を決定し、第1、第2コンピューティングエンティティがトランザクションに合意し、スマートコントラクトを正しく実行する第3コンピューティングエンティティによってアンロックできる、スマートコントラクトの夫々のトランザクション入力に対する寄与を各々作成する。
【選択図】図5
【特許請求の範囲】
【請求項1】
コンピュータ実施方法であって、
各参加者がコンピューティングエンティティである複数の参加者の各々において、
多項式として表すことができる関数を決定するステップと、
前記関数を点のセットで評価して値を取得し、前記値の累乗を他の参加者に分配するステップと、
前記他の参加者から前記点のセットで評価された他の関数の値の累乗を受け取るステップと、
前記値の累乗を使用してマスター関数を決定し、特定の点において前記マスター関数を評価して秘密の累乗を取得するステップと、
前記秘密の累乗に基づいて前記複数の参加者の間でブロックチェーントランザクションを共同で生成するステップと、
を含む、方法。
【請求項2】
前記点のセットは楕円曲線点のセットである、
請求項1に記載の方法。
【請求項3】
前記マスター関数を決定することは、ラグランジュ補間に基づく、
請求項1に記載の方法。
【請求項4】
前記秘密の累乗に少なくとも部分的に基づいて、前記複数の参加者によって決定可能な共通参照文字列を決定するステップ、
を更に含む、請求項1に記載の方法。
【請求項5】
前記値の累乗を前記他の参加者に共有する際にオフチェーン通信が利用される、
請求項1に記載の方法。
【請求項6】
前記複数の参加者は、正確に2人の参加者である、
請求項1に記載の方法。
【請求項7】
前記特定の点は、交点である、
請求項1に記載の方法。
【請求項8】
前記点のセットは、前記交点を除外する、
請求項7に記載の方法。
【請求項9】
前記点のセットで評価される前記関数は、少なくとも2次数の多項式である、
請求項1乃至8のいずれかに記載の方法。
【請求項10】
前記点のセットの各点は、異なる点である、
請求項1乃至9のいずれかに記載の方法。
【請求項11】
システムであって、
プロセッサと;
前記プロセッサによる実行の結果として、当該システムに請求項1乃至10のいずれかに記載のコンピュータ実施方法を実行させる実行可能命令を含む、メモリと;
を含む、システム。
【請求項12】
コンピュータシステムのプロセッサによって実行されている結果として、前記コンピュータシステムに請求項1乃至10のいずれかに記載のコンピュータ実施方法を少なくとも実行させる実行可能命令を格納する、非一時的コンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピュータセキュリティ及び検証に関し、より具体的には、指数(exponent)及び乗算係数(multiplicative coefficient)が共有秘密のべき乗(powers of a shared secret)に依存するグループの要素を、複数の(例えば2人より多くの)当事者が共有することを可能にする技術に関する。数量(quantities)は、複数の当事者が、共有秘密を公開することなく、共有秘密(例えば共有秘密のべき乗)に基づく数量を交換するように共有され得る。本発明は、限定ではないが、スマートコントラクトにおける使用に特に適しており、この場合、複数の当事者は、スマートコントラクトのパラメータに合意する、スマートコントラクトのそれぞれの当事者であってよい。本発明は、暗号化及び数学的技術を利用して、セキュリティ関連の利点のために数量を共有してよい。
【背景技術】
【0002】
ブロックチェーンは、ブロックにより構成される、コンピュータベースの非集中型の分散システムとして実装されるピアツーピア電子台帳を指すことがあり、ブロックはトランザクション及び他の情報により構成され得る。いくつかの例において、「ブロックチェーントランザクション」は、データ及び条件のセットを含むフィールド値の構造化されたコレクションを符号化する入力メッセージを指し、この場合、条件のセットを満たすことは、フィールドのセットがブロックチェーンデータ構造に書き込まれるための前提条件である。例えばビットコインでは、各トランザクションは、ブロックチェーンシステムの参加者間のデジタル資産の制御の移転を符号化し、少なくとも1つの入力及び少なくとも1つの出力を含む、データ構造である。いくつかの実施形態において、「デジタル資産」は、使用権に関連付けられるバイナリデータを指す。デジタル資産の例は、ビットコイン、イーサ、ライトコインを含む。いくつかの実装において、デジタル資産の制御を移転することは、デジタル資産の少なくとも一部を第1エンティティから第2エンティティに再関連付け(reassociating)することによって実行され得る。ブロックチェーンの各ブロックは、ブロックが一緒にチェーン化されることになり、その始めからブロックチェーンに書き込まれたすべてのトランザクションの永続的で変更不能なレコードを作成するように、以前のブロックのハッシュを含んでよい。トランザクションは、それらの入力及び出力に組み込まれるスクリプトとして知られる小さなプログラムを含み、トランザクションの出力が、どのように何によってアクセスされ得るかを指定する。ビットコインプラットフォームでは、これらのスクリプトは、スタックベースのスクリプト言語を使用して書かれる。
【0003】
ブロックチェーン技術は、暗号通貨実装の使用について最も広く知られているが、デジタル起業家達は、新たなシステムを実装するために、ビットコインが基づいている暗号通貨セキュリティシステムと、ブロックチェーン上に格納することができるデータとの双方の使用を探求し始めている。暗号通貨の領域に限定されない自動化タスク及びプロセスにブロックチェーンを使用することができれば非常に有利であろう。そのようなソリューションは、それらの用途はより多方面にわたるが、ブロックチェーンの利点(例えば永続性、イベントの改ざん防止レコード、分散処理等)を利用することができるであろう。
【0004】
本開示は、1つ以上のブロックチェーンベースのコンピュータプログラムの技術的側面を説明する。ブロックチェーンベースのコンピュータプログラムは、ブロックチェーントランザクション内に記録される機械読取可能で実行可能なプログラムであってよい。ブロックチェーンベースのコンピュータプログラムは、結果を生成するために入力を処理することができ、次いで、それらの結果に依存してアクションを実行させることができるルールを含んでよい。現在の研究の1つの分野は、「スマートコントラクト」の実装のためのブロックチェーンベースのコンピュータプログラムの使用である。自然言語で書かれる伝統的な契約とは異なり、スマートコントラクトは、機械読み取り可能な契約又は合意の条件の実行を自動化するように設計されるコンピュータプログラムであってよい。
【発明の概要】
【発明が解決しようとする課題】
【0005】
したがって、2以上の当事者間で共有秘密のべき乗を決定するために使用することができる数量を交換することによって、ブロックチェーン上に複数当事者の検証鍵を記録するためのプロトコルを提供することが望まれる。様々な実施形態において、スマートコントラクトの2以上の当事者が、検証鍵及び評価鍵を含む共通参照文字列を決定するために使用可能な数量を交換することが望ましいことがある。様々な実施形態において、本明細書で説明される技術は、2以上の当事者が、暗号化のような暗号技術を使用することなく、共有秘密のべき乗を交換することを可能にし、さらに、それらの当事者が、通信チャネルを介して交換されるデータの暗号的に検証可能な保証の機密性を必要とする通信チャネルを確立することを必要としない。したがって、本発明は、改善されたセキュリティ及び検証ソリューションを提供する。
【0006】
そのような改善されたソリューションが考案されている。
【課題を解決するための手段】
【0007】
したがって、本明細書によると、添付の特許請求の範囲で定義されるシステム及び方法が提供される。
【0008】
本発明によると、ブロックチェーンネットワークのノードのためにコンピュータ実施方法が提供されてよく、コンピュータ実施方法は、複数の参加者のうちのある参加者において、有限フィールド要素をマップするために使用可能な関数を決定するステップと;参加者の数に基づいて、点のセットで評価される多項式を生成するステップと;多項式を、複数の参加者のうちの対応する参加者に分配するステップと;複数の参加者の各参加者の多項式の和を決定するステップであって、和は秘密の累乗(a power of a secret)に対応する、ステップと;複数の参加者の間で秘密に基づいてブロックチェーントランザクションを集合的に生成するステップと、を含む。
【0009】
好ましくは、点のセットは、楕円曲線点(elliptic curve points)のセットである。
【0010】
好ましくは、多項式の和の決定は、ラグランジュ補間に基づく。
【0011】
本明細書で説明される方法は、秘密の累乗に少なくとも部分的に基づいて、複数の参加者によって決定可能な共通参照文字列を決定するステップを更に含んでよい。
【0012】
本明細書で説明される方法は、複数の参加者の各参加者から、多項式の対応する値を受け取るステップを更に含んでよい。
【0013】
好ましくは、オフチェーン通信が、対応する参加者に多項式の値を分配する際に利用される。オフチェーン通信は、ブロックチェーンネットワークにブロードキャストされない、かつ/又はブロックチェーンネットワークによって検証可能でないデータ通信を指してよい。
【0014】
好ましくは、有限フィールド要素をマップするために使用可能な関数は、グループのジェネレータ(generator)の係数又は指数として機能する。
【0015】
好ましくは、複数の参加者は、正確に2人の参加者である。
【0016】
秘密は、特定の楕円曲線点のような特定の点で評価される多項式の和に基づいて決定されてよい。
【0017】
特定の点は、各参加者の多項式の和が(マスター(master))多項式を構成するような、交点(intersection point)であってよく、そのy軸との交点は秘密である。
【0018】
点のセットは、交点を除外してよい。言い換えると、少なくとも一部の場合には、交点は、点のセットのメンバではない。
【0019】
点のセットで評価される多項式は、少なくとも2次数のものであってよい。
【0020】
好ましくは、点のセットの各点は、点のセット内に重複する点が存在しないように、異なる点である。
【0021】
また、プロセッサと、該プロセッサによる実行の結果として、システムに、特許請求に係る方法のいずれかを実行させる実行可能命令を含むメモリとを備えるシステムを提供することが望ましい。
【0022】
また、コンピュータシステムの1つ以上のプロセッサによる実行の結果として、コンピュータシステムに、特許請求に係る方法のいずれかを少なくとも実行させる実行可能命令を格納している非一時的コンピュータ読取可能記憶媒体を提供することが望ましい。
【図面の簡単な説明】
【0023】
本発明のこれら及び他の態様は、本明細書で説明される実施形態から明らかになり、実施形態に関連して解明されるであろう。本発明の実施形態は、次に単なる例示として、添付の図面に関連して説明される:
図1】スマートコントラクトの複数当事者が、スマートコントラクトを実行するために第3当事者と合意する、コンピューティング環境を示す図である。
図2】第1コンピューティングエンティティと第2コンピューティングエンティティが、2以上の当事者間で共有秘密のべき乗を決定するため使用することができる数量を交換する、コンピューティング環境を示す図である。
図3】第1コンピューティングエンティティと第2コンピューティングエンティティが、ゼロ知識(zero-knowledge)を提示(render)するパラメータのセットを交換する、コンピューティング環境を示す図である。
図4】2当事者共通参照文字列(CRS:common reference string)と、対応する正当性のプルーフ(POC:proof-of-correctness)又は正しい実行のプルーフとに基づく、プロトコルの図である。
図5】一実施形態に従って、検証鍵及び評価鍵を含む2当事者共通参照文字列を生成するためのプロセスを示す図である。
図6】少なくとも一実施形態に従って、複数当事者間で共有秘密のべき乗を共有するためのプロセスを示す図である。
図7】本開示の少なくとも一実施形態を実施するために使用することができるコンピューティングデバイスの簡略化されたブロック図である。
【発明を実施するための形態】
【0024】
図1は、様々な実施形態を実装することができるブロックチェーン環境を図示している。
【0025】
本開示は、指数又は乗算係数が共有秘密のべき乗に依存するグループの要素を、複数の当事者が安全に共有することを可能にする、システム及び方法を実装するために利用され得る技術を説明する。複数の当事者が、共有秘密を公開することなく、共有秘密(例えば共有秘密のべき乗)に基づく数量を交換するように、数量が共有されてよい。したがって、様々な実施形態において。複数のn参加者は、共有秘密のべき乗の表現(例えば乗算的ケースでは〈Sを確立する。
【0026】
実施形態において、本明細書で説明されるプロトコル利用技術及び方法は、スマートコントラクトの2当事者によって、秘密自体を共有せず、かつ別のコンピューティングエンティティ(例えばスマートコントラクトへの当事者でないコンピューティングエンティティ)がその秘密を決定することを可能にする情報を明らかにせずに、これらの当事者によって使用され得る数量を共有し、共有秘密のべき乗を決定するために使用される。一実施形態において、プロトコルは、スマートコントラクトの第1当事者が、スマートコントラクトの第2当事者に送信されるパラメータの第1セットを計算することと、第2当事者が、パラメータの第2セットを計算し、これらのパラメータを第1当事者に提示することを含み、ここで上述のようなパラメータの交換時に、両当事者は、検証鍵を含む同一の共通参照文字列を計算することができる。当事者は、次いで、トランザクションに合意してよく、そのようなトランザクションでは、当事者は、アドレス(例えばブロックチェーンネットワークの作業者ノードのアドレス)に対してロックされ、アンロック(例えば使用)することができる、スマートコントラクトに対してデジタル資産の比例的寄与(proportionate contributions)を行う。一実施形態において、スマートコントラクトの当事者間のオフチェーン通信は、共通参照文字列を生成するために使用されるパラメータの交換に限定されるが、セキュリティ保証は維持される(例えばスマートコントラクトに対する当事者ではない、相手(adversary)又は他のコンピューティングエンティティによって交換されたパラメータに基づいて、秘密鍵は開かされず又は他の方法で決定可能でない)。一実施形態において、2当事者(又はより一般的な場合では、2以上の当事者)は、本明細書の他の箇所、例えば図1図7に関連して説明されるような方法で、共有秘密のべき乗を共有する技術を利用する。
【0027】
本開示の様々な実施形態が実施され得る例示のコンピューティング環境を図示している図1を参照することができる。本明細書で説明されるシステム及び方法は、第1及び第2コンピューティングエンティティが同一の共通参照文字列を計算するために使用することができる数量を、スマートコントラクトの当事者が交換するためのプロトコルに関連し得る。図1は、パラメータのセットを交換する第1コンピューティングエンティティ102と第2コンピューティングエンティティ104を含む、コンピューティング環境100を図示している。そのようなパラメータのセットは、第1コンピューティングエンティティと第2コンピューティングエンティティの双方が、共通参照文字列108を決定することを可能にする。共通参照文字列は、コンピューティングエンティティのいずれか又は双方がトランザクション入力として寄与するデジタル資産をロックするスマートコントラクト110を生成するために、当事者によって使用されてよい。共通参照文字列は、評価鍵112と検証鍵114を含んでよい。スマートコントラクト110は、図1に図示されるブロックチェーン118のようなブロックチェーンに対して発行されてよい。スマートコントラクト110は、該スマートコントラクト110に対する当事者ではない、第3コンピューティングエンティティ106によって実行されてよい。スマートコントラクトの実行の一部として又はそれに関連して、第3コンピューティングエンティティ(例えば作業者(worker))は、共通参照文字列の評価鍵に少なくとも部分的に基づいて、スマートコントラクトの正しい実行のプルーフ(proof of correct execution)116を生成してよい。正しい実行のプルーフ116は、任意の適切なコンピューティングシステム(例えばスマートコントラクトの当事者、あるいは検証者ノードとして動作するブロックチェーンネットワークのノード)によって計算的に検証可能であり得る。実施形態において、検証鍵114は、第4コンピューティングエンティティ(例えば検証者コンピュータシステム)によって、ブロックチェーンネットワーク118に発行されたプルーフが正しいことを検証するために使用される。
【0028】
第1コンピューティングエンティティ102及び第2コンピューティングエンティティ104は、少なくとも1つの実施形態によると、スマートコントラクトに対する当事者であるコンピュータシステムである。スマートコントラクトの当事者は、スマートコントラクトの実行に対する条件に(例えば関連するユーザ入力デバイスを通して提供されるユーザ入力に従って)合意する2つ以上のコンピューティングエンティティを指してよい。第1コンピューティングエンティティ102及び第2コンピューティングエンティティ104は双方ともスマートコントラクトに合意し、スマートコントラクトにトランザクション入力を寄与してよく、これにより、スマートコントラクトのそれぞれのトランザクション入力は、作業者ノードがスマートコントラクトの正しい実行のプルーフを提供した結果としてアンロック(例えば使用)できる、ロッキングスクリプトによって妨害される。本明細書で説明されるシステム及び方法は、ロッキングスクリプトが検証鍵Vを変更から保護することを可能にし、プルーフπの妥当性をチェックし、それにより、トランザクション検証中にブロックチェーンに対するゼロ知識プロトコルの実行を可能にすることに関する。
【0029】
様々な実施形態において、第1コンピューティングエンティティ102及び第2コンピューティングエンティティ104は、一実施形態では、スマートコントラクトの実行を制御するために使用される、日付、時間、条件及びアクション(例えばデジタル資産の制御の移転)のようなスマートコントラクトのパラメータを符号化するメッセージのセットを交換することによって、スマートコントラクトに合意する。例えばスマートコントラクト(例えば実行可能プログラム)は、特定のフライトの遅延に対する当事者の保険を引き受けることがあり、プログラムの実行は、特定の日における特定の商用フライトのフライト情報のような外部データを使用して、その特定のフライトが遅れたかどうかを判断することを含んでよい。フライトが遅れた場合、プログラムの当事者は、資産の移転を受け取ってよい(例えば遅延に対する旅行保険を提供するスマートコントラクト)。
【0030】
一実施形態において、スマートコントラクト110は、C、C++又はJava(登録商標)のような高レベルのプログラミング言語でソースコードとして符号化される。これらは単に説明的な例であり、スマートコントラクトは、他の適切なプログラミング言語を使用して符号化されてよい。一実施形態では、コンパイラ、インタプリタ及び/又はアセンブラのようなソフトウェアを使用して、スマートコントラクト110を、フィールド
【数1】
からの値を担持し、かつ加算ゲートと乗算ゲートを接続する、「ワイヤ」からなる演算回路に変換してよい。演算回路は、(例えば7400シリーズゲート、フリップフロップ、バッファ、デコーダ、マルチプレクサ等のトランジスタ-トランジスタロジック(TTL)集積回路を使用して)物理ワイヤによって接続される一連の物理ゲートを含む物理回路によって実装され得る論理回路を指してもよいことに留意されたい。スマートコントラクト110の実行が図1の文脈又は他の箇所で説明されるが、スマートコントラクトの使用は、算術回路に変換することができるソースコードの非限定的な一例にすぎない。一実施形態では、クライアントは(例えば第1コンピューティングエンティティ102単独で、あるいは第2コンピューティングエンティティ104とともに)、オペレーションのセットによって定義されるタスクを実行するためのソースコードを決定し、ここで、タスクの実行は、第3コンピューティングエンティティ106(作業者又は証明者(prover)と呼ばれる)に委任される。一般的に言うと、検証者は、証明者によって生成された正しい実行のプルーフ116の妥当性を確かめること等によって、証明者がタスクを正しく実行したことを決定することに関連するタスクを実行してよい。
【0031】
検証可能な計算は、計算のプルーフの生成を可能にする技術である。一実施形態において、そのような技術は、クライアントによって、本明細書で証明者と呼ばれる別のコンピューティングエンティティに、入力xに対する関数fの評価をアウトソースするために利用される。場合によっては、クライアントは計算的に制限されるため、クライアントが関数の評価を実行することは不可能であるが(例えばクライアントに利用可能なコンピューティングリソースを用いる計算の予測されるランタイムが、許容可能な最大閾値を超える)、必ずしもそうである必要はなく、クライアントは、一般的に言うと、計算ランタイム、計算コスト(例えば関数の評価を実行するためにコンピューティングリソースを割り当てる金融コスト)等のような任意の適切な基準に基づいて入力xに対する関数fの評価を委任してよい。
【0032】
証明者は、一実施形態では、本開示の他の箇所で更に詳細に説明されるブロックチェーンノードのような、任意の適切なコンピューティングエンティティである。一実施形態において、証明者(例えばブロックチェーンノード)は、入力xに対して関数fを評価し、出力yと、上述のようなクライアント及び/又はブロックチェーンネットワークの他のノードのような他のコンピューティングエンティティによって検証できる出力yの正しさのプルーフπとを生成する。プルーフは、引数とも呼ばれることがあるが、実際の計算を行うよりも早く検証することができ、したがって、上述の証明者によって生成された出力の正しさを判断するために、入力xに対して関数fを再計算する代わりにプルーフの正しさを検証することにより、計算的オーバーヘッドを低減することができる(例えば電力オーバーヘッドと、コンピューティングリソースの電力供給(powering)及び実行に関連付けられるコストを低減する)。ゼロ知識検証可能な計算において、証明者は、該証明者が、特定の特性を有する入力を知っていることの証明をクライアントに提供する。
【0033】
知識のゼロ知識プルーフ(zero-knowledge proof of knowledge)の有効な変形はzk_SNARK(Succinct Non-interactive ARgument of Knowledge)である。一実施形態において、全ペアリングベースのzk_SNARKs(all pairings-based zk-SNARKs)は、証明者が、一般的なグループオペレーションを使用して複数のグループ要素を計算し、検証者が、複数のペアリング積の方程式(pairing product equations)を使用してプルーフをチェックするプロセスを含む。一実施形態において、線形対話型プルーフは有限フィールドに対して機能し、証明者の及び検証者のメッセージは、フィールド要素のベクトルを決定するために使用可能な情報を含むか、符号化し、参照し、あるいは他の方法で含む。
【0034】
一実施形態において、第1コンピューティングエンティティ及び/又は第2コンピューティングエンティティは、メッセージのセットを交換することによって、スマートコントラクトの実行の条項について合意する。そのようなメッセージは、例えば満たされている条件に基づいて、実行すべきスマートコントラクト及びオペレーションのセットを実施するかどうか及び/又はどのように実施するかを決定する、条件のセットを符号化する1つ以上のブール式のようなスマートコントラクトの実行のための提案されるパラメータを符号化する。一実施形態において、あるコンピューティングエンティティは、パラメータのセットをプロトコルの一部として第2コンピューティングエンティティに送信し、第2コンピューティングエンティティは、それらのパラメータがスマートコントラクトにとって受け入れ可能であるかどうかを判断する。パラメータが受け入れられない場合、第2コンピューティングエンティティは、スマートコントラクトの実行のための提案されるパラメータの第2セットとして、異なるパラメータのセットを第1コンピューティングエンティティに提供してよい。また、第2コンピューティングエンティティは、パラメータの第1セットが受け入れ可能でなかったという信号を提供してよく、第1コンピューティングエンティティは、提供すべきパラメータの第2セットを決定する。いずれかの場合において、すべての当事者がパラメータに対する合意を信号伝達すると、いずれかのコンピューティングエンティティは、一実施形態において、ロッキングトランザクションを生成することができ、ここで、出力のうちの1つがプログラム(例えばスマートコントラクトスクリプト)によってロックされ、それを、スマートコントラクトの相手方に送信する。ロッキングトランザクションは、アンロッキングトランザクションを有効にすることができる制約を初期化するトランザクションを指してよい。いくつかの例において、「アンロッキングトランザクション」は、以前のトランザクションのUTXOによって示されるデジタル資産の少なくとも一部を、ブロックチェーンアドレスに関連付けられるエンティティに再関連付けする(例えば所有権及び制御を移転する)、ブロックチェーントランザクションを指す。
【0035】
一実施形態において、第1コンピューティングエンティティは、ロッキングトランザクションを生成し、作業者フリー(worker fee)の部分を網羅するトランザクション入力を追加する。この時点では、ロッキングトランザクションはまだ有効ではないことに留意されたい。なぜなら、トランザクション入力の値は、ロッキングトランザクションのトランザクション出力の値に等しくないからである。例を続けると、第2コンピューティングエンティティがロッキングトランザクションを受け取ると、第2コンピューティングエンティティは、スマートコントラクトを確認(例えば共通参照文字列及びスマートコントラクトの実行のためのパラメータを確認)し、入力をロッキングトランザクションに追加し、UTXOをアンロックして、デジタル資産に合意し、かつプログラム(例えばスマートコントラクト)の実行のために作業者に支払われるべき報酬及び該作業者に対する報酬の値を有する出力にも合意した発行者に転送する。第1コンピューティングエンティティと第2コンピューティングエンティティの双方がトランザクション入力をスマートコントラクトに寄与する場合、スマートコントラクトは、両当事者によって共同で所有されることがあり、スマートコントラクトの移転(例えば交換又は販売)は、両当事者からの証明書を必要とすることがある。
【0036】
スマートコントラクト110は、ブロックチェーンネットワークのノードのような第3コンピューティングエンティティ106によって実行されてよい。第3コンピューティングエンティティ106は、作業者又は証明者と呼ばれることがある。一実施形態において、作業者は、入力に対する関数の計算を伴う計算タスクを少なくとも実行することによって、スマートコントラクトを実行する。一実施形態において、作業者は、スマートコントラクトの所有者が計算タスクを委任し得る任意の適切なコンピュータシステムである。入力は、一実施形態では、作業者の身元を証明する情報、例えば作業者に関連付けられる秘密鍵を使用して生成されたデジタル署名等を含む。一実施形態において、作業者は、第1及び第2コンピューティングエンティティが、計算タスクを成功裏に完了した見返りにデジタル資産を移転するよう合意したコンピューティングエンティティである。スマートコントラクトの所有者は、一実施形態では、入力x及び評価鍵E112を証明者に提供し、証明者は、計算ルーチンに対して評価モジュールを使用して出力yを計算し(すなわち、y=f(x)、ここで、入力はx、関数はfである)、評価鍵Eを使用して、正しい実行のプルーフ116を生成する。正しい実行のプルーフ116は、本明細書の他の箇所では、正当性のプルーフと呼ばれることもある。実施形態において、作業者は、コンピュータシステムの1つ以上のプロセッサによって実行されると、コンピュータシステムにQAPの内部回路ワイヤの値を評価させ、QAPの出力yを生成させる命令を含む、ハードウェア及び/又はソフトウェアを備えるコンピュータシステムである。
【0037】
実施形態において、出力y、内部回路ワイヤの値(又はそのサブセット)及び評価鍵Eは、正当性のプルーフを生成するために使用される。プルーフπをブロックチェーンに格納することができ、作業者が複数の当事者と別個に対話する必要なく、複数の当事者によって確認することができる。このようにして、第4コンピューティングエンティティ(例えば検証者コンピュータシステム)は、公開検証鍵V114及びプルーフπを使用して、ブロードキャストされたトランザクションを検証することができ、それにより、スマートコントラクトを検証することができる。場合によっては、スマートコントラクトの所有者は、検証が失敗した場合に、ブロードキャストされたトランザクションによって妨害されているデジタル資産を取り戻してもよい。場合によっては、スマートコントラクトの所有者は、プルーフの検証を実行することができる。
【0038】
一実施形態において、検証鍵114及び対応するプルーフ116は、上記及び/又は下記で説明される技術に従って生成される。したがって、検証者は、該検証者が、複数の楕円曲線乗算(elliptic curve multiplications)(例えば各公開入力変数に対して1つ)及び5つのペアチェックを計算し、5つのペアチェックのうちの1つが、追加のペアリング乗算を含むように、次の検証鍵V及びプルーフπを与えられる:
【数2】
【0039】
検証鍵V、プルーフπ及び(a,a,...,a)を所与として、t(x)がp(x)を割ること、したがって、(xN+1,...,x)=f(x,...,x)であることを確認するために、検証者は次のように進む。まず、すべての3つのα項をチェックする:
e(αmid(s)P,Q)=e(rmid(s)P,αQ)
e(αmid(s)P,Q)=e(αP,rmid(s)Q)
e(αmid(s)P,Q)=e(rmid(s)P,αQ)
ここで、
【数3】
【数4】
【数5】
である。次いで、検証者は、項βをチェックする:
e(rmid(s)P+rmid(s)P,βQ)・e(βP,rmid(s)Q)=e(Zmid(s)P,Q)及び
【数6】
である。最後に、検証者は、可分性要件をチェックする:
e(rV(s)P,rW(s)Q)=e(rY(s)P,Q)・e(rt(s)P,h(s)Q)
ここで、
【数7】
【数8】
【数9】
【数10】
である。
【0040】
したがって、上述のセクションからの表記及び本開示で説明される例を考えると、検証は、一実施形態によると、以下の要素のペアチェックのセットを含む:
【数11】
【0041】
図2は、第1コンピューティングエンティティ202と第2コンピューティングエンティティ204が、2以上の当事者間で共有秘密のべき乗を決定するために使用できる数量を交換するコンピューティング環境200を図示している。第1コンピューティングエンティティと第2コンピューティングエンティティ204は、(図2に図示される水平の矢印の下に図示されるように)同一の共通参照文字列を計算するために使用される数量を交換してよい。一実施形態において、第1コンピューティングエンティティ及び第2コンピューティングエンティティは、図1に関連して説明されたものに従うブロックチェーンネットワークのノードである。少なくとも一実施形態によると、
【数12】
をフィールドにおける関数であるとし、Cを対応する演算回路とし、Q=(t(x)、V,W,Y)、サイズmの対応するQAP(quadratic arithmetic program)、次数dとする。さらに、
【数13】
を双線形マッピングであるとし、Gを
【数14】
のジェネレータとする。一実施形態では、(指数表現とは反対に)加法表現が選択される。一実施形態では、評価鍵及び検証鍵は、ランダムな
【数15】
を選択し、r=r・r,r・G=〈g〉(一般に:〈a〉=a・G)及び対応して〈g〉〈g〉を設定して鍵を再構築することによって、選択される:
【数16】
ここで、N=Nin+Nout、すなわち、入力と出力の数である。非対称のペアリングを検討する一実施形態では、ペアリングマッピングは、次のように定義される:
【数17】

【数18】
のジェネレータであり、i=1、2である。そのような場合、CRSはわずかに変化し、VKは以下のようになる:
【数19】
ここで、r=r・rであり、〈a〉=a・Gである。
【0042】
示されるように、回路は多項式v、wによって記述され、これらの多項式は、それらの回路及び対応するQAPを所有/作成する当事者(例えばスマートコントラクトの所有者)にのみ知られている秘密sで評価される。
【0043】
より正確には、上述のように、クライアントは要素を生成する:
【数20】
【0044】
一方、提案されるソリューションのセキュリティは、パラメータsに依拠し、いくつかの実施形態では、残りの(r,r,α,α,α,β,γ)を公開することは、システムにゼロ知識を提示しない情報及び/又はクライアントが他のエンティティに知らせたくない情報を明らかにする可能性がある。
【0045】
一実施形態では、作業者が正当性のプルーフを提供することを必要とするソリューションでは、検証鍵に対して正当性のプルーフを確認するためのオペコード(又は同等のもの)が存在してよい。
【0046】
本開示全体を通して、別段の記載がない限り、本明細書における多項式は、フィールド
【数21】
に対して定義される。したがって、
【数22】
をフィールドとする。したがって、
【数23】
に対する多項式は、
【数24】
によって与えられる:
【数25】
ここで、
【数26】
である。
【0047】
一実施形態では、共通参照文字列は、形式:
v(s)=a+as+a+・・・+a
w(s)=b+bs+b+・・・+b
で表される、秘密sで評価される多項式v(x)、w(x)によって表される。
【0048】
一実施形態において、本明細書で説明される技術は、関連するグループ(例えば楕円曲線点)のジェネレータについて、形式:〈v(s)〉=〈a+〈as〉+〈a+・・・の楕円曲線点を決定して共有するために利用される。したがって、一実施形態では、本明細書で説明されるシステム及び方法は、任意の整数べき乗rについて、sG=〈sを決定して分配するために利用される。
【0049】
少なくとも一実施形態による、〈sを共有して分配するための技術が図2に図示されている。一例として、n=2の場合が、図2に関連して以下で更に詳細に説明されており、スマートコントラクトの当事者間で秘密のべき乗を共有する非限定的な例と見なされるべきである。さらに、本明細書で説明される様々な実施形態では、閾値に相当するものが予め与えられ、必要な数の参加者が最初に合意すると想定されることに留意されたい。
【0050】
図2は、少なくとも一実施形態による、2参加者間の場合に共有秘密のべき乗を共有及び分配するための技術を図示している。図2に図示されるように、少なくとも一実施形態によると、正確に2人の当事者が、共有秘密のべき乗を共有する参加者である(すなわち、n=2の場合)。第1及び第2コンピューティングエンティティは、それぞれ、A及びBと呼ばれることがある。一実施形態において、A及びBは、以下の情報を交換してよい:Aは〈p(x)〉をBに送信し、代わりに〈p(x)〉を受け取る(i∈{1,2})。このようにして、双方が計算することができる:
〈p(x)〉=〈p(x)+p(x)〉
【0051】
ラグランジュ補間(ラグランジュ多項式、n.d.)を使用して、pを、p(x1)及びp(x2)に関して、そして〈p(x)〉によって、拡張〈p(x)〉により表すことができる(WP0559を参照されたい):
【数27】
参加者は、p(x)を再構築することはできないが、交換された点〈p(x)〉によって、〈p(x)〉(特に〈p(0)〉)を再構築することができる。これは、同様に、〈p(x)〉のより高いべき乗についても当てはまる。多項方程式(多項定理、n.d.)の結果として、
【数28】
である。m=2について、これは次のようになる:
【数29】
次に、以下の項の「タワー」(tower)が得られる(ここで、i=1、2):
【表1】
【0052】
模式的に、交換は(何らかのxについて)以下のように見えることがある:
【表2】
【0053】
この交換の後(特定の予め予定された変換に続いて)、両当事者は〈p(x)〉、特に〈p(0)〉=〈sを計算することができる。
【0054】
図3は、第1コンピューティングエンティティ302と第2コンピューティングエンティティ304が、図1に関連して説明されるもののようなプロトコルにゼロ知識を提示するパラメータのセットを交換する、コンピューティング環境300を図示している。様々な実施形態によると、公開検証鍵は、以下の形式を持ってよい:
【数30】
【0055】
一方、提案されるソリューションのセキュリティは、パラメータsに依拠し、いくつかの実施形態では、残りの(r,r,α,α,α,β,γ)を公開することは、システムにゼロ知識を提示しない情報及び/又はクライアントが他のエンティティに知らせたくない情報を明らかにする可能性がある。したがって、一実施形態では、検証鍵306を生成するために使用される残りのパラメータの一部又はすべてが、図3に関連して説明される技術を使用して共有される。
【0056】
一実施形態において、多項式は、例えば図1図2及び図4に関連して説明されるもののような、本開示の他の箇所で説明される技術に従って、第1コンピューティングエンティティ302と第2コンピューティングエンティティ304(それぞれA及びBと呼ばれることもある)との間で交換される。したがって、一実施形態において、第1コンピューティングエンティティ302は、楕円曲線点のセット
【数31】
を計算して第2コンピューティングエンティティ304に共有し、第2コンピューティングエンティティ304は、楕円共有点のセット
【数32】
を計算して第1コンピューティングエンティティ302に共有する。加えて、検証鍵306を生成するために使用される他のパラメータは、平文フォーマットでは通信チャネルを介して明らかにされず、代わりに、以下で説明される技術を使用して伝送されてよい。
【0057】
一実施形態によると、G
【数33】
のジェネレータ、i=1,2であるとし、p=v,w,yについて、〈p(s)〉=r・p(s)・Gとする。さらに、一実施形態では、
【数34】
が共有され、他のパラメータは、該パラメータの秘密性(例えば暗号化又は他の隠蔽技術)を保証する方法で伝搬される。参加者のいずれかは、反対に、パラメータ
【数35】
を生成し、それらを、他のオフライン又はオンライン(例えばオンチェーン)のものに転送してよいことに留意されたい。前者、すなわち、他のパラメータの秘密性を保証することに関して、様々な技術が利用されてよい。例えばシャミアの秘密分散法(Shamir’s Secret Sharing Scheme:4S)を使用することによって、要素〈α,〈α,〈α,〈α(及び場合によっては、実装/プロトコルに依存して〈β〉,〈β〉)を共有し、かつ/又はr,r,β,γについてディフィー・ヘルマンのような秘密生成を使用する。
【0058】
一実施形態において、要素〈α,〈α,〈α,〈α,〈β〉,〈β〉又はこれらの何らかの組合せは、〈a〉=a・Gの形式のものである。sの場合と同様に、iは、多項式qを生成し、それをx、j∈{1,...,m}で評価し、参加者jと対応するq(x)を共有する。各参加者は、
【数36】
特にq(0)・G=〈q(0)〉
を決定することができ、ここで、q(0)は、α,α,α,β又はその何らかの組合せとすることができ、その特定の組合せは、zk_SNARKsプロトコルのようなプロトコル/変換に基づいてよい。
【0059】
一実施形態において、αパラメータは、楕円曲線点によって共有され、一方、他のパラメータはスカラー値によってなされる。そのような値について、少なくとも一実施形態によると、パラメータ自体を共有する必要なく、ディフィー・ヘルマン法(Diffie-Hellman scheme)を使用して2つのコンピューティングエンティティ間でスカラーパラメータを共有する。したがって、一実施形態によると、P={t,...,t}をNパラメータのセットとする。一実施形態では、A及びBが、法(modulus)μ及びジェネレータγの乗法群I’を使用して合意しており、参加者(A及びB)は以下のステップに続くと想定する(ここでは指数表現が説明的例として使用されるが、他の適切な表現が利用されてよい):各i∈{1,...,N}について、第1及び第2コンピューティングエンティティは、それぞれ、(秘密の)ランダム数vA,i、vB,iを作成し、双方が(公開)要素:
【数37】
を導出する。コンピューティングエンティティは、次いで
【数38】
を交換し、
【数39】
をそれぞれ計算する。したがって、パラメータは、
【数40】
を設定される。
【0060】
したがって、上記技術は、第1及び第2コンピューティングエンティティが、パラメータを交換する必要なく、代わりに、
【数41】
を交換することによって、パラメータtを共有することを証明した。少なくとも一実施形態によると、参加者の数は、少なくとも1つのパラメータが前述の方法で交換された結果として、n=2に限定されることに留意されたい。
【0061】
図4は、2当事者の共通参照文字列(CRS)と、対応する正当性のプルーフ(POC)又は正しい実行のプルーフに基づくプロトコルの図400を図示している。図400は、第1コンピューティングエンティティ402、第2コンピューティングエンティティ404及び第3コンピューティングエンティティ406を図示しており、第1コンピューティングエンティティ402及び第2コンピューティングエンティティ404は一緒に、スマートコントラクトの実行後に第3コンピューティングエンティティ406によってアンロックできるスマートコントラクトに対する寄与を行う。一実施形態において、プロトコルは、少なくとも部分的にブロックチェーンネットワークを使用して実装される。
【0062】
本開示によると、(例えば図4に関連して)更に詳細に説明されるように、2参加者A及びBのためのスキーム及びプロトコルが、共有秘密を生成し、したがって、関連する回路の正しい実行を確認するために使用できる共有の共通参照文字列(CRS)を生成するために利用されてよい。一実施形態において、スキームは、最初にAとBの間で、次に、A+B(又はいずれか)と、A又はCの少なくとも一方の代わりに計算タスクを実行する作業者Cとの間でのデータのオフチェーン交換を想定している。作業者Cに計算タスク(例えばスマートコントラクトの実行)を実行させるために、A及びBは双方、作業者Cが正当性のプルーフを提供し、資金をアンロックするために正しい検証鍵(VK)の所持を証明することを要するトランザクション(特定のP2SHタイプのリディームスクリプト(redeem script)を含んでも含まなくてもよい)に署名する。
【0063】
本開示で提示されるプロトコルを実装するための技術は、いくつかの実施形態では、(例えば既にサポートされている既存のコマンドを使用して、ビットコインベースのブロックチェーン上に実装され得る)既存のブロックチェーンネットワークに対するいかなるプロトコルの変更も必要としない。いくつかの実施形態では、ビットコインプロトコルによってサポートされる既存のコマンドのセットに対する拡張も本明細書で議論される-拡張は、スマートコントラクトの実行の効率を改善することや、スマートコントラクトのサイズを減らすこと(正しく動作するためにブロックチェーンネットワークのノードによって必要とされるストレージ空間の量を減らすことができる)等といった、様々な利点を有し得る新たなコマンド(例えば新たなオペコード)を含んでもよい。いくつかの実施形態において、ブロックチェーンに対してスマートトランザクションを確認するコストは、スマートコントラクトのサイズに少なくとも部分的に基づく。
【0064】
一実施形態において、楕円曲線点及び共通参照文字列に関連する他のデータの交換及び移転は、オフチェーンで転送される。一実施形態において、検証鍵は最終的に、作業者Cとスマートコントラクトの評価を望んでいる2当事者(A及びB)によって実行される作業(例えばスマートコントラクトの実行)のために、デジタル資産の交換を介してブロードキャストされるか、他の方法でオンチェーンに利用可能にされる。本明細書で説明されるように、いくつかのスキームが可能である。例えばA及びBは、ロッキングトランザクションを準備するときに、双方がVK又はVKのハッシュを供給しても、しなくてもよい。言い換えると、一実施形態では、キャパシティ集中型のワークロードの大部分はオフチェーンで行われる。
【0065】
一実施形態において、プロトコルは、図4に図示される点線によって示されるように、オフチェーンとオンチェーンコンポーネントの双方を含む。オフチェーンコンポーネントは、ブロックチェーン台帳にデータを格納することなく起こり得る、データ及び情報の通信及び交換を含んでよい。例えばプロトコルのオフチェーンコンポーネントは、ソースと宛先との間でのIPパケットの交換を含んでよい(例えば第1コンピューティングエンティティ402は、第1パラメータのセットを宛先、すなわち第2コンピューティングエンティティ404に送信するソースである)。例えばプロトコルのオンチェーンプロトコルは、ブロックチェーンネットワークのノードに利用可能にされるブロックチェーン台帳にデータをボロードキャストすることを含んでよい。
【0066】
一実施形態において、第1コンピューティングエンティティ402は、第1多項式に少なくとも部分的に基づいて、楕円曲線点のセット
【数42】
を計算する。第1コンピューティングエンティティ402は、楕円曲線点のセットの少なくとも一部を含む第2コンピューティングエンティティ404にデータを送信してよい。例えば第1コンピューティングエンティティ402は、楕円曲線点の完全なセットを送信してもよい。第2の例として、第1コンピューティングエンティティ402は、楕円曲線点のサブセット
【数43】
を送信してもよい。
【0067】
いくつかの実施形態において、共有秘密sの秘密性を維持するためには必要とされないが、システムにゼロ知識を提示するために必要とされる可能性がある、追加のデータが送信される。例えば
【数44】
又はその何らかの組合せも計算され(例えば図3に関連して上述したように)、共通参照文字列を決定することの一部として使用することができる追加のパラメータを生成してもよい。一実施形態において、
【数45】
は、スカラー値のセットである。一実施形態において、q1,I(I=v,w,y)は楕円曲線点のセットを指す。
【0068】
一実施形態において、第2コンピューティングエンティティ404は同様に、第1コンピューティングエンティティ402によって使用されたものとは異なり得る多項式に基づいて、楕円曲線点のセット
【数46】
を計算する。第2コンピューティングエンティティ404は、生成された楕円曲線点のサブセット
【数47】
を第1コンピューティングエンティティ402に送信してよい。加えて、一実施形態では、
【数48】
又はその何らかの組合せのようなオプションのパラメータが交換されてよい。このようなオプションのパラメータは、共有秘密sの秘密性を維持するために必ずしも必要ではないが、プロトコルがゼロ知識であることを保証するため利用され得る。
【0069】
一実施形態において、交換された数量を、第1コンピューティングエンティティ402と第2コンピューティングエンティティ404の双方により、同一の共通参照文字列を計算するために利用することができる。第3コンピューティングエンティティ406は、後に正しい検証鍵の所有を証明しなければならないので、それらは、第3コンピューティングエンティティ(例えば作業者)に共通参照文字列を提供しても、しなくてもよい。第1及び第2コンピューティングエンティティによる同じ共通参照文字列の決定は、オフチェーンで実行されてよい。
【0070】
プロトコルを続けると、一実施形態によると、第1及び第2コンピューティングエンティティは、それらがスマートコントラクトの実行のために比例する寄与を行うトランザクションに合意する。一実施形態において、第1及び第2コンピューティングエンティティは寄与の割合に合意し、各々、スマートコントラクトに対して妨害され、かつスマートコントラクトの実行時に第3コンピューティングエンティティによってアンロックできる、トランザクション入力を提供する。これは、第1及び第2コンピューティングエンティティが両方とも同じアドレス(Cのアドレス)に資金を転送する場合、P2SH(pay-to-script-hash)タイプの合意であってよく、そうでなくてもよい。P2SHタイプのスクリプトは、検証鍵の要素又は検証鍵のハッシュ値、すなわち、h=HASH(VK)を含んでもよく、含まなくてもよい。一実施形態において、鍵はチャンクに分割されている。スマートコントラクトは、第1及び第2コンピューティングエンティティによって合意された比で支払われる作業者報酬として機能する、第1コンピューティングエンティティ402によって寄与される第1トランザクション入力と第2コンピューティングエンティティ404によって寄与される第2トランザクション入力とを有する第1トランザクション410として、ブロックチェーンにブロードキャストされてよい。
【0071】
一実施形態において、作業者とも呼ばれる第3コンピューティングエンティティ406は、英国特許出願第1719998.5号及び/又は英国特許出願第1720768.9号におけるプロトコルに従って、第2トランザクション410内の報酬をアンロックし、第3コンピューティングエンティティ406は、作業(回路の正しい実行)のため報酬をアンロックし、そのようにする際に、(a)正しい検証鍵と、(b)正当性の有効なプルーフを所有していることを証明する。検証は、別のコンピュータシステム(例えば検証者であるブロックチェーンのノード)によって及び/又はスマートコントラクトへの参加者であるコンピューティングエンティティの双方又はいずれかによって実行されてよい。
【0072】
図5は、一実施形態に従って、検証鍵と評価鍵を含む2当事者の共通参照文字列を生成するためのプロセス500の説明的例を示している。プロセス500の一部又はすべて(あるいは本明細書で説明される任意の他のプロセス又はその変形及び/又は組合せ)が、コンピュータ実行可能命令を用いて構成される1つ以上のコンピュータシステムの制御下で実行されてよく、ハードウェア、ソフトウェア又はその組合せによって1つ以上のプロセッサ上で一緒に動作するコード(例えばコンピュータ実行可能命令、1つ以上のコンピュータプログラム又は1つ以上のアプリケーション)として実装されてよい。コードは、例えば1つ以上のプロセッサによって実行可能な複数のコンピュータ読取可能命令を含むコンピュータプログラムの形式で、コンピュータ読取可能記憶媒体上に格納されてよい。コンピュータ読取可能記憶媒体は、非一時的コンピュータ読取可能媒体であってよい。いくつかの実施形態において、プロセス500を実行するために使用可能なコンピュータ読取可能命令の少なくとも一部は、単に一時的信号(例えば伝搬する一時的電気又は電磁気伝送)を使用して格納されない。非一時的コンピュータ読取可能媒体は、一時的信号のトランシーバ内部に非一時的データ記憶回路(例えばバッファ、キャッシュ及びキュー)を含んでよい。
【0073】
一実施形態において、プロセス500を実行するシステムは、システム及びスマートコントラクトの当事者によって同一の共通参照文字列を計算するために使用できる情報を少なくとも確立するために、プロセスを実行するスマートコントラクトに対する当事者であるコンピューティングエンティティである。プロセス500に関連して説明される共通参照文字列は、例えば図1図4に関連して議論されるものに従うものであってよい。一実施形態において、共通参照文字列は:
v(s)=a+as+a+・・・+a
w(s)=b+bs+b+・・・+b
の形式の秘密sで評価される多項式v(x)、w(x)によって表される。
【0074】
一実施形態において、第1コンピューティングエンティティは、楕円曲線値の第1セットを生成するために、第1多項式を決定する502。一実施形態において、システムは、関連するグループの(例えば楕円曲線点の)何らかのジェネレータGについて、〈v(s)〉=〈a+〈as〉+〈a+・・・,の形式の楕円曲線点を生成する。特段の記載がない限り、このプロセス500における多項式は、フィールド
【数49】
に対して定義される。したがって、
【数50】
をフィールドであるとする。次いで、
【数51】
に対する多項式が、
【数52】
及び
【数53】
によって与えられ、ここで、
【数54】
である。楕円曲線点のセットは、
【数55】
として表されてよい。
【0075】
第1コンピューティングエンティティは、楕円曲線点のセットを第2コンピューティングエンティティに利用可能にしてよい504。一実施形態において、システムは、楕円曲線点のセット全体を第2コンピューティングエンティティに利用可能にする必要はなく、むしろ一実施形態では、システムは、楕円曲線点のサブセット
【数56】
を伝送する。
【0076】
例えば少なくとも一実施形態によると、n=2の場合、第1コンピューティングエンティティは、
【数57】
を計算し、第2コンピューティングエンティティと
【数58】
を共有する。残りの数量
【数59】
は、第1コンピューティングエンティティによって、共通参照文字列を計算するために利用されてよい。
【0077】
第2コンピューティングエンティティもスマートコントラクトに対する当事者であるが、同じ入力点に対する楕円曲線点のセットを別個に生成(例えば楕円曲線点
【数60】
を生成)し、生成された点のすべて又は一部を第1コンピューティングエンティティに提供してよい。第1コンピューティングエンティティは、第2コンピューティングエンティティから、該第2コンピューティングエンティティによって生成された楕円曲線点の一部又はすべてに対応する楕円曲線点の第2セットを受け取ってよく506、ここで、サブセットは、本開示の他の箇所で(例えば図2及び図6に関連して)説明される技術に基づいて決定されてよい。
【0078】
一実施形態において、システムは、楕円曲線点の第1及び第2セットの少なくとも一部に基づいて、同一の共通参照文字列を決定する508。例えば楕円曲線点の交換後、ラグランジュ補間を利用して、p(x)及びp(x)に関してpを表してよい。一実施形態において、スマートコントラクトの両当事者は、交換された点〈p(x)〉によって、べき乗〈p(x)〉(特に、〈p(0)〉=〈s)を再構築することができる。べき乗〈p(x)〉について、上述の多項方程式が利用されてよい:
【数61】
【0079】
例えばm=2では、これは次のようになる:
【数62】
【0080】
一実施形態では、追加のパラメータ(例えばスカラー値及び/又は楕円曲線点)が、例えば図3に関連して説明された方法等で第1コンピューティングエンティティと第2コンピューティングエンティティとの間で交換され、それらのパラメータは、共有秘密の累乗〈sとともに、検証鍵及び/又は評価鍵を計算するために利用される。一実施形態では、パラメータは、暗号化に対する依存なしに、かつ/又は機密性の暗号的に検証可能な保証を提供する通信チャネルに対する依存なしに交換される。
【0081】
一実施形態において、第1及び第2コンピューティングエンティティはトランザクションに合意し、スマートコントラクトを正しく実行する第3コンピューティングエンティティ(例えば作業者)によってアンロックできる、スマートコントラクトのそれぞれのトランザクション入力に対する寄与を各々作成する510。一実施形態において、コンピューティングエンティティのいずれかが、比例作業者フリー(proportionate worker fee)を提供する。P2SHタイプの合意が存在することも、存在しないこともあるが、この合意では、その双方が、同じアドレス(例えば作業者用のアドレス)に寄与する。一実施形態において、P2SHスクリプトは、検証鍵の要素又は検証鍵のハッシュ値を含む。例えば英国特許出願第1719998.5及び/又は英国特許出願第1720768.9に関連して説明される技術を使用することにより、作業者(例えば第3コンピューティングエンティティ)は、該作業者が正しい検証(correct verification)を有しており、かつ正当性の有効なプルーフを提供することの計算的に検証可能な証明書を提供することによって、寄与をアンロック(例えばアンロック)してよい。
【0082】
図6は、少なくとも一実施形態に従って、n当事者(例えばn>2)の間で共有秘密のべき乗を共有するためのプロセス600の説明的例を示している。プロセス600の一部又はすべて(あるいは本明細書で説明される任意の他のプロセス又はその変形及び/又は組合せ)が、コンピュータ実行可能命令を用いて構成される1つ以上のコンピュータシステムの制御下で実行されてよく、ハードウェア、ソフトウェア又はその組合せによって1つ以上のプロセッサ上で一緒に動作するコード(例えばコンピュータ実行可能命令、1つ以上のコンピュータプログラム又は1つ以上のアプリケーション)として実装されてよい。コードは、例えば1つ以上のプロセッサによって実行可能な複数のコンピュータ読取可能命令を含むコンピュータプログラムの形式で、コンピュータ読取可能記憶媒体上に格納されてよい。コンピュータ読取可能記憶媒体は、非一時的コンピュータ読取可能媒体であってよい。いくつかの実施形態において、プロセス600を実行するために使用可能なコンピュータ読取可能命令の少なくとも一部は、単に一時的信号(例えば伝搬する一時的電気又は電磁気伝送)を使用して格納されない。非一時的コンピュータ読取可能媒体は、一時的信号のトランシーバ内部に非一時的データ記憶回路(例えばバッファ、キャッシュ及びキュー)を含んでよい。一実施形態では、閾値に相当するもの(equivalent)が事前に与えられ、必要な数の参加者が最初に合意すると想定される。これは、シャミアの秘密分散法(4S)で説明されるような様々な既存の技術とは異なり、秘密の共有は、所与の閾値に到達する制限下でのみ機能する。
【0083】
秘密の共有は、様々な実施形態によると、任意の数の当事者に対して有効である。一実施形態において、本開示で説明される形式主義(formalism)の大部分を、複数当事者(n>2)シナリオに適用することができる。いくつかの実施形態において、複数当事者システム(n>2)は、特定の他のパラメータ(例えば以下の非楕円曲線(例えばスカラー)パラメータ:r、r、α、α、α、β、γの一部又はすべて)を隠す必要がない。しかしながら、これらのパラメータが、プロトコルに従ってプライベートのままである場合、例えば図3に関連して説明されるもののような異なるアプローチを利用して、r、rのようなパラメータを隠してもよい。
【0084】
一実施形態において、すべての参加者は、有限フィールド要素を他の有限フィールド要素にマップする関数
【数63】
に合意602し、かつ/又はこれに対するアクセスを有する。関数は、一実施形態では、グループのジェネレータの係数/指数として機能する。例示の目的のために、我々が関心のある関数を、テイラー級数の一般化によって多項式で表すことができるので、以下で説明される実施形態は多項式に焦点を当てる。特に、様々な実施形態において、関与する当事者は、それらの周囲の間で値を渡すことなく、同じ値で関数を評価する。例えば次数1の多項式の場合、これは、シャミアの秘密分散法を使用することになる。より高い次数(n>1)では、当事者は、
f(s)=a+as+a+・・・+a
の形式の表現を取り扱っている。
【0085】
したがって、本明細書で説明される技術を利用して、すべての参加者が同じ〈f(s)〉を有することを保証することができる。例えば少なくとも一実施形態に従って説明されるプロトコルでは、〈f(s)〉=〈a+〈as〉+〈a+・・・,なので、任意の整数べき乗rについて、〈sの形式で点を公的に分配することによって、同じEQ_FSGを、2人以上の参加者(すなわち、n>1)の間で共有することができ、ここで、Gは、議論されているグループの(例えば楕円曲線点の)ジェネレータである。
【0086】
一実施形態において、各参加者は、x≠0∀iの点のセット(x,x,...)で評価される多項式を生成することができ604、点はすべての当事者に知られ得る。一実施形態において、各参加者の多項式の和は、(マスター)多項式を構成し、そのy軸との交差は秘密であり、すなわち、
【数64】
ただし、P(0)=sであり、ここで、mは参加者の数である。上述のy軸との交差は、交点と呼ばれてよい。
【0087】
sを確立するために、各参加者は、異なる点(x,x,...)で評価された、対応する多項式を共有する606。より具体的には、参加者iは、i,j∈{1,...,m}についてp(x)を作成/計算し、〈p(x)〉をjに送り出す。これらの数量が共有されると、各参加者は、共有秘密の累乗sを計算するか、他の方法で決定することができる608。
【0088】
を検討するとき、これは、
【数65】
の表現を共有することになるので、もう少し精査する必要がある。
【0089】
〈p(x)〉のべき乗を計算することができない可能性がある。なぜなら、ジェネレータのべき乗は一般的に定義されていないからである。しかしながら、すべての参加者は、交換された〈p(x)〉によって〈s〉を推論することができるので、(マスター多項式は、一般に、ラグランジュ補間(ラグランジュ多項式、n.d.)によって構築できるので)ラグランジュ補間多項式L(x)のべき乗を検査することによって開始することが可能である。ラグランジュ補間を
【数66】
と書くことができ、ここで、
【数67】
であり、したがって、
【数68】
であり、ここで、
【数69】
は、多項係数(多項定理、n.d.)である。したがって、l(x)多項式を、各参加者によって独立に計算することができる。次に、各参加者は、
【数70】
を計算することができるので、
【数71】
となり、これは、(多項拡張を使用して)
【数72】
と書き直すことができる。
【0090】
これは、(多項式piの所有者/作成者である)参加者iが、参加者jに〈p(x)〉のべき乗、すなわち、セット:
【数73】
を提供することができることを意味する。
【0091】
これは、参加者jが、
【数74】
(及び同様に、
【数75】
)等を計算することを可能にする。一実施形態において、参加者は、
【数76】
の形式における表現を計算する。
【0092】
少なくとも一実施形態による、参加者が楕円曲線を使用し、Gが、対応する掛け算表現におけるジェネレータである例を考える。2参加者A及びBの場合、Aは〈p(x)〉をBに送信し、代わりに〈p(x)〉を受け取る。したがって、参加者Aは、
〈p(x)〉=〈p(x)+p(x)〉
を計算することができ、同様に、参加者Bは、
〈p(x)〉=〈p(x)+p(x)〉
を計算することができる。
【0093】
ラグランジュ補間を使用して、p(x)及びp(x)に関してpを表現することができる:
【数77】
【0094】
各参加者は、交換された点〈p(x)〉によって、〈p(x)〉(特に〈p(0)〉)を再構築することができる。〈p(x)〉のより高いべき乗について、以前のセクションからの多項方程式が利用されてよい:
【数78】
【0095】
m=2について、これは次のようになる:
【数79】
【0096】
この交換の後(特定の予め予定された変換に続いて)、両当事者は〈p(x)〉、特に〈p(0)〉=〈sを計算することができる。
【0097】
プロセス600によるプロトコルが、以下で説明される。各参加者は、
【数80】
の形式の式を取得できる必要があるので、点を交換するときに、順序付け(ordering)が必要となることがある。ここで、我々はそのようなソリューションを説明する。
【0098】
一般性を失うことなく、少なくとも一実施形態によると、参加者1は、第1楕円曲線点を提示するものである。プロトコルは、一実施形態では、以下のステップに従う:
1.参加者1は、
【数81】
をi≠1のすべての参加者に分配し、ここで、k=1,...,n及びj=1,...,mであり、mは、ここでは参加者の数である。
2.参加者2は、k=0,...,n-1、k=1,...,n及びj=1,...,mについて、
【数82】
をi≠2のすべての参加者に分配する。
3.参加者3は、k=0,...,n-1、k=0,...,n-1、k=1,...,n及びj=1,...,mについて、
【数83】
をi≠3のすべての参加者に分配する。
4. ...(各参加者について同様である)。
【0099】
シーケンス内のl番目の参加者は、i∈{1,...,l-1}に対するk=0,...,n-1、k=1,...,n及びj=1,...,mについて、
【数84】
をすべてのi≠lに分配する。最後の参加者mが、彼/彼女の点を分配するとき、すべての参加者は、〈s=〈p(0)〉を計算するために、必要なコンポーネントを有する。
【0100】
一実施形態において、プロセス600は、形式
【数85】
の点のセットを交換する複数のm参加者(例えば2人より多くの参加者)を含み、ここで、点は、各参加者によって〈p(x)〉を計算するために使用される。参加者は、次いで〈p(x)〉をラグランジュ補間とともに使用して、〈p(x)〉及び特に〈s=〈p(0)〉を取得し得る。一実施形態において、点は、楕円曲線点であり、x≠0∀jである。
【0101】
本明細書及び図面は、したがって、限定的な意味ではなく、例示的なもの見なされるべきである。しかしながら、特許請求の範囲に記載される本発明の範囲から逸脱することなく、様々な修正及び変更がそれに行われてもよいことは明らかである。同様に、他の変形も本開示の範囲内である。したがって、開示される技術は、様々な修正及び代替的構造の影響を受けやすいが、その特定の例示的実施形態が図面に示され、上記に詳細に説明されている。しかしながら、開示される1つ又は複数の特定の実施形態に本発明を限定する意図はなく、反対に、添付の特許請求の範囲内で定義される本発明の範囲内にある、すべての修正、代替的構造及び均等物を網羅するよう意図されることを理解されたい。
【0102】
「セット」(例えば「アイテムのセット」)又は「サブセット」という用語の使用は、特段の記載がない限り又は文脈によって矛盾しない限り、1つ以上のメンバを含む、空でない集合として解釈されるべきである。さらに、特段の記載がない限り又は文脈によって矛盾しない限り、対応するセットの「サブセット」という用語は、必ずしも、対応するセットの正確なサブセットを示さないが、サブセット及び対応するサブセットは等しくてもよい。
【0103】
「A、B、及びCのうちの少なくとも1つ」又は「A、B及びCのうちの少なくとも1つ」という形の句のような連結語は、特段の記載がない限り又は文脈によって明らかに矛盾しない限り、アイテム、用語等がA又はB又はCのいずれか、あるいはA及びB及びCのセットのうちの任意の空でないサブセットであり得ることを示すために、一般的に使用されるような文脈で理解される。例えば3つのメンバを有するセットの説明的例では、「A、B、及びCのうちの少なくとも1つ」及び「A、B及びCのうちの少なくとも1つ」という連結句は、以下のセット:すなわち、{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}のいずれかを指す。したがって、そのような連結語は、一般に、特定の実施形態が、Aのうちの少なくとも1つ、Bのうちの少なくとも1つ及びCのうちの少なくとも1つが各々提示されること要することを暗示するように意図されていない。さらに、特段の記載がない限り又は文脈から明らかでない限り、「基づいて」という句は、「のみに基づいて」ではなく、「少なくとも部分的に基づいて」を意味する。
【0104】
説明されるプロセスのオペレーションは、特段の記載がない限り又は文脈によって明らかに矛盾しない限り、任意の適切な順序で実行され得る。説明されるプロセス(又はその変形及び/又は組合せ)を、実行可能命令とともに構成される1つ以上のコンピュータシステムの制御下で実行することができ、ハードウェア又はその組合せによって1つ以上のプロセッサ上で集合的に動作するコード(例えば実行可能命令、1つ以上のコンピュータプログラム又は1つ以上のアプリケーション)として実装することができる。いくつかの実施形態において、コードを、例えば1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形で、コンピュータ読取可能記憶媒体上に格納することができる。いくつかの実施形態において、コンピュータ読取可能記憶媒体は非一時的である。
【0105】
提供される任意の及びすべての例又は例示的言語(例えば「のような」)の使用は単に、本発明の実施形態をよりよく説明するように意図されるものにすぎず、別段の請求がない限り、本発明の範囲に対する限定を課するものではない。本明細書におけるいかなる言語も、いずれかの特許請求されていない要素を、本発明の実施に必須であるものとして示すように解釈されるべきではない。
【0106】
本発明を実行するために本発明者らに知られているベストモードを含め、本開示の実施形態が説明されている。これらの実施形態の変形は、前述の説明を読むと、当業者に明らかになるであろう。本発明者らは、当業者がそのような変形を適切に使用することを期待し、本発明者らは、本発明の実施形態が、具体的に説明されるもの以外の他の方法で実施されることを意図している。したがって、本開示の範囲は、適用可能な法律で許容されるように、添付の特許請求の範囲に記載される主題のすべての修正及び均等物を含む。さらに、そのすべての可能な変形における上述の要素の任意の組合せは、特段の記載がない限り又は文脈によって明らかに矛盾しない限り、本開示の範囲によって包含される。
【0107】
引用された刊行物、特許出願及び特許を含むすべての参照文献は、各参照文献が、参照によって個々に具体的に組み込まれることが示され、その全体が説明されている場合と同程度に、参照によって組み込まれる。
【0108】
上述の実施形態は、本発明を限定するものではなく例示するものであり、当業者は、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、多くの代替的な実施形態を設計することができることに留意されたい。特定の手段が相互に異なる従属請求項に記載されているという単なる事実は、それらの手段の組合せを有利に使用することができないことを示すものではない。
図1
図2
図3
図4
図5
図6
図7
【外国語明細書】