JP5801482B2 - キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム - Google Patents

キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム Download PDF

Info

Publication number
JP5801482B2
JP5801482B2 JP2014519511A JP2014519511A JP5801482B2 JP 5801482 B2 JP5801482 B2 JP 5801482B2 JP 2014519511 A JP2014519511 A JP 2014519511A JP 2014519511 A JP2014519511 A JP 2014519511A JP 5801482 B2 JP5801482 B2 JP 5801482B2
Authority
JP
Japan
Prior art keywords
information
data
servers
key
secret
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.)
Active
Application number
JP2014519511A
Other languages
English (en)
Other versions
JP2014524204A (ja
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.)
NEC Europe Ltd
Original Assignee
NEC Europe Ltd
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 NEC Europe Ltd filed Critical NEC Europe Ltd
Publication of JP2014524204A publication Critical patent/JP2014524204A/ja
Application granted granted Critical
Publication of JP5801482B2 publication Critical patent/JP5801482B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/186Passive fault masking when reading multiple copies of the same data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、3t+1=nを満たすt<n個のサーバが任意に故障する可能性があるような複数n個のサーバを有するキーバリューストレージにデータを保存する方法に関する。
また、本発明は、3t+1=nを満たすt<n個のサーバが任意に故障する可能性があるような複数n個のサーバを有するキーバリューストレージに保存されたデータを読み出す方法に関する。
また、本発明は、好ましくは請求項1ないし15のいずれか1項に記載の方法を実行する、キーバリューストレージにデータを保存するシステムにおいて、3t+1=nを満たすt<n個のサーバが任意に故障する可能性があるような複数n個のサーバと、前記キーバリューストレージにデータを書き込むライタとを有するシステムに関する。
また、本発明は、好ましくは請求項1ないし15のいずれか1項に記載の方法を実行する、キーバリューストレージに保存されたデータを読み出すシステムにおいて、3t+1=nを満たすt<n個のサーバが任意に故障する可能性があるような複数n個のサーバと、該キーバリューストレージに保存されたデータを読み出すリーダとを有するシステムに関する。
キーバリューストレージ(キーバリューストア(key value store, KVS)ともいう)は、データベース、検索エンジン、クラウド型プラットフォーム(例えばMapReduceのようなクラウドプログラミングフレームワーク)から、ソーシャルネットワークのような共同作業アプリケーションに至るまでのさまざまな大規模分散システムへの関心をますます引きつけている。例えば、従来のストレージデータベースでは、スケーラビリティおよびパフォーマンスのために、分散キーバリューストアの上に検索インデックスを実装することが多い。キーバリューストアは、上位レイヤに対するストレージレイヤとして働くだけでなく、ピアツーピアファイル共有の場合のように直接にアプリケーションにサービスを提供することも可能である。1つまたは複数のストレージサーバが例えばソフトウェアエラーやハードウェア故障等によりクラッシュすると、キーバリューストアがこのような故障を補償することになる。Cassandra、Redis、HBase、DynamoおよびMemcachedのようなキーバリューストアは、レプリケーションを使用することにより、ストレージサーバの故障やクラッシュに対する耐性がある。
キーバリューストアの望ましい特徴の1つは、相異なるユーザによる同時アクセスが実行される場合であってもデータ一貫性および可用性を保証することである。最高度のデータ一貫性は、いわゆるアトミック一貫性である。これは、ある値があるキーのもとで保存される場合またはある読み出し動作がその値を返す場合に、あらゆる後続の読み出し動作が、対応する値vまたはより新しい値v′を返すが、vよりも古い値を決して返さないことを意味する。従来のキーバリューストアは、単一キーのレベルでアトミック一貫性をサポートし、複数のキーへのトランザクションアクセスは、より上位のレイヤで実行される。多くのアプリケーションにとって、アトミック一貫性は義務的である。
可用性は、一貫性に対して相補的である。すなわち、キーバリューストアの正当なクライアントであると仮定されるクライアントが、読み出しまたは書き込み動作を呼び出す場合、その動作は、サーバの故障や、他の故障したクライアントの挙動にかかわらず成功すべきである。
中心的なストレージレイヤとしてのキーバリューストアに依拠するアプリケーションやシステムの数がますます増大すると、キーバリューストアの堅牢性も重要となる。しかし、多数の相互接続されたノードからなる分散システムの複雑さがますます増大しているため、いずれかのノードが故障する確率が増大している。このような偶発的なハードウェアおよびソフトウェアの故障(例えばソフトウェアバグ)のリスクも増大し、キーバリューストアの堅牢性が大幅に低下する。さらに、悪用される脆弱性のリスクが出現している。すなわち、クラウドコンピューティングの登場により、データは、インターネットから直接アクセス可能なクラウドサービスプラットフォームにアウトソーシングされている。その結果の1つは、例えば、ソフトウェアバグによるクラウドサービスプラットフォームの悪用可能な脆弱性であり、その結果として、データ損失やデータ破壊の可能性がある。
これらの問題を克服するため、非特許文献1には、ビザンチンリーダ(すなわち、任意に故障する可能性があるリーダ)に対する耐性を実現するために、無競合実行においてのみ値を返すことが要求される読み出し動作について記載されている。
非特許文献2においては、ビザンチンリーダに対する耐性を実現するために、デジタル署名が使用されている。
非特許文献3には、最終的にあらゆるメッセージをすべてのサーバへ配信する通信チャネルが記載されているが、これは、非同期システムでは実現が困難である。また、非特許文献3に記載された方法によって示される読み出しレイテンシは、サーバ数に関して線形である。
その欠点の1つとして、無認証データに対する上記の従来の方法は、高いレイテンシ、スケーラビリティの欠如、および競合下での進行の欠如のため非実用的である。また、署名を使用しない従来の方法のほとんどは、単一のライタのために最適化されている。
James Hendricks, Gregory R. Ganger, Michael K. Reiter: "Low-overhead byzantine fault-tolerant-storage", SOSP 2007: 73-86 Barbara Liskov, Rodrigo Rodrigues: Tolerating Byzantine Faulty Clients in a Quorum System. ICDCS 2006 Amitanand S. Aiyer, Lorenzo Alvisi, Rida A Bazzi: "Bounded Wait-Free Implementation of Optimally Resilient Byzantine Storage Without (Unproven) Cryptographic Assumptions", DISC 2007: 7-19
したがって、本発明の目的は、特にサーバおよびリーダによる、ビザンチン故障に耐性があるキーバリューストレージに対するデータの保存および読み出しを行う方法およびシステムを提供することである。
本発明のさらなる目的は、無署名でアトミック一貫性を提供するキーバリューストレージに対するデータの保存および読み出しを行う方法およびシステムを提供することである。
本発明のさらなる目的は、スケーラブルなキーバリューストレージに対するデータの保存および読み出しを行う方法およびシステムを提供することである。
本発明のさらなる目的は、データの書き込みおよび読み出しのレイテンシを低減したキーバリューストレージに対するデータの保存および読み出しを行う方法およびシステムを提供することである。
本発明のさらなる目的は、任意に故障する可能性のある多数のサーバを許容するキーバリューストレージに対するデータの保存および読み出しを行う方法およびシステムを提供することである。
本発明のさらなる目的は、いかなる従来の無署名の方法またはシステムよりも堅牢なキーバリューストレージに対するデータの保存および読み出しを行う方法およびシステムを提供することである。
本発明のさらなる目的は、低コストで、かつ、読み出しまたは保存の対象となるデータに関して高いフレキシビリティで、容易な実施を可能にするキーバリューストレージに対するデータの保存および読み出しを行う方法およびシステムを提供することである。
本発明によれば、上記の目的は、請求項1の方法によって達成される。
請求項1に記載の通り、3t+1=nを満たすt<n個のサーバが任意に故障する可能性があるような複数n個のサーバを有するキーバリューストレージにデータを保存する方法が提供される。
請求項1に記載の通り、本方法は、
a)秘密情報に対するコミットメント情報を生成するステップと、
b)保存すべきデータと、該データに対応するキーと、前記生成されたコミットメント情報とを含む第1のメッセージを前記n個のサーバへ配布するステップと、
c)前記第1のメッセージに含まれる情報を少なくともいくつかのサーバに保存するステップと、
d)少なくともn−t個のサーバが第1の保存確認情報を提供するステップと、
e)対応するキーおよび前記秘密情報を含む第2のメッセージを前記n個のサーバへ配布するステップと、
f)前記第2のメッセージに含まれる情報を保存するステップと、
g)少なくともn−t個のサーバが第2の保存確認情報を提供するステップと
を備えたことを特徴とする。
本発明によれば、上記の目的は、さらに請求項2の方法によって達成される。
請求項2に記載の通り、3t+1=nを満たすt<n個のサーバが任意に故障する可能性があるような複数n個のサーバを有するキーバリューストレージに保存されたデータを読み出す方法が提供される。
請求項2に記載の通り、本方法は、
A)読み出すべきデータに対応するキーを含む第1のメッセージを配布するステップと、
B)少なくとも2t+1個のサーバから前記読み出すべきデータの候補を収集するステップと、
C)コミットメント情報に対応する秘密情報および前記読み出すべきデータに対応する情報を書き戻すステップと、
D)前記コミットメント情報と前記秘密情報の一致に基づいて、前記収集された候補を妥当性検査するステップと、
E)妥当とされた候補に従って、読み出すべきデータの候補を決定するステップと、
F)同じ読み出すべきデータの候補および対応する秘密情報を含むt+1個の応答メッセージに基づいて、読み出すべきデータを選択するステップと
を備えたことを特徴とする。
上記の目的は、さらに請求項16のシステムによって達成される。
請求項16に記載の通り、好ましくは請求項1ないし15のいずれか1項に記載の方法を実行する、キーバリューストレージにデータを保存するシステムにおいて、3t+1=nを満たすt<n個のサーバが任意に故障する可能性があるような複数n個のサーバと、前記キーバリューストレージにデータを書き込むライタとを有するシステムが提供される。
請求項16に記載の通り、本システムは、
前記ライタが、保存すべきデータと、該データに対応するキーと、秘密情報から生成されたコミットメント情報とを含む第1のメッセージを前記n個のサーバへ配布するように動作可能であるように構成され、
少なくともいくつかのサーバが、前記第1のメッセージに含まれる情報を保存するように動作可能であるように構成され、
少なくともn−t個のサーバが第1の保存確認情報を受信した後、前記ライタが、対応するキーおよび前記秘密情報を含む第2のメッセージを前記n個のサーバへ配布するように動作可能であるように構成され、
前記第2のメッセージに含まれる前記第2のメッセージの情報を保存した後、少なくともn−t個のサーバが、第2の保存確認情報を提供するように動作可能であるように構成される
ことを特徴とする。
上記の目的は、さらに請求項17に記載のシステムによって達成される。
請求項17に記載の通り、好ましくは請求項1ないし15のいずれか1項に記載の方法を実行する、キーバリューストレージに保存されたデータを読み出すシステムにおいて、3t+1=nを満たすt<n個のサーバが任意に故障する可能性があるような複数n個のサーバと、該キーバリューストレージに保存されたデータを読み出すリーダとを有するシステムが提供される。
請求項17に記載の通り、本システムは、
前記リーダが、読み出すべきデータに対応するキーを含む第1のメッセージを配布し、少なくとも2t+1個のサーバから前記読み出すべきデータに対応する候補を収集し、秘密情報から生成されたコミットメント情報に対応する該秘密情報および前記読み出すべきデータに対応する情報を書き戻し、同じ読み出すべき候補および対応する秘密情報を含むt+1個の応答メッセージに基づいて、読み出すべきデータを選択するように動作可能であるように構成され、前記読み出すべきデータの候補は妥当とされた候補に従って決定され、前記収集された候補は前記コミットメント情報と前記秘密情報の一致に基づいて妥当性検査される
ことを特徴とする。
本発明によって初めて認識されたこととして、請求項1、2、15および16に記載の方法およびシステムは、アトミック一貫性が満たされ、悪意のサーバおよび悪意のクライアント(すなわちリーダが含まれる)からの悪意の障害に耐性のある、堅牢な無署名のキーバリューストレージを提供する。
本発明によってさらに初めて認識されたこととして、請求項1、2、15および16に記載の方法およびシステムは、スケーラブルである。すなわち、レイテンシ、メッセージ数、メッセージサイズおよび必要な記憶容量等のすべての関連するメトリックが、クライアント群のサイズに依存しない。本発明によってサポートされるクライアント数には上限がない。また、リーダは完全に未知であってもよい。
本発明によってさらに初めて認識されたこととして、読み出しレイテンシが大幅に低減され、徐々に劣化する。すなわち、2回の最大値が提供される。
本発明によってさらに初めて認識されたこととして、請求項1、2、15および16に記載の方法およびシステムは、軽量である。すなわち、秘密情報およびコミットメント情報の計算は安価であり、書き込まれる値に依存しない。また、秘密情報および対応するコミットメント情報は、事前に、および/または、システムの外部で、生成されることが可能である。
本発明によってさらに初めて認識されたこととして、請求項1、2、15および16に記載の方法およびシステムは、堅牢である。すなわち、リーダは、改竄された、あるいは古い値を決して返さない。可用性は、メタデータすなわちコミットメント情報の秘匿性が提供される限り、保証される。
本発明によってさらに初めて認識されたこととして、請求項1、2、15および16に記載の方法およびシステムは、デジタル署名に依拠しないため、データの署名および検証に関連する計算コストが節約される。また、公開のインフラストラクチャおよび/または信頼されたディーラは、関連するキー管理とともに、不要である。
さらなる特徴、利点および好ましい実施形態は、後続の従属請求項に記載される。
好ましい実施形態によれば、タイムスタンプ情報が生成され、前記保存すべきデータに割り当てられる。生成されたタイムスタンプ情報をデータに割り当てることによって、同時並行するライタからの保存すべきデータを、タイムスタンプ情報に従って容易に保存することができ、アトミック一貫性を容易に保証することができる。すなわち、保存されるデータにはあるタイムスタンプが割り当てられ、読み出し動作が実行されると、該読み出し動作は、キーに対応するデータまたはより新しいデータを返す。
さらなる好ましい実施形態によれば、生成されるタイムスタンプ情報はグローバルに一貫性がある。例えば、サーバが、グローバルに一貫性のあるタイムスタンプをデータにローカルに割り当てるように構成されると、タイムスタンプ情報に関してライタ間の明示的調整が不要となる。例えば、それらのライタのタイムスタンプ情報の交換、すなわち、それらのローカルなタイムスタンプを調整して一貫性のあるタイムスタンプ情報を得ることが不要であるため、コストが節減されレイテンシが低減される。
さらなる好ましい実施形態によれば、生成されたタイムスタンプ情報は、保存すべきデータに該タイムスタンプ情報を割り当てる前に収集される。これによりフレキシビリティが向上する。というのは、例えば、各サーバがローカルなタイムスタンプ情報を作成または生成してもよいからである。その場合、相異なるタイムスタンプが収集され、ライタによって調整される。これにより、各サーバは、相異なるサーバのローカルな必要性に最適化されることが可能な固有のローカルなタイムスタンプを使用することができる。
さらなる好ましい実施形態によれば、ステップc)および/またはf)を実行する前に、タイムスタンプ情報が評価される。これにより、保存されているデータのうち、最高のタイムスタンプを有するデータに対応する最新のデータを提供することが可能となる。
さらなる好ましい実施形態によれば、好ましくは少なくとも対称的に認証されたタイムスタンプ情報を交換することによって、タイムスタンプ情報の妥当性が検証される。例えば、同期されていないクロックを有する複数のライタが同じキーを更新する場合、それらのライタは、正当なサーバから見える最高のタイムスタンプを判定する必要がある。その目的のため、ライタは、n−t個のサーバのうちのあるサーバから見える最高のタイムスタンプを選択する。悪意のサーバが、正当なサーバの最後のタイムスタンプよりも大幅に高いタイムスタンプで応答することにより、タイムスタンプを無駄にする可能性がある。タイムスタンプを妥当性検査するため、ライタは、ライタのみに既知の対称キーを共有し、値に割り当てられるあらゆるタイムスタンプをそのキーで認証することにより、検証されたタイムスタンプ情報を提供することが可能である。
さらなる好ましい実施形態によれば、コミットメント情報はハッシングによって生成される。その利点の1つは、メッセージに含められる必要のある追加的情報がほとんどなく、コミットメント情報の生成が安価なことである。また、隠蔽された値が公に利用可能であるため、検証をサーバからリーダに移行することが可能であり、パフォーマンスおよび/またはスケーラビリティが向上する。ハッシングによってコミットメント情報を生成するため、十分な長さのランダムビット列に一方向性関数が適用される。そして、コミットメント情報はステップb)で使用され、ランダムビット列で表される対応する秘密情報は、ステップe)に従って配布される。その場合、正当なサーバにおけるステップD)が読み出し動作によって開始される。これは、リーダから受信された秘密情報にライタがコミットしたかどうかをチェックすることを含む。
さらなる好ましい実施形態によれば、コミットメント情報は、ランダム値と、該ランダム値に次数tのランダム多項式を適用した多項式値とを使用することによって生成される。その利点の1つは、秘密情報を高々t個の持分の悪意者の集合的知識から早期に構成することができず、敵が部分的に正当な秘密情報を構成することが防止されることである。部分的に正当な秘密情報とは、正当なサーバの真部分集合によって妥当とされる秘密情報を意味する。コミットメント情報を構成するため、次数tのランダム多項式P(これが秘密情報を表す)が構成される。そして、ランダム値x(n個のサーバのそれぞれに対して1つずつ)を選び、P(x)を計算することによって、n個のコミットメント情報が構成される。その場合、i番目のサーバに対するコミットメントは、ペア(x,P(x))からなる。そして、コミットメント情報は、セキュアな、または認証されたポイントツーポイントチャネルを通じてステップb)に従って配布される。これにより、正当なサーバへ送信される各コミットメント情報は、その受信者にのみ知られることが保証される。そして、ライタは、ステップe)に従って、すべてのサーバへ多項式Pを送信する。
読み出し動作が行われる場合、正当なサーバにおけるステップD)による妥当性検査が、その読み出し動作によって開始される。これは、ライタが多項式P′にコミットしたか、すなわち、リーダから受信されるキーk、タイムスタンプts、および多項式P′のタプル(k,ts,P′)で表される候補に関連する多項式P′を記述する曲線が、ライタから受信される対応するタプル(k,ts,v,(x,P(x))から得られる点(x,P(x)を含むかどうかをチェックすることからなる。正当性は秘密のチャネルによって保証されることが可能であり、正当なサーバは、自己の持分を決して公表してはならない。
さらなる好ましい実施形態によれば、コミットメント情報はサーバに依存して生成され、好ましくは各サーバごとに、対応する別個のコミットメント情報が生成される。これにより、各サーバごとにローカルなコミットメント情報を生成することが可能となり、情報理論的な、または無条件のセキュリティを提供することができる。
さらなる好ましい実施形態によれば、セキュアなチャネル、好ましくは認証されたポイントツーポイントチャネルが、メッセージおよび/または情報の交換のために使用される。これにより、受信者が送信者からメッセージを受信した場合、その送信者がそのメッセージを送信したことが保証される。受信者および送信者が双方とも正当な場合、その送信者によって送信されるあらゆるメッセージが最終的にその受信者によって受信される。
さらなる好ましい実施形態によれば、候補は、保存されたキーおよび最後に保存および/または最後に受信された秘密情報を含む。これにより、あるタイムスタンプ以降の相異なる候補の簡易で高速な妥当性検査が可能となり、アトミック一貫性が実現される。
さらなる好ましい実施形態によれば、すべての候補の和集合がステップC)で送信される。これにより、メッセージ内の最小限の情報ですべての候補を送信することが可能となり、同一の候補が複数回送信されることが回避される。もう1つの利点として、妥当性検査はサーバによって実行されても、または、サーバの後にリーダによって実行されてもよい。というのは、妥当性検査に必要なすべての情報がサーバへ送信されており、サーバによってリーダに利用可能とされ得るからである。
さらなる好ましい実施形態によれば、ステップB)に従って収集された候補を含む第3のメッセージ、および、ステップD)に従って妥当とされた候補を含む第4のメッセージが、第1のメッセージを受信した後に提供される。第3のメッセージおよび第4のメッセージは、特に、1つのメッセージで提供されてもよい。
例えば、正当なサーバが、ステップA)に従って第1のメッセージに応答して、ステップB)に従って、読み出すべきデータの候補を収集し、さらに、収集された候補のうち妥当とされた候補を送信する。待機条件、すなわち、同じ読み出すべきデータの候補および対応する秘密情報を含むt+1個の第2のメッセージの受信が、ステップD)に従って妥当とされた収集された候補に適用される。妨害を避けるため、リーダは、所定の条件(例えばローカルタイマの満了)が満たされるまでに限って、その待機条件が満たされるのを待機する。ある段階における読み出し動作が成功しない場合、リーダは、第1の段階を完了するために別個のスレッドで待機しながら、第2の段階を実行してもよい。その利点の1つは、読み出し動作がレイテンシに関して影響を受けないことである。データの再送を避けるため、サーバは、データ(好ましくは第1の読み出し段階中にリーダへすでに送信されたデータタプル)を追跡してもよい。
さらなる好ましい実施形態によれば、第4のメッセージを受信した後、読み出すべきデータの候補が選別除去される。その利点の1つは、その場合、第2の段階を実行することはもはや不要なことである。というのは、リーダは、第1の段階の終了時に候補を選別除去するので、getすなわち読み出し動作を第1の段階で完了することが可能だからである。
本発明を好ましい態様で実施するにはいくつもの可能性がある。このためには、一方で請求項1に従属する諸請求項を参照しつつ、他方で図面により例示された本発明の好ましい実施形態についての以下の説明を参照されたい。図面を用いて本発明の好ましい実施形態を説明する際には、本発明の教示による好ましい実施形態一般およびその変形例について説明する。
本発明の実施形態によるデータを保存する方法を示す図である。 本発明の実施形態によるデータを読み出す方法を示す図である。
図1は、本発明の実施形態によるデータを保存する方法を示している。
図1において、ライタwは、4個のサーバS1〜S4(全部でn=4個のサーバであり、許容される悪意サーバの数はt=1)を含むキーバリューストレージにおいて、キーkの下で値vを保存するputすなわち書き込み動作put(k,v)を実行する。コミットメント情報commitは、提供された秘密情報に従ってすでに生成されていると仮定する。
第1のステップで、ライタwは、サーバS1〜S4へ第1のメッセージ1aを配布する。第1のメッセージ1a内に、ライタwは、キーk、保存すべき値v、タイムスタンプ情報tsおよびコミットメント情報commitを含める。ライタは、メッセージをすべてのサーバS1〜S4へ送信し、少なくともn−t=4−1=3個のサーバからの応答を待機する。
正当なサーバSが第1のメッセージ1aを受信し、当該サーバSがキーk、値v、コミットメント情報commitおよびts′>tsであるようなタイムスタンプ情報ts′のメッセージを受信していない場合、サーバSは、受信した第1のメッセージ1aに含まれる情報、すなわちキーk、値v、タイムスタンプ情報tsおよびコミットメント情報commitを保存する(参照符号saving)。いずれの場合でも、サーバSは、確認応答メッセージすなわちokメッセージによりライタwに応答する。
4−1=3個のokメッセージすなわち応答を受信した後、ライタwは、今度はキーk、タイムスタンプts、および、コミットメント情報commitに対応する秘密情報secretを含む2回目のメッセージ(第2のメッセージ、参照符号2aで表す)を送信することによって、秘密情報secretを公表する。キーkおよびタイムスタンプtsは、秘密情報、コミットメント情報および対応する値vに関係する。
正当な(すなわち故障していない、または悪意でない)サーバSが、キーk、タイムスタンプtsおよび秘密情報secretを含む第2のメッセージ2aを受信すると、サーバSは、キーkおよびts′>tsであるようなタイムスタンプ情報ts′を含む別の第2のメッセージ2aを受信していなければ、タプル〈k,ts,secret〉を保存する(saving)。いずれの場合でも、サーバSは、okメッセージ2bにより応答する。第1のメッセージ1a、1bによる第1の段階および第2のメッセージ2a、2bによる第2の段階を含むputすなわち書き込み動作は、ライタwが3個のokメッセージ2bをを受信したときに完了する。
以下の仮定の下で、書き込みすなわちput動作のレイテンシをさらに低減することができる。すなわち、ライタによるputすなわち書き込み動作は、サーバとの2回の通信で完了することができる。
a)個々のキーへのアクセスは順次的である、b)ライタ/リーダとサーバとの間の基礎となるネットワークは同期的である、および、c)故障がない、という仮定の下で、以下のputすなわち書き込み動作が本発明により実行可能である。同期、無競合および無故障によって実現される期間は、「通常の場合」とみなされ、そのように呼ばれることがある。
通常の場合、すべての正当なサーバSは、同じキーkに対して同じ更新の系列を適用するので、それらの更新はすべて同じ最高のタイムスタンプtsを保持する。したがって、サーバSは、ライタwによる明示的な調整なしに、グローバルに一貫性のあるタイムスタンプtsを値vにローカルに割り当てることが可能である。ライタは、タイムスタンプ収集および割当の段階を省略してもよい。その場合、putまたは読み出し動作が以下のように修正される。すなわち、事前書き込み段階で、ライタwは、タイムスタンプtsなしで第1のメッセージ1aを送信する。したがって、第1のメッセージ1aは、キーk、値vおよびコミットメント情報commitを含む。正当なサーバSは、第1のメッセージ1aを受信した後、最高のローカルタイムスタンプtsをさらに高いタイムスタンプ値ts′=ts+1にインクリメントし、キーk、値vおよびコミットメント情報commitをタイムスタンプts′=ts+1とともに含む受信したタプルを保存する(saving)。
そして、サーバSは、タイムスタンプ情報ts′を含む第1のメッセージ1bによりライタwに応答する。そして、ライタwは、等しいタイムスタンプts′でサーバS1〜S4からn−t=4−1=3個の応答を受信するまで待機する。その意味は、t+1=2個の正当なサーバが値vに同じタイムスタンプts′を割り当てたということである。さらなるputすなわち書き込み動作を妨害しないために、ライタwは、ローカルタイマの満了までに限って待機する。いずれの場合でも、ライタwは、n−t=4−1=3個のサーバから応答を受信することを待機する。すべての応答(第1のokメッセージ1b)が同じタイムスタンプtsをもつ場合、ライタwは書き込み段階に進み、キーk、タイムスタンプtsおよび秘密情報secretを含む第2のメッセージ2aを送信する。すべての応答1bが相異なるタイムスタンプを含む場合、ライタwは事前書き込み段階を繰り返し、キーk、タイムスタンプts′、値vおよびコミットメント情報commitを含む別の第1のメッセージ1a′を送信する。ここでts′=ts+1であり、タイムスタンプtsは受信された最高のタイムスタンプを表す。
図2は、本発明の実施形態によるデータを読み出す方法を示している。
getすなわち読み出し動作において、リーダrdは、キーkを含む第1のメッセージ1aを送信し、n−t=4−1=3個のサーバからの応答を待機する。正当なサーバSがリーダrdからキーkを含む第1のメッセージ1aを受信すると、サーバSは、以前の書き込み動作から受信されたキーk、タイムスタンプtsおよび秘密情報secretの最高タイムスタンプのタプルと、他の悪意の可能性のあるリーダrdから受信されたキーk、タイムスタンプts′(ts′>ts)および秘密情報secret′を含むタプルの集合とを含む候補の集合Cを構成する。そして、サーバSは、集合Cを、対応する第1のメッセージ1bでリーダrdへ送信する。
リーダrdが3個のサーバから第1の応答メッセージ1bを受信すると、リーダrdは、すべての候補集合Cの和集合Cを含む第2のメッセージ2aをn個すべてのサーバS1〜S4へ送信する。正当なサーバSが、和集合Cを含む対応する第2のメッセージ2aを受信すると、正当なサーバSは、キーk、タイムスタンプtsおよび秘密情報secretを含む各タプルについて、キーk、タイムスタンプts、値vおよびコミットメント情報commitを含む対応するタプルがサーバSにローカルに保存されているかどうかをチェックする。yesの場合、サーバSは、そのコミットメント情報commitを用いて秘密情報secretを妥当性検査する。そして、サーバSは、上記の妥当性チェックに合格したキーk、タイムスタンプtsおよび値vを含むタプルの別の集合Vを構成する。サーバSは、第2の応答メッセージ2bでリーダrdへ集合Vを送信する。最後のステップで、リーダrdは、少なくとも3個のサーバからの、対応する応答メッセージ2bの受信を待機する。そして、最高のタイムスタンプtsを有する妥当とされた候補Vの値vが選択され、getすなわち読み出し動作get(k)に対する値vとして返される。キーk、タイムスタンプtsおよび秘密情報secretを含む妥当とされた候補Vは、t+1個のサーバがキーk、タイムスタンプtsおよび値vを含む第2の応答メッセージ2bにより応答する場合に妥当である。キーk′、タイムスタンプts′、秘密情報secret′を有する候補は、n−t=4−1=3個のサーバがキーk′、タイムスタンプts′、値v′を含まない第2の応答メッセージ2bにより応答する場合に非妥当である。
上記で定義した通常の場合、キーk′(k′=k)、タイムスタンプts、秘密情報secretと、キーk′(k′=k)、タイムスタンプts、値vを含む妥当とされたタプルに含まれる対応する値とを有するタプルで表される返された候補が、第1の段階(メッセージ1aおよび1bで表される)におけるn−t=4−1=3個のサーバから第1の段階において収集されるならば、getすなわち読み出し動作は、メッセージ2a、2bによる第2の段階を省略することも可能である。正当なサーバSは、キーkのみを含む第1のメッセージ1aに応答して、第1の応答メッセージ1bおよび第2の応答メッセージ2bをリーダrdへ送信あるいは返送する。応答メッセージ1b、2bは両方とも、図2のメッセージ1bおよび2bに示したのと同じ情報を含む。このメッセージの分離は論理的であり、含まれるデータは単一の物理メッセージで送信可能である。
リーダrdにおいて、図2のメッセージ2a、2bで表される第2の読み出し段階の待機条件が、第1の段階で受信されるメッセージ1b、2bに適用される。待機条件とは、リーダrdが、少なくともn−t=4−1=3個のサーバからの応答メッセージ1b、2bの受信を待機することを意味する。
妨害を避けるため、リーダrdは、ローカルタイマの満了までに限って、待機条件が満たされるのを待機する。また、リーダrdは、ある段階における読み出しが成功しない場合、第2の段階に移行し、別個のスレッドで待機してもよい。これにより、getすなわち読み出し動作のレイテンシが影響を受けない。データの再送を避けるため、サーバは、第1の段階中にリーダrdへすでに送信されたデータタプルを追跡してもよい。
要約すれば、本発明は、可用性、完全性およびアトミック一貫性を提供する。完全性は以下のように満たされる。すなわち、キーkのgetすなわち読み出し動作が値vを返す場合、その値は、ビザンチンサーバによって捏造されたものではない。詳細には、完全性が満たされる理由は、getすなわち読み出し動作がキーkの下で値vを受信する場合、t+1個のサーバが、値vが書かれたことを確認しているからである。したがって、正当なサーバが値vを保存しているので、vは改竄されていない。
また、可用性が満たされる。すなわち、値vによるキーkのputすなわち書き込み動作と、値vに対するキーkの読み出しすなわちget動作は決して互いに妨害しない。
さらに、アトミック一貫性が満たされる。すなわち、キーkのgetすなわち読み出し動作が値vを返す場合、その値vは、a)キーkによるgetすなわち読み出し動作、またはb)getすなわち読み出し動作と同時並行したputすなわち書き込み動作、に先行するキーkおよび値vによる最後のputすなわち書き込み動作によって書き込まれたものである。キーkによるgetすなわち読み出し動作が値vを返し、その後のキーk′によるgetすなわち読み出し動作が値v′を返す場合、キーkおよび値v′による書き込み動作すなわちput動作は、キーkおよび値vによる書き込みすなわちput動作に先行していない。
詳細には、アトミック一貫性は以下の理由で満たされる。すなわち、putすなわち書き込み動作put(k,v)がgetすなわち読み出し動作get(k)に先行する場合、キーk、タイムスタンプ情報tsおよび秘密情報secretを含む対応する候補(k,ts,secret)がt+1個の正当なサーバに保存されている。キーkに対するgetすなわち読み出し動作はn−t個のサーバの応答を待機するので、t+1個の正当なサーバのうちのいずれかはn−t個のサーバのうちにあり(定足数の交わり)、ts′≧tsとなる候補(k,ts′,secret′)により応答する。そのサーバは正当なサーバであるので、その候補は決して非妥当とされることはなく、最終的に妥当となる。こうして、アトミック一貫性は、対応する値v′を返すことにより満たされる。
getすなわち読み出し動作get(k)およびget(k)′が悪意でないリーダによる読み出し動作であり、get(k)がget(k)′に先行し、v、v′が返される対応する値であり、さらに、矛盾律により、キーkおよび値v′による書き込みすなわちput動作がキーkおよび値vによる対応するputすなわち読み出し動作に先行すると仮定される場合、get(k)動作は値vを返すので、t+1個のサーバは、キーk、タイムスタンプtsおよび秘密情報secretを含む対応する候補を保証している。こうして、第1のメッセージ1a、1bで表される事前書き込み段階は完了する。これは、t+1個の正当なサーバがキーk、タイムスタンプ情報ts、値vおよびコミットメント情報commitを保存していることを意味する。
読み出し動作get(k)は、〈k,ts,secret〉を含む候補をt+1個の正当なサーバに書き戻している。他のgetすなわち読み出し動作get(k)′はn−t個のサーバの応答を待機するので、それらのうちの少なくとも1つはキーk、タイムスタンプtsおよび秘密情報(k,ts,secret)を報告し、t+1個の正当なサーバが(k,ts,v,commit)を保存しているので、候補(k,ts,secret)が最終的に妥当とされる。リーダrdは常に最高タイムスタンプの妥当な候補を返し、値v′はvよりも低いタイムスタンプtsに割り当てられている(put動作put(k、v′)はput(k、v)に先行するため)ので、get動作get(k)′は、仮定に矛盾する値v′を返さない。したがって、さらにアトミック一貫性が満たされている。
要約すれば、本発明は、リーダが、返す候補としてある値を選択する場合、書き込み動作は事前書き込み段階を完了していなければならない。すなわち、その値はt+1個の正当なサーバの集合に保存されている。読み出し動作は、事前書き込み段階に関連する書き戻しを省略することができる。また、本発明は、事前書き込み段階の完全性を提供する。値は、ライタのみによって知られている秘密情報へのコミットメント情報とともに書き込まれる。秘密情報は、事前書き込み段階の完了後にのみライタによって公表される。読み出し動作中に、コミットメント情報は、秘密情報の妥当性を検証するために使用される。秘密情報および値の妥当性が両方とも十分多く(すなわち、少なくともt+1個)のサーバによって確認される場合、その値は改竄されておらず、事前書き込み段階は完了していることが保証される。
本発明によれば、1回の往復を要する1回の書き戻しで十分である。また、本発明によれば、リーダは、実際に返される候補を決定する前に書き戻しを行う。したがって、返される候補を含む集合の書き戻しで十分であり、選別の作業は後続の読み出しに委ねられる。書き戻しは、すべての関連する候補を収集した直後に実行されてもよい。これにより、別個の書き戻し段階が不要となる。
また、本発明は、読み出し動作の場合に、メタデータ(すなわち、値に関するが値自体ではないデータ)のみを書き戻す。これにより、悪意のリーダがサーバに保存された情報を毀損することが防止され、ビザンチンリーダへの耐性を得ることが可能となる。
本発明によれば、秘密が第1の段階でコミットされ、秘密は第2の段階で公表される。読み出し動作中に、コミットメント情報は、秘密情報の妥当性をチェックするために使用される。秘密情報がt+1個のサーバによって妥当とされた場合、書き込みすなわちput動作が十分に進行しており、候補を返すことが可能である。そうでない場合、n−t個のサーバが秘密情報を非妥当としており、候補は破棄される。
一実施形態において、本発明によれば、タイムスタンプなしで値を事前書き込みし、明示的な調整なしでタイムスタンプをサーバにローカルに割り当てる。これにより、1回での読み出し動作が可能となる。サーバは、キーkを有する第1のメッセージに対して、あたかもリーダからメッセージ2aをすでに受信しているかのように、メッセージ1bおよび2bの両方により応答する。その場合、リーダは、1回目の最後に候補を選別除去しなければならない。
本発明によれば、以下のことが実現される。
1)悪意の故障に対して耐性のある堅牢で無署名のアトミックなキーバリューストア。悪意のサーバおよびクライアント(リーダ)の両方がサポートされる。
2)レイテンシ、メッセージ数、メッセージサイズおよび必要な記憶容量等のすべての関連するメトリックが、クライアント群のサイズに依存しない、という意味でのスケーラビリティ。クライアント数には上限がない。また、リーダは完全に未知であってもよい。スケーラビリティとは、メッセージ数およびメッセージサイズがクライアント数に依存しないことを意味する。サーバ間通信がないため、メッセージ数はサーバ数に比例する。
3)最適で徐々に劣化する読み出しレイテンシ。通常の場合(単一のキーに対する同期および無競合で表される)には1回、最悪の場合には2回。低レイテンシ:本発明は、2往復の読み出しという、可能な限り最低のレイテンシを実現する。
4)最適な複製度3t+1。サポートされる悪意サーバの割合を向上させることはできない。その結果としての利点は、それぞれデータの持分を保持する多数のデータノードがフォールトトレランスのために複製されたデータセンタ環境において明らかである。
5)書き込まれる値に依存しない安価で簡易な方法で秘密およびコミットメントが計算される。したがって、メタデータを、クリティカルパスの外部で事前に生成することができる。
6)悪意サーバのしきい値、任意個数のクライアントクラッシュ、非同期および競合にかかわらず、可用性および一貫性が保証される。リーダは、改竄された、あるいは古い値を決して返すことはなく、メタデータの秘匿性が保持される限り可用性が保証される。したがって、本方法およびシステムの安全性は常に(決定論的に)保証される。本発明は、署名に基づくいかなるプロトコルよりも堅牢である。
署名に基づくストレージプロトコルは、ある仮定、例えば、キーの秘匿性、ある数学問題を解くことが手に負えないこと(因数分解の困難さ)、の下でのみ一貫性および完全性を保証する。これらの仮定が破れるときには、一貫性および完全性も破れる。一貫性および完全性は、本発明によって実現される。仮定の集合から最悪に逸脱した場合でも、安全性は保持される。
上記の説明および添付図面の記載に基づいて、当業者は本発明の多くの変形例および他の実施形態に想到し得るであろう。したがって、本発明は、開示した具体的実施形態に限定されるものではなく、変形例および他の実施形態も、添付の特許請求の範囲内に含まれるものと解すべきである。本明細書では特定の用語を用いているが、それらは総称的・説明的意味でのみ用いられており、限定を目的としたものではない。

Claims (18)

  1. 3t+1=nを満たすt<n個のサーバが任意に故障する可能性があるような複数n個のサーバ(S,S,S,S)を有するキーバリューストレージにライタがデータ(v)を保存する(put)方法において、
    a)秘密情報(secret)に対するコミットメント情報(commit)を生成するステップと、
    b)保存すべきデータ(v)と、該データ(v)に対応するキー(k)と、前記生成されたコミットメント情報(commit)とを含む第1のメッセージ(1a)を前記n個のサーバへ配布するステップと、
    c)前記第1のメッセージ(1a)に含まれる情報を少なくともいくつかのサーバ(S,S,S)に保存する(saving)ステップと、
    d)少なくともn−t個のサーバ(S,S,S)が第1の保存確認情報(1b)を提供するステップと、
    e)対応するキー(k)および前記秘密情報(secret)を含む第2のメッセージ(2a)を前記n個のサーバ(S,S,S,S)へ配布するステップと、
    f)前記第2のメッセージ(2a)に含まれる情報を保存する(saving)ステップと、
    g)少なくともn−t個のサーバ(S,S,S)が第2の保存確認情報(2b)を提供するステップと
    を備えたことを特徴とする、キーバリューストレージにデータを保存する方法。
  2. 3t+1=nを満たすt<n個のサーバが任意に故障する可能性があるような複数n個のサーバ(S,S,S,S)を有するキーバリューストレージに保存されたデータ(v)をリーダが読み出す(get)方法において、
    A)読み出すべきデータ(v)に対応するキー(k)を含む第1のメッセージ(1a)を配布するステップと、
    B)少なくとも2t+1個のサーバ(S,S,S)から前記読み出すべきデータ(v)の候補(C,C,Cold)を収集する(1b)ステップと、
    C)コミットメント情報(commit)に対応する秘密情報(secret)および前記読み出すべきデータ(v)に対応する情報を書き戻す(2a)ステップと、
    D)前記コミットメント情報(commit)と前記秘密情報(secret)の一致に基づいて、前記収集された候補(C,C,Cold)を妥当性検査(検証)するステップと、
    E)妥当とされた候補(V)に従って、読み出すべきデータ(v)の候補を決定するステップと、
    F)読み出すべきデータ(v)の同じ候補および対応する秘密情報(secret)を含むt+1個の応答メッセージ(2b)に基づいて、読み出すべきデータを選択するステップと
    を備えたことを特徴とする、キーバリューストレージに保存されたデータを読み出す方法。
  3. タイムスタンプ情報(ts)が生成され、前記保存すべきデータ(v)に割り当てられることを特徴とする請求項1に記載の方法。
  4. 生成されるタイムスタンプ情報(ts)はグローバルに一貫性があることを特徴とする請求項1または3に記載の方法。
  5. 保存すべきデータ(v)にタイムスタンプ情報(ts)を割り当てる前に、生成されたタイムスタンプ情報(ts)が収集されることを特徴とする請求項1、3および4のいずれか1項に記載の方法。
  6. ステップc)およびステップf)の少なくとも一方を実行する前に、タイムスタンプ情報(ts)が評価されることを特徴とする請求項1、3ないし5のいずれか1項に記載の方法。
  7. タイムスタンプ情報(ts)の妥当性が検証されることを特徴とする請求項1ないし6のいずれか1項に記載の方法。
  8. 対称的に認証されたタイムスタンプ情報を交換することによって、前記タイムスタンプ情報(ts)の妥当性が検証されることを特徴とする請求項7に記載の方法。
  9. コミットメント情報(commit)がハッシングによって生成されることを特徴とする請求項1ないしのいずれか1項に記載の方法。
  10. コミットメント情報(commit)が、ランダム値(x)と、該ランダム値(x)に次数tのランダム多項式(P)を適用した多項式値とを使用することによって生成されることを特徴とする請求項1ないしのいずれか1項に記載の方法。
  11. コミットメント情報(commit)がサーバ(S,S,S,S)に依存し、好ましくは各サーバ(S,S,S,S)ごとに、対応する別個のコミットメント情報(commit)が生成されることを特徴とする請求項10に記載の方法。
  12. セキュアなチャネル、好ましくは認証されたポイントツーポイントチャネルが、メッセージおよび情報の少なくとも一方の交換のために使用されることを特徴とする請求項1ないし11のいずれか1項に記載の方法。
  13. 候補(C,C,Cold)が、保存されたキー(k)ならびに最後に保存および受信の少なくとも一方がなされた秘密情報(secret)を含むことを特徴とする請求項2に記載の方法。
  14. すべての候補(C,C,Cold)の和集合(C)がステップC)で送信されることを特徴とする請求項2に記載の方法。
  15. ステップB)に従って収集された候補(C,C,Cold)を含む第3のメッセージ、および、ステップD)に従って妥当とされた候補(V,V,Vold)を含む第4のメッセージが、前記第1のメッセージ(1a)を受信した後に提供されることを特徴とする請求項2,13および14のいずれか1項に記載の方法。
  16. 前記第4のメッセージを受信した後、前記読み出すべきデータ(v)の候補が選別除去されることを特徴とする請求項15に記載の方法。
  17. キーバリューストレージにデータ(v)を保存するシステムにおいて、該システムは、3t+1=nを満たすt<n個のサーバが任意に故障する可能性があるような複数n個のサーバ(S,S,S,S)と、前記キーバリューストレージにデータ(v)を書き込むライタ(w)とを有し、
    前記ライタ(w)が、保存すべきデータ(v)と、該データ(v)に対応するキー(k)と、秘密情報(secret)から生成されたコミットメント情報(commit)とを含む第1のメッセージ(1a)を前記n個のサーバ(S,S,S,S)へ配布するように動作可能であるように構成され、
    少なくともいくつかのサーバ(S,S,S,S)が、前記第1のメッセージ(1a)に含まれる情報を保存するように動作可能であるように構成され、
    少なくともn−t個のサーバ(S,S,S,S)が第1の保存確認情報(1b)を受信した後、前記ライタ(w)が、対応するキー(k)および前記秘密情報(secret)を含む第2のメッセージ(2a)を前記n個のサーバ(S,S,S,S)へ配布するように動作可能であるように構成され、
    前記第2のメッセージ(2a)に含まれる前記第2のメッセージ(2a)の情報を保存した後、少なくともn−t個のサーバ(S,S,S,S)が、第2の保存確認情報(2b)を提供するように動作可能であるように構成される
    ことを特徴とする、キーバリューストレージにデータを保存するシステム。
  18. キーバリューストレージに保存されたデータを読み出すシステムにおいて、該システムは、3t+1=nを満たすt<n個のサーバが任意に故障する可能性があるような複数n個のサーバ(S,S,S,S)と、該キーバリューストレージに保存されたデータ(v)を読み出すリーダ(rd)とを有し、
    前記リーダ(rd)が、読み出すべきデータ(v)に対応するキー(k)を含む第1のメッセージ(1a)を配布し、少なくとも2t+1個のサーバ(S,S,S,S)から前記読み出すべきデータ(v)に対応する候補(C,C,Cold)を収集し、秘密情報(secret)から生成されたコミットメント情報(commit)に対応する該秘密情報(secret)および前記読み出すべきデータ(v)に対応する情報を書き戻し、同じ読み出すべき候補(C,C,Cold)および対応する秘密情報(secret)を含むt+1個の応答メッセージ(C,C,Cold)に基づいて、読み出すべきデータ(v)を選択するように動作可能であるように構成され、前記読み出すべきデータ(v)の候補(C,C,Cold)は妥当とされた候補(V)に従って決定され、前記収集された候補(C,C,Cold)は前記コミットメント情報(commit)と前記秘密情報(secret)の一致に基づいて妥当性検査される
    ことを特徴とする、キーバリューストレージに保存されたデータを読み出すシステム。
JP2014519511A 2012-07-06 2012-07-06 キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム Active JP5801482B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2012/063322 WO2013152812A1 (en) 2012-07-06 2012-07-06 Method and system for storing and reading data in or from a key value storage

Publications (2)

Publication Number Publication Date
JP2014524204A JP2014524204A (ja) 2014-09-18
JP5801482B2 true JP5801482B2 (ja) 2015-10-28

Family

ID=46604273

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014519511A Active JP5801482B2 (ja) 2012-07-06 2012-07-06 キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム

Country Status (6)

Country Link
US (1) US9454312B2 (ja)
EP (1) EP2689333B1 (ja)
JP (1) JP5801482B2 (ja)
KR (1) KR101574871B1 (ja)
ES (1) ES2524124T3 (ja)
WO (1) WO2013152812A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6459702B2 (ja) * 2015-03-26 2019-01-30 日本電気株式会社 データベースシステム、情報記憶方法、プログラム
CN112491986B (zh) * 2016-02-29 2022-07-29 华为技术有限公司 一种分布式系统中命令分发方法、装置及系统
US10425483B2 (en) 2016-05-16 2019-09-24 International Business Machines Corporation Distributed client based cache for keys using demand fault invalidation
WO2018095540A1 (en) 2016-11-25 2018-05-31 NEC Laboratories Europe GmbH Method and system for byzantine fault - tolerance replicating of data
SG11202000804PA (en) 2017-08-15 2020-02-27 Nchain Holdings Ltd Threshold digital signature method and system
JP7202358B2 (ja) 2017-08-15 2023-01-11 エヌチェーン ライセンシング アーゲー 閾ボールトを生成する、コンピュータにより実施される方法
KR102406666B1 (ko) 2017-09-20 2022-06-08 삼성전자주식회사 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
US10275265B1 (en) 2017-09-21 2019-04-30 Inductive Automation, LLC Graphical user interface for editing components in graphical user interfaces for industrial control systems

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6957331B2 (en) * 2000-01-14 2005-10-18 International Business Machines Corporation Method of achieving multiple processor agreement in asynchronous networks
US6496840B1 (en) * 2000-05-31 2002-12-17 International Business Machines Corporation Method, system and program products for atomically and persistently swapping resource groups
JP2003121659A (ja) 2001-01-23 2003-04-23 Sumitomo Electric Ind Ltd 光ファイバコイルへの充填材含浸方法
JP2004254027A (ja) * 2003-02-19 2004-09-09 Toshiba Corp サーバ装置、鍵管理装置、暗号通信方法及びプログラム
WO2009107442A1 (ja) * 2008-02-29 2009-09-03 日本電気株式会社 サーバ認証システム、サーバ認証方法及びサーバ認証用プログラム
US8533478B2 (en) * 2008-10-24 2013-09-10 Hewlett-Packard Development Company, L. P. System for and method of writing and reading redundant data
US8189789B2 (en) 2008-11-03 2012-05-29 Telcordia Technologies, Inc. Intrusion-tolerant group management for mobile ad-hoc networks
US20120117067A1 (en) 2010-10-29 2012-05-10 Navteq North America, Llc Method and apparatus for providing a range ordered tree structure
JP5719323B2 (ja) 2012-02-28 2015-05-13 日本電信電話株式会社 分散処理システム、ディスパッチャおよび分散処理管理装置

Also Published As

Publication number Publication date
ES2524124T3 (es) 2014-12-04
KR101574871B1 (ko) 2015-12-04
EP2689333A1 (en) 2014-01-29
EP2689333B1 (en) 2014-09-10
WO2013152812A1 (en) 2013-10-17
US9454312B2 (en) 2016-09-27
US20140143369A1 (en) 2014-05-22
JP2014524204A (ja) 2014-09-18
KR20140033086A (ko) 2014-03-17

Similar Documents

Publication Publication Date Title
JP5801482B2 (ja) キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム
EP3776208B1 (en) Runtime self-correction for blockchain ledgers
TWI705690B (zh) 分布式網路中進行主節點變更的系統
JP6803991B2 (ja) 分散システムにおけるネットワークノード間のコンセンサスを実現すること
Miller et al. The honey badger of BFT protocols
JP7012879B2 (ja) 誤り訂正符号に基づく共有されたブロックチェーンデータの記憶のコンセンサス
AU2019203862B2 (en) System and method for ending view change protocol
JP2022549581A (ja) Dag構造のブロックチェーンにおいてブロックの連続的順序を決定するためのコンピューティング・システム、方法、非一時的コンピュータ可読媒体及びコンピュータ・プログラム
JP7050955B2 (ja) 共有されたブロックチェーンデータの記憶の優先順位付け
JP7004423B2 (ja) 誤り訂正符号に基づく共有されたブロックチェーンデータの記憶のデータセキュリティ
JP7165148B2 (ja) ブロックチェーンネットワークにおける整合性のある分散型メモリプールのための方法及びシステム
WO2018154713A1 (ja) 情報検証システム、情報検証装置、方法およびプログラム
JP2022508247A (ja) 信頼度ベースのコンセンサスを伴う高性能分散型記録システム
Dobre et al. PoWerStore: Proofs of writing for efficient and robust storage
JP2023506634A (ja) 部分的に順序付けられたブロックチェーン
US20230037932A1 (en) Data processing method and apparatus based on blockchain network, and computer device
Yadav et al. A comparative study on consensus mechanism with security threats and future scopes: Blockchain
JP6951649B2 (ja) ブロック検証装置、ブロック検証方法、及びプログラム
Platania et al. On choosing server-or client-side solutions for BFT
Ali Trust-to-trust design of a new Internet
JP2023515369A (ja) 分散型データベース
Ali et al. Blockstack technical whitepaper
KR20210142823A (ko) 블록체인 기반의 데이터 관리 방법 및 장치
Dobre et al. Proofs of writing for robust storage
Spenger Using Blockchain for Tamper-Proof Broadcast Protocols

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141022

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150219

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150728

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150826

R150 Certificate of patent or registration of utility model

Ref document number: 5801482

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350