(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022080706
(43)【公開日】2022-05-30
(54)【発明の名称】情報記憶システム、情報処理装置、及び情報記憶方法
(51)【国際特許分類】
H04L 9/08 20060101AFI20220523BHJP
H04L 9/14 20060101ALI20220523BHJP
G06F 21/62 20130101ALI20220523BHJP
G06F 11/10 20060101ALI20220523BHJP
G06F 13/00 20060101ALI20220523BHJP
【FI】
H04L9/00 601A
H04L9/00 641
G06F21/62 318
G06F11/10 680
G06F13/00 357Z
【審査請求】有
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2020191917
(22)【出願日】2020-11-18
(11)【特許番号】
(45)【特許公報発行日】2022-01-25
(71)【出願人】
【識別番号】505205731
【氏名又は名称】レノボ・シンガポール・プライベート・リミテッド
(74)【代理人】
【識別番号】100161207
【弁理士】
【氏名又は名称】西澤 和純
(74)【代理人】
【識別番号】100169764
【弁理士】
【氏名又は名称】清水 雄一郎
(74)【代理人】
【識別番号】100175824
【弁理士】
【氏名又は名称】小林 淳一
(74)【代理人】
【識別番号】100206081
【弁理士】
【氏名又は名称】片岡 央
(72)【発明者】
【氏名】藤井 康介
(72)【発明者】
【氏名】萩原 幹雄
(72)【発明者】
【氏名】石田 伯仁
(72)【発明者】
【氏名】笠松 栄太郎
【テーマコード(参考)】
5B001
5B089
【Fターム(参考)】
5B001AA02
5B001AB01
5B001AB02
5B001AD04
5B089GA12
5B089JA12
5B089JB10
5B089KA12
5B089KB04
(57)【要約】
【課題】記憶容量の制限を低減し、信頼性の高い情報記憶を実現する。
【解決手段】情報記憶システムは、第1の情報処理装置と、N台以上の複数の第2の情報処理装置とを備え(但し、Nは、3以上の整数)、第1の情報処理装置は、記憶データを記憶する場合に、記憶させる記憶データを、所定のデータ長の分割ブロックに分割する分割処理と、(N-2)個の分割ブロックを暗号鍵で暗号化した(N-2)個の暗号ブロックと、暗号鍵ブロックと、誤り検出訂正ブロックとを生成する生成処理と、複数の第2の情報処理装置のうちのN台を1組として選択し、(N-2)個の暗号ブロック、暗号鍵ブロック、及び誤り検出訂正ブロックの各ブロックを、選択したN台の異なる第2の情報処理装置が備える記憶部の空き領域に記憶させる記憶処理と、複数の分割ブロックの全てが記憶されるまで生成処理と記憶処理とを繰り返す繰り返し処理とを実行する記憶処理部を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第1の情報処理装置と、N台以上の複数の第2の情報処理装置とを備え、前記第1の情報処理装置と、前記複数の第2の情報処理装置とが通信可能に接続されている情報記憶システムであって(但し、Nは、3以上の整数)、
前記第1の情報処理装置は、
記憶データを記憶する場合に、
記憶させる前記記憶データを、所定のデータ長の分割ブロックに分割する分割処理と、
分割した複数の分割ブロックのうちから、(N-2)個の分割ブロックを順次選択し、選択した前記(N-2)個の分割ブロックを暗号鍵で共通鍵暗号方式により暗号化した(N-2)個の暗号ブロックと、前記所定のデータ長の前記暗号鍵である暗号鍵ブロックと、前記(N-2)個の暗号ブロック及び前記暗号鍵ブロックの各ブロックを前記所定のデータ長での排他的論理和演算により生成した前記所定のデータ長の誤り検出訂正ブロックとを生成するブロック生成処理と、
前記複数の第2の情報処理装置のうちの前記N台を1組として選択し、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックの各ブロックを、選択した前記N台の異なる前記第2の情報処理装置が備える記憶部の空き領域に記憶させる記憶処理と、
前記複数の分割ブロックの全てが記憶されるまで、前記ブロック生成処理と、前記記憶処理とを繰り返す繰り返し処理と
を実行する記憶処理部を備える情報記憶システム。
【請求項2】
前記記憶処理部は、
前記記憶データを読み出す場合に、
前記N台で1組の前記第2の情報処理装置から、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックの各ブロックを読み出す読み出し処理と、
前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックのうちの1つのブロックが読み出しできなかった場合に、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックのうちの読み出しできなかった前記1つのブロック以外のブロックを排他的論理和演算することで、読み出しできなかった前記1つのブロックを生成する復旧処理と、
読み出した前記(N-2)個の暗号ブロックを前記暗号鍵ブロックの前記暗号鍵で前記共通鍵暗号方式により復号して、前記(N-2)個の分割ブロックを復元する復号処理と、
前記読み出し処理と、前記復号処理とを、前記記憶データを構成する全ての前記分割ブロックが得られるまで繰り返し、全ての前記分割ブロックを結合して、前記記憶データを生成する結合処理と
を実行する請求項1に記載の情報記憶システム。
【請求項3】
前記記憶処理部は、
前記記憶処理において、2組のN台の前記第2の情報処理装置を選択し、前記2組のそれぞれに、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックを記憶させ、
前記復旧処理において、前記2組のうちの1組目のN台の前記第2の情報処理装置から、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックのうちの2個以上つのブロックが読み出しできなかった場合に、前記2組のうちのもう1組のN台の前記第2の情報処理装置から、読み出しできなかった前記2個以上つのブロックを読み出す
請求項2に記載の情報記憶システム。
【請求項4】
前記N台が、4台以上であり、
前記記憶処理部は、
乱数に基づいて、前記(N-2)個の分割ブロックごとに、異なる前記暗号鍵を生成し、
前記ブロック生成処理において、前記分割ブロックと前記暗号鍵とを排他的論理和演算して暗号化し、前記暗号ブロックを生成し、
前記復号処理において、前記暗号ブロックと前記暗号鍵とを排他的論理和演算して復号し、前記分割ブロックを生成する
請求項2又は請求項3に記載の情報記憶システム。
【請求項5】
前記記憶処理部は、
前記記憶処理において、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックを含むデータセットを識別するデータ識別情報と、前記データセット内のブロックの番号を示すブロック番号と、ブロックの種類を識別する種類識別情報と、次のブロック番号とを含むヘッダー部を付加して、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックの各ブロックを、選択した前記N台の異なる前記第2の情報処理装置の空き領域に記憶させる
請求項1から請求項4のいずれか一項に記載の情報記憶システム。
【請求項6】
前記暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックのいずれかを記憶可能な前記第2の情報処理装置を識別する装置識別情報と、前記空き領域の容量とを対応付けた装置情報を記憶する装置情報記憶部を備え、
前記記憶処理部は、前記装置情報記憶部が記憶する前記装置情報に基づいて、前記N台の第2の情報処理装置を選択する
請求項1から請求項5のいずれか一項に記載の情報記憶システム。
【請求項7】
前記記憶部が、SSD(Solid State Drive)である
請求項1から請求項6のいずれか一項に記載の情報記憶システム。
【請求項8】
N台以上の複数の接続先情報処理装置と通信可能に接続されている情報処理装置であって(但し、Nは、3以上の整数)、
記憶データを記憶する場合に、
記憶させる前記記憶データを、所定のデータ長の分割ブロックに分割する分割処理と、
分割した複数の分割ブロックのうちから、(N-2)個の分割ブロックを順次選択し、選択した前記(N-2)個の分割ブロックを暗号鍵で共通鍵暗号方式により暗号化した(N-2)個の暗号ブロックと、前記所定のデータ長の前記暗号鍵である暗号鍵ブロックと、前記(N-2)個の暗号ブロック及び前記暗号鍵ブロックの各ブロックを前記所定のデータ長での排他的論理和演算により生成した前記所定のデータ長の誤り検出訂正ブロックとを生成するブロック生成処理と、
前記複数の接続先情報処理装置のうちの前記N台を1組として選択し、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックの各ブロックを、選択した前記N台の異なる前記接続先情報処理装置が備える記憶部の空き領域に記憶させる記憶処理と、
前記複数の分割ブロックの全てが記憶されるまで、前記ブロック生成処理と、前記記憶処理とを繰り返す繰り返し処理と
を実行する記憶処理部を備える情報処理装置。
【請求項9】
第1の情報処理装置と、N台以上の複数の第2の情報処理装置とを備え、前記第1の情報処理装置と、前記複数の第2の情報処理装置とが通信可能に接続されている情報記憶システムの情報記憶方法であって(但し、Nは、3以上の整数)、
前記第1の情報処理装置が、記憶データを記憶する場合に、記憶させる前記記憶データを、所定のデータ長の分割ブロックに分割する分割ステップと、
前記第1の情報処理装置が、分割した複数の分割ブロックのうちから、(N-2)個の分割ブロックを順次選択し、選択した前記(N-2)個の分割ブロックを暗号鍵で共通鍵暗号方式により暗号化した(N-2)個の暗号ブロックと、前記所定のデータ長の前記暗号鍵である暗号鍵ブロックと、前記(N-2)個の暗号ブロック及び前記暗号鍵ブロックの各ブロックを前記所定のデータ長での排他的論理和演算により生成した前記所定のデータ長の誤り検出訂正ブロックとを生成するブロック生成ステップと、
前記第1の情報処理装置が、前記複数の第2の情報処理装置のうちの前記N台を1組として選択し、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックの各ブロックを、選択した前記N台の異なる前記第2の情報処理装置が備える記憶部の空き領域に記憶させる記憶ステップと
を含み、
前記複数の分割ブロックの全てが記憶されるまで、前記ブロック生成ステップと、前記記憶ステップとを繰り返す
情報記憶方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報記憶システム、情報処理装置、及び情報記憶方法に関する。
【背景技術】
【0002】
近年、ネットワークを利用して情報を記憶するクラウドストレージなどの情報記憶システムが知られている。このような従来の情報記憶システムでは、ネットワークを介して接続可能なサーバ装置が備える記憶部に、記憶領域を確保して記憶装置として使用していた。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の情報記憶システムでは、サーバ装置を必要とするため、割り当てられる記憶容量に制限があり、簡単に記憶容量を増加きるものではなかった。また、従来の情報記憶システムでは、外部のサーバ装置に情報を記憶しており、故障による情報消失など信頼性に不安がある場合があった。
このように、従来の情報記憶システムでは、記憶容量の制限を低減し、信頼性の高い情報記憶を実現することが困難であった。
【0005】
本発明は、上記問題を解決すべくなされたもので、その目的は、記憶容量の制限を低減し、信頼性の高い情報記憶を実現することができる情報記憶システム、情報処理装置、及び情報記憶方法を提供することにある。
【課題を解決するための手段】
【0006】
上記問題を解決するために、本発明の一態様は、第1の情報処理装置と、N台以上の複数の第2の情報処理装置とを備え、前記第1の情報処理装置と、前記複数の第2の情報処理装置とが通信可能に接続されている情報記憶システムであって(但し、Nは、3以上の整数)、前記第1の情報処理装置は、記憶データを記憶する場合に、記憶させる前記記憶データを、所定のデータ長の分割ブロックに分割する分割処理と、分割した複数の分割ブロックのうちから、(N-2)個の分割ブロックを順次選択し、選択した前記(N-2)個の分割ブロックを暗号鍵で共通鍵暗号方式により暗号化した(N-2)個の暗号ブロックと、前記所定のデータ長の前記暗号鍵である暗号鍵ブロックと、前記(N-2)個の暗号ブロック及び前記暗号鍵ブロックの各ブロックを前記所定のデータ長での排他的論理和演算により生成した前記所定のデータ長の誤り検出訂正ブロックとを生成するブロック生成処理と、前記複数の第2の情報処理装置のうちの前記N台を1組として選択し、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックの各ブロックを、選択した前記N台の異なる前記第2の情報処理装置が備える記憶部の空き領域に記憶させる記憶処理と、前記複数の分割ブロックの全てが記憶されるまで、前記ブロック生成処理と、前記記憶処理とを繰り返す繰り返し処理とを実行する記憶処理部を備える情報記憶システムである。
【0007】
また、本発明の一態様は、上記の情報記憶システムにおいて、前記記憶処理部は、前記記憶データを読み出す場合に、前記N台で1組の前記第2の情報処理装置から、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックの各ブロックを読み出す読み出し処理と、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックのうちの1つのブロックが読み出しできなかった場合に、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックのうちの読み出しできなかった前記1つのブロック以外のブロックを排他的論理和演算することで、読み出しできなかった前記1つのブロックを生成する復旧処理と、読み出した前記(N-2)個の暗号ブロックを前記暗号鍵ブロックの前記暗号鍵で前記共通鍵暗号方式により復号して、前記(N-2)個の分割ブロックを復元する復号処理と、前記読み出し処理と、前記復号処理とを、前記記憶データを構成する全ての前記分割ブロックが得られるまで繰り返し、全ての前記分割ブロックを結合して、前記記憶データを生成する結合処理とを実行するようにしてもよい。
【0008】
また、本発明の一態様は、上記の情報記憶システムにおいて、前記記憶処理部は、前記記憶処理において、2組のN台の前記第2の情報処理装置を選択し、前記2組のそれぞれに、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックを記憶させ、前記復旧処理において、前記2組のうちの1組目のN台の前記第2の情報処理装置から、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックのうちの2個以上つのブロックが読み出しできなかった場合に、前記2組のうちのもう1組のN台の前記第2の情報処理装置から、読み出しできなかった前記2個以上つのブロックを読み出すようにしてもよい。
【0009】
また、本発明の一態様は、上記の情報記憶システムにおいて、前記N台が、4台以上であり、前記記憶処理部は、乱数に基づいて、前記(N-2)個の分割ブロックごとに、異なる前記暗号鍵を生成し、前記ブロック生成処理において、前記分割ブロックと前記暗号鍵とを排他的論理和演算して暗号化し、前記暗号ブロックを生成し、前記復号処理において、前記暗号ブロックと前記暗号鍵とを排他的論理和演算して復号し、前記分割ブロックを生成するようにしてもよい。
【0010】
また、本発明の一態様は、上記の情報記憶システムにおいて、前記記憶処理部は、前記記憶処理において、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックを含むデータセットを識別するデータ識別情報と、前記データセット内のブロックの番号を示すブロック番号と、ブロックの種類を識別する種類識別情報と、次のブロック番号とを含むヘッダー部を付加して、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックの各ブロックを、選択した前記N台の異なる前記第2の情報処理装置の空き領域に記憶させるようにしてもよい。
【0011】
また、本発明の一態様は、上記の情報記憶システムにおいて、前記暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックのいずれかを記憶可能な前記第2の情報処理装置を識別する装置識別情報と、前記空き領域の容量とを対応付けた装置情報を記憶する装置情報記憶部を備え、前記記憶処理部は、前記装置情報記憶部が記憶する前記装置情報に基づいて、前記N台の第2の情報処理装置を選択するようにしてもよい。
【0012】
また、本発明の一態様は、上記の情報記憶システムにおいて、前記記憶部が、SSD(Solid State Drive)であってもよい。
【0013】
また、本発明の一態様は、N台以上の複数の接続先情報処理装置と通信可能に接続されている情報処理装置であって(但し、Nは、3以上の整数)、記憶データを記憶する場合に、記憶させる前記記憶データを、所定のデータ長の分割ブロックに分割する分割処理と、分割した複数の分割ブロックのうちから、(N-2)個の分割ブロックを順次選択し、選択した前記(N-2)個の分割ブロックを暗号鍵で共通鍵暗号方式により暗号化した(N-2)個の暗号ブロックと、前記所定のデータ長の前記暗号鍵である暗号鍵ブロックと、前記(N-2)個の暗号ブロック及び前記暗号鍵ブロックの各ブロックを前記所定のデータ長での排他的論理和演算により生成した前記所定のデータ長の誤り検出訂正ブロックとを生成するブロック生成処理と、前記複数の接続先情報処理装置のうちの前記N台を1組として選択し、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックの各ブロックを、選択した前記N台の異なる前記接続先情報処理装置が備える記憶部の空き領域に記憶させる記憶処理と、前記複数の分割ブロックの全てが記憶されるまで、前記ブロック生成処理と、前記記憶処理とを繰り返す繰り返し処理とを実行する記憶処理部を備える情報処理装置である。
【0014】
また、本発明の一態様は、第1の情報処理装置と、N台以上の複数の第2の情報処理装置とを備え、前記第1の情報処理装置と、前記複数の第2の情報処理装置とが通信可能に接続されている情報記憶システムの情報記憶方法であって(但し、Nは、3以上の整数)、前記第1の情報処理装置が、記憶データを記憶する場合に、記憶させる前記記憶データを、所定のデータ長の分割ブロックに分割する分割ステップと、前記第1の情報処理装置が、分割した複数の分割ブロックのうちから、(N-2)個の分割ブロックを順次選択し、選択した前記(N-2)個の分割ブロックを暗号鍵で共通鍵暗号方式により暗号化した(N-2)個の暗号ブロックと、前記所定のデータ長の前記暗号鍵である暗号鍵ブロックと、前記(N-2)個の暗号ブロック及び前記暗号鍵ブロックの各ブロックを前記所定のデータ長での排他的論理和演算により生成した前記所定のデータ長の誤り検出訂正ブロックとを生成するブロック生成ステップと、前記第1の情報処理装置が、前記複数の第2の情報処理装置のうちの前記N台を1組として選択し、前記(N-2)個の暗号ブロック、前記暗号鍵ブロック、及び前記誤り検出訂正ブロックの各ブロックを、選択した前記N台の異なる前記第2の情報処理装置が備える記憶部の空き領域に記憶させる記憶ステップとを含み、前記複数の分割ブロックの全てが記憶されるまで、前記ブロック生成ステップと、前記記憶ステップとを繰り返す情報記憶方法である。
【発明の効果】
【0015】
本発明の上記態様によれば、記憶容量の制限を低減し、信頼性の高い情報記憶を実現することができる。
【図面の簡単な説明】
【0016】
【
図1】本実施形態による情報記憶システムの一例を示すブロック図である。
【
図2】本実施形態における装置情報記憶部のデータ例を示す図である。
【
図3】本実施形態における管理情報記憶部のデータ例を示す図である。
【
図4】本実施形態における記憶データの分割処理及びブロック生成処理を説明する図である。
【
図5】本実施形態におけるヘッダー部の一例を示す図である。
【
図6】本実施形態における分割ブロックの暗号化及びパリティの生成方法を説明する図である。
【
図7】本実施形態における記憶データの記憶例を示す図である。
【
図8】本実施形態における読み出した暗号ブロックの復号方法を説明する図である。
【
図9】本実施形態による情報記憶システムによる読み出しデータセットの復旧処理の一例を示す図である。
【
図10】本実施形態による情報記憶システムによる読み出しデータセットの復旧処理の別の一例を示す図である。
【
図11】本実施形態における格納情報記憶部のデータ例を示す図である。
【
図12】本実施形態による情報記憶システムの記憶データの書き込み処理の一例を示すフローチャートである。
【
図13】本実施形態による情報記憶システムの記憶データの読み出し処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0017】
以下、本発明の一実施形態による情報記憶システム、情報処理装置、及び情報記憶方法について、図面を参照して説明する。
【0018】
図1は、本実施形態による情報記憶システム1の一例を示すブロック図である。
図1に示すように、情報記憶システム1は、情報処理装置10と、複数の情報処理装置20(接続先情報処理装置)とを備える。情報処理装置10と、複数の情報処理装置20とは、ネットワークNW1を介して通信可能に接続されている。
【0019】
本実施形態による情報記憶システム1は、ネットワークNW1を介して、情報処理装置10から複数の情報処理装置20に記憶データを分割して記憶するネットワークストレージシステムである。
ネットワークNW1は、例えば、LAN(Local Area Network)などである。本実施形態では、情報処理装置10及び複数の情報処理装置20は、常時、ネットワークNW1に接続されているものとする。
【0020】
なお、本実施形態において、情報処理装置20-1、情報処理装置20-2、情報処理装置20-3、情報処理装置20-4、・・・のそれぞれは、同一の構成であり、情報記憶システム1が備える任意の接続先情報処理装置を示す場合、又は、特に区別しない場合には、情報処理装置20として説明する。
【0021】
情報処理装置10(第1の情報処理装置の一例)は、例えば、パーソナルコンピュータなどのコンピュータ装置であり、記憶データを分割して、ネットワークNW1を介して、複数の情報処理装置20に記憶させるとともに、複数の情報処理装置20から、ネットワークNW1を介して、分割されたデータを取得して、記憶データを読み出す。ここで、本実施形態において、記憶データとは、情報記憶システム1に記憶するデータ、又は記憶しているデータである。
また、情報処理装置10は、NW(ネットワーク)通信部11と、記憶部12と、制御部13とを備える。
【0022】
NW通信部11は、例えば、LANカードや無線LANカードなどであり、ネットワークNW1を介して、例えば、複数の情報処理装置20と通信する。
【0023】
記憶部12は、例えば、RAM(Random Access Memory)及びSSD(Solid State Drive)などで構成されており、情報処理装置10が利用する各種情報を記憶する。
記憶部12は、装置情報記憶部121と、管理情報記憶部122と、利用可能空き領域123とを備える。
【0024】
装置情報記憶部121は、不図示のRAM又はSSDにより構成される記憶部であり、記憶データを記憶可能な情報処理装置20を識別する装置識別情報と、当該情報処理装置20の利用可能なSSDの空き容量(利用可能空き領域223)とを対応付けた装置情報を記憶する。ここで、
図2を参照して、装置情報記憶部121のデータ例について説明する。
【0025】
図2は、本実施形態における装置情報記憶部121のデータ例を示す図である。
図2に示すように、装置情報記憶部121は、装置名と、IPアドレスと、空き容量とを対応付けた装置情報を記憶する。ここで、装置名は、ネットワークNW1に接続されている情報処理装置20の装置名を示し、IPアドレスは、ネットワークNW1における情報処理装置20のIPアドレスを示している。なお、装置名及びIPアドレスは、いずれも装置識別情報の一例である。また、空く容量は、情報処理装置20の利用可能空き領域223の容量値を示している。
【0026】
例えば、
図2に示す例では、装置名が“PC_A”、“PC_B”、“PC_C”、・・・の情報処理装置20が利用可能であることを示している。また、装置名が“PC_A”のIPアドレスが“XXX.XX.XX.XX1”であり、空き容量が“10GB(ギガバイト)”であることを示している。また、装置名が“PC_B”のIPアドレスが“XXX.XX.XX.XX2”であり、空き容量が“50GB”であることを示している。
【0027】
図1の説明に戻り、管理情報記憶部122は、不図示のSSDにより構成される記憶部であり、複数の情報処理装置20に分割して記憶する記憶データに関する情報及び記憶先(書き込み先)の関する情報を含む管理情報を記憶する。ここで、
図3を参照して、管理情報記憶部122のデータ例について説明する。
【0028】
図3は、本実施形態における管理情報記憶部122のデータ例を示す図である。
図3に示すように、管理情報記憶部122は、データ名と、分割数と、GUIDと、分割ブロックNOと、書き込み装置名と、ミラー書き込み装置名とを対応付けた管理情報を記憶する。ここで、データ名は、記憶データを識別する識別情報であり、例えば、記憶データのファイル名などである。また、分割数は、記憶データを後述する分割ブロックに分割した数を示し、GUID(Globally Unique Identifier)は、2個の分割ブロックづつで構成されるデータセットの識別情報であり、一意に識別可能な識別情報である。
【0029】
また、分割ブロックNOは、分割ブロックの番号を示し、書き込み装置名は、後述する暗号化した2個の分割ブロックと、暗号鍵ブロックと、パリティブロックとを1つのデータセットとして書き込み先になる情報処理装置20の装置名を示している。本実施形態では、4つのブロックが1つのデータセットであり、これらのそれぞれを異なる情報処理装置20に書き込むため、書き込み装置名は、4つの装置名を含んでいる。また、ミラー書き込み装置名は、データセットを書き込み情報処理装置20の予備の書き込み先として、4つの装置名を含んでいる。なお、書き込み装置名が示す情報処理装置20と、ミラー書き込み装置名が示す情報処理装置20とは、同一のデータセットが書き込まれる。
【0030】
例えば、
図3に示す例では、データ名が“DAT_ABC”の記憶データは、分割数が“50”に分割されて記憶されていることを示している。また、分割ブロック番号の“001”及び“002”のデータセットには、GUIDとして“D0001”が付与されており、書き込み装置名が“PC_A”、“PC_B”、“PC_C”、及び“PC_D”であることを示してい。また、ミラー書き込み装置名が“PC_E”、“PC_F”、“PC_G”、及び“PC_H”であることを示している。
【0031】
再び、
図1の説明に戻り、利用可能空き領域123は、情報処理装置10が備える不図示のSSDの空き領域を示している。
制御部13は、例えば、CPU(Central Processing Unit)などを含むプロセッサなどであり、情報処理装置10を統括的に制御する。制御部13は、例えば、記憶処理部14を備える。
【0032】
記憶処理部14は、デバイスドライバやエージェントプログラムにより実現される処理部であり、ネットワークNW1を介して、記憶データを複数の情報処理装置20に分割して記憶させる(書き込みする)とともに、複数の情報処理装置20から分割した記憶データを、ネットワークNW1を介して取得して、記憶データを読み出す処理を実行する。
記憶処理部14は、例えば、書き込み処理部141と、読み出し処理部142とを備える。
【0033】
書き込み処理部141は、記憶データを記憶する場合に、記憶データの書き込み処理を実行する。書き込み処理部141は、記憶データを記憶する場合に、例えば、分割処理と、ブロック生成処理と、記憶処理と、繰り返し処理とを実行する。
【0034】
書き込み処理部141は、分割処理において、記憶データを、所定のデータ長(例えば、4Kバイト程度)の分割ブロックに分割する。また、書き込み処理部141は、ブロック生成処理において、分割した複数の分割ブロックのうちから、(N-2)個の分割ブロックを順次選択し、選択した(N-2)個の分割ブロックを暗号化した(N-2)個の暗号ブロックと、所定のデータ長の暗号鍵である暗号鍵ブロックと、所定のデータ長のパリティブロック(誤り検出訂正ブロック)とを生成する。ここで、Nは、3以上の整数である。暗号鍵は、共通鍵暗号方式の暗号鍵であり、例えば、所定のデータ長の乱数である。また、パリティブロックは、(N-2)個の暗号ブロック及び暗号鍵ブロックの各ブロックを所定のデータ長でのXOR演算(eXclusive OR:排他的論理和演算)により生成される。ここで、
図4~
図6を参照して、分割処理及びブロック生成処理の詳細について説明する。
【0035】
図4は、本実施形態における記憶データの分割処理及びブロック生成処理を説明する図である。
なお、本実施形態では、上述したNが、“4”であり、(N-2)が、“2”である場合の一例について説明する。
【0036】
図4に示すように、書き込み処理部141は、記憶データDT1にHashデータを付加したデータを、所定のデータ長(例えば、4KB)ことに分割して、複数の分割ブロックDBを生成する。なお、記憶データにHashデータを付加したデータが、所定のデータ長の整数倍の長さでない場合には、書き込み処理部141は、不足分を、パディング(Padding)により、所定のデータ“例えば、オール”0“など)で埋める処理を実行する。
【0037】
書き込み処理部141は、分割した分割ブロックを2個のブロックづつ選択して、2個の分割ブロック(分割ブロックを暗号化した暗号ブロック)と、暗号鍵である暗号ブロックと、パリティであるパリティブロックとの4つのブロックをデータセットとして、生成する。また、書き込み処理部141は、データセットの2個の分割ブロック(DB11、DB12)、暗号鍵ブロックKB1、及びパリティブロックPB1の各ブロックに、ヘッダー部HDを付与する。ここで、
図5を参照して、ヘッダー部HDの詳細について説明する。
【0038】
図5は、本実施形態におけるヘッダー部HDの一例を示す図である。
図5に示すように、ヘッダー部HDには、DataName、PayloadNum、PayloadOrKP、HeadOrTail/KeyOrParity、PointerToNextData、及びPaddingSizeが含まれる。ここで、DataNameは、データセットの識別情報として、上述したGUID(データ識別情報の一例)が記載され、PayloadNumには、データセット内のブロック番号(i)が記載される。
【0039】
PayloadNumには、例えば、分割ブロック(暗号ブロック)の先頭(Head)の場合に“1”が記載され、分割ブロック(暗号ブロック)の後尾(Tail)の場合に“2”が記載される。また、PayloadNumには、例えば、暗号鍵ブロックの場合に、“3”が記載され、パリティブロックの場合に、“4”が記載される。
【0040】
また、PayloadOrKPは、当該ブロックが、分割ブロック(Payload)であるか、暗号鍵ブロック又はパリティブロックであるかを示している。PayloadOrKPは、ブロックの種類を識別する種類識別情報の一例である。例えば、PayloadOrKPには、分割ブロック(Payload)である場合に、“0”が記載され、暗号鍵ブロック又はパリティブロックである場合に、“1”が記載される。
【0041】
また、HeadOrTail/KeyOrParityは、当該ブロックが、分割ブロックの先頭(Head)であるか、後尾(Tail)であるかを示すとおもに、当該ブロックが、暗号鍵ブロックであるか、パリティブロックであるかを示している。例えば、HeadOrTail/KeyOrParityは、“0”の場合に、先頭(Head)又は暗号鍵ブロックをしめしている。また、HeadOrTail/KeyOrParityは、“1”の場合に、後尾(Tail)又はパリティブロックであるかを示している。
【0042】
また、PointerToNextDataは、次のブロックのPayloadNumを示している。例えば、当該ヘッダー部HDのPayloadNum(i)が“1”の場合に、“2”が記載される。また、当該ヘッダー部HDのPayloadNum(i)が“4”の場合に、“1”が記載される。PointerToNextDataは、1つのデータセットの中で、“1”→“2”→“3”→“4”→“1”・・・のように循環している。
データセットの各ブロックは、このようなヘッダー部HDの記載内容を確認することで、各ブロックが、2個の分割ブロック(暗号ブロック)、暗号鍵ブロック、及びパリティブロックを特定することが可能になる。
【0043】
また、
図6は、本実施形態における分割ブロックの暗号化及びパリティの生成方法を説明する図である。
図6に示すように、書き込み処理部141は、XOR演算を利用して、実際に情報処理装置20に書き込むデータセットDS1を生成する。書き込み処理部141は、分割処理を実行した後、乱数により暗号鍵を生成する。なお、書き込み処理部141は、暗号鍵を、データセットごと(2個の分割データごと)に生成する。
【0044】
図6に示す例では、1番目(Head)の分割ブロックのデータA、2番目(Tail)の分割ブロックのデータB、及び暗号鍵K1とすると、書き込み処理部141は、まず、データAと暗号鍵K1とをXOR演算して、暗号データEAを生成する。また、書き込み処理部141は、データBと暗号鍵K1とをXOR演算して、暗号データEBを生成する。なお、本実施形態における共通鍵暗号方式を、XOR暗号とする。
【0045】
次に、書き込み処理部141は、暗号データEAと、暗号データEBと、暗号鍵K1とをXOR演算して、パリティP1を生成する。書き込み処理部141は、暗号データEAの暗号ブロックと、暗号データEBの暗号ブロックと、暗号鍵K1の暗号鍵ブロックと、パリティP1のパリティブロックとを1つのデータセットDS1として生成する。
【0046】
再び、
図1の説明に戻り、書き込み処理部141は、記憶処理において、複数の情報処理装置20のうちのN台(例えば、4台)を1組として選択し、(N-2)個(例えば、2個)の暗号ブロック(例えば、2個の暗号ブロック)、暗号鍵ブロック、及びパリティブロックの各ブロックを、選択したN台(例えば、4台)の異なる情報処理装置20が備えるSSD(記憶部)の利用可能空き領域223(空き領域)に記憶させる。ここで、
図7を参照して、記憶処理の詳細について説明する。
【0047】
図7は、本実施形態における記憶データの記憶例を示す図である。
図7において、“PC_A”、“PC_B”、“PC_C”、及び“PC_D”の4台の情報処理装置20(20-1~20-4)のセットが、書き込み装置のセットST1であり、“PC_E”、“PC_F”、“PC_G”、及び“PC_H” の4台の情報処理装置20(20-5~20-8)のセットが、ミラー書き込み装置のセットST2である。また、記憶データDT2は、データA~データFの分割ブロックに分割されるものとする。
【0048】
なお、書き込み処理部141は、装置情報記憶部121が記憶する装置情報に基づいて、4台の情報処理装置20(“PC_A”、“PC_B”、“PC_C”、及び“PC_D”、並びに、“PC_E”、“PC_F”、“PC_G”、及び“PC_H”)を選択する。
【0049】
例えば、データA及びデータBの分割ブロックを情報処理装置20に書く込む場合に、書き込み処理部141は、暗号データEA及び暗号データEBの暗号ブロック、暗号鍵K1の暗号鍵ブロック、及びパリティP1のパリティブロックのデータセットを生成し、各ブロックを書き込み装置のセットST1の異なる情報処理装置20に記憶させる。具体的に、書き込み処理部141は、暗号データEAを“PC_A”である情報処理装置20-1に記憶させ、暗号データEBを“PC_B”である情報処理装置20-2に記憶させる。また、書き込み処理部141は、暗号鍵K1を“PC_D”である情報処理装置20-4に記憶させ、パリティP1を“PC_C”である情報処理装置20-3に記憶させる。
【0050】
また、書き込み処理部141は、書き込み装置のセットST1の情報処理装置20に記憶させたデータセットと同一の各ブロックを、ミラー書き込み装置のセットST2の情報処理装置20に記憶させる。すなわち、書き込み処理部141は、暗号データEAを“PC_E”である情報処理装置20-5に記憶させ、暗号データEBを“PC_F”である情報処理装置20-6に記憶させる。また、書き込み処理部141は、暗号鍵K1を“PC_H”である情報処理装置20-8に記憶させ、パリティP1を“PC_G”である情報処理装置20-7に記憶させる。
また、書き込み処理部141は、書き込みを行った記憶データに対応する管理情報を、例えば、
図3に示すように、管理情報記憶部122記憶させる。
【0051】
データC及びデータD、並びに、データE及びデータFの場合も、データA及びデータBと同様であり、書き込み処理部141は、データセットの各ブロックを、書き込み装置のセットST1の4台の情報処理装置20のそれぞれに分けて記憶させるとともに、ミラー書き込み装置のセットST2の4台の情報処理装置20に同様に記憶させる。
このように、書き込み処理部141は、記憶処理において、2組の4台の情報処理装置20(セットST1及びセットST2)を選択し、2組のそれぞれに、2個の暗号ブロック、暗号鍵ブロック、及びパリティブロックを記憶させる。
【0052】
また、書き込み処理部141は、記憶処理において、上述したヘッダー部HDを付加して、(2個の暗号ブロック、暗号鍵ブロック、及びパリティブロックの各ブロックを、選択した4台の異なる情報処理装置20の後述する利用可能空き領域223に記憶させる。
【0053】
再び、
図1の説明に戻り、書き込み処理部141は、繰り返し処理において、複数の分割ブロックの全てが記憶されるまで、ブロック生成処理と、記憶処理とを繰り返す。
また、読み出し処理部142は、記憶データを読み出す場合に、読み出し処理と、復旧処理と、復号処理と、結合処理とを実行する。
【0054】
読み出し処理部142は、読み出し処理において、N台(例えば、4台)で1組(1セット)の情報処理装置20から、ネットワークNW1を介して、(N-2)個(例えば、2個)の暗号ブロック、暗号鍵ブロック、及びパリティブロックの各ブロックを読み出す。読み出し処理部142は、例えば、管理情報記憶部122を参照して、記憶データのデータ名に対応する書き込み装置名を取得して、書き込み装置名の4台の情報処理装置20から、データセットの各ブロックを、ネットワークNW1を介して取得する。
【0055】
また、読み出し処理部142は、復号処理において、読み出した(N-2)個(例えば、4個)の暗号ブロックを暗号鍵ブロックの暗号鍵で共通鍵暗号方式により復号して、(N-2)個(例えば、4個)の分割ブロックを復元する。ここで、
図8を参照して、復号処理の詳細について説明する。
【0056】
図8は、本実施形態における読み出した暗号ブロックの復号方法を説明する図である。ここでは、暗号データEA及び暗号データEBの2個の暗号ブロックと、暗号鍵K1の暗号鍵ブロックとを読み出した場合の一例について説明する。
【0057】
図8に示すように、読み出し処理部142は、暗号データEAと暗号鍵K1とをXOR演算することで復号し、分割データAを生成する。また、読み出し処理部142は、暗号データEBと暗号鍵K1とをXOR演算することで復号し、分割データBを生成する。
【0058】
再び、
図1の説明に戻り、読み出し処理部142は、復旧処理において、(N-2)個(例えば、2個)の暗号ブロック、暗号鍵ブロック、及びパリティブロックのうちの1つのブロックが読み出しできなかった場合に、(N-2)個(例えば、2個)の暗号ブロック、暗号鍵ブロック、及びパリティブロックのうちの読み出しできなかった1つのブロック以外のブロックをXOR演算することで、読み出しできなかった1つのブロックを生成する。
【0059】
また、読み出し処理部142は、復旧処理において、(N-2)個(例えば、2個)の暗号ブロック、暗号鍵ブロック、及びパリティブロックのうちの1つのブロックが読み出しできなかった場合に、(N-2)個(例えば、2個)の暗号ブロック、暗号鍵ブロック、及びパリティブロックのうちの読み出しできなかった1つのブロック以外のブロックをXOR演算することで、読み出しできなかった1つのブロックを生成する。
【0060】
また、読み出し処理部142は、復旧処理において、2組のうちの1組目のN台の情報処理装置20から、(N-2)個の暗号ブロック、暗号鍵ブロック、及びパリティブロックのうちの2個以上つのブロックが読み出しできなかった場合に、2組のうちのもう1組のN台の情報処理装置20から、読み出しできなかった2個以上つのブロックを読み出す。
ここで、
図9及び
図10を参照して、復旧処理の詳細について説明する。
【0061】
図9は、本実施形態による情報記憶システム1による読み出しデータセットの復旧処理の一例を示す図である。ここでは、データセットの4個のブロックのうちの1つのブロックが読み出せなかった場合の復旧処理について説明する。
【0062】
図9において、“PC_A”、“PC_B”、“PC_C”、及び“PC_D”の4台の書き込み装置のセットST1のうちの、“PC_B”の情報処理装置20-2が読み出し不能の場合について説明する。なお、
図9に示す例では、読み出すデータセットは、暗号データEA、暗号データEB、暗号鍵K1、及びパリティP1であり、暗号データEBが読み出しできていない状態である。
【0063】
読み出し処理部142は、
図9に示すような場合に、暗号データEAと、暗号鍵K1と、パリティP1とをXOR演算することで、暗号データEBを生成して復旧する。すなわち、読み出し処理部142は、読み出しできている暗号データEA、暗号鍵K1、及びパリティP1から、読み出しできていない暗号データEBを生成して復旧する。
【0064】
また、
図10は、本実施形態による情報記憶システムによる読み出しデータセットの復旧処理の別の一例を示す図である。ここでは、データセットの4個のブロックのうちの2個のブロックが読み出せなかった場合の復旧処理について説明する。
【0065】
図10において、“PC_A”、“PC_B”、“PC_C”、及び“PC_D”の4台の書き込み装置のセットST1のうちの、“PC_B”及び“PC_D”の2台の情報処理装置20(20-2、20-4)が読み出し不能の場合について説明する。また、4台の書き込み装置のセットST1には、ミラー書き込み装置のセットST2が用意されているものとする。なお、
図10に示す例では、読み出すデータセットは、暗号データEA、暗号データEB、暗号鍵K1、及びパリティP1であり、暗号データEB及び暗号鍵K1が読み出しできていない状態である。
【0066】
読み出し処理部142は、
図10に示すような場合に、暗号データEB及び暗号鍵K1を記憶している、ミラー書き込み装置のセットST2のうちの“PC_F”の情報処理装置20-6及び“PC_H”の情報処理装置20-8から、暗号データEB及び暗号鍵K1のブロックを読み出して取得する。読み出し処理部142は、読み出した暗号データEBの暗号ブロック及び暗号鍵K1の暗号鍵ブロックを用いて、データセットを復旧する。
【0067】
再び、
図1の説明に戻り、読み出し処理部142は、結合処理において、読み出し処理(及び復旧処理)と、復号処理とを、記憶データを構成する全ての分割ブロックが得られるまで繰り返し、全ての分割ブロックを結合して、記憶データを生成する。
【0068】
情報処理装置20(第2の情報処理装置の一例)は、例えば、パーソナルコンピュータなどのコンピュータ装置であり、情報処理装置10からのブロック(例えば、暗号ブロックなどのブロック)を、不図示のSSDの利用可能空き領域223に記憶する。また、情報処理装置20は、情報処理装置10からに読み出し要求に応じて、記憶しているブロックを読み出して、ネットワークNW1を介して、情報処理装置10に送信する。
情報処理装置20は、NW通信部21と、記憶部22と、制御部23とを備える。
【0069】
NW通信部21は、例えば、LANカードや無線LANカードなどであり、ネットワークNW1を介して、例えば、情報処理装置10と通信する。
【0070】
記憶部22は、例えば、RAM及びSSDなどで構成されており、情報処理装置20が利用する各種情報を記憶する。
記憶部22は、装置情報記憶部221と、格納情報記憶部222と、利用可能空き領域223とを備える。
【0071】
装置情報記憶部221は、不図示のRAM又はSSDにより構成される記憶部であり、上述した装置情報記憶部121と同様である。装置情報記憶部221は、例えば、情報記憶システム1に参加している装置であって、ネットワークNW1を介して接続可能な装置識別情報を少なくとも含む装置情報を記憶する。
【0072】
格納情報記憶部222は、不図示のSSDにより構成される記憶部であり、情報処理装置20が格納(記憶)する記憶データに関する情報を含む格納情報を記憶する。ここで、
図11を参照して、格納情報記憶部222のデータ例について説明する。
【0073】
図11は、本実施形態における格納情報記憶部222のデータ例を示す図である。
図11に示すように、格納情報記憶部222は、GUIDと、PayloadNumとを対応付けた格納情報を記憶する。ここで、GUIDは、データセットを示すデータ識別情報であり、PayloadNumは、データセット内のブロック番号(i)を示している。
【0074】
例えば、
図11に示す例では、GUIDが“00001”のPayloadNumが“1”であるブロック(暗号ブロック(Head))が、当該情報処理装置20の利用可能空き領域223に格納(記憶)されていることを示している。また、GUIDが“00002”のPayloadNumが“4”であるブロック(パリティブロック)が、当該情報処理装置20の利用可能空き領域223に格納(記憶)されていることを示している。
【0075】
再び、
図1の説明に戻り、利用可能空き領域223は、情報処理装置10が備える不図示のSSDの空き領域を示している。
制御部23は、例えば、CPUなどを含むプロセッサなどであり、情報処理装置20を統括的に制御する。制御部23は、例えば、記憶処理部24を備える。
【0076】
記憶処理部24は、デバイスドライバやエージェントプログラムにより実現される処理部であり、ネットワークNW1を介して、情報処理装置10から受信したブロックを、利用可能空き領域223に記憶させる(書き込みする)とともに、情報処理装置10からの読み出し要求に応じて、利用可能空き領域223が記憶しているブロックをネットワークNW1を介して、情報処理装置10に送信する。
記憶処理部24は、例えば、受信書き込み部241と、読み出し送信部242とを備える。
【0077】
受信書き込み部241は、情報処理装置10からネットワークNW1を介して、ヘッダー部HDが付与された書き込みブロック(例えば、2個の暗号ブロック、暗号鍵ブロック、及びパリティブロックのうちのいずれかのブロック)を受信し、受信したブロックを利用可能空き領域223に記憶させる。また、受信書き込み部241は、例えば、
図11に示すように、利用可能空き領域223に記憶させたブロックに対応する格納情報を、格納情報記憶部222に記憶させる。
【0078】
読み出し送信部242は、情報処理装置10からネットワークNW1を介して受信した、GUIDを含む読み出し要求に応じて、利用可能空き領域223からGUIDに対応するブロックを読み出し、読み出したブロックを、ネットワークNW1を介して情報処理装置10に送信する。読み出し送信部242は、読み出し要求に応じて、読み出し要求に含まれるGUIDを含む格納情報が、格納情報記憶部222にあるか否かを判定する。読み出し送信部242は、読み出し要求に含まれるGUIDを含む格納情報が、格納情報記憶部222にある場合に、格納情報が示すブロックを、利用可能空き領域223から読み出し、読み出したブロックを、ネットワークNW1を介して情報処理装置10に送信する。
【0079】
次に、図面を参照して、本実施形態による情報記憶システム1の動作について説明する。
図12は、本実施形態による情報記憶システム1の記憶データの書き込み処理の一例を示すフローチャートである。
【0080】
図12に示すように、情報記憶システム1の情報処理装置10は、記憶データを書き込む場合に、まず、記憶データを分割ブロックに分割する(ステップS101)。情報処理装置10の書き込み処理部141は、分割処理として、上述した
図4に示すように、記憶データDT1にHashデータを付加したデータを、所定のデータ長(例えば、4KB)ことに分割して、複数の分割ブロックDBを生成する。
【0081】
次に、書き込み処理部141は、乱数により暗号鍵を生成する(ステップS102)。書き込み処理部141は、乱数により、分割ブロックと同一のデータ長の暗号鍵であって、データセットごとに異なる暗号鍵を、暗号ブロックとして、生成する。
【0082】
次に、書き込み処理部141は、2個の分割ブロックを暗号鍵で暗号化して2個の暗号ブロックを生成する(ステップS103)。書き込み処理部141は、順次選択した2個の分割ブロックを、例えば、
図6に示すように、暗号鍵とのXOR演算により2個の暗号ブロックを生成する。
【0083】
次に、書き込み処理部141は、2個の暗号ブロックと暗号鍵とでパリティを生成する(ステップS104)。書き込み処理部141は、例えば、
図6に示すように、2個の暗号ブロックと暗号鍵とをXOR演算することでパリティをパリティブロックとして生成する。
【0084】
次に、書き込み処理部141は、2個の暗号ブロックと、暗号鍵ブロックと、パリティブロックとを異なる装置(情報処理装置20)に記憶させる(ステップS105)。書き込み処理部141は、
図5に示すようなヘッダー部HDを、2個の暗号ブロック、暗号鍵ブロック、及びパリティブロックの各ブロックに付加する。書き込み処理部141は、装置情報記憶部121が記憶する装置情報に基づいて、書き込み装置のセットとしての4台の情報処理装置20と、ミラー書き込み装置のセットとしての別の4台の情報処理装置20とを選択する。書き込み処理部141は、選択した書き込み装置のセットとしての4台の情報処理装置20と、ミラー書き込み装置のセットとしての4台の情報処理装置20とのそれぞれに、
図7に示すように、2個の暗号ブロック、暗号鍵ブロック、及びパリティブロックを記憶させる。また、書き込み処理部141は、例えば、
図3に示すように、書き込んだ2個の暗号ブロック、暗号鍵ブロック、及びパリティブロックに対応する管理情報を、管理情報記憶部122に記憶させる。
【0085】
次に、書き込み処理部141は、全ての分割ブロックを書き込んだか否かを判定する(ステップS106)。書き込み処理部141は、上述したステップS101で分割された分割ブロックが全て記憶された(書き込まれた)か否かを判定し、分割ブロックが全て記憶された(書き込まれた)場合(ステップS106:YES)に、処理を終了する。また、書き込み処理部141は、分割ブロックが全て記憶されていない場合(ステップS106:NO)に、処理をステップS102に戻し、次に2個の分割ブロックに対して、同様の書き込み処理を実行する。
【0086】
なお、上述した
図12の処理フローにおいて、ステップS101の処理が、分割処理に対応し、ステップS102からステップS104までの処理が、ブロック生成処理に対応する。また、ステップS105の処理が、記憶処理に対応し、ステップS106の処理が繰り返し処理に対応する。
【0087】
また、
図13は、本実施形態による情報記憶システム1の記憶データの読み出し処理の一例を示すフローチャートである。
図13に示すように、情報記憶システム1の情報処理装置10は、記憶データを読み出す場合に、まず、1データセット分のデータを取得する(ステップS201)。情報処理装置10の読み出し処理部142は、例えば、管理情報記憶部122を参照して、記憶データのデータ名に対応する1データセット分のGUIDと、書き込み装置名及びミラー書き込み装置名とを取得する。読み出し処理部142は、取得した書き込み装置名の情報処理装置20に対して、GUIDに対応するブロックを読み出す読み出し要求を送信して、1データセット分のデータ(例えば、2個の暗号ブロック、暗号鍵ブロック、及びパリティブロック)を取得する。
【0088】
次に、読み出し処理部142は、取得できなかったブロックがあるか否かを判定する(ステップS202)。読み出し処理部142は、例えば、ヘッダー部HDの情報に基づいて、2個の暗号ブロック、暗号鍵ブロック、及びパリティブロックが正常に取得しているか否かを確認する。読み出し処理部142は、取得できなかったブロックがある場合(ステップS202:YES)に、処理をステップS203に進める。また、読み出し処理部142は、取得できなかったブロックがない場合(ステップS202:NO)に、処理をステップS206に進める。
【0089】
ステップS203において、読み出し処理部142は、取得できなかったブロックが2個以上であるか否かを判定する。読み出し処理部142は、取得できなかったブロックが2個以上である場合(ステップS203:YES)に、処理をステップS205に進める。また、読み出し処理部142は、取得できなかったブロックが2個以上でない(1つである)場合(ステップS203:NO)に、処理をステップS204に進める。
【0090】
ステップS204において、読み出し処理部142は、取得したブロックをXOR演算して、取得できなかったブロックを生成する。読み出し処理部142は、例えば、
図9に示すような処理を実行して、取得できなかったブロックを生成する。読み出し処理部142は、ステップS204の処理後に、処理をステップS206に進める。
【0091】
また、ステップS205において、読み出し処理部142は、取得できなかったブロックをミラーセットから取得する。読み出し処理部142は、上述した管理情報記憶部122から取得したミラー書き込み装置名の中から、取得できなかったブロックに対応する装置名を選択し、当該装置名の情報処理装置20に対して、GUIDに対応するブロックを読み出す読み出し要求を送信して、取得できなかったブロックを取得する。読み出し処理部142は、例えば、
図10に示すような処理を実行して、取得できなかったブロックを取得する。
【0092】
なお、読み出し処理部142は、予備の情報処理装置20(リザーブされた情報処理装置20)の中から、取得できなかった情報処理装置20の代わりに、新たな書き込み用の情報処理装置20を補充するようにしてもよい。読み出し処理部142は、ステップS205の処理後に、処理をステップS206に進める。
【0093】
ステップS206において、読み出し処理部142は、パリティによるチェックを行う。読み出し処理部142は、取得した2個の暗号ブロック及び暗号鍵ブロックのXOR演算を実行して、生成したパリティと、パリティブロックのパリティとが一致するか否かにより、正常に取得できたかのチェックを行う。
【0094】
次に、読み出し処理部142は、2個の暗号ブロックを暗号鍵で復号して2個の分割ブロックを生成する(ステップS207)。読み出し処理部142は、
図8に示すように、取得した1データセットのうちの2個の暗号ブロックのそれぞれと、暗号鍵ブロックの暗号鍵とをXOR演算して復号し、2個の分割ブロックを生成する。
【0095】
次に、読み出し処理部142は、全ての分割ブロックを読み出したか否かを判定する(ステップS208)。読み出し処理部142は、上述した管理情報記憶部122の管理情報に基づいて、分割ブロックが全て読み出されたか否かを判定し、分割ブロックが全て読み出された場合(ステップS208:YES)に、処理をステップS209に進める。また、読み出し処理部142は、分割ブロックが全て読み出されていない場合(ステップS208:NO)に、処理をステップS201に戻し、次に2個の分割ブロック(次の1データセット)に対して、同様の読み出し処理を実行する。
【0096】
ステップS09において、読み出し処理部142は、分割ブロックを結合して記憶データを生成する。ステップS209の処理後に、読み出し処理部142は、処理を終了する。
【0097】
なお、上述した
図13の処理フローにおいて、ステップS201の処理が、読み出し処理に対応し、ステップS202からステップS205までの処理が復旧処理に対応する。また、ステップS207の処理が、復号処理に対応し、ステップS208及びステップS209の処理が、結合処理に対応する。
【0098】
以上説明したように、本実施形態による情報記憶システム1は、情報処理装置10(第1の情報処理装置)と、N台以上の複数の情報処理装置20(第2の情報処理装置)とを備え、情報処理装置10と、複数の情報処理装置20とが通信可能に接続されている情報記憶システム1であって(但し、Nは、3以上の整数)、情報処理装置10は、記憶処理部14を備える。記憶処理部14は、記憶データを記憶する場合に、分割処理と、ブロック生成処理と、記憶処理と、繰り返し処理とを実行する。記憶処理部14は、分割処理において、記憶させる記憶データを、所定のデータ長の分割ブロックに分割する。記憶処理部14は、ブロック生成処理において、分割した複数の分割ブロックのうちから、(N-2)個の分割ブロックを順次選択し、選択した(N-2)個の分割ブロックを暗号鍵で共通鍵暗号方式により暗号化した(N-2)個の暗号ブロックと、所定のデータ長の暗号鍵である暗号鍵ブロックと、(N-2)個の暗号ブロック及び暗号鍵ブロックの各ブロックを所定のデータ長でのXOR演算(排他的論理和演算)により生成した所定のデータ長のパリティブロック(誤り検出訂正ブロック)とを生成する。記憶処理部14は、記憶処理において、複数の情報処理装置20のうちのN台を1組として選択し、(N-2)個の暗号ブロック、暗号鍵ブロック、及びパリティブロックの各ブロックを、選択したN台の異なる情報処理装置20が備える記憶部(例えば、SSD)の利用可能空き領域223(空き領域)に記憶させる。記憶処理部14は、繰り返し処理において、複数の分割ブロックの全てが記憶されるまで、ブロック生成処理と、記憶処理とを繰り返す。
【0099】
これにより、本実施形態による情報記憶システム1は、専用のサーバ装置を必要とせず、ネットワークNW1に接続された複数の情報処理装置20の利用可能空き領域223を利用して、記憶データを分割して記憶するため、ストレージ性能としての記憶容量の制限を低減することができる。また、本実施形態による情報記憶システム1では、各情報処理装置20に分割した分割ブロックを記憶するため、分割データ単独では意味をなさない情報である上、暗号化して記憶するため、セキュリティを高めることができる。また、本実施形態による情報記憶システム1では、パリティブロックを生成して、情報処理装置20に記憶するため、1個の分割ブロック(暗号ブロック)が読み出しできない場合であってもよ、パリティブロックにより、復旧可能である。
【0100】
よって、本実施形態による情報記憶システム1は、記憶容量の制限を低減し、信頼性の高い情報記憶を実現することができる。
また、本実施形態による情報記憶システム1は、専用のサーバ装置を必要としないため、専用のサーバ装置のメンテナンスが不要になるという効果が得られる。
【0101】
また、本実施形態では、記憶処理部14は、記憶データを読み出す場合に、読み出し処理と、復旧処理と、復号処理と、結合処理とを実行する。記憶処理部14は、読み出し処理において、N台で1組の情報処理装置20から、(N-2)個の暗号ブロック、暗号鍵ブロック、及びパリティブロックの各ブロックを読み出す。記憶処理部14は、復旧処理において、(N-2)個の暗号ブロック、暗号鍵ブロック、及びパリティブロックのうちの1つのブロックが読み出しできなかった場合に、(N-2)個の暗号ブロック、暗号鍵ブロック、及びパリティブロックのうちの読み出しできなかった1つのブロック以外のブロックをXOR演算することで、読み出しできなかった1つのブロックを生成する。記憶処理部14は、復号処理において、読み出した(N-2)個の暗号ブロックを暗号鍵ブロックの暗号鍵で共通鍵暗号方式により復号して、(N-2)個の分割ブロックを復元する。記憶処理部14は、結合処理において、読み出し処理と、復号処理とを、記憶データを構成する全ての分割ブロックが得られるまで繰り返し、全ての分割ブロックを結合して、記憶データを生成する。
【0102】
これにより、本実施形態による情報記憶システム1は、分割して情報処理装置20に記憶されている記憶データを安全に読み出すことができるため、さらに信頼性の高い情報記憶を実現することができる。
【0103】
また、本実施形態では、記憶処理部14は、記憶処理において、2組のN台の情報処理装置20を選択し、2組のそれぞれに、(N-2)個の暗号ブロック、暗号鍵ブロック、及びパリティブロックを記憶させる。記憶処理部14は、復旧処理において、2組のうちの1組目のN台の情報処理装置20から、(N-2)個の暗号ブロック、暗号鍵ブロック、及びパリティブロックのうちの2個以上つのブロックが読み出しできなかった場合に、2組のうちのもう1組のN台の情報処理装置20から、読み出しできなかった2個以上つのブロックを読み出す。
【0104】
これにより、本実施形態による情報記憶システム1は、2個以上のブロックが読み出しできない場合であっても、ブロックのデータを復旧することができる。よって、本実施形態による情報記憶システム1は、さらに信頼性を向上させることができる。
【0105】
また、本実施形態では、N台が、4台以上であり、記憶処理部14は、乱数に基づいて、(N-2)個(2個以上)の分割ブロックごとに、異なる暗号鍵を生成する。記憶処理部14は、ブロック生成処理において、分割ブロックと暗号鍵とをXOR演算して暗号化し、暗号ブロックを生成し、復号処理において、暗号ブロックと暗号鍵とをXOR演算して復号し、分割ブロックを生成する。
【0106】
これにより、本実施形態による情報記憶システム1は、乱数に基づく暗号鍵とXOR演算する暗号方式を使用するため、暗号化処理及び復号処理を簡略にすることが出来る上、乱数に基づく暗号鍵を(N-2)個の分割ブロックごとに生成するため、セキュリティをさらに高めることができる。
【0107】
また、本実施形態では、記憶処理部14は、記憶処理において、(N-2)個の暗号ブロック、暗号鍵ブロック、及びパリティブロックを含むデータセットを識別するGUID(データ識別情報)と、データセット内のブロックの番号を示すブロック番号(例えば、PayloadNum)と、ブロックの種類を識別する種類識別情報(例えば、HeadOrTail/KeyParity)と、次のブロック番号(例えば、PointerToNextData)とを含むヘッダー部HDを付加して、(N-2)個の暗号ブロック、暗号鍵ブロック、及びパリティブロックの各ブロックを、選択したN台の異なる情報処理装置20の利用可能空き領域223に記憶させる。
【0108】
これにより、本実施形態による情報記憶システム1は、ヘッダー部HDを用いて、(N-2)個の暗号ブロック、暗号鍵ブロック、及びパリティブロックの判別を、簡単、且つ正確に行うことができる。
【0109】
また、本実施形態による情報記憶システム1は、暗号ブロック、暗号鍵ブロック、及びパリティブロックのいずれかを記憶可能な情報処理装置20を識別する装置識別情報と、利用可能空き領域223の容量とを対応付けた装置情報を記憶する装置情報記憶部121を備える。記憶処理部14は、装置情報記憶部121が記憶する装置情報に基づいて、N台の情報処理装置20を選択する。
これにより、本実施形態による情報記憶システム1は、装置情報記憶部121が記憶する装置情報に基づいて、適切な情報処理装置20を選択することができる。
【0110】
また、本実施形態では、情報処理装置20が備える記憶部が、SSDである。
これにより、本実施形態による情報記憶システム1は、HDD(Hard Disk Drive)に比べて、高速なアクセスを実現することができる。
【0111】
また、本実施形態による情報処理装置10は、N台以上の複数の情報処理装置20(接続先情報処理装置)と通信可能に接続されている情報処理装置であって(但し、Nは、3以上の整数)、記憶処理部14を備える。記憶処理部14は、記憶データを記憶する場合に、上述した分割処理と、ブロック生成処理と、記憶処理と、繰り返し処理とを実行する。
これにより、本実施形態による情報処理装置10は、上述した情報記憶システム1と同様の効果を奏し、記憶容量の制限を低減し、信頼性の高い情報記憶を実現することができる。
【0112】
また、本実施形態による情報記憶方法は、情報処理装置10と、N台以上の複数の情報処理装置20とを備え、情報処理装置10と、複数の情報処理装置20とが通信可能に接続されている情報記憶システム1の情報記憶方法であって(但し、Nは、3以上の整数)、分割ステップと、ブロック生成ステップと、記憶ステップとを含み、複数の分割ブロックの全てが記憶されるまで、ブロック生成ステップと、記憶ステップとを繰り返す。分割ステップにおいて、情報処理装置10が、記憶データを記憶する場合に、記憶させる記憶データを、所定のデータ長の分割ブロックに分割する。ブロック生成ステップにおいて、情報処理装置10が、分割した複数の分割ブロックのうちから、(N-2)個の分割ブロックを順次選択し、選択した(N-2)個の分割ブロックを暗号鍵で共通鍵暗号方式により暗号化した(N-2)個の暗号ブロックと、所定のデータ長の暗号鍵である暗号鍵ブロックと、(N-2)個の暗号ブロック及び暗号鍵ブロックの各ブロックを所定のデータ長での排他的論理和演算により生成した所定のデータ長のパリティブロックとを生成する。記憶ステップにおいて、情報処理装置10が、複数の情報処理装置20のうちのN台を1組として選択し、(N-2)個の暗号ブロック、暗号鍵ブロック、及びパリティブロックの各ブロックを、選択したN台の異なる情報処理装置20が備える記憶部の利用可能空き領域223に記憶させる。
これにより、本実施形態による情報記憶方法は、上述した情報記憶システム1と同様の効果を奏し、記憶容量の制限を低減し、信頼性の高い情報記憶を実現することができる。
【0113】
なお、本発明は、上記の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で変更可能である。
上記の実施形態において、情報処理装置10及び情報処理装置20は、パーソナルコンピュータである例を説明したが、これに限定されるものではなく、例えば、タブレット端末や、スマートフォンなどの他の情報処理装置に適用してもよい。
【0114】
また、上記の実施形態において、情報処理装置10と情報処理装置20とは、異なる機能装置として説明したが、これに限定されるものではなく、情報処理装置10の機能を情報処理装置20が備えるようにしてもよいし、情報処理装置20の機能を情報処理装置10が備えるようにしてもよい。
【0115】
また、上記の実施形態において、Nが“4”であり、(N-2)が“2”である例を説明したが、これに限定されるものではなく、Nが“3”又は、“5以上”であってもよい。
また、上記の実施形態において、書き込み処理部141は、
図7に示すように、同一の記憶データに対して、同一の書き込み装置のセットST1及びミラー書き込み装置のセットST2を選択する例を説明したが、データセットごとに、異なる書き込み装置のセットST1及びミラー書き込み装置のセットST2を選択するようにしてもよい。
【0116】
また、上記の実施形態において、書き込み処理部141は、
図7に示すように、データセットごとに、書き込み装置のセットST1及びミラー書き込み装置のセットST2に、2個の暗号ブロック、暗号鍵ブロック、及びパリティブロックを異なる順番で書き込む例を説明したが、これに限定されるものではない。書き込み処理部141は、例えば、同一の書き込み装置のセットST1及びミラー書き込み装置のセットST2に対して、2個の暗号ブロック、暗号鍵ブロック、及びパリティブロックをデータセットごとに、同一の順番で書き込むようにしてもよい。
【0117】
また、上記の実施形態において、共通鍵暗号方式として、XOR暗号方式を使用sる例を説明したが、これに限定されるものではなく、例えば、DES(Data Encryption Standard)やAES(Advanced Encryption Standard)など他の暗号方式を使用するようにしてもよい。
【0118】
また、上記の実施形態において、情報処理装置10が1台である例を説明したが、これに限定されるものではなく、情報記憶システム1は、複数の情報処理装置10を備えるようにしてもよい。また、各情報処理装置10が、装置情報記憶部121及び管理情報記憶部122を備えるようにしてもよいし、専用の情報処理装置10が、装置情報記憶部121及び管理情報記憶部122を備えるようにしてもよい。また、ネットワークNW1に接続されたサーバ装置などが、装置情報記憶部121及び管理情報記憶部122を備えるようにしてもよい。
【0119】
なお、上述した情報記憶システム1(情報処理装置10及び情報処理装置20)が備える各構成は、内部に、コンピュータシステムを有している。そして、上述した情報記憶システム1(情報処理装置10及び情報処理装置20)が備える各構成の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述した情報記憶システム1(情報処理装置10及び情報処理装置20)が備える各構成における処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、インターネットやWAN、LAN、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、CD-ROM等の非一過性の記録媒体であってもよい。
【0120】
また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部又は外部に設けられた記録媒体も含まれる。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後に情報記憶システム1(情報処理装置10及び情報処理装置20)が備える各構成で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0121】
また、上述した機能の一部又は全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。上述した各機能は個別にプロセッサ化してもよいし、一部、又は全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、又は汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【符号の説明】
【0122】
1 情報記憶システム
10、20、20-1、20-2、20-3、20-4、20-5、20-6、20-7、20-8 情報処理装置
11、21 NW通信部
12、22 記憶部
13、23 制御部
14、24 記憶処理部
121、221 装置情報記憶部
122 管理情報記憶部
123、223 利用可能空き領域
222 格納情報記憶部
141 書き込み処理部
142 読み出し処理部
241 受信書き込み部
242 読み出し送信部
NW1 ネットワーク