(57)【要約】  本明細書は、分散型ストレージ方法及び装置、コンピュータ機器及び記憶媒体を開示し、前記方法は、記憶対象ファイルをグループ化して、複数のデータパケットを形成するステップと、すべてのデータパケットで少なくとも三つのデータフラグメントを形成するステップであって、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加されるステップと、各データフラグメントを分散型記憶ノードに分散的に記憶するステップと、データフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とを記録するステップと、ローカルでの記憶対象ファイルを削除するステップと、を含む。【選択図】  図１
2021506004.tif 000002
【特許請求の範囲】
【請求項１】
記憶対象ファイルをグループ化して、複数のデータパケットを形成するステップと、
すべてのデータパケットで少なくとも三つのデータフラグメントを形成するステップであって、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加されるステップと、
各データフラグメントを分散型記憶ノードに分散的に記憶するステップと、
データフラグメントとデータパケットとの対応関係と、前記記憶ノードと記憶されたデータフラグメントとの対応関係とを記録するステップと、
ローカルでの記憶対象ファイルを削除するステップと、
を含む分散型ストレージ方法。
【請求項２】
すべてのデータパケットで少なくとも三つのデータフラグメントを形成するステップの前に、
秘密鍵を使用して各データパケットを順序暗号化するステップであって、第１のデータパケット以外の他の各データパケットの秘密鍵は、前のデータパケットの暗号文に基づいて生成するステップと、
前記各データパケットの暗号化順序を記録するステップと、
を含む請求項１に記載の分散型ストレージ方法。
【請求項３】
データフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とを記録するステップが、
マークルツリー形式を使用して、データフラグメントに含まれるデータパケットのハッシュ値をフラグメントマークルツリーとして記録するステップと、
各フラグメントマークルツリーと各前記データフラグメントが存在する記憶ノードとの対応関係を記録するステップと、
を含む請求項２に記載の分散型ストレージ方法。
【請求項４】
前記各データパケットの暗号化順序を記録するステップが、
データパケットの暗号化順序に従って、各データパケットのハッシュ値を算出し、元のマークルツリーを形成するステップを含む請求項３に記載の分散型ストレージ方法。
【請求項５】
記憶ファイルの照会要求が生成された場合、ローカルに記録されたデータフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とに基づいて、記憶ノードから各データパケットをそれぞれダウンロードするステップと、
各データパケットに基づいて記憶ファイルを復元して形成するステップと、
を含む請求項３に記載の分散型ストレージ方法。
【請求項６】
ローカルに記録されたデータフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とに基づいて、記憶ノードから各データパケットをそれぞれダウンロードするステップが、
ローカルに記録された各データパケットの暗号化順序に基づいて、第１のデータパケットを現在のデータパケットとして決定するステップと、
データフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とに基づいて、現在のデータパケットが存在する記憶ノードを現在のパケットノードとして決定するステップと、
前記現在のパケットノードからデータフラグメントをダウンロードし、前記データフラグメントから現在のデータパケットを抽出するステップと、
対応する秘密鍵を使用して前記現在のデータパケットを復号化し、現在のデータパケットの暗号文を使用して、次のデータパケットに対応する秘密鍵を決定するステップと、
次のデータパケットを現在のデータパケットとして更新するステップと、
現在のデータパケットが既にダウンロードされたデータフラグメントに記憶された場合、復号化操作に戻って実行するステップと、
現在のデータパケットが既にダウンロードされたデータフラグメントに記憶されていない場合、すべてのデータパケットのダウンロードが完了するまで、現在のパケットノードを決定する操作に戻って実行するステップと、
を含む請求項５に記載の分散型ストレージ方法。
【請求項７】
対応する秘密鍵を使用して前記現在のデータパケットを復号化するステップ前に、
抽出された現在のデータパケットのハッシュ値を算出し、ローカルに記憶されている現在のデータパケットのハッシュ値とマッチングして、前記現在のデータパケットの有効性を検証するステップを含む請求項６に記載の分散型ストレージ方法。
【請求項８】
各データフラグメントを分散型記憶ノードに分散的に記憶するステップが、
各データフラグメントをブロックチェーンネットワーク内の各記憶ノードにそれぞれ記憶するステップと、
データフラグメントの記憶ノードにおける記憶関係をスマートコントラクトとし、ブロックチェーンネットワーク内のブロック生成ノードに提供して、スマートコントラクトをブロックに追加して記憶するステップと、
を含む請求項１から７のいずれか一項に記載の分散型ストレージ方法。
【請求項９】
記憶対象ファイルをグループ化して、複数のデータパケットを形成するように構成されるデータグループ化モジュールと、
すべてのデータパケットで少なくとも三つのデータフラグメントを形成するように構成されるデータフラグメントモジュールであって、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加されるデータフラグメントモジュールと、
各データフラグメントを分散型記憶ノードに分散的に記憶するように構成されるデータ記憶モジュールと、
データフラグメントとデータパケットとの対応関係と、前記記憶ノードと記憶されたデータフラグメントとの対応関係とを記録するように構成される関係記録モジュールと、
ローカルでの記憶対象ファイルを削除するように構成されるファイル削除モジュールと、
を備える分散型ストレージ装置。
【請求項１０】
一つ又は複数のプロセッサと、
一つ又は複数のプログラムを記憶するように構成される記憶装置と、を備え、
前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行される場合、前記一つ又は複数のプロセッサが、請求項１から８のいずれか一項に記載の分散型ストレージ方法を実現するコンピュータ機器。
【請求項１１】
コンピュータプログラムが記憶されているコンピュータ記憶媒体であって、
当該プログラムがプロセッサによって実行される場合、請求項１から８のいずれか一項に記載の分散型ストレージ方法を実現するコンピュータ記憶媒体。
【発明の詳細な説明】
【優先権情報】
【０００１】
本願は、２０１８年５月１８日付に中国特許庁に提出した、中国特許出願番号が「２０１８１０４７９４６４．３」である中国特許出願の優先権を主張するものであり、当該出願のすべての内容は、引用により本願に組み込まれる。
【技術分野】
【０００２】
本願の実施例は、データストレージ技術の分野に関し、例えば、分散型ストレージ方法及び装置、コンピュータ機器及び記憶媒体に関する。
【背景技術】
【０００３】
関連技術中のクラウドストレージ技術では、一般的には、集中型サーバを介して記憶する。記憶データが多くなると伴い、サーバストレージ空間と帯域幅リソースの占有が深刻になり、クラウドストレージコストが続いて増加する。また、関連するクラウドストレージ技術でクラウドに保存されているデータは暗号化されず、データのプライバシーは、大型のクラウドストレージプロバイダーの信用によって支持される。
【０００４】
分散型ストレージ技術を採用する場合、データの脱中心化ストレージによって、信用が脱中心化され、記憶ノードが不安定で紛失しやすく、攻撃を受けやすくなることによって、データストレージの不安全が問題となる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
以下では、本明細書で詳細に説明される主題を、概要して説明する。本概要は、請求項の保護範囲を限定するためのものではない。
【０００６】
本願の実施例は、ユーザが分散型ネットワークにファイルを記憶して記憶コストを削減することが容易になり、また記憶ファイルのプライバシーとセキュリティを効果的に向上させ、攻撃者が元のファイルを復元することを回避することができる分散型ストレージ方法及び装置、コンピュータ機器及び記憶媒体を提供する。
【課題を解決するための手段】
【０００７】
本願の実施例は、分散型ストレージ方法を提供し、記憶対象ファイルをグループ化して、複数のデータパケットを形成するステップと、すべてのデータパケットで少なくとも三つのデータフラグメントを形成するステップであって、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加されるステップと、各データフラグメントを分散型記憶ノードに分散的に記憶するステップと、データフラグメントとデータパケットとの対応関係と、前記記憶ノードと記憶されたデータフラグメントとの対応関係とを記録するステップと、ローカルでの記憶対象ファイルを削除するステップと、を含む。
【０００８】
本願の別の実施例は、分散型ストレージ装置をさらに提供し、記憶対象ファイルをグループ化して、複数のデータパケットを形成するように構成されるデータグループ化モジュールと、すべてのデータパケットで少なくとも三つのデータフラグメントを形成するように構成されるデータフラグメントモジュールであって、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加されるデータフラグメントモジュールと、各データフラグメントを分散型記憶ノードに分散的に記憶するように構成されるデータ記憶モジュールと、データフラグメントとデータパケットとの対応関係と、前記記憶ノードと記憶されたデータフラグメントとの対応関係とを記録するように構成される関係記録モジュールと、ローカルでの記憶対象ファイルを削除するように構成されるファイル削除モジュールと、を備える。
【０００９】
本願の別の実施例は、コンピュータ機器をさらに提供し、前記コンピュータ機器は、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶するように構成される記憶装置と、を備え、前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行される場合、前記一つ又は複数のプロセッサが、本願の任意の実施例により提供された分散型ストレージ方法を実現する。
【００１０】
本願の別の実施例は、コンピュータプログラムが記憶されているコンピュータ記憶媒体をさらに提供し、当該プログラムがプロセッサによって実行される場合、本願の任意の実施例により提供された分散型ストレージ方法を実現する。
【００１１】
図面と詳細の説明を読んで理解した後、他の態様を理解することができる。
【図面の簡単な説明】
【００１２】
【図１】本願の実施例１により提供された分散型ストレージ方法のフローチャートである。
【図２ａ】本願の実施例２により提供された分散型ストレージ方法のフローチャートである。
【図２ｂ】本願の実施例２に関する元のマークルツリーの概略構成図である。
【図３ａ】本願の実施例３により提供された分散型ストレージ方法のフローチャートである。
【図３ｂ】本願の実施例３により提供された分散型ストレージ方法において記憶ファイルを復元する方法のフローチャートである。
【図４】本願の実施例４により提供された分散型ストレージ方法のフローチャートである。
【図５】本願の実施例５により提供された分散型ストレージ装置の概略図である。
【図６】本願の実施例６により提供されたコンピュータ機器の概略構成図である。
【発明を実施するための形態】
【００１３】
以下、図面及び実施例を参照して本願についてさらに詳しく説明する。なお、ここで説明される具体的な実施例は、単なる本願を解釈するためのものであり、本願を限定するものではない。
【００１４】
なお、説明の便宜上、図面には、全部内容ではなく、本願に関する一部だけが示される。例示的な実施例をさらに詳しく検討する前に言及せざるを得ないのは、一部の例示的な実施例は、フローチャートとして描画される処理又は方法として説明される。フローチャートが各操作（又はステップ）を順次処理として説明するが、そのうち、多くの操作は、並行的に、併発的に又は同時に実施することができる。また、各操作の手順は、改めて整えることができる。操作が完成する場合、前記処理は、終了されてもよいが、図面に含まれていない付加ステップを有してもよい。前記処理は、方法、関数、規程、サブルーチン、サブプログラムなどに対応することができる。
【００１５】
実施例１
図１は、本願の実施例１により提供された分散型ストレージ方法のフローチャートである。本実施例は、分散型ネットワークにファイルを記憶する場合に適用されることができ、当該方法は、分散型ストレージ装置によって実行されることができ、当該装置は、ソフトウェア及び／又はハードウェアの方式で実現され、一般的には、任意のデータストレージを開始することができるコンピュータ機器に集積されることができ、図１に示すように、当該方法は、ステップＳ１１０、ステップＳ１２０、ステップＳ１３０、ステップＳ１４０、及びステップＳ１５０を含む。
【００１６】
ステップＳ１１０において、記憶対象ファイルをグループ化して、複数のデータパケットを形成する。
【００１７】
その中、記憶対象ファイルは、テキスト、画像、ビデオ、オーディオ、及び他のタイプ（ｚｉｐ形式の圧縮ファイルなど）の記憶可能なファイルであってもよく、本願の実施例は、記憶対象ファイルのタイプに対して限定されない。データパケットは、記憶対象ファイル中の一部のファイルデータであってもよい。
【００１８】
本願の実施例では、記憶対象ファイルを分散的に記憶する前に、まず、記憶対象ファイルをグループ化して、複数のデータパケットに分割する。記憶対象ファイルをグループ化することは、Ｎ個のデータパケットに平均的に分割する方式を採用して、各データパケットが同じデータ量のファイルデータを含むようにすることができる。ランダムに分割する方式を採用して記憶対象ファイルをグループ化して、各データパケットが異なるデータ量のファイルデータを含むようにすることができる。もちろん、当業者は、実際のニーズに応じて、本技術案の技術的背景において、他のファイルグループ化の方式を構築することもでき、本願の実施例は、これに限定されない。
【００１９】
ステップＳ１２０において、すべてのデータパケットで少なくとも三つのデータフラグメントを形成し、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加される。
【００２０】
本願の実施例では、データフラグメントは、部分的なデータパケットで構成され、すなわち各データフラグメントは、すべてのデータパケットを含まない。その中、各データフラグメントに含まれるデータパケットの数は、同じであってもよく、異なっていてもよく、例えば、データフラグメントに含まれるデータパケット数は、２つ、５つ、８つ、又はそれ以上であってもよく、本願の実施例は、データフラグメントに含まれるデータパケットの数に対いて限定しない。
【００２１】
データストレージのセキュリティを向上させるために、すべてのデータパケットで少なくとも三つのデータフラグメントを形成し、各データパケットがすべて少なくとも二つのデータフラグメントに追加することが確保され、すなわち各データパケットが少なくとも二つの記憶コピーを形成することが確保される。グループ化してフラグメントされる処理中に、データパケットは、冗長に記憶され、Ｍコピー記憶については、一つのデータパケットは、Ｍ個のデータフラグメントに出現される。コピーの数Ｍは、２以上であり、予め設定されてもよく、実際の状況に応じて、例えば記憶ファイルの重要度のレベル、記憶ノードの安定性の状況に応じて動的に調整してもよい。
【００２２】
ステップＳ１３０において、各データフラグメントを分散型記憶ノードに分散的に記憶する。
【００２３】
その中、分散型ネットワークの記憶ノードは、自各に独立して動作するノードであり、分散型ストレージアルゴリズムに基づいてスケジューリングされることができる。
【００２４】
本願の実施例では、データパケットに基づいて形成されたデータフラグメントを分散型記憶ノードに分散的に記憶することができ、記憶対象ファイルで形成されるデータパケットを直接に記憶しない。選択可能には、各分散型記憶ノードは、一つのデータフラグメントのみを記憶することができる。
【００２５】
これに対応して、各データフラグメントが各分散型記憶ノードに分散的に記憶する場合、リードソロモン冗長アルゴリズム（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ  Ｒｅｄｕｎｄａｎｃｙ）を採用することができる。このアルゴリズムは、多項式演算／エラー修正コード（Ｅｒａｓｕｒｅ  Ｃｏｄｅ）によって誤ったデータを修正する。したがって、一部のノードがオフラインしたり、又はデータが破損しても、データファイルは、復元に成功され、アクセスされることができる。例示的には、一つの記憶対象ファイルは、複数のデータパケットに分割され、データフラグメントを形成した後に散布され、且つＭコピーをＮ個の分散型記憶ノードに（例えば３０個のノード、３コピー記憶）冗長に記憶され、各分散型記憶ノードは、一部のデータパケットを記憶する。Ｎ／Ｍ個の通常の分散型記憶ノードが生存している限り、元の記憶対象ファイルを復元することができる。
【００２６】
一例では、３コピー冗長記憶を使用することができる。３０個の分散型記憶ノードを使用する場合、同時に１０個の通常の分散型記憶ノードが生存している限り、可用の利用可能なストレージサービスを提供することができる。各分散型記憶ノードの信頼性が５０％だけであると仮定すると、簡単な算出を経て、分散型ネットワークのサービス安定性がｆ＝１−（１−７０％）２１、すなわち９９．９９９９５％であると取得することができる。
【００２７】
ステップＳ１４０において、データフラグメントとデータパケットとの対応関係と、前記記憶ノードと記憶されたデータフラグメントとの対応関係とを記録する。
【００２８】
その中、データフラグメントとデータパケットとの対応関係は、データパケットに基づいて対応するデータフラグメントを検索することを実現することができ、記憶ノードと記憶されたデータフラグメントとの対応関係は、記憶されたデータフラグメントに基づいて対応する記憶ノードを検索することを実現して、記憶ノードから対応する記憶されたデータフラグメントをダウンロードするようにすることができる。同時に、2つのグループの対応関係は、データパケットの検証を実現することもできる。
【００２９】
本願の実施例では、データフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とに基づいて、データパケット及びデータフラグメントのプライバシー保護を実現することができる。
【００３０】
一例では、データフラグメントとデータパケットとの対応関係は、データフラグメント１がそれぞれ番号１、２、及び３に対応するデータパケットを含む。記憶ノードと記憶されたデータフラグメントとの対応関係は、記憶ノード５によって記憶された番号１のデータフラグメントであってもよい。
【００３１】
ステップＳ１５０において、ローカルでの記憶対象ファイルを削除する。
【００３２】
これに対応して、各データフラグメントの記憶及び各対応関係の記録が完了した後、ローカルでの記憶対象ファイルを削除して、記憶対象ファイルが不正の攻撃者によって取得されることを防止することができる。
【００３３】
本願の実施例は、記憶対象ファイルをグループ化して複数のデータパケットを形成し、すべてのデータパケットで少なくとも三つのデータフラグメントを形成し、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加され、次に、各データフラグメントを分散型記憶ノードに分散的に記憶することによって、データの分散型ストレージを実現する。分散型ストレージは、中心化記憶のボトルネック問題を解決し、帯域幅コストと記憶コストを削減し、且つデータパケットの複数のコピー記憶を使用し、一部の記憶ノードの障害によってデータ全体の復元不可能を回避する。また、各記憶ノードに記憶されているデータフラグメントは、すべてのデータ成分が含まれていないため、一つの記憶ノードを破壊することによって元の記憶ファイルを復元することは不可能である。上記の技術案は、関連するクラウドストレージ技術によって生成された記憶コスト継続的な増加及び分散型ストレージ技術によって引き起こされたデータストレージ不安全な問題を解決し、ユーザが分散型ネットワークにファイルを記憶して記憶コストを削減することが容易になり、また記憶ファイルのプライバシーとセキュリティを効果的に向上させ、攻撃者が元のファイルを復元することを回避することができる。
【００３４】
実施例２
図２ａは、本願の実施例２により提供された分散型ストレージ方法のフローチャートである。本実施例は、上記の実施例に基づいて詳細化し、本実施例では、データパケットを暗号化する実現方式を提供する。同時に、データフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とを記録するステップは、マークルツリー形式を使用して、データフラグメントに含まれるデータパケットのハッシュ値をフラグメントマークルツリーとして記録するステップと、各フラグメントマークルツリーと各前記データフラグメントが存在する記憶ノードとの対応関係を記録するステップに詳細化する。これに対応して、図２ａに示すように、本実施例の方法は、ステップＳ２１０、ステップＳ２２０、ステップＳ２３０、ステップＳ２４０、ステップＳ２５０、ステップＳ２６０、及びステップＳ２７０を含むことができる。
【００３５】
ステップＳ２１０において、記憶対象ファイルをグループ化して、複数のデータパケットを形成する。
【００３６】
ステップＳ２２０において、秘密鍵を使用して各データパケットを順序に暗号化し、第１のデータパケット以外の他の各データパケットの秘密鍵は、前のデータパケットの暗号文に基づいて生成し、前記各データパケットの暗号化順序を記録する。
【００３７】
本願の実施例では、データパケットのセキュリティを向上させるために、記憶対象ファイルをグループ化した後、各データパケットを暗号化することができる。選択可能には、データパケットの暗号化方式は、順序暗号化であってもよく、各データパケットに対して対称暗号化アルゴリズム及びグループ化暗号化メカニズムを使用して暗号化を行い、毎回に１２８ビットのデータを対称暗号化することができ、暗号化の秘密鍵は最大２５６ビットに達することができる。その中、第１のデータパケットは、単独で暗号化して対応する暗号文を生成することができ、その後、他のデータパケットを暗号化する時に、前のデータパケットの暗号文を一部入力として、次のデータパケットの出力を混同することができる。前のデータパケットの暗号文を使用して次のデータパケットの秘密鍵を算出して決定することができる。次のデータパケットの秘密鍵は、固定秘密鍵の一部を含むことができ、別の部分は、暗号文で算出して決定される。従来のＣＰＵ（中央処理装置、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ／Ｐｒｏｃｅｓｓｏｒ）は、グループ化暗号化アルゴリズムに対して命令セットの最適化を行っていないため、上記の前のデータパケットに依存する順序暗号化方式に対してブルートフォースを行うことは巨大な攻撃コストがかかる必要がある。また、秘密鍵が漏洩しても記憶ファイル内容が漏洩しなく、攻撃者がすべてのデータパケットを取得し、且つ暗号化順序を知った場合のみ、記憶ファイルの内容を解読することができる。秘密鍵を使用して各データパケットを順序に暗号化した後、後に元の記憶対象ファイルを復元することを容易にするために、各データパケットの暗号化順序を記録することもできる。
【００３８】
本願の任意の実施例では、各データパケットの暗号化順序を記録するステップは、データパケットの暗号化順序に従って、各データパケットのハッシュ値を算出し、元のマークルツリー（Ｍｅｒｋｌｅ  ｔｒｅｅｓ）を形成するステップを含む。
【００３９】
その中、元のマークルツリーは、データパケットに基づいて算出された各ハッシュ値に基づいて構築されたマークルツリーである。例示的には、図２ｂは、本願の実施例２に関する元のマークルツリーの概略構成図である。図２ｂに示すように、四つのデータパケット（ＤＡＴＡ  ＢＬＯＣＫ）を含み、それぞれ各データパケットのハッシュ値を算出し、左から右への順序に従って元のマークルツリーの葉ノード（Ｈａｓｈ−ＬＥＡＦ）を形成し、次に、元のマークルツリーのルートノード（Ｈａｓｈ−ＲＯＯＴ）が算出されるまで、二つの葉ノードを組み合わせてハッシュ値を上位ブランチ（Ｈａｓｈ−ＢＲＡＮＣＨ）として再算出する。元のマークルツリーは、データパケットのハッシュ値を記録するだけでなく、ツリー構造でデータパケットの順序を記録することもできる。当該元のマークルツリーでは、第２のデータパケット（ＤＡＴＡ  ＢＬＯＣＫ２）を例として、三つのデータフラグメント（ＤＡＴＡ  ＳＨＡＲＤ１、ＤＡＴＡ  ＳＨＡＲＤ２、及びＤＡＴＡ  ＳＨＡＲＤ３）に記憶されていることも記録する。
【００４０】
これに対応して、マークルツリーの方式で各データパケットの暗号化順序を記録することができ、さらに、マークルツリーの利点を利用して分散型ネットワークの実行効率と拡張性を向上させ、後に復元データの検証の根拠とすることができる。
【００４１】
ステップＳ２３０において、すべてのデータパケットで少なくとも三つのデータフラグメントを形成し、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加される。
【００４２】
ステップＳ２４０において、各データフラグメントを分散型記憶ノードに分散的に記憶する。
【００４３】
ステップＳ２５０において、マークルツリー形式を使用して、データフラグメントに含まれるデータパケットのハッシュ値をフラグメントマークルツリーとして記録する。
【００４４】
その中、フラグメントマークルツリーは、データフラグメントに含まれるデータパケットに基づいて算出された各ハッシュ値に基づいて構築されたマークルツリーである。
【００４５】
本願の実施例では、マークルツリーを使用して各データフラグメントの構造を記録することができる。元のマークルツリーを取得する時に各データパケットに対応する順序番号ＩＤ及び対応する内容のｈａｓｈ値を設定するため、各データフラグメントは、それに含まれるデータパケットのハッシュ値に基づいて一つの対応するフラグメントマークルツリーを最終的に算出して取得することができる。フラグメントマークルツリーでは、データパケットの順序は、元の暗号化順序と同じである必要がなく、データパケット任意の二つのマークルツリーのハッシュブランチを組み合わせて算出することができる。
【００４６】
ステップＳ２６０において、各フラグメントマークルツリーと各前記データフラグメントが存在する記憶ノードとの対応関係を記録する。
【００４７】
これに対応して、各データフラグメントに対応するフラグメントマークルツリーを取得した後、各フラグメントマークルツリーと各データフラグメントが位置する記憶ノードとの間の対応関係を記録することができる。各データフラグメントは、一つのフラグメントマークルツリーに対応する。
【００４８】
本願の実施例では、データパケットを順序に暗号化した後、各データパケットのハッシュ値に基づいて元のマークルツリーを形成し、またデータフラグメントに含まれるデータパケットのハッシュ値に基づいてフラグメントマークルツリーを形成することによって、データパケット及びデータフラグメントのデータに対する検索と検証を実現し、記憶ファイルのプライバシーとセキュリティを向上させ、攻撃者が元のファイルを復元することを効果的に回避することができる。
【００４９】
ステップＳ２７０において、ローカルでの記憶対象ファイルを削除する。
【００５０】
本実施例の技術案によれば、データパケットを順序暗号化することによって、記憶ノードを攻撃して元の記憶ファイルを復元する困難性を大幅に増加し。分散型ストレージのプライバシーを効果的に向上させることができる。
【００５１】
実施例３
図３ａは、本願の実施例３により提供された分散型ストレージ方法のフローチャートである。図３ｂは、本願の実施例３により提供された分散型ストレージ方法において記憶ファイルを復元する方法のフローチャートである。本実施例は、上記の実施例に基づいて詳細化し、本実施例では、各データパケットに基づいて記憶ファイルを復元して形成する実現方式を提供し、これに対応して、図３ａに示すように、本願の実施例の方法は、ステップＳ３１０、ステップＳ３２０、ステップＳ３３０、ステップＳ３４０、ステップＳ３５０、ステップＳ３６０、及びステップＳ３７０を含むことができる。
【００５２】
ステップＳ３１０において、記憶対象ファイルをグループ化して、複数のデータパケットを形成する。
【００５３】
ステップＳ３２０において、すべてのデータパケットで少なくとも三つのデータフラグメントを形成し、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加される。
【００５４】
ステップＳ３３０において、各データフラグメントを分散型記憶ノードに分散的に記憶する。
【００５５】
ステップＳ３４０において、データフラグメントとデータパケットとの対応関係と、前記記憶ノードと記憶されたデータフラグメントとの対応関係とを記録する。
【００５６】
ステップＳ３５０において、ローカルでの記憶対象ファイルを削除する。
【００５７】
ステップＳ３６０において、記憶ファイルが、照会要求が生成された場合、ローカルに記録されたデータフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とに基づいて、記憶ノードから各データパケットをそれぞれダウンロードする。
【００５８】
その中、記憶ファイルの照会要求は、記憶ファイルのダウンロード、又は記憶ファイルのオンラインでのプレビューなど、ユーザが送信した記憶ファイルを取得する要求であってもよい。
【００５９】
本願の実施例では、データを復元する中に、ローカルに記録されたデータフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とに基づいて、記憶ファイルに対応するすべてのデータパケットを順序に取得し、最終的に取得された各データパケットを順序にスプライスと復号化することによって、完全な記憶ファイルを取得することができる。
【００６０】
これに対応して、図３ｂに示すように、記憶ファイルを復元するプロセスは、ステップＳ３６１、ステップＳ３６２、ステップＳ３６３、ステップＳ３６４、ステップＳ３６５、ステップＳ３６６、ステップＳ３６７、及びステップＳ３６８を含むことができる。
【００６１】
ステップＳ３６１において、ローカルに記録された各データパケットの暗号化順序に基づいて、第１のデータパケットを現在のデータパケットとして決定する。
【００６２】
ローカルに記録された元のマークルツリーに基づいて、第１のハッシュ葉ノードに対応するデータパケットを検索することができる。
【００６３】
ステップＳ３６２において、データフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とに基づいて、現在のデータパケットが存在する記憶ノードを現在のパケットノードとして決定する。
【００６４】
第１のデータパケットのハッシュ値に基づいて、フラグメントマークルツリーで対応するハッシュ値を検索することができる。次に、検索されたデータフラグメントに基づいて対応する記憶ノードを決定する。
【００６５】
ステップＳ３６３において、前記現在のパケットノードからデータフラグメントをダウンロードし、前記データフラグメントから現在のデータパケットを抽出する。
【００６６】
各データパケットが暗号化する中のその秘密鍵の生成は、すべて前のデータパケットに対応する暗号文に関連することを考慮する。したがって、データを復元する中に、データパケットの暗号化順序中の第１のデータパケットを直接に取得することができ、当該データパケットは、第１のデータパケットであり、その後、第１のデータパケットに基づいて他のデータパケットを順次に取得する。
【００６７】
第１のデータパケットを決定した後、第１のデータパケットを現在のデータパケットとする。データフラグメントとデータパケットとの対応関係に基づいて現在のデータパケットが位置するデータフラグメントを検索するとともに、記憶ノードと記憶されたデータフラグメントとの対応関係に基づいて現在のデータパケットが位置する記憶ノードを現在のパケットノードとして決定し、現在のパケットノードからデータフラグメントをダウンロードする。現在のパケットノードに記憶されたデータフラグメントに現在のデータパケットが含まれているため、現在のパケットノードに対応する記憶されたフラグメントマークルツリーのハッシュ位置に基づいてデータフラグメントから現在のデータパケットを抽出することができる。
【００６８】
例示的には、図２ｂに示すように、破線の枠内の各ハッシュ値から構成されたツリーが、元のマークルツリーである。その中、元のマークルツリーのＬＥＡＦノードは、ｈａｓｈ  １−ＬＥＡＦ、Ｈａｓｈ  ２−ＬＥＡＦ、Ｈａｓｈ  ３−ＬＥＡＦ、及びｈａｓｈ  ４−ＬＥＡＦであり、各データパケットに基づいて順序に形成されたハッシュ値である。ＢＲＡＮＣＨノードは、Ｈａｓｈ  ５−ＢＲＡＮＣＨとｈａｓｈ  ６−ＢＲＡＮＣＨであり、各ＬＥＡＦノードに基づいてｈａｓｈアルゴリズムに従って算出されたハッシュ値であり、ＲＯＯＴノードは、ｈａｓｈ  ７−ＲＯＯＴを元のマークルツリーとするルートノードであり、Ｈａｓｈ  ５−ＢＲＡＮＣＨとｈａｓｈ  ６−ＢＲＡＮＣＨに対応するハッシュ値に基づいてｈａｓｈアルゴリズムに従って算出して取得される。ＤＡＴＡ  ＢＬＯＣＫ  １、ＤＡＴＡ  ＢＬＯＣＫ  ２、ＤＡＴＡ  ＢＬＯＣＫ  ３、及びＤＡＴＡ  ＢＬＯＣＫ４は、記憶対象ファイルで形成されるデータパケットであり、ＤＡＴＡ  ＳＨＡＲＤ  １、ＤＡＴＡ  ＳＨＡＲＤ  ２、及びＤＡＴＡ  ＳＨＡＲＤ  ３は、データパケットに基づいて形成された部分的なデータフラグメントであり（すなわち、図２ｂにすべてのデータフラグメントを示していない）、当該部分的なデータフラグメントには、すべての第２のデータパケットを含む。これに対応して、第１のデータパケット（ＤＡＴＡ  ＢＬＯＣＫ  １）に対応するハッシュ位置は、ｈａｓｈ  １−ＬＥＡＦノードであり、これに類推して、すべてのデータパケットは、すべての対応するハッシュ位置にハッシュ値を記憶する。
【００６９】
図２ｂには、フラグメントマークルツリーの構造が示されておらず、フラグメントマークルツリーは、データフラグメントに含まれる部分的なデータパケットのハッシュ値に基づいて形成される。したがって、フラグメントマークルツリーのＬＥＡＦノードは、含まれるデータパケットに基づいて形成されたハッシュ値に対応し、他のノードの形成プロセスは、元のマークルツリーと同じである。
【００７０】
これに対応して、第２のデータパケット（ＤＡＴＡ  ＢＬＯＣＫ  ２）を現在のデータパケットとする場合、元のマークルツリー内の現在のデータパケットに対応するハッシュ位置は、ｈａｓｈ  ２−ＬＥＡＦであり、記憶されたハッシュ値（Ｈなど）は、フラグメントマークルツリーに記憶されたハッシュ値を検証することができる。現在のデータパケットを決定した後、すべてのフラグメントマークルツリーと、各フラグメントマークルツリーと記憶ノードとの対応関係に基づいて、現在のデータパケットが位置する記憶ノードを現在のパケットノードとして決定することができる。現在のデータパケットが位置する記憶ノードは、複数があることができ、その中の一つを現在のパケットノードとして選択することができる。現在のパケットノードに対応して記憶されたフラグメントマークルツリー内でハッシュ値がＨに対応するデータパケットを検索し、検索されたデータパケットが必要な第２のデータパケットである。
【００７１】
これから分かるように、攻撃者が元のファイルを取得したい場合、データフラグメントに対応するフラグメントマークルツリーのデータ構造のみに基づいて、すべてのデータフラグメントのダウンロードを完了し、同時にすべてのデータパケットの暗号化順序を把握することは難しい。したがって、本願の実施例の分散型ストレージ方法は、攻撃者が元のファイルを取得することを効果的に回避することができる。
【００７２】
ステップＳ３６４において、抽出された現在のデータパケットのハッシュ値を算出し、ローカルに記憶されている現在のデータパケットのハッシュ値とマッチングして、前記現在のデータパケットの有効性を検証する。
【００７３】
本願の実施例では、現在のデータパケットが取得された後、現在のデータパケットの有効性を検証することができる。各データパケットに対応するハッシュ値は異なるため、データパケットのハッシュ値を検証の根拠として使用し、現在のデータパケットのハッシュ値を、ローカルに記憶された現在のデータパケットのハッシュ値とマッチングして検証することができる。検証が一致している場合、検証が成功したことを説明し、現在のデータパケットは有効であり、そうでない場合、抽出された現在のデータパケットが有効であることが決定されるまで、データフラグメントとデータパケットとの対応関係に基づいて（フラグメントマークルツリーを使用するなど）別のデータフラグメントを再選択して現在のデータパケットを抽出する。
【００７４】
ステップＳ３６５において、対応する秘密鍵を使用して前記現在のデータパケットを復号化し、現在のデータパケットの暗号文を使用して次のデータパケットに対応する秘密鍵を決定する。
【００７５】
ステップＳ３６６において、次のデータパケットを現在のデータパケットとして更新する。
【００７６】
これに対応して、データパケットの有効性を決定した後、現在のデータに対応する秘密鍵を使用して復号化することができる。第１のデータパケットの秘密鍵は、他のデータパケットと無関係であるため、対応する秘密鍵を直接に使用して第１のデータパケットを復号化する。復号化される場合、取得されたデータパケットに対して暗号化時に取得された１２８ｂｉｔ又は２５６ｂｉｔの秘密鍵を使用して復号化することができる。現在のデータパケットの復号化が完了した後、現在のデータパケットの暗号文を根拠として、次のデータパケットに対応する秘密鍵を決定することができる。選択可能には、第１のデータパケットの暗号文と設定数の固定文字を組み合わせて、次のデータパケットに対応する秘密鍵を形成することができる。その後、次のデータパケットを現在のデータパケットとして更新し、上記の現在のデータパケットをダウンロード及び検証する方式で次のデータパケットを処理する。
【００７７】
ステップＳ３６７において、すべてのデータパケットのダウンロードが完了したか否かを判断し、「はい」の場合、ステップＳ３７０を実行し、そうでない場合、ステップＳ３６８を実行する。
【００７８】
本願の実施例では、記憶ファイルは、複数のデータパケットに基づいてスプライス及び復元を行って形成される。したがって、すべてのデータパケットを取得した後にのみ、対応する記憶ファイルを取得することができる。すべてのデータパケットのダウンロードが完了したことが決定された場合、直接に各データパケットに基づいて記憶ファイルを復元して形成するし、そうでない場合、Ｓ３６８を実行して、続いて欠落しているデータパケットを取得する。
【００７９】
ステップＳ３６８において、現在のデータパケットが既にダウンロードされたデータフラグメントに記憶されているか否かを判断し、「はい」の場合、ステップＳ３６４を実行し、そうでない場合、ステップＳ３６２を実行する。
【００８０】
各データフラグメントには、いずれも部分的なデータパケットが含まれているため、一つのデータフラグメントがダウンロードされた場合、現在のデータパケットに加えて、ハッシュ値検証処理が実行された他のデータパケット、又はハッシュ値検証処理が実行されていない他のデータパケットをさらに含む。前に既にダウンロードされたデータフラグメントに現在のデータパケットが含まれている場合、次に、データフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とに基づいて現在のデータパケットが位置する記憶ノードを決定して対応するデータフラグメントをダウンロードする必要がなく、現在のデータパケットに対して直接にハッシュ値検証を行い、前のデータパケットの暗号文に基づいて形成された秘密鍵に基づいて現在のデータパケットを復号化することができる。
【００８１】
例示的には、現在のデータパケットが第２のデータパケットであると仮定すると、現在のパケットノードがダウンロードしたデータフラグメントに含まれる部分的なデータパケットは、第１のデータパケット、第２のデータパケット、第４のデータパケット、及び第５のデータパケットである。その中、第１のデータパケットは、既にハッシュ値検証処理が実行され、第４のデータパケット及び第５のデータパケットは、まだハッシュ値検証処理が実行されていない。第４のデータパケット又は第５のデータパケットを現在のデータパケットとして処理を行う場合、対応するデータフラグメントを再ダウンロードする必要がなく、直接に第２のデータパケットに対応するダウンロードされたデータフラグメントに含まれる第４のデータパケット又は第５のデータパケットを現在のデータパケットとする。
【００８２】
ステップＳ３７０において、各データパケットに基づいて記憶ファイルを復元して形成する。
【００８３】
本願の実施例は、ローカルに記録されたデータフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とに基づいて、記憶ノードから各データパケットをそれぞれダウンロードし、各データパケットに基づいて記憶ファイルを復元して形成することによって、記憶ファイルのプライバシーとセキュリティを効果的に向上させ、攻撃者が元のファイルを復元することを回避することができる。
【００８４】
実施例４
本願の実施例により提供された分散型ストレージ方法は、各分散型ネットワークでデータストレージを行うことに適用することができ、本実施例では、選択可能には、ブロックチェーンネットワークを使用して記憶対象ファイルを分散的に記憶する。ブロックチェーンシステムは、一般に、独立に動作できる複数のノードを含み、一方で、独立してストレージ要求があるノードとして記憶の前準備を行い、一方で、一つの記憶ノードとして他のノード要求の記憶タスクを受ける。ブロックチェーンシステムは、一つの脱中心化のネットワークであり、コンセンサスメカニズムなどのプロトコルに基づいて協調して動作することができる。
【００８５】
図４は、本願の実施例４により提供された分散型ストレージ方法のフローチャートである。当該方法は、ステップＳ４１０、ステップＳ４２０、ステップＳ４３０、ステップＳ４４０、ステップＳ４５０、及びステップＳ４６０を含む。
【００８６】
ステップＳ４１０において、記憶対象ファイルをグループ化して、複数のデータパケットを形成する。
【００８７】
ステップＳ４２０において、すべてのデータパケットで少なくとも三つのデータフラグメントを形成し、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加される。
【００８８】
ステップＳ４３０において、各データフラグメントをブロックチェーンネットワーク内の各記憶ノードにそれぞれ記憶する。
【００８９】
ストレージ要求を生成するノード、又は任意の電子機器として、レンタルノード、すなわち他のノードにストレージ空間のレンタルを要求するノードであってもよい。レンタルノードは、ファイルを記憶する前に、まず、ファイルに対してフラグメント処理の準備を行う。
【００９０】
同時に、レンタルノードは、ブロックチェーンネットワークで各記憶ノードを自身のサービスとして決定し、各記憶ノードは、テナントノードと呼ばれることができる。記憶ノードを決定するプロセスは、オフラインでネゴシエーションするプロセスであってもよく、ブロックチェーンネットワークでストレージ空間のレンタルプロセスを具現するスマートコントラクトを発行することができ、回答するノードは、テナントノードと呼ばれる。記憶ノードを決定した後、レンタルノードは、データフラグメントを記憶ノードに伝送して記憶する。
【００９１】
ステップＳ４４０において、データフラグメントの記憶ノードにおける記憶関係をスマートコントラクトとし、ブロックチェーンネットワーク内のブロック生成ノードに提供して、スマートコントラクトをブロックに追加して記憶する。
【００９２】
上記によって決定されたレンタルストレージ空間プロセスを具現するスマートコントラクトは、ブロックチェーンネットワークで伝送される。現在、ブロック処理権限に競合したブロック生成ノードは、現在の生成のスマートコントラクトを処理し、パッケージ化してブロックを形成する。ブロック生成ノードは、様々なコンセンサスメカニズムに基づいてブロック生成権限を取得することができ、当該ブロック生成ノードの権限期間内に、異なるレンタルノードによって異なるスマートコントラクトを生成することができる。ブロック生成ノードは、スマートコントラクトを処理することができ、処理する方式は、スマートコントラクトの内容に対して検証、変換、暗号化、及び記憶などを行うことを含むが、これらに限定されない。例えば、他のノードのストレージ空間をレンタルすることは、一定の費用を支払う可能性があり、対応する支払い金額は、スマートコントラクトに具現され、レンタルノードによって署名して確認する。ブロック生成ノードは、スマートコントラクト中の規定に基づいて、支払い金額をレンタルノードのアカウントからテナントノードのアカウントに移転することができる。ブロック生成ノードは、その後に生成されたブロックを、ブロックチェーンネットワークの他のノードにブロードキャストして検証して、その後、ブロックは有効になってブロックチェーンの末尾に追加される。ブロックチェーンの自身の特性によってスマートコントラクトの非改ざん性を確保する。
【００９３】
ステップＳ４５０において、データフラグメントとデータパケットとの対応関係と、前記記憶ノードと記憶されたデータフラグメントとの対応関係とを記録し、レンタルノードは、ローカルで上記の対応関係を記録して、後の記憶されたデータを復元することを容易にすることができる。
【００９４】
ステップＳ４６０において、ローカルでの記憶対象ファイルを削除する。
【００９５】
このアプリケーションシナリオでは、分散型ブロックチェーンネットワーク内のノード間には、互いに通信することができる。各ノードは、すべて随時にレンタルノード又はテナントノードになることができる。その中、レンタルノードは、記憶対象ファイルをアップロードすることができ、すなわち、ファイルストレージ要求があるノードであり、テナントノードは、ファイルに対応するデータフラグメントを記憶することができ、記憶ノードとも呼ばれることができる。
【００９６】
一つのノード（例示的には、百度网盤（Ｂａｉｄｕ  Ｗａｎｇｐａｎ）を表すノード）がレンタルの要求がある場合、つまり、ブロックチェーンネットワークでの他のノードに要求してファイルを共同に記憶する場合、レンタルの要求を発行する準備プロセスが開始される。その後、記憶対象ファイルは、まず、レンタルの要求があるノードでグループ化して複数のデータパケットを形成し、秘密鍵を使用して各データパケットを順序に暗号化し、第１のデータパケット以外の他の各データパケットの秘密鍵は、前のデータパケットの暗号文に基づいて生成することができる。データパケットの暗号化が完了した後、データパケットの暗号化順序に従って、各データパケットのハッシュ値を算出し、元のマークルツリーを形成することができる。次に、レンタルの要求があるノードは、データパケットをランダムに組み合わせて少なくとも三つのデータフラグメントに形成することができる。各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加される。同時に、レンタルの要求があるノードマークルツリー形式を使用して、データフラグメントに含まれるデータパケットのハッシュ値をフラグメントマークルツリーとして記録し、各フラグメントマークルツリーと各データフラグメントが存在する記憶ノードとの対応関係を記録する。最後に、レンタルの要求があるノードは、記憶ノードにデータフラグメントをそれぞれ伝送し、データフラグメントを分散型ブロックチェーンネットワークに送信することを実現する。各データフラグメントの記憶が完了した後、データフラグメントの記憶ノードにおける記憶関係をスマートコントラクトとし、ブロックチェーンネットワーク内のブロック生成ノードに提供して、スマートコントラクトをブロックに追加して記憶することができる。
【００９７】
これから分かるように、本願の実施例により提供された分散型ストレージ方法は、ブロックチェーン技術の分野に適用され、ユーザが分散型ブロックチェーンネットワークでファイル記憶を行って記憶コストを削減することを容易にし、また記憶ファイルのプライバシーとセキュリティを効果的に向上させ、攻撃者が元のファイルを復元することを回避することができる。
【００９８】
実施例５
図５は、本願の実施例５により提供された分散型ストレージ装置の概略図である。図５に示すように、前記装置は、データグループ化モジュール５１０と、データフラグメントモジュール５２０と、データ記憶モジュール５３０と、関係記録モジュール５４０と、ファイル削除モジュール５５０と、を備える。
データグループ化モジュール５１０は、記憶対象ファイルをグループ化して、複数のデータパケットを形成するように構成される。
データフラグメントモジュール５２０は、すべてのデータパケットで少なくとも三つのデータフラグメントを形成するように構成され、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加される。
データ記憶モジュール５３０は、各データフラグメントを分散型記憶ノードに分散的に記憶するように構成される。
関係記録モジュール５４０は、データフラグメントとデータパケットとの対応関係と、前記記憶ノードと記憶されたデータフラグメントとの対応関係とを記録するように構成される。
ファイル削除モジュール５５０は、ローカルでの記憶対象ファイルを削除するように構成される。
【００９９】
本願の実施例は、記憶対象ファイルをグループ化して複数のデータパケットを形成し、すべてのデータパケットで少なくとも三つのデータフラグメントを形成し、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加され、次に、各データフラグメントを分散型記憶ノードに分散的に記憶することによって、データの分散型ストレージを実現する。分散型ストレージは、中心化記憶のボトルネック問題を解決し、帯域幅コストと記憶コストを削減し、且つデータパケットの複数のコピー記憶を使用し、一部の記憶ノードの障害によってデータ全体の復元不可能を回避する。また、各記憶ノードに記憶されているデータフラグメントは、すべてのデータ成分が含まれていないため、一つの記憶ノードを破壊することによって元の記憶ファイルを復元することは不可能である。上記の技術案は、関連するクラウドストレージ技術によって生成された記憶コスト継続的な増加及び分散型ストレージ技術によって引き起こされたデータストレージ不安全な問題を解決し、ユーザが分散型ネットワークにファイルを記憶して記憶コストを削減することが容易になり、また記憶ファイルのプライバシーとセキュリティを効果的に向上させ、攻撃者が元のファイルを復元することを回避することができる。
【０１００】
選択可能には、前記装置は、秘密鍵を使用して各データパケットを順序暗号化するように構成されるデータ暗号化モジュールをさらに備え、第１のデータパケット以外の他の各データパケットの秘密鍵は、前のデータパケットの暗号文に基づいて生成し、前記各データパケットの暗号化順序を記録する。
【０１０１】
選択可能には、関係記録モジュール５４０は、マークルツリー形式を使用して、データフラグメントに含まれるデータパケットのハッシュ値をフラグメントマークルツリーとして記録し、各フラグメントマークルツリーと各前記データフラグメントが存在する記憶ノードとの対応関係を記録するように構成される。
【０１０２】
選択可能には、データ暗号化モジュールは、データパケットの暗号化順序に従って、各データパケットのハッシュ値を算出し、元のマークルツリーを形成するように構成される。
【０１０３】
選択可能には、前記装置は、記憶ファイルの照会要求が生成された場合、ローカルに記録されたデータフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とに基づいて、それぞれの記憶ノードから各データパケットをダウンロードし、各データパケットに基づいて記憶ファイルを復元して形成するように構成されるファイル復元モジュールをさらに備える。
【０１０４】
選択可能には、ファイル復元モジュールは、ローカルに記録された各データパケットの暗号化順序に基づいて、第１のデータパケットを現在のデータパケットとして決定し、データフラグメントとデータパケットとの対応関係と、記憶ノードと記憶されたデータフラグメントとの対応関係とに基づいて、現在のデータパケットが存在する記憶ノードを現在のパケットノードとして決定し、前記現在のパケットノードからデータフラグメントをダウンロードし、前記データフラグメントから現在のデータパケットを抽出し、対応する秘密鍵を使用して前記現在のデータパケットを復号化し、現在のデータパケットの暗号文を使用して、次のデータパケットに対応する秘密鍵を決定し、次のデータパケットを現在のデータパケットとして更新し、現在のデータパケットが既にダウンロードされたデータフラグメントに記憶された場合、復号化操作に戻って実行し、現在のデータパケットが既にダウンロードされたデータフラグメントに記憶されていない場合、すべてのデータパケットのダウンロードが完了するまで、現在のパケットノードを決定する操作に戻って実行するように構成される。
【０１０５】
選択可能には、ファイル復元モジュールは、抽出された現在のデータパケットのハッシュ値を算出し、ローカルに記憶されている現在のデータパケットのハッシュ値とマッチングして、前記現在のデータパケットの有効性を検証するように構成される。
【０１０６】
選択可能には、データ記憶モジュール５３０は、各データフラグメントをブロックチェーンネットワーク内の各記憶ノードにそれぞれ記憶し、データフラグメントの記憶ノードにおける記憶関係をスマートコントラクトとし、ブロックチェーンネットワーク内のブロック生成ノードに提供して、スマートコントラクトをブロックに追加して記憶するように構成される。
【０１０７】
上記の分散型ストレージ装置は、本願の任意の実施例により提供された分散型ストレージ方法を実行することができ、方法を実行することに対応する機能モジュール及び有益な効果を備える。本実施例に詳細に説明されていない技術的詳細は、本願の任意の実施例により提供された分散型ストレージ方法を参照することができる。
【０１０８】
実施例６
図６は、本願の実施例４により提供されるコンピュータ機器の概略構成図である。図６は、本願の実施形態を実現するのに適するコンピュータ機器６１２のブロック図である。図６に示されるコンピュータ機器６１２は、単なる一つの例であり、本願の実施例の機能及び使用範囲を一切限定しない。
【０１０９】
図６に示すように、コンピュータ機器６１２は、汎用コンピュータ機器の形式として表される。コンピュータ機器６１２のコンポーネントは、一つ又は複数のプロセッサ６１６又は記憶装置６２８と、異なるシステムコンポーネント（記憶装置６２８とプロセッサ６１６とを含む）を接続するバス６１８と、を備えることができるが、これらに限定されない。
【０１１０】
バス６１８は、下記のような複数のバス構造のうちの一つ又は複数のものを示し、前記複数のバス構造は、メモリバス又はメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、プロセッサ又は多様なバス構造のうちの任意のバス構造を使用するローカルバスを含む。例をあげると、これらのアーキテクチャは、インダストリスタンダードアーキテクチャ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ、ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ、ＭＣＡ）バス、拡張ＩＳＡバス、ビデオエレクトロニクススタンダーズアソシエーション（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ、ＶＥＳＡ）ローカルバス、及びペリフェラルコンポーネントインターコネクト（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ、ＰＣＩ）バスを含むが、これらに限定されない。
【０１１１】
コンピュータ機器６１２は、典型的には、多種類のコンピュータシステム読み取り可能な媒体を含む。これらの媒体は、コンピュータ機器６１２がアクセスすることができる任意の使用可能な媒体であってもよく、揮発性媒体及び不揮発性媒体、リムーバブル媒体及びノンリムーバブル媒体を含む。
【０１１２】
記憶装置６２８は、ランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＲＡＭ）６３０及び／又はキャッシュメモリ６３２などの揮発性メモリの形態のコンピュータシステム読み取り可能な媒体を含んでもよい。コンピュータ機器６１２は、他のリムーバブル／ノンリムーバブル、揮発性／不揮発性コンピュータシステム記憶媒体をさらに含んでもよい。単なる一例として、ストレージシステム６３４は、ノンリムーバブル、不揮発性磁気媒体（図６に示されていないが、通常「ハードアクチュエー」と呼ぶ）に対して読み出し及び書き込みをするために用いることができる。図６に示されていないが、リムーバブル、不揮発性磁気ディスク（例えば、「フロッピーディスク」）に対して読み出し及び書き込みをするための磁気ディスクアクチュエー、及びリムーバブル、不揮発性光学ディスク（例えば、コンパクトディスク読み取り専用メモリ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＣＤ−ＲＯＭ）、デジタルビデオディスク読み取り専用メモリ（Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＤＶＤ−ＲＯＭ）又は他の光学媒体）に対して読み出し及び書き込みをするための光学ディスクアクチュエーを提供することができる。この場合、各アクチュエーは、一つ又は複数のデータメディアインターフェイスを介してバス６１８に接続することができる。記憶装置６２８は、本願の各実施例に記載の機能を実行するように構成されるワンセットのプログラムモジュール（例えば、少なくとも一つ）を有する少なくとも一つのプログラム製品を含んでもよい。
【０１１３】
ワンセットのプログラムモジュール６２６（少なくとも一つ）を有するプログラム／ユーティリティ６３６は、例えば、記憶装置６２８に記憶されてもよく、このようなプログラムモジュール６２６は、オペレーティングシステム、一つ又は複数のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータを含むことができるがこれらに限定されない。これらの例のそれぞれ又は何らかの組み合わせには、ネットワーく環境の実装が含まれる可能性がある。プログラムモジュール６２６は、通常本願に記載の実施例における機能及び／又は方法を実行する。
【０１１４】
コンピュータ機器６１２は、一つ又は複数の外部デバイス６１４（例えば、キーボード、ポインティングデバイス、カメラ、ディスプレイ６２４など）と通信可能で、ユーザがコンピュータ機器６１２とインタラクションすることを可能にする一つ又は複数の機器と通信することもでき、及び／又はコンピュータ機器６１２が一つ又は複数の他のコンピューティングデバイスと通信することを可能にする任意の機器（例えば、ネットワークカード、モデムなど）と通信することができる。そのような通信は、入力／出力（Ｉ／Ｏ）インターフェイス４２２を介して行うことができる。また、コンピュータ機器６１２は、ネットワークアダプタ４２０を介して、一つ又は複数のネットワーク（例えば、ローカルエリアネットワーク（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ、ＬＡＮ）、ワイドエリアネットワーク（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ、ＷＡＮ）、及び／又はパブリックネットワーク、例えば、インターネット）と通信することができる。図４に示すように、ネットワークアダプタ６２０は、バス６１８を介して、コンピュータ機器６１２の他のモジュールと通信する。なお、図示されていないが、マイクロコードやデバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、ディスクアレイ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ、ＲＡＩＤ）システム、テープドライバ、及びデータバックアップトレージシステムなどを含むが、これらに限定されない他のハードウェア及び／又はソフトウェアモジュールを、コンピュータ機器６１２と組み合わせて使用することができる。
【０１１５】
プロセッサ６１６は、記憶装置６２８に記憶されるプログラムを実行することにより、多様な機能アプリケーション及びデータ処理を実行し、例えば、本願の実施例が提供する分散型ストレージ方法を実現する。
【０１１６】
すなわち、前記プロセッサユニットは、前記プログラムを実行する時に、記憶対象ファイルをグループ化して、複数のデータパケットを形成し、すべてのデータパケットで少なくとも三つのデータフラグメントを形成し、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加され、各データフラグメントを分散型記憶ノードに分散的に記憶し、データフラグメントとデータパケットとの対応関係と、前記記憶ノードと記憶されたデータフラグメントとの対応関係とを記録し、ローカルでの記憶対象ファイルを削除することを実現する。
【０１１７】
前記コンピュータ機器が記憶対象ファイルをグループ化して複数のデータパケットを形成し、すべてのデータパケットで少なくとも三つのデータフラグメントを形成し、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加され、次に、各データフラグメントを分散型記憶ノードに分散的に記憶し、データの分散型ストレージを実現する。分散型ストレージは、中心化記憶のボトルネック問題を解決し、帯域幅コストと記憶コストを削減し、且つデータパケットの複数のコピー記憶を使用し、一部の記憶ノードの障害によってデータ全体の復元不可能を回避する。また、各記憶ノードに記憶されているデータフラグメントは、すべてのデータ成分が含まれていないため、一つの記憶ノードを破壊することによって元の記憶ファイルを復元することは不可能である。上記の技術案は、関連するクラウドストレージ技術によって生成された記憶コスト継続的な増加及び分散型ストレージ技術によって引き起こされたデータストレージ不安全な問題を解決し、ユーザが分散型ネットワークにファイルを記憶して記憶コストを削減することが容易になり、また記憶ファイルのプライバシーとセキュリティを効果的に向上させ、攻撃者が元のファイルを復元することを回避することができる。
【０１１８】
実施例７
本願の実施例７は、コンピュータプログラムを記憶するコンピュータ記憶媒体をさらに提供し、前記コンピュータプログラムがコンピュータプロセッサによって実行される場合に、本願は、上記の実施例のいずれかに記載の分散型ストレージ方法を実行し、前記分散型ストレージ方法は、記憶対象ファイルをグループ化して、複数のデータパケットを形成し、すべてのデータパケットで少なくとも三つのデータフラグメントを形成し、各データフラグメントには、一部のデータパケットが含まれ、また各データパケットは、少なくとも二つのデータフラグメントに追加され、各データフラグメントを分散型記憶ノードに分散的に記憶し、データフラグメントとデータパケットとの対応関係と、前記記憶ノードと記憶されたデータフラグメントとの対応関係とを記録するステップと、ローカルでの記憶対象ファイルを削除する。
【０１１９】
本願の実施例のコンピュータ読み取り可能な媒体は、一つ又は複数のコンピュータ読み取り可能な媒体の任意の組み合わせを採用することができる。コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な信号媒体、或いはコンピュータ読み取り可能な記憶媒体であってもよい。コンピュータ読み取り可能な媒体は、例えば、電子、磁気、光、電磁気、赤外線、又は半導体のシステム、装置又はデバイス、或いは上記の任意の組み合わせであってもよいが、これらに限定されない。コンピュータ読み取り可能な記憶媒体のより具体的な例（非網羅的なリスト）は、一つ又は複数の配線を備える電気接続部、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ、読み出し専用メモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＲＯＭ）、消去可能なプログラマブル読み出し専用メモリ（（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＥＰＲＯＭ）又はフラッシュメモリ）、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ、光記憶装置、磁気記憶装置、又は上記の任意の適切な組み合わせを含む。この文書において、コンピュータ読み取り可能な記憶媒体は、命令実行システム、装置又はデバイスにより使用され、或いはそれらと組み合わせて使用されることが可能であるプログラムを含む又は記憶する任意の有形の媒体であってもよい。
【０１２０】
コンピュータ読み取り可能な信号媒体は、ベースバンドにおける、又は搬送波の一部として伝播するデータ信号を含むことができ、その中にはコンピュータ読み取り可能なプログラムコードが搭載される。この伝播するデータ信号は様々な形式を採用することができ、電磁信号、光信号又は上記の任意の適切な組み合わせを含むが、これらに限定されない。コンピュータ読み取り可能な信号媒体は、さらに、コンピュータ読み取り可能な記憶媒体以外の任意のコンピュータ読み取り可能な媒体であってもよく、当該コンピュータ読み取り可能な媒体は、命令実行システム、装置又はデバイスにより使用され、或いはそれらと組み合わせて使用されるプログラムを送信、伝播又は伝送することができる。
【０１２１】
コンピュータ読み取り可能な媒体に含まれるプログラムコードは、無線、有線、光ケーブル、無線周波数（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ、ＲＦ）など、又は上記の任意の適切な組み合わせを含むが、これらに限定されない任意の適切な媒体によって伝送することができる。
【０１２２】
一つ又は複数のプログラミング言語又はそれらの組み合わせで本願の動作を実行するためのコンピュータプログラムコードを作成することができ、前記プログラミング言語は、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのプロジェクト指向のプログラミング言語を含み、さらに、「Ｃ」言語又は同様のプログラミング言語といった従来の手続き型プログラミング言語をも含む。プログラムコードは、完全にユーザーコンピュータで実行されてもよく、部分的にユーザーコンピュータに実行されてもよく、スタンドアロンソフトウェアパッケージとして実行されてもよく、部分的にユーザーコンピュータで、部分的にリモートコンピュータで実行されてもよく、又は完全にリモートコンピュータ又はサーバで実行してもよい。リモートコンピュータに係る場合、リモートコンピュータは、ローカルネットワーク又は広域ネットワークを含む任意種類のインターネットを介して、ユーザーコンピュータに接続することができ、或いは、外部コンピュータ（例えば、インターネットサービスプロバイダを利用してインターネットを介して接続する）に接続することもできる。
【図１】
2021506004.tif 000003
【図２ａ】
2021506004.tif 000004
【図２ｂ】
2021506004.tif 000005
【図３ａ】
2021506004.tif 000006
【図３ｂ】
2021506004.tif 000007
【図４】
2021506004.tif 000008
【図５】
2021506004.tif 000009
【図６】
2021506004.tif 000010
【国際調査報告】
2021506004.tif 000011
2021506004.tif 000012
2021506004.tif 000013
2021506004.tif 000014