(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023036489
(43)【公開日】2023-03-14
(54)【発明の名称】ブロックチェーンを用いたデータ保存システム、および、その方法
(51)【国際特許分類】
G06F 21/62 20130101AFI20230307BHJP
H04L 9/32 20060101ALI20230307BHJP
【FI】
G06F21/62 318
H04L9/00 675Z
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2021143574
(22)【出願日】2021-09-02
(71)【出願人】
【識別番号】521389930
【氏名又は名称】中島 理男
(74)【代理人】
【識別番号】100111349
【弁理士】
【氏名又は名称】久留 徹
(72)【発明者】
【氏名】中島 理男
(57)【要約】
【課題】大容量データをブロックチェーンの仕組みを用いて保存できるようにしたシステムにおいて、生成された一連のデータに対するデータの付加を許容しないようにしたブロックチェーンシステムを提供する。
【解決手段】ブロックチェーンを用いて画像や映像などの大容量データを保存する場合、その大容量データを分割し、その分割されたデータを秘密鍵を用いて暗号化し、公開鍵を用いて検証を行った後、その検証に使用された秘密鍵を消去するなどの無効化処理を行う。そして、このように分割処理や検証が行われたトランザクションデータ8まとめてブロック化し、ピアツーピアで全ノード2で情報共有する。
【選択図】
図7
【特許請求の範囲】
【請求項1】
複数のノードで同じデータを保存するブロックチェーンを用いたデータ保存システムにおいて、
他のノードに送信して保存すべきデータを分割する分割手段と、
分割されたデータを秘密鍵を用いて暗号化されたトランザクションデータとして生成するトランザクション生成手段と、
当該暗号化されたトランザクションデータを、公開鍵を用いて検証する検証手段と、
当該検証された複数のトランザクションデータをまとめてブロック化して保存するブロック化手段と、
前記分割手段によって分割されたすべてのデータを、秘密鍵を用いてトランザクションデータを生成した後、当該使用された秘密鍵を使用不能にする無効化手段と、
を備えたブロックチェーンを用いたデータ保存システム。
【請求項2】
前記無効化手段が、秘密鍵を消去するものである請求項1に記載のブロックチェーンを用いたデータ保存システム。
【請求項3】
前記データが、画像、映像のデータである請求項1に記載のブロックチェーンを用いたデータ保存システム。
【請求項4】
前記トランザクション生成手段が、分割されたデータの連結情報を含むようにトランザクションデータを生成するものである請求項1に記載のブロックチェーンを用いたデータ保存システム。
【請求項5】
複数のノードで同じデータを保存するブロックチェーンのデータ保存方法において、
他のノードに送信して保存すべきデータを分割するステップと、
分割されたデータを秘密鍵を用いて暗号化されたトランザクションデータとして生成するステップと、
当該暗号化されたトランザクションデータを、公開鍵を用いて検証するステップと、
前記暗号化されたトランザクションデータが検証された場合、前記秘密鍵を使用不能に無効化するステップと、
前記検証された複数のトランザクションデータをまとめてブロック化して保存するステップと、
を備えたブロックチェーンを用いたデータ保存方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブロックチェーンを用いたデータ保存システムであって、より詳しくは、画像や映像などの大容量データを改ざん不能に保存できるようにしたデータ保存システムに関するものである。
【背景技術】
【0002】
一般的に、ブロックチェーンを用いてビットコインなどの取引履歴を保存する場合、次のような方法で処理が行われる。
【0003】
まず、ビットコインを取引するためのトランザクションデータが発生した場合、そのトランザクションデータを取引者が秘密鍵を用いて暗号化し、検証者による公開鍵を用いた検証が行われた後、ネット上に公開される。そして、その検証の行われたトランザクションデータが、システム上で一定の容量に達した場合に、特定のノードによって、そのトランザクションデータをまとめたブロックが生成される。このブロックを生成する際には、直前に生成されているブロックから生成されるハッシュキーを含ませておき、直前のブロックのデータを改ざんできないようにしておく。
【0004】
ところで、このようなブロックチェーンの仕組みは、ビットコインの取引履歴などのような小さなデータの取引を扱うことを前提として使用されるため、画像や映像などの大容量データを用いることができない。具体的には、従来のビットコインにおけるトランザクションデータには、数十バイト分のデータしか保存できないため、トランザクションデータとして保存すべきデータがこの容量を超えた場合、トランザクションデータを生成することができない。
【0005】
これに対して、下記の特許文献には、画像や映像などの大容量のデータを、ブロックチェーンの仕組みを用いて保存できるようにした方法が開示されている。具体的には、画像や映像などの大容量のデータを保存する際には、その大容量のデータを複数に分割し、それぞれを連結させるようにして保存するようにしている。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、このような方法を用いて大容量データを分割して保存する場合においても、次のような問題を生ずる。
【0008】
すなわち、このようなシステムにおいて、大容量データを分割し、公開鍵で検証して後、そのトランザクションデータをシステム上で共有した後において、同じ生成者が、その秘密鍵を用いてデータを付加しようとすると、その秘密鍵が真正であるため、真正なデータとして検証され、一連のデータに付加されることになる。
【0009】
しかるに、そのようなデータを付加した場合、そのデータが、すでに保存されたデータの一部であるのか、あるいは、無関係なデータであるのかが分からない。このため、著名な絵画や、アニメーションや映画などのオリジナル映像などを改ざん不能に保存する場合においては、同じ秘密鍵を用いて絵画や映像に無関係なデータが付加されてしまうと、復元された絵画や映像のデータが壊れてしまい、オリジナルデータとしての価値がなくなってしまう。
【0010】
そこで、本発明は、上記課題に着目してなされたもので、大容量データをブロックチェーンの仕組みを用いて保存できるようにしたシステムにおいて、生成された一連のデータに対するデータの付加を許容しないようにしたブロックチェーンシステムを提供することを目的とする。
【課題を解決するための手段】
【0011】
すなわち、本発明は上記課題を解決するために、複数のノードで同じデータを保存するブロックチェーンを用いたデータ保存システムにおいて、他のノードに送信して保存すべきデータを分割する分割手段と、分割されたデータを秘密鍵を用いて暗号化されたトランザクションデータとして生成するトランザクション生成手段と、当該暗号化されたトランザクションデータを、公開鍵を用いて検証する検証手段と、当該検証された複数のトランザクションデータをまとめてブロック化して保存するブロック化手段とを備え、前記分割手段によって分割されたすべてのデータを、秘密鍵を用いてトランザクションデータを生成した後、当該使用された秘密鍵を使用不能に無効化するようにしたものである。
【0012】
このように構成すれば、大容量データを分割して検証した後、秘密鍵を使用できないように無効化することで、そのデータに他のデータが付加されて壊れてしまうようなことがなくなる。
【0013】
また、このような発明において、データを分割して保存する場合、秘密鍵を消去するようにしておく。
【0014】
さらに、前記データとしては、画像、映像のデータを用いるようにすることができる。
【0015】
また、このような秘密鍵の無効化処理を行う場合、暗号化されたトランザクションデータが検証された後に、前記秘密鍵を使用不能に無効化するようにしておく。
【発明の効果】
【0016】
本発明によれば、複数のノードで同じデータを保存するブロックチェーンを用いたデータ保存システムにおいて、他のノードに送信して保存すべきデータを分割する分割手段と、分割されたデータを秘密鍵を用いて暗号化されたトランザクションデータとして生成するトランザクション生成手段と、当該暗号化されたトランザクションデータを、公開鍵を用いて検証する検証手段と、当該検証された複数のトランザクションデータをまとめてブロック化して保存するブロック化手段とを備え、前記分割手段によって分割されたすべてのデータを、秘密鍵を用いてトランザクションデータを生成した後、当該使用された秘密鍵を使用不能に無効化するようにしたので、分割されたデータに他のデータが付加されて壊れてしまうことを防止できるようになる。
【図面の簡単な説明】
【0017】
【
図1】本発明の一実施の形態におけるブロックチェーンを用いたデータ保存システムの基本構成図
【
図3】同形態におけるトランザクションデータとブロックの関係を示す図
【
図4】同形態におけるトランザクションの検証を行う状態を示す図
【
図5】同形態における各ブロックの連結関係を示す図
【
図6】同形態における大容量データを分割してトランザクションデータを生成する状態を示す図
【
図7】同形態における大容量データの保存方法を示すフローチャート
【発明を実施するための形態】
【0018】
以下、本発明の一実施の形態について図面を参照しながら説明する。
【0019】
この実施の形態におけるデータ保存システム1は、
図1に示すように、複数のコンピューターであるノード2をピアツーピアで通信できるようにしたものであって、特定のノード2で発生した画像や映像などの大容量データを改ざん不能に保存できるようにしたものである。具体的には、その発生した大容量データを分割化手段3(
図2参照)を用いて複数のトランザクションデータ8に分割し、その分割されたトランザクションデータ8を秘密鍵や公開鍵を用いて検証した後、そのトランザクションデータ8をシステム内に記憶させ、そのトランザクションデータ8が一定量に達した場合に、ブロック化手段6によって一つのブロック9にまとめて保存して、ハッシュ値を用いて改ざん不能に後続のブロック9と連結できるようにしたものである。そして、特徴的に、分割されたトランザクションデータ8が公開鍵によって検証された後、その際に使用された秘密鍵を使用できないように無効化処理して、その後、そのノード2においてトランザクションデータ8の付加を行えないようにしたものである。以下、本実施の形態におけるデータ保存システム1について、詳細に説明する。なお、本実施の形態において、ノード2とは、インターネットに接続されたパーソナルコンピューターなどの情報処理端末を意味し、また、トランザクションデータ8とは、例えば数十バイト程度の情報をまとめたものをいい、また、ブロック9とは、このトランザクションデータ8を複数まとめたものをいう。
【0020】
これらの各ノード2は、パーソナルコンピューターなどの電子情報処理装置で構成されるものであって、インターネットなどの通信網を介して他のノード2と接続され、ピアツーピアによって、同じトランザクションデータ8やブロック9のデータを共有できるようになっている。
【0021】
<n番目のブロックBnの構成>
【0022】
まず、このようなデータ保存システム1において、各ノード2で発生した複数のトランザクションデータ8をまとめたブロックBnには、
図3に示すように、複数のトランザクションデータ8の他、このブロックBnに連結される直前のブロックBn-1のデータから生成されたハッシュ値Hn-1が含まれている。そして、このように、ブロックBn-1にハッシュ値Hn-1を含ませることにより、ブロックBn-1内のトランザクションデータ8の改ざんを防止できるようにしている。具体的には、直前のブロックBn-1のトランザクションデータ8が改ざんされた場合、そこから生成されるハッシュ値が異なるハッシュ値Hn-1'となってしまう。一方、ブロックBnには直前のブロックBn-1のハッシュ値Hn-1が既に保存されているため、これらのハッシュ値Hn-1とHn-1'の不一致が検出され、トランザクションデータ8が不正に改ざんされたことを検出することができるようになる。
【0023】
<新規トランザクションデータの生成と検証>
【0024】
このようにブロック9が連結された状態で記憶されている状態において、あるノード2でトランザクションが発生した場合、その情報がトランザクションデータ8として記憶されるとともに、
図4に示すように、そのトランザクションデータ8からハッシュ値が生成されて付加される。そして、このトランザクションデータ8を、そのノード2が保有している秘密鍵を用いて暗号化する。そして、このトランザクションデータ8にこの「暗号化されたハッシュ値」を含ませ、公開鍵を有している他のノード2の検証者に送信する。
【0025】
検証者は、自身が保有している公開鍵を用いてこの送信されたトランザクションデータ8を復号し、その送信されてきたトランザクションデータ8に含まれるハッシュ値を得るとともに、このハッシュ値と、復号されたトランザクションデータ8から生成されるハッシュ値が整合しているか否かをチェックする。そして、これらのハッシュ値が一致している場合に、正当な送信者が生成したデータであると判断して、システム上にこのトランザクションデータ8を公開して情報共有する。このとき、この検証されたトランザクションデータ8は、ピアツーピアで全ノード2に送信されて共有される。
【0026】
<新規ブロックBn+1の生成方法>
【0027】
このように検証されたトランザクションデータ8が、システム上で一定量に達した場合(例えば、1メガバイト分の容量に達した場合)、一定の条件で選出された特定のノード2によって、複数のトランザクションを集めたトランザクション群からなる新たなブロックBn+1が生成される。
【0028】
その際、
図3や
図5に示すように、システム上で生成された直前のブロックBn-1のハッシュ値Hn-1も記憶させておく。
【0029】
そして、以下、同様にして、各ノード2でトランザクションが発生した場合は、秘密鍵・公開鍵を用いて検証し、検証されたトランザクションデータ8が一定量に達した場合は、特定のノード2でブロック9にまとめるようにしている(
図5参照)。
【0030】
そして、このようなデータ保存システム1において、本実施の形態では、画像や映像などのような大容量のデータを改ざん不能に保存できるようにしている。
【0031】
このように改ざん不能に保存する画像や映像などとしては、絵画、アニメなどのオリジナル画像、オリジナルの映像などの他、文化財などのような経済的価値の高い著作物などが考えられ、これらを改ざん不能に保存しておくことによって、原版として保存できるようにする。
【0032】
まず、このような著作物などの大容量データを分割する分割化手段3は、トランザクションデータ8を保存できる容量の大きさに、大容量データを分割する。この大容量データを分割する際には、
図6に示すように、その後、連結させる際の連結情報を含ませるようしておく。この連結情報としては、シリアル番号(♯1など)であってもよく、あるいは、トランザクションデータ8から生成されるハッシュ値を次のトランザクションデータ8に含ませて連結させるようにしてもよい。このとき、シリアル番号を用いて連結させる場合は、高速にトランザクションデータ8を連結させることができる一方、ハッシュ値を次のトランザクションデータ8に含ませる場合は、どのトランザクションデータ8が改ざんされたかどうかを判断することができるようになる。
【0033】
次に、トランザクション生成手段4は、まず、このように分割された画像や映像などの各トランザクションデータ8を一定の文字列に変換する。この文字列に変換する場合、例えば、Base64を用いて64種類の英数字に変換できるようにする。そして、この変換された文字列を用いてハッシュ値を生成するとともに、そのノード2が保有している秘密鍵を用いて、この分割されたトランザクションの文字列やハッシュ値を暗号化する。
【0034】
このように暗号化されたトランザクションデータ8は、検証手段5によって、他のノード2で正当性が検証される。この検証の際には、
図4に示すように、公開鍵を用いて受信した暗号化トランザクションデータ8を復号し、そこから、ハッシュ値とトランザクションデータ8を抽出する。そして、その復号されたトランザクションデータ8から生成されたハッシュ値と、復号されたデータに含まれるハッシュ値との整合性を検証する。そして、これらの値が一致している場合は、秘密鍵を保有している正当な者が生成したトランザクションデータ8であるとして、システム上に公開して、各ノード2で情報を共有できるようにする。
【0035】
このとき、その分割されたデータに、事後的に、秘密鍵を用いてトランザクションデータ8が付加された場合、復元されたデータに不要なデータが一連のデータの一部として追加されることになるため、デコードした際に、その画像や映像が壊れてしまう。そこで、ここでは、分割された一連のトランザクションデータ8が検証された後に、その秘密鍵を使用できないように無効化処理して、データの付加を行えないようにしている。
【0036】
この無効化手段7としては、種々の方法が考えられるが、例えば、公開鍵によって正当であることが検証された後、その秘密鍵を消去する方法が用いられる。このようにすれば、同じ秘密鍵を用いてトランザクションデータ8を暗号化することができないため、検証が行われず、トランザクションデータ8を付加することができなくなる。なお、ここでは、秘密鍵を消去する場合、検証者による検証が行われた後に秘密鍵を消去するようにしているが、一連のトランザクションデータ8を検証者に送信した後に、秘密鍵を消去するようにしてもよい。このようにすれば、検証までに時間がかかる場合であっても、送信と同時に秘密鍵を消去することができるために、データを付加することができない。また、ここでは、秘密鍵を消去する方法を用いたが、これ以外に、その秘密鍵と同一の秘密鍵を使用できないようにする方法を用いてもよい。
【0037】
ブロック化手段6は、このように生成された一連のトランザクションデータ8が、システム上で一定の容量(例えば、1メガバイト)に達した場合に、一定の条件によって選ばれたノード2によって、ブロック9にまとめる。そして、このように一つのブロック9にまとめた後に、そのブロック9に含まれるトランザクションデータ8からハッシュ値を生成し、そのブロック9に含ませるようにしておき、また、このブロック9に連結される直前のブロック9のハッシュ値を記憶させるようにしておく。そして、このように直前のブロック9のハッシュ値を記憶させておくことによって、直前のブロック9との連結性を担保して、改ざんを防止する。
【0038】
次に、このようなデータ保存システム1において、容量データを保存する方法を、
図7のフローチャートを用いて説明する。
【0039】
まず、大容量データを保存したい場合、分割化手段3によって、一定の大きさのデータに分割する(ステップS1)。このとき、分割されたデータについては、その後、連結可能にすべく、ヘッダー81などにシリアル番号(♯1)などを記憶させるようにしておく。
【0040】
そして、その分割されたデータを、Basd64などを用いて英数字の文字列に変換する(ステップS2)。このとき、変換された文字列によるデータは、トランザクションデータ8として記憶可能な容量(例えば、80バイト)に収まるようなデータとする。
【0041】
そして、このように生成されたトランザクションデータ8からハッシュ値を生成するとともに(ステップS3)、このノード2で保有している秘密鍵を用いて暗号化し、検証者に送信する(ステップS4)。
【0042】
このデータを受信した検証者は、自身が保有している公開鍵を用いて復号し、そこに含まれているハッシュ値を得るとともに、トランザクションデータ8を抽出する。そして、そのトランザクションデータ8からハッシュ値を生成し、先に含まれていたハッシュ値と一致するか否かを検証する(ステップS5)。
【0043】
そして、これらの検証結果を送信者に通知し(ステップS6、61)、検証結果がOKである場合は、その検証されたトランザクションデータ8をシステム上に公開して共有できるようにする(ステップS7)。
【0044】
一方、この検証された旨の結果を受け取った送信者側は、自身が保有している秘密鍵を消去するなどの無効化処理を行い、その後、その秘密鍵を使用できないようにする(ステップS8)。
【0045】
そして、システム上で、一定量のトランザクションデータ8が貯まった場合(ステップS9)、一定の条件下で選出されたノード2でブロック9を生成し(ステップS10)、その際に、このブロック9に連結される直前のブロック9のハッシュ値も記憶させておく。
【0046】
そして、以下、同様にして、トランザクションデータ8の検証と、ブロック化などを行い、データを時系列に改ざん不能に連結するようにしていく。
【0047】
このように上記実施の形態によれば、複数のノード2で同じデータを保存するブロックチェーンを用いたデータ保存システム1において、他のノード2に送信して保存すべきデータを分割する分割化手段3と、分割されたデータを秘密鍵を用いて暗号化されたトランザクションデータ8として生成するトランザクション生成手段4と、当該暗号化されたトランザクションデータ8を、公開鍵を用いて検証する検証手段5と、当該検証された複数のトランザクションデータ8をまとめてブロック化して保存するブロック化手段6とを備え、前記分割化手段3によって分割されたすべてのデータを、秘密鍵を用いてトランザクションデータ8を生成した後、当該使用された秘密鍵を使用不能に無効化するようにしたので、分割されたデータに他のデータが付加されて壊れてしまうことを防止できるようになる。
【0048】
なお、本発明は、上記実施の形態に限定されることなく、種々の態様で実施することができる。
【0049】
例えば、上記実施の形態では、分割されたトランザクションデータ8に、連続性をもたせるためのシリアル番号(♯1など)を付加させるようにしたが、異なるブロック9に分割されたトランザクションデータ8が保存される可能性もある。このため、分割されたトランザクションデータ8を示す共通の識別情報も一緒に付加させておくようにしてもよい。このとき、分割されたトランザクションデータ8については、可能な限り一つのブロック9にまとめて保存できるようにしておくとよい。このような方法としては、例えば、ヘッダー81に記憶された同一の識別情報を有するトランザクションデータ8をまとめて、ブロック9にまとめて保存させるようにする方法などが考えられる。
【0050】
また、上記実施の形態では、Base64を用いて文字列化したが、これ以外の方法で文字列化するようにしてもよい。
【0051】
さらに、上記実施の形態では、大容量データとして、絵画、映像、アニメなどの著作物を例に挙げて説明したが、これ以外に、大容量の文書、音声、証拠物などを保存する場合にも適用することができる。
【符号の説明】
【0052】
1・・・保存システム
2・・・ノード
3・・・分割化手段
4・・・トランザクション生成手段
5・・・検証手段
6・・・ブロック化手段
7・・・無効化手段
8・・・トランザクションデータ
81・・・ヘッダー
9・・・ブロック