(58)【調査した分野】(Int.Cl.,DB名)
前記キャッシュリソースが、前記トランザクション要求を受け取る前に前記ブロックチェーンノードによって受け取られたトランザクションハッシュを記憶するブルームフィルタを実施する、請求項3に記載のコンピュータ実装方法。
【発明を実施するための形態】
【0010】
様々な図における同様の参照符号は同様の要素を示す。
【0011】
本明細書の実施形態は、ブロックチェーンネットワーク上のデータ安全性を高めるためのコンピュータ実装方法を含む。より具体的には、本明細書の実施形態は、ブロックチェーンネットワークに接続される各クライアントのため、アンチリプレー安全方式を実施することを対象とする。いくつかの実施形態では、行為は、クライアントからトランザクション要求を受け取るステップと、トランザクションハッシュがキャッシュリソースにもブロックチェーンにも以前に記憶されていないことを決定するステップと、キャッシュリソースにトランザクションハッシュを記憶するステップと、トランザクション要求を実行するステップとを含む。
【0012】
本明細書の実施形態についてのさらなる状況を提供するため、上で導入されたように、(たとえば、ピアツーピアノードからなる)コンセンサスネットワークおよびブロックチェーンネットワークと呼ばれることもある分散型台帳システム(DLS)は、参加するエンティティが安全かつ不変にトランザクションを実行しデータを記憶することを可能にする。ブロックチェーンという用語は一般的に特定のネットワークおよび/または使用事例と関連するが、本明細書ではブロックチェーンは、任意の特定の使用事例に言及することのないDLSのことを指すために使用される。
【0013】
ブロックチェーンは、トランザクションが不変である方法でトランザクションを記憶するデータ構造である。したがって、ブロックチェーン上に記録されるトランザクションは、信頼でき信用できる。ブロックチェーンは、1つまたは複数のブロックを含む。チェーン中の各ブロックは、前のブロックの暗号学的ハッシュを含むことによって、チェーンの中のその直前の前のブロックにリンクされる。各ブロックは、タイムスタンプ、それ自体の暗号学的ハッシュ、および1つまたは複数のトランザクションをやはり含む。ブロックチェーンネットワークのノードによって既に検証されているトランザクションは、ハッシュされて、マークル木へと符号化される。マークル木は、木の葉ノードにおけるデータがハッシュされ、木の各枝におけるすべてのハッシュが枝のルートで連結されるデータ構造である。このプロセスは、木全体のルートまで木を進み、ルートは、木のすべてのデータを表すハッシュを記憶する。木に記憶されるトランザクションのものである主張するハッシュは、それが木の構造と一致するか決定することによって迅速に検証することができる。
【0014】
ブロックチェーンが、トランザクションを記憶するための、非集中的な、または少なくとも部分的に非集中的なデータ構造である一方、ブロックチェーンネットワークは、トランザクションをブロードキャストすること、検証すること、および有効にすることなどによって1つまたは複数のブロックチェーンを管理、更新、および維持するコンピューティングノードのネットワークである。上で導入したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供することができる。本明細書の実施形態は、コンソーシアムブロックチェーンネットワークを参照して、本明細書でさらに詳細に記載される。しかし、本明細書の実施形態は、任意の適切なタイプのブロックチェーンネットワークで具体化できることが意図される。
【0015】
一般的に、コンソーシアムブロックチェーンネットワークは、参加するエンティティ間の私的なものである。コンソーシアムブロックチェーンネットワークでは、コンセンサスプロセスは、コンセンサスノードと呼びことができる許可されたノードの組によって制御され、1つまたは複数のコンセンサスノードは、それぞれのエンティティ(たとえば、金融機関、保険会社)によって運営される。たとえば、10個のエンティティ(たとえば、金融機関、保険会社)のコンソーシアムは、コンソーシアムブロックチェーンネットワークを運営することができ、その各々が、コンソーシアムブロックチェーンネットワーク中で少なくとも1つのノードを運営する。
【0016】
いくつかの例では、コンソーシアムブロックチェーンネットワーク内で、すべてのノードにわたって複製されるブロックチェーンとして、グローバルブロックチェーンが提供される。すなわち、すべてのコンセンサスノードは、グローバルブロックチェーンに関して完全状態一致となっている。コンセンサス(たとえば、ブロックチェーンに対するブロックの追加の合意)に到達するために、コンソーシアムブロックチェーンネットワーク内でコンセンサスプロトコルが実施される。たとえば、コンソーシアムブロックチェーンネットワークは、下でさらに詳細に記載される、実用的ビザンチンフォールトトレランス(PBFT)コンセンサスを実施することができる。
【0017】
本明細書の実施形態は、上の状況の観点から、本明細書でさらに詳細に記載される。より具体的には、上で導入したように、本明細書の実施形態は、ブロックチェーンネットワークに接続されるクライアントのため、アンチリプレー攻撃認証プロトコルを実施することを対象とする。
【0018】
いくつかの実施形態では、開示されるアンチリプレー攻撃認証プロトコルは、各提案されたトランザクションに、固有のトランザクションハッシュをタグ付けし、攻撃者が盗まれたクライアント情報をリプレーすることを防止する。
【0019】
図1は、本明細書の実施形態を実行するために使用できる環境100の例を描く図である。いくつかの例では、例示的な環境100は、エンティティがコンソーシアムブロックチェーンネットワーク102に参加することを可能にする。例示的な環境100は、コンピューティングデバイス106、108、およびネットワーク110を含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの組合せを含み、ウェブサイト、ユーザデバイス(たとえば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は、有線および/またはワイヤレス通信リンクを介してアクセスすることができる。
【0020】
描かれた例では、コンピューティングシステム106、108は、各々が、コンソーシアムブロックチェーンネットワーク102中のノードとしての参加を可能にする任意の適切なコンピューティングシステムを含むことができる。例示的なコンピューティングデバイスは、限定しないが、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンを含む。いくつかの例では、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102と相互作用するために、1つまたは複数のコンピュータ実施されるサービスをホストする。たとえば、1つまたは複数の他のエンティティ(たとえば、他のユーザ)との第1のエンティティのトランザクションを管理するために第1のエンティティが使用するトランザクション管理システムなどといった、第1のエンティティ(たとえば、ユーザA)のコンピュータ実施されるサービスをコンピューティングシステム106がホストすることができる。コンピューティングシステム108は、1つまたは複数の他のエンティティ(たとえば、他のユーザ)との第2のエンティティのトランザクションを管理するために第2のエンティティが使用するトランザクション管理システムなどといった、第2のエンティティ(たとえば、ユーザB)のコンピュータ実施されるサービスをホストすることができる。
図1の例では、コンソーシアムブロックチェーンネットワーク102は、ノードのピアツーピアネットワークとして表され、コンピューティングシステム106、108は、それぞれ、コンソーシアムブロックチェーンネットワーク102に参加する第1のエンティティのノードおよび第2のエンティティのノードをそれぞれ提供する。
【0021】
図2は、本明細書の実施形態による例示的な概念的アーキテクチャ200を描く。例示的な概念的アーキテクチャ200は、エンティティ層202、ホストされるサービス層204、およびブロックチェーンネットワーク層206を含む。描かれた例では、エンティティ層202は、3つの参加者、すなわち参加者A、参加者B、および参加者Cを含み、各々の参加者は、それぞれのトランザクション管理システム208を有する。
【0022】
描かれた例では、ホストされるサービス層204は、各トランザクション管理システム208のためのインターフェース210を含む。いくつかの例では、それぞれのトランザクション管理システム208は、プロトコル(たとえば、ハイパーテキスト転送プロトコルセキュア(HTTPS))を使用してネットワーク(たとえば、
図1のネットワーク110)にわたってそれぞれのインターフェース210で通信する。いくつかの例では、各インターフェース210は、それぞれのトランザクション管理システム208とブロックチェーンネットワーク層206の間の通信接続を提供する。より具体的には、インターフェース210は、ブロックチェーンネットワーク層206のブロックチェーンネットワーク212と通信する。いくつかの例では、インターフェース210とブロックチェーンネットワーク層206の間の通信は、遠隔手続呼び出し(RPC)を使用して行われる。いくつかの例では、インターフェース210は、それぞれのトランザクション管理システム208のためにブロックチェーンネットワークノードを「ホスト」する。たとえば、インターフェース210は、ブロックチェーンネットワーク212にアクセスするためのアプリケーションプログラミングインターフェース(API)を提供する。
【0023】
本明細書に記載されるように、ブロックチェーンネットワーク212は、ブロックチェーン216に情報を変わらずに記録する複数のノード214を含む、ピアツーピアネットワークとして設けられる。単一のブロックチェーン216が概略的に描かれるが、ブロックチェーン216の複数のコピーが設けられ、ブロックチェーンネットワーク212にわたって維持される。たとえば、各ノード214がブロックチェーンのコピーを記憶する。いくつかの実施形態では、ブロックチェーン215は、コンソーシアムブロックチェーンネットワークに参加している2つ以上のエンティティ間で実施されるトランザクションに関する情報を記憶する。
【0024】
ブロックチェーン(たとえば、
図2のブロックチェーン216)は、ブロックの鎖からできており、各ブロックがデータを記憶する。例示のデータは、2つ以上の参加者間のトランザクションを表すトランザクションデータを含む。本明細書では、トランザクションが非限定の例として使用されるが、ブロックチェーン中に任意の適切なデータ(たとえば、文書、画像、動画、音声)を記憶できることが意図される。例示的なトランザクションは、限定しないが、何かの値(たとえば、資産、製品、サービス、通貨)の交換を含むことができる。トランザクションデータは、ブロックチェーン内に変わらずに記憶される。すなわち、トランザクションデータは、変えることができない。
【0025】
ブロック中に記憶する前に、トランザクションデータはハッシュされる。ハッシュすることとは、(文字列データとして提供される)トランザクションデータを固定長ハッシュ値に変換する(文字列データとしても提供される)プロセスである。トランザクションデータを得るためにハッシュ値をアンハッシュするのは不可能である。トランザクションデータ中のわずかな変化でさえ、完全に異なるハッシュ値をもたらすことがハッシュすることによって確保される。さらに、上述したように、ハッシュ値は、固定長のものである。すなわち、トランザクションデータのサイズがどうであれ、ハッシュ値の長さは固定される。ハッシュすることは、ハッシュ値を生成するために、トランザクションデータをハッシュ関数を通して処理することを含む。例示的なハッシュ関数は、限定しないが、256ビットハッシュ値を出力する、セキュアハッシュアルゴリズム(SHA)-256を含む。
【0026】
複数のトランザクションのトランザクションデータがハッシュされ、ブロック中に記憶される。たとえば、2つのトランザクションのハッシュ値が提供され、それら自体がハッシュされて、別のハッシュを提供する。このプロセスが、ブロック中に記憶されるべきすべてのトランザクションについて、単一のハッシュ値が提供されるまで繰り返される。このハッシュ値は、マークルルートハッシュと呼ばれ、ブロックのヘッダに記憶される。トランザクションの何らかの変更は、そのハッシュ値の変更をもたらし、最終的に、マークルルートハッシュの変更をもたらすことになる。
【0027】
コンセンサスプロトコルを通してブロックチェーンにブロックが追加される。ブロックチェーンネットワーク内の複数のノードがコンセンサスプロトコルに参加し、ブロックをブロックチェーンに追加させる仕事を実施する。そのようなノードはコンセンサスノードと呼ばれる。上で導入されたPBFTは、コンセンサスプロトコルの、非限定の例として使用される。コンセンサスノードは、コンセンサスプロトコルを実行して、トランザクションをブロックチェーンに追加し、ブロックチェーンネットワークの全体の状態を更新する。
【0028】
さらに具体的には、コンセンサスノードがブロックヘッダを生成し、ブロック中のトランザクションのすべてをハッシュし、ハッシュ値を対に組み合わせて、ブロック中のすべてのトランザクションについて単一のハッシュ値が提供されるまでさらなるハッシュ値を生成する(マークルルートハッシュ)。このハッシュがブロックヘッダに追加される。コンセンサスノードは、ブロックチェーン中の、最も最近のブロック(すなわち、ブロックチェーンに加えられた最後のブロック)のハッシュ値をやはり決定する。コンセンサスノードは、ブロックヘッダに、ナンス値およびタイムスタンプをやはり追加する。
【0029】
一般的に、PBFTは、ビザンチンフォールト(たとえば、誤動作しているノード、悪意のあるノード)に耐性がある実用的ビザンチンステートマシンの複製を提供する。これは、フォールトは発生すると仮定すること(たとえば、独立したノード故障、および/またはコンセンサスノードによって送信される操作されたメッセージの存在を仮定すること)によって、PBFTで達成される。PBFTでは、コンセンサスノードは、プライマリコンセンサスノードおよびバックアップコンセンサスノードを含むシーケンスで提供される。プライマリコンセンサスノードは、周期的に変更され、ブロックチェーンネットワークの世界状態についての合意に達しているブロックチェーンネットワーク内のすべてのコンセンサスノードによって、トランザクションがブロックチェーンに追加される。このプロセスでは、メッセージがコンセンサスノード間で送信され、各コンセンサスノードは、メッセージが指定されたピアノードから受信されたことを証明し、メッセージが送信の間に変更されてないことを検証する。
【0030】
PBFTでは、コンセンサスプロトコルは、複数のフェーズで提供され、すべてのコンセンサスノードが同じ状態で始まる。最初に、クライアントがプライマリコンセンサスノードに要求を送り、サービス動作を起動する(たとえば、ブロックチェーンネットワーク内でトランザクションを実行する)。要求を受け取ったことに応答して、プライマリコンセンサスノードは、要求をバックアップコンセンサスノードにマルチキャストする。バックアップコンセンサスノードは、要求を実行し、各々がクライアントに返答を送る。クライアントは、閾値の数の返答を受け取るまで待機する。いくつかの実施形態では、クライアントは、f+1個の返答を受け取るのを待ち、ここでfは、ブロックチェーンネットワーク内で耐性を有することができる障害のあるコンセンサスノードの最大数である。最終的な結果は、ブロックチェーンに追加されようとする記録の指令について、十分な数のコンセンサスノードが合意に至り、記録が受け入れられる、または拒否されることとなる。
【0031】
いくつかのブロックチェーンネットワークでは、トランザクションのプライバシーを維持するために、暗号が実施される。たとえば、ブロックチェーンネットワーク中の他のノードがトランザクションの詳細を識別することができないように、2つのノードがトランザクションをプライベートに保ちたい場合、ノードは、トランザクションデータを暗号化することができる。例示的な暗号法は、限定しないが、対称暗号化および非対称暗号化を含む。対称暗号化は、暗号化(平文から暗号文を生成すること)および復号化(暗号文から平文を生成すること)の両方のために単一の鍵を使用する暗号化プロセスのことを指す。対称暗号化では、複数のノードに対し同じ鍵が利用可能であり、そのため各ノードがトランザクションデータを暗号化/復号化することができる。
【0032】
非対称暗号化は、各々がプライベート鍵および公開鍵を含むキーの対を使用し、プライベート鍵は、それぞれのノードに対してのみ知られており、公開鍵は、ブロックチェーンネットワーク中の任意のまたはすべての他のノードに知られている。ノードは、データを暗号化するため別のノードの公開鍵を使用することができ、暗号化したデータは、他のノードのプライベート鍵を使用して復号化することができる。たとえば、
図2を再び参照して、参加者Aは、参加者Bの公開鍵を使用してデータを暗号化し、暗号化したデータを参加者Bに送ることができる。参加者Bは、参加者Bのプライベート鍵を使用して、暗号化したデータ(暗号文)を復号し、元のデータ(平文)を抽出することができる。あるノードの公開鍵で暗号化したメッセージは、そのノードのプライベート鍵を使用してのみ復号化することができる。
【0033】
非対称暗号化は、デジタル署名を提供するために使用され、デジタル署名は、トランザクション中の参加者が、トランザクション中の他の参加者ならびにトランザクションの有効性を確認することを可能にする。たとえば、あるノードがメッセージにデジタルで署名をすることができ、参加者Aのデジタル署名に基づいて、そのメッセージがそのノードによって送られたことを別のノードが確認することができる。デジタル署名は、メッセージが移送中に改ざんされていないことを確かめるために使用することもできる。たとえば、
図2を再び参照して、参加者Aは、参加者Bにメッセージを送ることになっている。参加者Aは、メッセージのハッシュを生成し、次いで参加者Aのプライベート鍵を使用して、ハッシュを暗号化し、暗号化したハッシュとしてデジタル署名を提供する。参加者Aは、メッセージにデジタル署名を添付し、デジタル署名を付けたメッセージを参加者Bに送る。参加者Bは、参加者Aの公開鍵を使用してデジタル署名を復号化してハッシュを抽出する。参加者Bはメッセージをハッシュして、ハッシュを比較する。ハッシュが同じ場合、参加者Bは、メッセージが本当に参加者Aからであって、改ざんされなかったことを確認することができる。
【0034】
図3は、リプレー攻撃下の分散コンピューティングシステム300の例を描く。分散コンピューティングシステム300は、コンピュータネットワークを使用して互いに通信可能に結合されたクライアントとサーバを含む。分散コンピューティングシステム300は、
図2に記載されたものと同様のアーキテクチャを有し、トランザクション管理システム208がクライアントであり、インターフェース210とノード214が一緒になってサーバであってよい。一例では、トランザクション管理システム208は、ユーザデバイス上で動作するデジタル財布アプリケーションであってよい。デジタル財布アプリケーションは、ユーザアカウントの金融トランザクションを管理することができ、ノード214と通信して、ブロックチェーン216上に新しいトランザクションを登録する。例示的な金融トランザクションには、デジタル通貨を送受信すること、スマート契約を実行すること、新しいユーザアカウントを開くことなどが含まれる。
【0035】
いくつかの実施形態では、トランザクション管理システム208(クライアント)とインターフェース210(サーバ)との間の通信チャネルは、1つまたは複数の認証プロトコルを使用して、データの完全性およびデータの安全性を確かめる。たとえば、トランザクション管理システム208は、各トランザクションメッセージ304にメッセージ認証コード(MAC)306をタグ付けすることができる。トランザクションメッセージ304は、送り手のブロックチェーンアドレス、受け手のブロックチェーンアドレス、トランザクションの時間、デジタル通貨の量などといった、トランザクション管理システム208とノード214の間のトランザクションの内容を指定する。下でさらに詳細に議論されるように、MAC306は、トランザクションを認証してリプレー攻撃と戦うため、トランザクションメッセージ304用に一意に生成される。いくつかの例では、トランザクション管理システム208は、トランザクションメッセージ304をハッシュすることによって、MAC306を生成することができる。いくつかの例では、MAC306は、トランザクションメッセージおよびトランザクションメッセージに関係するパスワードをハッシュすることによって生成することができる。
【0036】
いくつかの実施形態では、攻撃者308が、分散コンピューティングシステム300上でリプレー攻撃を試みる可能性がある。たとえば、攻撃者308は、最初に、トランザクション管理システム208からインターフェース210に送られたデータを傍受し、次いで、傍受したデータを使用してインターフェース210との認証を試みる可能性がある。攻撃者308は、傍受したデータを異なる方法で使用する可能性がある。たとえば、攻撃者308は、インターフェース210またはトランザクション管理システム208との新しい通信セッションで傍受したデータを逐語的に再送信する可能性がある。攻撃者308は、やはり傍受したデータを使用して、MAC306を復号化するのを試みる可能性がある。そのようなリプレー攻撃と戦うために、インターフェース210および/またはトランザクション管理システム208は、上で議論したMAC306を使用して受信したメッセージに認証プロトコルを実施することができる。
【0037】
認証プロトコルの有効性は、MAC306を生成するため使用された技法に依存し得る。たとえば、MAC306がトランザクション管理システム208のパスワードの正確なコピーである場合、攻撃者308は、サーバにMAC306をリプレーして、トランザクション管理システム208のアカウントにアクセスできるようになる可能性がある。
【0038】
別の例では、MAC306は、トランザクション管理システム208のアカウントパスワードpと、インターフェース210により発行される課題cの組合せを使用して生成される。たとえば、トランザクション管理システム208がインターフェース210と通信セッションを開始すると、インターフェース210は、トランザクション管理システム208にランダムに生成した課題cを送ることになる。トランザクション管理システム208は、課題cをアカウントパスワードpに連結し、ハッシュ関数を使用して、ハッシュ出力h(c||p)を生成することができる。例示的なハッシュ関数は、SHA-256、MD-5などを含む。トランザクション管理システム208は、次いで、課題cおよびハッシュ出力h(c||p)を、認証のためにインターフェース210に送る。結果として、攻撃者308は、cおよびh(c||p)を見るが、サーバ(インターフェース210)が異なる課題を発行するため、攻撃者308は、異なる通信セッションでh(c||p)を再使用することが不可能になる。
【0039】
攻撃者308は、それにもかかわらず、ハッシュ出力h(c||p)をリバースしてパスワードpを取得するのを試みる可能性がある。たとえば、攻撃者308は、レインボーテーブルを使用してハッシュ出力をリバースすることができる。レインボーテーブルは、特定のハッシュ関数について、異なるハッシュ出力をハッシュ入力にマッピングする予め計算した表である。これを行うため、攻撃者308は、正当なサーバを装って、トランザクション管理システム208に偽の課題c'を送る可能性がある。攻撃者308は、使用される特定のハッシュ関数について、c'で以前に計算したレインボーテーブルを有することができる。攻撃者308が、無防備なトランザクション管理システム208からh(c'||p)を受信する場合、攻撃者308は、場合によってハッシュ関数をリバースしてパスワードpを得ることができる。結果として、この認証プロトコルは以前のものよりも安全であるが、攻撃者308がフィッシングの課題c'を能動的に送出できる場合、安全上の欠陥にさらされる。
【0040】
別の例では、MAC306は、サーバが発行した課題c、クライアントのパスワードp、およびナンスnの組合せを使用して生成される。ナンスnは、サーバおよびクライアントによって選ばれる任意の数である。この認証プロトコルの下で、トランザクション管理システム208は、ハッシュ出力h(n||c||p)を計算し、このハッシュ出力を課題Cおよびナンスnとともにインターフェース210に送る。この認証プロトコルは、攻撃者308が、新しい通信セッション中で傍受したデータを単にリプレーするのを防止することができ、フィッシングc'でハッシュ値をリバースするのを実行不可能にもする。というのは、異なるトランザクションではナンスnが異なるためである。
【0041】
上の例では、トランザクション管理システム208とインターフェース210の間のトランザクションは、単調増加する数によってインデックス付けされる。インデックスは、安全目的のナンスとして使用することができる。たとえば、トランザクション管理システム208は、トランザクションインデックスをローカルで管理すること、またはトランザクションインデックスを得るためノード214にピングを打つことができる。しかし、単一のアカウントについて複数のトランザクション管理システムが存在する場合、現在のトランザクション数を登録するためのクライアント間の調整は複雑となる可能性がある。さらに、トランザクションは、並列に行われる代わりに直列に行われなければならない。というのは、各トランザクションは、以前のトランザクションからのカウンタに依拠するためである。1つのトランザクションが不適切なナンスを使用した場合、数が違うために、すべての後続の待ち状態のトランザクションは、再スタートするように強いられることになる。いくつかの場合には、トランザクション管理システム208は、並列なトランザクションを可能にするための複数のスロットを管理する。たとえば、各スロットがそれ自体のインデックス数を維持することができる。しかし、多数のスロットを有するのは、計算費用を増加させる。
【0042】
別の例では、トランザクションは、タイムスタンプを使用することによって、リプレー攻撃からさらに保護される。クライアントは、サーバにピングを打って、各トランザクションについてのタイムスタンプを受け取らなければならず、トランザクションは、指定された時間窓内に終了する必要がある。結果として、攻撃者がクライアントから送られた情報を首尾よく傍受した場合でさえ、攻撃者は、時間窓が閉じたときには情報を使用することが可能でないことになる。しかし、最新のブロックのタイムスタンプを得ることは、計算費用を追加する可能性があり、サーバとクライアントが同期していないとき、正当な要求を拒否する可能性がある。
【0043】
図4は、本明細書の実施形態に従って実行できる認証プロトコルを実施するためのプロセス400の例のスイムレーン図を描く。認証プロトコルは、ネットワーク中のリプレー攻撃と戦うことができ、
図3に記載されたようなナンスの組を維持する義務からクライアントを解放することができる。いくつかの実施形態では、プロセス400は、1つまたは複数のコンピューティングデバイスを使用して実行される、1つまたは複数のコンピュータ実行可能プログラムを使用して実施することができる。認証プロトコルは、クライアント401とサーバ403の間で実行される。いくつかの例では、クライアント401は、ユーザが動作可能なコンピューティングデバイスであってよい。サーバは、ブロックチェーンネットワークの1つまたは複数のコンセンサスノードであってよい。
【0044】
最初のステップとして、クライアント401は、トランザクションメッセージmをローカルで生成すること(404)によって、トランザクションを開始する(402)。たとえば、トランザクションは、クライアント401によって制御されるアカウントからブロックチェーンネットワーク中の別のアカウントに、指定された量のデジタル通貨を転送することを表すことができる。クライアント401は、ブロックチェーンネットワークのプロトコルによって指定されたデータ形式を使用してトランザクションメッセージmを生成する。たとえば、トランザクションメッセージmは、送り手のブロックチェーンアドレス、受け手のブロックチェーンアドレス、交換されるデジタル通貨の量、マイニング報酬、タイムスタンプなどを含むことができる。そのため、トランザクションメッセージmは、開始したトランザクションと一意に関連する。
【0045】
クライアント401は、次いで、トランザクションメッセージmのトランザクションハッシュh(m)を計算する(406)。トランザクションハッシュh(m)を計算する際に使用されるハッシュ関数は、ブロックを生成するためブロックチェーンネットワークによって使用されるハッシュ関数と同じであってよい。
【0046】
クライアント401は、次いで、ブロックチェーン上でトランザクションを実施して記録するためのトランザクション要求を生成することができる(408)。トランザクション要求は、トランザクションメッセージmおよびトランザクションハッシュ値h(m)を含むことができる。いくつかの場合に、クライアント401は、そのプライベート鍵でトランザクション要求にデジタル署名をすることができる。デジタル署名は、トランザクション要求が変更された場合、無効になる。
【0047】
クライアント401は、次に、サーバ403と通信セッションを確立して(410)、サーバにトランザクション要求を送る(412)。
【0048】
トランザクション要求を受け取ったら、サーバ403は、トランザクションハッシュh(m)を使用してブロックチェーン上の過去のトランザクションを検索する。ブロックチェーン上のあらゆるトランザクションは固有のハッシュ値によってインデックス付けされ、トランザクションハッシュh(m)とブロックチェーン上のトランザクションハッシュの間の一致は、トランザクション情報が複製され、リプレー攻撃からのものである可能性があることを示すことになる。いくつかの実施形態では、各ブロックチェーンがいくつかのブロックを含むことができ、各ブロックは、いくつかのトランザクションをさらに含むことができる。サーバ403がブロックチェーンのコピーを記憶するために、サーバ403が特定のトランザクションハッシュを検索するのは、計算コストが高い場合がある。より効率的な検索戦略を実施するため、サーバ403が既存のトランザクションハッシュにインデックスを付け、それらをキャッシュリソース中に記憶することができる。キャッシュリソースは、通常のメモリまたはデータベースよりも速いアクセス速度を有することができる。いくつかの場合に、キャッシュリソースは、トランザクションハッシュを記憶するための専用とすることができる。
【0049】
いくつかの場合に、トランザクションハッシュは、トランザクションがブロックチェーン上に記録された後で、キャッシュリソースから除去することができる。そのような場合に、サーバ403は、トランザクションハッシュh(m)が以前に受け取られたかを決定するため、キャッシュリソースおよびブロックチェーンを検索することができる。
【0050】
いくつかの場合に、受け取ったトランザクションハッシュは、トランザクションがブロックチェーン上で記録されているかにかかわらず、キャッシュハッシュ中に維持することができる。そのような場合に、サーバ403は、最初に、ブルームフィルタなどの効率的なデータ構造に基づいて、キャッシュリソースを検索することができる。
【0051】
ブルームフィルタは、ある要素がある組のメンバーであるかを決定するため使用される確率的データ構造である。ブルームフィルタに対するクエリーは、フォールスポジティブを戻す場合があるが、決してフォールスネガティブを戻さない。言い換えると、クエリーは、「おそらく組の中」または「確実に組の中にない」のいずれかを戻す。結果として、ブルームフィルタに対するクエリーが、あるトランザクションハッシュが存在しないことを示す場合、トランザクションハッシュがブロックチェーン上に存在しないことが確かである。一方、ブルームフィルタに対するクエリーが、あるトランザクションハッシュが存在することを示す場合、トランザクションハッシュが実際に存在するかを確かめるために、全ブロックチェーン上でさらなる検索を行うことができる。
【0052】
トランザクション情報を受け取ったら、サーバ403は、ブルームフィルタに関連するキャッシュリソース中でトランザクションハッシュh(m)を検索する(414)。キャッシュリソースは、以前に受け取ったトランザクションハッシュを記憶することができる。検索がネガティブを戻し、トランザクションハッシュがブロックチェーン上に存在しないことを示す場合、関連するトランザクションは、正当なトランザクションであって、サーバ403は、そのトランザクションで進める(416)。トランザクションハッシュは、次いで、ブルームフィルタに関連するキャッシュリソースに記憶される(418)。
【0053】
検索がポジティブを戻す場合、トランザクションハッシュh(m)がブロックチェーン上に存在する可能性も存在しない可能性もある。ブロックチェーン上のh(m)の存在をさらに決定するため、サーバ403は、トランザクションハッシュh(m)の第2の検索を実施する(420)。このとき、サーバ403は、サーバ403に関連する全ブロックチェーンでトランザクションハッシュh(m)を検索することになる。検索がネガティブを戻し、トランザクションが正当であることを示す場合、サーバ403は、そのトランザクションで再び進め(416)、ブロックチェーンネットワーク上でトランザクションをブロードキャストする。トランザクションが、たとえば、プルーフオブワークプロセスを通して有効化され、クライアント401が十分な残高を有することが確かな場合、トランザクションはブロックチェーン上に記録されることになる。
【0054】
第2の検索がポジティブを戻す場合、トランザクションハッシュh(m)は既にブロックチェーン中に存在する。これは、クライアント401が以前に使用された情報をサーバに送ることを試みている-リプレー攻撃の可能性を示す。結果として、クライアント401は、失敗メッセージを受け取り、トランザクションを中断することができる(422)。
【0055】
図5は、本明細書の実施形態による、アンチリプレー攻撃認証プロトコルを実施するためのプロセス500の例のフローチャートを描く。プロセス500は、たとえば、
図4のインターフェース210およびノード214を備えるサーバ403といった、サーバの観点から記載される。サーバ403は、
図2に記載されたような、ブロックチェーンネットワーク212のサーバであってよい。
【0056】
最初のステップとして、サーバ403は、たとえば、
図4のクライアント401といった、クライアントからの通信セッションを確立する(502)。通信セッションは、クライアント401とサーバ403の間の双方向のデータ交換を可能にする。たとえば、トランザクション要求は、クライアント401によって制御されるデジタル資産の転送を含むことができ、クライアント401は、たとえば、ブロックチェーン216といったブロックチェーン上にトランザクションを記録するようにサーバ403に要求することができる。サーバ403とクライアント401は、認証目的で、ある種の秘密情報を共有する。たとえば、サーバ403は、クライアント401のパスワードのコピーを記憶することができる。
【0057】
通信セッションを確立したことに応答して、サーバ403は、クライアント401に課題を発行する(504)。課題は、通信セッションのため特に生成されたランダムまたは擬似ランダムな値である。異なる通信セッションは、異なる課題を使用することになる。
【0058】
課題を発行したことに応答して、サーバ403は、クライアント401からトランザクション要求を受け取る(506)。たとえば、トランザクション要求は、発行された課題から計算されるハッシュ値、クライアントに関連するパスワード、およびサーバ403によって維持されるブロックチェーン中に記憶するため要求されたトランザクションのハッシュを含むことができる。要求されたトランザクションのハッシュを計算するためクライアント401に使用されるハッシュ関数は、ブロックチェーン216上でトランザクションをハッシュしてインデックス付けするためブロックチェーンネットワーク212によって使用される同じハッシュ関数である。トランザクション要求は、トランザクションメッセージハッシュを含む(508)。
【0059】
サーバ403は、ここで、要求されたトランザクションがブロックチェーン216に含まれるかを決定する(508)。たとえば、サーバ403は、ブロックチェーンに以前に記憶したすべてのトランザクションのハッシュ値を記憶するキャッシュリソースに照会することができる。クエリー性能を改善するため、サーバ403は、ブルームフィルタを使用して、ブロックチェーン216が要求されたトランザクションのハッシュを既に含むかを決定することができる。
【0060】
要求されたトランザクションのハッシュがブロックチェーン216に含まれないとサーバ403が決定した場合、サーバ403は、そのトランザクションで進める(512)。たとえば、サーバ403は、クライアント301からのパスワードを検証するために進むことができる。検証が成功である場合、サーバ403は、有効化するためにブロックチェーンネットワーク212に現在のトランザクションをブロードキャストすることができる。
【0061】
一方、要求されたトランザクションのハッシュがブロックチェーン216に既に含まれるとサーバ403が決定した場合、サーバ403は、クライアント301にトランザクション拒否を送ることになる(510)。複製トランザクションの存在は、クライアント301は悪意があり、サーバアクセスを得るために、盗まれた情報をリプレーしていることを示す可能性がある。
【0062】
図6は、本明細書の実施形態による装置600のモジュールの例を描く図である。装置600がブロックチェーンノードの例示的な実施形態であってよい。装置600は、上で記載した実施形態に対応することができ、装置600は、以下、すなわち、クライアントからのトランザクション要求を受け取るための受信モジュール602であって、トランザクション要求が、ブロックチェーン上に記録されるように要求されたトランザクションと、トランザクションをハッシュすることに基づいて計算されたハッシュとを含む、受信モジュール602と、トランザクションハッシュがキャッシュリソースまたはブロックチェーンの中に以前記憶されていないかを決定するための決定モジュール604と、トランザクションハッシュをキャッシュリソースに記憶するための記憶モジュール606と、トランザクション要求を実行するための実行モジュール608とを含む。
【0063】
本明細書に記載される技法は、1つまたは複数の技術的な効果をもたらす。いくつかの実施形態では、本技法によって、繰り返される要求がブロックチェーンネットワークによって処理されてコンセンサスプロセスに提出される前に、同じトランザクション要求を複数回提出する試み(すなわち、リプレー攻撃)をブロックチェーンネットワークが検出することが可能になる。このことによって、ブロックチェーンネットワークがこれらの無効なトランザクションを処理するのを回避して、より高いトランザクションスループットをもたらすことが可能になる。いくつかの実施形態では、本技法は、複数のクライアント間で協調しなければならないナンスまたは他の値の使用をせず、それによって、より簡単なクライアント実施形態および意図しない複製要求の可能性の低下がもたらされる。
【0064】
本主題の記載される実施形態は、1つまたは複数の特徴を、単独でまたは組み合わせて含むことができる。たとえば、第1の実施形態では、ブロックチェーンネットワークの安全性を高めるための方法は、クライアントからトランザクション要求を受け取るステップであって、トランザクション要求が、ブロックチェーン上に記録されるように要求されるトランザクションと、トランザクションをハッシュすることに基づいて計算されたトランザクションハッシュとを含む、ステップと、トランザクションハッシュがキャッシュリソースにもブロックチェーンにも以前に記憶されていないことを決定するステップと、キャッシュリソースにトランザクションハッシュを記憶するステップと、トランザクション要求を実行するステップとを含む。
【0065】
上記および他の記載された実施形態は、各々が任意選択で以下の特徴のうちの1つまたは複数を含むことができる。
【0066】
以降の特徴のいずれかと組合せ可能な第1の特徴としては、トランザクション要求が、トランザクションに基づいて生成されたデジタル署名を含むことが規定される。
【0067】
以前または以降の特徴のいずれかと組合せ可能な第2の特徴としては、トランザクションハッシュがキャッシュリソースにもブロックチェーンにも以前に記憶されていないと決定するステップが、トランザクションハッシュを使用してキャッシュリソースに照会するステップおよびトランザクションハッシュの同一のコピーがキャッシュリソース中に記憶されていないと決定するステップを含むことが規定される。
【0068】
以前または以降の特徴のいずれかと組合せ可能な第3の特徴としては、キャッシュリソースは、トランザクション要求を受け取る前にブロックチェーンノードによって受け取られたトランザクションハッシュを記憶するブルームフィルタであることが規定される。
【0069】
以前または以降の特徴のいずれかと組合せ可能な第4の特徴としては、トランザクションが第1のトランザクションであり、トランザクションハッシュが第1のトランザクションハッシュであり、ブロックチェーンは、第2のトランザクションおよび第2のトランザクションハッシュを含む第2のトランザクション要求をさらに受け取り、第2のトランザクションハッシュがキャッシュリソースおよびブロックチェーンに以前に記憶されていることを決定し、クライアントにトランザクション拒否を送ることが規定される。
【0070】
以前または以降の特徴のいずれかと組合せ可能な第5の特徴としては、トランザクションが第1のトランザクションであり、トランザクションハッシュが第1のトランザクションハッシュであり、ブロックチェーンノードは、第2のトランザクションおよび第2のトランザクションハッシュを含む第2のトランザクション要求をさらに受け取り、第2のトランザクションハッシュがブロックチェーンに以前に記憶されていることを決定し、クライアントにトランザクション拒否を送ることが規定される。
【0071】
以前または以降の特徴のいずれかと組合せ可能な第6の特徴としては、トランザクションが、ブロックチェーンアドレス、トランザクション量、およびトランザクションの時間のうちの1つまたは複数に関連する情報を含むことが規定される。
【0072】
本主題の実施形態および本明細書に記載された行為および動作は、本明細書で開示された構成およびそれらの構成上の等価物を含む、デジタル電子回路、有形に具体化されたコンピュータソフトウェアまたはファームウェア、コンピュータハードウェア、またはそれらの1つまたは複数の組合せで実施することができる。本明細書に記載される主題の実施形態は、データ処理装置が実行するため、またはデータ処理装置の動作を制御するため、コンピュータプログラム担体上に符号化された、たとえば、コンピュータプログラム命令の1つまたは複数のモジュールといった、1つまたは複数のコンピュータプログラムとして実施することができる。たとえば、コンピュータプログラム担体は、その上に命令を符号化または記憶した1つまたは複数のコンピュータ可読記憶媒体を含むことができる。担体は、磁気、光磁気、もしくは光ディスク、固体ドライブ、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、または他のタイプの媒体などの、有形の非一時的コンピュータ可読媒体であってよい。代替または追加として、担体は、データ処理装置が実行するため、好適な受信器装置に送信する情報を符号化するために生成される、たとえば、機械生成した電気、光、または電磁信号といった人工的に生成した伝播信号であってよい。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、もしくはそれらの1つもしくは複数の組合せであってよく、または部分であってよい。コンピュータ記憶媒体は、伝播信号でない。
【0073】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードと呼ばれ、または記載されることもあるコンピュータプログラムは、コンパイル型もしくはインタープリタ型言語、または宣言型もしくは手続型言語を含む任意の形のプログラミング言語で書くことができ、スタンドアロンプログラム、または、1つまたは複数の場所においてデータ通信ネットワークによって相互接続される1つまたは複数のコンピュータを含むことができるコンピューティング環境で実行するのに好適な、モジュール、構成要素、エンジン、サブルーチン、もしくは他のユニットを含む任意の形で展開することができる。
【0074】
コンピュータプログラムは、ファイルシステム中のファイルに対応することができるが、必ずしも対応する必要はない。コンピュータプログラムは、マークアップ言語文書、対象のプログラム専用の単一のファイル、またはたとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの部分を記憶するファイルといった複数の協調したファイルに記憶される、たとえば、1つもしくは複数のスクリプトといった他のプログラムまたはデータを保持するファイルの一部に記憶することができる。
【0075】
コンピュータプログラムの実行のためのプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般的に、プロセッサは、プロセッサに結合された非一時的コンピュータ可読媒体から、実行のためのコンピュータプログラムの命令ならびにデータを受け取る。
【0076】
「データ処理装置」という用語は、例として、プログラム可能プロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。データ処理装置は、たとえば、FPGA(フィールドプログラム可能ゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPU(グラフィックス処理ユニット)といった専用論理回路を含むことができる。装置は、ハードウェアに加えて、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つまたは複数の組合せを構成するコードといった、コンピュータプログラムのための実行環境を作るコードをやはり含むことができる。
【0077】
本明細書で記載されるプロセスおよび論理フローは、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のコンピュータまたはプロセッサが実施して、入力データに作用して出力を生成することによって動作を実施することができる。プロセスおよび論理フローは、たとえば、FPGA、ASIC、もしくはGPUといった専用論理回路によって、または専用論理回路と1つまたは複数のプログラムしたコンピュータの組合せによって実施することもできる。
【0078】
コンピュータプログラムの実行に好適なコンピュータは、汎用マイクロプロセッサもしくは専用マイクロプロセッサもしくはそれらの両方、または任意の種類の中央処理装置に基づくことができる。一般的に、中央処理装置は、読取り専用メモリまたはランダムアクセスメモリまたはそれらの両方から命令およびデータを受け取る。コンピュータの要素は、命令を実行するための中央処理装置、および命令およびデータを記憶するための1つまたは複数のメモリデバイスを含み得る。中央処理装置およびメモリは、専用論理回路によって補助すること、または専用論理回路中に組み込むことができる。
【0079】
一般的に、コンピュータは、また、1つもしくは複数の記憶デバイスを含むこと、または1つもしくは複数の記憶デバイスからデータを受け取るため、もしくは1つもしくは複数の記憶デバイスにデータを転送するために動作可能に結合することとなる。記憶デバイスは、たとえば、磁気、光磁気、もしくは光ディスク、固体ドライブ、または任意の他のタイプの非一時的コンピュータ可読記憶媒体であってよい。しかし、コンピュータがそのようなデバイスを持つ必要はない。したがって、コンピュータは、ローカルおよび/またはリモートである、1つまたは複数のメモリなどの1つまたは複数の記憶デバイスに結合することができる。たとえば、コンピュータは、コンピュータと一体となった構成要素である1つもしくは複数のローカルメモリを含むことができ、またはコンピュータは、クラウドネットワークにある1つもしくは複数のリモートメモリに結合することができる。さらに、コンピュータは、ほんのいくつか例を挙げれば、たとえば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレイヤー、ゲームコンソール、全地球測位システム(GPS)受信器、またはたとえば、ユニバーサルシリアルバス(USB)フラッシュドライブといった携帯型記憶デバイスといった別のデバイスに埋め込むことができる。
【0080】
構成要素は、直接的または1つもしくは複数の中間の構成要素を介してのいずれかで、互いに電気的または光学的に接続するなど、可換であることによって互いに「結合」することができる。構成要素は、構成要素のうちの1つが他のものに組み込まれる場合、互いに「結合」することがやはりできる。たとえば、プロセッサへと組み込まれた記憶構成要素(たとえば、L2キャッシュ構成要素)は、プロセッサに「結合」される。
【0081】
ユーザとの相互作用を実現するため、本明細書に記載される主題の実施形態は、ユーザに情報を表示するための、たとえば、LCD(液晶ディスプレイ)モニターといったディスプレイデバイス、および、たとえば、キーボードおよびたとえば、マウス、トラックボール、またはタッチパッドといったポインティングデバイスといった、ユーザがコンピュータに入力を提供することができる入力デバイスを有するコンピュータ上に実装すること、またはコンピュータと通信するように構成することができる。同様に、他の種類のデバイスを使用してユーザとの相互作用を実現することができる。たとえば、ユーザへ提供されるフィードバックは、たとえば視覚フィードバック、音声フィードバック、または触覚フィードバックといった任意の形の感覚フィードバックであってよく、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形で受け取ることができる。加えて、コンピュータは、ユーザに使用されるデバイスとの間で文書を送受信することによって、たとえば、ウェブブラウザから受け取った要求に応答してユーザのデバイス上のウェブブラウザにウェブページを送ることによって、またはたとえば、スマートフォンもしくは電子タブレットといったユーザデバイス上で動作するアプリと相互作用することによって、ユーザと相互作用することができる。また、コンピュータは、たとえば、メッセージングアプリケーションが動作しているスマートフォンといった、個人用デバイスにテキストメッセージまたは他の形のメッセージを送ること、および返事としてユーザから応答メッセージを受け取ることによって、ユーザと相互作用することができる。
【0082】
本明細書は、システム、装置、およびコンピュータプログラム構成要素に関して、「構成される(configured to)」という用語を使用する。特定の動作または行為を実施するように構成される1つまたは複数コンピュータのシステムとは、そのシステムが、動作中にシステムに動作または行為を実施させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せを、システム自体にインストールしていることを意味する。特定の動作または行為を実施するように構成される1つまたは複数コンピュータプログラムとは、データ処理装置が実行すると、装置に動作または行為を実施させる命令を1つまたは複数のプログラムが含むことを意味する。特定の動作または行為を実施するように構成される専用論理回路とは、動作または行為を実施する電子論理を回路が有することを意味する。
【0083】
本明細書が多くの具体的な実施形態の詳細を含んでいる一方で、これらは、請求項自体によって規定される、特許請求されているものの範囲についての制限と考えるべきでなく、むしろ、特定の実施形態に固有であってよい特徴の記載と考えるべきである。別個の実施形態の文脈で本明細書で記載されるある種の特徴は、単一の実施形態で組み合わせて具体化することもできる。逆に、単一の実施形態の文脈で記載される様々な特徴は、複数の実施形態で別個に、または任意の好適な下位の組合せで具体化することもできる。さらに、特徴は、上で、ある種の組合せで機能すると記載される場合があり、最初にそのように特許請求されさえするが、特許請求される組合せからの1つまたは複数の特徴は、いくつかの場合に、組合せから切り取られる可能性があり、特許請求は、下位の組合せまたは下位の組合せの変形形態を対象とする場合がある。
【0084】
同様に、動作は、特定の順番で、図に描かれ、請求項に言及される一方、これを、所望の結果に到達するために、そのような動作が示される特定の順番でもしくは連続的な順番で実施されること、またはすべての図示された動作が実施されることを必要とすると理解するべきではない。ある種の状況では、マルチタスクおよび並列処理が有利となる場合がある。さらに、上に記載された実施形態における様々なシステムモジュールおよび構成要素の区切りは、すべての実施形態でそのような区切りを必要とすると理解するべきでなく、記載されたプログラム構成要素およびシステムは、単一のソフトウェア製品に全体的に一緒に組み込むことができ、または複数のソフトウェア製品にパッケージすることができると理解するべきである。
【0085】
本主題の特定の実施形態が記載されてきた。他の実施形態は、以下の請求項の範囲内である。たとえば、請求項中で言及される行為を、異なる順番で実施して、依然として望ましい結果を達成することができる。一例として、添付図面に描かれたプロセスは、望ましい結果を達成するために、必ずしも示される特定の順番または連続的な順番を必要としない。いくつかの場合に、マルチタスクおよび並列処理が有利となる場合がある。