JP2023502057A - ブロックチェーントランザクションを使用したアイデンティティ検証プロトコル - Google Patents

ブロックチェーントランザクションを使用したアイデンティティ検証プロトコル Download PDF

Info

Publication number
JP2023502057A
JP2023502057A JP2022528023A JP2022528023A JP2023502057A JP 2023502057 A JP2023502057 A JP 2023502057A JP 2022528023 A JP2022528023 A JP 2022528023A JP 2022528023 A JP2022528023 A JP 2022528023A JP 2023502057 A JP2023502057 A JP 2023502057A
Authority
JP
Japan
Prior art keywords
transaction
party
blockchain
public key
message
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
Application number
JP2022528023A
Other languages
English (en)
Other versions
JPWO2021094854A5 (ja
Inventor
ジョセフ,ダニエル
スティーヴン ライト,クレイグ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
nChain Holdings Ltd
Original Assignee
nChain Holdings Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by nChain Holdings Ltd filed Critical nChain Holdings Ltd
Publication of JP2023502057A publication Critical patent/JP2023502057A/ja
Publication of JPWO2021094854A5 publication Critical patent/JPWO2021094854A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • G06Q20/4014Identity check for transactions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3226Cryptographic 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 a predetermined code, e.g. password, passphrase or PIN
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/321Cryptographic 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 a third party or a trusted authority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/42Confirmation, e.g. check or permission by the legal debtor of payment
    • G06Q20/425Confirmation, e.g. check or permission by the legal debtor of payment using two different networks, one for transaction and one for security confirmation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3218Cryptographic 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 proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • H04L9/3221Cryptographic 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 proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs interactive zero-knowledge proofs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3239Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3271Cryptographic 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 challenge-response
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Abstract

第2の当事者が第1の当事者のアイデンティティを検証することを可能にするクレデンシャルを提供する方法。第1の当事者は、第三者に登録された第1の公開鍵に関連付けられる。1つまたは複数の第1のクレデンシャルが第2の当事者に提供される。a)第三者のそれぞれの秘密鍵に基づいて生成された署名を含む入力と、b)第1の当事者の第2の公開鍵にロックされた出力とを含む要求トランザクションが取得される。第2の公開鍵は第1の公開鍵に基づく。確認トランザクションが生成される。確認トランザクションは、要求トランザクションの出力を参照する入力と、第1の当事者の第2の公開鍵に対応する秘密鍵に基づいて生成された署名とを含む。確認トランザクションは、ブロックチェーンに含めるために、ブロックチェーンネットワークのノードに送信される。

Description

本開示は、ブロックチェーントランザクションを使用して当事者のアイデンティティを検証するための方法に関する。
ブロックチェーンは、分散型データ構造の形態を指し、ブロックチェーンの複製コピーが、ピアツーピア(P2P)ネットワーク内の複数のノードの各々において維持される。ブロックチェーンは、データブロックのチェーンを含み、各ブロックは1つまたは複数のトランザクションを含む。各トランザクションは、1つまたは複数のブロックにまたがり得るシーケンス内の先行するトランザクションを指し示し得る。トランザクションは、「マイニング」として知られるプロセスによって新しいブロックに含まれるためにネットワークにサブミットされ得、このプロセスは、複数のマイニングノードの各々が、「プルーフオブワーク」を実行しようと競うこと、すなわち、ブロックに含まれるのを待っている保留中のトランザクションのプールに基づいて暗号パズルを解くことを伴う。
従来、ブロックチェーンにおけるトランザクションは、デジタル資産、すなわち価値の蓄蔵として機能するデータを伝達するために使用される。しかしながら、ブロックチェーンは、ブロックチェーンの上に追加の機能を重ねるために活用することもできる。例えば、ブロックチェーンプロトコルは、トランザクションの出力における追加のユーザデータの格納を可能にし得る。最新のブロックチェーンでは、単一のトランザクション内に格納可能な最大データ容量が増えており、より複雑なデータを組み込むことが可能である。例えば、これを使用して、ブロックチェーンに電子文書を格納したり、さらにはオーディオまたはビデオデータを格納したりすることができる。
ネットワーク内の各ノードは、フォワード、マイニング、および格納という3つの役割のうちのいずれか1つ、2つ、またはすべてを担うことができる。フォワーディングノードは、ネットワークのノード全体にトランザクションを伝搬する。マイニングノードは、ブロックへのトランザクションのマイニングを実行する。ストレージノードは各々が、ブロックチェーンのマイニングされたブロックのそれら自体のコピーを格納する。ブロックチェーンにトランザクションを記録させるために、当事者は、伝搬されるべきネットワークのノードのうちの1つにトランザクションを送信する。トランザクションを受信するマイニングノードは、トランザクションを新しいブロックにマイニングしようと競い合い得る。各ノードは、同じノードプロトコルを尊重するように構成され、そのノードプロトコルには、トランザクションが有効であるための1つまたは複数の条件が含まれる。無効なトランザクションは、伝搬もブロックへのマイニングもされない。トランザクションが妥当性確認(validate)され、それによってブロックチェーン上に受け入れられたと仮定すると、追加のユーザデータは、不変の公開記録としてP2Pネットワーク内のノードの各々に格納されたままになる。
システムにアクセスしようとする個人またはエンティティの検証が必要とされる様々なシステムへの多要素認証(MFA)の導入が増えている。例えば、オンライン銀行口座にアクセスしようとするときにMFAが使用され得る。MFAは、システムへのアクセスを必要とするエンティティが、通常はクレデンシャルの独立したカテゴリから、複数の認証方法を提供するよう求められる検証プロトコルである。通常、第1の要素はパスワードであり、もう1つの要素はバイオメトリックデータからSMSテキストまで多岐にわたる。これらのMFA方式は、それらが利用されるシステムのセキュリティレベルを高めることが期待される。
2要素認証(2FA)は、ユーザのアイデンティティを検証、すなわち認証するために2つの異なる形態のクレデンシャルが必要とされるMFAの一種を指す。2FAの場合、一般にSMSテキストが使用される。そのような実装形態では、パスワードをサブミットした後に、特定コードを含むSMSテキストがユーザに送信される。次いで、ユーザは、このコードを第2の認証要素として使用する。そのようなシステムのセキュリティの前提は、悪意のある行為者が(ターゲットのパスワードに加えて)そのターゲットのSMS電話および/またはテキストにアクセスできる可能性が低いことである。
しかしながら、検証プロトコルへの2FAの組込みの普及にもかかわらず、このような2FA設計には問題および脆弱性が存在する。一例として、SIMスワップ機会により攻撃者はターゲットの電話番号を盗むことができるため、SMSメッセージを傍受することができ、よって、認証コードを取得することができる。
したがって、多要素認証に関する現在の問題に対処する、改善されたより安全なプロトコル、特に、個人のアイデンティティを盗もうと試みる攻撃者による認証コードの傍受に対して脆弱でないプロトコルが必要である。
本明細書に開示される一態様によれば、第2の当事者が第1の当事者のアイデンティティを検証することを可能にするクレデンシャルを提供する方法が提供され、第1の当事者は第1の公開鍵に関連付けられ、第1の公開鍵は第三者に登録され、方法は、1つまたは複数の第1のクレデンシャルを第2の当事者に提供することと、要求トランザクションを取得することと、ここで、要求トランザクションは、ブロックチェーンネットワークの1つまたは複数のノードに送信され、a)第三者のそれぞれの秘密鍵に基づいて生成された署名を含む入力と、b)第1の当事者の第2の公開鍵にロックされた出力とを含むブロックチェーントランザクションであり、第2の公開鍵は第1の公開鍵に基づき、確認トランザクションを生成することと、ここで、確認トランザクションは、要求トランザクションの出力を参照する入力と、第1の当事者の第2の公開鍵に対応する秘密鍵に基づいて生成された署名とを含むブロックチェーントランザクションであり、ブロックチェーンに含めるためにブロックチェーンネットワークの1つまたは複数のノードに確認トランザクションが送信されることを生じさせることとを含む。
公開鍵-秘密鍵ペアの暗号的性質により、正しい秘密鍵へのアクセスを有する当事者のみが、第三者に登録された対応する公開鍵を使用して検証可能な署名を生成することができる。したがって、署名された確認トランザクションは、第1の当事者のアイデンティティを検証するために使用可能なさらなる(例えば、第2の)クレデンシャル(または、認証要素)として機能する。要求トランザクションは、登録された公開鍵にロックされた出力を有するので、第1の当事者のみが、その出力をロック解除する(すなわち、使用する)トランザクション(確認トランザクション)を生成することができる。したがって、どの当事者であっても、第1の当事者が確認トランザクションを生成したかどうかを確認すべくチェックすることによって、第1の当事者のアイデンティティを検証することができる。当事者が確認トランザクションを生成することができない場合、それらは、正しい秘密鍵へのアクセスを有していないので、第1の当事者ではない。
自身の公開鍵を第三者に登録するために、第1の当事者は、自身の秘密鍵を共有する必要がないことに留意されたい(秘密という単語の所以である)。実際、第1の当事者は、自身の秘密鍵を他の当事者と共有する必要はない。したがって、提供される方法は、任意の認証コードなどの共有に依存しないので、そのようなコードを傍受し、それらを使用して自らを第1の当事者と偽る機会を攻撃者に与えない。
方法は、署名された確認トランザクションが第2のクレデンシャル(または、認証要素)である2FAプロトコルの一部として使用され得る。しかしながら、より一般的には、この方法は、署名された確認トランザクションが第nのクレデンシャルである任意のMFAプロトコルとして使用され得る。
例示的な例として、ユーザ(第1の当事者)が、商人(第2の当事者)の顧客であり得、自身の公開鍵を自身の銀行(第三者)に登録している場合がある。商人から購入しようとするとき、顧客は、第1のクレデンシャル、例えば、クレジットカード情報、名前および住所、連絡先番号などを商人に提供する。商人は、ユーザのアイデンティティを検証するように銀行に求め得、そして、銀行は、第1の当事者によって登録された公開鍵に支払い可能な要求トランザクションを生成する。公開鍵は、銀行のKYC(know-your-customer)プロトコルの一部として登録され得る。ユーザは、例えばブロックチェーンをスキャンすることによって要求トランザクションを取得し、次いで、署名された確認トランザクションを生成する。銀行は、登録された公開鍵に対応する秘密鍵を有する場合に第1の当事者のみが生成することができる署名で確認トランザクションが署名されていることを確認すると、取引相手のユーザが実際に第1の当事者であることを商人に通知する。次いで、商人およびユーザは、例えば、商品またはサービスの購入といったトランザクションを継続することができる。
別の例として、ユーザ(第1の当事者)が、オンラインプロバイダ(第2の当事者)によってホストされる自身の電子メールアカウントにアクセスしようとしている場合がある。まずユーザがユーザ名およびパスワードを提供し、それに応答して、要求トランザクションがブロックチェーンネットワークのノードにサブミットされる。要求トランザクションは、オンラインプロバイダによって生成され得る(この場合、第三者は第2の当事者である)か、または信頼できる第三者機関によって生成され得る。署名された確認トランザクションが生成されると、ユーザは自身の電子メールアカウントへのアクセを許可される。
本明細書に開示される別の態様によれば、第1の当事者のアイデンティティを検証する方法が提供され、第1の当事者は第1の公開鍵に関連付けられ、第1の公開鍵は第三者に登録され、方法は、第1の当事者のアイデンティティを検証する要求を受信することと、要求トランザクションを生成することと、ここで、要求トランザクションは、a)第三者のそれぞれの秘密鍵に基づいて生成された署名を含む入力と、b)第1の当事者の第2の公開鍵にロックされた出力とを含むブロックチェーントランザクションであり、第2の公開鍵は第1の公開鍵に基づき、ブロックチェーンに含めるためにブロックチェーンネットワークの1つまたは複数のノードに要求トランザクションが送信されることを生じさせることと、ブロックチェーンに含めるために確認トランザクションがブロックチェーンネットワークの1つまたは複数のノードに送信されたかどうかを決定することとを含み、ここで、確認トランザクションは、要求トランザクションの出力を参照する入力と、第1の当事者の第2の公開鍵に対応する秘密鍵に基づいて生成された署名とを含むブロックチェーントランザクションである。
上述のように、要求トランザクションの出力は、登録された公開鍵にロックされる。例えば、出力は、P2PKH(pay-to-public-key-hash)出力であり得、これは、使用トランザクションの入力が、登録された公開鍵と、登録された公開鍵に対応する秘密鍵を用いて生成された署名とを含むことを必要とする。第1の当事者のみが、そのような入力を正しく生成するために必要とされる秘密鍵の知識を有する。したがって、当事者(例えば、第2の当事者または第三者)は、要求トランザクションを使用する確認トランザクションがブロックチェーンネットワークにサブミットされているかどうかを決定することによって、第1の当事者であると報告するユーザのアイデンティティを検証することができる。以下で説明するように、第1の当事者のアイデンティティが検証されるために要求トランザクションおよび確認トランザクションがいずれもブロックチェーンに記録されてはならないことに留意されたい。
場合によっては、第2の当事者は、当事者のアイデンティティを検証するためのプロトコルの一部として独立した第三者(例えば、信頼できる第三者機関)を使用し得る。他の場合には、第2の当事者自体が、第1の当事者の公開鍵を登録する第三者であってもよい。
本開示の実施形態の理解を助け、そのような実施形態がどのように実施され得るかを示すために、単なる例として添付の図面を参照する。
ブロックチェーンを実装するためのシステムの概略ブロック図である。 ブロックチェーンに記録され得るトランザクションのいくつかの例を概略的に示す。 ブロックチェーンを実装するための別のシステムの概略ブロック図である。 出力ベースモデルのノードプロトコルにしたがってトランザクションを処理するためのノードソフトウェアの一部分の概略ブロック図である。 ブロックチェーントランザクションを使用して当事者のアイデンティティを検証するためのシステムの概略ブロック図である。 ブロックチェーントランザクションを使用して当事者のアイデンティティを検証するための別のシステムの概略ブロック図である。 ブロックチェーンから取得されるブロックチェーントランザクションを使用して当事者のアイデンティティを検証するための例示的な方法のシーケンス図である。 ブロックチェーンから取得されるブロックチェーントランザクションを使用して当事者のアイデンティティを検証するための別の例示的な方法のシーケンス図である。 トランザクションのメモリプール(メムプール(mempool))から取得されるブロックチェーントランザクションを使用して当事者のアイデンティティを検証するための例示的な方法のシーケンス図である。 メムプール内の未確認トランザクションのチェーンを概略的に示す。 メムプール内のトランザクションに対する二重支出試行を概略的に示す。 メムプールが通信媒体としてどのように機能し得るかを概略的に示す。
例示的なシステムの概要
図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」ベースのプロトコルを参照して説明する。しかしながら、これはすべての可能な実施形態に限定されない。
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は「Tx」とラベル付けされている。これは、シーケンス内の先行するトランザクション152iの出力203においてアリスにロックされたデジタル資産の額を取り、これのうちの少なくとも一部をボブに転送する。先行するトランザクション152iは、図2では「Tx」とラベル付けされている。TxおよびTxは、単なる任意のラベルである。それらは、Txがブロックチェーン151内の最初のトランザクションであることも、Txがプール154内のすぐ次のトランザクションであることも必ずしも意味するものではない。Txは、アリスにロックされた未使用の出力203を依然として有する任意の先行する(すなわち先の)トランザクションを指し示すことができる。
先行するトランザクションTxは、アリスが新しいトランザクションTxを作成した時点では、または少なくともアリスがそれをネットワーク106に送信する時点までには、すでに妥当性確認されブロックチェーン150に含まれている可能性がある。それは、その時点でブロック151のうちの1つにすでに含まれていてもよいし、プール154で依然として待機していてもよく、その場合には、すぐに新しいブロック151に含まれることになる。代替的に、TxおよびTxを作成してネットワーク102に一緒に送信することができるか、またはノードプロトコルが「オーファン」トランザクションのバッファリングを可能にする場合には、TxをTxの後に送信することさえもできる。トランザクションのシーケンスの文脈において本明細書で使用される「先行する」および「後続の」という用語は、トランザクション内で指定されているトランザクションポインタ(どのトランザクションがどの他のトランザクションを指し示すかなど)によって定義されるシーケンス内のトランザクションの順序を指す。それらは、同様に、「先行するもの」および「後続するもの」、または「先の」および「後の」、「親」および「子」などと置き換えられ得る。これは、それらの作成、ネットワーク106への送信、または任意の所与のノード104への到着の順序を必ずしも意味するものではない。それにもかかわらず、先行するトランザクション(先のトランザクションまたは「親」)を指し示す後続するトランザクション(後のトランザクションまたは「子」)は、親トランザクションが妥当性確認されるまでおよび妥当性確認されない限り、妥当性確認されない。その親より前にノード104に到着する子は、オーファンとみなされる。それは、ノードプロトコルおよび/またはマイナー挙動に応じて、親を待つために特定の時間バッファされるかまたは破棄され得る。
先行するトランザクションTxの1つまたは複数の出力203のうちの1つは、本明細書ではUTXOとラベル付けされた特定のUTXOを含む。各UTXOは、UTXOによって表されるデジタル資産の額を指定する値と、ロックスクリプトとを含み、ロックスクリプトは、後続のトランザクションが妥当性確認され、したがってUTXOが正常に償還されるために、後続のトランザクションの入力202内のロック解除スクリプトが満たさなければならない条件を定義する。典型的には、ロックスクリプトは、その額を特定の当事者(それが含まれるトランザクションの受益者)にロックする。すなわち、ロックスクリプトは、典型的には、後続のトランザクションの入力内のロック解除スクリプトに、先行するトランザクションがロックされる当事者の暗号署名が含まれるという条件を含むロック解除条件を定義する。
ロックスクリプト(通称scriptPubKey)は、ノードプロトコルによって認識されるドメイン固有言語で書かれたコードの一部分である。そのような言語の特定の例は、「スクリプト」(大文字S)と呼ばれる。ロックスクリプトは、トランザクション出力203を使用するためにどの情報が必要とされるか、例えばアリスの署名の要件を指定する。ロック解除スクリプトはトランザクションの出力に現れる。ロック解除スクリプト(通称scriptSig)は、ロックスクリプト基準を満たすのに必要な情報を提供するドメイン固有言語で書かれたコードの一部分である。例えば、ボブの署名を含み得る。ロック解除スクリプトは、トランザクションの入力202に現れる。
つまり、図示の例では、Txの出力203内のUTXOは、UTXOが償還されるために(厳密には、UTXOを償還しようとする後続のトランザクションが有効となるために)アリスの署名Sig Pを必要とするロックスクリプト[Checksig P]を含む。[Checksig P]は、アリスの公開鍵-秘密鍵ペアからの公開鍵Pを含む。Txの入力202は、(例えば、実施形態ではトランザクションTx全体のハッシュであるそのトランザクションID、TxIDによって)Txを指し示すポインタを含む。Txの入力202は、Txの任意の他の可能な出力の中から、UTXOを識別するために、Tx内のそれを識別するインデックスを含む。Txの入力202は、アリスが鍵ペアからのアリスの秘密鍵をデータの所定の部分(暗号では「メッセージ」と呼ばれることもある)に適用することによって作成された、アリスの暗号署名を含むロック解除スクリプト<Sig P>をさらに含む。有効な署名を提供するためにどのデータ(または「メッセージ」)がアリスによって署名される必要があるかは、ロックスクリプトによって、またはノードプロトコルによって、またはこれらの組合せによって定義され得る。
新しいトランザクションTxがノード104に到着すると、ノードはノードプロトコルを適用する。これは、ロックスクリプトおよびロック解除スクリプトを一緒に実行して、ロック解除スクリプトがロックスクリプトで定義されている条件(この条件は1つまたは複数の基準を含み得る)を満たすかどうかをチェックすることを含む。実施形態では、これは2つのスクリプトを連結することを含む。
<Sig P><P>||[Checksig P
ここで、「||」は連結を表し、「<…>」はデータをスタックに置くことを意味し、「[…]」はロック解除スクリプト(この例ではスタックベースの言語)で構成される関数である。同等に、スクリプトは、スクリプトを連結するのではなく、共通スタックを用いて次々に実行され得る。いずれにしても、一緒に実行されるとき、スクリプトは、Txの出力内のロックスクリプトに含まれるようなアリスの公開鍵Pを使用して、Txの入力内のロックスクリプトが、データの予想される部分に署名したアリスの署名を含むことを認証する。データの予想される部分自体(「メッセージ」)はまた、この認証を実行するためにTx命令に含まれる必要がある。実施形態では、署名されたデータは、Txの全体を含む(つまり、平文のデータの署名された部分を指定する別個の要素は、すでに本質的に存在するので、含まれる必要はない)。
公開-秘密暗号法による認証の詳細は、当業者によく知られている。基本的に、アリスが自身の秘密鍵でメッセージを暗号化することによってメッセージに署名した場合、アリスの公開鍵および平文のメッセージ(暗号化されていないメッセージ)が与えられると、ノード104などの別のエンティティは、メッセージの暗号化バージョンがアリスによって署名されたものに違いないことを認証することができる。署名は、典型的には、メッセージをハッシュし、ハッシュに署名し、これを署名としてメッセージの平文バージョンにタグ付けすることを含み、これにより、公開鍵の任意の保持者が署名を認証することができる。
Tx内のロック解除スクリプトが、Txのロックスクリプト内で指定されている1つまたは複数の条件を満たす場合(つまり、図示の例では、アリスの署名がTx内で提供され、認証された場合)、ノード104は、Txが有効であると見なす。それがマイニングノード104Mである場合、これは、ワークオブプルーフを待つトランザクション154のプールにそれを追加することを意味する。それがフォワーディングノード104Fである場合、トランザクションTxをネットワーク106内の1つまたは複数の他のノード104にフォワードして、トランザクションTxがネットワーク全体に伝搬されるようにする。Txが妥当性確認されてブロックチェーン150に含まれると、これは、TxからのUTXOを使用済みとして定義する。Txは、未使用のトランザクション出力203を使用する場合にのみ有効であり得ることに留意されたい。別のトランザクション152によってすでに使用された出力を使用しようとする場合、Txは、他のすべての条件が満たされたとしても無効になる。したがって、ノード104はまた、先行するトランザクションTx内の参照されたUTXOがすでに使用済みである(別の有効なトランザクションへの有効な入力をすでに形成している)かどうかをチェックする必要がある。これは、ブロックチェーン150がトランザクション152に定義された順序を課すことが重要である1つの理由である。実際には、所与のノード104は、どのトランザクション152内のどのUTXO203が使用されたかをマーキングする別個のデータベースを維持し得るが、最終的には、UTXOが使用されたかどうかを定義するものは、ブロックチェーン150内の別の有効なトランザクションへの有効な入力をすでに形成しているかどうかである。
UTXOベースのトランザクションモデルでは、所与のUTXOが全体として使用される必要があることに留意されたい。UTXOにおいて使用済みとして定義された額の一部を「後に残す」ことはできず、別の一部が使用される。しかしながら、次のトランザクションの複数の出力間でUTXOからの額を分割することはできる。例えば、Tx内のUTXOにおいて定義された額は、Tx内の複数のUTXO間で分割され得る。したがって、アリスが、UTXOにおいて定義された額のすべてをボブに与えたくない場合、アリスは、リマインダを使用して、Txの第2の出力において自分自身に残りを与えるか、または別の当事者に支払うことができる。
実際には、今日、生成トランザクションの報酬だけでは、典型的には、マイニングを動機付けるのに十分ではないので、アリスは通常、勝利マイナーに対する手数料を含む必要もある。アリスがマイナーに対する手数料を含めない場合、Txは、マイナーノード104Mによって拒否される可能性が高く、したがって、技術的に有効であっても、それは依然として伝搬されず、ブロックチェーン150に含まれない(マイナープロトコルは、マイナー104Mが望まない場合にトランザクション152を受け入れることを強制しない)。いくつかのプロトコルでは、マイニング手数料は、それ自体の別個の出力203を必要としない(すなわち、別個のUTXOを必要としない)。代わりに、所与のトランザクション152の入力(複数可)202によって指し示される総額と出力(複数可)203で指定されている総額との間の差が自動的に勝利マイナー104に与えられる。例えば、UTXOへのポインタがTxへの唯一の入力であり、Txは唯一の出力UTXOを有するとする。UTXOで指定されているデジタル資産の額がUTXOで指定されている額より大きい場合、その差が自動的に勝利マイナー104Mに贈られる。しかしながら、代替的にまたは追加的に、マイナー手数料がトランザクション152のUTXO203のうちのそれ自体の1つにおいて明示的に指定され得ることが必ずしも除外されるものではなない。
所与のトランザクション152のすべての出力203で指定されている総額が、そのすべての入力202によって指し示された総額よりも大きい場合、これは、ほとんどのトランザクションモデルにおいて無効性の別の根拠であることにも留意されたい。したがって、そのようなトランザクションは、ブロック151に伝搬もマイニングもされない。
アリスおよびボブのデジタル資産は、ブロックチェーン150内のどこにでもある任意のトランザクション152においてそれらにロックされた未使用UTXOから構成される。したがって、典型的には、所与の当事者103の資産は、ブロックチェーン150全体にわたる様々なトランザクション152のUTXO全体に散在している。ブロックチェーン150内のどこにも、所与の当事者103の総残高を定義する数字は格納されない。クライアントアプリケーション105におけるウォレット機能の役割は、それぞれの当事者にロックされ、別の前方のトランザクションでまだ使用されていない様々なUTXOすべての値を一緒に照合することである。これは、ストレージノード104Sのいずれか、例えば、それぞれの当事者のコンピュータ機器102に最も近いまたは最良に接続されたストレージノード104Sに格納されたブロックチェーン150のコピーにクエリを行うことによって行うことができる。
スクリプトコードは、しばしば、概略的に表される(すなわち、正確な言語ではない)ことに留意されたい。例えば、[Checksig P]と書いて[Checksig P]=OP_DUP OP_HASH160<H(Pa)>OP_EQUALVERIFY OP_CHECKSIGを意味し得る。「OP_…」は、スクリプト言語の特定のオペコードを指す。OP_CHECKSIG(「Checksig」とも呼ばれる)は、2つの入力(署名および公開鍵)を取り、楕円曲線デジタル署名アルゴリズム(ECDSA)を使用して署名の有効性を検証するスクリプトオペコードである。実行時に、署名(「sig」)の存在(occurrence)はスクリプトから除去されるが、ハッシュパズルなどの追加要件は、「sig」入力によって検証されたトランザクションに残る。別の例として、OP_RETURNは、トランザクション内にメタデータを格納することができ、それによってメタデータをブロックチェーン150に不変に記録することができる、トランザクションの使用不可能な出力を作成するためのスクリプト言語のオペコードである。例えば、メタデータは、ブロックチェーンに格納することが望まれる文書を含み得る。
署名Pはデジタル署名である。実施形態において、これは、楕円曲線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は、鍵、交渉された額または条件、データコンテンツなどの任意の他のトランザクション関連データを交換するために使用され得る。
サイドチャネル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(Tx)が受信されると、プロトコルエンジン401は、Tx内のロック解除スクリプトを識別し、それをスクリプトエンジン402に渡す。プロトコルエンジン401はまた、Txの入力内のポインタに基づいて、Txm-1を識別し、取り出す。それは、Txm-1がまだブロックチェーン150上にない場合には保留中のトランザクションのそれぞれのノード自体のプール154から、またはTxm-1がすでにブロックチェーン150上にある場合にはそれぞれのノードまたは別のノード104に格納されたブロックチェーン150内のブロック151のコピーからTxm-1を取り出し得る。いずれにしても、スクリプトエンジン401は、Txm-1の指し示された出力におけるロックスクリプトを識別し、これをスクリプトエンジン402に渡す。
したがって、スクリプトエンジン402は、Txm-1のロックスクリプトと、Txの対応する入力からのロック解除スクリプトとを有する。例えば、TxおよびTxが図4に示されているが、同じことが、TxとTxなどの任意のペアのトランザクションにも当てはまる。スクリプトエンジン402は、前述したように2つのスクリプトを一緒に実行し、これは、使用されているスタックベースのスクリプト言語(例えば、Script)にしたがって、スタック403上にデータを配置し、そこからデータを取り出すことを含む。
スクリプトを一緒に実行することによって、スクリプトエンジン402は、ロック解除スクリプトがロックスクリプトにおいて定義された1つまたは複数の基準を満たすかどうか、すなわち、ロックスクリプトが含まれる出力を「ロック解除」するかどうかを決定する。スクリプトエンジン402は、この決定の結果をプロトコルエンジン401に返す。スクリプトエンジン402は、ロック解除スクリプトが対応するロックスクリプトで指定されている1つまたは複数の基準を満たすと決定した場合、結果「真」を返す。そうでなければ、結果「偽」を返す。
出力ベースのモデルでは、スクリプトエンジン402からの結果「真」は、トランザクションの有効性の条件のうちの1つである。典型的には、Txの出力(複数可)で指定されているデジタル資産の総額が入力(複数可)によって指し示された総額を超えないこと、およびTxm-1の指し示された出力が別の有効なトランザクションによってまだ使用されていないことなど、同様に満たされなければならないプロトコルエンジン401によって評価される1つまたは複数のさらなるプロトコルレベル条件も存在する。プロトコルエンジン401は、スクリプトエンジン402からの結果を1つまたは複数のプロトコルレベル条件と共に評価し、それらがすべて真である場合にのみ、トランザクションTxを妥当性確認する。プロトコルエンジン401は、トランザクションが有効であるかどうかの指示をアプリケーションレベル決定エンジン404に出力する。Txが実際に妥当性確認されるという条件でのみ、決定エンジン404は、Txに関してそれぞれのブロックチェーン関連機能を実行するために、マイニングモジュール405Mおよびフォワーディングモジュール405Fの一方または両方を制御することを選択し得る。これは、マイニングモジュール405Mが、ブロック151にマイニングするためにTxをノードのそれぞれのプール154に追加すること、および/またはフォワーディングモジュール405FがTxをP2Pネットワーク106内の別のノード104にフォワードすることを含み得る。しかしながら、実施形態では、決定エンジン404は無効なトランザクションをフォワードまたはマイニングすることを選択しないが、これは、逆に、単に有効であるという理由で有効なトランザクションのマイニングまたはフォワードをトリガする義務があることを必ずしも意味するものではないことに留意されたい。任意選択で、実施形態では、決定エンジン404は、一方または両方の機能をトリガする前に、1つまたは複数の追加の条件を適用することができる。例えば、ノードがマイニングノード104Mである場合、決定エンジンは、トランザクションが有効であり、かつ十分なマイニング手数料を残しているという条件でのみトランザクションをマイニングすることを選択し得る。
本明細書における「真」および「偽」という用語は、単一の2進数(ビット)のみの形態で表される結果を返すことに必ずしも限定されないが、それは確かに1つの可能な実装形態であることにも留意されたい。より一般的には、「真」は、成功または肯定的な結果を示す任意の状態を指すことができ、「偽」は、不成功または非肯定的な結果を示す任意の状態を指すことができる。例えば、アカウントベースのモデル(図4には図示せず)では、「真」の結果は、ノード104による署名の暗黙的な(プロトコルレベルの)妥当性確認と、スマートコントラクトの追加の肯定的な出力との組合せによって示され得る(個々の結果の両方が真である場合、全体の結果が真を示すとみなされる)。
アイデンティティ検証プロトコル
SMSテキストを介した2FAは、データおよびシステムのセキュリティを強化するために利用が増加しているプロトコルである。民間および公共システムの継続的な違反ならびにますます厳しくなるデータ規制により、会社は、2FAプロトコルを介して顧客のデータおよびサービスを保護するために、顧客に対して電話番号の提供を奨励または強制するようになってきている。この電話番号を用いて、初期要素(例えば、パスワードログイン)を提供した後、英数字値を含むSMSが顧客の電話に送信される。次いで、顧客は、この追加の値をシステムログインに入力し、正しければ、顧客は「認証」され、アクセスが与えられる。システムのセキュリティは、悪意のある行為者が顧客のパスワードの知識を有し、かつ顧客の電話を所持している可能性が低いという前提に基づく。しかしながら、そのようなシステムにはいくつかの脆弱性および欠点があることが分かっている。1つの脆弱性は、攻撃者が公開情報(例えば、名前および住所)を使用して偽の身分証明書を作成し、次いでその身分証明書を電話プロバイダの店舗で使用して電話の所有者になりすます「SIMスワッピング」として知られている。これにより、攻撃者は、所有者の電話番号を有する新しいSIMカードを発行してもらうことができるため、攻撃者が英数字値を含むSMSテキストを傍受することができるようになる。
概説した欠点は、本明細書で説明する提案されたアイデンティティ検証プロトコルによって対処される。ブロックチェーンの使用により、携帯電話操作の仲介者が必要なくなり、ブロックチェーンの透明性により、何らかの理由で悪意のある行為者がユーザの秘密鍵を盗むことができた場合に、盗まれた秘密鍵を使用して生成されたトランザクションがブロックチェーン上に不変的に文書化され、詐欺の場合の証拠として使用され得る。
2FAの別の既知の例は、ユーザ(または悪意のある行為者)が認証器アプリケーションを実行する物理デバイスへのアクセスを必要とする2段階検証サービスを実装するソフトウェアベースの認証器である。そのような認証器は、SMSベースのプロトコルに勝るいくつかの利点を有する一方で、集中システムの利用可能性への依存およびフィッシングに対する感受性などの欠点を有する。対照的に、アイデンティティ検証プロトコルは、分散型システム(ブロックチェーンネットワーク)を利用し、結果として、いずれか1つのノードが故障してもシステムが利用不可能にならないようにする。
以下で説明するように、本開示の実施形態は、クレデンシャルを検証するものとして第1の当事者が署名されたブロックチェーントランザクションを使用することを可能にするとともに、第1の当事者のアイデンティティを検証するために第2の当事者および/または第三者がそれらの署名されたブロックチェーントランザクションを使用することを可能にするアイデンティティ検証プロトコルを提供する。実施形態は、マルチファクタ認証プロトコルの一部として使用され得る。
図5は、アイデンティティ検証プロトコルを実装するための例示的なシステム500を示す。システムは、第1の当事者501と第2の当事者502(図5では「ユーザ」および「アクセス権限者」と呼ばれる)とを含む。第1の当事者501は、ブロックチェーントランザクション152を生成してブロックチェーンネットワーク106に送信するとともに、例えばブロックチェーン150からブロックチェーントランザクション152を取得するように構成されたクライアントアプリケーションを含むそれぞれのコンピュータ機器を操作する。例えば、第1の当事者は、図1~図3を参照して説明したように、ウォレットアプリケーション105aを操作するアリス103aの役割を果たし得る。図5の例では、第2の当事者502はまた、ブロックチェーントランザクション152を生成してブロックチェーンネットワーク106に送信するとともに、例えばブロックチェーン150からブロックチェーントランザクション152を取得するように構成されたクライアントアプリケーションを含むそれぞれのコンピュータ機器を操作する。その場合、第2の当事者502は、図1~図3を参照して説明したように、ウォレットアプリケーション105bを操作するボブ103bの役割を果たし得る。第1の当事者501および第2の当事者502は、アリス103aおよびボブ103bの両方のアクションの一部またはすべてを実行し得ることは理解されよう。すなわち、原則として、第1の当事者501および第2の当事者502は、同じブロックチェーン関連能力を有し得、命名規則は、例示目的のみのために使用される。
第2の当事者502は、「アクセス権限者」として機能し、すなわち、リソースまたはサービスへのアクセスを制御する。例えば、第2の当事者502は、物理的なリソース、例えば物理的な製品、またはデジタルリソース、例えばデジタルチケット、投票、トークンなどへのアクセスを制御し得る。サービスの例には、例えば銀行口座、電子メールアカウント、オンライン小売アカウントなどのオンラインアカウント、デジタルストリーミングサービスなどが含まれる。第2の当事者502は、小売業者、会社、大学、慈善団体などであり得る。第1の当事者501は、顧客、従業員、学生、寄付者などであり得る。
一例として、第2の当事者502は、不動産の所有者であり得、第1の当事者501は、週末にその不動産にアクセスするために第2の当事者502に支払った行楽客であり得る。
第1の当事者501は、公開鍵を第2の当事者に登録する。上述したように、公開鍵(および公開鍵-秘密鍵ペア)は当業者によく知られている。例えば、第1の当事者501は、第2の当事者502との最初の対話中に、例えば、KYCプロトコルまたはアカウント設定の一部として、公開鍵を登録し得る。
図5に示すように、第1の当事者501は、第2の当事者502に1つまたは複数の第1のクレデンシャル(1-FA)を提供する。例えば、第1のクレデンシャルは、ユーザ名、パスワード、クレジットカード、氏名、住所、運転免許証、パスポート、メモラブルワード、キーカードなどであり得る。第1のクレデンシャル(複数可)は、有線またはワイヤレス接続503、例えば、図3を参照して説明したサイドチャネル301上で第2の当事者502に提供され得る。例えば、第1の当事者は、電子メール、SMSテキスト、Wi-Fi、Bluetooth、NFCなどを介して第1のクレデンシャル(複数可)を第2の当事者に送信し得る。第1のクレデンシャル(複数可)は、例えばオンライン購入またはアカウントログインの一部として、第2の当事者502からのチャレンジ(または要求)に応答して提供され得る。代替的に、第1の当事者501は、直接要求を受信することなく、第1のクレデンシャル(複数可)を第2の当事者502に提供し得る。例えば、第1の当事者501が行楽客である例を続けると、第1の当事者501は、不動産への入り口においてキーカードまたはコード(第1のクレデンシャル)を提示し得る。
第1のクレデンシャル(複数可)の受信に応答して、第2の当事者502は、要求トランザクションTxrtを生成し、ブロックチェーンネットワーク106に要求トランザクションTxrtが送信されることを生じさせる。例えば、第2の当事者502は、要求トランザクションTxrtをネットワーク106の1つまたは複数のノードに送信するか、または要求トランザクションTxrtをネットワーク106に送信する異なるエンティティに送信する。要求トランザクションTxrtは、少なくとも第1の入力および第1の出力を含む。要求トランザクションTxrtは、追加の入力および/または出力を含んでもよい。第1の入力は、第2の当事者502の署名を含む。すなわち、第2の当事者502は、第1の当事者501または一般公衆に知られている公開鍵に対応し得る第2の当事者502の秘密鍵を使用して生成された署名でトランザクションに署名する。第1の出力は、第1の当事者501の登録された公開鍵にロックされるため、それをロック解除して償還または使用するためには、第1の当事者501の登録された公開鍵に対応する秘密鍵を使用して生成された署名が必要となる。
出力は、登録された公開鍵のハッシュ(公開鍵ハッシュ)を含むP2PKH出力であり得る。P2PKH出力を使用するために、使用トランザクションの入力は、公開鍵のハッシュ(例えば、OP_HASH160)がP2PKH出力内の公開鍵ハッシュと一致するような公開鍵を含まなければならない。言い換えれば、P2PKH出力は、必ずしもその順序ではないが、公開鍵のハッシュがP2PKH出力内のアドレスと一致するような公開鍵と、公開鍵およびトランザクションメッセージに対して有効である署名という2つのアイテムを提供するように、使用者にチャレンジする。
第1の当事者501は、第2の当事者502から要求トランザクションTxrtを取得し得る。しかしながら、好ましくは、第1の当事者は、ブロックチェーン150またはブロックチェーンネットワーク106のメムプールをスキャンすることによって要求トランザクションTxrtを取得する。トランザクションがネットワーク上で行われると、それは送信され、マイニングノードがそれを次のブロック151に含めるまで、メムプール(メモリプール)として知られているものに保持される。ネットワーク106上の各ノードは、それら自体のメムプールを動作させる。要求トランザクションTxrtは、公開鍵または公開鍵アドレスに支払い可能なUTXOについてブロックチェーンまたはメムプールをスキャンすることによって取得され得る。言い換えれば、第1の当事者のウォレットアプリケーションは、その登録された公開鍵または登録された公開鍵のハッシュに支払い可能なトランザクションについてブロックチェーンまたはメムプールをスキャンする。
要求トランザクションTxrtを取得すると、第1の当事者501は、確認トランザクションTxctを生成する。確認トランザクションTxctは、要求トランザクションTxrtの出力を使用する。すなわち、第1の当事者501の登録された公開鍵にロックされた要求トランザクションTxrtの出力を参照する。要求トランザクションTxrtの出力を使用するために、確認トランザクションTxctの入力は、登録された公開鍵に対応する秘密鍵を使用して生成された署名を含む。要求トランザクションTxrtの出力のタイプに応じて、入力はまた、登録された公開鍵を含み得る。これは、出力がP2PKH出力である場合である。確認トランザクションTxctは、第2の当事者502、第1の当事者501、または異なる当事者にロックされ得る出力を含む。好ましくは、出力は第2の当事者502にロックされ、その結果、第2の当事者(すなわち、第2の当事者のウォレットアプリケーション)は、第2の当事者502の公開鍵(またはそのハッシュ)に支払い可能なUTXOについてブロックチェーンまたはメムプールをスキャンすることができる。
確認トランザクションTxctの取得に応答して、および任意選択で任意のさらなる検証ステップに加えて、第2の当事者502は、第1の当事者501にリソースまたはサービスへのアクセスを許可する。
したがって、ブロックチェーン150またはメムプール内の確認トランザクションTxctの存在は、第1の当事者501のアイデンティティを検証するための追加のクレデンシャルまたは認証要素として機能する。
図6は、アイデンティティ検証プロトコルを実装するための別の例示的なシステム600を示す。図6のシステムは、第三者(「信頼できる第三者機関」と称される)601を含む。この例では、第2の当事者(アクセス権限者)502は、リソースまたはサービスへのアクセスを依然として制御するが、第1の当事者501の公開鍵の登録および要求トランザクションの生成に対する責任は、第三者601に委任される。第三者601は、認証局、例えば公開鍵を証明することを託された当事者であってもよい。例えば、第三者は、個人に対して厳密な初期アイデンティティチェックを行って、個人をそれらの公開鍵とリンクさせることができる。一例として、第三者601は、第1の当事者501と対面会議を行って、それらが公文書、例えばパスポートまたは運転免許証と一致することをチェックし得る。
この例では、第2の当事者502は、ブロックチェーンネットワークにアクセスするように構成されたコンピュータ機器を操作してもしなくてもよく、一方、第三者601は、ブロックチェーントランザクション152を生成してブロックチェーンネットワーク106に送信するとともに、例えばブロックチェーン150からブロックチェーントランザクション152を取得するように構成されたクライアントアプリケーションを含むそれぞれのコンピュータ機器を操作する。事実上、第三者601は、図1~図3を参照して説明したアリス103aまたはボブ103bに帰するアクションの一部またはすべてを実行し得る。
図5の例では、後述する第三者601に帰するアクションは、第2の当事者502によって実行され得、すなわち、この例では、第2の当事者502および第三者601は同じ当事者であることに留意されたい。
第1の当事者501は、例えば上記第1のクレデンシャル(複数可)に対する要求に応答して、1つまたは複数の第1のクレデンシャルを第2の当事者502に提供する。第2の当事者は、第1の当事者501であると報告するユーザのアイデンティティを検証するために、要求(2FA-要求)を第三者601に送信する。2FA-要求は、サイドチャネル504、例えばインターネットを介して、またはブロックチェーントランザクション152を使用して送信され得る。
第三者601は、要求トランザクションTxrtを生成する。上記に示したように、要求トランザクションは、第1の当事者501の登録された公開鍵にロックされた出力を含む。図5の例とこの例との違いは、要求トランザクションTxrtの入力が、第三者601によって生成された署名を含むことである。しかしながら、これは、要求トランザクションが第2の当事者502および第三者601の両方からのそれぞれの署名を含み得ることを除外するものではない。第三者601は、要求トランザクションTxrtをブロックチェーンネットワーク106に送信する。
第1の当事者501は、例えばブロックチェーン150またはメムプールをスキャンすることによって要求トランザクションTxrtを取得し、確認トランザクションTxctを生成し、確認トランザクションTxctをブロックチェーンネットワーク106に送信する。
第三者601は、例えばブロックチェーン150をスキャンすることによって、またはネットワーク106の1つまたは複数のノードのメムプールをスキャンすることによって、確認トランザクションTxctがブロックチェーンネットワーク106に送信されたかどうかを決定する。確認トランザクションTxctがブロックチェーンに記録されているか、または1つまたは複数のそれぞれのメムプールに存在する場合、第三者は、第1の当事者のアイデンティティが検証されたことを第2の当事者502に通知する指示を第2の当事者に送信する。例えば、第三者601は、サイドチャネル504上で指示を送信してもよく、または指示を含むブロックチェーントランザクション152を第2の当事者502に送信してもよい。いくつかの例では、第三者601は、確認トランザクションTxct(したがって要求トランザクションTxrt)がブロックチェーン150に記録された後にのみ指示を送信する。
指示の受信に応答して、第2の当事者502は、第1の当事者501にリソースまたはサービスへのアクセスを許可する。
図7は、第1の当事者501のアイデンティティを検証するための例示的なシーケンス図を示す。図7は、第1の当事者が、(必須ではないが)それぞれのウォレットアプリケーション702aを操作する「ユーザA」701aと、それぞれのウォレットアプリケーション702bを操作する「ユーザB」701bという2人の異なるユーザをどのように含み得るかを示す。第1の当事者501が単一のユーザを含む場合、ユーザA701aはユーザB701bと同じユーザである。
ユーザA701aは、1つまたは複数のクレデンシャルをアクセス権限者502に提供する。アクセス権限者は、ユーザAのアイデンティティを検証するよう求める要求を信頼できる第三者機関601に送信する。信頼できる第三者機関601は、ユーザBの公開鍵にロックされたブロックチェーン150に要求トランザクションTxrtを送信する。ユーザBのウォレットアプリケーション702bは、ブロックチェーン150から要求トランザクションTxrtを取得し、第2のクレデンシャルを提供するよう求める要求をユーザB701aに通知する。ユーザBは、ウォレットアプリケーション702bを使用して確認トランザクションTxctを生成し、ウォレットアプリケーション702bは、確認トランザクションTxctをブロックチェーン150に送信する。信頼できる第三者機関601は、ブロックチェーン150から確認トランザクションTxctを取得し、第1の当事者のアイデンティティが検証されたという指示をアクセス権限者502に送信する。アクセス権限者502は、ユーザB701aにリソースまたはサービスへのアクセスを許可する。この例では、ユーザB701bがユーザA701aのアイデンティティを証明する。例えば、ユーザAは、商人から購入すること、またはストリーミングサービス上のコンテンツにアクセスすることを望む子供であり得、ユーザBは、購入またはアクセスが適切であるかどうかをまず判断し、次いで子供のアイデンティティを証明することができる親であり得る。しかしながら、好ましくは、ユーザAがユーザBであり、ユーザAが、自身のアイデンティティを検証するために確認トランザクションを提供している。
任意選択の特徴として、第1の当事者の公開鍵にロックされた要求トランザクションの出力は、要求トランザクションを生成した当事者、すなわち第2の当事者502または第三者601の公開鍵に追加でロックされ得る。その場合、出力はマルチシグネチャ出力である。マルチシグネチャ(multi-sigとしても知られる)出力は、multi-sig出力におけるn-of-m公開鍵に対応する署名を含むように使用トランザクションの入力にチャレンジする。したがって、これらの例では、出力は、第1の当事者501によってロック解除(すなわち、使用)され得る。出力は、代替的に、(どの当事者が要求トランザクションを生成したかに応じて)第2の当事者502または第三者601によってロック解除されてもよい。例えば、第2の当事者502が要求トランザクションを生成した場合、出力は、1-of-2のmulti-sig出力であってもよく、これは、第1の当事者501または第2の当事者502が独立してロック解除することができるものである。出力が当事者の一方によってロック解除(すなわち、使用)されると、他方の当事者がロック解除(すなわち、二重支出)することができない点に留意されたい。第1の当事者501がmulti-sig出力をロック解除する場合、使用トランザクションは確認トランザクションである。第2の当事者502または第三者601がmulti-sig出力をロック解除する場合、使用トランザクションはキャンセルトランザクションである。キャンセルトランザクションは、例えば、要求トランザクションがネットワーク106にサブミットされてからある期間が経過した場合、第2の当事者502または第三者601がUTXOセットから要求トランザクションを除去することを可能にする。
別の任意選択の特徴として、第1の当事者502のプライバシーを高めるために、第1の当事者502は、第1の公開鍵を第2の当事者502または第三者601に登録することができ、第2の当事者または第三者は、要求トランザクションの出力を、第1の公開鍵に基づいて生成された第2の公開鍵にロックし得る。第2の公開鍵は、第1の当事者501および第2の当事者502または第三者601の両方に知られている所定の方法で生成される。これにより、第1の当事者501は、要求トランザクションを取得するために、第2の公開鍵またはそのハッシュについてブロックチェーン150またはメムプールをスキャンすることができる。例えば、第1の当事者501は、擬似乱数を生成し、それを第2の当事者502または第三者601と共有してもよく、またはその逆であってもよい。擬似乱数を第1の公開鍵と組み合わせて第2の公開鍵が生成され得る。使用される公開鍵方式に応じて、例えばECDSA方式が使用される場合、擬似乱数は最初に生成点が乗算されなければならない場合がある。擬似乱数は、ディフィーヘルマン交換またはその変形を使用して当事者間で共有され得る。その後、第1の当事者501が、例えば別のリソースまたはサービスへのアクセスを得るために第2の当事者502と対話する場合、第2の当事者または第三者は、同じ擬似乱数を第2の公開鍵に適用して第3の公開鍵を生成し、後続の要求トランザクションの出力を第3の公開鍵にロックし得る。
別の任意選択の特徴は、要求トランザクションTxrtの出力におけるチャレンジの使用である。チャレンジは、所定の応答を含むように確認トランザクションTxctの入力にチャレンジする。このチャレンジは、確認トランザクションTxctの入力が第1の当事者501の署名を含むという要件に追加されることに留意されたい。
第1に、第1の当事者501がメッセージを第2の当事者502に送信し得るか、または第2の当事者502がメッセージを第1の当事者501に送信し得る。いくつかの例では、第1の当事者501および第2の当事者502は、情報を交換することによって共同でメッセージを生成し得る。メッセージは、アイデンティティ検証要求の詳細、例えば、第1の当事者501がアクセスしようとしているリソースまたはサービスに関する情報、時間および/または日付情報などを含み得る。一般に、メッセージは任意の形式の情報を含み得る。いくつかの例では、メッセージは、第2の公開鍵を生成するために使用される擬似乱数を含む。メッセージは、暗号化された形態で送信され得、その場合、第1の当事者501および第2の当事者502は、復号鍵を知っているか、または共有しなければならない。復号鍵を共有する方法は、当業者にはよく知られている。1つのそのような方法は、ディフィーヘルマン交換である。
第1の当事者501は、要求トランザクションTxrtを取得すると、要求トランザクションTxrtがメッセージをその元の形態(すなわち、平文として)含むかその暗号化された形態(例えば、暗号文として)で含むかを決定し得る。代替的に、第1の当事者501は、要求トランザクションTxrtがメッセージのハッシュ(またはマルチハッシュ)をその元の形態で含むか暗号化された形態で含むかを決定し得る。マルチハッシュは、ハッシュ関数をメッセージに2回以上適用した結果である。特定のハッシュ関数はそれ自体がメッセージを複数回ハッシュすることができることに留意されたい。一般に、マルチハッシュ関数、例えばダブルハッシュ関数を適用することは、第1のハッシュ関数を1回または複数回適用し、続いて第2のハッシュ関数を1回または複数回適用することを含み得、ここで、第1および第2のハッシュ関数は、同じハッシュ関数であっても異なるハッシュ関数であってもよい。加えて、第1のハッシュ関数および/または第2のハッシュ関数はそれら自体がハッシュ関数を1回または複数回適用し得る。以下ではメッセージXにダブルハッシュ関数を適用することを指すために表記H(X)が使用され、ここで、H(X)=H(H(X))であり、HおよびHは、同じまたは異なるハッシュ(またはマルチハッシュ)関数であり得る。一例として、ハッシュ関数H160はそれ自体が、RIPEMD160およびSHA256という2つの異なるハッシュ関数を利用するハッシュ関数であり、すなわち、hash160(X)=RIPEMD160(SHA256(X))である。
第1の当事者501は、要求トランザクションTxrtが予想されるメッセージまたはメッセージの予想されるハッシュ(これはマルチハッシュであってもよい)を含む場合にのみ、確認トランザクションTxctを生成し得る。好ましくは、第1の当事者501は、要求トランザクションTxrtがメッセージのダブルハッシュを含む場合にのみ確認トランザクションTxctを生成し得る。第三者601が要求トランザクションTxrtを生成する場合、第2の当事者502は、メッセージまたはその(マルチ)ハッシュを第三者601と共有する。
要求トランザクションTxrtの出力は、予想されるメッセージまたはメッセージの予想されるハッシュ(これはマルチハッシュであってもよい)を含み得る。好ましくは、出力は、確認トランザクションTxctの入力がその出力をロック解除するためにメッセージの知識を必要とするチャレンジを含む。例えば、出力はハッシュパズルを含み得る。ハッシュパズルは、入力値を取り、ハッシュ関数を入力値に適用し、それを所定のハッシュと比較する。入力値のハッシュが所定のハッシュと一致する場合、1または「真」などの値が出力される。トランザクションの出力にハッシュパズルを含めることは、使用トランザクションの入力が、所定のハッシュにハッシュする正確な入力値(またはプレイメージ)を含むことを必要とする。
一例として、要求トランザクションTxrtの出力がメッセージのハッシュを含む場合、確認トランザクションTxctの入力は、メッセージ自体を含む必要がある。要求トランザクションTxrtの出力がメッセージのダブルハッシュを含む場合、確認トランザクションTxctの入力は、メッセージのハッシュを含む必要がある。一般に、確認トランザクションTxctの入力は、要求トランザクションTxrtの出力に含まれる(マルチ)ハッシュのプレイメージを含むことが必要とされる。
以下の例は、2要素認証システムにおけるアイデンティティ検証プロトコルの使用を説明する。この例では、ユーザは、アイテムを購入する過程におり(以下では「販売トランザクション」と称される)、クレジットカードトランザクションを進める許可を与えることを示すブロックチェーントランザクションに署名することが予想される。そのような署名されたトランザクションの生成後、クレジットカード会社および/または企業は販売の完了手続きを続行することが予想される。販売は、不換通貨用のペイメントカードの使用を必要とし、第1のクレデンシャル(または要素)は、ペイメント(クレジットまたはデビット)カード自体(または少なくとも関連する番号)である。
好ましくは、MFAシステムを実装する際、いくつかの重要な側面を考慮しなければならない。悪意のある行為者が、システムを危険にさらしたり、望ましくない結果を生じさせたりすることを防止する努力がなされなければならない。個人は、ほとんどの場合ではないにしても多くの場合、自身の金融トランザクションの詳細がパブリックドメインになることを好まない。2FAプロセスは短時間で完了することが望ましい。最終的に当事者間で不一致が生じた場合に監査する目的で、ある程度の透明性が望まれ得る。
単一の設計の2FAB解決策では、上記の基準の各々を同時に完全に満たすことができない場合がある。そのため、基本設計が提示され、その後、前述の考慮事項をターゲットとする追加の設計が提示される。
以下の例において以下の頭字語を使用する。PF1 701a(例えば、第1の当事者501)は、商品またはサービスの支払いをしようとしている個人である。これは、商品をレジに持っていく店内の人物を含むか、またはインターネット対応デバイスからオンライン購入を行う人物であり得る。WF1 702aは、PF1のブロックチェーンウォレットである。このウォレットは、PF1に代わってアクセスし、トランザクションをブロックチェーン150にサブミットすることを担う。WF1はまた、文字列/テキストのハッシュを計算するととともに、これらのハッシュおよび関連付けられたテキストを格納および記録することもできる。企業703(例えば、第2の当事者502)は、PF1が商品およびサービスに対して支払いを行うべき会社である。銀行704(例えば、第三者601)は、クレジット/デビットカードを発行し、支配し、その使用を管理する機関を表す。PF2 701bは、第2の要素を表す確認トランザクションに署名することを担う個人である。PF2はPF1と同じ人であってもよい。実際、これは所望の選択肢であり、同じ個人が第1および第2の要素を証明する。しかしながら、PF1およびPF2は必ずしも同じ個人ではない。この理由から、PF1およびPF2は、WP全体にわたって、それら自体のアイデンティティを有するものとして表されており、それらが同じ人物でない場合を考慮する。WF2 702bは、PF2のブロックチェーンウォレットである。このウォレットは、PF2に代わってアクセスし、トランザクションをブロックチェーンにサブミットすることを担う。WF2はまた、銀行からの任意の2FA要求についてブロックチェーンを観察し、次いで、この要求をPF2に通信することもできる。
2FAシステムの設計を容易にするために、以下の仮定が行われる。第1に、クレジットカード会社または銀行704によってクレジットカードが付与されると、個人は公開鍵(例えば、ECDSA公開鍵)が登録される。この公開鍵は、個人の銀行口座に結び付けられる。ユーザまたは銀行がセキュリティ上の理由またはその他の理由で必要とする場合、ユーザは、新しい公開鍵を銀行に登録する(以前の公開鍵を置き換える)ことができる。第2の仮定は、銀行704によってクレジットカードが付与されると、個人および銀行は、ブロックチェーン上の販売トランザクションデータを暗号化する必要性/要求がある場合に銀行704が利用する秘密値Sに関して互いに合意するということである。この秘密Sは、クレジットカード所有者と銀行704との間でディフィーヘルマンプロトコルを使用して安全に生成および交換されることができ、カード所有者の口座に結び付けられる。ユーザまたは銀行704が、セキュリティ上の理由または他の理由で、以前のSが危険にさらされていると信じる場合、ユーザは、銀行704と再契約(re-engage)して、新しい秘密値Sを生成する(以前の秘密値を置き換える)ことができる。
2FAシステムの例示的なシーケンス図を図8に示す。最初の3つのステップ(上から下)は、人が商品およびサービスを決定したときのPF1と企業703との間の対話を表す。ここで、PF1は、必要なアイテムを決定した後、正式な購入注文またはその他の形式でこのリストを企業703に提示する。企業703は、PF1に通信されるインボイスまたは請求書を構築する(このインボイスには、企業の識別情報が含まれると予想される)。PF1がインボイスの詳細に満足すると、PF1は企業703に自身の必要なクレジットカードの詳細を与える。注文書、インボイス、クレジットカードは、必ずしも物理的に相手に与えられる必要はなく、これらは、カードリーダ、キャッシュレジスタ、携帯電話などの電子デバイスを使用して通信され得ることに留意されたい。企業703がクレジットカード情報を得た後、キャッシャーは、メッセージ、例えば、正式な「販売トランザクションのデジタル表現」(STDR)を構築する。これは、インボイスとPF1のクレジットカード情報との組合せであり得る。企業703は、トランザクションの要約(すなわちハッシュ)H(STDR)を生成し、これをPF1に通信する。PF1は、H(STDR)値が正しいかどうかをチェックすることができるコンピューティングデバイス、例えば、スマートフォンを所有している必要がある。この機能は、スマートフォン上で利用可能なWF1によって実行され得る。H(STDR)が正しく計算されたと仮定すると、ウォレットは、もっと後の2FA要求を予想して、このハッシュおよびSTDR自体の記録を保持する。
PF1がH(STDR)値を確認したと仮定すると、企業703は、ユーザのクレジットカードの処理を進めることができる。企業703は、STDR情報をPF1の銀行704に渡す。
銀行704は、情報(例えば、ビジネス識別子、クレジットカード情報、STDRフォーマットなど)を妥当性確認し、そのクレジットカードについて現在登録されている公開鍵(PCC=vCCG)を取り出す。ここで、vCCは秘密鍵であり、Gは生成点である。上記妥当性確認の後、銀行704は、H(・)=SHA256などのハッシュ関数を使用して、STDRのダブルハッシュH(STDR)を生成し、ブロックチェーンにサブミットされるべき「2FA要求トランザクション」(Txrt)を作成し、ここで、上記トランザクションの出力(例示の目的で出力-2FAとラベル付けされる)は、ダブルハッシュを利用して「ロック」される。「2FA要求トランザクション」Txrtは、販売トランザクションに対する第2の認証要素についての銀行704による正式な要求であるトランザクションである。「要求」されている第2の要素は、ブロックチェーントランザクションに署名するPCCによって生成されるデジタル署名(ECDSA)である。前述の出力された出力-2FAを使用するために、このデジタル署名は、上記出力を利用する使用トランザクションの入力スクリプトに存在しなければならない。Txrtの例を以下の表に示す:
Figure 2023502057000002
Txrtについては、トランザクションの入力は、提案されたシステムのすべての利害関係者によって知られておりかつ信頼されると予想される公開鍵PBank=vbankGを用いて銀行704によって署名される。トランザクションには2つの出力があり、1つ目は出力-2FAであり、2つ目は使用不可能な(例えば、OP_RETURN)出力である。使用不可能な出力は、トランザクションに関連するメタデータを格納するためのものである。OP_RETURN出力以外のトランザクション内にメタデータを格納する代替方法が存在する。OP_RETURN出力は、トランザクション内に含まれ得るメタデータの例を示す。これらを以下の表で説明する:
Figure 2023502057000003
出力-2FAの場合、これは、以下に複製されるロックスクリプトによって保護される。
Figure 2023502057000004
このスクリプトの前半は、H(STDR)であり得るH(STDR)のプレイメージを求め、後半は、クレジットカードに登録された公開鍵に結び付けられたECDSA署名Sig(PCC)を求める。PF2が2FA要求に気づいていないか、または(例えば、販売トランザクションを思い出せずに承認を行わないため)トランザクションを確認したくないシナリオがあると仮定すると、要求トランザクションTxrtは以下のように変更することができる。1つの方法は、銀行704がトランザクションTxrtの出力-2FAを使用する選択肢を有することを可能にすることである。ある期間の後、例えば銀行の裁量で、PF2が出力-2FAを使用しなかった(すなわち第2の認証要素を提供した)場合、銀行704は、出力-2FAをそれ自体に「返金」することができる。したがって、出力-2FAのロックスクリプトは、銀行704またはPF2の両方が出力をロック解除できるように調整される。
Figure 2023502057000005
上記のスクリプトに示されるように、これは、2つの公開鍵PBankまたはPCCのいずれかに対する署名を求めるm-of-nのmultisig条件を含むことによって行われ得る。ここで、ロックスクリプトは、必要とされる有効な署名の数(m)で始まり、次いで、m個の署名が対応しなければならないn個の公開鍵のセット、次いで値n、およびm個の署名すべてが有効であるかどうかをチェックするオペコードOP_CHECKMULTISIGを列挙する。このようにして、銀行704は、必要に応じて出力-2FAを使用することができる。その作成後、トランザクションTxrtは、銀行704によってブロックチェーンにサブミットされる。
Txrtが成功裏にマイニングされると(すなわち、ブロックチェーン150上のブロック151に含まれると)、2FA要求についてブロックチェーン(UTXO)を常にスキャンしているPF2のウォレット(WF2)は、最終的にブロックチェーン150上のトランザクションの存在に気付き、この要求の存在をPF2に警告する。ウォレットWF2は、PCCをターゲットとする出力-2FA、および任意選択で<2FAB-ID><Txrt-ID>を含むトランザクションを特に求めている。
PF2がPF1であると仮定すると(タンデムウォレットでは、WF2はWF1であり得る)、ウォレットは、PF1と企業703との間の最初の接触点から受信された格納されたH(STDR)が、OP_RETURN出力内のSTDRの復号されたバージョンおよび出力-2FA内のH(STDR)に対応することをチェックすることができるであろう。値が一致し(または一致せず)、PF2が販売トランザクションを続行することを望む場合、PF2はウォレットWF2内のその選択肢を選択する。
PF2の命令で、WF2はトランザクションTxctを作成する。このトランザクションは、2FA確認トランザクションとなる。このトランザクションは、PF2が販売トランザクションの完了に対して銀行704に承認を与える正式な確認である。
Figure 2023502057000006
Txctトランザクションの入力は、Txrtの出力-2FAである。したがって、出力-2FAのロック解除スクリプトは以下のようになる:
Figure 2023502057000007
または、銀行704がTxrtをキャンセルすることを許可されている場合には、以下である:
Figure 2023502057000008
PF2は、秘密鍵vCCを利用するトランザクションの署名を含まなければならない。加えて、PF2はH(STDR)を提供しなければならない。PF2がこのハッシュ値を含むことは、PF2がすべき正確な販売トランザクションに応答していることをPF2が確認する方法である。STDRにおいて変更された文字がある場合、完全に異なるハッシュ値が生成されることに留意されたい。
トランザクションには、銀行704にy値を返す少なくとも1つの出力が含まれ得る。第2のOP_RETURN出力を使用して、必要なメタデータを格納し得る。メタデータは、トランザクションが2FABトランザクションであることを示す<2FAB-ID>と、トランザクションが具体的には2FAB確認トランザクションであることを示す<Txct-ID>とを含み得る。トランザクションはブロックチェーンに提出されることとなる。
Txctが成功裏にマイニングされると、銀行704は、そのウォレットソフトウェアがTxctについてブロックチェーン150を常にスキャンしているため、最終的にブロックチェーン150上のTxctの存在に気付く。銀行704は、銀行の公開鍵PBankおよび任意選択で<2FAB-ID><2FA-ct-ID>タグをターゲットとする出力を含むトランザクションを具体的に求めことになる。
銀行704は、他の非2FA妥当性確認プロセスを行う必要あれば何でも行い、それに応じてユーザのクレジットカード残高を調整し、次いで、販売トランザクションが銀行704によって承認されたという署名された認証を企業703に送信する。認証はブロックチェーントランザクションの形態であり得る。次いで、企業703は、ユーザに商品またはサービスを提供する。
図8の例では、トランザクションがブロックチェーン150上で確認されるのにかかる時間に対して遅延が存在する。プルーフオブワークブロックチェーンの場合、トランザクションがマイニングされる(すなわちブロックチェーン150に含まれる)ための平均時間は10分である。要求トランザクションTxrtがマイニングされることと確認トランザクションTxctがマイニングされることとを組み合わせるということは、販売の詳細を定式化する際のPF1間の最初の対話から、顧客が商品またはサービスに対する権利を与えられるまでに約20分かかることを意味する。これは、いくつかの状況では非実用的であり得る。
ブロックチェーンネットワーク106のノードは、それらが受信する未確認トランザクションを、未確認トランザクションメモリプールと呼ばれ、単にメムプールと呼ばれることが多いデータベースに格納する。すべての受信されたトランザクションがメムプールに追加されるわけではない。トランザクションが、すでにメムプール内にある別のトランザクションの入力を二重支出する場合、それはドロップされる。トランザクションは、それが標準トランザクションでない場合にもドロップされる。ノードが新しいブロックを受信するか、またはブロック自体をマイニングすると、未確認トランザクションメモリプールが更新され、ブロックに含まれるすべてのトランザクションが除去される。トランザクションが作成されると、少量のノードを通してブロックチェーンネットワーク106に中継される。新しいトランザクションを受信するノードは、それが有効であることと、すでにメムプール内にあるトランザクションの二重支出ではないこととをチェックする。トランザクションがチェックにパスした場合はネットワーク内の他のノードに中継され、パスしなかった場合はドロップされる。メムプールは、本質的に、ブロックチェーンにおける確認を待つトランザクションのための一時的なストアとして機能する。これは、トランザクション(フォーマッティングおよび二重支出を含む)の有効性をチェックするブロックチェーンネットワーク106のノードによって維持される。各ノードは、メムプールのコピーを保持し、新しい有効なトランザクションを他のノードに渡し、他のノードからの有効なトランザクションをそのバージョンのメムプールに受け入れる。
この妥当性確認プロセスがノードのそれぞれのメムプール内のトランザクションに対してノードの各々によって実行されることを考慮すると、複数のメムプール内のトランザクションの存在は、完全ではないが十分なトランザクションの正当性を示すと見なされ得る。メムプール内のトランザクションの正当性は、特に、最初の(有効な)トランザクションブロードキャストが次のブロックに含まれるものであるプルーフオブワークブロックチェーンに適用可能である。トランザクションが、ノードにわたってアップロードされ、妥当性確認され、ブロードキャストされるのが、非常に迅速に-ほぼ即時に-発生することを考慮すると、支払いの対象の受信者が、十分な信頼レベルで(マイニングされていないにもかかわらず)有効であるとしてメムプール内のトランザクションを受け入れる意思がある場合、支払人がトランザクションを送信してから受取人がトランザクションを「見ることができ、受け入れる」までの時間が劇的に短縮される。メムプールは、マイニングされたトランザクションのUTXOを使用する有効なトランザクションを格納するだけでなく、メムプールはまた、メムプールにあるがまだマイニングされていないトランザクションの出力を使用するトランザクションを格納し、有効なものとして受け入れる。これは、各トランザクションが前のトランザクションの出力(複数可)を使用し、最初のトランザクションがマイニングされたトランザクションの出力を使用する唯一のトランザクションである、メムプール内のトランザクションのチェーンを作成することができる。現在、このチェーンは、25個のトランザクション程度の長さであり得る。
図9は、メムプールを利用する修正された2FAプロトコルのシーケンス図を示す。この例では、WF2は、メムプール901(およびブロックチェーン150)をスキャンし、PF2に対する確認要求がある場合にPF2に警告する。PF2が第2の認証要素を提供する意思がある場合、PF2は、メムプール内のトランザクションTxrtの出力-2FAを使用する確認トランザクションTxctに署名する。PF2は、トランザクションをメムプールにサブミットする。
銀行のウォレットは、そのような2FA確認トランザクションのためにメムプールをスキャンし、銀行704は、Txctが販売トランザクションのためのメムプールに実際に存在する場合、販売トランザクションを進めるように企業703に通知する。図10は、メムプール901内の未確認トランザクションのチェーンを示す。図11は、メムプール901内の要求トランザクションに対する二重支出試行を示す。メムプール内のトランザクションを(MFAプロトコルについてまたは一般に)有効なものとして「受け入れる」際の主な懸念は、二重支出の脅威である。二重支出は、トランザクション、例えば「Trans DS」が別のもの、例えばTxctと同じ出力を使用する場合であり、この結果、Txctは「無効」と見なされ、ノードのメムプール901から除去され、決してマイニングされたりブロックに含まれたりしなくなる。
しかしながら、二重支出は、実際に達成することが困難または非実用的であることが証明されている。
一方で、二重支出が成功したとしても、これはMFAプロトコルに対して問題を引き起こさない。販売トランザクションが必要とする第2の要素は、vccを使用する署名されたTxctである。銀行704がメムプール内でvcc署名されたTxctを見た場合、そのトランザクションが(二重支出または他の理由で)ブロックに確認されない場合であっても、依然として、PF2がトランザクションTxctに署名したことに変わりはない。これは、第2の要素の十分な確認と捉えることができる。このような理解におけるメムプール901は、図12に示すように、要求および確認トランザクションのための通信媒体として機能することとなる。それらの便宜上、銀行704は、二重支出の場合にTxctのコピーをその記録に保存することができ、トランザクションには決してマイニングされない。これは、監査または紛争に利用可能である。しかしながら、ほとんどの場合、それぞれのサブミット後約10分で、TxrtおよびTxctはブロックチェーンにマイニングされる。
一部の当事者(例えば、顧客および企業)は、販売トランザクションを実行するときに、あるレベルのプライバシーを必要とするかまたは所望し得る。先に説明した実装形態では、顧客のプライバシーを保護するために特定の措置がとられており、例えば、販売トランザクション(STDR)の詳細は必ずしもトランザクションに含まれる必要はなく、代わりに販売トランザクション(STDR)のハッシュおよび/または暗号化バージョンが使用され得る。ブロックチェーン150が公開されており不変であることを考慮すると、これらの措置は望ましい。出力-2FAのロックスクリプトは、ハッシュH(STDR)が使用トランザクションの(Txct)入力スクリプトに存在することを義務付ける方法で、ダブルハッシュ(H(STDR))を含み得る。悪意のある行為者が生のSTDRを決定することができる場合、行為者は、STDRが同じであれば、ブロックチェーン150上に表される他のすべての販売トランザクションを識別することができてしまう。これを防止するために、各STDRを一意にすることが賢明であろう。いくつかの例では、STDRは、以下の情報の1つまたは複数から構成される:インボイス(購入されるものに関する詳細)、クレジットカードの詳細、およびビジネスID(企業703を識別する情報、例えば、名称、住所、登録番号など)。
顧客が同じクレジットカードを使用して同じ店から同じアイテムを繰り返し購入する場合、STDRが毎回同じであるという危険がある。各販売トランザクションを区別するために、いくつかの一意のデータがSTDRに含められ得る。場合によっては、販売トランザクションのインボイスは、一般に「送り状番号」と呼ばれる一意の識別子を含む。これは、一意のSTDRの必要性に対処するが、ある程度までしか対処しない。新しい販売トランザクションが作成されるたびにその番号が固定値だけ単純に増分される場合、関心のある当事者が、「同じカードを使用して同じ企業703から同じアイテムを購入する」各新しい販売トランザクションを識別することは計算上容易である。番号が重複の確率が低い十分に大きい集合から選択された乱数である場合、これは理想的となる。一意のSTDRハッシュを生成する方法として、トランザクションの時間の日付-時刻値を使用することができる。しかしながら、これでは、日付-時刻が予測可能な方法で増加する値であるという同じ課題に直面する。このため、少なくとも1つのSTDRを知っていれば、日付-時刻を反復し、「同じカードを使用して同じ企業から同じアイテムを購入する」販売トランザクションのハッシュを計算し、識別することができる。乱数(2FAB_Rand)が販売トランザクションのIDであることは好ましい選択肢である。これは、先に説明したように、企業703によって作成され得るか、または人PF1によって生成された乱数であり得る。別の選択肢として、それは、最初の対話において企業703およびPF1の両方からの入力を用いて共同で生成された乱数であってもよい。2FAB_Randの生成および妥当性確認のプロセスは、図9に示すように、PF1と企業703との間の対話に組み込まれ得る。
PF1および企業のランダム値をkPF1およびkBusとして使用することを考慮し、この場合以下である:
0<kPF1,kBus<q
ここで、qは大きな素数である。
値2FAB_Randは、以下となり得る:
2FAB_Rand=(kPF1+kBus)mod q
修正されたSTDR(STDR)値は、ここでは、以下となるように修正される:
STDR=STDR||2FAB_Rand
ここで、||は連結を表す。
2FAB_Rand値は、PF1のウォレットに格納されることが予想される。いくつかの事例では、2FAB_Rand値は、メタデータとして2FAB-rtトランザクションに含まれてもよく、例えば、値Sを使用して暗号化されてもよい。
STDRの一意性に関する懸念に加えて、PCC公開鍵の一意性に関する懸念も存在する。クレジットカードの所有者は、カードが付与された時点で銀行704に公開鍵PCCを登録することを想起されたい。各2FAトランザクションが同じ値PCCに送信される場合、関心のある(場合によっては悪意のある)当事者は、正確に何が買われたか知らないままでも、PCCカード所有者の身元を暴くことができた場合には、人PF1が行うすべての購入を容易に追跡することができる。PF1が行うすべての販売トランザクションの前に新しいPCC値を銀行704に通信および登録することが実行不可能であることを考慮すると、一意のPCC値を利用する他の選択肢が探索され得る。例えば、先に説明した2FAB_Rand値を使用して、新しい公開鍵を生成し得る。楕円曲線および以下を含むパラメータのセット(例えば、secp256k1楕円曲線)に関してすべての当事者が合意したと仮定する:
・ G - 次数q:q×G=0を有する楕円曲線上の基点、および
・ q - 大きな素数
その場合、PCC公開鍵は、次のように修正され得る:
CC=PCC+(2FABRand)G
=vCCG+(2FABRand)G
=(vCC+2FABRand)G
要求トランザクションTxrtの出力された出力-2FAは、公開鍵P CCにアドレス指定されるように修正される。顧客PF1/PF2は、確認トランザクションTxctを成功裏にサブミットするのに必要な署名を作成するためにこの値をvCCと対にするための2FAB_Randの知識を保持することを担う。企業703は、銀行704に値2FABRandGを通信することを担う。
本開示は、ブロックチェーントランザクションを第2の認証要素として利用するアイデンティティ検証プロトコル(例えば、MFAプロトコル)を説明する。第2の認証要素に対する要求はブロックチェーントランザクションにおいて表され、その第2の認証要素の知識の確認は、対象の受信者が、要求トランザクションの出力を使用する確認トランザクションをサブミットすることによって達成されることが予想される。
ブロックチェーンの利用はそれ自体の複雑さを導入するものであり、まず、トランザクションがブロックに確認されるまでの長い(約10分)待ち時間である。プロトコルは、メムプール内の未確認トランザクションがプロトコルの目的に対して正当であると見なされることを可能にすることによって、これに対処する。これは、要求トランザクションと、未確認の要求トランザクションの出力を使用する確認トランザクションとに適用される。未確認トランザクションを受け入れることは、認証プロセスをほぼ即時にする。
そのようなシナリオでは、ブロックチェーンは、要求および確認変換のための通信媒体として機能用し、重要なこと、両方のトランザクションが最終的にブロックチェーン上で確認される確率がほぼ確実である。
ブロックチェーンの使用に関する別の懸念は、プライバシーに関するものである。顧客は、第三者が自分の購入を識別することができることを嫌がる可能性がある。MFAプロトコルは、各一意のイベント(販売トランザクション)に対して生成される乱数の使用を含めることによって、これらの懸念を軽減する。この一意のランダム値は、2FA要求が送信されている公開鍵を偽装するため、ならびにイベント詳細の表現を偽装するために使用される。
ブロックチェーン150に固有の制限を緩和することに加えて、MFAプロトコルは、既存の解決策に勝る利点を提供する。ブロックチェーン150が分散システムであるという事実は、単一障害点の利用可能性に依存しないことを意味する。同時に、ブロックチェーン150の透明性および不変性は、送信された2FA要求および確認の証明が存在することを意味する。規制機関、政府、または法人に関連する監査は、MFA確認またはその欠如に関連する任意の調査に関して容易に進められ、すなわち、銀行は、要求トランザクションを送信したことを拒否することができず、PF2/PF1は、確認トランザクションが署名されていることを拒否することができない。悪意のある行為者は、PF2/PF1が気づくことなくひそかに2FA確認を提供することはできない。銀行または企業が、PF1/PF2によって署名された確認トランザクションなしで販売トランザクションを処理すると、これは明らかになる。
不換通貨を利用する販売トランザクションの観点からプロトコルを説明してきたが、プロトコルは、MFA認証を必要とする他の「トランザクション」、例えば、ファイルまたは物理的な建物への安全なアクセスを管理するのに適切であり得る。そのような場合、以下が考察される:
- 販売トランザクションは一般的なイベントによって置き換えられる;
- 企業は、ここでは、ゲートキーパーまたはアクセス権限者として記述される;および
- 銀行は、ここでは、認証局の信頼できる第三者機関として記述され、とりわけPF1の公開鍵を登録する責任を負う任意のエンティティまたはシステムと見なされる。
結論
上記の実施形態は、例としてのみ説明されていることが理解されよう。より一般的には、下記ステートメントのうちのいずれか1つまたは複数による方法、装置、またはプログラムが提供され得る。
ステートメント1.第2の当事者が第1の当事者のアイデンティティを検証することを可能にするクレデンシャルを提供する方法であって、第1の当事者は第1の公開鍵に関連付けられ、第1の公開鍵は第三者に登録され、方法は以下を含む:
1つまたは複数の第1のクレデンシャルを第2の当事者に提供すること、
要求トランザクションを取得すること、ここで、要求トランザクションは、a)第三者のそれぞれの秘密鍵に基づいて生成された署名を含む入力と、b)第1の当事者の第2の公開鍵にロックされた出力とを含むブロックチェーントランザクションであり、第2の公開鍵は第1の公開鍵に基づき、
確認トランザクションを生成すること、ここで、確認トランザクションは、要求トランザクションの出力を参照する入力と、第1の当事者の第2の公開鍵に対応する秘密鍵に基づいて生成された署名とを含むブロックチェーントランザクションであり、および
ブロックチェーンに含めるためにブロックチェーンネットワークの1つまたは複数のノードに確認トランザクションが送信されることを生じさせること。
1つまたは複数の第1のクレデンシャルの例には、ユーザ名、パスワード、バイオメトリック識別子、電話番号、住所、SMSテキストで(第三者から)受信したコード、ペイメントカード(またはその情報)、銀行の詳細、メモラブルワードなどが含まれる。
ステートメント2.上記取得することは、ブロックチェーンから要求トランザクションを取得することを含む、ステートメント1に記載の方法。
ステートメント3.上記取得することは、ブロックチェーンネットワークの1つまたは複数のノードのそれぞれのメモリプールから要求トランザクションを取得することを含み、各それぞれのメモリプールは、未確認のブロックチェーントランザクションのそれぞれのセットを含む、ステートメント1に記載の方法。
ステートメント4.1つまたは複数の第1のクレデンシャルを上記提供することは、第2の当事者からアイデンティティチャレンジを受信することに応答する、ステートメント1から3のいずれかに記載の方法。
ステートメント5.上記生じさせることは、トランザクションをブロックチェーンネットワークの1つまたは複数のノードに送信することを含む、ステートメント1から4のいずれかに記載の方法。
ステートメント6.ステートメント1から5のいずれかに記載の方法であって、以下を含む:
メッセージおよび/またはメッセージのハッシュのうちの少なくとも1つを第2の当事者から受信すること、または第2の当事者に送信すること、ならびに
要求トランザクションが、メッセージ、メッセージのハッシュ、および/またはメッセージのマルチハッシュのうちの少なくとも1つを含むかどうかを決定すること、ここで、確認トランザクションを上記生成することは、要求トランザクションが、メッセージ、メッセージのハッシュ、および/またはメッセージのマルチハッシュのプレイメージのうちの少なくとも1つを含むことを条件とする。
ステートメント7.要求トランザクションの出力は、ロック解除されるためにメッセージおよび/またはメッセージのハッシュの知識を必要とするチャレンジを含み、確認トランザクションの入力は、メッセージ、メッセージのハッシュおよび/またはメッセージのマルチハッシュのプレイメージを含む、ステートメント6に記載の方法。
ステートメント8.メッセージは第1の擬似乱数を含む、ステートメント6またはステートメント7に記載の方法。
ステートメント9.第2の公開鍵は、第1の公開鍵を第2の擬似乱数と組み合わせることによって生成される、ステートメント1から8のいずれかに記載の方法。
ステートメント10.第2の公開鍵は第1の公開鍵である、ステートメント1から8のいずれかに記載の方法。
ステートメント11.第1の擬似乱数および/または第2の擬似乱数は、第1の当事者によって生成された第3の擬似乱数および第2の当事者によって生成された第4の擬似乱数に基づく、ステートメント8またはステートメント9に記載の方法。
ステートメント12.第2の擬似乱数は第1の擬似乱数である、ステートメント9またはステートメント11に記載の方法。
ステートメント13.第三者は第2の当事者である、ステートメント1から12のいずれかに記載の方法。
ステートメント14.第1の当事者のアイデンティティを検証する方法であって、第1の当事者は第1の公開鍵に関連付けられ、第1の公開鍵は第三者に登録され、方法は以下を含む:
第1の当事者のアイデンティティを検証する要求を受信すること、
要求トランザクションを生成すること、ここで、要求トランザクションは、a)第三者のそれぞれの秘密鍵に基づいて生成された署名を含む入力と、b)第1の当事者の第2の公開鍵にロックされた出力とを含むブロックチェーントランザクションであり、第2の公開鍵は第1の公開鍵に基づき、
ブロックチェーンに含めるためにブロックチェーンネットワークの1つまたは複数のノードに要求トランザクションが送信されることを生じさせること、ならびに
ブロックチェーンに含めるために確認トランザクションがブロックチェーンネットワークの1つまたは複数のノードに送信されたかどうかを決定すること、ここで、確認トランザクションは、要求トランザクションの出力を参照する入力と、第1の当事者の第2の公開鍵に対応する秘密鍵に基づいて生成された署名とを含むブロックチェーントランザクションである。
要求はブロックチェーントランザクションであり得る。
ステートメント15.ステートメント14に記載の方法であって、ブロックチェーンに含めるために確認トランザクションがブロックチェーンネットワークの1つまたは複数のノードに送信されたかどうかを上記決定することは以下を含む:
確認トランザクションがブロックチェーンに含まれているかどうかを決定すること。
ステートメント16.ステートメント15に記載の方法であって、ブロックチェーンに含めるために確認トランザクションがブロックチェーンネットワークの1つまたは複数のノードに送信されたかどうかを上記決定することは以下を含む:
確認トランザクションがブロックチェーンネットワークの1つまたは複数のノードのそれぞれのメモリプールに含まれているかどうかを決定すること、ここで、各それぞれのメモリプールは、未確認のブロックチェーントランザクションのそれぞれのセットを含む。
ステートメント17.ステートメント14から16のいずれかに記載の方法であって、以下を含む:
確認トランザクションがブロックチェーンネットワークの1つまたは複数のノードに送信されたかどうかに基づいて、第1の当事者のアイデンティティを検証すること。
ステートメント18.ステートメント17に記載の方法であって、要求は第2の当事者から受信され、方法は以下を含む:
第1の当事者のアイデンティティが検証されたという指示を第2の当事者に送信すること。
指示はブロックチェーントランザクションであり得る。
ステートメント19.要求を受信することは、第1の当事者が1つまたは複数の第1のクレデンシャルを第2の当事者に提供したという指示を受信することを含む、ステートメント18に記載の方法。
ステートメント20.要求は、メッセージまたはメッセージのハッシュのうちの少なくとも1つを含み、要求トランザクションの出力は、ロック解除されるためにメッセージおよび/またはメッセージのハッシュの知識を必要とするチャレンジを含む、ステートメント18またはステートメント19に記載の方法。
ステートメント21.メッセージは第1の擬似乱数を含む、ステートメント20に記載の方法。
ステートメント22.第2の公開鍵は、第1の公開鍵を第2の擬似乱数と組み合わせることによって生成される、ステートメント14から21のいずれかに記載の方法。
ステートメント23.第1の擬似乱数および/または第2の擬似乱数は、第1の当事者によって生成された第3の擬似乱数および第三者によって生成された第4の擬似乱数に基づく、ステートメント21またはステートメント22に記載の方法。
ステートメント24.第2の公開鍵は第1の公開鍵である、ステートメント14から21のいずれかに記載の方法。
ステートメント25.要求トランザクションの出力は、第1の当事者の第2の公開鍵または第三者の公開鍵にロックされる、ステートメント14から24のいずれかに記載の方法。
ステートメント26.ステートメント25に記載の方法であって、以下を含む:
キャンセルトランザクションを生成すること、ここで、キャンセルトランザクションは、要求トランザクションの出力を参照する入力と、第1の当事者の公開鍵に対応する秘密鍵に基づいて生成された署名とを含むブロックチェーントランザクションであり、および
ブロックチェーンに含めるためにブロックチェーンネットワークの1つまたは複数のノードにキャンセルトランザクションが送信されることを生じさせること。
ステートメント27.第2の当事者は、リソースまたはサービスのアクセスまたは所有権を制御し、リソースまたはサービスのアクセスまたは所有権は、第1の当事者のアイデンティティの検証に基づいて第1の当事者に許可される、ステートメント17およびそれに従属する任意のステートメントに記載の方法。
リソースまたはサービスの例には、物理的またはデジタル商品、電子メールアカウント、ソーシャルメディアまたは他のオンラインアカウント、ストリーミングサービス、デジタルトークン(例えば、チケットまたは投票)などが含まれる。
ステートメント28.第2の当事者は第三者である、ステートメント14から27のいずれかに記載の方法。
ステートメント29.以下を備えるコンピュータ機器:
1つまたは複数のメモリユニットを備えるメモリ、および
1つまたは複数の処理ユニットを備える処理装置、ここで、メモリは、処理装置上で実行されるように構成されたコードを記憶し、コードは、処理装置上にあるときに、ステートメント1から28のいずれかに記載の方法を実行するように構成される。
ステートメント30.コンピュータ可読ストレージ上に具現化され、ステートメント29に記載のコンピュータ機器上で実行されると、ステートメント1から28のいずれかに記載の方法を実行するように構成されたコンピュータプログラム。
他の変形形態は、本明細書の開示が与えられれば、当業者に明らかになり得る。本開示の範囲は、開示された実施形態によっては限定されず、添付の特許請求の範囲によってのみ限定される。

Claims (30)

  1. 第2の当事者が第1の当事者のアイデンティティを検証することを可能にするクレデンシャルを提供する方法であって、前記第1の当事者は第1の公開鍵に関連付けられ、前記第1の公開鍵は第三者に登録され、前記方法は前記第1の当事者によって実行され、
    1つまたは複数の第1のクレデンシャルを前記第2の当事者に提供することと、
    要求トランザクションを取得することと、ここで、前記要求トランザクションは、前記ブロックチェーンネットワークの1つまたは複数のノードに送信され、a)前記第三者のそれぞれの秘密鍵に基づいて生成された署名を含む入力と、b)前記第1の当事者の第2の公開鍵にロックされた出力とを含むブロックチェーントランザクションであり、前記第2の公開鍵は前記第1の公開鍵に基づき、
    確認トランザクションを生成することと、ここで、前記確認トランザクションは、前記要求トランザクションの前記出力を参照する入力と、前記第1の当事者の前記第2の公開鍵に対応する秘密鍵に基づいて生成された署名とを含むブロックチェーントランザクションであり、
    ブロックチェーンに含めるためにブロックチェーンネットワークの1つまたは複数のノードに前記確認トランザクションが送信されることを生じさせることと
    を含む方法。
  2. 前記取得することは、前記ブロックチェーンから前記要求トランザクションを取得することを含む、請求項1に記載の方法。
  3. 前記取得することは、前記ブロックチェーンネットワークの1つまたは複数のノードのそれぞれのメモリプールから前記要求トランザクションを取得することを含み、各それぞれのメモリプールは、未確認のブロックチェーントランザクションのそれぞれのセットを含む、請求項1に記載の方法。
  4. 前記1つまたは複数の第1のクレデンシャルを前記提供することは、前記第2の当事者からアイデンティティチャレンジを受信することに応答する、請求項1から3のいずれか一項に記載の方法。
  5. 前記生じさせることは、前記トランザクションを前記ブロックチェーンネットワークの前記1つまたは複数のノードに送信することを含む、請求項1から4のいずれか一項に記載の方法。
  6. メッセージおよび/または前記メッセージのハッシュのうちの少なくとも1つを前記第2の当事者から受信すること、または前記第2の当事者に送信することと、
    前記要求トランザクションが、前記メッセージ、前記メッセージの前記ハッシュ、および/または前記メッセージのマルチハッシュのうちの少なくとも1つを含むかどうかを決定すること
    を含み、ここで、前記確認トランザクションを前記生成することは、前記要求トランザクションが、前記メッセージ、前記メッセージの前記ハッシュ、および/または前記メッセージの前記マルチハッシュのプレイメージのうちの少なくとも1つを含むことを条件とする、
    請求項1から5のいずれか一項に記載の方法。
  7. 前記要求トランザクションの前記出力は、ロック解除されるために前記メッセージおよび/または前記メッセージの前記ハッシュの知識を必要とするチャレンジを含み、前記確認トランザクションの前記入力は、前記メッセージ、前記メッセージの前記ハッシュおよび/または前記メッセージの前記マルチハッシュのプレイメージを含む、請求項6に記載の方法。
  8. 前記メッセージは第1の擬似乱数を含む、請求項6または7に記載の方法。
  9. 前記第2の公開鍵は、前記第1の公開鍵を第2の擬似乱数と組み合わせることによって生成される、請求項1から8のいずれか一項に記載の方法。
  10. 前記第2の公開鍵は前記第1の公開鍵である、請求項1から8のいずれか一項に記載の方法。
  11. 前記第1の擬似乱数および/または第2の擬似乱数は、前記第1の当事者によって生成された第3の擬似乱数および前記第2の当事者によって生成された第4の擬似乱数に基づく、請求項8または9に記載の方法。
  12. 前記第2の擬似乱数は前記第1の擬似乱数である、請求項9または11に記載の方法。
  13. 前記第三者は前記第2の当事者である、請求項1から12のいずれか一項に記載の方法。
  14. 第1の当事者のアイデンティティを検証する方法であって、前記第1の当事者は第1の公開鍵に関連付けられ、前記第1の公開鍵は第三者に登録され、前記方法は前記第三者によって実行され、
    前記第1の当事者の前記アイデンティティを検証する要求を受信することと、
    要求トランザクションを生成することと、ここで、前記要求トランザクションは、a)前記第三者のそれぞれの秘密鍵に基づいて生成された署名を含む入力と、b)前記第1の当事者の第2の公開鍵にロックされた出力とを含むブロックチェーントランザクションであり、前記第2の公開鍵は前記第1の公開鍵に基づき、
    ブロックチェーンに含めるためにブロックチェーンネットワークの1つまたは複数のノードに前記要求トランザクションが送信されることを生じさせることと、
    前記ブロックチェーンに含めるために確認トランザクションが前記ブロックチェーンネットワークの1つまたは複数のノードに送信されたかどうかを決定することと
    を含み、ここで、前記確認トランザクションは、前記要求トランザクションの前記出力を参照する入力と、前記第1の当事者の前記第2の公開鍵に対応する秘密鍵に基づいて生成された署名とを含むブロックチェーントランザクションである、方法。
  15. 前記ブロックチェーンに含めるために前記確認トランザクションが前記ブロックチェーンネットワークの1つまたは複数のノードに送信されたかどうかを前記決定することは、
    前記確認トランザクションが前記ブロックチェーンに含まれているかどうかを決定すること
    を含む、請求項14に記載の方法。
  16. 前記ブロックチェーンに含めるために前記確認トランザクションが前記ブロックチェーンネットワークの1つまたは複数のノードに送信されたかどうかを前記決定することは、
    前記確認トランザクションが前記ブロックチェーンネットワークの1つまたは複数のノードのそれぞれのメモリプールに含まれているかどうかを決定すること
    を含み、ここで、各それぞれのメモリプールは、未確認のブロックチェーントランザクションのそれぞれのセットを含む、請求項15に記載の方法。
  17. 前記確認トランザクションが前記ブロックチェーンネットワークの1つまたは複数のノードに送信されたかどうかに基づいて、前記第1の当事者の前記アイデンティティを検証すること
    を含む、請求項14から16のいずれか一項に記載の方法。
  18. 前記要求は第2の当事者から受信され、前記方法は、
    前記第1の当事者の前記アイデンティティが検証されたという指示を前記第2の当事者に送信すること
    を含む、請求項17に記載の方法。
  19. 前記要求を受信することは、前記第1の当事者が1つまたは複数の第1のクレデンシャルを前記第2の当事者に提供したという指示を受信することを含む、請求項18に記載の方法。
  20. 前記要求は、メッセージまたは前記メッセージのハッシュのうちの少なくとも1つを含み、前記要求トランザクションの前記出力は、ロック解除されるために前記メッセージおよび/または前記メッセージの前記ハッシュの知識を必要とするチャレンジを含む、請求項18または19に記載の方法。
  21. 前記メッセージは第1の擬似乱数を含む、請求項20に記載の方法。
  22. 前記第2の公開鍵は、前記第1の公開鍵を第2の擬似乱数と組み合わせることによって生成される、請求項14から21のいずれか一項に記載の方法。
  23. 前記第1の擬似乱数および/または第2の擬似乱数は、前記第1の当事者によって生成された第3の擬似乱数および前記第三者によって生成された第4の擬似乱数に基づく、請求項21または22に記載の方法。
  24. 前記第2の公開鍵は前記第1の公開鍵である、請求項14から21のいずれか一項に記載の方法。
  25. 前記要求トランザクションの前記出力は、前記第1の当事者の前記第2の公開鍵または前記第三者の公開鍵にロックされる、請求項14から24のいずれか一項に記載の方法。
  26. キャンセルトランザクションを生成することと、ここで、前記キャンセルトランザクションは、前記要求トランザクションの前記出力を参照する入力と、前記第1の当事者の前記公開鍵に対応する秘密鍵に基づいて生成された署名とを含むブロックチェーントランザクションであり、
    前記ブロックチェーンに含めるために前記ブロックチェーンネットワークの1つまたは複数のノードに前記キャンセルトランザクションが送信されることを生じさせることと
    を含む、請求項25に記載の方法。
  27. 前記第2の当事者は、リソースまたはサービスのアクセスまたは所有権を制御し、前記リソースまたはサービスのアクセスまたは所有権は、前記第1の当事者の前記アイデンティティの前記検証に基づいて前記第1の当事者に許可される、請求項17およびそれに従属する任意の請求項に記載の方法。
  28. 前記第2の当事者は前記第三者である、請求項14から27のいずれか一項に記載の方法。
  29. コンピュータ機器であって、
    1つまたは複数のメモリユニットを備えるメモリと、
    1つまたは複数の処理ユニットを備える処理装置と
    を備え、ここで、前記メモリは、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードは、前記処理装置上にあるときに、請求項1から28のいずれか一項に記載の方法を実行するように構成される、
    コンピュータ機器。
  30. コンピュータ可読ストレージ上に具現化され、請求項29に記載のコンピュータ機器上で実行されると、請求項1から28のいずれか一項に記載の方法を実行するように構成されたコンピュータプログラム。
JP2022528023A 2019-11-15 2020-10-15 ブロックチェーントランザクションを使用したアイデンティティ検証プロトコル Pending JP2023502057A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1916644.6 2019-11-15
GB1916644.6A GB2589090A (en) 2019-11-15 2019-11-15 Identity verification protocol using blockchain transactions
PCT/IB2020/059676 WO2021094854A1 (en) 2019-11-15 2020-10-15 Multi factor authentication using blockchain transactions

Publications (2)

Publication Number Publication Date
JP2023502057A true JP2023502057A (ja) 2023-01-20
JPWO2021094854A5 JPWO2021094854A5 (ja) 2023-09-26

Family

ID=69063357

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022528023A Pending JP2023502057A (ja) 2019-11-15 2020-10-15 ブロックチェーントランザクションを使用したアイデンティティ検証プロトコル

Country Status (6)

Country Link
US (1) US20220393871A1 (ja)
EP (1) EP4046326A1 (ja)
JP (1) JP2023502057A (ja)
CN (1) CN115119531A (ja)
GB (1) GB2589090A (ja)
WO (1) WO2021094854A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112311538B (zh) * 2020-10-30 2024-04-23 北京华弘集成电路设计有限责任公司 一种身份验证的方法、装置、存储介质及设备
CN112749409B (zh) * 2021-01-06 2024-03-08 上海零数众合信息科技有限公司 一种区块链中基于随机数的加密方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106911641A (zh) * 2015-12-23 2017-06-30 索尼公司 用于授权访问的客户端装置、服务器装置和访问控制系统

Also Published As

Publication number Publication date
CN115119531A (zh) 2022-09-27
WO2021094854A1 (en) 2021-05-20
GB201916644D0 (en) 2020-01-01
GB2589090A (en) 2021-05-26
US20220393871A1 (en) 2022-12-08
EP4046326A1 (en) 2022-08-24

Similar Documents

Publication Publication Date Title
JP7350030B2 (ja) 複数のトランザクションをブロックチェーンに記録する方法及びシステム
US20220321359A1 (en) Methods and systems for ownership verification using blockchain
US11568437B2 (en) Systems, methods, and apparatuses for implementing commerce rewards across tenants for commerce cloud customers utilizing blockchain
CN110892434B (zh) 基于区块链网络转移数字票券
US20210357915A1 (en) Methods, devices, and systems for secure payments
US11139984B2 (en) Information processing system, devices and methods
US20200058023A1 (en) Decentralized Data Marketplace
US20220271915A1 (en) Advanced non-fungible token blockchain architecture
US20180204192A1 (en) Secure Digital Data Operations
US20180204191A1 (en) Secure Digital Data Operations
US20160162897A1 (en) System and method for user authentication using crypto-currency transactions as access tokens
US20220108312A1 (en) Methods, systems, and devices for secure cross-border payments with high transaction throughput
JP2022533753A (ja) 知識証明
US20230316272A1 (en) Divisible tokens
CN114747172A (zh) 加密链接身份
US20220393871A1 (en) Multifactor authentication using blockchain transactions
JP2022532889A (ja) 複数インプットトランザクション
CN114531941A (zh) 多标准区块链协议
WO2023219762A1 (en) Verification system for proving authenticity and ownership of digital assets
JP2024502784A (ja) ブロックチェーン関連の検証方法およびシステム
JP2023522258A (ja) ブロックチェーンを使用してデジタルコインシステムを実装するための方法
US20240095692A1 (en) Computer implemented method and system
KR20240041944A (ko) 컴퓨터 구현 방법 및 시스템
CN115836314A (zh) 区块链事务输出的概率成员资格测试

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230915

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230915