JPWO2022064571A5 - - Google Patents

Download PDF

Info

Publication number
JPWO2022064571A5
JPWO2022064571A5 JP2022551472A JP2022551472A JPWO2022064571A5 JP WO2022064571 A5 JPWO2022064571 A5 JP WO2022064571A5 JP 2022551472 A JP2022551472 A JP 2022551472A JP 2022551472 A JP2022551472 A JP 2022551472A JP WO2022064571 A5 JPWO2022064571 A5 JP WO2022064571A5
Authority
JP
Japan
Prior art keywords
block
information
blocks
hash value
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2022551472A
Other languages
English (en)
Other versions
JPWO2022064571A1 (ja
Filing date
Publication date
Application filed filed Critical
Priority claimed from PCT/JP2020/035843 external-priority patent/WO2022064571A1/ja
Publication of JPWO2022064571A1 publication Critical patent/JPWO2022064571A1/ja
Publication of JPWO2022064571A5 publication Critical patent/JPWO2022064571A5/ja
Withdrawn legal-status Critical Current

Links

Description

本発明は、制御方法、制御プログラム、および情報処理装置に関する。
従来、取引情報が格納されたブロックを連結することにより、取引情報を管理する分散台帳を実現する、改ざん耐性を有するブロックチェーンと呼ばれるリストが存在する。取引情報は、例えば、トランザクション(Tx:Transaction)と呼ばれる。
先行技術としては、例えば、ブロックチェーンノードに、ブロックデータの高さ値とアクセス頻度とを含むアーカイブ条件を満たすブロックデータが存在するか否かを検出し、アーカイブ条件を満たすブロックデータをローカルからコピーするものがある。
特表2019-532401号公報
しかしながら、従来技術では、改ざん耐性を保証しつつ、ブロックチェーンのデータ量の増大化を抑制することはできない。例えば、改ざん耐性を保証するため、ブロックチェーンに対し、新たなブロックがいくつ追加されたとしても、既存のブロックを削除することはできず、すべてのブロックを残しておかなければならないことになる。
1つの側面では、本発明は、ブロックチェーンのデータ量の増大化を抑制することを目的とする。
1つの実施態様によれば、ブロックチェーンに含まれる複数のブロックのうち、あるブロックに先行する一又は複数のブロックを前記ブロックチェーンから削除する際に、前記一又は複数のブロックに格納された複数の情報のうち、特定の条件を満たす情報を抽出し、抽出した前記情報を含む新たな情報であって、前記新たな情報から算出されるハッシュ値が前記あるブロックに格納されたハッシュ値と等しくなるよう生成された前記新たな情報が格納された新たなブロックを生成し、前記ブロックチェーンにおける前記あるブロックの前に、生成した前記新たなブロックを連結する制御方法、制御プログラム、および情報処理装置が提案される。
一態様によれば、ブロックチェーンのデータ量の増大化を抑制することが可能になる。
図1は、実施の形態にかかる制御方法の一実施例を示す説明図である。 図2は、BC管理システム200の一例を示す説明図である。 図3は、情報処理装置100の機能実装例を示す説明図である。 図4は、情報処理装置100のハードウェア構成例を示すブロック図である。 図5は、情報処理装置100の機能的構成例を示すブロック図である。 図6は、情報処理装置100の具体的な機能的構成例を示すブロック図である。 図7は、情報処理装置100の動作例を示す説明図(その1)である。 図8は、情報処理装置100の動作例を示す説明図(その2)である。 図9は、情報処理装置100の動作例を示す説明図(その3)である。 図10は、新たなジェネシスブロックを生成する具体例を示す説明図である。 図11は、BCがUTXOで記述される場合に、新たなジェネシスブロックを生成する具体例を示す説明図である。 図12は、生成処理手順の一例を示すフローチャートである。 図13は、保存処理手順の一例を示すフローチャートである。
以下に、図面を参照して、本発明にかかる制御方法、制御プログラム、および情報処理装置の実施の形態を詳細に説明する。
(実施の形態にかかる制御方法の一実施例)
図1は、実施の形態にかかる制御方法の一実施例を示す説明図である。情報処理装置100は、ブロックチェーンを管理するコンピュータである。情報処理装置100は、例えば、ブロックチェーンを管理するブロックチェーンネットワークに含まれるノードとなるコンピュータである。以下の説明では、ブロックチェーンを「BC」と表記する場合がある。
BCネットワークは、BCを管理するBC管理システムを形成する。BCネットワークは、複数のノードを含む。例えば、BCネットワークに含まれるそれぞれのノードが、同一のBCを記憶し、監視することにより、BCが管理されることになる。BCは、取引情報が登録されたブロックを連結することにより、取引情報を管理する分散台帳を実現するリストである。取引情報は、例えば、トランザクション(Tx:Transaction)と呼ばれる。以下の説明では、トランザクションを「Tx」と表記する場合がある。
BCは、取引情報の改ざん耐性を有する。例えば、BCに含まれるそれぞれのブロックは、当該ブロックの直前に連結されたブロックから算出されたハッシュ値が格納されているため、取引情報の改ざんを検出可能にすることができる。BCは、取引情報の改ざん耐性を有するため、監査証跡などの証拠性を有する取引情報を保存する用途に利用されてきた。例えば、金融系システムでは、BCを利用して取引情報を蓄積することにより、取引情報の改ざんを防止し、取引情報を安全に保存する。
しかしながら、改ざん耐性を保証するにあたり、BCのデータ量の増大化を招くことになる。例えば、改ざん耐性を保証するため、BCに対し、新たなブロックがいくつ追加されたとしても、既存のブロックを削除することはできず、すべてのブロックを残しておかなければならず、BCのデータ量の増大化を招くことになる。また、BCをバックアップする際、BC全体を特定の記憶領域にバックアップすることになり、特定の記憶領域の空き領域の枯渇を招き易いという問題がある。従って、BCを長期的に運用することが難しくなるという問題がある。
そこで、本実施の形態では、改ざん耐性を維持しつつ、BCの一部のブロックをバックアップ可能にし、BCのデータ量の増大化を抑制することができる制御方法について説明する。
図1において、情報処理装置100は、BC110を記憶している。BC110は、複数のブロックを含む。BC110は、例えば、ブロック111と、ブロック112となどを含む。BC110に含まれる、先頭のブロック以外のそれぞれのブロックは、当該ブロックの直前に連結されたブロックから算出されるハッシュ値を格納している。先頭のブロックは、ジェネシスブロックと呼ばれる。図1の例では、ブロック112は、ブロック111から算出されるハッシュ値を格納している。
ここで、BC110に含まれる複数のブロックのうち、対象のブロックに先行する一又は複数のブロックをBC110から削除することが望まれたものとする。図1の例では、対象のブロックは、ブロック112である。換言すれば、BC110に含まれる複数のブロックのうち、ブロック112に先行する複数のブロックを削除することが望まれたものとする。ブロック112に先行する複数のブロックは、具体的には、ブロック111を含む、ブロック111以前に存在する複数のブロックである。図1の例では、削除されるブロックと、削除せず残されるブロックとの境界が、鋏の記号で示されている。
(1-1)情報処理装置100は、削除する一又は複数のブロックに格納された複数の情報のうち、特定の条件を満たす情報を抽出する。特定の条件は、一又は複数のブロックを削除した後のBC110に残しておくことが好ましい情報を特定するための条件である。特定の条件は、例えば、一又は複数のブロックに格納された、ある属性に関する複数の情報のうち、最新の情報を特定するための条件である。図1の例では、情報処理装置100は、例えば、ブロック111を含む、ブロック111以前に存在する複数のブロックに含まれる複数の情報のうち、特定の条件を満たす情報を抽出する。
(1-2)情報処理装置100は、抽出した情報を含む新たな情報を生成する。新たな情報は、当該情報から算出されるハッシュ値が、対象のブロックに格納されたハッシュ値と等しくなるよう生成される。情報処理装置100は、生成した新たな情報が格納された新たなブロックを生成する。図1の例では、情報処理装置100は、ブロック113を生成する。ブロック113は、例えば、ジェネシスブロックである。
ここで、ブロック113に含まれる情報から算出されるハッシュ値と、ブロック111に含まれる情報から算出されるハッシュ値とが等しいため、ブロック113は、ブロック111に代わって、BC110におけるブロック112の直前に連結可能な状態となる。また、ブロック113は、抽出した情報を含む新たな情報が格納されているため、BC110に残しておくことが好ましい情報を保持しておくことができる。これらにより、BC110が有する改ざん耐性を維持しつつ、BC110から複数のブロックを削除したとしても、BC110に有用と判断される情報を残しておくことができる。
(1-3)情報処理装置100は、BC110における対象のブロックの前に、生成した新たなブロックを連結する。図1の例では、情報処理装置100は、BC110から、ブロック111を含む、ブロック111以前に存在する複数のブロックを削除すると共に、BC110におけるブロック112の直前に、生成した新たなブロック113を連結する。
これにより、情報処理装置100は、BC110から、一又は複数のブロックを削除した後、BC110に含まれるそれぞれのブロックに格納されたハッシュ値が、不当な値になってしまうことを防止することができる。情報処理装置100は、例えば、ブロック111を含む、ブロック111以前に存在する複数のブロックを削除した後、ブロック112に格納されたハッシュ値が、不当な値ではなく、直前のブロック113に対応する正当な値になるようにすることができる。このため、情報処理装置100は、BC110が有する改ざん耐性を維持しつつ、BC110から、一又は複数のブロックを削除可能にすることができる。
また、情報処理装置100は、ブロック113に、抽出した情報を含む新たな情報を格納し、BC110に残しておくことが好ましい情報を、BC110に残しておくことができる。このため、情報処理装置100は、BC110が有する改ざん耐性を維持しつつ、BC110から、一又は複数のブロックを削除したとしても、BC110の有用性を維持することができ、一又は複数のブロックを削除可能にすることができる。
情報処理装置100は、バックアップした一又は複数のブロックを参照せずとも、BC110を参照すれば、BC110に残しておくことが好ましい情報を参照することができる。このため、情報処理装置100は、BC110が有する改ざん耐性を維持しつつ、BC110の有用性を維持することができる。
(BC管理システム200の一例)
次に、図2を用いて、図1に示した情報処理装置100を適用した、BC管理システム200の一例について説明する。
図2は、BC管理システム200の一例を示す説明図である。図2において、BC管理システム200は、複数の情報処理装置100を含む。
BC管理システム200において、情報処理装置100同士は、有線又は無線のネットワーク410を介して接続される。ネットワーク410は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
それぞれの情報処理装置100は、同一のBC#1を記憶する。少なくともいずれかの情報処理装置100は、BC#1をバックアップしておく記憶領域210を有する。それぞれの情報処理装置100は、自装置で記憶するBC#1に、ブロックを追加していく。それぞれの情報処理装置100は、例えば、ブロックに格納する各種情報を、端末装置(不図示)から受信する。それぞれの情報処理装置100は、例えば、受信した各種情報を格納した新たなブロックを生成し、自装置で記憶するBC#1に追加する。
それぞれの情報処理装置100は、自装置で記憶するBC#1から、一部のブロックを削除する。それぞれの情報処理装置100は、一部のブロックを削除する際、新たなジェネシスブロックを生成する。それぞれの情報処理装置100は、生成した新たなジェネシスブロックを、削除しない残余のブロックに先行するブロックとして、BC#1に連結する。記憶領域210を有する情報処理装置100は、一部のブロックを削除する際、削除する一部のブロックを、記憶領域210にバックアップしておく。
それぞれの情報処理装置100は、同一の暗号化方式、および、同一のハッシュ関数などを有し、同様にBC#1を管理することになる。情報処理装置100は、例えば、サーバ、又は、PC(Personal Computer)などである。
BC管理システム200の一例として、パブリック型、コンソーシアム型、又は、プライベート型のBC管理システム200が存在する。コンソーシアム型のBC管理システム200の一例として、Hyperledger Fabric型のBC管理システム200が存在する。BC管理システム200は、例えば、金融系システムに適用される。BCは、UTXO(Unspent Transaction Output)で記述されてもよい。
ここでは、それぞれの情報処理装置100が、同一のBC#1を記憶する場合について説明したが、これに限らない。例えば、それぞれの情報処理装置100が、BC#1のうち、少なくとも一部のブロックを記憶する場合があってもよい。この場合、それぞれの情報処理装置100が記憶するブロックを組み合わせることにより、BC#1が形成される。
(情報処理装置100の実装例)
次に、図3を用いて、情報処理装置100の機能実装例について説明する。
図3は、情報処理装置100の機能実装例を示す説明図である。情報処理装置100の機能は、OS(Operating System)のAPI(Application Programming Interface)を利用して実装される。図3に示すように、情報処理装置100は、例えば、アプリケーションプログラム301と、BCライトAPI302と、BCライト制御部303と、BCサブシステム304とのそれぞれの機能を、OSにおいて実装する。
アプリケーションプログラム301は、BC#1を利用するアプリケーションプログラムである。BCライトAPI302は、BC#1にデータを書き込むためのAPIであり、BC#1に対してデータを書き込む。BCライト制御部303は、BC#1に対してデータが書き込まれる際、BCライトAPI302と、BCサブシステム304との間でのパラメータの受け渡しを行う。BCサブシステム304は、BC#1に対するデータの書き込みを制御する。BCサブシステム304は、例えば、BC#1に対してデータを書き込む際に用いられるハッシュ関数を選択する。
アプリケーションプログラム301は、BCライトAPI302を呼び出し、データの書き込み処理をBCライト制御部303に依頼する。BCライト制御部303は、BC#1に対するデータの書き込み操作を、BCサブシステム304に依頼する。BCサブシステム304は、通常のハッシュ関数と、カメレオンハッシュ関数とのうち、いずれかのハッシュ関数を選択し、選択したハッシュ関数を利用して、BC#1に対してデータを書き込む。カメレオンハッシュ関数については、例えば、下記参考文献1を参照することができる。
参考文献1 : KRAWCZYK, H. “Chameleon signatures.” Proc. NDSS, 2000. 2000.
(情報処理装置100のハードウェア構成例)
次に、図4を用いて、情報処理装置100のハードウェア構成例について説明する。
図4は、情報処理装置100のハードウェア構成例を示すブロック図である。図4において、情報処理装置100は、CPU(Central Processing Unit)401と、メモリ402と、通信I/F(Interface)403と、記録媒体I/F404と、記録媒体405とを有する。情報処理装置100は、さらに、表示制御部406と、表示装置407と、入力I/F408と、入力装置409とを有する。また、各構成部は、バス400によってそれぞれ接続される。
ここで、CPU401は、情報処理装置100の全体の制御を司る。メモリ402は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU401のワークエリアとして使用される。ROMは、具体的には、例えば、BIOS(Basic Input/Output System)などのプログラムを記憶する。メモリ402に記憶されるプログラムは、CPU401にロードされることにより、コーディングされている処理をCPU401に実行させる。
通信I/F403は、通信回線を通じてネットワーク410に接続され、ネットワーク410を介して他のコンピュータに接続される。そして、通信I/F403は、ネットワーク410と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。通信I/F403は、例えば、モデムやLANアダプタなどである。
記録媒体I/F404は、CPU401の制御に従って記録媒体405に対するデータのリード/ライトを制御する。記録媒体I/F404は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体405は、記録媒体I/F404の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体405は、具体的には、例えば、BC#1の全部又は一部を記憶する。記録媒体405は、具体的には、例えば、BC#1の一部をバックアップする。記録媒体405は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体405は、情報処理装置100から着脱可能であってもよい。
表示制御部406は、表示装置407を制御する。表示装置407は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。表示装置407は、例えば、CRT(Cathode Ray Tube)、液晶ディスプレイ、有機EL(Electroluminescence)ディスプレイ、又は、電子ペーパーディスプレイなどである。表示装置407は、入力装置409と組み合わされてもよい。表示装置407は、例えば、タッチパネル式の入力パッドであってもよい。
入力I/F408は、入力装置409を制御する。入力装置409は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。入力装置409は、キーボード、又は、マウスなどであってもよい。また、入力装置409は、タッチパネル式の入力パッド、又は、テンキーなどであってもよい。
情報処理装置100は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F404や記録媒体405を複数有していてもよい。また、情報処理装置100は、記録媒体I/F404や記録媒体405を有していなくてもよい。
ここでは、CPU401が、情報処理装置100の全体の制御を司る場合について説明したが、これに限らない。例えば、情報処理装置100が、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)、又は、FPGA(Field Programmable Gate Array)などを有する場合があってもよい。この場合、MPU、DSP、ASIC、PLD、又は、FPGAなどのいずれかが、情報処理装置100の全体の制御を司る。
また、例えば、情報処理装置100が、MPU、DSP、ASIC、PLD、又は、FPGAのうち、少なくとも2種類以上の組み合わせを有する場合があってもよい。この場合、MPU、DSP、ASIC、PLD、又は、FPGAのうち、少なくとも2種類以上の組み合わせが、情報処理装置100の全体の制御を司る。
(情報処理装置100の機能的構成例)
次に、図5を用いて、情報処理装置100の機能的構成例について説明する。
図5は、情報処理装置100の機能的構成例を示すブロック図である。情報処理装置100は、記憶部500と、取得部501と、第1生成部502と、第2生成部503と、出力部504とを含む。
記憶部500は、例えば、図4に示したメモリ402や記録媒体405などの記憶領域によって実現される。以下では、記憶部500が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部500が、情報処理装置100とは異なる装置に含まれ、記憶部500の記憶内容が情報処理装置100から参照可能である場合があってもよい。
取得部501~出力部504は、制御部の一例として機能する。取得部501~出力部504は、具体的には、例えば、図4に示したメモリ402や記録媒体405などの記憶領域に記憶されたプログラムをCPU401に実行させることにより、又は、通信I/F403により、その機能を実現する。各機能部の処理結果は、例えば、図4に示したメモリ402や記録媒体405などの記憶領域に記憶される。
記憶部500は、各機能部の処理において参照され、又は更新される各種情報を記憶する。記憶部500は、BCの全部又は一部を記憶する。記憶部500は、例えば、BCの全部を記憶する。記憶部500は、例えば、バックアップ用の特定の記憶領域を有し、BCの一部を、バックアップ用の特定の記憶領域に記憶する。BCの全部を記憶する記憶領域と、BCの一部を記憶する記憶領域とは、物理的に異なる記憶領域であってもよい。
記憶部500は、BCに追加するブロックを生成する際に用いられる第1の算出方式、および、第2の算出方式を記憶する。第1の算出方式は、異なる情報から同一のハッシュ値を算出可能にする算出方式である。第1の算出方式は、第1の種別のハッシュ値を算出する。第1の算出方式は、例えば、カメレオンハッシュ関数を利用する算出方式である。第1の種別のハッシュ値は、カメレオンハッシュ値である。カメレオンハッシュ関数は、カメレオンハッシュ値を算出するハッシュ関数である。第2の算出方式は、第1の算出方式よりも、ハッシュ値の衝突耐性が高い算出方式である。第2の算出方式は、第2の種別のハッシュ値を算出する。第2の算出方式は、例えば、SHA(Secure Hash Algorithm)である。
取得部501は、各機能部の処理に用いられる各種情報を取得する。取得部501は、取得した各種情報を、記憶部500に記憶し、又は、各機能部に出力する。また、取得部501は、記憶部500に記憶しておいた各種情報を、各機能部に出力してもよい。取得部501は、例えば、ユーザの操作入力に基づき、各種情報を取得する。取得部501は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。取得部501は、具体的には、ブロックに格納するデータを取得する。取得部501は、より具体的には、ブロックに格納するデータを、他のコンピュータから受信することにより取得する。
取得部501は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、ユーザによる所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。取得部501は、例えば、タイマーが一定時間ごとに発生する信号を、第1生成部502と、第2生成部503との処理を開始する開始トリガーとして受け付けてもよい。取得部501は、例えば、ブロックに格納するデータを受信したことを、第1生成部502と、第2生成部503との処理を開始する開始トリガーとして受け付けてもよい。
第1生成部502は、BCの末尾のブロックの後ろに連結する後続のブロックを生成する。第1生成部502は、例えば、一定時間ごとに、取得部501が取得したデータが格納された、BCの末尾のブロックの後ろに連結する後続のブロックを生成する。そして、第1生成部502は、例えば、BCの末尾のブロックの後ろに、生成した後続のブロックを連結する。これにより、第1生成部502は、BCに新たなブロックを追加し、BCを更新することができる。
第1生成部502は、具体的には、第1の算出方式によりBCの末尾のブロックに基づいて算出された第1の種別のハッシュ値が格納された、BCの末尾のブロックの後ろに連結する後続のブロックを生成する。第1生成部502は、より具体的には、一定時間ごとに、第1の算出方式によりBCの末尾のブロックに基づいて算出された第1の種別のハッシュ値が格納された、BCの末尾のブロックの後ろに連結する後続のブロックを生成する。これにより、第1生成部502は、BCの末尾のブロック以外に、生成した後続のブロックに格納されたハッシュ値の算出元となる新たなブロックを、以後に生成可能にすることができる。
第1生成部502は、具体的には、所定のタイミングでは、第1の算出方式によりBCの末尾のブロックに基づいて算出された第1の種別のハッシュ値が格納された、BCの末尾のブロックの後ろに連結する後続のブロックを生成する。所定のタイミングは、例えば、一定時間ごとの複数のタイミングのうち、いずれかのタイミングである。所定のタイミングは、具体的には、一定時間ごとの複数のタイミングのうち、所定回数当たり1回のタイミングである。所定のタイミングは、例えば、ブロックに格納する特定のデータを受信したタイミングであってもよい。所定のタイミングは、例えば、ユーザによって指定されたタイミングであってもよい。これにより、第1生成部502は、BCの末尾のブロック以外に、生成した後続のブロックに格納されたハッシュ値の算出元となる新たなブロックを、以後に生成可能にすることができる。
第1生成部502は、具体的には、所定のタイミング以外では、第2の算出方式によりBCの末尾のブロックに基づいて算出された第2の種別のハッシュ値が格納された、BCの末尾のブロックの後ろに連結する後続のブロックを生成する。これにより、第1生成部502は、所定のタイミング以外で生成されるブロックに格納されたハッシュ値の衝突耐性を高めることができ、BCのセキュリティの向上を図ることができる。
第1生成部502は、具体的には、所定のタイミングでは、第1の算出方式に用いられる鍵情報が格納された、BCの末尾のブロックの後ろに連結する後続の第1のブロックを生成してもよい。鍵情報は、例えば、秘密鍵、および、乱数の組み合わせである。鍵情報は、例えば、指定の時点以降に復号可能となるよう暗号化された状態で、第1のブロックに格納される。これにより、第1生成部502は、鍵情報を、管理し易くすることができ、以後に利用可能にすることができる。
その後、第1生成部502は、具体的には、第1の算出方式により第1のブロックに基づいて算出された第1の種別のハッシュ値が格納された、BCの第1のブロックの後ろに連結する後続の第2のブロックを生成してもよい。これにより、第1生成部502は、BCの末尾のブロック以外に、生成した後続のブロックに格納されたハッシュ値の算出元となる新たなブロックを、以後に生成可能にすることができる。
第2生成部503は、BCに含まれる複数のブロックのうち、対象のブロックに先行する一又は複数のブロックをBCから削除する。対象のブロックは、BCに含まれる複数のブロックのうち、第1の種別のハッシュ値が格納されたブロックである。対象のブロックは、例えば、第2のブロックである。一又は複数のブロックは、例えば、第1のブロックである。一又は複数のブロックは、例えば、第1のブロックを含む第1のブロック以前に存在する、第1のブロックを含む複数のブロックである。
第2生成部503は、例えば、特定のタイミングに、BCに含まれる複数のブロックのうち、対象のブロックに先行する一又は複数のブロックをBCから削除する。特定のタイミングは、例えば、予め設定されたバックアップ時間間隔ごとのタイミングである。特定のタイミングは、例えば、ユーザによって指定されたタイミングであってもよい。特定のタイミングは、例えば、BCのデータ量が、所定の条件を満たしたタイミングであってもよい。所定の条件は、例えば、BCのデータ量が一定以上であることを示す。これにより、第2生成部503は、BCのデータ量の低減化を図ることができる。
第2生成部503は、BCに含まれる複数のブロックのうち、対象のブロックに先行する一又は複数のブロックをBCから削除する際に、一又は複数のブロックに格納された複数の情報のうち、特定の条件を満たす情報を抽出する。特定の条件は、一又は複数のブロックを削除した後のBCに残しておくことが好ましい情報を特定するための条件である。
特定の条件は、例えば、一又は複数のブロックに格納された、ある属性に関する複数の情報のうち、最新の情報を特定するための条件である。属性は、例えば、アカウントである。アカウントは、例えば、人間などに対応する。アカウントは、例えば、口座などに対応する。属性が、口座であれば、最新の情報は、口座の残高の最終的な値である。特定の条件は、例えば、BCがUTXOで記述された場合、いずれかのブロックに格納されている最終的なアウトプットを示すデータである。
第2生成部503は、例えば、第2のブロックに先行する一又は複数のブロックをBCから削除する際に、一又は複数のブロックに格納された複数の情報のうち、特定の条件を満たす情報を抽出する。これにより、第2生成部503は、一又は複数のブロックを削除しても、BCの有用性を損ねないよう、BCに残しておくことが好ましい情報を抽出しておき、一又は複数のブロックに代わり、BCの先頭に追加するブロックを生成可能にすることができる。
第2生成部503は、抽出した情報を含む新たな情報を生成する。新たな情報は、当該情報から算出されるハッシュ値が、対象のブロックに格納されたハッシュ値と等しくなるよう生成される。第2生成部503は、例えば、第1のブロックに格納された鍵情報に基づいて、抽出した情報を含む新たな情報を生成する。新たな情報は、当該情報から算出されるハッシュ値が、第2のブロックに格納された第1の種別のハッシュ値と等しくなるよう生成される。
第2生成部503は、具体的には、指定の時点以降に、第1のブロックに格納された鍵情報を取得する。第2生成部503は、より具体的には、指定の時点以降に、暗号化された状態で第1のブロックに格納された鍵情報を復号することにより取得する。第2生成部503は、具体的には、取得した鍵情報に基づいて、抽出した情報を含む新たな情報を生成する。これにより、第2生成部503は、一又は複数のブロックを削除しても、BCの整合性を損ねないよう、一又は複数のブロックに代わり、BCの先頭に追加するブロックを生成可能にすることができる。
第2生成部503は、生成した新たな情報が格納された新たなブロックを生成する。新たなブロックは、ジェネシスブロックである。そして、第2生成部503は、BCにおける対象のブロックの前に、生成した新たなブロックを連結する。これにより、第2生成部503は、一又は複数のブロックを削除した際、BCの整合性を担保することができる。
第2生成部503は、BCに含まれる複数のブロックのうち、対象のブロックに先行する一又は複数のブロックをBCから削除する際、一又は複数のブロックを、特定の記憶領域に保存する。特定の記憶領域は、例えば、記憶部500である。特定の記憶領域は、例えば、記憶部500以外であってもよい。特定の記憶領域は、具体的には、他のコンピュータであってもよい。これにより、第2生成部503は、一又は複数のブロックをバックアップしておくことができ、BCの利便性の向上を図ることができる。
出力部504は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、通信I/F403による外部装置への送信、又は、メモリ402や記録媒体405などの記憶領域への記憶である。これにより、出力部504は、少なくともいずれかの機能部の処理結果をユーザに通知可能にし、情報処理装置100の利便性の向上を図ることができる。
(情報処理装置100の具体的な機能的構成例)
次に、図6を用いて、情報処理装置100の具体的な機能的構成例について説明する。
図6は、情報処理装置100の具体的な機能的構成例を示すブロック図である。情報処理装置100は、ブロックチェーンサブシステム600として、ブロック生成サブシステム610と、バックアップ生成サブシステム620とを含む。
ブロック生成サブシステム610と、バックアップ生成サブシステム620とは、具体的には、例えば、図4に示したメモリ402や記録媒体405などの記憶領域に記憶されたプログラムをCPU401に実行させることにより、その機能を実現する。図5に示した第1生成部502と、第2生成部503とは、具体的には、ブロック生成サブシステム610と、バックアップ生成サブシステム620とによって実現される。
ブロック生成サブシステム610は、ブロック生成部611と、通常ハッシュ生成部612と、時間間隔計測部613と、カメレオンハッシュ生成部614と、時限式暗号生成部615とを含む。ブロック生成部611は、BCに追加する新たなブロックに格納するデータを、他のコンピュータから受け付ける。ブロック生成部611は、時間間隔計測部613からの指示を受け付けると、通常のハッシュ関数、および、カメレオンハッシュ関数のうち、BCに追加する新たなブロックを生成する際に利用するハッシュ関数を選択する。
ブロック生成部611は、選択したハッシュ関数を利用して、受け付けたデータが格納された、BCに追加する新たなブロックを生成する。ブロック生成部611は、例えば、通常のハッシュ関数を選択した場合、通常ハッシュ生成部612を制御し、BCの末尾のブロックに対応する通常のハッシュ値を、通常ハッシュ生成部612から取得する。そして、ブロック生成部611は、例えば、通常のハッシュ値がヘッダに格納され、受け付けたデータが本体に格納された新たなブロックを生成し、BCの末尾のブロックの後ろに連結し、BCの新たな末尾のブロックとする。
ブロック生成部611は、例えば、カメレオンハッシュ関数を選択した場合、時限式暗号生成部615を制御し、暗号化された鍵情報を、時限式暗号生成部615から取得する。鍵情報は、カメレオンハッシュ関数に利用される。また、ブロック生成部611は、通常ハッシュ生成部612を制御し、BCの末尾のブロックに対応する通常のハッシュ値を、通常ハッシュ生成部612から取得する。そして、ブロック生成部611は、通常のハッシュ値がヘッダに格納され、暗号化された鍵情報が本体に格納された新たなブロックを生成し、BCの末尾のブロックの後ろに連結し、BCの新たな末尾のブロックとする。
さらに、ブロック生成部611は、カメレオンハッシュ生成部614を制御し、BCの末尾のブロックに対応するカメレオンハッシュ値を、カメレオンハッシュ生成部614から取得する。そして、ブロック生成部611は、カメレオンハッシュ値がヘッダに格納され、受け付けたデータが本体に格納された新たなブロックを生成し、BCの末尾のブロックの後ろに連結し、BCの新たな末尾のブロックとする。新たなブロックを生成する具体例については、例えば、図7~図9を用いて後述する。
通常ハッシュ生成部612は、ブロック生成部611の制御により、BCの末尾のブロックに対応する通常のハッシュ値を算出し、ブロック生成部611に提供する。時間間隔計測部613は、一定時間ごとに、BCに追加する新たなブロックを生成する指示を、ブロック生成部611に出力する。
カメレオンハッシュ生成部614は、ブロック生成部611の制御により、鍵情報を利用して、BCの末尾のブロックに対応するカメレオンハッシュ値を算出し、ブロック生成部611に提供する。時限式暗号生成部615は、ブロック生成部611の制御により、カメレオンハッシュ生成部614から鍵情報を取得する。時限式暗号生成部615は、時限式暗号方式に従って、指定のタイミング以降に復号可能に、取得した鍵情報を暗号化し、ブロックに格納するデータとして、ブロック生成部611に提供する。
バックアップ生成サブシステム620は、バックアップ生成部621と、ヘッダ再計算部622と、時限式暗号復号部623とを含む。バックアップ生成部621は、BCの複数のブロックのうち、対象のブロックに先行する一部のブロックをバックアップした後、BCの複数のブロックのうち、対象のブロックに先行する一部のブロックを削除する。対象のブロックは、カメレオンハッシュ値が格納されたブロックである。一部のブロックは、対象のブロックに先行する、暗号化された鍵情報が本体に格納されたブロックよりも先行する一部のブロックである。
バックアップ生成部621は、例えば、対象のブロックに先行する一部のブロックをバックアップする。次に、バックアップ生成部621は、例えば、ヘッダ再計算部622を制御し、対象のブロックに先行する一部のブロックから、特定の条件を満たす情報を取得する。特定の条件は、一部のブロックを削除した後のBCに残しておくことが好ましい情報を特定するための条件である。また、バックアップ生成部621は、例えば、時限式暗号復号部623を制御し、過去にカメレオンハッシュ値を算出する際に用いられた鍵情報を取得する。
そして、バックアップ生成部621は、例えば、取得した鍵情報に基づいて、取得した情報を含み、対象のブロックのヘッダに格納されたカメレオンハッシュ値を算出可能にする新たな情報が本体に格納されたジェネシスブロックを生成する。その後、バックアップ生成部621は、例えば、対象のブロックに先行する一部のブロックを削除する。また、バックアップ生成部621は、対象のブロックの直前に存在し、暗号化された鍵情報が本体に格納されたブロックに代わり、生成したジェネシスブロックを、BCの新たな先頭のブロックとして、BCに追加する。
ヘッダ再計算部622は、バックアップ生成部621の制御により、対象のブロックに先行する一部のブロックから、特定の条件を満たす情報を抽出し、バックアップ生成部621に提供する。時限式暗号復号部623は、バックアップ生成部621の制御により、対象のブロックの直前に存在し、暗号化された鍵情報が本体に格納されたブロックから、過去にカメレオンハッシュ値を算出する際に用いられた、暗号化された鍵情報を抽出する。時限式暗号復号部623は、抽出した暗号化された鍵情報を復号し、復号した鍵情報を、バックアップ生成部621に提供する。
(情報処理装置100の動作例)
次に、図7~図9を用いて、情報処理装置100の動作例について説明する。
図7~図9は、情報処理装置100の動作例を示す説明図である。図7において、情報処理装置100は、一定時間ごとに、データの書き込み処理を実行し、データが格納された新たなブロックを生成し、BC700に追加していく。図7に示すBC700は、複数のブロック701~710が追加された後の状態である。
例えば、情報処理装置100は、ジェネシスブロック701を生成し、ジェネシスブロック701を含むBC700を生成する。ジェネシスブロック701は、BC700の先頭のブロックとなる特殊なブロックである。その後、情報処理装置100は、一定時間ごとに、一定時間内に受け付けた、ブロックに格納するデータが纏めて格納された、BC700に追加する新たなブロックを生成する。
具体的には、情報処理装置100は、一定時間が経過した際、特定のタイミングであるか否かを判定する。特定のタイミングは、バックアップ時間間隔ごとのタイミングである。バックアップ時間間隔は、例えば、一定時間よりも長いことが好ましい。ここでは、情報処理装置100は、特定のタイミングではないと判定したとする。情報処理装置100は、特定のタイミングではないため、ジェネシスブロック701に対応する通常のハッシュ値を算出する。情報処理装置100は、算出した通常のハッシュ値がヘッダに格納され、一定時間分のデータが本体に格納された新たなブロック702を生成し、BC700におけるジェネシスブロック701の後ろに連結する。
同様に、情報処理装置100は、一定時間が経過した際、特定のタイミングであるか否かを判定する。ここでは、情報処理装置100は、特定のタイミングではないと判定したとする。情報処理装置100は、特定のタイミングではないため、BC700における末尾のブロック702に対応する通常のハッシュ値を算出する。情報処理装置100は、算出した通常のハッシュ値がヘッダに格納され、一定時間分のデータが本体に格納された新たなブロック703を生成し、BC700における末尾のブロック702の後ろに連結する。
次に、情報処理装置100は、一定時間が経過した際、特定のタイミングであるか否かを判定する。ここでは、情報処理装置100は、特定のタイミングであると判定したとする。情報処理装置100は、特定のタイミングであるため、カメレオンハッシュ値を算出する際に用いられる鍵情報を生成し、時限暗号方式で暗号化する。鍵情報は、例えば、秘密鍵、および、乱数である。
また、情報処理装置100は、BC700における末尾のブロック703に対応する通常のハッシュ値を算出する。情報処理装置100は、算出した通常のハッシュ値がヘッダに格納され、時限暗号方式で暗号化された鍵情報が本体に格納された新たなブロック704を生成し、BC700における末尾のブロック703の後ろに連結する。
そして、情報処理装置100は、生成した鍵情報を用いて、BC700における末尾のブロック704に対応するカメレオンハッシュ値を算出する。情報処理装置100は、算出したカメレオンハッシュ値がヘッダに格納され、一定時間分のデータが本体に格納された新たなブロック705を生成し、BC700における末尾のブロック704の後ろに連結する。その後、同様に、情報処理装置100は、ブロック706~710を生成し、BC700に追加していく。
これにより、情報処理装置100は、BC700に複数のブロックを追加していく際、BC700の一部のブロックを、後々にバックアップ可能、および、削除可能な状態にしておくことができる。また、情報処理装置100は、時限暗号方式を利用するため、鍵情報を管理し易くすることができる。情報処理装置100は、鍵情報を暗号化するための暗号鍵を管理せずに済むため、鍵情報を管理する負担の低減化を図ることができる。次に、図8の説明に移行する。
図8において、情報処理装置100は、BC700における、暗号化された鍵情報が格納されたブロックに先行する1以上のブロックに関するバックアップ時点になった場合、アーカイブ作成処理を実行し、1以上のブロックをバックアップした上で削除する。バックアップ時点は、例えば、暗号化された鍵情報が復号可能になった時点以降である。バックアップ時点は、具体的には、暗号化された鍵情報が復号可能になった時点である。ユーザは、例えば、暗号化された鍵情報が復号可能になる時点を設定することにより、バックアップ時点を設定する。
図8の例では、ブロック704に格納された、暗号化された鍵情報810が復号可能になり、ブロック704に先行するブロック701~703に関するバックアップ時点になったとする。ブロック704と、バックアップされた後に削除されるブロック701~703との境界が、鋏の記号801で示されている。
例えば、情報処理装置100は、バックアップ時点になった場合、暗号化された鍵情報810を、ブロック704から抽出する。情報処理装置100は、暗号化された鍵情報810を復号する。情報処理装置100は、ブロック704に先行するブロック701~703から、特定の条件を満たす情報を抽出する。次に、図9の説明に移行する。
図9において、情報処理装置100は、ブロック704に先行するブロック701~703を、BC700から切り離し、特定の記憶領域910にバックアップする。情報処理装置100は、鍵情報810を用いて、抽出した情報を含み、ブロック705のヘッダに格納されたカメレオンハッシュ値と同一のカメレオンハッシュ値を算出可能とする新たな情報を生成する。新たな情報は、例えば、ブロック705のヘッダに格納されたカメレオンハッシュ値と同一のカメレオンハッシュ値を算出可能とするよう、抽出した情報と、パディング文字列とを含む。
情報処理装置100は、生成した新たな情報が格納された新たなジェネシスブロック901を生成し、BC700の先頭のブロックとして、BC700におけるブロック705の直前に連結する。これにより、情報処理装置100は、BC700の整合性を損ねず、BC700からブロック701~703を取り除くことができ、BC700のデータ量の低減化を図ることができる。整合性とは、BC700における、それぞれのブロックのヘッダに格納されたハッシュ値に基づく、複数のブロックの連鎖の正当性を示す。また、情報処理装置100は、BC700の改ざん耐性を維持することができる。
(新たなジェネシスブロックを生成する具体例)
次に、図10を用いて、情報処理装置100が、新たなジェネシスブロックを生成する具体例について説明する。
図10は、新たなジェネシスブロックを生成する具体例を示す説明図である。図10の例では、情報処理装置100は、BC1000を記憶する。BC1000は、ブロック1001~1009を含む。ブロック1001は、ジェネシスブロックである。ブロック1002は、データA=3、B=2が格納されている。ブロック1003は、データD=1、E=4が格納されている。ブロック1004は、データA=1、D=5が格納されている。ブロック1005は、時限暗号方式で暗号化された鍵情報が格納されている。ブロック1006は、ヘッダにカメレオンハッシュ値が格納されている。
ここで、情報処理装置100が、BC1000から、ブロック1001~1004を取り除き、バックアップする場合について説明する。この場合、情報処理装置100は、ブロック1001~1004から、特定の条件を満たすデータを抽出する。情報処理装置100は、例えば、ブロック1001~1004から、属性ごとに最新のデータのみを抽出し、新たなジェネシスブロック1010に格納するデータを再計算する。情報処理装置100は、具体的には、データA=1、B=2、D=5、E=4を抽出し、新たなジェネシスブロック1010に格納するデータに設定する。
情報処理装置100は、カメレオンハッシュ関数CH(・)に基づいて、鍵情報を用いて、設定したデータと、パディング文字列との組み合わせであり、ブロック1006のヘッダに格納されたカメレオンハッシュ値の算出元となる組み合わせを特定する。情報処理装置100は、例えば、データm2と、パディング文字列αとの組み合わせを特定する。
ここで、H=CH(m1,r1)=CH(m2+α,r2)が成立する。Hは、カメレオンハッシュ値である。m1は、メッセージである。m1は、例えば、ブロック1004の本体に格納されたデータである。r1は、乱数である。r2は、乱数である。また、カメレオンハッシュ関数の定義によれば、g^(m2+α)・y^(r2)modp=Hが成立する。情報処理装置100は、r2を設定し、総当たり探索方法により、g^(m2+α)・y^(r2)modp=Hを満たすαを探索することにより、データm2と、パディング文字列αとの組み合わせを特定する。
情報処理装置100は、特定した組み合わせが格納された、新たなジェネシスブロック1010を生成し、ブロック1006の直前に連結する。また、情報処理装置100は、ブロック1001~1004を、特定の記憶領域1020にバックアップする。その後、情報処理装置100は、BC1000の運用を継続する。
これにより、情報処理装置100は、BC1000の整合性を損ねず、BC1000からブロック1001~1004を取り除くことができ、BC1000のデータ量の低減化を図ることができる。また、情報処理装置100は、BC1000の改ざん耐性を維持することができる。また、情報処理装置100は、ブロック1005を、ジェネシスブロック1010と置き換えて削除することにより、暗号化された鍵情報を削除することができる。このため、情報処理装置100は、攻撃者によって、鍵情報が悪用されるリスクの低減化を図ることができる。
(BCがUTXOで記述される場合に、新たなジェネシスブロックを生成する具体例)
次に、図11を用いて、情報処理装置100が、BCがUTXOで記述される場合に、新たなジェネシスブロックを生成する具体例について説明する。
図11は、BCがUTXOで記述される場合に、新たなジェネシスブロックを生成する具体例を示す説明図である。図11の例では、バックアップした上で削除する複数のブロックに、あるユーザのデータとして、トランザクション0~6が格納されているとする。トランザクション0~6は、それぞれ、Inputと、Outputとを含む。
図11において、情報処理装置100は、トランザクション0~6で、最終的にInputとなっていない、未使用TxのOutputが纏めて格納された、新たなジェネシスブロックを生成する。これにより、情報処理装置100は、BCがUTXOで記述される場合にも適用することができ、BCのデータ量の低減化を図ることができる。
(生成処理手順)
次に、図12を用いて、情報処理装置100が実行する、生成処理手順の一例について説明する。生成処理は、例えば、図4に示したCPU401と、メモリ402や記録媒体405などの記憶領域と、通信I/F403とによって実現される。
図12は、生成処理手順の一例を示すフローチャートである。図12において、情報処理装置100は、BCライトAPI302を介して、書き込み対象のデータを準備する(ステップS1201)。
次に、情報処理装置100は、現時点が、バックアップ時間間隔で存在する特定のタイミングに該当するか否かを判定する(ステップS1202)。ここで、特定のタイミングに該当する場合(ステップS1202:Yes)、情報処理装置100は、ステップS1203の処理に移行する。一方で、特定のタイミングに該当しない場合(ステップS1202:No)、情報処理装置100は、ステップS1210の処理に移行する。
ステップS1203では、情報処理装置100は、書き込み対象のデータを格納する新たなブロックの生成時に用いられるハッシュ関数に、カメレオンハッシュ関数を設定する(ステップS1203)。
次に、情報処理装置100は、カメレオンハッシュ関数に用いられる、カメレオンハッシュ値を算出するための秘密鍵と乱数とを含む鍵情報を取得する(ステップS1204)。そして、情報処理装置100は、時限式暗号方式を利用して、取得した鍵情報を暗号化する(ステップS1205)。
次に、情報処理装置100は、通常ハッシュ関数を利用して、BCの末尾のブロックに対応する通常ハッシュ値を算出する(ステップS1206)。そして、情報処理装置100は、算出した通常ハッシュ値と、暗号化後の鍵情報とが格納された新たなブロックを生成し、BCに連結する(ステップS1207)。
次に、情報処理装置100は、カメレオンハッシュ関数を利用して、BCの末尾のブロックに対応するカメレオンハッシュ値を算出する(ステップS1208)。そして、情報処理装置100は、算出したカメレオンハッシュ値と、書き込み対象のデータとが格納された新たなブロックを生成し、BCに連結する(ステップS1209)。その後、情報処理装置100は、ステップS1213の処理に移行する。
ステップS1210では、情報処理装置100は、書き込み対象のデータを格納する新たなブロックの生成時に用いられるハッシュ関数に、通常ハッシュ関数を設定する(ステップS1210)。
次に、情報処理装置100は、通常ハッシュ関数を利用して、BCの末尾のブロックに対応する通常ハッシュ値を算出する(ステップS1211)。そして、情報処理装置100は、算出した通常ハッシュ値と、書き込み対象のデータとが格納された新たなブロックを生成し、BCに連結する(ステップS1212)。その後、情報処理装置100は、ステップS1213の処理に移行する。
ステップS1213では、情報処理装置100は、ブロックの生成を終了するか否かを判定する(ステップS1213)。ここで、ブロックの生成を終了しない場合(ステップS1213:No)、情報処理装置100は、ステップS1202の処理に戻る。一方で、ブロックの生成を終了する場合(ステップS1213:Yes)、情報処理装置100は、生成処理を終了する。これにより、情報処理装置100は、BCからブロックを削除可能にすることができる。
(保存処理手順)
次に、図13を用いて、情報処理装置100が実行する、保存処理手順の一例について説明する。保存処理は、例えば、図4に示したCPU401と、メモリ402や記録媒体405などの記憶領域と、通信I/F403とによって実現される。
図13は、保存処理手順の一例を示すフローチャートである。図13において、情報処理装置100は、バックアップ時点になったことを検出する(ステップS1301)。
次に、情報処理装置100は、BCにおいて、カメレオンハッシュ値が格納されたいずれかのブロックを選択する(ステップS1302)。そして、情報処理装置100は、BCにおいて、選択したブロックの直前に存在し、暗号化後の鍵情報が格納されたブロックから、暗号化後の鍵情報を抽出する(ステップS1303)。
次に、情報処理装置100は、時限式暗号方式で、抽出した暗号化後の鍵情報を復号する(ステップS1304)。そして、情報処理装置100は、BCにおいて、選択したブロックよりも先行する一又は複数のブロックを、記憶媒体に保存する(ステップS1305)。
次に、情報処理装置100は、BCにおいて、選択したブロックよりも先行する一又は複数のブロックから、特定の条件を満たす情報を抽出する(ステップS1306)。そして、情報処理装置100は、復号した鍵情報を利用して、選択したブロックに格納されたカメレオンハッシュ値を算出可能にする、抽出した情報を含む新たな情報が格納されたジェネシスブロックを生成する(ステップS1307)。
次に、情報処理装置100は、生成したジェネシスブロックに、選択したブロックを連結する(ステップS1308)。そして、情報処理装置100は、保存処理を終了する。これにより、情報処理装置100は、BCのデータ量の低減化を図ることができる。
ここで、情報処理装置100は、図12および図13の各フローチャートの一部ステップの処理の順序を入れ替えて実行してもよい。例えば、ステップS1205,S1206の処理の順序は入れ替え可能である。また、情報処理装置100は、図12および図13の各フローチャートの一部ステップの処理を省略してもよい。例えば、ステップS1202,S1210~S1212の処理は省略可能である。
以上説明したように、情報処理装置100によれば、BCに含まれ、対象のブロックに先行する一又は複数のブロックをBCから削除する際に、一又は複数のブロックに格納された複数の情報のうち、特定の条件を満たす情報を抽出することができる。情報処理装置100によれば、抽出した情報を含む新たな情報であって、新たな情報から算出されるハッシュ値が対象のブロックに格納されたハッシュ値と等しくなるよう生成された新たな情報が格納された新たなブロックを生成することができる。情報処理装置100によれば、BCにおける対象のブロックの前に、生成した新たなブロックを連結することができる。これにより、情報処理装置100は、BCの整合性を担保し、BCの改ざん耐性を維持しつつ、BCのデータ量の低減化を図ることができる。
情報処理装置100によれば、一又は複数のブロックを、BCから削除し、一又は複数のブロックを、特定の記憶領域に保存することができる。これにより、情報処理装置100は、一又は複数のブロックをバックアップすることができる。
情報処理装置100によれば、異なる情報から同一のハッシュ値を算出可能にする第1の算出方式を利用することができる。情報処理装置100によれば、第1の算出方式によりBCの末尾のブロックに基づいて算出された第1の種別のハッシュ値が格納された、BCの末尾のブロックの後ろに連結する後続のブロックを生成することができる。情報処理装置100によれば、対象のブロックに、BCに含まれる複数のブロックのうち、第1の種別のハッシュ値が格納されたブロックを採用することができる。これにより、情報処理装置100は、新たな情報から算出されるハッシュ値を、対象のブロックに格納されたハッシュ値と等しくし易くすることができる。
情報処理装置100によれば、所定のタイミングでは、第1の算出方式によりBCの末尾のブロックに基づいて算出された第1の種別のハッシュ値が格納された、BCの末尾のブロックの後ろに連結する後続のブロックを生成することができる。情報処理装置100によれば、第1の算出方式よりハッシュ値の衝突耐性が高い第2の算出方式を利用することができる。情報処理装置100によれば、所定のタイミング以外では、第2の算出方式によりBCの末尾のブロックに基づいて算出された第2の種別のハッシュ値が格納された、BCの末尾のブロックの後ろに連結する後続のブロックを生成することができる。これにより、情報処理装置100は、BCのセキュリティの向上を図ることができる。
情報処理装置100によれば、所定のタイミングでは、第1の算出方式に用いられる鍵情報が格納された、BCの末尾のブロックの後ろに連結する後続の第1のブロックを生成することができる。情報処理装置100によれば、第1のブロックを生成した後、さらに、第1の算出方式により第1のブロックに基づいて算出された第1の種別のハッシュ値が格納された、BCの第1のブロックの後ろに連結する後続の第2のブロックを生成することができる。情報処理装置100によれば、第2のブロックに先行する一又は複数のブロックをBCから削除する際に、一又は複数のブロックに格納された複数の情報のうち、特定の条件を満たす情報を抽出することができる。情報処理装置100によれば、第1のブロックに格納された鍵情報に基づいて、抽出した情報を含む新たな情報が格納された新たなブロックを生成することができる。これにより、情報処理装置100は、鍵情報を取得し易くすることができる。
情報処理装置100によれば、鍵情報を、指定の時点以降に復号可能となるよう暗号化された状態で、第1のブロックに格納することができる。情報処理装置100によれば、指定の時点以降に、第1のブロックに格納された鍵情報に基づいて、抽出した情報を含む新たな情報が格納された新たなブロックを生成することができる。これにより、情報処理装置100は、BCのセキュリティの向上を図ることができる。
情報処理装置100によれば、新たなブロックを、ジェネシスブロックとして生成することができる。これにより、情報処理装置100は、新たなブロックには、ハッシュ値を格納せずに済ませることができ、BCの整合性を担保することができる。
情報処理装置100によれば、第1の算出方式に、カメレオンハッシュ値を算出する算出方式を採用することができる。これにより、情報処理装置100は、セキュリティの向上を図りつつ、BCの整合性を担保したまま、新たなジェネシスブロックを生成可能にすることができる。
なお、本実施の形態で説明した制御方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した制御プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した制御プログラムは、インターネットなどのネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)ブロックチェーンに含まれる複数のブロックのうち、あるブロックに先行する一又は複数のブロックを前記ブロックチェーンから削除する際に、前記一又は複数のブロックに格納された複数の情報のうち、特定の条件を満たす情報を抽出し、
抽出した前記情報を含む新たな情報であって、前記新たな情報から算出されるハッシュ値が前記あるブロックに格納されたハッシュ値と等しくなるよう生成された前記新たな情報が格納された新たなブロックを生成し、
前記ブロックチェーンにおける前記あるブロックの前に、生成した前記新たなブロックを連結する、
処理をコンピュータが実行することを特徴とする制御方法。
(付記2)前記一又は複数のブロックを、前記ブロックチェーンから削除し、
前記一又は複数のブロックを、特定の記憶領域に保存する、
処理を前記コンピュータが実行することを特徴とする付記1に記載の制御方法。
(付記3)異なる情報から同一のハッシュ値を算出可能にする第1の算出方式により前記ブロックチェーンの末尾のブロックに基づいて算出された第1の種別のハッシュ値が格納された、前記ブロックチェーンの末尾のブロックの後ろに連結する後続のブロックを生成する、
処理を前記コンピュータが実行し、
前記あるブロックは、前記ブロックチェーンに含まれる前記複数のブロックのうち、前記第1の種別のハッシュ値が格納されたブロックである、ことを特徴とする付記1又は2に記載の制御方法。
(付記4)前記後続のブロックを生成する処理は、
所定のタイミングでは、前記第1の算出方式により前記ブロックチェーンの末尾のブロックに基づいて算出された前記第1の種別のハッシュ値が格納された、前記ブロックチェーンの末尾のブロックの後ろに連結する後続のブロックを生成し、
前記所定のタイミング以外では、前記第1の算出方式よりハッシュ値の衝突耐性が高い第2の算出方式により前記ブロックチェーンの末尾のブロックに基づいて算出された第2の種別のハッシュ値が格納された、前記ブロックチェーンの末尾のブロックの後ろに連結する後続のブロックを生成する、ことを特徴とする付記3に記載の制御方法。
(付記5)前記後続のブロックを生成する処理は、
前記所定のタイミングでは、前記第1の算出方式に用いられる鍵情報が格納された、前記ブロックチェーンの末尾のブロックの後ろに連結する後続の第1のブロックを生成した後、さらに、前記第1の算出方式により前記第1のブロックに基づいて算出された前記第1の種別のハッシュ値が格納された、前記ブロックチェーンの前記第1のブロックの後ろに連結する後続の第2のブロックを生成し、
前記抽出する処理は、
前記第2のブロックに先行する一又は複数のブロックを前記ブロックチェーンから削除する際に、前記一又は複数のブロックに格納された複数の情報のうち、前記特定の条件を満たす情報を抽出し、
前記新たなブロックを生成する処理は、
前記第1のブロックに格納された前記鍵情報に基づいて、抽出した前記情報を含む新たな情報であって、前記新たな情報から算出されるハッシュ値が前記第2のブロックに格納された前記第1の種別のハッシュ値と等しくなるよう生成された前記新たな情報が格納された新たなブロックを生成する、ことを特徴とする付記4に記載の制御方法。
(付記6)前記鍵情報は、指定の時点以降に復号可能となるよう暗号化された状態で、前記第1のブロックに格納され、
前記新たなブロックを生成する処理は、
前記指定の時点以降に、前記第1のブロックに格納された前記鍵情報に基づいて、抽出した前記情報を含む新たな情報であって、前記新たな情報から算出されるハッシュ値が前記第2のブロックに格納された前記第1の種別のハッシュ値と等しくなるよう生成された前記新たな情報が格納された新たなブロックを生成する、ことを特徴とする付記5に記載の制御方法。
(付記7)前記新たなブロックは、ジェネシスブロックである、ことを特徴とする付記1~6のいずれか一つに記載の制御方法。
(付記8)前記第1の算出方式は、カメレオンハッシュ値を算出する算出方式である、ことを特徴とする付記3~5のいずれか一つに記載の制御方法。
(付記9)ブロックチェーンに含まれる複数のブロックのうち、あるブロックに先行する一又は複数のブロックを前記ブロックチェーンから削除する際に、前記一又は複数のブロックに格納された複数の情報のうち、特定の条件を満たす情報を抽出し、
抽出した前記情報を含む新たな情報であって、前記新たな情報から算出されるハッシュ値が前記あるブロックに格納されたハッシュ値と等しくなるよう生成された前記新たな情報が格納された新たなブロックを生成し、
前記ブロックチェーンにおける前記あるブロックの前に、生成した前記新たなブロックを連結する、
処理をコンピュータに実行させることを特徴とする制御プログラム。
(付記10)ブロックチェーンに含まれる複数のブロックのうち、あるブロックに先行する一又は複数のブロックを前記ブロックチェーンから削除する際に、前記一又は複数のブロックに格納された複数の情報のうち、特定の条件を満たす情報を抽出し、
抽出した前記情報を含む新たな情報であって、前記新たな情報から算出されるハッシュ値が前記あるブロックに格納されたハッシュ値と等しくなるよう生成された前記新たな情報が格納された新たなブロックを生成し、
前記ブロックチェーンにおける前記あるブロックの前に、生成した前記新たなブロックを連結する、
制御部を有することを特徴とする情報処理装置。
100 情報処理装置
110,700,1000 BC
111~113,701~710,1001~1009 ブロック
200 BC管理システム
210,910,1020 記憶領域
301 アプリケーションプログラム
302 BCライトAPI
303 BCライト制御部
304 BCサブシステム
400 バス
401 CPU
402 メモリ
403 通信I/F
404 記録媒体I/F
405 記録媒体
406 表示制御部
407 表示装置
408 入力I/F
409 入力装置
410 ネットワーク
500 記憶部
501 取得部
502 第1生成部
503 第2生成部
504 出力部
600 ブロックチェーンサブシステム
610 ブロック生成サブシステム
611 ブロック生成部
612 通常ハッシュ生成部
613 時間間隔計測部
614 カメレオンハッシュ生成部
615 時限式暗号生成部
620 バックアップ生成サブシステム
621 バックアップ生成部
622 ヘッダ再計算部
623 時限式暗号復号部
801 記号
810 鍵情報
901,1010 ジェネシスブロック

Claims (8)

  1. ブロックチェーンに含まれる複数のブロックのうち、あるブロックに先行する一又は複数のブロックを前記ブロックチェーンから削除する際に、前記一又は複数のブロックに格納された複数の情報のうち、特定の条件を満たす情報を抽出し、
    抽出した前記情報を含む新たな情報であって、前記新たな情報から算出されるハッシュ値が前記あるブロックに格納されたハッシュ値と等しくなるよう生成された前記新たな情報が格納された新たなブロックを生成し、
    前記ブロックチェーンにおける前記あるブロックの前に、生成した前記新たなブロックを連結する、
    処理をコンピュータが実行することを特徴とする制御方法。
  2. 前記一又は複数のブロックを、前記ブロックチェーンから削除し、
    前記一又は複数のブロックを、特定の記憶領域に保存する、
    処理を前記コンピュータが実行することを特徴とする請求項1に記載の制御方法。
  3. 異なる情報から同一のハッシュ値を算出可能にする第1の算出方式により前記ブロックチェーンの末尾のブロックに基づいて算出された第1の種別のハッシュ値が格納された、前記ブロックチェーンの末尾のブロックの後ろに連結する後続のブロックを生成する、
    処理を前記コンピュータが実行し、
    前記あるブロックは、前記ブロックチェーンに含まれる前記複数のブロックのうち、前記第1の種別のハッシュ値が格納されたブロックである、ことを特徴とする請求項1又は2に記載の制御方法。
  4. 前記後続のブロックを生成する処理は、
    所定のタイミングでは、前記第1の算出方式により前記ブロックチェーンの末尾のブロックに基づいて算出された前記第1の種別のハッシュ値が格納された、前記ブロックチェーンの末尾のブロックの後ろに連結する後続のブロックを生成し、
    前記所定のタイミング以外では、前記第1の算出方式よりハッシュ値の衝突耐性が高い第2の算出方式により前記ブロックチェーンの末尾のブロックに基づいて算出された第2の種別のハッシュ値が格納された、前記ブロックチェーンの末尾のブロックの後ろに連結する後続のブロックを生成する、ことを特徴とする請求項3に記載の制御方法。
  5. 前記後続のブロックを生成する処理は、
    前記所定のタイミングでは、前記第1の算出方式に用いられる鍵情報が格納された、前記ブロックチェーンの末尾のブロックの後ろに連結する後続の第1のブロックを生成した後、さらに、前記第1の算出方式により前記第1のブロックに基づいて算出された前記第1の種別のハッシュ値が格納された、前記ブロックチェーンの前記第1のブロックの後ろに連結する後続の第2のブロックを生成し、
    前記抽出する処理は、
    前記第2のブロックに先行する一又は複数のブロックを前記ブロックチェーンから削除する際に、前記一又は複数のブロックに格納された複数の情報のうち、前記特定の条件を満たす情報を抽出し、
    前記新たなブロックを生成する処理は、
    前記第1のブロックに格納された前記鍵情報に基づいて、抽出した前記情報を含む新たな情報であって、前記新たな情報から算出されるハッシュ値が前記第2のブロックに格納された前記第1の種別のハッシュ値と等しくなるよう生成された前記新たな情報が格納された新たなブロックを生成する、ことを特徴とする請求項4に記載の制御方法。
  6. 前記鍵情報は、指定の時点以降に復号可能となるよう暗号化された状態で、前記第1のブロックに格納され、
    前記新たなブロックを生成する処理は、
    前記指定の時点以降に、前記第1のブロックに格納された前記鍵情報に基づいて、抽出した前記情報を含む新たな情報であって、前記新たな情報から算出されるハッシュ値が前記第2のブロックに格納された前記第1の種別のハッシュ値と等しくなるよう生成された前記新たな情報が格納された新たなブロックを生成する、ことを特徴とする請求項5に記載の制御方法。
  7. ブロックチェーンに含まれる複数のブロックのうち、あるブロックに先行する一又は複数のブロックを前記ブロックチェーンから削除する際に、前記一又は複数のブロックに格納された複数の情報のうち、特定の条件を満たす情報を抽出し、
    抽出した前記情報を含む新たな情報であって、前記新たな情報から算出されるハッシュ値が前記あるブロックに格納されたハッシュ値と等しくなるよう生成された前記新たな情報が格納された新たなブロックを生成し、
    前記ブロックチェーンにおける前記あるブロックの前に、生成した前記新たなブロックを連結する、
    処理をコンピュータに実行させることを特徴とする制御プログラム。
  8. ブロックチェーンに含まれる複数のブロックのうち、あるブロックに先行する一又は複数のブロックを前記ブロックチェーンから削除する際に、前記一又は複数のブロックに格納された複数の情報のうち、特定の条件を満たす情報を抽出し、
    抽出した前記情報を含む新たな情報であって、前記新たな情報から算出されるハッシュ値が前記あるブロックに格納されたハッシュ値と等しくなるよう生成された前記新たな情報が格納された新たなブロックを生成し、
    前記ブロックチェーンにおける前記あるブロックの前に、生成した前記新たなブロックを連結する、
    制御部を有することを特徴とする情報処理装置。
JP2022551472A 2020-09-23 2020-09-23 Withdrawn JPWO2022064571A1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/035843 WO2022064571A1 (ja) 2020-09-23 2020-09-23 制御方法、制御プログラム、および情報処理装置

Publications (2)

Publication Number Publication Date
JPWO2022064571A1 JPWO2022064571A1 (ja) 2022-03-31
JPWO2022064571A5 true JPWO2022064571A5 (ja) 2023-03-14

Family

ID=80844570

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022551472A Withdrawn JPWO2022064571A1 (ja) 2020-09-23 2020-09-23

Country Status (4)

Country Link
US (1) US20230205762A1 (ja)
EP (1) EP4221075A4 (ja)
JP (1) JPWO2022064571A1 (ja)
WO (1) WO2022064571A1 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107423426B (zh) 2017-08-02 2020-06-02 众安信息技术服务有限公司 一种区块链块数据的数据归档方法及电子设备
US10404455B2 (en) * 2017-09-01 2019-09-03 Accenture Global Solutions Limited Multiple-phase rewritable blockchain
US11416475B2 (en) * 2018-10-19 2022-08-16 Adobe Inc. Block quantity reduction in distributed ledgers
EP3887995A1 (en) * 2018-11-28 2021-10-06 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for reducing the size of a blockchain

Similar Documents

Publication Publication Date Title
KR101405720B1 (ko) 암호화 속성을 이용하는 가속 크립토그래피
JP3871996B2 (ja) データ分割管理方法及びプログラム
CN106878013B (zh) 一种文件的加密、解密方法和装置
US9087207B2 (en) Obtaining complete forensic images of electronic storage media
JP2004501532A (ja) 鍵中央提供及びキー入力可能文字によるワンタイムパッド暗号化
EP2722787A1 (en) Method and apparatus for writing and reading encrypted hard disk data
WO2012063755A1 (ja) 分散アーカイブシステム並びにデータアーカイブ装置及びデータ復元装置
JP5389401B2 (ja) 暗号化装置、復号装置及び暗号システム
JPWO2003013054A1 (ja) 処理に伴い暗号データの改ざん検出用データを生成する装置及び方法
CN110650191A (zh) 一种分布式存储系统的数据读写方法
JP2019207281A (ja) 大小判定サーバ、大小判定暗号化システム、及び大小判定方法
JP2004072290A (ja) 証明書管理環境の管理方法、プログラム及び装置
US20230289345A1 (en) Searchable encryption system
JP4606808B2 (ja) データ消去装置、画像形成装置、データ消去方法及びデータ消去プログラム
WO2022064571A1 (ja) 制御方法、制御プログラム、および情報処理装置
JPWO2022064571A5 (ja)
KR100859651B1 (ko) 가변크기 데이터 저장을 위한 데이터구조를 기록한기록매체, 가변크기 데이터 저장방법, 및 가변크기 데이터저장방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한컴퓨터로 읽을 수 있는 기록매체
JP4721737B2 (ja) データのバックアップ方法、バックアップ処理システム、およびコンピュータプログラム
JP2004199229A (ja) 記憶装置に記憶されたデータを解読不能にする方法及びコンピュータプログラム。
CN111984605A (zh) 小文件管理方法、电子设备及存储装置
JP2006099697A (ja) 情報プログラム保護方法及び装置
WO2006025346A1 (ja) 暗号化、復号化プログラム及び暗号システム
JP6893057B1 (ja) 情報処理装置、およびコンピュータープログラム
JP7008120B1 (ja) 情報記憶システム、情報処理装置、及び情報記憶方法
JP5759925B2 (ja) データ制御装置、データ制御方法、データ制御プログラム