本技術の特定の実施形態が、添付の図を参照しながら詳細に説明される。様々な図の同様の要素は、一貫性のために、同様の参照符号で表される。
本技術の実施形態の以下の詳細な説明では、本技術をより完全に理解するために、非常に多くの具体的詳細が示される。それでも、本技術は、これらの具体的詳細がなくても実践され得ることが当業者には明らかであろう。他の例では、説明を必要以上に複雑にしないように、よく知られた特徴は詳細に説明されなかった。
本出願の全体を通して、序数(例えば、第1、第2、第3など)は、要素の形容詞(すなわち、本出願では任意の名詞)として使用されることがある。序数の使用は、用語「前」、「後」、「単一」、及び他のこのような用語の使用などによって明確に開示されない限り、要素の何らかの特定の順序を示唆するためのものでも作り出すためのものでもなく、何らかの要素を単一の要素だけであると限定するためのものでもない。むしろ、序数の使用は、要素を区別するためのものである。例として、第1の要素は、第2の要素とは別個のものであり、第1の要素は、2つ以上の要素を包含し、要素の順序において第2の要素の後に来る(又は、第2の要素の前に来る)ことがある。
様々な実施形態が、ユーザの個人データを管理するためのシステム及び方法を対象とする。いくつかの実施形態では、例えば、ユーザ・デバイスは、暗号鍵などの様々な技術を使用した個人データの格納、処理、及び/又は、第三者への転送を運営するデータ管理アプリケーション(「データ・ウォレット」とも呼ばれる)を含む。例えば、データ・ウォレット内のユーザ・データは、ユーザ・データを様々な着信する要求と比較するために暗号化されていなくてもよい。その一方で、ユーザ・データがユーザ・デバイスで暗号化された場合、データ管理アプリケーションは、ユーザ・データにアクセスするための暗号鍵を保有しても暗号鍵にアクセスできてもよい。したがって、いくつかの実施形態は、暗号化されていないユーザ・データを使用するが、他の実施形態は、暗号化されたユーザ・データ、又は暗号化されたユーザ・データと暗号化されていないユーザ・データ両方を使用してもよい。
いくつかの実施形態では、データ管理アプリケーションは、第三者との(例えば、スマート・コントラクトを使用した)様々なデータ・トランザクションにおいて、個人データを格納するため、及び個人データを運営するために、1又は2以上の分散型台帳技術を使用してもよい。より詳細には、データ管理アプリケーションは、ユーザ自身の個人データのためのデータ・プロセッサとデータ・コントローラ両方として作用する能力をユーザに提供し得る。
そうすることによって、第三者によるデータ処理及びデータ使用に関連付けられた様々な法律及び規制のハードルが克服され得る。集中型サーバが、しばしば、サイバーセキュリティ違反、個人データの権限のない使用、及びユーザの承諾のない個人データの直接販売に対して信頼できる場合、データ管理アプリケーションは、様々な分散型処理技術を使用して、人間ユーザによる、及び第三者の制御の及ばない、個人データの保有を続けてもよい。これらの分散型処理技術の例は、分散型識別子(DID:decentralized identifier)、分散型アプリケーション(DApp)、分散型台帳技術(ブロックチェーン・ノードなど)、及び様々な暗号システムを使用することを含む。
さらに、いくつかの実施形態は、データ・プライバシ・エコシステム(「データ・マーケットプレイス」とも呼ばれる)内で複数のデータ管理アプリケーションを動作させる。データ・プライバシ・エコシステムでは、個人データについてのデータ要求は、ネットワーク上の様々なノード(例えば、それぞれのデータ管理アプリケーションを有する様々なユーザ・デバイス)にブロードキャストされ得る。データ管理アプリケーションは、データ要求に関連した所望の情報にユーザの個人データが合致するかどうかを決定し得る。したがって、これらの要求の処理は、ユーザのデバイスにオフロードされ、ユーザの制御下に置かれてもよい。パブリッシング・ノードが、データ・プライバシ・エコシステムのメンバにデータ要求をブロードキャストしてもよいが、パブリッシング・ノードは、どのサブスクライバ・ノードが実際のデータ要求に合致するかについて実際の知識を有していなくてもよい。したがって、ユーザは、ネットワーク内で匿名を維持しつつ、データ要求を受け入れることも拒絶することもできる。ユーザがデータ要求を受け入れた場合、データ管理アプリケーションは、データ管理アプリケーションによって実装された1又は2以上のプライバシ保護チャネルを通じて、要求したエンティティにユーザの個人データを提供してもよい。同様に、データ・プライバシ・エコシステムを介して要求が送信されたことに応じて、スマート・コントラクトを受け入れること、及び他のトランザクションを実施することなど、より洗練されたデータ処理も想定される。
図1Aに移ると、ネットワーク(例えば、ネットワークA(100))は、様々なユーザ・デバイス(例えば、ユーザ・デバイスX(110))、及び様々なリモート・ノード(例えば、リモート・ノードN(140))を含み得る。ユーザ・デバイスX(110)では、ユーザのデータ管理アプリケーションN(111)が、暗号化された一般的な個人データ(例えば、暗号化された一般的な個人データM(112))、及び/又は暗号化された機密の個人データ(例えば、暗号化された機密の個人データM(113))を格納し得る。一般的な個人データの例は、個人の興味(例えば、ハイキング及びピザを楽しむ)、個人の嫌いな物(例えば、シーフードを嫌う)、ロケーション履歴(例えば、2019年にラスベガス、パリ、及びロンドンを訪れた)、並びに、ウェブ・ブラウザ履歴、雇用履歴、友人及び家族などの社会的接触などの他の情報などを含み得る。機密の個人データの例は、医療履歴及び情報、人種的及び民族的血統、所属政党、性的指向、ジェンダー情報などを含み得る。例えば、機密の個人データは、一般データ保護規則(GDPR)によって提供される機密の個人データの定義に対応し得る(例えば、労働組合員、遺伝的データ、バイオメトリック・データなど)。同様に、機密の個人データは、また、ユーザのロケーションに関連付けられた政府及び他の規制エンティティに基づいて決定され得る。その一方で、機密の個人データは、また、ユーザによって指定され得る。ユーザ・デバイスは、また、一般的な個人データの公開鍵及び秘密鍵(115)、並びに機密の個人データの公開鍵及び秘密鍵(116))などの、様々な暗号鍵(例えば、暗号鍵(114)を格納し得る。ユーザのデータ管理アプリケーションは、ユーザ・デバイス上の一般的な個人データ及び機密の人物データに対する制御を行うための機能を有するハードウェア及び/又はソフトウェアを含むアプリケーションでもよい。例えば、ユーザのデータ管理アプリケーションは、コンピュータ・システムと題する下記のセクションで説明される1又は2以上の技術を使用して実装され得る。
いくつかの実施形態では、ユーザ・デバイスは、1又は2以上の中間ノード(例えば、中間ノード(130))と通信して、個人データを特定のノードに転送する。図1Aに示されているように、例えば、ユーザ・デバイスX(110)は、暗号化された民族的血統データ(132)を中間ノード(130)に送信し得る。暗号化された情報は、リモート・ノードN(140)に中継される前に、中間ノードに格納されてもよい。暗号化された民族的血統データ(132)は、また、このような情報のデータ要求(131)に応答して、リモート・ノードN(140)上の権限付与されたクラウド・アプリケーション(141)によって送信されてもよい。権限付与されたクラウド・アプリケーション(141)は、ハードウェア及び/又はソフトウェアを含み、機密の個人データを復号するためのユーザの秘密鍵(例えば、機密の個人データのためのユーザの秘密鍵(142))を有する、要求側アプリケーションでもよい。その一方で、ユーザのデータは、1又は2以上の中間ノードに永久に常駐してもよく、ユーザのデータ管理アプリケーションは、格納されたデータにアクセスしてほしいというリモート・ノードへの要求を単に送信するだけでもよい。中間ノードは、また、例えば、匿名を維持するためにユーザ・デバイスの代わりに、リモート・ノードN(140)からユーザ・デバイスX(110)に要求を送信するために使用されてもよい。
いくつかの実施形態では、1又は2以上の中間ノードは、分散型台帳技術(例えば、中間ノード(130)に格納された分散型台帳D(134))を使用して実装される。分散型台帳技術についてのさらなる情報については、分散型台帳技術と題する下記のセクションを参照されたい。ユーザ・データを転送するために使用される中間ノードが図1Aに示されているが、(例えば、ピアツーピア通信用のプロトコルを使用して)要求したノードにユーザ・データが直接送信される他の実施形態も想定される。
図1Aを続けると、ユーザは、外部のエンティティから受け取られたデータ要求を処理するために、どのデータがユーザのデータ管理アプリケーションにおいて利用可能であるかを選択し得る。例えば、ユーザが自分自身の個人データを処理する場合、データ処理に関連付けられた様々な法的要件が回避され得る。したがって、ユーザのデータ管理アプリケーションは、要求された個人データをユーザのデータ管理アプリケーションが収めるという確証を超えて任意の個人データを伝えることなく、ユーザ(すなわち、証明者)が、個人データ処理に基づいて、任意の要求したエンティティ(例えば、検証エンティティ)に回答を示すことができる、ゼロ知識証明又はゼロ知識プロトコルを実装し得る。したがって、外部エンティティによるユーザのデータの処理又は制御を可能にせず、ユーザのデータ管理アプリケーションにおいて意思決定機能が実施され得る。
いくつかの実施形態では、ユーザのデータ管理アプリケーションは、データ整合性、有効性、及び/又は守秘義務を維持するように、様々な仲間及び機関とセキュアに対話するユーザ・インターフェースを含む。例えば、データ管理アプリケーションのインターフェースは、スマートフォン上のモバイル・アプリケーション内に実装されてもよい。いくつかの実施形態では、ユーザ・インターフェースは、ウェブ・ブラウザの最上部の別個のインターフェースとして統合されてもよい。例えば、ユーザの秘密鍵は、モバイル・アプリケーション、ブラウザ、又は両方を通じて格納されてもアクセス可能にされてもよい。このユーザ・インターフェースは、データが使用のために復号されるポイントでもよい。データは、1又は2以上のデータ・テンプレートに格納されるか関連付けられた、メタデータを使用してキャッシュされ得る。いくつかの実施形態では、1又は2以上のデータ・テンプレートは、ユーザ・データを送信するため、及び/又はトランザクションを実施するために使用される。例えば、構造化データセットが、効率的なデータ処理のために使用されることが可能である。したがって、データ・テンプレートは、データ管理アプリケーションと1又は2以上の要求側アプリケーションとの間でユーザ・データを通信するための取り決められたデータ構造を提供し得る。さらに、ユーザのデータ管理アプリケーションは、ユーザの入力がなくても個人データを通信するため、及び/又は個人データの送信に権限付与するための、1又は2以上のアプリケーション・プログラマブル・インターフェース(API)を含み得る。いくつかの実施形態では、ユーザ・インターフェースは、個人データについてのデータ要求に応答して、ユーザにプロンプトを提供する。
いくつかの実施形態では、ユーザのデータ管理アプリケーションは、1又は2以上の受け手とデータを共有するための機能を含み得る。例えば、ユーザは、ユーザが特定の受け手と共有したいと思うユーザのデータ管理アプリケーションのデータ構造にまたがるデータ変数又はデータ・フィールド(例えば、データ変数A(121)、データ変数B(122)、データ変数C(123)、データ変数D(124)、データ変数E(125)、データ変数F(126)、及びデータ変数G(127))を選択し得る。そうするために、ユーザ・インターフェース上で復号されたデータは、(例えば、スマート・コントラクトのための)トランザクション・ハッシュ/IDでエンコードされた新しいデータ・ファイルを作り出すために収集され得る。ユーザは、次に、自分の秘密鍵で復号されたデータに権限付与し、このデータを受け手の公開鍵で暗号化し得る。データが署名及び暗号化されると、データは、(インタープラネタリ・ファイルシステム・プロトコル(IPFS:interplanetary filesystem protocol)アドレス(133)などの)ロケーション・アドレスを割り当てられた1又は2以上の中間ノードに格納され得る。
いくつかの実施形態では、ユーザのデータ管理アプリケーションは、分散型アイデンティティに関連して使用される分散型ネットワークの一部である。例えば、分散型アイデンティティは、ユーザの実際のアイデンティティを検証することによって生成され得る。これは、エコシステムにおいて1人の人物が1つ及びただ1つのアイデンティティを有することを保証するために、e-KYCメカニズムを通じて行われ得る。KYCは、「Know Your Customer」又は「Know Your Client」と呼ばれてもよく、いくつかの実施形態は、ビジネスが、ユーザによって提供された個人データの合法性及び真実性を決定するためにユーザのアイデンティティを検証するプロセスを含み得る。ユーザのアカウントが、e-KYCメカニズムを通じて検証されると、ユーザのデータ管理アプリケーションは、ユーザ・デバイスのアドレスと共に、ランダムに生成された秘密鍵と公開鍵のペアを割り振られてもよい。任意の所与の鍵のペアに対して、ネットワーク内でそれを必要とする誰かに対して一般に公開された人物に公開鍵が関連付けられてもよい。秘密鍵は、人物自身によってのみ保持され得る。誰かが特定のユーザの公開鍵でデータを暗号化すると、暗号化されたデータは、ユーザの秘密鍵を使用してユーザによってのみ復号され得る。同様に、ユーザが自分の秘密鍵でいくつかのデータを暗号化した場合、ネットワーク内の誰かが、暗号化されたデータを自分の公開鍵を使用して復号し、データがこの特定のユーザによって送られたことを検証することができる。
いくつかの実施形態では、ユーザのアイデンティティに基づいて秘密鍵を復旧するために、1又は2以上の復旧プロセスが使用される。例えば、ユーザの人生の全体を通して、ただ1つの秘密鍵がアイデンティティに関連付けられることになる場合、ユーザによっては、自分のそれぞれの秘密鍵を持ち続けることを信用されないこともある。したがって、復旧プロセスは、以下を含み得る。(1)分割鍵暗号化、(2)セキュアなハードウェア環境、(3)QRコード(登録商標)・ニーモニック、(4)物理鍵、並びに(5)秘密鍵の復号及びアクセスのための複数の対称鍵(例えば、異なる鍵が、異なる友人、エンティティ(例えば、ソーシャル・ネットワーキング・サイト、レストラン、eコマース・サイト)、及び特別なエンティティ(警察、病院、政府機構など)に対応し得る)、並びに(6)閾値暗号文。暗号化/復号プロセス及び処理される復旧についてのさらなる情報については、暗号化及び復号技術と題する下記のセクションを参照されたい。
いくつかの実施形態では、ユーザは、1又は2以上のデータ・テンプレートに従って個人データをポピュレートすることができるデータ・トランザクションを発行し得る。データ・トランザクションは、例えば、データ・トランザクションの検証のため、及び/又はデータ・トランザクションの権限を証明するために、ユーザの秘密鍵で署名することによって、ユーザによって実行され得る。最後に、個人データは、データの所有者の公開鍵で暗号化され得る。データが暗号化されると、暗号化されたデータは、1又は2以上の中間ノードに格納され得る。暗号化されたデータは、中間ノードに関連付けられたIPFSアドレスに基づいて後で取り出され得る。したがって、データ・トランザクションは、以下の尺度のうちの1又は2以上を有するメイン・チェーン又はサブ・チェーンに入れられ得る。(1)トランザクション・ハッシュ/ID、(2)データ・テンプレートのID、(3)発行者/データ提供者のアドレス、(4)受け手/データ所有者のアドレス、(5)データ・ロケーションのためのIPFSハッシュ・アドレス、及び(6)データは、ストレージ・ノードから取り出す際にデータ所有者によって復号されることだけが可能である。
いくつかの実施形態では、データ管理アプリケーションは、共有データをその後処理するスマート・コントラクトとデータを共有するために使用される。データは、次に、「need-to-know」ベースで、受け手と共有され得る。スマート・コントラクトは、(例えば、「as-it-is」データ共有を通じて)ユーザからデータを受け取り、スマート・コントラクトのエンドでデータを復号し、意図した結果に達するまでデータを処理し、最後に、処理されたデータを受け手と共有し得る。ここでは、ユーザからスマート・コントラクトへの1つのデータ・トランザクション、及びスマート・コントラクトから受け手への別のデータ・トランザクションなど、2つのデータ・トランザクションが分散型台帳技術を使用して記録され得る。スマート・コントラクトは、処理されたデータに再び署名し、受け手の公開鍵でデータを暗号化し、データを格納し、データのロケーション・アドレスを生成し、データを受け手に送り得る。いくつかの実施形態では、分散型台帳は、スマート・コントラクトによって発生した2つのデータ・トランザクションをリンクさせるための、最終的な宛先又は元のソースなど、データ・トランザクション・レコード内に別のフィールドを含み得る。
いくつかの実施形態では、データが受け手と共有されたときにデータ操作を防ぐために、ユーザの情報におけるあらゆるデータ・ポイントが認証される。この認証は、人物がデータ・トランザクションを発行するための権限を有するかどうか、ユーザがデータの実際の受け手であるかどうか、データ・フォーマットが受入れ可能であるかどうかなど、データ・ポイントに対応するあらゆるデータ・トランザクションをチェックする認証機能又は認証スマート・コントラクトを使用して実施され得る。この認証が行われた後だけ、データ共有のためのデータ・トランザクションが分散型台帳に反映され得る。
いくつかの実施形態では、トランザクション受諾を決定するために、様々なメカニズムが使用される。例えば、トランザクション・スパミングがないことを確認するためのチェックが使用され得る。言い換えれば、両方の当事者が発行/データ共有を受け入れたとき、データ・トランザクションだけが分散型台帳において発行され得る。
いくつかの実施形態では、データ漏洩を防ぐために、データ透かしが使用される。例えば、受け手に送られるデータは、データが漏洩されても漏洩源を識別できるように、透かし模様が入れられることが可能である。このような状況に遭遇した場合、権限の撤回などの必要なアクションが実施され得る。
いくつかの実施形態では、データの要求が、データ管理アプリケーションに知られないという抑制をしながら、受け取られる。例えば、航空会社が、直前の72時間以内にこのようなテストが行われたという証拠を要求している間、データ管理アプリケーションは、ユーザのCOVID-19ワクチン接種についての情報を有していなくてもよい。可能であれば、データ管理アプリケーションは、それぞれのデータ・テンプレートを求めて、パブリック・クラウドにアクセスしてもよい。データ管理アプリケーションは、次に、データの有効性の証拠としてデータが使用されることが可能であることを保証するデジタル署名と一緒に、ユーザの代わりに、要求されたデータをダウンロードし得る。
図1Bに移ると、図1Bは、1又は2以上の実施形態によるシステムを示す。図1Bに示されているように、規制されたデータ処理と規制されないデータ処理とを区別するデータ・プライバシ規制境界が示されている。例えば、クラウド・サーバE(171)、クラウド・サーバF(172)、及びクラウド・サーバG(173)によって実施される個人データ処理は、様々なデータ・プライバシ法及び政府規制を受けることがある。ヨーロッパの住民及びヨーロッパの国にあるクラウド・サーバに対して、例えば、どのように、及び何のために、個人データが処理され得るかについて、様々なプライバシ法が制約をかけることがある。したがって、規制境界のこの片側での(例えば、インターネット(170)内での)任意のデータ収集動作又はデータ処理動作は、個人データに関連付けられた人物の明示的な承諾、又はデータが合法的な目的のために収集/処理され得ることを必要とし得る。
図1Bを続けると、ユーザ・デバイスX(110)を用いてデータ管理アプリケーションによって様々な動作が実施される(例えば、データ収集動作A(161)、データ収集動作B(162)、データ処理動作C(163)、データ処理動作D(164))。ユーザの個人データの使用に関する様々な制約によって、クラウド・サーバE、F、及びG(171、172、173)が束縛される場合、データ管理アプリケーションは、ユーザの代わりに機能するとき、データ・プライバシ法及び規制によって妨げられないことがある。例えば、ユーザは、ユーザの制御下でデータ収集及びデータ処理アクションを使用して、(例えば、人工知能及び機械学習を使用して)個人データを分析し、モデルを予想又は予測し得る。したがって、ユーザは、個人データを変換する機会を有し、価値ある資産へのこれらの個人データ処理の様々な結果を制御し得る。人工知能は、多数の要因及び事前定義されていない尺度に基づいて、複雑な選択肢を必要とするドメインにおける自動意思決定を可能にし得る。
図2に移ると、図2は、1又は2以上の実施形態によるフローチャートを示す。具体的には、図2は、1又は2以上の実施形態による、ユーザ・データを送信及び/又は処理するための一般的な方法を表現している。図1A及び図1Bで説明されたような、1又は2以上の構成要素(例えば、ユーザのデータ管理アプリケーションN(111))によって、図2の1又は2以上のブロックが実施され得る。図2の様々なブロックが順次提示及び説明されるが、当業者は、ブロックのうちのいくつか又は全てが、異なる順序で実行されてもよく、組み合わされても省略されてもよく、ブロックのいくつか又は全てが並列に実行されてもよいことを理解するであろう。さらに、ブロックは、能動的又は受動的に実施されてもよい。
ブロック200において、1又は2以上の実施形態に従って、所定のデータ変数に関するユーザ・デバイスの個人データの要求が、要求側アプリケーションから取得される。例えば、所定のデータ変数は、ユーザのジェンダー、所属政党、又は医療履歴に対応し得る。同様に、所定のデータ変数は、(中間ノード又は分散型台帳技術を使用するなどして)分散型システム内のユーザ・データを通信及び/又は格納するためのデータ・テンプレート内で定義され得る。したがって、データ変数は、分散型システム又はDAppを使用して実施されるデータ・トランザクションの1又は2以上のフィールドに対応し得る。
ブロック210において、要求側アプリケーションが、所定のデータ変数にアクセスするために権限を与えられているかどうかが決定される。例えば、要求側アプリケーションは、暗号鍵を使用して要求に署名することに基づいて認証され得る。したがって、ユーザのデータ管理アプリケーションは、要求側アプリケーションが、任意の要求されたユーザ・データを受け取るための権限を与えられているかどうかを決定し得る。要求側アプリケーションが権限を与えられていない場合、図2のプロセスは終了し得る。要求側アプリケーションが権限を与えられている場合、プロセスは、ブロック220を処理し得る。
ブロック220において、1又は2以上の実施形態に従って、データ管理アプリケーションのインターフェースを使用して、所定のデータ変数に関連付けられたデータ管理アプリケーション内の個人データが選択される。
ブロック230において、1又は2以上の実施形態に従って、所定のデータ変数及び/又はユーザ・デバイスに関連付けられた公開暗号鍵を使用して、暗号化された個人データが生成される。
ブロック240において、1又は2以上の実施形態に従って、暗号化された個人データが、1又は2以上の中間ノードに送信される。例えば、中間ノードは、図1A及び付随する説明において上記で説明された中間ノードと同様でもよい。いくつかの実施形態では、ブロック240は任意選択である。例えば、データは、ユーザ・デバイス(例えば、スマートフォン)に格納されてよく、又は、1若しくは2以上の中間ノードの間など、暗号化された形式でほかの場所に格納されてもよい。
ブロック250において、1又は2以上の実施形態に従って、暗号化された個人データが、権限を与えられた要求側アプリケーションに送信される。
ブロック260において、1又は2以上の実施形態に従って、ユーザ・デバイスに関連付けられた秘密暗号鍵を使用して、暗号化された個人データが、権限を与えられている要求側アプリケーションによって復号される。
ブロック270において、1又は2以上の実施形態に従って、データ検証プロセスを使用して、個人データが、権限を与えられた要求側アプリケーションによって認証される。例えば、データ検証プロセスは、分散型台帳技術を使用してシステムによって実施されるコンセンサス・アルゴリズムでもよい。
特定のユース・ケースに応じて、ブロック260又はブロック270は、図2のプロセスの最後でもよく、すなわち、プロセスは、ブロック260とブロック270両方を必ずしも実施しなくてもよい。
図3Aに移ると、図3Aは、1又は2以上の実施形態によるシステムを示す。図3Aに示されているように、パブリッシャ-サブスクライバ・ネットワークA(300)は、1又は2以上のパブリッシング・ノード(例えば、パブリッシング・ノードX(310))、及び1又は2以上のサブスクライバ・ノード(例えば、ユーザ・デバイスA(321)、ユーザ・デバイスB(322)、及びユーザ・デバイスC(323))を含み得る。例えば、パブリッシャ-サブスクライバ・ネットワークにおけるユーザ・デバイスは、図1Aにおいて上記で説明されたユーザのデータ管理アプリケーションN(111)と同様でもよい、データ管理アプリケーション(例えば、データ管理アプリケーションA(341)、データ管理アプリケーションB(342)、データ管理アプリケーションC(343))を含み得る。同様に、パブリッシャ-サブスクライバ・ネットワークは、1又は2以上の中間ノード(中間ノード・ネットワーク(380)などの、1又は2以上の分散型台帳技術を実装する1又は2以上のノードなど)も含み得る。いくつかの実施形態では、パブリッシャ-サブスクライバ・ネットワークにおけるノードは、サブスクライバ機能及びパブリッシャ機能を有し得る。例えば、ユーザ・デバイスは、いくつかの状況ではデータの要求の受け手でもよく、その一方で、また、他の状況では他のユーザ・デバイスからの情報のリクエスタでもよい。
図3Aを続けると、パブリッシャ-サブスクライバ・ネットワークA(300)は、パブリッシング・ノードX(310)が、ネットワーク内の様々なサブスクライバ・ノード(例えば、ユーザ・デバイスA(321)、ユーザ・デバイスB(322)、ユーザ・デバイスC(323))に、情報のブロードキャスト要求(301)を送信する例を示す。より詳細には、ブロードキャスト要求(301)は、ワクチン接種され、癌生存者でもある女性の人物に関する1又は2以上のデータ要求を含む。ユーザ・デバイスA(321)、ユーザ・デバイスB(322)、及びユーザ・デバイスC(323)に同様のデータ要求が送信される。図3Aでは、それぞれのユーザが、ユーザのそれぞれのデータ管理アプリケーションに関連付けられた情報を有する(例えば、データ管理アプリケーションA(341)は、女性のジェンダー、乳癌生存者、及びCovidワクチンを受けたメンバとしてユーザを識別する個人データを格納する)。様々なデータ管理アプリケーションに関連付けられたユーザ・データが図3Aに示されているが、いくつかの実施形態では、ユーザ・データは、それぞれのユーザ・デバイスの外部に格納される(例えば、いくつかのデータは、1又は2以上の中間ノードの間に分散されてもよい)。
図3Bに移ると、データ管理アプリケーションA(341)は、ユーザのデータが、女性のワクチン接種済みの癌生存者のブロードキャスト要求(301)に対応すると決定する。その一方で、ユーザ・デバイスB(322)及びユーザ・デバイスC(323)におけるデータ管理アプリケーションは、これらのローカルな個人データが、ブロードキャスト要求におけるデータ変数に合致しなかったので、要求を無視する。したがって、データ管理アプリケーションA(341)は、例えば、さらなるユーザ・データを提供するために、又は、要求に関連付けられた1若しくは2以上のトランザクションに同意するために、受諾メッセージ(351)をパブリッシング・ノードX(310)に送信する。いくつかの実施形態では、ユーザは、例えば、ユーザ・デバイスの表示デバイス上のプロンプト(例えば、女性のワクチン接種済みの癌生存者についての要求の通知A(350))に応答して、ブロードキャスト要求(301)に応答するべきかどうかを確認する。
いくつかの実施形態では、例えば、ユーザの旅程に沿った様々なノードが、広告を近くのユーザ・デバイスにブロードキャストしていてもよいとき、ユーザが自動車に乗っていてもよい。どの広告がユーザ・デバイスに提示されるかに関する判定を集中型サーバに行わせるのではなく、データ管理アプリケーションが各ブロードキャスト要求を受け取り、ユーザの個人データ又は選択された好みに従って、この要求を処理してもよい。具体的には、ユーザのデータ管理アプリケーションが、データ管理アプリケーション内の個人データに基づいて、ブロードキャスト要求をフィルタ処理してもよい。ユーザがシーフードを楽しみ、ピザを嫌う場合、ユーザのデータ管理アプリケーションは、シーフード・レストランの広告をユーザ・デバイスに表示しつつ、ピザ・レストランからのどのブロードキャスト要求も無視してよい。
いくつかの実施形態では、例えば、製薬会社が、乳癌を有する25歳未満の女性患者に対する薬剤Xの副作用をリサーチしたいと思うことがある。患者のこのようなデータベースが存在したとしても、プライバシ法及び規制が、コンプライアンス問題により、データ収集及びデータ処理動作の実施を阻止することがある(例えば、患者データにアクセスすることは、倫理委員会などへの連絡を必要とすることがある)。患者がデータ収集に貢献したいと思う場合、患者は、リサーチのオファーに気づかないことにより、機会を失うことがある。したがって、このようなトランザクションを阻止する様々なプライバシ法及び規制を克服する分散型システムを、データ管理アプリケーションが提供し得る。例えば、製薬ノードは、データ管理アプリケーションのブロードキャストにおいて、法的拘束力のあるオファーを公開し得る。このような要求は、IPFSネットワークを介して発送されてもよく、各データ管理アプリケーションは、1又は2以上のスマート・コントラクトにおいて定義されたルールを使用して、データ管理アプリケーションがオファーを考慮するべきかどうかを決定し得る。例えば、オファーが25歳未満の女性のためのものであり、データ管理アプリケーションのユーザが、所望のグループの外側にいる場合、スマート・コントラクトは、どのようなフィードバックもユーザ又は製薬のパブリッシング・ノードに提供せず、オファーを無視してもよい。ユーザ・プロフィールがオファーの特定の要件に合致する場合、スマート・コントラクトは、ユーザ定義のルールを調べてもよい。例えば、ユーザは、1又は2以上の基準に基づいて評判がよい会社からのオファーだけを考慮してもよい。このようなルールが、1又は2以上の分散型台帳における1又は2以上のスマート・コントラクトのユーザの好み又は条項に合致するとき、オファーは、ユーザ・デバイス上でユーザに提示され得る。
オファーのタイプに応じて、情報についてのデータ要求、又はデータ・トランザクションは、ユーザ・デバイス上のプッシュ通知として提示されても、何百もの他のオファーを有するデジタル・メールボックスに行き着いてもよい。データ要求に応答して、ユーザは、それぞれの契約を受け入れても、オファーを単純に無視してもよい。したがって、この例では、製薬会社は、会社が個人情報の処理を進めるのを許可する署名済みの契約と共に、パブリッシャ-サブスクライバ・ネットワークを介して要求をブロードキャストする数分内に所望の個人情報を受け取ってもよい。例えば、特定の医療状態を有するユーザは、例外的に熟練している科学コミュニティとの協力から利益を得、場合によっては、薬剤割引又は現金払戻しのような追加の報酬を稼ぐことがある。
いくつかの実施形態では、パブリッシャ-サブスクライバ・ネットワークは、世界的なオファー市場を提供する。例えば、中央データ「市場」は、ユーザ・データに対して実行されることを目的とするクエリ(例えば、クエリ{年齢<25、ジェンダー=M、ロケーション=「ドバイ」})に基づいて、組織が「オファー」をブロードキャストすることができる場所で設立されてもよい。これらのオファーのいくつかの例は、製品、サービス、職務説明書、調査研究などに関するものでよい。これらのオファーは、ネットワーク上のノードによって周期的に送信されてもよく、関連付けられたクエリは、信頼できる壁で囲まれた環境内全てでの、バックグラウンドでのセキュアな復号の後、ユーザ・データに対して実行されてもよい。このクエリの条件が完全に満たされる場合、ユーザのデータ管理アプリケーションにおいてユーザに対してオファーが利用可能にされてもよい。条件が満たされない場合、オファーは、取り下げられもよい。したがって、組織は、誰にこれらのオファーが提示されたかを知らなくてもよく、オファーを受け入れたユーザの数のような集約されたデータ(例えば、統計情報)にアクセスすることができるだけでよい。ユーザは、例えば、様々なタイプのオファーからオプト・アウトすることができてもよい。この分散型システムのいくつかの特徴は、ユーザが格納し、クエリが使用されることが可能な、データ・フィールドの標準化及び非冗長性、相互運用性を含み得る(例えば、「年齢」は、データ内に一度及び一度だけ存在するはずであり、全てのクエリが年齢情報を必要とする場合、全てのクエリがこの値を使用するはずである)。いくつかの実施形態は、バックグラウンドでオファーを処理するための効率的なメカニズムを有してもよく、これにより、過剰な量のデータ管理アプリケーションのリソースを1つのクエリが消費せず、オファーが、漸増的に待ち行列に入り始めない。同様に、頻繁に使用されるデータに簡単にアクセスして復号するための、及び、分散型ネットワークからこのデータを毎回ダウンロードする必要がない、各ユーザのデータ管理アプリケーションにキャッシュが実装されてもよい。データ管理アプリケーションは、データを効率的に見つけて処理するために、ユーザのデータのメタデータも格納し得る。
図4に移ると、図4は、1又は2以上の実施形態によるフローチャートを示す。具体的には、図4は、1又は2以上の実施形態によるデータ・マーケットプレイスを運用するための一般的な方法を説明する。図4の1又は2以上のブロックは、図1A、図1B、図3A、及び図3Bにおいて説明されたように、1又は2以上の構成要素(例えば、パブリッシャ-サブスクライバ・ネットワークA(300))によって実施され得る。図4の様々なブロックが順次提示及び説明されるが、当業者は、ブロックのうちのいくつか又は全てが異なる順序で実行されてもよく、組み合わされても省略されてもよく、ブロックのうちのいくつか又は全てが並列に実行されてもよいことを理解するであろう。さらに、ブロックは、能動的又は受動的に実施されてもよい。
ブロック400において、1又は2以上の実施形態に従って、パブリッシング・ノードに対する様々なサブスクライバ・ノードの中のサブスクライバ・ノードとして、ユーザ・デバイスが指定される。
ブロック410において、1又は2以上の実施形態に従って、パブリッシャ-サブスクライバ・ネットワーキング・プロトコルを使用して、個人データに関するブロードキャスト要求が、様々なサブスクライバ・ノードに、パブリッシング・ノードによって送信される。
いくつかの実施形態では、ブロック400及び410は、例えば、異なる順序で実施されてもよい。ブロードキャスティングは、逆の順序でも行われることが可能である。電子掲示板アナロジでは、パブリッシングは、サブスクライバがないときでも、いくつかの広告に対して実施され得る。それでも、人物が電子掲示板の前を歩いて通りすぎ、メッセージを読むことがある。したがって、ブロードキャスト要求は、初期のブロードキャスト要求の後、いくつかのサブスクライバ・ノードが後日ブロードキャスト要求を取得し得るように、周期的に送信され得る。したがって、いくつかの実施形態では、サブスクライバ・ノードは、パブリッシャ-サブスクライバ・ネットワークから追加及び/又は除去されてもよい。
ブロック420において、1又は2以上の実施形態に従って、ユーザ・デバイスのデータ管理アプリケーション内の個人データが、ブロードキャスト要求に関連付けられた個人データに合致するかどうかが決定される。
ブロック430において、1又は2以上の実施形態に従って、ブロードキャスト要求に関する通知がユーザ・デバイスに表示される。ブロック430は、任意選択でもよい。例えば、ユーザは、通知を省略し得るいくつかのデータ要求に対する所定の応答を有してもよい。例として、ユーザは、パブリッシャが誕生日情報を要求しても気にしなくてよく、要求されたときにこれを自動的に提供してもよい。
ブロック440において、1又は2以上の実施形態に従って、ユーザ・デバイスがブロードキャスト要求を受け入れるかどうかが決定される。
ブロック450において、1又は2以上の実施形態に従って、暗号化された受諾メッセージがパブリッシング・ノードに、ユーザ・デバイスによって送信される。いくつかの実施形態では、例えば、受諾メッセージを送信するために1又は2以上の中間ノードが使用される。いくつかの実施形態では、近距離無線通信技法(例えば、Bluetooth)など、データを交換するために他の通信方法が使用される。したがって、ユーザ・データは、中間ノードがなくても、ピアツーピアで直接送信され得る。
ブロック460において、1又は2以上の実施形態に従って、ユーザ・デバイスに関連付けられた秘密暗号鍵を使用して、暗号化された受諾メッセージが、パブリッシング・ノードによって復号される。
分散型アイデンティティ及び分散型アプリケーション
いくつかの実施形態では、データ管理アプリケーションは、分散型アイデンティティを使用して、ユーザ・データを検証及び認証する。例えば、分散型アイデンティティ・システムは、分散型アイデンティティ標準に基づいてもよい。分散型アイデンティティは、分散型台帳技術を使用するなどして、分散型システムにリンクされた鍵のペアをユーザがセキュアに生成することを可能にするインターフェースを通じて、ユーザが分散型アイデンティティを制御することを可能にし得る。分散型アイデンティティは、例えば分散型ウェブ・アプリケーションによる使用のために、検証可能な分散型デジタル・アイデンティティを可能にする識別子の1つのタイプである分散型識別子(DID)を使用し得る。分散型アイデンティティは、以下の機能のうちの1又は2以上実施し得る。(1)分散型アイデンティティ・システムをサポートする第三者のアプリケーションに認証すること、(2)権限付与されたエンティティが人の個人的なデータストアへの署名及び書き込みを可能にすること、並びに、(3)分散型アイデンティティ・システムによって、署名されたデータを使用して、ユーザのアイデンティティに関する情報を証明すること。
いくつかの実施形態では、分散型アイデンティティ・システムは、ユーザのアイデンティティにリンクされた、暗号化された個人情報を、分散型ストレージ・システムに格納することに依存し、1又は2以上のAPIを使用して、分散型ストレージ・システムにおけるデータと対話し得る。いくつかの実施形態では、分散型アイデンティティは、公開鍵材料、認証記述子、及びサービス・エンドポイントを含む、分散型公開鍵インフラストラクチャ(DPKI:decentralized public key infrastructure)メタデータにリンクされたグローバルな一意の識別子でもよい。いくつかの実施形態では、現実の人々が分散型アイデンティティを使用することを可能にするアプリケーションである、DIDユーザ・エージェントが使用される。ユーザ・エージェント・アプリケーションは、DIDを作り出すこと、データ及びパーミッションを管理すること、並びにDIDリンクされた情報に署名/認証することを支援し得る。いくつかの実施形態では、分散型アイデンティティ・システムは、DIDドライバのコレクションを使用して、実装形態及び分散型システムにわたるDIDの探索及び解決の標準手段を提供し、特定のDIDに関連付けられたDPKIメタデータをカプセル化したDIDドキュメント・オブジェクト(DDO)を返すサーバであるDID汎用レゾルバを含む。いくつかの実施形態では、分散型アイデンティティ・システムは、DIDアイデンティティ・ハブを含み、DIDアイデンティティ・ハブは、クラウド及びエッジ・インスタンスで構成された、暗号化された個人データストアの複製されたメッシュでもよい。
いくつかの実施形態では、ユーザのデータ管理アプリケーションは、分散型アプリケーション(DApp)である。例えば、DAppは、ピアツーピア・ネットワークに接続された分散型サーバ上で動くバックエンド・コードを有し得る。フロントエンドのコードに関しては、コードは、IPFSのような分散型ストレージに格納され得る。DAppとは対照的に、集中型アプリケーションは、単一のセンタ又は単一のサーバにおいて動作し、全てのアクション及びデータ・ストレージを担う、ソフトウェア又はアプリケーション・モジュールを含み得る。いくつかの実施形態では、ユーザのデータ管理アプリケーションは、処理が複数のノードを介して共有されるが、意思決定が集中型され得る、分散型アプリケーションである。
いくつかの実施形態では、分散型システムは、分散型ストレージ・システムにデータを格納して共有するために、ピアツーピア・ネットワークを用いたインタープラネタリ・ファイルシステム(IPFS)プロトコルを使用する。例えば、IPFSは、コンテンツ・アドレッシングを使用して、様々なノードを接続するグローバルな名前空間において各ファイルを一意に識別し得る。したがって、IPFSは、全データの一部分を保持する分散型システム・ノードの周囲に構築され、これにより、ファイル・ストレージ及び共有機能を提供し得る。ネットワーク内の任意のユーザが、そのコンテンツ・アドレスによってファイルをサーブし得、ネットワーク内の他のピアが、他のノード(例えば、その分散型ハッシュ・テーブル(DHT)を有する他のノード)からコンテンツを見つけ、要求し得る。したがって、分散型ストレージ・システムは、複数の物理ノード(例えば、データ・ウェアハウスを有する異なるノードさえも)にまたがってデータを分割することができるインフラストラクチャを含み得る。
暗号化及び復号技術
様々な暗号化/復号技術に移ると、1つの技術は分割鍵暗号化である。具体的には、分割鍵暗号化は、秘密鍵が再構築されないように、秘密鍵がパーツに分割され、異なるロケーションで暗号化される処理であり得る。したがって、秘密鍵は、秘密鍵の一部分が傍受されて分析されてもセキュアであり得る。例えば、暗号鍵の分割は、パスワードを保護し、パスワード不要の認証体験を提供し得る。ユーザの観点からは、パスワードは、ユーザによってデバイスに入れられなくてもよい。バックグラウンドで暗号化システムが、ユーザ認証情報を再構築するために、異なるロケーションに格納されたキー・セグメント(例えば、パスワードの一部)の合致への要求を送信し得、ユーザのセッションが認証される。
閾値暗号文に移ると、暗号化システムは、データを暗号化して、ノードのクラスタの間に暗号化されたデータを分散させることによって、情報を保護し得る。暗号化されたデータは、公開鍵を使用して暗号化されてもよく、対応する秘密鍵は、関与するノードの間で共有されてもよい。暗号化されたメッセージを復号するために、又はメッセージに署名するために、(所定の閾値数より多くの)幾人かの当事者が、復号又は署名プロトコルにおいて協働しなければならない。
関数暗号化技法に移ると、いくつかの実施形態は、データ管理アプリケーション及び/又はデータ・マーケットプレイスの実装形態と共に、1又は2以上の関数暗号化方式を使用する。関数暗号化方式では、複数の関数復号鍵又は評価鍵と共に、例えば中央権限によって、マスタ・シークレット鍵が生成され得る。マスタ・シークレット鍵がメッセージ全体を復号する場合、評価鍵が、暗号化されていない出力を生じる、暗号化されたデータに対する所定の演算を実施してもよい。評価鍵は、マスタ・シークレット鍵から又は独立して導出されてもよく、クリア・テキスト内の基礎的なデータに所定の演算を適用することと同等の結果を取得し得る。所定の演算の例は、加算演算又は減算演算、及び、ブール演算などの論理演算などの、数学演算でもよい。例証として、変数aと変数bに関連付けられたデータが、公開鍵を使用して暗号化される場合、評価鍵は、変数aと変数bの加算(すなわち、a+b)というプレーンテキストの数学的結果を提供する加算演算を実施し得る。関数暗号文方式の例は、内積関数暗号化(IPFE:Inner Product Functional Encryption)方式、属性ベース暗号化(ABE:Attributed-based encryption)方式、及びアイデンティティ・ベースの暗号化方式を含む。IPFE方式では、メッセージのプレーンテキストがベクトルとして編成されてもよく、暗号化されたデータは、ベクトルと別のベクトルとの内積を計算するために、評価鍵と共に使用される。IPFE方式は、マルチ・クライアント方式、複数入力方式、及び/又は分散型関数隠蔽方式でもよい。ABE方式は、特定の属性に基づいて復号を管理する様々な属性並びに暗号鍵及び/又はポリシと、暗号化されたデータをリンクし得る。アイデンティティ・ベースの暗号化方式は、2つの文字列が等しい場合、暗号鍵が暗号文を復号し得るような文字列に、暗号文及び秘密鍵を関連付け得る。
準同型暗号化方式に移ると、準同型暗号化方式は、暗号化された出力を生じる、暗号化されたデータに対する演算の実施を可能にし得る。例えば、準同型暗号化を使用した計算は、シークレット鍵を使用して後で復号されるように、暗号化された形式のままでよい。準同型暗号化の例は、部分準同型暗号化(例えば、暗号化されたデータに対して実施されることになる所定の演算だけによって極秘データをセキュアに保つ)、Somewhat準同型暗号化(例えば、設定された回数だけ実施されることが可能な限定的な演算をサポートする)、及び完全準同型暗号化を含み得る。
分散型台帳技術
いくつかの実施形態では、中間ノードは、1又は2以上のタイプの分散型台帳技術を使用して実装される。分散型台帳技術の例は、ブロックチェーン、ハッシュグラフ、有向非巡回グラフ、及び、異なる分散型台帳技術の様々なハイブリッド実装形態を含み得る。具体的には、分散型台帳は、ネットワークを介して複数のノードを使用して実装され得、トランザクションを認証するために、どのエンティティ(例えば、任意の人物又は単に承認されたエンティティ)がノードを動作させることができるかを、中間ノード・プロトコルが決定し得る。異なる分散型台帳技術は、また、プルーフ・オブ・ワーク、プルーフ・オブ・ステーク、投票システム、及び/又はハッシュグラフなどの、使用される異なるコンセンサス・アルゴリズムを変化させ得る。したがって、分散型台帳技術は、特定の台帳への変更が、中間ノード・ネットワークの全体を通して反映されることを保証し得る(例えば、全てのネットワーク・メンバが、いずれかの特定のインスタンスにおいて全台帳のマッチするコピーを有し得る)。さらに、分散型台帳システムは、異なる承諾する当事者にまたがるデジタル情報の格納、記録、及び交換に関する能力を提供し得、集中化された権威又は記録保持者を必要としない。
いくつかの実施形態では、中間ノード・ネットワークは、許可済又は許可不要プロトコルを使用し得る。許可済プロトコルは、中央エンティティが、分散型台帳の修正などのために、中間ノード・ネットワークにアクセスするための、ノード間の許可の形式を使用する。その一方で、許可不要分散型台帳の場合、中間ノード・ネットワーク内のあらゆるノードが、台帳全体の完全且つ更新されたコピーにアクセスし得る。ハイブリッド分散型台帳技術(DLT:distributed ledger technology)では、中間ノード・プロトコルは、許可不要プロトコルと許可済プロトコル両方に基づく特徴を使用し得る。
ハッシュグラフ技術に移ると、ハッシュグラフは、タイムスタンプを使用して、分散型台帳に複数のトランザクションを格納し得る。分散型台帳におけるハッシュグラフ・レコードは「イベント」と呼ばれてもよく、トランザクションは、並列構造で格納される。ハッシュグラフ・システムは、中間ノード・ネットワーク上のノードが、トランザクション情報を修正し得ないことを保証し得る。有向非巡回グラフ(DAG:directed acyclic graph)に移ると、DAGは、コンセンサス・メカニズムを使用し、ここでは、ネットワーク上のあらゆるノードが、台帳上のトランザクションの証拠を提供し、トランザクションを開始し得る。トランザクションを開始するために、ノードは、これらの新しいトランザクションを確認するために、台帳上の少なくとも2つの前のトランザクションを検証しなければならない。
ブロックチェーン技術に移ると、ブロックチェーン・ネットワークは、ノード間通信、及び新しいブロックの認証のためのプロトコルに従うピアツーピア・ネットワークでよい。例えば、ブロックチェーン・ネットワークは、互いに知られていない2人以上の参加者が、トランザクションを適宜実施することを可能にし得る。具体的には、ブロックチェーン内のブロックは、ハッシュ関数によって暗号化され、保護され得る。新しいブロックチェーンがマイニングされているとき、ブロックチェーンは、ブロックチェーン・ネットワーク内の他のノードと同期され得る。分散化されることによって、ブロックチェーンを危険に晒すには、大多数のブロックチェーン・ノードとの協力を必要とし得、これにより、詐欺的なトランザクションの可能性を低減させる。ブロックチェーン上のトランザクションは、様々な公開鍵の間で情報を転送し得る。ブロックチェーン技術の中には、パブリック・ブロックチェーン・ネットワーク又はプライベート・ブロックチェーン・ネットワークを実装し得るものもある。パブリック・ブロックチェーン・ネットワークは、単一の場所に情報を格納しないことがあるが、ピアツーピア・ネットワーク全体に、格納された情報を分散させる。パブリック・ブロックチェーン・ネットワークは、次に、検証メカニズムを使用して、データの信憑性を決定し得る。例えば、ブロックチェーン・ノードが、分散型台帳の現在の状態について同意に達するコンセンサス方法が使用され得る。コンセンサス方法の例は、プルーフ・オブ・ワーク(PoW)メカニズム及びプルーフ・オブ・ステーク(PoS)メカニズムを含む。プライベート・ブロックチェーン・ネットワークに移ると、プライベート・ブロックチェーン・ネットワークは、1又は2以上のエンティティの制御下にある閉じたネットワークを実装し得る。例えば、プライベート・ブロックチェーン・ネットワークは、(例えば、ピアツーピア接続及び分散型ストレージを使用して)パブリック・ブロックチェーン・ネットワークと同様に動作し得る。それでも、プライベート・ブロックチェーン・ネットワークは、どのノードがネットワークに参加し得るかを限定し得る。したがって、プライベート・ブロックチェーン・ネットワークは、新しいノードを追加するために許可済プロトコルを適宜使用し得る。
さらに、ハイブリッド・ブロックチェーン技術は、プライベートとパブリック両方のブロックチェーン・ネットワークの要素を組み合わせ得る。例えば、ハイブリッド・ブロックチェーン・ネットワークは、公開許可不要システムと共に、プライベートの許可ベースのシステムを有し得る。例えば、ハイブリッド・ブロックチェーン・ネットワークは、どのデータがブロックチェーン内の特定のユーザにアクセス可能なだけであるか、及びどのデータが公開で利用可能であるかを制御するための機能を含み得る。例えば、ハイブリッド・ブロックチェーン内のトランザクション及びレコードは、公開にされなくてもよいが、スマート・コントラクトを通じてアクセスを許容することなどによって、要求されたときに検証され得る。極秘情報は、極秘情報の検証を依然として可能にしながら、ネットワークの内側で保持され得る。同様に、ハイブリッド・ブロックチェーン技術は、また、ハイブリッド・ブロックチェーン・ネットワークを所有するプライベート・エンティティがトランザクションを変えるのを防ぎ得る。
別のブロックチェーン技術は、コンソーシアム・ブロックチェーンである「連合型ブロックチェーン」とも呼ばれる)。コンソーシアム・ブロックチェーンは、プライベート及びパブリック・ブロックチェーンの特徴を有するハイブリッド・ブロックチェーンと同様である。それでも、複数のエンティティからのメンバは、中間ネットワーク上で協働作業を行ってもよい。したがって、コンソーシアム・ブロックチェーンは、例えば、プライベート・ブロックチェーン・ネットワークを介した制御を単一のエンティティが行わないようにするために、異なるグループへのアクセスを制限されたプライベート・ブロックチェーンでもよい。例えば、認証ノード及びメンバ・ノードなどの、プリセット・ノードによって、コンセンサス手順が制御され得る。認証ノードは、トランザクションを開始し、受け取り、認証し得るが、メンバ・ノードは、トランザクションを受け取るか開始し得る。
いくつかの実施形態では、分散型台帳技術は、分散型台帳を実装するためのメイン・チェーンを含む。それでも、各アプリケーションに対して別個のチェーンを使用するいくつかの実施形態が想定され、ここで、個々のチェーンは、特定のエポック時間/数のトランザクションの後、メイン・チェーン上のそれぞれのトランザクションを認証し得る。
コンピュータ・システム
実施形態は、コンピューティング・システム上で実行され得る。モバイル、デスクトップ、サーバ、ルータ、スイッチ、組込デバイス、又は他のタイプのハードウェアの任意の組合せが使用され得る。例えば、図5Aに示されているように、コンピューティング・システム(500)は、1又は2以上のコンピュータ・プロセッサ(502)、非永続ストレージ(504)(例えば、ランダム・アクセス・メモリ(RAM)、キャッシュ・メモリなどの、揮発性メモリ)、永続ストレージ(506)(例えば、ハードディスク、コンパクト・ディスク(CD)ドライブ又はデジタル・バーサタイル・ディスク(DVD)ドライブなどの光学ドライブ、フラッシュ・メモリなど)、通信インターフェース(512)(例えば、Bluetoothインターフェース、赤外線インターフェース、ネットワーク・インターフェース、光学インターフェースなど)、並びに非常に多くの他の要素及び機能を含み得る。
コンピュータ・プロセッサ(502)は、命令を処理するための集積回路でもよい。例えば、コンピュータ・プロセッサは、プロセッサの1又は2以上のコア又はマイクロ・コアでもよい。コンピューティング・システム(500)は、また、タッチスクリーン、キーボード、マウス、マイクロフォン、タッチパッド、電子ペン、又は他の任意のタイプの入力デバイスなどの、1又は2以上の入力デバイス(510)を含み得る。
通信インターフェース(512)は、ネットワーク(図示せず)(例えば、ローカル・エリア・ネットワーク(LAN)、インターネットなどのワイド・エリア・ネットワーク(WAN)、モバイル・ネットワーク、若しくは他の任意のタイプのネットワーク)に、及び/又は別のコンピューティング・デバイスなどの別のデバイスに、コンピューティング・システム(500)を接続するための集積回路を含み得る。
さらに、コンピューティング・システム(500)は、画面(例えば、液晶ディスプレイ(LCD)、プラズマ・ディスプレイ、タッチスクリーン、陰極線管(CRT)モニタ、プロジェクタ、若しくは他の表示デバイス)、プリンタ、外部ストレージ、又は任意の他の出力デバイスなどの、1又は2以上の出力デバイス(508)を含み得る。出力デバイスのうちの1又は2以上は、入力デバイスと同じでも異なってもよい。入出力デバイスは、コンピュータ・プロセッサ(502)、非永続ストレージ(504)、及び永続ストレージ(506)にローカル又はリモートに接続されてもよい。多くの異なるタイプのコンピューティング・システムが存在し、前述の入出力デバイスは、他の形式をしていてもよい。
本開示の実施形態を実施するためのコンピュータ可読プログラム・コードの形式のソフトウェア命令は、CD、DVD、ストレージ・デバイス、ディスケット、テープ、フラッシュ・メモリ、物理メモリ、又は任意の他のコンピュータ可読ストレージ媒体などの、非一時的コンピュータ可読媒体に、全体的又は部分的に、一時的又は永久に格納されてもよい。具体的には、ソフトウェア命令は、プロセッサによって実行されると、本開示の1又は2以上の実施形態を実施するように構成されたコンピュータ可読プログラム・コードに対応し得る。
図5Aのコンピューティング・システム(500)は、コンピュータ・ネットワークに接続されても、その一部でもよい。例えば、図5Bに示されているように、コンピュータ・ネットワーク(520)は、複数のノード(例えば、ノードX(522)、ノードY(524))を含み得る。各ノードは、図5Aに示されたコンピューティング・システムなどの、コンピューティング・システムに対応し得るか、組み合わされたノードのグループは、図5Aに示されたコンピューティング・システムに対応し得る。例として、本開示の実施形態は、他のノードに接続された分散型システムのノードで実施されてもよい。別の例として、本開示の実施形態は、複数のノードを有する分散コンピューティング・システムで実施されてもよく、この場合、本開示の各部分は、分散コンピューティング・システム内の異なるノード上にあってもよい。さらに、前述のコンピューティング・システム(500)の1又は2以上の要素は、遠隔地にあり、ネットワークを介して他の要素に接続されてもよい。
図5Bに示されていないが、ノードは、バックプレーンを介して他のノードに接続されたサーバ・シャシにおけるブレードに対応し得る。別の例として、ノードは、データ・センタにおけるサーバに対応し得る。別の例として、ノードは、共有メモリ及び/又はリソースを有する、コンピュータ・プロセッサ、又はコンピュータ・プロセッサのマイクロ・コアに対応し得る。
コンピュータ・ネットワーク(520)におけるノード(例えば、ノードX(522)、ノードY(524))は、クライアント・デバイス(526)にサービスを提供するように構成され得る。例えば、ノードは、クラウド・コンピューティング・システムの一部でもよい。ノードは、クライアント・デバイス(526)から要求を受け取り、応答をクライアント・デバイス(526)に送信するための機能を含み得る。クライアント・デバイス(526)は、図5Aに示されたコンピューティング・システムなどの、コンピューティング・システムでもよい。さらに、クライアント・デバイス(526)は、本開示の1又は2以上の実施形態の全て又は一部分を含み及び/又は実施し得る。
図5A及び図5Bで説明されたコンピューティング・システム又はコンピューティング・システムのグループは、本明細書で開示された様々な動作を実施するための機能を含み得る。例えば、コンピューティング・システムは、同じ又は異なるシステム上のプロセス間の通信を実施し得る。能動又は受動通信のいくつかの形式を採用する様々なメカニズムが、同じデバイス上のプロセス間のデータの交換を容易にし得る。これらのプロセス間通信の代表的な例は、ファイル、信号、ソケット、メッセージ・キュー、パイプライン、セマフォ、共有メモリ、メッセージ・パッシング、及びメモリ・マップド・ファイルの実装形態を含むがこれらに限定されない。2つのこれらの非限定的な例に関するさらなる詳細が下記で提供される。
クライアント-サーバ・ネットワーキング・モデルに基づくと、ソケットは、同じデバイス上のプロセス間の双方向データ転送を可能にするインターフェース又は通信チャネル・エンド・ポイントとして機能し得る。まず、クライアント-サーバ・ネットワーキング・モデルに従って、サーバ・プロセス(例えば、データを提供するプロセス)が、第1のソケット・オブジェクトを作り出してもよい。次に、サーバ・プロセスが、第1のソケット・オブジェクトを結びつけ、これにより、第1のソケット・オブジェクトを一意の名前及び/又はアドレスに関連付ける。第1のソケット・オブジェクトを作り出し、結びつけた後、サーバ・プロセスは、次に、1又は2以上のクライアント・プロセス(例えば、データを求めるプロセス)から着信する接続要求を待ち、リッスンする。この時点では、クライアント・プロセスがサーバ・プロセスからデータを取得したいと思ったとき、クライアント・プロセスは、第2のソケット・オブジェクトを作り出すことによってスタートする。クライアント・プロセスは、次に、少なくとも第2のソケット・オブジェクト、並びに、第1のソケット・オブジェクトに関連付けられた一意の名前及び/又はアドレスを含む接続要求を生成することに進む。クライアント・プロセスは、次に、接続要求をサーバ・プロセスに送信する。可用性に応じて、サーバ・プロセスは、クライアント・プロセスとの通信チャネルを確立して、接続要求を受け入れてもよく、又は他の動作のハンドリングで忙しいサーバ・プロセスは、サーバ・プロセスの準備ができるまで、接続要求をバッファの待ち行列に入れてもよい。確立された接続は、通信が始まり得ることをクライアント・プロセスに知らせる。これに応答して、クライアント・プロセスは、クライアント・プロセスが取得したいと思うデータを指定するデータ要求を生成し得る。データ要求は、その後、サーバ・プロセスに送信される。データ要求を受け取ると、サーバ・プロセスは、要求を分析し、要求されたデータを集める。最後に、サーバ・プロセスは、次に、少なくとも要求されたデータを含むリプライを生成し、リプライをクライアント・プロセスに送信する。データは、より一般には、データグラム、又はキャラクタ(例えば、バイト)のストリームとして、転送されてもよい。
共有メモリは、複数のプロセスによってデータが通信及び/又はアクセスされ得るメカニズムを実現させるための仮想メモリ空間の配分を指す。共有メモリを実装する際に、初期化プロセスが、最初に、永続又は非永続ストレージに共有可能セグメントを作り出す。作成後、初期化プロセスは、次に、共有可能セグメントをマウントし、その後、初期化プロセスに関連付けられたアドレス空間に共有可能セグメントをマッピングする。マウントに続いて、初期化プロセスは、共有可能セグメントとの間でデータをさらに読み書きし得る1又は2以上の権限付与されたプロセスへのアクセス許可を識別し、与えることに進む。1つのプロセスによって共有可能セグメント内のデータに対して行われる変更は、共有可能セグメントに同様にリンクされた他のプロセスに直接影響を及ぼし得る。さらに、権限付与されたプロセスのうちの1つが共有可能セグメントにアクセスするとき、共有可能セグメントは、この権限付与されたプロセスのアドレス空間にマッピングする。しばしば、初期化プロセス以外の1つの権限付与されたプロセスが、いつでも共有可能セグメントをマウントし得る。
本開示の範囲から逸脱することなく、プロセス間で、本出願において説明された様々なデータなどのデータを共有するために、他の技法が使用されてもよい。プロセスは、同じ又は異なるアプリケーションの一部でよく、同じ又は異なるコンピューティング・システム上で実行し得る。
プロセス間でデータを共有するのではなく、又はこれに加えて、本開示の1又は2以上の実施形態を実施するコンピューティング・システムは、ユーザからデータを受け取るための機能を含み得る。例えば、1又は2以上の実施形態では、ユーザは、ユーザ・デバイス上のグラフィカル・ユーザ・インターフェース(GUI)を介してデータを投入し得る。データは、ユーザが1又は2以上のグラフィカル・ユーザ・インターフェース・ウィジェットを選択すること、又は、タッチパッド、キーボード、マウス、若しくは任意の他の入力デバイスを使用して、テキスト及び他のデータをグラフィカル・ユーザ・インターフェース・ウィジェットに挿入することによって、グラフィカル・ユーザ・インターフェースを介して投入されてもよい。特定の項目を選択することに応答して、特定の項目に関する情報が、コンピュータ・プロセッサによって永続又は非永続ストレージから取得され得る。ユーザによる項目の選択時、特定の項目に関する取得されたデータの内容は、ユーザの選択に応じてユーザ・デバイスに表示されてもよい。
上記で説明された技法を使用することなどによって、又はストレージから、データが取得されると、コンピューティング・システムは、本開示の1又は2以上の実施形態を実施する際に、取得されたデータから1又は2以上のデータ項目を抽出し得る。例えば、抽出は、図5Aのコンピューティング・システム(500)によって以下のように実施され得る。まず、データの編成パターン(例えば、文法、スキーマ、レイアウト)が決定され、編成パターンは、以下のうちの1又は2以上に基づき得る。ポジション(例えば、ビット若しくはカラム位置、データ・ストリーム内のN番目のトークンなど)、属性(属性は、1若しくは2以上の値に関連付けられる)、又は階層/木構造(詳細の異なるレベルにおけるノードのレイヤからなる-ネストされたパケット・ヘッダ若しくはネストされたドキュメント・セクションにおけるものなど)。次に、データ・シンボルの未加工未処理のストリームが、編成パターンのコンテキストで、トークン(各トークンは、関連付けられたトークン「タイプ」を有し得る)のストリーム(又はレイヤ化された構造)に構文解析される。
次に、トークン・ストリーム又は構造から1又は2以上のデータ項目を抽出するために抽出尺度が使用され、抽出尺度は、1又は2以上のトークン(又はレイヤ化された構造からのノード)を抽出するために、編成パターンに従って処理される。位置ベースのデータについては、抽出尺度によって識別された位置におけるトークンが抽出される。属性/値ベースのデータについては、抽出尺度を満たす属性に関連付けられたトークン及び/又はノードが抽出される。階層式/レイヤ化されたデータについては、抽出尺度に合致するノードに関連付けられたトークンが抽出される。抽出尺度は、識別子の文字列のように簡単でよく、又は、構造化されたデータ・リポジトリに提示されたクエリでもよい(データ・リポジトリは、XMLなどのデータベース・スキーマ又はデータ・フォーマットに従って編成されてもよい)。
抽出されたデータは、コンピューティング・システムによるさらなる処理のために使用されてもよい。例えば、図5Aのコンピューティング・システムは、本開示の1又は2以上の実施形態を実施しながら、データ比較を実施してもよい。データ比較は、2つ以上のデータ値(例えば、A、B)を比較するために使用されてもよい。例えば、1又は2以上の実施形態は、A>B、A=B、A!=B、A<Bなどであるかどうかを決定し得る。比較は、比較に関連した演算を指定するA、B、及びオペコードを、算術論理演算装置(ALU)(すなわち、2つのデータ値に対する算術的な及び/又はビット単位の論理演算を実施する回路機器)に投入することによって実施され得る。ALUは、演算の数値結果、及び/又は、数値結果に関連した1若しくは2以上の状態フラグを出力する。例えば、状態フラグは、数値結果が正の数、負の数、ゼロなどであるかどうかを示し得る。正規のオペコードを選択すること、並びに次に、数値結果及び/又は状態フラグを読み込むことによって、比較が実行され得る。例えば、A>Bであるかどうかを決定するために、BがAから減算され得(すなわち、A-B)、状態フラグは、結果が正であるかどうかを決定するために読み込まれ得る(すなわち、A>Bである場合、A-B>0である)。1又は2以上の実施形態では、Bは、閾値であると考えられもよく、Aは、ALUを使用して決定されたように、A=B又はA>Bである場合に閾値を満たすものと見なされる。本開示の1又は2以上の実施形態では、A及びBはベクトルでもよく、AとBとの比較は、ベクトルAの第1の要素をベクトルBの第1の要素と、ベクトルAの第2の要素をベクトルBと第2の要素と比較することなどを含む。1又は2以上の実施形態では、A及びBが文字列の場合、文字列のバイナリ値が比較されてもよい。
図5Aのコンピューティング・システムは、データ・リポジトリを実装してもよく、及び/又はこれに接続されてもよい。例えば、データ・リポジトリの1つのタイプは、データベースである。データベースは、データの取り出し、修正、再編成、及び削除を容易にするように構成された情報のコレクションである。データベース管理システム(DBMS)は、データベースを定義する、作り出す、問い合わせる、更新する、又は運営するためのインターフェースをユーザに提供するソフトウェア・アプリケーションである。
ユーザ、又はソフトウェア・アプリケーションは、文又はクエリをDBMSに投入し得る。次に、DBMSは、文を解釈する。文は、情報を要求すること、文を更新すること、文を作り出すこと、文を削除することなどのための選択文でもよい。その上、文は、データ、又はデータ・コンテナ(データベース、テーブル、レコード、カラム、ビューなど)、識別子、条件(比較演算子)、関数(例えば、参加、完全参加、カウント、平均など)、ソート(例えば、昇順、降順)、又はその他を指定するパラメータを含み得る。DBMSは、文を実行し得る。例えば、DBMSは、文に応答するために、メモリ・バッファ、読込み、書込み、削除、又はその任意の組合せのためのファイルのリファレンス又はインデックスにアクセスし得る。DBMSは、永続又は非永続ストレージからデータをロードし、計算を実施してクエリに応答し得る。DBMSは、ユーザ又はソフトウェア・アプリケーションに結果を返し得る。
図5Aのコンピューティング・システムは、比較及び他の処理の結果など、未加工及び/又は処理済のデータを提示するための機能を含み得る。例えば、データを提示することは、様々な提示方法を通じて実現され得る。具体的には、データは、コンピューティング・デバイスによって提供されたユーザ・インターフェースを通じて提示され得る。ユーザ・インターフェースは、ハンドヘルド・コンピュータ・デバイスのコンピュータ・モニタ又はタッチスクリーンなどの、表示デバイスに情報を表示するGUIを含み得る。GUIは、どのデータが示されるか、及び、どのようにデータがユーザに提示されるかを編成する様々なGUIウィジェットを含み得る。さらに、GUIは、例えば、テキストを通じて実際のデータ値として提示されたデータ、又は、コンピューティング・デバイスによってデータ・モデルの視覚化などを通じてデータの視覚表現に変えられたデータなどの、データを直接的にユーザに提示し得る。
例えば、GUIは最初に、特定のデータ・オブジェクトがGUI内で提示されることを要求するソフトウェア・アプリケーションから通知を取得し得る。次に、GUIは、例えば、データ・オブジェクト・タイプを識別するデータ・オブジェクト内のデータ属性からデータを取得することによって、特定のデータ・オブジェクトに関連付けられたデータ・オブジェクト・タイプを決定し得る。次に、GUIは、例えば、データ・オブジェクト・クラスに対するソフトウェア・フレームワークによって、又はこのデータ・オブジェクト・タイプを提示するためにGUIによって定義された任意のローカル・パラメータに従って指定されたルールなど、このデータ・オブジェクト・タイプを表示するために指定された任意のルールを決定し得る。最後に、GUIは、特定のデータ・オブジェクトからデータ値を取得し、このデータ・オブジェクト・タイプのために指定されたルールに従って表示デバイス内でデータ値の視覚表現を描写し得る。
データは、また、様々なオーディオ方法を通じて提示されてもよい。具体的には、データは、オーディオ・フォーマットに変えられ、コンピューティング・デバイスに動作可能なように接続された1又は2以上のスピーカを通じて音として提示されてもよい。
データは、また、触感方法を通じてユーザに提示されてもよい。例えば、触感方法は、コンピューティング・システムによって生成された振動又は他の物理信号を含んでもよい。例えば、データは、データを通信するために振動の所定の期間及び強度でハンドヘルド・コンピュータ・デバイスによって生成された振動を使用してユーザに提示されてもよい。
機能の上記の説明は、図5Aのコンピューティング・システム、並びに図5Bのノード及び/又はクライアント・デバイスによって実施される機能のほんのわずかの例を提示する。本開示の1又は2以上の実施形態を使用して他の機能が実施されてもよい。
技術は、限られた数の実施形態に関連して説明されてきたが、本開示の利益を有する当業者は、本明細書で開示されたような本技術の範囲から逸脱しない他の実施形態が考案可能であることを理解するであろう。