JP2023098847A - 装置、方法、コンピュータプログラム(プライバシー保護ブロックチェーンの選択的監査プロセス) - Google Patents

装置、方法、コンピュータプログラム(プライバシー保護ブロックチェーンの選択的監査プロセス) Download PDF

Info

Publication number
JP2023098847A
JP2023098847A JP2022205037A JP2022205037A JP2023098847A JP 2023098847 A JP2023098847 A JP 2023098847A JP 2022205037 A JP2022205037 A JP 2022205037A JP 2022205037 A JP2022205037 A JP 2022205037A JP 2023098847 A JP2023098847 A JP 2023098847A
Authority
JP
Japan
Prior art keywords
blockchain
user
transaction
user identifier
ledger
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
JP2022205037A
Other languages
English (en)
Inventor
キヤウイ カウタル エル
El Khiyaoui Kaoutar
カロ アンジェロ デ
De Caro Angelo
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2023098847A publication Critical patent/JP2023098847A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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
    • 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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/42Anonymization, e.g. involving pseudonyms
    • 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

Abstract

【課題】プライバシー保護ブロックチェーンの選択的監査プロセス。【解決手段】例示的な動作は、第1のブロックチェーントランザクションをサブミットしたユーザの第1の識別子に基づいてブロックチェーン台帳に記憶された第1のブロックチェーントランザクションの1つまたは複数を識別することと、監査ノードとユーザとの間で共有される秘密鍵を取得することと、監査ノードを介して、秘密鍵に基づいて第1のブロックチェーントランザクションに含まれる暗号文を解読することと、ユーザの第2のユーザ識別子を復元し、監査ノードを介して、ブロックチェーン台帳に記憶されたユーザの第2のユーザ識別子を含む第2のブロックチェーントランザクションを識別することとを含み得る。【選択図】図5

Description

一元化されたプラットフォームは、データを単一の場所に記憶して維持する。この場所は、多くの場合、中央コンピュータ、例えば、クラウドコンピューティング環境、ウェブサーバ、メインフレームコンピュータ、または同様のものである。一元化されたプラットフォームに記憶された情報は、典型的には、複数の異なるポイントからアクセス可能である。複数のユーザまたはクライアントワークステーションが、例えば、クライアント/サーバ構成に基づいて、一元化されたプラットフォームで同時に作業できる。一元化されたプラットフォームは、単一の場所であるため、特にセキュリティの目的で、管理、維持、および制御が容易である。一元化されたプラットフォーム内では、すべてのデータを単一の場所に記憶することは、データの所与のセットにプライマリレコードが1つしかないことも意味するため、データ冗長性が最小限に抑えられる。
1つの例示的な実施形態は、第1のブロックチェーントランザクションをサブミットしたユーザの第1のユーザ識別子に基づいてブロックチェーン台帳に記憶された第1のブロックチェーントランザクションの1つまたは複数を識別し、監査ノードとユーザとの間で共有される秘密鍵を取得し、監査ノードを介して、秘密鍵に基づいて第1のブロックチェーントランザクションに含まれる暗号文を解読し、ユーザの第2のユーザ識別子を復元し、監査ノードを介して、ブロックチェーン台帳に記憶されたユーザの第2のユーザ識別子を含む第2のブロックチェーントランザクションを識別するように構成されるプロセッサを備える装置を提供する。
別の例示的な実施形態は、第1のブロックチェーントランザクションをサブミットしたユーザの第1の識別子に基づいてブロックチェーン台帳に記憶された第1のブロックチェーントランザクションの1つまたは複数を識別する段階と、監査ノードとユーザとの間で共有される秘密鍵を取得する段階と、監査ノードを介して、秘密鍵に基づいて第1のブロックチェーントランザクションに含まれる暗号文を解読する段階と、ユーザの第2のユーザ識別子を復元し、監査ノードを介して、ブロックチェーン台帳に記憶されたユーザの第2のユーザ識別子を含む第2のブロックチェーントランザクションを識別する段階とを備える方法を提供する。
別の例示的な実施形態は、プロセッサによって読み取られると、プロセッサに、第1のブロックチェーントランザクションをサブミットしたユーザの第1の識別子に基づいてブロックチェーン台帳に記憶された第1のブロックチェーントランザクションの1つまたは複数を識別する手順と、監査ノードとユーザとの間で共有される秘密鍵を取得する手順と、監査ノードを介して、秘密鍵に基づいて第1のブロックチェーントランザクションに含まれる暗号文を解読する手順と、ユーザの第2のユーザ識別子を復元し、監査ノードを介して、ブロックチェーン台帳に記憶されたユーザの第2のユーザ識別子を含む第2のブロックチェーントランザクションを識別する手順とを実行させる命令を備えるコンピュータ可読記憶媒体を提供する。
例示的な実施形態による、選択的に監査できる匿名のブロックチェーン台帳を含むブロックチェーンコンピューティング環境を示す図である。
例示的な実施形態による、例示的なブロックチェーンアーキテクチャ構成を示す図である。 例示的な実施形態による、ノード間のブロックチェーントランザクションフローを示す図である。
例示的な実施形態による、許可型ネットワークを示す図である。
例示的な実施形態による、別の許可型ネットワークを示す図である。
例示的な実施形態による、無許可ネットワークを示す図である。
例示的な実施形態による、ブロックチェーン台帳上のユーザのトランザクションを選択的に監査するプロセスを示す図である。 例示的な実施形態による、ブロックチェーン台帳上のユーザのトランザクションを選択的に監査するプロセスを示す図である。 例示的な実施形態による、ブロックチェーン台帳上のユーザのトランザクションを選択的に監査するプロセスを示す図である。
例示的な実施形態による、ブロックチェーン台帳上のユーザのトランザクションを選択的に監査する方法を示す図である。
例示的な実施形態による、本明細書に記載の1つまたは複数の動作を実行するように構成される例示的なシステムを示す図である。
例示的な実施形態による、本明細書に記載の1つまたは複数の動作を実行するように構成される別の例示的なシステムを示す図である。
例示的な実施形態による、スマートコントラクトを利用するように構成される別の例示的なシステムを示す図である。
例示的な実施形態による、ブロックチェーンを利用するように構成される、さらに別の例示的なシステムを示す図である。
例示的な実施形態による、分散型台帳に追加される新しいブロックのプロセスを示す図である。
例示的な実施形態による、新しいデータブロックのデータコンテンツを示す図である。
例示的な実施形態による、デジタルコンテンツのブロックチェーンを示す図である。
例示的な実施形態による、ブロックチェーン内のブロックの構造を表し得るブロックを示す図である。
例示的な実施形態による、機械学習(人工知能)データを記憶する例示的なブロックチェーンを示す図である。
例示的な実施形態による、例示的な量子安全ブロックチェーンを示す図である。
例示的な実施形態のうちの1つまたは複数をサポートする例示的なシステムを示す図である。
本明細書で概して説明され、図面に示される本構成要素は、多種多様な異なる構成で配置および設計され得ることが容易に理解されるであろう。したがって、添付の図に表されるような、方法、装置、非一時的コンピュータ可読媒体およびシステムのうちの少なくとも1つの実施形態の以下の詳細な説明は、特許請求される本出願の範囲を限定することを意図するものではなく、単に選択された実施形態を表すものである。
本明細書全体に記載されるような本特徴、構造、または特性は、1つまたは複数の実施形態において任意の好適な方法で組み合わせるか、または除去し得る。例えば、本明細書全体を通した「例示的な実施形態」、「いくつかの実施形態」という語句、または他の同様の文言の使用は、実施形態に関連して記載された特定の特徴、構造、または特性が、少なくとも1つの実施形態に含まれ得るということを指す。したがって、本明細書全体を通した「例示的な実施形態」、「いくつかの実施形態では」、「他の実施形態では」、または他の同様の文言の出現は、必ずしもすべてが実施形態の同じグループを指すわけではなく、記載された特徴、構造、または特性は、1つまたは複数の実施形態において任意の好適な方法で組み合わせるか、または除去し得る。さらに、図において、要素間の任意の接続は、示されている接続が一方向または双方向の矢印の場合でも、一方向通信もしくは双方向通信またはその両方を許容できる。また、図面に示されている任意のデバイスは、異なるデバイスとすることができる。例えば、モバイルデバイスが情報を送信していることが示される場合、有線デバイスを使用して情報を送信することもできる。
さらに、「メッセージ」という用語が実施形態の説明において使用され得るが、本出願は、多くのタイプのネットワークおよびデータに適用され得る。さらに、特定のタイプの接続、メッセージ、およびシグナリングが、例示的な実施形態に示され得るが、本出願は、特定のタイプの接続、メッセージ、およびシグナリングに限定されない。
例示的な実施形態は、監査可能な分散型台帳、いくつかの実施形態では、トランザクションコンテンツが暗号化(例えば、匿名、秘匿等)される監査可能なブロックチェーン台帳を対象にした方法、システム、構成要素、非一時的コンピュータ可読媒体、デバイスもしくはネットワーク、またはその組み合わせを提供する。様々な実施形態によれば、一意の識別スキームをブロックチェーンネットワーク/ソフトウェアに組み込むことができ、ユーザがブロックチェーン台帳に別のブロックチェーントランザクションをサブミットするたびに、ユーザの一意の(すなわち、異なる)ユーザ識別子を作成するために使用できる。一意のユーザ識別子は、ブロックチェーントランザクションのトランザクションIDとして使用され得る。したがって、一意のユーザ識別子は、トランザクションコンテンツ(例えば、支払、交換、転送等)が暗号化されている間は暗号化しなくてもよい。非限定的な例として、一意のユーザ識別子は、暗号化されていないブロックチェーンブロックのヘッダ内に記憶され得るが、ブロックチェーントランザクションのコンテンツは、暗号化されているブロックチェーンブロックのデータセクションに記憶され得る。
様々な実施形態によれば、ユーザは、最初に自分のユーザ識別子を作成し、それをブロックチェーン、例えば、ユーザ/クライアントに監査ノードを割り当てる監査登録サービスにサブミットし得る。この例では、ブロックチェーンネットワークに複数の監査ノードが含まれ得、各ユーザには監査ノードの1つが監査人として割り当てられる。例えば、ユーザは、乱数に基づいて初期ユーザ識別子を作成し得るが、実施形態はこれに限定されない。初期ユーザ識別子は、オフチェーンの監査ノードと共有し得る。ユーザが第1のトランザクションを生成するとき、ユーザは初期ユーザ識別子を第1のブロックチェーントランザクションの識別子として使用できる。
さらに、ユーザはまた、ユーザと監査ノードとの間で以前に合意された何らかのランダム化方式に基づく初期ユーザ識別子のランダム化(または擬似ランダム化)に基づいて使用される次のユーザ識別子を生成し得る。このように、次のユーザ識別子は初期ユーザ識別子とは異なるが、監査ノードはさらに、初期ユーザ識別子の擬似ランダム化を並行して実行することにより、これがユーザの正しい次のユーザ識別子であることを証明することが可能である。次のユーザ識別子はまた、初期ユーザ識別子でラベル付けされたブロックチェーントランザクションと共に記憶され得る。言い換えると、ユーザは、現在のブロックチェーントランザクション(すなわち、後続のブロックチェーントランザクションの前にサブミットされる)内の後続のブロックチェーントランザクション(すなわち、時間的により遅くサブミットされる)の次/後続のユーザ識別子を漏洩させ得る。
1つの実施形態では、本出願は、互いに通信する複数のノードを含む、分散ストレージシステムである分散データベース(ブロックチェーン等)を利用する。分散データベースは、相互に信頼できない当事者間でのレコードの維持が可能な分散型台帳に相似する追加のみの不変データ構造を含む。信頼できない当事者は、本明細書ではピアまたはピアノードと呼ばれる。各ピアはデータベースレコードのコピーを維持し、分散ピア間でコンセンサスに達することなく、単一のピアがデータベースレコードを修正できない。例えば、ピアはコンセンサスプロトコルを実行して、ブロックチェーンストレージトランザクションを検証し、ストレージトランザクションをブロックにグループ化し、ブロック上にハッシュチェーンを構築し得る。このプロセスは、一貫性を保つために、必要に応じてストレージトランザクションを順序付けて台帳を形成する。様々な実施形態では、許可型ブロックチェーンもしくは非許可型ブロックチェーン、またはその両方を使用できる。パブリックブロックチェーンまたは非許可型ブロックチェーンでは、誰でも特定のアイデンティティなしで参加できる。パブリックブロックチェーンは、ネイティブの暗号通貨を含み、プルーフオブワーク(PoW)等の様々なプロトコルに基づくコンセンサスを使用できる。一方、許可型ブロックチェーンデータベースは、資金、商品、情報、および同様のものを交換するビジネス等の共通の目的を共有しているが、互いに完全には信頼していないエンティティのグループ間でセキュアなやり取りを提供する。
本出願は、分散ストレージスキームに合わせて調整され、「スマートコントラクト」または「チェーンコード」と呼ばれる、任意のプログラマブルロジックを動作させるブロックチェーンを利用できる。場合によっては、システムチェーンコードと呼ばれる管理機能およびパラメータ用の特化したチェーンコードが存在し得る。本出願は、ブロックチェーンデータベースの改ざん防止特性および、エンドースメントまたはエンドースメントポリシと呼ばれるノード間の基本的な合意を活用する、信頼できる分散アプリケーションであるスマートコントラクトをさらに利用できる。本出願に関連付けられたブロックチェーントランザクションは、ブロックチェーンにコミットされる前に「エンドース」できるが、エンドースされていないトランザクションは無視される。エンドースメントポリシにより、チェーンコードは、エンドースメントに必要なピアノードのセットの形態で、トランザクションのエンドーサを指定することが可能である。クライアントがエンドースメントポリシで指定されたピアにトランザクションを送信すると、トランザクションが実行されてトランザクションが検証される。検証後、トランザクションは順序付けフェーズに入り、コンセンサスプロトコルを使用して、ブロックにグループ化されたエンドースされたトランザクションの順序付けられたシーケンスが生成される。
本出願は、ブロックチェーンシステムの通信エンティティであるノードを利用できる。「ノード」は、異なるタイプの複数のノードが同じ物理サーバ上で実行できるという意味で、論理機能を実行し得る。ノードは信頼ドメインにグループ化され、様々な方法でノードを制御する論理エンティティに関連付けられる。ノードは、エンドーサ(例えば、ピア)にトランザクション呼び出しをサブミットし、順序付けサービス(例えば、順序付けノード)にトランザクション提案をブロードキャストするクライアントノードまたはサブミットクライアントノード等、異なるタイプを含み得る。別のタイプのノードは、クライアントがサブミットしたトランザクションを受け取り、トランザクションをコミットし、ブロックチェーントランザクションの台帳の状態とコピーとを維持できるピアノードである。ピアはエンドーサの役割を果たすこともできるが、これは必須要件ではない。順序付けサービスノードまたはオーダラは、すべてのノードの通信サービスを実行するノードであり、トランザクションをコミットし、通常、制御情報およびセットアップ情報を含む初期ブロックチェーントランザクションの別名である、ブロックチェーンのワールドステートを修正するときのシステム内のピアノードのそれぞれへのブロードキャスト等の配信保証を実装する。
本出願は、ブロックチェーンのすべての状態遷移の順序付けされた不正防止記録である台帳を利用できる。状態遷移は、参加当事者(例えば、クライアントノード、順序付けノード、エンドーサノード、ピアノード等)によってサブミットされたチェーンコード呼び出し(すなわち、トランザクション)から生じ得る。各参加当事者(ピアノード等)は台帳のコピーを維持できる。トランザクションは、作成、更新、削除、および同様のもの等の1つまたは複数のオペランドとして台帳にコミットされる資産鍵値対のセットをもたらし得る。台帳は、不変で順序付けされた記録をブロック内に記憶するために使用される、ブロックチェーン(チェーンとも呼ばれる)を含む。台帳はまた、ブロックチェーンの現在の状態を維持する状態データベースを含む。
本出願は、ハッシュリンクされたブロックとして構造化されたトランザクションログであるチェーンを利用でき、各ブロックは、Nが1と等しいまたは1より大きい一連のN個のトランザクションを含む。ブロックヘッダは、ブロックのトランザクションのハッシュ、ならびに前のブロックのヘッダのハッシュを含む。このようにして、台帳上のすべてのトランザクションは一緒に順序付けされ、暗号的にリンクされ得る。したがって、ハッシュリンクを壊すことなく、台帳データを改ざんすることは不可能である。最近追加されたブロックチェーンブロックのハッシュは、チェーン上でそれより前に発生したすべてのトランザクションを表し、すべてのピアノードが一貫した信頼できる状態にあることを保証することが可能である。チェーンは、ピアノードファイルシステム(すなわち、ローカル、接続ストレージ、クラウド等)に記憶され得、ブロックチェーンワークロードの追加のみの性質を効率的にサポートする。
不変台帳の現在の状態は、チェーントランザクションログに含まれるすべての鍵の最新の値を表す。現在の状態は、チャネルで認識されている最新の鍵値を表すため、ワールドステートと呼ばれることがある。チェーンコード呼び出しは、台帳の現在の状態データに対してトランザクションを実行する。これらのチェーンコード間のやり取りを効率的にするために、鍵の最新の値を状態データベースに記憶し得る。状態データベースは、単にチェーンのトランザクションログ内へのインデックス付きビューであり得、したがって、いつでもチェーンから再生成できる。状態データベースは、ピアノードの起動時でトランザクションが受け入れられる前に、自動的に復元(または必要に応じて生成)され得る。
例示的な実施形態では、ブロックチェーンネットワークは、暗号化されたブロックチェーン台帳を実装することによって、そのようなブロックチェーン台帳を解読するための鍵を漏洩させずに、そのユーザのプライバシーを保護することを可能にし得る。しかし、プライバシー保護ブロックチェーン台帳は、本明細書に記載されている一意の識別スキームに基づいて、監査ノードによって選択的に解読および監査され得る。すなわち、ブロックチェーントランザクションの基本的なコンテンツは、ブロックチェーン台帳上の他のユーザおよびブロックチェーンピアからは秘匿され得たとしても、それでもなお権限を与えられた監査人は、ブロックチェーン台帳全体を解読する必要なく、特定のユーザのトランザクションのみを解読する選択的な方法で、トランザクションコンテンツを監査し得る。したがって、監査人は、ブロックチェーン台帳全体を解読するのではなく、特定のユーザに関連付けられたトランザクションのみを識別するために解読プロセスを選択的に実行できるため、時間および計算リソースを大幅に節約できる。
図1は、例示的な実施形態による、選択的に監査できるブロックチェーン台帳110を含むブロックチェーンコンピューティング環境100を示す。図1を参照すると、ブロックチェーン台帳110は、すべてのユーザが利用可能であるパブリックブロックチェーン、またはユーザがアクセスするための許可を得る必要がある許可型ブロックチェーンであり得る。ブロックチェーン台帳110は、トランザクションコンテンツが暗号化され得、ブロックチェーントランザクションに署名するために、従来の署名ではなく匿名署名が使用され得るという点で、匿名であり得る。
ブロックチェーン台帳110は、それらの間で分散されたブロックチェーン台帳110のコピーを記憶し得る複数のブロックチェーンピア(図示せず)のネットワークによって管理され得る。ブロックチェーンピアは、ウェブサーバ、仮想マシン、クラウドプラットフォーム、データベース、ユーザデバイス、および同様のものを介して実装され得る。ユーザは、ブロックチェーン台帳110を介してデジタル値を転送するために、互いにトランザクションし得る。図1の例では、ユーザ112は、ユーザ114との第1のブロックチェーントランザクションおよび、ユーザ116との第2のブロックチェーントランザクションを含む2つのトランザクションに参加した。第1および第2のブロックチェーントランザクションの両方は、それぞれのトランザクションに関与するいずれのユーザも識別できないように、匿名の方法でブロックチェーン台帳110に記憶され得る。
例示的な実施形態では、ブロックチェーンコンピューティング環境100は、1つまたは複数の監査ノード130によって実行される監査プロセスに新しいユーザを登録するための登録サービス120も含む。場合によっては、ブロックチェーンコンピューティング環境100は、複数の監査ノード130を含み得る。この場合、登録サービス120は、ユーザごとに1つの監査ノードを割り当て得、例えば、監査ノード132をユーザ112に割り当て得る。
監査は、ユーザ112によってサブミットされ、匿名のブロックチェーン台帳110に記憶されたブロックチェーントランザクションに対して、いつでも監査ノード132によって実行され得る。監査を実行するとき、監査ノード132は、登録サービス120に登録されたユーザ112の初期ユーザ識別子を取得し得る。ここで、初期ユーザ識別子は、ユーザによって生成され、ユーザ112によって匿名ブロックチェーン110にサブミットされる初期ブロックチェーントランザクションのトランザクションIDとして使用され得る。この場合、初期ユーザ識別子は暗号化されていない場合があるが、トランザクションコンテンツは暗号化される。したがって、監査ノード132は、台帳全体を解読し、そのような識別子について台帳全体を走査する代わりに、識別子に基づいて(例えば、状態データベース、インデックス、辞書等から)ブロックチェーントランザクションを容易に発見し得る。
この例では、ユーザ112によってサブミットされた初期トランザクションは、ユーザ112からユーザ114へのデジタル資産の転送である。様々な実施形態によれば、初期ブロックチェーントランザクションは、その中に暗号化されたデータを有する暗号文を含み得、このデータは、例えば、登録サービス120への登録中に、ユーザ112と監査ノード132との間で共有される秘密鍵に基づいて暗号化される。この例では、監査ノード132は、初期ブロックチェーントランザクションの暗号文を解読して、次のブロックチェーントランザクションをサブミットするときにユーザ112によって使用される次のユーザ識別子等、ブロックチェーントランザクションの様々な属性を明らかにし得る。例えば、ユーザ112は、初期ユーザ識別子を受け取り、ランダム化に基づいて次のユーザ識別子を作成するランダム関数またはランダム化プロセスを使用し得る。次のユーザ識別子は、監査ノード132とユーザ112との間で共有される秘密鍵Kで暗号化できる。したがって、監査ノード132は、共有秘密鍵を使用して初期ブロックチェーントランザクション内の暗号文を解読し、次のユーザ識別子を復元することが可能であり得るが、ブロックチェーン台帳110上の他の参加者が次のユーザ識別子を解読することはできない。
初期ブロックチェーントランザクションを解読することによって、監査ノード132は、ユーザの次のブロックチェーントランザクションの識別子を学習する。図1の例では、次のブロックチェーントランザクションは、ユーザ112によってブロックチェーン台帳110にサブミットされた第2のブロックチェーントランザクションであり得、ユーザ112からユーザ116への価値の移転を含む。次いで、このプロセスは、監査ノード132によって、第2のブロックチェーントランザクションで繰り返され、第2のブロックチェーントランザクションの暗号文から第3のユーザ識別子を復元できる。さらに、監査ノード132がまだ使用されていない次のユーザ識別子に到達するまで、このプロセスを反復的に実行/繰り返すことができる。これは、監査ノード132が、ユーザ112によってブロックチェーン台帳110に追加された最後の/最新のブロックチェーントランザクションに到達したことを示す。言い換えると、ユーザ112は、将来の/後続のブロックチェーントランザクションを指す識別子を各ブロックチェーントランザクションに追加でき、それによって、匿名のブロックチェーン台帳110に監査証跡を提供できる。
典型的には、プライバシー保護トークン転送では、そのコンテンツ(タイプ、値、および受信者)と共にその送信元のアイデンティティが秘匿される。ブロックチェーン上での証明は、バリデータがブロックチェーントランザクションコンテンツに含まれるトランザクション/転送の正確性を、平文でそのコンテンツにアクセスすることなく、または、その送信元を知ることなく確認するのに役立つゼロ知識証明によって可能になる。しかし、ユーザのプライバシーはトークン転送アプリケーションにとって重要であるが、制定された規制に準拠し、匿名ブロックチェーンネットワークでの適切な動作を促進するために、監査可能性の必要性が増している。監査可能性のための既存の手法では、監査人は、台帳を解読して、すべてのトランザクションを識別するまで、どのトランザクションが監査対象であるか分からないため、監査人がトランザクションの形成に積極的に参加する(すなわち、常にオンラインである)か、監査時にすべてのトランザクションを無差別に解読する必要がある。
例示的な実施形態は、許可型ブロックチェーンに合わせて調整されたプライバシー保護トークンシステムへの拡張を提供する。この拡張により、参加しない監査人は、本明細書に記載されている一意の識別機構により、すべてのトランザクションを解読することなく、監査時に監査対象であるトランザクションを認識することが可能である。プライバシー保護トークンシステムは、秘匿コミットメントとゼロ知識証明とを組み合わせて、ブロックチェーン参加者がコンテンツにアクセスすることなくトランザクションを検証することを可能にする。最も注目すべきは、機密資産が転送されるトークンのタイプおよび値を秘匿していることである。それでもなお、送信者と受信者との関係は漏洩する。
zk-SNARKおよびマークルツリーを使用して、トランザクションが、それらの基礎となる転送に関する情報を一切明らかにしないようにする方法で、この問題に取り組んでいる、ZEROCASH等の既存のブロックチェーンネットワークがある。ただし、監査に関しては、解はごくわずかであり、監査人は台帳全体を解読するか、常にオンラインにする必要がある。これらの任意選択は両方とも、かなりのリソースおよび時間を消費する。例示的な実施形態は、各トランザクションを一意に識別することを可能にする、変化し続ける反復的に生成された識別子のユーザを通じて、ブロックチェーン上に絞られた証跡を提供することによって問題に対処する。さらに、各トランザクションには、ユーザがサブミットする次のトランザクションの識別子が含まれている。したがって、ユーザは、現在のブロックチェーントランザクションのトランザクションコンテンツに含まれる前方を指すユーザ識別子を通じて証跡を開示できる。言い換えると、i番目のユーザ識別子を使用して作成されたトランザクションには暗号文が含まれ得、これを解読すると、次のユーザ識別子(すなわち、ユーザ識別子i+1)が明らかになる。したがって、ユーザはトランザクション証跡の順序付けを順次明らかにでき、監査ノードはユーザのブロックチェーントランザクションのみを選択的かつ順次発見し、それらを解読し、監査できる。
Zerocashのトークンは、値の所有者の識別子であるuidを使用して、次の情報(uid、タイプ、値)の秘匿コミットメントである。ZerocashのトランザクションはUTXOベースであり、すなわち、消費されるトークンのセット(入力)および作成される新しいトークンのセット(出力)からなる。Zerocashトランザクションは、次の条件を満たす場合に有効であると言われる。(i)入力は、有効な過去のトランザクションまでたどることができる、(ii)入力のタイプが出力のタイプと同じである、(iii)入力の合計値が出力の合計値に等しい、(iv)入力の所有者がトランザクションを承認した、(v)入力は以前に消費されていない(二重支払いを防ぐため)。
Zerocashはzk-SNARKを使用して、前述の条件が成立することを示す。具体的には、プライバシー保護メンバーシップ証明とシリアル番号とを組み合わせて、有効なトークンのみが消費されることを保証することと、二重支払いを防止することとをそれぞれ行う。メンバーシップ証明は、有効なトークンを記憶するマークルツリーおよびトークンが属しているか否かを示すzk-SNARKプロトコルを使用して実装される。一方、シリアル番号は、トークンが常に同じシリアル番号を生成するように、ランダムシード(トークン作成時に選択)および所有者の秘密鍵の関数として計算される。したがって、ユーザが同じトークンを2回消費した場合、これを簡単に検出する。
例示的な実施形態では、システム内のユーザUは、資格情報cred0=commit(uid,pk(u),pksig(u),pk(a),k,id0,r0)に関連付けられ、uidはUの一意の識別子であり、(pk(u),pksig(u))はUの公開鍵であり、pk(a)は、Uの監査人Aの公開鍵であり、kはUとAとの間で共有される秘密鍵であり、id0は、UおよびAだけが知っている一意の識別子である。
ここで、ユーザとは、図1に示すユーザ112、または同様のものを指し得る。登録時に、図1の登録サービス120等の登録機関RAは、cred0が正しく計算されていることをチェックし、登録トランザクションをサブミットして、credを台帳に追加する。現在、Zerocashトランザクションは次のように拡張されている。
・ 秘密鍵Kを使用して転送情報を暗号化する暗号文
・ コミットメントcredi=(uid,pk(u),pksig(u),pk(a),K,idi,ri)
・ 識別子idi-1
・ 秘密鍵Kの下でidiを暗号化する暗号文
・ 台帳にコミットメントcredi-1=(uid,pk(u),pksig(u),pk(a),K,idi-1,ri-1)があるというゼロ知識証明
・ 暗号文が正しく計算されたというゼロ知識証明
この例では、ユーザUおよび監査人Aが、秘密鍵Kおよび初期識別子id0を共有していると仮定すると、監査人AはUからの有効なトランザクションを認識することが可能である。
様々な実施形態によれば、ユーザは転送トランザクションをブロックチェーンにサブミットする。各ユーザには、登録時に監査人が割り当てられる。監査人は、ブロックチェーンネットワークによって、すべてのユーザのトランザクションを検査し、そのコンテンツにアクセスする権限が与えられている。登録機関は、ユーザ資格情報を登録する信頼できる機関である。登録機関は、ユーザ資格情報が一意であること、および任意の所与の監査人がその管轄に属するユーザのみに割り当てられることを確認する。
例示的な実施形態では、ユーザUからの登録要求は、以下を含み得る。
一意の識別子uid、
2つの公開鍵、
Figure 2023098847000002
監査人公開鍵pk(a)
署名、
Figure 2023098847000003
秘匿コミットメント、
Figure 2023098847000004
および
Figure 2023098847000005
が正しく計算されたことを示すゼロ知識証明。
Uからそのような要求を受信すると、機関RAは次のチェックを実行する。
公開鍵
Figure 2023098847000006
)がまだ登録されていないかどうかをチェックし、そうであれば、拒否する。
Figure 2023098847000007
が権限を与えられた監査人の公開鍵に対応するかどうか、およびその監査人がUを監査する権限が与えられているかどうかをチェックし、そうでなければ、拒否する。
Figure 2023098847000008
がpk(a)に関連するcred0の有効な署名であるかどうかをチェックし、そうでなければ、拒否する。
ゼロ知識証明が有効かどうかをチェックする。
すべてのチェックが成功した場合、後者は、それぞれpk(u)および
Figure 2023098847000009
の基礎となる秘密鍵sk(u)および
Figure 2023098847000010
の知識を証明するように、RAはUとインタラクティブにゼロ知識証明を開始する。ゼロ知識証明が有効な場合、RAは登録トランザクションtx=<register,cred0,σ>をサブミットする。このトランザクションは、σが登録機関の公開鍵に関連するメッセージ<register,cred0>の有効な署名であるかどうかをチェックすることによって検証される。署名が有効な場合、cred0が台帳に追加される。効率的なプライバシー保護メンバーシップ証明を有効にするために、ブロックチェーン参加者によって維持されるマークルツリーTにcred0が追加され、有効な資格情報が記憶される。説明を簡単にするために、例では1つの入力tokと1つの出力tok'とを有する転送トランザクションのみを考慮する。
トークン
Figure 2023098847000011
の所有権を移転するために、Uは最初にtokを再ランダム化する。tok''がランダム化されたトークンを表すとする。
次いで、Uは
Figure 2023098847000012
を計算し、ridは新しい所有者の識別子である。
Figure 2023098847000013
をUの資格情報とする。したがって、Uは以下を計算する。

Figure 2023098847000014
に対応する資格情報のランダム化。
さらに、
Figure 2023098847000015
は、この新しいランダム化された資格情報として示される。
- 秘密鍵Kを使用して、rid、type、およびvalueをそれぞれ暗号化する暗号文
Figure 2023098847000016

Figure 2023098847000017
、および
Figure 2023098847000018

- 新しい資格情報
Figure 2023098847000019

- 秘密鍵Kを使用したidiの暗号文c(id)。
- VRFが証明可能な疑似乱数関数であるようなトークンtokのシリアル番号
Figure 2023098847000020

- 次に、Uはゼロ知識証明ψを計算して、以下を示す。

Figure 2023098847000021
は、有効な資格情報
Figure 2023098847000022
(すなわち、マークルツリーTの資格情報)のランダム化である。

Figure 2023098847000023

Figure 2023098847000024
の識別子である。
- tok''は、有効なトークンのランダム化である。

Figure 2023098847000025
およびtok''は同じユーザ識別子uidをエンコードする。
- tok'は正しく計算される。すなわち、タイプおよび値が維持される。
- snは正しく計算される。
- crediが正しく計算される。
- 暗号文
Figure 2023098847000026

Figure 2023098847000027

Figure 2023098847000028
、および
Figure 2023098847000029
が正しく計算される。
最後に、ユーザUはメッセージ
Figure 2023098847000030
で匿名署名σを計算し得、σは署名者が
Figure 2023098847000031
の基礎となる秘密鍵を知っていることを示す。
結果の転送トランザクションは
Figure 2023098847000032
に対応し、snおよび
Figure 2023098847000033
が台帳に表示されないことをチェックすることによってtxが検証され、ψは有効なゼロ知識証明であり、σは
Figure 2023098847000034
の公開鍵
Figure 2023098847000035
の下で有効な署名である。すべてのチェックが成功すると、トランザクションが台帳に追加される。具体的には、マークルツリーTにcrediが追加される。
Uのトランザクションを検査するために、割り当てられた監査人Aは共有秘密鍵Kおよび初期識別子
Figure 2023098847000036
を取得する。
次いで、Aは、識別子
Figure 2023098847000037
を有する台帳に転送トランザクションがあるかどうかをチェックする。
その場合、次いで、Aはトランザクション内の暗号文を解読し、結果のタプル
Figure 2023098847000038
を記憶する。識別子
Figure 2023098847000039
が与えられると、Aは同じ識別子を有する転送トランザクションがあるかどうかをチェックする。
その場合、監査人はトランザクション内の暗号文を解読し、Uの次のトランザクションを識別可能にする
Figure 2023098847000040
を取得する。
このプロセスは、Aが台帳に一致する転送トランザクションが存在しない識別子
Figure 2023098847000041
を取得するまで繰り返される。
ユーザUを監査するためのAの権限が取り消される場合、RAはトランザクション
Figure 2023098847000042
を発行し、σはRAの署名である。このトランザクションがコミットされると、AはUの最新の資格情報の識別子を時間ウィンドウτ内にサブミットする必要があり、その後、RAはAを非準拠であると宣言できる。
Figure 2023098847000043
を見て、Aはトランザクション
Figure 2023098847000044
を発行し、
Figure 2023098847000045
は何らかの資格情報
Figure 2023098847000046
のランダム化であり、ψは、crednがマークルツリーTに記憶され、取り消された監査人の公開鍵および識別子uidおよびidnをエンコードすることを示すゼロ知識証明であり、σ(a)は公開鍵pk(a)の下の<revoke,uid,pk(a),idn,credn',ψ>の署名である。Aが従わない場合、RAはUに連絡して識別子idnを取得し、Aの権限を無効にできる。トランザクションをサブミットできるようにするには、UがRAから新しい資格情報を取得する必要があることに留意されたい。新しい資格情報は、取り消された監査人と共有するものとは異なる秘密鍵をエンコードする必要がある。
図2Aは、例示的な実施形態による、ブロックチェーンアーキテクチャ構成200を示す。図2Aを参照すると、ブロックチェーンアーキテクチャ200は、特定のブロックチェーン要素、例えば、ブロックチェーンノード202のグループを含み得る。ブロックチェーンノード202は、1つまたは複数のノード204~210を含み得る(これらの4つのノードは例としてのみ示される)。これらのノードは、ブロックチェーントランザクションの追加および検証プロセス(コンセンサス)等、いくつかのアクティビティに参加する。ブロックチェーンノード204~210のうちの1つまたは複数は、エンドースメントポリシに基づいてトランザクションをエンドースでき、アーキテクチャ200内のすべてのブロックチェーンノードに順序付けサービスを提供できる。ブロックチェーンノードは、ブロックチェーン認証を開始し、ブロックチェーン層216に記憶されたブロックチェーンの不変台帳への書き込みを試みることができ、そのコピーは、基盤となる物理インフラストラクチャ214に記憶することもできる。ブロックチェーン構成は、参加者が求めるカスタマイズされた構成に従って作成でき、それら自体の状態を維持し、それら自体の資産を制御し、外部情報を受信できる、記憶されたプログラム/アプリケーションコード220(例えば、チェーンコード、スマートコントラクト等)にアクセスして実行するために、アプリケーションプログラミングインターフェース(API)222にリンクされる、1つまたは複数のアプリケーション224を含み得る。これは、トランザクションとしてデプロイし、分散型台帳に追加することで、すべてのブロックチェーンノード204~210にインストールできる。
ブロックチェーンベースまたはプラットフォーム212は、ブロックチェーンデータ、サービス(例えば、暗号トラストサービス、仮想実行環境等)、および新しいトランザクションを受信および記憶し、データエントリへのアクセスを求めている監査人へのアクセスを提供するために使用され得る基盤となる物理コンピュータインフラストラクチャの様々な層を含み得る。ブロックチェーン層216は、プログラムコードを処理し、物理インフラストラクチャ214に関与するために必要な仮想実行環境へのアクセスを提供するインターフェースを公開し得る。暗号トラストサービス218を使用して、資産交換トランザクション等のトランザクションを証明し、情報を非公開にすることができる。
図2Aのブロックチェーンアーキテクチャ構成は、ブロックチェーンプラットフォーム212によって公開される1つまたは複数のインターフェース、および提供されるサービスを介して、プログラム/アプリケーションコード220を処理および実行し得る。コード220は、ブロックチェーン資産を制御し得る。例えば、コード220は、データを記憶および転送でき、ノード204~210によって、スマートコントラクトおよび関連付けられたチェーンコードを条件またはその実行の対象となる他のコード要素の形態で実行し得る。非限定的な例として、リマインダ、更新もしくは変更、更新等の対象となる他の通知、またはその組み合わせを実行するために、スマートコントラクトを作成し得る。スマートコントラクトは、それ自体、権限およびアクセス要件、および台帳の使用に関連するルールを識別するために使用できる。例えば、スマートコントラクト(またはスマートコントラクトのロジックを実行するチェーンコード)は、ブロックチェーン層216に含まれる1つまたは複数の処理エンティティ(例えば、仮想マシン)によって処理され得るブロックチェーンデータ226を読み取って、複雑なサービスシナリオ内で、アラート、責任の決定、および同様のものを含む結果228を生成し得る。物理インフラストラクチャ214を利用して、本明細書に記載のデータまたは情報を取得し得る。
スマートコントラクトは、高レベルのアプリケーションとプログラミング言語を介して作成され、ブロックチェーン内のブロックに書き込まれ得る。スマートコントラクトは、ブロックチェーン(例えば、ブロックチェーンピアの分散型ネットワーク)に登録、記憶、もしくは複製される実行可能コード、またはその組み合わせを含め得る。トランザクションとは、スマートコントラクトに関連付けられた条件が満たされたことに応答して実行できるスマートコントラクトコードを実行することである。スマートコントラクトの実行は、デジタルブロックチェーン台帳の状態に対する信頼できる修正をトリガし得る。スマートコントラクト実行によるブロックチェーン台帳の修正は、1つまたは複数のコンセンサスプロトコルを通じて、ブロックチェーンピアの分散型ネットワーク全体に自動的に複製され得る。
スマートコントラクトは、データを鍵値対の形式でブロックチェーンに書き込み得る。さらに、スマートコントラクトコードは、ブロックチェーンに記憶されている値を読み取り、アプリケーション動作でそれらを使用できる。スマートコントラクトコードは、様々な論理演算の出力をブロックチェーン内の1つまたは複数のブロック内に書き込むことができる。このコードは、仮想マシンまたは他のコンピューティングプラットフォームで一時データ構造を作成するために使用され得る。ブロックチェーンに書き込まれたデータは公開することができる、もしくは、暗号化して非公開として維持することができる、またはその両方である。スマートコントラクトによって使用/生成される一時データは、提供された実行環境によってメモリに保持され、ブロックチェーンに必要なデータが識別されると削除される。
チェーンコードには、スマートコントラクトのコード解釈が含まれ得る。例えば、チェーンコードは、スマートコントラクト内のロジックのパッケージ化されたデプロイ可能なバージョンを含み得る。本明細書に記載されるように、チェーンコードは、コンセンサスプロセス中にチェーンバリデータによってまとめて実行および検証される、コンピューティングネットワーク上にデプロイされるプログラムコードであり得る。チェーンコードは、ハッシュを受け取り、以前に記憶された特徴抽出器を使用して作成されたデータテンプレートに関連付けられたハッシュをブロックチェーンから取得し得る。ハッシュ識別子のハッシュと記憶された識別子テンプレートデータから作成されたハッシュが一致する場合、チェーンコードは要求されたサービスに認証鍵を送信する。チェーンコードは、暗号化の詳細に関連付けられたブロックチェーンデータに書き込み得る。
図2Bは、例示的な実施形態による、ブロックチェーンのノード間のブロックチェーントランザクションフロー250の例を示す。図2Bを参照すると、トランザクションフローは、エンドーシングピアノード281にトランザクション提案291を送信するクライアントノード260を含み得る。エンドーシングピア281は、クライアントの署名を証明し、チェーンコード関数を実行してトランザクションを開始し得る。出力は、チェーンコードの結果、チェーンコードで読み取られた鍵/値バージョンのセット(読み取りセット)、およびチェーンコードで書き込まれた鍵/値のセット(書き込みセット)を含み得る。ここで、エンドーシングピア281は、トランザクション提案をエンドースするか否かを決定し得る。提案応答292は、承認された場合、エンドースメント署名と共にクライアント260に返送される。クライアント260はエンドースメントをトランザクションペイロード293にアセンブルし、それを順序付けサービスノード284にブロードキャストする。次いで、順序付けサービスノード284は、順序付けられたトランザクションをブロックとしてチャネル上のすべてのピア281~283に配信する。ブロックチェーンにコミットする前に、各ピア281~283はトランザクションを検証し得る。例えば、ピアはエンドースメントポリシをチェックして、指定されたピアの正しい割り当てが結果に署名し、トランザクションペイロード293に対して署名を認証したことを保証し得る。
再び図2Bを参照すると、クライアントノードは、エンドーサであるピアノード281に要求を構築して送信することにより、トランザクション291を開始する。クライアント260は、トランザクション提案を生成するために利用可能なAPIを利用する、サポートされているソフトウェア開発キット(SDK)を利用するアプリケーションを含み得る。この提案は、データを台帳から読み取る、もしくは台帳に書き込む(すなわち、資産の新しい鍵値対を書き込む)、またはその両方をできるようにチェーンコード関数を呼び出すための要求である。SDKは、トランザクション提案を適切に設計された形式(例えば、リモートプロシージャコール(RPC)を介したプロトコルバッファ)にパッケージ化するためのシムとして機能し、クライアントの暗号資格情報を取得して、トランザクション提案の一意の署名を生成し得る。
これに応答して、エンドーシングピアノード281は、(a)トランザクション提案が適切に形成されていること、(b)トランザクションが過去にまだサブミットされていないこと(リプレイ攻撃保護)、(c)署名が有効であること、および(d)サブミッタ(この例ではクライアント260)に、そのチャネルで提案された動作を実行するための適切な権限が与えられていることを証明し得る。エンドーシングピアノード281は、トランザクション提案入力を、呼び出されたチェーンコード関数への引数として受け取り得る。次いで、チェーンコードが現在の状態データベースに対して実行され、応答値、読み取りセット、書き込みセットを含むトランザクション結果が生成される。ただし、この時点では、台帳に対する更新は行われない。292では、値のセットがエンドーシングピアノード281の署名と共に、クライアント260のSDKに提案応答292として返され、SDKは、アプリケーションが消費するペイロードを解析する。
これに応答して、クライアント260のアプリケーションは、エンドーシングピア署名を検査/証明し、提案応答を比較して、提案応答が同じであるかどうかを決定する。チェーンコードが台帳にクエリのみをした場合、アプリケーションはクエリ応答を検査し、通常はトランザクションを順序付けノードサービス284にサブミットしない。クライアントアプリケーションが台帳を更新するために順序付けノードサービス284にトランザクションをサブミットすることを意図している場合、アプリケーションは、サブミット前に、指定されたエンドースメントポリシが満たされているかどうか(すなわち、トランザクションに必要なすべてのピアノードがトランザクションをエンドースしたかどうか)を判定する。ここで、クライアントは、複数の当事者のうちの1つだけをトランザクションに含め得る。この場合、各クライアントは独自のエンドーシングノードを有し得、各エンドーシングノードはトランザクションをエンドースする必要がある。このアーキテクチャは、アプリケーションが応答を検査しないことを選択するか、または、そうでなければ、エンドースされていないトランザクションを転送する場合でも、依然としてエンドースメントポリシはピアによって実施され、コミット検証フェーズで維持されるようになっている。
検査が成功した後、ステップ293で、クライアント260はエンドースメントをトランザクション提案にアセンブルし、トランザクションメッセージ内のトランザクション提案および応答を順序付けノード284にブロードキャストする。トランザクションには、読み取りセット/書き込みセット、エンドーシングピア署名、およびチャネルIDが含まれ得る。順序付けノード284は、その動作を実行するためにトランザクションのコンテンツ全体を検査する必要はなく、代わりに、順序付けノード284は、単に、ネットワーク内のすべてのチャネルからトランザクションを受信し、それらをチャネルごとに経時的に順序付け、チャネルごとにトランザクションのブロックを作成し得る。
ブロックは、順序付けノード284からチャネル上のすべてのピアノード281~283に配信される。エンドースメントポリシが満たされていることを保証し、読み取りセットがトランザクション実行によって生成されて以降、読み取りセット変数の台帳の状態が変更されていないことを保証するために、ブロック内のデータセクションが検証され得る。さらに、ステップ295で、各ピアノード281~283はブロックをチャネルのチェーンに追加し、有効なトランザクションごとに書き込みセットが現在の状態データベースにコミットされる。トランザクション(呼び出し)が不変にチェーンに追加されたことをクライアントアプリケーションに通知するため、ならびにトランザクションが有効化されたか無効化されたかを通知するために、イベントが発行され得る。
図3Aは、許可型ブロックチェーンネットワーク300の例を示しており、これは分散型の非集中的なピアツーピアアーキテクチャを特徴とする。この例では、ブロックチェーンユーザ302は、許可型ブロックチェーン304へのトランザクションを開始し得る。この例では、トランザクションはデプロイ、呼び出し、またはクエリである可能性があり、SDKを利用するクライアント側のアプリケーションを通じて、APIを通じて直接的に、等で発行され得る。ネットワークは、監査人等の規制者306へのアクセスを提供し得る。ブロックチェーンネットワークオペレータ308は、規制者306を「監査人」として登録し、ブロックチェーンユーザ302を「クライアント」として登録する等、メンバの許可を管理する。監査人は台帳のクエリのみに制限できる一方で、クライアントには特定のタイプのチェーンコードのデプロイ、呼び出し、およびクエリの権限を与えることができる。
ブロックチェーン開発者310は、チェーンコードおよびクライアント側のアプリケーションを記述することができる。ブロックチェーン開発者310は、インターフェースを通じてチェーンコードをネットワークに直接デプロイできる。従来のデータソース312からの資格情報をチェーンコードに含めるために、開発者310は帯域外接続を使用してデータにアクセスできる。この例では、ブロックチェーンユーザ302は、ピアノード314を通じて許可型ブロックチェーン304に接続する。任意のトランザクションに進む前に、ピアノード314は、ユーザの役割および許可を管理する認証局316からユーザのエンロールメント証明書およびトランザクション証明書を取得する。場合によっては、ブロックチェーンユーザは、許可型ブロックチェーン304でトランザクションするために、これらのデジタル証明書を所有しなければならない。一方、チェーンコードを利用しようとするユーザは、従来のデータソース312で資格情報を証明する必要があり得る。ユーザの権限を確認するために、チェーンコードは、従来の処理プラットフォーム318を通じてこのデータへの帯域外接続を使用できる。
図3Bは、分散型の非集中的なピアツーピアアーキテクチャを特徴とする、許可型ブロックチェーンネットワーク320の別の例を示す。この例では、ブロックチェーンユーザ322は、許可型ブロックチェーン324へのトランザクションをサブミットし得る。この例では、トランザクションはデプロイ、呼び出し、またはクエリである可能性があり、SDKを利用するクライアント側のアプリケーションを通じて、APIを通じて直接的に、等で発行され得る。ネットワークは、監査人等の規制者326へのアクセスを提供し得る。ブロックチェーンネットワークオペレータ328は、規制者326を「監査人」として登録し、ブロックチェーンユーザ322を「クライアント」として登録する等、メンバの許可を管理する。監査人は台帳のクエリのみに制限できる一方で、クライアントには特定のタイプのチェーンコードのデプロイ、呼び出し、およびクエリの権限を与えることができる。
ブロックチェーン開発者330は、チェーンコードおよびクライアント側のアプリケーションを記述する。ブロックチェーン開発者330は、インターフェースを通じてチェーンコードをネットワークに直接デプロイできる。従来のデータソース332からの資格情報をチェーンコードに含めるために、開発者330は帯域外接続を使用してデータにアクセスできる。この例では、ブロックチェーンユーザ322は、ピアノード334を通じてネットワークに接続する。任意のトランザクションに進む前に、ピアノード334は、認証局336からユーザのエンロールメント証明書およびトランザクション証明書を取得する。場合によっては、ブロックチェーンユーザは、許可型ブロックチェーン324でトランザクションするために、これらのデジタル証明書を所有しなければならない。一方、チェーンコードを利用しようとするユーザは、従来のデータソース332で資格情報を証明する必要があり得る。ユーザの権限を確認するために、チェーンコードは、従来の処理プラットフォーム338を通じてこのデータへの帯域外接続を使用できる。
いくつかの実施形態では、本明細書のブロックチェーンは非許可型ブロックチェーンであり得る。参加するのに許可が必要な許可型ブロックチェーンとは対照的に、非許可型ブロックチェーンには誰でも参加できる。例えば、非許可型ブロックチェーンに参加するために、ユーザは個人アドレスを作成し、トランザクションをサブミットして台帳にエントリを追加することにより、ネットワークとのやり取りを開始し得る。さらに、すべての当事者は、システム上でノードを実行し、トランザクションを証明するのに役立つマイニングプロトコルを使用することを選択できる。
図3Cは、複数のノード354を含む非許可型ブロックチェーン352によって処理されるトランザクションのプロセス350を示す。送信者356は、非許可型ブロックチェーン352を介して受信者358に支払いまたは他の何らかの形態の価値(例えば、証書、医療記録、契約書、商品、サービス、またはデジタル記録にカプセル化できる任意のその他の資産)を送信することを所望する。1つの実施形態では、送信者デバイス356および受信者デバイス358のそれぞれは、ユーザインターフェース制御およびトランザクションパラメータの表示を提供する(ブロックチェーン352に関連付けられた)デジタルウォレットを有し得る。これに応答して、トランザクションは、ブロックチェーン352全体でノード354にブロードキャストされる。ブロックチェーン352のネットワークパラメータに応じて、ノードは非許可型ブロックチェーン352の作成者によって確立されたルール(事前定義され得るか、または動的に割り当てられ得る)に基づいてトランザクションを証明する(360)。例えば、これには、関与する当事者のアイデンティティの証明等が含まれ得る。トランザクションはすぐに証明され得るか、または他のトランザクションと共にキューに入れられ得、ノード354はネットワークルールのセットに基づいてトランザクションが有効かどうかを判定する。
構造362では、有効なトランザクションがブロックに形成され、ロック(ハッシュ)で封印される。このプロセスは、ノード354間のノードをマイニングすることによって実行され得る。マイニングノードは、非許可型ブロックチェーン352のブロックをマイニングおよび作成するために特別に追加のソフトウェアを利用し得る。各ブロックは、ネットワークによって合意されたアルゴリズムを使用して作成されたハッシュ(例えば、256ビット数等)によって識別され得る。各ブロックには、ヘッダ、チェーン内の前のブロックのヘッダのハッシュへのポインタまたは参照、および有効なトランザクションのグループが含まれ得る。前のブロックのハッシュへの参照は、ブロックの安全で独立したチェーンの作成に関連付けられている。
ブロックをブロックチェーンに追加する前に、ブロックを検証しなければならない。非許可型ブロックチェーン352の検証には、ブロックのヘッダから派生したパズルの解であるプルーフオブワーク(PoW)が含まれ得る。図3Cの例には示されていないが、ブロックを検証する別のプロセスはプルーフオブステークである。アルゴリズムが数学的問題を解決したマイナに報酬を与えるプルーフオブワークとは異なり、プルーフオブステークでは、新しいブロックの作成者は、「ステーク」とも定義される富に応じて決定論的な方法で選択される。次いで、選択/選出されたノードによって同様の証明が実行される。
マイニング364では、ノードは、解がネットワーク全体の目標を満たすまで、1つの変数に漸進的な変更を加えることでブロックを解決しようとする。これによりPoWが作成され、それによって、正解が保証される。言い換えると、潜在的な解は、問題を解決するためにコンピューティングリソースが枯渇したことを証明しなければならない。一部の非許可型ブロックチェーンでは、マイナはブロックを正しくマイニングすることで価値(例えば、コイン等)の報酬を受け取り得る。
ここで、ブロックの連鎖と共に、PoWプロセスにより、攻撃者は1つのブロックの修正を受け入れるために、後続のすべてのブロックを修正しなければならないため、ブロックチェーンの修正が極めて困難になる。さらに、新しいブロックが採掘されるにつれて、ブロックを修正する難易度が増し、後続のブロックの数が増加する。分散366では、正常に検証されたブロックが非許可型ブロックチェーン352を通じて分散され、すべてのノード354がブロックを非許可型ブロックチェーン352の監査可能な台帳である多数派チェーンに追加する。さらに、送信者356によってサブミットされたトランザクションの値は、受信者デバイス358のデジタルウォレットに入金または、そうでなければ、転送される。
図4A~図4Cは、例示的な実施形態による、ブロックチェーン台帳430上のユーザのトランザクションを選択的に監査するプロセスを示す。これらの例では、ブロックチェーン台帳430は、暗号化された/匿名のブロックチェーン台帳であり得るが、実施形態はそれに限定されない。図4Aを参照すると、ブロックチェーン台帳430上でユーザの初期ブロックチェーントランザクション440を識別するプロセス400Aが示される。この例では、例えば、ユーザによってサブミットされた新しいブロックチェーントランザクション(図示せず)に応答して、または明示的な要求、タイミングの閾値、新しいブロック閾値等のような他の何らかの条件に応答してユーザの監査プロセスがトリガされる。
この例では、監査ノード420は、登録サービス410によってユーザを監査するために割り当てられる。ここで、登録サービス410は、監査ノード420が、登録プロセス中にユーザによって供給された初期識別子の受信を認めない限り、登録を完了しない。初期ユーザ識別子は、ブロックチェーン台帳430にサブミットされた初期ブロックチェーントランザクション440のトランザクション識別子として使用され得る。監査ノード420は、例えば、状態データベース、インデックス、辞書、または同様のものから、初期ユーザ識別子でラベル付けされた初期ブロックチェーントランザクション440の位置(すなわち、ブロック番号)を迅速に発見し得る。この場合、ユーザの初期ブロックチェーントランザクション440は、ブロックチェーン台帳430のブロック432に記憶される。
図4Bは、初期ブロックチェーントランザクション440を解読し、第2のユーザ識別子(すなわち、ユーザID#2)を復元するプロセス400Bを示す。図4Bを参照すると、監査ノード420は、トランザクションコンテンツ442(例えば、受信者、値、タイプ等)を含む初期ブロックチェーントランザクション440内の様々なコンテンツを解読し得、ユーザによるZKP444は、次のユーザ識別子(ユーザID#2)、および同様のものを含む、ユーザおよびトランザクションに関する様々な情報を正しくエンコードする暗号文446を保証する。監査ノード420は、監査ノード420とユーザとの間で共有される共有秘密鍵を使用して暗号文446を解読し、次のユーザ識別子を復元し得る。
図4Cは、図4Bのプロセス400Bで復元された第2のユーザ識別子に基づいてブロックチェーン台帳430からユーザの第2のブロックチェーントランザクション450を取得する監査ノード420のプロセス400Cを示す。図4Cを参照すると、監査ノード420は、図4Bで復元された第2のユーザ識別子に等しいトランザクション識別子を有する第2のブロックチェーントランザクション450を含むブロック434を識別する。この例では、ブロック434は、初期ブロックチェーントランザクション440を保持するブロック432の後にブロックチェーン台帳430に記憶されるブロックである。言い換えると、第2のブロックチェーントランザクション450はまだブロックチェーン台帳430に追加されておらず、後になって最終的に記憶することになるが、ユーザは、第2のブロックチェーントランザクション450を指すポインタを初期ブロックチェーントランザクション440にエンコードする。
図5は、例示的な実施形態による、ブロックチェーン台帳上のユーザのトランザクションを選択的に監査する方法500を示す。非限定的な例として、方法500は、ブロックチェーンピア、サーバ、サードパーティ認証サービス等のようなオフチェーンまたは外部エンティティ、ユーザデバイス、ブロックチェーンピア、信頼できるサービス、または同様のものによって実行され得る。図5を参照すると、510で、方法は、第1のブロックチェーントランザクションをサブミットしたユーザの第1の識別子に基づいて、ブロックチェーン台帳に記憶された第1のブロックチェーントランザクションを識別する段階を含み得る。ブロックチェーン台帳は、パブリックブロックチェーン台帳またはプライベートブロックチェーン台帳であり得る。いくつかの実施形態では、ブロックチェーン台帳は、情報を識別するのではなく、暗号化されたトランザクションコンテンツおよび匿名署名の両方を使用することを可能にする匿名にし得る。
520で、方法は、監査ノードとユーザとの間で共有される秘密鍵を取得する段階を含み得る。530で、方法は、監査ノードを介して、秘密鍵に基づいて第1のブロックチェーントランザクションに含まれる暗号文を解読して、ユーザの第2の識別子を復元する段階を含み得る。540で、方法は、監査ノードを介して、ブロックチェーン台帳に記憶されたユーザの第2のユーザ識別子を含む第2のブロックチェーントランザクションを識別する段階を含み得る。
いくつかの実施形態では、解読する段階は、秘密鍵に基づいて第1のブロックチェーントランザクション内のトランザクションの詳細を解読する段階および予め定められた監査基準に対してトランザクションの詳細を検証する段階をさらに含み得る。いくつかの実施形態では、検証する段階は、第1のユーザ識別子を有するブロックチェーン台帳に記憶された他のブロックチェーントランザクションがないことを証明する段階を含み得る。いくつかの実施形態では、検証する段階は、第1のブロックチェーントランザクションに含まれるユーザによってサブミットされたゼロ知識証明(ZKP)を検証する段階を含み得る。
いくつかの実施形態では、第1のユーザ識別子および第2のユーザ識別子はそれぞれ、ユーザの一意のユーザ識別子およびユーザの鍵に基づいて証明可能に生成され得る。いくつかの実施形態では、方法は、秘密鍵に基づいて第2のブロックチェーントランザクションに含まれる暗号文を解読して、第3のユーザ識別子を復元する段階をさらに含み得る。いくつかの実施形態では、方法は、監査ノードを介して、ブロックチェーン台帳に第3のユーザ識別子を有するブロックチェーントランザクションが記憶されていないことを決定する段階および決定に応答して監査プロセスを終了する段階をさらに含み得る。いくつかの実施形態では、第1のブロックチェーントランザクションおよび第2のブロックチェーントランザクションは、匿名署名で署名される。
図6Aは、例示的な実施形態による、様々な動作を実行するように構成される物理インフラストラクチャ610を含む例示的なシステム600を示す。図6Aを参照すると、物理インフラストラクチャ610は、モジュール612およびモジュール614を含む。モジュール614は、ブロックチェーン620およびスマートコントラクト630(ブロックチェーン620上に存在し得る)を含み、例示的な実施形態のいずれかに含まれる(モジュール612内の)動作ステップ608のいずれかを実行し得る。ステップ/動作608は、説明または描写された実施形態のうちの1つまたは複数を含み得て、1つまたは複数のスマートコントラクト630もしくはブロックチェーン620、またはその両方に書き込まれる出力または、それらから読み取られる書き込まれた情報を表し得る。物理インフラストラクチャ610、モジュール612、およびモジュール614は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリもしくは無線通信デバイス、またはその組み合わせを含み得る。さらに、モジュール612およびモジュール614は、同じモジュールであり得る。
図6Bは、例示的な実施形態による、様々な動作を実行するように構成される別の例示的なシステム640を示す。図6Bを参照すると、システム640は、モジュール612およびモジュール614を含む。モジュール614は、ブロックチェーン620およびスマートコントラクト630(ブロックチェーン620上に存在し得る)を含み、例示的な実施形態のいずれかに含まれる(モジュール612内の)動作ステップ608のいずれかを実行し得る。ステップ/動作608は、説明または描写された実施形態のうちの1つまたは複数を含み得て、1つまたは複数のスマートコントラクト630もしくはブロックチェーン620、またはその両方に書き込まれる出力または、それらから読み取られる書き込まれた情報を表し得る。物理インフラストラクチャ610、モジュール612、およびモジュール614は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリもしくは無線通信デバイス、またはその組み合わせを含み得る。さらに、モジュール612およびモジュール614は、同じモジュールであり得る。
図6Cは、例示的な実施形態による、コントラクト当事者間でスマートコントラクト構成を利用するように構成される例示的なシステムおよび、ブロックチェーン上でスマートコントラクト条項を実施するように構成される仲介サーバを示す。図6Cを参照すると、構成650は、1つまたは複数のユーザデバイス652もしくは656、またはその両方を明示的に識別するスマートコントラクト630によって駆動される、通信セッション、資産移転セッション、またはプロセスもしくは手順を表し得る。スマートコントラクト実行の実行、動作、および結果は、サーバ654によって管理され得る。スマートコントラクト630のコンテンツは、スマートコントラクトトランザクションの当事者であるエンティティ652および656のうちの1つまたは複数によるデジタル署名を必要とし得る。スマートコントラクト実行の結果は、ブロックチェーントランザクションとしてブロックチェーン620に書き込み得る。スマートコントラクト630は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリもしくは無線通信デバイス、またはその組み合わせ上に存在し得るブロックチェーン620上に存在する。
図6Dは、例示的な実施形態による、ブロックチェーンを含むシステム660を示す。図6Dの例を参照すると、アプリケーションプログラミングインターフェース(API)ゲートウェイ662は、ブロックチェーンロジック(例えば、スマートコントラクト630またはその他のチェーンコード)およびデータ(例えば、分散型台帳等)にアクセスするための共通インターフェースを提供する。この例では、APIゲートウェイ662は、1つまたは複数のエンティティ652および656をブロックチェーンピア(すなわち、サーバ654)に接続することによって、ブロックチェーン上でトランザクション(呼び出し、クエリ等)を実行するための共通インターフェースである。ここで、サーバ654は、クライアント652および656がワールドステートに関するデータをクエリし、スマートコントラクト630およびエンドースメントポリシに応じて、エンドーシングピアがスマートコントラクト630を実行するブロックチェーンネットワーク内にトランザクションをサブミットできるようにする、ワールドステートおよび分散型台帳のコピーを保持するブロックチェーンネットワークピア構成要素である。
上記の実施形態は、ハードウェア内、プロセッサによって実行されるコンピュータプログラム内、ファームウェア内、または上記の組み合わせ内で実装され得る。コンピュータプログラムは、記憶媒体等のコンピュータ可読媒体上で具現化され得る。例えば、コンピュータプログラムは、ランダムアクセスメモリ(「RAM」)、フラッシュメモリ、読み取り専用メモリ(「ROM」)、消去可能プログラマブル読み取り専用メモリ(「EPROM」)、電気的消去可能プログラマブル読み取り専用メモリ(「EEPROM」)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読み取り専用メモリ(「CD-ROM」)、または当技術分野で知られている任意の他の形態の記憶媒体内に存在し得る。
例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込みし得るように、プロセッサに結合され得る。代替として、記憶媒体は、プロセッサに一体化され得る。プロセッサおよび記憶媒体は、特定用途向け集積回路(「ASIC」)内に存在し得る。代替として、プロセッサおよび記憶媒体は、個別部品として存在し得る。
図7Aは、例示的な実施形態による、分散型台帳720に追加される新しいブロックのプロセス700を示し、図7Bは、例示的な実施形態による、ブロックチェーンの新しいデータブロック構造730のコンテンツを示す。図7Aを参照すると、クライアント(図示せず)は、トランザクションをブロックチェーンノード711、712もしくは713、またはその組み合わせにサブミットし得るクライアントは、ブロックチェーン720でアクティビティを実行するために任意のソースから受信した命令であり得る。例として、クライアントは、ブロックチェーンのトランザクションを提案するデバイス、人、またはエンティティ等のリクエスタに代わって動作するアプリケーションであり得る。複数のブロックチェーンピア(例えば、ブロックチェーンノード711、712、および713)は、ブロックチェーンネットワークの状態および分散型台帳720のコピーを維持し得る。ブロックチェーンネットワークには、クライアントによって提案されたトランザクションをシミュレートおよびエンドースするエンドーシングピアおよび、エンドースメントを証明し、トランザクションを検証し、トランザクションを分散型台帳720にコミットするコミッティングピアを含む、様々なタイプのブロックチェーンノード/ピアが存在し得る。この例では、ブロックチェーンノード711、712、および713は、エンドーサノード、コミッタノード、またはその両方の役割を果たし得る。
分散型台帳720は、不変の順序付けられた記録をブロックに記憶するブロックチェーンおよびブロックチェーン722の現在の状態を維持する状態データベース724(現在のワールドステート)を含む。チャネルごとに1つの分散型台帳720が存在し得、各ピアは、メンバであるチャネルごとの分散型台帳720のそれ自体のコピーを維持する。ブロックチェーン722は、各ブロックが一連のN個のトランザクションを含むハッシュリンクされたブロックとして構造化されたトランザクションログである。ブロックは、図7Bに示すような様々な構成要素を含み得る。ブロックのリンク(図7Aの矢印で示されている)は、現在のブロックのブロックヘッダ内に前のブロックのヘッダのハッシュを追加することによって生成され得る。このように、ブロックチェーン722上のすべてのトランザクションが順序付けられ、まとめて暗号的にリンクされ、ハッシュリンクを壊すことなくブロックチェーンデータの改ざんが防止される。さらに、リンクがあるため、ブロックチェーン722の最新のブロックは、その前に発生したすべてのトランザクションを表す。ブロックチェーン722は、追加のみのブロックチェーンワークロードをサポートするピアファイルシステム(ローカルまたは接続ストレージ)に記憶され得る。
ブロックチェーン722および分散型台帳722の現在の状態は、状態データベース724に記憶され得る。ここで、現在の状態データは、ブロックチェーン722のチェーントランザクションログにこれまで含まれていたすべての鍵の最新の値を表す。チェーンコード呼び出しは、状態データベース724の現在の状態に対してトランザクションを実行する。これらのチェーンコード間のやり取りを極めて効率的にするために、すべての鍵の最新の値が状態データベース724に記憶される。状態データベース724は、ブロックチェーン722のトランザクションログ内へのインデックス付きビューを含み得、したがって、いつでもチェーンから再生成できる。状態データベース724は、トランザクションが受け入れられる前に、ピア起動時に自動的に復元(または必要に応じて生成)され得る。
エンドーシングノードは、クライアントからトランザクションを受け取り、シミュレート結果に基づいてトランザクションをエンドースする。エンドーシングノードは、トランザクション提案をシミュレートするスマートコントラクトを保持する。エンドーシングノードがトランザクションをエンドースすると、エンドーシングノードは、シミュレートされたトランザクションのエンドースメントを示すエンドーシングノードからクライアントアプリケーションへの署名付き応答であるトランザクションエンドースメントを作成する。トランザクションをエンドースする方法は、チェーンコード内で指定され得るエンドースメントポリシに依存する。エンドースメントポリシの例としては、「エンドーシングピアの過半数がトランザクションをエンドースしなければならない」というものがある。異なるチャネルには、異なるエンドースメントポリシがあり得る。エンドースされたトランザクションは、クライアントアプリケーションによって順序付けサービス710に転送される。
順序付けサービス710は、エンドースされたトランザクションを受け入れ、それらをブロックに順序付けし、ブロックをコミッティングピアに配信する。例えば、順序付けサービス710は、トランザクションの閾値に達したとき、タイマがタイムアウトしたとき、または別の状態になったときに、新しいブロックを開始し得る。図7Aの例では、ブロックチェーンノード712は、ブロックチェーン720上に保存するための新しいデータの新しいデータブロック730を受信したコミッティングピアである。ブロックチェーンの第1のブロックは、ブロックチェーン、そのメンバ、その中に記憶されているデータ等に関する情報を含むジェネシスブロックと呼ばれ得る。
順序付けサービス710は、オーダラのクラスタから構成され得る。順序付けサービス710は、トランザクション、スマートコントラクトを処理せず、共有台帳を維持しない。むしろ、順序付けサービス710は、エンドースされたトランザクションを受け入れ、それらのトランザクションが分散型台帳720にコミットされる順序を指定し得る。ブロックチェーンネットワークのアーキテクチャは、「順序付け」の特定の実装(例えば、Solo、Kafka、BFT等)がプラグ接続可能な構成要素になるように設計され得る。
トランザクションは、一貫性のある順序で分散型台帳720に書き込まれる。トランザクションの順序は、状態データベース724への更新がネットワークにコミットされたときに有効であることを保証するために確立される。暗号パズルの解決またはマイニングを通じて順序付けが行われる暗号通貨ブロックチェーンシステム(例えば、ビットコイン等)とは異なり、この例では、分散型台帳720の当事者は、そのネットワークに最も適した順序付け機構を選択し得る。
順序付けサービス710が新しいデータブロック730を初期化すると、新しいデータブロック730はコミッティングピア(例えば、ブロックチェーンノード711、712、および713)にブロードキャストされ得る。これに応答して、コミットしている各ピアは、読み取りセットおよび書き込みセットが状態データベース724内の現在のワールドステートと依然として一致していることをチェックすることによって、新しいデータブロック730内のトランザクションを検証する。具体的には、コミッティングピアは、エンドーサがトランザクションをシミュレートしたときに存在した読み取りデータが、状態データベース724内の現在のワールドステートと同一であるかどうかを判定できる。コミッティングピアがトランザクションを検証すると、トランザクションは分散型台帳720上のブロックチェーン722に書き込まれ、状態データベース724は読み書きセットからの書き込みデータで更新される。トランザクションが失敗した場合、すなわち、コミッティングピアが、読み書きセットが状態データベース724内の現在のワールドステートと一致しないことを発見した場合、ブロックに順序付けられたトランザクションは依然としてそのブロックに含まれるが、無効としてマークされ、状態データベース724は更新されない。
図7Bを参照すると、分散型台帳720のブロックチェーン722に記憶される新しいデータブロック730(データブロックとも呼ばれる)は、ブロックヘッダ740、ブロックデータ750(ブロックデータセクション)、およびブロックメタデータ760等の複数のデータセグメントを含み得る。図7Bに示す、新しいデータブロック730およびそのコンテンツ等、図示される様々なブロックおよびそれらのコンテンツは、単なる例であり、例示的な実施形態の範囲を限定することを意味しないことを理解されたい。従来のブロックでは、データセクションは、ブロックデータ750内にN個のトランザクション(例えば、1個、10個、100個、500個、1000個、2000個、3000個等)のトランザクション情報を記憶し得る。
新しいデータブロック730はまた、ブロックヘッダ740内に(例えば、図7Aのブロックチェーン722上の)前のブロックへのリンクを含み得る。具体的には、ブロックヘッダ740は、前のブロックのヘッダのハッシュを含み得る。ブロックヘッダ740はまた、一意のブロック番号、新しいデータブロック730のブロックデータ750のハッシュ、および同様のものを含み得る。新しいデータブロック730のブロック番号は一意であり、ゼロから始まる増分/順番等、様々な順序付けで割り当て得る。
様々な実施形態によれば、ブロックデータ750はまた、クライアントと監査ノードとの間の共有秘密鍵でのみ解読される暗号化されたトランザクションコンテンツ、その中に様々な証明を含むZKP、解読すると別のユーザ識別子が明らかになる暗号文、および同様のもの等、本明細書に記載のブロックチェーントランザクションに関連付けられた属性752を記憶し得る。属性752は、本明細書に記載または描写されるステップ、特徴、プロセスもしくはアクション、またはその組み合わせのうちの1つまたは複数を含む。したがって、属性752は、分散型台帳720上のブロックの不変ログに記憶できる。属性752をブロックチェーンに記憶する利点のいくつかは、本明細書で開示および描写される様々な実施形態に反映されている。図7Bでは、属性752はブロックデータ750に示されているが、ブロックヘッダ740またはブロックメタデータ760に位置し得る。
ブロックメタデータ760は、メタデータの複数のフィールドを(例えば、バイト配列等として)記憶し得る。メタデータフィールドは、ブロック作成時の署名、最後の構成ブロックへの参照、ブロック内の有効なトランザクションおよび無効なトランザクションを識別するトランザクションフィルタ、ブロックを順序付けする順序付けサービスの存続する最後のオフセット、および同様のものを含み得る。署名、最後の構成ブロック、およびオーダラメタデータは、順序付けサービス710によって追加され得る。一方、ブロックのコミッタ(ブロックチェーンノード712等)は、エンドースメントポリシ、読み取りセット/書き込みセットの証明、および同様のものに基づいて、有効性/無効性情報を追加し得る。トランザクションフィルタは、ブロックデータ750に含まれるトランザクションの数に等しいサイズのバイト配列および、トランザクションが有効/無効を識別する検証コードとを含み得る。
図7Cは、本明細書に記載の実施形態による、デジタルコンテンツのブロックチェーン770の実施形態を示す。デジタルコンテンツは、1つまたは複数のファイルおよび関連情報を含み得る。ファイルには、メディア、画像、ビデオ、オーディオ、テキスト、リンク、グラフィック、アニメーション、ウェブページ、ドキュメント、またはその他の形態のデジタルコンテンツが含まれ得る。ブロックチェーンの不変で追加のみの態様は、デジタルコンテンツの整合性、有効性、および真正性を保護するためのセーフガードとして機能し、許容ルールが適用される法的手続きまたは、証拠が考慮されるか、もしくは、デジタル情報の提示および使用が、その他の点で関心のある他の設定で適切に使用される。この場合、デジタルコンテンツはデジタル証拠と呼ばれ得る。
ブロックチェーンは、様々な方法で形成され得る。1つの実施形態では、デジタルコンテンツは、ブロックチェーン自体に含まれ、ブロックチェーン自体からアクセスし得る。例えば、ブロックチェーンの各ブロックは、関連付けられたデジタルコンテンツに沿って参照情報(例えば、ヘッダ、値等)のハッシュ値を記憶し得る。次いで、ハッシュ値および関連付けられたデジタルコンテンツを一緒に暗号化し得る。したがって、各ブロックのデジタルコンテンツは、ブロックチェーン内の各ブロックを解読することによってアクセスし得、各ブロックのハッシュ値は、前のブロックを参照するための基礎として使用し得る。これは次のように示され得る。
ブロック1 ブロック2・・・ブロックN
ハッシュ値1 ハッシュ値2・・・ハッシュ値N
デジタルコンテンツ1 デジタルコンテンツ2・・・デジタルコンテンツN
1つの実施形態では、デジタルコンテンツはブロックチェーンに含まれ得ない。例えば、ブロックチェーンは、デジタルコンテンツなしに、各ブロックのコンテンツの暗号化されたハッシュを記憶し得る。デジタルコンテンツは、元のファイルのハッシュ値と関連付けて、別の記憶領域またはメモリアドレスに記憶されてもよい。他のストレージ領域は、ブロックチェーンを記憶するために使用される同じストレージデバイスであり得るか、別のストレージ領域であり得るか、さらに別のリレーショナルデータベースでもあり得る。各ブロックのデジタルコンテンツは、関心のあるブロックのハッシュ値を取得またはクエリし、次いで、実際のデジタルコンテンツに対応して記憶されている記憶領域内で値を有するブロックを検索することによって、参照またはアクセスできる。この動作は、例えば、データベースゲートキーパによって実行され得る。これは次のように示され得る。
ブロックチェーン 記憶領域
ブロック1 ハッシュ値 ブロック1 ハッシュ値・・・コンテンツ
・ ・ ・
ブロックN ハッシュ値 ブロックN ハッシュ値・・・コンテンツ
図7Cの例示的な実施形態では、ブロックチェーン770は、順序付けられたシーケンスで暗号的にリンクされたいくつかのブロック778、778、…778を含み、ここでN≧1である。ブロック778、778、…778をリンクするために使用される暗号化は、いくつかの鍵付きまたは鍵なしハッシュ関数のいずれかであり得る。1つの実施形態では、ブロック778、778、…778は、ブロック内の情報に基づく入力からnビットの英数字出力(nは256または別の数)を生成するハッシュ関数の対象となる。そのようなハッシュ関数の例には、限定されないが、SHAタイプ(SHAはSecured Hash Algorithmの略)アルゴリズム、マークルダンガードアルゴリズム、HAIFAアルゴリズム、マークルツリーアルゴリズム、ノンスベースアルゴリズム、および非衝突耐性PRFアルゴリズムが含まれる。別の実施形態では、ブロック778、778、…、778は、ハッシュ関数とは異なる関数によって暗号的にリンクされ得る。例示の目的で、以下の説明は、ハッシュ関数、例えば、SHA-2を参照して行われる。
ブロックチェーンの各ブロック778、778、…、778には、ヘッダ、ファイルのバージョン、および値が含まれる。ブロックチェーンでハッシュ化された結果として、ヘッダおよび値はブロックごとに異なる。1つの実施形態では、値はヘッダに含まれ得る。以下でより詳細に説明するように、ファイルのバージョンは、元のファイルまたは元のファイルの異なるバージョンであり得る。
ブロックチェーンの第1のブロック778はジェネシスブロックと呼ばれ、ヘッダ772、元のファイル774、および初期値776を含む。ジェネシスブロックに使用されるハッシュスキーム、および実際には後続のすべてのブロックで使用されるハッシュスキームは異なり得る。例えば、第1のブロック778内のすべての情報をまとめて一度にハッシュし得るか、または第1のブロック778内の情報のそれぞれまたは一部を個別にハッシュし得、次いで、個別にハッシュされた部分のハッシュを実行し得る。
ヘッダ772は、例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易度、コンセンサスプロトコル、期間、メディア形式、ソース、説明キーワード及び/または、元のファイル774及び/またはブロックチェーンに関連付けられたその他の情報を含め得る、1つまたは複数の初期パラメータを含み得る。ヘッダ772は、自動的に(例えば、ブロックチェーンネットワーク管理ソフトウェアによって)、またはブロックチェーン参加者によって手動で生成され得る。ブロックチェーン内の他のブロック778~778内のヘッダとは異なり、ジェネシスブロック内のヘッダ772は、単に前のブロックがないため、前のブロックを参照しない。
ジェネシスブロック内の元のファイル774は、例えば、ブロックチェーン内に含める前に処理を行って、または処理せずにデバイスによって捕捉されたデータであり得る。元のファイル774は、デバイス、メディアソース、またはノードからシステムのインターフェースを通して受信される。元のファイル774は、例えば、手動または自動のいずれかで、ユーザ、デバイスもしくはシステムプロセッサ、またはその組み合わせによって生成され得る、メタデータに関連付けられている。メタデータは、元のファイル774に関連付けられ、第1のブロック778に含められ得る。
ジェネシスブロック内の値776は、元のファイル774の1つまたは複数の一意の属性に基づいて生成された初期値である。1つの実施形態では、1つまたは複数の一意の属性は、元のファイル774のハッシュ値、元のファイル774のメタデータ、およびファイルに関連付けられた他の情報を含み得る。1つの実装では、初期値776は、次の一意の属性に基づき得る。
1)元のファイルのSHA-2の計算されたハッシュ値
2)送信元デバイスID
3)元のファイルの開始タイムスタンプ
4)元のファイルの初期のストレージの場所
5)元のファイルおよび関連付けられたメタデータを現在制御するソフトウェアのブロックチェーンネットワークメンバID
ブロックチェーン内の他のブロック778~778もヘッダ、ファイル、および値を有する。しかし、第1のブロック772とは異なり、他のブロックのヘッダ772~772のそれぞれは、直前のブロックのハッシュ値を含む。直前のブロックのハッシュ値は、前のブロックのヘッダのハッシュだけであり得るか、または前のブロック全体のハッシュ値であり得る。残りの各ブロックに前のブロックのハッシュ値を含めることで、矢印780で示すように、N番目のブロックからジェネシスブロック(および関連付けられた元のファイル)まで遡って、ブロックごとにトレースを実行して、監査可能で不変の管理の連鎖を確立できる。
他のブロック内のヘッダ772~772のそれぞれは、他の情報、例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易度、コンセンサスプロトコル及び/または、対応ファイル及び/または一般的なブロックチェーンに関連付けられたその他のパラメータまたは情報を含み得る。
他のブロック内のファイル774~774は、例えば、実行される処理のタイプに応じて、元のファイルと同一であり得るか、またはジェネシスブロック内の元のファイルの修正されたバージョンであり得る。実行される処理のタイプは、ブロックごとに異なり得る。処理は、例えば、ファイルの情報の編集または、そうでなければ、ファイルのコンテンツの変更、ファイルからの情報の削除、またはファイルへの情報の追加または添付等、前のブロック内のファイルの任意の修正を含み得る。
追加または代替として、処理には、前のブロックからファイルを単にコピーすること、ファイルのストレージの場所を変更すること、1つまたは複数の前のブロックからファイルを分析すること、あるストレージまたはメモリの場所から別の場所にファイルを移動すること、または、ブロックチェーンもしくは関連付けられたメタデータ、またはその両方のファイルに関連するアクションを実行することを含み得る。ファイルの分析を伴う処理には、例えば、ファイルに関連付けられた様々な分析、統計、またはその他の情報を追加する、含めるか、そうでなければ、関連付けることが含まれ得る。
他のブロック内の他のブロック776~776のそれぞれの値は、一意の値であり、実行された処理の結果としてすべて異なる。例えば、いずれか1つのブロック内の値は、前のブロックの値の更新バージョンに対応する。更新は、値が割り当てられたブロックのハッシュに反映される。したがって、ブロックの値は、どの処理がブロックで実行されたかを示す指標を提供し、ブロックチェーンを通して元のファイルまで遡ってトレースすることも可能にする。この追跡により、ブロックチェーン全体でのファイルの管理の連鎖が確認される。
例えば、ファイルに表示されている人のアイデンティティを保護するために、前のブロックのファイルの一部が編集、ブロックアウト、またはピクセル化されている場合を検討する。この場合、編集されたファイルを含むブロックには、例えば、編集の実行方法、編集の実行者、編集が行われたタイムスタンプ等、編集されたファイルに関連付けられたメタデータが含まれる。メタデータは、値を形成するためにハッシュ化され得る。ブロックのメタデータは、前のブロック内の値を形成するためにハッシュされた情報とは異なるため、値は互いに異なり、解読すると復元され得る。
1つの実施形態では、次のいずれか1つまたは複数が行われたときに、前のブロックの値を更新して(例えば、新しいハッシュ値を計算して)、現在のブロックの値を形成し得る。新しいハッシュ値は、この例示的な実施形態では、以下に示す情報の全部または一部をハッシュすることによって計算され得る。
a)ファイルが何らかの方法で処理された場合の新しいSHA-2計算ハッシュ値(例えば、ファイルが編集、コピー、改ざん、アクセスされたか、またはその他の何らかのアクションが実行された場合)
b)ファイルの新しいストレージの場所
c)ファイルに関連付けられた識別された新しいメタデータ
d)あるブロックチェーン参加者から別のブロックチェーン参加者へのファイルのアクセスまたは制御の転送
図7Dは、1つの実施形態による、ブロックチェーン790内のブロックの構造を表し得るブロックの実施形態を示す。ブロックBlockは、ヘッダ772、ファイル774、および値776を含む。
ヘッダ772は、前のブロックBlocki-1のハッシュ値および、例えば、本明細書で論じる情報のタイプ(例えば、参照、特性、パラメータ等を含むヘッダ情報)のいずれかであり得る、追加の参照情報を含む。もちろん、ジェネシスブロックを除いて、すべてのブロックは前のブロックのハッシュを参照する。前のブロックのハッシュ値は、前のブロック内のヘッダのハッシュだけであり得るか、またはファイルおよびメタデータを含む前のブロック内の情報の全部または一部のハッシュであり得る。
ファイル774は、データ1、データ2、…、データNのように順に複数のデータを含む。データは、データに関連付けられたコンテンツもしくは特性、またはその両方を説明するメタデータのメタデータ1、メタデータ2、…、メタデータNでタグ付けされる。例えば、各データのメタデータは、例えば、以下で論じる実施形態に関連して説明するように、データのタイムスタンプを示す情報、データを処理するための情報、人を示すキーワードまたはデータ内で示されるその他のコンテンツ、もしくはファイル全体の有効性およびコンテンツ、またはその組み合わせ、特にデジタル証拠の使用を確立するのに役立ち得る他の特徴を示す情報を含み得る。メタデータに加えて、各データは、改ざん、ファイル内のギャップ、およびファイルを通した順次参照を防止するために、前のデータへの参照REF、REF、…、REFでタグ付けされ得る。
メタデータがデータに割り当てられると(例えば、スマートコントラクトを通して)、メタデータはハッシュを変更せずに改ざんすることはできず、これにより、無効化を容易に識別できる。したがって、メタデータは、ブロックチェーンの参加者が使用するためにアクセスし得る情報のデータログを作成する。
値776は、前述の情報のいずれかのタイプに基づいて計算されたハッシュ値またはその他の値である。例えば、任意の所与のブロックBlockの場合、そのブロックの値は、そのブロックに対して実行された処理、例えば、新しいハッシュ値、新しいストレージの場所、関連付けられたファイルの新しいメタデータ、制御またはアクセス、識別子、または追加されるその他のアクションまたは情報の転送を反映するために更新され得る。各ブロック内の値は、ファイルおよびヘッダのデータのメタデータとは別個のものとして示されているが、別の実施形態では、値の一部または全体がこのメタデータに基づき得る。
ブロックチェーン770が形成されると、任意の時点で、ブロック全体の値のトランザクション履歴についてブロックチェーンにクエリすることによって、ファイルの不変の管理の連鎖を取得し得る。このクエリ、または追跡手順は、含まれている最新のブロック(例えば、最後の(N番目)のブロック)の値を解読することから始まり、次いで、ジェネシスブロックに到達して元のファイルが復元されるまで、他のブロックの値を解読し続け得る。解読には、各ブロックでのヘッダおよびファイル、ならびに関連付けられたメタデータの解読することも含まれ得る。
解読は、各ブロックで行われた暗号化のタイプに基づいて実行される。これには、秘密鍵、公開鍵、または公開鍵と秘密鍵の対の使用が含まれ得る。例えば、非対称暗号化が使用される場合、ブロックチェーン参加者またはネットワーク内のプロセッサは、予め定められたアルゴリズムを使用して公開鍵と秘密鍵の対を生成し得る。公開鍵および秘密鍵は、何らかの数学的関係を通じて互いに関連付けられている。公開鍵は、他のユーザからメッセージを受信するためのアドレス、例えば、IPアドレスまたはホームアドレスとして機能するように、公開して分散され得る。秘密鍵は秘密にされ、他のブロックチェーン参加者に送信されるメッセージにデジタル署名するために使用される。署名は、受信者は送信者の公開鍵を使用して証明できるように、メッセージに含まれる。このように、受信者は、送信者だけがこのメッセージを送信できたことを確認できる。
鍵対の生成は、ブロックチェーンでアカウントを作成することに類似し得るが、実際にどこにも登録する必要はない。また、ブロックチェーン上で実行されるすべてのトランザクションは、秘密鍵を使用して送信者によってデジタル署名される。この署名により、(スマートコントラクトによって決定された許可の範囲内にある場合)アカウントの所有者のみがブロックチェーンのファイルを追跡および処理できることが保証される。
図8Aおよび図8Bは、本明細書に組み込まれて使用され得るブロックチェーンのユースケースの追加の例を示す。具体的には、図8Aは、機械学習(人工知能)データを記憶するブロックチェーン810の例800を示す。機械学習は、新しいデータを正確に予測するための予測モデルを構築するために、膨大な量の履歴データ(またはトレーニングデータ)に依存している。機械学習ソフトウェア(例えば、ニューラルネットワーク等)は、多くの場合、何百万ものレコードを選り分けて、直感的でないパターンを発見できる。
図8Aの例では、ホストプラットフォーム820は、資産830の予測監視のための機械学習モデルを構築しデプロイする。ここで、ホストプラットフォーム820は、クラウドプラットフォーム、産業用サーバ、ウェブサーバ、パーソナルコンピュータ、ユーザデバイス、および同様のものであり得る。資産830は、航空機、機関車、タービン、医療機械および機器、石油機器およびガス機器、ボート、船舶、車両、および同様のもの等の任意のタイプの資産(例えば、機械または機器等)とすることができる。別の例として、資産830は、株式、通貨、デジタルコイン、保険、または同様のもの等の無形資産であり得る。
ブロックチェーン810を使用して、機械学習モデルのトレーニングプロセス802および、トレーニングされた機械学習モデルに基づく予測プロセス804の両方を大幅に向上させることができる。例えば、802では、データサイエンティスト/エンジニアまたは他のユーザがデータを収集することを要求するのではなく、資産830自体によって(または図示されていない仲介者を通じて)履歴データをブロックチェーン810に記憶し得る。これにより、予測モデルのトレーニングを実行するときにホストプラットフォーム820が必要とする収集時間を大幅に短縮できる。例えば、スマートコントラクトを使用すると、データを、その元の場所からブロックチェーン810に直接かつ確実に転送できる。収集されたデータのセキュリティおよび所有権を確保するためにブロックチェーン810を使用することにより、スマートコントラクトは、機械学習モデルを構築するためにデータを使用する個人に資産からデータを直接送信し得る。これにより、資産830の間でデータを共有することが可能になる。
収集されたデータは、コンセンサス機構に基づいてブロックチェーン810に記憶され得る。コンセンサス機構は、記録されているデータが証明され、正確であることを保証するために(許可されたノード)を取り込む。記録されたデータにはタイムスタンプが付けられ、暗号で署名され、不変である。したがって、監査可能で、透過的で、安全である。ブロックチェーンに直接書き込むIoTデバイスを追加すると、特定のケース(すなわち、サプライチェーン、ヘルスケア、ロジスティクス等)で、記録されるデータの頻度および精度の両方を向上させることができる。
さらに、収集されたデータでの機械学習モデルのトレーニングには、ホストプラットフォーム820による改良およびテストのラウンドが必要になり得る。各ラウンドは、追加のデータまたは、機械学習モデルの知識を拡大するのに役立つと以前は考えられていなかったデータに基づき得る。802では、ホストプラットフォーム820によって、様々なトレーニングおよびテストステップ(およびそれに関連付けられたデータ)は、ブロックチェーン810に記憶され得る。機械学習モデルの各改良(例えば、変数、重み等の変更)は、ブロックチェーン810に記憶され得る。これにより、モデルのトレーニング方法およびモデルのトレーニングに使用されたデータの証明可能な証拠が提供される。さらに、ホストプラットフォーム820が最終的にトレーニングされたモデルを実現したとき、その結果として得られるモデルはブロックチェーン810に記憶され得る。
モデルがトレーニングされた後、モデルは最終的にトレーニングされた機械学習モデルの実行に基づいて予測/決定を行うことができるライブ環境にデプロイされ得る。例えば、804では、機械学習モデルは、航空機、風力タービン、医療機械、および同様のもの等の資産の状態基準保全(CBM)に使用され得る。この例では、資産830からフィードバックされたデータは、機械学習モデルに入力され、失敗イベント、エラーコード、および同様のもの等のイベント予測を行うために使用され得る。ホストプラットフォーム820での機械学習モデルの実行によってなされた決定は、ブロックチェーン810に記憶されて、監査可能/証明可能な証拠を提供し得る。非限定的な一例として、機械学習モデルは、資産830の一部に対する将来の故障/失敗を予測し、部品を交換するためのアラートまたは通知を作成し得る。この決定の基となるデータは、ブロックチェーン810上のホストプラットフォーム820によって記憶され得る。1つの実施形態では、本明細書に記載され、もしくは描写され、またはその両方である、特徴もしくはアクションまたはその両方は、ブロックチェーン810上またはブロックチェーン810に関して行うことができる。
ブロックチェーンの新しいトランザクションを新しいブロック内にまとめて、既存のハッシュ値に追加できる。次いで、これが暗号化されて、新しいブロックの新しいハッシュが作成される。これは、トランザクションが暗号化されたとき等に、トランザクションの次のリストに追加される。結果は、すべての前のブロックのハッシュ値をそれぞれ含むブロックのチェーンである。これらのブロックを記憶するコンピュータは、ハッシュ値を定期的に比較して、すべてが一致していることを確認する。一致しないコンピュータは、問題の原因となっているレコードを破棄する。この手法は、ブロックチェーンの不正防止を保証するのに適しているが、完全ではない。
この制度の抜け穴を悪用する1つの方法は、不正なユーザが、自分が有利になるようにトランザクションのリストを変更して、ハッシュを変更しないようにする方法である。これは総当たりによって、言い換えると、レコードを変更し、結果を暗号化し、ハッシュ値が同じかどうかを確認することによって実行できる。一致しない場合は、一致するハッシュが見つかるまで何度も何度も試行する。ブロックチェーンのセキュリティは、通常のコンピュータがこの種の総当たり攻撃を行うことができるのは、宇宙の年齢等、完全に非現実的な時間スケールでしか実行できないという考えに基づいている。対照的に、量子コンピュータははるかに高速(数千倍の速さ)であり、したがって、はるかに大きな脅威になる。
図8Bは、量子コンピューティング攻撃から保護するために量子鍵配布(QKD)を実装する量子安全ブロックチェーン852の例850を示す。この例では、ブロックチェーンユーザがQKDを使用して互いのアイデンティティを証明できる。これは、盗聴者が破壊せずにコピーすることはできない、光子等の量子粒子を使用して情報を送信する。このように、ブロックチェーンを通した送信者および受信者は、互いのアイデンティティを確認できる。
図8Bの例では、854、856、858、および860の4人のユーザが存在する。ユーザの対のそれぞれは、自分達の間で秘密鍵862(すなわち、QKD)を共有し得る。この例では4つのノードがあるので、6対のノードが存在し、したがって、QKDAB、QKDAC、QKDAD、QKDBC、QKDBD、およびQKDCDを含む6つの異なる秘密鍵862が使用される。各対は、盗聴者が破壊せずにコピーすることはできない、光子等の量子粒子を使用して情報を送信することによってQKDを作成できる。このように、ユーザの対は互いのアイデンティティを確認できる。
ブロックチェーン852の動作は、(i)トランザクションの作成、および(ii)新しいトランザクションを集約するブロックの構築の2つの手順に基づく。新しいトランザクションは、従来のブロックチェーンネットワークと同様に作成され得る。各トランザクションには、送信者、受信者、作成時間、転送される金額(または値)、送信者が操作のための資金を持っていることを正当化する参照トランザクションのリスト、および同様のものに関する情報が含まれ得る。次いで、このトランザクションレコードは他のすべてのノードに送信され、未確認トランザクションのプールに入れられる。ここで、2人の当事者(すなわち、854~860の中からのユーザの対)が、共有秘密鍵862(QKD)を提供することによってトランザクションを認証する。この量子署名はすべてのトランザクションに添付できるため、改ざんは極めて困難になる。各ノードは、ブロックチェーン852のローカルコピーに関してエントリをチェックし、各トランザクションが十分な資金を有していることを証明する。ただし、トランザクションはまだ確認されていない。
ブロックに対して従来のマイニングプロセスを実行するのではなく、ブロードキャストプロトコルを使用して非集中方式でブロックを作成し得る。予め定められた期間(例えば、秒、分、時等)で、ネットワークはブロードキャストプロトコルを未確認トランザクションに適用し、それによって、トランザクションの正しいバージョンに関するビザンチン合意(コンセンサス)を達成し得る。例えば、各ノードはプライベート値(その特定のノードのトランザクションデータ)を所有し得る。第1のラウンドでは、ノードは自分のプライベート値を互いに送信する。後続のラウンドでは、ノードは前のラウンドで他のノードから受け取った情報の通信を行う。ここでは、正直なノードが新しいブロック内に完全なトランザクションセットを作成できる。この新しいブロックは、ブロックチェーン852に追加できる。1つの実施形態では、本明細書に記載され、もしくは描写され、またはその両方である、特徴もしくはアクション、またはその両方は、ブロックチェーン852上またはブロックチェーン852に関して行うことができる。
図9は、本明細書に記載され、もしくは描写され、またはその両方である例示的な実施形態のうちの1つまたは複数をサポートする例示的なシステム900を示す。システム900は、多数の他の汎用または専用コンピューティングシステム環境または構成で動作可能である、コンピュータシステム/サーバ902を備える。コンピュータシステム/サーバ902での使用に適し得る周知のコンピューティングシステム、環境もしくは構成、またはその組み合わせの例は、限定されないが、パーソナルコンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、および上記のシステムまたはデバイス、および同様のもののいずれかを含む分散型クラウドコンピューティング環境を含む。
コンピュータシステム/サーバ902は、コンピュータシステムによって実行されるプログラムモジュール等のコンピュータシステム実行可能命令の一般的な文脈で説明され得る。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、構成要素、ロジック、データ構造等を含み得る。コンピュータシステム/サーバ902は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散型クラウドコンピューティング環境で実施し得る。分散型クラウドコンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含むローカルおよびリモートの両方のコンピュータシステムの記憶媒体に配置され得る。
図9に示すように、クラウドコンピューティングノード900内のコンピュータシステム/サーバ902は、汎用コンピューティングデバイスの形態で示される。コンピュータシステム/サーバ902の構成要素は、限定されないが、1つまたは複数のプロセッサまたは処理ユニット904、システムメモリ906、およびシステムメモリ906を含む様々なシステム構成要素をプロセッサ904に結合するバスを含み得る。
バスは、メモリバスまたはメモリコントローラ、ペリフェラルバス、アクセラレーテッドグラフィックスポート、および様々なバスアーキテクチャのいずれかを使用するプロセッサまたはローカルバスを含む、いくつかのタイプのバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、およびペリフェラル構成要素インターコネクト(PCI)バスが含まれる。
コンピュータシステム/サーバ902は、典型的には、様々なコンピュータシステム可読媒体を含む。そのような媒体は、コンピュータシステム/サーバ902によってアクセス可能な任意の利用可能な媒体であり得、揮発性および不揮発性媒体、取り外し可能および取り外し不可能な媒体の両方を含む。システムメモリ906は、1つの実施形態では、他の図のフロー図を実装する。システムメモリ906は、ランダムアクセスメモリ(RAM)910もしくはキャッシュメモリ912、またはその両方等の揮発性メモリの形態のコンピュータシステム可読媒体を含むことができる。コンピュータシステム/サーバ902は、他の取り外し可能/取り外し不可能、揮発性/不揮発性コンピュータシステム記憶媒体をさらに含み得る。単なる例として、ストレージシステム914は、取り外し不可能な不揮発性磁気媒体(図示せず、通常「ハードドライブ」と呼ばれる)との間の読み取りおよび書き込みのために提供できる。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピディスク」)との間の読み取りおよび書き込み用の磁気ディスクドライブ、およびCD-ROM、DVD-ROMまたは他の光媒体等の取り外し可能な不揮発性光ディスクとの間の読み取りまたは書き込み用の光ディスクドライブを提供できる。そのような場合、それぞれを1つまたは複数のデータメディアインターフェースによってバスに接続できる。以下でさらに図示および説明するように、メモリ906は、アプリケーションの様々な実施形態の機能を実行するように構成されるプログラムモジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
プログラムモジュール918のセット(少なくとも1つ)を有するプログラム/ユーティリティ916は、限定ではなく例として、オペレーティングシステム、1つまたは複数のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータと同様に、メモリ906に記憶できる。オペレーティングシステム、1つまたは複数のアプリケーションプログラム、他のプログラムモジュールのそれぞれ、およびプログラムデータまたはそれらのいくつかの組み合わせは、ネットワーキング環境の実装を含み得る。プログラムモジュール918は、一般に、本明細書に記載されるようにアプリケーションの様々な実施形態の機能もしくは方法論、またはその両方を実行する。
当業者によって理解されるように、本出願の態様は、システム、方法、またはコンピュータプログラム製品として具現化され得る。したがって、本出願の態様は、完全にハードウェアの実施形態、完全にソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)の実施形態または、本明細書では、すべて、一般に「回路」、「モジュール」、または「システム」と呼ばれ得るソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態を取り得る。さらに、本出願の態様は、コンピュータ可読プログラムコードがその中に具現化された1つまたは複数のコンピュータ可読媒体で具現化されたコンピュータプログラム製品の形態を取り得る。
コンピュータシステム/サーバ902はまた、キーボード、ポインティングデバイス、ディスプレイ922等のようなユーザがコンピュータシステム/サーバ902とやり取りを可能にする1つまたは複数のデバイス、もしくはコンピュータシステム/サーバ902が1つまたは複数の他のコンピューティングデバイスとの通信を可能にする任意のデバイス(例えば、ネットワークカード、モデム等)、またはその組み合わせの1つまたは複数の外部デバイス920と通信し得る。そのような通信は、I/Oインターフェース924を介して行うことができる。さらに、コンピュータシステム/サーバ902は、ネットワークアダプタ926を介して、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)、もしくはパブリックネットワーク(例えば、インターネット)、またはその組み合わせ等の1つまたは複数のネットワークと通信できる。図示のように、ネットワークアダプタ926は、バスを介してコンピュータシステム/サーバ902の他の構成要素と通信する。図示されていないが、コンピュータシステム/サーバ902と併せて他のハードウェアもしくはソフトウェア構成要素、またはその組み合わせを使用できることを理解されたい。例としては、限定されないが、マイクロコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、データアーカイブストレージシステム等が含まれる。
システム、方法、および非一時的コンピュータ可読媒体のうちの少なくとも1つの例示的な実施形態が、添付の図面に示され、前述の詳細な説明に記載されているが、本出願は、開示される実施形態に限定されるものではなく、以下の特許請求の範囲に記載および定義される多数の再構成、修正、および置換が可能であることを理解されたい。例えば、様々な図のシステムの機能は、本明細書に記載のモジュールまたは構成要素の1つまたは複数によって、または分散アーキテクチャで実行でき、送信機、受信機、または両方の対を含み得る。例えば、個別のモジュールによって実行される機能の全部または一部は、これらのモジュールの1つまたは複数によって実行され得る。さらに、本明細書に記載の機能は、モジュールまたは構成要素の内部または外部の様々なイベントに関連して、様々な時点で実行され得る。また、様々なモジュール間で送信される情報は、データネットワーク、インターネット、音声ネットワーク、インターネットプロトコルネットワーク、無線デバイス、有線デバイスのうちの少なくとも1つを介して、もしくは複数のプロトコルを介して、またはその両方で、モジュール間で送信できる。また、モジュールのいずれかによって送信または受信されるメッセージは、直接もしくは他のモジュールの1つまたは複数を介して、またはその両方で、送信または受信され得る。
当業者は、「システム」がパーソナルコンピュータ、サーバ、コンソール、携帯情報端末(PDA)、携帯電話、タブレットコンピューティングデバイス、スマートフォン、またはその他の適切なコンピューティングデバイス、またはデバイスの組み合わせとして具現化できることを理解するであろう。上記の機能を「システム」によって実行されるものとして提示することは、本出願の範囲を決して限定することを意図するものではなく、多くの実施形態の一例を提供することを意図するものである。実際、本明細書で開示される方法、システム、および装置は、コンピューティング技術と一致する局部的および分散的な形態で実装され得る。
本明細書に記載されているシステム機能の一部は、実装の独立性をより具体的に強調するために、モジュールとして提示されていることに留意されたい。例えば、モジュールは、カスタム超大規模集積(VLSI)回路またはゲートアレイ、論理チップ、トランジスタ、または他の個別部品等の既製の半導体を含むハードウェア回路として実装され得る。モジュールはまた、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジックデバイス、グラフィックス処理ユニット、または同様のもの等のプログラマブルハードウェアデバイスに実装され得る。
モジュールはまた、様々なタイプのプロセッサによる実行のために、ソフトウェアで少なくとも部分的に実装され得る。例えば、実行可能コードの識別されたユニットは、例えば、オブジェクト、手順、または機能として編成され得るコンピュータ命令の1つまたは複数の物理ブロックまたは論理ブロックを有し得る。それにもかかわらず、識別されたモジュールの実行可能ファイルは、物理的に一緒に配置する必要はないが、異なる場所に記憶された異種の命令を有し得、論理的に結合されたときに、モジュールを有し、モジュールの規定の目的を達成する。さらに、モジュールは、例えば、ハードディスクドライブ、フラッシュデバイス、ランダムアクセスメモリ(RAM)、テープ、またはデータを記憶するために使用される任意の他のそのような媒体であり得る、コンピュータ可読媒体に記憶され得る。
実際、実行可能コードのモジュールは、単一の命令、または多くの命令であり得て、いくつかの異なるコードセグメントにわたって、異なるプログラム間で、およびいくつかのメモリデバイスにわたっても分散されることさえあり得る。同様に、動作データは、本明細書ではモジュール内で識別および示され得て、任意の適切な形式で具現化され、任意の適切なタイプのデータ構造内に編成され得る。動作データは、単一のデータセットとして収集され得るか、または異なるストレージデバイスを含む異なる場所に分散され得、単にシステムまたはネットワーク上の電子信号として少なくとも部分的に存在し得る。
本出願の構成要素は、本明細書で概して説明され、図に示されているように、多種多様な異なる構成で配置および設計され得ることが容易に理解されるであろう。したがって、実施形態の詳細な説明は、特許請求される本出願の範囲を限定することを意図するものではなく、本出願の選択された実施形態を単に表現するものである。
当業者は、上記が、異なる順序のステップで、もしくは開示されたものとは異なる構成のハードウェア要素で、またはその両方で実施され得ることを容易に理解するであろう。したがって、本出願はこれらの好ましい実施形態に基づいて説明されてきたが、特定の修正、変形、および代替構成が明らかであることは当業者には明らかであろう。
本出願の好ましい実施形態について説明してきたが、記載された実施形態は例示に過ぎず、本出願の範囲は、実施形態に対する均等物および修正物(例えば、プロトコル、ハードウェアデバイス、ソフトウェアプラットフォーム等)の全範囲を考慮した場合、添付の特許請求の範囲によってのみ定義されるべきであることが理解されるべきである。

Claims (20)

  1. 装置であって、
    第1のブロックチェーントランザクションをサブミットしたユーザの第1のユーザ識別子に基づいて、ブロックチェーン台帳に記憶された前記第1のブロックチェーントランザクションを識別することと、
    監査ノードと前記ユーザとの間で共有される秘密鍵を取得することと、
    前記ユーザの第2のユーザ識別子を復元するために、前記監査ノードを介して、前記秘密鍵に基づいて前記第1のブロックチェーントランザクションに含まれる暗号文を解読することと、
    前記監査ノードを介して、前記ブロックチェーン台帳に記憶された前記ユーザの前記第2のユーザ識別子を含む第2のブロックチェーントランザクションを識別することとを行うように構成されるプロセッサを備える装置。
  2. 前記プロセッサが、前記秘密鍵に基づいて前記第1のブロックチェーントランザクション内のトランザクションの詳細を解読し、予め定められた監査基準に対して前記トランザクションの詳細を検証するようにさらに構成される、請求項1に記載の装置。
  3. 前記プロセッサが、有する前記ブロックチェーン台帳に、前記第1のユーザ識別子を他のブロックチェーントランザクションが記憶されていないことを証明するように構成される、請求項2に記載の装置。
  4. 前記プロセッサが、前記第1のブロックチェーントランザクションに含まれる前記ユーザによってサブミットされたゼロ知識証明(ZKP)を検証するように構成される、請求項2に記載の装置。
  5. 前記第1のユーザ識別子および前記第2のユーザ識別子がそれぞれ、前記ユーザの一意のユーザ識別子および前記ユーザの鍵に基づいて証明可能に生成される、請求項1に記載の装置。
  6. 第3のユーザ識別子を復元するために、前記プロセッサが、前記秘密鍵に基づいて前記第2のブロックチェーントランザクションに含まれる暗号文を解読するようにさらに構成される、請求項1に記載の装置。
  7. 前記プロセッサが、前記監査ノードを介して、前記ブロックチェーン台帳に前記第3のユーザ識別子を有するブロックチェーントランザクションが記憶されていないことを決定し、前記決定に応答して監査プロセスを終了するようにさらに構成される、請求項6に記載の装置。
  8. 前記第1のブロックチェーントランザクションおよび前記第2のブロックチェーントランザクションが、匿名署名で署名される、請求項1から7のいずれか一項に記載の装置。
  9. 方法であって、
    第1のブロックチェーントランザクションをサブミットしたユーザの第1のユーザ識別子に基づいて、ブロックチェーン台帳に記憶された前記第1のブロックチェーントランザクションを識別する段階と、
    監査ノードと前記ユーザとの間で共有される秘密鍵を取得する段階と、
    前記ユーザの第2のユーザ識別子を復元するために、前記監査ノードを介して、前記秘密鍵に基づいて前記第1のブロックチェーントランザクションに含まれる暗号文を解読する段階と、
    前記監査ノードを介して、前記ブロックチェーン台帳に記憶された前記ユーザの前記第2のユーザ識別子を含む第2のブロックチェーントランザクションを識別する段階と
    を備える方法。
  10. 前記解読する段階が、前記秘密鍵に基づいて前記第1のブロックチェーントランザクション内のトランザクションの詳細を解読する段階と、予め定められた監査基準に対して前記トランザクションの詳細を検証する段階とをさらに有する、請求項9に記載の方法。
  11. 前記検証する段階が、前記ブロックチェーン台帳に前記第1のユーザ識別子を有する他のブロックチェーントランザクションが記憶されていないことを証明する段階を有する、請求項10に記載の方法。
  12. 前記検証する段階が、前記第1のブロックチェーントランザクションに含まれる前記ユーザによってサブミットされたゼロ知識証明(ZKP)を検証する段階を有する、請求項10に記載の方法。
  13. 前記第1のユーザ識別子および前記第2のユーザ識別子がそれぞれ、前記ユーザの一意のユーザ識別子および前記ユーザの鍵に基づいて証明可能に生成される、請求項9に記載の方法。
  14. 第3のユーザ識別子を復元するために、前記方法が、前記秘密鍵に基づいて前記第2のブロックチェーントランザクションに含まれる暗号文を解読する段階をさらに備える、請求項9に記載の方法。
  15. 前記方法が、前記監査ノードを介して、前記ブロックチェーン台帳に前記第3のユーザ識別子を有するブロックチェーントランザクションが記憶されていないことを決定する段階と、前記決定に応答して監査プロセスを終了する段階とをさらに備える、請求項14に記載の方法。
  16. 前記第1のブロックチェーントランザクションおよび前記第2のブロックチェーントランザクションが、匿名署名で署名される、請求項9から15のいずれか一項に記載の方法。
  17. プロセッサによって読み取られると、前記プロセッサに、
    第1のブロックチェーントランザクションをサブミットしたユーザの第1のユーザ識別子に基づいて、ブロックチェーン台帳に記憶された前記第1のブロックチェーントランザクションを識別する手順と、
    監査ノードと前記ユーザとの間で共有される秘密鍵を取得する手順と、
    前記ユーザの第2のユーザ識別子を復元するために、前記監査ノードを介して、前記秘密鍵に基づいて前記第1のブロックチェーントランザクションに含まれる暗号文を解読する手順と、
    前記監査ノードを介して、前記ブロックチェーン台帳に記憶された前記ユーザの前記第2のユーザ識別子を含む第2のブロックチェーントランザクションを識別する手順とを備える方法を実行させる、命令を備えるコンピュータプログラム。
  18. 前記解読する手順が、前記秘密鍵に基づいて前記第1のブロックチェーントランザクション内のトランザクションの詳細を解読する手順と、予め定められた監査基準に対して前記トランザクションの詳細を検証する手順とをさらに有する、請求項17に記載のコンピュータプログラム。
  19. 前記検証する手順が、前記第1のユーザ識別子を有する前記ブロックチェーン台帳に記憶されている他のブロックチェーントランザクションがないことを証明する手順と、前記第1のブロックチェーントランザクションに含まれる前記ユーザによってサブミットされたゼロ知識証明(ZKP)を検証する手順を有する、請求項18に記載のコンピュータプログラム。
  20. 前記第1のユーザ識別子および前記第2のユーザ識別子がそれぞれ、前記ユーザの一意のユーザ識別子および前記ユーザの鍵に基づいて証明可能に生成される、請求項17から19のいずれか一項に記載のコンピュータプログラム。
JP2022205037A 2021-12-29 2022-12-22 装置、方法、コンピュータプログラム(プライバシー保護ブロックチェーンの選択的監査プロセス) Pending JP2023098847A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/564,326 2021-12-29
US17/564,326 US20230208640A1 (en) 2021-12-29 2021-12-29 Selective audit process for privacy-preserving blockchain

Publications (1)

Publication Number Publication Date
JP2023098847A true JP2023098847A (ja) 2023-07-11

Family

ID=86896325

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022205037A Pending JP2023098847A (ja) 2021-12-29 2022-12-22 装置、方法、コンピュータプログラム(プライバシー保護ブロックチェーンの選択的監査プロセス)

Country Status (3)

Country Link
US (1) US20230208640A1 (ja)
JP (1) JP2023098847A (ja)
CN (1) CN116361823A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11888981B2 (en) * 2021-08-17 2024-01-30 International Business Machines Corporation Privacy preserving auditable accounts

Also Published As

Publication number Publication date
US20230208640A1 (en) 2023-06-29
CN116361823A (zh) 2023-06-30

Similar Documents

Publication Publication Date Title
US11360963B2 (en) Tracking and verification of physical assets
US20210091960A1 (en) Tracking and verification of physical assets
US11734259B2 (en) Anonymous database rating update
US11323269B2 (en) Preserving privacy of linked cross-network transactions
US11349637B2 (en) Random node selection for permissioned blockchain
US11362826B2 (en) Endorsement process for non-deterministic application
KR20220044306A (ko) 부분-정렬된 블록체인
AU2021254870A1 (en) Faster view change for blockchain
US20230059580A1 (en) Blockchain with random committee selection
US11949794B2 (en) Data anonymization of blockchain-based processing pipeline
JP2023504492A (ja) データ・オブジェクトの効率的しきい値ストレージ
US11379472B2 (en) Schema-based pruning of blockchain data
US11580098B2 (en) Multi-client transaction validation
US20230208638A1 (en) Future asset reclamation via blockchain
WO2022111175A1 (en) Key reclamation in blockchain network via oprf
US11856092B2 (en) Limiting data availability on distributed ledger
US11924348B2 (en) Honest behavior enforcement via blockchain
US11847234B2 (en) Verifiable training of model in untrusted environment
KR20230005353A (ko) 탈중앙화된 데이터베이스에서 허가된 이벤팅
JP2023098847A (ja) 装置、方法、コンピュータプログラム(プライバシー保護ブロックチェーンの選択的監査プロセス)
WO2023046409A1 (en) Digital asset platform with hsm verification
WO2022057451A1 (en) Threshold encryption for broadcast content
US11658824B2 (en) Plagiarism detection from encrypted documents
US20230245112A1 (en) Non-interactive token certification and verification
US11856057B2 (en) Preservation of channel metadata