(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-17
(45)【発行日】2022-05-25
(54)【発明の名称】チェーンデータの検証システムおよび方法
(51)【国際特許分類】
H04L 9/32 20060101AFI20220518BHJP
【FI】
H04L9/32 200A
H04L9/32 200Z
(21)【出願番号】P 2020076044
(22)【出願日】2020-04-22
【審査請求日】2020-04-22
(32)【優先日】2019-04-24
(33)【優先権主張国・地域又は機関】TW
(73)【特許権者】
【識別番号】520143100
【氏名又は名称】國際信任機器股▲ふん▼有限公司
(74)【代理人】
【識別番号】110000338
【氏名又は名称】特許業務法人HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】黄冠寰
【審査官】中里 裕正
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
セキュリティプロトコル装置によって実行される検証方法であって、
オフチェーン方式によりデータベースに複数のバイナリーツリーを保存する工程であって、それぞれの前記バイナリーツリーはルートおよび複数のリーフノードを含み、それぞれの
前記ルートがルートハッシュを保存する、オフチェーン方式によりデータベースに複数のバイナリーツリーを保存する工程、
読み取り要求を受信する工程、
前記読み取り要求に応じて、前記データベースからの前記ルートハッシュおよびブロックチェーンからの固有のチェーンハッシュを読み取る工程、
計算されたチェーンハッシュを決定するために、前記データベースから読み出された前記ルートハッシュに対してハッシュ化およびチェーニング処理を実行する工程、および、
前記データベースにおける前記ルートハッシュの正確さを検証するために、前記固有のチェーンハッシュを、前記計算されたチェーンハッシュと比較する工程、
を含む、検証方法。
【請求項2】
ハッシュ化およびチェーニング処理を実行する前記工程は、
直列方式によりチェーンされた、複数のオフチェーンデータセットを生成する工程を含み、
それぞれの前記オフチェーンデータセットは、前記データベースから読み取られた前記ルートハッシュのそれぞれ1つと、対応する第1のチェーンハッシュとを含み、最初の前記オフチェーンデータセットの前記第1のチェーンハッシュは、イニシャルチェーンハッシュのハッシュ化により生成され、前記最初のオフチェーンデータセット以後のそれぞれのオフチェーンデータセットの第1のチェーンハッシュは、直前の前記オフチェーンデータセットのハッシュ化により生成され、最後の前記オフチェーンデータセットのチェーンハッシュは、前記計算されたチェーンハッシュである、請求項1に記載の検証方法。
【請求項3】
複数の記録データの値を受け取る工程、および、
ハッシュ値が前記リーフノードにそれぞれ保存されている前記記録データの値を、前記バイナリーツリーにハッシュ関数に従って統合する工程、および
前記ブロックチェーンに前記バイナリーツリーの前記ルートハッシュを保存する工程、をさらに含む
請求項2に記載の検証方法。
【請求項4】
前記ブロックチェーンに保存された前記ルートハッシュは、チェーンデータストリングに含まれ、前記チェーンデータストリングは直列方式によりチェーンされた複数のデータセットを含み、それぞれの前記データセットは、前記ブロックチェーンに保存されている前記ルートハッシュのそれぞれ1つおよび対応する第2のチェーンハッシュを含み、最初の前記データセットの前記第2のチェーンハッシュは前記イニシャルチェーンハッシュのハッシュ化により生成され、前記最初のデータセット以後のそれぞれのデータセットの第2のチェーンハッシュは、直前の前記データセットのハッシュ化により生成され、最後の前記データセットのチェーンハッシュは、前記固有のチェーンハッシュである
請求項3に記載の検証方法。
【請求項5】
前記データセットが、それぞれ、識別シーケンス番号を含むように、複数の前記識別シーケンス番号を前記ブロックチェーンに送信する工程をさらに含み、
それぞれの前記識別シーケンス番号はタイムスタンプを含む、請求項4に記載の検証方法。
【請求項6】
それぞれの前記オフチェーンデータセットは、識別シーケンス番号および累積シーケンス番号をさらに含み、それぞれの前記累積シーケンス番号は、それぞれの前記オフチェーンデータセットの前記ルートハッシュにそれぞれ対応し、それぞれの前記オフチェーンデータセットの前記累積シーケンス番号は、直前の前記オフチェーンデータセットの前記累積シーケンス番号から導出された累積値であり、それぞれの前記オフチェーンデータセットの前記第1のチェーンハッシュは、前記直前のオフチェーンデータセットの前記ルートハッシュと、前記識別シーケンス番号と、前記累積シーケンス番号と、前記第1のチェーンハッシュとのハッシュ化により生成される、
請求項2に記載の検証方法。
【請求項7】
メモリと、
前記メモリに連結するように構成されたプロセッサであって、
オフチェーン方式によりデータベースに複数のバイナリーツリーを保存し、それぞれの前記バイナリーツリーはルートおよび複数のリーフノードを含み、それぞれの
前記ルートはルートハッシュを保存し、
読み取り要求を受信し、
前記読み取り要求に応じて、前記データベースからの前記ルートハッシュおよびブロックチェーンからの固有のチェーンハッシュを読み取り、
計算されたチェーンハッシュを決定するために、前記データベースから読み取られた前記ルートハッシュに対してハッシュ化およびチェーニング処理を実行し、および、
前記データベースの前記ルートハッシュの正確さを検証するために前記固有のチェーンハッシュを、前記計算されたチェーンハッシュと比較するように構成されているプロセッサと、
を含むセキュリティプロトコル装置。
【請求項8】
前記プロセッサは、
直列方式によりチェーンされた複数のオフチェーンデータセットを生成し、それぞれの前記オフチェーンデータセットは、前記データベースから読み取られた前記ルートハッシュのそれぞれ1つと、対応する第1のチェーンハッシュとを含み、最初の前記オフチェーンデータセットの前記第1のチェーンハッシュはイニシャルチェーンハッシュをハッシュ化することによって生成され、前記最初のオフチェーンデータ以後のそれぞれのオフチェーンデータセットの第1のチェーンハッシュは直前の前記オフチェーンデータセットのハッシュ化により生成され、最後の前記オフチェーンデータセットのチェーンハッシュは前記計算されたチェーンハッシュである、ようにさらに構成されている
請求項7に記載のセキュリティプロトコル装置。
【請求項9】
前記プロセッサは、
複数の記録データ値を受信し、
ハッシュ値が前記リーフノードにそれぞれ保存されている前記記録データ値をバイナリーツリーにハッシュ関数に従って統合し、
および、
前記ブロックチェーンに前記バイナリーツリーの前記ルートハッシュを保存する、
ようにさらに構成される、
請求項8に記載のセキュリティプロトコル装置。
【請求項10】
前記ブロックチェーンに保存されている前記ルートハッシュがチェーンデータストリングに含まれ、前記チェーンデータストリングは直列方式によりチェーンされた複数のデータセットを含み、前記データセットのそれぞれは前記ブロックチェーンに保存されている前記ルートハッシュのそれぞれ1つと、対応する第2のチェーンハッシュとを含み、最初の前記データセットの前記第2のチェーンハッシュは、前記イニシャルチェーンハッシュのハッシュ化により生成され、前記最初のデータセット以後のそれぞれのデータセットの第2のチェーンハッシュは、直前の前記データセットのハッシュ化により生成され、最後の前記データセットのチェーンハッシュは前記固有のチェーンハッシュである、請求項9に記載のセキュリティプロトコル装置。
【請求項11】
それぞれの前記オフチェーンデータセットは、識別シーケンス番号および累積シーケンス番号をさらに含み、それぞれの前記累積シーケンス番号は、それぞれの前記オフチェーンデータセットの前記ルートハッシュにそれぞれ対応し、それぞれの前記オフチェーンデータセットの前記累積シーケンス番号は、直前の前記オフチェーンデータセットの前記累積シーケンス番号から導出された累積値であり、それぞれの前記オフチェーンデータセットの前記第1のチェーンハッシュは、前記直前のオフチェーンデータセットの前記ルートハッシュと、前記識別シーケンス番号と、前記累積シーケンス番号と、前記第1のチェーンハッシュとのハッシュ化により生成される、請求項8に記載のセキュリティプロトコル装置。
【発明の詳細な説明】
【発明の詳細な説明】
【0001】
〔関連出願の相互参照〕
本非仮出願は、米国特許法119(a)に基づいて、2019年4月24日に台湾、中華民国に出願された特許出願第108114389号の優先権を主張し、その全内容は参照により本明細書に組み込まれる。
【0002】
〔技術分野〕
本発明は検証システムに関し、特に、ブロックチェーンと連携し、チェーニングデータのために使用することができる検証システムおよび方法に関する。
【0003】
〔背景技術〕
従来技術において、ブロックチェーンは中央分散を達成するために分散アーキテクチャを採用している。世界の端末コンピュータは、ブロックチェーンによって接続することができる。任意の端末コンピュータによってブロックチェーンに送信されたデータは、固有の処理モードによってブロックチェーン上の他の端末コンピュータに配信することができる。これらのデータはブロックチェーン上の多数の端末コンピュータに保存されるため、データの正確さは、ブロックチェーン上の多数の端末コンピュータによって相互に検証することができ、ブロックチェーンのデータを変更または改ざんすることを困難にする。
【0004】
従来の端末の中央化されたアーキテクチャにおいて、端末コンピュータがサーバにデータをアップロードするか、またはサーバからデータをダウンロードする必要がある場合、このタスクは、端末コンピュータ、中央サーバ、およびこれら2つの間のネットワークサーバといった限定された装置の処理のみを呼び出す。このタスクは、現行のネットワーク速度およびコンピュータ計算能力の観点から極めて迅速に実行することができる。しかしながら、ブロックチェーンのアーキテクチャにおいて、端末コンピュータがブロックチェーンの特性に基づいて、ブロックチェーンにデータをアップロードするか、またはブロックチェーンからデータをダウンロードする必要があるとき、このタスクはブロックチェーン上の多数の他の端末コンピュータ(マイナーなど)の検証手順を呼び出す。その結果、膨大なネットワーク送信要件および処理金額が発生し、これは比較的時間がかかり、処理コスト(例えば、マイナーのための料金)が高くなる。
【0005】
概して、ブロックチェーンは、バイナリーツリーまたはメルクルツリーを使用するツリー状のデータ構成である。全てのデータは、ハッシュ値を生成するためにハッシュ化される。バイナリーツリーは、最上層にルートを含み、最下層に複数のリーフノードを含む。リーフノードにはデータ毎のハッシュ値が保存されており、全てのリーフノードのハッシュ値は階層毎に処理されて、ツリーのルートにルートハッシュが生成される。すべてのバイナリーツリーは、ブロックチェーン上の端末コンピュータに保存される。バイナリーツリーのデータの正確さを検証するために、バイナリーツリーの正確さおよびそのデータは、端末コンピュータ上のバイナリーツリーのルートハッシュを比較することによって検証することができる。
【0006】
〔概要〕
既存のブロックチェーンによれば、ブロックチェーン上の多数のデータを読み取るとき、負荷がブロックチェーン上の端末コンピュータに発生し、効率が良くはない。さらに、もし多数のデータの読み取り処理がブロックチェーン上の端末コンピュータにより悪意のある行為とみなされたならば、読み取り要求はブロックチェーン上の端末コンピュータによりブロックされ、データは読み取れない。さらに悪いことに、読み取り要求を発行するネットワークアドレスは、ブロックチェーン上の端末コンピュータによりブラックリスト化され、ブロックチェーンはもはや端末コンピュータによりアクセスすることができない。
【0007】
この観点から、本発明は、ブロックチェーン上の多数のデータの読み取りにより引き起こされる非効率性の問題を解決し、多数の読み取りによって引き起こされるブロックチェーンの巨大なネットワーク送信要件およびブロックチェーンの処理負荷の問題を解決するために、チェーニングデータのための検証システムおよび方法を提供する。
【0008】
本発明の実施形態は、ブロックチェーンおよびチェーニングデータの連携に適した検証システムを提供する。検証システムは、セキュリティプロトコル装置と、ブロックチェーン装置と、データベース装置とを含む。セキュリティプロトコル装置は、複数の記録データを受信し、記録データを複数のバイナリーツリーにハッシュ関数に従って統合する。それぞれのバイナリーツリーは、ルートおよびリーフノードを含む。ルートのそれぞれは、ルートハッシュを保存し、記録データのハッシュ値はそれぞれリーフノードに保存される。ブロックチェーン装置はブロックチェーンに位置し、セキュリティプロトコル装置と通信する。セキュリティプロトコル装置は、バイナリーツリーのルートハッシュをブロックチェーン装置に送信する。ブロックチェーン装置は、少なくとも1つのチェーンデータストリングを含む。チェーンデータストリングは、直列方式によりチェーンされた複数のデータセットを含む。それぞれのデータセットはルートハッシュおよび対応したチェーンハッシュをそれぞれ1つ含む。それぞれのデータセットのチェーンハッシュは、ルートハッシュおよび直前のデータセットのチェーンハッシュに関連付けする。第1のデータセットのチェーンハッシュはイニシャルチェーンハッシュに関連付けしている。データベース装置は、セキュリティプロトコル装置とオフチェーン方式により、ブロックチェーンを関与せずに通信する。セキュリティプロトコル装置は、バイナリーツリーおよびイニシャルチェーンハッシュをデータベース装置に保存する。
【0009】
本発明の実施形態は、ブロックチェーンと連携するために適している検証方法を提供する。検証方法は、複数の記録データをオフチェーン方式により、ブロックチェーンを関与せずに受信する工程、記録データを複数のバイナリーツリーにハッシュ関数に従って統合する工程、ここでそれぞれのバイナリーツリーはルートおよび複数のリーフノードを含み、それぞれのルートはルートハッシュを保存し、バイナリーツリーのハッシュ値はリーフノードにそれぞれ保存されており、バイナリーツリーのルートハッシュをブロックチェーンに送信する工程、ここで、少なくとも1つのチェーンデータストリングはブロックチェーン上に設定され、チェーンデータストリングは直列方式によりチェーンされた複数のデータセットを含み、それぞれのデータセットはルートハッシュおよび対応するチェーンハッシュのそれぞれ1つを含み、それぞれのデータセットのチェーンハッシュはルートハッシュおよび直前のデータセットのチェーンハッシュに関連付けられ、最初のデータセットのチェーンハッシュはイニシャルチェーンハッシュに関連付けられ、およびブロックチェーンに関与しないオフチェーン方式によりバイナリーツリーおよびイニシャルチェーンハッシュを保存する工程を含む。
【0010】
要するに、本発明の実施形態における検証システムおよび方法の手段により、バイナリーツリーの多数のルートハッシュを読みだす必要がある場合、ルートハッシュはオフチェーンデータベース装置によって読み出すことができ、オフチェーン方式により読み出されたルートハッシュの正確さは、ブロックチェーン上のチェーンデータストリングの後ろのデータセットのチェーンハッシュを使用することにより検証される。したがって、データの信頼性を維持することを前提として、ネットワーク送信要件およびブロックチェーンの処理負荷が軽減される。
【0011】
本発明の詳細な特徴および利点は、以下の実施において詳細に記載される。その内容は、当業者が本発明の技術的内容を理解し、内容に応じて本発明の内容を実施するのに充分である。本発明の関連する目的および利点は、明細書に開示される内容、特許請求の範囲、および図面に従って、当業者によって容易に理解され得る。
【0012】
〔図面の簡単な説明〕
図1は、本発明の一実施形態による検証システムの概略ブロック図である。
【0013】
図2は、本発明の一実施形態によるバイナリーツリーの概略図である。
【0014】
図3は、本発明の一実施形態によるチェーンデータストリングの概略
図Iである。
【0015】
図3aは、本発明の一実施形態によるチェーンデータストリングの概略
図IIである。
【0016】
図4は、本発明の別の実施形態による検証システムの概略ブロック図である。
【0017】
図5は、本発明のさらに別の実施形態による検証システムの概略ブロック図である。
【0018】
図6は、本発明の一実施形態によるバイナリーツリーのスライスの概略図である。
【0019】
図7は、本発明の別の実施形態によるチェーンデータストリングの概略図である。
【0020】
図8は本発明の一実施形態による検証方法のフローチャートである。
【0021】
図9aおよび9bは、本発明の別の実施形態による検証方法のフローチャートである。
【0022】
〔詳細な説明〕
図1を参照すると、
図1には、本発明の一実施形態による検証システム10の概略ブロック図が示されている。本実施形態において、検証システム10は、ブロックチェーンBCと連携するのに適している。ブロックチェーンBCは、パブリックブロックチェーン、プライベートブロックチェーン、またはそれらの組み合わせを含むことができる。検証システム10は、例えばブロックチェーンBCに関与しない1つまたは複数のオフチェーン装置および/または1つまたは複数のオフチェーンチャンネルから成る、例えばオフチェーンフレームワークOCを介したオフチェーン方式により複数の端末装置400と通信するように構成されている。また、検証システム10は、オフチェーンフレームワークOCおよびブロックチェーンBCと連携する。それぞれの端末装置400は、少なくとも1つの記録データRDを生成することができる。オフチェーンフレームワークOCは、ブロックチェーンBCとは独立した経路、すなわちブロックチェーンBCに関与しない経路を指す。オフチェーンフレームワークOCの通信とは、ブロックチェーンBCとは独立した経路上の通信関係、すなわちブロックチェーンBCに関与しない経路を通した通信の確立をいう。例えば、オフチェーンフレームワークOCを介した2つの装置間の通信は、2つの装置が直接的に接続され、ブロックチェーンBCを呼び出さずにネットワークを介して互いに信号を送信することができることを意味する。端末装置400は、例えば、デスクトップコンピュータ、ノートブックコンピュータ、または各種センサである。記録データRDは、例えば、デスクトップコンピュータまたはノートブックコンピュータによって生成されたファイル情報やトランザクション情報、センサによって感知された数値情報であるが、これに限定されるものではない。
【0023】
図1に示すように、本実施形態において、検証システム10がセキュリティプロトコル装置100と、データベース装置200と、ブロックチェーン装置300とを含む。セキュリティプロトコル装置100は、ブロックチェーンBCに関与しないオフチェーンフレームワークOCを介してデータベース装置200と通信し、セキュリティプロトコル装置100は、ブロックチェーンBC上に位置するブロックチェーン装置300と通信する。データベース装置200は、例えば、ブロックチェーンBCとは独立したデータ記憶サーバであり、ブロックチェーン装置300は、例えば、ブロックチェーンBCに接続された複数のコンピュータの集合であるが、これに限定されるものではない。本実施形態について、セキュリティプロトコル装置100は、ブロックチェーンBCとオフチェーンフレームワークOCの通信能力を組み合わせたサーバである。例えばセキュリティプロトコル装置100は、オフチェーンフレームワークOCとブロックチェーンBCとの間を仲介するものであり、後述するように、端末装置400とデータベース装置200との間の橋渡しをブロックチェーン装置300と同様に行うことができる。
【0024】
図2を参照すると、
図2には、本発明の一実施形態によるバイナリーツリーBTの概略図が示されている。
図1および
図2に示すように、本実施形態において、それぞれの端末装置400が記録データRDを生成した後、それぞれの端末装置400はオフチェーンフレームワークOCを介して記録データRDをセキュリティプロトコル装置100に送信する。セキュリティプロトコル装置100が、オフチェーンフレームワークOCを介してそれぞれの端末装置400の記録データRDを受信した後、セキュリティプロトコル装置100は、記録データRDを少なくとも1つのバイナリーツリーBTにハッシュ関数に従って統合する。
【0025】
図2に示すように、本実施形態において、バイナリーツリーBTは、ルートRと、複数のミドルノードMNと、複数のリーフノードLNとを含む。バイナリーツリーBTのツリーデータ構成において、ルートRは最上層に位置し、リーフノードLNは最下層に位置し、ミドルノードMNは最上層と最下層との間の1つまたは複数の層に分布している。全ての2つの隣り合うリーフノードLNは、上位レイヤにおいて統合され、ミドルノードMNとなる。それぞれのレイヤにおける全ての2つの隣り合うミドルノードMNは、上位レイヤにおいて統合され、ミドルノードMNとなる。最上位レイヤにおける2つのミドルノードMNは、統合され、ルートRになる。それぞれのリーフノードLNは、記録データRDのハッシュ値RDHのそれぞれ1つが保存されている。それぞれのミドルノードMNのハッシュ値と、ルートRのルートハッシュRHとは、記録データRDのハッシュ値RDHに関連付けられている。
【0026】
例えば、セキュリティプロトコル装置100は、対応するハッシュ値RDHを生成するために、SHA-256のハッシュ関数を用いて記録データRDをハッシュ化することがあり、セキュリティプロトコル装置100は、それぞれのリーフノードLNに対して、記録データRDのハッシュ値RDHを保存する。さらに、2つの隣接するリーフノードLNのそれぞれの組に保存された2つのハッシュ値は接続され、次いで、ハッシュ化され、上位レイヤのミドルノードMNに保存され、それぞれのレイヤの2つの隣接するミドルノードMNのそれぞれの組に保存された2つのハッシュ値は接続され、次いで、ハッシュ化され、上位レイヤのミドルノードMNに保存され、以下同様である。本実施形態において、2つのハッシュ値は接続され、次に2つのハッシュ値が最初にコードのストリングに接続され、次にコードのストリングがハッシュ化されるように順次ハッシュ化されるが、これに限定されない。例えば、第1のハッシュ値が「xxx」であり、第2のハッシュ値が「ooo」である場合、2つのハッシュ値は最初に、「xxxooo」のコードのストリングとして接続され、ストリングコード「xxxooo」は、ハッシュ値を生成するために再度ハッシュ化される。最後に、最上位レイヤの2つのミドルノードMNに保存された2つのハッシュ値が接続され、ハッシュ化されて、ルートハッシュRHが生成される。すなわち、バイナリーツリーBTは、リーフノードLNに保存されている記録データRDのハッシュ値RDHと、ルートRに保存されているルートハッシュRHとを含んでいる。その上、記録データRDは改竄することができない。これは、バイナリーツリーBT内の記録データRDが改竄されている限り、記録データRDのハッシュ値RDHが変化するためである。いずれかのリーフノードLNの記録データRDのハッシュ値RDHが変化する限り、バイナリーツリーBTのルートハッシュRHもそれに応じて変化する。ルートハッシュRHが変化したか否かを判定することにより、バイナリーツリーBTに対応する記録データRDの正確さを検証することができる。別の実施形態において、1つのリーフノードLには、2つ以上の記録データRDのハッシュ値RDHが保存されていてもよい。この場合、リーフノードLNに保存されるハッシュ値RDHは、2つ以上のレコードデータRDのハッシュ値RDHを連結してハッシュ化した値である。
【0027】
図1および
図2に示すように、本実施形態において、セキュリティプロトコル装置100がバイナリーツリー処理ユニット110および検証ユニット120を含む。バイナリーツリー処理ユニット110および検証ユニット120は、例えば、ソフトウェア/ハードウェアによって形成された機能モジュールであり、これらに限定されないが、それぞれ特有の機能を実行する。バイナリーツリー処理ユニット110および検証ユニット120は独立したモジュールであってもよいし、統合されたモジュールであってもよい。
【0028】
本実施形態において、セキュリティプロトコル装置100のバイナリーツリー処理ユニット110は受信した記録データRDを自動的にハッシュ化して統合し、バイナリーツリーBTを生成する。セキュリティプロトコル装置100はバイナリーツリーBTのルートハッシュRHを、ブロックチェーン装置300に送信する。すなわち、これらのルートハッシュRHは、ブロックチェーンBCに保存される。また、セキュリティプロトコル装置100は、バイナリーツリーBTをデータベース装置200に保存する。すなわち、完全なバイナリーツリーBTはブロックチェーンBCに保存される代わりに、オフチェーンフレームワークOCを介して保存される。他の実施形態において、完全なバイナリーツリーBTがデータベース装置200に保存され、ブロックチェーン装置300に送信されてもよい。
【0029】
本実施形態において、セキュリティプロトコル装置100の検証ユニット120は、データベース装置200に保存されているバイナリーツリーBTの正確さを検証する。セキュリティプロトコル装置100が検証要求を受信し、検証要求がある記録データRDの正確さを検証するとき、検証ユニット120はブロックチェーン装置300上の記録データRDに対応するバイナリーツリーBTのルートハッシュRHと、データベース装置200に保存されたレコードデータRDに対応するバイナリーツリーBTのルートハッシュRHとを自動的に比較し、データベース装置200に保存されたバイナリーツリーBTの正確さを検証する。ブロックチェーン装置300上のルートハッシュRHが、データベース装置200に保存されたバイナリーツリーBTのルートハッシュRHと一致する場合、ブロックチェーンBCの特性に基づいて、データベース装置200に保存された記録データRDのバイナリーツリーBTが正しいことを示す。
【0030】
完全なバイナリーツリーBTはオフチェーンフレームワークOCを介してデータベース装置200内に配置されるため、記録データRDのハッシュ値RDHのアクセスおよび処理は主にオフチェーンフレームワークOCを介して実行され、ブロックチェーンBC上で従来的に実行されるこのタスクのためのネットワーク送信要件、処理量、処理時間、および処理コストを節約することができる。また、ブロックチェーン装置300上の対応するルートハッシュRHと比較することにより、データベース装置200内のバイナリーツリーBTのルートハッシュRHを検証することができ、オフチェーンフレームワークOCを介したデータベース装置200内のデータの正確さは確保され得る。
【0031】
図3を参照すると、
図3は、本発明の一実施形態によるチェーンデータストリングCDSの概略
図Iである。
図1および
図3に示すように、本実施形態において、ブロックチェーン装置300は少なくも1つのチェーンデータストリングCDSを含み、チェーンデータストリングCDSは、直列方式によりチェーンされた複数のデータセットDSを含む。直列方式は、第1のデータ、第2のデータおよび第3のデータから、最後から2番目のデータおよび最後のデータへと順次に並び、それぞれのデータは直前のデータに関連付けられていることを意味する。例えば、第2のデータは第1のデータに関連付けられ、第3のデータは第2のデータに関連付けられ、最後のデータは、最後から2番目のデータに関連付けられる、等である。本実施形態において、それぞれのデータセットDSはルートハッシュRHおよび対応するチェーンハッシュCHをそれぞれ含む。それぞれのデータセットDSのチェーンハッシュCHは、ルートハッシュRHおよび直前のデータセットDSのチェーンハッシュCHに関連付けられている。第1のデータセットDSのチェーンハッシュCHはイニシャルチェーンハッシュCH
0に関連付けられている。
【0032】
図1に示すように、本実施形態において、ブロックチェーン装置300はチェーン処理ユニット311を含み、チェーン処理ユニット311はチェーンデータストリングCDSを生成するために構成されている。
図1および
図3に示すように、本実施形態において、ブロックチェーン装置300が複数のバイナリーツリーBTのルートハッシュRHを受信した後、チェーン処理ユニット311は、データセットDSを、受信したバイナリーツリーBTのルートハッシュRHの時間を生成するか、または、受信する順番に生成する。それぞれのデータセットDSのチェーンハッシュCHは直前のデータセットDSのハッシュ化により生成される。第1のデータセットDSのチェーンハッシュCHはイニシャルチェーンハッシュCH
0のハッシュ化により生成される。
【0033】
本実施形態において、チェーン処理ユニット311は最初にイニシャルチェーンハッシュCH0を生成することができる。イニシャルチェーンハッシュCH0は任意の値または任意の文字もしくは数字の組み合わせであってよい。さらに、チェーン処理ユニット311は直列方式によりチェーンされた複数のデータセットDSをチェーンデータストリングCDSに以下の2つの式に従って生成する。
CHi=hash(RHi-1|CHi-1)
CH1=hash(CH0)
RHi-1はルートハッシュRHであり、CHi-1はチェーンハッシュCHであり、iは2からkの整数である。
【0034】
図3に示すように、第1のデータセットDSはRH
1のルートハッシュと、CH
1のチェーンハッシュCHを持ち、CH
1はCH
0をハッシュ化することにより生成されるハッシュ値である。後ろの(第1のデータセットDSの後に配置される)第2のデータセットDSはRH
2のルートハッシュRHおよびCH
2のチェーンハッシュCHを持ち、CH
2はRH
1およびCH
1を接続したものをハッシュ化することにより生成されるハッシュ値である。上述したように、RH
1およびCH
1を接続したもののハッシュ化はRH
1およびCH
1を接続することにより実行され、その後ハッシュ化を実行されてもよく、これに限定されない。後ろの(第2のデータセットDSの後に配置される)第3のデータセットDSは、RH
3のルートハッシュRHおよびCH
3のチェーンハッシュCHを持ち、CH
3はRH
2およびCH
2を接続したものをハッシュ化して生成されるハッシュ値である。最後のデータセットDSはRH
kのルートハッシュRHおよびCH
kのチェーンハッシュCHを持ち、CH
kはRH
k-1およびCH
k-1を接続したものをハッシュ化することにより生成されるハッシュ値である。ルートハッシュRHおよび残りのデータセットDSのチェーンハッシュCHは、類推により導かれる。また、直列方式によりチェーンされたこれらのデータセットDSはチェーンデータストリングCDSを形成する。本実施形態において、セキュリティプロトコル装置100はイニシャルチェーンハッシュCH
0をデータベース装置200に保存してもよいが、これに限定されない。
【0035】
図1および
図3に示すように、本実施形態において、セキュリティプロトコル装置100はさらに読み取りユニット130を含む。読み取りユニット130はブロックチェーン装置300およびデータベース装置200から対応するデータを読み出すように構成されている。端末装置400は、1つまたはそれ以上のバイナリーツリーBTのルートハッシュRHを読み取るために読み取り要求RRをセキュリティプロトコル装置100に送信することができる。セキュリティプロトコル装置100は、読み取り要求RRを受信するとき、読み取り要求RRは、チェーンデータストリングCDSの複数のデータセットDSに属する複数のルートハッシュRHを読み取り、読み取りユニット130はチェーンデータストリングCDSの後ろのデータセットDSのルートハッシュRHをブロックチェーン装置300から読み取り、チェーンデータストリングCDSの前のデータセットDSのルートハッシュRHの1つまたはそれ以上をデータベース装置200から読み取り、セキュリティプロトコル装置100は、ブロックチェーン装置300の後ろのデータセットDSのチェーンハッシュCHを用いて、データベース装置200の前のルートハッシュRHの正確さを検証する。
【0036】
例えば、セキュリティプロトコル装置100は読み取り要求RRを受信し、読み取り要求RRは
図3のようにチェーンデータストリングCDSのRH
1からRH
kへk個のルートハッシュRHを読み取るとき、読み取り部130はブロックチェーン装置300からチェーンデータストリングCDSのデータセットDSの最後のデータセットDSのルートハッシュRHおよびチェーンハッシュCH(すなわちRH
kおよびCH
k)を読み取る。また読み取りユニット130は前のデータセットDSのルートハッシュRH(すなわちRH
1からRH
k-1まで)をデータベース装置200から読み取り、検証ユニット120は前のデータセットDSのRH
kを用いて、データベース装置200の前半のデータセットDSのRH
1からRH
k-1までの正確さを検証する。検証ユニット120は、前述した2つの公式およびデータベース装置200に保存されたイニシャルチェーンハッシュCH
0およびRH
1からRH
k-1を、CH
kを計算するためのハッシュ化およびチェーニング処理を実行するために使用することができ、計算されたCH
kをブロックチェーン装置300上のCH
kと比較する。もし計算されたCH
kがブロックチェーン上のCH
kと一致するならば、データベース装置200に保存されたRH
1からRH
k-1はブロックチェーン上のRH
1からRH
k-1と一致していることを示す。ハッシュ化処理に基づいているため、データベース装置200のRH
1からRH
k-1の中の任意のルートハッシュRHが、ブロックチェーン装置300のRH
1からRH
k-1の中の対応するルートハッシュRHと一致しない限り、計算されたCH
kはブロックチェーン装置300のCH
kとは異なる。
【0037】
図3aを参照すると、
図3aは、本発明の一実施形態によるチェーンデータストリングCDSの概略
図IIである。
図3aのチェーンデータストリングCDSは、
図3のチェーンデータストリングCDSと実質的に同じである。しかしながら、説明を容易にするため、
図3aのチェーンデータストリングCDSは継続的なデータセットDSのデータセクションSECを示す。
図3aで示すように、本実施形態において、セキュリティプロトコル装置100はさらに、チェーンデータストリングCDSの任意のデータセクションSECのデータセットDSを読み取ることができ、データセクションSECの最後のデータセットDSを使用することにより、検証を実行する。例えば、セキュリティプロトコル装置100は読み取り要求RRを受信し、読み取り要求RRは、
図3のように、チェーンデータストリングCDSのデータセクションSECのRH
x-10からRH
xまでの11個のルートハッシュRHを読み取るとき(ここでxはkよりも小さく、10よりも大きいか等しい)、読み取りユニット130は、データセクションSECのデータセットDSの最後のデータセットDSのルートハッシュRHおよびチェーンハッシュCH(RH
xおよびCH
x)をブロックチェーン装置300から読み取り、読み取りユニット130はデータセクションSECの前のデータセットDSのルートハッシュRH(すなわちRH
x-10からRH
x-1)をデータベース装置200から読み取る。さらに検証ユニット120は、データベース装置200のデータセクションSECの前のデータセットDSのRH
x-10からRH
x-1の正確さを、データセクションSECの最後のデータセットDSのRH
xを使用することにより検証する。
【0038】
いくつかの実施形態において、イニシャルチェーンハッシュCH0は、データベース装置200に保存されなくてもよい。その代わり、セキュリティプロトコル装置100は読み取り要求RRを受信するとき、読み取りユニット130はチェーンデータストリングCDSのイニシャルチェーンハッシュCH0およびデータセットDSの後ろのデータセットDSのルートハッシュRHをブロックチェーン装置300から読み取り、チェーンデータストリングCDSの前のデータセットDSの1つまたはそれ以上のルートハッシュRHをデータベース装置200から読み取る。
【0039】
図4を参照すると、
図4は、本発明の別の実施形態による検証システム10aの概略のブロック図である。同一または類似の検証システム10の構成要素、接続関係、および機能は再び説明しない。
図4の検証システム10aと
図1の検証システム10の間の違いの一つは、
図4の検証システム10aのセキュリティプロトコル装置100は、チェーン処理ユニット140をさらに含み、ブロックチェーン装置300はチェーン処理ユニットを備えていないことである。セキュリティプロトコル装置100のバイナリーツリー処理ユニット110が複数のバイナリーツリーBTを生成した後、セキュリティプロトコル装置100のチェーン処理ユニット140は、データセットDSをバイナリーツリーBTの複数のルートハッシュRHに従って生成し、チェーンデータストリングCDSを上述した2つの式に従って生成し、セキュリティプロトコル装置100は、チェーンデータストリングCDSをブロックチェーン装置300に送信する。すなわち、セキュリティプロトコル装置100によってブロックチェーンBCに送信されたデータはチェーンデータストリングCDSを保持しているデータ構造である。
【0040】
図5を参照すると、
図5は、本発明のさらに別の実施形態による検証システム10bの概略ブロック図を示す。
図1および
図5における検証システム10および10bの同一または類似の構成要素、接続関係、および機能は再度説明しない。
図5の検証システム10bと
図1の検証システム10との差の1つは、
図5の検証システム10bがセキュリティプロトコル装置100と、データベース装置200と、ブロックチェーン装置300と、複数の端末装置400とを含むことである。セキュリティプロトコル装置100はブロックチェーンBCに位置するブロックチェーン装置300と通信し、オフチェーンフレームワークOCを介してデータベース装置200および端末装置400と通信する。さらに、端末装置400は、ブロックチェーン装置300と通信する。セキュリティプロトコル装置100は、バイナリーツリー処理ユニット110と、検証ユニット120と、読み取りユニット130と、識別番号ユニット150と、位置検索ユニット160と、スライシングユニット170と、識別シーケンス番号ユニット180とを備える。例えば、バイナリーツリー処理ユニット110、検証ユニット120、読み取り部130、識別番号ユニット150、位置検索ユニット160、スライシングユニット170、および識別シーケンス番号ユニット180はソフトウェア/ハードウェアによって形成された機能モジュールであって、それぞれ固有の機能を実行する機能モジュールであってもよく、バイナリーツリー処理ユニット110、検証ユニット120、読み取りユニット130、識別番号ユニット150、位置検索ユニット160、スライシングユニット170、および識別シーケンス番号ユニット180は独立したモジュールであってもよいし、一体化されたモジュールであってもよい。
【0041】
図5に示されるように、本実施形態において、ブロックチェーン装置300が少なくとも1つのスマートコントラクト310を含み、セキュリティプロトコル装置100によってブロックチェーン装置300に送信されるルートハッシュRHは対応するスマートコントラクト310に保存される。異なる実施形態において、ブロックチェーン装置300がスマートコントラクトとは異なるプログラムアーキテクチャまたはインターフェースを含むこともでき、ルートハッシュRHは異なるプログラムアーキテクチャまたはインターフェースに対応するブロックチェーン装置300に保存されることができる。
【0042】
図5に示すように、本実施形態において、それぞれの端末装置400が記録データ生成ユニット410と、識別データ生成ユニット420と、スライス検証ユニット430とを備える。記録データ生成ユニット410、識別データ生成ユニット420、およびスライス検証ユニット430は、例えば、それぞれ特定の機能を実行するためにソフトウェア/ハードウェアによって形成される機能モジュールであるが、これらに限定されない。なお、記録データ生成ユニット410、識別データ生成ユニット420、スライス検証ユニット430は独立したモジュールであってもよいし、統合されたモジュールであってもよい。また、記録データ生成ユニット410は、上述した記録データRDを生成するように構成されている。また、それぞれの端末装置400の記録データ生成ユニット410がレコードデータRDを生成するときに、それぞれの端末装置400の識別データ生成ユニット420は、記録データRDのそれぞれが対応する識別データIDを有するように、記録データRDにそれぞれの対応する複数の識別データIDを生成する。端末装置400は、記録データRDとそれに対応する識別データIDとを同時にセキュリティプロトコル装置100に送信する。いくつかの実施形態において、端末装置400は、記録データRDおよび対応する識別データIDを統合データに統合し、統合データをセキュリティプロトコル装置100に送信することができる。いくつかの実施形態において、識別データIDは、プレーンコードである。
【0043】
図5に示すように、本実施形態において、セキュリティプロトコル装置100が記録データRDおよび対応する識別データIDを受信し、セキュリティプロトコル装置100は識別データIDに従って、記録データRDのハッシュ値RDHを対応するリーフノードLNに保存する。例えば、セキュリティプロトコル装置100が識別データIDを受信した後、セキュリティプロトコル装置100の識別番号ユニット150は識別データIDに従ってリーフノードLNにそれぞれ対応する複数の識別番号INを生成し、セキュリティプロトコル装置100は、識別番号INに従って記録データRDのハッシュ値RDHを対応するリーフノードLNに保存する。この場合、それぞれの識別番号INは任意のバイナリーツリーBTにおいて一意であり、それぞれの識別番号INは、バイナリーツリーBTにおけるリーフノードLNのそれぞれ1つに対応する。したがって、それぞれの記録データRDのハッシュ値RDHは後に詳述するように、対応する識別番号INを用いて、リーフノードLNにそれぞれ1つ配置することができる。
【0044】
本実施形態において、セキュリティプロトコル装置100の識別番号ユニット150は識別データIDのそれぞれ1つのハッシュ値から複数の所定のビットを抽出し、それぞれ1つの識別番号INを生成する。また、所定ビット数は、対応するバイナリーツリーBTの高さの値Hに関連付けられてもよい。バイナリーツリーBTが高さの値Hを有する場合、バイナリーツリーBTは、2(H-1)のリーフノードLNを有する。バイナリーツリーBTのリーフノードLNが対応する排他的な固有の識別番号INを有することを可能にするために、所定のビットは、識別データIDのハッシュ値のそれぞれ1つから抽出された少なくともH-1ビットである。このように、H-1ビットの配置はリーフノードLNの数を満たすため、リーフノードLNに対応する識別番号INは一意であり、繰り返されない。本実施形態において、H-1ビットが、例えば、識別データIDのハッシュ値のそれぞれ1つにおける最初のH-1ビットであるが、これに限定されない。他の実施形態において、H-1ビットが識別データIDのハッシュ値のそれぞれ1つから抽出された最後のH-1ビット、または任意の場所のH-1ビットとすることができる。
【0045】
例えば、
図2のバイナリーツリーBTの高さの値Hが5であり、バイナリーツリーBTが2
(5-1)のリーフノードLN、すなわちバイナリーツリーBTが16のリーフノードLNとなる。ある記録データRDに対応する識別データIDが「E1534391」であるとすると、識別番号ユニット150はSHA-256ハッシュ関数を用いて識別データIDをハッシュ化し、ハッシュ値「dbb9ed8b677468b4834d2f634a77ea1e6663431bf1ee7523041467ff8023fa64」を生成する。次に、識別番号ユニット150はハッシュ値により変換された2進ビットシーケンスの最初の4ビット「1101」を抽出し、「1101」を10進法の値「13」に変換し、識別番号INを「13」として生成する。識別番号ユニット150は、バイナリーツリーBTの16番目のリーフノードLNの全てを1から16番目のリーフノードLNに順次設定し、識別番号INが13の記録データRDのハッシュ値RDHを13のリーフノードLN番号に保存する。いくつかの実施形態において、異なる識別データIDが同じ識別番号INを生成することができ、または異なる記録データRDは同じ識別データIDを有し、同じ識別番号INを生成することができる。ここで、複数の記録データRDのハッシュ値RDHは同一の識別番号INに対応し、同一のリーフノードLNに保存されていてもよい。いくつかの実施形態において、バイナリーツリーBTのそれぞれのリーフノードLNが2つ以上の記録データRDのハッシュ値RDHを保存することができ、特定のリーフノードLNに対応する2つ以上の記録データRDのハッシュ値RDHが接続され、次いでハッシュ値を生成するためにハッシュ化される。リーフノードLNには、複数の記録データRDに対応するハッシュ値が保存される。
【0046】
図5に示すように、本実施形態において、セキュリティプロトコル装置100の位置検索ユニット160は、識別番号INを用いてレコードデータRDのハッシュ値RDHを特定することができる。ユーザは、データベース装置200内のあるバイナリーツリーBT内のある記録データRDに対応するハッシュ値RDHを検索または検証する必要がある場合、ユーザはセキュリティプロトコル装置100を用いて上記のタスクを行うことができる。このとき、セキュリティプロトコル装置100の位置検索ユニット160は、識別番号INによって記録データRD(すなわち、記録されたリーフノードLN)のハッシュ値RDHを探し出し、ID番号INに対応するバイナリーツリーBTのリーフノードLNから直接的に記録データRDのハッシュ値RDHを抽出し、データを迅速に探し出して探索する。また、ある記録データRDが存在しないことを確認するために、識別番号INを用いて完了させることもできる。セキュリティプロトコル装置100は、完全なバイナリーツリーBT内の全てのハッシュ値を取得する必要はない。セキュリティプロトコル装置100の位置検索ユニット160は記録データRDに対応する識別番号INを用いて、レコードデータRDのハッシュ値RDH、すなわち、対応するリーフノードLNを探し出し、記録データRDのハッシュ値RDHがリーフノードLNに存在するか否かを直接的に確認することができる。リーフノードが記録データRDのハッシュ値RDHを有していない場合には、記録データRDが存在しないことを検証することができる。このようにして、確認タスク全体のネットワーク送信要件、処理量、処理時間、および処理コストは大幅に削減され得る。
【0047】
上述したように、いくつかの実施形態において、異なった記録データRDの識別データIDが同じ識別番号INを生成することができる。この場合、ある記録データRDのハッシュ値RDHは、2つまたはそれ以上のリーフノードLNに位置していてもよい。記録データRDを検証する必要がある場合、セキュリティプロトコル装置100は、データベース装置200から2つまたはそれ以上のリーフノードLNのハッシュ値RDHを取得して検証することができる。本実施形態において、識別番号INが繰り返される可能性は比較的低くなる。ある記録データRDのハッシュ値RDHが2つまたはそれ以上のリーフノードLNに位置する場合であっても、位置するリーフノードLNの数は、全てのリーフノードLNの数よりも依然として少ないか、はるかに少ない。検証タスク全体のネットワーク送信要件、処理量、処理時間、および処理コストは、依然として大幅に低減することができる。
【0048】
図5に示すように、本実施形態において、端末装置400が識別番号ユニット440をさらに含む。端末装置400の識別番号ユニット440は、セキュリティプロトコル装置100の識別番号ユニット150と同様の機能を有する。また、識別番号ユニット440は、記録データRDの識別データIDに基づいて識別番号INを生成することができる。端末装置400は、識別番号ユニット440を用いて、セキュリティプロトコル装置100が正しいリーフノードLNからデータを取得したか否かを検証することができる。例えば、端末装置400が、ある記録データRDを検証する必要があり、レコードデータRDの識別データIDが「E1534391」である場合(上記実施例参照)、端末装置400が検証要求をセキュリティプロトコル装置100に送信するとき、セキュリティプロトコル装置100の位置検索ユニット160は記録データRDに対応する識別番号INを用いて、記録データRDのハッシュ値RDHを特定し、データベース装置200のバイナリーツリーBTの13番のリーフノードLNに位置することを発見し、13番のリーフノードLNのハッシュ値RDHを端末装置400に返して検証を行うことができる。同様に、端末装置400の識別番号ユニット440は記録データRDの識別データID「E1534391」に基づいて識別番号INを生成し、識別番号INに基づいて、記録データRDのハッシュ値RDHを13番目のリーフノードLNに保存すべきであると得られることもできる。これにより、端末装置400は、セキュリティプロトコル装置100から返信された記録データRDのハッシュ値RDHが正しい位置(リーフノード番号13)にあるか否かを確認することができる。
【0049】
図6を参照すると、
図6には、本発明の一実施形態によるバイナリーツリーBTのスライスBTSの概略図が示されている。
図5および
図6に示すように、本実施形態において、セキュリティプロトコル装置100がバイナリーツリーBTのルートハッシュRHをブロックチェーン装置300に送信するとき、セキュリティプロトコル装置100のスライシングユニット170はバイナリーツリーBTを自動的に複数のスライスBTSに切り、スライスBTSを対応する端末装置400に返し、それぞれの端末装置400のスライス検証ユニット430は、受信したそれぞれのスライスBTSの正確さを検証する。
図2および
図6に示すように、本実施形態において、それぞれのスライスBTSは、ルートR、2つの対応するリーフノードLN、および必要ならばバイナリーツリーBTの中央ノードMNによって形成される、メルクルプルーフである。リーフノードLNのセットに記憶される記録データRDのハッシュ値RDHは、前述の処理プロセスによって得られ、ルートRに位置するルートハッシュRHを得ることができる。スライスBTSのルートハッシュRHは、完全なバイナリーツリーBTのルートハッシュRHと一致している必要がある。例えば、ある端末装置400からセキュリティプロトコル装置100に所定の記録データRDおよび識別データIDが送信された後、セキュリティプロトコル装置100は、記録データRDのハッシュ値RDHを所定のバイナリーツリーBTの所定のリーフノードLNに保存し、リーフノードLNに対応するスライスBTSを端末装置400に返す。端末装置400は、スライスBTSのリーフノードLNの記録データRDのハッシュ値RDHを、端末装置400により生成した元の記録データRDの元のハッシュ値RDHと一致するか否かを比較する。それらが一致する場合、検証が正しいことを示す。それらが一致しない場合は、検証が正しくないことを示す。検証が正しくない場合、対応する端末装置400は、後続のデータの訂正、無効化または他の手順のために、抗議(protest)メッセージをブロックチェーン装置300に送信することができる。
【0050】
本実施形態において、それぞれの端末装置400は、ブロックチェーンチップを備える。ブロックチェーンチップは、例えば、ブロックチェーンBCと検証システム10、10bとの間で信号を自動的に送信することができる集積回路(IC)であるが、これに限定されない。このようなブロックチェーンチップによれば、端末装置400を軽量化、薄型化、短縮化することができ、端末装置400は、任意の物体に配置したり、任意の電子機器に組み込んだりすることが容易になる。例えば、端末装置400は、バッテリ(例えば、電気バスやハイブリッドバス、自動車用の大型バッテリパック)、電気メータ、自動車ヘッドライト、自動車本体(例えば、5Gを介してネットワーク接続された自動車のドライブコンピュータ)、またはフレームに組み込むことができる。端末装置400は、それぞれの対象物の記録データRDを自動的かつ継続的にアップロードする。レコードデータRDは、例えば、バッテリ、電気メータまたは自動車ヘッドライト、または自動車本体のセンサ情報(エンジン、走行距離計、始動回数など)の毎時または毎日の履歴検知データ、またはフレーム上のセンサによって検知される毎時または毎日の温度および湿度変化の履歴検知データ、および図の元のデータなどの、(スケジュールされたアップロードインターバルに応じた)毎時または毎日の履歴検知データであるが、これらに限定されない。セキュリティプロトコル装置100は、記録データRDのハッシュ値RDHを、オフチェーンフレームワークOCを介してデータベース装置200に保存し、ルートハッシュRHを、ブロックチェーン装置300にアップロードすることができる。
【0051】
検証システム10、10aおよび10bに基づいて、オフチェーンフレームワークOCを介したデータベース装置200による様々なデータの迅速な探索および検索に加えて、ブロックチェーンBCの検証によってデータの否認防止を達成することもできる。また、端末装置400のコロケーションの適用に基づいて、モノの状況を保証することができ、モノの価値を向上させることができる。例えば、長距離車両に使用される使用済みの大型バッテリパックは、ある程度使用後に短距離車両に移送することができ、一方、短距離車両に使用される使用済みの大型バッテリパックは、ある程度使用後に予備発電バッテリとして漁場などの場所に移送することができる。それぞれの変換は、使用されるモノのための取引プラットフォームといったプラットフォームを介して実行することができる。モノの状態は、それぞれの取引において検証システム10、10aおよび10bによって確認することができ、それによってモノの質の信頼性およびモノの価値を改善する。
【0052】
図5に示すように、本実施形態において、ブロックチェーン装置300のスマートコントラクト310がチェーン処理ユニット311および累積シーケンス番号ユニット312をさらに含む。セキュリティプロトコル装置100の識別シーケンス番号ユニット180は、識別シーケンス番号ISを生成するように構成される。ブロックチェーン装置300の累積シーケンス番号ユニット312は、累積シーケンス番号ASを生成するように構成される。チェーン処理ユニット311は、チェーンデータストリングCDSを生成する。
【0053】
図7を参照すると、
図7は本発明の別の実施形態によるチェーンデータストリングCDSの概略図を示す。
図5および
図7に示すように、本実施形態において、チェーンデータストリングCDSのそれぞれのデータセットDSは、ルートハッシュRHと、識別シーケンス番号ISと、累積シーケンス番号ASと、チェーンハッシュCHとを含む。それぞれのデータセットDSのチェーンハッシュCHは、直前のデータセットDSのルートハッシュRH、識別シーケンス番号IS、累積シーケンス番号AS、およびチェーンハッシュCHに関連する。第1のデータセットDSのチェーンハッシュCHは、イニシャルチェーンハッシュCH
0に関連する。いくつかの実施形態において、チェーンデータストリングCDSのそれぞれのデータセットDSは、ルートハッシュRHと、識別シーケンス番号ISと、チェーンハッシュCHとを含むが、累積シーケンス番号ASを含まず、それぞれのデータセットDSのチェーンハッシュCHは、直前のデータセットDSのルートハッシュRHと、識別シーケンス番号ISと、およびチェーンハッシュCHとに関連付けられている。本実施形態において、それぞれのデータセットDSのチェーンハッシュCHは直前のデータセットDSをハッシュ化することによって生成され、第1のデータセットDSのチェーンハッシュCHはイニシャルチェーンハッシュCH
0をハッシュ化することによって生成される。
【0054】
図5および
図7に示すように、本実施形態において、チェーンデータストリングCDSのそれぞれのデータセットDSの識別シーケンス番号ISがそれぞれルートハッシュRHに対応する。セキュリティプロトコル装置100がルートハッシュRHをブロックチェーン装置300に送信するとき、セキュリティプロトコル装置100はさらに、それに応じて識別シーケンス番号ISを生成し、識別シーケンス番号ISをブロックチェーン装置300に送信する。例えば、識別シーケンス番号ISは、対応するルートハッシュRHに関連付けられているタイムスタンプを含む。セキュリティプロトコル装置100が特定の時点において、あるルートハッシュRHを生成すると、識別シーケンス番号ユニット180は、特定の時点に対応する識別シーケンス番号ISを生成する。識別シーケンス番号ISは、特定の時点に対応するタイムスタンプを含む。言い換えれば、異なる時点において生成されるルートハッシュRHは、異なる識別シーケンス番号ISに確実に対応する。時間が経過するにつれて、後に生成されるルートハッシュRHの識別シーケンス番号ISのタイムスタンプに対応する時刻は、先に生成されるルートハッシュRHの識別シーケンス番号ISのタイムスタンプに対応する時刻よりも確実に遅くなる。これに対応して、チェーンデータストリングCDSにおいて、後ろのデータセットDSの識別シーケンス番号ISのタイムスタンプに対応する時間が前のデータセットDSの識別シーケンス番号ISのタイムスタンプに対応する時間よりも確実に遅い。このため、チェーンデータストリングCDSのデータセットDSの非変更性を高めることができ、チェーンデータストリングCDSのデータを改竄することが困難となる。
【0055】
図5および
図7に示すように、本実施形態において、チェーンデータストリングCDSのそれぞれのデータセットDSの累積シーケンス番号ASがそれぞれのルートハッシュRHにそれぞれ対応し、それぞれのデータセットDSの累積シーケンス番号ASは直前のデータセットDSの累積シーケンス番号の累積値である。セキュリティプロトコル装置100がルートハッシュRHおよび識別シーケンス番号ISをブロックチェーン装置300に送信するとき、ブロックチェーン装置300の累積シーケンス番号ユニット312は、ルートハッシュRHおよび識別シーケンス番号ISに対応する累積シーケンス番号ASを順次生成する。例えば、ブロックチェーン装置300が第1のルートハッシュRHおよび対応する識別シーケンス番号ISを受信するとき、累積シーケンス番号ユニット312は整数1の値を有する累積シーケンス番号ASを生成し、チェーン処理ユニット311は、第1のルートハッシュRHと、対応する識別シーケンス番号ISと、整数1の値を有する累積シーケンス番号ASと、対応するチェーンハッシュCHを含む第1のデータセットDSとを統合する。セキュリティプロトコル装置100が第2のルートハッシュRHおよび対応する識別シーケンス番号ISを受信するとき、累積シーケンス番号ユニット312は1を直前の累積シーケンス番号ASに累積して、整数2の値を有する累積シーケンス番号ASを生成し、チェーン処理ユニット311は、第2のルートハッシュRHを含む第2のデータセットDSと、対応する識別シーケンス番号ISと、整数2の値を有する累積シーケンス番号ASと、対応するチェーンハッシュCHとを統合する。言い換えると、累積シーケンス番号ASは連続的に累積され、後に生成されるデータセットDSの累積シーケンス番号ASは、先に生成されるデータセットDSの累積シーケンス番号ASよりも確実に大きい。また、累積シーケンス番号ASは、ブロックチェーン上のブロックチェーン装置300によって生成され、否認防止を有する。このため、チェーンデータ列CDSのデータ集合DSの非変更性を高めることができ、チェーンデータストリングCDSのデータを改竄することが困難となる。
【0056】
本実施形態において、チェーン処理ユニット311はチェーンデータストリングCDSに、以下の2つの式に従って、直列方式によりチェーンされた複数のデータセットDSを生成する。
CHi=hash(RHi-1|ISi-1|i-1|CHi-1)
CH1=hash(CH0)
RHi-1はルートハッシュRHであり、ISi-1は識別シーケンス番号ISであり、i-1は蓄積シーケンス番号ASであり、CHi-1はチェーンハッシュCHであり、iは2からkの整数である。
【0057】
図7に示すように、第1データセットDSは、RH
1のルートハッシュRHと、IS
1の識別シーケンス番号ISと、1の累積シーケンス番号ASと、CH
1のチェーンハッシュCHとを有し、CH
1は、CH
0をハッシュ化することによって生成されたハッシュ値である。後ろ(第1のデータセットDSの後に配置される)の第2のデータセットDSは、RH
2のルートハッシュRH、IS
2の識別シーケンス番号IS、2の累積シーケンス番号AS、およびCH
2のチェーンハッシュCHを有し、CH
2は、接続されたRH
1、IS
1、1、およびCH
1をハッシュ化することによって生成されるハッシュ値である。後ろ(第2のデータセットDSの後に配置される)の第3のデータセットDSはRH
3のルートハッシュRH、IS
3の識別シーケンス番号IS、3の累積シーケンス番号AS、およびCH
3のチェーンハッシュCHを有し、CH
3は、接続されたRH
2、IS
2、2、およびCH
2をハッシュ化することによって生成されるハッシュ値である。最後のデータセットDSは、RH
kのルートハッシュRHと、IS
kの識別シーケンス番号ISと、kの累積シーケンス番号ASと、CH
kのチェーンハッシュCHとを有し、CH
kは、接続されたRH
k-1、IS
k-1、k-1およびCH
k-1をハッシュ化することによって生成されるハッシュ値である。ルートハッシュRH、識別シーケンス番号IS、累積シーケンス番号AS、および残りのデータセットDSのチェーンハッシュCHは、類推によって導き出される。さらに、これらのデータセットDSは、直列方式によりチェーンされて、チェーンデータストリングCDSを形成する。
【0058】
図5および
図7に示すように、本実施形態において、セキュリティプロトコル装置100はバイナリーツリーBTおよびイニシャルチェーンハッシュCH
0をデータベース装置200に保存し、また、セキュリティプロトコル装置100は識別シーケンス番号ISおよびそのルートハッシュの累積シーケンス番号ASがデータベース装置200にバイナリーツリーBTに対応するRH(またはデータがチェーンデータストリングCDSに対応するDSを設定する)を保存する。セキュリティプロトコル装置100は読み取り要求RRを受信するとき、読み取り要求RRが、チェーンデータストリングCDSの複数のデータセットDSに属する複数のルートハッシュRHを読み取り、読み取りユニット130がチェーンデータストリングCDSの後ろのデータセットDSのルートハッシュRHをブロックチェーン装置300から読み取り、チェーンデータストリングCDSの前のデータセットDSのルートハッシュRHの1つまたはそれ以上をデータベース装置200から読み取り、セキュリティプロトコル装置100は、ブロックチェーン装置300の後ろのデータセットDSのチェーンハッシュCHを用いて、データベース装置200の前のルートハッシュRHの正確さを検証する。
【0059】
例えば、セキュリティプロトコル装置100が読み取り要求RRを受信し、読み取り要求RRが
図7のようにチェーンデータストリングCDSのRH
1からRH
kへk個のルートハッシュRHを読み出すとき、読み取りユニット130はチェーンデータストリングCDSのデータセットDSの最後のデータセットDSのルートハッシュRHおよびチェーンハッシュCH(すなわち、RH
kおよびCH
k)をブロックチェーン装置300から読み取り、読み取りユニット130は、ルートハッシュRH(RH
1からRH
k-1)、識別シーケンス番号IS(IS
1からIS
k-1)、および前のデータセットの累積シーケンス番号AS(1からk-1)をデータベース装置200から読み出す。検証ユニット120は、最終データセットDSのRH
kを用いて、データベース装置200の前のデータセットDSのRH
k-1に対するRH
1の正確さを検証する。検証ユニット120は、データベース装置200に保存された上記2つの公式およびイニシャルチェーンハッシュCH
0、RH
1からRH
k-1、IS
1からIS
k-1、および1からk-1を用いて、CH
kを算出するために、ハッシュ化およびチェーニング処理動作を行い、算出されたCH
kとブロックチェーン装置300上のCH
kとを比較することができる。計算されたCH
kがブロックチェーン装置300上のCH
kと一致する場合、それは、データベース装置200に保存されたRH
1からRH
k-1がブロックチェーン装置300上のRH
1からRH
k-1と一致することを表す。ハッシュ化処理動作に基づいているため、データベース装置200に保存されたRH
1からRH
k-1中のルートハッシュRHがブロックチェーン装置300上のRH
1からRH
k-1中の対応するルートハッシュRHと一致しない限り、計算されたCH
kはブロックチェーン装置300上のCH
kとは異なっている。
【0060】
別の実施形態において、検証システム10、10a、10b内の構成要素を任意に組み合わせることができる。例えば、検証システム10bは端末装置400を含まなくてもよく、検証システム10、10aは検証システム10bと同様の端末装置400を含んでもよいが、これに限定されない。
【0061】
図8を参照すると、
図8は、本発明の一実施形態による検証方法のフローチャートを示している。本実施形態において、
図1または
図4を参照して説明した検証システム10、10aによって検証方法を実現することができるが、これに限定されるものではない。検証方法は、ブロックチェーンBCと連携するのに適している。ステップS101において、セキュリティプロトコル装置100は例えば、例としてブロックチェーンBCに関与しない1つ以上のオフチェーンデバイスおよび/または1つ以上のオフチェーンチャンネルからなるオフチェーンフレームワークOCを介して、オフチェーン方式により複数の端末装置400から、複数のレコードデータRDを受信する。ステップS103において、セキュリティプロトコル装置100は、ハッシュ関数に従って、レコードデータRDを少なくとも1つのバイナリーツリーBTに統合し、レコードデータRDのハッシュ値RDHは、バイナリーツリーBTのリーフノードLNにそれぞれ保存される。ステップS105において、セキュリティプロトコル装置100は、バイナリーツリーBTのルートハッシュRHをブロックチェーンBCに送信し、ブロックチェーン装置300は、ルートハッシュRHを保存する。ステップS107において、ブロックチェーン装置300またはセキュリティプロトコル装置100は、上述した式に従ってチェーンデータストリングCDSを生成する。
【0062】
ステップS109において、セキュリティプロトコル装置100は、バイナリーツリーBTおよびイニシャルチェーンハッシュCH0を、オフチェーンフレームワークOCを介して保存する。すなわち、セキュリティプロトコル装置100は完全なバイナリーツリーBTおよびイニシャルチェーンハッシュCH0を、オフチェーンフレームワークOCを介して、データベース装置200に保存する。別の実施形態において、イニシャルチェーンハッシュCH0はデータベース装置200に格納されなくてもよい。セキュリティプロトコル装置100は、必要に応じて、ブロックチェーン装置300からイニシャルチェーンハッシュCH0を読み出すことができる。
【0063】
ステップS111において、セキュリティプロトコル装置100が検証要求を受けたとき、セキュリティプロトコル装置100は、オフチェーンフレームワークOCを介して保存されているバイナリーツリーBTの正当性を検証するために、ブロックチェーンBCに位置するブロックチェーン装置300のルートハッシュRHと、オフチェーンフレームワークOCを介してデータベース装置200に保存されているバイナリーツリーBTのルートハッシュRHとを比較する。ステップS113において、セキュリティプロトコル装置100は読み取り要求RRを受信し、読み取り要求RRが、チェーンデータストリングCDSにおいて、複数のデータセットのDSの複数のルートハッシュRHの読み取りを要求するとき、セキュリティプロトコル装置100はブロックチェーンBC上にある後ろのデータセットDSのルートハッシュRHを読み取り、オフチェーンフレームワークOCを介して保存される前のデータのルートハッシュRHの1つ以上のルートハッシュRHを読み取る。ステップS115において、セキュリティプロトコル装置100は、ブロックチェーンBC上の後ろのデータセットDSのチェーンハッシュCHを用いて、オフチェーンフレームワークOCを介して保存された前の1つ以上のルートハッシュRHの正当性を検証する。
【0064】
図9aおよび9bを参照すると、
図9aおよび9bは、本発明の別の実施形態による検証方法のフローチャートである。本実施形態において、検証方法は、
図5に示した検証システム10bによって実現することができるが、これに限定されるものではない。ステップS201において、セキュリティプロトコル装置100は、複数の端末装置400から複数の記録データRDおよび複数の識別データIDを、例えば、1つまたは複数のオフチェーン装置および/または、ブロックチェーンBCに関与しない1つまたは複数のチャンネル、および記録データRDにそれぞれ対応する識別番号IDから構成される、例えばオフチェーンフレームワークを介して、オフチェーン方式により受信する。ステップS203において、セキュリティプロトコル装置100が識別データIDを受信した後、セキュリティプロトコル装置100は、識別データIDに従ったリーフノードLNに対応する複数の識別番号INをそれぞれ生成し、バイナリーツリーBTのそれぞれのリーフノードLNは固有の識別番号に対応する。例えば、セキュリティプロトコル装置100はそれぞれの識別データIDのハッシュ値から複数の所定のビットを抽出し、それぞれの識別番号INを生成する。バイナリーツリーBTが高さの値Hを有する場合、所定のビットは、それぞれの識別データIDのハッシュ値の最初のH-1ビットである。ステップS205において、セキュリティプロトコル装置100は、ハッシュ関数によって、記録データRDを少なくとも一つのバイナリーツリーBTに統合する。ステップS207において、セキュリティプロトコル装置100は、識別番号INに従って、記録データRDのハッシュ値RDHを、対応するリーフノードLNに保存する。ステップS209において、セキュリティプロトコル装置100は、バイナリーツリーBTのルートハッシュRHおよび対応する識別シーケンス番号ISをブロックチェーンBCに送信し、ブロックチェーン装置300は、ルートハッシュRHおよび対応する識別シーケンス番号ISを保存する。ステップS211において、セキュリティプロトコル装置100は、バイナリーツリーBTを複数のスライスBTSに切る。ステップS213において、セキュリティプロトコル装置100は、オフチェーンフレームワークOCを介して、スライスBTSを対応する端末装置400に返す。
【0065】
次に、それぞれの端末装置400は、受信したそれぞれのスライスBTSの正当性を検証する。ステップS215において、スライスBTSが不正であると検証されているとき、対応する端末装置400は、ブロックチェーンBCに抗議メッセージを送信する。ステップS217において、スライスBTSが正しいと検証されているとき、端末装置400は、ブロックチェーンBCに抗議メッセージを送信する必要がない。
【0066】
ステップS219において、ブロックチェーンBCのブロックチェーン装置300は、識別シーケンス番号ISに対応する累積シーケンス番号ASおよび識別シーケンス番号ISを順番に生成する。ステップS221において、ブロックチェーンBCのブロックチェーン装置300は、ルートハッシュRH、識別シーケンス番号IS、累積シーケンス番号ASに従って、チェーンデータストリングCDSを生成する。ステップS223において、セキュリティプロトコル装置100は、バイナリーツリーBT、イニシャルチェーンハッシュCH0、識別シーケンス番号IS、累積シーケンス番号ASをオフチェーンフレームワークOCを介してデータベース装置200に保存する。
【0067】
ステップS225において、セキュリティプロトコル装置100が検証要求を受けた場合、セキュリティプロトコル装置100は、ブロックチェーンBCに位置するブロックチェーン装置300のルートハッシュRHと、オフチェーンフレームワークOCを介してデータベース装置200に保存されているバイナリーツリーBTのルートハッシュRHを比較することにより、オフチェーンフレームワークOCを介して保存されているバイナリーツリーBTの正確さを検証する。ステップS227において、セキュリティプロトコル装置100が検索要求を受信し、検索要求がある記録データRDに向けられると、セキュリティプロトコル装置100は記録データRDに対応する識別番号INに従ってオフチェーンフレームワークOCを介して保存されているバイナリーツリーBTのリーフノードLNを見つけ、識別番号INに対応するリーフノードLNを検索し、リーフノードLNから記録データRDのハッシュ値RDHを取得するか、またはリーフノードLNに記録データRDのハッシュ値RDHが存在しないことを検証する。
【0068】
ステップS225において、セキュリティプロトコル装置100が読み取り要求RRを受け、読み取り要求RRは、チェーンデータストリングCDSの複数のデータセットDSの複数のルートハッシュRHの読み取りを要求し、セキュリティプロトコル装置100はブロックチェーンBCの上の後ろのデータセットDSのルートハッシュRHを読み取り、オフチェーンフレームワークOCを介して保存されている前のデータセットDSの1つまたはそれ以上のルートハッシュRHを読み取る。ステップS231において、セキュリティプロトコル装置100は、ブロックチェーンBC上の後ろのデータセットDSのチェーンハッシュCHを用いることによりオフチェーンフレームワークOCの前の1つまたはそれ以上のルートハッシュRHの正確さを検証する。
【0069】
検証システム10、10a、10bの手段によれば、多数のデータを読み取る必要があるとき、チェーンデータストリングCDSのアーキテクチャの下において相対的に多数のデータはオフチェーンフレームワークを介して読み取られ、相対的に少数のデータがブロックチェーンBCにより読み出される必要がある。ブロックチェーンBCのデータはオフチェーン方式OCを介してデータを検証するために採用され、そのため、効率および信頼性は同時に考慮されることができる。例えば、会社において、それぞれの被雇用者の毎日の通勤記録のハッシュ値はバイナリーツリーBTのそれぞれのリーフノードLNにそれぞれ保存され、それぞれのバイナリーツリーBTは会社の被雇用者の1日の通勤記録である。そして全ての被雇用者の年間の通勤記録は、何百ものデータ、何百ものバイナリーツリーBTに累積し、これらのデータは検証システム10、10a、10bに基づいて保存され、使用される。もし、ある日、会社の内部統制部が数年間の被雇用者の通勤記録を呼び出す必要があるならば、検証システム10、10a、10bはブロックチェーンBC上の多数の読み取りを実行する必要がなく、ルートハッシュRHおよびブロックチェーンBC上のそれぞれのデータストリングCDSの最後のデータセットDSのチェーンハッシュCHを読み出すだけでよい。それぞれのチェーンデータストリングCDSの残りのルートハッシュRHはデータベース装置200からオフチェーンフレームワークOCを介して読み出すことができる。データベース装置200の残りのルートハッシュRHの正確さは、ブロックチェーンBC上の最後のデータセットDSのチェーンハッシュCHにより検証されることができる。この方法において、ブロックチェーンのネットワーク送信要求および処理負荷は著しく減少し、オフチェーンOCデータの正確さはまた検証される。
【0070】
まとめると、従来のブロックチェーンアーキテクチャはすべてのデータをブロックチェーンに送信し、次いで、多数のブロックチェーン処理リソースを消費するブロックチェーンのマイナーを介してデータを検証する。本発明の実施形態の検証システムおよび検証方法によれば、データの信頼性(否認防止)を維持することを前提として、データの大部分をオフチェーンデータベース装置に設定することができ、オフチェーンデータベース装置のバイナリーツリーのルートハッシュと、セキュリティプロトコル装置によるブロックチェーンの対応するルートハッシュを比較することによって、バイナリーツリーの正確さを検証することができる。したがって、主な処理は、オフチェーンで実行されるように変換され、ブロックチェーン上の負荷を大幅に低減する。さらに、セキュリティプロトコル装置は識別番号に従って記録データを見つけることができ、それによって、データベース装置内の記録データのハッシュ値が保存されているリーフノードを迅速に検索し、記録データが存在するかどうかを迅速に検証することができる。本発明の実施形態の検証システムおよび手法により、システムのネットワーク送信要求、総処理量、処理時間、処理コストを低減することができる。また、ブロックチェーンチップを備えた端末装置は、様々なオブジェクトに設定又は統合することができ、実用上において、より簡素および便利であり、オブジェクト品質の信頼性およびオブジェクトの価値を向上させることができる。
【0071】
また、検証システムのチェーンデータストリングおよび本発明の実施形態の手段により、バイナリーツリーのルートハッシュを多数読み取る必要がある場合にはオフチェーンデータベース装置によりルートハッシュを読み取ることができ、オフチェーン方式により読み出されたルートハッシュの正確さはブロックチェーン上のチェーンデータストリングの後ろのデータセットのチェーンハッシュにより検証される。したがって、データの信頼性を維持することを前提として、ネットワーク送信要件およびブロックチェーンの処理負荷が軽減される。
【0072】
本発明を例として、好ましい実施形態に関して説明したが、本発明は開示された実施形態に限定される必要はないことを理解されたい。当業者にとって、本発明の趣旨内の様々な修正および改良は、本発明の範囲内に包含される。本発明の範囲は、添付の特許請求の範囲に基づく。
【図面の簡単な説明】
【0073】
【
図1】
図1は、本発明の一実施形態による検証システムの概略ブロック図である。
【
図2】
図2は、本発明の一実施形態によるバイナリーツリーの概略図である。
【
図3】
図3は、本発明の一実施形態によるチェーンデータストリングの概略
図Iである。
【
図3a】
図3aは、本発明の一実施形態によるチェーンデータストリングの概略
図IIである。
【
図4】
図4は、本発明の別の実施形態による検証システムの概略ブロック図である。
【
図5】
図5は、本発明のさらに別の実施形態による検証システムの概略ブロック図である。
【
図6】
図6は、本発明の一実施形態によるバイナリーツリーのスライスの概略図である。
【
図7】
図7は、本発明の別の実施形態によるチェーンデータストリングの概略図である。
【
図8】
図8は本発明の一実施形態による検証方法のフローチャートである。
【
図9a】
図9aは、本発明の別の実施形態による検証方法のフローチャートである。
【
図9b】
図9bは、本発明の別の実施形態による検証方法のフローチャートである。
【符号の説明】
【0074】
10、10a、10b 検証システム
13 リーフノード番号
100 セキュリティプロトコル装置
110 バイナリーツリー処理ユニット
120 検証ユニット
130 読み取りユニット
140、311 チェーン処理ユニット
150、440 識別番号ユニット
160 位置検索ユニット
170 スライシングユニット
180 識別シーケンス番号ユニット
200 データベース装置
300 ブロックチェーン装置
310 スマートコントラクト
312 累積シーケンス番号ユニット
400 端末装置
410 記録データ生成ユニット
420 識別データ生成ユニット
430 スライス検証ユニット