(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-19
(54)【発明の名称】分散台帳を用いる耐改竄イベントソーシング用の方法及びシステム
(51)【国際特許分類】
G06F 21/64 20130101AFI20241112BHJP
H04L 9/32 20060101ALI20241112BHJP
【FI】
G06F21/64
H04L9/32 200Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024526665
(86)(22)【出願日】2022-10-03
(85)【翻訳文提出日】2024-06-24
(86)【国際出願番号】 US2022045502
(87)【国際公開番号】W WO2023080973
(87)【国際公開日】2023-05-11
(32)【優先日】2021-11-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】500041363
【氏名又は名称】マスターカード インターナシヨナル インコーポレイテツド
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100224683
【氏名又は名称】齋藤 詩織
(72)【発明者】
【氏名】セバスティアン ル キャロネック
(57)【要約】
耐改竄イベントソーシングを介してオブジェクトの状態について検証する方法は:処理サーバのレシーバによって、コンピューティングオブジェクトについての状態データと、コンピューティングオブジェクトと関連付けられている識別値とを受信するステップと;処理サーバのプロセッサによって、一方向暗号化関数を受信された状態データに適用して比較ハッシュ値を生成するステップと;処理サーバのプロセッサによって、識別値と共にブロックチェーン内にて記憶されている公開されたハッシュ値を識別するステップと;処理サーバのプロセッサによって、生成された比較ハッシュ値と識別された公開されたハッシュ値との一致に基づいて状態データによってコンピューティングオブジェクトの状態を検証するステップとを含む。
【特許請求の範囲】
【請求項1】
オブジェクトについての耐改竄イベントソーシングの方法であって、
処理サーバのレシーバによって、コンピューティングオブジェクトについての状態データと、前記コンピューティングオブジェクトと関連付けられている識別値とを受信するステップと、
前記処理サーバのプロセッサによって、一方向暗号化関数を、前記受信された状態データに適用してハッシュ値を生成するステップと、
前記処理サーバのトランスミッタによって、前記生成されたハッシュ値と前記識別値とをブロックチェーン上で公開するステップと、
を含む、方法。
【請求項2】
請求項1に記載の方法において、さらに、
前記一方向暗号化関数を適用する前に、前記処理サーバの前記プロセッサによって、前記状態データをオブジェクト記法表現に転換するステップを含む、方法。
【請求項3】
請求項2に記載の方法において、前記オブジェクト記法表現はJSON(JavaScript Object Notation)表現である、方法。
【請求項4】
請求項2に記載の方法において、さらに、
前記一方向暗号化関数を適用する前に、前記処理サーバの前記プロセッサによって、前記転換された状態データを正準表現に変換するステップを含む、方法。
【請求項5】
請求項4に記載の方法において、前記転換された状態データはJSON(JavaScript Object Notation)の正規化スキーム(JCS、JavaScript Object Notation Canonicalization Scheme)に準拠して変換される、方法。
【請求項6】
耐改竄イベントソーシングを介してオブジェクトの状態について検証する方法であって、
処理サーバのレシーバによって、コンピューティングオブジェクトについての状態データと、前記コンピューティングオブジェクトと関連付けられている識別値とを受信するステップと、
前記処理サーバのプロセッサによって、比較ハッシュ値を生成するために、一方向暗号化関数を、前記受信された状態データに適用するステップと、
前記処理サーバの前記プロセッサによって、前記識別値と共にブロックチェーン内にて記憶されている公開されたハッシュ値を識別するステップと、
前記処理サーバの前記プロセッサによって、前記生成された比較ハッシュ値と前記識別された公開されたハッシュ値との一致に基づいて、前記状態データに従う前記コンピューティングオブジェクトの状態を検証するステップと、
を含む、方法。
【請求項7】
請求項6に記載の方法において、さらに、
前記処理サーバによって、前記受信するステップ、前記適用するステップ、前記識別するステップ、及び前記検証するステップを前記コンピューティングオブジェクトの複数の状態について反復するステップであって、前記複数の状態の各状態は状態データについての異なるセットを含む、ステップを含む、方法。
【請求項8】
請求項7に記載の方法において、
前記コンピューティングオブジェクトの前記状態についての検証が、前記複数の状態の1つについて失敗し、
前記方法は、さらに、
失敗した検証を生じさせた前記複数の状態の前記1つを識別する通知メッセージを、前記処理サーバのトランスミッタによって送信するステップを含む、方法。
【請求項9】
オブジェクトについての耐改竄イベントソーシングのシステムであって、
処理サーバを含み、該処理サーバは、
コンピューティングオブジェクトについての状態データと、前記コンピューティングオブジェクトと関連付けられている識別値とを受信するレシーバと、
一方向暗号化関数を、前記受信された状態データに適用してハッシュ値を生成するプロセッサと、
前記生成されたハッシュ値と前記識別値とをブロックチェーン上で公開するトランスミッタと、を含む、システム。
【請求項10】
請求項9に記載のシステムにおいて、前記処理サーバの前記プロセッサは、前記一方向暗号化関数を適用する前に、前記状態データをオブジェクト記法表現に転換する、システム。
【請求項11】
請求項10に記載のシステムにおいて、前記オブジェクト記法表現はJSON(JavaScript Object Notation)表現である、システム。
【請求項12】
請求項10に記載のシステムにおいて、前記処理サーバの前記プロセッサは、前記一方向暗号化関数を適用する前に、前記転換された状態データを正準表現に変換する、システム。
【請求項13】
請求項12に記載のシステムにおいて、前記転換された状態データはJSON(JavaScript Object Notation)の正規化スキーム(JCS、JavaScript Object Notation Canonicalization Scheme)に準拠して変換される、システム。
【請求項14】
耐改竄イベントソーシングを介してオブジェクトの状態について検証するシステムであって、
処理サーバを含み、該処理サーバは、
コンピューティングオブジェクトについての状態データと、前記コンピューティングオブジェクトと関連付けられている識別値とを受信するレシーバと、
プロセッサであって、
比較ハッシュ値を生成するために、一方向暗号化関数を、前記受信された状態データに適用することと、
前記識別値と共にブロックチェーン内にて記憶されている公開されたハッシュ値を識別することと、
前記生成された比較ハッシュ値と前記識別された公開されたハッシュ値との一致に基づいて、前記状態データに従う前記コンピューティングオブジェクトの状態を検証することと、を実行するプロセッサと、を含む、システム。
【請求項15】
請求項14に記載のシステムにおいて、前記処理サーバは、前記受信、前記適用、前記識別、及び前記検証を前記コンピューティングオブジェクトの複数の状態について反復し、前記複数の状態の各状態は状態データについての異なるセットを含む、システム。
【請求項16】
請求項15に記載のシステムにおいて、
前記コンピューティングオブジェクトの前記状態についての検証が、前記複数の状態の1つについて失敗し、
前記処理サーバはさらに、失敗した検証を生じさせた前記複数の状態の前記1つを識別する通知メッセージを送信するトランスミッタを含む、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はイベントソーシングに関するのであり、特に、暗号化関数及びブロックチェーン等の分散台帳の使用を介しての、アプリケーション又はシステム等のコンピューティングオブジェクトについて耐改竄態様でのイベントソーシングに関する。
【0002】
関連出願の相互参照
本出願は、2021年11月4日に出願された米国特許出願第17/518,755号の利益を主張するのであり、その全内容は全ての用途に関して参照によって取り込まれる。
【背景技術】
【0003】
イベントソーシングシステムは入ってくるイベントを処理するのであり、各イベントがシステム(例えば、アプリケーションプログラム、オペレーティングシステム、又はコンピューティングシステム全体等)の結果的状態に変化をもたらすものとする。システムの再構築(rebuild)が必要となったり又は過去の構成を復元(restore)することが必要となったりする場合等、イベントを遡及(retrace)できるようにするために、多くの場合においてイベントの記録が記憶される。もっとも、記録を回復する(recovery)ことが可能な場合にのみイベントの記録が有用となる。
【0004】
また、イベント履歴内のイベントが破損又は悪意等を介して改竄された場合、システムの結果的状態は破損していることとなる。一部の場合では、特に悪意を伴う場合、そのような破損の検出は困難又は不可能となり得るのであり、容易に覚知可能ではない脆弱性又は他の問題がオブジェクトに残されることとなり得る。その結果、コンピューティングオブジェクトの状態に関する情報は、耐改竄性を有する場所に記憶されることを要し、また、データに対する任意の改竄が容易に識別され得る態様で記憶されることを要する。もっとも、現時点では、そのようなタスクを達成するシステムは開発されていない。
【0005】
したがって、コンピューティングオブジェクトの状態データについての記憶及び検証に関して技術的改良をもたらす必要がある。
【発明の概要】
【0006】
本開示は、オブジェクトについての耐改竄イベントソーシング及び耐改竄イベントソーシングを介してオブジェクトの状態を検証するためのシステム及び方法を提供する。コンピューティングオブジェクトについての状態情報は、オブジェクトに影響を及ぼす各イベントの後に又は他の規則的間隔を経て取得される。状態情報は、適宜適切なフォーマットへと転換及び変換されるのであり、また、変換済み状態データに対して適用される暗号学的ハッシュ関数を有する。この結果、ブロックチェーン等の分散台帳に記憶されているハッシュ値並びにタイムスタンプ又はイベント識別子等のコンピューティングオブジェクト及び/又は現在の状態と関連付けられている識別子がもたらされる。そして、任意の間隔にてオブジェクトの状態について、ハッシュ関数をオブジェクトの状態に適用して、そして結果として得られる値をブロックチェーン内にて記憶されている値と比較することによって検証することができる。ブロックチェーンが不変であるが故に、状態データを改竄することはできず、任意の態様にて変えることができない。また、データをハッシュ化することによって、ブロックチェーンがパブリックな状態であってもデータが保護されるのであり、さらには、状態データが提供されている場合、任意のエンティティが状態を検証することが可能になり、より優れたセキュリティ及び信頼性がもたらされる。さらに、単一のオブジェクトについて状態データの履歴がブロックチェーンに記録されていることによって、破損してしまったオブジェクトのあるバージョンをエンティティが有している場合、検証が失敗する所まで各間隔について状態データを検証していくことによって破損ポイントを迅速に識別することができる。したがって、オブジェクトについての状態データは耐改竄性を有しており、完全な不変性を伴って検証及びエラー検出を可能にする。
【0007】
オブジェクトについての耐改竄イベントソーシングの方法は:処理サーバのレシーバによって、コンピューティングオブジェクトについての状態データと、前記コンピューティングオブジェクトと関連付けられている識別値とを受信するステップと;前記処理サーバのプロセッサによって、一方向暗号化関数を前記受信された状態データに適用してハッシュ値を生成するステップと;前記処理サーバのトランスミッタによって、前記生成されたハッシュ値と前記識別値とをブロックチェーン上で公開するステップとを含む。
【0008】
耐改竄イベントソーシングを介してオブジェクトの状態について検証する方法は:処理サーバのレシーバによって、コンピューティングオブジェクトについての状態データと、前記コンピューティングオブジェクトと関連付けられている識別値とを受信するステップと;処理サーバのプロセッサによって、比較ハッシュ値を生成するために、一方向暗号化関数を、受信された状態データに適用するステップと;処理サーバのプロセッサによって、識別値と共にブロックチェーン内にて記憶されている公開されたハッシュ値を識別するステップと;前記処理サーバの前記プロセッサによって、前記生成された比較ハッシュ値と前記識別された公開されたハッシュ値との一致に基づいて、前記状態データに従う前記コンピューティングオブジェクトの状態を検証するステップとを含む。
【0009】
オブジェクトについての耐改竄イベントソーシングのシステムは:処理サーバを含み、該処理サーバは、コンピューティングオブジェクトについての状態データと、前記コンピューティングオブジェクトと関連付けられている識別値とを受信するレシーバと、一方向暗号化関数を前記受信された状態データに適用してハッシュ値を生成するプロセッサと、前記生成されたハッシュ値と前記識別値とをブロックチェーン上で公開するトランスミッタと、を含む。
【0010】
耐改竄イベントソーシングを介してオブジェクトの状態について検証するシステムは:処理サーバを含み、該処理サーバは、コンピューティングオブジェクトについての状態データと、前記コンピューティングオブジェクトと関連付けられている識別値とを受信するレシーバと、プロセッサであって、比較ハッシュ値を生成するために、一方向暗号化関数を、前記受信された状態データに適用することと、前記識別値と共にブロックチェーン内にて記憶されている公開されたハッシュ値を識別することと、前記生成された比較ハッシュ値と前記識別された公開されたハッシュ値との一致に基づいて、前記状態データに従う前記コンピューティングオブジェクトの状態を検証することと、を実行するプロセッサと、を含む。
【図面の簡単な説明】
【0011】
本開示の範囲は、添付の図面と共に解釈されると、例示的な実施形態についての下記の詳細な記載から最も良く理解される。図面には次の図が含まれる。
【0012】
【
図1】例示的実施形態による、耐改竄イベントソーシングのための高レベルシステムアーキテクチャを示すブロック図である。
【
図2】例示的実施形態による、コンピューティングオブジェクトについての耐改竄イベントソーシングを可能にするための
図1のシステムの処理サーバを示すブロック図である。
【
図3】例示的実施形態による、
図1のシステム内の処理サーバによる、コンピューティングオブジェクトについての状態データを耐改竄態様で記憶するための処理を示す流れ図である。
【
図4】例示的実施形態による、
図1のシステムにて耐改竄イベントソーシングを用いてオブジェクトの状態について検証するための処理を示す流れ図である。
【
図5】例示的実施形態による、オブジェクトについての耐改竄イベントソーシングのための例示的方法を示す流れ図である。
【
図6】例示的実施形態による、耐改竄イベントソーシングを介してオブジェクトの状態について検証するための例示的方法を示す流れ図である。
【
図7】例示的な実施形態による、コンピュータシステムアーキテクチャを示すブロック図である。
【0013】
本開示の更なる応用分野は、下記の詳細な説明から自明である。例示的実施形態の詳細な説明は、例示目的のみを意図しており、必ずしも本開示の範囲を制限することを意図していない。
【発明を実施するための形態】
【0014】
用語解説
ブロックチェーン:ブロックチェーンを基礎とした通貨の全てのトランザクションの公開台帳(public ledger)である。1つ以上のコンピューティング装置は、ブロックチェーンネットワークを含んでよく、これはブロックチェーンにおけるブロックの一部としてトランザクションを処理及び記録するよう構成されてよい。一旦ブロックが完成すると、当該ブロックはブロックチェーンへ追加され、それによってトランザクション記録が更新される。多くの実施形態では、ブロックチェーンは時系列順のトランザクションの台帳であってよいし、ブロックチェーンネットワークによる使用に適した任意の他の順序で提示されてもよい。いくつかの実施形態では、ブロックチェーンで記録されたトランザクションは、宛先アドレスと通貨額とを含んでよい。これによりブロックチェーンは、どれほどの通貨が特定のアドレスに帰属するかを記録する。いくつかの実施形態では、トランザクションは金融関連であってもそうでなくてもよいし、追加情報又は異なる情報(例えばソースアドレス、タイムスタンプ等)を含むことができる。いくつかの実施形態では、ブロックチェーンは追加的に又は代替的に、ほぼ任意の種別のデータをトランザクションの形態として含んでよく、これは改ざん又は改訂に対して強化された継続的に増加するデータレコードの一覧を維持する分散データベースに配置されるもの又は配置される必要のあるものである。あるいはブロックチェーンは、プルーフオブワーク(PoW)及び/又はそれに関連付けられた任意の他の適切な検証技術によってブロックチェーンネットワークによって確認及び有効化されることができる。一部の場合、所定のトランザクションについてのデータは更に、トランザクションデータに付加されたトランザクションの直接的な一部ではない追加のデータを含むことができる。一部の例では、そのようなデータをブロックチェーンに含めることは、トランザクションを構成できる。そのような一部の例では、ブロックチェーンは特定のデジタル通貨、仮想通貨、不換(fiat)通貨又は他の種別の通貨に直接的に関連付けられなくてよい。
【0015】
耐改竄イベントソーシングのためのシステム
図1は、暗号学的ハッシュ及びブロックチェーンの使用を介した耐改竄態様でのコンピューティングオブジェクトについてのイベントソーシングのためのシステム100について示す。
【0016】
システム100は処理サーバ102を含んでよい。下記においてより詳しく説明される処理サーバ102は、オブジェクトについての状態データを取得し、また、改竄耐性を有する且つ保護された態様で状態データを公開して、オブジェクトの状態データの検証及びオブジェクトと関連付けられているイベントにおけるエラー又は破損の識別を可能とすることができる。システム100では、処理サーバ102は、状態装置104等のコンピューティングオブジェクトについての状態データを受信できる。状態装置104は、状態データをソーシングする総体的なコンピューティングシステムとすることができ、又は、状態データをソーシングするアプリケーションプログラム、オペレーティングシステム、若しくは他のオブジェクトを含むことができる。いくつかの実施形態では、コンピューティングオブジェクトは、処理サーバ102の一部である又はインタフェース接続されていることができる。状態データは、処理サーバ102によって、状態装置104から、電子通信を介して又は任意の他の適切な方法を用いて取得されることができる。状態データは、コンピューティングオブジェクトの運用又は後におけるその検証について有用となり得るコンピューティングオブジェクトの状態に関する任意のあらゆるデータを含み得るのであり、状態データはコンピューティングオブジェクトのタイプ、関連付けられたエンティティのニーズ等に依存し得る。例えば、電子メール通信用のアプリケーションプログラムの状態データは、オペレーティングシステムの状態データと異なることができる。
【0017】
一部の場合では、コンピューティングオブジェクトについての状態データは、コンピューティングオブジェクトについて用いられるイベントソーシングシステムの状態とすることができる。例えば、オペレーティングシステム(OS)は、イベントログ等のオペレーティングシステムに影響を及ぼし得る全てのアクション及びイベントを追跡できるイベントソーシングシステムを含むことができる。このような場合、処理サーバ102は、イベントログ又は他のイベントソーシングシステムについてのデータを状態データとして用いることができる。コンピューティングオブジェクトについての状態データは、任意の適切なフォーマットにて記憶されることができるのであり、例えば状態装置104の一部であるメモリ若しくはデータベース内にて又はそれによってアクセス可能なクラウドストレージ等にて記憶できる。
【0018】
上述のように、「コンピューティングオブジェクト」との用語は、ハードウェア、ソフトウェアコンポーネント、アプリケーションプログラム、データオブジェクト、又はこれらの任意の組合せを指し得る。例えば、1つの例を挙げるに、コンピューティングオブジェクトは状態装置104であることができる。第2の例を挙げるに、コンピューティングオブジェクトはオペレーティングシステムであることができる。第3の例を挙げるに、コンピューティングオブジェクトは銀行口座と関連付けられたデータであることができ、状態データは例えば口座に関するイベントを含むことができ、口座に関するイベントは、口座開設、口座への振込、口座からの支払、他のチャージ等を含み得る。第4の例を挙げるに、コンピューティングオブジェクトはサプライチェーンのデータベースであることができ、状態データは例えば製品の製造日、製品検証又は検査についての情報、パッケージング日付、発送日付、販売日付、有効期限等を含み得る。
【0019】
処理サーバ102は、コンピューティングオブジェクトと関連付けられた識別値を受信することもできる。識別値は、数字、英数値等とすることができる。一部の場合では、識別値はコンピューティングオブジェクトに関して一意的なものであることができる。他の場合では、識別値はコンピューティングオブジェクトに関して一意的であることができ、また、コンピューティングオブジェクトの特定の状態に関するものであることができる。このような場合、コンピューティングオブジェクトの各状態は、異なる一意的な識別値と関連付けられていることができる。状態に関係なく識別値がコンピューティングオブジェクトにとって一意的である場合、処理サーバ102は、コンピューティングオブジェクトの状態と関連付けられている第2の識別子を受信することができる。したがって、このような場合、処理サーバ102は、全てのコンピューティングオブジェクトに亘って一意的であるコンピューティングオブジェクトに関しての識別値、並びに、その特定のコンピューティングオブジェクトに関しての全ての状態に亘って一意的である状態識別子を受信することができる。例を挙げるに、それにて又はそれによって実行されるコンピューティングオブジェクトと関連付けられている各アクション又はイベントは、それと関連付けられた値(例えば、イベントについての数値的順番)を有することができ、その値は状態識別子として用いられ得る。別の例を挙げるに、状態識別子は、状態データが現在の状態に変更された際のタイムスタンプとされることができる。
【0020】
処理サーバ102は、状態データを受信でき、例えば一方向ハッシュ関数等の暗号学的関数を状態データに適用することができる。暗号学的関数の適用によって、ハッシュ値が生成され得る。例示的実施形態では、衝突耐性を有する暗号学的ハッシュ関数を用いることができるのであり、生じるハッシュ値が十分なサイズ及び複雑度を有するものとして任意の衝突(例えば、2つの異なるデータのセットに対して関数が適用された際に同じハッシュ値が生じてしまうこと)に対して高度の耐性を有しているものとすることができる。例を挙げるに、暗号学的関数はセキュアハッシュアルゴリズム256(SHA-256)とすることができる。暗号学的関数は一方向関数とされることができ、これは、得られたハッシュ値を用いて任意のアルゴリズム、関数、又は他の機構を介して当初の状態データを取得できないことを意味する。
【0021】
一部の実施形態では、処理サーバ102は、暗号学的関数の適用前に状態データをフォーマッットすることができる。状態データをフォーマッットするために、処理サーバ102は、先ずコンピューティングオブジェクトの状態データを、JavaScript Object Notation(JSON)表現等のオブジェクト記法表現に転換することができる。一部の場合では、転換は、処理サーバ102によって取得された際の状態データの位置、又は処理サーバ102によって取得された際の状態データの他の現在の表現、に応じてのみ実行されることができる。状態データをそのオブジェクト記法表現に転換(convert)した後、処理サーバ102は、状態データを正準表現に変換(transform)することができる。オブジェクト記法表現がJSON表現である場合、状態データの変換はJSONの正規化スキーム(JCS、JSON Canonicalization Scheme)の規則に従うことができる。他の場合では、状態データを正準表現へと変換するに際して任意の適用可能な規則又は準則を活用できる。このような実施形態では、状態データの正準表現は、暗号学的関数が状態データに適用される際に用いられることができる。
【0022】
処理サーバ102がコンピューティングオブジェクト及びその関連付けられた状態についてのハッシュ値を生成すると、ハッシュ値をブロックチェーン上に公開することができる。ブロックチェーンは、ブロックチェーンネットワーク108によって管理及び維持されていることができる。各ブロックチェーンネットワーク108は、複数の異なるブロックチェーンノード110を備えることができる。各ブロックチェーンノード110は、ブロックチェーンの処理及び管理に関連する機能を実行するように構成された
図2及び
図7にて示され以下にて詳述されるようなコンピューティングシステムであることができ、例えば次の事項が含まれ得る:ブロックチェーンデータ値の生成、提案されたブロックチェーントランザクションの検証、デジタル署名の検証、新規ブロックの生成、新規ブロックの確認(validation)、ブロックチェーンのコピーの維持。いくつかの実施形態では、処理サーバ102はブロックチェーンネットワーク108内のブロックチェーンノード110であってよい。
【0023】
ブロックチェーンは、少なくとも複数のブロックを備える分散型台帳とすることができる。各ブロックは少なくともブロックヘッダ及び1つ以上のデータ値を含んでよい。各ブロックヘッダは少なくともタイムスタンプ、ブロック参照値、及びデータ参照値を含んで良い。タイムスタンプは、ブロックヘッダが生成された時刻とされ得るのであり、また、任意の適切な方法を用いて表すことができる(例えば、UNIXタイムスタンプ、DateTime記法等)。ブロック参照値は、ブロックチェーン内の先行ブロックを(例えば、タイムスタンプに基づいて)参照する値とすることができる。いくつかの実施形態では、ブロックヘッダ内のブロック参照値は、各ブロックに先行する一番最近に追加されたブロックのブロックヘッダへの参照とすることができる。例示的実施形態では、ブロック参照値は、一番最近追加されたブロックのブロックヘッダをハッシュ化することによって生成されたハッシュ値とすることができる。同様に、データ参照値は、ブロックヘッダを含むブロック内に格納されている1つ以上のデータ値への参照とすることができる。例示的実施形態では、データ参照値は、1つ以上のデータ値をハッシュ化することによって生成されたハッシュ値とすることができる。例えば、ブロック参照値は、1つ以上のデータ値を用いて生成されたマークルツリーのルートとし得る。
【0024】
各ブロックヘッダ内にてブロック参照値及びデータ参照値を用いることの結果として、ブロックチェーンに不変性が与えられ得る。データ値に対しての変更を試みるにはそのブロックについて新たなデータ参照値の生成が必要とされ、そのためには後続ブロックのブロック参照値を新たに生成することが必要とされ、更には後続の各ブロックについて新たなブロック参照値を生成することが必要とされる。変更を恒久的なものとするためには、新たなブロックの生成及びブロックチェーンへの追加前に、先の事柄をブロックチェーンネットワーク108内の一つずつのブロックチェーンノード110に対して実行及び更新することを要する。演算能力及び通信能力の限界によって、そのような変更は格段に困難なこと又は無理難題となり得るのであり、故にブロックチェーンは不変性を獲得する。
【0025】
システム100では、ブロックチェーンノード110(例えば、処理サーバ102)はコンピューティングオブジェクトについてのハッシュ値及びその関連付けられた状態並びに任意の識別情報(例えば、コンピューティングオブジェクトについての識別値及び状態識別子)を受信することができる。ハッシュ値及び関連付けられた識別情報は、適切な方法を用いてブロックチェーンにて生成されて追加される新規ブロック内に生成されて含まれている新規ブロックチェーンデータ値内に記憶されることができる。新規ブロックは、ブロックチェーンネットワーク108内の全てのブロックチェーンノード110に配信されることができる。ブロックチェーンがパブリックブロックチェーンとし得る場合、新規ブロックは状態装置104等の任意の利害関係エンティティによってアクセス可能とされて、状態データが適切に耐改竄ブロックチェーン内にて記憶されたことを担保する。
【0026】
処理サーバ102は、規則的間隔にてハッシュ値を生成し続けることができる。一部の場合では、コンピューティングオブジェクトの状態に影響を及ぼすアクション又はイベントが生じる度に、その更新された状態データを用いて新たなハッシュ値がコンピューティングオブジェクトについて生成されることができる。他の場合では、新たなハッシュ値を定期的に生成できる(例えば所定の期間経過後(例えば、毎時、毎日、毎週等、コンピューティングオブジェクト及び状態の変更に依存し得る)、所定のアクション回数又はイベント回数後、状態を変更するアクション又はイベントの所定回数後等)
【0027】
システム100では、処理サーバ102、状態装置104、又は別の利害関係エンティティ若しくはシステムは(例えば、検証システム106)は、コンピューティングオブジェクトについての状態データを検証することに関して関心がある可能性がある。例えば、コンピューティングオブジェクトがオペレーティングシステムである場合、検証システム106はオペレーティングシステムを活用して、オペレーティングシステムにアップデートを適用することができる。検証システム106は、更新済みオペレーティングシステムが有効であり改竄されていないことを担保することを意図することができる(例えば、悪意ある主体によって検証システム106に悪意ある更新データが提供されている場合)。検証システム106は、ブロックチェーン内にて記憶されている適切なハッシュ値を直接的に又は処理サーバ102を介してのいずれかで用いることによって、オペレーティングシステムの更新状態について検証することができる。
【0028】
例示的実施形態では、検証システム106は、そのコンピューティングオブジェクトについての現在の状態データを処理サーバ102へと電子的に送信することができ、これと共にオペレーティングシステムについての一意的な識別値及びオペレーティングシステムについての状態識別子としてバージョン番号等の任意の識別情報を送信することができる。処理サーバ102は、状態データ及び識別情報を検証システム106から受信することができる。処理サーバ102は、状態データを適宜転換でき、そして暗号学的関数を状態データに適用して新たなハッシュ値を生成することができる。処理サーバ102は、提供された識別値及び状態識別子を用いて、ブロックチェーン内にてコンピューティングオブジェクトについての公開されたハッシュ値を識別することができる。そして、処理サーバ102は、検証システム106が有するコンピューティングオブジェクトの状態について検証して、生成された新規ハッシュ値を公開されたハッシュ値とチェックすることができる。値が一致する場合、コンピューティングオブジェクト(例えば、更新済みオペレーティングシステム)は検証済みと看做される。処理サーバ102は、適宜検証システム106に情報提供をなし得るのであり、また、検証システム106はオペレーティングシステムを信頼して活用することができる。ハッシュ値が一致しない場合、処理サーバ102は検証システム106にインスタンスを情報提供し得るのであり、そして、検証システム106はコンピューティングオブジェクトを検証が成功していた過去の状態に復帰させることを意図し得る。その結果、任意のエンティティは、ブロックチェーン内にて記憶された不変なハッシュ値を用いてコンピューティングオブジェクトの状態について検証をなし得るのであり、状態データは完全なる耐改竄性を帯びるに至る。
【0029】
コンピューティングオブジェクトについて新規ハッシュ値が定期的に公開される場合、検証が失敗した際にいつコンピューティングオブジェクトのローカル状態データ(例えば、検証システムのオペレーティングシステムのバージョン)が破損したかを識別するために、公開されたハッシュ化された状態データを用いることができる。例えば、検証システム106は、オペレーティングシステムのバージョン12を成功裏に検証できており、何回かの更新に亘って一定期間オペレーティングシステムを活用しており、そしてオペレーティングシステムのバージョン18を用いて検証を試みて検証失敗となった場合には、これがバージョン12~18のどこかで改竄された更新データを受信したことに起因する場合がある。バージョン18が検証データについて失敗した後、検証システム106は、そのオペレーティングシステムについてのバージョン17に関する状態データを処理サーバ102に提供して、別の確認(validation)を試みることができる。その確認が失敗した場合、検証システム106は、検証(verification)が成功する迄オペレーティングシステムのバージョンをテストし続けることができる。例えば、バージョン15がその検証を失敗するも、バージョン14は検証が成功した場合、検証システム106は、バージョン15についての更新データが改竄されていたと確定できる。そして、検証システム106は、バージョン14に戻すことができるのであり、例えば状態装置104から又は他のエンティティから直接、有効な更新データを得ることができ、そしてオペレーティングシステムが更新されると新たな検証を実行することができる。一部の場合では、検証システム106は、処理サーバ102にオペレーティングシステムのバージョン12を提供することができ、そして、バージョン18迄の各バージョンの更新データ(例えば、他の例では他のイベント又はアクションデータ)をも提供することができる。処理サーバ102は、バージョン13についての更新データを用いて状態データを更新して、ブロックチェーン内の関連付けられたハッシュ値を用いて更新された状態データを検証して、状態データの更新を続けて、検証が失敗する迄更新されたオペレーティングシステムを検証する。換言するに、処理サーバ102又は任意の他のエンティティは、状態データについての検証失敗を生じさせた改竄がいつ起きたかを識別するためにどちらの方向に辿っていってもよい。
【0030】
別の例では、状態装置104は銀行等の金融機関のデータベースであることができ、コンピューティングオブジェクトは銀行口座とされていることができ、銀行口座のデータはデータベース内に記憶されている。このような例では、銀行口座についての状態データは口座開設時、入金時、出金時等に、ハッシュ化されて、ブロックチェーンにて公開されていることができる。公開された状態データは、所定の時点における口座の状態(例えば、残高)について検証するために用いられることができる。口座状態が変化する際に状態データを公開することによって、口座についての払い込み又は口座についての支払は検証され得る。例えば、口座保有者と事業者との間で紛争が生じ得るのであり、事業者側が保有者の不払いを主張しているかもしれない。口座保有者は、支払前の口座についてのデータを提供することができ、これをハッシュ化してブロックチェーン上にて公開された状態データにして、支払前のものであると主張されている状態を検証するためにこれを用いることができる。口座保有者は支払後の口座を提示することができ、これを再びハッシュ化して事業者又は検証システム106が独自に検証することができ、これによって支払がなされており口座にそれに応じて反映されていることが確立されることになる。
【0031】
説明される方法及びシステムによれば、コンピューティングオブジェクトについてのイベントソーシングのデータ又は状態データを、完全に耐改竄性を有する態様で記憶することが可能となるのであり、同時に完全に検証可能なままこれがなされ得る。ブロックチェーンの使用によって、状態データが改竄できないようになり、他方で検証には依然として用いることできるままとなる。また、暗号学的ハッシュ関数の使用により、検証を可能としつつ、何らの機微又は機密データを含むことを損なわずにしてパブリックでアクセス可能な分散台帳内にて状態データを記憶することが可能となる。したがって、アプリケーションプログラムが利用可能となっているエンティティにて、自己の状態データを常時更新してブロックチェーン上に公開することができ、全顧客が容易且つ安全な態様でアプリケーションプログラムのバージョンを検証できるようにし、アプリケーションプログラムのローカルコピーに何らかの改竄が施されたときにはこれを容易且つ迅速に識別できるようにする。したがって、説明される方法及びシステムは、暗号学的関数及びブロックチェーンの使用を通じてイベントソーシング並びに状態データの記憶及び検証に関して技術的な改良をもたらす。
【0032】
処理サーバ
図2は、処理サーバ102(例えば、システム100内の処理サーバ102)の実施形態を示す。当業者にとって、
図2に示す処理サーバ102の実施形態が、例示目的のみで提供されることと、本開示の機能を実行するのに適した、処理サーバ102の全ての可能な構成を徹底的に示したものでないこととは自明である。例えば
図7に示され下記で一層詳細に説明されるコンピュータシステム700が、処理サーバ102の適切な構成であってよい。
【0033】
処理サーバ102は受信装置202を含んでよい。受信装置202は1つ以上のネットワークプロトコルを介して1つ以上のネットワーク上でデータを受信するよう構成されてよい。いくつかの例では、受信装置202は無線周波数、ローカルエリアネットワーク、無線エリアネットワーク、セルラ通信ネットワーク、Bluetooth、インターネット等の1つ以上の通信方法を介して、状態装置104、検証システム106、ブロックチェーンノード110、並びに他のシステム及びエンティティからデータを受信するように構成され得る。いくつかの実施形態では、受信装置202は複数の装置(例えば、異なるネットワーク上でデータを受信する異なる受信装置(例えばローカルエリアネットワークでデータを受信する第1の受信装置と、インターネット上でデータを受信する第2の受信装置))を含んでよい。受信装置202は送信される電子的なデータ信号を受信してよい。このとき、受信装置202によるデータ信号の受信によって、データはデータ信号上に重ねられ、復号、解析(パース)、読取り、又は取得されてよい。いくつかの実施形態では、受信装置202は、受信されたデータ信号を解析して、そこに重ねられたデータを取得するための解析モジュールを含んでよい。例えば受信装置202は、受信されたデータ信号を受信し、処理装置によって実行される機能のための利用可能な入力へと変換して本開示の方法及びシステムを実行するよう構成される解析プログラムを含んでよい。
【0034】
受信装置202は、ブロックチェーンノード110によって電子的に送信されたデータ信号を受信するように構成されていることができ、このデータ信号は、ブロックチェーンデータ値、ブロック、ブロックチェーントランザクションのデータ等と重畳又は符号化され得る。また、受信装置202は、状態データ、イベントソーシングのデータ、更新データ、イベント又はアクションのデータ、識別値、状態識別子等と重畳又は符号化されていることができる、状態装置104によって電子的に送信されたデータ信号を受信するように構成されていることもできる。また、受信装置202は、状態データ、識別値、状態識別子、更新データ、イベント又はアクションのデータ等と重畳又は符号化されていることができる、状態装置104によって電子的に送信されたデータ信号を受信するように構成されていることもできる。
【0035】
処理サーバ102はまた通信モジュール204を含んでよい。通信モジュール204は、本開示の機能を実行する際に使用するために、モジュール、エンジン、データベース、メモリ、及び処理サーバ102の他の構成要素の間でデータを転送するよう構成されてよい。通信モジュール204は、1つ以上の通信種別を含んでよく、コンピューティング装置内での通信のために様々な通信方法を使用してよい。例えば、通信モジュール204はバス、接続ピンコネクタ、ワイヤ等を含んでよい。いくつかの実施形態では、通信モジュール204はまた、処理サーバ102の内部構成要素と処理サーバ102の外部構成要素(例えば外部で接続されたデータベース、表示装置、入力装置等)との間で通信するよう構成されてよい。処理サーバ102はまた、処理装置を含んでよい。処理装置は本開示の処理サーバ102の機能を実行するよう構成されてよい。このことは、当業者にとって自明である。いくつかの実施形態では、処理装置は、処理装置の1つ以上の機能を実行するよう特別に構成された複数のエンジン及び/又はモジュール(例えばクエリモジュール214、生成モジュール216、検証モジュール218等)を含んでよい。本開示のように、「モジュール」との用語は、入力を受信し、当該入力を使用して1つ以上の処理を実行し、且つ出力を提供するよう特別にプログラムされたソフトウェア又はハードウェアであってよい。様々なモジュールによってこなされる入力、出力及び処理は、本開示に基づいて、当業者にとって自明である。
【0036】
処理サーバ102はブロックチェーンデータ206を含むことができ、これは処理サーバ102のメモリ212内に記憶される又は処理サーバ102内の別個の領域に記憶される又はそれによってアクセス可能とされることができる。ブロックチェーンデータ206はブロックチェーンを含むことができ、これは複数のブロックを備えることができ、ブロックチェーンネットワーク108と関連付けられていることができる。ブロックチェーンデータ206は、ブロックチェーンと関連付けられている任意のデータを追加的に又は代替的に含むことができ、これには次の事項が含まれ得る:暗号鍵ペア、ブロックチェーンネットワーク108についてのネットワーク識別子、暗号アルゴリズム、フォーマッティング規則、署名アルゴリズム等。
【0037】
処理サーバ102はまた、メモリ212を含んでよい。メモリ212は、本開示の機能を実行するときに処理サーバ102が使用するためのデータ(例えば公開鍵、秘密鍵、対称鍵等)を格納するよう構成されてよい。メモリ212は、適切なデータフォーマット方法及びスキーマを用いてデータを格納するよう構成されてよく、また、任意の適切な種別のメモリ(例えば、読み取り専用メモリ、ランダムアクセスメモリ等)であってよい。メモリ212は、例えば暗号鍵及びアルゴリズム、通信プロトコル及び規格、データフォーマット規格及びプロトコル、モジュール用プログラムコード及び処理装置のアプリケーションプログラム、並びに、本開示の機能を実行する際に処理サーバ102によって使用される適切な他のデータを含んでよい。このことは、本開示を読む当業者にとって自明である。いくつかの実施形態では、メモリ212は、構造化クエリ言語(SQL)を使用するリレーショナルデータベースを含んでよく、記憶された構造化データセットを記憶、識別、修正、更新、アクセス等してよい。メモリ212は、例えば、暗号鍵、ソルト、ノンス、他のコンピューティングシステムのための通信情報、暗号学的関数、フォーマッティング規則、表現データ、暗号鍵ペア、正規化スキーム等を記憶するように構成されてよい。
【0038】
処理サーバ102はまたクエリモジュール214を含んでよい。クエリモジュール214は、データベース上のクエリを実行して情報を識別するよう構成されてよい。クエリモジュール214は、1つ以上のデータ値又はクエリ文字列を受信してよく、それに基づいて、示されたデータベース(例えば、処理サーバ102のブロックチェーンデータ206)上でクエリ文字列を実行して、そこに格納された情報を識別してよい。クエリモジュール214は次いで、識別された情報を、必要に応じて処理サーバ102の適切なエンジン又はモジュールへ出力してよい。クエリモジュール214は、例えば、ブロックチェーンデータ206に対してクエリを実行して、提供された識別値及び状態識別子を用いて公開されたハッシュ値を識別し、生成されたハッシュ値と比較して、与えられた状態データを確認できる。
【0039】
処理サーバ102はまた生成モジュール216を含んでよい。生成モジュール216は、本開示の機能を実行するときに処理サーバ102によって使用されるデータを生成するよう構成されてよい。生成モジュール216は、入力値として命令を受信してよいし、命令に基づいてデータを生成してよいし、生成されたデータを処理サーバ102の1つ以上のモジュールへと出力してもよい。例えば、生成モジュール216は、状態データに暗号学的関数を適用してハッシュ値を生成するように構成されていることができるのであり、例えば一方向暗号学的ハッシュ関数をイベントソーシング又は状態データに適用して一意的な及び/又は耐衝突性ハッシュ値を生成する等できる。処理サーバがブロックチェーンノード110とされ得る場合、生成モジュール216は、暗号鍵ペアを生成したり、デジタル署名を生成したり、ブロックチェーンデータ値を生成したり、新規ブロックを生成したり、ブロック及びデータ参照値を生成したり、状態変更を集約したり、ジェネシスブロック記録を生成等するように構成されていることもできる。
【0040】
処理サーバ102はまた、検証モジュール218を含んでもよい。検証モジュール218は、本開示にて説明される機能の一部として処理サーバ102のために検証を行うように構成されることができる。検証モジュールは、検証を行うに際して用いられるデータが含まれ得る命令を入力として受信でき、要求に応じて検証を行うことができ、また、検証の結果を処理サーバ102の別のモジュール又はエンジンへと出力できる。検証モジュール218は、例えば、受信された状態データを検証するように構成されていることができ、状態データをハッシュ化して、結果として得られるハッシュ値をブロックチェーン上にて公開されたハッシュ値と比較することによってこれをなすことができる。一部の場合では、検証モジュール218は、一連の検証を行って、失敗した検証を結果としてもたらすアクション又はイベントを決定して、改竄されたおそれがあるアクション又はイベントを識別することができる。
【0041】
処理サーバ102はまた、送信装置220を含んでよい。送信装置220は、1つ以上のネットワークプロトコルを介して1つ以上のネットワーク上でデータを送信するよう構成されてよい。いくつかの例では、送信装置220は、ローカルエリアネットワーク、無線エリアネットワーク、セルラ通信、Bluetooth、無線周波数、インターネット等の1つ以上の通信方法を介して、状態装置104、検証システム106、ブロックチェーンノード110、並びに他のエンティティへとデータを送信するように構成され得る。いくつかの実施形態では、送信装置220は複数装置(例えば、異なるネットワーク上でデータを送信するための異なる送信装置(例えば、ローカルエリアネットワーク上でデータを送信する第1の送信装置及びインターネット上でデータを送信する第2の送信装置))を含んでよい。送信装置220は、重畳されたデータであって受信コンピューティング装置によって解析されるデータを有するデータ信号を電子的に送信してよい。いくつかの実施形態では、送信装置220は、データを重畳し、符号化し、又はデータを送信に適したデータ信号へフォーマットする1つ以上のモジュールを含んでよい。
【0042】
送信装置220は、ブロックチェーンノード110へとデータ信号を電子的に送信するように構成されていることができ、このデータ信号は、ブロックチェーンデータ値、ブロック、ブロックチェーントランザクションのデータ、提案されたジェネシスブロック記録、状態データベースのデータ、スマート契約の状態データ、確認メッセージ等と重畳又は符号化され得る。送信装置220は、状態装置104へとデータ信号を電子的に送信するように構成されていることができ、このデータ信号は、生成されたハッシュ値、ブロックチェーンデータ値、状態データの公開に関する通知、状態データ又はイベントソーシングデータに関する要求等と重畳又は符号化され得る。送信装置220は検証システム106へとデータ信号を電子的に送信するようにも構成されていることができ、このデータ信号は、実行された検証に関する通知、状態データ又は識別データに関する要求等と重畳又は符号化され得る。
【0043】
耐改竄イベントソーシングのデータを公開するための処理
図3は、システム100内のブロックチェーン上で耐改竄性のある状態又はイベントソーシングのデータを公開する、処理サーバ102によって実行される処理300について示す。
【0044】
S302では、処理サーバ102の受信装置202は、コンピューティングオブジェクトについての状態データ又はイベントソーシングのデータ、並びにコンピューティングオブジェクトと関連付けられた識別値及び与えられた状態データと関連付けられた状態識別子等の識別データを、適切な通信ネットワーク及び方法を用いて状態装置104又は他の適切なシステムから受信することができる。S304では、処理サーバ102は、受信された状態データがハッシュ化されるために適切にフォートされているかについて決定することができる。決定は、処理サーバ102の任意の適切な構成要素によって実行されることができ、また、受信された状態データを、処理サーバ102内に記憶されている又はアクセス可能な1つ以上の基準、ガイドライン等と比較することを伴うことができる。状態データがフォーマットされていない場合、S306では、処理サーバ102の生成モジュール216は、状態データをJSON表現等のオブジェクト記法表現に転換することができる。もっとも、他の選択肢も利用可能である。そして、S308では、処理サーバ102の生成モジュール216は、状態データをそのJSON表現から正準表現へと変換することができ、例えばJCS又は別の正規化スキームを用いてこれをなせる。
【0045】
状態データが正準表現に変換された後、又は、S304にて処理サーバ102が状態データは既に適切にフォーマットされていたと決定した場合、処理サーバ102の生成モジュール216は、暗号学的ハッシュ関数を、フォーマットされた状態データに適用することができる。暗号学的ハッシュ関数は、耐衝突性を有するに十分な複雑度をもたらす一方向ハッシュ関数とすることができる。暗号学的関数をフォーマットされた状態データに適用すると、コンピューティングオブジェクトの状態についてのハッシュ値がもたらされることができる。S312では、処理サーバ102の送信装置220は、生成されたハッシュ値と識別値と状態識別子とをブロックチェーンネットワーク108内のブロックチェーンノード110へと電子的に送信することができ、これは新規ブロックに含まれる新規ブロックチェーンデータ値内のデータを公開するためであり、新規ブロックは確認されてブロックチェーンに追加される。いくつかの実施形態では、処理サーバ102は、ハッシュ値が成功裏に公開されたことを示す通知メッセージを、送信装置220を介して状態装置104へと送信することができ、この通知メッセージは、ハッシュ値及び/又はブロックチェーンノード110から受信された任意の確認データを含むことができる。そして、ハッシュ値は、コンピューティングオブジェクトの状態について検証する際の使用のために、耐改竄性を有するブロックチェーンにて記憶されることができる。
【0046】
コンピューティングオブジェクトの状態を検証するための処理
図4は、ブロックチェーンを介してイベントソーシング又は状態データについての耐改竄性を伴うストレージを用いてコンピューティングオブジェクトの状態を検証するための、システム100内の処理サーバ102によって実行される処理400について示す。処理400は、処理サーバ102が複数のイベントを受信し、各イベントの実行を介してコンピューティングオブジェクトについての検証を実行し得る際の例について示すことができる。当業者にとっては、単一のセットの状態データが実行される場合、又は何ら付随するイベントデータを伴わずにいくつかのセットの状態データが処理サーバ102に提供される場合で処理400が異なり得ることは明らかであろう。
【0047】
S402では、処理サーバ102の受信装置202は、コンピューティングオブジェクトについての状態データとイベントデータとを受信できる。イベントデータは複数の異なるアクション又はイベントを含み得るのであり、コンピューティングオブジェクトによって適用又は実行されると、これらは、状態データを変更することができる。一部の場合では、イベントデータは、アクション又はイベントデータについての特定の適用順序を含むことができる。一部の場合では、イベントデータ内の各アクション又はイベントは、処理サーバ102に提供される、それと関連付けられた状態識別子を有していることができる。データは、適切な通信ネットワーク及び方法を用いて検証システム106から受信されることができる。
【0048】
S404では、処理サーバ102は、検証が実行される何らかのアクション又はイベントが、受信されたイベントデータ内に残っているかを決定することができる。1つ以上のアクション又はイベントが残っている場合、S406にて、処理サーバ102は、次のイベント又はアクションを実行し得る。処理サーバ102は、提供された順序、タイムスタンプデータ等を用いて次のイベント又はアクションを識別できる。イベント又はアクションの実行は、状態データを更新し得るのであり、これは、状態データを直接に修正すること、又はアプリケーションプログラム若しくは関連付けられたデータを修正するアプリケーションプログラムを用いてアクションを実行することによって、そして状態データをそこから識別することによって、行われる。S408では、処理サーバ102の生成モジュール216は、暗号学的ハッシュ関数を状態データに適用することができる。暗号学的ハッシュ関数は、耐衝突性を有するに十分な複雑度をもたらす一方向ハッシュ関数とすることができる。暗号学的関数を状態データに適用することは、コンピューティングオブジェクトの状態についてのハッシュ値をもたらすことができる。いくつかの実施形態では、処理サーバ102は、
図3において示されるS306及びS308について上述したように、先ず状態データをフォーマットすることができる。
【0049】
ハッシュ値が生成されると、S410にて処理サーバ102は、ブロックチェーンネットワーク108と関連付けられているブロックチェーンにおいて、コンピューティングオブジェクトについての公開されたハッシュ値及びS406のイベント又はアクションの実行により生じた状態を識別することができる。公開されたハッシュ値は、コンピューティングオブジェクトと関連付けられている識別値並びにS406にて実行されたイベント又はアクションと関連付けられている状態識別子を用いて識別されることができる。S412では、処理サーバ102は、コンピューティングオブジェクトについての状態が成功裏に検証され得るかを決定することができるのであり、これは、例えば処理サーバ102の検証モジュール218が検証を実行することによって行われる。この検証は、生成されたハッシュ値と識別されて公開されたハッシュ値とが一致するかについてチェックすることによって行われる。
【0050】
2つのハッシュ値が一致しない等の検証が不成功である場合、処理サーバ102の送信装置220は、検証が失敗したことを示す通知メッセージを検証システム106へと電子的に送信することができる。一部の場合、通知メッセージは、状態識別子又は失敗した検証の前に実行されたイベント又はアクションについて示す他の情報を含むことができる。このような場合、通知によって、検証システム106又は他のエンティティが、いつアクション又はイベントが改竄されたか、いつイベントソーシングのデータが改竄されたか等のことを識別することができる。
【0051】
S412での検証が成功した場合、処理400はS404へと戻り、処理サーバ102は実行すべき更なるアクション又はイベントが、受信されたイベントデータ内にあるかを決定できる。それらがある場合、処理サーバ102はS406へと戻り、処理400を継続して、検証が成功している限り各アクション又はイベントを処理していく。S404に戻って決定された際に全てのアクション又はイベントが実行されており且つ全ての検証が成功しており、処理サーバ102が行うべきアクションが残存していないと決定した場合、処理400はS416へと進むことができるのであり、該ステップでは、処理サーバ102の送信装置220は、検証が全て成功したことを示す通知メッセージを検証システム106へと電子的に送信することができる。そして、検証システム106は、コンピューティングオブジェクト又はそのイベントソーシングのデータに対して改竄はなされていないと信頼してコンピューティングオブジェクトを活用することができる。
【0052】
耐改竄イベントソーシングのための例示的方法
図5は、暗号学的関数及びブロックチェーンの使用を介したコンピューティングオブジェクトについての耐改竄イベントソーシングのための方法500について示す。
【0053】
S502では、コンピューティングオブジェクトについての状態データ及びコンピューティングオブジェクトと関連付けられている識別値が、処理サーバ(例えば、処理サーバ102)のレシーバ(例えば、受信装置202)によって受信されることができる。S504では、一方向暗号化関数が、処理サーバのプロセッサ(例えば、生成モジュール216)によって受信された状態データに対して適用されて、ハッシュ値を生成することができる。S506では、生成されたハッシュ値及び識別値はブロックチェーン上にて処理サーバのトランスミッタ(例えば、送信装置220)によって公開されることができる。
【0054】
1つの実施形態では、方法500はさらに、一方向暗号化関数の適用前に処理サーバのプロセッサ(例えば、生成モジュール216)によって状態データをオブジェクト記法表現に転換することを含むことができる。さらなる実施形態では、オブジェクト記法表現はJSON(JavaScript Object Notation)表現とすることができる。別のさらなる実施形態では、方法500はさらに、一方向暗号化関数の適用前に、処理サーバのプロセッサ(例えば、生成モジュール216)によって、転換された状態データを正準表現に変換することを含むことができる。さらなる実施形態では、転換された状態データはJSON(JavaScript Object Notation)の正規化スキーム(JCS、JavaScript Object Notation Canonicalization Scheme)に準拠して変換されることができる。
【0055】
オブジェクト状態を検証するための例示的方法
図6は、ブロックチェーンを介して耐改竄イベントソーシングによるコンピューティングオブジェクトの状態を検証するための方法600について示す。
【0056】
S602では、コンピューティングオブジェクトについての状態データ及びコンピューティングオブジェクトと関連付けられている識別値が、処理サーバ(例えば、処理サーバ102)のレシーバ(例えば、受信装置202)によって受信されることができる。S604では、一方向暗号化関数が、処理サーバのプロセッサ(例えば、生成モジュール216)によって、受信された状態データに対して適用されて、ハッシュ値を生成することができる。
【0057】
S606では、識別値と共にブロックチェーン内にて記憶された公開されたハッシュ値は、処理サーバのプロセッサ(例えば、クエリモジュール214)によって識別されることができる。S608では、状態データに従うコンピューティングオブジェクトについての状態が、生成された比較ハッシュ値と識別された公開されたハッシュ値との一致に基づいて、処理サーバのプロセッサ(例えば、検証モジュール218)によって検証されることができる。
【0058】
1つの実施形態では、方法600は、処理サーバによって、受信するステップ、適用するステップ、識別するステップ、及び検証するステップをコンピューティングオブジェクトの複数の状態について反復することを含む。複数の状態の各状態は状態データについての異なるセットを含む。さらなる実施形態では、コンピューティングオブジェクトの状態についての検証は複数の状態の1つについて失敗することがあり得る。方法600はさらに、失敗した検証を生じさせた複数の状態の1つを識別する通知メッセージを、処理サーバのトランスミッタ(例えば、送信装置220)によって送信することを含むことができる。
【0059】
コンピュータシステムアーキテクチャ
図7は、コンピュータシステム700を示す。そこにおいては、本開示の実施形態又はその一部が、コンピュータ可読コードとして実装されてよい。例えば
図1及び2の処理サーバ102は、ハードウェア、格納された命令を有する非一時的なコンピュータ可読媒体、又はこれらの組合せを用いてコンピュータシステム700内に実装されてよく、1つ以上のコンピュータシステム又は他の処理システムにおいて実装されてよい。ハードウェアは、
図3~6の方法を実施するために使用されるモジュール及びコンポーネントを具現化することができる。
【0060】
プログラマブルロジックが使用される場合、そのようなロジックは、実行可能なソフトウェアコードで構成された商業的に利用可能な処理プラットフォーム上で実行され、特定用途装置又は特別目的装置となっていてよい(例えばプログラマブルロジックアレイ(PGA)、特定用途向け集積回路(ASIC)等)。当業者は、開示された事項についての実施形態が、様々なコンピュータシステム構成で実行可能であることを理解する。当該システム構成は、マルチコアのマルチプロセッサシステムと、ミニコンピュータと、メインフレームコンピュータと、分散された機能でリンクされ又はクラスタ化されたコンピュータと、実質的に殆どの任意の装置に実装可能な汎用又はミニチュアのコンピュータとを含む。例えば、少なくとも1つのプロセッサ装置及びメモリが、上記実施形態を実装するために使用されてよい。
【0061】
本開示のプロセッサユニット又は装置は、単一のプロセッサ、複数のプロセッサ、又はこれらの組合せであってよい。プロセッサ装置は、1つ以上のプロセッサ「コア」を有してよい。本開示の「コンピュータプログラム媒体」、「非一時的コンピュータ可読媒体」及び「コンピュータ使用可能媒体」との用語は、概して、有形の媒体(例えば取外し可能なストレージユニット718、取外し可能なストレージユニット722及びハードディスクドライブ712内にインストールされたハードディスク等)を指すために使用される。
【0062】
本開示の様々な実施形態は、この例示的なコンピュータシステム700に関して記述される。本開示を読んだ後、当業者にとって、他のコンピュータシステム及び/又はコンピュータアーキテクチャを用いて本開示をどのように実装するかは自明である。動作はシーケンシャルな処理として開示されるが、いくつかの動作は実際には、並行して、同時に及び/又は分散環境で、実行されてよい。このとき、プログラムコードは、単一プロセッサの又はマルチプロセッサのマシンによってアクセスするために、ローカルに又はリモートに格納された状態である。さらに、いくつかの実施形態では、動作の順番は、開示される事項の趣旨を逸脱することなく再配置可能である。
【0063】
プロセッサ装置704は、本開示の機能を実行するよう特別に構成された特定用途又は汎用プロセッサ装置であってよい。プロセッサ装置704は、通信インフラストラクチャ706(例えばバス、メッセージキュー、ネットワーク、マルチコアメッセージパススキーム等)へ接続されてよい。ネットワークは、本開示の機能を実行するのに適した任意のネットワークであってよく、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、無線ネットワーク(例えばWifi)、モバイル通信ネットワーク、衛星ネットワーク、インターネット、光ファイバ、同軸ケーブル、赤外線、無線周波数(RF)又はこれらの任意の組合せを含んでよい。他の適切なネットワークタイプ及び構成は、当業者にとって自明である。コンピュータシステム700はまた、メインメモリ708(例えばランダムアクセスメモリ、読み取り専用メモリ等)を含んでよく、また、補助記憶装置710を含んでよい。補助記憶装置710は、ハードディスクドライブ712と取外し可能なストレージドライブ714(例えばフロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュメモリ等)とを含んでよい。
【0064】
取外し可能なストレージドライブ714は、周知の方法で、取外し可能なストレージユニット718から読み取りを行ってもよいし、及び/又は、そこへ書き込みを行ってもよい。取外し可能なストレージユニット718は、取外し可能なストレージドライブ714によって読み取られまた書き込まれることができる、取外し可能なストレージ媒体を含んでよい。例えばもし取外し可能なストレージドライブ714がフロッピーディスクドライブ又はUSBポートであれば、取外し可能なストレージユニット718はそれぞれ、フロッピーディスク又はポータブルフラッシュドライブであってよい。1つの実施形態では、取外し可能なストレージユニット718は非一時的な読取り可能記録媒体であってよい。
【0065】
いくつかの実施形態では、補助記憶装置710は代替手段を含み、コンピュータプログラム又は他の命令がコンピュータシステム700(例えば取外し可能記憶部622及びインタフェース720)にロードされることを可能にしてよい。そのような手段の例は、(例えばビデオゲームシステムで見られる)プログラムカートリッジ及びカートリッジインタフェース、取外し可能なメモリチップ(例えばEEPROM、PROM等)及び関連付けられたソケット、他の取外し可能なストレージユニット722及びインタフェース720を含んでよい。このことは当業者にとって自明である。
【0066】
コンピュータシステム700に(例えばメインメモリ708に及び/又は補助記憶装置710に)格納されたデータは、任意のタイプの適切なコンピュータ読取り可能な媒体(例えば光ストレージ(コンパクトディスク、デジタル多目的ディスク、Blu-rayディスク等)又は磁気テープストレージ(例えばハードディスクドライブ))上に格納されてよい。データは任意のタイプの適切なデータベース構成(例えばリレーショナルデータベース、構造化クエリ言語(SQL)データベース、分散データベース、オブジェクトデータベース等)で構成されてよい。適切な構成及びストレージタイプは、当業者にとって自明である。
【0067】
コンピュータシステム700はまた、通信インタフェース724を含んでよい。通信インタフェース724は、ソフトウェア及びデータが、コンピュータシステム700と外部装置との間で送受信されることを可能にしてよい。例示的な通信インタフェース724は、モデム、ネットワークインタフェース(例えばイーサネットカード)、通信ポート、PCMCIAスロット及びカード等を含んでよい。通信インタフェース724を介して転送されるソフトウェア及びデータは信号形式であってよい。当該信号形式は、電子の、電磁気の、光の、又は当業者にとって自明な他の信号のものであってよい。信号は、通信経路726を介して伝播する。当該経路は信号を搬送するよう構成され、電線、ケーブル、光ファイバ、電話線、携帯電話リンク、無線周波数リンク等を用いて実装されてよい。
【0068】
コンピュータシステム700は、表示インタフェース702を更に含んでよい。表示インタフェース702は、データが、コンピュータシステム700と外部ディスプレイ730との間で転送されることを可能にするよう構成されてよい。例示的な表示インタフェース702は、高精細度マルチメディアインタフェース(HDMI)、デジタルビジュアルインタフェース(DVI)、ビデオグラフィックスアレイ(VGA)等を含んでよい。ディスプレイ730は任意の適切なタイプのディスプレイであってよく、コンピュータシステム700の表示インタフェース702を介して転送されるデータを表示するのであり、ブラウン管(CRT)ディスプレイ、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、静電容量方式タッチディスプレイ、薄膜トランジスタ(TFT)ディスプレイ等を含む。
【0069】
コンピュータプログラム媒体及びコンピュータ使用可能な媒体は、メモリ(例えばメインメモリ708及び補助記憶装置710)を指してよく、半導体メモリ(DRAM等)であってよい。これらのコンピュータプログラム製品は、コンピュータシステム700へソフトウェアを提供するための手段であってよい。コンピュータプログラム(例えばコンピュータ制御ロジック)は、メインメモリ708及び/又は補助記憶装置710内に格納されてよい。コンピュータプログラムはまた、通信インタフェース724を介して受信されてよい。そのようなコンピュータプログラムは、実行されると、コンピュータシステム700が本開示の方法を実行することを可能にしてよい。特に、コンピュータプログラムは、実行されると、プロセッサ装置704が本明細書で説明するように、
図3~6に示す方法を実施することを可能にすることができる。したがって、そのようなコンピュータプログラムはコンピュータシステム700のコントローラを示す。本開示はソフトウェアを使用して実装される。当該ソフトウェアは、取り外し可能なストレージドライブ714、インタフェース720、及びハードディスクドライブ712又は通信インタフェース724を用いて、コンピュータプログラム製品に格納されてコンピュータシステム700へロードされてよい。
【0070】
プロセッサ装置704は、コンピュータシステム700の機能を実行するよう構成される1つ以上のモジュール又はエンジンを含んでよい。各モジュール又はエンジンは、ハードウェアを用いて実装されてよく、いくつかの実施形態ではソフトウェア(例えばこれは、メインメモリ708又は補助記憶装置710に格納されるプログラムコード又はプログラムに対応する)を用いてよい。そのような実施形態では、プログラムコードは、コンピュータシステム700のハードウェアによる実行前に、プロセッサ装置704によって(例えば、コンパイル用モジュール又はエンジンによって)コンパイルされてよい。例えばプログラムコードは、低レベルの言語へと翻訳されるプログラミング言語で記述されたソースコード(例えばアセンブリ言語又は機械コード)であってよい。これは、プロセッサ装置704及び/又はコンピュータシステム700の任意の追加のハードウェア構成要素によって実行するためのものである。コンパイル処理は、語彙解析と、前処理と、構文解析と、意味解析と、構文主導型翻訳と、コード生成と、コード最適化と、コンピュータシステム700の制御のためにプログラムコードを低レベルの言語へ翻訳して本開示の機能を実行するのに適した任意の他の技術との使用を含んでよい。そのような処理によってコンピュータシステム700が、上記の機能を実行するために一意にプログラムされた特別構成コンピュータシステム700になることは当業者にとって自明である。
【0071】
本開示と一致している技術は、他の特徴もあるも、耐改竄イベントソーシング、及び耐改竄イベントソーシングを介してオブジェクトの状態を検証するためのシステム及び方法を提供する。本開示のシステム及び方法の様々な例示的実施形態が上述されるが、それらは限定目的でなく例示目的のみで示されることを理解されたい。それは網羅的でなく、本開示を、開示された形態そのものに限定はしない。上記の教示に照らして修正例及び変形例が可能である。範疇又は範囲を逸脱することなく、本開示の実装から修正例及び変形例が得られてよい。
【国際調査報告】