JP2024063185A - 情報処理システム、データ生成装置、データ検証装置、情報処理方法、および情報処理プログラム - Google Patents

情報処理システム、データ生成装置、データ検証装置、情報処理方法、および情報処理プログラム Download PDF

Info

Publication number
JP2024063185A
JP2024063185A JP2024033484A JP2024033484A JP2024063185A JP 2024063185 A JP2024063185 A JP 2024063185A JP 2024033484 A JP2024033484 A JP 2024033484A JP 2024033484 A JP2024033484 A JP 2024033484A JP 2024063185 A JP2024063185 A JP 2024063185A
Authority
JP
Japan
Prior art keywords
data
hash value
block
electronic data
verification
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.)
Pending
Application number
JP2024033484A
Other languages
English (en)
Inventor
勇樹 青木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Aokiapp
Original Assignee
Aokiapp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Aokiapp filed Critical Aokiapp
Priority to JP2024033484A priority Critical patent/JP2024063185A/ja
Publication of JP2024063185A publication Critical patent/JP2024063185A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

【課題】電子データに含まれる秘密情報を保護しつつ、所定の装置が秘密情報を含む電子データを保有していることを検証可能とする。【解決手段】情報処理システムは、データ生成装置2と、データ検証装置3とを備える。データ生成装置2は、電子データのハッシュ値を演算し、電子データに含まれる秘密情報を決定し、秘密情報がマスキングされた電子データを生成し、秘密情報を含むブロックに関連する中間ステートデータと、秘密情報を含まないブロックとを含むハッシュ値検証用データをデータ検証装置3に送信する。データ検証装置3は、マスキングされた電子データと、ハッシュ値を外部から受信し、データ生成装置2からハッシュ値検証用データを受信し、ハッシュ値検証用データに基づいて、電子データのハッシュ値を演算し、演算されたハッシュ値と受信したハッシュ値とを比較する。【選択図】図4

Description

本開示は、情報処理システム、データ生成装置、データ検証装置、情報処理方法、および情報処理プログラムに関する。
電子データの整合性や真正性を検証するためには、電子データのハッシュ値が一般的に使用されている。この点において、電子署名の仕組みでは、電子データのハッシュ値が生成された上で、当該生成されたハッシュ値が電子データの作成者に紐づく秘密鍵で暗号化される。
また、ハッシュ値の計算手法として、Secure Hash Algorithm(SHA)が広く利用されている(例えば、非特許文献1を参照)。特に、SHAのバリアントの一つであるSHA-256が最も広く利用されている。SHA-256以外の他のSHAのバリアントもSHA-256と同様の演算処理を通じて電子データのハッシュ値を生成する。尚、SHA-256によるハッシュ値の演算処理については後述する。
FIPS 180-4, Secure Hash Standard (SHS), 2015
ところで、電子データに秘密情報(例えば、個人情報)が含まれている場合には、個人情報保護法等を遵守する観点より電子データに含まれる秘密情報がマスキングされた上で、秘密情報がマスキングされた電子データが外部に一般公開される。このため、第三者は電子データに含まれる秘密情報を把握することはできない。
一方、電子データに紐づく非代替性トークン(NFT)が購入者により購入されたときに、NFTの購入特典としてマスキング前の電子データ(即ち、秘密情報を含む電子データ)が所定の装置から購入者に送信されるような場合がある。かかる場合では、購入者は、当該所定の装置がマスキング前の電子データを保有しているかどうかを検証することができないため、NFTの購入を躊躇してしまうことが想定される。このため、電子データに含まれる秘密情報が購入者によって把握されることなく、所定の装置が秘密情報を含む電子データを保有していることを購入者が検証できる新たな仕組みについて検討の余地がある。
さらに、データ生成装置によって演算された電子データのハッシュ値の透明性や信頼性を確保するために、当該ハッシュ値の妥当性が複数のデータ検証装置によって検証されることが好ましい。その一方で、電子データに秘密情報が含まれている場合には、個人情報保護法等の観点から複数のデータ検証装置間で秘密情報を含む電子データを共有することは困難となる。
また、秘密情報がマスキングされた電子データが複数のデータ検証装置に送信される場合でも、マスキング後の電子データからマスキング前の電子データのハッシュ値の妥当性をデータ検証装置側で検証することは困難となる。このように、秘密情報を含む電子データのハッシュ値の妥当性を複数のデータ検証装置により検証することが難しいといった課題が存在する。このように、電子データに含まれる秘密情報が外部に把握されることなく、当該電子データのハッシュ値の透明性や信頼性を高めることを可能とするための新たな仕組みについても検討の余地がある。
本開示は、上記観点に鑑み、電子データに含まれる秘密情報を保護しつつ、所定の装置が秘密情報を含む電子データを保有していることを検証可能な情報処理システム、データ生成装置、データ検証装置、情報処理方法、および情報処理プログラムを提供することを目的とする。さらに、本開示は、電子データに含まれる秘密情報を保護しつつ、当該電子データのハッシュ値の透明性や信頼性を高めることを可能とする情報処理システム、情報処理方法、および情報処理プログラムを提供することを目的とする。
本開示の一態様に係る情報処理システムは、データ生成装置と、データ検証装置とを備える。前記データ生成装置は、所定のハッシュ関数を用いて電子データのハッシュ値を演算し、前記電子データに含まれる秘密情報を決定し、前記秘密情報がマスキングされた電子データを生成し、前記マスキングされた電子データと前記ハッシュ値を外部に送信し、前記電子データを構成する複数のブロックのうち、前記秘密情報を含むブロックを決定し、前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを生成し、前記ハッシュ値検証用データを前記データ検証装置に送信する。前記データ検証装置は、前記マスキングされた電子データと、前記ハッシュ値を外部から受信し、前記データ生成装置から前記ハッシュ値検証用データを受信し、前記ハッシュ値検証用データに基づいて、前記電子データのハッシュ値を演算し、前記演算されたハッシュ値と前記受信したハッシュ値とを比較する。前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである。
上記構成によれば、ハッシュ値検証用データがデータ生成装置からデータ検証装置に送信された後、ハッシュ値検証用データに基づいて電子データのハッシュ値が演算された上で、演算されたハッシュ値と受信したハッシュ値とが比較される。このように、データ検証装置は、電子データに含まれる秘密情報を知ることなしに、データ生成装置が秘密情報を含む電子データを保有していることを検証することが可能となる。したがって、電子データに含まれる秘密情報を保護しつつ、データ生成装置が秘密情報を含む電子データを保有していることを検証可能な情報処理システムを提供することができる。例えば、データ流通市場においてマスキングされた画像データを購入した購入者は、マスキングされた秘密情報を知ることなしに、データ生成装置から受信したハッシュ値検証用データに基づいて、データ生成装置が秘密情報を含む電子データを保有していることを検証することが可能となる。
本開示の別の一態様に係る情報処理システムは、データ生成装置と、データ検証装置とを備える。前記データ生成装置は、所定のハッシュ関数を用いて電子データのハッシュ値を演算し、前記電子データに含まれる秘密情報を決定し、前記電子データを構成する複数のブロックのうち、前記秘密情報を含むブロックを決定し、前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを生成し、前記ハッシュ値検証用データと前記ハッシュ値を前記データ検証装置に送信する。前記データ検証装置は、前記データ生成装置から前記ハッシュ値検証用データと前記ハッシュ値を受信し、前記ハッシュ値検証用データに基づいて、前記電子データのハッシュ値を演算し、前記演算されたハッシュ値と前記受信したハッシュ値とを比較する。前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである。
上記構成によれば、データ検証装置は、ハッシュ値検証用データに基づいて、電子データのハッシュ値を演算し、演算されたハッシュ値と受信したハッシュ値とを比較する。このように、データ検証装置は、電子データに含まれる秘密情報を知ることなしに、データ生成装置によって演算された電子データのハッシュ値の妥当性を検証することが可能となる。したがって、電子データに含まれる秘密情報を保護しつつ、電子データのハッシュ値の透明性や信頼性を高めることが可能な情報処理システムを提供することができる。
前記中間ステートデータは、前記中間ハッシュ値を演算する過程における中間のステートと、前記秘密情報を含むブロックを構成するワードに基づいて新たに生成される複数のワードと、を含んでもよい。
また、前記中間ステートデータは、(N-1)番目のステートと、WからWN+Mまでのワードと、を含んでもよい。NとMは自然数であって、NはMよりも大きい。
また、前記所定のハッシュ関数は、SHA-256であってもよい。Nは、16以上48未満の自然数であり、Mは、15であってもよい。
また、前記データ検証装置は、前記ハッシュ値検証用データに含まれる前記秘密情報を含まないブロックに基づいて、前記秘密情報を含まないブロックの中間ハッシュ値を演算し、前記ハッシュ値検証用データに含まれる前記中間ステートデータに基づいて、前記秘密情報を含むブロックの中間ハッシュ値を演算し、前記秘密情報を含まないブロックの中間ハッシュ値と、前記秘密情報を含むブロックの中間ハッシュ値とに基づいて、前記電子データのハッシュ値を演算してもよい。
また、前記データ生成装置は、前記複数のブロックのうち第1ブロックが前記秘密情報を含む場合、前記第1ブロックに関連する中間ステートデータを生成すると共に、前記第1ブロックの第1中間ハッシュ値を演算し、前記複数のブロックのうち第2ブロックが前記秘密情報を含まない場合、前記第2ブロックの第2中間ハッシュ値を演算し、前記中間ステートデータと、前記第2ブロックとを含むハッシュ値検証用データを前記データ検証装置に送信してもよい。前記中間ステートデータは、(N-1)番目のステートと、WからWN+15までのワードと、を含んでもよい。Nは、16以上48未満の自然数であってもよい。前記データ検証装置は、前記データ生成装置から前記ハッシュ値検証用データを受信し、前記ハッシュ値検証用データに含まれる前記第2ブロックに基づいて、前記第2中間ハッシュ値を演算し、前記ハッシュ値検証用データに含まれる前記中間ステートデータのWからWN+15までの前記ワードに基づいて、WN+16からW63までのワードを生成し、WからW63までの前記ワードと、前記中間ステートデータの(N-1)番目のステートとに基づいて、前記第1中間ハッシュ値を演算し、前記第1中間ハッシュ値と前記第2中間ハッシュ値とに少なくとも基づいて、前記電子データのハッシュ値を演算してもよい。
本開示の一態様に係るデータ生成装置は、少なくとも一つのプロセッサと、コンピュータ可読命令を記憶するメモリと、を備える。前記コンピュータ可読命令が前記プロセッサにより実行されると、前記データ生成装置は、所定のハッシュ関数を用いて電子データのハッシュ値を演算し、前記電子データに含まれる秘密情報を決定し、前記秘密情報がマスキングされた電子データを生成し、前記マスキングされた電子データと前記ハッシュ値を外部に送信し、前記電子データを構成する複数のブロックのうち、前記秘密情報を含むブロックを決定し、前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを生成し、前記ハッシュ値検証用データを外部に送信する。前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである。
上記構成によれば、ハッシュ値検証用データが外部(例えば、データ検証装置)に送信されるため、データ検証装置は、電子データに含まれる秘密情報を知ることなしに、ハッシュ値検証用データに基づいて、データ生成装置が秘密情報を含む電子データを保有していることを検証することが可能となる。したがって、電子データに含まれる秘密情報を保護しつつ、データ生成装置が秘密情報を含む電子データを保有していることを検証可能とするデータ生成装置を提供することができる。
本開示の一態様に係るデータ検証装置は、少なくとも一つのプロセッサと、コンピュータ可読命令を記憶するメモリと、を備える。前記コンピュータ可読命令が前記プロセッサにより実行されると、前記データ検証装置は、秘密情報がマスキングされた電子データと、所定のハッシュ関数を通じて演算された前記電子データのハッシュ値を外部から受信し、前記電子データを構成する複数のブロックのうち前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを外部から受信し、前記ハッシュ値検証用データに基づいて、前記電子データのハッシュ値を演算し、前記演算されたハッシュ値と前記受信したハッシュ値とを比較する。前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである。
上記構成によれば、ハッシュ値検証用データに基づいてマスキングされた電子データのハッシュ値が演算された上で、演算されたハッシュ値と受信したハッシュ値との比較により、ハッシュ値検証用データの送信元(データ生成装置)が秘密情報を含む電子データを保有していることが検証される。このように、データ検証装置は、電子データに含まれる秘密情報を知ることなしに、ハッシュ値検証用データの送信元(データ生成装置)が秘密情報を含む電子データを保有していることを検証することが可能となる。
本開示の一態様に係る情報処理方法は、コンピュータによって実行され、所定のハッシュ関数を用いて電子データのハッシュ値を演算するステップと、前記電子データに含まれる秘密情報を決定するステップと、前記秘密情報がマスキングされた電子データを生成するステップと、前記マスキングされた電子データと前記ハッシュ値を外部に送信するステップと、前記電子データを構成する複数のブロックのうち、前記秘密情報を含むブロックを決定するステップと、前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを生成するステップと、前記ハッシュ値検証用データを外部に送信するステップと、を含む。前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである。
本開示の別の一態様に係る情報処理方法は、コンピュータによって実行され、秘密情報がマスキングされた電子データと、所定のハッシュ関数を通じて演算された前記電子データのハッシュ値を外部から受信するステップと、前記電子データを構成する複数のブロックのうち前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを外部から受信するステップと、前記ハッシュ値検証用データに基づいて、前記電子データのハッシュ値を演算するステップと、前記演算されたハッシュ値と前記受信したハッシュ値とを比較するステップと、を含む。前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである。
本開示の別の一態様に係る情報処理方法は、コンピュータによって実行され、所定のハッシュ関数を用いて電子データのハッシュ値を演算するステップと、前記電子データに含まれる秘密情報を決定するステップと、前記電子データを構成する複数のブロックのうち、前記秘密情報を含むブロックを決定するステップと、前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを生成するステップと、前記ハッシュ値検証用データと前記ハッシュ値を外部に送信するステップと、を含む。前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである。
本開示の別の一態様に係る情報処理方法は、コンピュータによって実行され、所定のハッシュ関数を通じて演算された電子データのハッシュ値とハッシュ値検証用データとを外部から受信するステップと、前記ハッシュ値検証用データに基づいて、前記電子データのハッシュ値を演算するステップと、前記演算されたハッシュ値と前記受信したハッシュ値とを比較するステップと、を含む。前記ハッシュ値検証用データは、秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含む。前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである。
また、前記情報処理方法をコンピュータに実行させる情報処理プログラムが提供されてもよい。
本開示によれば、電子データに含まれる秘密情報を保護しつつ、所定の装置が秘密情報を含む電子データを保有していることを検証可能な情報処理システム、データ生成装置、データ検証装置、情報処理方法、および情報処理プログラムを提供することができる。さらに、本開示によれば、電子データに含まれる秘密情報を保護しつつ、当該電子データのハッシュ値の透明性や信頼性を高めることを可能とする情報処理システム、情報処理方法、および情報処理プログラムを提供することができる。
本開示の実施形態(以下、本実施形態という。)に係る情報処理システムの構成を示す図である。 データ生成装置のハードウェア構成の一例を示す図である。 データ検証装置のハードウェア構成の一例を示す図である。 データ生成装置が秘密情報を含む電子データを保有していることを検証する一連の処理を説明するためのフローチャートである。 ハッシュ関数によって電子データのハッシュ値を演算する一連の処理を説明するためのフローチャートである。 ハッシュ関数によって電子データのハッシュ値を演算する一連の処理を説明するための図である。 圧縮関数のステートを繰り返し更新する処理を説明するためのフローチャートである。 圧縮関数によってブロックの中間ハッシュ値を演算する一連の処理を説明するための図である。 電子データに関連するハッシュ値検証用データを生成する一連の処理を説明するためのフローチャートである。 各ブロックに対して実行される一連の処理の流れを説明するための図である。 ハッシュ値検証用データに基づいてマスキングされた電子データのハッシュ値を演算する一連の処理を説明するためのフローチャートである。 ハッシュ値検証用データに基づいてマスキングされた電子データのハッシュ値を演算する一連の処理を説明するための図である。 中間ステートデータに基づいて秘密情報を含むブロックの中間ハッシュ値を演算する一連の処理を説明するための図である。 データ生成装置によって演算された電子データのハッシュ値の妥当性を検証する一連の処理を説明するためのフローチャートである。
以下、本実施形態に係る情報処理システム1について図面を参照しながら説明する。図1は、本実施形態に係る情報処理システム1を示す図である。図1に示すように、情報処理システム1は、データ生成装置2と、データ検証装置3と、IPFS(InterPlanetary File System)5とを備える。これらは通信ネットワーク4に接続されている。データ生成装置2は、通信ネットワーク4を介してデータ検証装置3と通信可能に接続されている。データ生成装置2とデータ検証装置3は、通信ネットワーク4を介してIPFS5に通信可能に接続されている。尚、図1に示す例では、単一のデータ検証装置3が図示されているが、複数のデータ検証装置3が情報処理システム1に設けられてもよい。
データ生成装置2は、所定のハッシュ関数(例えば、SHA-256)を用いて電子データD1のハッシュ値Hを演算すると共に、電子データD1に含まれる秘密情報(例えば、個人情報等)がマスキングされた電子データD2(マスキングされた電子データの一例)を生成するように構成されている。このように、データ生成装置2は、電子データD1に含まれる秘密情報を記憶していると共に、秘密情報を含む電子データD1のハッシュ値Hを演算可能となる。データ検証装置3は、電子データD1に含まれる秘密情報を知ることなしに、データ生成装置2が秘密情報を含む電子データD1を保有していることを検証するように構成されている。
電子データD1の種類は特に限定されるものではない。例えば、電子データD1は、画像データ(静止画像データ及び映像データを含む。)やテキストデータ(文書データ)であってもよい。
通信ネットワーク4は、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、無線コアネットワークのうちの少なくとも一つによって構成されている。IPFS5は、P2P(Peer to Peer)型ネットワーク(換言すれば、分散型ネットワーク)上で動作する分散型のストレージサービスである。本例では、電子データD2と電子データD1のハッシュ値HがIPFS5上に保存されてもよい。特に、IPFS5上に保存された電子データD2とハッシュ値Hは、ブロックチェーン(例えば、イーサリアム等)上に発行される非代替性トークン(NFT)に直接的又は間接的に関連付けられてもよい。
次に、図2を参照することで、データ生成装置2のハードウェア構成について以下に説明する。図2に示すように、データ生成装置2は、制御部20と、記憶装置21と、入出力インターフェース22と、通信部23と、入力操作部24と、表示部25とを備える。データ生成装置2を構成するこれらの要素は通信バス26に接続されている。
制御部20は、メモリとプロセッサを備えている。メモリは、コンピュータ可読命令(プログラム)を記憶するように構成されている。例えば、メモリは、各種プログラム等が格納されたROM(Read Only Memory)やプロセッサにより実行される各種プログラム等が格納される複数ワークエリアを有するRAM(Random Access Memory)等から構成される。各種プログラムには、本実施形態に係る一連の情報処理方法を実行する情報処理プログラムが含まれていてもよい。プロセッサは、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)及びGPU(Graphics Processing Unit)のうちの少なくとも一つにより構成される。CPUは、複数のCPUコアによって構成されてもよい。GPUは、複数のGPUコアによって構成されてもよい。プロセッサは、記憶装置31又はROMに組み込まれた各種プログラムから指定されたプログラムをRAM上に展開し、RAMとの協働で各種処理を実行するように構成されてもよい。特に、プロセッサは、記憶装置21又はROMに組み込まれた情報処理プログラムをRAM上に展開することで、後述する一連の情報処理を実行してもよい。
記憶装置21は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等の記憶装置(ストレージ)であって、プログラムや各種データを格納するように構成されている。入出力インターフェース22は、外部装置とデータ生成装置2との間の接続を可能とするインターフェースであって、USB規格やHDMI規格等の所定の通信規格に応じたインターフェースを含む。通信部23は、例えば、通信ネットワーク4に接続された外部装置と通信するための有線通信モジュール及び/又は無線通信モジュールを備えている。入力操作部24は、例えば、タッチパネル、タッチペン、マウス、及び/又はキーボード等である。入力操作部24は、データ生成装置2を操作する操作者の入力操作を受け付けると共に、当該入力操作に応じた操作信号を生成するように構成されている。表示部25は、例えば、液晶ディスプレイ又は有機ELディスプレイ等の映像表示ディスプレイと、当該映像表示ディスプレイを駆動制御する映像表示回路とによって構成される。
次に、図3を参照することで、データ検証装置3のハードウェア構成について以下に説明する。図3に示すように、データ検証装置3は、制御部30と、記憶装置31と、入出力インターフェース32と、通信部33と、入力操作部34と、表示部35とを備える。データ検証装置3を構成するこれらの要素は通信バス36に接続されている。制御部30と、記憶装置31と、入出力インターフェース32と、通信部33と、入力操作部34と、表示部35は、それぞれ上記した制御部20と、記憶装置21と、入出力インターフェース22と、通信部23と、入力操作部24と、表示部25と同様の構成を有してもよい。
この点において、制御部30は、メモリとプロセッサを備えている。メモリは、コンピュータ可読命令(プログラム)を記憶するように構成されている。プログラムには、本実施形態に係る一連の情報処理方法を実行する情報処理プログラムが含まれていてもよい。プロセッサは、例えば、CPU、MPU及びGPUのうちの少なくとも一つにより構成される。プロセッサは、記憶装置31又はROMに組み込まれた情報処理プログラムをRAM上に展開することで、後述する一連の情報処理を実行してもよい。
(第一実施形態:データ生成装置2が秘密情報を含む電子データD1を保有していることを検証する一連の処理)
次に、図4を参照して、データ生成装置2が秘密情報を含む電子データD1を保有していることを検証する一連の処理について以下に説明する。図4は、データ生成装置2が秘密情報を含む電子データD1を保有していることを検証する一連の処理を説明するためのフローチャートである。図4に示すように、ステップS1において、データ生成装置2は、ハッシュ関数200を用いて電子データD1のハッシュ値Hを演算する。本例では、ハッシュ関数200としてSHA-256が採用されているが、ハッシュ関数200の種類は特に限定されるものではない。
次に、図5から図8を参照することで、ハッシュ関数としてSHA-256を用いて電子データD1のハッシュ値Hを演算するための具体的な一連の処理について以下に詳しく説明する。図5は、ハッシュ関数200(SHA-256)によって電子データD1のハッシュ値Hを演算する一連の処理を説明するためのフローチャートである。図6は、ハッシュ関数200によって電子データD1のハッシュ値Hを演算する一連の処理を説明するための図である。図7は、圧縮関数203のステートを繰り返し更新する処理を説明するためのフローチャートである。図8は、圧縮関数203によってブロックの中間ハッシュ値を演算する一連の処理を説明するための図である。
図5に示すように、ステップS21において、データ生成装置2は、電子データD1を複数のブロック(本例では、4つのブロック)に分割する。具体的には、図6に示すように、電子データD1がメッセージとしてメモリにロードされる。メモリにロードされた当該メッセージの配列は、二進数一次元配列となっている。次に、メッセージにパディングを付加することでメッセージのビット長が拡張される。パディングが付加されたメッセージのビット長は、512bitの整数倍となる。その後、パディングが付加されたメッセージが複数のブロック(本例では、4つのブロック)に分割される。各ブロックのビット長は、512bitとなる。
次に、ステップS22からS25の処理を通じて各ブロックの中間ハッシュ値が圧縮関数203によって演算される。図6に示すように、ハッシュ関数200には4つの圧縮関数203が含まれている。4つのブロックの各々を構成するワードW~W15が4つの圧縮関数203のうちの対応する一つに入力される。この結果、各ブロックの中間ハッシュ値が対応する圧縮関数203によって演算される。ここで、各ブロックは、16個のワードW~W15によって構成されており、各ワードのビット長は、32bitとなる。
例えば、0番目のブロックの中間ハッシュ値を演算する処理について以下に説明する。ステップS22において、データ生成装置2は、0番目のブロック(ブロック[0])を構成するワードW~W15を抽出する。次に、データ生成装置2は、ワードW~W15に基づいて、ワードW16~W63を演算する(ステップS23)。例えば、ワードW16~W63は以下の式(1)に基づいて演算されてもよい。式(1)中のσ,σは、ビット演算用の任意の関数である。

=σ(Wt‐2)+Wt‐7+σ(Wt‐15)+Wt‐16 ・・・(1)
次に、ステップS24において、データ生成装置2は、ワードW~W63の64個のワードに基づいて、圧縮関数203の内部で保持される値であるステートを64回更新する。図7及び図8を参照することで、ステップS24のステートの更新処理について詳しく説明する。図7に示すように、ステップS31において、データ生成装置2は、圧縮関数203のステートを初期化する。具体的には、ステートが8つの変数a~aによって構成される場合、データ生成装置2は、初期ハッシュ値若しくは前ブロックの中間ハッシュ値に基づいて、ステートを構成する変数a~aを初期化する。ここで、初期ハッシュ値は、任意の値である。0番目のブロックの中間ハッシュ値が演算される場合には、初期ハッシュ値に基づいてステートを構成する各変数が初期化される。また、1番目のブロックの中間ハッシュ値が演算される場合には、0番目のブロックの中間ハッシュ値に基づいてステートを構成する各変数が初期化される。
次に、ステップS32において、データ生成装置2は、t番目のワードWに基づいてステートを更新する。具体的には、データ生成装置2は、0番目のワードWに基づいてステートを構成する変数a~aを更新することで、ステート0を演算する。次に、データ生成装置2は、ワードWに基づいてステート0を構成する変数a~aを更新することで、ステート1を演算する。このように、ワードW~W63の64個のワードを用いてステートが繰り返し更新された上で、最終的にステート63が導出される。
t番目のワードWに基づいてステートを構成する変数a~aを更新する方法の一例について以下に説明する。最初に、以下の式(2)、(3)に基づいて、T1とT2とを算出する。式(2)、(3)中において、Ch、Maj、Σ、Σはビット演算用の任意の関数である。Kは定数である。

=a+Σ(a)+Ch(a,a,a)+K+W ・・・(2)
=Σ(a)+Maj(a,a,a) ・・・(3)
次に、T1とT2とを用いてステートを構成する変数a~aが更新される。より具体的には、以下式(4)に基づいてステートを構成する変数a~aが更新される。式(4)中において、“a7=a6”とは、a6の値がa7に代入されることを意味する点に留意されたい。また、式(4)では、aからaの順番で値が更新される。つまり、最初にaの値が更新され、最後にaの値が更新される。

=a
=a
=a
=a+T
=a
=a
=a
=T+T ・・・(4)
次に、データ生成装置2は、各ワードに基づいてステートを64回更新した後に、前ブロックの中間ハッシュ値若しくは初期ハッシュ値と、ステート63とに基づいて中間ハッシュ値を演算する(図5のステップS25)。この点において、0番目のブロックでは、初期ハッシュ値とステート63に基づいて0番目のブロックの中間ハッシュ値が演算される。また、1番目のブロック(ブロック[1])では、0番目のブロックの中間ハッシュ値とステート63に基づいて1番目のブロックの中間ハッシュ値が演算される。同様に、2番目のブロック(ブロック[2])では、1番目のブロックの中間ハッシュ値とステート63に基づいて2番目のブロックの中間ハッシュ値が演算される。3番目のブロック(ブロック[3])では、2番目のブロックの中間ハッシュ値とステート63に基づいて3番目のブロックの中間ハッシュ値が演算される。
例えば、初期ハッシュ値若しくは前ブロックの中間ハッシュ値が変数H~Hにより構成される場合、ステート63の変数a~aと初期ハッシュ値若しくは前ブロックの中間ハッシュ値の変数H~Hに基づいて、対象ブロックの中間ハッシュ値が演算される。より具体的には、以下式(5)に基づいて、変数Hi(i=0,1,・・・,7)が更新される。

=H+a ・・・(5)
このように、変数H~Hの各々に変数a~aのうちの対応する一つが加算されることで変数H~Hが更新される。更新された変数H~Hを連結することで対象ブロックの中間ハッシュ値が演算される。
0番目のブロックの中間ハッシュ値が演算された後に、1番目のブロックの中間ハッシュ値がステップS22からS25の処理を通じて演算される。さらに、最終ブロックである3番目のブロックの中間ハッシュ値が演算されたときに、データ生成装置2は、最終ブロックであるブロック[3]の中間ハッシュ値を電子データD1のハッシュ値Hとして決定する(ステップS26)。このように、複数の圧縮関数203を有するハッシュ関数200(SHA-256)を用いて電子データD1のハッシュ値Hが演算される。
次に、図4に戻ると、ステップS2において、データ生成装置2は、電子データD1に含まれる秘密情報を決定する。秘密情報は、個人情報であってもよい。例えば、データ生成装置2は、入力操作部24(タッチペンやマウス等)に対する操作者の入力操作に応じて、電子データD1に含まれる秘密情報を決定してもよい。電子データD1が画像データである場合、操作者は、入力操作部24を通じて画像データに含まれる秘密情報を指定してもよい。また、データ生成装置2は、所定のプログラムや学習済みモデルに基づいて、電子データD1に含まれる秘密情報を自動的に特定してもよい。
次に、ステップS3において、データ生成装置2は、電子データD1に含まれる秘密情報をマスキングすることで、秘密情報がマスキングされた電子データD2を生成する。秘密情報に対するマスキング処理は特に限定されるものではない。例えば、マスキング処理は、ハッシュ関数等の一方向性関数を用いたデータマスキング処理等であってもよい。
次に、ステップS4において、データ生成装置2は、マスキングされた電子データD2と電子データD1のハッシュ値Hを外部に送信する。ここで、ハッシュ値Hは、データ生成装置2に紐づく秘密鍵で暗号化されてもよい。この場合、当該秘密鍵に対応する公開鍵により暗号化されたハッシュ値Hを復号することができるため、当該公開鍵に紐づく電子証明書により電子データD2の発行元を検証することが可能となる。
本例では、データ生成装置2は、通信ネットワーク4を介して電子データD2とハッシュ値H(特に、暗号化されていないハッシュ値H)をIPFS5に送信してもよい。この場合、IFPS5上に電子データD2とハッシュ値Hが保存される。また、データ流通市場における電子データD2の流動性を確保するために、電子データD2及びハッシュ値Hに直接的又は間接的に関連付けられた非代替性トークン(NFT)がブロックチェーン上に発行されてもよい。さらに、ハッシュ値Hおよび電子データD2の保存場所を示すアドレス情報がNFTのメタデータとしてIPFS5上に保存されてもよい。この結果、電子データD2とNFTとが互いに関連付けられる。
ステップS4の処理では、電子データD2とハッシュ値HがIPFS5に送信されているが、電子データD2とハッシュ値Hは、通信ネットワーク4を介してデータ生成装置2からデータ検証装置3に送信されてもよい。さらに、電子データD2とハッシュ値Hは、通信ネットワーク4を介さずにデータ生成装置2からデータ検証装置3に送信されてもよい。この場合、電子データD2とハッシュ値Hは、USBメモリ等の外部記憶媒体を介してデータ生成装置2からデータ検証装置3に送信されてもよい。
次に、ステップS5において、データ検証装置3は、マスキングされた電子データD2とハッシュ値Hを受信する。この場合、データ検証装置3は、IPFS5から通信ネットワーク4を介して電子データD2とハッシュ値Hを取得してもよいし、データ生成装置2から直接的又は間接的に電子データD2とハッシュ値Hを取得してもよい。例えば、データ検証装置3に関連付けられた操作者は、電子データD2に関連付けられたNFTを購入する購入予定者であってもよい。
以降の説明では、データ検証装置3を操作する操作者は、電子データD2に関連付けられたNFTをデータ生成装置2の管理者から購入するものとする。データ検証装置3を操作する操作者は、NFTを購入した場合に、NFTの購入特典として、データ生成装置2から秘密情報を含む電子データD1を取得することができる。その一方で、当該操作者は、データ生成装置2が電子データD1を保有しているかどうかが分からないため、NFTを購入する前にデータ生成装置2が電子データD1を保有していることを検証する。
データ生成装置2が電子データD1を保有しているかどうかを検証するために、データ検証装置3は、ハッシュ値検証用データPの送信要求を通信ネットワーク4を介してデータ生成装置2に送信する(ステップS6)。尚、本例では、ハッシュ値検証用データPの送信要求がデータ検証装置3から送信された上で、当該送信要求に応じてハッシュ値検証用データPがデータ検証装置3に送信されるが、本実施形態はこれに限定されるものではない。この点において、データ生成装置2は、当該送信要求を受信せずにハッシュ値検証用データPをデータ検証装置3に送信してもよい。
ステップS7において、データ生成装置2は、電子データD1を複数のブロック(本例では、4つのブロック)に分割する。具体的には、図10に示すように、電子データD1がメッセージとしてメモリにロードされる。メモリにロードされた当該メッセージの配列は、二進数一次元配列となっている。次に、メッセージにパディングを付加することでメッセージのビット長が拡張される。パディングが付加されたメッセージのビット長は、512bitの整数倍となる。その後、パディングが付加されたメッセージが複数のブロック(本例では、4つのブロック)に分割される。各ブロックのビット長は、512bitとなる。また、各ブロックは、16個のワードW~W15によって構成されており、各ワードのビット長は、32bitとなる。尚、本例では、説明の便宜上、電子データD1は4つのブロックに分割されているが、電子データD1のビット長に応じてブロック数は異なる。
ステップS8において、データ生成装置2は、電子データD1を構成する複数のブロックのうち秘密情報を含むブロックを決定する。この点において、データ生成装置2は、マスキング前の電子データD1に含まれる秘密情報がどのブロックに存在しているかを把握できるため、電子データD1を構成する複数のブロックのうち秘密情報を含むブロックを決定することができる(図10参照)。例えば、データ生成装置2は、電子データD1を構成する複数のブロックのうち0番目と2番目のブロックに秘密情報が含まれていることを決定する。
次に、ステップS9において、データ生成装置2は、ハッシュ値検証用データPを生成する。ハッシュ値検証用データPは、秘密情報を含んでいない一方で、電子データD1のハッシュ値Hを演算することを可能にするデータである。換言すれば、ハッシュ値検証用データPは、秘密情報を隠した状態で秘密情報を含む電子データD1のハッシュ値Hを演算することを可能にする。ハッシュ値検証用データPは、秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロック(当該ブロックを構成する複数のワード)とを含む。本例では、図10に示すように、ハッシュ値検証用データPは、秘密情報を含むブロック[0]とブロック[2]に関連する中間ステートデータと、秘密情報を含まないブロック[1]とブロック[3]とを含む。ハッシュ値検証用データPは、Partially Executed N-th round Intermediate State(PENIS)と呼称されてもよい。
次に、図9及び図10を参照することで、圧縮関数203と圧縮関数205とを有するハッシュ関数300を用いてハッシュ値検証用データPを生成するための具体的な一連の処理について以下に詳しく説明する。図9は、電子データD1に関連するハッシュ値検証用データPを生成する一連の処理を説明するためのフローチャートである。図10は、各ブロックに対して実行される一連の処理の流れを説明するための図である。
図10に示すハッシュ関数300は、圧縮関数205が使用される点で図6に示すハッシュ関数200と相違する。ハッシュ関数300は、2つの圧縮関数203と、2つの圧縮関数205を有している。4つのブロックのうち秘密情報を含まないブロック[1]とブロック[3]を構成するワードW~W15のそれぞれが対応する圧縮関数203に入力される。この結果、ブロック[1]とブロック[3]のそれぞれの中間ハッシュ値が対応する圧縮関数203によって演算される。その一方、秘密情報を含むブロック[0]とブロック[2]を構成するワードW~W15のそれぞれが対応する圧縮関数205に入力される。この結果、ブロック[0]とブロック[2]のそれぞれの中間ハッシュ値と中間ステートデータが対応する圧縮関数205によって演算される。このように、圧縮関数205は、秘密情報を含むブロックに関する中間ステートデータを生成する点で圧縮関数203とは相違する。
中間ステートデータは、ハッシュ関数(より具体的には、ハッシュ関数を構成する圧縮関数)を通じて秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである。本例では、ブロック[0]の中間ステートデータは、ハッシュ関数300を構成する圧縮関数205を通じてブロック[0]の中間ハッシュ値を演算する過程において生成されるものである。より具体的には、ブロック[0]の中間ステートデータは、ブロック[0]に関連付けられた圧縮関数205の(N-1)番目のステートと、ブロック[0]を構成するワードW~W15に基づいて演算されるWからWN+15までのワードとを含む。Nは、16以上48未満の自然数であってもよい。同様に、ブロック[2]の中間ステートデータは、ハッシュ関数300を構成する圧縮関数205を通じてブロック[2]の中間ハッシュ値を演算する過程において生成されるものである。より具体的には、ブロック[2]の中間ステートデータは、ブロック[2]に関連付けられた圧縮関数205の(N-1)番目のステートと、ブロック[2]を構成するワードW~W15に基づいて演算されるWからWN+15までのワードとを含む。
図9に示すように、ステップS41からS44の処理を通じて各ブロックの中間ハッシュ値と秘密情報を含むブロックの中間ステートデータが演算される。ステップS41において、i番目のブロックが秘密情報を含むかどうかが判定される。i番目のブロックが秘密情報を含まない場合(ステップS41でNo)、データ生成装置2は、圧縮関数203を用いてi番目のブロックの中間ハッシュ値を演算する。一方、i番目のブロックが秘密情報を含む場合(ステップS41でYes)、データ生成装置2は、圧縮関数205を用いてワードW~WN+15および(N‐1)番目のステートを含む中間ステートデータを生成する(ステップS42)。さらに、データ生成装置2は、圧縮関数205を用いてi番目のブロックの中間ハッシュ値を演算する。このように、秘密情報を含まないブロックに対してはステップS44の処理が実行されることで当該ブロックの中間ハッシュ値が演算される一方、秘密情報を含むブロックに対してはステップS41~S43の処理が実行されることで当該ブロックの中間ステートデータと中間ハッシュ値が演算される。また、最終ブロックの中間ハッシュ値が電子データD2のハッシュ値Hとして決定される。尚、各ブロックの中間ハッシュ値の演算処理は、図5で説明された中間ハッシュ値の演算処理と同様である。
例えば、0番目のブロック[0]の中間ステートデータと中間ハッシュ値を演算する処理について以下に説明する。ブロック[0]は秘密情報を含むため、データ生成装置2は、圧縮関数205を用いてワードW~WN+15および(N-1)番目のステートを含む中間ステートデータを生成する(ステップS42)。具体的には、データ生成装置2は、秘密情報を含むブロック[0]を構成するワードW~W15を抽出した上で(尚、ブロック[0]を構成するワードW~W15は電子データD1のブロック[0]を構成するワードW~W15に相当する)、上記式(1)に基づいてワードW~W15からワードW16~W63を演算する。次に、データ生成装置2は、ワードW~W63の64個のワードに基づいて、圧縮関数205の内部で保持される値であるステートを64回更新する。ステートの更新処理の間において、データ生成装置2は、(N-1)番目のステートの値を保存する。このように、データ生成装置2は、ワードW16~W63からワードW~WN+15を抽出した上で、ワードW~WN+15および(N-1)番目のステートを含む中間ステートデータを生成する。尚、ステートの更新処理は、図7及び図8を参照して説明されたステートの更新処理と同様である。また、ステートの初期化も同様に、初期ハッシュ値若しくは前ブロックの中間ハッシュ値に基づいて、ステートを構成する変数a~aが初期化される。
ステップS43において、データ生成装置2は、初期ハッシュ値とステート63に基づいてブロック[0]の中間ハッシュ値を演算する。中間ハッシュ値の具体的な演算処理は、上記したものと同様である(式(5)を参照)。即ち、データ生成装置2は、ステート63の変数a~aと初期ハッシュ値の変数H~Hに基づいて、ブロック[0]の中間ハッシュ値を演算する。
このように、データ生成装置2は、秘密情報を含むブロック[0]とブロック[2]に関連する中間ステートデータと、秘密情報を含まないブロック[1]とブロック[3](より具体的には、ブロック[1]と[3]を構成する各ワードW~W15)とを含むハッシュ値検証用データPを生成することができる。ここで、ハッシュ値検証用データPは秘密情報を含んでいない。この点において、中間ステートデータは、ブロック[0]とブロック[2]を構成するワードを含まないため、秘密情報を含まないこととなる。即ち、中間ステートデータを構成するワードW~WN+15および(N-1)番目のステートからではブロック[0]とブロック[2]を構成するワードを導出することは困難となる。さらに、ブロック[1]とブロック[3]は秘密情報を含まないブロックである。
図4に戻ると、ステップS10おいて、データ生成装置2は、ハッシュ値検証用データPを通信ネットワーク4を介してデータ検証装置3に送信する。尚、ハッシュ値検証用データPは、通信ネットワーク4を介さずにデータ生成装置2からデータ検証装置3に送信されてもよい。この場合、ハッシュ値検証用データPは、USBメモリ等の外部記憶装置を介してデータ生成装置2からデータ検証装置3に送信されてもよい。
ステップS11において、データ検証装置3は、データ生成装置2から受信したハッシュ値検証用データPに基づいて、電子データD1のハッシュ値Hを演算する。本実施形態では、秘密情報がデータ検証装置3によって知られない状態で、データ検証装置3がハッシュ値検証用データに基づいて電子データD1のハッシュ値Hを演算することができる。
電子データD1のハッシュ値Hを演算する具体的な処理について図11及び図12を参照して以下に説明する。図11は、ハッシュ値検証用データPに基づいて電子データD1のハッシュ値Hを演算する一連の処理を説明するためのフローチャートである。図12は、ハッシュ値検証用データPに基づいて電子データD1のハッシュ値Hを演算する一連の処理を説明するための図である。図13は、中間ステートデータに基づいて秘密情報を含むブロックの中間ハッシュ値を演算する一連の処理を説明するための図である。
図12に示すハッシュ関数400は、圧縮関数207が使用される点で図6に示すハッシュ関数200と相違する。ハッシュ関数400は、2つの圧縮関数203と、2つの圧縮関数207を有している。4つのブロックのうち秘密情報を含まないブロック[1]とブロック[3]を構成するワードW~W15のそれぞれが対応する圧縮関数203に入力される。この結果、ブロック[1]とブロック[3]のそれぞれの中間ハッシュ値が対応する圧縮関数203によって演算される。その一方、秘密情報を含むブロック[0]とブロック[2]の中間ステートデータのそれぞれが対応する圧縮関数207に入力される。この結果、ブロック[0]とブロック[2]のそれぞれの中間ハッシュ値が対応する圧縮関数207によって演算される。このように、圧縮関数207は、中間ステートデータに基づいてブロックの中間ハッシュ値を演算する点で圧縮関数203とは相違する。
図11に示すように、ステップS51からS55の処理を通じてハッシュ値検証用データPに基づいて電子データD1のハッシュ値Hが演算される。ステップS51において、データ検証装置3は、ハッシュ値検証用データPに含まれたi番目のデータが中間ステートデータであるかどうかを判定する。例えば、データ検証装置3は、i番目のデータのビット長等に少なくとも基づいて、i番目のデータが中間ステートデータであるか又は秘密情報を含まないブロックであるかを判定してもよい。
i番目のデータが中間ステートデータではない場合(ステップS51でNo)、それは秘密情報を含まないブロックであるので、データ検証装置3は、圧縮関数203を用いることでi番目のブロックを構成するワードW~W15に基づいて、i番目のブロックの中間ハッシュ値を演算する(ステップS55)。尚、i番目のブロックの中間ハッシュ値の演算処理は、図5で説明された中間ハッシュ値の演算処理と同様である。
一方、i番目のデータが中間ステートデータである場合(ステップS51でYes)、それは秘密情報を含むブロックであるので、データ検証装置3は、圧縮関数207を用いることで、中間ステートデータに含まれるワードW~WN+15に基づいて、WN+16からW63までのワードを演算する(ステップS52)。ワードW~WN+15が分かっていれば、上記式(1)に基づいてWN+16からW63までのワードを演算することが可能となる。
次に、データ検証装置3は、ワードW~W63と、(N-1)番目のステートとに基づいて、圧縮関数207のステートを(64-N)回更新する(ステップS53)。図13に示すように、データ検証装置3は、(N-1)番目のステートと、ワードWとに基づいて、ステートNを演算する。さらに、N番目のステートと、ワードWN+1とに基づいて、ステート(N+1)が演算される。このように、ステートが繰り返し更新されることで、最終的に63番目のステートであるステート63が演算される。
次に、データ検証装置3は、63番目のステートであるステート63と、(i-1)番目のブロックの中間ハッシュ値若しくは初期ハッシュ値とに基づいて、i番目のブロックの中間ハッシュ値を演算する(ステップS54)。この点において、0番目のブロックでは、初期ハッシュ値とステート63に基づいて0番目のブロックの中間ハッシュ値が演算される。一方、i番目(i≧1)のブロックでは、(i-1)番目のブロックの中間ハッシュ値とステート63に基づいてi番目のブロックの中間ハッシュ値が演算される。尚、ハッシュ関数400により保持される初期ハッシュ値は、ハッシュ関数200により保持される初期ハッシュ値及びハッシュ関数300により保持される初期ハッシュ値と同じ値となる。また、中間ハッシュ値の具体的な演算処理は、上記したものと同様である(式(5)を参照)。
i番目のブロックの中間ハッシュ値が演算された後に、(i+1)番目のブロックの中間ハッシュ値の演算が行われる。このように、0番目のブロックから最終ブロック(本例では、3番目のブロック)までの中間ハッシュ値が演算された後に、データ検証装置3は、最終ブロックであるブロック[3]の中間ハッシュ値を電子データD1のハッシュ値Hとして決定する。
図4に戻ると、ステップS12において、データ検証装置3は、演算された電子データD1のハッシュ値Hと、外部から受信した電子データD1のハッシュ値Hとを比較することで、データ生成装置2が電子データD1を保有しているかどうかを検証する。例えば、演算されたハッシュ値Hと外部から受信したハッシュ値Hが互いに一致する場合には、データ検証装置3は、データ生成装置2が電子データD1を保有していると決定する。一方で、両者が不一致の場合には、データ検証装置3は、電子データD2はデータ生成装置2が電子データD1を保有していないと決定する。
次に、データ検証装置3は、データ生成装置2が電子データD1を保有していると決定した場合に、電子データD1に紐づくNFTの購入処理を実行する(ステップS13)。具体的には、データ検証装置3は、NFTを管理するスマートコントラクト、NFTマーケットプレイス、若しくはデータ生成装置2の管理者宛にNFTの購入代金に相当する暗号資産を送金するためのトランザクションをブロックチェーンネットワークに送信する。その後、ブロックチェーンネットワークを構成する各ノードによって当該トランザクションが検証された上で、当該トランザクションが各ノードのブロックチェーン上に記録される。次に、スマートコントラクト、NFTマーケットプレイス、若しくはデータ生成装置2の管理者は、NFTの所有者をデータ生成装置2の管理者(NFTの販売者)からデータ検証装置3の操作者(NFTの購入者)に変更するためのトランザクションをブロックチェーンネットワークに送信する。その後、各ノードによって当該トランザクションが検証された上で、当該トランザクションが各ノードのブロックチェーン上に記録される。
ステップS14において、データ生成装置2は、NFTの購入の特典として、秘密情報を含む電子データD1をデータ検証装置3に送信する。このように、データ検証装置3の操作者は、NFTの購入特典として、秘密情報を含む電子データD1を取得することができる。
第一実施形態によれば、ハッシュ値検証用データPがデータ生成装置2からデータ検証装置3に送信された後、ハッシュ値検証用データPに基づいて電子データD1のハッシュ値Hが演算された上で、演算されたハッシュ値Hと受信したハッシュ値Hとが比較される。このように、データ検証装置3は、マスキングされた秘密情報を知ることなしに、当該比較結果に基づいてデータ生成装置2が秘密情報を含む電子データD1を保有していることを検証することができる。したがって、マスキングされた秘密情報を保護しつつ、データ生成装置2が秘密情報を含む電子データD1を保有していることを検証可能な情報処理システム1を提供することができる。例えば、電子データD2に紐づくNFTの購入特典として秘密情報を含む電子データD1が取得できる場合において、NFTの購入予定者は、当該NFTの購入前において、ハッシュ値検証用データPに基づいてデータ生成装置2が電子データD1を保有しているかどうかを検証することができるため、安心してNFTを購入することができる。
(第二実施形態:データ生成装置2によって演算された電子データのハッシュ値の妥当性を検証する一連の処理)
次に、図14を参照して、データ生成装置2によって演算された電子データD1のハッシュ値Hの妥当性を検証する一連の処理について以下に説明する。図14は、データ生成装置2によって演算された電子データD1のハッシュ値Hの妥当性を検証する一連の処理を説明するためのフローチャートである。第二実施形態では、データ生成装置2によって演算された電子データD1のハッシュ値Hの妥当性を検証する目的でハッシュ値検証用データが用いられる点で第一実施形態とは相違する。このため、第二実施形態では、電子データD1のハッシュ値Hとハッシュ値検証用データPがデータ生成装置2からデータ検証装置3に送信される。
図14に示すように、ステップS61において、データ生成装置2は、所定のハッシュ関数を用いて電子データD1のハッシュ値Hを演算する。本例でも同様に、所定のハッシュ関数としてSHA-256が採用されているが、所定のハッシュ関数の種類は特に限定されるものではない。ハッシュ値Hの演算方法は、図5で説明された演算方法と同様である。
次に、ステップS62において、データ生成装置2は、電子データD1に含まれる秘密情報を決定する。上記したように、データ生成装置2は、入力操作部24に対する操作者の入力操作に応じて、電子データD1に含まれる秘密情報を決定してもよい。
ステップS63において、データ生成装置2は、電子データD1を複数のブロック(本例では、4つのブロック)に分割する。具体的には、図10に示すように、電子データD1がメッセージとしてメモリにロードされる。メモリにロードされた当該メッセージの配列は、二進数一次元配列となっている。次に、メッセージにパディングを付加することでメッセージのビット長が拡張される。パディングが付加されたメッセージのビット長は、512bitの整数倍となる。その後、パディングが付加されたメッセージが複数のブロック(本例では、4つのブロック)に分割される。各ブロックのビット長は、512bitとなる。
ステップS64において、データ生成装置2は、電子データD1を構成する複数のブロックのうち秘密情報を含むブロックを決定する。ステップS65において、データ生成装置2は、ハッシュ値検証用データPを生成する。ハッシュ値検証用データPは、秘密情報を含んでいない一方で、電子データD1のハッシュ値Hを演算することを可能にするデータである。換言すれば、ハッシュ値検証用データPは、秘密情報を隠した状態で秘密情報を含む電子データD1のハッシュ値Hを演算することを可能にする。
第二実施形態におけるハッシュ値検証用データPは、秘密情報を含むブロックに関連する中間ステートデータと、秘密情報を含まないブロック(当該ブロックを構成する複数のワード)とを含む。本例では、図10に示すように、ハッシュ値検証用データPは、秘密情報を含むブロック[0]とブロック[2]に関連する中間ステートデータと、秘密情報を含まないブロック[1]とブロック[3]を構成する各ワードW~W15とを含む。
中間ステートデータは、ハッシュ関数(より具体的には、ハッシュ関数を構成する圧縮関数)を通じて秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである。本例では、ブロック[0]の中間ステートデータは、ハッシュ関数300を構成する圧縮関数205(図10参照)を通じてブロック[0]の中間ハッシュ値を演算する過程において生成されるものである。より具体的には、ブロック[0]の中間ステートデータは、ブロック[0]に関連付けられた圧縮関数205の(N-1)番目のステートと、ブロック[0]を構成するワードW~W15に基づいて演算されるWからWN+15までのワードとを含む。Nは、16以上48未満の自然数であることが好ましい。同様に、ブロック[2]の中間ステートデータは、ハッシュ関数300を構成する圧縮関数205を通じてブロック[2]の中間ハッシュ値を演算する過程において生成されるものである。より具体的には、ブロック[2]の中間ステートデータは、ブロック[2]に関連付けられた圧縮関数205の(N-1)番目のステートと、ブロック[2]を構成するワードW~W15に基づいて演算されるWからWN+15までのワードとを含む。
ハッシュ値検証用データPの生成方法は、図9で説明されたものと同様である。次に、ステップS66において、データ生成装置2は、ハッシュ値検証用データPおよび電子データD1のハッシュ値Hを通信ネットワーク4を介してデータ検証装置3に送信する。尚、ハッシュ値検証用データPおよびハッシュ値Hは、通信ネットワーク4を介さずにデータ生成装置2からデータ検証装置3に送信されてもよい。この場合、ハッシュ値検証用データP及びハッシュ値Hは、USBメモリ等の外部記憶装置を介してデータ生成装置2からデータ検証装置3に送信されてもよい。
ステップS67において、データ検証装置3は、データ生成装置2から受信したハッシュ値検証用データPに基づいて、電子データD1のハッシュ値Hを演算する。本実施形態では、秘密情報がデータ検証装置3によって知られない状態で、データ検証装置3が電子データD1のハッシュ値Hの妥当性を検証することができる。電子データD1の演算方法は、図11及び図12で説明されたものと同様である。
即ち、データ検証装置3は、図11に示すように、ステップS51からS55の処理を通じてハッシュ値検証用データPに基づいて電子データD1のハッシュ値Hを演算する。ステップS51において、データ検証装置3は、ハッシュ値検証用データPに含まれたi番目のデータが中間ステートデータであるかどうかを判定する。
次に、i番目のデータが中間ステートデータではない場合(ステップS51でNo)、データ検証装置3は、ハッシュ関数400に含まれる圧縮関数203(図12参照)を用いることでi番目のブロックを構成するワードW~W15に基づいて、i番目のブロックの中間ハッシュ値を演算する(ステップS55)。一方、i番目のデータが中間ステートデータである場合(ステップS51でYes)、データ検証装置3は、ハッシュ関数400に含まれる圧縮関数207(図12参照)を用いることで、中間ステートデータに含まれるワードW~WN+15に基づいて、WN+16からW63までのワードを演算する(ステップS52)。
次に、データ検証装置3は、ワードW~W63と、(N-1)番目のステートとに基づいて、圧縮関数207のステートを(64-N)回更新する(ステップS53)。このように、ステートが繰り返し更新されることで、ステート63が最終的に演算される。その後、データ検証装置3は、63番目のステートであるステート63と、(i-1)番目のブロックの中間ハッシュ値若しくは初期ハッシュ値とに基づいて、i番目のブロックの中間ハッシュ値を演算する(ステップS54)。
i番目のブロックの中間ハッシュ値が演算された後に、(i+1)番目のブロックの中間ハッシュ値の演算が行われる。このように、0番目のブロックから最終ブロック(本例では、3番目のブロック)までの中間ハッシュ値が演算された後に、データ検証装置3は、最終ブロックであるブロック[3]の中間ハッシュ値を電子データD1のハッシュ値Hとして決定する。
図14に戻ると、ステップS68において、データ検証装置3は、演算されたハッシュ値Hと、データ生成装置2から受信したハッシュ値Hとを比較することで、データ生成装置2によって演算されたハッシュ値Hの妥当性を検証する。例えば、演算されたハッシュ値Hと受信したハッシュ値Hが互いに一致する場合には、データ検証装置3は、データ生成装置2によって演算されたハッシュ値H(即ち、受信したハッシュ値H)は妥当であると決定する。一方で、演算されたハッシュ値Hと受信したハッシュ値Hが互いに不一致の場合には、データ検証装置3は、データ生成装置2によって演算されたハッシュ値Hは妥当ではないと決定する。
第二実施形態によれば、データ検証装置3は、ハッシュ値検証用データPに基づいて、電子データD1のハッシュ値Hを演算し、演算されたハッシュ値Hと受信したハッシュ値Hとを比較する。このように、データ検証装置3は、電子データD1に含まれる秘密情報を知ることなしに、データ生成装置2によって演算された電子データD1のハッシュ値Hの妥当性を検証することが可能となる。このように、データ検証装置3がデータ生成装置2によって演算されたハッシュ値Hの妥当性を検証することで、秘密情報を保護しつつ、電子データD1のハッシュ値Hの透明性や信頼性を高めることが可能な情報処理システム1を提供することができる。
以上、本発明の実施形態について説明をしたが、本発明の技術的範囲が本実施形態の説明によって限定的に解釈されるべきではない。本実施形態は一例であって、特許請求の範囲に記載された発明の範囲内において、様々な実施形態の変更が可能であることが当業者によって理解されるところである。本発明の技術的範囲は特許請求の範囲に記載された発明の範囲及びその均等の範囲に基づいて定められるべきである。
本実施形態では、ハッシュ関数200の一例としてSHA-256が採用されているが、ハッシュ関数200はSHA-256に限定されるものではない。SHA-256以外のハッシュ関数が採用される場合、ブロックやワードのビット長、ブロックに含まれるワードの数、ステートの更新回数は適宜変更されてもよい。
1:情報処理システム、2:データ生成装置、3:データ検証装置、4:通信ネットワーク、20:制御部、21:記憶装置、22:入出力インターフェース、23:通信部、24:入力操作部、25:表示部、30:制御部、31:記憶装置、32:入出力インターフェース、33:通信部、34:入力操作部、35:表示部、200,300,400:ハッシュ関数、203,205,207:圧縮関数、D1,D2:電子データ、H:ハッシュ値、P:ハッシュ値検証用データ

Claims (14)

  1. データ生成装置と、データ検証装置とを備えた情報処理システムであって、
    前記データ生成装置は、
    所定のハッシュ関数を用いて電子データのハッシュ値を演算し、
    前記電子データに含まれる秘密情報を決定し、
    前記秘密情報がマスキングされた電子データを生成し、
    前記マスキングされた電子データと前記ハッシュ値を外部に送信し、
    前記電子データを構成する複数のブロックのうち、前記秘密情報を含むブロックを決定し、
    前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを生成し、
    前記ハッシュ値検証用データを前記データ検証装置に送信し、
    前記データ検証装置は、
    前記マスキングされた電子データと、前記ハッシュ値を外部から受信し、
    前記データ生成装置から前記ハッシュ値検証用データを受信し、
    前記ハッシュ値検証用データに基づいて、前記電子データのハッシュ値を演算し、
    前記演算されたハッシュ値と前記受信したハッシュ値とを比較し、
    前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである、
    情報処理システム。
  2. データ生成装置と、データ検証装置とを備えた情報処理システムであって、
    前記データ生成装置は、
    所定のハッシュ関数を用いて電子データのハッシュ値を演算し、
    前記電子データに含まれる秘密情報を決定し、
    前記電子データを構成する複数のブロックのうち、前記秘密情報を含むブロックを決定し、
    前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを生成し、
    前記ハッシュ値検証用データと前記ハッシュ値を前記データ検証装置に送信し、
    前記データ検証装置は、
    前記データ生成装置から前記ハッシュ値検証用データと前記ハッシュ値を受信し、
    前記ハッシュ値検証用データに基づいて、前記電子データのハッシュ値を演算し、
    前記演算されたハッシュ値と前記受信したハッシュ値とを比較し、
    前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである、
    情報処理システム。
  3. 前記中間ステートデータは、
    前記中間ハッシュ値を演算する過程における中間のステートと、
    前記秘密情報を含むブロックを構成するワードに基づいて新たに生成される複数のワードと、
    を含む、
    請求項1又は2に記載の情報処理システム。
  4. 前記中間ステートデータは、
    (N-1)番目のステートと、
    からWN+Mまでのワードと、
    を含み、
    NとMは自然数であって、NはMよりも大きい、
    請求項3に記載の情報処理システム。
  5. 前記所定のハッシュ関数は、SHA-256であり、
    Nは、16以上48未満の自然数であり、
    Mは、15である、
    請求項4に記載の情報処理システム。
  6. 前記データ検証装置は、
    前記ハッシュ値検証用データに含まれる前記秘密情報を含まないブロックに基づいて、前記秘密情報を含まないブロックの中間ハッシュ値を演算し、
    前記ハッシュ値検証用データに含まれる前記中間ステートデータに基づいて、前記秘密情報を含むブロックの中間ハッシュ値を演算し、
    前記秘密情報を含まないブロックの中間ハッシュ値と、前記秘密情報を含むブロックの中間ハッシュ値とに基づいて、前記電子データのハッシュ値を演算する、
    請求項1又は2に記載の情報処理システム。
  7. 前記データ生成装置は、
    前記複数のブロックのうち第1ブロックが前記秘密情報を含む場合、前記第1ブロックに関連する中間ステートデータを生成すると共に、前記第1ブロックの第1中間ハッシュ値を演算し、
    前記複数のブロックのうち第2ブロックが前記秘密情報を含まない場合、前記第2ブロックの第2中間ハッシュ値を演算し、
    前記中間ステートデータと、前記第2ブロックとを含むハッシュ値検証用データを前記データ検証装置に送信し、
    前記中間ステートデータは、
    (N-1)番目のステートと、
    からWN+15までのワードと、
    を含み、
    Nは、16以上48未満の自然数であり、
    前記データ検証装置は、
    前記データ生成装置から前記ハッシュ値検証用データを受信し、
    前記ハッシュ値検証用データに含まれる前記第2ブロックに基づいて、前記第2中間ハッシュ値を演算し、
    前記ハッシュ値検証用データに含まれる前記中間ステートデータのWからWN+15までの前記ワードに基づいて、WN+16からW63までのワードを生成し、
    からW63までの前記ワードと、前記中間ステートデータの(N-1)番目のステートとに基づいて、前記第1中間ハッシュ値を演算し、
    前記第1中間ハッシュ値と前記第2中間ハッシュ値とに少なくとも基づいて、前記電子データのハッシュ値を演算する、
    請求項1又は2に記載の情報処理システム。
  8. 少なくとも一つのプロセッサと、
    コンピュータ可読命令を記憶するメモリと、を備えたデータ生成装置であって、
    前記コンピュータ可読命令が前記プロセッサにより実行されると、前記データ生成装置は、
    所定のハッシュ関数を用いて電子データのハッシュ値を演算し、
    前記電子データに含まれる秘密情報を決定し、
    前記秘密情報がマスキングされた電子データを生成し、
    前記マスキングされた電子データと前記ハッシュ値を外部に送信し、
    前記電子データを構成する複数のブロックのうち、前記秘密情報を含むブロックを決定し、
    前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを生成し、
    前記ハッシュ値検証用データを外部に送信し、
    前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである、
    データ生成装置。
  9. 少なくとも一つのプロセッサと、
    コンピュータ可読命令を記憶するメモリと、を備えたデータ検証装置であって、
    前記コンピュータ可読命令が前記プロセッサにより実行されると、前記データ検証装置は、
    秘密情報がマスキングされた電子データと、所定のハッシュ関数を通じて演算された前記電子データのハッシュ値を外部から受信し、
    前記電子データを構成する複数のブロックのうち前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを外部から受信し、
    前記ハッシュ値検証用データに基づいて、前記電子データのハッシュ値を演算し、
    前記演算されたハッシュ値と前記受信したハッシュ値とを比較し、
    前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである、
    データ検証装置。
  10. コンピュータによって実行される情報処理方法であって、
    所定のハッシュ関数を用いて電子データのハッシュ値を演算するステップと、
    前記電子データに含まれる秘密情報を決定するステップと、
    前記秘密情報がマスキングされた電子データを生成するステップと、
    前記マスキングされた電子データと前記ハッシュ値を外部に送信するステップと、
    前記電子データを構成する複数のブロックのうち、前記秘密情報を含むブロックを決定するステップと、
    前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを生成するステップと、
    前記ハッシュ値検証用データを外部に送信するステップと、
    を含み、
    前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである、
    情報処理方法。
  11. コンピュータによって実行される情報処理方法であって、
    秘密情報がマスキングされた電子データと、所定のハッシュ関数を通じて演算された前記電子データのハッシュ値を外部から受信するステップと、
    前記電子データを構成する複数のブロックのうち前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを外部から受信するステップと、
    前記ハッシュ値検証用データに基づいて、前記電子データのハッシュ値を演算するステップと、
    前記演算されたハッシュ値と前記受信したハッシュ値とを比較するステップと、
    を含み、
    前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである、
    情報処理方法。
  12. コンピュータによって実行される情報処理方法であって、
    所定のハッシュ関数を用いて電子データのハッシュ値を演算するステップと、
    前記電子データに含まれる秘密情報を決定するステップと、
    前記電子データを構成する複数のブロックのうち、前記秘密情報を含むブロックを決定するステップと、
    前記秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含むハッシュ値検証用データを生成するステップと、
    前記ハッシュ値検証用データと前記ハッシュ値を外部に送信するステップと、
    を含み、
    前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである、
    情報処理方法。
  13. コンピュータによって実行される情報処理方法であって、
    所定のハッシュ関数を通じて演算された電子データのハッシュ値とハッシュ値検証用データとを外部から受信するステップと、
    前記ハッシュ値検証用データに基づいて、前記電子データのハッシュ値を演算するステップと、
    前記演算されたハッシュ値と前記受信したハッシュ値とを比較するステップと、
    を含み、
    前記ハッシュ値検証用データは、秘密情報を含むブロックに関連する中間ステートデータと、前記秘密情報を含まないブロックとを含み、
    前記中間ステートデータは、前記所定のハッシュ関数を通じて前記秘密情報を含むブロックの中間ハッシュ値を演算する過程において生成されるものである、
    情報処理方法。
  14. 請求項10から13のうちいずれか一項に記載の情報処理方法をコンピュータに実行させる情報処理プログラム。
JP2024033484A 2024-03-06 2024-03-06 情報処理システム、データ生成装置、データ検証装置、情報処理方法、および情報処理プログラム Pending JP2024063185A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2024033484A JP2024063185A (ja) 2024-03-06 2024-03-06 情報処理システム、データ生成装置、データ検証装置、情報処理方法、および情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2024033484A JP2024063185A (ja) 2024-03-06 2024-03-06 情報処理システム、データ生成装置、データ検証装置、情報処理方法、および情報処理プログラム

Publications (1)

Publication Number Publication Date
JP2024063185A true JP2024063185A (ja) 2024-05-10

Family

ID=90970855

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2024033484A Pending JP2024063185A (ja) 2024-03-06 2024-03-06 情報処理システム、データ生成装置、データ検証装置、情報処理方法、および情報処理プログラム

Country Status (1)

Country Link
JP (1) JP2024063185A (ja)

Similar Documents

Publication Publication Date Title
TWI734368B (zh) 實現隱私保護的數據同態加解密方法及裝置
TWI686073B (zh) 金鑰資料處理方法、裝置及伺服器
US20200366460A1 (en) Homomorphic data decryption method and apparatus for implementing privacy protection
KR102570801B1 (ko) 콤팩트 소스 코드로부터의 암호화 함수 파라미터의 생성
JP6285536B2 (ja) データを暗号化するシステムおよび方法
CN108768663B (zh) 一种区块链访问控制方法及其处理系统
US10177906B2 (en) Method and apparatus for encrypting data
US10951394B2 (en) System and method for publication of private data using a blockchain network
CN106664200B (zh) 用于控制对资源的访问的方法、计算设备和存储介质
JP6884284B2 (ja) キー付きメッセージ認証コードのホワイトボックス計算
US11611430B2 (en) Arithmetic apparatus, arithmetic system and arithmetic method
KR102302955B1 (ko) 자산의 토큰화를 통해 현물 자산 거래를 가능하게 하는 블록체인 및 클라우드 기반의 자산 거래 플랫폼 서버 및 그 동작 방법
CN111512590B (zh) 用于密码认证的同态加密
WO2020020127A1 (zh) 一种私钥存储和读取方法、装置及硬件设备
WO2020075396A1 (ja) 推論装置、推論方法及び推論プログラム
CN111476573A (zh) 一种账户数据处理方法、装置、设备及存储介质
KR102132685B1 (ko) 순서 노출 암호화를 위한 장치 및 방법
US8325913B2 (en) System and method of authentication
JP2024063185A (ja) 情報処理システム、データ生成装置、データ検証装置、情報処理方法、および情報処理プログラム
TWI701931B (zh) 具分級機制的數位簽章方法及適用該方法的硬體錢包裝置
KR20220086311A (ko) 계층 결정적 지갑의 니모닉 문장 백업 방법 및 장치
JP6830867B2 (ja) 追加データ付き認証暗号システム、復号装置、追加データ付き認証暗号方法、およびプログラム
TWI665901B (zh) 加密方法與解密方法
CN111931202A (zh) 用于分布式系统的加密存储方法、终端设备和存储介质
Hinkelmann et al. A cryptographically t‐private auction system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240306