(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-11
(45)【発行日】2023-01-19
(54)【発明の名称】後ろ向き連鎖された要素によって保護されるブロックチェーン
(51)【国際特許分類】
H04L 9/32 20060101AFI20230112BHJP
G06F 21/64 20130101ALI20230112BHJP
【FI】
H04L9/32 200Z
G06F21/64
(21)【出願番号】P 2021524003
(86)(22)【出願日】2019-11-21
(86)【国際出願番号】 SG2019050569
(87)【国際公開番号】W WO2020106219
(87)【国際公開日】2020-05-28
【審査請求日】2021-06-24
(31)【優先権主張番号】10201810416Y
(32)【優先日】2018-11-21
(33)【優先権主張国・地域又は機関】SG
(73)【特許権者】
【識別番号】521185310
【氏名又は名称】ブロックチェーン システムズ プライベート リミテッド
【氏名又は名称原語表記】BLOCKCHAIN SYSTEMS PTE.LTD.
【住所又は居所原語表記】140 Paya Lebar Road,#03-03,AZ Building,Singapore,409015 (SG)
(74)【代理人】
【識別番号】100180781
【氏名又は名称】安達 友和
(72)【発明者】
【氏名】クラウセ,ジョーグ
【審査官】行田 悦資
(56)【参考文献】
【文献】米国特許第9374373(US,B1)
【文献】特開2007-174491(JP,A)
【文献】特開2017-200196(JP,A)
【文献】特開2018-181309(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
後ろ向き連鎖の一方向の要素を使用してブロックチェーンを強化する方法であって、
製品の初期化時に、保護されたストレージ(303、304)によって保持される初期秘密として使用される値に一方向性関数(317、318)を繰り返し適用し、最初のステップの値に到達するまで後ろ向きに循環させることにより、バックステップ生成器(300)がバックステップ値(422)及びバックステップシール値(418)を事前計算するステップと、
入力インタフェース(101)がペイロードデータ、メタデータ及び以前のブロックのハッシュ値(208)を含む入力データを受け取るステップと、
前記バックステップ生成器(300)が、前記バックステップシール値(418)と前記以前のブロックのハッシュ値(208)とをXOR関数(411)に入力して得られた値(419)に一方向性関数(412)を適用してシール値(421)を計算するステップと、
前記バックステップ生成器(300)が前記シール値(421)及び前記バックステップ値(422)をブロック生成器に提供するステップと、
前記ブロック生成器(300)が前記シール値(421)、前記ペイロードデータ、前記メタデータ、前記以前のブロックのハッシュ値(208)及び前記バックステップ値(422)を含む新しいブロック(201)を生成するステップと、
前記ブロック生成器(300)が前記新しいブロック(201)を出力インタフェース(106)へ送るステップと、
が含まれ、
さらに、シール検証時に、不揮発性ストレージ(502)に保持される一又は複数の認証秘密(508)を使用して、定義されたブロックのバックステップシール値の要求(500)が許可される必要があるか否かをコントローラ(501)が決定するステップと、
前記要求(500)が許可された場合、シール保護ロジック(504)が不揮発性ストレージ(506)に保持される保護秘密を使用して前記バックステップシール値を暗号化するステップであって、保護された前記バックステップシール値はチェーンの正しさを外部での検証について許可された人又は機関に配信される、ステップと、
が含まれることを特徴とする方法。
【請求項2】
バックステップシール値(418)と、
前記バックステップシール値が以前のブロック(208)のハッシュ値と数学的に結合される(411)数学的関数と、
結果が逆方向の計算から保護される、暗号化の一方向関数(412)と、
ブロックチェーンの操作の検出を可能にするための、ブロックのフィールドへの計算結果の挿入と、
が含まれることを特徴とする、請求項1に記載の方法。
【請求項3】
一又は複数の一方向関数(317、318)と、
一連のマルチプレクサ(311、312、323、324)と、
後ろ向き連鎖された値を事前計算可能な制御ロジック(308)と、
が含まれることを特徴とする、請求項1に記載の方法。
【請求項4】
中間チェックポイント値を保持する不揮発性ストレージと、
必要なステップに最も近い値からバックステップ値及びバックステップシール値の必要な計算が開始可能なように、中間チェックポイント値を記憶及びフェッチする制御ロジックと、
が含まれることを特徴とする、請求項1に記載の方法。
【請求項5】
一又は複数の揮発性キャッシュストレージ層と、
キャッシュ制御ロジックと、
高速アクセス及び使用のため中間チェーン値を事前計算及び記憶可能である、一連のマルチプレクサと、
が含まれることを特徴とする、請求項
4に記載の方法。
【請求項6】
第2のセットのキャッシュストレージが提供され、一方のキャッシュが埋められ、もう一方のキャッシュが空になることを特徴とする、請求項
5に記載の方法。
【請求項7】
認証関数と、
一又は複数の認証秘密と、
データ保護関数と、
データ保護秘密と、
が含まれ、
許可された人、組織、又はプロセスが、要求されたブロックに関連するバックステップシール値を要求及び受け取り可能であることを特徴とする、請求項
2に記載の方法。
【請求項8】
一又は複数の集積回路において実施可能であることを特徴とする、請求項1に記載の方法。
【請求項9】
スマートフォンに統合されて実施されることを特徴とする、請求項1に記載の方法。
【請求項10】
データが感知されて自動的にバックステップチェーンに挿入される装置に統合されて実施されることを特徴とする、請求項1に記載の方法。
【請求項11】
データが記録される装置に統合されて実施されることを特徴とする、請求項1に記載の方法。
【請求項12】
命令が実行されて記録される必要がある装置に統合されて実施されることを特徴とする、請求項1に記載の方法。
【請求項13】
データ処理システムに統合されて実施されることを特徴とする、請求項1に記載の方法。
【請求項14】
データ通信システムに統合されて実施されることを特徴とする、請求項1に記載の方法。
【請求項15】
個人用に設定された支払いデバイスに統合されて実施されることを特徴とする、請求項1に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、安全な電子台帳の分野に属する。
【背景技術】
【0002】
明細書全体において従来技術の議論は、そのような従来技術が広く知られていること又は当該分野における一般常識の一部を形成していることを認めるものとして考えるべきでは決してない。
【0003】
現在、記憶デバイス自体のデータの操作を防止する実現可能な技術は知られていない。読み取り専用デバイスは、別のデバイスに操作されたデータで読み書き可能である。ブロックチェーンは、操作されたコピーを検出するか又はそのようなコピーが生成される可能性を非常に低くする技術を使用することでこの課題を解決することを、主張する。
【0004】
現在のブロックチェーンは、ハッシュ関数の数学的な一方向の性質(プロパティ)に基づいており、一方向に簡単に計算できるが、逆方向を計算することは、数学的に困難であり、実際のところ不可能である。また、同じハッシュ結果になる2つの異なる入力を構築することも実際のところ不可能である。ハッシュは、入力データの暗号フィンガープリントと見なされる。現在のブロックチェーンは、ハッシュアルゴリズムの様々な実装を使用しているが、それらは全て上述の特徴を提供する。
【0005】
ブロックチェーンは、ブロック又はレコードの形式のリンクリストデータ構造であり、各新しいブロックは、以前のブロックの暗号化ハッシュ関数の結果を含む。これにより、リンクが作成される。
【0006】
得られる結果は、ブロックのチェーン(連鎖)であり、各ブロックは全ての以前のブロックに依存する。以前のブロックの操作は、異なるハッシュ値によって、全ての未来の全てのブロックで見られる。各ブロックのハッシュを再計算することでブロックのチェーンをたどると、過去のブロックの操作を簡単に検出できる。以前のレコードの変更を防ぐために、現在幾つかの方法が利用可能であるが、それらは全て特定の欠点を有する。
【0007】
現在のブロックチェーンは、多くの場合、実際のペイロードの代わりに、実際のペイロードのハッシュを含む。全ての既知のブロックチェーンは、ブロック内に、追加のいわゆるメタデータを含み、例として、ブロック番号及びタイムスタンプが挙げられる。
【0008】
チェーンにおける以前のブロックを操作すると、全ての後続のブロックのハッシュ値が変更されるので、全ての後続のブロックも再計算する必要がある。現在知られている実装は、そのような再計算を困難にするか、又は少なくとも簡単に検出できるようにする。
【0009】
多くのブロックチェーンは、この目的のために、ネットワークにおける多数のノードを使用する。このようなネットワークにおいてノードの数が増えると、操作されたチェーンを作成することが難しくなる。例として、有向非巡回グラフ(DAG)、ベイジアンネットワークなどの技術がある。
【0010】
プルーフオブワークはブロックチェーンの技術としても知られている。ここでは、ハッシュの前向き計算に追加の計算作業が加えられる。このようなチェーンの元の計算は非常に困難であるため、ワークロードを多くの計算ノードに分散する必要がある。全てのノードは、入力データの一部を変更して同じアルゴリズムを適用する。ノードは互いに競合する。統計的には、1つのノードが必要な結果を見つけて、見つけた結果を他のノードに配布する。その後、その結果は、全てのノードでブロックチェーンの全てのコピーに配置される。結果に到達できなかったノードの作業は無駄になる。この技術はビットコインなどで広く使用されているが、エネルギーの浪費が大きいという欠点がある。
【0011】
操作されたチェーンの再計算には、チェーンの操作から最近のレコードまでの各ステップで同じ量の作業が必要になる。元のチェーンの現在のレコードに追いつくには、計算は元のチェーンの計算よりも高速である必要がある。これは、元のチェーンと比較してより多くの計算能力が必要であることを意味する。言い換えれば、ノードの半分より多くがそのような攻撃のために協力し、操作されたチェーンを受け入れ、これが正しいチェーンであると主張する必要がある。
【0012】
争いにおいて、ノードの大部分が正しいチェーンを有すると想定される。これは、ノードの少なくとも51%のコンセンサスを意味する。
【発明の概要】
【0013】
本発明は、既存のブロックチェーン技術を向上させ且つブロックチェーンの一貫性を実現する方法を変える方法である。
【0014】
さらなる特徴は、「プルーフオブワーク」を必要とせずに安全なブロックチェーンを提供することである。
【0015】
さらなる特徴は、分散ノードの必要性の排除である。
【0016】
さらなる特徴は、モバイルブロックチェーンソリューションを提供する機能(関数)を含む、物理的に小さな単一チップのブロックチェーンソリューションを提供する機能(関数)である。
【0017】
さらなる特徴は、事前定義された最大数のブロック有することが可能な安全なブロックチェーンを提供することである。
【0018】
さらなる特徴は、定義された数の操作内でブロックを作成可能なブロックチェーンを提供することであり、結果として、ブロック要求に対する定義された応答時間が得られる。
【0019】
さらなる特徴は、単一の電子チップに実装可能な大幅に高速な速度を提供することである。
【0020】
さらなる特徴は、ペイロードデータのソースの近くに又はそのソースにある他のシステム、センサ、又は他の機器に統合可能なブロックチェーンを提供することである。
【0021】
チェーンのさらなる特徴は、スタンドアロンシステムとしての使用を提供することである。
【0022】
チェーンのさらなる特徴は、分岐したチェーンを簡単に検出できることである。
【0023】
さらなる特徴は、チェーンの所有者による操作を検出可能なブロックチェーンを提供することである。
【図面の簡単な説明】
【0024】
値を含み得るフィールド
又は他のフィールドを含み得るフィールド
【0025】
【0026】
複数のフィールド、関数、又は他のオブジェクトを含むオブジェクト
オブジェクトは、別の図面に詳細が記載されているコンテナであり得る。
【0027】
複数の図面に表されるパス又は信号は、それらが発生した又は駆動された図面からの番号付けを使用する。
【0028】
本出願全体において、BSBはバックステップブロックチェーン(Back-Step Blockchain)を表す。
【
図1】BSBサンプルアプリケーション この図は、金融機関によって使用される場合のアプリケーションの一実施形態を示す。
【
図1-1】機能フローの概要 この図は、機能ブロック及び機能ブロックの基本的な関係を示す。操作の基本的な流れを説明するために使用される。
【
図2】BSBの原理 この図は、ブロックの様々な要素及び情報の原則的な流れを示す。
【
図3】バックステップ生成器 バックステップ値及びシール値の生成を示す。
【
図4】バックステップ生成器-2 この図は、必要な性能を達成するために、中間のバックステップ値を永続的又は一時的に保存可能な方法を示す。
【
図5】シール値の配信 この図は、シール値の配信を示す。
【発明を実施するための形態】
【0029】
簡単な説明
アプリケーションは、ブロックチェーンを保護するための代替的な方法を提供し、該方法は、既存のブロックチェーン技術に対して幾つか利点を提供する。BSBは、「プルーフオブワーク」も分散ネットワークも必要とせず、高速で、スマートフォンで使用される小さなシリコンチップに実装可能である。アプリケーションは、チェーンにおける有限数のステップを可能にする。ステップ数は天文学的に多くなる可能性があり、ユーザの要求に合わせて調整可能である。アプリケーションの重要な要素は、ブロックがハッシュされる前に、ブロックに追加の入力値を使用することである。このような値は、未来から過去へと伝わる。このような値は、バックステップ値及びバックステップシール値という。バックステップ値及びバックステップシール値は一方向の性質を有する。現在のブロックの値から以前のブロックの任意の値への計算は簡単であるが、次のブロックで使用される値の計算は、秘密(シークレット)を知らなくても暗号的に困難である。最初のバックステップ値と最初のバックステップシール値との2つの秘密値が使用され、チェーンシステムで秘密に保たれる必要がある。
【0030】
BSBの検証は、2つのステップを使用することで簡単に行える。第1に、現在のブロックのバックステップ値の全ての以前のブロックへの後ろ向き一方向の計算を繰り返し、第2に、最初のブロックから現在のブロックまでの従来の前向きハッシュ検証を行う。どちらの計算も動作上コストが低く高速である。もちろん、チェーンを検証するために秘密は必要ない。
【0031】
BSBは、ブロックが公開されていない単一のインストールで使用され得る。他に、例としては、小規模な企業の会計システムがある。チェーンの所有者/オペレータ自身による単一システムの操作を防止又は検出するために、アプリケーションは、バックステップシール値から計算されたシールを提供する。単一のチェーンの正確性を検証するために、アプリケーションは、最後に計算されたブロックに使用された値を除き、以前に使用されたバックステップシール値を解放できる機能を提供する。この機能は、所有者によるチェーンの正しい操作を検証するための権限(権限所有者)の要求にのみ基づきバックステップシール値を提供するように、制限され得る。他に、この機能は、例えば税金関連の会計など、フィンテック又は政府のブロックチェーンアプリケーションをサポートし得る。バックステップシール値自体はハッシュブロックの一部ではないが、シールはハッシュブロックの一部である。
【0032】
BSBは、そのアーキテクチャにより、速度、サイズ、及び普遍的な実施形態の強化を提供する。例えば銀行及びクレジットカードのトランザクションなど、時間単位あたりのブロック数が多い必要がある全てのアプリケーションにおいて、速度の向上が不可欠である。BSBは、暗号化関数(機能)に基づいた後ろ向き連鎖を使用して、「プルーフオブワーク」又は従来のブロックチェーンで知られている多数の分散ノードの要求を排除する。「プルーフオブワーク」がない場合、新しいブロックがマイクロ秒で計算され得る。これは、1秒あたりのトランザクション(取引)数が非常に多くなる可能性のある金融機関又は機械でのデータ記録で必要とされる。USBトークンと同じくらい小さい装置でのBSB方法の実施例では、1024バイトのブロックサイズの例で、1秒間に1000を超えるブロックを生成できる。ビットコインのように1000トランザクションが1ブロックに含まれる場合、1秒あたり最大100万トランザクションのトランザクションレートが可能である。該方法のさらなる実施形態は、スマートフォンのような小型デバイスでのBSBの使用を可能にする小型シリコンチップにある。これにより、誰もが自身のブロックチェーンを有する消費者アプリケーションが可能になる。他に、これにより、新世代の信頼できる決済アプリケーションを実現できる。BSBのさらなる実施形態は、データのソースでブロックを作成できる、IoTシステムのセンサへの該方法の統合である。これには、例えばフライトレコーダ又は他の機器などのブラックボックスへの統合が含まれる。実施形態の数は、創造力によってのみ制限される。
【0033】
図1に、排他的でない金融取引(トランザクション)を含むトランザクションを保護するための実施形態を示す。金融機関(10)では、BSBは、銀行固有のアプリケーションに使用され、取引の履歴を保護する。データベースシステム(11)は、ペイロードとしてブロックに挿入されるトランザクションデータを記憶する。データベースシステム(11)は、ペイロードを、BSB方法が実装されているBSBデバイス(12)に送る。(12)によって新しいブロックが生成された後、それは要求元のシステム(11)に返され、ブロックチェーンデータベースファイルに記憶される。新しいブロックの進行中のチェーンは、コンピューターネットワークを介して他のノード(13)に分散され、他のノード(13)は、ブロックチェーンのコピーを自身のコンピュータデータベースファイル(14)に記憶し得る。このような分散コンピュータは、チェーンの一貫性をいつでも検証し得るが、ブロックの生成又は信頼(トラスト)の構築には必要ない。この実施形態では、ブロックは、ハードウェアデバイス(12)内で完全に計算され保護される。
【0034】
詳細な説明
BSBは、有限数のブロックをサポートする。ブロックの最大数は、チェーンが初期されるときに適用される設計パラメータ又は構成パラメータとして定義され得る。ブロックの数は、チェーンのステップともいう。BSBは数兆のステップを有し得る。
【0035】
BSBには、信頼された操作に必要な秘密を秘密(プライベート)に保つための安全な領域が必要である。BSBは、ソフトウェア若しくはハードウェア又はその両方の組み合わせで実装され得る。必要なセキュリティを提供するのは、実際の実装の責任である。ハードウェアでの実装は、秘密に必要なセキュリティをより簡単に提供できるという利点を意味する。秘密は、
図1.1に示すバックステップ生成器(103)で使用される。
【0036】
標準的なブロックチェーンで知られているように、ハッシュ値を使用するブロックの前向き連鎖に加えて、BSBは、一又は複数の連鎖フィールドを含み、その値を、チェーンにおける最後のブロックからチェーンにおける最初のブロックに伝える。このフィールドの内容は、未来から過去に後ろ向きに伝わる。この値の計算は、バックステップ生成器(103)で実行される。より長いチェーンの場合、これは断然通常の場合であるが、全ての値を安全な領域に保存することが不可能である可能性がある。そのため、BSBは、必要なときに値を計算して提供する論理(ロジック)を含み得る。
【0037】
2つの隣接するブロックの間には、「一方向」の性質を有する暗号化関数を適用することにより、ブロックの後ろ向き連鎖フィールドが時間内に次のブロックの値から計算されるという関係が保持される。一方向性関数は、バックステップ生成器(103)に実装される。現在のブロックと全ての以前のブロックとの間で、チェーンにおけるバックステップ値が容易に計算され検証され得るが、逆の操作は暗号的に困難である。使用される一方向性関数の種類は、設計に依存する。使用される一方向性関数は、一意の入力から一意の出力を生成する必要がある。一方向性関数は、同じビット長の入力及び出力を有する必要がある。これは、ハッシュ関数又は専用の暗号化一方向性関数を使用して実現され得る。BSBに使用可能な一方向性関数は、後ろ向き計算が難しく実用的ではないという性質を提供する必要がある。さらに、入力で1つのビットが変化すると出力ビット毎に50%以下の確率で変化するという性質を提供する必要がある。ブルートフォース又は他の攻撃が、利用可能な時間内に成功しないことが必要である。ハッシュを使用する従来の前向き連鎖と、一方向の性質を有する関数を使用する後向き連鎖とが、各ブロックで結合され、チェーンのセキュリティを提供する。
【0038】
機能(関数)の概要
BSBは、動作(使用)可能となる一連の基本機能を必要とする。
図1.1に、このような機能を示す。BSBは、外部環境への接続を提供する。これは、例えばサーバ、コンピュータ、銀行端末、公共端末、個人用電子デバイス、スマートフォン、機械などの外部情報処理装置であるが、これらに限定されない。ブロックは、BSB内ではなく、この外部環境に記憶される。したがって、BSBは、入力インタフェース(101)と出力インタフェース(106)とを含み、出力インタフェース(106)で計算されたブロックが返される。
【0039】
ブロックを処理するには、データパス(108)を介してブロック生成(105)に入力が送られる必要がある。入力データは、実際のユースケースと外部システムへのチェーンの統合とに応じて、ペイロードデータ、メタデータ、以前のブロックからのハッシュなどであり得る。最初のブロックに続いて、動作を続行すると、以前のブロックのハッシュが内部に保存される可能性があり、それは入力される必要がない場合がある。電源オフサイクル中に以前のハッシュを保持するために、不揮発性ストレージが実装され得る。これは実装に依存するオプションである。インタフェース(101)を介して受け取られ、パス(107)を介して送られる開始コマンドは、制御ユニット(102)に、新しいブロックの計算を開始するように指示し得る。外部システムによって提供されるペイロード及び他の必要なデータは、パス(108)を介してブロック生成(105)に送られる。
【0040】
制御ユニットは、ブロック要求を、パス(109)を介してバックステップ生成器(103)に伝える。バックステップ生成器(103)は、チェックポイント及びキャッシュロジック(104)と通信して、パス(111)を使用して、必要なバックステップ値をブロック生成(105)に提示する。
【0041】
その時点で、ブロックはハッシュされる準備ができている。ハッシュ演算が完了すると、新しく計算されたブロックがパス(112)を介して出力インタフェースに渡され、最終的に任意選択の一時的な不揮発性ストレージに記憶される。データベースへのブロックの記憶は外部システムの責任であり、本明細書の範囲外である。
【0042】
ブロック生成
図2に、バックステップブロックチェーンの原理を示す。この図は、コントローラ(209)によって指示されるデータの論理フローを表す。したがって、長いチェーンから2つのブロック(200)、(201)が表示される。物理的に(200)と(201)は同じエンティティであり、(200)は早い時間の状態を示し、(201)はより後の時間の状態を示す。各ブロック(200)、(201)は、論理フィールドとして示され、複数の詳細フィールドからなる。ブロックは、他のアプリケーション固有のフィールド、ペイロードフィールド(202)、メタデータフィールド(203)、ブロックの前向き連鎖を提供する以前のハッシュ値フィールド(204)、シールフィールド(205)、少なくとも1つのバックステップ値フィールド(206)を含み得る。ブロックの少なくとも1つの前向き連鎖は、ハッシュ関数(207)によって提供される。前向き連鎖は、ブロックの完全なフィールドに対してハッシュ値(208)を計算することによって作成される。ブロック(200)で計算されたハッシュ値(208)が次のブロック(201)のフィールド(204)の入力値となる。バックステップ値(422)は、一方向性関数(317)を繰り返し適用することにより、ダイアグラム(300)、(400)で詳しく記載されているバックステップ生成器内の初期値から現在のブロックまで計算され得る。バックステップシール値(418)も同様に生成され、シール値(421)を生成するために使用される。シール値(421)は、チェーンの所有者/オペレータによる意図的な操作に対してチェーンの追加のセキュリティを提供するために使用され得る。したがって、現在のステップのバックステップシール値(418)は、以前のブロックのハッシュ値(208)と共にXOR関数(411)に適用され、結果として値(419)が得られる。この中間値は、ブロックシールフィールド(205)内に配置されるシール値(421)を生成する一方向性関数(412)への入力である。前向きハッシュのブロック長が一方向性関数のブロック長よりも大きくなるように選択される場合、ハッシュ結果のサブセットが関数(411)への入力として使用され得る。
【0043】
同じブロック(200)、(201)を含む全てのデータフィールドは、論理的に隣接しているが、実装に応じて、物理的に隣接する場合と隣接しない場合があり得る。グレーのコンテナに示すフィールド及び機能は、バックステップ生成器セクション(300)、(400)で詳しく記載されている。
【0044】
値(421)、(422)を構築又は提供するために必要な全てが、信頼された領域で実行される必要がある。信頼された領域では、権限が与えられていない(不正な)プロセス又は人がチェーンの未来の値を取得したりスパイ(覗き見)したりすることが困難である。
図3、
図4は、信頼された領域を含む。
【0045】
攻撃に対する保護
フォークされたチェーンに対してセキュリティを提供するBSBのメカニズムについて説明する。フォークされたチェーンは、そのチェーンの一又は複数のステップで操作されたコンテンツを有し、そのステップから元のチェーンとは異なる。第三者がチェーンを提示しそのチェーンが正しいものであると主張するときはいつでも、そのような操作されたチェーンは次のステップを計算できない。なぜなら、次のバックステップ値は、バックステップ生成器を所有する元のチェーンによってのみ計算可能であるからである。このメカニズムにより、「プルーフオブワーク」又は他の時間がかかる若しくはコンピューティング(計算)集中型の手段が不要になる。
【0046】
さらに、シール値によって提供される保護により、バックステップ生成器にアクセスできるチェーン自体の所有者/オペレータがチェーンを操作できないことが確実になる。特定のブロックのバックステップシール値を受け取る可能性のある信頼された権限(権限所有者)は、チェーンの正しさを後ろ向きに検証できる。権限(権限所有者)は、未来のブロックを操作できる情報を全く持っていない。このような権限ベースの検証では、必要なバックステップシール値を権限(権限所有者)に、そして権限(権限所有者)のみに提示する安全なチャネルが必要である。
【0047】
バックステップ生成器
図3、
図4を参照して、バックステップ値の生成及び提供の詳細に説明する。
【0048】
BSBは、ブロック要求からブロック結果までの時間が適度に速い場合に、現実的に機能し、その利点を提供できる。要求の高いアプリケーションに必要な速度は、使用のピーク時の1秒あたりのトランザクションによって定義される。現在のトランザクションレートは、フィンテックアプリケーションで1秒あたり最大20000トランザクションに達し得る。これは、既存のブロックチェーンの速度を超える。そのため、既存のチェーンでは、必要なブロックレートを下げるために、複数のトランザクションを1つのブロックに結合する必要がある。BSBの利点は、1つのブロックにおける複数のトランザクションを必要とせずに、このような、そしてさらに高速な速度を提供できることである。これには、バックステップ値及びバックステップシール値が事前に計算されており、ブロック要求の時点で既に利用可能であることが必要である。
【0049】
フルスピード(全速力)を維持し長いチェーンをサポートするには、事前計算及びキャッシュシステムが必要になり得る。
図3にバックステップ値の計算を示し、
図4にキャッシュシステムを示す。
【0050】
バックステップ生成器の初期動作
図3に示すように、バックステップ値及びバックステップシール値の生成は、一方向の性質を有する関数の繰り返し適用を含む。どちらの値も、
図3に示す同じ論理フローを使用するが、異なる初期値を含む必要がある。BSBを最初に使用する前に、初期バックステップ値(301)及び初期バックステップシール値(302)を生成し、対応する不揮発性ストレージ(303)及び(304)に読み込む必要がある。初期バックステップ値(301)及び初期バックステップシール値(302)の両方の値が秘密にされる必要がある。BSBの実装では、初期バックステップ値(301)及び初期バックステップシール値(302)の両方の値が、互いにアルゴリズム上の関係を持たないようにする必要があり、独立してランダムに生成される必要がある。値(301)、(302)は、コントローラ自体又は任意の他の外部の信頼されたランダムソースによって生成され得る。これらの初期値は、BSBの外部に記憶されてはならない。
【0051】
チェーンの最初のブロックを処理するには、最初のステップの値に到達するまで、バックステップ生成器が全ての値を後ろ向きに循環させる必要がある。この有限数のブロック/ステップは、コントローラ(308)が必要とする構成パラメータである。
【0052】
チェーンが提供するステップ数(305)は、不揮発性ストレージ(306)にロードされ得る。この数は、システムの外部からインタフェースを介して読み込まれることも、実際の実装の一部として事前定義された値にすることもできる。コントローラ(308)は、ストレージ(306)の出力を値(307)として受け取る。最初の一方向計算では、制御ロジックは、入力セレクタ(311)及び(312)のそれぞれの信号(313)及び(314)を介して入力Cを選択する。選択された信号(315)及び(316)は、一方向性関数(317)及び(318)への入力である。パス(319)及び(320)を使用するコントローラは、一方向ロジックの動作を開始したり停止したりする。一方向ロジックの出力、パス(321)及び(322)は、出力セレクタ(323)及び(324)にルーティングされる。両方のセレクタは、制御ユニット(308)からの制御パス(325)及び(326)を使用して出力Aに切り替えられる。セレクタの出力値(333)及び(334)は、入力セレクタのポートAに接続される。コントローラは、後続する計算ラウンドのために入力Aを選択する。ここで、これらの動作は定義されたステップ数だけ循環する。
【0053】
チェックポイント値
一方向ループによって生成される中間値が、それら全てをBSBのストレージに記憶するには多すぎる可能性がある。代わりに、ステップサイズという事前定義された数のサイクルの後、値は、いわゆるチェックポイント値(342)、(343)として、
図4に示す不揮発性ストレージ401に記憶され得る。そのために、コントローラ(308)は、出口Aに加えて、パス(342)及び(342)の出口C(329)及び(332)を出力セレクタ(323)及び(324)で有効にする。値を不揮発性ストレージに記憶するのに必要な時間は、出口Cポート(329)及び(332)がレジスタとして実施される一方向サイクル時間よりも長くなり得る。これにより、一方向の循環(サイクリング)が暫く停止するのを回避できる。実際の実施(実装)は、使用されるコンポーネント、アーキテクチャのタイミング動作に依存し、様々であり得る。したがって、この実施は、技術原理を表す。システムは、オフになっているか、他の理由で停電している可能性がある。これは、初期化時又はその後の通常動作時に発生する可能性がある。再起動後、一方向の値の計算は、必ずしも初期値からでなくてもよく、最も近いチェックポイント値から開始できる。これにより、計算時間が節約される。チェックポイント値の数が多いほど、応答が速くなるが、より多くのストレージが必要になる。これは、ストレージと時間とのトレードオフであり、BSBの設計パラメータである。電源投入時に、システムは最も近いチェックポイントから要求される次のステップまでを計算する必要がある。この計算には、電源を入れる度に時間がかかる。チェックポイントストレージ(記憶)にはチェックポイントアドレスロジック(337)が必要である。チェックポイントアドレスロジック(337)は、初期化中にチェックポイント値を記憶するため及び通常動作中に値をフェッチするためのアドレスを管理する。チェックポイントアドレスロジック(337)は、コントローラ(308)から命令及び開始アドレス値を受け取り、チェックポイント記憶のためにパス(339)上に書き込み、読み取り、アドレス、及び全ての他の必要な制御信号を生成する。チェックポイントアドレスロジックは、パス(340)上の信号を使用してキャッシュコントローラ(408)の機能(関数)をさらに管理する。
【0054】
チェックポイントストレージの詳細
チェックポイントストレージ(401)は、2列(402)、(403)、m行の行列として論理的に構成されている。列のビット幅は、バックステップ値(335)を保持するのに十分な大きさである必要がある。同じことがバックステップシール値(336)を保持する列にも当てはまる。実際の実装では、実装固有の制御ビットが必要である場合、これらの列をより広くする必要があり得る。
【0055】
チェックポイントストレージ(401)には、全ての必要なチェックポイント値を記憶するために必要な行数が必要である。数mは、ブロックの有限数をチェックポイントステップサイズで割った数で定義される。チェックポイントステップサイズは、2つの隣接するチェックポイント間のステップ数として定義される。
【0056】
記憶されるチェックポイント値は、セレクタ(323)、(324)を通過し、パス(342)、(343)上の出口C(329)、(332)を使用してチェックポイントストレージ(401)の入力に渡される。読み取り、書き込み、及び実際のアドレスを定義するための制御信号が、パス(339)を使用してチェックポイントアドレスロジックで発生する。
【0057】
通常のブロックチェーン動作中にブロックが処理される場合、バックステップ値及びバックステップシール値を計算するために、チェックポイント値が不可欠である。必要なチェックポイント値を選択するために、現在のステップカウント数を使用して最も近いチェックポイントを計算し得る。次に、
図4のバックステップ値(404)及びバックステップシール値(405)がそれぞれ、セレクタ(311)及び(312)を介して一方向性関数(317)及び(318)に入力(315)及び(316)として読み込まれ得る。生成器は、既に説明した方法で循環して、バックステップ値及びバックステップシール値を生成する。
【0058】
バックステップキャッシュ
高速なブロックチェーン生成が必要な高速アプリケーションでは、必要な速度を提供するために追加のキャッシュロジックが必要である。
【0059】
チェックポイントストレージは、未来のブロックに必要なバックステップデータを提供する。このような未来の値から始めて、次のブロックのデータを後ろ向きに(逆算して)計算する必要がある。結果は、2つの交互のキャッシュストレージを常に埋めるために使用され、キャッシュストレージは、ブロック計算に実際の値を渡す。キャッシュは複数のレベルで実装され得る。バックステップデータの生成がブロック生成速度よりも速い場合、ストレージ要件を保存するためにマルチレベルキャッシュが実装され得る。6レベルのキャッシュにより、わずか32キロバイトのランダムストレージで1億3400万を超えるバックステップ値及びバックステップシール値を提供できる。
図4は、単一レベルのキャッシュの実装を示す。
【0060】
図4に示す生成器は、キャッシュA、キャッシュBという名前の2つのキャッシュストレージ(406)、(407)を埋めるために使用される。各キャッシュストレージは、バックステップ値及びバックステップシール値のフィールドを有する。生成器(300)の出力セレクタ(323)、(324)からのパス(335)、(336)を使用する出力値は、両方のキャッシュに接続される。使用されるキャッシュは、キャッシュコントローラ(408)により選択される。キャッシュは、先入れ後出しのストレージとして構成される。対応するアドレス及び読み取り/書き込みの制御信号は、パス(409)を使用してキャッシュコントローラ(408)によって生成される。キャッシュコントローラは、出力マルチプレクサ(410)、(412)、(413)の入力信号も生成する。
【0061】
初期化の最後に、チェックポイントストレージに値が読み込まれる。動作中、2つのキャッシュストレージは交互に動作し、キャッシュAはブロック計算ロジックに値を提供し、キャッシュBには次の値が読み込まれる。キャッシュAからの最後の値が消費されると、キャッシュはその役割を切り替え、キャッシュBは値を提供し、キャッシュAが読み込みを行う。これにより、高速動作でのシームレスな(途切れない)ブロック生成をサポートする。低速動作の稀なケースでは、マルチプレクサ(413)、(410)を使用してキャッシュがバイパス(迂回)され得る。高速動作中、これらのマルチプレクサはキャッシュAとキャッシュBとの間で交互に切り替わる。
【0062】
マルチプレクサ(413)は、バックステップ値(420)をブロック生成に提供し、キャッシュ動作中に入力パス(416)及び(417)を交互に使用する。マルチプレクサ(410)は、バックステップシール値を選択する責任があり、キャッシュ動作中に入力パス(414)及び(415)を交互に使用する。キャッシュが必要ない場合、マルチプレクサ(413)はバックステップ値についてパス(335)を選択し、マルチプレクサ(410)はバックステップシール値についてパス(336)を選択する。
【0063】
パス(418)上のマルチプレクサ(410)によって選択されたバックステップシール値は、シール生成への入力である。シール生成は、XOR関数(411)を使用して、パス(418)上のシール値をパス(208)上の以前のブロックからのハッシュ値と結合する。XOR結果(419)は、別の一方向性関数(412)への入力となる。この一方向性関数は、処理中の現在のブロックについてのパス(421)にシールを生成する。
【0064】
権限検証
BSBはチェーン(CHAIN)検証のための2つの方法を提供する。第1に、チェーンにおける現在のブロックから最初のブロックまでのバックステップ値について一方向性関数を計算することにより、バックステップブロックチェーンを簡単に遡ることができる。そして、最初のブロックから現在のブロックまでのハッシュを計算できる。後ろ向き計算と前向き計算の両方が一致する場合、チェーンは一貫しており、第三者によって操作されていない。
【0065】
第2に、権限の検証が提供される。BSBの所有者/オペレータがチェーンを変更できないことを確実にするために、追加のシールが使用される。シールは、前向き連鎖と後ろ向き連鎖との組み合わせであり、ブロックに挿入される。ハードウェアを所有するBSチェーンの所有者でさえ、検出されない以前のブロックを変更することはできない。
【0066】
シール検証には、以前のブロックのバックステップシール値が必要である。チェーン上の以前のブロックから、最初のブロックへの方向で検証できる。BSBは、以前のブロックについてのみ、好ましくは要求に応じてのみ、現在のブロックのバックステップシール値を解放しない。例えば政府当局、裁判所などの第三者によるチェーンのシール検証には、問題のブロックのバックステップシール値の解放が必要である。BSBは、必要なステップの値(418)を暗号化された形式でインタフェースを介して要求元に提供する。
【0067】
許可された要求が受け取られた場合、要求されたシール値を配信するため一連の関数(機能)が提供される。このような関数は、初期構成時に有効になっていても有効になっていなくてもよい。これを
図5に示す。初期構成中に、不揮発性ストレージ(502)には一又は複数の認証秘密(508)が読み込まれ、不揮発性ストレージ(506)には一又は複数の暗号化秘密(509)が読み込まれる。定義されたブロックのシール値の要求(500)が、外部インタフェースからコントローラ(501)に提供される。(501)での認証/検証プロセスは、要求が許可される必要があるか否かを決定するために使用される。認証プロセスは、永続的に記憶される認証秘密を使用し得る(508)。既存のチャレンジレスポンス又は他の認証プロトコルが使用され得る。実際のプロトコルは実装に依存し、本明細書の範囲外である。
【0068】
外部要求が許可された場合、パス(341)を使用する内部要求が制御ロジック(308)に提供される。制御ロジック(308)は、要求されたバックステップシール値の計算を開始する。この計算では、チェックポイント値を使用するか、又は初期値から計算を開始し得る。要求された値が計算されるとすぐに、パス(343)を使用して、その値をシール保護プロセス(504)に提供する。このプロセスでは、バックステップシール値を暗号化してもよく、ストレージ(506)からの保護秘密が必要であってもよい。このような秘密は、最初にパス(509)を介して読み込まれ、パス(507)を介して保護ユニット(504)に提供される。保護の詳細と最終的に使用される暗号化は、実装に依存する。シール値が保護された後、パス(505)を使用してインタフェースでシール値が提供される。2つの関連する一方向性関数(317)及び(318)を知っている外部検証プロセスでは、チェーン全体を最初のブロックに戻って検証し、適用された変更を検出できる。