JP2023504535A - アイデンティティ(id)ベース公開鍵生成プロトコル - Google Patents
アイデンティティ(id)ベース公開鍵生成プロトコル Download PDFInfo
- Publication number
- JP2023504535A JP2023504535A JP2022533174A JP2022533174A JP2023504535A JP 2023504535 A JP2023504535 A JP 2023504535A JP 2022533174 A JP2022533174 A JP 2022533174A JP 2022533174 A JP2022533174 A JP 2022533174A JP 2023504535 A JP2023504535 A JP 2023504535A
- Authority
- JP
- Japan
- Prior art keywords
- public key
- transaction
- key
- blockchain
- identity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0847—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving identity based encryption [IBE] schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0866—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
- H04L9/3073—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Abstract
IDベース暗号鍵を生成するためのコンピュータ実装方法であって、秘密鍵シェアのセットおよび対応する公開鍵シェアのセットを取得することと、ここで、各秘密鍵シェアは、前記個人識別子に基づいて生成され、前記秘密鍵シェアのセットのうちの少なくとも1つは、鍵生成当事者のセットのそれぞれ1つによって生成され、前記1つまたは複数の秘密鍵シェアの各々に基づいてIDベース秘密鍵を生成することと、部分IDベース公開鍵を生成すること、ここで、前記部分IDベース公開鍵は、前記対応する公開鍵シェアのセットの各々に基づいて生成され、前記IDベース公開鍵を生成するために前記鍵生成当事者のセットのうちの少なくとも1つに前記部分IDベース公開鍵を送信すること、および/または前記IDベース公開鍵を生成することを含み、ここで、前記IDベース公開鍵は、前記個人識別子と前記部分IDベース公開鍵とを含む。
Description
本開示は、ユーザのアイデンティティ(ID)に基づいて暗号鍵を生成するための方法に関する。
ブロックチェーンは、ブロックチェーンの複製コピーがピアツーピア(P2P)ネットワーク内の複数のノードの各々において維持される分散型データ構造の形態を指す。ブロックチェーンは、データブロックのチェーンを含み、各ブロックは1つまたは複数のトランザクションを含む。各トランザクションは、1つまたは複数のブロックにまたがり得るシーケンス内の先行するトランザクションを指し示し得る。トランザクションは、「マイニング」として知られるプロセスによって新しいブロックに含まれるためにネットワークにサブミットされ得、このプロセスは、複数のマイニングノードの各々が、「プルーフオブワーク(proof-of-work)」を実行しようと競うこと、すなわち、ブロックに含まれるのを待っている保留中のトランザクションのプールに基づいて暗号パズルを解くことを伴う。
従来、ブロックチェーンにおけるトランザクションは、デジタル資産、すなわち価値の蓄蔵として機能するデータを伝達するために使用される。しかしながら、ブロックチェーンは、ブロックチェーンの上に追加の機能を重ねるために活用することもできる。例えば、ブロックチェーンプロトコルは、トランザクションの出力における追加のユーザデータの格納を可能にし得る。最新のブロックチェーンでは、単一のトランザクション内に格納可能な最大データ容量が増えており、より複雑なデータを組み込むことが可能である。例えば、これを使用して、ブロックチェーンに電子文書を格納したり、さらにはオーディオまたはビデオデータを格納したりすることができる。
ネットワーク内の各ノードは、フォワード、マイニング、および格納という3つの役割のうちのいずれか1つ、2つ、またはすべてを担うことができる。フォワーディングノードは、ネットワークのノード全体にトランザクションを伝搬する。マイニングノードは、ブロックへのトランザクションのマイニングを実行する。ストレージノードはそれぞれ、ブロックチェーンのマイニングされたブロックの自身のコピーを格納する。ブロックチェーンにトランザクションを記録させるために、当事者は、伝搬されるべきネットワークのノードのうちの1つにトランザクションを送る。トランザクションを受信するマイニングノードは、トランザクションを新しいブロックにマイニングしようと競い合い得る。各ノードは、同じノードプロトコルを尊重するように構成され、そのノードプロトコルには、トランザクションが有効であるための1つまたは複数の条件が含まれる。無効なトランザクションは、伝搬もブロックへのマイニングもされない。トランザクションが妥当性確認(validate)され、それによってブロックチェーン上に受け入れられたと仮定すると、追加のユーザデータは、不変の公開記録としてP2Pネットワーク内のノードの各々に格納されたままになる。
IDベース暗号化(IBE)は、ユーザのアイデンティティ、例えばユーザの電子メールアドレスを、ユーザの公開鍵として利用する公開鍵暗号システムである。IBEの技術的課題は、公開鍵から対応する秘密鍵を導出することである。これを克服するために、典型的には、信頼できる第三者機関(TTP)が導入され、マスタ秘密鍵(TTPのみが知っている)およびユーザのアイデンティティからユーザの秘密鍵を生成する。しかしながら、この解決策では、TTPはユーザの秘密鍵の知識を有し、したがって、ユーザの公開鍵で暗号化されているメッセージを解読することができるという問題を引き起こす。
本明細書に開示される一態様によれば、IDベース暗号鍵を生成するためのコンピュータ実装方法が提供され、方法は、個人識別子を有する第1の当事者によって実行され、秘密鍵シェアのセットおよび対応する公開鍵シェアのセットを取得することと、ここで、各秘密鍵シェアは、個人識別子に基づいて生成され、秘密鍵シェアのセットのうちの少なくとも1つは、鍵生成当事者のセットのそれぞれ1つによって生成され、1つまたは複数の秘密鍵シェアの各々に基づいてIDベース秘密鍵を生成することと、部分IDベース公開鍵を生成すること、ここで、部分IDベース公開鍵は、対応する公開鍵シェアのセットの各々に基づいて生成され、IDベース公開鍵を生成するために鍵生成当事者のセットのうちの少なくとも1つに部分IDベース公開鍵を送信すること、および/またはIDベース公開鍵を生成することを含み、ここで、IDベース公開鍵は、個人識別子と部分IDベース公開鍵とを含む。
本明細書で開示される別の態様によれば、IDベース暗号鍵を生成するためのコンピュータ実装方法が提供され、第1の当事者が個人識別子を有し、方法は、第1の鍵生成当事者によって実行され、秘密鍵シェアを第1の当事者に送信することと、ここで、秘密鍵シェアは、個人識別子に基づいて生成され、対応する公開鍵シェアを有し、部分IDベース公開鍵を取得することと、ここで、部分IDベース公開鍵は、対応する公開鍵シェアに基づいて生成され、IDベース公開鍵を生成および/または取得することと、ここで、IDベース公開鍵は、部分IDベース公開鍵と個人識別子とに基づいて生成され、IDベース公開鍵を含む第1の出力を含む第1のブロックチェーントランザクションを生成することとを含む。
TTPがユーザの秘密鍵を生成する代わりに、ユーザ(第1の当事者)は、ここで、少なくとも部分的に、自身の秘密鍵を生成することを担う。ユーザは、1つまたは複数の秘密鍵シェアを受信し、それらを使用して秘密鍵を生成する。秘密鍵生成局(PKG)としても知られる各鍵生成当事者は、それ自身が生成した秘密鍵シェアの知識しか有さないので、所与のPKGがユーザの完全な秘密鍵を取得することはできない。ユーザの秘密鍵を形成するために秘密鍵シェアが組み合わせられ得るか、またはユーザが追加的に秘密鍵シェアを秘密鍵に寄与し得る。TTPに相当するPKGは、秘密鍵シェアの保持者が共謀しなければ、ユーザの秘密鍵はユーザのみが知っているという意味で、半ば信頼されるようになる。ユーザが秘密鍵シェアの保持者でもある場合、任意の第三者、より正確には他の秘密鍵シェアの保持者に対する信頼を完全に落とすことができる。
PKGの1つ、いくつか、またはすべてが、IDベース公開鍵(すなわち、IBE鍵)を生成し、IBE鍵をブロックチェーントランザクション(以下では「有効性チェックトランザクション」(VCT)と呼ぶ)においてブロックチェーン上に格納する。VCTは、ブロックチェーンの未使用トランザクション出力(UTXO)セットにおいて見ることができ、それにより、当事者は、IBE鍵を閲覧し、IBEが依然として有効であるかどうかをチェックすることができる。本質的に、UTXOセットは、有効なキーのホワイトリストとして機能する。IBE鍵、またはより正確には対応する秘密鍵が、何らかの他の理由で危殆化されるか、または失効される必要がある場合、ユーザおよび/またはPKGは、VCTを使用してUTXOセットからIBE鍵を除去することができる。当事者は、その後IBE鍵が有効であるかどうかをチェックしたいときに、もはやUTXOセット内にIBE鍵を見みることはなく、このことから、IBE鍵は無効であると解釈する。同様に、IBEは、以前のVCTを使用したブロックチェーンに新しいVCTを送ることによって更新され得る。VCT出力を使用することは、即時の鍵失効のための効率的な方法を提供する。
本開示の実施形態の理解を助け、そのような実施形態がどのように実施され得るかを示すために、単なる例として添付の図面を参照する。
ブロックチェーンを実装するためのシステムの概略ブロック図である。
ブロックチェーンに記録され得るトランザクションのいくつかの例を概略的に示す。
ブロックチェーンを実装するための別のシステムの概略ブロック図である。
出力ベースモデルのノードプロトコルにしたがってトランザクションを処理するためのノードソフトウェアの一部分の概略ブロック図である。
当事者の識別子に基づいて公開鍵を生成するための例示的なシステムの概略ブロック図である。
当事者の識別子に基づいて公開鍵を生成するための別の例示的なシステムの概略ブロック図である。
鍵生成当事者からのIDベース公開鍵を要求する例示的な方法のシーケンス図である。
IDベース公開鍵を使用して暗号化されたメッセージを送る例示的な方法のシーケンス図である。
IDベース公開鍵を使用して暗号化されたメッセージを解読する例示的な方法のシーケンス図である。
例示的なシステムの概要
図1は、一般的にブロックチェーン150を実装するための例示的なシステム100を示す。システム100は、典型的にはインターネットなどワイドエリアインターネットワークであるパケット交換ネットワーク101を含む。パケット交換ネットワーク101は、パケット交換ネットワーク101内にピアツーピア(P2P)オーバーレイネットワーク106を形成するように構成された複数のノード104を含む。各ノード104は、ピアのコンピュータ機器を含み、ノード104のうちの異なるものが異なるピアに属する。各ノード104は、1つまたは複数のプロセッサ、例えば1つまたは複数の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサおよび/またはフィールドプログラマブルゲートアレイ(FPGA)を備える処理装置を含む。各ノードはまた、メモリ、すなわち、1つまたは複数の非一時的コンピュータ可読媒体の形態のコンピュータ可読ストレージを備える。メモリは、1つまたは複数のメモリ媒体、例えば、ハードディスクなどの磁気媒体、ソリッドステートドライブ(SSD)、フラッシュメモリもしくはEEPROMなどの電子媒体、および/または光ディスクドライブなどの光学媒体を使用する1つまたは複数のメモリユニットを備え得る。
図1は、一般的にブロックチェーン150を実装するための例示的なシステム100を示す。システム100は、典型的にはインターネットなどワイドエリアインターネットワークであるパケット交換ネットワーク101を含む。パケット交換ネットワーク101は、パケット交換ネットワーク101内にピアツーピア(P2P)オーバーレイネットワーク106を形成するように構成された複数のノード104を含む。各ノード104は、ピアのコンピュータ機器を含み、ノード104のうちの異なるものが異なるピアに属する。各ノード104は、1つまたは複数のプロセッサ、例えば1つまたは複数の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサおよび/またはフィールドプログラマブルゲートアレイ(FPGA)を備える処理装置を含む。各ノードはまた、メモリ、すなわち、1つまたは複数の非一時的コンピュータ可読媒体の形態のコンピュータ可読ストレージを備える。メモリは、1つまたは複数のメモリ媒体、例えば、ハードディスクなどの磁気媒体、ソリッドステートドライブ(SSD)、フラッシュメモリもしくはEEPROMなどの電子媒体、および/または光ディスクドライブなどの光学媒体を使用する1つまたは複数のメモリユニットを備え得る。
ブロックチェーン150は、データブロック151のチェーンを含み、ブロックチェーン150のそれぞれのコピーは、P2Pネットワーク160内の複数のノードの各々において維持される。チェーン内の各ブロック151は、1つまたは複数のトランザクション152を含み、この文脈におけるトランザクションは、データ構造の一種を指す。データ構造の性質は、トランザクションモデルまたは方式の一部として使用されるトランザクションプロトコルのタイプに依存する。所与のブロックチェーンは、典型的には、全体を通して1つの特定のトランザクションプロトコルを使用する。1つの一般的なタイプのトランザクションプロトコルでは、各トランザクション152のデータ構造は、少なくとも1つの入力と少なくとも1つの出力とを含む。各出力は、出力が暗号的にロックされている(ロック解除され、それによって償還または使用されるためにはそのユーザの署名を必要とする)ユーザ103に属するデジタル資産の量を表す額を指定する。各入力は、先行するトランザクション152の出力を指し示し、それによってトランザクションをリンクする。
ノード104のうちの少なくともいくつかは、トランザクション152をフォワードし、それによって伝搬するフォワーディングノード104Fの役割を引き受ける。ノード104のうちの少なくともいくつかは、ブロック151をマイニングするマイナー104Mの役割を引き受ける。ノード104のうちの少なくともいくつかは、ストレージノード104S(「フルコピー」ノードと呼ばれることもある)の役割を引き受け、その各々が、同じブロックチェーン150のそれぞれのコピーをそれぞれのメモリに格納する。各マイナーノード104Mはまた、ブロック151にマイニングされるのを待っているトランザクション152のプール154を維持する。所与のノード104は、フォワーディングノード104、マイナー104M、ストレージノード104S、またはこれらのうちの2つもしくはすべての任意の組合せであり得る。
所与の現在のトランザクション152jにおいて、入力(または各入力)は、トランザクションのシーケンスにおける先行するトランザクション152iの出力を参照するポインタを含み、この出力が現在のトランザクション152jにおいて償還または「使用」されるべきであることを指定する。一般に、先行するトランザクションは、プール154または任意のブロック151内の任意のトランザクションであり得る。先行するトランザクション152iは、現在のトランザクションが有効となるために存在および妥当性確認される必要があるが、先行するトランザクション152iは、現在のトランザクション152jが作成されるときまたはネットワーク106に送られるときに必ずしも存在する必要はない。したがって、本明細書における「先行する(preceding)」は、ポインタによってリンクされた論理シーケンスにおける先行するものを指し、必ずしも時間シーケンスにおける作成時間または送る時間を指すものではなく、したがって、トランザクション152i、152jが順不同に作成または送られることを必ずしも除外するものではない(オーファントランザクションに関する以下の説明を参照)。先行するトランザクション152iは、先のトランザクション(antecedent transaction)または先行したトランザクション(predecessor transaction)とも呼ばれる。
現在のトランザクション152jの入力はまた、先行するトランザクション152iの出力がロックされるユーザ103aの署名を含む。次に、現在のトランザクション152jの出力は、新しいユーザ103bに暗号的にロックされ得る。したがって、現在のトランザクション152jは、先行するトランザクション152iの入力において定義された額を、現在のトランザクション152jの出力において定義されたように、新しいユーザ103bに転送することができる。場合によっては、トランザクション152は、複数のユーザ(残り(change)を与えるためにそのうちの1人が元のユーザ103aであり得る)間で入力額を分割するために複数の出力を有し得る。場合によっては、トランザクションはまた、1つまたは複数の先行するトランザクションの複数の出力からの額をまとめ、現在のトランザクションの1つまたは複数の出力に再分配するために複数の入力を有することができる。
上記は、「出力ベース」トランザクションプロトコルと呼ばれ得、未使用トランザクション出力(UTXO)タイププロトコルと呼ばれることもある(ここでは出力はUTXOと呼ばれる)。ユーザの総残高は、ブロックチェーンに格納された任意の1つの数字で定義されるのではなく、代わりに、ユーザは、ブロックチェーン151内の多くの異なるトランザクション152全体に散在しているそのユーザのすべてのUTXOの値を照合するための特別な「ウォレット」アプリケーション105を必要とする。
トランザクションプロトコルの代替的なタイプは、アカウントベーストランザクションモデルの一部として、「アカウントベース」プロトコルと呼ばれ得る。アカウントベース場合、各トランザクションは、一連の過去のトランザクションにおける先行するトランザクションのUTXOを参照することによってではなく、絶対アカウント残高を参照することによって転送されるべき額を定義する。すべてのアカウントの現在の状態は、ブロックチェーンとは別にマイナーによって格納され、絶えず更新される。そのようなシステムでは、トランザクションは、アカウントの実行中のトランザクションタリー(「ポジション」とも呼ばれる)を使用して順序付けられる。この値は、送信者によってその暗号署名の一部として署名され、トランザクション参照計算の一部としてハッシュされる。加えて、トランザクションにおける任意選択のデータフィールドも署名することができる。このデータフィールドは、例えば、前のトランザクションIDがデータフィールドに含まれている場合、前のトランザクションを指し示し得る。
いずれかのタイプのトランザクションプロトコルを用いて、ユーザ103が新しいトランザクション152jを成立させることを望む場合、ユーザは新しいトランザクションをユーザのコンピュータ端末102からP2Pネットワーク106のノード104(これは、今日では典型的にはサーバまたはデータセンタであるが、原理的には他のユーザ端末であってもよい)のうちの1つに送る。このノード104は、ノード104の各々において適用されるノードプロトコルにしたがってトランザクションが有効であるかどうかをチェックする。ノードプロトコルの詳細は、当該ブロックチェーン150において使用されているトランザクションプロトコルのタイプに対応し、全体としてトランザクションモデルを形成する。ノードプロトコルは、典型的には、新しいトランザクション152j内の暗号署名が、トランザクション152の順序付けられたシーケンス内で前のトランザクション152iに依存する予想される署名と一致することをチェックするようにノード104に求める。出力ベース場合、これは、新しいトランザクション152jの入力に含まれるユーザの暗号署名が、新しいトランザクションが使用する先行するトランザクション152iの出力において定義される条件と一致することをチェックすることを含み得、この条件は、典型的には、新しいトランザクション152jの入力における暗号署名が、新しいトランザクションの入力が指し示す前のトランザクション152iの出力をロック解除することをチェックすることを少なくとも含む。いくつかのトランザクションプロトコルでは、条件は、入力および/または出力に含まれるカスタムスクリプトによって少なくとも部分的に定義され得る。代替的に、単にノードプロトコルのみによって固定されてもよく、またはこれらの組合せによるものであってもよい。いずれにしても、新しいトランザクション152jが有効である場合、現在のノードは、それをP2Pネットワーク106内のノード104のうちの1つまたは複数の他のノードにフォワードする。これらのノード104のうちの少なくともいくつかは、フォワーディングノード104Fとしても機能し、同じノードプロトコルにしたがって同じテストを適用し、そして、新しいトランザクション152jを1つまたは複数のさらなるノード104にフォワードし、以下同様である。このようにして、新しいトランザクションはノード104のネットワーク全体に伝搬される。
出力ベースモデルでは、所与の出力(例えば、UTXO)が使用されたかどうかの定義は、それがノードプロトコルにしたがって別の前方のトランザクション152jの入力によって有効に償還されたかどうかかである。トランザクションが有効であるための別の条件は、それが使用または償還しようとする先行する遷移152iの出力が、別の有効なトランザクションによってまだ使用/償還されていないことである。同様に、有効でない場合、トランザクション152jは、ブロックチェーンに伝搬も記録もされない。これは、使用者が同じトランザクションの出力を複数回使用しようとする二重支出を防止する。一方、アカウントベースモデルは、アカウント残高を維持することによって二重支出を防止する。ここでも、トランザクション順序が定義されているので、アカウント残高は常に単一の定義された状態にある。
妥当性確認に加えて、ノード104Mのうちの少なくともいくつかはまた、「プルーフオブワーク」に支えられるマイニングとして知られるプロセスにおいてトランザクションのブロックを最初に作成しようと競い合う。マイニングノード104Mにおいて、ブロック内にまだ現れていない有効なトランザクションのプールに新しいトランザクションが追加される。次いで、マイナーは、暗号パズルを解くことを試みることによって、トランザクションのプール154からトランザクション152の新しい有効ブロック151を組み立てようと競い合う。典型的には、これは、ノンスがトランザクションのプール154と連結されハッシュされたときにハッシュの出力が所定の条件を満たすような「ノンス」値を探索することを含む。例えば、所定の条件とは、ハッシュの出力が特定の所定の数の先行ゼロを有することであり得る。ハッシュ関数の特性は、その入力に対して予測不可能な出力を持つことである。したがって、この探索は、総当たりでしか実行することができないので、パズルを解こうとしている各ノード104Mでかなりの量の処理リソースを消費する。
最初にパズルを解いたマイナーノード104Mは、これをネットワーク106に公表し、後にネットワーク内の他のノード104によって容易にチェックすることができるその解を証明として提供する(ハッシュに対する解が与えられると、ハッシュの出力が条件を満たすことをチェックすることは簡単である)。勝者がパズルを解いたトランザクションのプール154は、次いで、ストレージノード104Sとして機能するノード104のうちの少なくともいくつかによって、そのような各ノードにおいて勝者が公表した解をチェックしたことに基づいて、ブロックチェーン150内に新しいブロック151として記録されるようになる。ブロックポインタ155はまた、チェーン内の前に作成されたブロック151n-1を指し示す新しいブロック151nに割り当てられる。プルーフオブワークは、新たなブロック151を作成するのに多大な労力を要するので、二重支出のリスクを低減するのに役立ち、二重支出を含むブロックは他のノード104によって拒絶される可能性が高いので、マイニングノード104Mは、二重支出がそれらのブロックに含まれないようにインセンティブが与えられる。ブロック151は、一旦作成されると、同じプロトコルにしたがってP2Pネットワーク106内の格納ノード104Sの各々で認識および維持されるので、修正することができない。ブロックポインタ155はまた、ブロック151にシーケンシャル順序を付与する。トランザクション152は、P2Pネットワーク106内の各ストレージノード104Sにおいて順序付けられたブロックに記録されるので、これは、トランザクションの不変の公開台帳を提供する。
任意の所与の時間にパズルを解こうと競い合う異なるマイナー104Mは、それらがいつ解を探索し始めたかに応じて、任意の所与の時間におけるマイニングされていないトランザクションプール154の異なるスナップショットに基づいてそうしている可能性があることに留意されたい。誰がそれぞれのパズルを最初に解いても、どのトランザクション152が次の新しいブロック151nに含まれるかを定義し、マイニングされていないトランザクションの現在のプール154が更新される。次いで、マイナー104Mは、新しく定義された未処理プール154からブロックを作成しようと競い合い続け、以下同様である。2人のマイナー104Mが互いに非常に短い時間内にパズルを解いて、ブロックチェーンの相反する見解が伝搬される場合に発生し得る任意の「フォーク」を解決するためのプロトコルも存在する。要するに、フォークのどちらのプロングが最も長く成長しても、最終的なブロックチェーン150となる。
ほとんどのブロックチェーンでは、勝利マイナー104Mには、(あるユーザから別のユーザにある額のデジタル資産を転送する通常のトランザクションとは対照的に)突如新しい量のデジタル資産を作成する特別なタイプの新しいトランザクションで自動的に報酬が与えられる。したがって、勝者ノードは、ある量のデジタル資産を「マイニング」したと言われる。この特別なタイプのトランザクションは、「生成」トランザクションと呼ばれることがある。それは自動的に新しいブロック151nの一部を形成する。この報酬は、マイナー104Mがプルーフオブワーク競争に参加するためのインセンティブを与える。多くの場合、通常の(非生成)トランザクション152はまた、そのトランザクションが含まれたブロック151nを作成した勝利マイナー104Mにさらに報酬を与えるために、その出力の1つにおいて追加のトランザクション手数料を指定する。
マイニングに関与する計算リソースに起因して、典型的には、マイナーノード104Mの少なくとも各々は、1つまたは複数の物理サーバユニットを含むサーバの形態をとるか、またはデータセンタ全体の形態をとる。各フォワーディングノード104Mおよび/またはストレージノード104Sもまた、サーバまたはデータセンタの形態をとり得る。しかしながら、原則として、任意の所与のノード104は、一緒にネットワーク化されたユーザ端末またはユーザ端末のグループの形態をとることができる。
各ノード104のメモリは、そのそれぞれの1つまたは複数の役割を実行し、ノードプロトコルにしたがってトランザクション152を処理するために、ノード104の処理装置上で実行ように構成されたソフトウェアを記憶する。本明細書においてノード104に帰する任意のアクションは、それぞれのコンピュータ機器の処理装置上で実行されるソフトウェアによって実行され得ることが理解されよう。また、本明細書で使用される「ブロックチェーン」という用語は、一般に、この種類の技術を指す総称であり、任意の特定の専有のブロックチェーン、プロトコルまたはサービスに限定されない。
消費ユーザの役割を果たす複数の当事者103の各々のコンピュータ機器102もネットワーク101に接続されている。これらは、トランザクションにおいて支払人および受取人として機能するが、他の当事者に代わってトランザクションのマイニングまたは伝搬に必ずしも参加するわけではない。それらは、マイニングプロトコルを必ずしも実行するわけではない。2つの当事者103およびそれらのそれぞれの機器102、すなわち、第1の当事者103aおよびそのそれぞれのコンピュータ機器102a、ならびに第2の当事者103bおよびそのそれぞれのコンピュータ機器102bは、例示の目的で示されている。はるかに多くのそのような当事者103およびそれらのそれぞれのコンピュータ機器102が存在し、システムに参加し得るが、便宜上、それらは図示されていないことが理解されよう。各当事者103は、個人または組織であり得る。純粋に例示として、第1の当事者103aは、本明細書ではアリスと呼ばれ、第2の当事者103bはボブと呼ばれるが、これは限定的なものではなく、本明細書におけるアリスまたはボブへのいかなる言及も、それぞれ「第1の当事者」および「第2の当事者」と置き換えられ得ることが理解されよう。
各当事者103のコンピュータ機器102は、1つまたは複数のプロセッサ、例えば、1つまたは複数のCPU、GPU、他のアクセラレータプロセッサ、特定用途向けプロセッサ、および/またはFPGAを含むそれぞれの処理装置を含む。各当事者103のコンピュータ機器102は、メモリ、すなわち、1つまたは複数の非一時的コンピュータ可読媒体の形態のコンピュータ可読ストレージを備える。このメモリは、1つまたは複数のメモリ媒体、例えば、ハードディスクなどの磁気媒体、SSD、フラッシュメモリもしくはEEPROMなどの電子媒体、および/または光ディスクドライブなどの光学媒体を使用する1つまたは複数のメモリユニットを備え得る。各当事者103のコンピュータ機器102上のメモリは、処理装置上で実行するように構成された少なくとも1つのクライアントアプリケーション105のそれぞれのインスタンスを含むソフトウェアを記憶する。本明細書において所与の当事者103に帰する任意のアクションは、それぞれのコンピュータ機器102の処理装置上で実行されるソフトウェアを使用して実行され得ることが理解されよう。各当事者103のコンピュータ機器102は、少なくとも1つのユーザ端末、例えば、デスクトップもしくはラップトップコンピュータ、タブレット、スマートフォン、またはスマートウォッチなどのウェアラブルデバイスを備える。所与の当事者103のコンピュータ機器102はまた、ユーザ端末を介してアクセスされるクラウドコンピューティングリソースなどの1つまたは複数の他のネットワーク化されたリソースを備え得る。
クライアントアプリケーションまたはソフトウェア105は、最初に、適切な1つまたは複数のコンピュータ可読記憶媒体上で任意の所与の当事者103のコンピュータ機器102に提供され得、例えば、サーバからダウンロードされ得るか、またはリムーバブルSSD、フラッシュメモリキー、リムーバブルEEPROM、リムーバブル磁気ディスクドライブ、磁気フロッピーディスクもしくはテープ、CDもしくはDVD ROMなどの光ディスク、またはリムーバブル光学ドライブなどのリムーバブル記憶デバイス上で提供され得る。
クライアントアプリケーション105は、少なくとも「ウォレット」機能を備える。これは2つの主要な機能を有する。これらのうちの1つは、それぞれのユーザ当事者103が、ノード104のネットワーク全体に伝搬され、それによってブロックチェーン150に含まれることとなるトランザクション152を作成し、署名し、送ることを可能にすることである。もう1つは、それぞれの当事者に、その当事者が現在所有しているデジタル資産の額を報告することである。出力ベースシステムでは、この第2の機能は、当該当事者に属するブロックチェーン150全体に散在している様々なトランザクション152の出力において定義された額を照合することを含む。
各コンピュータ機器102上のクライアントアプリケーション105のインスタンスは、P2Pネットワーク106のフォワーディングノード104Fのうちの少なくとも1つに動作可能に結合される。これにより、クライアント105のウォレット機能はトランザクション152をネットワーク106に送ることができる。クライアント105はまた、それぞれの当事者103が受信者である任意のトランザクションについてブロックチェーン150にクエリを行うために、ストレージノード104のうちの1つ、いくつか、またはすべてにコンタクトすることができる(または、実施形態では、ブロックチェーン150は、部分的にその公開可視性を通じてトランザクションにおける信頼を提供する公開施設であるので、実際にブロックチェーン150における他の当事者のトランザクションを検査する)。各コンピュータ機器102上のウォレット機能は、トランザクションプロトコルにしたがってトランザクション152を定式化し、送るように構成される。各ノード104は、ノードプロトコルにしたがってトランザクション152を妥当性確認するように構成されたソフトウェアを実行し、フォワーディングノード104Fの場合には、トランザクション152をネットワーク106全体に伝搬させるためにそれらをフォワードするように構成される。トランザクションプロトコルおよびノードプロトコルは互いに対応し、所与のトランザクションプロトコルは所与のノードプロトコルと共に進行し、一緒に所与のトランザクションモデルを実装する。ブロックチェーン150内のすべてのトランザクション152に対して同じトランザクションプロトコルが使用される(ただし、トランザクションプロトコルは、その中のトランザクションの異なるサブタイプを可能にし得る)。ネットワーク106内のすべてのノード104によって同じノードプロトコルが使用される(ただし、これは、トランザクションの異なるサブタイプを、そのサブタイプに対して定義された規則にしたがって異なって処理し、また、異なるノードが異なる役割を担い、したがってプロトコルの異なる対応する態様を実装することができる)。
述べたように、ブロックチェーン150は、ブロック151のチェーンを含み、各ブロック151は、前述したようなプルーフオブワークプロセスによって作成された1つまたは複数のトランザクション152のセットを含む。各ブロック151はまた、ブロック151へのシーケンシャル順序を定義するために、チェーン内の前に作成されたブロック151を指し示すブロックポインタ155を含む。ブロックチェーン150は、プルーフオブワークプロセスによって新しいブロックに含まれるのを待っている有効なトランザクションのプール154も含む。各トランザクション152(生成トランザクション以外)は、トランザクションのシーケンスへの順序を定義するように、前のトランザクションへ戻るポインタを含む(注意:トランザクション152のシーケンスは分岐することが可能である)。ブロック151のチェーンは、チェーン内の最初のブロックであった発生ブロック(Gb)153までずっと戻る。チェーン150内の早期にある1つまたは複数の元のトランザクション152は、先行するトランザクションではなく発生ブロック153を指し示していた。
所与の当事者103、例えばアリスが、ブロックチェーン150に含まれるべき新しいトランザクション152jを送りたいとき、アリスは、関連トランザクションプロトコルにしたがって(アリスのクライアントアプリケーション105内のウォレット機能を使用して)新しいトランザクションを定式化する。次いで、アリスは、クライアントアプリケーション105から、アリスが接続されている1つまたは複数のフォワーディングノード104Fのうちの1つにトランザクション152を送る。例えば、これは、アリスのコンピュータ102に最も近いまたは最良に接続されたフォワーディングノード104Fであり得る。任意の所与のノード104が新しいトランザクション152jを受信すると、それはノードプロトコルおよびそのそれぞれの役割にしたがってそれを処理する。これは、新たに受信されたトランザクション152jが「有効」であるための特定の条件を満たすか否かを最初にチェックすることを含み、その例については、以下でより詳細に説明する。いくつかのトランザクションプロトコルでは、妥当性確認のための条件は、トランザクション152に含まれるスクリプトによってトランザクションごとに構成可能であり得る。代替的に、条件は、単にノードプロトコルの組込み特徴であってもよく、またはスクリプトとノードプロトコルとの組合せによって定義されてもよい。
新たに受信されたトランザクション152jが有効であると見なされるためのテストにパスすることを条件として(すなわち、それが「妥当性確認される」ことを条件として)、トランザクション152jを受信する任意のストレージノード104Sは、そのノード104Sにおいて維持されるブロックチェーン150のコピー内のプール154に新たな妥当性確認済みトランザクション152を追加する。さらに、トランザクション152jを受信する任意のフォワーディングノード104Fは、妥当性確認済みトランザクション152をP2Pネットワーク106内の1つまたは複数の他のノード104へと前方に伝搬する。各フォワーディングノード104Fは同じプロトコルを適用するので、トランザクション152jが有効であると仮定すると、これは、それがすぐにP2Pネットワーク106全体にわたって伝搬されることを意味する。
1つまたは複数のストレージノード104において維持されるブロックチェーン150のコピー内のプール154に認められると、マイナーノード104Mは、新しいトランザクション152を含むプール154の最新バージョンに対してプルーフオブワークパズルを解こうと競い始める(他のマイナー104Mは、プール154の古いビューに基づいてパズルを解こうと試みている可能性があるが、誰が最初に到達しても、次の新しいブロック151がどこで終わり新しいプール154がどこで開始するかを定義することとなり、最終的には、誰かが、アリスのトランザクション152jを含むプール154の一部についてパズルを解く)。新しいトランザクション152jを含むプール154に対してプルーフオブワークが行われると、それは不変的にブロックチェーン150内のブロック151のうちの1つの一部となる。各トランザクション152は、前のトランザクションへ戻るポインタを含むので、トランザクションの順序も不変的に記録される。
UTXOベースモデル
図2は、例示的なトランザクションプロトコルを示す。これは、UTXOベースプロトコルの一例である。トランザクション152(「Tx」と略記される)は、ブロックチェーン150の基本的なデータ構造である(各ブロック151は1つまたは複数のトランザクション152を含む)。以下では、出力ベースまたは「UTXO」ベースプロトコルを参照して説明する。しかしながら、これはすべての可能な実施形態に限定されない。
図2は、例示的なトランザクションプロトコルを示す。これは、UTXOベースプロトコルの一例である。トランザクション152(「Tx」と略記される)は、ブロックチェーン150の基本的なデータ構造である(各ブロック151は1つまたは複数のトランザクション152を含む)。以下では、出力ベースまたは「UTXO」ベースプロトコルを参照して説明する。しかしながら、これはすべての可能な実施形態に限定されない。
UTXOベースモデルでは、各トランザクション(「Tx」)152は、1つまたは複数の入力202および1つまたは複数の出力203を含むデータ構造を含む。各出力203は、未使用トランザクション出力(UTXO)を含み得、これは、(UTXOがまだ償還されていない場合)別の新しいトランザクションの入力202のソースとして使用され得る。UTXOは、デジタル資産(価値の蓄蔵)の額を指定する。それはまた、他の情報の中でも、元となるトランザクションのトランザクションIDを含み得る。トランザクションデータ構造は、入力フィールド(複数可)202および出力フィールド(複数可)203のサイズを示すインジケータを含み得るヘッダ201も含み得る。ヘッダ201はまた、トランザクションのIDを含み得る。実施形態では、トランザクションIDは、(トランザクションID自体を除く)トランザクションデータのハッシュであり、マイナー104Mにサブミットされる生のトランザクション152のヘッダ201に格納される。
図2の各出力はUTXOとして示されているが、トランザクションは、追加的にまたは代替的に、1つまたは複数の使用不可能なトランザクション出力を含み得ることに留意されたい。
アリス103aが、当該デジタル資産の額をボブ103bに転送するトランザクション152jを作成することを望むとする。図2では、アリスの新しいトランザクション152jは「Tx1」とラベル付けされている。これは、シーケンス内の先行するトランザクション152iの出力203においてアリスにロックされたデジタル資産の額を取り、これのうちの少なくとも一部をボブに転送する。先行するトランザクション152iは、図2では「Tx0」とラベル付けされている。Tx0およびTx1は、単なる任意のラベルである。それらは、Tx0がブロックチェーン151内の最初のトランザクションであることも、Tx1がプール154内のすぐ次のトランザクションであることも必ずしも意味するものではない。Tx1は、アリスにロックされた未使用の出力203を依然として有する任意の先行する(すなわち先の)トランザクションを指し示すことができる。
先行するトランザクションTx0は、アリスが新しいトランザクションTx1を作成した時点では、または少なくともアリスがそれをネットワーク106に送る時点までには、すでに妥当性確認されブロックチェーン150に含まれている可能性がある。それは、その時点でブロック151のうちの1つにすでに含まれていてもよいし、プール154で依然として待機していてもよく、その場合には、すぐに新しいブロック151に含まれることになる。代替的に、Tx0およびTx1を作成してネットワーク102に一緒に送ることができるか、またはノードプロトコルが「オーファン」トランザクションのバッファリングを可能にする場合には、Tx0をTx1の後に送ることさえもできる。トランザクションのシーケンスの文脈において本明細書で使用される「先行する」および「後続の」という用語は、トランザクション内で指定されているトランザクションポインタ(どのトランザクションがどの他のトランザクションを指し示すかなど)によって定義されるシーケンス内のトランザクションの順序を指す。それらは、同様に、「先行するもの」および「後続するもの」、または「先の」および「後の」、「親」および「子」などと置き換えられ得る。これは、それらの作成、ネットワーク106への送信、または任意の所与のノード104への到着の順序を必ずしも意味するものではない。それにもかかわらず、先行するトランザクション(先のトランザクションまたは「親」)を指し示す後続するトランザクション(後のトランザクションまたは「子」)は、親トランザクションが妥当性確認されるまでおよび妥当性確認されない限り、妥当性確認されない。その親より前にノード104に到着する子は、オーファンとみなされる。それは、ノードプロトコルおよび/またはマイナー挙動に応じて、親を待つために特定の時間バッファされるかまたは破棄され得る。
先行するトランザクションTx0の1つまたは複数の出力203のうちの1つは、本明細書ではUTXO0とラベル付けされた特定のUTXOを含む。各UTXOは、UTXOによって表されるデジタル資産の額を指定する値と、ロックスクリプトとを含み、ロックスクリプトは、後続のトランザクションが妥当性確認され、したがってUTXOが正常に償還されるために、後続のトランザクションの入力202内のロック解除スクリプトが満たさなければならない条件を定義する。典型的には、ロックスクリプトは、その額を特定の当事者(それが含まれるトランザクションの受益者)にロックする。すなわち、ロックスクリプトは、典型的には、後続のトランザクションの入力内のロック解除スクリプトに、先行するトランザクションがロックされる当事者の暗号署名が含まれるという条件を含むロック解除条件を定義する。
ロックスクリプト(通称scriptPubKey)は、ノードプロトコルによって認識されるドメイン固有言語で書かれたコードの一部分である。そのような言語の特定の例は、「スクリプト」(大文字S)と呼ばれる。ロックスクリプトは、トランザクション出力203を使用するためにどの情報が必要とされるか、例えばアリスの署名の要件を指定する。ロック解除スクリプトはトランザクションの出力に現れる。ロック解除スクリプト(通称scriptSig)は、ロックスクリプト基準を満たすのに必要な情報を提供するドメイン固有言語で書かれたコードの一部分である。例えば、ボブの署名を含み得る。ロック解除スクリプトは、トランザクションの入力202に現れる。
つまり、図示の例では、Tx0の出力203内のUTXO0は、UTXO0が償還されるために(厳密には、UTXO0を償還しようとする後続のトランザクションが有効となるために)アリスの署名Sig PAを必要とするロックスクリプト[Checksig PA]を含む。[Checksig PA]は、アリスの公開鍵-秘密鍵ペアからの公開鍵PAを含む。Tx1の入力202は、(例えば、実施形態ではトランザクションTx0全体のハッシュであるそのトランザクションID、TxID0によって)Tx1を指し示すポインタを含む。Tx1の入力202は、Tx0の任意の他の可能な出力の中から、UTXO0を識別するために、Tx0内のそれを識別するインデックスを含む。Tx1の入力202は、アリスが鍵ペアからのアリスの秘密鍵をデータの所定の部分(暗号では「メッセージ」と呼ばれることもある)に適用することによって作成された、アリスの暗号署名を含むロック解除スクリプト<Sig PA>をさらに含む。有効な署名を提供するためにどのデータ(または「メッセージ」)がアリスによって署名される必要があるかは、ロックスクリプトによって、またはノードプロトコルによって、またはこれらの組合せによって定義され得る。
新しいトランザクションTx1がノード104に到着すると、ノードはノードプロトコルを適用する。これは、ロックスクリプトおよびロック解除スクリプトを一緒に実行して、ロック解除スクリプトがロックスクリプトで定義されている条件(この条件は1つまたは複数の基準を含み得る)を満たすかどうかをチェックすることを含む。実施形態では、これは2つのスクリプトを連結することを含む。
<Sig PA> < PA> || [Checksig PA]
ここで、「||」は連結を表し、「<…>」はデータをスタックに置くことを意味し、「[…]」はロック解除スクリプト(この例ではスタックベース言語)で構成される関数である。同等に、スクリプトは、スクリプトを連結するのではなく、共通スタックを用いて次々に実行され得る。いずれにしても、一緒に実行されるとき、スクリプトは、Tx0の出力内のロックスクリプトに含まれるようなアリスの公開鍵PAを使用して、Tx1の入力内のロックスクリプトが、データの予想される部分に署名したアリスの署名を含むことを認証する。データの予想される部分自体(「メッセージ」)はまた、この認証を実行するためにTx0命令に含まれる必要がある。実施形態では、署名されたデータは、Tx0の全体を含む(つまり、平文のデータの署名された部分を指定する別個の要素は、すでに本質的に存在するので、含まれる必要はない)。
<Sig PA> < PA> || [Checksig PA]
ここで、「||」は連結を表し、「<…>」はデータをスタックに置くことを意味し、「[…]」はロック解除スクリプト(この例ではスタックベース言語)で構成される関数である。同等に、スクリプトは、スクリプトを連結するのではなく、共通スタックを用いて次々に実行され得る。いずれにしても、一緒に実行されるとき、スクリプトは、Tx0の出力内のロックスクリプトに含まれるようなアリスの公開鍵PAを使用して、Tx1の入力内のロックスクリプトが、データの予想される部分に署名したアリスの署名を含むことを認証する。データの予想される部分自体(「メッセージ」)はまた、この認証を実行するためにTx0命令に含まれる必要がある。実施形態では、署名されたデータは、Tx0の全体を含む(つまり、平文のデータの署名された部分を指定する別個の要素は、すでに本質的に存在するので、含まれる必要はない)。
公開-秘密暗号法による認証の詳細は、当業者によく知られている。基本的に、アリスが自身の秘密鍵でメッセージを暗号化することによってメッセージに署名した場合、アリスの公開鍵および平文のメッセージ(暗号化されていないメッセージ)が与えられると、ノード104などの別のエンティティは、メッセージの暗号化バージョンがアリスによって署名されたものに違いないことを認証することができる。署名は、典型的には、メッセージをハッシュし、ハッシュに署名し、これを署名としてメッセージの平文バージョンにタグ付けすることを含み、これにより、公開鍵の任意の保持者が署名を認証することができる。
Tx1内のロック解除スクリプトが、Tx0のロックスクリプト内で指定されている1つまたは複数の条件を満たす場合(つまり、図示の例では、アリスの署名がTx1内で提供され、認証された場合)、ノード104は、Tx1が有効であると見なす。それがマイニングノード104Mである場合、これは、ワークオブプルーフを待つトランザクションのプール154にそれを追加することを意味する。それがフォワーディングノード104Fである場合、トランザクションTx1をネットワーク106内の1つまたは複数の他のノード104にフォワードして、トランザクションTx1がネットワーク全体に伝搬されるようにする。Tx1が妥当性確認されてブロックチェーン150に含まれると、これは、Tx0からのUTXO0を使用済みとして定義する。Tx1は、未使用トランザクション出力203を使用する場合にのみ有効であり得ることに留意されたい。別のトランザクション152によってすでに使用された出力を使用しようとする場合、Tx1は、他のすべての条件が満たされたとしても無効になる。したがって、ノード104はまた、先行するトランザクションTx0内の参照されたUTXOがすでに使用済みである(別の有効なトランザクションへの有効な入力をすでに形成している)かどうかをチェックする必要がある。これは、ブロックチェーン150がトランザクション152に定義された順序を課すことが重要である1つの理由である。実際には、所与のノード104は、どのトランザクション152内のどのUTXO203が使用されたかをマーキングする別個のデータベースを維持し得るが、最終的には、UTXOが使用されたかどうかを定義するものは、ブロックチェーン150内の別の有効なトランザクションへの有効な入力をすでに形成しているかどうかである。
UTXOベーストランザクションモデルでは、所与のUTXOが全体として使用される必要があることに留意されたい。UTXOにおいて使用済みとして定義された額の一部を「後に残す」ことはできず、別の一部が使用される。しかしながら、次のトランザクションの複数の出力間でUTXOからの額を分割することはできる。例えば、Tx0内のUTXO0において定義された額は、Tx1内の複数のUTXO間で分割され得る。したがって、アリスが、UTXO0において定義された額のすべてをボブに与えたくない場合、アリスは、リマインダを使用して、Tx1の第2の出力において自分自身に残りを与えるか、または別の当事者に支払うことができる。
実際には、今日、生成トランザクションの報酬だけでは、典型的には、マイニングを動機付けるのに十分ではないので、アリスは通常、勝利マイナーに対する手数料を含む必要もある。アリスがマイナーに対する手数料を含めない場合、Tx0は、マイナーノード104Mによって拒否される可能性が高く、したがって、技術的に有効であっても、それは依然として伝搬されず、ブロックチェーン150に含まれない(マイナープロトコルは、マイナー104Mが望まない場合にトランザクション152を受け入れることを強制しない)。いくつかのプロトコルでは、マイニング手数料は、それ自体の別個の出力203を必要としない(すなわち、別個のUTXOを必要としない)。代わりに、所与のトランザクション152の入力(複数可)202によって指し示される総額と出力(複数可)203で指定されている総額との間の差が自動的に勝利マイナー104に与えられる。例えば、UTXO0へのポインタがTx1への唯一の入力であり、Tx1は唯一の出力UTXO1を有するとする。UTXO0で指定されているデジタル資産の額がUTXO1で指定されている額より大きい場合、その差が自動的に勝利マイナー104Mに贈られる。しかしながら、代替的にまたは追加的に、マイナー手数料がトランザクション152のUTXO203のうちのそれ自体の1つにおいて明示的に指定され得ることが必ずしも除外されるものではなない。
所与のトランザクション152のすべての出力203で指定されている総額が、そのすべての入力202によって指し示された総額よりも大きい場合、これは、ほとんどのトランザクションモデルにおいて無効性の別の根拠であることにも留意されたい。したがって、そのようなトランザクションは、ブロック151に伝搬もマイニングもされない。
アリスおよびボブのデジタル資産は、ブロックチェーン150内のどこにでもある任意のトランザクション152においてそれらにロックされた未使用UTXOから構成される。したがって、典型的には、所与の当事者103の資産は、ブロックチェーン150全体にわたる様々なトランザクション152のUTXO全体に散在している。ブロックチェーン150内のどこにも、所与の当事者103の総残高を定義する数字は格納されない。クライアントアプリケーション105におけるウォレット機能の役割は、それぞれの当事者にロックされ、別の前方のトランザクションでまだ使用されていない様々なUTXOすべての値を一緒に照合することである。これは、ストレージノード104Sのいずれか、例えば、それぞれの当事者のコンピュータ機器102に最も近いまたは最良に接続されたストレージノード104Sに格納されたブロックチェーン150のコピーにクエリを行うことによって行うことができる。
スクリプトコードは、しばしば、概略的に表される(すなわち、正確な言語ではない)ことに留意されたい。例えば、[Checksig PA]と書いて[Checksig PA] = OP_DUP OP_HASH160 <H(Pa)> OP_EQUALVERIFY OP_CHECKSIGを意味し得る。「OP_...」は、スクリプト言語の特定のオペコードを指す。OP_CHECKSIG(「Checksig」とも呼ばれる)は、2つの入力(署名および公開鍵)を取り、楕円曲線デジタル署名アルゴリズム(ECDSA)を使用して署名の有効性を検証するスクリプトオペコードである。実行時に、署名(「sig」)の存在(occurrence)はスクリプトから除去されるが、ハッシュパズルなどの追加要件は、「sig」入力によって検証されたトランザクションに残る。別の例として、OP_RETURNは、トランザクション内にメタデータを格納することができ、それによってメタデータをブロックチェーン150に不変に記録することができる、トランザクションの使用不可能な出力を作成するためのスクリプト言語のオペコードである。例えば、メタデータは、ブロックチェーンに格納することが望まれる文書を含み得る。
署名PAはデジタル署名である。実施形態において、これは、楕円曲線secp256k1を使用するECDSAに基づく。デジタル署名は、特定のデータの一部分に署名する。実施形態では、所与のトランザクションについて、署名は、トランザクション入力の一部、およびトランザクション出力の全部または一部に署名する。署名された出力の特定の部分は、SIGHASHフラグに依存する。SIGHASHフラグは、どの出力が署名されるかを選択するために署名の最後に含まれる4バイトコードである(したがって、署名時に固定される)。
ロックスクリプトは、それぞれのトランザクションがロックされる当事者の公開鍵を含むという事実を指して、「scriptPubKey」と呼ばれることがある。ロック解除スクリプトは、それが対応する署名を供給するという事実を指して「scriptSig」と呼ばれることがある。しかしながら、より一般的には、UTXOが償還されるための条件が署名を認証することを含むことは、ブロックチェーン150のすべてのアプリケーションにおいて必須ではない。より一般的には、スクリプト言語を使用して、任意の1つまたは複数の条件を定義することができる。したがって、より一般的な用語「ロックスクリプト」および「ロック解除スクリプト」が好まれ得る。
任意選択のサイドチャネル
図3は、ブロックチェーン150を実装するためのさらなるシステム100を示す。システム100は、追加の通信機能が含まれることを除いて、図1に関連して説明したものと実質的に同じである。アリスおよびボブのそれぞれのコンピュータ機器102a、120b上のクライアントアプリケーションは、それぞれ、追加の通信機能を含む。すなわち、これは、(いずれかの当事者または第三者の指示で)アリス103aがボブ103bとの別個のサイドチャネル301を確立することを可能にする。サイドチャネル301は、P2Pネットワークとは別でのデータの交換を可能にする。このような通信は、「オフチェーン」と呼ばれることがある。例えば、これは、当事者の一方がトランザクションをネットワーク106にブロードキャストすることを選択するまで、トランザクションが(まだ)ネットワークP2P106上に公開されたりチェーン150上に進んだりすることなくことなく、アリスとボブとの間でトランザクション152を交換するために使用され得る。代替的にまたは追加的に、サイドチャネル301は、鍵、交渉された額または条件、データコンテンツなどの任意の他のトランザクション関連データを交換するために使用され得る。
図3は、ブロックチェーン150を実装するためのさらなるシステム100を示す。システム100は、追加の通信機能が含まれることを除いて、図1に関連して説明したものと実質的に同じである。アリスおよびボブのそれぞれのコンピュータ機器102a、120b上のクライアントアプリケーションは、それぞれ、追加の通信機能を含む。すなわち、これは、(いずれかの当事者または第三者の指示で)アリス103aがボブ103bとの別個のサイドチャネル301を確立することを可能にする。サイドチャネル301は、P2Pネットワークとは別でのデータの交換を可能にする。このような通信は、「オフチェーン」と呼ばれることがある。例えば、これは、当事者の一方がトランザクションをネットワーク106にブロードキャストすることを選択するまで、トランザクションが(まだ)ネットワークP2P106上に公開されたりチェーン150上に進んだりすることなくことなく、アリスとボブとの間でトランザクション152を交換するために使用され得る。代替的にまたは追加的に、サイドチャネル301は、鍵、交渉された額または条件、データコンテンツなどの任意の他のトランザクション関連データを交換するために使用され得る。
サイドチャネル301は、P2Pオーバーレイネットワーク106と同じパケット交換ネットワーク101を介して確立され得る。代替的にまたは追加的に、サイドチャネル301は、モバイルセルラーネットワークなどの異なるネットワーク、またはローカルワイヤレスネットワークなどのローカルエリアネットワーク、またはさらにはアリスのデバイス1021とボブのデバイス102bとの間の直接の有線またはワイヤレスリンクを介して確立され得る。一般に、本明細書のどこかで参照されるサイドチャネル301は、「オフチェーン」すなわちP2Pオーバーレイネットワーク106とは別でデータを交換するための1つまたは複数のネットワーキング技術または通信媒体を介した任意の1つまたは複数のリンクを含み得る。2つ以上のリンクが使用される場合、全体としてのオフチェーンリンクの束または集合は、サイドチャネル301と呼ばれ得る。したがって、アリスおよびボブがサイドチャネル301上で情報またはデータの特定の部分などを交換すると言われている場合、これは、これらのデータの部分のすべてが全く同じリンクまたは同じタイプのネットワーク上で送られなければならないことを必ずしも意味するものではないことに留意されたい。
ノードソフトウェア
図4は、UTXOまたは出力ベースモデルの例において、P2Pネットワーク106の各ノード104上で実行されるノードソフトウェア400の例を示す。ノードソフトウェア400は、プロトコルエンジン401と、スクリプトエンジン402と、スタック403と、アプリケーションレベル決定エンジン404と、1つまたは複数のブロックチェーン関連機能モジュール405のセットとを含む。任意の所与のノード104において、これらは、マイニングモジュール405M、フォワーディングモジュール405F、および格納モジュール405S(ノードの1つまたは複数の役割に応じて)のうちのいずれか1つ、2つ、または3つすべてを含み得る。プロトコルエンジン401は、トランザクション152の異なるフィールドを認識し、ノードプロトコルにしたがってそれらを処理するように構成される。別の先行するトランザクション152m-1(Txm-1)の出力(例えば、UTXO)を指し示す入力を有するトランザクション152m(Txm)が受信されると、プロトコルエンジン401は、Txm内のロック解除スクリプトを識別し、それをスクリプトエンジン402に渡す。プロトコルエンジン401はまた、Txmの入力内のポインタに基づいて、Txm-1を識別し、取り出す。それは、Txm-1がまだブロックチェーン150上にない場合には保留中のトランザクションのそれぞれのノード自体のプール154から、またはTxm-1がすでにブロックチェーン150上にある場合にはそれぞれのノードまたは別のノード104に格納されたブロックチェーン150内のブロック151のコピーからTxm-1を取り出し得る。いずれにしても、スクリプトエンジン401は、Txm-1の指し示された出力におけるロックスクリプトを識別し、これをスクリプトエンジン402に渡す。
図4は、UTXOまたは出力ベースモデルの例において、P2Pネットワーク106の各ノード104上で実行されるノードソフトウェア400の例を示す。ノードソフトウェア400は、プロトコルエンジン401と、スクリプトエンジン402と、スタック403と、アプリケーションレベル決定エンジン404と、1つまたは複数のブロックチェーン関連機能モジュール405のセットとを含む。任意の所与のノード104において、これらは、マイニングモジュール405M、フォワーディングモジュール405F、および格納モジュール405S(ノードの1つまたは複数の役割に応じて)のうちのいずれか1つ、2つ、または3つすべてを含み得る。プロトコルエンジン401は、トランザクション152の異なるフィールドを認識し、ノードプロトコルにしたがってそれらを処理するように構成される。別の先行するトランザクション152m-1(Txm-1)の出力(例えば、UTXO)を指し示す入力を有するトランザクション152m(Txm)が受信されると、プロトコルエンジン401は、Txm内のロック解除スクリプトを識別し、それをスクリプトエンジン402に渡す。プロトコルエンジン401はまた、Txmの入力内のポインタに基づいて、Txm-1を識別し、取り出す。それは、Txm-1がまだブロックチェーン150上にない場合には保留中のトランザクションのそれぞれのノード自体のプール154から、またはTxm-1がすでにブロックチェーン150上にある場合にはそれぞれのノードまたは別のノード104に格納されたブロックチェーン150内のブロック151のコピーからTxm-1を取り出し得る。いずれにしても、スクリプトエンジン401は、Txm-1の指し示された出力におけるロックスクリプトを識別し、これをスクリプトエンジン402に渡す。
したがって、スクリプトエンジン402は、Txm-1のロックスクリプトと、Txmの対応する入力からのロック解除スクリプトとを有する。例えば、Tx1およびTx2が図4に示されているが、同じことが、Tx0とTx1などの任意のペアのトランザクションにも当てはまる。スクリプトエンジン402は、前述したように2つのスクリプトを一緒に実行し、これは、使用されているスタックベーススクリプト言語(例えば、Script)にしたがって、スタック403上にデータを配置し、そこからデータを取り出すことを含む。
スクリプトを一緒に実行することによって、スクリプトエンジン402は、ロック解除スクリプトがロックスクリプトにおいて定義された1つまたは複数の基準を満たすかどうか、すなわち、ロックスクリプトが含まれる出力を「ロック解除」するかどうかを決定する。スクリプトエンジン402は、この決定の結果をプロトコルエンジン401に返す。スクリプトエンジン402は、ロック解除スクリプトが対応するロックスクリプトで指定されている1つまたは複数の基準を満たすと決定した場合、結果「真」を返す。そうでなければ、結果「偽」を返す。
出力ベースモデルでは、スクリプトエンジン402からの結果「真」は、トランザクションの有効性の条件のうちの1つである。典型的には、Txmの出力(複数可)で指定されているデジタル資産の総額が入力(複数可)によって指し示された総額を超えないこと、およびTxm-1の指し示された出力が別の有効なトランザクションによってまだ使用されていないことなど、同様に満たされなければならないプロトコルエンジン401によって評価される1つまたは複数のさらなるプロトコルレベル条件も存在する。プロトコルエンジン401は、スクリプトエンジン402からの結果を1つまたは複数のプロトコルレベル条件と共に評価し、それらがすべて真である場合にのみ、トランザクションTxmを妥当性確認する。プロトコルエンジン401は、トランザクションが有効であるかどうかの指示をアプリケーションレベル決定エンジン404に出力する。Txmが実際に妥当性確認されるという条件でのみ、決定エンジン404は、Txmに関してそれぞれのブロックチェーン関連機能を実行するために、マイニングモジュール405Mおよびフォワーディングモジュール405Fの一方または両方を制御することを選択し得る。これは、マイニングモジュール405Mが、ブロック151にマイニングするためにTxmをノードのそれぞれのプール154に追加すること、および/またはフォワーディングモジュール405FがTxmをP2Pネットワーク106内の別のノード104にフォワードすることを含み得る。しかしながら、実施形態では、決定エンジン404は無効なトランザクションをフォワードまたはマイニングすることを選択しないが、これは、逆に、単に有効であるという理由で有効なトランザクションのマイニングまたはフォワードをトリガする義務があることを必ずしも意味するものではないことに留意されたい。任意選択で、実施形態では、決定エンジン404は、一方または両方の機能をトリガする前に、1つまたは複数の追加の条件を適用することができる。例えば、ノードがマイニングノード104Mである場合、決定エンジンは、トランザクションが有効であり、かつ十分なマイニング手数料を残しているという条件でのみトランザクションをマイニングすることを選択し得る。
本明細書における「真」および「偽」という用語は、単一の2進数(ビット)のみの形態で表される結果を返すことに必ずしも限定されないが、それは確かに1つの可能な実装形態であることにも留意されたい。より一般的には、「真」は、成功または肯定的な結果を示す任意の状態を指すことができ、「偽」は、不成功または非肯定的な結果を示す任意の状態を指すことができる。例えば、アカウントベースモデル(図4には図示せず)では、「真」の結果は、ノード104による署名の暗黙的な(プロトコルレベルの)妥当性確認と、スマートコントラクトの追加の肯定的な出力との組合せによって示され得る(個々の結果の両方が真である場合、全体の結果が真を示すとみなされる)。
予備的事項
公開鍵暗号化
公開鍵暗号(PKC)は、機密性を提供する暗号化方式と、真正性および否認防止を提供するデジタル署名方式とを利用する。
公開鍵暗号化
公開鍵暗号(PKC)は、機密性を提供する暗号化方式と、真正性および否認防止を提供するデジタル署名方式とを利用する。
公開鍵暗号化は、(特に、鍵を交換するためのプライベートチャネルがない場合)大きなグループ内のプレーヤの任意のペア間の秘密通信を可能にする。各プレーヤは、解読に使用される秘密の秘密鍵と、公開され、そのプレーヤに送られるメッセージを暗号化するために使用される対応する公開鍵という鍵のペアを有する。アリスというプレーヤの場合、アリスの秘密鍵は、skAliceによって与えられ、アリスの公開鍵は、PKAliceによって与えられ得る。機密メッセージmをアリスに送りたい任意のプレーヤは、アリスの公開鍵PKAliceを使用して、メッセージを暗号化し、暗号文cを作り出す。その暗号文は、skAliceを使ってのみ平文に解読されることができるものでなければならない。
c=E(m,PKAlice)
m=D(c,skAlice)
c=E(m,PKAlice)
m=D(c,skAlice)
そのようなシステムを実現するために、暗号化には、落とし戸付き一方向関数(trapdoor one-way function)の使用が含まれるべきである。一方向関数とは、一方向x→f(x)で計算することは容易であるが、逆f(x)→xは実行不可能である関数であり、すなわち、xが分かればf(x)を見つけることは容易であるが、f(x)が分かってもxを見つけることは計算上実行不可能である。一方、落とし戸付き一方向関数では、追加情報(落とし戸)の知識だけでもxを見つけることが容易であるため、f(x,trapdoor)→xが実現可能である。一般に、実行不可能性は、計算的に困難であると考えられるよく研究された数学的問題に基づいている。
公開鍵暗号化より前では、秘密通信を提供するために対称鍵暗号化を使用していた。対称鍵暗号化では、通信を行う当事者は、メッセージの暗号化および解読の両方に使用される1つのシークレット鍵(secret key)を共有する。公開鍵暗号化は、非対称鍵暗号化としても知られている。公開鍵暗号化方式は、一般に、以下を含む:
・鍵生成
-アリスは、ランダムプールから秘密鍵skAliceを生成する。
-アリスは、秘密鍵からアリスの公開鍵PKAliceを導出し、それをすべての当事者に公開する。
・暗号化
-任意の当事者メンバは、PKAliceを使用して、メッセージmを暗号化する。
c=E(m,PKAlice)
・解読
-メッセージを解読するために、アリスは、アリスの秘密鍵skAlice,m=D(c,skAlice)を使用する。
・鍵生成
-アリスは、ランダムプールから秘密鍵skAliceを生成する。
-アリスは、秘密鍵からアリスの公開鍵PKAliceを導出し、それをすべての当事者に公開する。
・暗号化
-任意の当事者メンバは、PKAliceを使用して、メッセージmを暗号化する。
c=E(m,PKAlice)
・解読
-メッセージを解読するために、アリスは、アリスの秘密鍵skAlice,m=D(c,skAlice)を使用する。
公開鍵暗号化方式が安全であるためには、対称鍵暗号システムよりも多くの要件を満たす必要がある。これらの要件は、PKAliceからskAliceを導出することが計算的に実行不可能であるべきであることと、攻撃者が任意のmについてcを計算することができたとしても、所与のcについてmを知ることが計算的に実行不可能であるべきであることとを含む。
これらの追加の要件のために、安全で実用的な公開鍵暗号化方式を設計することは、対称鍵暗号化よりもはるかに困難である。一般に、公開鍵暗号化鍵は、同じレベルのセキュリティに達するために、対称鍵の数倍の大きさである。それに加えて、暗号化および解読アルゴリズムは、対称暗号システムのものよりも遅い。実際のシステムでは、データを暗号化するために対称鍵暗号化が使用され、使用される対称鍵を交換するために最初に公開鍵暗号化が使用される。
デジタル署名
落とし戸付き一方向関数を使用して、デジタル署名方式を構築することができる。デジタル署名設定では、各プレーヤは、署名に使用される自身の秘密の秘密鍵と、検証に使用される対応する公開鍵とを有する。デジタル署名方式は以下を含む:
・鍵生成
-アリスは、ランダムプールから秘密鍵skAliceを生成する。
-アリスは、秘密鍵からアリスの公開鍵PKAliceを導出し、それをすべての当事者に公開する。
・署名
-アリスは、アリスの秘密鍵skAliceを使用してメッセージmに署名し、署名sを取得する、
s=Sign(m,skAlice)
・署名の検証
-任意の当事者は、以下を実行することによって署名を妥当性確認することができる:
Verify(m,s,PKAlice)
落とし戸付き一方向関数を使用して、デジタル署名方式を構築することができる。デジタル署名設定では、各プレーヤは、署名に使用される自身の秘密の秘密鍵と、検証に使用される対応する公開鍵とを有する。デジタル署名方式は以下を含む:
・鍵生成
-アリスは、ランダムプールから秘密鍵skAliceを生成する。
-アリスは、秘密鍵からアリスの公開鍵PKAliceを導出し、それをすべての当事者に公開する。
・署名
-アリスは、アリスの秘密鍵skAliceを使用してメッセージmに署名し、署名sを取得する、
s=Sign(m,skAlice)
・署名の検証
-任意の当事者は、以下を実行することによって署名を妥当性確認することができる:
Verify(m,s,PKAlice)
上記システムは、真正性、否認防止、および完全性を提供することに留意されたい。これは、秘密鍵の所有者以外は、メッセージを選択してそれに署名し、対応する公開鍵にリンクされた署名を作り出すことができないからである。mまたはsが変更されると妥当性確認が失敗に終わるので、システムは完全性を提供する。
公開鍵インフラストラクチャ(PKI)
PKCは、対称鍵設定における秘密共有の問題を大幅に解決した。しかしながら、アリスの公開鍵がアリスに属することをどのように保証するかという問題が残っている。それが不注意に破壊されるか、または任意の悪意のあるプレーヤがアリスの公開鍵を自身の公開鍵で置き換えることができた場合、任意の悪意のあるプレーヤは、悪意のあるプレーヤの公開鍵によって暗号化されたアリスに宛てのすべてのメッセージを解読することができる。さらに、一般に、PKAliceは、少なくとも500ビットのランダムに見える文字列であるので、任意の他のプレーヤがアリスの実際の鍵と悪意のあるプレーヤの鍵とを区別する容易な方法はない。
PKCは、対称鍵設定における秘密共有の問題を大幅に解決した。しかしながら、アリスの公開鍵がアリスに属することをどのように保証するかという問題が残っている。それが不注意に破壊されるか、または任意の悪意のあるプレーヤがアリスの公開鍵を自身の公開鍵で置き換えることができた場合、任意の悪意のあるプレーヤは、悪意のあるプレーヤの公開鍵によって暗号化されたアリスに宛てのすべてのメッセージを解読することができる。さらに、一般に、PKAliceは、少なくとも500ビットのランダムに見える文字列であるので、任意の他のプレーヤがアリスの実際の鍵と悪意のあるプレーヤの鍵とを区別する容易な方法はない。
この問題は、デジタル証明書およびPKIを使用して部分的に回避することができる。デジタル証明書は、アリスの公開鍵およびアリスの識別子を含むメッセージを主に含む。これらのフィールドのハッシュは、認証局(CA)によって署名される。認証局は、信頼できる第三者機関であり、その公開鍵は、すべての当事者メンバによって知られており、完全に信頼される。したがって、任意の当事者メンバは、証明書が実際にCAによって署名されていることを容易に妥当性確認することができる。CAは、アリスの公開鍵が実際にアリスに属していることを保証する責任を負う。アリスが、既知のCAからの証明書を使用してアリスの公開鍵を証明することができる場合、アリスは、アリスの公開鍵を使用して、暗号化されたメッセージを受信することができ、または他のプレーヤに証明書を発行することさえできる。
実際のシステムの場合、グループのすべてのメンバが公開鍵を知ることができる単一の認証局が存在する。このCAは、他のCAに証明書を提供することができ、他のCAは、他のプレーヤに証明書を発行することができる。一例として、ウェブブラウザは、多数のCAの予めインストールされた証明書を有する。これらの証明書のいずれも、任意のhttpsサーバに対するroot of trustとして機能することができる。サーバによって提供された証明書がCAに対する有効なroot of trustを有さない場合、ブラウザは、訪問したhttpsサーバに証明書が属することを検証できないことをユーザに警告することができる。
証明書の既知の規格は、X.509と呼ばれる。これは以下のフィールドを含む:
・ バージョン
・ 有効期間(いつから有効かおよびいつまで有効か)
・ 証明書のイシュア
・ 公開鍵のタイプ、長さおよび値
・ 使用法(例えば、この証明書を使用して他の証明書に署名することができるか)
・ ハッシュタイプおよび値など
・ 対象
・ バージョン
・ 有効期間(いつから有効かおよびいつまで有効か)
・ 証明書のイシュア
・ 公開鍵のタイプ、長さおよび値
・ 使用法(例えば、この証明書を使用して他の証明書に署名することができるか)
・ ハッシュタイプおよび値など
・ 対象
アイデンティティ(ID)ベース暗号化(IBE)
IDベース暗号化自体は、80年台初頭に提案された。IBE方式は、暗号化鍵が電子メールまたは携帯電話番号などの任意の文字列である公開鍵暗号化方式である。そのようなシステムでは、暗号化されたメッセージをアリスに送るためにはアリスの電子メールアドレスを知っていれば十分である。認証局またはアリスの公開鍵を取得するためのアリスとの事前通信の必要はない。
IDベース暗号化自体は、80年台初頭に提案された。IBE方式は、暗号化鍵が電子メールまたは携帯電話番号などの任意の文字列である公開鍵暗号化方式である。そのようなシステムでは、暗号化されたメッセージをアリスに送るためにはアリスの電子メールアドレスを知っていれば十分である。認証局またはアリスの公開鍵を取得するためのアリスとの事前通信の必要はない。
典型的なIBEシステムは、一般に「秘密鍵生成局」(PKG)と呼ばれる信頼できる第三者機関を依然として有していなければならない。IBE方式は、以下のアルゴリズムを利用する:
・マスタ鍵生成
-PKGは、ランダムプールからマスタ秘密鍵skmasterを生成する。
-PKGは、秘密鍵からそれ自体の公開鍵PKmasterを導出し、PKmasterをすべての当事者に公開する。
・加入者鍵生成
-アリスは、アリスの公開鍵(例えば、アリスの電子メールアドレス、携帯電話番号など)IDAliceを選択し、PKGからの秘密鍵(すなわち、復号鍵)を要求する。
-PKGは、マスタ秘密鍵skmasterおよびアリスの公開鍵IDAliceからアリスの秘密鍵skAliceを生成し、skAliceを安全なチャネルを通してアリスに送る。
・暗号化
-メッセージmをアリスと安全に通信することを望む任意の当事者は、以下を使用して、アリスの公開鍵IDAliceを使用することができる:
c=E(m,IDAlice)
・解読
-アリスは、アリスの秘密鍵skAliceを使用してメッセージを解読する。
m=D(c,skAlice)
・マスタ鍵生成
-PKGは、ランダムプールからマスタ秘密鍵skmasterを生成する。
-PKGは、秘密鍵からそれ自体の公開鍵PKmasterを導出し、PKmasterをすべての当事者に公開する。
・加入者鍵生成
-アリスは、アリスの公開鍵(例えば、アリスの電子メールアドレス、携帯電話番号など)IDAliceを選択し、PKGからの秘密鍵(すなわち、復号鍵)を要求する。
-PKGは、マスタ秘密鍵skmasterおよびアリスの公開鍵IDAliceからアリスの秘密鍵skAliceを生成し、skAliceを安全なチャネルを通してアリスに送る。
・暗号化
-メッセージmをアリスと安全に通信することを望む任意の当事者は、以下を使用して、アリスの公開鍵IDAliceを使用することができる:
c=E(m,IDAlice)
・解読
-アリスは、アリスの秘密鍵skAliceを使用してメッセージを解読する。
m=D(c,skAlice)
IBEでは、PKGは、すべてのユーザのすべての秘密鍵を知っている。特定のアプリケーションでは、これは許容可能であり得る。例えば、会社は、IBEを使用してその従業員に機密性を確保することができ、従業員の秘密鍵を制御することによって、従業員の暗号化されたデータへのアクセス、アクセスの委任または取り消しができることを望むであろう。
2つ以上のPKGを有するIBEを設計することも可能である。すべてのPKGが共謀してアリスの秘密鍵を明らかにしない限り、アリスは、自身の復号鍵を所有する唯一の者である。システムは、少なくとも1つの正直なPKGを必要とする。
安全な通信アプリケーションでは、対称暗号化システムの鍵を交換するためにIBEが使用される。緊急サービスによる使用など、高速呼設定が必要とされるアプリケーションではIBEを使用することが提案されている。
上記のIBEアルゴリズムが示すように、秘密鍵skAliceは、信頼できる第三者機関であるPKGによって計算され、ユーザに渡される。PKGが後で秘密鍵を使用しないという保証はない。PKGが完全に信頼されると仮定しても、攻撃者の観点からは、PKGは、セキュリティチェーン上の単一の障害点として依然として機能する。したがって、鍵エスクローをIBEから除去することができれば、そのようなIBEシステムのセキュリティ脆弱性を、利益を失うことなく低減することができる。
双線型写像
G1およびG2を、ある大きな素数qに対する位数qの2つの群とする。Boneh-Franklin IBE方式(BF-IBE)は、これら2つの群間の双線型写像e:G1×G1→G2を使用する。写像は、以下の特性を満たさなければならない:
1. 双線型であること:すべてのP,Q∈G1およびすべての
について
e(aP,bQ)=e(P,Q)ab
である場合、写像e:G1×G1→G2は、双線型である。
2. 非退化であること:写像は、G1×G1内のすべてのペアをG2内の単位元(identity)に送るものではない。G1、G2は素数位数の群であるので、これは、PがG1の生成元である場合、e(P,P)がG2の生成元であることを意味することに留意されたい。
3. 計算可能であること:任意のP,Q∈G1についてe(P,Q)を計算する効率的なアルゴリズムが存在する。
G1およびG2を、ある大きな素数qに対する位数qの2つの群とする。Boneh-Franklin IBE方式(BF-IBE)は、これら2つの群間の双線型写像e:G1×G1→G2を使用する。写像は、以下の特性を満たさなければならない:
1. 双線型であること:すべてのP,Q∈G1およびすべての
e(aP,bQ)=e(P,Q)ab
である場合、写像e:G1×G1→G2は、双線型である。
2. 非退化であること:写像は、G1×G1内のすべてのペアをG2内の単位元(identity)に送るものではない。G1、G2は素数位数の群であるので、これは、PがG1の生成元である場合、e(P,P)がG2の生成元であることを意味することに留意されたい。
3. 計算可能であること:任意のP,Q∈G1についてe(P,Q)を計算する効率的なアルゴリズムが存在する。
上記の特性を満たす任意の双線型写像について、G1における離散対数問題は、G2における離散対数問題よりも困難ではない。BF-IBEでは、G1は、楕円曲線E/Fpの点の加法群の部分群である。群G2は、有限体
の乗法群の部分群である。
Boneh-Franklin IBE
以下では、単一の信頼できる第三者機関(TTP)がPKGとして機能するBF-IBE方式について説明する。以下のパラメータがPKGによって使用されると仮定する:
1. 素数位数qの群のペア(G1,G2)
2. 双線型ペアリングe:G1×G1→G2
3. 生成点P∈G1
4. 4つのハッシュ関数:
以下では、単一の信頼できる第三者機関(TTP)がPKGとして機能するBF-IBE方式について説明する。以下のパラメータがPKGによって使用されると仮定する:
1. 素数位数qの群のペア(G1,G2)
2. 双線型ペアリングe:G1×G1→G2
3. 生成点P∈G1
4. 4つのハッシュ関数:
{0,1}*は任意の長さのバイナリ列を示し、{0,1}nは長さnのバイナリ列を示し、
は単位元のないG1であることに留意されたい。したがって、H1は、{0,1}*を入力として取り、
の元(element)を出力する任意の関数である。H3は、それぞれ長さnのバイナリ列のペアを
の元に写像する関数である。
は、Zq\{0}内の元からなる、すなわち加法単位元を含まない、位数qの乗法群である。
・セットアップ[アルゴリズム1A]
PKGは、このアルゴリズムを1回実行する:
sは、マスタ秘密であり、PKGのみが知っているべきであり、高い品質のランダム性を有する。sは、暗号的に安全な擬似乱ジェネレータ(CSPRG)を使用して取得され得る。
PKGは、このアルゴリズムを1回実行する:
・鍵生成[アルゴリズム2A]
ユーザのアイデンティティIDAが与えられると、PKGは、シークレット鍵sを使用してこのアルゴリズムを実行する。
1. G1における点であるQA=H1(IDA)を計算する。
2. DA=s・QAを返す。
3. PKGは、安全なチャネル上でDAをユーザに送る。
4. ユーザの公開鍵はIDAである。
5. ユーザの秘密鍵はDAである。
ユーザのアイデンティティIDAが与えられると、PKGは、シークレット鍵sを使用してこのアルゴリズムを実行する。
1. G1における点であるQA=H1(IDA)を計算する。
2. DA=s・QAを返す。
3. PKGは、安全なチャネル上でDAをユーザに送る。
4. ユーザの公開鍵はIDAである。
5. ユーザの秘密鍵はDAである。
・暗号化[アルゴリズム3A]
メッセージm∈{0,1}nを暗号化するためにアイデンティティIDAとPKGの公開鍵Ppubとが与えられると、誰でも以下を実行することができる:
1. QA=H1(IDA)を計算する。
2. nビットの乱数σを選ぶ。
3. r=H3(σ,m)を計算する。
4. 暗号文cを、以下のトリプレット(U,V,W)として計算する:
メッセージm∈{0,1}nを暗号化するためにアイデンティティIDAとPKGの公開鍵Ppubとが与えられると、誰でも以下を実行することができる:
1. QA=H1(IDA)を計算する。
2. nビットの乱数σを選ぶ。
3. r=H3(σ,m)を計算する。
4. 暗号文cを、以下のトリプレット(U,V,W)として計算する:
ユーザの秘密鍵を更新することは、ユーザの公開鍵も更新されるべきであることを意味する。公開鍵は定数文字列ID(電子メール、モバイル番号)であると予想されるので、各ユーザについて、識別子定数文字列と変数文字列との連結として公開鍵を有することによって、鍵更新を達成することができる。変数文字列は、有効期間、例えばタイムスタンプを表し得る。
マルチPKG Boneh-Franklin IBE
上記のIBE方式は、2つ以上のPKGを有するように一般化することができ、必要とされる信頼がいくつかのPKGにわたって分散されることを可能にするため、個々のPKGへの依存を低減する。また、ユーザ(すなわち、アイデンティティの所有者)もPKGグループの一部として含まれるため、鍵エスクローの問題が取り除かれる。
上記のIBE方式は、2つ以上のPKGを有するように一般化することができ、必要とされる信頼がいくつかのPKGにわたって分散されることを可能にするため、個々のPKGへの依存を低減する。また、ユーザ(すなわち、アイデンティティの所有者)もPKGグループの一部として含まれるため、鍵エスクローの問題が取り除かれる。
・鍵生成[アルゴリズム2B]
ユーザのアイデンティティIDAが与えられると、各PKGは、その部分シークレット鍵siを使用して独立してこのアルゴリズムを実行する:
1. G1における点であるQA=H1(IDA)を計算する。
2. 安全なチャネル上でDiA=si・QAをIDAの所有者に返す。
ユーザのアイデンティティIDAが与えられると、各PKGは、その部分シークレット鍵siを使用して独立してこのアルゴリズムを実行する:
1. G1における点であるQA=H1(IDA)を計算する。
2. 安全なチャネル上でDiA=si・QAをIDAの所有者に返す。
この等式は、ユーザの公開鍵とPKGの公開鍵との間の依存関係をチェックし、すなわち、どのPKGパラメータがアリスによって使用されているかを検証する。しかしながら、これは、IDAおよび(XA,YA)の両方がアリスに属することを検証しない。
完全なIDベース公開鍵(IDA,XA,YA)を用いてメッセージmを暗号化するために、IDAおよびYAの両方は、以下のアルゴリズムを実行する必要がある:
1. QA=H1(IDA)を計算する。
2. nビットの乱数σを選ぶ。
3. r=H3(σ,m)を計算する。
4. 暗号文c=(U,V,W)を、以下のトリプレットとして計算する:
1. QA=H1(IDA)を計算する。
2. nビットの乱数σを選ぶ。
3. r=H3(σ,m)を計算する。
4. 暗号文c=(U,V,W)を、以下のトリプレットとして計算する:
通常、PKIでは、ユーザの公開鍵はCAによって署名され、この場合、ユーザの公開鍵の検証は、本質的に、CAによって署名されたデジタル署名の検証である。この場合、検証は、2つの双線型ペアリングおよび1つの等式チェックである。さらに、ユーザは自身の秘密値を生成することができるので、トレードオフとして、自身のアイデンティティIDAに加えて公開鍵(XA,YA)を導入しなければならない。異なるシナリオによっては、このトレードオフは、鍵エスクロー問題、すなわち信頼の問題を解決するので、重大であり得る。
XAおよび
は暗号化アルゴリズムにおいて使用されないことにも留意されたい。それらは、代わりに、XAおよびYAが同じ信頼できるPKGパラメータから生成されることをチェックする際に使用される。盗聴者(「イブ」)がアリスと名乗り、同じPKGに加入した後に得た(XE,YE)をボブに送った場合、盗聴者はこのチェックにパスするが、ボブによって使用されたQAにより解読は失敗することに留意されたい。イブは、PKGパラメータ、特に
を変更することができれば、アリスに成りすますことに成功することができるが、本開示では、すべての当事者が、PKGパラメータを取得し、それらの真正性および完全性を安全な方法でチェックすることができると仮定する。したがって、イブは、この攻撃に成功させることはできないであろう。
ユーザをPKGとして有する場合、安全なシステムにはアリスと単一のPKGを有すれば十分である。すなわち、一方の鍵シェアはPKGによって生成され、他方の鍵シェアはユーザによって生成される。
・解読[アルゴリズム4B]
暗号文c=(U,V,W)を解読するために、秘密鍵sAは、以下のアルゴリズムを実行する必要がある:
解読に成功した場合、暗号化の場合と同様に、σ'=σ、m'=m、およびr'=rであることに留意されたい。
暗号文c=(U,V,W)を解読するために、秘密鍵sAは、以下のアルゴリズムを実行する必要がある:
アイデンティティ(ID)ベース公開鍵生成プロトコル
本開示の実施形態は、IDベース公開鍵生成プロトコル、または同等に、IDベース暗号化鍵生成プロトコルを提供する。具体的には、IDベース公開鍵/暗号化鍵は、ユーザについて、そのユーザの個人識別子に基づいて生成されるため、鍵がユーザのアイデンティティに結び付けられる。個人識別子は、名前および/または住所、電子メールアドレス、電話番号、パスポート番号、運転免許証番号、国民保険番号、ソーシャルメディアのプロフィール、生年月日などのうちの1つまたは複数を含み得る。個人識別子はまた、例えば警察官のような特定のグループのメンバであること、または例えばHRのような特定の部門で働いていること、または特定のプロジェクトで働いていること、またはセキュリティクリアランスを有していることといった属性であり得る。グループのメンバである例では、他の識別子または属性も使用されない限り、グループの任意のメンバが、IDベース公開鍵を用いて暗号化されたメッセージを解読することができ得ることに留意されたい。例えば、同一グループの各メンバは、IDベース公開鍵に対応する秘密鍵へのアクセスを与えられる可能性がある。
本開示の実施形態は、IDベース公開鍵生成プロトコル、または同等に、IDベース暗号化鍵生成プロトコルを提供する。具体的には、IDベース公開鍵/暗号化鍵は、ユーザについて、そのユーザの個人識別子に基づいて生成されるため、鍵がユーザのアイデンティティに結び付けられる。個人識別子は、名前および/または住所、電子メールアドレス、電話番号、パスポート番号、運転免許証番号、国民保険番号、ソーシャルメディアのプロフィール、生年月日などのうちの1つまたは複数を含み得る。個人識別子はまた、例えば警察官のような特定のグループのメンバであること、または例えばHRのような特定の部門で働いていること、または特定のプロジェクトで働いていること、またはセキュリティクリアランスを有していることといった属性であり得る。グループのメンバである例では、他の識別子または属性も使用されない限り、グループの任意のメンバが、IDベース公開鍵を用いて暗号化されたメッセージを解読することができ得ることに留意されたい。例えば、同一グループの各メンバは、IDベース公開鍵に対応する秘密鍵へのアクセスを与えられる可能性がある。
図5は、本開示の実施形態を実装するための例示的なシステム500を示す。例示的なシステムは、ユーザ(アリス)103aと、鍵生成器501と、P2Pブロックチェーンノード106のネットワークとを備える。いくつかの実施形態では、システム500は、複数の鍵生成器501を備え得る。好ましくは、1つ、いくつか、またはすべての鍵生成器501は、アリス103aに対してアイデンティティ検証チェックを実行するように構成され、これは、鍵生成器501が、アリス103aに属するものとして識別子を検証できることを意味する。例えば、鍵生成器は、KYC(know your customer)プロトコルの一部としてアイデンティティチェックを実行し得る。
アリス103aのコンピュータ機器およびブロックチェーンノード104は、図1~図4を参照して上述されているので、ここではさらに詳細に説明されない。秘密鍵生成局(PKG)とも呼ばれる各鍵生成器501は、それぞれのコンピュータ機器を備える。各PKG501のコンピュータ機器は、1つまたは複数のプロセッサ、例えば、1つまたは複数のCPU、GPU、他のアクセラレータプロセッサ、特定用途向けプロセッサ、および/またはFPGAを備えるそれぞれの処理装置を備える。各PKG501のコンピュータ機器は、メモリ、すなわち1つまたは複数の非一時的コンピュータ可読媒体の形態でコンピュータ可読ストレージをさらに備える。このメモリは、1つまたは複数のメモリ媒体、例えばハードディスクなどの磁気媒体、SSD、フラッシュメモリまたはEEPROMなどの電子媒体、および/または光ディスクドライブなどの光学媒体を用いる1つまたは複数のメモリユニットを備え得る。各PKG501のコンピュータ機器上のメモリは、処理装置上で実行するように構成された少なくとも1つのクライアントアプリケーションのそれぞれのインスタンスを含むソフトウェアを格納する。本明細書において所与のPKG501に帰する任意のアクションは、それぞれのコンピュータ機器の処理装置上で実行されるソフトウェアを使用して実行され得ることが理解されよう。所与のPKG501のコンピュータ機器は、少なくとも1つのユーザ端末、例えば、デスクトップもしくはラップトップコンピュータ、タブレット、スマートフォン、またはスマートウォッチなどのウェアラブルデバイスを含み得る。追加的に、または代替的に、所与のPKG501のコンピュータ機器は、1つまたは複数の物理サーバユニットを含むサーバ、またはさらにはデータセンタ全体を含み得る。所与のPKG501のコンピュータ機器は、ユーザ端末を介してアクセスされるクラウドコンピューティングリソースなど、1つまたは複数の他のネットワーク化されたリソースを含むこともできる。
いくつかの例では、PKGのうちの1つ、いくつか、またはすべては、マイニングノード104Mであってもよく、その場合、それらのPKGのコンピュータ機器は、上述したようなマイニングノード104Mのコンピュータ機器である。
図5に示される例では、アリス103aは識別子IDAをPKG501に送信する。アリス103aは、有線またはワイヤレス接続を介して、例えば、図3を参照して説明されるような安全なチャネル301を介して、識別子をPKG501に直接送信し得る。アリス103aは、代わりに、例えばPKG501のアドレスに支払い可能なブロックチェーントランザクションを介して、識別子IDAをPKG501に送信してもよい。例えば、アリス103aは、識別子IDAを含む(使用可能または使用不可能な)出力を有するブロックチェーントランザクションを生成してもよい。識別子IDAがすでにPKG501に知られている場合、アリス103aは識別子を送る必要がない。例えば、アリスの識別子IDAは公に知られていてもよい。
PKG501は、識別子IDAに基づいて秘密鍵シェアDiAを生成し、すなわち、秘密鍵シェアDiAは識別子IDAの関数である。PKG501は、秘密鍵シェアDiAを、例えば安全なチャネルを介して、例えばアリス103aのアドレスに対して支払い可能なブロックチェーントランザクションを介して、または代替的な方法を介してアリスに送信することができる。秘密鍵シェアDiAは、暗号化された形式で送られてもよい。例えば、アリス103aは、例えばPKG501に知られている公開鍵(「第1の公開鍵」)を有し得る。アリスは、ブロックチェーンネットワーク上のアドレスの基礎として使用するための第1の公開鍵を有し得る。第1の公開鍵は、証明された公開鍵であり得、例えば、PKG501によって、または別個の認証局によって証明され得る。
いくつかの例では、アリス103aはまた、PKG501と同じプロトコルを使用して、アリス自身のそれぞれの秘密鍵シェアDiAを生成し得る。ここで、同じプロトコルとは、異なる秘密鍵シェアを生成するために1つまたは複数の異なる変数を含む同じアルゴリズムを意味する。
一例として、PKG501およびアリス103aは、上述のアルゴリズム、特にアルゴリズム1Bおよびアルゴリズム2Bを使用して、それぞれの秘密鍵シェアを生成し得る。
アリス103aが秘密鍵シェアDiAのセットを取得すると(例えば、受信し、任意選択で生成すると)、アリス103aは、IDベース秘密鍵sAを生成する。IDベース秘密鍵sAは、秘密鍵シェアDiAのセットに基づいて生成され、すなわち、IDベース秘密鍵sAは、秘密鍵シェアDiAのセットの関数である。アリス103aは、上述した鍵生成アルゴリズム、すなわちアルゴリズム2Bを使用して、IDベース秘密鍵sAを生成し得る。
アリス103aはまた、部分IDベース公開鍵(XA,YA)を生成する。IDベース秘密鍵sAに対応しない、すなわち、IDベース秘密鍵sAは、部分IDベース公開鍵(XA,YA)を用いて暗号化されたメッセージを解読しないという意味でこの鍵は部分的である。アリスは、上述した鍵生成、すなわちアルゴリズム2Bを使用して、部分IDベース公開鍵を生成し得る。部分IDベース公開鍵(XA,YA)は、秘密鍵シェアDiAのセットに対応する公開鍵シェアPiのセットに基づいて生成される(すなわち、その関数である)。ここで、各公開鍵シェアPiは、公開鍵シェアPiがそれぞれの秘密鍵シェアDiAに基づいて生成される、すなわち、公開鍵シェアPiが秘密鍵シェアDiAの関数であるという意味で、それぞれの秘密鍵シェアDiAに対応する。
アリス103aは、部分IDベース公開鍵(XA,YA)を、例えば安全なチャネルを介して、例えばPKG501のアドレスに支払い可能なブロックチェーントランザクションを介して、または代替手段を介して、PKG501に送信し得る。その場合、PKG501は、(完全な)IDベース公開鍵PKAを生成する。IDベース公開鍵PKAは、識別子IDAおよび部分IDベース公開鍵(XA,YA)に基づく(すなわち、それらの関数である)。追加的または代替的に、アリス103a自身が、IDベース公開鍵PKAを生成してもよい。好ましくは、PKG501は、アリス103aおよびアリスの識別子IDAに対してアイデンティティ検証チェックを実行することができ、この場合、アイデンティティ確認チェックが成功したと仮定すると、PKG501がIDベース公開鍵PKAを生成することが好ましい。
IDベース公開鍵PKAが生成されると、アリス103aおよび/またはPKG501は、IDベース公開鍵PKAを含む出力を含むブロックチェーントランザクションを生成する。出力は、使用可能な出力、例えば、pay-to-public-key-hash(P2PKH)出力であってもよく、または使用不可能な出力、例えば、OP_RETURN出力であってもよい。好ましくは、PKG501は、他の当事者が、アリスのIDベース公開鍵PKAを使用するときにPKGのアイデンティティ検証チェックに依存できるようにブロックチェーントランザクションを生成する。
ブロックチェーントランザクション(以下、「有効性チェックトランザクション」と呼ぶ)TxVCTは、ブロックチェーン150に含まれるために、ブロックチェーンネットワーク106の1つまたは複数のノードに送られる。好ましくは、PKG501は、有効性チェックトランザクションTxVCTをブロックチェーンネットワーク106に送信する。代替的に、アリス103aが、有効性チェックトランザクションTxVCTをブロックチェーンネットワーク106に送信してもよい。有効性チェックトランザクションTxVCTを生成し送信する当事者は、有効性チェックトランザクションTxVCTをブロックチェーンネットワーク106に送信する当事者と同じであってもよく、同じでなくてもよい。例えば、アリス103aがTxVCTを生成し、次いで、ブロックチェーンネットワーク501への送信のためにそれをPKG501に転送し得る。
PKG501がIDベース公開鍵PKAを生成する例では、PKG501は、IDベース公開鍵PKAおよび/または有効性チェックトランザクションTxVCTを、例えば安全なチャネル上でアリス103aに直接送信し得る。IDベース公開鍵PKAは、暗号化された形式で、例えばアリスの第1の公開鍵を用いて暗号化されて送られ得る。
アリス103aは、例えば暗号化鍵として使用するために、例えばPKG501から、またはブロックチェーン150から、IDベース公開鍵PKAを取得し得る。IDベース公開鍵PKAの使用については後述する。PKG501は、アリスがブロックチェーン150上の有効性チェックトランザクションTxVCTを容易に識別することができるように、有効性チェックトランザクションTxVCTのトランザクション識別子TxIDVCTをアリス103aに送信し得る。
アリス103aおよび/またはPKG501は、ブロックチェーントランザクション(以下ではパラメータトランザクションと呼ぶ)Txparを生成し得る。Txparは、IDベース公開鍵PKAを生成するために使用されるパラメータ、例えばアルゴリズム1Bおよび2Bのパラメータを含む。秘密鍵およびシークレット鍵は、パラメータトランザクションTxparに含まれない。パラメータトランザクションTxparは、アリス103aおよび/またはPKG501によってブロックチェーンネットワーク106に送信される。パラメータトランザクションTxparは、有効性チェックトランザクションTxVCTと同じトランザクションであっても同じでなくてもよく、パラメータトランザクションTxparを生成する当事者は、有効性チェックトランザクションTxVCTを生成する当事者と同じであっても同じでなくてもよい。パラメータは、第三者がIDベース公開鍵PKAを検証し、IDベース公開鍵PKAを使用してメッセージを暗号化することを可能にする。パラメータはまた、アリス103aが、IDベース公開鍵PKAを使用して暗号化されているメッセージを解読することを可能にする。パラメータは、ブロックチェーン150を使用せずに公開され得る。例えば、パラメータは、アリス103aおよび/またはPKG501によって(ホストされた)ウェブサイト上で公開されてもよい。パラメータを公開するのではなく、それらが、要求に応じて当事者に送ってもよい。
パラメータトランザクションTxparおよび有効性チェックトランザクションTxVCTが異なるトランザクションである場合、パラメータトランザクションTxparは、例えば、アリス103aまたは第三者が、有効性チェックトランザクションTxVCTに記憶されたIDベース公開鍵PKAを識別することができるように、有効性チェックトランザクションTxVCTのトランザクション識別子TxIDVCTを含み得る。
PKG501がマイニングノード104Mである例では、パラメータトランザクションTxparは、生成トランザクション(当技術分野ではコインベーストランザクションとしても知られている)であってもよい。生成トランザクションについては上で説明している。これらの例では、パラメータトランザクションTxparをブロックチェーンネットワーク106に送ることは、パラメータトランザクションTxparを含む新しいブロック151をマイニングすることを意味する。マイニングノード104Mのみが、ブロックマイニングプロセスの一部として生成トランザクションを生成することができる。ブロックをマイニングするには、プルーフオブワークが必要であり、これは、本質的に計算コストの高いプロセスである。したがって、パラメータを含む生成トランザクションを有するブロックをマイニングするために必要なプルーフオブワークを投入する(put in)マイニングノード104Mは、これがマイニングノードにとってコストのかかるプロセスであるため、不正確なパラメータを含めないことが想定される。
有効性チェックトランザクションTxVCTは、アリス103aの公開鍵または公開鍵アドレス、例えばアリスの第1の公開鍵にロックされた使用可能な出力を含み得る。例えば、出力はP2PKH出力であってもよい。P2PKH出力が使用トランザクションの入力によってロック解除されるためには、使用トランザクションの入力は、必ずしもこの順序である必要はないが、P2PKH出力内のP2PKHにハッシュする公開鍵と、その公開鍵を使用して生成された署名とを含んでいなければならない。出力は、使用トランザクションの入力に1つまたは複数の追加の要件を課し得る。
代替的に、有効性チェックトランザクションTxVCTは、PKG501の公開鍵または公開鍵アドレスにロックされた使用可能な出力を含み得る。例えば、出力は、PKG501の公開鍵に支払い可能なP2PKH出力であってもよい。
別の代替として、有効性チェックトランザクションTxVCTは、アリス103aの公開鍵およびPKG501の公開鍵にロックされた使用可能な出力を含み得る。出力スクリプトによっては、使用トランザクションの入力がアリスの公開鍵および/または署名を含む場合に出力がロック解除され得、または使用トランザクションの入力がPKG501の公開鍵を含む場合に出力がロック解除され得、または使用トランザクションの入力が2つの公開鍵(1つはアリス103aから、1つはPKG501から)および/または2つの署名(1つはアリス103aから、1つはPKG501から)を含む場合に出力がロック解除され得る。例えば、出力は、使用トランザクションの入力が、multi-sig出力においてn個の公開鍵に対応するm個の署名を含む場合にロック解除され得るm-of-n multi-sig出力であってもよい。
いくつかの例では、有効性チェックトランザクションTxVCTの使用可能な出力は、IDベース公開鍵PKAを含み得る。代替的に、有効性チェックトランザクションTxVCTは、2つの出力を含み得、1つは使用可能な出力であり、もう1つはIDベース公開鍵PKAを含む使用不可能な出力である。
有効性チェックトランザクションTxVCTの使用可能な出力がアリス103a(つまりより正確にはアリスの公開鍵または公開鍵アドレス)にロックされている場合、アリス103aは、有効性チェックトランザクションTxVCTのその出力を使用する失効トランザクションTxrevを生成し得る。ブロックチェーンに送信されると、失効トランザクションTxrevは、ブロックチェーン150の未使用トランザクション出力(UTXO)セットから、IDベース公開鍵PKAを含む有効性チェックトランザクションTxVCTの出力を除去する。同様に、有効性チェックトランザクションTxVCTの使用可能な出力がPKG501(つまりより正確にはPKG501の公開鍵または公開鍵アドレス)にロックされている場合、PKG501は、有効性チェックトランザクションTxVCTのその出力を使用する失効トランザクションTxrevを生成し得る。
上述したように、アリスのIDベース公開鍵PKAは、メッセージを暗号化するために使用され得る。その意味で、IDベース公開鍵PKAは、IDベース暗号化鍵として使用される。これらの用語は同義語であるが、一貫性のために、鍵は、以下の全体を通してIDベース公開鍵PKAと呼ばれる。
いくつかの例では、アリス103a自身が、IDベース公開鍵PKAを使用して、メッセージを暗号化し得る。例えば、アリス103aは、上述した暗号化アルゴリズム、すなわちアルゴリズム3Bを使用して、メッセージを暗号化し得る。アリス103aは、暗号化されたメッセージを記憶するか、暗号化されたメッセージを(PKG501を含み得る)1つまたは複数の異なる当事者に送信するか、ネットワークを介して(例えばプライベートネットワークを介して)暗号化されたメッセージをブロードキャストするか、例えば公開ウェブサイト上で暗号化されたメッセージを公開するか、またはブロックチェーンネットワーク106の1つまたは複数のノードに送信するために暗号化されたメッセージをブロックチェーンネットワークに含め得る。例えば、アリス103aは、暗号化されたメッセージを含む出力を含むブロックチェーントランザクションを生成し得る。暗号化されたメッセージは、ロックスクリプトの一部を形成し得、例えば、それは、解読されたメッセージを含むために、使用トランザクションの入力に要件を課し得る。もちろん、IDベース秘密鍵sAへのアクセスを有する当事者のみが、暗号化されたメッセージを解読することができ、これは、アリス103aのみであることが好ましい。
他の例では、アリス203a以外の当事者が、IDベース公開鍵PKAを使用してメッセージを暗号化し得る。例えば、その当事者は、有効性チェックトランザクションTxVCTからIDベース公開鍵PKAを取得し得る。アリスは、暗号化されたメッセージを、例えば暗号化を行う当事者から直接、ブロックチェーントランザクションから、または他の方法で取得し得る。次いで、アリス103aは、IDベース秘密鍵sAを使用して、暗号化されたメッセージを解読し、メッセージを明らかにし得る。アリスは、上述した解読アルゴリズム、すなわちアルゴリズム4Bを使用して、暗号化されたメッセージを解読し得る。前述のように、暗号化されたメッセージは、ブロックチェーントランザクションのロックスクリプトの一部を形成し得、アリス103aは、ロックスクリプトをロック解除するために、解読されたメッセージを使用トランザクションのロック解除スクリプトに含め得る。
図6は、本開示の実施形態を実装するための別の例示的なシステム600を示す。図6のシステム600は、図5のシステム500と同様であるが、別のPKGが追加されている。図6の例では、第1のPKG501aおよび第2のPKG501bが存在している。一般に、システムは、任意の数のPKG501を備え得る。第1のPKG501aおよび第2のPKG501bは両方とも、図5のPKG501に以前に関連付けられたアクションを実行するように構成され得る。
第1のPKG501aおよび/または第2のPKG501bは、アリス103aから識別子IDAを取得し得る。いくつかの例では、1つのPKG(例えば、PKG501a)が、識別子IDAを取得し、その識別子IDAを1つまたは複数の異なるPKG(例えば、PKG501b)に送信し得る。第1のPKG501aおよび第2のPKG501bはそれぞれ、識別子IDAに基づいてそれぞれの秘密鍵シェアDiAを生成し、ここで、第1のPKG501aは第1の秘密鍵シェアD1Aを生成し、第2のPKG501bは第2の秘密鍵シェアD2Aを生成する。各PKGは、異なる変数(例えば、秘密および/または乱数)を使用することを除いて、同じアルゴリズムを使用して、それぞれの秘密鍵シェアDiAを生成する。各PKGは、そのそれぞれの秘密鍵シェアDiAをアリス103aに送信し、アリス101aは、それぞれの秘密鍵シェアDiAを生成しても生成しなくてもよい。各PKG501は、同じ通信方法を使用して、それぞれの秘密鍵シェアDiAをアリス103aに送信し得、例えば、第1のPKG501aおよび第2のPKG501bの両方が、安全なチャネル上で、または異なる通信方法を介して、それぞれの秘密鍵シェアDiAを送信し得、例えば、第1のPKG501aは、ブロックチェーントランザクションに秘密鍵シェアD1Aを含め得、第2のPKGは、有線接続上でその秘密鍵シェアD2Aを送信し得る。
アリス103aは、第1の秘密鍵シェアD1Aおよび第2の秘密鍵シェアD2Aを使用して、IDベース秘密鍵sAを生成し、ここで、IDベース秘密鍵sAは、秘密鍵シェアDiAの各々の関数である。
アリス103aはまた、部分IDベース公開鍵(XA,YA)、すなわち部分IDベース公開鍵(XA,YA)を生成する。部分IDベース公開鍵(XA,YA)は、秘密鍵シェアDiAのセットに対応する公開鍵シェアPiのセットに基づいて生成される(すなわち、その関数である)。第1のPKG501aおよび第2のPKG501bはそれぞれ、例えば、安全なチャネル上で、またはそれぞれのブロックチェーントランザクションを使用して、それぞれの公開鍵シェアPiをアリス103aに送信し得る。アリス103aは、部分IDベース公開鍵(XA,YA)を第1のPKG501aおよび第2のPKG501bの両方に送信し得るか、またはアリスは、部分IDベース公開鍵(XA,YA)をPKGのうちの1つ(例えば、PKG501a)に送信し、次いで、そのPKGが、それを他のPKG(例えば、PKG501b)に転送し得る。部分IDベース公開鍵(XA,YA)は、暗号化された形式で、例えばアリスの第1の公開鍵を使用して暗号化されて送られ得る。
PKGの1つ、いくつか、またはすべてが、識別子IDAおよび部分IDベース公開鍵(XA,YA)に基づいて、完全なIDベース公開鍵PKAを生成する。好ましくは、1つのPKG(例えば、PKG501a)のみが、IDベース公開鍵PKAを含む有効性チェックトランザクションTxVCTを生成し、次いで、そのトランザクションTxVCTをブロックチェーンネットワーク106に送信する。しかしながら、2つ以上のPKG501が、IDベース公開鍵PKAを含むそれぞれの有効性チェックトランザクションTxVCTを生成し得ることは除外されない。PKGの1つ、いくつか、またはすべては、IDベース公開鍵PKAを生成するために使用される(公開)パラメータを含むパラメータトランザクションTxparを生成し得る。好ましくは、有効性チェックトランザクションTxVCTを生成するPKGもまた、パラメータトランザクションTxparを生成し、これは、同じブロックチェーントランザクションであっても同じブロックチェーントランザクションでなくもよてい。
本開示の実施形態は、IDベース暗号化(IBE)システムの実装を提供し、ブロックチェーン150およびそのUTXOセットを使用して、鍵失効鍵有効性チェックを可能にする。ブロックチェーン150は、IBE鍵およびパラメータを読み取るときの真正性および完全性の提供に活用される。IBEシステムは、評判のよいマイニングノード104Mによって実装されることが好ましい。各マイニングノード104Mは、例えば、ECDSA公開鍵として暗号的に保護され、プルーフオブワークに基づいて評判システムによってバックアップされる、公に知られているアイデンティティを作成することができる。各マイニングノード104Mがシステムを騙すことで自身の評判を危険にさらすことを望まないと仮定すると、評判のよいマイニングノード104Mは、ユーザのアイデンティティに関するチェックを実行し、IBE鍵を有効に生成することに関して信頼される。さらに、UTXOセットは、PKI設定におけるホワイトリストとして機能し得、それによって、IBE鍵は、UTXOにおけるトランザクション出力によって参照される場合に有効である。
以下は、本開示の別の例示的な実施形態を提示する。一般性を失うことなく、IBE鍵生成サービスを提供しているマイニングノード104Mが3つ存在すると仮定する。アリス103aは、アリスのアイデンティティAlice@Blockland.comが検証されて、アリスのIBE公開鍵として使用されることを望むと仮定する。
アリスは、秘密鍵を求めて、3つすべてのマイニングノードM1、M2、およびM3にコンタクトする。各マイニングノードMiは、アリスのアイデンティティを独立して検証する。アリス103aが実際にAlice@Blockland.comの所有者であると確信すると、以下のステップを踏む:
1. 各マイニングノードは、IDA=Alice@Blockland.comに対して鍵生成アルゴリズム(アルゴリズム2B)を実行し、DiAをアリス103aに送る。
2. アリス103aは、自身の部分公開鍵(XA,YA)を生成する。
3. アリス103aから(XA,YA)を受信すると、各マイニングノードは、以下の等式を検証する。
4. 等式が成り立つ場合、各マイニングノードは、PKA=(IDA,XA,YA)を設定する。もしそうでなければ、プロセスは停止される。
5. 1つのマイニングノード、または何らかの他の関連当事者が、以下を有する有効性チェックトランザクションを生成する:
a. 入力:マイニングノードの任意の有効なUTXO。
b. 出力1:P2PKH(マイニングノードの選択の独立した公開鍵PKiVCT)。
c. 出力2:OP_RETURN PKA
6. 有効性チェックトランザクションがマイニングされるとき、各マイニングノードは、トランザクションID TxIDiVCTが与えられ、それを記録する。
7. 各マイニングノードは、以下の情報を含むコインベース(生成)トランザクションを作成する:
a. 公開鍵パラメータ(G1,G2,q,P,P1,P2,P3,e,H1,H2,H3,H4)
b. アリスの公開鍵PKA=(IDA,XA,YA)
c. VCT識別子TxIDVCT
8. 各マイニングノードは、他のマイニングノードによってまだマイニングされていない場合、コインベーストランザクションをマイニングしようと試みる。
1. 各マイニングノードは、IDA=Alice@Blockland.comに対して鍵生成アルゴリズム(アルゴリズム2B)を実行し、DiAをアリス103aに送る。
2. アリス103aは、自身の部分公開鍵(XA,YA)を生成する。
3. アリス103aから(XA,YA)を受信すると、各マイニングノードは、以下の等式を検証する。
5. 1つのマイニングノード、または何らかの他の関連当事者が、以下を有する有効性チェックトランザクションを生成する:
a. 入力:マイニングノードの任意の有効なUTXO。
b. 出力1:P2PKH(マイニングノードの選択の独立した公開鍵PKiVCT)。
c. 出力2:OP_RETURN PKA
6. 有効性チェックトランザクションがマイニングされるとき、各マイニングノードは、トランザクションID TxIDiVCTが与えられ、それを記録する。
7. 各マイニングノードは、以下の情報を含むコインベース(生成)トランザクションを作成する:
a. 公開鍵パラメータ(G1,G2,q,P,P1,P2,P3,e,H1,H2,H3,H4)
b. アリスの公開鍵PKA=(IDA,XA,YA)
c. VCT識別子TxIDVCT
8. 各マイニングノードは、他のマイニングノードによってまだマイニングされていない場合、コインベーストランザクションをマイニングしようと試みる。
コインベーストランザクションがマイニングされると、アリスのIBE公開鍵を使用することができる。ステップ7で生成されたトランザクション内の情報が、マイニングノードのいずれかによってマイニングされたコインベーストランザクションに一度だけ含まれる必要があることに留意されたい。マイニングされると、他のマイナーは、同じ情報をさらなるトランザクションに含める必要がない。
鍵の失効は、有効性チェックトランザクションを使用すること、すなわちUTXOセットからそれを除去することによって達成することができる。これは、鍵の即時失効をもたらすものであり、ユーザ、鍵生成器、信頼できる第三者機関、またはそれらの組合せによって行われ得る。また、別の部分、例えばボブ103bは、アリスのIBE鍵が有効であるか否かを、UTXOセットにおけるアリスの詳細をチェックするだけで容易にチェックすることができる。2つ以上のマイニングノード104Mがそれぞれの有効性チェックトランザクションを生成し得ることに留意されたい。これにより、構成可能な失効ルールが可能になる。例えば、3つの有効性チェックトランザクションが存在する場合、1つのルールでは、IBE鍵が失効されたとみなされるために、3つの有効性チェックトランザクションのうちの1つが使用されれば十分であると規定され得る。異なるルールでは、IBE鍵が失効されたとみなされるために、有効性チェックトランザクションの3つすべてが使用されなければならないと規定され得る。
ステップ5の代替として、OP_RETURNの代わりにOP_PUSHDATAおよびOP_DROPを使用して、アリスのIBE鍵PKAがトランザクションのロックスクリプトに挿入され得る。これは、PKAが常にUTXO内にあり、OP_RETURN出力で起こり得るようなプルーニングがなされないことを保証する。
鍵生成サービスは、上述したように、マイニングノードによって提供され得る。それはまた、非マイナーによって提供され得る。非マイニングノードは、加入者、例えばアリス103aのための秘密鍵を生成するスマートコントラクトを実行し得る。鍵生成公開パラメータは、ブロックチェーン上で公開され、ブロックチェーンの不変性から利益を得ることができるであろう。アリス103aは、どの鍵生成サービスプロバイダを使用しているかをボブ103bに知らせなければならないことに留意されたい。
ブロックチェーンユーザの数が増加するにつれて、ブロックチェーンに関する情報を効率的に記憶し、時間遅延を回避することが必要になる。ステップ7で作成された1つのコインベーストランザクションに複数のユーザの情報を挿入することが可能である。この場合、ステップ7.aにおける公開パラメータは、最初に一度だけ挿入される必要があり、その後に各ユーザのIBE公開鍵および有効性チェックトランザクション識別子が続く(ステップ7.bおよび7.c)。各ユーザに対して同じ公開パラメータが使用されてもよい。1つのコインベーストランザクションに追加することができる公開鍵の数は、トランザクションのサイズまたはブロックチェーンプロトコルによって課される任意の他のサイズ制限によってのみ制限される。
トランザクションのトランザクションシーケンスフィールドを使用して、IBE鍵のセットを後日アクティブ化することが可能である。これは、鍵を生成する責任があり、その公開時間を短縮するためにオフラインになる別個のサーバを有するときに特に有用であり得る。この場合、サーバは鍵のセットを生成し、マイニングノードによって後で自動的にアクティブ化されるように、それらを、タイムロックされたトランザクションに挿入する。同じ技法を使用して、更新されたIBE鍵を含む使用トランザクションで有効性チェック出力を使用するタイムロックされたトランザクションを作成することによって、自動鍵更新を提供することもできる。
identifier_stringは、電子メール、モバイル番号、パスポート番号、またはソーシャルプラットフォームアカウントなどであり得る。functional_stringは、以下のうちの1つまたはいずれかの組合せであり得る:
・有効期限:この期限を過ぎてこのIDAが使用されるべきではなく、新しい有効期限を有する新しいIDAが使用されるべきである。鍵生成器サービスプロバイダは、新しいIDAに対する秘密鍵を生成し、送らなければならない。これにより、IBE鍵の更新が保証されるであろう。更新の周期は、使用事例の要件に応じて、毎月または毎日などに設定することができる。
・有効開始日:これは、秘密鍵生成局がその期日の前に秘密鍵を公開しないことを保証するために使用され得る。この事例では、鍵生成器サービスプロバイダは、タイムロックを実施するために使用される。期日は、任意選択的にブロックチェーンの高さであり得る。
・属性:サービスプロバイダは、この属性またはそれらのセットが満たされた場合にのみ秘密鍵を送る。これは、属性ベースのアクセス制御、位置暗号化を実施するために使用され得る。例えば、ボブ103bは、アリス103aがセキュリティクリアランスを有する場合、解読可能なメッセージを送ることができる。鍵生成器サービスプロバイダは、アリス103aがこの要件を満たすことができる場合にのみ、復号鍵をアリス103aに公開する。
・有効期限:この期限を過ぎてこのIDAが使用されるべきではなく、新しい有効期限を有する新しいIDAが使用されるべきである。鍵生成器サービスプロバイダは、新しいIDAに対する秘密鍵を生成し、送らなければならない。これにより、IBE鍵の更新が保証されるであろう。更新の周期は、使用事例の要件に応じて、毎月または毎日などに設定することができる。
・有効開始日:これは、秘密鍵生成局がその期日の前に秘密鍵を公開しないことを保証するために使用され得る。この事例では、鍵生成器サービスプロバイダは、タイムロックを実施するために使用される。期日は、任意選択的にブロックチェーンの高さであり得る。
・属性:サービスプロバイダは、この属性またはそれらのセットが満たされた場合にのみ秘密鍵を送る。これは、属性ベースのアクセス制御、位置暗号化を実施するために使用され得る。例えば、ボブ103bは、アリス103aがセキュリティクリアランスを有する場合、解読可能なメッセージを送ることができる。鍵生成器サービスプロバイダは、アリス103aがこの要件を満たすことができる場合にのみ、復号鍵をアリス103aに公開する。
使用事例
図7は、第1の使用事例(UC1)を示す。アリス103aは、自身の電子メールアドレスに対応する秘密鍵を生成するために秘密鍵生成局PKG1 501aにコンタクトする。PKG1 501aは、電子メールアドレスがアリス103aに属することを検証し、安全なチャネルを使用して秘密鍵skAliceをアリスに送る。この使用事例は、2つのブロックチェーントランザクションにおいてアリスの要求およびPKG1の応答をOP_RETURNの後に挿入することによって、ブロックチェーン上で実行され得る。アリス103aは、PKG1 501aへの要求に公開暗号化鍵(PKAlice)を挿入してチャネルを保護することができるが、そのようなチャネルがすでに存在する場合には、それをスキップすることができる。PKG1 501aは、検証および鍵生成ステップを実行し、応答トランザクションにおいて、PKAliceを使用して暗号化されたアリスの秘密鍵を送る。2つの例示的なトランザクションを以下に示す。
図7は、第1の使用事例(UC1)を示す。アリス103aは、自身の電子メールアドレスに対応する秘密鍵を生成するために秘密鍵生成局PKG1 501aにコンタクトする。PKG1 501aは、電子メールアドレスがアリス103aに属することを検証し、安全なチャネルを使用して秘密鍵skAliceをアリスに送る。この使用事例は、2つのブロックチェーントランザクションにおいてアリスの要求およびPKG1の応答をOP_RETURNの後に挿入することによって、ブロックチェーン上で実行され得る。アリス103aは、PKG1 501aへの要求に公開暗号化鍵(PKAlice)を挿入してチャネルを保護することができるが、そのようなチャネルがすでに存在する場合には、それをスキップすることができる。PKG1 501aは、検証および鍵生成ステップを実行し、応答トランザクションにおいて、PKAliceを使用して暗号化されたアリスの秘密鍵を送る。2つの例示的なトランザクションを以下に示す。
上記のトランザクションは概念を伝えるために簡略化されていることに留意されたい。より詳細なトランザクションは、エフェメラル暗号化鍵および初期化ベクトル、ならびに任意の変更のための追加の出力を含む可能性があるであろう。
第2の使用事例(UC2)は、以下のトランザクションによって示される。アリス103aは、PKG1によって生成された部分秘密鍵が漏洩した場合でもアリスの鍵が安全となるように、アリス自身の秘密鍵を追加する。アリスがブロックチェーン上で(XA,YA)を公表する可能な方法は少なくとも2つ存在する。第1の方法は、アリス103aが自分自身に支払う単一のトランザクションである。
図8aおよび図8bは、第3の例示的な使用事例(UC3)を示す。ボブ103bは、アリス103aが時間フレーム内(t1の前ではなくt2の後でもない)でのみ読み取ることができるメッセージをアリス103aに送ることを望む。このようなサービスは、PKG1 501a以外の別の鍵生成器PKG2 501bによって提供され得る。ボブ103bは、Alice@Blockland.comに基づいて生成されたアリスのIBE公開鍵(これは、UC1においてPKG1によって検証および生成された)を使用するアリス103aのための新しいIBE公開鍵を生成し、有効期間およびランダムノンスを挿入する。ボブは、新たに生成されたIBE公開鍵Alice@Blockland.com_PKG1_t1_t2_nonceをPKG2の公開鍵パラメータと共に使用して、メッセージM1を暗号化してC1を出力する。ボブは、暗号文とボブが暗号化に使用したIBE公開鍵とをアリス103aに送る。PKG2 501bは、ブロックチェーン上のサービスプロバイダ、例えばマイニングノード104Mまたは非マイニングノードであり得る。ボブ103bは、PKG2 501bから公開鍵パラメータを取り出すことができる。ボブ103bは、新しいIBE公開鍵を生成すると、ブロックチェーン150からPKAliceおよびPKG1の公開パラメータを取り出す。ボブは、PKG1が秘密鍵生成局であり、信頼できるアイデンティティ検証サービスプロバイダであることを確認する必要がある。
アリス103aは、ボブの暗号化されたメッセージC1をロック解除するための秘密鍵を取得するためにPKG2 501bにコンタクトする。PKG2 501bは、PKG1 501aが信頼できるサービスプロバイダであることをチェックし、要求の時間がt1とt2との間であることをチェックする。すべてのチェックにパスした場合、PKG2 501bは、ボブ103bによって生成され使用された暗号化鍵に対応するアリス103aのための秘密鍵を生成する。新しい秘密鍵は、アリスの既存の(すなわち、Alice@Blockland.comに基づいて生成された)IBE鍵を使用してC2に暗号化され得る。この使用事例では、PKG2 103bがタイムチェックサービスを提供し、すでにUC1で行われた電子メール検証サービスを実行するためにPKG1 501aに依存したことに留意されたい。UC1と同様に、アリス103aとPKG2 501bとの間の通信はブロックチェーン150上で行われる。
これらの使用事例は、アリス(解読を行う当事者)がメッセージを解読することができるようにボブ(暗号化を行う当事者)がボブの条件を設定することを可能にするために、IBEプロトコルがどのように使用され得るかを示す。UC1では、アリスはPKG1からIBE鍵を取得する。ボブは、アリスがボブの条件を満たすことをチェックするために、異なるPKGであるPKG2を使用する。
結論
上記の実施形態は、単なる例として説明されていることが理解されよう。より一般的には、以下のステートメントのいずれか1つまたは複数による方法、装置、またはプログラムが提供され得る。
上記の実施形態は、単なる例として説明されていることが理解されよう。より一般的には、以下のステートメントのいずれか1つまたは複数による方法、装置、またはプログラムが提供され得る。
ステートメント1.アイデンティティ(ID)ベース暗号鍵を生成するためのコンピュータ実装方法であって、方法は、個人識別子を有する第1の当事者によって実行され、以下を含む:
秘密鍵シェアのセットおよび対応する公開鍵シェアのセットを取得すること、ここで、各秘密鍵シェアは、個人識別子に基づいて生成され、秘密鍵シェアのセットのうちの少なくとも1つは、鍵生成当事者のセットのそれぞれ1つによって生成され、
1つまたは複数の秘密鍵シェアの各々に基づいてIDベース秘密鍵を生成すること、ならびに
部分IDベース公開鍵を生成すること、ここで、部分IDベース公開鍵は、対応する公開鍵シェアのセットの各々に基づいて生成され、
IDベース公開鍵を生成するために鍵生成当事者のセットのうちの少なくとも1つに部分IDベース公開鍵を送信すること、ここで、IDベース公開鍵は、個人識別子と部分IDベース公開鍵とを含み、および/または
IDベース公開鍵を生成すること、ここで、IDベース公開鍵は、個人識別子と部分IDベース公開鍵とを含む。
秘密鍵シェアのセットおよび対応する公開鍵シェアのセットを取得すること、ここで、各秘密鍵シェアは、個人識別子に基づいて生成され、秘密鍵シェアのセットのうちの少なくとも1つは、鍵生成当事者のセットのそれぞれ1つによって生成され、
1つまたは複数の秘密鍵シェアの各々に基づいてIDベース秘密鍵を生成すること、ならびに
部分IDベース公開鍵を生成すること、ここで、部分IDベース公開鍵は、対応する公開鍵シェアのセットの各々に基づいて生成され、
IDベース公開鍵を生成するために鍵生成当事者のセットのうちの少なくとも1つに部分IDベース公開鍵を送信すること、ここで、IDベース公開鍵は、個人識別子と部分IDベース公開鍵とを含み、および/または
IDベース公開鍵を生成すること、ここで、IDベース公開鍵は、個人識別子と部分IDベース公開鍵とを含む。
鍵シェアは、秘密鍵を生成するために複数の他の鍵シェアとともに使用され得る秘密鍵の構成要素である。
ステートメント2.第1のブロックチェーントランザクションの第1の出力は、IDベース公開鍵を含み、IDベース公開鍵は、個人識別子と部分IDベース公開鍵とを含み、方法は、第1のブロックチェーントランザクションからIDベース公開鍵を取得することを含む、ステートメント1に記載の方法。
ステートメント3.ステートメント2に記載の方法であって、第1のブロックチェーントランザクションからIDベース公開鍵を上記取得することは、以下を含む:
1つまたは複数の鍵生成当事者のうちの少なくとも1つから第1のブロックチェーントランザクションのトランザクション識別子を取得すること、および
トランザクション識別子を使用して、第1のブロックチェーントランザクションが記録されたブロックチェーンから第1のブロックチェーントランザクションを取得すること。
1つまたは複数の鍵生成当事者のうちの少なくとも1つから第1のブロックチェーントランザクションのトランザクション識別子を取得すること、および
トランザクション識別子を使用して、第1のブロックチェーントランザクションが記録されたブロックチェーンから第1のブロックチェーントランザクションを取得すること。
ステートメント4.ステートメント1から3のいずれかに記載の方法であって、以下を含む:
鍵生成当事者のセットのうちの少なくとも1つからIDベース公開鍵を取得すること。
鍵生成当事者のセットのうちの少なくとも1つからIDベース公開鍵を取得すること。
ステートメント5.ステートメント1から4のいずれかに記載の方法であって、以下を含む:
IDベース公開鍵を使用して第1のメッセージを暗号化して、第1の暗号化されたメッセージを生成すること、ならびに
第1の暗号化されたメッセージを第2の当事者に送信すること、および/または暗号化されたメッセージを含む出力を含む第2のブロックチェーントランザクションを生成すること。
IDベース公開鍵を使用して第1のメッセージを暗号化して、第1の暗号化されたメッセージを生成すること、ならびに
第1の暗号化されたメッセージを第2の当事者に送信すること、および/または暗号化されたメッセージを含む出力を含む第2のブロックチェーントランザクションを生成すること。
ステートメント6.ステートメント1から5のいずれかに記載の方法であって、以下を含む:
IDベース公開鍵を使用して暗号化された第2の暗号化されたメッセージを取得すること、および
第2のメッセージを明らかにするために、秘密鍵を使用して第2の暗号化されたメッセージを解読すること。
IDベース公開鍵を使用して暗号化された第2の暗号化されたメッセージを取得すること、および
第2のメッセージを明らかにするために、秘密鍵を使用して第2の暗号化されたメッセージを解読すること。
ステートメント7.個人識別子を1つまたは複数の鍵生成当事者のうちの少なくとも1つに送信することを含む、ステートメント1から6のいずれかに記載の方法。
ステートメント8.ステートメント7に記載の方法であって、個人識別子を上記送信することは、以下を含む:
個人識別子を含む出力を含む第3のブロックチェーントランザクションを生成すること、および
ブロックチェーンに含めるために、第3のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信すること。
個人識別子を含む出力を含む第3のブロックチェーントランザクションを生成すること、および
ブロックチェーンに含めるために、第3のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信すること。
ステートメント9.ステートメント2またはそれに従属するステートメントに記載の方法であって、第1の当事者が第1の公開鍵を有し、第1のブロックチェーントランザクションが第1の当事者の第1の公開鍵にロックされた第2の出力を含み、方法は、以下含む:
a)第1のブロックチェーントランザクションの第2の出力を参照し、b)第1の当事者の第1の公開鍵に対応する秘密鍵に基づいて生成された署名を含む入力を含む第4のブロックチェーントランザクションを生成すること、および
ブロックチェーンに含めるために、第4のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信すること。
a)第1のブロックチェーントランザクションの第2の出力を参照し、b)第1の当事者の第1の公開鍵に対応する秘密鍵に基づいて生成された署名を含む入力を含む第4のブロックチェーントランザクションを生成すること、および
ブロックチェーンに含めるために、第4のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信すること。
第1のブロックチェーントランザクションの第1および第2の出力は同じ出力であってもよい。すなわち、IDベース公開鍵は使用可能な(例えばP2PKH)出力に含まれ得る。例えば、出力は、OP_PUSHDATAおよびOP_DROPを使用して公開鍵を含み得る。
ステートメント10.ステートメント1から9のいずれかに記載の方法であって、部分IDベース公開鍵を鍵生成当事者のセットのうちの少なくとも1つに上記送信することは、以下を含む:
部分IDベース公開鍵を含む出力を含む第5のブロックチェーントランザクションを生成すること、および、
ブロックチェーンに含めるために、第5のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信すること。
部分IDベース公開鍵を含む出力を含む第5のブロックチェーントランザクションを生成すること、および、
ブロックチェーンに含めるために、第5のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信すること。
ステートメント11.第1の当事者の識別子が、第1の当事者の名前および/または住所、第1の当事者の電子メールアドレス、電話番号、パスポート番号、運転免許証番号、ソーシャルメディアのプロフィール、生年月日、ならびにグループメンバ識別子のうちの1つまたは複数を含む、ステートメント1から10のいずれかに記載の方法。
ステートメント12.アイデンティティ(ID)ベース暗号鍵を生成するためのコンピュータ実装方法であって、第1の当事者が個人識別子を有し、方法は、第1の鍵生成当事者によって実行され、以下を含む:
秘密鍵シェアを第1の当事者に送信すること、ここで、秘密鍵シェアは、個人識別子に基づいて生成され、対応する公開鍵シェアを有する、
部分IDベース公開鍵を取得すること、ここで、部分IDベース公開鍵は、対応する公開鍵シェアに基づいて生成される、
IDベース公開鍵を生成および/または取得すること、ここで、IDベース公開鍵は、部分IDベース公開鍵と個人識別子とに基づいて生成される、ならびに
IDベース公開鍵を含む第1の出力を含む第1のブロックチェーントランザクションを生成すること。
秘密鍵シェアを第1の当事者に送信すること、ここで、秘密鍵シェアは、個人識別子に基づいて生成され、対応する公開鍵シェアを有する、
部分IDベース公開鍵を取得すること、ここで、部分IDベース公開鍵は、対応する公開鍵シェアに基づいて生成される、
IDベース公開鍵を生成および/または取得すること、ここで、IDベース公開鍵は、部分IDベース公開鍵と個人識別子とに基づいて生成される、ならびに
IDベース公開鍵を含む第1の出力を含む第1のブロックチェーントランザクションを生成すること。
例では、方法は、秘密鍵シェアおよび対応する公開鍵シェアを生成することを含む。
ステートメント13.ブロックチェーンに含めるために、第1のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信することを含む、ステートメント12に記載の方法。
ステートメント14.第1のブロックチェーントランザクションを第1の当事者に送信することを含む、ステートメント12に記載の方法。
ステートメント15.第1のブロックチェーントランザクションの第1の出力は使用不可能な出力である、ステートメント12から14のいずれかに記載の方法。
ステートメント16.第1の当事者から個人識別子を取得することを含む、ステートメント13から15のいずれかに記載の方法。
ステートメント17.ブロックチェーンは、第1の当事者によって生成され、個人識別子を含む第3のブロックチェーントランザクションを含み、第1の当事者から個人識別子を上記取得することは、第3のブロックチェーントランザクションから個人識別子を取得することを含む、ステートメント16に記載の方法。
ステートメント18.第1の鍵生成当事者が第1の公開鍵を有し、第1のブロックチェーントランザクションが第1の鍵生成当事者の第1の公開鍵にロックされた第2の出力を含む、ステートメント12から17のいずれかに記載の方法。
第1および第2の出力は同じ出力であってもよい。代替的に、第1および第2の出力は異なる出力であってもよい。
ステートメント19.ステートメント18に記載の方法であって、以下を含む:
a)第1のブロックチェーントランザクションの第2の出力を参照し、b)第1の鍵生成当事者の公開鍵に対応する秘密鍵に基づいて生成された署名を含む入力を含む第4のブロックチェーントランザクションを生成すること、および
ブロックチェーンに含めるために、第4のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信すること。
a)第1のブロックチェーントランザクションの第2の出力を参照し、b)第1の鍵生成当事者の公開鍵に対応する秘密鍵に基づいて生成された署名を含む入力を含む第4のブロックチェーントランザクションを生成すること、および
ブロックチェーンに含めるために、第4のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信すること。
ステートメント20.第1の当事者が第1の公開鍵を有し、第1のブロックチェーントランザクションが第1の当事者の第1の公開鍵にロックされた第2の出力を含む、ステートメント12から19のいずれかに記載の方法。
ステートメント21.ブロックチェーンは、部分IDベース公開鍵を含む第5のブロックチェーントランザクションを含み、部分IDベース公開鍵を取得することは、第5のブロックチェーントランザクションから部分IDベース公開鍵を取得することを含む、ステートメント12から20のいずれかに記載の方法。
ステートメント22.ステートメント12から21のいずれかに記載の方法であって、以下を含む:
秘密鍵シェアを含む出力を含む第6のブロックチェーントランザクションを生成すること、ここで、第1の当事者に秘密鍵シェアを上記送信することは、ブロックチェーンに含めるために、第6のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信することを含む。
秘密鍵シェアを含む出力を含む第6のブロックチェーントランザクションを生成すること、ここで、第1の当事者に秘密鍵シェアを上記送信することは、ブロックチェーンに含めるために、第6のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信することを含む。
ステートメント23.秘密鍵シェアは暗号化された形式で送信される、ステートメント22に記載の方法。
ステートメント24.ステートメント12から23のいずれかに記載の方法であって、以下を含む:
IDベース公開鍵を生成するために使用されるパラメータのセットを含む出力を含む第7のブロックチェーントランザクションを生成すること、および
ブロックチェーンに含めるために、第7のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信すること。
IDベース公開鍵を生成するために使用されるパラメータのセットを含む出力を含む第7のブロックチェーントランザクションを生成すること、および
ブロックチェーンに含めるために、第7のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信すること。
第7のブロックチェーントランザクションは、第1のブロックチェーントランザクションの識別子を含み得る。
ステートメント25.部分IDベース公開鍵は、複数の公開鍵シェアに基づいて生成され、各公開鍵シェアは、鍵生成当事者のセットのそれぞれの1つによって生成され、第7のブロックチェーントランザクションは、IDベース公開鍵を生成するために各それぞれの鍵生成当事者によって使用されるパラメータのセットを含む、ステートメント24に記載の方法。
ステートメント26.第1の鍵生成当事者はブロックチェーンネットワークのマイニングノードであり、第7のブロックチェーントランザクションは生成トランザクションである、ステートメント24またはステートメント25に記載の方法。
第1のブロックチェーントランザクションの識別子と、IDベース鍵を生成するために使用されるパラメータとを記録するために生成(すなわち、コインベース)トランザクションを使用することによって、マイニングノードによって示されるPoWに対する信頼は、生成された暗号鍵に対する信頼に委ねられ得るので、マイニングノードを信頼できる認証局と見なすことができる。
ステートメント27.以下を備えるコンピュータ機器:
1つまたは複数のメモリユニットを備えるメモリ、および
1つまたは複数の処理ユニットを備える処理装置、ここで、メモリは、処理装置上で実行されるように構成されたコードを記憶し、コードは、処理装置上にあるとき、ステートメント1から26のいずれかに記載の方法を実行するように構成される。
1つまたは複数のメモリユニットを備えるメモリ、および
1つまたは複数の処理ユニットを備える処理装置、ここで、メモリは、処理装置上で実行されるように構成されたコードを記憶し、コードは、処理装置上にあるとき、ステートメント1から26のいずれかに記載の方法を実行するように構成される。
ステートメント28.コンピュータ可読ストレージ上に具現化され、ステートメント27のコンピュータ機器上で実行されると、ステートメント1から26のいずれかに記載の方法を実行するように構成されたコンピュータプログラム。
本明細書で開示される教示の別の態様によれば、第1の当事者および鍵生成当事者のアクションを含む方法が提供され得る。
本明細書に開示される教示の別の態様によれば、第1の当事者および鍵生成当事者のコンピュータ機器を備えるシステムが提供され得る。
他の変形例は、本明細書の開示が与えられると、当業者に明らかになり得る。本開示の範囲は、開示された実施形態によって限定されるのではなく、添付の特許請求の範囲によってのみ限定される。
Claims (28)
- アイデンティティ(ID)ベース暗号鍵を生成するためのコンピュータ実装方法であって、前記方法は、個人識別子を有する第1の当事者によって実行され、
秘密鍵シェアのセットおよび対応する公開鍵シェアのセットを取得することと、ここで、各秘密鍵シェアは、前記個人識別子に基づいて生成され、前記秘密鍵シェアのセットのうちの少なくとも1つは、鍵生成当事者のセットのそれぞれ1つによって生成され、
前記1つまたは複数の秘密鍵シェアの各々に基づいてIDベース秘密鍵を生成することと、
部分IDベース公開鍵を生成すること、ここで、前記部分IDベース公開鍵は、前記対応する公開鍵シェアのセットの各々に基づいて生成され、
前記IDベース公開鍵を生成するために前記鍵生成当事者のセットのうちの少なくとも1つに前記部分IDベース公開鍵を送信すること、ここで、前記IDベース公開鍵は、前記個人識別子と前記部分IDベース公開鍵とを含み、および/または
前記IDベース公開鍵を生成すること、ここで、前記IDベース公開鍵は、前記個人識別子と前記部分IDベース公開鍵とを含む、
を含む方法。 - 第1のブロックチェーントランザクションの第1の出力は、前記IDベース公開鍵を含み、前記IDベース公開鍵は、前記個人識別子と前記部分IDベース公開鍵とを含み、前記方法は、前記第1のブロックチェーントランザクションから前記IDベース公開鍵を取得することを含む、請求項1に記載の方法。
- 前記第1のブロックチェーントランザクションから前記IDベース公開鍵を前記取得することは、
前記1つまたは複数の鍵生成当事者のうちの少なくとも1つから前記第1のブロックチェーントランザクションのトランザクション識別子を取得することと、
前記トランザクション識別子を使用して、前記第1のブロックチェーントランザクションが記録されたブロックチェーンから前記第1のブロックチェーントランザクションを取得することと
を含む、請求項2に記載の方法。 - 前記鍵生成当事者のセットのうちの少なくとも1つから前記IDベース公開鍵を取得すること
を含む、請求項1から3のいずれか一項に記載の方法。 - 前記IDベース公開鍵を使用して第1のメッセージを暗号化して、第1の暗号化されたメッセージを生成することと、
前記第1の暗号化されたメッセージを第2の当事者に送信すること、および/または前記暗号化されたメッセージを含む出力を含む第2のブロックチェーントランザクションを生成することと
を含む、請求項1から4のいずれか一項に記載の方法。 - 前記IDベース公開鍵を使用して暗号化された第2の暗号化されたメッセージを取得することと、
第2のメッセージを明らかにするために、前記秘密鍵を使用して前記第2の暗号化されたメッセージを解読することと
を含む、請求項1から5のいずれか一項に記載の方法。 - 前記個人識別子を前記1つまたは複数の鍵生成当事者のうちの少なくとも1つに送信することを含む、請求項1から6のいずれか一項に記載の方法。
- 前記個人識別子を前記送信することは、
前記個人識別子を含む出力を含む第3のブロックチェーントランザクションを生成することと、
前記ブロックチェーンに含めるために、前記第3のブロックチェーントランザクションを前記ブロックチェーンネットワークの1つまたは複数のノードに送信することと
を含む、請求項7に記載の方法。 - 前記第1の当事者が第1の公開鍵を有し、前記第1のブロックチェーントランザクションが前記第1の当事者の前記第1の公開鍵にロックされた第2の出力を含み、前記方法は、
a)前記第1のブロックチェーントランザクションの前記第2の出力を参照し、b)前記第1の当事者の前記第1の公開鍵に対応する秘密鍵に基づいて生成された署名を含む入力を含む第4のブロックチェーントランザクションを生成することと、
前記ブロックチェーンに含めるために、前記第4のブロックチェーントランザクションを前記ブロックチェーンネットワークの1つまたは複数のノードに送信することと
を含む、請求項2またはそれに従属する請求項に記載の方法。 - 前記部分IDベース公開鍵を前記鍵生成当事者のセットのうちの前記少なくとも1つに前記送信することは、
前記部分IDベース公開鍵を含む出力を含む第5のブロックチェーントランザクションを生成することと、
前記ブロックチェーンに含めるために、前記第5のブロックチェーントランザクションを前記ブロックチェーンネットワークの1つまたは複数のノードに送信することと
を含む、請求項1から9のいずれか一項に記載の方法。 - 前記第1の当事者の前記識別子が、前記第1の当事者の名前および/または住所、前記第1の当事者の電子メールアドレス、電話番号、パスポート番号、運転免許証番号、ソーシャルメディアのプロフィール、生年月日、ならびにグループメンバ識別子のうちの1つまたは複数を含む、請求項1から10のいずれか一項に記載の方法。
- アイデンティティ(ID)ベース暗号鍵を生成するためのコンピュータ実装方法であって、第1の当事者が個人識別子を有し、前記方法は、第1の鍵生成当事者によって実行され、
秘密鍵シェアを前記第1の当事者に送信することと、ここで、前記秘密鍵シェアは、前記個人識別子に基づいて生成され、対応する公開鍵シェアを有し、
部分IDベース公開鍵を取得することと、ここで、前記部分IDベース公開鍵は、前記対応する公開鍵シェアに基づいて生成され、
前記IDベース公開鍵を生成および/または取得することと、ここで、前記IDベース公開鍵は、前記部分IDベース公開鍵と前記個人識別子とに基づいて生成され、
前記IDベース公開鍵を含む第1の出力を含む第1のブロックチェーントランザクションを生成することと
を含む方法。 - ブロックチェーンに含めるために、前記第1のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信することを含む、請求項12に記載の方法。
- 前記第1のブロックチェーントランザクションを前記第1の当事者に送信することを含む、請求項12に記載の方法。
- 前記第1のブロックチェーントランザクションの前記第1の出力は使用不可能な出力である、請求項12から14のいずれか一項に記載の方法。
- 前記第1の当事者から前記個人識別子を取得することを含む、請求項13から15のいずれか一項に記載の方法。
- 前記ブロックチェーンは、前記第1の当事者によって生成され、前記個人識別子を含む第3のブロックチェーントランザクションを含み、前記第1の当事者から前記個人識別子を前記取得することは、前記第3のブロックチェーントランザクションから前記個人識別子を取得することを含む、請求項16に記載の方法。
- 前記第1の鍵生成当事者が第1の公開鍵を有し、前記第1のブロックチェーントランザクションが前記第1の鍵生成当事者の前記第1の公開鍵にロックされた第2の出力を含む、請求項12から17のいずれか一項に記載の方法。
- a)前記第1のブロックチェーントランザクションの前記第2の出力を参照し、b)前記第1の鍵生成当事者の前記公開鍵に対応する秘密鍵に基づいて生成された署名を含む入力を含む第4のブロックチェーントランザクションを生成することと
前記ブロックチェーンに含めるために、前記第4のブロックチェーントランザクションを前記ブロックチェーンネットワークの1つまたは複数のノードに送信することと
を含む、請求項18に記載の方法。 - 前記第1の当事者が第1の公開鍵を有し、前記第1のブロックチェーントランザクションが前記第1の当事者の前記第1の公開鍵にロックされた第2の出力を含む、請求項12から19のいずれか一項に記載の方法。
- 前記ブロックチェーンは、前記部分IDベース公開鍵を含む第5のブロックチェーントランザクションを含み、前記部分IDベース公開鍵を前記取得することは、前記第5のブロックチェーントランザクションから前記部分IDベース公開鍵を取得することを含む、請求項12から20のいずれか一項に記載の方法。
- 前記秘密鍵シェアを含む出力を含む第6のブロックチェーントランザクションを生成すること
を含み、ここで、前記第1の当事者に前記秘密鍵シェアを前記送信することは、前記ブロックチェーンに含めるために、前記第6のブロックチェーントランザクションを前記ブロックチェーンネットワークの1つまたは複数のノードに送信することを含む、
請求項12から21のいずれか一項に記載の方法。 - 前記秘密鍵シェアは暗号化された形式で送信される、請求項22に記載の方法。
- 前記IDベース公開鍵を生成するために使用されるパラメータのセットを含む出力を含む第7のブロックチェーントランザクションを生成することと、
前記ブロックチェーンに含めるために、前記第7のブロックチェーントランザクションを前記ブロックチェーンネットワークの1つまたは複数のノードに送信することと
を含む、請求項12から23のいずれか一項に記載の方法。 - 前記部分IDベース公開鍵は、複数の公開鍵シェアに基づいて生成され、各公開鍵シェアは、鍵生成当事者のセットのそれぞれの1つによって生成され、前記第7のブロックチェーントランザクションは、前記IDベース公開鍵を生成するために各それぞれの鍵生成当事者によって使用される前記パラメータのセットを含む、請求項24に記載の方法。
- 前記第1の鍵生成当事者は前記ブロックチェーンネットワークのマイニングノードであり、前記第7のブロックチェーントランザクションは生成トランザクションである、請求項24または25に記載の方法。
- コンピュータ機器であって、
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置と
を備え、ここで、前記メモリは、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードは、前記処理装置上にあるとき、請求項1から26のいずれか一項に記載の方法を実行するように構成される、
コンピュータ機器。 - コンピュータ可読ストレージ上に具現化され、コンピュータ機器上で実行されると、請求項1から26のいずれか一項に記載の方法を実行するように構成されたコンピュータプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1917896.1 | 2019-12-06 | ||
GB1917896.1A GB2589636A (en) | 2019-12-06 | 2019-12-06 | Identity-based public-key generation protocol |
PCT/IB2020/060450 WO2021111211A1 (en) | 2019-12-06 | 2020-11-06 | Identity-based public-key generation protocol |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023504535A true JP2023504535A (ja) | 2023-02-03 |
JPWO2021111211A5 JPWO2021111211A5 (ja) | 2023-10-17 |
Family
ID=69171898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022533174A Pending JP2023504535A (ja) | 2019-12-06 | 2020-11-06 | アイデンティティ(id)ベース公開鍵生成プロトコル |
Country Status (6)
Country | Link |
---|---|
US (1) | US20230021047A1 (ja) |
EP (1) | EP4046323A1 (ja) |
JP (1) | JP2023504535A (ja) |
CN (1) | CN115176441A (ja) |
GB (1) | GB2589636A (ja) |
WO (1) | WO2021111211A1 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111865988B (zh) * | 2020-07-22 | 2022-10-18 | 山东华普信息科技有限公司 | 一种基于区块链的无证书密钥管理方法、系统及终端 |
US11849032B2 (en) * | 2021-05-14 | 2023-12-19 | Verizon Patent And Licensing Inc. | Systems and methods for blockchain-based secure key exchange |
CN113360943A (zh) * | 2021-06-23 | 2021-09-07 | 京东数科海益信息科技有限公司 | 一种区块链隐私数据的保护方法及装置 |
US11902451B2 (en) * | 2021-07-01 | 2024-02-13 | Fujitsu Limited | Cross-blockchain identity and key management |
GB2608840A (en) * | 2021-07-13 | 2023-01-18 | Nchain Licensing Ag | Message exchange system |
CN113783836B (zh) * | 2021-08-02 | 2023-06-20 | 南京邮电大学 | 基于区块链和ibe算法的物联网数据访问控制方法及系统 |
CN114499952B (zh) * | 2021-12-23 | 2024-04-09 | 中电科大数据研究院有限公司 | 一种联盟链共识身份认证方法 |
CN115695509B (zh) * | 2022-09-29 | 2023-04-18 | 北京宜通华瑞科技有限公司 | 一种基于物联网通信协议的智能缝制系统 |
CN115580489B (zh) * | 2022-11-24 | 2023-03-17 | 北京百度网讯科技有限公司 | 数据传输方法、装置、设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9065637B2 (en) * | 2012-01-25 | 2015-06-23 | CertiVox Ltd. | System and method for securing private keys issued from distributed private key generator (D-PKG) nodes |
GB201711878D0 (en) * | 2017-07-24 | 2017-09-06 | Nchain Holdings Ltd | Computer - implemented system and method |
-
2019
- 2019-12-06 GB GB1917896.1A patent/GB2589636A/en active Pending
-
2020
- 2020-11-06 CN CN202080084297.8A patent/CN115176441A/zh active Pending
- 2020-11-06 EP EP20804357.0A patent/EP4046323A1/en active Pending
- 2020-11-06 WO PCT/IB2020/060450 patent/WO2021111211A1/en unknown
- 2020-11-06 US US17/782,124 patent/US20230021047A1/en active Pending
- 2020-11-06 JP JP2022533174A patent/JP2023504535A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
GB201917896D0 (en) | 2020-01-22 |
WO2021111211A1 (en) | 2021-06-10 |
GB2589636A (en) | 2021-06-09 |
US20230021047A1 (en) | 2023-01-19 |
CN115176441A (zh) | 2022-10-11 |
EP4046323A1 (en) | 2022-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2023504535A (ja) | アイデンティティ(id)ベース公開鍵生成プロトコル | |
US11979493B2 (en) | Methods and systems to establish trusted peer-to-peer communications between nodes in a blockchain network | |
JP2023179729A (ja) | コンピュータ実装されるシステムおよび方法 | |
JP2023500259A (ja) | ブロックチェーントランザクションを使用した通信プロトコル | |
US20230308287A1 (en) | Threshold signatures | |
US20220239501A1 (en) | Knowledge proof | |
JP2022533777A (ja) | プルーフ・オブ・ワーク | |
JP2023515368A (ja) | ブロックチェーンネットワークと共に使用される証明サービス | |
EP3967015B1 (en) | Multi-input transactions | |
TW202232913A (zh) | 共享金鑰產生技術 | |
JP2022548264A (ja) | 暗号的にリンクされたアイデンティティ | |
US20230308292A1 (en) | Digital signatures | |
KR20230002941A (ko) | 비밀 공유를 갖는 (ec)dsa 임계값 서명 | |
JP2023500258A (ja) | ブロックチェーントランザクションを使用する要求および応答プロトコル | |
WO2023208809A1 (en) | Non-native blockchain signatures | |
WO2024052065A1 (en) | Determining shared secrets using a blockchain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231006 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231006 |