(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-05
(45)【発行日】2024-03-13
(54)【発明の名称】ブラインド化された帰結選択のためのブロックチェーンで実装されるセキュリティー・システムおよび方法
(51)【国際特許分類】
H04L 9/08 20060101AFI20240306BHJP
G06F 21/64 20130101ALI20240306BHJP
H04L 9/32 20060101ALI20240306BHJP
【FI】
H04L9/08 A
G06F21/64
H04L9/32 200B
【外国語出願】
(21)【出願番号】P 2023022121
(22)【出願日】2023-02-16
(62)【分割の表示】P 2020529414の分割
【原出願日】2018-12-03
【審査請求日】2023-02-16
(32)【優先日】2017-12-07
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】バルトルッチ,シルビア
(72)【発明者】
【氏名】ベルナト,ポリーヌ
(72)【発明者】
【氏名】ジョセフ,ダニエル
【審査官】中里 裕正
(56)【参考文献】
【文献】COURTOIS, N. T. and MERCER, R.,Stealth Address and Key Management Techniques in Blockchain Systems,3rd International Conference on Information Systems Security and Privacy (ICISSP 2017),2017年02月,pp.559-566
【文献】RUFFING, T. et al.,CoinShuffle: Practical Decentralized Coin Mixing for Bitcoin,ESORICS 2014, Part II,LNCS, vol. 8713,Springer,2014年,pp.345-364,<DOI:https://doi.org/10.1007/978-3-319-11212-1_20>
【文献】ZIEGELDORF, J. H. et al.,CoinParty: Secure Multi-Party Mixing of Bitcoins,CODASPY'15: Proceedings of the 5th ACM Conference on Data and Application Security and Privacy,2015年03月,pp.75-86,http://dx.doi.org/10.1145/2699026.2699100
【文献】VALENTA, L. and ROWAN, B.,Blindcoin: Blinded, Accountable Mixes for Bitcoin,FC2015: Financial Cryptography and Data Security,Vol.8976,2015年09月05日,pp.112-126,http://dx.doi.org/10.1007/978-3-662-48051-9_9
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
G06F 21/64
H04L 9/32
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
第1のユーザー装置および第2のユーザー装置に関わる、ブロックチェーンで実装されたセキュリティー方法であって、当該方法は:
第1のユーザー装置により生成された第1の複数のn個の秘密の暗号化されたバージョンと、第2のユーザー装置により生成された第2の複数のn個の秘密の暗号化されたバージョンとを組み合わせて、第2のユーザー装置によって、複数のn個の暗号学的ロックを含むブロックチェーン・トランザクションを生成する段階であって、前記第1の複数のn個の秘密および前記第2の複数のn個の秘密はそれぞれn個のブロックチェーン・トランザクション出力に対応する、段階と;
第1のユーザー装置によってランダムに選択された、第1のユーザー装置によって生成された前記第1の複数のn個の秘密に属する1つの秘密を前記第2のユーザー装置によって受領する段階と;
前記複数のn個の暗号学的ロックのうちの特定の暗号学的ロックをロック解除する暗号鍵を前記第2のユーザー装置によって生成する段階であって、前記特定の暗号学的ロックは、第1のユーザー装置によって生成された前記第1の複数のn個の秘密に属する前記ランダムに選択された1つの秘密に対応する、段階とを含む、
ブロックチェーンで実装されたセキュリティー方法。
【請求項2】
前記第1の複数のn個の秘密を第1のユーザー装置に明かすことなく、第1のユーザー装置によって生成された前記第1の複数のn個の秘密の前記暗号化されたバージョンが、第2のユーザー装置に伝達される;および/または
第1のユーザー装置によって生成された前記第1の複数のn個の秘密を第2のユーザー装置に明かすことなく、前記複数のn個の暗号学的ロックが第2のユーザー装置によって生成される;および/または
前記複数のn個の暗号学的ロックが、第2のユーザー装置によって生成され、第1のユーザー装置によって検証されて、前記複数のn個の暗号学的ロックが、第1のユーザー装置によって生成された前記第1の複数のn個の秘密の暗号化されたバージョンと第2のユーザー装置によって生成された前記第2の複数のn個の秘密の暗号化されたバージョンの許容される組み合わせに基づいていることを保証する;および/または
第1のユーザー装置によって生成された前記第1の複数のn個の秘密に属する前記1つの秘密が、第1のユーザー装置によってランダムに選択され、第2のユーザー装置に安全に通信される;および/または
前記暗号鍵は、第1のユーザー装置によって生成された前記第1の複数のn個の秘密を第2のユーザー装置に明かすことなく、第2のユーザー装置によって生成される、
請求項1に記載のブロックチェーンで実装されたセキュリティー方法。
【請求項3】
前記複数のn個の暗号学的ロックは、第1のユーザー装置によって生成された前記第1の複数のn個の秘密の暗号化されたバージョンと、第2のユーザー装置によって生成された前記第2の複数のn個の秘密の暗号化されたバージョンとの線形結合に基づく、
請求項1または2に記載のブロックチェーンで実装されたセキュリティー方法。
【請求項4】
第2のユーザー装置により、少なくとも1つのトランザクション入力と複数のn個のトランザクション出力とを含む第1のトランザクションを構築する段階であって、前記第1のトランザクションの前記少なくとも1つのトランザクション入力は、第2のユーザー装置のデジタル資産をポイントし、前記第1のトランザクションのn個のトランザクション出力は、第2のユーザー装置のデジタル資産の制御された移転のための前記複数のn個の暗号学的ロックのうちの異なるものに基づくロック・スクリプトを含む、段階と;
第2のユーザー装置によって生成された前記第2の複数のn個の秘密を第1のユーザー装置に明かすことなく、第1のユーザー装置により、前記第1の複数のn個の秘密の暗号化されたバージョンおよび前記第2の複数のn個の秘密の暗号化されたバージョンから導出されたデータを使って、前記第1のトランザクションを検証する段階とをさらに含み、
第1のユーザー装置によって生成された前記第1の複数のn個の秘密に属する前記1つの秘密は、前記第1のトランザクションの検証成功に応答して、第1のユーザー装置によってランダムに選択される、
請求項3に記載のブロックチェーンで実装されたセキュリティー方法。
【請求項5】
第2のユーザー装置によって、第1のユーザー装置によってランダムに選択された前記1つの秘密に対応する前記第1のトランザクションの特定のトランザクション出力を決定する段階と;
第2のユーザー装置によって、トランザクション入力および少なくとも1つのトランザクション出力を含む第2のトランザクションを構築する段階であって、前記第2のトランザクションのトランザクション入力は、第1のユーザー装置によってランダムに選択された前記1つの秘密に対応する前記第1のトランザクションの特定のトランザクション出力をポイントし、前記第1のトランザクションの前記特定のトランザクション出力の前記暗号学的ロックをロック解除する前記暗号鍵に基づくロック解除スクリプトを含み、前記第2のトランザクションの前記少なくとも1つのトランザクション出力は、第2のユーザー装置のデジタル資産の制御された移転のための出力値およびロック・スクリプトを含む、段階とをさらに含む、
請求項4に記載のブロックチェーンで実装されたセキュリティー方法。
【請求項6】
第2のユーザー装置によって、前記第1のトランザクションのn個のトランザクション出力の数nを生成する段階と;
第2のユーザー装置によって、数nを含むメッセージを第1のユーザー装置に送信する段階と;
第1のユーザー装置によって、数nを含む、第1のユーザー装置によって送信されたメッセージを受信する段階とをさらに含む、
請求項4に記載のブロックチェーンで実装されたセキュリティー方法。
【請求項7】
第1のユーザー装置によって、前記第1の複数のn個の秘密を生成する段階と;
第1のユーザー装置によって、楕円曲線暗号を利用して前記第1の複数のn個の秘密を暗号化し、前記第1の複数のn個の秘密の前記暗号化されたバージョンを表わすn個の結果データ点を得る段階と;
第1のユーザー装置によって、前記n個の結果のデータ点を含むメッセージを第2のユーザー装置に送信する段階と;
前記n個の結果のデータ点を含む、第1のユーザー装置によって送信されたメッセージを、第2のユーザー装置によって受信する段階と;
第2のユーザー装置によって、前記n個の結果データ点を復元する段階と;
第2のユーザー装置によって、第2の複数のn個の秘密を生成する段階と;
第2のユーザー装置によって、楕円曲線暗号を利用して前記第2の複数のn個の秘密を暗号化し、前記第2の複数のn個の秘密の前記暗号化されたバージョンを表わすn個の結果データ点を得る段階とをさらに含み、
第2のユーザー装置は、第1のユーザー装置によって生成された前記第1の複数のn個の秘密の前記暗号化されたバージョンを表わすn個のデータ点と、第2のユーザー装置によって生成された前記第2の複数のn個の秘密の前記暗号化されたバージョンを表わすn個のデータ点との線形結合に基づいて、前記複数のn個の暗号学的ロックを生成する、
請求項4に記載のブロックチェーンで実装されたセキュリティー方法。
【請求項8】
第1のユーザー装置によってランダムに選択された前記1つの秘密を含むメッセージを第1のユーザー装置によって、第2のユーザー装置に送信する段階と;
第1のユーザー装置によってランダムに選択された前記1つの秘密を含む第1のユーザー装置から送られたメッセージを第2のユーザー装置によって受信する段階と;
第1のユーザー装置から送られた前記メッセージに応答して、第1のユーザー装置によってランダムに選択された前記1つの秘密に対応する、前記第1のトランザクションの前記特定のトランザクション出力に関連するインデックスを第2のユーザー装置によって生成する段階と:
第2のユーザー装置によって、第1のユーザー装置によってランダムに選択された前記1つの特定の秘密と、前記第1のトランザクションの前記特定のトランザクション出力に関連付けられた前記インデックスとに基づいて前記暗号鍵を生成する段階とをさらに含み、
第2のユーザー装置は、前記第2のトランザクションのトランザクション入力を構築する際に、前記暗号鍵と、前記第1のトランザクションの前記特定のトランザクション出力に関連するインデックスとの両方を使用する、
請求項5に記載のブロックチェーンで実装されたセキュリティー方法。
【請求項9】
前記第1のトランザクションのn個のトランザクション出力のロック・スクリプトは、前記複数のn個の暗号学的ロックのうちの異なるものに対応する署名と、可能性としては他の必要なデータを提供するそれぞれのロック解除スクリプトによって解放され;
前記第2のトランザクションのトランザクション入力は、該トランザクション入力によってポイントされる前記第1のトランザクションの前記特定のトランザクション出力の前記暗号学的ロックに対応する署名と、可能性としては他の必要なデータとをもつロック解除スクリプトを含み、
前記特定のトランザクション出力の前記暗号学的ロックに対応する前記署名は、第1のユーザー装置によってランダムに選択された前記1つの秘密に基づいて、第2のユーザー装置によって生成された前記暗号鍵から構築される
請求項5に記載のブロックチェーンで実装されたセキュリティー方法。
【請求項10】
前記第1のトランザクションをブロックチェーン・ネットワークのブロックチェーン・ブロックに格納するための検証および採掘のために、前記第1のトランザクションを前記ブロックチェーン・ネットワーク上でブロードキャストする段階、および/または
前記第2のトランザクションを前記ブロックチェーン・ネットワークのブロックチェーン・ブロックに格納するための検証および採掘のために、前記第2のトランザクションを前記ブロックチェーン・ネットワーク上でブロードキャストする段階をさらに含み、
前記ブロックチェーンは、プルーフオブワーク式ブロックチェーンまたはプルーフオブステーク式ブロックチェーンである、
請求項5に記載のブロックチェーンで実装されたセキュリティー方法。
【請求項11】
第2のユーザー装置によって、前記第1のトランザクションの検証失敗に応答して少なくとも1つの第3のトランザクションを構築する段階であって、前記第3のトランザクションは、少なくとも1つのトランザクション入力および少なくとも1つのトランザクション出力を含み、前記第3のトランザクションの前記少なくとも1つのトランザクション入力は、前記第1のトランザクションのトランザクション出力をポイントし、前記第2のトランザクションの前記少なくとも1つのトランザクション出力は、前記第2のユーザー装置にデジタル資産を払い戻すための出力値およびロック・スクリプトを含む、段階をさらに含み、
前記少なくとも1つの第3のトランザクションは、前記第1のトランザクションのn個のトランザクション出力を参照する複数のトランザクション入力をもつ単一のトランザクションを含む、または
前記少なくとも1つの第3のトランザクションは、前記第1のトランザクションのn個のトランザクション出力のうちの異なるものを参照するトランザクション入力をそれぞれもつn個の別個のトランザクションを含む、
請求項5に記載のブロックチェーンで実装されたセキュリティー方法。
【請求項12】
秘密鍵と公開鍵のペアが、第2のユーザー装置に関連付けられており;
前記第1のトランザクションのn個のトランザクション出力のロック・スクリプトは、第2のユーザー装置の秘密鍵から導出される署名を提供するロック解除スクリプトによって解放されることができ;
前記第3のトランザクションの前記少なくとも1つのトランザクション入力は、前記第1のトランザクションの対応するトランザクション出力をポイントし、第2のユーザー装置の秘密鍵から導出された署名を提供するロック解除スクリプトを含む、
請求項11に記載のブロックチェーンで実装されたセキュリティー方法。
【請求項13】
第1ユーザー装置が、前記複数のn個の暗号学的ロックが、第1ユーザー装置によって生成された前記第1の複数のn個の秘密の暗号化されたバージョンと、第2ユーザー装置によって生成された前記第2の複数のn個の秘密の暗号化されたバージョンとの許容される線形結合に基づいていることを保証するために、前記第1のトランザクションを検証する、および/または
第2のユーザー装置によって生成された前記第2の複数のn個の秘密を第1のユーザー装置に明かすことなく、第1のユーザー装置が、第2のユーザー装置によって生成された前記第2の複数のn個の秘密の暗号化されたバージョンの組み合わせから導出されるデータを利用して前記第1のトランザクションを検証する、および/または
前記第1のトランザクションの検証が、
【数8】
の形の演算に関わり、
k
A
(1)、k
A
(2)、…k
A
(n)は前記第1の複数のn個の秘密であり、
k
B
(1)、k
B
(2)、…k
B
(n)は前記第2の複数のn個の秘密であり、
Gは楕円曲線上の点であり、
k
A
(1)G、k
A
(2)G、…k
A
(n)Gは前記第1の複数のn個の秘密の暗号化されたバージョンであり、
k
B
(1)G、k
B
(2)G、…k
B
(n)Gは前記第2の複数のn個の秘密の暗号化されたバージョンである、
請求項4に記載のブロックチェーンで実装されたセキュリティー方法。
【請求項14】
実行されると、請求項1ないし13のうちいずれか一項に記載の方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を備える、コンピュータ可読記憶媒体。
【請求項15】
インターフェース装置と;
前記インターフェース装置に結合されたプロセッサと;
前記プロセッサに結合されたメモリとを有する電子装置であって、前記メモリは、実行されると、請求項1ないし13のうちいずれか一項に記載の方法を実行するように前記プロセッサを構成するコンピュータ実行可能命令を記憶している、
電子装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概括的には分散システムに関し、より詳細には、ブロックチェーン上に維持される暗号的に施行される資産(暗号通貨を含む)の信頼性および有用性を改善するための方法およびシステムに関する。
【背景技術】
【0002】
本稿では、「ブロックチェーン」という用語は、あらゆる形の電子的な、コンピュータベースの、分散台帳を含むものとして使用する。これらは、ブロックチェーンおよびトランザクション・チェーン技術、許可式および非許可式台帳、共有台帳、およびそれらの変形を含むが、これらに限定されない。ブロックチェーン技術の最も広く知られている応用はビットコイン台帳であるが、他のブロックチェーン実装が提案され、開発されている。本稿では便宜上、また、例解のために、ビットコインに言及することがあるが、本発明が、ビットコイン・ブロックチェーンとともに使用することに限定されず、代替的なブロックチェーン実装およびプロトコルが本発明の範囲内にはいることに注意しておくべきである。用語「ビットコイン」は、本明細書において、ビットコイン・プロトコルから派生するすべての変形を含むように使用される。
【0003】
ブロックチェーンは、諸ブロックから構成されるコンピュータベースの非中央集中式の分散システムとして実装される、コンセンサスベースの電子台帳であり、そのブロックがトランザクションおよび他の情報から構成される。ビットコインの場合、各トランザクションは、ブロックチェーン・システムの参加者間でのデジタル資産の制御権の移転をエンコードするデータ構造であり、少なくとも一つの入力および少なくとも一つの出力を含む。各ブロックは直前のブロックのハッシュを含み、そのため、諸ブロックがチェーン状に連鎖されて、そのブロックチェーンの発端以降にそのブロックチェーンに書き込まれたすべてのトランザクションの永続的で変更不可能なレコードを作成する。トランザクションは、その入力および出力に埋め込まれたスクリプトとして知られる小さなプログラムを含んでおり、それが、トランザクションの出力が、どのように、誰によってアクセスされることができるかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して書かれる。
【0004】
トランザクションがブロックチェーンに書き込まれるためには、トランザクションは「検証される」必要がある。いくつかのネットワーク・ノードが採掘者〔マイナー〕のはたらきをし、各トランザクションが有効であることを保証するための作業を実行し、無効なトランザクションはネットワークから除外される。たとえば、ノードにインストールされているソフトウェア・クライアントが、未使用トランザクション出力(UTXO)を参照するトランザクションに対してこの検証作業を実行する。検証は、そのロック・スクリプトおよびロック解除スクリプトを実行することによって実行されうる。ロックおよびロック解除スクリプトの実行がTRUE〔真〕に評価され、ある種の他の条件が満たされる場合(たとえば、十分な採掘料が含まれる)、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれうる。このように、トランザクションがブロックチェーンに書き込まれるためには、トランザクションは、i)該トランザクションを受け取るノードによって検証され――トランザクションが検証されれば、ノードはそれをネットワーク内の他のノードに中継する――、ii)採掘者によって構築された新しいブロックに追加され、iii)採掘される、すなわち過去のトランザクションの公開台帳に追加される必要がある。ブロックチェーンに十分な数のブロックが追加されて、当該トランザクションが事実上不可逆になるとき、当該トランザクションは確認されたと考えられる。
【0005】
ブロックチェーン上に維持される暗号通貨の使用など、ブロックチェーン上に維持される暗号資産へのアクセスを制御するために、秘密鍵が一般的に使用される。より具体的には、ユーザーは、典型的には、該ユーザーに属する他の暗号資産のために暗号コインまたはトークンを送受信するために、公開アドレスおよび秘密鍵を与えられる。秘密鍵は、ユーザーに属する暗号コインまたは他の暗号資産を、使用、回収、または他の仕方で移転もしくは拘束することを可能にする秘密の数である。ビットコインでは、秘密鍵は通例256ビットの数である。公開アドレスは、ユーザーの暗号資産が預けられ、受け取られる場所である。公開アドレスは、数学的アルゴリズムを通じて秘密鍵から生成される。しかしながら、公開アドレスから秘密鍵を生成することによって上記プロセスの逆を行なうことは、事実上不可能である。
【0006】
典型的には、ユーザーの秘密鍵を格納するためにデジタル・ウォレットが使用される。ユーザーに属する暗号資産を消費する、回収する、または他の仕方で移転するもしくは拘束するためにユーザーがトランザクションを開始するとき、デジタル・ウォレットは、秘密鍵を用いてそのトランザクションを処理することによって、デジタル署名を生成する。任意の所与のトランザクションについての有効な署名を生成する唯一の方法は、秘密鍵を使って、トランザクションについての署名が秘密鍵に対応する公開アドレスに対して検証されるようにすることなので、これは安全なシステムを呈する。署名と公開アドレスは、そのトランザクションが当該ユーザー(公開アドレスに対応する秘密鍵の保持者)から来たことを検証するために使用され、セキュリティーにとって決定的に重要なトランザクションの要素(送られる額、受領者アドレスなど)がひとたびブロードキャストされたら変更できないことを保証する。これらのトランザクション要素が変更されると、ユーザーの署名および公開アドレスに基づいたトランザクションの検証が失敗する。
【0007】
ユーザーが自分の秘密鍵をなくしたら、ユーザーはもはや、その秘密鍵に関連付けられた、ユーザーの暗号資産を使用したり、回収したり、あるいは移転したり、もしくは拘束したりすることはできない。よって、秘密鍵を安全な場所に保存することが必須である。デジタル・ウォレットがユーザーの秘密鍵を格納できる多くの方法がある。
【0008】
一例では、秘密鍵は、ユーザーの秘密鍵を用いてトランザクションが署名される必要があるときに取り出せるように、紙の形または電子文書にプリントされることができる。たとえば、秘密鍵は、可能性としては、ユーザーの秘密鍵を用いてトランザクションが署名される必要があるときにスキャンできるQRコード(登録商標)の形式で印刷されることができる。秘密鍵は、コールド・ストレージ(cold storage)またはハードウェア・ウォレットを使用して格納されることもできる。これらは典型的には、ユーザーの秘密鍵を安全に格納し、ユーザーの秘密鍵を使用してオフラインでトランザクションに署名するスマートカードまたはUSBデバイスを使用する。別の例では、秘密鍵は、ホット・ウォレットを使用して格納されることができる。これは、典型的には、秘密鍵を格納し、何らかの仕方でインターネットに接続された、オンラインのシステムを使用してトランザクションに署名する。
【発明の概要】
【発明が解決しようとする課題】
【0009】
ビットコン・ユーザーを含め一般に抱かれているビットコインについての誤概念は、システムが完全に匿名であるということである。確認されたすべてのトランザクションがブロックチェーンにおいて公に見えることを考えると、実際、匿名性はプロトコルの設計の主たる焦点ではなかった。台帳の透明性は、魅力的な低いトランザクション・コストおよび料金を提供しつつ、伝統的な銀行システムのような信頼される中央集中化されたシステムなしで、二重使用のリスクを緩和する。
【0010】
トランザクションは、ユーザーの入力および出力公開アドレスを含み、これが仮名のはたらきをする。関連する秘密鍵を所有するユーザーのみが、トランザクションに署名することができる。このように、ビットコイン・プロトコルは仮名性を提供する。これは、ユーザー・アドレスがいかなる個人情報とも明示的に結びつけられていないことを意味する。しかしながら、非匿名化(de-anonymization)攻撃は、ビットコイン・アドレスを実際の素性〔アイデンティティ〕(identity)と関連付けることを許容するユーザー情報を見つけることを目的としている。
【0011】
非匿名化フェーズに先立って、トランザクションをトレースして、共通エンティティにリンクするために解析が実行される。たとえば、単一のトランザクションの入力として使用されるすべてのアドレスが1つのアイデンティティにグループ化されることができ、この情報は、ユーザーのネットワークを再構成するために使用できる。
【0012】
暗号通貨ユーザーに関連付けられたIPアドレス(単数または複数)も、ビットコイン・ネットワークの匿名性を損なうために使用されうる。実際、悪意のある攻撃者は、公開鍵をIPアドレスにリンクし、所与のユーザーによって提出されたすべてのトランザクションを追跡することに成功しうる。さらに、IP情報は、実ユーザーの素性を検索するためにも使用できる。この結果は、このIP情報を他のソース、たとえば、インターネット・フォーラムおよびソーシャル・メディアと組み合わせることによって達成できる。そのような状況では、操作の匿名性を高めるための手段として、トランザクションの異なる集合について複数の公開鍵‐秘密鍵ペアを生成すること、または混合〔ミキシング〕サービスに参加することは、成功しない可能性がある。
【0013】
ビットコイン・システムの内部(および外部)におけるコイン混合サービスの開発は、コインの流れの追跡不可能性およびトランザクションの、コイン所有者とのリンク不可能性を高めることに焦点を当ててきた。これらの混合サービスは、しばしば、参加者を集め、ピアツーピア・ネットワーク上でブロードキャストされるトランザクションを作成するために、信頼されるサードパーティーを要する。コイン混合サービスは、ユーザーの入力と出力がすべて同じ量であれば、追跡不可能性を実施する最も簡単で効率的な方法である。
【0014】
これらの解決策は、完璧ではない。諸アドレスを一緒にクラスタリングし、それらをユーザーとマッチさせるために、ニューラルネットワークおよびk平均クラスターを使用する種々の非匿名化技法が存在する。たとえば、汚染解析(taint analysis)は、所与のアドレスにおける、別のアドレスから受領されたビットコインの割合を測定し、トランザクションにおける入力量と出力量の間の関係を推定しようとする。
【0015】
最後に、機械学習アルゴリズムは、データを解析し、イベントのチェーンにおけるパターンを見つける。人間の性質は完全に予測可能ではないが、人間は所与の状況における他人の振る舞いの理解に基づいて予測を行なうと主張することができる。暗号通貨システムでは、どのような標準的な銀行システムでもそうであるように、ユーザーはパターン(朝のコーヒー、毎月の寄付、特定の条件でのコイン混合サービスの利用など)に従う可能性が高く、それがかかる機械学習アルゴリズムによって追跡され、利用される可能性がある。「活動レベル」、「トランザクション・タイムスタンプ」、または「交換された額」などのユーザー習癖を解析することで、通貨を非匿名化しようとする攻撃者は、ユーザー・ネットワークを再構成できる可能性がある。これは、ユーザーの振る舞いが、攻撃者によって直接使用可能な情報を漏洩する可能性があることを示唆している。ビットコイン・システムおよびトランザクション履歴の公開性ため、そのような非匿名化攻撃の可能性は、金融規制当局、プロトコル設計者、セキュリティーアナリストのような多くの異なる当事者の懸念を引き起こす。
【課題を解決するための手段】
【0016】
そこで、本発明によれば、ブロックチェーンで実装され、暗号学的に施行されるセキュリティー方法および装置が提供される。これらは、第一の当事者と第二の当事者に関わってもよく、それにより第一の当事者の行動が第二の当事者の振る舞いに乱雑さを導入する。本発明の実施形態は、悪意のある攻撃および危殆化の可能性を低減することによって、セキュリティーを強化する。このように、本発明の実施形態は、改良されたブロックチェーン・ネットワークを提供する。
【0017】
本発明は、ブロックチェーン上のリソースのロック/ロック解除を制御するために暗号技術を使用することとしても説明でき、これは、強化されたセキュリティーをユーザーに提供する。
【0018】
実施形態において、ブロックチェーンで実装されたセキュリティー方法は、下記を含みうる:
第1の当事者により生成された第1の複数のn個の秘密の暗号化されたバージョンと、第2の当事者により生成された第2の複数のn個の秘密の暗号化されたバージョンとを組み合わせて、複数のn個の暗号学的ロックを生成する段階と;
第1の当事者によって生成された前記第1の複数のn個の秘密に属する1つの秘密をランダムに選択する段階と;
前記複数のn個の暗号学的ロックのうちの特定の暗号学的ロックをロック解除する暗号鍵を生成する段階であって、前記特定の暗号学的ロックは、前記第1の当事者によって生成された前記第1の複数のn個の秘密に属する前記ランダムに選択された1個の秘密に対応する、段階。
【0019】
追加的または代替的に、第1の当事者によって生成された前記第1の複数のn個の秘密の暗号化されたバージョンは、前記第1の複数のn個の秘密を第1の当事者に明かすことなく、第2の当事者に伝達されることができる。
【0020】
追加的または代替的に、前記複数のn個の暗号学的ロックは、第1の当事者によって生成された前記第1の複数のn個の秘密を第2の当事者に明かすことなく、第2の当事者によって生成されることができる。
【0021】
追加的または代替的に、前記複数のn個の暗号学的ロックは、第2の当事者によって生成され、第1の当事者によって検証されて、前記複数のn個の暗号学的ロックが、第1の当事者によって生成された前記第1の複数のn個の秘密の暗号化されたバージョンと、第2の当事者によって生成された前記第2の複数のn個の秘密の暗号化されたバージョンとの許容される組み合わせに基づいていることを保証することができる。
【0022】
追加的または代替的に、第1の当事者によって生成された前記第1の複数のn個の秘密に属する前記1つの秘密は、第1の当事者によってランダムに選択され、第2の当事者に安全に通信されることができる。
【0023】
追加的または代替的に、前記複数のn個の暗号学的ロックは、第1の当事者によって生成された前記第1の複数のn個の秘密の暗号化されたバージョンと、第2の当事者によって生成された前記第2の複数のn個の秘密の暗号化されたバージョンとの線形結合に基づくことができる。
【0024】
追加的または代替的に、本発明は、前記複数のn個の暗号学的ロックを使用して、第2の当事者のデジタル資産のようなデジタル資産の移転を制御してもよい。そのような実施形態では、前記第1の複数のn個の秘密に属する前記1つの秘密を選択する際の第1の当事者のランダムな行動が、ブロックチェーン・トランザクション出力を選択すること、および/または、そのブロックチェーン・トランザクション出力のために前記n個の暗号学的ロックのうちの1つをロック解除する暗号鍵を構築することにおいて、第2の当事者の振る舞いにランダム性を導入する。
【0025】
追加的または代替的に、ブロックチェーンで実装されたセキュリティー方法は、4つのフェーズ、すなわち、初期化フェーズ、コミットメント・フェーズ、支払いフェーズ、および払い戻しフェーズに論理的に分割されうる。
【0026】
初期化フェーズでは、第2の当事者は、第1の当事者によって生成された前記第1の複数のn個の秘密の暗号化されたバージョンと、第2の当事者によって生成された前記第2の複数のn個の秘密の暗号化されたバージョンとの線形結合に基づいて、第1の当事者によって生成された前記n個の秘密を第2の当事者に明かすことなく、複数のn個の暗号学的ロックを生成しうる。
【0027】
コミットメント・フェーズでは、第2の当事者は、少なくとも1つのトランザクション入力と複数のn個のトランザクション出力とを含む第1のトランザクション(またはコミットメント・トランザクション)を構築してもよく、第1のトランザクションの前記少なくとも一つのトランザクション入力は、第2の当事者のデジタル資産をポイントし、第1のトランザクションのn個のトランザクション出力は、前記複数のn個の暗号学的ロックのうちの異なるものに基づくロック・スクリプトを含む。第2の当事者によって生成された前記n個の秘密を第1の当事者に明かすことなく、第1の当事者は、前記第1の複数の秘密の暗号化されたバージョンおよび前記第2の複数のn個の秘密の暗号化されたバージョンを使用して、第1のトランザクションを検証する。第1のトランザクションの成功裏の検証に応答して、第1の当事者は、第1の当事者によって生成された前記第1の複数の秘密のうちの1つの特定の秘密をランダムに選択し、第1の当事者によってランダムに選択された前記1つの特定の秘密を第2の当事者に送る。第2の当事者は、第1の当事者によってランダムに選択された前記1つの特定の秘密に対応する第1のトランザクションの特定のトランザクション出力を決定する。
【0028】
支払いフェーズでは、第2の当事者は、トランザクション入力と少なくとも1つのトランザクション出力とを含む第2のトランザクション(または支払いトランザクション)を構築してもよい。第2のトランザクションのトランザクション入力は、第1の当事者によってランダムに選択された前記1つの特定の秘密に対応する第1のトランザクションの特定のトランザクション出力をポイントし、第2のトランザクションの前記少なくとも一つのトランザクション出力は、出力値と、第2の当事者のデジタル資産を移転するためのロック・スクリプトとを含む。第2のトランザクションのトランザクション入力は、トランザクション入力によってポイントされる第1のトランザクションの特定のトランザクション出力のロック・スクリプトによって提供される暗号学的ロックに対応する署名を提供するロック解除スクリプトと、可能性としては、第1のトランザクションの前記特定のトランザクション出力のロック・スクリプトによって提供される拘束を解消するための必要な他のデータ(第2の当事者に属する秘密鍵から導出された署名など)とを含むことができる。
【0029】
払い戻しフェーズでは、第2の当事者は、少なくとも1つのトランザクション入力および少なくとも1つのトランザクション出力を含む少なくとも1つの第3のトランザクション(または払い戻しトランザクション)を構築しうる。第3のトランザクションの前記少なくとも1つのトランザクション入力は、第1のトランザクションのトランザクション出力をポイントし、第3のトランザクションの前記少なくとも1つのトランザクション出力は、出力値と、デジタル資産を第2の当事者に払い戻すためのロック・スクリプトとを含む。第3のトランザクションのトランザクション入力は、前記トランザクション入力(単数または複数)によってポイントされる第1のトランザクションの対応するトランザクション出力のロック・スクリプトによって提供される拘束を解消する署名を提供するロック解除スクリプトをも含むことができる。
【0030】
追加的または代替的に、本方法の初期化フェーズは、さらに、第2の当事者が第1のトランザクションの前記n個のトランザクション出力のための数n(nは1より大きな整数)を生成し、数nを含むメッセージを第1の当事者に送信することを含むことができる。
【0031】
追加的または代替的に、本方法の初期化フェーズは、第1の当事者が、前記第1の複数のn個の秘密を生成し、前記第1の複数のn個の秘密を楕円曲線暗号を使って暗号化して、前記第1の複数のn個の秘密の暗号化されたバージョンを表わすn個の結果データ点を取得し、前記n個の結果データ点を含むメッセージを第2の当事者に送信することに関わることができる。第2当事者は、前記n個の結果データ点を復元し、前記第2の複数のn個の秘密を生成し、前記第2の複数のn個の秘密を楕円曲線暗号を利用して暗号化して、前記第2の複数のn個の秘密の暗号化されたバージョンを表わすn個の結果データ点を取得し、前記第1の複数のn個の秘密の暗号化されたバージョンを表わす前記n個のデータ点と、前記第2の複数のn個の秘密の暗号化されたバージョンを表わす前記n個のデータ点との線形結合から、n個の暗号学的ロックを生成することができる。
【0032】
追加的または代替的に、本方法は、第1の当事者が、第1の当事者によってランダムに選択された前記第1の複数のn個の秘密のうちの前記1つの特定の秘密を含むメッセージを第2の当事者に送信することに関わることができる。第2の当事者は、このメッセージを受信し、第1の当事者によってランダムに選択された前記1つの特定の秘密に対応する第1のトランザクションの特定のトランザクション出力に関連付けられたインデックスを決定し、第1の当事者によってランダムに選択され、受信されたメッセージに含まれている前記1つの特定の秘密と、第2の当事者により生成され、第1のトランザクションの前記特定のトランザクション出力についての公開鍵ロックを導出するために使用される前記秘密とを加算することによって、秘密鍵を導出することができる。支払いフェーズでは、第2の当事者は、第2のトランザクションのトランザクション入力を構築する際に、第1のトランザクションの前記特定のトランザクション出力に関連付けられたインデックスを使用することができる。第2の当事者は、第1の当事者と第2の当事者によって合同して生成された秘密の加算から導出される秘密鍵を、第1のトランザクションの前記特定のトランザクション出力のロック・スクリプトによって提供される公開鍵ロックに対応する署名を生成するために使用することもできる。署名とともにロック解除スクリプトは、第2のトランザクションのトランザクション入力に含まれることができる。
【0033】
追加的または代替的に、第1のトランザクションは、ブロックチェーン・ネットワークのブロックチェーン・ブロック内に該第1のトランザクションを格納するための検証および採掘のために、ブロックチェーン・ネットワーク上でブロードキャストされることができ;第2のトランザクションは、ブロックチェーン・ネットワークのブロックチェーン・ブロック内に該第2のトランザクションを格納するための検証および採掘のために、ブロックチェーン・ネットワーク上でブロードキャストされることができる。ブロックチェーンは、プルーフオブワーク式ブロックチェーンまたはプルーフオブステーク式ブロックチェーンであることができる。
【0034】
追加的または代替的に、秘密鍵と公開鍵のペアが、第2の当事者と関連付けられることができる。コミットメント・フェーズでは、第1のトランザクションのn個のトランザクション出力のロック・スクリプトは、前記n個の暗号学的ロック(第1の当事者と第2の当事者によって合同で生成された2組の秘密から導出される)と、第2の当事者の公開鍵とに基づくことができる。たとえば、第1のトランザクションのn個のトランザクション出力のロック・スクリプトは、i)トランザクション出力オプションのそれぞれの暗号学的ロックに対応する署名と、第2の当事者自身の秘密鍵に基づいて第2の当事者の署名とを提供するロック解除スクリプト、またはii)第2の当事者自身の秘密鍵に基づいて第2の当事者の署名を提供するロック解除スクリプトのいずれかによって解除されることができる。
【0035】
追加的または代替的に、払い戻しフェーズの前記少なくとも1つの第3のトランザクションは、第1のトランザクションの対応するロック・スクリプトによって提供される拘束を解消するための第2の当事者自身の秘密鍵に基づく第2の当事者の署名を提供するロック解除スクリプトをもつトランザクション入力を含むことができる。さらに、前記少なくとも1つの第3のトランザクションは、第1のトランザクションの前記n個のトランザクション出力を参照する複数のトランザクション入力をもつ単一のトランザクションであってもよい。あるいはまた、払い戻しフェーズの前記少なくとも1つの第3のトランザクションは、第1のトランザクションの前記n個のトランザクション出力のうちの異なるトランザクション出力を参照するトランザクション入力をそれぞれ有するn個の個別のトランザクションを含むことができる。
【0036】
追加的または代替的に、第1の当事者は、複数のn個の暗号学的ロックが、第1の当事者によって生成された前記第1の複数のn個の秘密の暗号化されたバージョンと、第2当事者によって生成された前記第2の複数のn個の秘密の暗号化されたバージョンとの許容される線形結合に基づいていることを確実にするために、第1のトランザクションを検証することができる。
【0037】
追加的または代替的に、前記第2の複数のn個の秘密を第1の当事者に明かすことなく、第1の当事者は、第2の当事者によって生成された前記第2の複数のn個の秘密の暗号化されたバージョンの組み合わせを表わすデータを使用して、第1のトランザクションを検証することができる。この場合、第2の当事者は、前記第2の複数のn個の秘密の暗号化されたバージョンの組み合わせを表わすデータを生成することができ、前記第2の複数のn個の秘密の暗号化されたバージョンの組み合わせを表わすデータを含むメッセージを第1の当事者に送信することができる。
【0038】
追加的または代替的に、第1のトランザクションの検証は、
【数1】
の形の演算に関わることができる。ここで、
k
A
(1)、k
A
(2)、…k
A
(n)は前記第1の複数のn個の秘密であり;
k
B
(1)、k
B
(2)、…k
B
(n)は前記第2の複数のn個の秘密であり;
Gは楕円曲線上の点であり;
k
A
(1)G、k
A
(2)G、…k
A
(n)Gは前記第1の複数のn個の秘密の暗号化されたバージョンであり;
k
B
(1)G、k
B
(2)G、…k
B
(n)Gは前記第2の複数のn個の秘密の暗号化されたバージョンである。
【0039】
本発明によれば、プロセッサ、コンピュータ・メモリ、およびネットワーク・インターフェース装置を含む電子装置が提供されうる。メモリは、実行されると、本明細書に記載の方法を実行するようにプロセッサを構成するコンピュータ実行可能命令をその上に記憶している。
【0040】
本発明によれば、コンピュータ読取可能な記憶媒体が提供されうる。コンピュータ読取可能な記憶媒体は、実行されると、本明細書に記載の方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を含む。
【0041】
本発明のこれらおよび他の側面は、本明細書に記載した実施形態から明白であり、それを参照して解明されるであろう。ここで、本発明の実施形態を、単に例として、添付の図面を参照して説明する。
【図面の簡単な説明】
【0042】
【
図1A】例示的なブロックチェーン・ネットワークのブロック図を示す。
【
図1B】例示的なブロックチェーン台帳の概略図である。
【
図1C】ビットコイン・ブロックチェーン環境に特有のブロックチェーン・トランザクションの例を示す。
【
図2】第1の当事者と第2の当事者との間の通信を用いて、第2の当事者のデジタル資産を移転するためのブロックチェーン・トランザクションを、第2の当事者の振る舞いにランダム性を導入するような仕方で生成する例示的な方法の高レベルのフローチャートである。
【
図3A】3Bと併せて
図2の初期化フェーズの例示的な詳細を示すフローチャートである。
【
図3B】3Aと併せて
図2の初期化フェーズの例示的な詳細を示すフローチャートである。
【
図4A】4B、4Cと併せて、
図2のコミットメント・フェーズの例示的な詳細を示すフローチャートである。
【
図4B】4A、4Cと併せて、
図2のコミットメント・フェーズの例示的な詳細を示すフローチャートである。
【
図4C】4A、4Bと併せて、
図2のコミットメント・フェーズの例示的な詳細を示すフローチャートである。
【
図5】
図2の支払いフェーズの例示的な詳細を示すフローチャートである。
【
図6】
図2の払い戻しフェーズの例示的な詳細を示すフローチャートである。
【
図8】さまざまな実施形態を実装できるコンピューティング環境を示す。
【発明を実施するための形態】
【0043】
ブロックチェーン・ネットワーク
まず、ブロックチェーンに関連するブロックチェーン・ネットワーク100の例をブロック図の形で示す
図1Aを参照する。ブロックチェーン・ネットワーク100はピアツーピアのオープンメンバーシップ・ネットワークである公開ブロックチェーン・ネットワークであってもよく、誰でも、招待なしに、または他のメンバーからの同意なしに、参加することができる。ブロックチェーン・ネットワーク100が動作するもとになるブロックチェーン・プロトコルのインスタンスを実行する分散した諸電子装置は、ブロックチェーン・ネットワーク100に参加しうる。そのような分散した電子装置は、ノード102と称されてもよい。ブロックチェーン・プロトコルは、たとえば、ビットコイン・プロトコルであってもよい。
【0044】
ブロックチェーン・プロトコルを実行し、ブロックチェーン・ネットワーク100のノード102をなす電子装置は、たとえばコンピュータ、たとえばデスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバー、スマートフォンのようなモバイル・デバイス、スマートウォッチのようなウェアラブル・コンピュータ、または他の電子デバイスを含むさまざまな型のものでありうる。
【0045】
ブロックチェーン・ネットワーク100のノード102は、有線または無線通信技術を含みうる好適な通信技術を使用して互いに結合される。そのような通信は、ブロックチェーンに関連するプロトコルに従ってもよい。たとえば、ブロックチェーンがビットコイン・ブロックチェーンである場合は、ビットコイン・プロトコルが使われてもよい。
【0046】
ノード102は、
図1Bに示されるように、トランザクションのブロックの分散された台帳を維持する。分散式台帳1216はしばしば、ブロックチェーン台帳またはブロックチェーンと称される。プルーフオブワークによりセキュリティー保護されるブロックチェーン台帳の場合、ブロックチェーン台帳に影響を与えるノード102によるトランザクションは他のノード102によって検証され、それによりブロックチェーン台帳の有効性が維持される。ブロックチェーン台帳がプルーフオブワーク・ベースのブロックチェーンであるとき、ブロックは、ブロックとともに提出されたプルーフオブワーク〔作業証明〕を検査することによっても、検証される。
【0047】
ブロックチェーン台帳1216は、トランザクションのブロック(たとえば、ブロック1221、1222、1223)に対応するデータを含む。たとえば、ブロック1222は、トランザクション1230(1)~(4)を含む。ブロックチェーン台帳1216のブロックは、ブロック1223を除き、暗号学的に変更不能である。これは、ブロック上で計算される値にその後のブロックが依拠し、そのとき前記ブロックが変更不能になり、変更不能ブロックに対するいかなる修正も、他のブロックチェーン・ノードによって無効ブロックとして容易に認識できる、という意味においてである。ブロック1223は、開いた箱として図示されており、これは、可能性としては変更可能であり、まだブロックチェーン台帳1216にコミットされていないトランザクションの格納を表わす。ブロックチェーン・ネットワーク100の各ノード102は、ブロックチェーン台帳1216の完全なコピーまたは部分的なコピーを記憶していてもよい。いくつかのノード102は、未使用のトランザクションのみを維持することができ、他のノードは、ブロックチェーン台帳全体を維持することができる。このように、ブロックチェーン台帳は、各ノードが自分自身のコピーをもつことができるので、分散型台帳である。ブロックチェーン・ネットワーク100の各ノード102は、プロトコルの規則に従ってブロックチェーン台帳の自分のコピーを修正するように構成されることができ、それらの規則に完全に従うすべてのノードについて、それらのコピーは、時には、ブロックおよびトランザクションのためのいくらかの伝搬時間を除いて、他のノードと同じであるべきである。各ノード102はまた、受信するブロックとそれらのブロック内のトランザクションとを検証するように構成されることもできる。ブロックチェーン・プロトコルの規則は、ブロックチェーン・ノードは、ブロックまたはトランザクションが無効であると判断した場合、該ブロックまたはトランザクションを他のノードに伝搬させないというものであってもよい。このルールでは、有効であり、有効であることが検証されたブロックおよびトランザクションはブロックチェーン・ネットワークを伝搬するが、無効なブロックおよびトランザクションは伝搬しない。
【0048】
ブロックチェーン・ネットワーク100のノード102の少なくともいくつかは、ブロックチェーン・ネットワーク100の採掘者104として動作する。
図1Aのブロックチェーン・ネットワーク100がプルーフオブワーク式ブロックチェーンである場合、採掘者104は、ブロックチェーン台帳上に次のブロックを作成するために、高価な計算を実行する。たとえば、プルーフオブワーク式ブロックチェーンは、暗号学的問題を解くことを採掘者に要求することがある。ビットコインでは、採掘者104は、ブロック・ヘッダが、SHA-256を用いて、現在の難しさによって定義される値よりも小さい数にハッシュするようなナンスを見つける。プルーフオブワーク・アルゴリズムのために必要なハッシュ・パワーは、トランザクションの上に、ある数のブロックが採掘された後には、該トランザクションは実際上、不可逆であると考えられることを意味する。暗号学的問題を解く採掘者104は、ブロックチェーンのための新しいブロックを作成し、その新しいブロックを他のノード102にブロードキャストする。他のノード102は、採掘者104が実際に暗号学的問題を解き、よって、十分なプルーフオブワークを実証したことを検証し、その後、当該ブロックがブロックチェーンに追加されるべきであることを受け入れる。ブロックは、それらのノード102のコンセンサスによって分散ブロックチェーン台帳に追加される。
図1Aのブロックチェーン・ネットワーク100がプルーフオブステーク式ブロックチェーンである他の場合には、採掘者ら104は次のブロックを作成するために競争し、勝者は、それぞれの採掘者104が保持する富(すなわち、持分〔ステーク〕)に依存する決定論的(擬似ランダム)プロセスに従って選択される。
【0049】
採掘者104によって作成されたブロックは、諸ノード102によってブロックチェーンにブロードキャストされていたトランザクションを含む。たとえば、ブロックは、ノード102のうちの一つに関連付けられたアドレスからノード102のうちの別のものに関連付けられたアドレスへのトランザクションを含んでいてもよい。このようにして、ブロックはあるアドレスから別のアドレスへのトランザクションのレコードのはたらきをする。トランザクションがブロックに含められることを要求した当事者は、自分の公開鍵に対応する秘密鍵を使用して前記要求に署名することによって、自分がその移転(たとえば、ビットコインの場合は、そのビットコインを使うこと)を開始する権限を与えられていることを証明する。移転は、要求が有効に署名されている場合に限り、ブロックに追加されうる。
【0050】
ビットコインの場合、公開鍵とアドレスの間には1対1の対応がある。すなわち、各公開鍵は、単一のアドレスに関連付けられる。このように、本明細書において、ある公開鍵に/からデジタル資産を移転すること(たとえば、その公開鍵に支払うこと)と、その公開鍵に関連付けられたアドレスに/からデジタル資産を移転することとは、共通の操作を指す。
【0051】
ノード102のいくつかは、検証ノードとして参加してもよく、採掘者としても動作してもよい(あるいは、しなくてもよい)。検証ノードは、トランザクションの検証を実行する。これは、署名(単数または複数)を検査すること、有効なUTXOへの参照の確認することなどに関わることができる。
【0052】
図1Aの例は、6つのノード102を含み、そのうちの5つは採掘者104として参加している。実際には、ノード102または採掘者104の数は異なっていてもよい。多くのブロックチェーン・ネットワークにおいて、ノード102および採掘者104の数は、
図1Aに示されている数よりもはるかに多くてもよい。
【0053】
図1Cは、ビットコイン・ブロックチェーンに格納されうるトランザクション150の例を示す。同様の機能をもつ他の変形が可能である。トランザクションのデータ要素またはフィールドは、
図1Cに示されるようなものであってよく、本開示に記載されているもの以外の追加的なフィールドを含んでいてもよい。示されるように、ブロックチェーン・バージョン・フィールド152がある。これは、トランザクション150のブロックチェーン・プロトコル・バージョンを示す値を有する。#vinフィールド154は、トランザクション150に存在するトランザクション入力(のちに説明)の数を示す。他のフィールドが存在していてもよく、図示されていないが、各トランザクション入力(ここでは例示的なVin[y]160として示されている)について、前のトランザクションのトランザクションID(TxID)161、該前のトランザクション(トランザクション入力160にマッチするトランザクション出力を供給するトランザクション)の出力の1つに対するインデックス162を含む一組のフィールドがあり、ここで、TxID 161およびインデックス162は一緒になって、前記前のトランザクションの出力を参照するポインタ163をなす。本明細書中で使用されるところでは、カレントのまたは現在のトランザクションに関する文脈において使用されるときの「前のトランザクション」という用語は、カレントのまたは現在のトランザクションによって参照される(そして「消費される」)トランザクション出力を有する特定の以前のトランザクション(単数または複数)を指す。例では、カレントのまたは現在のトランザクションは「消費トランザクション」(spending transaction)と呼ばれることがある。
【0054】
いくつかのブロックチェーン実装では、一意的なTxID値を割り当てるための中央集中化された機構がなく、代わりに、トランザクション自体の内容のハッシュを生成することなどによって、トランザクションのための一意的なTxIDを生成するための分散化された機構がある。有効なトランザクションは、別の有効なトランザクションと全く同じ内容の全部をもつことはできないので、各有効なトランザクションはそのTxIDのために一意的なハッシュをもつ(天文学的に低いハッシュ衝突の確率を除いて)。どのように実装されようと、本稿では、各トランザクションが一意的なトランザクションIDをもつと想定される。ハッシュの性質のため、ひとたびトランザクションの内容からTxIDが生成されると、その内容の何も、変更して、かつTxIDをそのトランザクションについて有効のままとすることはできない。
【0055】
図1Cに示されるように、トランザクション入力Vin[y] 160のための一組のフィールドは、後続のロック解除スクリプトの長さを示すUnlocking_Script_Lengthフィールド164と、ポインタ163によってポイントされるトランザクション出力の対応するロック・スクリプトを「ロック解除」する該Vin[y] 160のためのロック解除スクリプト(ビットコイン・プロトコルでは一般に「scriptSig」と称される)を含むUnlocking_Scriptフィールド165と、トランザクション150を制約するために使用されうるシーケンス#フィールド166とを含む。
図1Cは、1つのトランザクション入力および1つのトランザクション出力を明示的に示しているだけだが、それぞれ二つ以上が可能である。トランザクション入力に続いて、トランザクション150にトランザクション出力(のちに説明)がいくつ存在するかを示す#voutフィールド170がある。各トランザクション出力(ここでは、例示的なVout[x] 180として示されている)について、このトランザクション出力Vout[x] 180によって提供されるトランザクション値(たとえば、ビットコインの数)を示す出力値フィールド181と、後続のロック・スクリプトの長さを示すLocking_Script_Lengthフィールド182と、このトランザクション出力Vout[x] 180についてのロック・スクリプト(ビットコイン・プロトコルでは一般に「scriptPubKey」と称される)を含むLocking_Scriptフィールド183とを含む一組のフィールドがある。説明したように、このトランザクション出力のトランザクション値は、あるロック解除スクリプトを有するトランザクション入力を有する消費トランザクションを作成できる誰によってでも「使用〔消費〕される」ことができる。該ロック解除スクリプトは、そのロック解除スクリプトとそのロック・スクリプトとを使って検証を実行するときにブロックチェーン・ノードがTRUEとして検証するものである。上記の諸トランザクション出力フィールドに、他のフィールドが続くことがある。たとえば、トランザクション150を指定された将来の時間より前または指定された将来のブロックより前にはアクティブでないように制約することができるロック時間フィールド190である。消費トランザクションの各トランザクション入力が前のトランザクション出力の対応するトランザクション出力をポイントし、該前のトランザクション出力がトランザクション値を含む場合、トランザクション入力は、そのトランザクション値を示すフィールドを含む必要はない。
【0056】
ここで
図2~
図6を参照すると、ブロックチェーン・トランザクションにおける「パターン形成」の問題に取り組む方法が示されている。これらの方法では、行為者(当事者A)が選択者(当事者B)を選択し、該選択者が、行為者のためにランダムかつ盲目的にオプションを選択するエージェントとしてはたらく。選択者の選択に関するバイアスを除去するために、このプロセスは、異なるトランザクション出力をロックするために使用される秘密の交換に基づく。選択者は、行為者が検証およびブロックチェーンへの格納のためにトランザクションを提出するまで、行為者についてどのオプションが選択されるかを知らない。一般に、これらの方法は、ユーザーがランダム選択を生成することを望み、単独でランダム選択を生成する代わりに、エージェントと協働してランダム選択を行なうすべての状況に適用可能でありうる。
図2に示されるように、これらの方法は、論理的に、初期化フェーズ201、コミットメント・フェーズ203(コミットメント・トランザクションに関わる)、支払いフェーズ205(支払いトランザクションに関わる)、および払い戻しフェーズ207(少なくとも1つの払い戻しトランザクションに関わる)を含む、4つのフェーズのシーケンスに分割できる。
【0057】
諸実施形態において、これらの本方法は、楕円曲線上の有限体算術演算を用いるデジタル暗号化およびデジタル署名を利用する。諸実施形態において、楕円曲線は、式y
2≡x
3+ax+b (mod p)によって記述される点の集合である。ここで、
【数2】
であり、pは素数である。有限体算術演算は、「点加算」演算と「点2倍」演算を含むことができる。「点加算」演算では、曲線の交点に負号を付けたものとして楕円曲線上の新しい点が計算される。これはR=P+Qとして記述できる。点2倍演算では、楕円曲線上の新しい点は点2つとして計算される。これはR=P+P=2Pとして記述できる。より具体的には、楕円曲線上で2つの点P(x
1,y
1)およびQ(x
2,y
2)が与えられると、P+Q=(x
3,y
3)であり、ここで、
【数3】
有限体算術演算はまた、
【数4】
によって記述される「点のスカラー倍」演算をも含むことができる。ここで、nは自然数であり、Pは楕円曲線上の点である。本開示の目的のためには(一般にではないが)、楕円曲線上の有限体算術演算を用いるデジタル暗号化およびデジタル署名の利用は、
E(m+n)=E(m)+E(n) Eqn.(2)
として与えられる秘密‐公開鍵関係の準同型性に起因することを注意しておく。ここで、E(x)は暗号化関数xG、xは秘密鍵、Gは楕円曲線の基底点、xGはxについての対応する公開鍵である。
【0058】
初期化フェーズ201は、
図3A~3Bの動作301~327を含む。コミットメント・フェーズ203は、
図4A~4Cの動作401~433を含む。支払いフェーズ205は、
図5の動作501~503を含む。払い戻しフェーズ207は、
図6の601の動作を含む。
【0059】
行為者(またはこの例では当事者B)のために実行される動作は、
図3A、3B、および
図4の左側に示され、選択者(またはこの例では当事者A)によってまたは選択者のために実行される動作は、
図3A、3B、および
図4の右側に示されていることを注意しておく。行為者(またはこの例では当事者B)のために実行される動作は、デジタル・ウォレットの一部として実装されることができる。デジタル・ウォレットは、本明細書に記載される機能を実行する際に、完全に自動的なまたは半自動的な仕方でプログラム制御の下に動作するように構成されることができる。選択者(またはこの例では当事者A)のために実行される動作は、エージェント・ノードによって実行されることができ、エージェント・ノードは、本明細書に記載される機能を実行する際に、完全に自動的なまたは半自動的な仕方でプログラム制御の下に動作するように構成されることができる。行為者(たとえば、行為者のデジタル・ウォレット)および選択者(たとえば、選択者のエージェント・ノード)は、可能性としてはブロックチェーン・ネットワーク100または他の好適なデータ通信ネットワークに関わることのできるネットワーク化されたデータ通信を介して、メッセージおよび他の形のデータを互いに通信することができると想定される。
【0060】
図3A~3Bは、初期化フェーズ201の例示的な詳細を示す。行為者(当事者B)と選択者(当事者A)は、楕円曲線と、楕円曲線上の基底点G、楕円曲線のための大きな素数位数n
C、および最大鍵サイズqを含む関連パラメータの集合とに合意すると想定される。たとえば、ビットコインで使用される標準化された楕円曲線(secp256k1)を選択できる。さらに、秘密鍵と公開鍵のペア(sk
Ub,sK
Ub)が行為者(当事者B)に属し、秘密鍵と公開鍵のペア(sk
Ua,sK
Ua)が選択者(当事者A)に属すると想定される。
【0061】
動作301では、行為者(当事者B)が、この方法のために使用するトランザクション出力オプションの数nを決定する。
【0062】
動作303では、行為者(当事者B)が、選択者(当事者A)への秘密メッセージを生成する。ここで、秘密メッセージは、数nを含む。秘密メッセージは、選択者(当事者A)の公開鍵sKUaを使用して暗号化できる。
【0063】
動作305では、行為者(当事者B)が、303の秘密メッセージを選択者(当事者A)に送信する。
【0064】
動作307では、選択者(当事者A)が303の秘密メッセージを受信する。
【0065】
動作309では、選択者(当事者A)が、307で受信した秘密メッセージに含まれる数nを復元する。選択者(当事者A)の公開鍵sKUaを使用して暗号化された秘密メッセージから数nを復元するために、選択者(当事者A)は、選択者(当事者A)の秘密鍵skuaを使用して秘密メッセージを解読することができる。
【0066】
動作311では、選択者(当事者A)が、n個のトランザクション出力オプションに対応するn個の秘密(kA
(1)、kA
(2)、…kA
(n))を生成する。諸実施形態において、n個の秘密(kA
(1)、kA
(2)、…kA
(n))は、区間[1,nc-1]内で選択できる。ここで、ncは、楕円曲線の大きな素数位数である。
【0067】
動作313では、選択者(当事者A)が、n個の秘密(kA
(1)、kA
(2)、…kA
(n))を、楕円曲線上の基底点Gを用いて楕円曲線暗号を使って暗号化し、n個の結果として得られるデータ点(kA
(1)G、kA
(2)G、…kA
(n)G)を得る。この動作において、結果として得られるn個のデータ点(kA
(1)G、kA
(2)G、…kA
(n)G)は、上記のような点スカラー倍から導出できる。ここで、秘密の値が、それぞれのデータ点を導出するために使われるスカラーである。
【0068】
動作315では、選択者(当事者A)が、行為者(当事者B)への秘密メッセージを生成する。ここで、秘密メッセージは、313のn個のデータ点(kA
(1)G、kA
(2)G、…kA
(n)G)を含む。秘密メッセージは、行為者(当事者B)の公開鍵sKUbを使用して暗号化できる。
【0069】
動作317では、選択者(当事者A)が、行為者(当事者B)に315の秘密メッセージを送信する。
【0070】
動作319では、行為者(当事者B)が、315の秘密メッセージを受け取る。
【0071】
動作321では、行為者(当事者B)は、315で受信した秘密メッセージに含まれるn個のデータ点(kA
(1)G、kA
(2)G、…kA
(n)G)を復元する。行為者(当事者B)の公開鍵sKUbを使用して暗号化された秘密メッセージに含まれるn個のデータ点(kA
(1)G、kA
(2)G、…kA
(n)G)を復元するために、行為者(当事者B)は、行為者(当事者B)の秘密鍵skUbを使って秘密メッセージを解読することができる。
【0072】
動作323では、行為者(当事者B)は、n個のトランザクション出力オプションに対応するn個の秘密(kB
(1)、kB
(2)、…kB
(n))を生成する。諸実施形態において、n個の秘密(kB
(1)、kB
(2)、…kB
(n))は区間[1,nc-1]内で選択できる。ここで、ncは楕円曲線の大きな素数位数である。323で行為者(当事者B)によって生成されたn個の秘密(kB
(1)、kB
(2)、…kB
(n))が、本方法のその後の動作において選択者(当事者A)に開示されないことを注意しておく。
【0073】
動作325では、行為者(当事者B)は、楕円曲線上の基底点Gを用いた楕円曲線暗号を使って、n個の秘密(kB
(1)、kB
(2)、…kB
(n))を暗号化して、n個の結果として得られるデータ点(kB
(1)G、kB
(2)G、…kB
(n)G)を得る。この演算では、結果として得られるn個のデータ点(kB
(1)G、kB
(2)G、…kB
(n)G)は、上述したように点スカラー倍から導出できる。ここで、秘密の値が、それぞれのデータ点を導出するために使用されるスカラーである。
【0074】
動作327では、行為者(当事者B)は、313のn個のデータ点(k
A
(1)G、k
A
(2)G、…k
A
(n)G)および325のn個のデータ点(k
B
(1)G、k
B
(2)G、…k
B
(n)G)の線形結合に基づいて、n個のトランザクション出力オプションのそれぞれについてn個の公開鍵ロック(s
1G,s
2G,…s
nG)を生成する。n個の公開鍵ロックのそれぞれは、行為者(当事者B)によって生成された暗号化された秘密を表わす1つのデータ点と、選択者(当事者A)によって生成された暗号化された秘密を表わす1つのデータ点とを加算することによって生成される。諸実施形態において、n個の公開鍵ロック(s
1G,s
2G,…s
nG)は、次のように導出できる。
【数5】
【0075】
各オプションについての最後の2つの項目について得られた等号は、群の準同型性に基づいていることを注意しておく。また、説明を簡略化するために、上述した実施形態は、各トランザクション出力オプションi(1~nに属する)についての公開鍵ロックをデータ点kA
(i)Gとデータ点kB
(i)Gとの線形結合に基づいて導出していることも注意しておく。行為者(当事者B)によって生成された、群から取られたデータ点と選択者(当事者A)によって生成された、群から取られたデータ点とのデータ点ペアの任意の組み合わせが、n個のトランザクション出力オプションについての公開鍵ロックを形成するために組み合わされることができることを注意しておく。異なるトランザクション出力においては2つの群からのデータ点の異なる組み合わせが使用され、どのデータ点も2回使用されなければよい。
【0076】
313のn個のデータ点(kA
(1)G、kA
(2)G、…kA
(n)G)と315のn個のデータ点(kB
(1)G、kB
(2)G、…kB
(n)G)との線形結合に基づいてn個のトランザクション出力オプションのそれぞれについてn個の公開鍵ロック(s1G,s2G,…snG)を生成し、323において行為者(当事者B)が生成した秘密kB
(1)、kB
(2)、…kB
(n)を選択者(当事者A)に開示しないことによって、選択者(当事者A)は、n個の公開鍵ロックのそれぞれを導出するために、311で選択者(当事者A)によって生成された秘密kA
(1)、kA
(2)、…kA
(n)のうちのどれが使用されたかを知ることはないことを注意しておく。さらに、選択者(当事者A)は、n個の公開鍵ロックを再構成したり、n個の公開鍵ロックのいずれかを解除するロック解除スクリプトを生成したりすることはできない。それは、行為者(当事者B)だけが、n個の公開鍵ロックのいずれかを解除するロック解除スクリプトを生成することを許容する。これについては後述する。
【0077】
327の後、初期化フェーズにおける行為者(当事者B)および選択者(当事者A)の動作は終了することができる。
【0078】
図4A~4Cは、コミットメント・フェーズ203の例示的な詳細を示す。
【0079】
動作401では、行為者(当事者B)が327のn個の公開鍵ロック(s1G、s2G、…snG)と行為者(当事者B)の公開鍵sKUbとを使用して、n個のトランザクション出力オプションについてのn個のロック・スクリプトを生成する。それぞれの所与のトランザクション出力オプションについてロック・スクリプトによって提供されるロック(拘束(encumbrance))は、ロック解除スクリプトによって解除されるように構成されることができる。ロック解除スクリプトは、i)n個の公開鍵ロックのうちの一つ(327のs1G、s2G、…snGのうちの一つ)に対応する署名(s1、s2、…sn)と、行為者(当事者B)の秘密鍵skubから導出される署名、またはii)行為者(当事者B)の秘密鍵skubから導出される署名のいずれかを提供する。
【0080】
諸実施形態において、n個のトランザクション出力オプションのそれぞれについてのn個のロック・スクリプトは、次のように、ビットコインのスクリプト言語のop_ifおよびop_elseオペコードを使用することができる:
【表1】
【0081】
上記ロック・スクリプトの第1の部分(IF)は、署名(s
1、s
2、…s
nのうちの一つ)と、行為者(当事者B)の秘密鍵sk
Ubから導出された署名とを要求する(2-of-2の)m-of-nマルチシグネチャー・スクリプトである。この場合についてのロック解除スクリプト(これは、後述する支払いトランザクションT
Pの一部)は、次のとおり。
【表2】
このロック解除スクリプトは、必要な署名――それぞれのトランザクション出力についての署名(s
1、s
2、…s
nのうちの一つ)と、行為者(当事者B)の秘密鍵sk
Ubから導出された署名――を提供するので、コミットメント・トランザクションT
Cのそれぞれのトランザクション出力のロック・スクリプトの最初のオプション(ケースi)をロック解除する。
【0082】
上記ロック・スクリプトの第2の部分(ELSE)は、公開鍵(この場合は、行為者の公開鍵sKUb)についての署名が必要とされる場合の標準的なロック解除スクリプトである。プロトコルが中断された場合(すなわち、選択者が秘密の値を行為者に送信しない場合)、将来の何らかの時点の後に、行為者が資金を取り戻せるように、ロック時間値T1が選ばれる必要がある。ロック時間パラメータは、オペコードOP_CHECKSEQUENCEVERIFYを使って定義される。OP_CHECKSEQUENCEVERIFYはBIP112で導入されたことを注意しておく。これは、消費される出力の年齢〔エイジ〕に基づいてスクリプトの実行経路が制約されることを許容する(https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki)。
【0083】
この場合についてのロック解除スクリプト(これは、後述する払い戻しトランザクションT
Rの一部)は、次のとおり。
【表3】
このロック解除スクリプトは、必要な署名――行為者(当事者B)の秘密鍵sk
ubから導出された署名――を提供するので、コミットメント・トランザクションT
Cのそれぞれのトランザクション出力のロック・スクリプトの第2のオプション(ケースii)をロック解除する。
【0084】
動作403では、行為者(当事者B)は、行為者(当事者B)の資金〔ファンド〕またはUTXOを指定する一つまたは複数のトランザクション入力と、n個のトランザクション出力とを含むコミットメント・トランザクションTCを構築する。各トランザクション出力は、出力値(一つまたは複数のトランザクション入力によって指定された行為者の資金の何らかの部分)を含み、401で生成されたn個のロック・スクリプトのうちの一つがトランザクション出力の出力値をロックするためのものである。コミットメント・トランザクションTCの一つまたは複数のトランザクション入力によって指定される行為者(当事者B)の資金は、コミットメント・トランザクションTCのn個のトランザクション出力の出力値をカバーするのに十分でなければならないことを注意しておく。
【0085】
動作405では、行為者(当事者B)は、コミットメント・トランザクションTCのトランザクション出力において指定された行為者の資金を、行為者の同じアドレス(または別のアドレス)に払い戻すための、少なくとも1つの払い戻しトランザクションTRを構築する。前記少なくとも1つの払い戻しトランザクションTRは、コミットメント・トランザクションTcのトランザクション出力をポイントするトランザクション入力を有する。ここで、各トランザクション入力はロック解除スクリプトを有し、ロック解除スクリプトは、コミットメント・トランザクションTCの対応するトランザクション出力オプションのためにロック・スクリプトによって提供されるロック(拘束)を解放するために、行為者(当事者B)の秘密鍵skUbから導出された署名を提供する。この署名は、コミットメント・トランザクションTCの対応するトランザクション出力オプションのロック・スクリプトのケースii)を満たす。前記少なくとも1つの払い戻しトランザクションTRは、一つまたは複数のトランザクション出力をも含むことができる。該トランザクション出力は、コミットメント・トランザクションTCの一つまたは複数のトランザクション出力において指定された行為者(当事者B)の資金を、行為者の同じアドレス(または別のアドレス)に移転する、出力値およびロック・スクリプトを有する。
【0086】
諸実施形態において、払い戻しトランザクションTRのために行為者(当事者B)の秘密鍵skUbから導出された署名は、次のように楕円曲線暗号を使って生成できる。払い戻しトランザクションTRの諸部分がハッシュされてメッセージmを形成し、ランダムな数kが選ばれる。ここで、0<k<qである。署名は、次のような2つの部分(R,S)で生成できる:
R=k×G Eqn.(4a)
S=k-1(m+xr) mod nc Eqn.(4b)
ここで、xは行為者の秘密鍵skUbであり、
k-1はmod ncでのkの乗法の逆元であり、k-1k≡1 mod ncである。
【0087】
諸実施形態において、行為者(当事者B)は、コミットメント・トランザクションTcのn個の異なるトランザクション出力をポイントするn個のトランザクション入力をもつ単一の払い戻しトランザクションTRを構築することができる。この場合、単一の払い戻しトランザクションTRのためのトランザクション出力(単数または複数)の出力値(単数または複数)は、コミットメント・トランザクションTcのn個の異なるトランザクション出力で指定された行為者の総資金を超えることはできない。
【0088】
他の実施形態では、行為者(当事者B)は、コミットメント・トランザクションTcのn個の異なるトランザクション出力をポイントするそれぞれのトランザクション入力をもつn個の払い戻しトランザクションTRを構築することができる。この場合、n個の払い戻しトランザクションTRについてのトランザクション出力(単数または複数)の出力値(単数または複数)は、コミットメント・トランザクションTcのn個の異なるトランザクション出力で指定された行為者の総資金を超えることはできない。
【0089】
動作407では、行為者(当事者B)は、検証および採掘のために、ブロックチェーン・ネットワーク100上でコミットメント・トランザクションTC 403をブロードキャストする。ひとたび検証されて成功裏に採掘されると、コミットメント・トランザクションTCは、ブロックチェーン・ネットワーク100によって維持される分散ブロックチェーン台帳のブロックの一部として記憶される。
【0090】
諸実施形態において、楕円曲線暗号に基づくコミットメント・トランザクションTCの検証は、コミットメント・トランザクションTCの諸部分をハッシュしてメッセージmを形成することに関わることができる。行為者(当事者B)の公開鍵sKUbと2部分の署名(R,S)は、コミットメント・トランザクションTCとともに提供される。2部署名(R,S)は次のように検証できる:
・v=S-1m×G+S-1R×yを計算
ここで、S-1はmod qでのSの乗法の逆元であり、よってS-1S≡1 mod ncであり、
yは行為者の公開鍵sKUbである。
・v==Rである場合かつその場合にのみ、2部署名(R,S)が有効であることを判別する。
【0091】
コミットメント・トランザクションTCは、2部署名(R,S)が有効であると判定された場合にかつその場合にのみ、検証されることができる。楕円曲線は素数位数をもつので、楕円曲線点に基底点Gを乗算すると、mod部分はなくなることを注意しておく。
【0092】
動作409では、行為者(当事者B)が、325のn個のデータ点(kB
(1)G、kB
(2)G、…kB
(n)G)を組み合わせて、結果として得られるデータ点をsBG=kB
(1)G+kB
(2)G+…+kB
(n)Gのように導出する。この動作において、データ点sBGは、325のn個のデータ点に関わる一連の点加算演算から導出できる。
【0093】
動作411では、行為者(当事者B)が、409のデータ点sBGを含む、選択者(当事者A)への秘密メッセージを生成する。秘密メッセージは、選択者(当事者A)の公開鍵sKUaを用いて、暗号化された形であってもよい。
【0094】
動作413では、行為者(当事者B)が、411の秘密メッセージを選択者(当事者A)に送信する。
【0095】
動作415では、選択者(当事者A)が、409のデータ点sBGを含む秘密メッセージを受信する。
【0096】
動作417では、選択者(当事者A)が、409のデータ点sBGを復元し、データ点sBGを使用して、コミットメント・トランザクションTCの正しさを検証する。選択者(当事者A)の公開鍵sKUaを使用して暗号化された秘密メッセージからデータ点sBGを復元するために、選択者(当事者A)は、選択者(当事者A)の秘密鍵skUaを使用して秘密メッセージを解読することができる。
【0097】
諸実施形態において、417の検証は、和s
BG+s
AGが、(k
A
(1)+k
B
(1))G+(k
A
(2)+k
B
(2))G+…+(k
A
(n)+k
B
(n))Gに等しいかどうかを判定することに関わる。その場合、s
AGは、313のn個のデータ点k
A
(1)G、k
A
(2)G、…k
A
(n)Gから、s
AG=k
A
(1)G+k
A
(2)G+…+k
A
(n)Gとして決定できる。楕円曲線を用いた暗号化方式の同型性のため、この検証動作は
【数6】
と表わすことができる。
【0098】
選択者(当事者A)は、式(5)の右辺のためのデータ点を、コミットメント・トランザクションTcのn個のトランザクション出力オプションのロック・スクリプトから取得し、次いで、これらのデータ点を式(5)の右辺に与えられるように一緒に組み合わせることができる。そのような検証は、行為者(当事者B)がプロトコルに準拠し、コミットメント・トランザクションTCのn個のトランザクション出力オプションについての対応するn個のロック・スクリプトの一部であるn個の公開鍵ロック(s1G、s2G、…snG)を生成したことを保証することができる。ここでn個の公開鍵ロック(s1G、s2G、…snG)は、325のn個のデータ点(kA
(1)G、kA
(2)G、…kA
(n)G)とn個のデータ点(kB
(1)G、kB
(2)G、…kB
(n)G)の許容される線形結合に基づく。
【0099】
動作419では、選択者(当事者A)が、417の決定の結果を評価し、コミットメント・トランザクションTCが検証されるか否かをみきわめる。そうであれば、動作は後述する421~433に続き、そうでなければ421~433の動作はバイパスされる。
【0100】
動作421では、選択者(当事者A)が、311で選択者(当事者A)によって生成された秘密のうちの一つ(kA
(1)、kA
(2)、…kA
(n)のうちの1つ)をランダムに選択する。
【0101】
動作423では、選択者(当事者A)は、行為者(当事者B)への秘密メッセージを生成する。該秘密メッセージは、421においてランダムに選択された秘密(kA
(1)、kA
(2)、…kA
(n)のうちの1つ)を含む。秘密メッセージは、行為者(当事者B)の公開鍵sKUbを使用して暗号化することができる。
【0102】
動作425では、選択者(当事者A)は、行為者(当事者B)に秘密メッセージを送信する。該秘密メッセージは、421でランダムに選択された秘密(kA
(1)、kA
(2)、…kA
(n)のうちの1つ)を含む。そして、コミットメント・フェーズにおける選択者(当事者A)の動作は終了する。
【0103】
動作427において、行為者(当事者B)は、選択者(当事者A)から(421でランダムに選択された秘密(k
A
(1)、k
A
(2)、…k
A
(n)のうちの1つ)を含む)秘密メッセージを受信し、該秘密メッセージが、コミットメント・トランザクションT
Cのロック時間期間の期限内に受信されたかどうかを判定する。もしそうでなければ、行為者(当事者B)の動作は、図示のように、払い戻しフェーズ(
図6)に続く。もしそうであれば、動作は429に続く。行為者(当事者B)の公開鍵sK
Ubを使用して暗号化された秘密メッセージに含まれる秘密を復元するために、行為者(当事者B)は、行為者(当事者B)の秘密鍵sk
Ubを使用して秘密メッセージを解読することができる。
【0104】
動作429では、行為者(当事者B)は、選択者(当事者A)から受信した秘密メッセージに含まれる秘密(k
A
(1)、k
A
(2)、…k
A
(n)のうちの1つ)が、401でコミットメント・トランザクションT
Cのn個のトランザクション出力の公開鍵ロックを構築するために使用された321のデータ点のうちのいずれかと一致するかどうかを判定する。そのような動作は、楕円曲線上の基底点Gを用いて楕円曲線暗号を使って秘密(k
A
(1)、k
A
(2)、…k
A
(n)のうちの1つ)を暗号化して結果データ点を得て(これは上記の動作313と同様)、該結果データ点が、319で選択者(当事者A)から受信され、321で行為者(当事者B)によって復元されたデータ点のいずれかと一致するかどうかを判定することをさらに含むことができる。この判定が失敗の場合、行為者(当事者B)の動作は、図示のように払い戻しフェーズ(
図6)に続くことができる。この決定が成功すると、動作は431と433に続く。
【0105】
動作431では、行為者(当事者B)は、選択者(当事者A)から受信した秘密メッセージに含まれる秘密(kA
(1)、kA
(2)、…kA
(n)のうちの1つ)と、429で決定された321の特定のデータ点との間の一致する対応を利用して、コミットメント・トランザクションTcの特定のトランザクション出力を同定するインデックスを導出する。該特定のトランザクションは、その公開鍵ロックが、受信されたメッセージに含まれる秘密(kA
(1)、kA
(2)、…kA
(n)のうちの1つ)から導出されたものである。たとえば、kA
(2)が秘密メッセージに含まれるランダムに選択された秘密であり、kA
(2)が、式3(b)の例に示されるようなコミットメント・トランザクションTcのトランザクション出力2の公開鍵ロックs2Gを構築するために使用された場合、431で導出されたインデックスは、コミットメント・トランザクションTcのトランザクション出力2を指す。
【0106】
動作433では、行為者(当事者B)は、受信したメッセージに含まれる秘密(k
A
(1)、k
A
(2)、…k
A
(n)のうちの1つ)と、323で行為者(当事者B)によって生成され、431のインデックスによって同定される特定のトランザクション出力についての公開鍵ロックを導出するために使用される秘密(k
B
(1)、k
B
(2)、…k
B
(n)のうちの1つ)とを加算することによって秘密鍵を導出する。そして、行為者(当事者B)の動作は、図のように支払いフェーズ(
図5)に進む。
【0107】
選択者(当事者A)によって選択されるランダムな秘密は、後述するように、支払いトランザクションのための433における秘密鍵の構築における行為者の振る舞いに影響するが、選択者(当事者A)はこのランダムな秘密選択の影響を知らないことを注意しておく。この影響は、支払いトランザクションが行為者(当事者B)によってブロックチェーン上で提出された後にのみ、発見できる。このセットアップは、コミットメント・トランザクションのn個のトランザクション出力オプションの間の選択が完全にランダムであり、偏りがないことを保証する。また、選択者(当事者A)が、行為者の秘密の和(たとえばsBG=kB
(1)G+kB
(2)G+…+kB
(n)G)に関する追加情報へのアクセスをもつにもかかわらず、選択者(当事者A)は、どの秘密が、コミットメント・トランザクションTCのn個のトランザクション出力オプションのうちどれをロック解除するかを推測することができないことも注意しておく。さらに、選択者(当事者A)は、行為者の秘密kB
(1)、kB
(2)、…kB
(n)を知らないので、選択者(当事者A)は、支払いフェーズの支払いトランザクションTPを提出することにより、行為者から資金を盗むことができない。なぜなら、支払いトランザクションTPは、行為者の必須の署名(s1、s2、…snのうちの1つから導出される)を必要とし、選択者はそれを再現できないからである。
【0108】
図5は、支払いフェーズ205の例示的な詳細を示す。
図5の動作から明らかなように、選択者(当事者A)は支払いフェーズ205に参加する必要はない。支払いフェーズ205における行為者(当事者A)の動作は、行為者(当事者B)が選択者(当事者A)から秘密メッセージを受信することに応答して実行されることを注意しておく。該秘密メッセージは、コミットメント・トランザクションT
Cのロック時間期間の期限内に、選択者(当事者A)によって生成された秘密のうちの1つ(k
A
(1)、k
A
(2)、…k
A
(n)のうちの1つ)であって、コミットメント・トランザクションT
Cのn個のトランザクション出力オプションのうちのランダムに選択されたものに対応するものを含む。
【0109】
動作501では、行為者(当事者B)が、431で決定されたインデックスに対応する、コミットメント・トランザクションTcの特定のトランザクション出力をポイントするトランザクション入力を含む支払いトランザクションTPを構築する。トランザクション入力はまた、433の秘密鍵に基づく署名と行為者(当事者B)の秘密鍵skUbに基づく署名とを提供するロック解除スクリプトをも含む。これは、トランザクション入力によってポイントされるコミットメント・トランザクションTcの特定のトランザクション出力のロック・スクリプトによって提供されるロック(拘束)を解除する。この署名は、コミットメント・トランザクションTCの対応するトランザクション出力オプションのロック・スクリプトのケースi)を満たす。支払いトランザクションTPはまた、一つまたは複数のトランザクション出力をも含み、該トランザクション出力は、出力値と、コミットメント・トランザクションTcの特定のトランザクション出力で指定された行為者の資金の何らかの部分または全部を受領者(これは、行為者の別のアドレスまたは他の何らかの受領者でもよい)に移転するロック・スクリプトとを含む。
【0110】
諸実施形態において、433の秘密鍵に基づく署名と、支払いトランザクションTPについての行為者(当事者B)の秘密鍵skUbから導出された署名が、次のように、楕円曲線暗号を使って生成できる。支払いトランザクションTPの諸部分がハッシュされてメッセージmを形成し、ランダムな数kが選択される。ここで、0<k<qである。433の秘密鍵に基づく署名は、次のように2つの部分(R1、S1)をもって生成できる:
R1=k×G Eqn.(6a)
S1=k-1(m+x1R1) mod nc Eqn.(6b)
ここで、x1は433の秘密鍵であり、
k-1はmod ncでのkの乗法の逆元であり、k-1k≡1 mod ncである。
【0111】
行為者(当事者B)の秘密鍵skUbから導出される署名は、次のように2つの部分(R2、S2)をもって生成できる。
【0112】
R2=k×G Eqn.(7a)
S2=k-1(m+x2R2) mod nc Eqn.(7b)
ここで、x2は行為者の秘密鍵skUbであり、
k-1はmod ncでのkの乗法の逆元であり、k-1k≡1 mod ncである。
【0113】
動作503では、行為者(当事者B)は、検証および採掘のために、ブロックチェーン・ネットワーク100上で支払いトランザクションTPをブロードキャストする。ひとたび検証されて成功裏に採掘されると、支払いトランザクションTPは、ブロックチェーン・ネットワーク100によって維持される分散ブロックチェーン台帳のブロックの一部として記憶される。支払いトランザクションTPをブロードキャストした後、支払いフェーズ205における行為者(当事者B)の動作は終了する。
【0114】
諸実施形態において、楕円曲線暗号に基づく支払いトランザクションTPの検証は、支払いトランザクションTPの諸部分をハッシュして、メッセージmを形成することに関わることができる。コミットメント・トランザクションTCのトランザクション出力オプションの公開鍵ロック、行為者(当事者B)の公開鍵sKUbおよび2部署名(R1,S1)、(R2,S2)が、支払いトランザクションTPとともに提供される。433の秘密鍵に基づく2部署名(R1,S1)は次のように検証できる:
・v1=S1-1m×G+S1-1R1×y1を計算
ここで、S1-1S1≡1 mod ncであり、
y1はコミットメント・トランザクションTCのトランザクション出力オプションの公開鍵ロックである。
・v1==R1である場合かつその場合にのみ、2部署名(R1,S1)が有効であることを判別する。
【0115】
行為者の秘密鍵skUbに基づく2部署名(R2,S2)は次のように検証できる:
・v2=S2-1m×G+S2-1R2×y2を計算
ここで、S2-1はmod qでのS2の乗法の逆元であり、よってS2-1S2≡1 mod ncであり、
y2は行為者の公開鍵sKUbである。
・v2==R2である場合かつその場合にのみ、2部署名(R2,S2)が有効であることを判別する。
【0116】
支払いトランザクションは、2部署名(R1,S1)と(R2,S2)の両方が有効であると判定された場合かつその場合にのみ検証されることができる。どちらの場合も楕円曲線は素数位数をもつので、楕円曲線点に基底点Gを乗算されると、mod部分は消えることを注意しておく。
【0117】
行為者(当事者B)は、必ずしも支払いトランザクションTPの資金の受領者であるとは限らないことを注意しておく。すなわち、行為者は、資金を自分のアドレスの1つから、自分が秘密鍵を所有する新しいアドレスへと移そうとしているわけではない。この場合、資金は、受領者の署名と、選択者によって提供された秘密とを用いてロック解除できる。
【0118】
図6は、払い戻しフェーズ207の例示的な詳細を示す。
図6の動作から明らかなように、選択者(当事者A)は払い戻しフェーズ207に参加する必要はない。払い戻しフェーズ207における行為者(当事者A)の動作は、支払いフェーズの後、i)行為者(当事者B)が、コミットメント・トランザクションT
Cのロック時間期間の期限内にランダムな秘密(k
A
(1)、k
A
(2)、…k
A
(n)のうちの1つ)を含む秘密メッセージを選択者(当事者A)から受信しないこと、またはii)受信メッセージに含まれるランダムに選択された秘密が、401におけるコミットメント・トランザクションT
Cのn個のトランザクション出力の公開鍵ロックを構築するために使用されたデータ点のいずれにも一致しないこと、のいずれかに応答して、実行できることを注意しておく。
【0119】
動作601では、行為者(当事者B)は、検証および採掘のために、ブロックチェーン・ネットワーク100上で405で構築された前記少なくとも1つの払い戻しトランザクションTRをブロードキャストする。ひとたび検証されて成功裏に採掘されると、前記少なくとも1つの払い戻しトランザクションTRは、ブロックチェーン・ネットワーク100によって維持される分散ブロックチェーン台帳のブロックの一部として記憶される。前記少なくとも1つの払い戻しトランザクションTRをブロードキャストした後、払い戻しフェーズ207における行為者(当事者B)の動作は終了する。
【0120】
諸実施形態において、楕円曲線暗号に基づく払い戻しトランザクションTRの検証は、払い戻しトランザクションTRの諸部分をハッシュしてメッセージmを形成することに関わることができる。行為者(当事者B)の公開鍵sKUbと、行為者の秘密鍵skUbから導出された2部署名(R,S)は、払い戻し処理TRとともに提供される。2部署名(R,S)は次のように検証できる:
・v=S-1m×G+S-1R×yを計算
ここで、S-1はmod qでのSの乗法の逆元であり、よってS-1S≡1 mod ncであり、
yは行為者の公開鍵sKUbである。
・v==Rである場合かつその場合にのみ、2部署名(R,S)が有効であることを判別する。
【0121】
払い戻しトランザクションTRは、署名(R,S)が有効であると判定された場合かつその場合にのみ検証されることができる。楕円曲線は素数位数をもつので、楕円曲線点が基底点Gを乗算されると、mod部分は消えることを注意しておく。
【0122】
【0123】
上述の例は、行為者と選択者との間の情報の通信のために秘密メッセージを使用することを注意しておく。これらの秘密メッセージは、暗号文メッセージを作成するために標準的な暗号化技法を使うことができる。これは、どのようなタイプの暗号化解決策(たとえば、楕円曲線、RSAなど)でもできる。本質的に、メッセージは、受領者に属する公開鍵を用いて(任意の暗号化方式を使って)暗号化されることができ、その後、暗号化メッセージが受領者に送信される。次いで、受領者は、受領者に属する秘密鍵を使って、暗号文メッセージを解読してもよい。受領者は受領者に属する秘密鍵を使って暗号文で表現される情報を判別/解読できるので、暗号化は、メッセージに含まれる情報を第三者から隠すためだけに行なわれることを注意しておく。
【0124】
代替的な実施形態では、行為者と選択者との間で情報を通信する一つまたは複数のメッセージは、暗号文を作成するための暗号化技法に関わることなく、生データをオープンに通信することができる。そのような暗号化されない通信は、メッセージに含まれる生データのオープンな通信から生じるセキュリティー・リスクがない場合に好適である。
【0125】
さらに、上述の例は、ある種のプルーフオブワーク式ブロックチェーン・ネットワーク(たとえば、ビットコイン・ブロックチェーン・ネットワーク)に言及しているが、本明細書に記載の方法は、他のタイプのプルーフオブワーク式ブロックチェーン・ネットワークおよび可能性としては他のプルーフオブステーク式ブロックチェーン・ネットワークと一緒に使用されてもよい。
【0126】
図8は、本開示の少なくとも1つの実施形態を実施するために使用されうる、コンピューティング装置2600の例示的な簡略化されたブロック図である。さまざまな実施形態では、コンピューティング装置2600は、上述の方法およびシステムのいずれかを実装するために使用されてもよい。たとえば、コンピューティング装置2600は、データサーバー、ウェブサーバー、ポータブルコンピューティング装置、パーソナルコンピュータ、または任意の電子コンピューティング装置として使用するために構成されてもよい。
図8に示されるように、コンピューティング装置2600は、バス・サブシステム2604を介していくつかの周辺サブシステムと通信するように構成されてもよく、動作可能に結合される、一つまたは複数のプロセッサ2602を含んでいてもよい。プロセッサ2602は、本明細書に記載される消費トランザクションの有効確認の一部として、ロック解除スクリプトおよびロック・スクリプトの処理のために利用されてもよい。これらの周辺サブシステムは、メモリ・サブシステム2608およびファイル/ディスク記憶サブシステム2610を含む記憶サブシステム2606、一つまたは複数のユーザー・インターフェース入力装置2612、一つまたは複数のユーザー・インターフェース出力装置2614、およびネットワーク・インターフェース・サブシステム2616を含んでいてもよい。そのような記憶サブシステム2606は、本開示に記載されるトランザクションに関連する詳細などの情報の、一時的なまたは長期的な記憶のために使用されてもよい。
【0127】
バス・サブシステム2604は、コンピュータ装置2600のさまざまなコンポーネントおよびサブシステムが、意図されるように相互に通信することを可能にする機構を提供してもよい。バス・サブシステム2604は、単一のバスとして概略的に示されているが、バス・サブシステムの代替実施形態は、複数のバスを利用してもよい。ネットワーク・インターフェース・サブシステム2616は、他のコンピューティング装置およびネットワークへのインターフェースを提供してもよい。ネットワーク・インターフェース・サブシステム2616は、コンピューティング装置2600以外の他のシステムからデータを受信し、他のシステムにデータを送信するためのインターフェースとして機能してもよい。たとえば、ネットワーク・インターフェース・サブシステム2616は、データ技術者がユーザー・データ・センターのような遠隔位置にいる間にデータを送受信できうるように、データ技術者が装置を無線ネットワークに接続することを可能にしてもよい。バス・サブシステム2604は、詳細、検索語などのデータを、本開示の監督されるモデルに通信するために利用されてもよく、監督されるモデルの出力を、前記一つまたは複数のプロセッサ2602に通信し、ネットワーク・インターフェース・サブシステム2616を介して商人および/または債権者に通信するために利用されてもよい。
【0128】
ユーザー・インターフェース入力装置2612は、キーボードのような一つまたは複数のユーザー入力装置;統合されたマウス、トラックボール、タッチパッド、またはグラフィックスタブレットのようなポインティングデバイス;スキャナ;バーコードスキャナ;ディスプレイに組み込まれたタッチスクリーン;音声認識システム、マイクロフォンのような音声入力装置;および他のタイプの入力装置を含んでいてもよい。一般に、「入力装置」という用語の使用は、コンピューティング装置2600に情報を入力するためのあらゆる可能なタイプの装置および機構を含むことが意図されている。前記一つまたは複数のユーザー・インターフェース出力装置2614は、表示サブシステム、プリンタ、またはオーディオ出力装置などの非視覚的ディスプレイを含んでいてもよい。表示サブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、またはプロジェクションもしくは他の表示装置などのフラットパネル装置であってもよい。一般に、「出力装置」という用語の使用は、コンピューティング装置2600から情報を出力するためのあらゆる可能なタイプの装置および機構を含むことが意図されている。前記一つまたは複数のユーザー・インターフェース出力装置2614は、たとえば、記載されるプロセスおよびその中の変形を実行するアプリケーションとのユーザー対話を(かかる対話が適切でありうるときに)容易にするためのユーザー・インターフェースを提示するために使用されてもよい。
【0129】
記憶サブシステム2606は、本開示の少なくとも1つの実施形態の機能を提供しうる基本プログラミングおよびデータ構成体を記憶するためのコンピュータ読取可能な記憶媒体を提供してもよい。アプリケーション(プログラム、コードモジュール、命令)は、一つまたは複数のプロセッサによって実行されるときに、本開示の一つまたは複数の実施形態の機能を提供することができ、記憶サブシステム2606に記憶されてもよい。これらのアプリケーションモジュールまたは命令は、一つまたは複数のプロセッサ2602によって実行されてもよい。記憶サブシステム2606は、本開示に従って使用されるデータを記憶するためのリポジトリを追加的に提供してもよい。記憶サブシステム2606は、メモリ・サブシステム2608およびファイル/ディスク記憶サブシステム2610を含んでいてもよい。メモリ・サブシステム2608は、プログラム実行中に命令およびデータを記憶するためのメイン・ランダム・アクセス・メモリ(RAM)2618と、固定された命令が記憶されうるリード・オンリー・メモリ(ROM)2620とを含む、いくつかのメモリを含んでいてもよい。ファイル/ディスク記憶サブシステム2610は、プログラムファイルおよびデータファイルのための非一時的な永続的(不揮発性)記憶を提供してもよく、ハードディスクドライブ、関連するリムーバブル媒体と一緒のフロッピーディスクドライブ、コンパクトディスクリードオンリーメモリ(CD-ROM)ドライブ、光学式ドライブ、リムーバブル媒体カートリッジ、および他の同様の記憶媒体を含んでいてもよい。
【0130】
コンピューティング装置2600は、少なくとも1つのローカルクロック2624を含んでいてもよい。ローカルクロック2624は、特定の開始日から発生したティックの数を表すカウンタであってもよく、コンピューティング装置2600内に一体的に位置されてもよい。ローカルクロック2624は、特定のクロックパルスにおいて、コンピューティング装置2600およびそこに含まれるサブシステムすべてのためのプロセッサ内のデータ転送を同期させるために使用されてもよく、データセンター内のコンピューティング装置2600と他のシステムとの間の同期動作を調整するために使用されてもよい。ある実施形態では、ローカルクロック2624は、原子時計である。別の実施形態では、ローカルクロックは、プログラム可能なインターバルタイマーである。
【0131】
コンピューティング装置2600は、ポータブルコンピュータ装置、タブレット・コンピュータ、ワークステーション、または以下に記載される任意の他の装置を含む、さまざまなタイプのものでありうる。加えて、コンピューティング装置2600は、一つまたは複数のポート(たとえば、USB、ヘッドフォンジャック、Lightningコネクタなど)を通じてコンピューティング装置2600に接続されうる別の装置を含んでいてもよい。コンピューティング装置2600に接続されうる装置は、光ファイバーコネクタを受け入れるように構成される複数のポートを含んでいてもよい。よって、この装置は、光信号を電気信号に変換するように構成されてもよく、該電気信号が、処理のために、装置をコンピューティング装置2600に接続するポートを通じて送信されうる。コンピュータおよびネットワークの絶えず変化する性質のため、
図8に示されるコンピューティング装置2600の記述は、装置の好ましい実施形態を例解する目的のための個別的な例としてのみ意図される。
図8に示すシステムよりも多数または少数のコンポーネントを有する他の多くの構成が可能である。
【0132】
よって、本明細書および図面は、制約する意味ではなく例示的な意味に見なされるべきである。しかしながら、特許請求の範囲に記載される本発明の範囲から逸脱することなく、それにさまざまな修正および変更がなしうることは明らかであろう。同様に、他の変形も本開示の範囲内である。よって、開示される技法には、さまざまな修正および代替構成がありうるが、それらのある種の例示された実施形態が図面に示され、上記で詳細に説明された。しかしながら、本発明を開示された特定の形(単数または複数)に限定する意図はなく、逆に、添付の特許請求の範囲に定義される本発明の範囲内にはいるすべての修正、代替的な構成および均等物をカバーすることが意図されていることは理解されるべきである。
【0133】
開示される実施形態を記述する文脈における(特に、添付の特許請求の範囲の文脈における)「a」および「an」および「the」という用語および類似の指示詞の使用は、そうでなきことが示されるか、明らかに文脈と矛盾するのでない限り、単数および複数の両方をカバーすると解釈される。「有する」「もつ」「含む」「包含する」という用語は、別段の指示がない限り、オープンエンドの用語として解釈される(すなわち、「…を含むがそれに限定されない」を意味する)。「接続される」という用語は、修飾されず、物理的な接続を指している場合、介在する何かがあったとしても、部分的または全体的に、中に含まれる、取り付けられる、または一緒に連結されているものと解釈される。本開示における値の範囲の記載は、特に指示がない限り、範囲内にはいるそれぞれの別個の値を個々に指す略記法のはたらきをすることが意図されているだけであり、一つ一つの別個の値が、あたかも個々に記載されているかのように、明細書に組み込まれる。用語「集合/セット/組」(たとえば「項目の集合/項目のセット/一組の項目」)または「部分集合/サブセット」の使用は、そうでないことが記されるか、文脈と矛盾するのでない限り、一つまたは複数の要素を含む空でない集まりとして解釈される。さらに、そうでないことが記されるか、文脈と矛盾するのでない限り、対応する集合の「部分集合」は、必ずしも対応する集合の真部分集合を表わすのではなく、部分集合と対応する集合が等しいこともある。
【0134】
「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つがそれぞれ存在することを要求することを含意することは意図されない。
【0135】
記載されるプロセスの動作は、特に指示されない限り、または明らかに文脈と矛盾しない限り、任意の好適な順序で実行できる。記載されるプロセス(またはその変形および/または組み合わせ)は、実行可能な命令をもって構成される一つまたは複数のコンピュータ・システムの制御下で実行されてもよく、一つまたは複数のプロセッサ上で集団的に実行されるコード(たとえば、実行可能な命令、一つまたは複数のコンピュータプログラムまたは一つまたは複数のアプリケーション)、ハードウェアによって、またはそれらの組み合わせよって、実装されうる。コードは、たとえば、一つまたは複数のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形で、コンピュータ読取可能な記憶媒体上に記憶されてもよい。コンピュータ読取可能な記憶媒体は、非一時的であってもよい。
【0136】
提供されるあらゆる例または例示的表現(たとえば、「のような」)の使用は、単に本発明の実施形態をよりよく例解するために意図されており、他に請求項に記載されない限り、本発明の範囲に対する限定を課すものではない。本明細書中の言葉使いは、請求項に記載のない何らかの要素が本発明の実施に不可欠であることを示していると解釈されるべきではない。
【0137】
本発明を実施するために発明者に知られている最良の形態を含め、本開示の実施形態が記載されている。それらの実施形態の変形は、前述の説明を読むことで、当業者に明白となりうる。本発明者らは、当業者がそのような変形を適宜採用することを期待しており、本発明者らは、本開示の実施形態が、具体的に記載される以外の仕方で実施されることを意図している。よって、本開示の範囲は、適用法によって許される限り、本明細書に添付された特許請求の範囲に記載された主題のすべての修正および等価物を含む。さらに、そうでないことが示されるか、または明らかに文脈と矛盾するのでない限り、あらゆる可能な変形での上述の要素の任意の組み合わせが、本開示の範囲に包含される。
【0138】
刊行物、特許出願、および特許を含む、引用されているすべての参考文献は、各参考文献が個別にかつ具体的に参照によって組み込まれることが示され、その全体において記載されているとした場合と同じ程度に、本明細書に組み込まれる。
【0139】
上述の実施形態は、本発明を限定するのではなく、本発明を例示するものであり、当業者は、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、多くの代替的な実施形態を設計することができることを注意しておくべきである。請求項において、括弧内に付した引用符号は、請求項を限定するものと解釈してはならない。「有する」、「含む」などの語は、いずれかの請求項または明細書全体に挙げられているもの以外の要素またはステップの存在を除外しない。本明細書において、「有する/含む」は「…を含むまたは…からなる」ことを意味し、「有している/含んでいる」は「…を含んでいるまたは…からなっている」ことを意味する。要素の単数形での言及は、そのような要素の複数の言及を除外するものではなく、その逆もまた同様である。本発明は、いくつかの別個の要素を含むハードウェアによって、および好適にプログラムされたコンピュータによって実装されうる。いくつかの手段を列挙する装置請求項においては、これらの手段のいくつかは、同一のハードウェア項目によって具現されてもよい。ある種の措置が互いに異なる従属請求項において記載されているというだけの事実は、これらの措置の組み合わせが有利に利用できないことを示すものではない。
【0140】
いくつかの態様を記載しておく。
〔態様1〕
第1の当事者および第2の当事者に関わる、ブロックチェーンで実装されたセキュリティー方法であって、当該方法は:
第1の当事者により生成された第1の複数のn個の秘密の暗号化されたバージョンと、第2の当事者により生成された第2の複数のn個の秘密の暗号化されたバージョンとを組み合わせて、複数のn個の暗号学的ロックを生成する段階と;
第1の当事者によって生成された前記第1の複数のn個の秘密に属する1つの秘密をランダムに選択する段階と;
前記複数のn個の暗号学的ロックのうちの特定の暗号学的ロックをロック解除する暗号鍵を生成する段階であって、前記特定の暗号学的ロックは、第1の当事者によって生成された前記第1の複数のn個の秘密に属する前記ランダムに選択された1つの秘密に対応する、段階とを含む、
ブロックチェーンで実装されたセキュリティー方法。
〔態様2〕
前記第1の複数のn個の秘密を第1の当事者に明かすことなく、第1の当事者によって生成された前記第1の複数のn個の秘密の前記暗号化されたバージョンが、第2の当事者に伝達される;および/または
第1の当事者によって生成された前記第1の複数のn個の秘密を第2の当事者に明かすことなく、前記複数のn個の暗号学的ロックが第2の当事者によって生成される;および/または
前記複数のn個の暗号学的ロックが、第2の当事者によって生成され、第1の当事者によって検証されて、前記複数のn個の暗号学的ロックが、第1の当事者によって生成された前記第1の複数のn個の秘密の暗号化されたバージョンと第2の当事者によって生成された前記第2の複数のn個の秘密の暗号化されたバージョンの許容される組み合わせに基づいていることを保証する;および/または
第1の当事者によって生成された前記第1の複数のn個の秘密に属する前記1つの秘密が、第1の当事者によってランダムに選択され、第2の当事者に安全に通信される;および/または
前記暗号鍵は、第1の当事者によって生成された前記第1の複数のn個の秘密を第2の当事者に明かすことなく、第2の当事者によって生成される、
態様1に記載のブロックチェーンで実装されたセキュリティー方法。
〔態様3〕
前記複数のn個の暗号学的ロックは、第1の当事者によって生成された前記第1の複数のn個の秘密の暗号化されたバージョンと、第2の当事者によって生成された前記第2の複数のn個の秘密の暗号化されたバージョンとの線形結合に基づく、
態様1または2に記載のブロックチェーンで実装されたセキュリティー方法。
〔態様4〕
第2の当事者により、少なくとも1つのトランザクション入力と複数のn個のトランザクション出力とを含む第1のトランザクションを構築する段階であって、前記第1のトランザクションの前記少なくとも1つのトランザクション入力は、第2の当事者のデジタル資産をポイントし、前記第1のトランザクションのn個のトランザクション出力は、第2の当事者のデジタル資産の制御された移転のための前記複数のn個の暗号学的ロックのうちの異なるものに基づくロック・スクリプトを含む、段階と;
第2の当事者によって生成された前記第2の複数のn個の秘密を第1の当事者に明かすことなく、第1の当事者により、前記第1の複数のn個の秘密の暗号化されたバージョンおよび前記第2の複数のn個の秘密の暗号化されたバージョンから導出されたデータを使って、前記第1のトランザクションを検証する段階とをさらに含み、
第1の当事者によって生成された前記第1の複数のn個の秘密に属する前記1つの秘密は、前記第1のトランザクションの検証成功に応答して、第1の当事者によってランダムに選択される、
態様3に記載のブロックチェーンで実装されたセキュリティー方法。
〔態様5〕
第2の当事者によって、第1の当事者によってランダムに選択された前記1つの秘密に対応する前記第1のトランザクションの特定のトランザクション出力を決定する段階と;
第2の当事者によって、トランザクション入力および少なくとも1つのトランザクション出力を含む第2のトランザクションを構築する段階であって、前記第2のトランザクションのトランザクション入力は、第1の当事者によってランダムに選択された前記1つの秘密に対応する前記第1のトランザクションの特定のトランザクション出力をポイントし、前記第1のトランザクションの前記特定のトランザクション出力の前記暗号学的ロックをロック解除する前記暗号鍵に基づくロック解除スクリプトを含み、前記第2のトランザクションの前記少なくとも1つのトランザクション出力は、第2の当事者のデジタル資産の制御された移転のための出力値およびロック・スクリプトを含む、段階とをさらに含む、
態様4に記載のブロックチェーンで実装されたセキュリティー方法。
〔態様6〕
第2の当事者によって、前記第1のトランザクションのn個のトランザクション出力の数nを生成する段階と;
第2の当事者によって、数nを含むメッセージを第1の当事者に送信する段階と;
第1の当事者によって、数nを含む、第1の当事者によって送信されたメッセージを受信する段階とをさらに含む、
態様4に記載のブロックチェーンで実装されたセキュリティー方法。
〔態様7〕
第1の当事者によって、前記第1の複数のn個の秘密を生成する段階と;
第1の当事者によって、楕円曲線暗号を利用して前記第1の複数のn個の秘密を暗号化し、前記第1の複数のn個の秘密の前記暗号化されたバージョンを表わすn個の結果データ点を得る段階と;
第1の当事者によって、前記n個の結果のデータ点を含むメッセージを第2の当事者に送信する段階と;
前記n個の結果のデータ点を含む、第1の当事者によって送信されたメッセージを、第2の当事者によって受信する段階と;
第2の当事者によって、前記n個の結果データ点を復元する段階と;
第2の当事者によって、第2の複数のn個の秘密を生成する段階と;
第2の当事者によって、楕円曲線暗号を利用して前記第2の複数のn個の秘密を暗号化し、前記第2の複数のn個の秘密の前記暗号化されたバージョンを表わすn個の結果データ点を得る段階とをさらに含み、
第2の当事者は、第1の当事者によって生成された前記第1の複数のn個の秘密の前記暗号化されたバージョンを表わすn個のデータ点と、第2の当事者によって生成された前記第2の複数のn個の秘密の前記暗号化されたバージョンを表わすn個のデータ点との線形結合に基づいて、前記複数のn個の暗号学的ロックを生成する、
態様4に記載のブロックチェーンで実装されたセキュリティー方法。
〔態様8〕
第1の当事者によってランダムに選択された前記1つの秘密を含むメッセージを第1の当事者によって、第2の当事者に送信する段階と;
第1の当事者によってランダムに選択された前記1つの秘密を含む第1の当事者から送られたメッセージを第2の当事者によって受信する段階と;
第1の当事者から送られた前記メッセージに応答して、第1の当事者によってランダムに選択された前記1つの秘密に対応する、前記第1のトランザクションの前記特定のトランザクション出力に関連するインデックスを第2の当事者によって生成する段階と:
第2の当事者によって、第1の当事者によってランダムに選択された前記1つの特定の秘密と、前記第1のトランザクションの前記特定のトランザクション出力に関連付けられた前記インデックスとに基づいて前記暗号鍵を生成する段階とをさらに含み、
第2の当事者は、前記第2のトランザクションのトランザクション入力を構築する際に、前記暗号鍵と、前記第1のトランザクションの前記特定のトランザクション出力に関連するインデックスとの両方を使用する、
態様5に記載のブロックチェーンで実装されたセキュリティー方法。
〔態様9〕
前記第1のトランザクションのn個のトランザクション出力のロック・スクリプトは、前記複数のn個の暗号学的ロックのうちの異なるものに対応する署名と、可能性としては他の必要なデータ(たとえば、第2の当事者に属する秘密鍵から導出された署名)を提供するそれぞれのロック解除スクリプトによって解放されることができ;
前記第2のトランザクションのトランザクション入力は、該トランザクション入力によってポイントされる前記第1のトランザクションの前記特定のトランザクション出力の前記暗号学的ロックに対応する署名と、可能性としては他の必要なデータ(たとえば、第2の当事者に属する前記秘密鍵から導出された署名)とをもつロック解除スクリプトを含み、
前記特定のトランザクション出力の前記暗号学的ロックに対応する前記署名は、第1の当事者によってランダムに選択された前記1つの秘密に基づいて、第2の当事者によって生成された前記暗号鍵から構築される
態様5に記載のブロックチェーンで実装されたセキュリティー方法。
〔態様10〕
前記第1のトランザクションをブロックチェーン・ネットワークのブロックチェーン・ブロックに格納するための検証および採掘のために、前記第1のトランザクションを前記ブロックチェーン・ネットワーク上でブロードキャストする段階、および/または
前記第2のトランザクションを前記ブロックチェーン・ネットワークのブロックチェーン・ブロックに格納するための検証および採掘のために、前記第2のトランザクションを前記ブロックチェーン・ネットワーク上でブロードキャストする段階をさらに含み、
前記ブロックチェーンは、プルーフオブワーク式ブロックチェーンまたはプルーフオブステーク式ブロックチェーンである、
態様5に記載のブロックチェーンで実装されたセキュリティー方法。
〔態様11〕
第2の当事者によって、前記第1のトランザクションの検証失敗に応答して少なくとも1つの第3のトランザクションを構築する段階であって、前記第3のトランザクションは、少なくとも1つのトランザクション入力および少なくとも1つのトランザクション出力を含み、前記第3のトランザクションの前記少なくとも1つのトランザクション入力は、前記第1のトランザクションのトランザクション出力をポイントし、前記第2のトランザクションの前記少なくとも1つのトランザクション出力は、前記第2の当事者にデジタル資産を払い戻すための出力値およびロック・スクリプトを含む、段階をさらに含み、
前記少なくとも1つの第3のトランザクションは、前記第1のトランザクションのn個のトランザクション出力を参照する複数のトランザクション入力をもつ単一のトランザクションを含む、または
前記少なくとも1つの第3のトランザクションは、前記第1のトランザクションのn個のトランザクション出力のうちの異なるものを参照するトランザクション入力をそれぞれもつn個の別個のトランザクションを含む、
態様5に記載のブロックチェーンで実装されたセキュリティー方法。
〔態様12〕
秘密鍵と公開鍵のペアが、第2の当事者に関連付けられており;
前記第1のトランザクションのn個のトランザクション出力のロック・スクリプトは、第2の当事者の秘密鍵から導出される署名を提供するロック解除スクリプトによって解放されることができ;
前記第3のトランザクションの前記少なくとも1つのトランザクション入力は、前記第1のトランザクションの対応するトランザクション出力をポイントし、第2の当事者の秘密鍵から導出された署名を提供するロック解除スクリプトを含む、
態様11に記載のブロックチェーンで実装されたセキュリティー方法。
〔態様13〕
第1当事者が、前記複数のn個の暗号学的ロックが、第1当事者によって生成された前記第1の複数のn個の秘密の暗号化されたバージョンと、第2当事者によって生成された前記第2の複数のn個の秘密の暗号化されたバージョンとの許容される線形結合に基づいていることを保証するために、前記第1のトランザクションを検証する、および/または
第2の当事者によって生成された前記第2の複数のn個の秘密を第1の当事者に明かすことなく、第1の当事者が、第2の当事者によって生成された前記第2の複数のn個の秘密の暗号化されたバージョンの組み合わせから導出されるデータを利用して前記第1のトランザクションを検証する、および/または
前記第1のトランザクションの検証が、
【数7】
の形の演算に関わり、
k
A
(1)、k
A
(2)、…k
A
(n)は前記第1の複数のn個の秘密であり、
k
B
(1)、k
B
(2)、…k
B
(n)は前記第2の複数のn個の秘密であり、
Gは楕円曲線上の点であり、
k
A
(1)G、k
A
(2)G、…k
A
(n)Gは前記第1の複数のn個の秘密の暗号化されたバージョンであり、
k
B
(1)G、k
B
(2)G、…k
B
(n)Gは前記第2の複数のn個の秘密の暗号化されたバージョンである、
態様4に記載のブロックチェーンで実装されたセキュリティー方法。
〔態様14〕
実行されると、態様1ないし13のうちいずれか一項に記載の方法の任意の部分を実行するようにプロセッサを構成するコンピュータ実行可能命令を備える、コンピュータ可読記憶媒体。
〔態様15〕
インターフェース装置と;
前記インターフェース装置に結合されたプロセッサと;
前記プロセッサに結合されたメモリとを有する電子装置であって、前記メモリは、実行されると、態様1ないし13のうちいずれか一項に記載の方法の任意の部分を実行するように前記プロセッサを構成するコンピュータ実行可能命令を記憶している、
電子装置。