(57)【要約】  入力ノードのグループ及び出力ノードのグループを有するブロックチェーンを使用してデータレコード配信プロセスのセキュリティを高めるためのコンピュータで実施される方法であって、各グループは秘密／公開キーのペアを有しているが、ノードはそれぞれの秘密キーのキーシェアのみを有しており、ノードは完全な秘密キーを有していない。しきい値署名方式、シークレット・シェア参加、及びステルスアドレスを使用して、入力ノードからのデータレコードが、それら公開キー、シェア・シークレット、及びステルスアドレスの協調的な決定が必要である入力ノードの協調動作によって決定されるステルスアドレスにプールされる。公開キーはトランザクションにコピーされる。出力ノードは、トランザクションを見つけて公開キーを抽出し、その真正性を共同して検証し、シェア・シークレットを協力して決定する。そうすると、出力ノードは、集合的に、データレコードをステルスアドレスから出力アドレスに配信するための第２のトランザクションに署名できる。本発明は、例えば、ビットコイン・ブロックチェーン、又は別のブロックチェーン実施態様と組み合わせて使用することができる。
2020516164.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンを使用したデータレコード配信プロセスに参加するためのコンピュータで実施される方法であって、前記データレコード配信プロセスには、複数の入力アドレスと複数の出力アドレスとが含まれ、各アドレスはそれぞれの入力ノード又は出力ノードによって制御され、前記入力ノードのうちの１つで実施される当該方法は、
前記出力ノードに関連付けられた第１の公開キーを取得するステップと、
前記入力ノードに関連付けられた第２の秘密キーのキーシェアを取得するステップであって、前記第２の秘密キーはどの前記入力ノードにも知られていない、取得するステップと、
シークレット・シェア参加を使用して、前記第２の秘密キーに対応する第２の公開キーを導出する際に協力するステップと、
前記第１の公開キー、前記キーシェア、及びシークレット・シェア参加を使用して、シェア・シークレットを導出する際に協力するステップと、
前記複数の入力アドレスからデータレコードを受け取り、且つ出力アドレスとしてステルスアドレスを有する第１のブロックチェーン・トランザクションを生成するステップであって、前記ステルスアドレスは、前記第１の公開キー及び前記シェア・シークレットに基づく、生成するステップと、を含む、
方法。
【請求項２】
前記第１のブロックチェーン・トランザクションには、非トランザクション・コード及び前記第２の公開キーのコピーが含まれる、請求項１に記載の方法。
【請求項３】
前記非トランザクション・コードは、ＯＰ＿ＲＥＴＵＲＮ又は機能的に同等のコードであり、前記第２の公開キーの前記コピーは、前記第１のブロックチェーン・トランザクションにおいて前記ＯＰ＿ＲＥＴＵＲＮの後に続く、請求項２に記載の方法。
【請求項４】
前記第２の公開キーを導出する際に協力するステップは、前記キーシェアを含む、第１のラグランジュ多項式補間の項を計算するステップと、該項を、他の入力ノードによって提供される前記第１のラグランジュ多項式の項と合計するステップとを含む、請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
前記シェア・シークレットを導出する際に協力するステップは、前記キーシェア及び前記第１の公開キーを含む、第２のラグランジュ多項式補間の項を計算するステップと、該項を、他の入力ノードからの前記第２のラグランジュ多項式の項と合計するステップとを含む、請求項１乃至３のいずれか一項に記載の方法。
【請求項６】
前記第１のブロックチェーン・トランザクションを生成するステップは、前記ステルスアドレスを、前記第１の公開キーと、対応する秘密キーとして前記シェア・シークレットを有するシークレット公開キーとの合計として決定するステップを含む、請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
ブロックチェーンを使用したデータレコード配信プロセスに参加するためのコンピュータで実施される方法であって、前記データレコード配信プロセスには、複数の入力アドレスと複数の出力アドレスとが含まれ、各アドレスはそれぞれの入力ノード又は出力ノードによって制御され、前記出力ノードのうちの１つで実施される当該方法は、
前記出力ノードに関連付けられた第１の秘密キーのキーシェアを取得するステップであって、前記第１の秘密キーはどの前記出力ノードにも知られておらず、前記第１の秘密キーは第１の公開キーに関連付けられる、取得するステップと、
前記入力ノードに関連付けられた第２の公開キーを含む第１のブロックチェーン・トランザクションに関するブロックチェーンを検索するステップであって、前記第１のブロックチェーン・トランザクションは、前記複数の入力アドレスを特定し、且つ出力アドレスとしてステルスアドレスを有する、検索するステップと、
第１のブロックチェーン・トランザクションから抽出された前記第２の公開キー、前記キーシェア、及びシークレット・シェア参加を使用して、シェア・シークレットを導出する際に協力するステップと、
前記第１の公開キー及び前記シェア・シークレットを使用して前記ステルスアドレスを決定し、該決定したステルスアドレスを前記第１のブロックチェーン・トランザクションの前記出力アドレスと比較して、それらアドレスが一致することを確認するステップと、
前記ステルスアドレスに関連してプールされたデータレコードを前記複数の出力アドレスに配信するために、第２のブロックチェーン・トランザクションに署名する際に協力するステップであって、前記署名には、前記シェア・シークレット及び前記キーシェアを使用する楕円曲線デジタル署名アルゴリズムの使用が含まれる、協力するステップと、を含む、
方法。
【請求項８】
前記ブロックチェーンを検索するステップは、非トランザクション・コードを含むトランザクションを特定するステップを含む、請求項７に記載の方法。
【請求項９】
前記非トランザクション・コードは、ＯＰ＿ＲＥＴＵＲＮを含み、前記第２の公開キーは、前記第１のブロックチェーン・トランザクションにおいて前記ＯＰ＿ＲＥＴＵＲＮの後に続く、請求項８に記載の方法。
【請求項１０】
シークレット・シェア参加を使用して、前記第１の秘密キーに対応する前記第１の公開キーを導出する際に協力するステップをさらに含む、請求項７乃至９のいずれか一項に記載の方法。
【請求項１１】
前記第１の公開キーを導出する際に協力するステップは、前記キーシェアを含む、第１のラグランジュ多項式補間の項を計算するステップと、該項を、他の出力ノードによって提供される前記第１のラグランジュ多項式の項と合計するステップと、を含む、請求項１０に記載の方法。
【請求項１２】
前記シェア・シークレットを導出する際に協力するステップは、前記キーシェア及び前記第２の公開キーを含む、第２のラグランジュ多項式補間の項を計算するステップと、該項を、他の出力ノードからの前記第２のラグランジュ多項式の項と合計するステップと、を含む、請求項７乃至９のいずれか一項に記載の方法。
【請求項１３】
前記ステルスアドレスを決定するステップは、該ステルスアドレスを、前記第１の公開キーと、対応する秘密キーとして前記シェア・シークレットを有するシークレット公開キーとの合計として決定するステップを含む、請求項７乃至１２のいずれか一項に記載の方法。
【請求項１４】
楕円曲線デジタル署名アルゴリズムを使用することは、しきい値署名方式で安全な逆数及び安全な乗算を使用することを含み、前記ステルスアドレスに対応する秘密キーが、前記第１の秘密キーを前記シェア・シークレットに加えたキーとして共同して決定される、請求項７乃至１３のいずれか一項に記載の方法。
【請求項１５】
複数の参加ノードの間でブロックチェーンを使用してデータレコード配信プロセスに参加するためのコンピュータ装置であって、当該コンピュータ装置は参加ノードのうちの１つであり、当該コンピュータ装置は、
プロセッサと、
メモリと、
ネットワーク接続を提供するネットワークインターフェイスと、
前記プロセッサによって実行されると、該プロセッサに請求項１乃至１４のいずれか一項に記載の方法を実行させるコンピュータ実行可能命令を含むブロックチェーン・アプリケーションと、を含む、
コンピュータ装置。
【請求項１６】
複数の参加ノードの間でブロックチェーンを使用してデータレコード配信プロセスに参加するためのプロセッサ実行可能命令を格納する非一時的なプロセッサ可読媒体であって、前記プロセッサ実行可能命令は、前記参加ノードのうちの１つのノードのプロセッサによって実行されると、該プロセッサに請求項１乃至１４のいずれか一項に記載の方法を実行させる、非一時的なプロセッサ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、ブロックチェーン・トランザクションに関し、より具体的には、入力を出力から切り離してセキュリティを高めるデータレコード配信（distribution）プロセスを生成及び実行するための方法及び装置に関する。
【背景技術】
【０００２】
この文書では、あらゆる形態の電子的なコンピュータベースの分散型台帳を含めるために「ブロックチェーン」という用語を使用している。これらの形態には、ブロックチェーン及びトランザクションチェーン技術、アクセス許可された台帳とアクセス許可されていない台帳、共有台帳、及びそれらのバリエーションが含まれるが、これらに限定されるものではない。ブロックチェーン技術の最も広く知られている用途はビットコイン台帳であるが、他のブロックチェーン実施態様が提案され開発されている。本明細書では、便宜上及び例示の目的でビットコインについて参照しているが、本発明はビットコイン・ブロックチェーンでの使用に限定されるものではなく、代替のブロックチェーン実施態様及びプロトコルが本発明の範囲内にあることに留意されたい。
【０００３】
ブロックチェーンはコンセンサスベースの電子台帳であり、この台帳はブロックで構成されるコンピュータベースの非中央型の分散システムとして実施され、ブロックはトランザクションで構成される。各トランザクションは、ブロックチェーンシステムの参加者同士の間でのデジタル資産の制御の移転をエンコードするデータ構造であり、少なくとも１つの入力と少なくとも１つの出力とを含む。各ブロックには以前のブロックのハッシュが含まれているため、これらブロックは、一緒にチェーンで繋がれており、その開始からブロックチェーンに書き込まれた全てのトランザクションの永続的な変更不可能なレコードを作成する。トランザクションには、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さなプログラムが含まれており、スクリプトは、トランザクションの出力に誰がどの様にアクセスできるかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して記述される。
【０００４】
トランザクションをブロックチェーンに書き込むためには、「検証」する必要がある。ネットワークノード（マイナー（採掘者）：miners）は、各トランザクションが有効であることを確認する作業を行い、無効なトランザクションはネットワークから拒否される。ノードにインストールされたソフトウェアクライアントは、そのロック及びロック解除スクリプトを実行することにより、未使用（unspent）トランザクション（ＵＴＸＯ）でこの検証作業を行う。ロック及びロック解除スクリプトの実行がＴＲＵＥと評価された場合に、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。こうして、トランザクションをブロックチェーンに書き込むためには、そのトランザクションは、ｉ）トランザクションを受信する第１のノードで検証する（トランザクションが検証されると、ノードはその検証したトランザクションをネットワーク内の他のノードに中継する）；ｉｉ）マイナーによって構築された新しいブロックに追加する；ｉｉｉ）採掘する、すなわち過去のトランザクションの公的な台帳に追加する必要がある。
【０００５】
ブロックチェーン技術は暗号通貨の実施態様の使用で最も広く知られているが、デジタル起業家は、ビットコインがベースとする暗号セキュリティシステムと、ブロックチェーンに保存して新しいシステムを実施できるデータとの両方の使用を模索し始めている。暗号通貨の領域に限定されない自動化されたタスク及びプロセスにブロックチェーンを使用できれば、非常に有利であろう。このようなソリューションは、ブロックチェーンの利点（例えば、イベントの永続的な改ざん防止記録、分散処理等）を活用しながら、アプリケーションの用途を広げることができる。従って、本願は、ブロックチェーンに関して記録される「データレコード」を参照し得る。データレコードには、例えば、文書、処理能力又は時間の測定値、暗号通貨の量、資産の所有権を示すセキュリティ又は他のトークン、又は暗号資料を所有しているエンティティによって制御され得る（そのエンティティがそのデータレコードを使用又は移動できるようにする）他のそのようなものが含まれ得る。
【０００６】
ビットコイン等のブロックチェーン技術で認められている利点の１つは、その匿名性とセキュリティである。つまり、ビットコイン台帳には、トランザクションに参加している人に関する個人情報は含まれていない。その台帳には、パブリックアドレス情報のみが含まれる。ただし、外部データ及び解析を使用すると、特定のトランザクション及びアドレスを個人に首尾よく関連付けることができる。
【０００７】
ビットコインのような暗号通貨の匿名性及び追跡不可能性（fungibility）を改善するために、コインミキシング・トランザクションが使用される場合がある。CoinJoin等のコインミキシング・トランザクションは、入力のセットをプールし、値を出力のセットに移す。ただし、CoinJoinには、依然として別の参加者の入力／出力関係を知っている参加者が少なくとも１人含まれているので、単に部分的に匿名になるため、トランザクションの安全性が低下し、暗号化ソリューションが不十分になる。
【０００８】
ブロックチェーン内のレコードの潜在的なトレーサビリティは、特定のアプリケーションを損なう可能性のある実施態様の欠陥を明らかにしている。アプリケーションの例には、採点のための試験や書類の提出、匿名の犯罪報告書の提出、匿名の調査又は統計調査の報告書の提出、又は提出後にデータの変更ができない状況下で、参加者ノードのグループがデータレコードを１つ又は複数の他のノードに安全且つ機密に転送する必要があるそのような他のアプリケーションが含まれる。
【０００９】
こうして、効率的でコンパクトなデータレコード配信プロセスを生じさせながら、入力から出力への追跡不可能性及びリンク不能性を向上させるにより、高められたセキュリティ及びより堅牢な暗号化を提供する改善された方法及び装置を提供することが望ましい。
【発明の概要】
【００１０】
このような改善されたソリューションがここで考案されている。
【００１１】
こうして、本発明によれば、添付の特許請求の範囲に規定されるような方法及び装置が提供される。
【００１２】
本発明は、コンピュータで実施される方法及び対応するシステムを提供し得る。この方法／システムは、ブロックチェーンで実施される方法／システムとして説明され得る。本発明は、セキュリティ方法又は暗号化方法／システムとして説明され得る。本発明は、暗号通貨の一部又は量等の、デジタル資産又はデータレコードの安全な移転を提供することができる。追加的又は代替的に、本発明は、暗号通貨の一部又は量等のデジタル資産の移転を制御するための制御メカニズムを提供することができる。
【００１３】
データレコードがプールされる、共同して決定されたステルスアドレスの使用、及びデータレコードをプールされたステルスアドレスから指定された出力アドレスに配信する際に共同的且つ協調的な出力ノードの参加の要件により、データ配信プロセスはより安全で堅牢になり得る。
【００１４】
追加的又は代替的に、本願は、ブロックチェーンを使用してデータレコード配信プロセスに参加するためのコンピュータで実施される方法を説明することができ、データレコード配信には複数の入力アドレスと複数の出力アドレスとが含まれ、各アドレスはそれぞれの入力ノード又は出力ノードによって制御（又は、所有）される。入力ノードのうちの１つで実施されるこの方法は、
出力ノードに関連付けられた第１の公開キーを取得するステップと；
入力ノードに関連付けられた第２の秘密キーのキーシェアを取得するステップであって、第２の秘密キーはどの入力ノードにも知られていない、取得するステップと；
シークレット・シェア参加を使用して、第２の秘密キーに対応する第２の公開キーを導出する際に協力するステップと；
第１の公開キー、キーシェア、及びシークレット・シェア参加を使用してシェア・シークレットを導出する際に協力するステップと；
複数の入力アドレスからデータレコードを受け取り、且つ出力アドレスとしてステルスアドレスを有する第１のブロックチェーン・トランザクションを生成するステップであって、ステルスアドレスは、第１の公開キー及びシェア・シークレットに基づく、生成するステップと；を含む。
【００１５】
いくつかの実施態様では、第１のブロックチェーン・トランザクションには、非トランザクション・コード及び第２の公開キーのコピーが含まれる。場合によっては、非トランザクション・コードは、ＯＰ＿ＲＥＴＵＲＮ又は機能的に同等なコードであり、第２の公開キーのコピーは、第１のブロックチェーン・トランザクションにおいてＯＰ＿ＲＥＴＵＲＮの後に続く。
【００１６】
いくつかの実施態様では、第２の公開キーを導出する際に協力するステップは、キーシェアを含む、第１のラグランジュ多項式補間の項を計算するステップと、この項を、他の入力ノードによって提供される第１のラグランジュ多項式の項と合計するステップとを含む。
【００１７】
いくつかの実施態様では、第１のブロックチェーン・トランザクションを生成するステップは、ステルスアドレスを、第１の公開キーと、対応する秘密キーとしてシェア・シークレットを有するシークレット公開キーとの合計として決定するステップを含む。
【００１８】
本願は、ブロックチェーンを使用したデータレコード配信プロセスに参加するためのコンピュータで実施される方法をさらに説明しており、データレコード配信プロセスには、複数の入力アドレスと複数の出力アドレスとが含まれ、各アドレスはそれぞれの入力ノード又は出力ノードによって制御（又は、所有）される。出力ノードのうちの１つで実施される方法は、
出力ノードに関連付けられた第１の秘密キーのキーシェアを取得するステップであって、第１の秘密キーはどの出力ノードにも知られておらず、第１の秘密キーは第１の公開キーに関連付けられる、取得するステップと；
入力ノードに関連付けられた第２の公開キーを含む第１のブロックチェーン・トランザクションに関するブロックチェーンを検索するステップであって、第１のブロックチェーン・トランザクションは、複数の入力アドレスを特定し、出力アドレスとしてステルスアドレスを有する、検索するステップと；
第１のブロックチェーン・トランザクションから抽出された第２の公開キー、キーシェア、及びシークレット・シェア参加を使用して、シェア・シークレットを導出する際に協力するステップと；
第１の公開キー及びシェア・シークレットを使用してステルスアドレスを決定し、決定したステルスアドレスを第１のブロックチェーン・トランザクションの出力アドレスと比較して、それらアドレスが一致することを確認するステップと；
ステルスアドレスに関連してプールされたデータレコードを複数の出力アドレスに配信するために、第２のブロックチェーン・トランザクションに署名する際に協力するステップであって、署名には、シェア・シークレット及びキーシェアを使用する楕円曲線デジタル署名アルゴリズムの使用が含まれる、協力するステップと；を含む。
【００１９】
いくつかの実施態様では、ブロックチェーンを検索するステップは、非トランザクション・コードを含むトランザクションを特定するステップを含む。場合によっては、非トランザクション・コードは、ブロックチェーン・トランザクションを無効としてマークするために使用できるコマンド又は命令である。これは、例えば、ビットコインプロトコルで知られているＯＰ＿ＲＥＴＵＲＮ命令コード、又は異なるブロックチェーン・プロトコルに関連付けられた機能的に同等のコマンドである。第２の公開キーは、第１のブロックチェーン・トランザクションにおいてＯＰ＿ＲＥＴＵＲＮの後に続く（つまり、後に配置される）場合がある。
【００２０】
いくつかの実施態様では、方法は、シークレット・シェア参加を使用して、第１の秘密キーに対応する第１の公開キーを導出する際に協力するステップをさらに含み得る。場合によっては、第１の公開キーを導出する際に協力するステップは、キーシェアを含む、第１のラグランジュ多項式補間の項を計算するステップと、この項を、他の出力ノードによって提供される第１のラグランジュ多項式の項と合計するステップと、を含む。
【００２１】
いくつかの実施態様では、シェア・シークレットを導出する際に協力するステップは、キーシェア及び第２の公開キーを含む、第２のラグランジュ多項式補間の項を計算するステップと、この項を、他の出力ノードからの第２のラグランジュ多項式の項と合計するステップと、を含む。
【００２２】
いくつかの実施態様では、ステルスアドレスを決定するステップは、ステルスアドレスを、第１の公開キーと、対応する秘密キーとしてシェア・シークレットを有するシークレット公開キーとの合計として決定するステップを含み得る。
【００２３】
いくつかの実施態様では、楕円曲線デジタル署名アルゴリズムを使用することは、しきい値署名方式で安全な逆数及び安全な乗算を使用することを含むことができ、ステルスアドレスに対応する秘密キーは、第１の秘密キーをシェア・シークレットに加えたキーとして共同して決定される。
【００２４】
いくつかの実施態様では、データレコード配信（distribution）を値の混合（value  mixing）と呼ぶ場合がある。
【００２５】
本願は、記載した方法を実行するためのコンピュータ装置をさらに説明しており、コンピュータ装置は、少なくとも１つのプロセッサと、メモリと、ネットワークインターフェイスと、実行されるとプロセッサに本明細書に記載の方法の１つ又は複数の動作を実行させるプロセッサ実行可能命令を含むブロックチェーン・アプリケーションとを含む。
【００２６】
本願は、複数の参加ノードの間でブロックチェーンを使用してデータレコード配信プロセスに参加するためのプロセッサ実行可能命令を格納する非一時的なプロセッサ可読媒体をさらに説明しており、プロセッサ実行可能命令は、参加ノードのうちの１つのノードのプロセッサによって実行されると、プロセッサに、本明細書で記載の方法の１つ又は複数の動作を実行させる。
【００２７】
本発明の一態様又は実施形態に関連して説明したあらゆる特徴は、１つ又は複数の他の態様／実施形態に関しても使用され得る。本発明のこれら及び他の態様は、本明細書に記載される実施形態を参照して説明され、この実施形態から明らかになろう。ここで、本発明の実施形態を、単なる一例として、添付の図面を参照して説明する。
【図面の簡単な説明】
【００２８】
【図１】ノードの例示的なブロックチェーン・ネットワークを示す図である。
【図２】データレコード配信プロセスの一実施形態を概略的に示す図である。
【図３】ブロックチェーン・トランザクションでのデータレコード配信の例示的なプロセスをフローチャート形式で示す図である。
【図４】本願の実施形態による、データレコード配信動作に入力ノードとして参加するための例示的なプロセスをフローチャート形式で示す図である。
【図５】本願の実施形態による、データレコード配信動作に入力ノードとして参加するための例示的なプロセスをフローチャート形式で示す図である。
【図６】簡略化された参加ノードのブロック図である。
【発明を実施するための形態】
【００２９】
本願において、「及び／又は」という用語は、必ずしも追加の要素を排除せず、列挙された要素の全ての可能な組合せ及びサブコンビネーション（列挙された要素のいずれか１つのみ、任意のサブコンビネーション、又は全ての要素を含む）を網羅することを意図している。
【００３０】
本願において、「〜の少なくとも１つ」という語句は、必ずしも追加の要素を排除せず、必ずしも全ての要素を必要としない、列挙された要素のいずれか１つ又は複数（列挙された要素のいずれか１つのみ、任意のサブコンビネーション、又は全ての要素を含む）を網羅することを意図している。
【００３１】
最初に図１を参照すると、この図は、ブロックチェーンに関連付けられた例示的なブロックチェーン・ネットワーク１００をブロック図形式で示す。ブロックチェーン・ネットワークは、招待や他のメンバーの同意なしに、誰でも参加できるピアツーピアのオープンメンバーシップネットワークである。ブロックチェーン・ネットワーク１００が動作するブロックチェーン・プロトコルのインスタンスを実行する分散型電子装置は、ブロックチェーン・ネットワーク１００に参加できる。そのような分散型電子装置は、ノード１０２と呼ばれ得る。ブロックチェーン・プロトコルは、例えば、ビットコインプロトコル、又は他の暗号通貨であってもよい。
【００３２】
ブロックチェーン・プロトコルを実行し、且つブロックチェーン・ネットワーク１００のノード１０２を形成する電子装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、スマートフォン等の携帯装置、スマートウォッチ等のウェアラブルコンピュータ、又は他の電子装置等を含む様々なタイプの装置であってもよい。
【００３３】
ブロックチェーン・ネットワーク１００のノード１０２は、有線及び無線通信技術を含み得る適切な通信技術を使用して互いに結合される。多くの場合に、ブロックチェーン・ネットワーク１００は少なくとも部分的にインターネット上で実施され、個々のノード１０２のいくつかは地理的に分散した場所に位置してもよい。
【００３４】
ノード１０２は、ブロックチェーンの全てのトランザクションのグローバル台帳を維持する。グローバル台帳は分散型台帳であり、各ノード１０２は、グローバル台帳の完全なコピー又は部分的なコピーを保存することができる。あるノード１０２によるグローバル台帳に影響を与えるトランザクションは、他のノード１０２によって検証され、それによってグローバル台帳の有効性が維持される。ビットコインプロトコルを使用するようなブロックチェーン・ネットワークの実施態様及び動作の詳細は、当業者には理解されるであろう。
【００３５】
通常、各トランザクションには１つ又は複数の入力と１つ又は複数の出力が含まれる。入力及び出力に埋め込まれたスクリプトは、誰がどの様にトランザクションの出力にアクセスできるかを指定する。トランザクションの出力は、トランザクションの結果として値が転送されるアドレスであり得る。次に、その値は、未使用のトランザクション出力としてその出力アドレスに関連付けられる。その後のトランザクションは、その値を使用又は分散するために、そのアドレスを入力として参照できる。
【００３６】
トランザクションは、ブロックチェーン台帳のトランザクションに個人情報が含まれていないという点で擬似匿名であるが、トランザクションのチェーン内の値の転送を追跡し、場合によっては、外部データを使用して値を個人にリンク付けすることができる。匿名性を高めるために、コインミキシング・トランザクションを使用して、様々なソースからの入力をプールし、次にプールした値を分割して出力に割り当てることができる。全ての入力及び出力が同じサイズである場合に、特定の入力を特定の出力に関連付けることは困難である。ただし、このようなトランザクションでは、少なくとも１つの参加ノードが、別の参加ノードによって指定された入力アドレスと出力アドレスとの間のリンクを認識している。ビットコインプロトコルでのCoinJoin動作等の、このようなコインミキシング・トランザクションでは、複数の入力及び複数の出力を有する単一のトランザクションを使用して値を混合する。
【００３７】
リング署名やステルスアドレス等、様々な有効性を有する入力と出力との間のリンクを明らかにしないようにするために、他のいくつかの匿名化手法が使用される。ステルスアドレスは、特定のユーザーから資金が送信される出力アドレスのリンクを解除しようとする。リング署名は、可能な署名者のグループの誰かが特定のトランザクションに署名／許可された者である可能性を同等にすることにより、ソースを追跡不能にしようとする。残念ながら、リング署名の概念と互換性のある署名の構造がビットコインの署名要件と互換性がないため、リング署名は、ビットコイン等の一部のプロトコルで実施するのに問題があることが判明している。Monero等の他のいくつかの暗号通貨は、リング署名を有効にするように特別に設計されている。
【００３８】
上記のように、多くのアプリケーションでは（暗号通貨値の混合に加えて）、入力ノードを特定の出力ノードにおける特定の文書にリンク付けするのを防ぐ方法で入力ノードが文書を出力ノードに供給する、安全で不変の文書又はデータレコード配信システムを提供することが有利となろう。このようなアプリケーションには、とりわけ、試験や書類の提出、犯罪報告書の提出、又は調査や統計調査の回答の提出等が含まれる。
【００３９】
本願によれば、特定の署名者からの入力を効果的にリンク付け解除し、特定の受信者からの出力を効果的にリンク付解除し、それにより追跡不可能性及びリンク不能性を提供する方法でデータレコード配信を容易にする方法及び装置が説明される。ブロックチェーン・プロトコルの構造内でこれを行うと、そのセキュリティを提供し、部分的な障害や部分的な配信を伴わない効率的且つ効果的な配信の完了を確保する上で、技術的な実装上の大きな課題が生じる。以下の説明は、これらの技術的実装上の課題に対する解決策の少なくとも１つの例示的な実施形態を提供する。
【００４０】
本明細書の説明では、「入力ノード」、「出力ノード」、「参加ノード」、「入力アドレス」、及び「出力アドレス」という用語を使用することがある。ノードの「アドレス」への参照は、物理ノードのネットワークアドレスへの参照を意味するものではない。代わりに、「アドレス」は、物理ノードが、トランザクション上の署名に対応するキーを所有又は制御することにより、所有権を主張できる未使用の値を有する、ブロックチェーン上のトランザクションで指定されるアドレスである。この意味で、「出力アドレス」は、参加ノードのアドレスではなく、参加している出力ノードによって所有される又はその出力ノードに関連付けられたブロックチェーン・トランザクションの出力アドレスである。同様に、「入力アドレス」は、参加している入力ノードによって所有される又はその入力ノードに関連付けられた未使用トランザクション出力（ＵＸＴＯ）のアドレスである。
【００４１】
楕円曲線デジタル署名
ビットコインのようないくつかのブロックチェーン技術は、デジタル署名のための数学的スキームとして楕円曲線デジタル署名アルゴリズム（ＥＣＤＳＡ）を使用する。ＥＣＤＳＡは、ＵＸＴＯに関連付けられた値を正当な所有者のみが使うことができるように保証するために使用される暗号化デジタル署名である。ＥＣＤＳＡ署名に必要なパラメーターには、
Ｅ−楕円曲線関数
Ｇ−位数ｎ（ｎ×Ｇ＝０）を含む楕円曲線上のベースポイント
ｎ−大きな素数
ｑ−サブグループの位数が含まれる。
【００４２】
キーペアは、乱数ｘ（ここで、０＜ｘ＜ｎ）から生成される。乱数ｘは秘密キー（private  key）として機能し、公開キー（public  key）ＰはＰ＝ｘ×Ｇとして生成される。
【００４３】
メッセージｍ、乱数ｋ、及び秘密キーｘが与えられると、ペア（ｒ，ｓ）の署名が生成される。乱数ｋは、０＜ｋ＜ｑとなるように選択される。次に、ｒ＝ｋ×Ｇが計算され、ｓ＝ｋ−１（ｍ＋ｘｒ）  ｍｏｄ  ｎが計算され、ここで、ｋ−１は、ｋ  ｍｏｄ  ｎの逆数（multiplicative  inverse）（ｋ−１ｋ≡１  ｍｏｄ  ｎ）である。これにより、署名（ｒ，ｓ）が得られる。
【００４４】
署名（ｒ，ｓ）、メッセージｍ、及び公開キーＰが与えられると、署名を検証することができる。署名を検証するために、ｖ＝ｓ−１ｍ×Ｇ＋ｓ−１ｒ×ｙが計算される。この式では、ｓ−１は、ｓ−１ｓ≡１  ｍｏｄ  ｎになるようなｓ  ｍｏｄ  ｑの逆数である。ｖ＝ｒの場合に、署名は有効である。Ｇは位数ｎを有しているため、ＥＣポイントにＧを乗算すると、ｓ−１のｍｏｄ  ｎ部分はなくなることを思い出されたい。
【００４５】
しきい値署名方式
「しきい値署名分散（threshold  signature  sharing）」と呼ばれる手法が開発され、シークレットキー（secret  key）をシェア（shares）に分割し、それらのシェアを参加者のセットに配信できるようになった。この手法では、参加者のセットの任意のサブセットは、このサブセットの基数が指定された値ｔ以上である限り、シークレットを再構築できる。サブセットの基数がt未満の場合に、シークレットに関する情報は明らかにされない。これは、シェア・シークレット（shared  secret）を使用して署名するために、少なくともt人の参加者が協力する必要があることを意味する。参加者の間でのキーシェアの配信は、キーシェアを割り当てる中央ディーラーを使用して、又はディーラーなしの配信システムによって行われ得る。各ソリューションには長所と短所があり、配信方法を選択する際に実装するシステムの要件を慎重に検討する必要がある。
【００４６】
少なくとも１つの実施形態では、技術は、シークレットを次数ｔの多項式に埋め込むことができる。ｎ人の参加者にはそれぞれ、未知の多項式上の点が割り当てられ、その結果、ｔ＋１人の参加者がラグランジュ多項式補間を使用して多項式を正確に再構築できる。
【００４７】
しきい値署名方式と呼ばれるバリエーションが開発され、これにより、個々のキーシェアを所有するｎ人の参加者のうちｍ人が、シークレットキーを再構築せずに／個々の参加者のいずれにも公開せずに、２ｔ＋１人の参加者が関与して暗号ベースの計算を実行するように協力して、署名を生成することができる。
【００４８】
しきい値署名方式は、ラグランジュ多項式補間に大きく依存している。ラグランジュ多項式補間は、次数tの関数ｆ（ｘ）がｔ＋１点Ｐ＝｛（ｘ１，ｆ（ｘ１）），（ｘ２、ｆ（ｘ２）），・・・，（ｘｔ＋１，ｆ（ｘｔ＋１））}で再構築できることを示している。
【数１】
2020516164.tif 000003
ここで、ラングラージ（langrage）係数
【数２】
2020516164.tif 000004
であり、
ｂｉ，ｐ（ｘｉ）＝１、及びｂｉ，ｐ（ｘｊ）＝０に留意されたい。
【００４９】
しきい値署名計算の１つの要素は、ｘがシークレットキーでＧが楕円曲線上の点であるｘ×Ｇの決定である。キーシェアがｎ人の参加者の間で「分割」されるシークレットキーｘが与えられた場合に、
任意のシークレットｘは、多項式ｆ（ｘ）上の点ｆ（０）であり、
（キーｘの）シェアｘ１,ｘ２，・・・，ｘｎは、ｆ（ｘ１），ｆ（ｘ２），・・・，ｆ（ｘｎ）に対応し、
ｆ（ｘ）がｔ次多項式の場合に、シークレットｘは、
【数３】
2020516164.tif 000005
によって補間でき、ここで、πはシェアｘａ，ｘｂ，・・・，ｘｔ，ｘｔ＋１のｔ＋１サブセットサイズであり、ｂは、ラグランジュ多項式補間に関連して上述したように、ラングラージ（langrage）係数である。
πは、個々のｘｉシェアを明らかにせずに、ｘ×Ｇを計算するために協力するｔ＋１人の参加者のグループであり、ｘは、ｔ次多項式のｘ＝０点である。
・各参加者ｉは、部分ｂｉ，πｘｉ×Ｇを計算する。
・πの全ての参加者は、それぞれの部分を一緒に追加し（ラグランジュ補間を介してシークレットｘを再構築し）、
ｂａ，πｘａ×Ｇ＋ｂｂ，πｘｂ×Ｇ＋・・・＋ｂｔ＋１，πｘｔ＋１×Ｇ＝ｘ×Ｇを与える。
【００５０】
このプロセスは、「シークレット・シェア参加（Secret  Share  Joining）」と呼ばれる場合がある。
【００５１】
しきい値署名を生成する別の態様は、ｘｙ  ｍｏｄ  ｎを生成する２つのシークレットキーを乗算する機能である。２つのｔ次多項式が乗算される場合に、結果は２ｔ次多項式になる。結果として、２ｔ＋１人の参加者が、それらのシェアを明らかにせずに積を出力するために協力する必要がある。従って、この例では、πは２ｔ＋１人の参加者のグループである。
【００５２】
各参加者は既にシェアｘｉ及びシェアｙｉを有している。ｘ及びｙはｔ次多項式のｘ＝０点であるため、ｘｙは、補間するために２ｔ＋１点を必要がある２ｔ次多項式上のｘ＝０点であることに留意されたい。ｘｙを決定するための補間では、シェアｘｉがｘｉｙｉに置き換えられ、ラングラージ（langrage）係数ｂｉ，ｐ（ｘ）について、セットｐには２ｔ＋１人のメンバーが含まれることに留意されたい。
・各参加者ｉは、部分ｂｉ，πｘｉｙｉ  ｍｏｄ  ｎを計算する。
・πの全ての参加者は、それぞれの部分を一緒に追加し、
（（ｂａ，πｘａｙａ  ｍｏｄ  ｎ）＋（ｂｂ，πｘｂｙｂ  ｍｏｄ  ｎ）＋・・・＋（ｂ２ｔ＋１，πｘ２ｔ＋１ｙ２ｔ＋１  ｍｏｄ  ｎ））  ｍｏｄ  ｎ＝ｘｙ  ｍｏｄ  ｎを与える。
【００５３】
このプロセスは、「安全な乗算（Secure  Multiplication）」と呼ばれる場合がある。
【００５４】
ＥＣＤＳＡ署名を共同して作成するには、ｋ−１ｋ≡１  ｍｏｄ  ｎになるように、ｋ  ｍｏｄ  ｎの逆数ｋ−１の共同した決定が必要である。メッセージｍ、乱数ｋ、及び秘密キーｘが与えられると、ＥＣＤＳＡ署名はペア（ｒ，ｓ）で構成され、ここで、ｋは０＜ｋ＜ｑであり、ｑはサブグループの位数であることを思い出されたい。
ｒ＝ｋ×Ｇ
ｓ＝ｋ−１（ｍ＋ｘｒ）  ｍｏｄ  ｎに留意されたい。
【００５５】
グループπは、シェアｋｉを明らかにせずに且つｋを再構築することなく、ｋ−１  ｍｏｄ  ｎのシェアを計算するために協力する２ｔ＋１人のプレーヤで構成される。例示的な一実施形態では、逆数の共同した生成は、以下のステップを含むことができる。
・グループは、ディーラーなしのシークレット配信を使用して、乱数であるシェアｃｉを計算する。
・各参加者ｉは、部分ｂｉ，πｋｉｃｉ  ｍｏｄ  ｎを計算する。
・πの全ての参加者は、それぞれの部分を一緒に追加し、
（（ｂａ，πｋａｃａ  ｍｏｄ  ｎ）＋（ｂｂ，πｋｂｃｂ  ｍｏｄ  ｎ）＋・・・＋（ｂ２ｔ＋１，πｋ２ｔ＋１ｃ２ｔ＋１  ｍｏｄ  ｎ））  ｍｏｄ  ｎ＝ｋｃ  ｍｏｄ  ｎを与える。
全ての参加者が、逆数（ｋｃ  ｍｏｄ  ｎ）−１  ｍｏｄ  ｎ＝ｋ−１ｃ−１  ｍｏｄ  ｎを計算する。
・各参加者ｉは、第２の部分ｋ−１ｃ−１×ｃｉ  ｍｏｄ  ｎを計算する。これは、ｋ−１でのシェアである。
・π’は、ｋ−１でのシェアの多項式がｔ次のみである場合に、ｔ＋１人のプレーヤのグループである。
・ｃは、ｔ次多項式のシークレットであり、再構築するためにｔ＋１個のシェアが必要である。そして、今示したように、ｋ−１  ｍｏｄ  ｎの計算にはｃの再構築のみが必要である。
・（（ｋ−１ｃ−１×ｂａ，π’ｃａ  ｍｏｄ  ｎ）＋（ｋ−１ｃ−１×ｂｂ，π’ｃｂ  ｍｏｄ  ｎ）＋・・・＋（ｋ−１ｃ−１×ｂｔ＋１，π’ｃｔ＋１  ｍｏｄ  ｎ））  ｍｏｄ  ｎ＝ｋ−１ｃ−１×ｃ  ｍｏｄ  ｎ＝ｋ−１  ｍｏｄ  ｎ
・シークレットｃは決して明らかにされないことに留意されたい。
【００５６】
このプロセスは「安全な逆数（Secure  Inverse）」と呼ばれる場合がある。
【００５７】
「安全なシェア参加（Secure  Share  Joining）」及び「Secure  Inverse」プロセスを適用して、秘密キーを再構築せずに、ＥＣＤＳＡ署名を集合的に且つ共同的に生成できる。このプロセスでは、πは２ｔ＋１人の参加者のグループである。各参加者には、秘密キーｘのシェアｘｉがある。次のプロセスでは第２のシークレットｋの使用が含まれるが、シークレットｘが再利用されない限り、いくつかの実施態様では、第２のシークレットｋの必要性を排除できることに留意されたい。例えば、暗号通貨の設定では、しきい値の署名がアカウントの残高全体を新しいアドレスに転送することを許可する限りである。一例では、メッセージｍのハッシュにｋを設定できる。これにより、安全なＥＣＤＳＡ手順が簡素化され、署名のしきい値に関する状況（それは、２ｔ＋１である）が明確になる。ただし、この例では、第２のシークレットｋが使用される。
・グループπは、ディーラーなしのシークレット配信を使用して、参加者毎にシェアｋｉを計算する。グループπには、少なくとも２ｔ＋１人の参加者がいる。
・t人の参加者のサブグループπ’が協力して、Secure  Share  Joiningを使用してｒ＝ｋ×Ｇを生成する。この値はグループ全体にブロードキャストされる。
・グループは、Secure  Inverseを使用して、ｋ−１  ｍｏｄ  ｎのシェアを計算する。このシェアは、ここではｋｉ−１と呼ばれる。
・各参加者ｉは、部分ｂｉ，πｋｉ−１（ｍ＋ｘｉｒ）  ｍｏｄ  ｎを計算し、ここで、ｍは、署名されるメッセージ（トランザクション）である。
・グループは、それぞれの部分を追加するために協力し、
（（ｂａ，πｋａ−１（ｍ＋ｘａｒ）  ｍｏｄ  ｎ）＋（ｂｂ，πｋｂ−１（ｍ＋ｘｂｒ）  ｍｏｄ  ｎ）＋・・・＋（ｂ２ｔ＋１，πｋ２ｔ＋１−１（ｍ＋ｘ２ｔ＋１ｒ）  ｍｏｄ  ｎ））  ｍｏｄ  ｎ＝ｋ−１（ｍ＋ｘｒ）  ｍｏｄ  ｎを与える。
・これは、ｋ−１とｍ＋ｘｒ（ｘは、シークレットである）との安全な乗算に相当し、２ｔ＋１シェアが必要である。
・グループは、秘密キーを明らかにすることなく且つ個々のメンバーがそれぞれの秘密キーシェアを明らかにすることなく、署名を首尾よく計算した。
ｒ＝ｋ×Ｇ
ｓ＝ｋ−１（ｍ＋ｘｒ）  ｍｏｄ  ｎ
【００５８】
ステルスアドレスグループのしきい値交換
上述したように、本願は、入力のセットから出力のセットへの安全なデータレコード配信のための方法及び装置を提案する。つまり、第１のグループであるグループＡの参加者はそれぞれ入力データレコードを供給し、第２のグループであるグループＢの参加者はそれぞれ出力データレコードを受け取る。これらの方法及び装置は、外部の関係者がどの入力アドレスがどのデータレコードをどの出力アドレスに転送したかを特定するのを困難にするように動作する。グループＡのメンバーはグループＢのメンバーでもないことが想定され得る。
【００５９】
特に、本願は、グループＡの参加者が第１のトランザクションを使用してデータレコードをステルスアドレスに転送し、グループＢが第２のトランザクションを使用してデータレコードをステルスアドレスから出力アドレスに転送するプロセスを提案する。ステルスアドレスとは、入力データレコードがプールされるグループＢによって集合的に制御されるアドレスである。説明しているプロセスでは、２つのグループが使用する秘密キーは、それぞれのグループの個々のメンバーによって実際に知られることはなく、プロセスは共同ベースで実行される。本明細書で説明する例示的な実施形態は、一部のアルトコイン（altcoin）プロトコルの追跡不可能性及びリンク不能特性をエミュレートするが、例えばビットコイン等のいくつかのＥＣＤＳＡベースのブロックチェーン・プロトコルによって課される技術的制約内でそのようにする。
【００６０】
次に、データレコード配信（配布）プロセス２００の一実施形態を概略的に示す図２を参照する。複数のノードは、グループＡのノードセットのメンバーである。ノードは、ノード１Ａ、２Ａ、３Ａ、・・・、ｎＡとして示され、合計ｎＡ個のノードである。「ノード」は、本明細書ではメンバー又は参加者又は参加ノードと呼ばれ得る。いくつかの実施態様では、各ノードは、ウォレット（wallet）又は他のそのようなブロックチェーン・エンティティである。別の複数のノードは、グループＢのノードセットのメンバーであり、１Ｂ、２Ｂ、３Ｂ、・・・、ｎＢとして示され、合計でｎＢ個のノードである。殆どの実施態様では、ｎＡ＝ｎＢと想定される。いくつかの実施態様では、グループＡのメンバーはグループＢのメンバーでもない。ただし、場合によっては、ウォレット又は他のそのようなノードが、データレコードをデータレコード配信トランザクションに置いて、対応するがリンク解除された出力アドレス（トランザクションの後に同じデータレコードが表示される）を所有する場合等に、グループＡの少なくとも１つのノードがグループＢのノードでもある。いくつかの実施態様では、データレコードは暗号通貨の量である。
【００６１】
ここで、図２と併せて図３も参照する。図３は、ブロックチェーン・トランザクションにおけるデータレコード配信のための例示的なプロセス３００をフローチャート形式で示す。動作３０２に示されるように、グループＡとグループＢとが形成される。ノードは、ディーラーなしの方法で広告又は公開されたデータレコード配信トランザクションの機会に参加できる。以下で説明するように、ディーラーなしのキーシェアの配信が発生し得る。いくつかの実施態様では、より集中化されたトランザクション参加及びキーシェア配信アーキテクチャが必要になる場合もある。
【００６２】
グループＡのノードはそれぞれ、自身の公開／秘密キーのペアを有しており、それぞれの入力に署名し、それぞれのＵＴＸＯの所有権を証明できるようにする。また、グループＡのノードは、公開／秘密キーのペアＰ｜ｅを集合的に共有するが、各ノードは秘密キーｅのそれぞれのシェアｅｉのみを有しており、実際の秘密キーｅを知っているノードはない。同様に、グループＢのノードは、公開／秘密キーのペアＱ｜ｄを集合的に有しているが、各ノードは秘密キーｄのそれぞれのシェアｄｉのみを有しており、実際の秘密キーｄを知っているノードはない。グループＢの公開キーＱは、グループＡのノードと共有される。
【００６３】
グループＡの秘密キーシェアｅｉ及びSecret  Share  Joiningを使用して、動作３０４で示されるように、ｎＡ個ノードのうちの少なくともｍＡがステルスアドレスＡｐｏｏｌを共同して決定する。ステルスアドレスは、グループＢの公開キーＱ及びグループＡの秘密キーの少なくともｍＡ個のシェアに部分的に基づく。そのステルスアドレスは、グループＢには知られておらず、且つ特定のノードが対応する秘密キーを所有することによってステルスアドレスを制御するという意味で「所有」していない。
【００６４】
動作３０６において、グループＡのノードは第１のトランザクション２０２を形成し、各ノードは入力データレコードを提供する。入力データレコードは、それぞれのノードが所有又は制御するデータレコードを指定することにより提供される。暗号通貨に関係する１つの例では、データレコードは、それぞれのノードによって制御されるＵＴＸＯである。多くの実施態様では、データレコードの配信動作の匿名性を高めるために、入力データレコードは、見た目では見分けがつかない。例えば、暗号通貨の場合に、入力データレコードは同じ量の暗号通貨であり得る。第１のトランザクション２０２の出力は、ステルスアドレスＡｐｏｏｌにプールされた出力データレコードの集まりである。
【００６５】
第１のトランザクション２０２には、グループＡの公開キーＰのコピーも含まれる。この値は、トランザクションに悪影響を与えない何らかのタイプのデータフィールドに配置することができる。データフィールドは、コメント、テキスト、又はトランザクションに関係のないそのようなデータのための指定フィールドであってもよい。場合によっては、特定のコード又は信号によってデータフィールドをマーク又は指定して、フィールドに非トランザクションデータが含まれていることを示すことができる。例えば、ビットコインプロトコルでは、ＯＰ＿ＲＥＴＵＲＮコードは無効なトランザクション出力をマークするために使用されるスクリプト命令コード（opcode）である。ＯＰ＿ＲＥＴＵＲＮコードの後に配置されたデータはビットコイン支払いの処理で無視されるため、そのＯＰ＿ＲＥＴＵＲＮコードの後に配置されたデータは、トランザクション内のメッセージ又はデータ格納フィールドとして効果的に機能できる。従って、ビットコインプロトコルに基づく一実施態様では、第１のトランザクション２０２は、グループＡの公開キーＰが後に続くＯＰ＿ＲＥＴＵＲＮコードを伴う出力を含む。一般的な用語では、非トランザクションデータ又は情報がトランザクションに含まれていることを示すコードを、本明細書では、「非トランザクション・コード」と呼ぶ場合がある。
【００６６】
グループＡのメンバーは各自の入力に署名し、動作３０８によって示されるように、第１のトランザクション２０２は、検証及び確認のためにブロックチェーン・ネットワークに送信される。第１のトランザクション２０２は最終的にブロックに組み込まれ、ブロックチェーン２０４に追加される。
【００６７】
動作３１０において、グループＢのノード又はそれらのサブセットは、ブロックチェーンを検索して、ＯＰ＿ＲＥＴＵＲＮコード（又は、使用されているブロックチェーン・プロトコルに応じて同様のデータフィールド又はコード）を含むトランザクションを特定する。グループＢのノードは、グループＡの公開キーＰを知らず、且つ値がプールされるステルスアドレスＡｐｏｏｌを知らないことに留意されたい。各トランザクションにＯＰ＿ＲＥＴＵＲＮコードが含まれていることが検出されると、グループＢのノードは、そのＯＰ＿ＲＥＴＵＲＮコードが検索対象のデータレコード配信トランザクションに対応するかどうかを評価する。グループＢのノードは、この評価を、ＯＰ＿ＲＥＴＵＲＮコードの後に続く値を、Secret  Share  Joiningを使用したそれ自体の秘密キーシェアをさらに含む数学演算でテストすることにより行い、Ａｐｏｏｌステルスアドレスを生成する際にグループＡのノードによって使用されたシェア・シークレットを生成する。以下に例を示す数学演算により、トランザクションの出力アドレスと一致するステルスアドレスが確認されると、グループＢのノードは、そのトランザクションが第１のトランザクション２０２であると判定する。ステルスアドレスの確認は、評価の一部として秘密キーシェアｄｉを使用するSecret  Share  Joining手順でのグループＢのノードの協力に依存し、グループＢのノードのいずれもグループＢの秘密キーｄを知らないことに留意されたい。
【００６８】
グループＢのノードが集合的にやり繰りして（manage  to）第１のトランザクション２０２を特定すると、グループＢのノードのいずれもその秘密キーを独立して生成することはできないが、その秘密キーはグループＢの秘密キーｄに部分的に基づいているので、グループＢのノードは、アドレスＡｐｏｏｌの秘密キーを共同して生成することもできる。
【００６９】
次に、グループＢのノードは、動作３１２において、入力がステルスアドレスＡｐｏｏｌであり、出力がグループＢのメンバーによって指定されたそれぞれの出力アドレスである第２のトランザクション２０６に参加する。場合によっては、１つ又は複数の出力は、データレコード配信プロセスの基礎となる同意（agreement）の一部として、グループＡの１人又は複数のメンバーによって指定され得、一部の例では、個別の安全な通信でグループＢに各メンバーに指定され得る。第２のトランザクション２０６は、動作３１４において、しきい値署名方式を用いてグループＢのメンバーによって署名され、入力ステルスアドレスに関連付けられた秘密キーは、グループＢの共有秘密キーｄに部分的に基づく。上述したように、グループＢのノードの少なくとも２ｔＢ＋１は、第２のトランザクション２０６に署名する際に協力し、ここで、ｔＢは、ラグランジュ多項式補間に含まれるシークレット多項式の次数である。
【００７０】
第２のトランザクション２０６が署名されると、その第２のトランザクション２０６は、動作３１６における検証及び確認のためにブロックチェーン・ネットワークに送信される。プールされたデータレコードは、それぞれの出力アドレスに配信される。
【００７１】
データレコード配信プロセスのより詳細な実装例を以下に示す。この例は、ＥＣＤＳＡが署名メカニズムであるビットコインプロトコルの使用に基づいている。以下の例では、Ｇは楕円曲線の生成元である。それぞれのグループ、グループＡ及びグループＢが形成され、参加ノードの間でそれぞれのキーシェアが配布される。プロセスの第１の段階では、ステルスアドレスにデータレコードをプールし、グループＢのメンバーがやり繰りしてトランザクションを特定し、ステルスアドレスの秘密キーを（協力して）導出する。
・受信グループ、グループＢは、公開キーＱ＝ｄ×Ｇを作成し、ここで、ｄは、グループの個々のメンバーが知らない秘密キーである。ただし、グループＢのｎＢ人のメンバーのそれぞれは、秘密キーｄのキーシェアｄｉを有しているため、グループＢのｍＢ人のメンバーはＱを計算するために協力する必要がある。これはSecret  Share  Joiningを使用して計算される。得られた公開キーＱは、利害関係者、特にグループＡが利用できるようにされる。
・送信グループ、グループＡはまた、グループのｎＡメンバーのうちのｍＡ人の間でSecret  Share  Joiningを使用して、公開キーＰ＝ｅ×Ｇを生成し、ここで、グループの各メンバーがキーシェアｅｉを有している。
・両方のグループの間で共有されるシークレットは、ｃ＝Ｈ（ｅ×Ｑ）＝Ｈ（ｄ×Ｐ）になり、ここで、Ｈは暗号化ハッシュ関数である。グループＡは、グループのｎＡメンバーのうちのｍＡ人の間でSecret  Share  Joiningを使用してｅ×Ｑを決定し、最終的にｃ＝Ｈ（ｅ×Ｑ）を計算する。
・この時点で、受信グループ、グループＢは、グループＡの公開キー値Ｐが未だグループに通信されていないため、シークレット値ｃを認識しておらず、この値ｃを決定できないことに留意されたい。
・グループＡのメンバーは、式Ｑ＋（ｃ×Ｇ）から導出したステルスアドレスＡｐｏｏｌに個々のデータレコードを送信する第１のトランザクションを作成する。つまり、ステルスアドレスは、シェア・シークレットｃ及びグループＢの公開キーＱに基づいている。このステルスアドレスの導出例では、アドレスは、公開キーＱと、（ｃ×Ｇ）によって与えられるシークレット公開キーとの追加に基づいており、ここで、シェア・シークレットｃはシークレット公開キーに対応する秘密キーである。
・トランザクションには、値Ｐが配置されるＯＰ＿ＲＥＴＵＲＮ出力も含まれる。
・受信グループ、グループＢは、ＯＰ＿ＲＥＴＵＲＮコードを含むトランザクションに関するブロックチェーンを検索する。
・グループＢは、これらのトランザクションの各ＯＰ＿ＲＥＴＵＲＮ出力に含まれるデータがＰであると想定し、その値を使用してｃ＝Ｈ（ｄ×Ｐ）（シェア・シークレット）を計算する。この計算は、ｄ×Ｐの計算でｍＢ参加者のキーシェアｄｉを使用する、さらに別の共同的なSecret  Share  Joining手順である。値が実際にＰである場合に、適切なシェア・シークレットｃが生成され、グループＢは、出力がＱ＋（ｃ×Ｇ）で与えられたステルスアドレスかどうかを評価することにより、そのシェア・シークレットｃをテストできる。
・ステルスアドレスが確認された（つまり、適切なシェア・シークレットｃが決定された）場合に、そのアドレスＡｐｏｏｌの秘密キーはｄ＋ｃである。Ｑ＝ｄ×Ｇ、従ってＱ＋（ｃ×Ｇ）＝（ｄ×Ｇ）＋（ｃ×Ｇ）＝（ｄ＋ｃ）×Ｇであることに留意されたい。
【００７２】
この第１の段階の後に、受信グループＢのノードは、アドレスＱ＋（ｃ×Ｇ）のデータレコードを最終的な出力アドレスに配信できるようになるが、これも、グループの個々のメンバーには秘密キーｄの知見がなく且つトランザクションに署名できないため、共同で行う必要がある。
【００７３】
トランザクションの第２段階では、グループＢの少なくとも２ｔＢ＋１人の参加者が、ステルスアドレスＱ＋（ｃ×Ｇ）に格納されたデータレコードのトランザクションに共同して署名する必要があり、ここで、ｔＢはシークレット多項式の次数である。
【００７４】
この例では、署名する必要があるアドレスの秘密キーはｄ＋ｃであり、ここで、ｃはグループＡ及びグループＢに跨るシェア・シークレット値であり、ｄはＱ＝ｄ×Ｇのようなものである。上記のＥＣＤＳＡ署名（ｒ，ｓ）の議論から以下のことを思い出されたい：
ｒ＝ｋ×Ｇ
ｓ＝ｋ−１（ｍ＋ｘｒ）  ｍｏｄ  ｎ
ここで、ｋは、０＜ｋ＜ｑとなるような乱数であり、ｑはサブグループの位数である。
従って、
ｓ＝ｋ−１（ｍ＋（ｄ＋ｃ）r）  ｍｏｄ  ｎ
ｓ＝ｋ−１（ｍ＋ｄｒ＋ｃｒ）  ｍｏｄ  ｎ
【００７５】
グループＢのノードは、個々のグループメンバーの部分（パート）を作成及び追加するプロセスで、Secure  Inverse及びSecure  Multiplicationを使用して協力して、
（（ｂａ，πｋａ−１（ｍ＋ｄａｒ＋ｃｒ）  ｍｏｄ  ｎ）＋（ｂｂ，πｋｂ−１（ｍ＋ｄｂ＋ｃｒ）  ｍｏｄ  ｎ）＋・・・＋（ｂ２ｔ＋１，πｋ２ｔ＋１−１（ｍ＋ｄ２ｔ＋１ｒ＋ｃｒ）  ｍｏｄ  ｎ））  ｍｏｄ  ｎ＝ｋ−１（ｍ＋ｄｒ＋ｃｒ）  ｍｏｄ  ｎを与える。
【００７６】
この方法で共同して署名を生成すると、プールされたデータレコードを配信するトランザクションが署名され、ブロックチェーンに送信される。
【００７７】
前述した例は、当業者によって理解されるシステムのいくつかの実施態様の詳細（例として、暗号通貨取引における潜在的な「変更」の処理、又はブロックチェーンの使用に必要な取引手数料等）を省略していることが理解されよう。
【００７８】
また、キーシェアの配布は、ディーラーなしの方法で、又は中央当局を介して行われ得ることも理解されよう。そのような実施態様では、利害関係者は各アプローチの不利点と利点とを評価し、セキュリティ、信頼性、及び効率性のニーズを最適に満たす又はバランスをとる方法を決定する。
【００７９】
ここで図４を参照すると、この図は、本願の一実施形態によるデータレコード配信動作に入力ノードとして参加するための例示的なプロセス４００をフローチャート形式で示す。この例の入力ノードは、入力データレコードを配信動作に提供するグループＡのノードセットの参加ノードである。プロセス４００は、動作４０２において、入力ノードがデータレコード配信プロセスに参加することから始まる。参加プロセスは、本明細書では詳述しておらず、分散方式で、又は入力ノード及び出力ノードベースの適切なグループを組み合せる（おそらく、等しい入力値及び／又は出力値（通貨ミキシングの場合）、共通のデータレコードタイプ、及び／又は各グループの十分な数を確保することについて）中央機関を通じて実施してもよい。
【００８０】
動作４０４において、入力ノードは、グループＢの出力ノードに関連付けられた第１の公開キーＱを受信する。動作４０６において、入力ノードは、グループＡの入力ノードに関連付けられた第２の秘密キーｅのキーシェアｅｉを受信する。動作４０４及び４０６は、いくつかの実施態様では異なる順序で又は同時に発生する場合がある。第２の秘密キーｅは対応する公開キーＰを有することが理解されよう。動作４０８において、入力ノードはグループＡの他の入力ノードと協力して、Secret  Share  Joiningを使用して第２の公開キーＰを導出する。この共同には、グループＡのｎＡ個のノードのうちの少なくともｍＡ個が含まれる。各ノードはキーのそれぞれのシェアｅｉしか有していないため、完全な第２の秘密キーｅは、グループＡの入力ノードのどのノードも知らないことに留意されたい。
【００８１】
少なくとも１つの実施態様では、第２の公開キーＰは、トランザクションのＰに値が格納されていないので、Secret  Share  Joining及びキーシェアｅｉに依存するのではなく、単一のノードによって計算され得る。ただし、これは、単一ノードが秘密キーｅを有していることを意味する。これは、第２の公開キーＰがロケーション（location）として使用される、つまり、払戻しや変更等の場合にデータレコードや値を保存するためにロケーションを得る場合に懸念されることがある。従って、第２の公開キーＰの決定の際に、Secret  Share  Joining及びキーシェアを採用することが好ましい。
【００８２】
上記のように、データレコードを格納するステルスアドレスの決定は、グループＡのノードとグループＢのノードとの両方によって決定されるシェア・シークレットｃに基づいており、ノードはグループ内で共同して作業する。この例では、シェア・シークレットはｃ＝Ｈ（ｅ×Ｑ）＝Ｈ（ｄ×Ｐ）によって与えられ、両方のグループが独立してそのシェア・シークレットを決定できるようにする。
【００８３】
動作４１０において、入力ノードは、Secure  Share  Joiningを使用してシェア・シークレットｃを決定する際に協力する。上記のように、これには、入力ノードがラグランジュ多項式補間でその項、つまりｂｉ，πｅｉ×Ｑを計算することが含まれる。この項は、シェア・シークレットｃを見つけるために合計され、ハッシュされる。いくつかの実施態様では、グループＡの参加しているノードの１つが、項を累積し、それら項を合計し、その合計をハッシュしてシェア・シークレットｃを見つけるための「マスター」ノードとして機能する場合がある。いくつかの他の実施態様では、グループＡのノードのうちの２つ以上、又は全てが、シェア・シークレットｃを見つけるために同じ計算を行ってもよい。グループＢのノードはグループＡの公開キーＰを有していないため、グループＢのノードは未だシェア・シークレットｃを認識していないことを理解されたい。グループＡは、後述するように、トランザクション以外では公開キーＰを共有していない。
【００８４】
動作４１２において、入力ノードは、（例えば、値が格納されるＵＴＸＯによって指定されるように）その入力データレコードを提供することにより、第１のトランザクションへの参加又はその生成に参加する。第１のトランザクションは、グループＢの出力ノードのシェア・シークレットｃ及び公開キーＱから導出されたステルスアドレスＡｐｏｏｌに全ての入力データレコードをプールする。特定の例では、Ａｐｏｏｌ＝Ｑ＋（ｃ×Ｇ）であるが、他の式を用いて、ステルスアドレスを第２の公開キーＱ及びシェア・シークレットｃから導出してもよい。この式では、項（ｃ×Ｇ）はシェア・シークレットｃを秘密キーとして有するシークレット公開キーである。
【００８５】
第１のトランザクションには、第２の公開キーが含まれる。いくつかの実施態様では、第２の公開キーが非トランザクション・データフィールドに挿入されるため、その第２の公開キーはトランザクションには影響しないが、その第２の公開キーがブロックチェーン上にあれば、その第２の公開キーは確認されたトランザクションで公開される。いくつかの実施態様では、非トランザクション・データフィールドは、ビットコインプロトコルのＯＰ＿ＲＥＴＵＲＮ等の非トランザクション・コードを使用して通知される。
【００８６】
第１のトランザクションは、ブロックチェーン・ネットワークによる検証及び確認のために送信され、最終的にブロックチェーン上のブロックに組み込まれる。
【００８７】
ここで図５を参照すると、この図は、本願の一実施形態によるデータレコード配信プロセスにおいて出力ノードとして参加するための例示的なプロセス５００をフローチャート形式で示す。プロセス５００は、動作５０２に示されるように、最初にデータレコード配信プロセスに参加する出力ノードを含む。前述したように、参加には、特定の実施態様に応じて、分散型参加プロセス又は適切なグループを組み合せる集中管理プロセスが含まれ得る。
【００８８】
動作５０４において、出力ノードは、出力ノードに関連付けられた第１の秘密キーｄｉのキーシェアを取得する。完全な秘密キーｄは、どの出力ノードにも知られていない。秘密キーｄには対応する公開キーＱがあるが、これも最初は出力ノードに知られていない。ただし、出力ノードは、動作５０５に示されるように、第１の秘密キーのキーシェアｄｉ及びSecure  Share  Joiningを使用して、第１の公開キーＱを共同して決定する際に集まる。こうして、公開キーＱは、出力ノードとグループＢの出力ノードセットの他のノードに知られる。公開キーＱは、グループＡの入力ノードセットがシェア・シークレットｃを生成する際に第１の公開キーＱを使用するため、グループＡの入力ノードセットで利用可能になるように配布される又は利用可能にされる。
【００８９】
動作５０６において、出力ノードはブロックチェーンを検索して、第１のトランザクションを特定する。検索は、潜在的に第２の公開キーＰである可能性がある非トランザクションデータの存在を示す特定の信号又はコードを含むトランザクションの特定に基づいてもよい。一実施態様では、検出される信号は、ビットコインプロトコルのＯＰ＿ＲＥＴＵＲＮのような非トランザクション・コードであり、これは、コードの後に続くデータが非トランザクションであることを示す。
【００９０】
動作５０６の検索は、グループＢの出力ノードの１つ、いくつか、又は全てによって実行され得ることが理解されよう。いくつかの実施態様では、その検索は、集中管理されたデータレコード配信プロセスの場合に、中央サーバ又はグループＢの一部ではないノードによって実行され得る。つまり、幹事（organizer）ノードが、グループＢのノードに代わって検索を実行し、且つ以下に説明するように、グループＢのノードによる後続のテストのために見つかった適格なトランザクションをそれらグループＢのノードに提供する。
【００９１】
動作５０８において、出力ノードは、第１のトランザクションで見出された第２の公開キーＰ及びSecure  Share  Joiningを使用してシェア・シークレットｃを共同で導出するための試みに参加する。上記のように、この例のシェア・シークレットは、ｃ＝Ｈ（ｅ×Ｑ）＝Ｈ（ｄ×Ｐ）で表される。グループＢの出力ノードは、特定されたトランザクションから抽出されたデータが第２の公開キーＰであると想定し、これに基づいて、Ｈ（ｄ×Ｐ）からcと推定されるものを共同して計算する。これには、出力ノードがラグランジュ多項式補間のそれぞれの項、つまりｂｉ，πｄｉ×Ｐを計算することが含まれる。項は、合計され、ハッシュされて、シェア・シークレットｃであると推定されるものが見出され、これは、抽出されたデータが実際に第２の公開キーＰである場合になる。ノードのうちの１つが、項を合計し、それら項をハッシュしてシェア・シークレットｃを見つけるための「マスター」ノードとして機能する場合がある。いくつかの実施態様では、グループＡの全てのノードがシェア・シークレットｃを計算するように、各ノードが同じ計算を行う場合がある。
【００９２】
特定されたトランザクションからシェア・シークレットを正しく計算したと仮定すると、出力ノードはそのシェア・シークレットを使用して、特定されたトランザクションで指定された出力アドレスと一致するステルスアドレスを決定できるかどうかを確認することにより、そのシェア・シークレットをテストする。動作５１０において、出力ノードは、グループＢの第１の公開キーＱ及び計算されたシェア・シークレットｃを使用して、ステルスアドレスＡｐｏｏｌの検証に参加する。ステルスアドレスはＱ＋（ｃ×Ｇ）で与えられることを思い出されたい。繰り返すが、いくつかの実施態様では、グループＢのノードのうちの１つがこの検証テストを行い得る。いくつかの他の実施態様では、グループＢのノードのうちの２つ以上、又は全てが同じ検証テストを行って、正しいトランザクションを特定したことを確認する。計算したＡｐｏｏｌがトランザクションの出力アドレスと一致する場合に、出力ノードは、正しいトランザクションがあることを確認し、第２の公開キーＰを適切に抽出する。さらに、出力ノードは、Ａｐｏｏｌからのデータレコードを配信できるようにする、Ａｐｏｏｌに対応する秘密キー（ｄ＋ｃ）をここで（集合的に）生成することができる。
【００９３】
動作５１２において、出力ノードは、少なくとも２ｔＢ個の他の出力ノードと協力して、データレコードをＡｐｏｏｌからそれぞれの出力アドレスに配信する第２のブロックチェーン・トランザクションに署名することに参加する。第２のブロックチェーン・トランザクションに署名するには、出力ノードは秘密キーｄ＋ｃに基づいて署名を生成する必要がある。どの出力ノードも完全な第１の秘密キーｄを有していないため、出力ノードは、正しい署名を生成するためにしきい値署名方式で協力する。いくつかの実施態様では、ビットコインプロトコルのように、これには、シェア・シークレットｃ及びキーシェアｄｉを使用する楕円曲線デジタル署名アルゴリズムが含まれ、Secure  Inverse及びSecure  Multiplicationの使用に依存する。特に、この例では、出力ノードは、ラグランジュ多項式補間のそれぞれの項を決定することにより協力する。この例では、出力ノードによって計算される項は、（ｂｉ，πｋｉ−１（ｍ＋ｄｉ＋ｃｒ）  ｍｏｄ  ｎ）で表され、ここで、ｋは、サブグループの位数未満の乱数であり、ｍは署名されているメッセージ（通常、トランザクションの短縮されたハッシュ）、ｎは大きな素数であり、ｂはラグランジュ多項式補間のラングラージ（langrage）係数であり、ｄｉは第１の秘密キーのキーシェアであり、ｃはシェア・シークレットであり、ｒはｋ×Ｇである。
【００９４】
トランザクションが署名されると、そのトランザクションは、検証及び確認のために送信され、最終的にブロックチェーンのブロックに含められる。
【００９５】
上記の例示的な実施形態で説明した動作のいくつかは、プロセスに実質的に影響を与えることなく、いくつかの実施態様で同時に又は異なる順序で発生し得ることが理解されよう。本願は、それらの変形及び修正を包含する。
【００９６】
次に図６を参照すると、この図は参加ノード６００の簡略化した例をブロック図形式で示す。ノード６００は、入力ノード又は出力ノードであってもよい。ノード６００は、プロセッサ６０２を含み、プロセッサ６０２には、１つ又は複数のマイクロプロセッサ、特定用途向け集積チップ（ＡＳＩＣ）、マイクロコントローラ、又は同様のコンピュータ処理装置が含まれ得る。ノード６００は、値、変数、場合によってはプロセッサ実行可能プログラム命令を格納する永続的及び非永続的メモリを含み得るメモリ６０４と、有線又は無線ネットワークを介してネットワーク接続を提供するネットワークインターフェイス６０６とをさらに含む。
【００９７】
ノード６００は、実行されると、プロセッサ６０２に本明細書に記載の機能又は動作の１つ又は複数を実行させるプロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーン・アプリケーション６０８を含む。
【００９８】
本明細書に記載の装置及びプロセス、並びにビデオ機能抽出器を構成するための記載の方法／プロセスを実施するモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントは、標準的なコンピュータプログラミング技術及び言語を使用して実現できることが理解されよう。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング規約、データ構造、他のそのような実施態様の詳細に限定されるものではない。
【００９９】
上述した実施形態は、本発明を限定するのではなく例示するものであり、当業者は、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、多くの代替実施形態を設計できることに留意されたい。特許請求の範囲において、括弧内に置かれた参照符号は、特許請求の範囲を限定するものとして解釈すべきではない。「備える、有する、含む（comprising,  comprises）」等の語は、請求項又は明細書全体に列挙されているもの以外の要素又はステップの存在を排除するものではない。本明細書において、「備える、有する、含む（comprises,  comprising）」は「含む、有する（includes,  including）」、又は「から構成される（consists  of,  consisting  of）」を意味する。要素の単数形の参照は、そのような要素の複数形の参照を除外するものではなく、その逆も同様である。本発明は、いくつかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施され得る。いくつかの手段を列挙する装置クレームでは、これらの手段のいくつかは、ハードウェアの同一のアイテムによって具現化される。特定の手段が互いに異なる従属請求項に記載されているという単なる事実は、これらの手段の組合せが有利に使用できないことを示すものではない。
【図１】
2020516164.tif 000006
【図２】
2020516164.tif 000007
【図３】
2020516164.tif 000008
【図４】
2020516164.tif 000009
【図５】
2020516164.tif 000010
【図６】
2020516164.tif 000011
【国際調査報告】
2020516164.tif 000012
2020516164.tif 000013
2020516164.tif 000014