JP6530805B2 - ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム - Google Patents

ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム Download PDF

Info

Publication number
JP6530805B2
JP6530805B2 JP2017234518A JP2017234518A JP6530805B2 JP 6530805 B2 JP6530805 B2 JP 6530805B2 JP 2017234518 A JP2017234518 A JP 2017234518A JP 2017234518 A JP2017234518 A JP 2017234518A JP 6530805 B2 JP6530805 B2 JP 6530805B2
Authority
JP
Japan
Prior art keywords
file
chunk
cloud storage
user
cfs
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
JP2017234518A
Other languages
English (en)
Other versions
JP2018060573A (ja
Inventor
アンソニー フランソワ ゴーダ
アンソニー フランソワ ゴーダ
Original Assignee
ビットカーサ インコーポレイテッド
ビットカーサ インコーポレイテッド
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 ビットカーサ インコーポレイテッド, ビットカーサ インコーポレイテッド filed Critical ビットカーサ インコーポレイテッド
Publication of JP2018060573A publication Critical patent/JP2018060573A/ja
Application granted granted Critical
Publication of JP6530805B2 publication Critical patent/JP6530805B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6272Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database by registering files or documents with a third party
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Description

〔関連出願への相互参照〕
[0001]本出願は、2011年10月19日出願の米国特許仮出願第61/549,206号、2011年9月25日出願の米国特許仮出願第61/538,928号、2011年9月11日出願の米国特許仮出願第61/533,264号、及び2011年5月14日出願の米国特許仮出願第61/486,240号である米国特許仮出願の利益を主張するものであり、この各々は、ここで引用により組み込まれる。
[0002]本発明の実施形態は、ネットワーク接続ストレージの分野に関し、より具体的には、クラウドストレージシステムに関する。
[0003]クラウドベースのストレージシステム、オンラインバックアップサービス、及び大規模ファイル転送システムが一般的になると、ストレージ要件及び帯域幅要件は、2つの重要なファクタであり、これらは、制御される場合に、重要な競争力のある利点をもたらすことができる。しかし、これらのオンラインストレージシステムのユーザが、このようなサービスのオペレータからもサービスの他のユーザからも自分のデータがセキュアであることを望むという競合するファクタが存在する。
[0004]顧客へのサービスとしてオンラインファイルシステムを実施する従来の方法は、各ユーザにファイル転送プロトコル接続又は他のファイルトランスポートブロトコルを通じてワールドワイドウェブインタフェースを通してオンラインストレージシステムにファイルをアップロードさせることである。典型的には、ファイルは、暗号化されずサービスに送られ、これは、サービスのオペレータがユーザのデータにアクセス可能であることを意味する。一部の場合に、サービスは、それらのサービス内で格納のためにデータを暗号化し、一方、他の場合に、サービスは、サービスにデータをアップロードする前にデータを暗号化するクライアントソフトウエアを提供する。クライアントがアップロードする前にデータを暗号化する場合に、従来の方法は、1)何らかの固有の暗号化キー(例えば、ユーザパスワード又は公開キー)を使用してクライアントにファイルを暗号化させる、2)クライアントに暗号化ファイルをアップロードさせる、3)サーバ上に暗号化ファイルを格納することである。
[0005]暗号化されたアップロードをオンラインストレージシステムのクライアントに提供する従来の手段は、いくつかの欠点を呈する。第1に、2人の異なるクライアントが、各クライアントがオンラインストレージシステムに格納するデータ(例えば、写真、映画、歌、文書)の完全なコピーを有する可能性がある。しかし、両方のファイルは、各クライアントにより固有に暗号化されると思われるので、暗号化されたデータは同一ではなく、オンラインストレージシステムは、同じ非暗号化データの2つのコピーを格納しなければならない(暗号化形式ではあるが)。各クライアントは、そのクライアントがアップロードしたコピーを暗号解読することができるのみであると考えられるので、サービスは、このデータの1つだけのコピーを格納することはできない。
[0006]1つの代替手法は、サービスにサーバ側で暗号化キーを管理させ、従って、クライアントがアップロードするファイルを暗号解読することができることである。サーバは、次に、2つの暗号解読されたファイルが同一であると決定し、暗号解読されたデータの1つだけのコピーを格納することができる。次に、各クライアントがそのデータを要求する時に、サーバは、そのクライアント暗号化キーを用いてデータを暗号化して要求されたファイルを送信する。この手法は、オペレータが各クライアントのデータに完全なアクセスを有するという点でセキュリティを損なう。悪徳オペレータは、彼らのクライアントのデータをくまなく調べる場合がある。更に、サービス自体が単一の弱点であり、セキュリティを破るのに成功すると、クライアントのデータの全てが露出される。
[0007]説明した従来又は代替手法のいずれの下でも、クライアントがオンラインストレージシステムにファイルを保存する度に、クライアントは、そのファイルのコピー(暗号化又は非暗号化形式での)がオンラインストレージシステムに存在するか否かに関わらず、暗号化データをアップロードしなければならない。すなわち、説明した代替手法の下でさえも、クライアントは、オンラインストレージシステムが既にデータをそのストレージプールに有するので、サーバが必要としないデータをアップロードして貴重な帯域幅リソースを無駄にする。
[0008]本発明は、以下の説明及び本発明の実施形態を示すために使用される添付図面を参照することによって最も良く理解することができる。
[0009]本発明の実施形態によるクライアントデバイスに結合されたクラウドストレージシステムを示すブロック図である。 [0010]クラウドストレージゲートウェイ及びクラウドストレージプールを含むクラウドストレージシステムを示すブロック図である。 [0011]本発明の実施形態に従って格納されたクラウドファイルシステムにファイルを保存する方法の流れ図である。 [0012]本発明の実施形態に従ってユーザ不可知ファイル暗号化を行う方法の流れ図である。 [0013]本発明の実施形態に従ってデータのユーザ不可知暗号化を行う方法の流れ図である。 [0014]本発明の実施形態に従ってユーザ不可知ファイル暗号化を行う方法の視覚化を示す図である。 [0015]本発明の実施形態に従ってファイルシステムマニフェストの生成を含むクラウドファイルシステムにファイルを保存する方法の流れ図である。 [0016]本発明の実施形態に従ってクラウドファイルシステムにファイルからデータを読み取る方法の流れ図である。 [0017]本発明の実施形態によるクラウドファイルシステム及びクラウドファイルシステムへのファイルの格納の視覚化を示す図である。 [0018]本発明の実施形態によるファイルのユーザ不可知暗号化及び圧縮の視覚化を示す図である。 [0019]本発明の実施形態による2つのファイルのユーザ不可知暗号化及び圧縮の視覚化を示す図である。 [0020]本発明の実施形態に従ってクラウドストレージゲートウェイがクラウドファイルプールからファイルチャンクを戻す方法の流れ図である。 [0021]本発明の実施形態に従ってクラウドストレージゲートウェイがクラウドファイルプールからファイルチャンクをプリフェッチする方法の流れ図である。 [0022]本発明の実施形態に従ってクラウドストレージゲートウェイがクラウドストレージシステムにファイルチャンクがあるかを検査する方法の流れ図である。 [0023]本発明の実施形態に従ってクラウドストレージゲートウェイがクラウドストレージシステムにファイルチャンクを追加する方法の流れ図である。 [0024]本発明の実施形態に従ってファイルチャンクをクラウドストレージシステムに要求するデータフロー図である。 [0025]本発明の実施形態に従ってクラウドストレージプールにファイルチャンクをプリフェッチするように要求するデータフロー図である。 [0026]本発明の実施形態に従ってクラウドストレージシステムが1つ又はそれよりも多くのファイルチャンクを有するか否かの表示を要求するデータフロー図である。 [0027]本発明の実施形態に従ってクラウドストレージシステムに1つ又はそれよりも多くのファイルチャンクを格納するデータフロー図である。 [0028]本発明の実施形態に従ってクラウドファイルシステムに格納されたファイルを列挙するユーザインタフェースを示す図である。 [0029]本発明の実施形態に従ってクラウドファイルシステムクライアントモジュールによって提供される機能にアクセスするためのユーザインタフェースを示す図である。 [0030]本発明の実施形態に従ってクライアントデバイス上のクラウドファイルシステムアクセスを管理するためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示す図である。 [0031]本発明の実施形態に従ってクライアントデバイス上のローカルキャッシュを管理するためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示す図である。 [0032]本発明の実施形態に従ってクラウドファイルシステム内のフォルダにローカルファイルシステム内のフォルダを変換するためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示す図である。 [0033]本発明の実施形態による例示的なコンピュータシステムのブロック図である。 [0034]本発明の実施形態によるクラウドファイルシステム内のストレージへの変換の前及び後のファイルシステム要素の部分集合を示すユーザインタフェースを示す図である。 [0035]本発明の実施形態によるファイルシステムマニフェストの生成を含むクラウドファイルシステムにおいてファイルを生成する方法の流れ図を示す図である。 [0036]本発明の実施形態に従ってクラウドストレージシステムに新しいユーザを生成するためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示す図である。 [0037]本発明の実施形態に従って仮想フォルダを管理するためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示す図である。 [0038]本発明の実施形態に従ってクライアントデバイスのオペレーティングシステムに利用可能なスペースの量を与えるためにクラウドファイルシステムクライアントモジュールによって行われる方法を示す図である。 [0039]本発明の実施形態に従ってウェブファイルアクセスポータル及びクライアントデバイスによってアクセスされているクラウドストレージシステムを示す図である。 [0040]本発明の実施形態に従ってクラウドストレージシステムにアクセスしているウェブファイルアクセスポータルによって提供されるウェブファイルブラウザインタフェースを示す図である。 [0041]本発明の実施形態によるデータ構造間の関係を示すブロック図である。 [0042]本発明の実施形態に従って2つのクライアントデバイス上に使用される単一のユーザマニフェストのデータ構造間の関係を示すブロック図である。 [0043]本発明の実施形態に従って2つのクライアントデバイス上に使用される2つのユーザマニフェストのデータ構造間の関係を示すブロック図である。 [0044]本発明の実施形態に従ってユーザにファイル、フォルダ、及びファイルシステムの復元オプションを提供するためにCFSクライアントモジュールによって提供されるインタフェースを示す図である。 [0045]クラウドストレージシステムに格納されたデータへのローカルストレージシステムに格納されたデータの移行を示すブロック図である。 [0046]本発明の実施形態に従ってローカルストレージシステム内のストレージからクラウドストレージシステム内のストレージへの移行の方法のブロック図である。 [0047]本発明の実施形態に従ってクラウドストレージシステムのデータにアクセスする複数のユーザ及び機械を示すブロック図である。 [0048]本発明の実施形態に従って取り出されることになるファイルチャンクの優先待ち行列を示すブロック図である。 [0049]本発明の実施形態に従って地理的に分散されたクラウドストレージプールを示す図である。 [0050]本発明の実施形態に従って仮想フォルダのスナップショットにアクセスするためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示す図である。 [0051]本発明の実施形態に従ってクラウドファイルシステム内のフォルダにローカルファイルシステム内のフォルダを変換するためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示す図である。 [0052]本発明の実施形態による実装クラウドファイルシステムの上述の態様を他の実装ファイルシステムと比較して示す図である。
[0053]暗号化されたクライアントデータを格納し、サーバ上にクライアント暗号化キーを有することなくクラウドストレージシステムに格納されたデータの複製を排除し、かつ帯域幅利用を最少にするストレージシステム(「クラウドストレージシステム」)を構成することが望ましい。以下の説明では、データのエンドツーエンドの暗号化を行うと共に帯域幅利用を最小にしながら、クラウドストレージシステムにおいてデータの複製を最少にするクラウドストレージシステムを生成する方法及び装置に対して説明する。
[0054]以下の説明において、論理実施、オペコード、オペランドを指定する手段、リソース分割/共有/複製実施、システム構成要素のタイプ及び相互関係、及び論理分割/統合選択肢のような多くの具体的な詳細に関して本発明のより完全な理解が得られるように説明する。しかし、このような特定の詳細がなくても本発明を実施することができることは当業者により認められるであろう。他の事例において、制御構造、ゲートレベル回路、及び完全なソフトウエア命令シーケンスは、本発明を不明瞭にしないように詳細には示していない。当業者は、含めた説明により、不相応な実験なしに適切な機能性を実施することができるであろう。
[0055]本明細書における「一実施形態」、「実施形態」、「例示的な実施形態」などへの言及は、説明する実施形態が、特定の特徴、構造、又は特性を含むことはできるが、全ての実施形態が特定の特徴、構造、又は特性を必ずしも含むことができるというわけではないことを示している。更に、このような語句は、必ずしも同じ実施形態を指すわけではない。更に、特定の特徴、構造、又は特性が実施形態に関連して説明された時に、明示的に説明されたか否かに関わらず、他の実施形態に関連してこのような特徴、構造、又は特性を実施することは、当業者の知識の範囲内であるように考えられている。
[0056]以下の説明及び特許請求の範囲において、「結合された」、「接続された」という用語は、それらの派生語と共に使用する場合がある。これらの用語は、互いの同意語を意図していないことを理解しなければならない。「結合された」は、1つよりも多い要素を示すために使用しており、これらは、互いに直接的、物理的、又は電気的に接触しているか、又は互いと協働又は相互作用する場合もあれば、そうではない場合もある。「接続された」は、互いに結合された1つよりも多い要素間の通信の確立を示すために使用している。
[0057]理解しやすくするために、ある一定の品目の任意的な性質(例えば、本発明の所定の実施によりサポートされない特徴、所定の実施によりサポートされるが、一部の状況に使用され、他の状況に使用されない特徴)を表すために破線を図中で使用している。
[0058]図に示す技術は、1つ又はそれよりも多くの電子デバイス上に格納かつ実行されたコード及びデータを使用して実施することができる。このような電子デバイスは、固定有形機械可読媒体(例えば、磁気ディスク、光ディスク、読取専用メモリ、フラッシュメモリデバイス、相変化メモリ)及び一時的機械可読通信媒体(例えば、搬送波、赤外線信号、デジタル信号などのような電気、光学、音響、他の形態の伝播された信号)を使用してコード及びデータを格納して通信する(内部的に及び/又はネットワーク上で他の電子デバイスと共に)。更に、このような電子デバイスは、典型的には、ストレージデバイス、1つ又はそれよりも多くの入出力デバイス(例えば、キーボード、タッチスクリーン、及び/又はディスプレイ)、及びネットワーク接続のような1つ又はそれよりも多くの他の構成要素に結合された1組又は1つ又はそれよりも多くのプロセッサを含む。1組のプロセッサ及び他の構成要素の結合は、典型的には、1つ又はそれよりも多くのバス及びブリッジ(バスコントローラとも呼ばれる)を通じたものである。ネットワークトラフィックを搬送するストレージデバイス及び信号は、それぞれ、1つ又はそれよりも多くの固定有形機械可読媒体及び一時的機械可読通信媒体を表している。従って、所定の電子デバイスのストレージデバイスは、典型的には、その電子デバイスの1組の1つ又はそれよりも多くのプロセッサ上での実行に向けてコード及び/又はデータを格納する。言うまでもなく、本発明の実施形態の1つ又はそれよりも多くの部分は、ソフトウエア、ファームウエア、及び/又はハードウエアの異なる組合せを使用して実施することができる。
[0059]図1は、本発明の実施形態に従ってクライアントデバイスに結合されたクラウドストレージシステムを示すブロック図である。従来のオンラインストレージシステムにおいて、クライアントデータのオンラインストレージは、クライアントのデバイス上のクライアントのデータのストレージに対して2次的、例えば、バックアップである。従って、各ファイルは、主としてクライアントデバイス上で格納され、それらのファイルのコピーが、オンラインストレージシステムに格納される。これには、クライアントデバイスが、少なくともクライアントがオンラインストレージシステムに格納しているのと少なくとも同量のデータを格納することができることを必要とする問題があり、又はクライアントデバイス上に格納されたデータとオンラインストレージシステムに格納されたデータ間の同期を維持するという実施上の問題を生じる。例えば、ユーザは、オンラインストレージシステム内のデータを自分のデバイスの拡張としてのオンラインストレージシステム内のデータとしてではなく、自分のデバイス上のデータのコピーとして知覚する。
[0060]図1は、ローカルエリアネットワーク又はワイドエリアネットワークのような通信ネットワーク130を通じてクラウドストレージシステム135に結合された複数のクライアントデバイス101Aを示している。本発明の実施形態は、多くの異なるクライアントデバイスをサポートする。クライアントデバイスは、ファイルにアクセスし、かつネットワーク接続にわたって通信することができるコンピュータデバイスである。例えば、クライアントデバイスは、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、タブレット型コンピュータ、パームコンピュータ、スマートフォン、セットトップボックス、又はゲーム機とすることができる。当業者は、説明するクライアントデバイスが例示的であり、かつ本発明の実施形態によりサポートされるクライアントデバイスに決して限定しないものであることを認識するであろう。
[0061]図1では、クラウドストレージシステム135は、クラウドファイルシステム(「CFS」)のためのデータの1次ストレージとして作用する。更に、クライアントデバイス101A〜Dは、CFSにアクセスするように構成されたCFSクライアントモジュールを実行するように構成される。CFSクライアントモジュールは、更に、そのクライアントデバイス101A〜Bにより利用されるCFSのローカルキャッシュを管理する。各クライアントデバイス101A〜D内のローカルキャッシュは、クライアントデバイス101A〜Dのユーザに対して殆ど透過的である。更に、クライアントデバイス101Aを利用するユーザには、そのユーザのCFS内に格納された各ファイル及びフォルダの外見が提示されるが、それらのファイル及びフォルダの全てにアクセスするのに必要とされる全てのデータが、常にそのユーザのCFSのローカルキャッシュに存在するというわけではない。ユーザが自分のCFSのファイルにアクセスすると、クライアントデバイス101Aは、クライアントデバイスの101Aローカルキャッシュに存在せず、かつそのファイルにアクセスするのに必要とされるクラウドストレージシステム135からのあらゆるデータを取り出す。ユーザのクライアントデバイス101A内のローカルキャッシュがクラウドストレージシステム135のデータで満たされると、クライアントデバイス101Aは、クラウドストレージシステム135のデータのスペースを作るためにローカルキャッシュからデータを排除する。少なくとも1つの実施形態において、排除中に固定データがCFSのローカルキャッシュから排除されないように、CFSのローカルキャッシュに位置付けられたデータを非排除(「固定」)に向けてマーク付けすることができる。少なくとも1つの実施形態において、クライアントデバイス101Aは、まるでCFSがローカルデバイスであるようにユーザにCFSのコンテンツを提示する。
[0062]例えば、CFSクライアントモジュールは、CFSのローカルキャッシュに存在するファイルチャンクのデータベースを含むことができる。ファイルチャンクのデータベースは、どのファイルチャンクが存在するか、より多くのファイルチャンクのためのスペースを作るためにどのファイルチャンクを排除することができるか、どのファイルチャンクがローカルキャッシュに向けて固定されたか、どのファイルチャンクがクラウドストレージシステムに保存されたか、及びどの程度のスペースがローカルキャッシュによって使用されたかに関して追跡するためにCFSクライアントモジュールによって使用される情報を含むと考えられる。CFSクライアントモジュールがどのファイルチャンクを排除すべきかを決定するのに使用することができる1つの方法は、キャッシュに入れられたファイルチャンクの各々が最後にクライアントデバイスによって使用されたタイムスタンプを決定することである。例えば、データベースは、ファイルチャンクがCFSクライアントモジュールによってアクセスされる度に更新されるフィールドを含むと考えられる。CFSクライアントモジュールは、次に、最近アクセスされていない、例えば、この30日においてアクセスされていないあらゆるファイルチャンクを決定し、最初に排除に向けてそれらのファイルチャンクを選択することができるであろう。CFSクライアントモジュールは、図8を参照して説明するように、モジュールがCFSクライアントファイルチャンクを取り出そうとする時はいつでもファイルチャンクのアクセス/使用を追跡することができると考えられる。CFSクライアントモジュールは、更に、ファイルチャンクが使用される度にデータベース内のカウンタを増分することにより、ファイルチャンクがどれ程度頻繁に使用されるかを追跡することができる。次に、CFSクライアントモジュールは、他の点では同等の2つの排除候補間で使用カウントが低い方の候補が最初に排除されるように、どのファイルチャンクを排除しなければならないかを決定する時に使用カウンタを考慮することができる。より多い、より少ない、又は異なる排除基準を含む他の排除方針を実施することができることは当業者により認められるであろう。例えば、CFSクライアントモジュールは、クライアントデバイスローカルストレージシステム内のファイルチャンクをキャッシュに入れ、ローカルキャッシュ内のデータがストレージ限界に接近するか又はそのストレージ限界を超える時にCFSクライアントモジュールがファイルチャンクを排除し始めるように、ユーザがローカルキャッシュに対してそのストレージ限界を設定することを可能にすることができる場合があることは認められるであろう。
[0063]ファイルチャンクのデータベースの一実施形態において、ファイルチャンク自体が、データベース内にも格納され、一方、別の実施形態において、ファイルチャンクは、データベースとは別々に格納され、データベースは、このファイルチャンクの追跡に使用される。
[0064]これらの特徴は、ユーザがクライアントデバイス101Aに利用可能な他のストレージシステムと同様にCFSを処理することができるようにCFSをクライアントデバイス101Aとシームレスに一体化する明白な利点を呈する。更に、CFSは、クライアントデバイス101A内のローカルキャッシュ内に保存されたデータ量よりも遥かに多くのデータを格納することができる。例えば、クライアントデバイスのローカルストレージシステムがデータの80ギガバイト(「GB」)を格納することができ、かつローカルキャッシュがローカルストレージシステムの12.5%に限定された場合に、ローカルキャッシュは、10GBである。しかし、CFSは、クラウドストレージシステムにかつて格納されたあらゆるファイルを含むことができる。データ量は、10GBよりも遥かに大きい可能性が高く、ほぼ数桁違いであり、恐らくは100テラバイトである。CFSクライアントモジュールが1回に10GBまでを保つに過ぎないので、CFSクライアントモジュールは、それらのファイルに必要とされる全てのデータを実際に有することなく、クライアントデバイス上でユーザに利用可能な全てのファイルを表すことができる。ユーザがCFS内のファイルにアクセスすると、CFSクライアントモジュールは、クラウドストレージシステムの要求されたデータを取り出す。CFS内の格納のためにクライアントデバイスに利用可能なストレージスペースの量は、クライアントデバイスのローカルストレージシステムに基づいて限定されるのではなく、クライアントデバイスのローカルストレージシステムは、ローカルキャッシュに向けて適切なスペースが得られるのに十分なストレージスペースを要求するに過ぎないことに注意すべきである。むしろ、CFS内の格納のためにクライアントデバイスに利用可能なストレージスペースの量は、クラウドストレージシステム内のストレージの量に基づいて限定される。
[0065]これは、クライアントデバイス上のユーザのための多くの望ましい使用モデルをもたらす。例えば、CFSを使用することにより、ユーザは、クライアントデバイスに大きいストレージデバイスを一度も追加することなく、膨大な量のストレージスペースにアクセス可能である。ユーザが、自分のローカルストレージシステムの容量を満たすと、ローカルストレージシステム内の容量を解放するためにクラウドストレージシステム内にデータを移動することが可能である。
[0066]更に別のファイルは、そのデバイス上にCFSを実装することにより、ユーザのクライアントデバイスの全てに利用可能であり、CFSは、CFSが実装されると別のクライアントデバイスに利用可能である。従って、CFSにアクセス(読取又は書込アクセス)を承諾することによってファイルへのアクセスを伴うクライアントデバイスを提供することができる。次に、クライアントデバイスがファイルにアクセスすると、そのファイルデータは、クラウドストレージシステムから取り出され、デバイスにわたるデータの共有がシームレスになり、かつ共有すべきファイルのライブラリ全体をダウンロードするために待機するよりも顕著に速くなる。更に、大きいメディアコレクションを有するユーザは、CFS内のフォルダに自分のメディアライブラリフォルダを変換し、そのCFSをユーザのデバイスの全てと共有することができる。次に、ユーザのメディアコレクションの全ては、CFSを実装したあらゆるクライアントデバイスに利用可能になる。更に、ユーザは、追加のファイルデータをアップロードするか又はCFS内にファイルのコピーを格納することなく、単に新しい名称でCFSマニフェストをコピーすることにより、ファイルシステム全体のスナップショット又は新しいバージョンを簡単に作成することができ、それによってユーザは、ファイルシステム全体の複数のバージョンを彼の指先に保つことができる。
[0067]更に、CFSクライアントモジュールがデバイスと一体化され、例えば、クライアントデバイスの初期化において非常に早期に取り込まれるオペレーティングシステムの一部になる時に、益々多くのファイルをクラウドストレージシステムに格納することができる。実際には、ユーザの文書であればCFSに利用可能であるのみならず、アプリケーションさえもCFSにおいて提供することができる。実際には、製造業者は、簡単にクラウドデバイス上のオペレーティングシステムにCFSクライアントモジュールを一体化し、CFSを更新してCFSをCFSのそのファイルにアクセスするクライアントデバイスと共有することにより、クライアントデバイスにオペレーティングシステムファイル及びアプリケーションファイルをプッシュ配信することができる。
[0068]更に、コンテンツプロバイダは、現時点で、コンテンツを含むCFSを生成してCFSをユーザと共有することによって加入者にコンテンツを配信する簡単な方法を有する。実際に、コンテンツプロバイダは、全てが同じコンテンツを含む各ユーザ独特の個々のクラウドファイルシステムを生成し、ユーザが自分の特定のCFSを実装すると各ユーザがコンテンツにアクセス可能なので、コンテンツを1回だけアップロードすることができる。実際に、中央アクセス制御クラウドストレージシステム容量を利用して、コンテンツプロバイダは、もはや加入契約していないユーザに対してCFSへのアクセスを無効にすることができる。
[0069]一実施形態において、クラウドストレージシステム135は、サービスに加入するユーザに供給され、一般的に、加入したい一般大衆に開かれているサービスである。本発明の別の実施形態は、企業が、企業のメンバであるクライアントデバイス101A〜101Dに向けてクラウドストレージシステム135を維持することを可能にする。
[0070]図2は、クラウドストレージゲートウェイとクラウドストレージプールとを含むクラウドストレージシステムを示すブロック図である。図2では、クライアントデバイス101A〜Dのうちの1つのようなクライアントデバイス201Aは、通信ネットワーク230を通じてクラウドストレージシステム235と結合される。クラウドストレージシステム235は、クラウドストレージプール260と結合されたクラウドストレージゲートウェイ245を含む。クラウドストレージゲートウェイ245は、クライアントデバイス201A及びクラウドストレージプール260と通信する。
[0071]クラウドストレージゲートウェイ245は、クライアントデバイス201Aからの要求をクラウドストレージシステム235アプリケーションプログラミングインタフェース(「API」)呼び出しに変換する。更に、少なくとも1つの実施形態において、クラウドストレージゲートウェイは、クラウドストレージプール260のリモートキャッシュを含む。従って、クラウドストレージゲートウェイ245は、クライアントデバイスがデータをクラウドストレージシステム235に要求するとデータの要求を受信する。クラウドストレージゲートウェイ245は、クラウドストレージシステム235API呼び出しを利用してデータをクラウドストレージプール260に要求する。クラウドストレージゲートウェイ245がクラウドストレージプール260から要求されたデータを受信すると、クラウドストレージゲートウェイ260は、要求されたデータをクライアントデバイス201Aに送信する。更に、クラウドストレージゲートウェイ245がクラウドストレージプール260のリモートキャッシュを含む実施形態において、クラウドストレージゲートウェイ245は、クライアントデバイス201A又は他のクライアントデバイス(図示せず)からの要求されたデータの将来の要求にクラウドストレージプール260と通信することなくサービス対応することができるように、クラウドストレージプール260のリモートキャッシュ内に要求されたデータを保存する。クラウドストレージプール260のリモートキャッシュが満たされると、クラウドストレージゲートウェイ245は、クラウドストレージプール260により多くのデータのスペースを作るために、クラウドストレージプール260のリモートキャッシュからデータを排除する。
[0072]図3は、本発明の実施形態に従って格納されたCFS内のファイルを保存する方法の流れ図を示している。図3では、クライアントデバイスは、CFSクライアントモジュールを実行している。CFSクライアントモジュールは、ブロック300で、CFS内に保存すべきファイルを受信し、CFSは、主としてクラウドストレージシステムに格納される。CFSクライアントモジュールは、ブロック310で、ユーザ不可知ファイル暗号化機能を用いてファイルを暗号化する。
[0073]背景技術で上述したように、従来のクライアント側暗号化では、各ユーザ又はクライアントデバイス固有のキーを用いてデータを暗号化する。従って、従来のクライアント側暗号化を使用する2つのクライアントにより暗号化される同じデータは、得られる暗号化データ間の差を有するという高い確率を有する。しかし、ユーザ不可知ファイル暗号化は、異なるユーザ又はクライアントデバイスにより暗号化された同じデータを有する2つのファイルは、同一暗号化データを有するファイルを生成することになるという点において従来の暗号化と異なっている。
[0074]CFSクライアントモジュールは、ブロック320で、クライアントデバイス上のCFSのローカルキャッシュ内に暗号化ファイルを格納することによって続行される。CFSクライアントモジュールは、ユーザ不可知非複製化を利用してクライアントデバイス上に暗号化ファイルを格納する。ユーザ不可知非複製化を利用する時に、CFSクライアントモジュールは、暗号化ファイルがCFSのローカルキャッシュに存在する時を認識することができるので、暗号化ファイルの第2のコピーを格納しない。
[0075]CFSクライアントモジュールは、ブロック330で、サーバ側ユーザ不可知ファイル非複製化を行うことによって続行し、CFSクライアントモジュールは、暗号化ファイルがクラウドストレージシステムに存在するか否かを決定する。暗号化ファイルがクラウドストレージシステムに存在しない場合に、CFSクライアントモジュールは、クラウドストレージシステムに暗号化データを送信する。サーバ側ユーザ不可知ファイル非複製化により、CFSクライアントモジュールは、他のユーザ又はクライアントデバイスが暗号化ファイルを識別することができることを前提として、他のユーザ又はクライアントデバイスがクラウドストレージシステムから暗号化ファイルにアクセス可能であるようにストレージシステムに暗号化ファイルを格納させることができる。しかし、他のユーザ又はクライアントデバイスが暗号化ファイルにアクセス可能である場合もあるが、他のユーザ又はクライアントデバイスは、ユーザ不可知ファイル暗号化機能によって使用される暗号化キーを先に生成又は受信しなければ暗号化ファイルを暗号解読することができない。
[0076]図4は、本発明の実施形態に従ってユーザ不可知ファイル暗号化を行う方法の流れ図を示している。図4では、クライアントデバイスは、クラウドストレージシステムと対話するCFSクライアントモジュールを実行している。CFSクライアントモジュールは、ブロック400で、圧縮及び暗号化すべきファイル480を受信する。ブロック405で、CFSクライアントモジュールは、1組のチャンク481A〜Nにファイル480を分割する。
[0077]少なくとも1つの実施形態において、CFSクライアントモジュールは、チャンクの1つ又はそれよりも多くがデータ変換機能から利益を受けることになると決定し、その場合に、変換から利益を受けることになるチャンクを変換する。例えば、データのチャンクは、zip、bzip、又はgzipのような圧縮変換から利益を受けることができ、従って、チャンクのサイズが低減される。更に、一部のチャンクは、変換から利益を受けないか、又はそれらのチャンクを変換することは望ましくないと思われ、従って、変換は、それらのチャンクに行われないことになる。
[0078]ブロック410で、CFSクライアントモジュールは、1組の圧縮されたチャンク482A〜Nを生成する。一実施形態において、CFSクライアントモジュールは、更に、どのようにしてチャンクが変換されたか(例えば、どの圧縮アルゴリズムが利用されたか)を説明する情報を圧縮されたチャンクに埋め込む。上述したように、圧縮されたチャンク482A〜Nの1つ又はそれよりも多くが導出元のチャンクと同一であることがあり得る(すなわち、圧縮又は変換が行われなかった)。更に、当業者は、チャンクの圧縮がチャンクを処理する際に別の時間に行われる可能性があることを認識するであろう。例えば、圧縮は、暗号化キーがブロック425で生成されたがチャンクの暗号化の前に行われる可能性がある。依然として、圧縮は、ブロック430でチャンクの暗号化の後さえも行われる可能性があるが、従来の理解では、暗号化データの圧縮では暗号化に有利であるような結果は得られないことが示唆される。
[0079]CFSクライアントモジュールは、ブロック415でファイルマニフェスト483を生成する。CFSクライアントモジュールは、ブロック420で、圧縮されたチャンク482A〜Nの組において各チャンクを通して反復する。各チャンク、例えば、チャンク482Aを使用して、CFSクライアントモジュールは、ブロック425で、ユーザ不可知暗号化を用いてチャンク482Aから暗号化キー484A、暗号化されたチャンク485A、及びチャンク識別子(「ID」)486Aを生成する。ブロック430では、CFSクライアントモジュールは、ファイルマニフェスト483内にチャンクID486A及び暗号化キー484Aを格納する。CFSクライアントモジュールは、対応するチャンク481A〜Nがファイル480内に現れる順番でファイルマニフェスト483内に各チャンクID486A〜N及び暗号化キー484A〜Nを格納する。暗号化キー484A〜Nは、ユーザ不可知暗号化キーと本明細書で呼ぶ場合がある。
[0080]ブロック435では、CFSクライアントモジュールは、チャンクID486Aに対応する位置でクラウドストレージシステムに暗号化されたチャンク485Aを格納する。例えば、CFSクライアントモジュールは、格納のためにクラウドストレージシステムに暗号化されたチャンク485Aを送信することを担う通信スレッドを呼び出すことができる。このようにして、CFSクライアントモジュールは、クラウドストレージシステムに複数のチャンクをアップロードする複数の通信スレッドを呼び出すことができる。これらのスレッドは、いずれかの所定の時間に指定された数のスレッドだけが存在するようにCFSクライアントモジュールにより管理することができ、クライアントデバイスの性能がCFSクライアントモジュールにより劣化しないように、指定された量の帯域幅だけが消費される。更に、CFSクライアントモジュールは、特定のチャンクが他のチャンクの前に送信されるように通信スレッドに優先順位を付けることができる。例えば、CFSクライアントモジュールが、CFSが他のユーザ又はデバイスと共有されたという表示を受信した場合に、CFSクライアントモジュールは、共有されたCFSに関連付けられた暗号化されたチャンクのアップロードに優先順位を付けることができる。このようにして、他のユーザ及びクライアントデバイスから要求することができる暗号化されたチャンクは、他のユーザ又はクライアントデバイスと共有されていない他の暗号化されたチャンクの前にクラウドストレージシステムにアップロードされることになる。
[0081]一実施形態において、クライアントデバイスは、CFSのローカルキャッシュを含み、CFSクライアントモジュールは、CFSのローカルキャッシュがチャンクID486Aに対応する位置で暗号化されたチャンクを含むか否かを決定する。チャンクは、ユーザ不可知暗号化を用いて暗号化されるので、チャンクID486Aは、別のユーザ又はクライアントデバイスによって生成されたか否かに関わらず、暗号化データ485Aに対応する。従って、CFSのローカルキャッシュがチャンクID486Aに対応する位置で暗号化されたチャンクを含む場合に、その暗号化されたチャンクは、暗号化されたチャンク485Aと同一であるので、CFSクライアントモジュールは、暗号化されたチャンク485Aを改めて格納する必要はない。
[0082]同様に、CFSクライアントモジュールは、クラウドストレージシステムがチャンクID486Aに対応する位置で暗号化されたチャンクを含むか否かをクラウドストレージシステムに尋ねることができ、クラウドストレージシステムが暗号化されたチャンクを含まない場合に、CFSクライアントモジュールは、クラウドストレージシステムへの暗号化されたチャンク485A及びチャンクID486Aのアップロードを待ち行列に入れることができる。例えば、クラウドストレージシステムは、クラウドストレージシステムに存在するデータを示すデータ構造を生成する。このデータ構造は、クライアントデバイスに通信され、CFSクライアントモジュールは、チャンクの存在に対してデータ構造に問い合わせる。このようにして、CFSクライアントモジュールは、クラウドストレージシステムに存在するチャンクをアップロードする必要はない。一実施形態において、データ構造は、クラウドストレージシステムに存在する全てのチャンクIDのハッシュテーブルである。別の実施形態において、データ構造は、どのチャンクがクラウドストレージシステムに存在するかを決定するのに使用されるブルームフィルタである。CFSクライアントモジュールが、どのチャンクがクラウドストレージシステムに存在するかに関して尋ねることを可能にするために更に他のデータ構造を提供することができ、又はCFSクライアントモジュールは、クラウドストレージシステムと問合せを通信することができ、クラウドストレージシステムは、次に、クラウドストレージシステム内のチャンクの存在のステータスで応答する。
[0083]どのチャンクがクラウドストレージシステムに既に存在するかの問合せは、有意な利点を呈する。具体的に、クラウドストレージシステムは、いずれかのクライアントデバイスからのデータでシードすることができ、その理由は、どのクライアントデバイス又はユーザがクラウドストレージシステムにチャンクを格納したかとは無関係に同一データの格納されたチャンクが同一であるからである。サービスプロバイダは、例えば、クライアントデバイス上にある可能性が高くなるそれが決定するデータでクラウドストレージシステムをシードすることができる。例えば、アプリケーション及びオペレーティングシステムファイルは、ユーザ及びクライアントデバイスにわたって高度なアイデンティティを有する。このデータが、サービスプロバイダ、クライアントデバイス、又はユーザのいずれかによりクラウドストレージシステムに追加された場合に、あらゆるその後のクライアントデバイス又はユーザは、データがクラウドストレージシステムに存在するのでアップロードする必要はない。データ伝送が貴重なリソースを消費するので(例えば、関連する金銭的コストを伴う場合があるアップロードに必要とされる時間及び帯域幅使用)、データをアップロードすることがないとサービスプロバイダ及びクライアントデバイス/ユーザに対して節約をもたらす。この同じ節約は、高度なアイデンティティを有するメディアデータのストレージを用いて得ることができる。例えば、コンテンツ配信業者の取り出された歌又は映画は、どのユーザが上述のデータを取り出したかとは無関係に高度なアイデンティティを有する可能性がある。第1のユーザ又はクライアントデバイスがクラウドストレージシステムにそのデータを格納すると、他のクライアントデバイス又はユーザは、改めてデータをアップロードする必要がなくなる。
[0084]ブロック440で、ユーザ不可知暗号化機能は、CFS内のファイル及びフォルダ位置の詳細を含むファイルシステムマニフェストへのファイルマニフェスト484の追加などのような更に別の処理に向けて完備したファイルマニフェスト483を戻す。
[0085]図5は、本発明の実施形態に従ってデータのユーザ不可知暗号化を行う方法の流れ図を示している。ブロック500で、ユーザ不可知暗号化方法は、暗号化すべきデータ(例えば、ファイルのチャンク、ファイル、ファイルマニフェストのような)580を受信する。本方法は、次に、データ580から暗号化キー582を生成する。暗号化キー582は、その特定のデータ580に向けてユーザ又は暗号化キー582を生成するクライアントデバイスとは無関係に同一に生成されることになるあらゆるキーとすることができる。
[0086]例えば、暗号化キー582は、データ580をハッシュした結果とすることができる。望ましいハッシュアルゴリズムの例は、暗号のハッシュ関数、例えば、セキュアなハッシュアルゴリズム(SHA−0、SHA−1、SHA−256、又はSHA−512のような「SHA」)、又はメッセージダイジェスト(「MD」)アルゴリズム(MD−2、MD−4、又はMD−5のような)を含む。他の実施形態において、暗号化キー582は、他のアルゴリズムを通じて計算することができる。例えば、暗号化キー582は、データ580の所定の部分集合を取り出すのと同じ程度簡単に計算することができる。
[0087]ユーザ不可知暗号化方法は、ブロック520で、データ580及び暗号化キー582を使用して暗号化データ584を生成することにより続行される。データ580は、あらゆる適切な対称又は非対称暗号化アルゴリズムで暗号化することができる。適切な暗号化アルゴリズムの非限定的な例には、Advanced Encryption Standard(「AES」)、データ通信用暗号標準(「DES」)、トリプルDES、Blowfish、Twofish、Sesrpent、Rivest−Shamir−Adleman(「RSA」)、NTRUEncrypt、及び楕円曲線暗号化(「ECC」)がある。いずれにせよ、適切な暗号化アルゴリズム及び暗号化キー生成方法は、生成された暗号化キー582が選択された暗号化アルゴリズムにより使用可能であるように選択される。
[0088]ブロック530で、ID586を暗号化データ584から生成する。ID586は、その特定のデータ580に向けてID586を生成するユーザ又はクライアントデバイスとは無関係に同一に生成されることになるあらゆるIDとすることができる。例えば、ID586は、暗号化データ584をハッシュした結果とすることができる。ブロック510を参照して上述したように、あらゆる適切なハッシュアルゴリズムを使用することができる。他の実施形態において、暗号化データ586の所定の部分集合を取り出すことのような他のアルゴリズムを通じてID586を計算することができる。本発明の更に別の実施形態は、暗号化データ586ではなくデータ580を使用してID586を生成することができるが、このような実施形態は、潜在的なセキュリティ危険性に暗号化データ586を露出する可能性がある。ブロック540で、ユーザ不可知暗号化方法は、暗号化キー582、暗号化データ584、及びID586を戻す。CFSクライアントモジュールは、暗号化データ584と共に情報を埋め込むことが望ましい場合があることは当業者により認められるであろう。例えば、CFSクライアントモジュールは、固定又は可変の幅チャンクヘッダで暗号化データをプリペンドすることができる。チャンクヘッダは、ブロックタイプ、符号化タイプ、元のサイズのような情報を含むことができる。次に、このブロックヘッダをクラウドストレージシステム及び/又はCFSクライアントモジュールが使用し、データを検証し、及び/又は暗号化されたチャンクの暗号解読/解凍を補助することができる。一実施形態において、チャンクヘッダは、ブロックタイプ(1バイト)、符号化タイプ(1バイト)、及び元のサイズ(4バイト)を含む。一方、別の実施形態において、チャンクヘッダは、より多い、より少ない、又は他のフィールドを含む。例えば、本発明の一実施形態は、符号化タイプ及び元のサイズだけで構成されたチャンクヘッダを生成する。
[0089]本発明の実施形態は、データを暗号化するのに使用された同じキーがデータを暗号解読するためにも使用される対称暗号化アルゴリズムを参照して説明する。しかし、非対称アルゴリズム、すなわち、暗号化のための1つのキーと暗号解読のための異なる対応するキーとを利用するアルゴリズムを使用することも等しく作動可能である。ユーザ不可知暗号化に向けて非対称暗号化機能を使用する時に、説明するユーザ不可知暗号化方法は、暗号化キー582の代わりに、生成された暗号化キー582に対応する暗号解読キーを戻す必要がある。同様に、暗号化データの将来暗号解読に向けて暗号化キーを保存する他の参考例は、その代わりに対応する暗号解読キーを保存する。
[0090]本発明の一実施形態において、ID586を生成する時に、ID586により識別された位置に格納されたデータが全てのユーザ及び上述のデータにアクセスするクライアントデバイスに向けて同一であるように、各ユーザ及びクライアントデバイスが同じアルゴリズムを利用することが必要である。更に、多くのアルゴリズムを使用して暗号化キー582、暗号化データ584、及び暗号化データ586を生成することができると説明しているが、特定のシステム内の全てのユーザのために同じアルゴリズムを選択する時にある一定の利点が存在することは当業者により認められるであろう。特に、所定のクラウドストレージシステムを利用する各ユーザ又はクライアントデバイスが所定の組のアルゴリズムを使用する時に、各ユーザ又はクライアントデバイスは、同一データに関して同一の暗号化キー、暗号化データ、及びIDを生成することになる。従って、データの暗号化はユーザ不可知のものになるが、クラウドストレージシステムは、対応するIDにより暗号化データを識別し、そのデータの1つのコピーだけを格納することができることになる。
[0091]図6は、本発明の実施形態に従ってユーザ不可知ファイル暗号化を行う方法の視覚化を示している。本方法は、FILEa601を作成するクライアントデバイスに対してステップ690Aで始まる。ステップ690Bでは、クライアントデバイス上で実行中であるCFSクライアントモジュールは、ファイルをチャンク602A〜Nに分割し、任意的に、各チャンクを圧縮されたチャンク603A〜Nに圧縮する(同じくCHUNKS1..nとして図6にも示す)。このステップは、チャンクへのファイルの分解と呼ぶことができる。ステップ690Cで、CFSクライアントモジュールは、各チャンクのデータDを使用してそのチャンクに向けて暗号化キーを生成する。従って、Daは、圧縮されたチャンク603Aのデータであり、暗号化キー604A、すなわち、Kaを生成するのに使用され、すなわち、Ka=hasha(Da)、又は組として、CHUNKKEY1..n=HASHa(CHUNK1..n)である。ステップ690Dで、暗号化データ605A〜Nを生成するためにそのチャンク暗号化キー604A−Nで各圧縮されたチャンク603A〜Nを暗号化し、すなわち、eDa=encrypt(Da、Ka)、又は組として、eCHUNK1..n=ENCRYPT(CHUNK1..n、CHUNKKEY1..n)である。ステップ690Eでは、CFSクライアントモジュールは、暗号化データ605A〜NからID606A〜Nを生成し、すなわち、IDa=hashb(eDa)、又は組として、ID1..n=HASHb(eCHUNK1..n)である。
[0092]図7は、本発明の実施形態によるファイルシステムマニフェストの生成を含むクラウドファイルシステムにファイルを保存する方法の流れ図を示している。本発明の実施形態に従ってファイルシステムマニフェストを生成する別の実施形態を図27参照して説明する。図7では、クライアントデバイスは、CFSクライアントモジュールを実行している。CFSクライアントモジュールは、ブロック780で、CFS内に保存すべきファイルを受信し、CFSは、主としてクラウドストレージシステムに格納される。CFSクライアントモジュールは、ブロック710で、暗号化されたチャンクを格納してファイルマニフェスト782を生成するユーザ不可知ファイル暗号化機能を用いてファイル780を暗号化する。図4を参照して上述したように、暗号化されたチャンクの各々は、クラウドストレージシステムに格納され、任意的に、更にCFSのローカルキャッシュ内に格納される。更に、ファイルマニフェスト782は、暗号化されたチャンクの1つに各々対応するチャンクID及び暗号化キーの順序リストを含む。一部の実施形態において、格納のためにファイルマニフェスト782を圧縮することが有益であり、CFSクライアントモジュールは、ブロック715でファイルマニフェスト782を圧縮する。
[0093]ブロック720では、CFSクライアントモジュールは、ファイルマニフェスト暗号化キー785、暗号化ファイルマニフェスト786、及びファイルマニフェストID787を生成する。一実施形態において、これらは、図5を参照して説明したもののようなユーザ不可知暗号化方法で生成される。ブロック725では、CFSクライアントモジュールは、ファイルシステムマニフェスト788内にファイルマニフェストID787及びファイルマニフェスト暗号化キー785を格納する。ファイルシステムマニフェスト788は、CFS内の格納された全てのファイルのリストを含む。CFSクライアントモジュールがクラウドストレージシステムからそのファイルに対応する暗号化ファイルマニフェストを取り出して暗号化ファイルマニフェストを暗号解読することができるように、各ファイルが表示しなければならない経路のようなユーザに表示するためのファイルを識別する情報と共に、対応するファイルマニフェストID及びファイルマニフェスト暗号化キーが格納される。
[0094]ブロック730では、CFSクライアントモジュールは、任意的に、ファイル780に対応するファイル属性を格納する。例えば、ファイルは、ファイルサイズ、作成タイムスタンプ、修正タイムスタンプ、アクセス制御リスト/許可、読取専用マーカ、隠しファイルマーカ、又はクライアントデバイスによって使用されるような他の属性などのファイルに関連付けられた1組のメタデータを有する場合がある。
[0095]ブロック735では、CFSクライアントモジュールは、ユーザ不可知非複製化を行ってクラウドストレージシステムに暗号化されたFMを格納する。従って、CFSクライアントモジュールは、サーバ側ユーザ不可知非複製化を提供し、CFSクライアントモジュールは、暗号化ファイルマニフェスト786がクラウドストレージシステムに存在するか否かを決定する。暗号化ファイルマニフェスト786がクラウドストレージシステムに存在しない場合に、CFSクライアントモジュールは、ファイルマニフェストID787と共にクラウドストレージシステムに暗号化ファイルマニフェスト786を送信する。更に、CFSクライアントモジュールは、クライアント側ユーザ不可知非複製化を行うことができ、CFSクライアントモジュールは、暗号化ファイルマニフェストがCFSのローカルキャッシュに存在する時を認識することができるので、暗号化ファイルマニフェストの第2のコピーを格納しない。
[0096]一実施形態において、CFSクライアントモジュールは、ブロック740でファイルシステムマニフェスト788から暗号化ファイルシステムマニフェスト789を生成する。暗号化ファイルシステムマニフェスト789を生成する1つの方法は、ファイルシステムマニフェスト788にユーザ相対的スナップショット暗号化を行うことである。暗号化ファイルシステムマニフェスト789を生成する別の方法は、マルチユーザファイルシステムマニフェスト暗号化を行うことである。
[0097]ユーザ相対的スナップショット暗号化を用いて、CFSは、ユーザ又はクライアントデバイスによって供給されたか、又はユーザ又はクライアントデバイス固有の暗号化キーを用いてファイルシステムマニフェスト788を暗号化する。この方法を用いて、ユーザは、対称暗号化の場合の暗号化キー又は非対称暗号化の場合の対応する暗号解読キーをこのCFSへのアクセスを与えられるべきである他のユーザ又はデバイスと共有することができる。これに対応して、暗号化ファイルシステムマニフェスト789のコピーは、クラウドストレージシステムに格納される場合があるが、ユーザ及び対応する暗号化キーを有するクライアントデバイスのみが、暗号化ファイルシステムマニフェスト789を暗号解読することができる。従って、暗号化ファイルシステム789は、CFS内に格納される可能性があるが、必要な暗号化キーを有するユーザ及びクライアントデバイスのみが、暗号化ファイルシステムマニフェスト789内に列挙された暗号化ファイルマニフェストを識別/暗号解読するのに必要とされる情報にアクセスすることができる。本方法は、CFSクライアントモジュールがCFSのスナップショットを別のユーザ又はクライアントデバイスと共有することを可能にするという利点を有する。CFSクライアントモジュールは、他のユーザ又はクライアントデバイスと共有すべき暗号化キーを使用して暗号化ファイルシステムマニフェスト789を作成しさえすればよい。次に、CFSクライアントモジュールは、クラウドストレージシステムに暗号化ファイルシステムマニフェスト789をアップロードし、暗号化ファイルシステムマニフェスト789のためのID及び暗号化キーを他のユーザと共有することができる。別の実施形態において、CFSクライアントモジュールは、他のユーザ又はクライアントデバイスに直接に暗号化ファイルシステムマニフェスト789及び暗号化キーを送信することができる。他のユーザ又はクライアントデバイスは、次に、CFSクライアントモジュールが暗号化ファイルシステムマニフェスト789を生成した時にCFSに存在した全てのファイルにアクセス可能である。しかし、他のユーザ又はクライアントデバイスによって行われた変更があれば、他のユーザ又はクライアントデバイスに対応する新しく作成されたファイルシステムマニフェストに反映されるので、最初に暗号化ファイルシステムマニフェスト789を生成したユーザ又はクライアントデバイスには影響を与えない。従って、ユーザは、単に暗号化キー及び暗号化ファイルシステムマニフェスト789又は暗号化ファイルシステムマニフェストIDを送信することにより、CFS全体のスナップショットを別のユーザ又はクライアントデバイスと共有することができる。
[0098]マルチユーザファイルシステムマニフェスト暗号化を用いて、ユーザは、ライブ方式でCFSを別のユーザ又はクライアントデバイスと共有することができる。ライブ方式とは、ユーザによって行われた変更が他のユーザ又はクライアントデバイスに反映され、更に、他のユーザ又はクライアントデバイスによって行われた変更があればユーザに反映されることを意味する。
[0099]マルチユーザファイルシステムマニフェスト暗号化は、CFSクライアントモジュールが汎用一意識別子(「UUID」)を生成することで開始する。CFSクライアントモジュールは、UUIDがクラウドストレージシステムに存在するか否かを決定すると、未使用UUIDが生成されるまで新しいUUIDを生成し続ける。新しいUUIDが生成された状態で、クラウドストレージシステムは、UUIDにより識別されるマルチユーザファイルシステムマニフェストコレクションを生成する。本発明の一実施形態において、クラウドストレージシステムは、更に、マルチユーザファイルシステムマニフェストコレクションに関連付けられた1組のアクセス許可を作成し、CFSクライアントモジュールに関連付けられたユーザにマルチユーザファイルシステムマニフェストコレクションへのアクセスを承諾する。マルチユーザファイルシステムマニフェストコレクションは、このCFSの暗号化ファイルシステムマニフェストのバージョン化されたバケットである。この時点で、CFSクライアントは、暗号化キーとしてUUIDでファイルシステムマニフェスト788を暗号化し、マルチユーザファイルシステムマニフェストコレクション内への格納のためにクラウドストレージシステムに暗号化ファイルシステムマニフェスト789を送信する。CFSのその後の変更は、変更を生成したCFSクライアントモジュールにより利用されたCFSのバージョンに対するパッチ変更として生成される。ファイルシステムマニフェスト788及びその後のパッチ変更は、マルチユーザファイルシステムマニフェストへのアクセスが承諾されたその後のユーザ及びクライアントデバイスが、クラウドファイルシステムの現状を再構成するためにマルチユーザファイルマニフェストコレクション内の各入力をダウンロードすることができるように、全てマルチユーザファイルマニフェストコレクション内に格納される。更に、アクセスを承諾されたユーザ及びクライアントデバイスは、CFSに更新を受信するためにクラウドストレージシステムと加入契約することができる。従って、ユーザがCFSの情報を変えると、それらの変更は、加入契約されたユーザ及びクライアントデバイスにシームレスにプッシュ配信される。
[00100]本発明の一実施形態において、クラウドストレージシステムは、ユーザがそのユーザのファイルシステムマニフェストを管理することを可能にするウェブインタフェースのようなユーザインタフェースをクライアントデバイスに提示することができる。例えば、ユーザは、ファイルシステムマニフェストの共有可能なスナップショットを作成して、別のユーザと共有可能であるファイルシステムマニフェストのコピーを作るために、ユーザ相対的スナップショット暗号化を行うことを選択することができる。例えば、クラウドストレージシステムにスナップショットとのリンクに電子メールを送るように指示することができる。更に、電子メールは、共有ファイルシステムマニフェストを暗号解読するのに必要とされる情報を含むことができる。別の例において、クラウドストレージシステムは、クライアントデバイスに提示するユーザインタフェース内のメニューを通じてスナップショットをクラウドストレージシステムの他のユーザに利用可能にすることができる。
[00101]この同じユーザインタフェースにより、ユーザは、マルチユーザファイルシステムを管理することができる。例えば、クライアントデバイス上のユーザは、既存のクラウドファイルシステムからマルチユーザファイルシステムを生成し、マルチユーザファイルシステム上でアクセス許可を管理することを決定することができる。マルチユーザファイルシステムへのアクセスが承諾されたユーザに関して、クラウドストレージシステムは、マルチユーザファイルシステムマニフェストを電子メールを通じて又はユーザインタフェースを通じてそれらのユーザにアクセス可能にすることができる。所有者が、ユーザがマルチユーザファイルシステムにアクセスすることを防止することを望む場合に、所有者は、ユーザがもはや対応するUUIDにより識別されたマルチユーザファイルシステムマニフェストコレクションから入力をダウンロードするアクセスを承諾されないように、マルチユーザファイルシステムマニフェストのアクセス許可を変更することができる。更に、ユーザ又はクライアントデバイスの読取専用許可を同じユーザインタフェースを通じて有効にすることができる。
[00102]クラウドファイルシステムに格納された一部のファイルだけに書き込んだ時に、書込中の部分に対応するファイルチャンクは、メモリにコピーされる。ファイルチャンクの更新は、メモリ内のその部分に行われ、その更新ファイルチャンクが暗号化される。上述したように、それによって対応するファイルマニフェストを更新するのに使用されるそのチャンクの新しいチャンクID及び暗号化キーが得られる。ファイルの中心にデータを追加する場合に、新しいデータを収容するようにデータがシフトすることになるので、複数のチャンクは、更新が必要である場合がある。これには、ファイルの各部分に対応する各ファイルチャンクを取り出して、変わった部分に関して更新、暗号化、及びファイルマニフェスト更新を行うことが必要である。ファイルの終わりまでデータを追加する場合に、処理は、上述したような既存のチャンクの更新、既存のチャンクに対する更新及び新しいチャンクの追加の組合せ、又は新しいチャンクの追加だけのいずれかである。
[00103]図8は、本発明の実施形態に従ってクラウドファイルシステムにファイルからデータを読み取る方法の流れ図を示している。図8では、クライアントデバイスは、CFSクライアントモジュールを実行している。
[00104]CFSクライアントモジュールは、そのCFSに対してファイルシステムマニフェストを使用してクライアントディレクトリ上にドライブ又はディレクトリとしてCFSを実装する。上述したように、ファイルシステムマニフェストは、ファイルシステムマニフェスト内の各ファイルが位置する経路と共にファイルマニフェストのリストを含む情報を含む。CFSクライアントモジュールは、クライアントデバイスのユーザにクライアントデバイスストレージ階層の一部としてCFSを示している。例えば、CFSをクライアントデバイスストレージシステム内の実装ポイントに実装することができる。実装ポイントは、ドライブ(例えば、E:ドライブ)として、又は既存のドライブ又はストレージシステム内のフォルダとしてのものとすることができる。それによってCFSクライアントモジュールは、ユーザにあらゆる他のストレージシステムとしてクライアントデバイスにCFSを提示することができる。これを説明する別の方法は、CFSクライアントモジュールは、クライアントデバイスのオペレーティングシステムにブロックストレージデバイスをエミュレートするということである。
[00105]CFSクライアントモジュールは、ブロック800で、CFS内のファイルのデータの要求を受信する。データの要求は、CFSクライアントモジュールが戻さなければならない1組のデータを識別する情報を含む。例えば、要求は、データが常駐するファイルへの経路を含むことができる。更に、要求は、どこにかつどれだけのデータを読み取るべきかを示す探求位置及びバイトカウントを含むことができる。CFSクライアントモジュールは、ブロック805で、ファイルに対応するファイルマニフェストの位置を識別する。ファイルマニフェストは、以下のようにCFSに位置付けられる。CFSクライアントモジュールは、ファイルシステムマニフェストからファイルに対応するファイルマニフェストIDの位置を識別する。一実施形態において、CFSクライアントモジュールは、暗号解読されたファイルシステムマニフェストがCFSのローカルキャッシュに存在するか否かを決定する。別の実施形態において、CFSクライアントモジュールは、暗号化ファイルシステムマニフェストがCFSのローカルキャッシュに存在するか否かを決定する。更に別の実施形態において、CFSクライアントモジュールは、CFSのローカルキャッシュが暗号化又は暗号解読されたファイルマニフェストを含むか否かを決定する。暗号化ファイルマニフェストも暗号解読されたファイルマニフェストもFSのローカルキャッシュ内に常駐していない場合に、CFSクライアントモジュールは、暗号化データを識別するためにファイルマニフェストIDを使用してクラウドストレージシステムから暗号化ファイルマニフェストを取り出す。CFSクライアントモジュールが暗号化ファイルマニフェストを有する状態で、又は暗号化ファイルマニフェストがローカルキャッシュ内にあるが、暗号解読されたファイルマニフェストがない場合に、CFSクライアントモジュールは、ファイルシステムマニフェスト内のファイルマニフェストに関連付けられた暗号化キーを使用して暗号化ファイルマニフェストを暗号解読する。更に、CFSクライアントモジュールは、将来のアクセスに向けてCFSのローカルキャッシュ内に暗号化ファイルマニフェスト、暗号解読されたファイルマニフェスト、又はその両方を格納することができる。
[00106]ブロック810で、CFSクライアントモジュールは、要求されたデータを取り出すのに必要とされる1つ又はそれよりも多くのファイルチャンクを決定する。一実施形態において、CFSクライアントモジュールは、探求位置バイトカウントを使用して、どのファイルチャンクがCFSから要求されたデータを取り出すのに要求されたかを決定する。例えば、CFSにファイルを保存する時にCFSクライアントモジュールが64バイトチャンクにファイルを分割した場合に、CFSクライアントモジュールは、64バイトチャンクサイズで探求位置に対して整数割算を行うことにより、必要とされる第1のチャンクを決定することができる。上述したように、ファイルマニフェストは、チャンクID及びファイルチャンクを暗号解読する暗号化キーの順序リストを含む。更に、CFSクライアントモジュールは、探求位置にバイトカウントを加算して64バイトチャンクサイズで結果に対して整数割算を行うことにより、必要とされる最終チャンクを決定することができる。従って、CFSクライアントモジュールは、要求されたデータを導出するために、第1のチャンク、最終のチャンク、及びその間の全てのチャンクを要求すると決定することができる。当業者は、64バイトチャンクサイズは、CFS内にデータを格納するのに最適ではない場合があることを認識するであろう。512キロバイトのチャンクサイズが、一部構成において最適である場合があり、他の構成は、64キロバイト、128キロバイト、又は256キロバイトのような他の量のチャンクサイズでより良好にサービス対応することができる。当業者は、本発明が特定のチャンクサイズに限定されず、説明されたチャンクサイズが例示的であり、制限的でないことを理解するであろう。
[00107]ブロック815で、CFSクライアントモジュールは、各要求されたファイルチャンクにわたって反復する。ブロック820で、CFSクライアントモジュールは、既存ファイルチャンクがCFSのローカルキャッシュに存在するか否かを決定する。既存ファイルチャンクがCFSのローカルキャッシュに存在しない場合に、CFSクライアントモジュールは、ブロック825で、クラウドストレージシステムからそのファイルチャンクを取り出す。例えば、CFSクライアントモジュールがファイルマニフェスト内に列挙された第1のファイルチャンクを要求する時に、CFSクライアントモジュールは、第1のチャンクIDに関連付けられたファイルチャンクを送信する要求をクラウドストレージシステムに出す。CFSクライアントモジュールが要求されたファイルチャンクを受信すると、CFSクライアントモジュールは、そのファイルチャンクを更に処理することができる。
[00108]一実施形態において、CFSクライアントモジュールは、受信したファイルチャンク830を検証する。受信したファイルチャンクから取り出されたチャンクIDを生成することによってファイルチャンクを検証することができる。チャンクIDが暗号化データのコンテンツから生成されるので、取り出されたデータが有効である場合に、チャンクID要求は、生成されたチャンクIDに適合するはずである。
[00109]本発明の何らかの実施形態において、CFSクライアントモジュールは、要求されたファイルチャンクに近いファイルチャンクの予測的取り出しを使用する。例えば、クラウドストレージシステムから要求する場合がある他のファイルチャンクを予想することが有利である。従って、CFSクライアントモジュールは、要求されたチャンクの近くのファイルマニフェスト内に列挙されたファイルチャンクがないかに関してファイルマニフェストを見ることができる。例えば、要求されたファイルチャンクがファイルマニフェスト内に列挙された第1のファイルチャンクである場合に、CFSクライアントモジュールは、そのチャンクが要求されたデータを取り出すのに要求された場合及びその時に次のファイルチャンクがCFSのローカルキャッシュ内にあることになるように、ファイルマニフェスト内に列挙された次のファイルチャンク待ち行列に入れかつ取り出すことができる。当業者は、次の8つのファイルチャンク(例えば)を待ち行列してダウンロードするが有利である場合があり、又はCFSクライアントモジュールが、4つ前のファイルチャンク及び4つ後のファイルチャンク待ち行列に入れてダウンロードする場合があることを認識するであろう。本発明の他の実施形態は、予測的取り出しに使用される論理次第で、より多い又はより少ない又は異なる組のファイルチャンクを取り出す。例えば、CFSクライアントモジュールは、第1の次のチャンク及び第3の次のチャンクは存在するが、第2と第4の次のチャンクが存在しない場合に、CFSクライアントモジュールが第2と第4の次のチャンクを取り出すようにCFSのローカルキャッシュに存在しない次の2つのチャンクを待ち行列に入れることができる。
[00110]他の実施形態において、CFSクライアントモジュールは、ファイルチャンクの予測的取り出しに向けて解析決定を使用する。例えば、CFSクライアントモジュールは、どのようにしてチャンクにアクセスするかをモデル化するためにチャンクアクセスのデータベースを生成することができる。CFSクライアントモジュールは、アクセスされた以前のチャンクIDを追跡することができ、次に、次のチャンクIDがアクセスされた時に、CFSクライアントモジュールは、第1のチャンクID、第2のチャンクID、及びカウントを示すエントリを生成することができる。チャンクIDがアクセスされる度に、CFSクライアントモジュールは、以前のチャンクID及び現在のチャンクIDを使用してこの追跡を更新することができる。従って、以前のチャンクIDは、第1のチャンクIDとして使用され、既存のチャンクIDは、第2のチャンクIDであり、カウントは、1から始まり、以前のチャンクID及び現在のチャンクIDの同じ組合せがアクセスされる度に、カウントは増分される。CFSクライアントモジュールは、この解析モデルを使用して、アクセスされたチャンクに基づいて、どのチャンクがアクセスされる最も大きな可能性を有するかを決定することができる。簡潔さを期すために、3つのファイルチャンク(同じ又は異なるファイルチャンクの一部である場合がある)であるチャンクA、チャンクG、及びチャンクPを取り上げてみる。チャンクGが4回の機会でアクセスされた時に、チャンクAが以前にアクセスされたと知ることができる。チャンクPが18回の機会でアクセスされた時に、チャンクAが以前にアクセスされたと決定することができる。これは、チャンクA→チャンクG=4、チャンクA→チャンクP=18と表すことができる。従って、次にチャンクAがアクセスされた時に、CFSクライアントモジュールは、チャンクPがアクセスされるより高い可能性を有すると決定することができる。従って、CFSクライアントモジュールは、チャンクAがアクセスされる時にチャンクPを予測的に取り出すことができる。当業者は、解析モデルに基づいて一連の複数のチャンクを待ち行列してダウンロードすることが有利である場合があることを認識するであろう。例えば、チャンクBがアクセスされていてモデルがチャンクCへのアクセスを断言したがチャンクCはローカルキャッシュに存在する場合に、CFSクライアントモジュールは、チャンクCの後にアクセスされる可能性があるチャンクを予想することになる。CFSクライアントモジュールは、更に、2つのチャンクがローカルキャッシュに対して取り出されるまで、又は4つのチャンクが取り出されるまで、その連鎖に追随すると決定することができる。当業者は、異なる数のチャンクは多かれ少なかれ有利である場合があり、予想的にキャッシュに格納すべきチャンクの数を利用するためにCFSクライアントモジュールを調節することができることを認識するであろう。更に、CFSクライアントモジュールは、1つのチャンクに関して、多くのチャンクが次にアクセスされる可能性がある機会を有するので、それらのチャンクと共に一連のチャンクの1つ又はそれよりも多くを予想的にキャッシュに格納することを認識することができる。
[00111]更に他の実施形態は、ユーザ及び/又はクライアントのデバイス挙動に基づいて取り出される次のチャンクを解析的に決定する他の手法を使用することができる。例えば、CFSクライアントモジュールは、ユーザインタフェース待ち行列をチャンクアクセスに関連付けて、そのモジュール上のローカルキャッシュを生成することができる。他の実施形態において、CFSクライアントモジュールは、ユーザが特定のネットワーク位置で情報にアクセスする時に、CFSクライアントモジュールがそれを特定のファイルチャンクへのアクセスに関連付けて、それらのネットワーク位置がアクセスされた時にそれらのファイルチャンクをキャッシュに格納することができるように、ネットワーク作動のモデル又は実行中のアプリケーションのモデルに基づいてファイルチャンクアクセスを追跡することができる。CFSクライアントモジュールは、ファイルチャンクのアクセスをいつ特定のアプリケーションがアクセスされるに関連付けて、次に、そのアプリケーションが将来アクセスされた時にローカルキャッシュ内にそれらのファイルチャンクを格納することができる。
[00112]ファイルチャンクの予測的取り出しのサポートにおいて、CFSクライアントモジュールは、取り出さなければならないチャンクIDの待ち行列及びこの待ち行列に対応する複数のダウンロードスレッドを使用する。ファイルチャンクが待ち行列内の他のファイルチャンクよりも早く使用される可能性があるか否かの決定に基づいて、ファイルチャンクの検索に優先順位を付けることが有利である。従って、CFSクライアントモジュールが、ファイルチャンク内のデータへのアクセスに関連付けられた検索又は予測的取り出しのいずれかであるファイルチャンクを取り出さなければならないと決定した時に、CFSクライアントモジュールは、ダウンロード待ち行列に要求されたチャンクIDを追加して、そのチャンクIDを優先順位値に関連付けることになる。各チャンクIDの優先順位値は、ダウンロードスレッドがより多くの即時アクセスを要求するチャンクIDを最初にダウンロード待ち行列から選択するように選択される。従って、CFSクライアントモジュールは、ファイルアクセスの一部としてブロック825で取り出しに向けて要求されたチャンクIDを高い優先度に関連付けることができ、一方、ブロック832内の近くのファイルチャンクの予測的取り出しの一部としてダウンロード待ち行列に追加されたチャンクは、低い優先度に関連付けられる。
[00113]1つの特定の実施は、取り出されたチャンクがアクセスされたチャンクにどの程度近いかを決定することである。この点において、ブロック825内のチャンクアクセスの一部として取り出されたダウンロード待ち行列内のチャンクIDは、アクセスされるチャンクのIDであるように0の距離を有すると考えられる。CFSクライアントモジュールがFM内の第1の次のチャンク及びFM内の第4の次のチャンクを予測的に取り出さなければならないと決定した時に、対応するチャンクIDは、アクセスされたチャンクからのそれらのチャンクの距離を反映するものとして、それぞれ1及び4の距離を受信する。チャンク解析法と共に一連のチャンクアクセスを使用する時に、この同じ原理を使用することができる。CFSクライアントモジュールは、クラウドストレージシステムから取り出さなければならないローカルキャッシュ内にない次のチャンクを見つけるためにその連鎖を辿るので、CFSクライアントモジュールは、その連鎖をどの程度の距離を進んだのかを追跡し、それをアクセスされたチャンクからの距離として使用することができる。従って、アクセスされたチャンクからの距離が短いチャンクIDが、ダウンロードスレッドにより、ダウンロード待ち行列における距離が長いチャンクよりも優先して順位が付けられることになる。1つの実施を更に図40を参照して説明する。
[00114]更に、クラウドストレージシステムがCFSのリモートキャッシュをサポートする本発明の実施形態において、CFSクライアントモジュールは、クラウドストレージシステムにブロック833内の近くのファイルチャンクをプリフェッチするように指示することができる。例えば、本発明の一実施形態において、クラウドストレージシステムは、クラウドストレージゲートウェイ及びクラウドストレージプールを含む。従って、クライアントデバイスに送信することが必要になるファイルチャンククラウドストレージゲートウェイをクラウドストレージプールのクラウドストレージゲートウェイのリモートキャッシュ内に置くように指示すること、換言すると、クラウドストレージゲートウェイにファイルチャンクをプリフェッチするように指示することが有利である。このようにすることは、CFSクライアントモジュールが、CFSクライアントモジュールがクラウドストレージシステムからファイルチャンクを取り出した時にそのリモートキャッシュ内にファイルチャンクを有することになり、従って、そうでなければクラウドストレージゲートウェイがクラウドストレージプールから要求されたファイルチャンクを取り出さなければならなかった場合に発生する待ち時間が排除される。更に、CFSクライアントモジュールは、CFSクライアントモジュールがアクセスを予想するCFSのローカルキャッシュに存在しない次の2つのファイルチャンクをプリフェッチするようにクラウドストレージゲートウェイに指示することができる。従って、第1の次及び第3の次のチャンクがローカルキャッシュに存在するが、第2と第4の次のチャンクがローカルキャッシュに存在しない場合に、CFSクライアントモジュールは、CFSクライアントモジュールがそれらのチャンクを要求した時にクラウドストレージゲートウェイがクラウドストレージプールからそれらのチャンクを検索しなくてもよいように、リモートキャッシュ内の格納のために第2と第4の次のチャンクをプリフェッチするようにクラウドストレージゲートウェイに指示する。
[00115]ブロック834で、CFSクライアントモジュールは、任意的に、取り出したファイルチャンクをそのファイルチャンクのIDに関連付けられた位置でCFSのローカルキャッシュ内に格納する。ブロック835で、CFSクライアントモジュールは、ファイルチャンクのユーザ不可知暗号解読及び解凍を提供する。上述したように、ファイルマニフェストは、そのチャンクのIDにより各ファイルチャンクに関連付けられた暗号化キー、又は非対称暗号化アルゴリズムの場合は暗号解読キーを有する。従って、CFSクライアントモジュールは、ファイルマニフェストから暗号化キー/暗号解読キーを取り出してファイルチャンク暗号解読を行うことができる。更に、上述したように、一部のファイルチャンクは、圧縮から利益を受けるので圧縮される場合があり、従って、CFSクライアントモジュールは、それが適切である場合はファイルチャンクを解凍する。ブロック837で、CFSクライアントモジュールは、任意的に、そのファイルチャンクのIDに関連付けられた位置でCFSのローカルキャッシュ内に暗号解読/解凍されたファイルチャンクを格納する。暗号解読/解凍されたチャンクが利用可能になると、CFSクライアントモジュールは、後述するようにブロック860で続行される。
[00116]本発明の一実施形態は、ブロック834で暗号化ファイルチャンクをキャッシュに入れ、一方、本発明の別の実施形態は、ブロック837で暗号解読/解凍されたファイルチャンクをキャッシュに入れることに注意すべきである。更に別の実施形態は、ブロック834及び暗号解読/解凍ブロック837で両方の暗号化ファイルチャンクをキャッシュに格納することができるが、少なくとも1つの実施形態において、暗号解読/解凍されたファイルチャンクは、暗号解読/解凍されたファイルチャンクが電源が切断されると存在しないか又は決定された一定期間後に除去さえされるように、揮発性であるローカルキャッシュの一部にキャッシュに入れられる。それによってセキュリティの増強が得られ、暗号化ファイルチャンクは、ローカルキャッシュに存在する場合があるが、データは、CFSクライアントモジュールが上述のデータを暗号解読するために適切に起動させられなかった場合はクライアントデバイスのユーザを利用することができない。例えば、CFSクライアントモジュールは、ローカルキャッシュの揮発性部分にも暗号解読ファイルシステムマニフェストを格納して、ファイルシステムマニフェストを暗号解読するためにユーザにクライアントデバイスにログインすることを求めることがある可能性がある。従って、ファイルマニフェスト及び各ファイルのその後のファイルチャンクの全ての暗号化キーは、クライアントデバイスの許可されたユーザに対して保護される。
[00117]ブロック820を再び参照すると、CFSクライアントモジュールが、ファイルチャンクはCFSのローカルキャッシュに存在すると決定した場合に、CFSクライアントモジュールは、ローカルキャッシュからファイルチャンクを取り出すことによってブロック850に引き続き進む。ファイルチャンクを暗号化ファイルチャンク又は暗号解読/解凍されたファイルチャンクとして又はその両方としてローカルキャッシュ内に格納することができることが上述の内容から明らかであろう。暗号化ファイルチャンクが、利用可能な唯一のファイルチャンクである場合に、CFSクライアントモジュールは、ブロック855で、ユーザ不可知暗号解読及び解凍を暗号化ファイルチャンクに行う。そうでなければ、CFSクライアントモジュールは、ブロック850で、ローカルキャッシュから暗号解読/解凍されたファイルチャンクを取り出す。更に、CFSクライアントモジュールは、ブロック832内の近くのファイルチャンクを予測的に取り出し、及び/又は上述したようにブロック833でクラウドストレージシステムに近いファイルチャンクをプリフェッチするように指示すると決定することができる。
[00118]本発明の一実施形態において、ブロック860で、クライアントデバイスがサイズをCFSクライアントモジュールから受信することを期待する暗号解読/解凍されたファイルチャンクをクラスターに分割することが必要である。例えば、ファイルチャンクが、256キロバイトのチャンクサイズ内に格納されるが、クライアントデバイスが、データが4キロバイトのブロックで格納されることを期待する場合に、CFSクライアントモジュールは、クライアントデバイスにデータを戻すために暗号解読/解凍されたファイルチャンクを64個のブロックに分割する。これは、特に、CFSクライアントモジュールが、クライアントデバイスにブロックデバイスをエミュレートし、クラウドストレージシステムによって使用されるチャンクサイズよりも小さいブロックサイズを指定する時に関連する。
[00119]ブロック870で、CFSクライアントモジュールは、暗号解読/解凍されたファイルチャンクの要求されたデータを有し、かつクライアントデバイスのオペレーティングシステムに要求されたデータを戻す。
[00120]図9は、本発明の実施形態によるクラウドファイルシステム及びクラウドファイルシステム内のファイルの格納の視覚化を示している。図9では、クライアントデバイス901は、クライアントデバイス上での使用に向けてクラウドファイルシステム902を実装済みである。クラウドファイルシステム902は、クラウドファイルシステム902マニフェスト910内にある。クラウドファイルシステム902マニフェスト910は、その特定のクラウドファイルシステム902に存在するファイル及びフォルダを示すエントリのリストを含む。クラウドファイルシステム902マニフェスト910は、エントリ名、エントリ属性、エントリマニフェストID、及びエントリマニフェスト暗号化キーを含む。
[00121]ユーザは、クラウドファイルシステム902のようなクラウドファイルシステムを使用する多くの方法を有する。ユーザは、クライアントデバイス901上で使用したい新しいクラウドファイルシステムの生成を開始することができる。例えば、その使用により、クラウドストレージシステム935内に格納された新しい格納位置、例えば、新しいドライブ又は新しいフォルダを作成するようにクライアントデバイス上で実行中であるCFSクライアントモジュールに指示することができる。クラウドファイルシステムを使用する別の方法は、クラウドストレージシステム935内に格納されたフォルダにクライアントデバイス上に格納されたフォルダを変換し、すなわち、フォルダ、又はドライブを仮想化することである。クライアントデバイス上のユーザは、指定のフォルダを変換するようにCFSクライアントモジュールに指示することができ、次に、CFSクライアントモジュールは、指定のフォルダ内のファイル及びサブフォルダの管理を引き受けることができる。更に、この変換は、おしつけがましくなく一見透過的方式で行うことができる。これは、ローカルストレージシステム内のスペースがなくなっており、かつファイルが予想された位置から移動したので多くの構成環境を変えることなくストレージスペースを回復したいと思うユーザに特に有利である。CFSクライアントモジュールは、ローカルストレージシステムからクラウドストレージシステムにファイルを移行することができるが、ファイルが変換前に存在した同じ論理経路でクライアントデバイスにファイルを提示することができる。
[00122]例えば、CFSクライアントモジュールは、クライアントデバイス上の一時的な格納位置に指定のフォルダ内の全てのデータを移動することになる。次に、CFSクライアントモジュールは、指定のフォルダに関連付けられた新しいCFSを作成して、以前に指定のフォルダを含む位置(すなわち、実装ポイント)で新しいCFSを実装することができる。CFSクライアントモジュールは、次に、一時的な格納位置からクラウドストレージシステム935内の格納にファイル及びサブフォルダを移行する処理を開始することができる。移行期間中に、クライアントデバイスは、CFSクライアントモジュールで要求を出すことによって指定のフォルダ内のデータにアクセス可能である。CFSクライアントモジュールは、要求されたデータが一時的な格納位置に格納されたか否か、又はクラウドストレージシステム935に移行されたか否かを決定する。データが一時的な格納位置に位置する場合に、CFSクライアントモジュールは、例えば、一時的な格納位置内のファイル又はフォルダにアクセスすることにより、一時的な格納位置からデータを取り出す。しかし、データがクラウドストレージシステム935に位置する場合には、CFSクライアントモジュールは、図8に定められた方法でクラウドストレージシステム935からデータにアクセスすることになる。移行期間中に、CFSクライアントモジュールは、定期的にクラウドストレージシステム935内にまだ格納されていない指定のフォルダ内のファイル又はサブフォルダを決定し、クラウドストレージシステム935内の格納のためにそのフォルダを処理することになる。
[00123]この変換をユーザインタフェース指令を通じてクライアントデバイス上のユーザに与えることができる。例えば、ユーザはクライアントデバイス上でファイルシステムブラウザからフォルダを選択し、選択されたフォルダを変換すること、例えば、このフォルダを仮想化する又は「クラウド化する」指令を含むコンテクストメニューを呼び出すことができる。そこから、CFSクライアントモジュールは、このフォルダをユーザと同じデータを含む知覚的に同一のフォルダと入れ替えることができ、又はCFSクライアントモジュールは、このフォルダを同じ指定であるがフォルダがクラウドストレージシステム935内に格納されたという表示をユーザに提示するフォルダと入れ替えることができる。更に、CFSクライアントモジュールは、フォルダがローカルストレージからクラウドストレージシステム935内の格納に移行中であるという表示を作成し、更に、移行が完了すると、フォルダは完全にクラウドストレージシステム935内に格納されたという表示を提示することができる。
[00124]CFSがクライアントデバイス901上の使用に向けて実装された状態で、CFSクライアントモジュールは、以下のようにCFS内にサブフォルダ及びファイルを格納する。サブフォルダは、エントリとしてのCFS902マニフェスト910内に格納されるとファイルではなくフォルダと指定される。CFS902マニフェスト910内のエントリは、クライアントデバイス上のユーザがCFS内の位置までナビゲートした時にCFSクライアントモジュールがCFS902マニフェスト910からその位置に位置付けられた全てのフォルダを決定することができるようにフォルダの経路を含む。クラウドストレージシステム内のファイルの格納に対して図7を参照して説明する。更に、ファイルのCFS902マニフェスト910内のエントリは、クライアントデバイス上のユーザがCFS内の位置までナビゲートした時にCFSクライアントモジュールがCFS902マニフェスト910からその位置に位置付けられた全てのファイルを決定することができるようにそのファイルの経路を含む。従って、当業者は、クライアントデバイスにCFS内の各ファイルを構成するファイルチャンクを格納させなくてもCFS内のファイル及びサブフォルダをCFS902マニフェスト910内のデータからユーザに提示することができることを認識するであろう。
[00125]CFS902にファイルを追加する処理は、図9の下部に沿って視覚化される。図9では、クライアントデバイスは、CFS902内の位置にファイルBを保存するようにCFSクライアントモジュールに指示する。CFSクライアントモジュールは、ユーザ不可知圧縮及び暗号化をファイルBに行って、ファイルBマニフェスト903(「FM−B」)を生成する。更に、CFSクライアントモジュールは、暗号化されたチャンクがまだクラウドストレージシステム935に存在しないと決定した時に、クラウドストレージシステム935にユーザ不可知圧縮及び暗号化によって生成された各々の暗号化されたチャンクを送信する。
[00126]暗号化されたチャンクは存在すると決定することができるので、ファイルBが、クラウドストレージシステム935内に格納されていた他のファイル内のデータの他のブロックと同一のデータのブロックを含む時に、帯域幅利用が低減される。この同じ非複製化により、CFSクライアントモジュールは、クラウドストレージシステム935内に格納された単一ファイルが同一データの複数のチャンクを含む時に帯域幅を低減することができ、その理由は、アップロードされる第1のチャンクのみを送信しさえすればよいからである。当業者は、暗号化がユーザ不可知ので、同じファイル又は2つのファイルがデータの同じチャンクを有する2つのユーザは、1つ又はそれよりも多くの同一暗号化されたチャンクを作成することになり、暗号化されたチャンクの第1の送信のみを要求することを認識するであろう。それによって帯域幅が、クラウドストレージシステム935内に複から作られるデータを格納することで低減される。
[00127]例示的なFM−B903を図9に示している。FM−B903は、図4を参照して上述したように、チャンクID及びチャンク暗号化キーのリストを含む。図9では、各チャンクのIDは、暗号化されたチャンク内のデータのハッシュ(例えば、HASH(ENC.CHUNK1)−HASH(ENC.CHUNKN))である。更に、暗号化キーはチャンク内のデータのハッシュ(例えば、HASH(CHUNK1)−HASH(CHUNK2))である。図5で上述したように、これらのチャンクID及び暗号化キーは、例示的であり、一方、本発明の他の実施形態は、チャンクID及び暗号化キーとして各チャンクから確定的である他のユーザ不可知データを利用する。
[00128]CFSクライアントモジュールは、FM−B903上の各ブロックに使用された同じユーザ不可知暗号化を利用して、暗号化されたFM−B、ENC.FM−B904、及びENC.FM−B904のハッシュであるFM−BIDを生成する。また、CFSクライアントモジュールは、ユーザ不可知確定的な暗号化キー(「FM−B ENC−KEY」)を使用して、FM−B903内のデータのハッシュのようなFM−B903を暗号化する。CFSクライアントモジュールは、FM−B IDを使用するその後の取り出しに利用可能であるようにローカルで及びクラウドストレージシステム935内にENC.FM−B904を格納する。
[00129]CFSクライアントモジュールは、ファイルBがCFS902のフォルダ階層に示されている位置を含むファイルBに対応するエントリをCFS902マニフェスト910に追加する。ファイルBエントリは、FM−B ID及びFM−B ENC−KEYを含む。このようにして、ユーザ又はクライアントデバイスがFM−B ID及び対応するFM−B ENC−KEYを有するエントリを含むCFSマニフェストを有すると、ユーザは、たとえそのユーザ又はクライアントデバイスがファイルBのコピーを以前に有しなかったとしてもENC.FM−B904を取り出して暗号解読することができる。
[00130]クラウドファイルシステム902マニフェスト910は、ユーザによって生成されたキー又はパスワードで暗号化される。例えば、図7を参照して後述するように、ユーザ相対的スナップショット暗号化又はマルチユーザファイルシステムマニフェスト暗号化を使用してクラウドファイルシステム902マニフェスト910を暗号化することができる。暗号化ファイルシステムマニフェスト(「ENC−FSM」)は、このユーザ又は他のユーザによる取り出しに向けて格納されるようにクラウドストレージシステム935に送信される。
[00131]CFSにファイルの追加は、既存のフォルダに代わるか、又は別の格納位置としてクライアントデバイスに追加されるCFSの生成を参照して説明した。しかし、同じ原理を使用して、CFSクライアントモジュールがクライアントデバイス上のローカルストレージ内の一部又は全部データの自動バックアップを管理することを可能にすることができる。例えば、クライアントデバイス上のCFSクライアントモジュールが取り込まれると、CFSクライアントモジュールは、CFSクライアントモジュールが実行中であるクライアントデバイスのバックアップとしてラベル付けされてCFS内に格納されるローカルストレージシステムのバックアップを生成し始めることができる。従って、CFSクライアントモジュールは、バックグランドで機能し、ローカルストレージシステム内のファイルを識別し、クラウドストレージシステムにそれらのファイルを追加し、そのクライアントデバイスローカルストレージシステムのバックアップを構成する全てのバックアップファイルを列挙するファイルシステムマニフェストを生成する。ローカルストレージシステム上のファイルは、ローカルストレージシステムから必ずしも除去されるというわけではないが、ファイルは、将来の障害回復に向けてバックアップファイルシステムマニフェスト内に列挙される。
[00132]CFSクライアントモジュールを実行するクライアントデバイスの寿命を通して、CFSクライアントモジュールは、ファイルがクラウドストレージシステムに仮想化中の基本的なフォルダとは無関係に、ファイルが更新されるとファイルのバックアップを維持することができる。更に、CFSクライアントモジュールは、識別情報、すなわち、バージョン番号又は修正日と共にクラウドストレージシステムに格納された各ファイルの全てのバージョンのリストを維持することができる。このようにして、CFSクライアントモジュールは、ユーザがCFSクライアントモジュールによって維持されたバックアップからファイルを再格納したいという希望を提示する時にファイルの全ての利用可能なバージョンのリストをクライアントデバイス上のユーザに提示することができる。更に、CFSクライアントモジュールは、CFSクライアントモジュールが常駐するクライアントデバイスの固有の識別子を追跡して、バックアップファイルシステムマニフェスト内に各バックアップファイルのファイルマニフェストを列挙するか、又はクライアントデバイスの固有の識別子に従ってファイルシステムマニフェスト自体を列挙することができる。固有の識別子を使用して、CFSクライアントモジュールは、このクライアントデバイスのバックアップからファイルを再格納するオプションをユーザに提示するか、又はユーザがバックアップファイルの再格納元である別のクライアントデバイスを選択することを可能にすることができる。
[00133]一実施形態において、ローカルストレージシステムのバックアップは、CFSクライアントモジュールにより自動的に管理される。別の実施形態において、CFSクライアントモジュールは、どのファイルをクラウドストレージシステムにバックアップすべきか、又はバックアップをそもそも行うべきか否かに関してユーザに構成オプションを提示する。
[00134]ローカルストレージシステム全体がクラウドストレージシステム内でバックアップされる場合に、「クラウド化する」作動は、選択されたフォルダのコンテンツでファイルシステムマニフェストを生成し、フォルダのローカルコピーを除去し、かつフォルダの位置で生成されたファイルシステムマニフェストを実装することと同等とすることができる。この作動では、各ファイルに対して全ての暗号化されたブロックを再アップロードする必要があるというわけではなく、その理由は、暗号化されたブロックは、バックアップ手順からクラウドストレージシステムにあるからであるが、「クラウド化する」作動は、バックアップファイルと選択されたフォルダ内に現在あるファイルとの間で行わなければならないあらゆる更新を決定する。
[00135]別の実施形態において、CFSクライアントモジュールは、クライアントデバイスのローカルストレージシステム内のファイル、フォルダ、及びドライブを自動的に仮想化するように構成される。上述したように、ローカルストレージシステムの自動バックアップは、ローカルストレージシステムからファイルを除去しない。しかし、ファイル、フォルダ、又はドライブの自動仮想化では、ローカルストレージシステムからファイル及びフォルダを除去して、クラウドストレージシステムに上述のファイル及びフォルダを格納することになる。本質的に、CFSクライアントモジュールは、自動仮想化のための候補であると決定するファイル、フォルダ、及び/又はドライブを自動的にクラウド化することになる。CFSクライアントモジュールは、どのファイル、フォルダ、又はドライブが自動仮想化の候補であるかを複数の技術を用いて決定することができる。CFSクライアントモジュールは、フォルダ、又はドライブ内のファイル又は複数のファイルの修正日又はアクセス日を見て、ユーザが最近ファイルを使用したか否かを決定することができる。この仮想化は自動であるので、CFSクライアントモジュールは、ファイルをクラウドストレージシステムから取り出さなければならない場合は将来のアクセスにおいてあらゆる遅延によりユーザに与える影響が少なくなるので最近使用されなかったファイルを優遇することができる。仮想化の候補を決定する他の技術には、ファイル使用パターンを時間と共に追跡して仮想化の格好の候補になるファイル、フォルダ、及びドライブのリストを生成することがある。
[00136]CFSクライアントモジュールは、更に、CFS内に含まれたファイル/フォルダ、及びローカルストレージシステムに含まれたファイル/フォルダの混成フォルダをもたらすように構成することができる。例えば、ユーザがCFSクライアントモジュールにファイル及びフォルダを含むローカルストレージシステム内の実装ポイントでCFSを実装するように指示した場合に、CFSクライアントモジュールは、ローカルストレージシステム及び実装されるCFS内のファイルを統合することができる。CFSクライアントモジュールは、ローカルストレージ内のファイルの管理を引き受けて、ローカルストレージシステムの管理された区分にファイルを移動する。CFSクライアントモジュールは、次に、選択されたフォルダの位置で仮想フォルダを実装して、そのフォルダのコンテンツでユーザを提示することを担う。CFSクライアントモジュールは、ディレクトリリストが混成/仮想フォルダに行われた時はいつでもローカルストレージシステムの管理された区分内に現在あるローカルストレージシステム内のファイル/サブフォルダのリスト及び実装されたCFSのファイル/サブフォルダのリストをクライアントデバイスに提供する。読取作動は、仮想化移行中の読取の経路を参照して上述した方法で処理される。CFSクライアントモジュールは、位置ストレージシステムの管理された区分又はクラウドストレージシステムに新しいファイル及び/又は古いファイルの修正を保存するオプションを有する。このオプションは、ユーザに提示された設定を通じてCFSクライアントモジュールにより予め形成することができ、又はオプションは、混成フォルダへのCFSクライアントモジュールによる書込作動でユーザに提示することができる。CFSクライアントモジュールは、更に、ユーザがファイル又はフォルダを含むローカルストレージシステム内の位置でCFSを実装することを選択した場合に矛盾が存在することをユーザに知らせて、ユーザが解決手順を選択すること、例えば、CFS内の全てのファイルを移動することを選択するか、混成フォルダ手法を選択するか、又はユーザ自体が矛盾を管理することができるように何もしないことを選択することを可能にすることができる。
[00137]図10は、本発明の実施形態によるユーザ不可知暗号化及びファイルの圧縮の視覚化を示している。図10では、クライアントデバイス1001は、偶然に同一データを構成するデータの2つのチャンク1030及び1040を偶然に含む単一のファイル1010を暗号化している。本発明の一実施形態において、クライアントデバイスは、各対応するチャンク1030及び1040のデータ(「D1030」及び「D1040」)から暗号化キー1032及び1042(「K1030」及び「K1040」)を生成することによってそれぞれステップa及びステップbで各チャンクを処理し始める。従って、暗号化キーK1040=hash(D1040)を生成するためにデータのハッシュ機能を利用する実施形態において、更に、D1030がD1040と同一なので、K1030は、K1040と同一になる。ステップc及びステップdで、クライアントデバイスは、任意的に、チャンク1030及び1040を圧縮し、圧縮されたチャンク1031及び1041(「cD1030」及び「cD1040」)を生成し、すなわち、cD1040=comp(D1040)である。圧縮されたチャンク1031及び1041は、再び同一であり、その理由は、クライアントデバイス1001は、同一データ及び同じ圧縮アルゴリズムを使用しており、一部の場合に圧縮を使用していないからである。
[00138]ステップe及びステップfで、クライアントデバイス1001は、それぞれの暗号化キー1032及び1042を使用して圧縮されたチャンク1031及び1041を暗号化し、暗号化されたチャンク1033及び1043(「eD1030」及び「eD1040」)を生成し、すなわち、eD1030=encrypt(cD1030、K1030)である。暗号化されたチャンク1033は、暗号化データ1043と同一になり、その理由は、圧縮されたチャンク1031及び1041は、暗号化キー1032及び1042と同様に同一であるからである。更に、クライアントデバイスは、各チャンクに同じ暗号化アルゴリズムを利用している。
[00139]ステップg及びステップhで、クライアントデバイス1001は、チャンクID1034及びチャンクID1044(「ID1030」及び「ID1040」)を暗号化データ1033及び1043から導出し、すなわち、ID1030=hash(eD1030)である。各ステップに使用されるハッシュ機能は同じアルゴリズムであり、暗号化データ1033及び1044は同一であるので、チャンクID1034及び1044は同一になる。
[00140]ステップi及びステップjで、クライアントデバイス1001は、チャンクID1034及び1044に基づいてクラウドストレージシステム1035内に暗号化データ1033及び1043を格納しようとすることになる。ステップiがステップjの前に発生すると仮定して、暗号化データ1033は、クラウドストレージシステム1035にチャンクID1034に関連してアップロードされることになる。クラウドストレージシステムは、チャンクID1034に対応する位置で暗号化データ1033を格納することになり、従って、クラウドストレージシステムは、格納された暗号化データ1063及び格納されたチャンクID1064を含むことになる。クライアントデバイス1001が暗号化データ1043を格納しようとする時に、クライアントデバイスは、クラウドストレージシステム1035が同一に格納されたチャンクID1064を含むので同一暗号化データを有すると決定することになる。クライアントデバイス1001は、チャンクID1044に関連して暗号化データ1043を送信する必要がなくなり、従って、クライアントデバイス1001は、クラウドストレージシステム1035に存在するデータを送信しないことによってアップロード帯域幅の利用を低減することになる。
[00141]図11は、本発明の実施形態による2つのファイルのユーザ不可知暗号化及び圧縮の視覚化を示している。図11では、第1のクライアントデバイス1101Aは、ファイル1110を暗号化しており、一方、第2のクライアントデバイス1101Bは、ファイル1120を暗号化している。それが起こると、ファイル1110及び1120は、同一データを構成するデータの2つのチャンク1130及び1140を含む。全てのファイル1110及び1120は、ファイル内に互いのコピーであるような完全に同一のデータを含むことさえあり得る。
[00142]本発明の一実施形態において、各クライアントデバイス1101A及び1101Bは、対応するチャンクを圧縮することによって各チャンク1130及び1140を処理し始める。従って、ステップa及びステップbで、対応するクライアントデバイスは、任意的に、チャンク1130又は1140を圧縮し、圧縮されたチャンク1131又は1141(「cD1130」又は「cD1140」)を生成し、すなわち、cD1140=comp(D1140)である。圧縮されたチャンク1131及び1141は、同一であり、その理由は、クライアントデバイス1101A及び1101Bは、同一データ及び同じ圧縮アルゴリズムを使用しているか、又は一部の場合に圧縮を使用していないからである。
[00143]クライアントデバイス1101A及び1101Bは、各対応するチャンク1130及び1140のデータ(「D1130」及び「D1140」)から暗号化キー1132及び1142(「K1130」及び「K1140」)を生成することによってそれぞれステップc及びステップdで続行される。従って、暗号化キー、K1140=hash(D1140)を生成するためにデータのハッシュ機能を利用する実施形態において、更に、D1130がD1140と同一であり、クライアントデバイス1101A及び1101Bが暗号化キーを生成するために同じアルゴリズムを使用しているので、K1130は、K1140と同一になる。
[00144]ステップe及びステップfで、クライアントデバイス1101A及び1101Bは、それぞれの暗号化キー1132及び1142を使用して圧縮されたチャンク1131及び1141を暗号化し、暗号化データ1133及び1143(「eD1130」及び「eD1140」)を生成し、すなわち、eD1130=encrypt(cD1130、K1130)である。暗号化データ1133は、暗号化キー1132及び1142の場合と同様に、圧縮されたチャンク1131及び1141が同一であるので暗号化データ1143と同一になる。更に、クライアントデバイスは、各対応するチャンクに同じ暗号化アルゴリズムを利用している。
[00145]ステップg及びステップhで、クライアントデバイス1101A及び1101Bは、チャンクID1134及びチャンクID1144(「ID1130」及び「ID1140」)を暗号化データ1133及び1143から導出し、すなわち、ID1130=hash(eD1130)である。各ステップに使用されるハッシュ機能は同じアルゴリズムであり、暗号化データ1133及び1144は同一であるので、チャンクID1134及び1144も同一になる。
[00146]ステップi及びステップjで、クライアントデバイス1101A及び1101Bは、チャンクID1134及び1144に基づいてクラウドストレージシステム1135内に暗号化データ1133及び1143を格納しようとすることになる。ステップiがステップjの前に発生すると仮定して、暗号化データ1144は、クラウドストレージシステム1135にチャンクID1144に関連してアップロードされることになる。クラウドストレージシステムは、チャンクID1144に対応する位置で暗号化データ1143を格納することになり、従って、クラウドストレージシステムは、格納された暗号化データ1163及び格納されたチャンクID1164を含むことになる。クライアントデバイス1101Aが暗号化データ1133を格納しようとする時に、クライアントデバイス1101Aは、クラウドストレージシステム1135が同一に格納されたチャンクID1164を含むので同一暗号化データを有すると決定することになる。クライアントデバイス1101Aは、チャンクID1134に関連して暗号化データ1133を送信する必要がなくなり、従って、クライアントデバイス1101Aは、クラウドストレージシステム1135に存在するデータを送信しないことによってアップロード帯域幅の利用を低減することになる。
[00147]図12、図13、図14、及び図15を参照すると、クラウドストレージゲートウェイは、クラウドストレージプールと結合され、図2に説明するように通信ネットワーク上で1つ又はそれよりも多くのクライアントデバイスと通信する。
[00148]図12は、本発明の実施形態によるクラウドストレージゲートウェイがクラウドファイルプールからファイルチャンクを戻す方法の流れ図を示している。ブロック1200で、クラウドストレージゲートウェイは、ファイルチャンクの要求を受信する。例えば、クラウドストレージゲートウェイは、GET指令及びチャンクIDと共にクライアントデバイスからメッセージを受信する場合がある。更に、GET指令は、チャンクIDのリストを伴う可能性がある。単一のチャンクIDを参照すると、クラウドストレージゲートウェイは、ブロック1210で、そのファイルチャンクがクラウドストレージゲートウェイに位置付けられたクラウドストレージプールのリモートキャッシュに存在するか否かを決定する。一実施形態において、クラウドストレージゲートウェイは、チャンクIDのデータベースを見て、ファイルチャンクがリモートキャッシュに存在するか否かを決定する。データベースは、ブルームフィルタ、ハッシュテーブル、リンクリスト、関係データベース、又はあらゆる他の適切なデータベースとすることができる。別の実施形態において、クラウドストレージゲートウェイは、ファイルチャンクがチャンクIDに関連付けられた位置に位置付けられたか否かを検査する。ファイルチャンクがリモートキャッシュに存在しない場合に、クラウドストレージゲートウェイは、ブロック1215でストレージクラスターからファイルチャンクを取り出す。ブロック1290で、クラウドストレージゲートウェイは、クライアントデバイスにファイルチャンクを戻す。1つの可能なシナリオは、クラウドストレージゲートウェイが要求されたチャンクIDを持たないということである。このシナリオにおいて、クラウドストレージゲートウェイは、チャンクIDがクラウドストレージシステムに存在しないことを示すメッセージをクライアントデバイスに戻す。
[00149]図13は、本発明の実施形態によるクラウドストレージゲートウェイがクラウドファイルプールからファイルチャンクをプリフェッチする方法の流れ図を示している。ブロック1300で、クラウドストレージゲートウェイは、プリフェッチ指令を受信する。例えば、クラウドストレージゲートウェイは、PRE指令及びチャンクIDと共にクライアントデバイスからメッセージを受信する場合がある。更に、PRE指令は、チャンクIDのリストを伴う可能性がある。単一のチャンクIDを参照すると、クラウドストレージゲートウェイは、ブロック1310で、そのファイルチャンクがクラウドストレージゲートウェイに位置付けられたクラウドストレージプールのリモートキャッシュに存在するか否かを決定する。ファイルチャンクがリモートキャッシュに存在する場合に、本方法がブロック1320で行われる。ファイルチャンクがリモートキャッシュに存在しない場合に、クラウドストレージゲートウェイは、ブロック1315でストレージクラスターからファイルチャンクを取り出す。1つの可能なシナリオは、クラウドストレージゲートウェイが要求されたチャンクIDを持たないということである。このシナリオにおいて、クラウドストレージゲートウェイは、チャンクIDがクラウドストレージシステムに存在しないことを示すメッセージをクライアントデバイスに戻すことができる。
[00150]図14は、本発明の実施形態によるクラウドストレージゲートウェイがクラウドストレージシステムにファイルチャンクがあるかを検査する方法の流れ図を示している。ブロック1400で、クラウドストレージゲートウェイは、チャンクIDがクラウドストレージシステムに存在するか否かを検査する指令を受信する。例えば、クラウドストレージゲートウェイは、HAS指令及びチャンクIDと共にクライアントデバイスからメッセージを受信する場合がある。更に、HAS指令は、チャンクIDのリストを伴う可能性がある。単一のチャンクIDを参照すると、クラウドストレージゲートウェイは、ブロック1410で、そのファイルチャンクがクラウドストレージゲートウェイに位置付けられたクラウドストレージプールのリモートキャッシュに存在するか否かを決定する。ファイルチャンクがリモートキャッシュに存在する場合に、本方法は、ブロック1420に引き続き進んで、クライアントデバイスにチャンクIDがクラウドストレージシステムに存在することを示す。ファイルチャンクがリモートキャッシュに存在しない場合に、本方法は、ブロック1425に引き続き進んで、チャンクIDがクラウドストレージプールに存在するか否かを決定する。例えば、一実施形態において、クラウドストレージゲートウェイは、クラウドストレージプールに存在する全てのチャンクIDのリストを維持し、一方、別の実施形態において、クラウドストレージゲートウェイは、クラウドストレージプールに問い合わせて、クラウドストレージプールが要求されたチャンクIDを含むか否かを決定する。チャンクIDが存在する場合に、クラウドストレージゲートウェイは、ブロック1420に引き続き進んで、チャンクIDがクラウドストレージシステムに存在することをクライアントデバイスに示す。チャンクIDが存在しない場合に、クラウドストレージゲートウェイは、ブロック1430に引き続き進んで、チャンクIDがクラウドストレージシステムに存在しないことをクライアントデバイスに示す。
[00151]図15は、本発明の実施形態によるクラウドストレージゲートウェイがクラウドストレージシステムにファイルチャンクを追加する方法の流れ図を示している。ブロック1500で、クラウドストレージゲートウェイは、クラウドストレージシステムにファイルチャンクを格納する要求を受信し、要求は、ファイルチャンクもチャンクIDも含む。例えば、クラウドストレージゲートウェイは、PUT指令、ファイルチャンク、チャンクIDと共にクライアントデバイスからメッセージを受信する場合がある。更に、PUT指令は、ファイルチャンク及びチャンクIDのリストを伴う可能性がある。単一のファイルチャンク及びチャンクID対を参照すると、クラウドストレージゲートウェイは、ブロック1510で、そのファイルチャンクがクラウドストレージシステムに存在するか否かを決定する。ファイルチャンクがクラウドストレージシステムに存在する場合に、本方法は、ブロック1550で行われる。ファイルチャンクがクラウドストレージシステムに存在しない場合に、本方法は、ブロック1520に引き続き進んで、ファイルチャンクを検証する。ファイルチャンクが対応するチャンクIDでファイルチャンクを要求する全てのクライアントデバイスに利用可能になるので、ファイルチャンク内のデータが有効であることを保証することが重要である。従って、クラウドストレージゲートウェイは、ファイルチャンクからチャンクIDを生成し、生成されたチャンクIDを受信したチャンクIDと比較する。生成されたチャンクIDが受信したチャンクIDに適合する場合に、ファイルチャンクは有効であるので、本方法は、ブロック1530に引き続き進み、そうでなければ、本方法は終了してブロック1550に戻る。ブロック1530で、クラウドストレージゲートウェイは、クラウドストレージプール内にデータを格納する。データは、チャンクIDに関連付けられた位置で格納される。例えば、ファイルチャンクは、ファイルチャンクのデータベース内に格納される場合があり、又はファイルチャンクのファイルシステムに格納される場合がある。一実施形態において、クラウドストレージシステムは、ブロック1540で、ファイルチャンクがそのファイルチャンクの将来の要求にサービスを提供するのにより迅速に利用可能になるように、クラウドストレージプールのリモートキャッシュにファイルチャンクをコピーする。一部の実施形態において、本方法は、データが格納されたか又は格納しなかったかの表示をクライアントデバイスに戻す。
[00152]図16は、本発明の実施形態によるファイルチャンクをクラウドストレージシステムに要求するデータフロー図を示している。クライアントデバイス1601Aは、ネットワーク1630を通じてクラウドストレージシステム1635と結合される。クラウドストレージシステム1635は、クラウドストレージプール1660と結合されたクラウドストレージゲートウェイ1645を含む。クラウドストレージゲートウェイ1645は、クラウドストレージプールのリモートキャッシュとして作用し、クラウドストレージプールは、クラウドストレージシステムデータの1次ストレージとして作用する。ステップ1で、クライアントデバイス1601Aは、1つ又はそれよりも多くのファイルチャンクを要求するメッセージをクラウドストレージゲートウェイ1645に送信する。例えば、メッセージは、1つ又はそれよりも多くのチャンクIDを有するGETメッセージである。ステップ2で、ファイルチャンクがリモートキャッシュに存在しない場合に、クラウドストレージゲートウェイ1645は、クラウドストレージプール1660からファイルチャンクをフェッチする。例えば、クラウドストレージゲートウェイ1645は、戻すチャンクIDのリストを伴うGETメッセージをクラウドストレージプール1660に出す。ステップ3で、クラウドストレージプール1660は、クラウドストレージプール1660に存在する各要求されたファイルチャンクを戻す。そうでなければ、クラウドストレージプール1660は、クラウドストレージプール1660に存在しなかったチャンクの表示を戻す。ステップ4で、クラウドストレージゲートウェイ1645は、要求されたファイルチャンクがクラウドストレージシステム1635に存在した場合はクライアントデバイス1601Aにそれらのファイルチャンクを戻し、そうでなければ、クラウドストレージゲートウェイ1645は、クラウドストレージシステム1635に存在しなかったファイルチャンクの表示を戻す。ステップ5で、クライアントデバイス1601Aは、クラウドストレージシステム1635からファイルチャンク又は表示を受信する。
[00153]図17は、本発明の実施形態によるクラウドストレージプールにファイルチャンクをプリフェッチするように要求するデータフロー図を示している。クライアントデバイス1701Aは、ネットワーク1730を通じてクラウドストレージシステム1735と結合される。クラウドストレージシステム1735は、クラウドストレージプール1760と結合されたクラウドストレージゲートウェイ1745を含む。クラウドストレージゲートウェイ1745は、クラウドストレージプールのリモートキャッシュとして作用し、クラウドストレージプールは、クラウドストレージシステムデータの1次ストレージとして作用する。ステップ1で、クライアントデバイス1701Aは、1つ又はそれよりも多くのファイルチャンクがクラウドストレージプール1760からクラウドストレージゲートウェイ1745によりプリフェッチされることを要求するメッセージをクラウドストレージゲートウェイ1745に送信する。ステップ2で、クラウドストレージゲートウェイ1745は、クラウドストレージゲートウェイ1745上に常駐するクラウドストレージプール1760のリモートキャッシュ内にまだ存在しないチャンクに関して、GET指令及びチャンクIDのリストと共にファイルチャンクをフェッチする。ステップ3で、クラウドストレージプール1760は、クラウドストレージプール1760に存在する各要求されたファイルチャンクを戻す。そうでなければ、クラウドストレージプール11760は、クラウドストレージプール1760に存在しなかったチャンクの表示を戻す。ステップ4で、クラウドストレージゲートウェイ1745は、ファイルチャンクが将来の要求に向けてより迅速なアクセスに利用可能になるように、クラウドストレージプールのリモートキャッシュ内に戻されたチャンクを格納する。
[00154]図18は、本発明の実施形態によるクラウドストレージシステムが1つ又はそれよりも多くのファイルチャンクを有するか否かの表示を要求するデータフロー図を示している。クライアントデバイス1801Aは、ネットワーク1830を通じてクラウドストレージシステム1835と結合される。クラウドストレージシステム1835は、クラウドストレージプール1860と結合されたクラウドストレージゲートウェイ1845を含む。クラウドストレージゲートウェイ1845は、クラウドストレージプールのリモートキャッシュとして作用し、クラウドストレージプール1860は、クラウドストレージシステム1835データの1次ストレージとして作用する。ステップ1で、クライアントデバイス1801Aは、1つ又はそれよりも多くのファイルチャンクがクラウドストレージシステム1835内にあるか否かの表示を要求するメッセージをクラウドストレージゲートウェイ1845に送信する。ステップ2で、クラウドストレージゲートウェイ1845は、チャンクがクラウドストレージプールのリモートキャッシュ内に又はクラウドストレージプール1860自体に存在するか否かを決定する。ステップ3で、クラウドストレージゲートウェイ1845がクラウドストレージプール1860にクラウドストレージプール1860がチャンクを有するか否かに対して問い合わせたチャンクに関して、クラウドストレージプール1860は、チャンクがクラウドストレージプール1860に存在するか否かの表示を戻す。ステップ4で、クラウドストレージゲートウェイ1845は、各ファイルチャンクがクラウドストレージシステム1835に存在するか否かの表示を戻す。
[00155]図19は、本発明の実施形態によるクラウドストレージシステムに1つ又はそれよりも多くのファイルチャンクを格納するデータフロー図を示している。クライアントデバイス1901Aは、ネットワーク1930を通じてクラウドストレージシステム1935と結合される。クラウドストレージシステム1935は、クラウドストレージプール1960と結合されたクラウドストレージゲートウェイ1945を含む。クラウドストレージゲートウェイ1945は、クラウドストレージプールのリモートキャッシュとして作用し、クラウドストレージプール1960は、クラウドストレージシステム1935データの1次ストレージとして作用する。ステップ1で、クライアントデバイス1901Aは、クラウドストレージシステム1935内に1つ又はそれよりも多くのファイルチャンクを格納するメッセージをクラウドストレージゲートウェイ1945に送信する。ステップ2で、クラウドストレージゲートウェイ1945は、チャンクがクラウドストレージプールのリモートキャッシュ内に又はクラウドストレージプール1960自体に存在するか否かを決定する。ステップ3で、クラウドストレージゲートウェイ1945がクラウドストレージプール1960にクラウドストレージプール1960がチャンクを有するか否かに対して問い合わせたチャンクに関して、クラウドストレージプール1960は、チャンクがクラウドストレージプール1960に存在するか否かの表示を戻す。ステップ4で、クラウドストレージゲートウェイ1945は、クラウドストレージシステム1935に存在しないチャンクを検証する。ステップ5で、クラウドストレージゲートウェイ1945は、クラウドストレージプール1960にチャンクを送信することによって検証されたチャンクを格納する。ステップ6で、クラウドストレージプール1960は、各チャンクのIDに基づく位置でデータストア内にチャンクを保存する。
[00156]図20〜図24を参照すると、各図は、一実施形態によるCFSクライアントモジュールによってもたらされたユーザインタフェースの要素を示すスクリーンショットである。これらのスクリーンショットは、Mac OS Xオペレーティングシステムを実施するクライアントデバイスからのものである。類似のインタフェースが、Mac OS Xと異なるオペレーティングシステムを実施するクライアントデバイスによってもたらされることは当業者により認められるであろう。
[00157]図20は、本発明の実施形態によるクラウドファイルシステムに格納されたファイルを列挙するユーザインタフェースを示している。図20は、フォルダ、例えば、「Common Movies」のコンテンツを表示するファイルブラウザウインドウ、例えば、Mac OSX Finder Window又はWindows File Exxplorerのスクリーンショットである。フォルダ「コモンウインドウ」は、実装ポイント/Users/bitcasacommon/Bitcasa/commonsに実装されたクラウドファイルシステムである。ユーザインタフェースは、クラウドファイルシステムに格納され、かつクライアントデバイスでのアクセスに利用可能である1組のファイルを示している。図20の特に興味深い態様は、フォルダに利用可能なスペース量の表示である。図20の下部で、ファイルブラウザインタフェースは、フォルダが「17.59TB利用可能」な空きスペースを有することを示している。フォルダまで閲覧する時に、クライアントデバイス上のオペレーティングシステムは、そのフォルダが位置するファイルシステムの利用可能スペースを要求する。「Common Movies」フォルダがCFS、すなわち、実装されたCFS内に常駐するので、CFSクライアントモジュールは、CFSとオペレーティングシステムの間のインタフェースを処理する。従って、オペレーティングシステムは、利用可能スペースをCFSクライアントモジュールに要求する。CFSクライアントモジュールは、要求に基づいてオペレーティングシステムに戻すべきCFSクライアントモジュールに利用可能な最大値としての空きスペースの表示を戻す。従って、図20では、CFSクライアントモジュールは、どの程度のスペースがクラウドストレージシステムにおいて残っているかに基づいて利用可能なスペース量を戻さず、代わりに、偶然に244又は17.59テラバイトである表示すべきオペレーティングシステムに利用可能な最大値を戻している。ユーザがCFSにファイルを追加すると、利用可能スペースの量は、CFSのユーザ及びクライアントデバイスに示されて一定のままである。
[00158]図21は、本発明の実施形態によるクラウドファイルシステムクライアントモジュールによって提供される機能にアクセスするためのユーザインタフェースを示している。図21は、CFSクライアントモジュールによって供給されたコンテクストメニューのスクリーンショットである。ユーザインタフェースにより、クライアントデバイスの上に実装される2つのクラウドファイルシステム、例えば、「Common Movies」及び「My Files」へのショートカットが得られる。ユーザがこのショートカットをクリックした時に、ファイルブラウザが開いて、そのCFSのコンテンツを示すようにナビゲートすることになる。更に別のオプション、具体的には「実装されたファイルを管理する」、「Bitcasaを構成する」、「Bitcasaウェブサイト」、「Bitcasaに関して」、「Bitcasaフォルダを開く」、「Bitcasaを出る」がコンテクストメニューに示されている。「実装されたファイルを管理する」指令により、図22を参照して説明するようなユーザインタフェース要素が開く。「Bitcasaを構成する」指令により、図23を参照して説明するようなユーザインタフェース要素が開く。「Bitcasaフォルダを開く」指令により、ユーザは、実装ポイントで実装するためにそのユーザに利用可能である1つ又はそれよりも多くのクラウドファイルシステムのリストを閲覧することができる。ユーザは、次に、実装するCFS及びCFSを実装する実装ポイントを選択することができる。このようにして、ユーザは、各CFSが常に実装されてなくてもアクセスしたい利用可能な複数のクラウドファイルシステムを有することができる。一実施形態において、この指令により、利用可能なクラウドファイルシステムとのリンクを提示するウェブインタフェースが開く。別の実施形態において、この指令により、選択のためのユーザインタフェースアプリケーションが開く。「Bitcasaに関して」指令により、一実施形態において、「Bitcasa」という名称のCFSクライアントモジュールに関する情報が表示される。「Bitcasaを出る」指令により、CFSクライアントモジュールを出るようにCFSクライアントモジュールに指示する。出る前に、CFSクライアントモジュールは、まだアップロードされていないあらゆるファイルチャンクのアップロードを完了し、かつ全ての実装クラウドファイルシステムを実装解除するなどのいくつかのクリーンアップ機能を実行することができる。
[00159]図22は、本発明の実施形態によるクライアントデバイスでのクラウドファイルシステムアクセスを管理するためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示している。ユーザインタフェースは、クライアントデバイスに対して既知である、すなわち、現在実装されているか又は以前に実装されたクラウドファイルシステムのリストを示す。ユーザインタフェースは、更に、どのクラウドファイルシステムが現在実装されているか、及びどのクラウドファイルシステムが現在実装されていないかを示す接続された欄内のボタン要素を提示している。この下部は、迅速に各CFSの実装を切り換える機構をクライアントデバイスのユーザに与えるものである。
[00160]図23は、本発明の実施形態によるクライアントデバイス上のローカルキャッシュを管理するためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示している。ユーザインタフェースにより、クライアントデバイス上のユーザがクライアントデバイスのストレージシステムのどれだけをクラウドストレージシステムのローカルキャッシュに割り当てるべきであるかを設定する機構が得られる。具体的には、ユーザインタフェースは、クライアントデバイスのストレージシステムのストレージの量に変換されるローカルキャッシュストレージ閾値を百分率として設定するスライダを提示している。ユーザには、変更を保存し、すなわち、キャッシュをクリアし、すなわち、ローカルキャッシュからファイルチャンクを除去し、又は変更を無効にするボタンが更に提示されている。
[00161]図24は、本発明の実施形態によるクラウドファイルシステム内のフォルダにローカルファイルシステム内のフォルダを変換するためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示している。図24は、フォルダ、例えば、「bitcasacommon」のコンテンツを表示するファイルブラウザウインドウ、例えば、ファインダウインドウのスクリーンショットである。ユーザは、「Documents」というフォルダを選択し、そのフォルダ上のコンテクストメニューを呼び出している。現在、ユーザは「クラウド化する」という指令上に移動しており、起動させた時に、「クラウド化する」により、CFSクライアントモジュールは、上述したようにローカルストレージシステム内のフォルダからクラウドストレージシステム内のフォルダにDocumentsフォルダを変換することになる。
[00162]図25は、本発明の実施形態による例示的なコンピュータシステムのブロック図を示している。図25の例示的なコンピュータシステム2500を使用して、クライアントデバイス101A〜101D、クラウドストレージゲートウェイ245、又はクラウドストレージプール260内のエンティティを実施することができる。当業者は、これらのデバイスを実施するのに使用される他のコンピュータシステムが、より多く又はより少ない構成要素を有する場合があり、かつ本発明の実施形態に使用することができることを認識するであろう。
[00163]コンピュータシステム2500は、処理システム2515と、電源2520と、揮発性メモリ2525(例えば、ダブルデータレートランダムアクセスメモリ(DDR−RAM)、シングルデータレート(SDR)RAM)と、不揮発性メモリ2530(例えば、ハードドライブ、フラッシュメモリ、相変化メモリ(PCM))と結合されたバス2550を含む。処理システム2515は、更に、処理システムキャッシュ2510に結合することができる。処理システム2515は、揮発性メモリ2525及び/又は不揮発性メモリ2530から命令を取り出して、上述の作動を実行するための命令を実行することができる。バス2550は、上述の構成要素を互いに結合し、更に、ディスプレイコントローラ2570、1つ又はそれよりも多くの入出力デバイス2580(例えば、ネットワークインターフェイスカード、カーソルコントロール(例えば、マウス、トラックボール、タッチスクリーン、タッチパッドのような)、キーボードなど)、及び任意的に1つ又はそれよりも多くの無線送受信機(例えば、Bluetooth、WiFi、Iinfraredのような)を結合する。一実施形態において、ディスプレイコントローラ2570は、更に、ディスプレイデバイス2575に結合される。
[00164]図26は、本発明の実施形態によるクラウドファイルシステム内のストレージへの変換の前及び後にファイルシステム要素の部分集合を示すユーザインタフェースを示している。図は、ブロック2600及びブロック2650のファイルシステム要素(例えば、フォルダ)の同じ部分集合を示している。相違点は、ブロック2600では、ファイルシステム要素の全ては、操作されたクライアントデバイスのローカルストレージシステムに格納されるという点である。ブロック2650で、フォルダのうちの5つは、図9を参照して上述したように「クラウド化」済みである。これらのフォルダ(例えば、Documents、映画、Music、写真、及びソースコード)は、ローカルストレージシステム内のストレージからクラウドストレージシステム内のストレージに変換済みである。上述したように、ユーザには、これらのフォルダがクラウドストレージシステムにあるという表示が提示される(例えば、アイコンは、ユーザに表示を提示するように修正済みである)。更に、フォルダは、クライアントデバイスのオペレーティングシステム及びユーザに至る同じ論理経路に存在する。従って、この情報を要求するあらゆるプログラムは、前と同様に同じ位置でファイルのデータを要求することによってファイルにアクセスするが、この時点で、CFSクライアントモジュールが、クラウドストレージシステムに格納されたファイルへのアクセスの仲介物として作用する。
[00165]図27は、本発明の実施形態によるファイルシステムマニフェストの生成を含むクラウドファイルシステムにファイルを保存する方法の流れ図を示している。図27の実施形態は、図7の実施形態と類似のものである。図7に関して上述したように、チャンクのユーザ不可知暗号化及びファイルマニフェストの生成をブロック2700、2710、2715、及び2720で行う。更に、ファイルシステムマニフェスト内のファイルマニフェストID及びファイルマニフェスト暗号化キーの格納をブロック2725及び2730で図7に説明した方法により行う。更に、ファイルマニフェストをブロック2735で図7を参照して説明した同じ方法でクラウドストレージシステムに格納する。
[00166]ブロック2740で、CFSクライアントモジュールは、ファイルマニフェスト暗号化キー、暗号化ファイルマニフェスト、及びファイルマニフェストIDを生成する。一実施形態において、これらは、図5を参照して説明したもののようなユーザ不可知暗号化方法で生成される。更に、CFSクライアントモジュールは、ユーザ不可知非複製化を行ってクラウドストレージシステムに暗号化ファイルシステムマニフェストを格納する。ブロック2745で、CFSクライアントモジュールは、ユーザマニフェストを生成するか、又はユーザマニフェストが存在する場合はユーザマニフェストに追加する。CFSクライアントモジュールは、ユーザマニフェストにファイルシステムマニフェスト暗号化キー及びファイルシステムマニフェストIDを追加する。
[00167]一実施形態において、CFSクライアントモジュールは、更に、ユーザマニフェストにファイルシステムマニフェストに関連付けられたメタデータ上情報を追加する。メタデータ情報を平文として又は暗号文としてユーザマニフェスト内に格納することができる。メタデータは、クラウドファイルシステムの使用を可能するCFSクライアントモジュールによって使用されるあらゆる情報を含む。例えば、バックアップを目的としてCFSクライアントモジュールによって生成されたファイルマニフェストを含むファイルシステムマニフェストは、ファイルが生成されたコンピュータの固有の識別子を含むことができる。更に、メタデータは、指標情報、すなわち、そのファイルシステムマニフェストのクラウドストレージシステムに格納された指標を識別する情報を含むことができる。メタデータは、ユーザがクラウドファイルシステムを実装した実装ポイントを識別する情報を更に含むことができる。メタデータにより、別のCFSクライアントモジュールは、ユーザが別のクライアントにデバイスにログインした時に、そのクライアントデバイス上のCFSクライアントモジュールがユーザマニフェスト内に列挙されたクラウドファイルシステムを実装する方法を理解するように、どのようにかつどこでクラウドファイルシステムが生成されたかを理解することができる。
[00168]ブロック2750で、CFSクライアントモジュールは、クラウドストレージシステム内への格納のために暗号化されたユーザマニフェストを生成する。CFSクライアントモジュールは、ユーザに独特のキー又はパスワードでユーザマニフェストを暗号化する。CFSクライアントモジュールは、ブロック2760で、クラウドストレージシステムに暗号化ユーザマニフェストを格納する。暗号化ユーザマニフェストは、クラウドストレージシステムにユーザに関連して格納される。
[00169]図28は、本発明の実施形態によるクラウドストレージシステムにおいて新しいユーザを生成するためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示している。ユーザインタフェース2800は、ユーザによって埋められる複数の情報フィールドと共に示されている。例えば、ユーザインタフェース2800は、名2805、姓2810、電子メールアドレス2815及び確認電子メールアドレス2820、パスワード2825及び確認パスワード2830、チャレンジ質問2835、チャレンジ質問答え2840、クライアントデバイス2850の名称、及びライセンス契約チェックボックス2855といったフィールドを提示している。別の実施形態において、ユーザインタフェース2800は、1つ又はそれよりも多くの付加的なチャレンジ質問とチャレンジ質問答えのフィールド対を提示する。更に、ユーザインタフェース2800は、「新しいアカウントを作成する」ボタン2860及び「無効にする」ボタン2865を提示している。
[00170]ユーザがユーザインタフェース2800内の提示されたフィールドを埋めて、ユーザが「新しいアカウントを作成する」ボタン2860をクリックすると、CFSクライアントモジュールは、クラウドストレージシステムとの新しいユーザを生成する。CFSクライアントモジュールは、新しいユーザに関連付けるユーザキーを生成する。例えば、CFSクライアントモジュールは、日時、ユーザインタフェース入力、ファイルシステム情報、又は他のデータ又はこれらの入力の組合せを使用してランダムユーザキーを生成することができる。ユーザキーは、クラウドストレージシステム内への格納のためにユーザのパスワードにより暗号化される。ユーザキーは、クラウドストレージシステム内への格納のために1つ又はそれよりも多くのチャレンジ答えにより更に暗号化される。CFSクライアントモジュールは、新しいユーザを生成するためにクラウドストレージシステムに新しいユーザ情報を送信する。従って、複数の暗号化されたユーザキー、1つ又はそれよりも多くのチャレンジ質問、及びユーザの情報(電子メール、姓名)が、クラウドストレージシステムに送信される。別の実施形態において、ユーザのパスワードのハッシュが更に送信される。
[00171]新しいユーザが生成されると、クラウドストレージシステムは、共通のファイルシステムマニフェスト及び共通のファイルシステムマニフェストの暗号化キーを送信することができる。例えば、クラウドストレージシステムは、共通のファイルシステムマニフェストに追加することができる複数のパブリックドメイン動画、Musicファイル、写真、本、又はウェブサイトを含むことができる。CFSクライアントモジュールは、共通のファイルシステムマニフェスト及び共通のファイルシステムマニフェスト暗号化キーを受信して、そのユーザのための生成された新しいユーザマニフェストにその情報を追加する。CFSクライアントモジュールは、ユーザのキーを用いてユーザマニフェストを暗号化し、クラウドストレージシステムに情報をアップロードする。
[00172]ユーザが新しいクラウドファイルシステムを作成するか、フォルダを仮想化するか、又は既存のクラウドファイルシステム内のデータを変えると、ユーザマニフェストが変わることになる。ユーザマニフェストが変わると、ユーザマニフェストは、CFSクライアントモジュールによるアップロードの前にユーザのキーを用いて暗号化される。更に、ユーザがファイルシステムを別のユーザと共有することが望ましい場合に、CFSクライアントモジュールは、ファイルシステムマニフェストエントリで一時的なユーザマニフェストを生成し、他のユーザに既知であるキー又は他のユーザに供給されることになるキーを用いて一時的なユーザマニフェストを暗号化することができる。
[00173]図29は、本発明の実施形態による仮想フォルダを管理するためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示している。図29は、5つの仮想フォルダ2905A〜Eを列挙するユーザインタフェース2900を有する。各仮想フォルダは、クラウドストレージシステム内に格納されたデータに基づくフォルダ、例えば、FSMである。ユーザがCFSクライアントモジュールにログインした時に、クラウドストレージシステムは、CFSクライアントモジュールに暗号化されたタイプでクラウドストレージシステムに常駐するそのユーザのユーザマニフェストを提供する。上述したように、ユーザマニフェストは、ユーザがCFSクライアントモジュールにログインした後にCFSクライアントモジュールに利用可能であるユーザのキーを用いて暗号化される。従って、CFSクライアントモジュールは、ユーザのキーを用いてユーザマニフェストを暗号解読し、ユーザのクラウドファイルシステム、例えば、ユーザマニフェスト内に含まれたFSMのリストを取り出す。一実施形態において、各FSMは、そのFSM及びFSMに関連付けられた指定に向けて指定された実装ポイント又は実装ポイントを含むメタデータに関連付けられる。各同じFSMを実装する複数のクライアントデバイスを有するユーザに関して、そのFSMは、各クライアントデバイスに対して共通である1つの実装ポイントを列挙することができ、又は各クライアントデバイスに対して特定の実装ポイントを含む場合がある。
[00174]更に、各FSMに関連付けられたメタデータは、起動時にFSMを実装すべきか否かを示すことができる。FSMの実装を開始すると、CFSクライアントモジュールは、データが実装ポイントの位置で常駐するので実装ポイントに利用可能でないと決定することができる。CFSクライアントモジュールは、複数の方法でこの矛盾を調停することができる。最初に、CFSクライアントモジュールは、自動的に決定されたか又はユーザによって選択された異なる位置でFSMを実装することができる。更に、CFSクライアントモジュールは、矛盾発生中の位置でFSM及びクラウドストレージシステムにコンテンツを自動的に追加し、矛盾発生中の位置からデータを除去することができる。次に、CFSクライアントモジュールは、現在完全に利用可能であるFSMを矛盾発生中の位置に実装することができる。更に、上述の技術を参照すると、CFSクライアントモジュールは、フォルダの管理を引き継いて、このフォルダをCFS内に含まれたファイル/フォルダ、及びローカルストレージシステムに含まれたファイル/フォルダの混成フォルダとして提供することができる。
[00175]ユーザインタフェース2900により、ユーザは、これらの仮想フォルダ及び対応する構成オプションを管理することができる。ユーザは、仮想フォルダ2905A〜Eの1つを選択し、その仮想フォルダのオプションを管理することができる。ユーザは、ボックス2910に検査マークを付けて、起動時にその選択された仮想フォルダを実装することを選択することができる。ボタン2915により、ユーザは、フォルダの実装ポイントを移動することができ、一方、テキストボックス2920は、選択された仮想フォルダが実装されることになっている実装ポイントを示している。ボタン2925により、ユーザは、ローカル格納に向けて仮想フォルダにマーク付けすることができる。上述したように、CFSクライアントモジュールは、このボタンが押された時に、ローカルキャッシュに向けて仮想フォルダ内のファイルをマーク付けし、すなわち、その仮想フォルダ内のファイルを構成するファイルチャンクが確実にローカルにキャッシュに入れられるようにし、キャッシュ排除を防止するためにファイルを固定することになる。ボタン2929により、ユーザは、選択した仮想フォルダを自分のユーザマニフェストから除去することができる。テキスト区域2935は、所有者、アクセス許可、フォルダサイズ(仮想フォルダ内のデータ量)、ローカルキャッシュ内の仮想フォルダのデータ量のような選択されたFSM及びユーザのマニフェストに追加されたデータに関連付けられた複数の情報を表示する。ボタン2940により、ユーザは、仮想フォルダを接続してかつ接続を切る、すなわち、FSMを実装及び実装解除することができる。
[00176]図30は、本発明の実施形態によるクライアントデバイスのオペレーティングシステムに利用可能スペースの量を与えるためにクラウドファイルシステムクライアントモジュールによって実行される方法を示している。図30は、2つのクライアントデバイス3001A及び3001Bを示している。各クライアントデバイス3001A及び3001Bは、オペレーティングシステム3005及び3015を実行している。クライアントデバイス3001A及び3001Bに基づいて、これらのオペレーティングシステムは、同じオペレーティングシステム、同じオペレーティングシステムの異なるバージョン、又は異なるオペレーティングシステムとすることができる。図30は、実装されたCFS内の利用可能スペースの量を決定する各オペレーティングシステム3001A及び3001Bを示している。オペレーティングシステム3005は、クライアントデバイス3001A上に実装されたCFS内の利用可能スペースの量の要求3012を出す。要求は、クライアントデバイス3001A上で実行中であるCFSクライアントモジュール3010により処理される。CFSクライアントモジュール3010は、ブロック3030で、オペレーティングシステムに利用可能スペースを要求するために何のデータタイプを使用しているかを決定する。例えば、オペレーティングシステムは利用可能なスペース量を要求するために、符号なし32ビット整数(時に長整数と呼ぶ)を使用する場合がある。その場合は、CFSクライアントモジュール3035は、ブロック3035で、利用可能な4,295,967,295バイトの最大32ビット符号なし値を示す全てのビットが1に設定された32ビット整数を生成する。一実施形態において、CFSクライアントモジュール3010は、具体的にオペレーティングシステム3005のためにコンパイルされていたものであり、従って、CFSクライアントモジュール3010は、そのオペレーティングシステムのためのコンパイルに基づいて予想されたデータタイプを見ることができる。本発明の他の実施形態において、CFSクライアントモジュール3010は、要求3012からデータタイプを決定することができる。ブロック3035で最大値を生成すると、この値をオペレーティングシステム3005に戻す3024。
[00177]クライアントデバイス3001Bが、図20に示すファイルブラウザに対応するオペレーティングシステム3015を実行していると仮定すると、オペレーティングシステムは、「Common Movies」CFSの利用可能スペース3022の要求を発行済みである。クライアントデバイス3001B上で実行中であるクライアントモジュール3020は、ブロック3030及び3035で、データタイプを決定して最大値を生成済みである。図20では、示された利用可能スペース(図20の下部)は、17.59テラバイトであり、これは、17,592,186,044,416バイト、又は2の44乗である。従って、CFSクライアントモジュール3020は、3024に少なくとも17.59テラバイトの最大値を戻している。例えば、CFSクライアントモジュールは、オペレーティングシステムによってユーザに提示された17.59のテラバイトの最大値を戻していた場合があり、又はCFSクライアントモデルは、ユーザに表示する前にオペレーティングシステムによって切り捨てられた17.59テラバイトよりも大きい最大値を生成した場合がある。
[00178]本発明の実施形態によるクライアントデバイスのオペレーティングシステムに利用可能スペースの量を与える別のこのような方法は、最大ブロックサイズ及びCFSクライアントモジュールがオペレーティングシステムに戻すことができる利用可能なブロックの最大数を決定することである。従って、利用可能なスペース量を決定する要求があり次第、CFSクライアントモジュールは、利用可能スペースを示す最大ブロックサイズで可能にされるブロックの最大数の表示を戻す。
[00179]ユーザが、セキュアなウェブ形式でパスワードを入力し、サーバが、ウェブセッション中に表示するのに要求されたデータを迅速に暗号解読する場合に、サーバベースのデータ暗号解読及びアクセスを一時的に可能にすることができる。図31は、本発明の実施形態によるウェブファイルアクセスポータル及びクライアントデバイスによってアクセスされているクラウドストレージシステムを示している。図31では、クラウドストレージシステム3135は、ネットワーク3130と結合される。ネットワーク3130は、クライアントデバイス3101A〜3101Bのような複数のデバイス及びウェブファイルアクセスポータル3170でのクラウドストレージシステムとの接続性をもたらす。
[00180]クライアントデバイス3101Bは、本明細書に説明するようにCFSクライアントモジュールを実行するように示されている。クライアントデバイス3101Bは、クライアントデバイスオペレーティングシステムがプレビュー機能をもたらすと推定すると、クライアントデバイス3101B上に実装されたCFS内に格納されたファイルをプレビューすることができる。更に、クライアントデバイス3101Bは、実装されたCFSからファイルを開いて、CFSからローカルストレージシステムにファイルをコピーすることができる。上述したように、CFSクライアントモジュールは、メッセージEとして示された一連の指令をクラウドストレージシステム3135に出すことによってクライアントデバイス3101Bにこの機能性をもたらす。メッセージEは、ユーザによって要求されたゲット、すなわち、上述のユーザによってアクセスされたデータに基づいてクラウドストレージシステムからチャンクを得るために付与された指令を含む。クライアントデバイス3101B上で実行中であるCFSクライアントモジュールは、予想的ゲット指令、すなわち、CFSクライアントモジュールがユーザが直ちにアクセスすると断定しているデータに基づいてクラウドストレージシステムからチャンクを得るために付与された指令を更に出すことができる。CFSクライアントモジュールは、クライアントデバイス3101Bに特定のチャンク又はチャンクを送るために準備すべきことをクラウドストレージシステムに知らせるプリフェッチ指令をクラウドストレージシステムに更に出すことができる。クライアントデバイス3101B上で実行中であるCFSクライアントモジュールにより出されたゲット指令(ユーザによって要求されたか又は予想的である)によって要求された暗号化されたチャンクを含むメッセージFが、クラウドストレージシステムからクライアントデバイスまで示されている。
[00181]ウェブファイルアクセスポータル3170は、CFSクライアントモジュールを提供するか否かに関わらず、ユーザがクライアントデバイス3101Aでクラウドファイルシステム内のファイルにアクセスする機構をもたらす。例えば、ユーザは、公開端末又は共有コンピュータに到着して、CFSクライアントモジュールにログインすることなく又は一部の場合にCFSクライアントモジュールを提供することなく、CFSから1つ又は複数のファイルにアクセスしたいと思う場合がある。ウェブファイルアクセスポータル3170は、ウェブファイルアクセスポータル3170にパスワード及びユーザキーを露出するという代償を払ってウェブインタフェースを通じて提示されるウェブファイル管理マネージャを通じてデータにアクセスするオプションをユーザに与える。
[00182]従って、ユーザは、クライアントデバイス3101Aでウェブブラウザセッションを開始して、ウェブファイルアクセスポータル3170によって示されたログインページまでナビゲートする。ユーザには、ログイン情報、すなわち、ユーザ名/電子メール及びパスワードでログインするために認証ページが提示されている。更に、ユーザには、ウェブファイルアクセスポータル3170がユーザの暗号化ユーザマニフェストにアクセスすることを可能にするために、ウェブポータルの使用にはウェブファイルアクセスポータル3170にユーザキー及びパスワードを露出することが必要であることに同意するなどの同意しなければならないサービス条項が提示される場合がある。
[00183]ウェブファイルアクセスポータル3170の認証時に、ウェブファイルアクセスポータル3170は、クラウドストレージシステム3135からユーザのユーザマニフェスト及びユーザの暗号化されたユーザキーを取り出す。ウェブファイルアクセスポータル3170は、ユーザのパスワードを使用してユーザのキーを暗号解読する。ウェブファイルアクセスポータル3170は、この時点でユーザのキーを用いてユーザのユーザマニフェストを暗号解読することができる。上述したように、ユーザマニフェストは、利用可能なクラウドファイルシステムのリスト、例えば、FSMのリスト、及び各FSMを暗号解読する対応する暗号化キーと共に対応するメタデータを含む。CFSのリストを使用して、ウェブファイルアクセスポータル3170は、ユーザがCFSを調査することを可能にするウェブ型ユーザインタフェースを生成し、ユーザがアクセスすることを望むファイルの位置を識別することができる。
[00184]ウェブファイルアクセスポータル3170は、バッファ又は仲介物を通じた経路として作用することによってユーザにセキュリティをもたらすが、クラウドストレージシステム3135の非暗号化ローカルキャッシュを維持しない。存在するセキュリティ上の懸念事項に基づいて、ウェブファイルアクセスポータル3170は、クラウドストレージシステム3135の暗号化されたチャンクのローカルキャッシュにならない場合さえある。従って、ウェブファイルアクセスポータル3170は、多くの点で修正されたCFSクライアントモジュールであるCFSウェブアクセスモジュールを実行する。CFSウェブアクセスモジュールは、ユーザによって要求されたゲット及び任意的なプリフェッチ指令を含むメッセージAをクラウドストレージシステム3135に出す。セキュリティモデルに基づいて、CFSウェブアクセスモジュールは、ウェブファイルアクセスポータル3170上に位置付けられたユーザデータの量を最小にしようとして、クラウドストレージシステムに予想的ゲットを出すことさえしない。クライアントデバイス3101Bへの通信の場合と同様に、クラウドストレージシステム3135は、ウェブファイルアクセスポータル3170に暗号化されたチャンクを通信する。
[00185]ユーザがCFS内のフォルダを閲覧すると、最終的には、ユーザは、自分がアクセス又はダウンロードしたいファイルに来ることになる。ウェブファイルブラウザでファイルを選択した時に、ウェブファイルアクセスポータルは、そのCFSのFSMから対応するファイルマニフェストを取り出して、FSM内に格納された暗号化キーを用いてFMを暗号解読することになる。上述したように、それによってウェブファイルアクセスポータル3170にそのファイルを構成するファイルチャンク、対応するメタデータ、及び暗号化キーのリストが与えられることになる。この情報を使用して、ウェブファイルアクセスポータル3170は、ウェブファイルアクセスポータル3170上でファイルの暗号解読されたバージョンを生成し、アクセスされたファイルのタイプに基づいて内蔵型プレビューを含むことができる情報画面を生成する。情報画面は、更に、ユーザにファイルをダウンロードする機会を与える。従って、クライアントデバイス3101Aは、フォルダ及びファイルデータの要求でウェブファイルアクセスポータル3170にいくつかのメッセージCを出す。ウェブファイルアクセスポータル3170は、ウェブファイルマネージャに暗号解読されたフォルダ及びファイル情報を含むメッセージDを送る。ッセージD内の暗号解読されたフォルダ及びファイル情報への言及は、クライアントデバイス3101Aにウェブファイルアクセスポータル3170から送信された情報が本発明の実施形態に説明した暗号化原理に従って暗号化されはしないという事実を指すことに注意することが重要である。しかし、ウェブブラウザ及びサーバは、従来の技術(例えば、それらの技術に従ってセキュアな通信をもたらすハイパーテキスト転送プロトコルセキュア(「HTTPS」))を使用する。
[00186]図32は、本発明の実施形態によるクラウドストレージシステムにアクセスするウェブファイルアクセスポータルによって提供されるウェブファイルブラウザインタフェースを示している。ウェブファイルアクセスポータルは、インタフェース3200をユーザに提示する。ユーザインタフェース3200は、クラウドストレージシステムとのウェブファイルアクセスポータルによるユーザの認証が成功するとユーザに提示される。図31を参照して上述したように、ウェブファイルアクセスポータルは、ユーザのユーザキーを使用して、ユーザのユーザマニフェスト内に含まれた情報を取り出して暗号解読する。インタフェース3200は、ヘルプアイコン、メールアイコン、ユーザ管理アイコン及び環境アイコンのような複数のユーザインタフェース要素を含む。更に、ウェブファイルアクセスポータルは、検索ボックス3230をユーザに提示する。検索ボックス3230内のテキストを入力すると、ウェブファイルアクセスポータルは、ボックス3230内に入力された検索基準に適合するファイルを見つけるためにファイル及びサブフォルダを通じて再帰的に反復する。検索結果は、ウェブファイルブラウザ3240としてユーザに提示される。ユーザがユーザインタフェース3200にログインした時に、ユーザには、ウェブファイルブラウザ3240でクラウドファイルシステムのリストが提示される。ユーザがCFSを選択すると、ウェブファイルアクセスポータルは、CFS内に含まれたファイル及びフォルダを決定し、ウェブファイルブラウザ3240で階層的にユーザに提示する。ユーザがウェブファイルブラウザ3240でファイルを選択した時に、ウェブファイルアクセスポータルは、クラウドストレージシステムから対応するFMを取り出して、FSMに位置付けられた暗号化キーを使用してFMを暗号解読する。FM内の情報を使用して、ウェブファイルアクセスポータルは、選択されたファイルを構成するクラウドストレージシステムから暗号化ファイルチャンクを取り出して、FMに位置付けられた暗号化キーを使用してそれらのチャンクを暗号解読することができる。この情報を使用して、ウェブファイルアクセスポータルは、ファイルを再構成し、ファイルタイプに対応するプレビュー区域3220、ファイル情報領域3250、及びダウンロードボタン3260を生成する。
[00187]図33は、本発明の実施形態によるデータ構造間の関係を示すブロック図を示している。図33は、水平破線よって分離された2つの区分に示している。図33の上半分又はA半分は、クラウドストレージシステム3310上に格納されたデータの例示的なチャンクを示し、一方、図33の下半分、すなわち、B半分は、それらのチャンクが含むデータ構造及びそれらのデータ構造間の関係を示している。
[00188]A半分において、クライアントデバイス3301Aは、CFSクライアントモジュールを実行しており、ユーザ3302が記録され、3つのCFSが実装される。第1のCFSは、/home/docsの実装ポイントに実装されたFSM Aとして示されている。第2のCFSは、/home/moviesの実装ポイントに実装されたFSM Bとして示されている。第3のCFSは、/ホーム/Musicの実装ポイントに実装されたFSM Cとして示されている。ユーザマニフェスト3320は、3つのFSMチャンク、すなわち、FSM CHUNK A 3335A、FSM CHUNK B 3335B、及びFSM CHUNK C 3335Cに関連するように示されており、FSM CHUNK 3335Aは、3つのFMチャンク、すなわち、FM CHUNK A 3340A、FM CHUNK B 3340C、及びFM CHUNK B 3340Cに関連している。FSM CHUNK B 3335Bは、2つのFMチャンク、すなわち、FM CHUNK B 3340C及びFM CHUNK D 3340Dに関連している。FSM CHUNK C 3335Cは、2つのFMチャンク、すなわち、FM CHUNK E 3340E及びFM CHUNK F 3340Fに関連している。FM CHUNK A 3340Aは、3つのファイルチャンク、すなわち、FILE CHUNK A 3345A、FILE CHUNK B 3345B、及びFILE CHUNK C 3345Cに関連している。FSM CHUNK B 3340Bは、2つのファイルチャンク、すなわち、FILE CHUNK C 3345C及びFILE CHUNK E 3345Eに関連している。FM CHUNK C 3340Cは、1つのファイルチャンク又はFILE CHUNK D 3345Dに関連している。FM CHUNK D 3340Dは、2つのファイルチャンク、すなわち、FILE CHUNK E 3345E及びFILE CHUNK G 3345Gに関連している。FM CHUNK A3340Eは、3つのファイルチャンク、すなわち、FILE CHUNK G 3345G、FILE CHUNK H 3345H、及びFILE CHUNK I 3345Iに関連している。FM CHUNK F 3340Fは、1つのファイルチャンク又はFILE CHUNK F 3345Fに関連している。
[00189]図33の半分Aに示すように、いくつかのFMチャンク、例えば、FM CHUNK C3340Cは、1つよりも多いFSMに関連している。更に、いくつかのファイルチャンク、例えば、FILE CHUNK C、FILE CHUNK E、及びFILE CHUNK Gは、1つよりも多いFMチャンクに関連している。これは、FSMにより表されるCFSが、FSMにおいてFMにより表される別のCFSと同じファイルを含むことができるという点で説明することができる。この場合に、CFS A及びBは、両方ともFM Cにより表されるファイルを含む。同じものにおいて、1つよりも多いファイルは、それらが共通データチャンクを含む場合に、同じファイルチャンクを含むことができる。図33では、FM CHUNK A 3340A及びFM CHUNK B 3340Bにより表されるファイルは、FILE CHUNK C 3345Cにより表される共通データチャンクを含む。FM CHUNK B 3340B及びFM CHUNK D 3340Dにより表されるファイルは、FILE CHUNK E 3345Eにより表される共通データチャンクを含む。FM CHUNK D 3340D及びFM CHUNK E 3340Eにより表されるファイルは、FILE CHUNK G 3345Gにより表される共通データチャンクを含む。
[00190]半分Aは、クラウドストレージシステムに格納されたチャンク及びそれらのチャンクがどのように互いに関連しているかを示すが、半分Bは、それらのチャンクが構成するデータ構造及びそれらのデータ構造間の関係を示している。半分Bにおいて、同じユーザ3302が、CFSクライアントモジュールにログインしており、同じCFSが同じ位置に実装された同じクライアントデバイス3301Aが示されている。ユーザマニフェスト3320は、FSMにより表されるCFSがどのようにその特定のクライアントデバイス3301A上でCFSクライアントモジュールにより処理されるべきかを示すクライアントデバイス3301Aに関連付けられたプロフィールを含む。この場合に、FSM Aは、/home/docsに実装され、FSM Bは、/home/moviesに実装され、かつFSM Cは、/home/musicに実装されることを示している。
[00191]図33の半分Bは、3つのFSM、すなわち、FSM A 3355A、FSM B 3355B、及びFSM C 3355Cに関連してユーザマニフェスト3320を示している。FSM A 3355Aは、3つのFM、すなわち、FM A 3360A、FM B 3360B、及びFM C 3360Cに関連している。FSM B 3355Bは、2つのFM、すなわち、FM C 3360C及びFM D 3360Dに関連している。FSM C 3355Cは、2つのFM、すなわち、FM E 3360E及びFM F 3360Fに関連している。各FM A〜F 3360Aは、ファイルA〜F 3365Aに関連している。
[00192]図34は、本発明の実施形態による2つのクライアントデバイスに使用される単一のユーザマニフェストのデータ構造間の関係を示すブロック図を示している。図33と同様に、図34は、同じユーザ3402がCFSクライアントモジュールにログインしており、同じCFSが同じ位置に実装された同じクライアントデバイス3401Aを示している。ユーザマニフェスト3430は、FSMにより表されるCFSがどのようにその特定のクライアントデバイス3401A上でCFSクライアントモジュールにより処理されるべきかを示すクライアントデバイス3401Aに関連付けられたプロフィール、すなわち、PROFILE3401Aを含む。この場合に、FSM Aは、/home/docsに実装され、FSM Bは、/home/moviesに実装され、FSM Cは、/home/musicに実装されることを示している。ユーザマニフェスト、FSM、FM、及びファイルの図34に提示するのと同じ例示的な関係が図34に示されている。
[00193]更に、図34は、同じユーザ3402がログインしている第2のクライアントデバイス3401Bを示している。ユーザマニフェスト3430は、更に、クライアントデバイス3401Bがどのようにユーザの3402のユーザマニフェスト3430を利用するように構成されるかを示すプロフィール情報PROFILE 3401Bを含む。図34では、クライアントデバイス3401Bは、クライアントデバイス3401Aによって使用されるように、/home/moviesの類似の実装ポイントでFSM Bを実装するように示されている。クライアントデバイス3401Bは、クライアントデバイス3401Aと異なる実装ポイントでFSM Cを実装するように示されており、具体的には、FSM Cは、/share/musicの実装ポイントに実装される。図34に示すように、ユーザ3402は、FSM Aがクライアントデバイス3401B上に実装されないようにユーザマニフェスト3430を選択又は構成している。図29を参照して図示のように、ユーザ3402は、管理画面を利用して、その後の時点で望ましい実装ポイントでFSM Aを実装することができる。
[00194]図35は、本発明の実施形態による2つのクライアントデバイスに使用される2つのユーザマニフェストのデータ構造間の関係を示すブロック図を示している。
[00195]図33と同様に、図35は、同じユーザ3502がCFSクライアントモジュールにログインしており、同じCFSが同じ位置に実装された同じクライアントデバイス3501Aを示している。ユーザマニフェスト3530は、FSMにより表されるCFSがどのようにその特定のクライアントデバイス3401A上でCFSクライアントモジュールにより処理されるべきかを示すクライアントデバイス3501Aに関連付けられたプロフィール、すなわち、PROFILE3501Aを含む。この場合に、FSM Aは、/home/docsに実装され、FSM Bは、/home/moviesに実装され、FSM Cは、/home/musicに実装されることを示している。ユーザマニフェスト、FSM、FM、及びファイルの図33に提示するのと同じ例示的な関係が図35に示されている。
[00196]図35は、更に、ユーザ3503がログインしている第2のクライアントデバイス3501Bを示している。ユーザ3503は、プロフィール3501Bに基づいて、C:\PICTURESの実装ポイントでユーザが実装しなければならないFSM D 3525Dを有することを示すユーザマニフェスト3521を有する。FSM D 3525Dは、4つのFM、すなわち、FM D 3530D、FM G 3530G、FM H 3530H、及びFM I 3530Iに関連している。FM D,G〜I 3530D,G〜Iは、それぞれ、ファイルD,G〜I 3535D,G〜Iに関連している。図35に示すように、ユーザ3502は、FMD 3530Dにも関連のFSM B 3525Bを有する。従って、2つのユーザが独立したFSMを有する場合があるが、それらのFSMは、同一ファイルを含む場合があり、例えば、2つのユーザが同じソースから同じファイルを保存した、すなわち、あり得ない場合があるが、独立して同一ファイルを生成した場合であることが明らかである。FMは、ファイルの名称又は位置ではなく、ファイルのコンテンツに基づいており、従って、2人のユーザは、異なる名称及び/又は対応するFSM内の異なる位置で同じファイルを有する可能性があるが、同じFMをもたらすことに注意すべきである。
[00197]図35は、ポイントAで、FSM B 3525Bがユーザ3503とユーザ3502により共有されることを示している。ユーザ3502は、図7を参照して上述したものと同様に、マルチユーザの、すなわち、ライブの共有としてFSM B 3525Bを共有することに決定したわけである。従って、FSM B 3525Bにおいてユーザ3502又は3503よって行われた変更は、クライアントデバイス3301A及び3301Bにおいて反映される。ユーザ3503は、FSM B 3525BがC:\MOVIESに実装されなければならないことを示すPROFILE 3503を用いて自分のユーザマニフェスト3521にFSM B 3525Bを追加している。
[00198]ポイントBは、ユーザ3502がFSM C 3525Cのスナップショットをユーザ3503と共有することを示している。FSM C 3525CがベースFSM及びFSMの既存のバージョンを構成する複数の変更で構成されたライブFSMである場合に、クライアントデバイス3501A上のCFSクライアントモジュールは、FSM C 3525Cの既存のコピーを生成して、クラウドストレージシステムにそのコピーを格納する。クライアントデバイス3501A上で実行中であるCFSクライアントモジュールは、ユーザ3503と共有されたFSM C 3525Cのコピーを利用するために、クライアントデバイス3501B上で実行中であるCFSクライアントモジュールに向けて、識別情報及び暗号化情報を含む情報を生成する。
[00199]従って、ユーザ3503は、FSM C 3525Cのスナップショットを識別する情報を受信して、C:\¥MUSICの実装ポイントでCFSを実装する。FSMがFSM C 3525Cのスナップショットであり、FSMのライブ共有ではないので、ユーザ3502又はユーザ3503よって行われたあらゆる変更は、他のユーザのクライアントデバイス上では反映されず、すなわち、変更により、異なるFSMが作成される。従って、FSM C 3525Cのスナップショットは、ファイルJ 3535Jに関連しているFM J 3530Jの追加を伴うFSM E 3525Eように示されている。上述したように、これはスナップショット共有であるので、FM J 3530Jの追加は、2つのFSM C及びEが内部のデータの変更時に発散するのでFSM C 3525Cにおいて反映されない。ファイルの追加、ファイルの排除、及びファイルの修正により、全てが異なるFSMをもたらすことが当業者に明らかであろう。
[00200]スナップショット共有により、ユーザは、簡単にファイルを別のクラウドストレージシステムユーザと共有することができる。例えば、ファイルを共有する既存のウェブサービスのユーザは、ウェブブラウザセッション又は他のクライアントアプリケーションを開くことをユーザに要求する。ユーザは、次に、ファイルアップロード処理を開始し、ユーザのクライアントデバイス上の望ましいフォルダまでナビゲートしなければならない。ユーザは、次に、望ましいファイルを選択してアップロードを開始する。アップロードが完了した状態で、ユーザは、アップロードされたファイルまでナビゲートするリンクを受信する別のユーザと選択されたファイルを共有することに決定することができ、かつそれらのファイルを閲覧及び/又はダウンロードすることを選択することができる。
[00201]スナップショット共有を用いて、ユーザは、オペレーティングシステムのファイルブラウザを開いて、共有したいファイルを含むフォルダをナビゲートする。ユーザは、望ましいフォルダ上のコンテクストメニューを開始して、フォルダを別のユーザと共有する指令、例えば、図24に示すコンテクストメニューに示す「共有する...」指令を開始する。ユーザは、次に、フォルダを共有するクラウドストレージシステムの別のユーザを選択する。フォルダがCFSの実装ポイントである場合に、CFSクライアントモジュールは、FSM ID及びFSM暗号化キーを他のユーザと共有する。フォルダがCFSの実装ポイントではない場合に、CFSクライアントモジュールは、選択したフォルダ内に含まれたファイル及びフォルダを含むFSMを生成することができる。一実施形態において、CFSクライアントモジュールは、フォルダが共有されたユーザに既知であるキー又はフォルダが共有されたユーザよって生成することができるキーを用いてFSM ID及びFSM暗号化キーを暗号化する。従って、共有されたフォルダの受信側は、指示によってそのユーザのユーザマニフェストに追加されたFSM ID及びFSM暗号化キーを受信する。受信側は、次に、クライアントデバイス上で共有されたFSMを実装して、オペレーティングシステム内のファイル及びフォルダにアクセスする通常の手段を通じて共有されたファイル及びフォルダにアクセスすることを選択することができる。
[00202]図36は、本発明の実施形態によりユーザにファイル、フォルダ、及びファイルシステムの復元オプションを提供するためにCFSクライアントモジュールによって提供されるインタフェースを示している。図36は、ユーザがCFSクライアントモジュールにログインしているクライアントデバイス内に常駐するファイルA 3605を含むフォルダX 3600を含む。CFSクライアントモジュールは、クライアントデバイスのユーザがフォルダX及びファイルAの変更を保存するとフォルダX 3600のバージョン及びファイルA 3605のバージョンのバックアップを維持するように構成される。ユーザは、選択フォルダ又はファイル上のコンテクストメニュー3610を開始して復元指令を選択する。この復元指令は、別々の復元指令画面を起動し、すなわち、バージョンメニュー3615を提示することができる。図36は、半分に分割され、上部Aは、本発明の実施形態による1組のバージョン化ファイルを示し、下部Bは、本発明の実施形態による1組のバージョン化フォルダを示している。
[00203]半分Aにおいて、図36は、FOLDER X FSM A 3625Aに関連付けられたユーザマニフェスト3620を示している。FSM A 3625Aは、ファイルAに関連付けられたエントリ及びそのファイルの保存バージョンとファイルAをリンクするメタデータを含む。図36では、バージョン1〜Gは、FM A〜FM G 3630A〜Gに関連している。各FM A〜G 3630A〜Gは、クラウドストレージシステムに格納されたファイルのバージョン、すなわち、ファイルAバージョン1〜G 3635A〜Gに関連している。
[00204]半分Bにおいて、図36は、FOLDER X 3600に関連付けられたユーザマニフェスト3620を示している。FOLDER Xは、ユーザマニフェスト3620においてリンクされたFSMにより表されるCFSである。ユーザマニフェスト3620は、FOLDER X 3600とのリンク及びFOLDER Xの保存されたバージョンを表す複数のFSMを含むFOLDER X 3600に関連付けられたメタデータを含む。これは、FOLDER X VERSION 1〜C FSM A〜B 3625 A〜Cなどに示されている。各FSM 3625Aは、FOLDER Xのバージョンが保存された時にFOLDER X 3600に存在したFMにリンクされる。FOLDER X VERSION 1 FSM A 3625Aは、3つのファイル、すなわち、各対応するファイル、であるFILE A VERSION 1 3635A、FILE B VERSION 1 3635H、及びFILE C VERSION 3 3635Iに関連付けられたFM A 3630A、FM H 3630H、及びFM I 3630Iにリンクされる。FOLDER×VERSION 2 FSM B 3625Bは、2つのファイル、すなわち、各対応するファイルであるFILE C VERSION 3 3635I及びFILE A VERSION 1 3635Aに関連付けられたFM I 3630I及びFM B 3630Bにリンクされる。FOLDER X VERSION C FSM C 3625Cは、3つのファイル、すなわち、各対応するファイルであるFILE C VERSION 3 3635I 、FILE A VERSION 2 3635B、FILE A VERSION G 3635Gに関連付けられたFM I 3630I、FM B 3630B、FM G 3630Gにリンクされる。
[00205]従って、同じフォルダ及びファイルの複数のバージョンをFSM内に列挙して、バージョンを各保存されたファイル及びフォルダに関連付けることができ、更に、CFSクライアントモジュールは、ファイル又はフォルダが更に別の復元に向けてそこから保存されたクライアントデバイスの識別子を関連付けることができる。
[00206]図37は、クラウドストレージシステムに格納されたデータへのローカルストレージシステムに格納されたデータの移行を示すブロック図を示している。この図は、2つの半分に分割され、上半分Aは、両方ともローカルストレージシステムに格納された2つのフォルダを示し、下半分Bは、ローカルストレージシステムに格納された1つのフォルダ及びクラウドストレージシステムに格納された1つのフォルダを示している。
[00207]両方の半分において、図37は、クライアントデバイス上でローカルストレージシステムをもたらすローカルドライブ3700を示し、ユーザがアクセス可能なフォルダ及びファイルをクライアントデバイスのユーザに提示するローカルファイルシステム3710が存在する。両方の半分において、ユーザは、フォルダA内のファイル及びフォルダB内のファイルへアクセス可能である。
[00208]上半分Aにおいて、フォルダA及びBのデータは、ローカルドライブ3700上のローカルストレージシステムに格納される。クライアントデバイス上のCFSクライアントモジュールは、バックアップFSM 3720を含むユーザマニフェスト3715を維持している。CFSクライアントモジュールは、ローカルストレージシステム内の全てのファイルの自動バックアップを作成し、従って、クラウドストレージシステム3705にフォルダA及びBのファイル及びフォルダを追加している。従って、ユーザマニフェスト3715は、複数のFM、すなわち、フォルダAファイルマニフェスト3730及びフォルダBファイルマニフェスト3735に関連しているバックアップFSM 3720に関連しており、各ファイルマニフェストは、対応するファイルFILE A1〜AX 3740及びB1〜BX 3750に関連している。
[00209]下半分Bにおいて、CFSクライアントモジュールは、自動バックアップを伴うローカルストレージシステム内のストレージからローカルストレージなしのクラウドストレージシステム3705内のストレージにフォルダBを移行したところであり、フォルダBの移行は、ドライブスペースがなくなっているローカルドライブ3700に応答して自動である場合があり、又はユーザによって開始される場合がある。ローカルドライブ3700は、ローカルストレージシステムを含む区分及びクラウドストレージシステムのローカルキャッシュを含む区分を有する。フォルダAは、まだローカルストレージシステムにあるので、フォルダAのデータの全てがローカルドライブ3700上に常駐する。しかし、フォルダBは、現在クラウドストレージシステムに格納されたので、ファイルB1及びファイルB7を含むキャッシュに入れられたデータの一部だけは、クラウドストレージシステムのローカルキャッシュに常駐する。フォルダBデータのローカルコピーが除去されて、CFSクライアントモジュールは、その代わりにフォルダBエントリを含むクラウドFSM 3760を実装した状態である。クラウドFSM 3760は、クラウドストレージシステムに常駐していた全てのフォルダBファイルマニフェスト3735を含む。この移行は、極めて迅速でクライアントデバイスのユーザに対して透過的であり、その理由は、フォルダBを含む情報は、自動バックアップの一部としてクラウドストレージシステム3705内に常駐していたからである。
[00210]図38は、本発明の実施形態によるローカルストレージシステム内のストレージからクラウドストレージシステム内のストレージへの移行の方法のブロック図を示している。ブロック3800で、CFSクライアントモジュールは、クラウドストレージシステムにおいてローカルストレージシステムをバックアップする。ブロック3810で、CFSクライアントモジュールは、クラウドストレージシステム内のストレージへのフォルダの移行を開始する。例えば、CFSクライアントモジュールは、クライアントデバイスがディスクスペース又はその特定のファイルが不足してきているか、又は特定のファイル又は一部のファイルがアクセスがまれであり、かつクライアントデバイス上でこれらのファイルを格納する理由がないことを認識することができる。ブロック3820で、CFクライアントモジュールは、ユーザが仮想化選択、すなわち、クラウドストレージシステムに移行するフォルダ又はドライブを選択するか、又はそれ自体で選択される仮想化を生成することを可能にするように決定する。ブロック3840で、CFSクライアントモジュールは、ユーザに供給されたブラウザユーザインタフェース要素から仮想化選択を受信する。ブロック3840で、CFSクライアントモジュールは、ローカルストレージシステムにおいてフォルダ及びドライブに向けて自動的に仮想化選択を決定する。ブロック3850で、CFSクライアントモジュールは、仮想化選択に向けてFSMを生成し、ブロック3860でユーザのユーザマニフェストにFSMを追加する。ブロック3870で、CFSクライアントモジュールは、ローカルストレージシステムから仮想化選択を除去し、ブロック3880で、仮想化選択が仮想ファイルシステムに位置付けられた位置にFSMを実装する。
[00211]図39は、本発明の実施形態によるクラウドストレージシステムのデータにアクセスする複数のユーザ及び機械を示すブロック図を示している。図39は、複数のクラウドファイルシステムを含むクラウドストレージシステム3900を示している。図39は、4つのクライアントデバイス3905、3910、3915、及び3920を示している。各クライアントデバイスは、ローカルドライブ及びOSファイルブラウザを含み、各ローカルドライブは、ローカルストレージシステムのための部分及びクラウドストレージシステムのローカルキャッシュのための部分を含む。
[00212]クライアントデバイス3905は、ユーザXに関連付けられた第1の機械であり、OSファイルブラウザは、OSファイルブラウザA〜D内の4つのフォルダを示している。フォルダAは、クラウドストレージシステムに格納されておらず、そのフォルダのデータの全ては、ローカルストレージシステムにあるように示されている。フォルダB〜Dは、クラウドストレージシステム3900内に格納され、各B’、C’、及びD’の一部は、クラウドストレージシステムのローカルキャッシュにあるように示されている。フォルダB及びフォルダCは、クライアントデバイス3905で始まって、そのデバイスからクラウドストレージシステムに入れられたのである。フォルダDは、そのプロバイダのユーザの全てにクラウドストレージシステム3900のサービスプロバイダによって供給された共通データである。従って、フォルダDは、クラウドストレージシステム3900から引き抜かれ、更に、フォルダD内に含まれているデータの全ては、SIZE Dになる。
[00213]クライアントデバイス3910は、ユーザXに関連付けられた第2の機械であり、OSファイルブラウザは、OSファイルブラウザで2つのフォルダ、すなわち、フォルダF及びフォルダBを示している。フォルダFは、クラウドストレージシステムに格納されておらず、そのフォルダのデータの全ては、ローカルストレージシステムに示されている。フォルダBは、クライアントデバイス3905で始まり、従って、クラウドストレージシステム3900から引き抜かれ、そのデータの一部は、クラウドストレージシステムのローカルキャッシュに位置付けられる。クライアントデバイス3910は、フォルダBに情報を更に追加する場合があり、従って、クラウドストレージシステム3900にそのデータを転送しなければならず、クラウドストレージシステム3900は、クライアントデバイス3905に変更されたFSMを転送する。ローカルドライブは、量SIZE X2のデータを格納することができる。
[00214]クライアントデバイス3915は、ユーザXに関連付けられた唯一の機械である。ユーザYは、ユーザXに幾分関連している。OSファイルブラウザは、OSファイルブラウザで3つのフォルダ、すなわち、フォルダG、フォルダD、及びフォルダCを示している。図39のポイントDで、ユーザXは、フォルダCをユーザYと共有していた。従って、フォルダCは、クラウドストレージシステム3900からクライアントデバイス3915に転送され、そのうちの部分C’だけが、クライアントデバイス3915上のクラウドストレージシステムのローカルキャッシュ内に常駐する。フォルダGは、クライアントデバイス3915のローカルストレージシステム内だけに含まれ、一方、フォルダDは、全てのユーザに利用可能な共通データとしてクラウドストレージシステム3900から転送される。ローカルドライブは、量SIZE Y1のデータを格納することができる。
[00215]クライアントデバイス3920は、ユーザXに関連付けられた唯一の機械である。ユーザZは、ユーザX及びユーザYに無関係である。OSファイルブラウザは、OSファイルブラウザ内の2つのフォルダ、すなわち、フォルダH及びフォルダDを示している。フォルダHは、クラウドストレージシステム3900内のバックアップと共にクライアントデバイス3920のローカルストレージシステムに格納される。フォルダDは、全てのユーザに利用可能な共通データとしてクラウドストレージシステム3900から転送される。従って、クライアントデバイス3920は、クラウドストレージシステムにフォルダHのデータを転送し、クラウドからフォルダDのデータを引き抜く。ローカルドライブは、量SIZE Z1のデータを格納することができる。
[00216]クライアントデバイスのローカルドライブは、SIZE X1、SIZE X2、SIZE Y1、及びSIZE Z1と指定された量のデータを格納することができる。データの一部だけがフォルダD、フォルダC、及びフォルダBからいずれかの所定の時間に必要であるので、クライアントデバイスは、クラウドストレージシステムに含まれたデータの全てを格納することができる必要はない。従って、たとえユーザXがフォルダD内の全てのデータにアクセス可能であるとしても、SIZE Dは、付加的なデータのスペースを作るためにファイルを手動で除去することなく、SIZE X1より大きいとすることができる。実際には、SIZE Dは、SIZE X1の100倍、SIZE X1の1000倍、又はSIZE X1の1,000,000倍とさえすることができる。SIZE Dは、クライアントデバイス3905上のオペレーティングシステムがサポートするサイズよりも大きいとすることができる。
[00217]図40は、本発明の実施形態により取り出されることになるファイルチャンクの優先待ち行列を示すブロック図を示している。図40では、クライアントデバイスは、クラウドストレージシステム4015と結合される。クライアントデバイスは、CFS内に格納された2つのファイル、すなわち、ファイルA 4001及びファイルB 4002にアクセスしている。ファイルA 4001は、1組の暗号化ファイルチャンク4003A〜4003Nで構成される。一方、ファイルB 4002は、1組の暗号化ファイルチャンク4004A〜4004Fで構成される。図40では、クライアントデバイスは、ローカルストレージシステムのための部分及びクラウドストレージシステムのローカルキャッシュのための部分を含むローカルドライブ4000を有する。クラウドストレージシステムのローカルキャッシュは、4001からのキャッシュに入れられた暗号化ファイルチャンク、具体的には、チャンク4003A、4003B、4003C、4003E、4003G、及び4003Nを有する。
[00218]ファイルA 4001の1組の暗号化ファイルチャンク4003A〜4003Nは、チャンク4003A−4003G及び4003Nを示す簡略化された形に示されているが、チャンク4003D及び4003Fは、それらのチャンクがクラウドストレージシステムのローカルキャッシュに存在しないことを示すために影付きである。ファイルB 4002の1組の暗号化ファイルチャンク4004A〜400Fの各々は、それらのチャンクの全てがクラウドストレージシステムのローカルキャッシュに存在するというわけではないことを示すために影付きのブロックとして示されている。クラウドストレージシステムは、ファイルA 4001及びファイルB 4002の1組の暗号化ファイルチャンク4003A〜4003N及び4004A〜4004Fを含むように示されている。
[00219]図40は、2つのファイルアクセスタイムライン、すなわち、ファイルアクセスA 4020A及びファイルアクセスB 4020Bを示している。2つのタイムラインの間に、暗号化ファイルチャンク取り出し待ち行列4035は、タイムライン上の時点に対応する待ち行列コンテンツに示されている。ポイント1 4041は、暗号化されたチャンク4003DのアクセスとしてファイルアクセスA 4020A上に示されている。クラウドストレージシステムのローカルキャッシュは、暗号化されたチャンク4003Dを含まないので、クライアントデバイス上で実行中であるCFSクライアントモジュールは、暗号化ファイルチャンク取り出し待ち行列4035に暗号化されたチャンク4003Dの取り出しを入れることになる。待ち行列の一部として、CFSクライアントモジュールは、図8を参照して上述したように暗号化チャンク4003Dに向けて優先レベルを決定することになる。例えば、図40に示すように、待ち行列された暗号化されたチャンクとアクセスされた暗号化されたチャンク間の距離Δを決定することができ、その距離を使用して優先レベルを決定することができる。この場合に、アクセスされた4003Dであるチャンクは、待ち行列された4003Dであるチャンクと同じであり、従って、Δはゼロであり、暗号化されたチャンク4003Dに高い優先順位が与えられる。
[00220]ポイント2 4042は、チャンク4003E〜4003Gのアクセスがいつかこれから先に行われるという予想としてファイルアクセスA 4020A上に示されており、従って、CFSクライアントモジュールは、それらの暗号化されたチャンクをキャッシュに入れることを決定する。暗号化されたチャンク4003E及び4003Gは、クラウドストレージシステムのローカルキャッシュ内にあるので、CFSクライアントモジュールは、暗号化ファイルチャンク取り出し待ち行列4035に暗号化ファイルチャンク4003Fの取り出しを入れさえすればよい。チャンク4003Fの優先レベルは、アクセスされた4003Dであるチャンクから隔てたΔに基づいている。
[00221]ポイント3 4043は、暗号化されたチャンク4004AのアクセスとしてファイルアクセスB 4020B上に示されている。クラウドストレージシステムのローカルキャッシュは、暗号化されたチャンク4004Aを含まないので、クライアントデバイス上で実行中であるCFSクライアントモジュールは、暗号化ファイルチャンク取り出し待ち行列4035に暗号化されたチャンク4004Aの取り出しを入れることになる。暗号化されたチャンク4004Aの取り出しにチャンク4003Fの優先レベルよりも高い優先レベルが与えられ、その理由は、4004AのΔはゼロであり、一方、4003FのΔは2であるからである。
[00222]ポイント4 4044は、チャンク4004B〜4004Eのアクセスがいつかこれから先に行われるという予想としてファイルアクセスB 4020B上に示されており、従って、CFSクライアントモジュールは、それらの暗号化されたチャンクをキャッシュに入れることを決定する。暗号化ファイルチャンク4004B〜4004Eのどれもクラウドストレージシステムのローカルキャッシュ内にはないので、CFSクライアントモジュールは、残りのチャンクの優先レベルと比較して、それらのチャンクの優先レベルに従って暗号化ファイルチャンク取り出し待ち行列4035に各暗号化されたチャンク4004B〜4004Eの取り出しを入れる。従って、暗号化ファイルチャンク取り出し待ち行列4035は、取り出し優先順位の順に列挙された以下のチャンク、すなわち、4003D(Δ=0)、4004A(Δ=0)、4004B(Δ=1)、4003F(Δ=2)、4004C(Δ=2)、4004D(Δ=3)、及び4004E(Δ=4)を有する。
[00223]暗号化ファイルチャンクを予測的に取り出すと同時に暗号化ファイルチャンクの検索に優先順位を付けることは、間もなく必要なデータが、後で必要とされるデータの前に利用可能であることを保証すると同時に、CFSクライアントモジュールが間もなくアクセスされる可能性があるデータを得ることを可能にするという利点を有する。図8を参照して上述したように、従来のファイルチャンクアクセスに基づいて次のファイルチャンクアクセスの追跡に優先順位の基礎を置くなどの他の優先順位システムを実施することができる。
[00224]図41は、本発明の実施形態による地理的に分散されたクラウドストレージプールを示している。図41は、ネットワーク4130を通じてクラウドストレージシステム4150に結合されたクライアントデバイス4101Aを示している。クラウドストレージシステム4150は、ネットワーク4132、ネットワーク410、及びネットワーク4132方法を通じて2つのクラウドストレージプール4160A及び4160Bに結合されたクラウドストレージゲートウェイ4155を含み、両方とも、インターネットのような公衆ネットワークか、又は専用ネットワークの何らかの集合である。各クラウドストレージプール4160A及び4160Bは、主として特定の地理的領域にサービスを提供するように設計され、この場合に、領域Aは、クラウドストレージプール4160Aによりサービスを提供され、一方、領域Bは、クラウドストレージプール4160Bによりサービスを提供される。図41では、クライアントデバイス4101Aは、領域Aに位置付けられたと考えることができ、クラウドストレージゲートウェイ4155は、領域Aのクライアントデバイスがクラウドストレージシステム4150にアクセスするアクセスポイントである。従って、クライアントデバイスがクラウドストレージシステム4150にデータを保存すると、クラウドストレージゲートウェイ4155は、領域Aのクラウドストレージプール4160Aにそのデータを保存することになる。
[00225]図41では、クライアントデバイス4101Aは、ファイルAに対応する1組の暗号化ファイルチャンクにアクセスしている。ファイルAは、ファイルAマニフェスト(FM−A)4170内に列挙された3つのファイルチャンクで構成される。FM−A 4170は、ファイルAの一部である各暗号化ファイルチャンクに関して、チャンク識別子(CHUNK−ID欄)、チャンク暗号化キー(CHUNK−ENC−KEY欄)、及び発信領域(ORI−REGION)のリストを維持する。CHUNK−ID及びCHUNK−ENC−KEYフィールドは、以前の図で上述したようにデータを維持する。ORI−REGIONフィールドは、対応するファイルチャンクがクラウドストレージシステムに格納されていた領域の識別子を維持し、従って、クライアントデバイス4101Aがクラウドストレージシステム4150にまだ存在しないクラウドストレージシステム4150にデータを追加すると、そのデータのORI−REGIONは、領域Aになり、一方、領域Bに位置付けられた別のクライアントデバイスのデータは、領域BのORI−REGIONが説明されることになる。
[00226]この場合に、クライアントデバイス4101Aは、ステップ4180でID−3を通じてチャンクID−1を取り出している。これは、本質的に、それらのチャンクID−1〜ID−3を戻すクラウドストレージゲートウェイ4155からの要求であり、この要求は、各チャンクのORI−REGIONを含む。クラウドストレージゲートウェイ4155は、領域Aのクラウドストレージプール4156内のチャンクのリストを有する。従って、クラウドストレージゲートウェイ4155は、チャンクID−1及びID−2が領域Aクラウドストレージプール4160A内にあり、一方、チャンクID−3はないと決定することができる。クラウドストレージゲートウェイ4155は、次に、ステップ4181で、領域Aクラウドストレージプール4160AからチャンクID−1及びID2を取り出すことができる。チャンクID−3の要求内に含まれるORI−REGIONを使用して、クラウドストレージゲートウェイ4155は、次に、ステップ4182で、領域Bクラウドストレージプール4160BからチャンクID−3を取り出すことができる。チャンクID−3は、次に、ステップ4183で、チャンクID−3を領域Aクラウドストレージプール4160A内に格納することができる。チャンクID−1〜ID−3は、クライアントデバイス4101Aに戻すことができるが、全てのチャンクが、そのクライアントデバイスの地域のクラウドストレージプール内に最初に存在していたというわけではない。これは、その領域において、アクセスされる可能性があるデータ、すなわち、クライアントデバイスにより追加されたデータが、領域のクラウドストレージゲートウェイの近くに位置付けられたように、異なる領域において別々のストレージプール内にクライアントデバイスのデータを格納するという利点を提供する。同時に、クラウドストレージゲートウェイは、それらのチャンクが、そのクラウドストレージゲートウェイの領域内のクライアントデバイスによって要求された場合に他の領域からチャンクを取り出すことを可能にする。従って、様々な領域のクラウドストレージプールが絶えず互いの間にデータを同期させる必要がない。
[00227]図42は、本発明の実施形態により仮想フォルダのスナップショットにアクセスするためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示している。図42は、仮想フォルダのコンテンツを表示する同じユーザインタフェースウインドウ4200A及び4200Bの2台のディスプレイを示している。4200Aで、ユーザインタフェースウインドウは、仮想フォルダ、すなわち、TAXES2010及びTAXES2011という名称の2つのサブフォルダの例示的なコンテンツを含む仮想フォルダの最新のスナップショット(D)を示している。ユーザインタフェース4200Aの底部に沿って、ユーザが実装及びアクセスされるように選択することができる仮想フォルダの4つのスナップショット(A〜D)を提示するタイムライン4210がある。例えば、CFSクライアントモジュールは、上述したように、仮想フォルダのスナップショットを定期的に作成することができる。別の実施形態において、仮想フォルダは、複数のユーザの間に共有することができ、1人のユーザによる変更により、全ての他のユーザによってアクセス可能であるスナップショットが作成される。ユーザインタフェース4200Bの第2のディスプレイは、いつユーザが仮想フォルダのスナップショットBを選択したかを示している。この場合に、CFSクライアントモジュールは、スナップショットBに対応する仮想フォルダのFSMを実装し、仮想フォルダのコンテンツがユーザに対して更新されるように仮想フォルダの修正が行われたことをオペレーティングシステムに知らせる。この場合に、仮想フォルダのスナップショットBは、サブフォルダTAXES2011を含まなかったので、サブフォルダTAXES2010のみがスナップショットBに関して示されている。この特徴により、ユーザは、簡単に仮想フォルダのスナップショットの間でナビゲートし、ファイル及びフォルダの過去のバージョンにアクセス可能である。
[00228]図43は、本発明の実施形態によりクラウドファイルシステム内のフォルダにローカルファイルシステム内のフォルダを変換するためにクラウドファイルシステムクライアントモジュールによって提供されるユーザインタフェースを示している。ユーザインタフェースウインドウ4305は、サブフォルダ「音楽」4300を含むフォルダのコンテンツを表示するファイルブラウザウインドウ、すなわち、ファインダウインドウである。ユーザインタフェースウインドウ4310は、4310のインタフェースウインドウにローカルストレージシステムに位置付けられたフォルダをドラッグし、そのフォルダをクラウド化する命令4315と共に仮想フォルダ、及び「動画」及び「Documents」のリストを示すCFSクライアントモジュールインタフェースウインドウである。図43は、ユーザがユーザインタフェースウインドウ4305からCFSクライアントモジュールインタフェースウインドウ4310までサブフォルダ4300をドラッグすることを示している。ユーザインタフェースウインドウ4305の上でサブフォルダ4300をリリースすると、CFSクライアントモジュールは、サブフォルダ4300が位置した同じ位置に実装された「Music」の仮想フォルダ4320を作成してサブフォルダ4300をクラウド化する。従って、「Music」の仮想フォルダ4320は、ユーザインタフェースウインドウ4305、及びサブフォルダ4300がクラウド化された後にそれらのインタフェースウインドウ内のその存在を示すCFSクライアントモジュールインタフェースウインドウ4310内に示されている。
[00229]図44は、本発明の実施形態による他の実装ファイルシステムとの比較において実装されたクラウドファイルシステムの上述の態様を示している。図44は、3つの区分に分割された状態に示されており、各区分において、フォルダ、すなわち、フォルダXがファイルブラウザでユーザに提示されており、フォルダXは、2つのファイル、すなわち、ファイルA及びファイルBを含む。一番上の区分において、フォルダXは、クライアントデバイス上のローカルストレージシステムに格納される。真ん中の区分において、フォルダXは、クライアントデバイス上に実装されたネットワークファイルシステムに格納される。一番下の区分において、フォルダXは、クラウドファイルシステムに格納される。
[00230]一番上の区分は、クライアントデバイス上でファイル及びフォルダにアクセスするファイルシステム階層を含むルートファイルシステム4405Aを含むローカルストレージシステム4405を示している。ファイルシステム階層は、フォルダX、ファイルA、及びファイルBのエントリを含む様々なファイル及びフォルダへの経路を列挙する1組のファイルシステムエントリ4406で構成される。更に、ルートファイルシステム4405Aは、ファイルA及びファイルBのデータを含む。
[00231]一番上の区分の場合と同様に、真ん中の区分は、クライアントデバイス上でファイル及びフォルダにアクセスするファイルシステム階層を含むルートファイルシステム4415Aを含むローカルストレージシステム4415を示している。ファイルシステムエントリ4416の中には、フォルダXが実装されたネットワークファイルシステムであることを示すエントリがある。フォルダXにアクセスするために、NFSモジュール4410は、ファイルA及びファイルを含むNFSのコンテンツを示すファイルシステムエントリを含むネットワーク接続ストレージ4420と通信する。NFSモジュール4410は、いつフォルダXがアクセスされるかを示すFSエントリ4416に結合された状態に示されており、NFSモジュール4410は、そのアクセスを処理する。従って、クライアントデバイスがフォルダXを閲覧すると、NFSモジュール4410は、NAS4420と通信してフォルダXのコンテンツを決定する。更に、NAS4420は、ファイルA及びファイルを含むデータを含み、従って、ユーザが真ん中の区分のファイルA又はファイルBにアクセスすると、NFSクライアントモジュール4410は、NAS4420から適切なデータを取り出す。
[00232]一番上の区分の場合と同様に、一番下の区分は、クライアントデバイス上でファイル及びフォルダにアクセスするファイルシステム階層を含むルートファイルシステム4430Aを含むローカルストレージシステム4430を示している。ファイルシステムエントリ4431の中には、フォルダXが実装クラウドファイルシステムであることを示すエントリがある。フォルダXにアクセスするために、CFSクライアントモジュール4425は、クラウドストレージシステム4435のローカルキャッシュに向けてローカルストレージシステム4430の一部に位置付けられたデータにアクセスし、クラウドストレージシステム4435と通信し、かつクラウドストレージシステム4435のローカルキャッシュ内にない要求されたデータにアクセスする。図44では、クラウドストレージシステム4435のローカルキャッシュは、フォルダXに対応するエントリを含むファイルシステムマニフェスト4432を含む。CFSクライアントモジュールは、ユーザがフォルダXを閲覧した時にCFSクライアントモジュール4425がFSM4432から情報を読み取ることによってフォルダXへのアクセスを与えることを担うので、FSM4432に結合された状態に示されている。FSM4432内の情報は、それらのファイルにアクセスするのに使用される情報と共にフォルダXにおいてファイル及びフォルダを識別し、このようなファイルマニフェストは、各ファイルに対応する。
[00233]更に、クラウドストレージシステム4435のローカルキャッシュは、複数のキャッシュに入れられた暗号化ファイルチャンク4440D、4440A、及び4445Nを含む。例えば、ファイルAが1組の暗号化ファイルチャンク4440A〜4440Fを含み、ファイルBが1組の暗号化ファイルチャンク4445A〜4445Nを含むと仮定すると、クラウドストレージシステムのローカルキャッシュは、ファイルA及びファイルBの両方の各部分を含む。クラウドストレージシステム4435は、ファイルAの暗号化されたチャンクの全て及びファイルBの暗号化されたチャンクの全てを含むように示されている。従って、CFSクライアントモジュールは、クラウドストレージシステムのローカルキャッシュを利用してファイルA及びファイルBの部分にアクセスすることができ、CFSクライアントモジュールがクラウドストレージシステムのローカルキャッシュに位置しないデータの部分にアクセスする必要がある場合に、CFSクライアントモジュールは、クラウドストレージシステム4435からその情報を取り出すことができる。従って、CFSクライアントモジュールは、クラウドファイルシステムからデータを格納するスペースをローカルストレージシステムに割り当てる。
[00234]更に、CFSクライアントモジュールは、ローカルストレージシステムに格納された一番上の区分内のフォルダXと類似のフォルダをクラウドストレージシステム内への格納に変換する指示を受信する可能性がある。これは、クライアントデバイスの既存のファイルブラウザ及び対応するコンテクストメニューを使用して、又はユーザに達成された第2のユーザインタフェースを用いて達成することができる。CFSクライアントモジュールは、ローカルストレージシステムに格納されたフォルダの経路のようなフォルダの指示を受信し、クラウドストレージシステム4435内にまだ存在しない暗号化ファイルチャンクをクラウドストレージシステム4435に送信することを含め、上述したようにそのフォルダをクラウド化することができる。CFSクライアントモジュールは、クライアントデバイスのオペレーティングシステムに関する限り、ユーザのデータが同じ論理的位置に位置付けられるように、同じ論理経路(同じ位置)にクラウド化されたフォルダとしてユーザに対して変換されたフォルダの図を維持することができる。CFSクライアントモジュールは、次に、オペレーティングシステムがファイル又はフォルダのデータを要求する時はいつでも、クラウド化されたフォルダ内のデータへのアクセスを与えることを担うものである。
[00235]更に、CFSクライアントモジュール4425での及びクラウドストレージシステム4435での最適化により、CFSクライアントモジュール4425は、クラウドファイルシステム内のファイルにアクセスすることに関連付けられた待ち時間を低減することができる。例えば、クラウドストレージシステムのローカルキャッシュ内に暗号化ファイルチャンクをキャッシュに入れることは、それらのファイルチャンクのその後のアクセスにおいて、CFSクライアントモジュール4425がクラウドストレージシステム4435と通信する必要のないことを意味する。これらの利得は、CFSクライアントモジュール4425が上述したようにクラウドストレージシステム4435から暗号化ファイルチャンクを予測的に取り出すことを可能にすることによって促進される。クラウドストレージシステム4435は、更に、指定の暗号化ファイルチャンクがその後の取り出しに利用可能であることを保証するプリフェッチ指令に応答するように最適化することができる。
[00236]本明細書に説明するように、命令は、ある一定の作動実行するように構成された又は所定の機能性を有する特定用途向け集積回路(ASIC)のようなハードウエア特定の構成、又は固定コンピュータ可読媒体において実施されるメモリに格納されたソフトウエア命令を指す場合がある。すなわち、1つ又はそれよりも多くの電子デバイス(例えば、エンドステーション、ネットワーク要素)上に格納及び実行されたコード及びデータを使用して図に示す技術を実施することができる。このような電子デバイスは、固定コンピュータ可読ストレージ媒体(例えば、磁気ディスク、光ディスク、ランダムアクセスメモリ、読取専用メモリ、フラッシュメモリデバイス、相変化メモリ)、及び一時的コンピュータ可読通信媒体(例えば、搬送波、赤外線信号、デジタル信号のような電気、光、音響、他の形態の伝播される信号)のようなコンピュータ−可読媒体を使用してコード及びデータを格納して通信する(内部的に及び/又はネットワーク上の他の電子デバイスを用いて)。更に、このような電子デバイスは、典型的には、1つ又はそれよりも多くのストレージデバイス(固定コンピュータ可読ストレージ媒体)、ユーザ入力/出力デバイス(例えば、キーボード、タッチスクリーン、及び/又はディスプレイ)、及びネットワーク接続のような1つ又はそれよりも多くの他の構成要素に結合された1組の1つ又はそれよりも多くのプロセッサを含む。1組のプロセッサ及び他の構成要素の結合は、典型的には、1つ又はそれよりも多くのバス及びブリッジ(バスコントローラととも呼ばれる)を通じたものである。従って、所定の電子デバイスのストレージデバイスは、典型的には、その電子デバイスの1組の1つ又はそれよりも多くのプロセッサ上での実行に向けてコード及び/又はデータを格納する。言うまでもなく、本発明の実施形態の1つ又はそれよりも多くの部分は、ソフトウエア、ファームウエア、及び/又はハードウエアの異なる組合せを使用して実施することができる。
[00237]図中の流れ図は、本発明のある一定の実施形態によって実行される作動の特定の順番を示すが、このような順番は、例示的であることを理解しなければならない(例えば、代替的な実施形態は、異なる順番の作動を提供し、ある一定の作動を結合し、ある一定の作動と重なるなどを行うことができる)。
[00238]本発明をいくつかの実施形態に関して説明したが、当業者は、本発明が説明した実施形態に限定されず、従って、添付の特許請求の範囲の精神及び範囲内で修正及び変更を行って実施することができることを認識するであろう。すなわち、この説明は、制限的ではなく例示的であると考えるものとする。
101A〜101D クライアントデバイス
130 ネットワーク
135 クラウドストレージシステム

Claims (9)

  1. クラウドストレージシステムに少なくとも部分的に常駐するクラウドファイルシステムに複数のファイルを保存するためにクライアントデバイスにおいてクラウドストレージクライアントによって実行される方法であって、
    前記複数のファイルの各々に対して、
    そのファイルを複数のチャンクに分割し、
    前記複数のチャンクの各々に対して、
    そのチャンクに関するデータに基づいて暗号化キーを生成し、
    前記生成された暗号化キーを使用してそのチャンクを暗号化し、
    暗号化された前記チャンクである暗号化チャンク内のデータに基づいてチャンク識別子を生成し、
    前記暗号化キー及び前記チャンク識別子をファイルマニフェストに含め、
    前記クラウドストレージシステムが前記暗号化チャンクを含むか否かを決定し、かつ
    前記クラウドストレージシステムに前記暗号化チャンク及びチャンク識別子を該クラウドストレージシステムが該暗号化チャンクを含まないと決定された場合にのみ送信する、 ことを実行し、
    前記ファイルマニフェストは、前記複数のチャンクのための前記暗号化キー及び対応するチャンク識別子のリストを含み、
    前記ファイルマニフェスト内の前記データに基づいてファイルマニフェスト暗号化キーを生成し、
    前記ファイルマニフェスト暗号化キーを使用して前記ファイルマニフェストを暗号化し、
    暗号化された前記ファイルマニフェストである暗号化ファイルマニフェスト内のデータに基づいてファイルマニフェスト識別子を生成し、
    前記ファイルマニフェスト暗号化キー及び前記ファイルマニフェスト識別子をファイルシステムマニフェストに含め、
    前記クラウドストレージシステムが前記暗号化ファイルマニフェストを含むか否かを決定し、かつ
    前記クラウドストレージシステムに前記暗号化ファイルマニフェスト及び前記ファイルマニフェスト識別子を該クラウドストレージシステムが該暗号化ファイルマニフェストを含まないと決定された場合にのみ送信する、
    ことを実行する段階、
    を含み、
    前記ファイルシステムマニフェストは、前記ファイルマニフェストのリストを含み、
    方法が、更に、
    前記ファイルシステムマニフェスト内のデータに基づいてファイルシステムマニフェスト暗号化キーを生成する段階と、
    前記生成されたファイルシステムマニフェスト暗号化キーを用いて前記ファイルシステムマニフェストを暗号化する段階と、
    暗号化された前記ファイルシステムマニフェストである暗号化ファイルシステムマニフェスト内のデータに基づいてファイルシステムマニフェスト識別子を生成する段階と、
    前記クライアントデバイスのユーザに関連付けられて該ユーザが前記クラウドファイルシステムを実装した実装ポイントを示す情報を含むユーザマニフェストに前記ファイルシステムマニフェスト暗号化キー及び前記ファイルシステムマニフェスト識別子を含める段階と、
    前記ユーザ特定のキーを用いて前記ユーザマニフェストを暗号化する段階と、
    前記クラウドストレージシステムに暗号化された前記ユーザマニフェストを格納する段階と、 を含む、
    ことを特徴とする方法。
  2. 各チャンクに対して生成された前記暗号化キーは、そのチャンクをハッシュする結果に基づいていることを特徴とする請求項1に記載の方法。
  3. 各チャンクに対して前記生成されたチャンク識別子は、前記暗号化チャンクをハッシュする結果に基づいていることを特徴とする請求項1に記載の方法。
  4. 前記ファイルシステムマニフェストは、前記クライアントデバイス又は該クライアントデバイスのユーザに固有の暗号化キーを使用して暗号化されることを特徴とする請求項1に記載の方法。
  5. 前記複数のファイルをそれらの複数のファイルを前記クラウドファイルシステムに保存した後に前記クライアントデバイスのローカルストレージシステムから除去する段階、
    を更に含むことを特徴とする請求項1に記載の方法。
  6. 前記クラウドストレージシステムが前記暗号化チャンクを含むか否かを決定する段階は、
    前記暗号化チャンクに対応する前記チャンク識別子が前記クラウドストレージシステムに存在するか否かを示す情報を要求する質問を該クラウドストレージシステムに送信する段階と、
    前記チャンク識別子が前記クラウドストレージシステムに存在するか否かを示す応答を受信する段階と、
    を含む、
    ことを特徴とする請求項1に記載の方法。
  7. 前記ユーザマニフェストは、指標を識別する情報を更に含むことを特徴とする請求項1に記載の方法。
  8. クライアントデバイスのプロセッサによって実行された場合に該プロセッサをして請求項1から請求項7のいずれか1項に記載の方法を実行させることになる命令を与える少なくとも1つの固定機械可読ストレージ媒体。
  9. クラウドファイルシステムに複数のファイルを保存するように構成されたクライアントデバイスであって、
    命令を実行するプロセッサと、
    前記プロセッサに結合され、実行された時に該プロセッサをして請求項1から請求項7のいずれか1項に記載の方法を実行させる1つ又はそれよりも多くの命令を格納する少なくとも1つの固定機械可読ストレージ媒体と、
    を含むことを特徴とするクライアントデバイス。
JP2017234518A 2011-05-14 2017-12-06 ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム Active JP6530805B2 (ja)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201161486240P 2011-05-14 2011-05-14
US61/486,240 2011-05-14
US201161533264P 2011-09-11 2011-09-11
US61/533,264 2011-09-11
US201161538928P 2011-09-25 2011-09-25
US61/538,928 2011-09-25
US201161549206P 2011-10-19 2011-10-19
US61/549,206 2011-10-19

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017008281A Division JP6258532B2 (ja) 2011-05-14 2017-01-20 ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム

Publications (2)

Publication Number Publication Date
JP2018060573A JP2018060573A (ja) 2018-04-12
JP6530805B2 true JP6530805B2 (ja) 2019-06-12

Family

ID=47177595

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2014511444A Active JP6082387B2 (ja) 2011-05-14 2012-05-14 ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム
JP2017008281A Active JP6258532B2 (ja) 2011-05-14 2017-01-20 ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム
JP2017234518A Active JP6530805B2 (ja) 2011-05-14 2017-12-06 ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2014511444A Active JP6082387B2 (ja) 2011-05-14 2012-05-14 ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム
JP2017008281A Active JP6258532B2 (ja) 2011-05-14 2017-01-20 ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム

Country Status (6)

Country Link
US (3) US9253166B2 (ja)
EP (1) EP2710510A4 (ja)
JP (3) JP6082387B2 (ja)
KR (1) KR20140034222A (ja)
CN (1) CN103931156B (ja)
WO (1) WO2012158654A2 (ja)

Families Citing this family (313)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060101064A1 (en) 2004-11-08 2006-05-11 Sharpcast, Inc. Method and apparatus for a file sharing and synchronization system
US10055595B2 (en) 2007-08-30 2018-08-21 Baimmt, Llc Secure credentials control method
US8326814B2 (en) 2007-12-05 2012-12-04 Box, Inc. Web-based file management system and service
US9491915B2 (en) 2009-08-03 2016-11-15 University Of Wyoming Vertical hydroponic plant production apparatus
US10638677B2 (en) 2009-08-03 2020-05-05 University Of Wyoming Vertical hydroponic plant production apparatus
GB2500356A (en) 2011-01-20 2013-09-18 Box Inc Real time notification of activities that occur in a web-based collaboration environment
US9015601B2 (en) 2011-06-21 2015-04-21 Box, Inc. Batch uploading of content to a web-based collaboration environment
US9063912B2 (en) 2011-06-22 2015-06-23 Box, Inc. Multimedia content preview rendering in a cloud content management system
US9049176B2 (en) * 2011-06-22 2015-06-02 Dropbox, Inc. File sharing via link generation
US9978040B2 (en) 2011-07-08 2018-05-22 Box, Inc. Collaboration sessions in a workspace on a cloud-based content management system
WO2013009337A2 (en) 2011-07-08 2013-01-17 Arnold Goldberg Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof
US8682942B1 (en) 2011-08-23 2014-03-25 Amazon Technologies, Inc. System and method for performing object-modifying commands in an unstructured storage service
US9197718B2 (en) 2011-09-23 2015-11-24 Box, Inc. Central management and control of user-contributed content in a web-based collaboration environment and management console thereof
US8515902B2 (en) 2011-10-14 2013-08-20 Box, Inc. Automatic and semi-automatic tagging features of work items in a shared workspace for metadata tracking in a cloud-based content management system with selective or optional user contribution
US9182913B2 (en) * 2011-10-18 2015-11-10 Ubiterra Corporation Apparatus, system and method for the efficient storage and retrieval of 3-dimensionally organized data in cloud-based computing architectures
US8769310B2 (en) * 2011-10-21 2014-07-01 International Business Machines Corporation Encrypting data objects to back-up
US11210610B2 (en) 2011-10-26 2021-12-28 Box, Inc. Enhanced multimedia content preview rendering in a cloud content management system
US9098474B2 (en) 2011-10-26 2015-08-04 Box, Inc. Preview pre-generation based on heuristics and algorithmic prediction/assessment of predicted user behavior for enhancement of user experience
US8990307B2 (en) 2011-11-16 2015-03-24 Box, Inc. Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform
US9773051B2 (en) 2011-11-29 2017-09-26 Box, Inc. Mobile platform file and folder selection functionalities for offline access and synchronization
US9019123B2 (en) 2011-12-22 2015-04-28 Box, Inc. Health check services for web-based collaboration environments
US9904435B2 (en) 2012-01-06 2018-02-27 Box, Inc. System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment
US9052824B2 (en) * 2012-01-26 2015-06-09 Upthere, Inc. Content addressable stores based on sibling groups
US9449183B2 (en) * 2012-01-28 2016-09-20 Jianqing Wu Secure file drawer and safe
US11232481B2 (en) 2012-01-30 2022-01-25 Box, Inc. Extended applications of multimedia content previews in the cloud-based content management system
US9100245B1 (en) * 2012-02-08 2015-08-04 Amazon Technologies, Inc. Identifying protected media files
US8996887B2 (en) * 2012-02-24 2015-03-31 Google Inc. Log structured volume encryption for virtual machines
US9965745B2 (en) 2012-02-24 2018-05-08 Box, Inc. System and method for promoting enterprise adoption of a web-based collaboration environment
US9195636B2 (en) 2012-03-07 2015-11-24 Box, Inc. Universal file type preview for mobile devices
US9054919B2 (en) 2012-04-05 2015-06-09 Box, Inc. Device pinning capability for enterprise cloud service and storage accounts
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US9413587B2 (en) 2012-05-02 2016-08-09 Box, Inc. System and method for a third-party application to access content within a cloud-based platform
US9396216B2 (en) 2012-05-04 2016-07-19 Box, Inc. Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform
US9691051B2 (en) 2012-05-21 2017-06-27 Box, Inc. Security enhancement through application access control
US8914900B2 (en) * 2012-05-23 2014-12-16 Box, Inc. Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform
US9027108B2 (en) 2012-05-23 2015-05-05 Box, Inc. Systems and methods for secure file portability between mobile applications on a mobile device
JP2014010465A (ja) * 2012-06-27 2014-01-20 International Business Maschines Corporation 複数のストレージ・クラウドから実体ファイルを格納するためのストレージ・クラウドを選択する方法、並びにそのコンピュータ及びコンピュータ・プログラム
US9021099B2 (en) 2012-07-03 2015-04-28 Box, Inc. Load balancing secure FTP connections among multiple FTP servers
GB2505072A (en) 2012-07-06 2014-02-19 Box Inc Identifying users and collaborators as search results in a cloud-based system
US9792320B2 (en) 2012-07-06 2017-10-17 Box, Inc. System and method for performing shard migration to support functions of a cloud-based service
US9712510B2 (en) 2012-07-06 2017-07-18 Box, Inc. Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform
US9237170B2 (en) 2012-07-19 2016-01-12 Box, Inc. Data loss prevention (DLP) methods and architectures by a cloud service
US9794256B2 (en) 2012-07-30 2017-10-17 Box, Inc. System and method for advanced control tools for administrators in a cloud-based service
US8868574B2 (en) 2012-07-30 2014-10-21 Box, Inc. System and method for advanced search and filtering mechanisms for enterprise administrators in a cloud-based environment
US10057318B1 (en) 2012-08-10 2018-08-21 Dropbox, Inc. System, method, and computer program for enabling a user to access and edit via a virtual drive objects synchronized to a plurality of synchronization clients
US9633125B1 (en) * 2012-08-10 2017-04-25 Dropbox, Inc. System, method, and computer program for enabling a user to synchronize, manage, and share folders across a plurality of client devices and a synchronization server
US9369520B2 (en) 2012-08-19 2016-06-14 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US8745267B2 (en) 2012-08-19 2014-06-03 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US9306946B1 (en) * 2012-08-21 2016-04-05 Dj Inventions, Llc Intelligent electronic cryptographic cloud computing system
GB2513671A (en) 2012-08-27 2014-11-05 Box Inc Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment
US9135462B2 (en) 2012-08-29 2015-09-15 Box, Inc. Upload and download streaming encryption to/from a cloud-based platform
US9117087B2 (en) 2012-09-06 2015-08-25 Box, Inc. System and method for creating a secure channel for inter-application communication based on intents
US9311071B2 (en) 2012-09-06 2016-04-12 Box, Inc. Force upgrade of a mobile application via a server side configuration file
US9195519B2 (en) 2012-09-06 2015-11-24 Box, Inc. Disabling the self-referential appearance of a mobile application in an intent via a background registration
US9292833B2 (en) 2012-09-14 2016-03-22 Box, Inc. Batching notifications of activities that occur in a web-based collaboration environment
US10200256B2 (en) 2012-09-17 2019-02-05 Box, Inc. System and method of a manipulative handle in an interactive mobile user interface
US9553758B2 (en) 2012-09-18 2017-01-24 Box, Inc. Sandboxing individual applications to specific user folders in a cloud-based service
US10915492B2 (en) 2012-09-19 2021-02-09 Box, Inc. Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction
US9106721B2 (en) * 2012-10-02 2015-08-11 Nextbit Systems Application state synchronization across multiple devices
US9959420B2 (en) 2012-10-02 2018-05-01 Box, Inc. System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment
US9705967B2 (en) 2012-10-04 2017-07-11 Box, Inc. Corporate user discovery and identification of recommended collaborators in a cloud platform
US9495364B2 (en) 2012-10-04 2016-11-15 Box, Inc. Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform
US9665349B2 (en) 2012-10-05 2017-05-30 Box, Inc. System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform
US9756022B2 (en) 2014-08-29 2017-09-05 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
JP5982343B2 (ja) 2012-10-17 2016-08-31 ボックス インコーポレイテッドBox, Inc. クラウドベース環境におけるリモートキー管理
US9032050B2 (en) * 2012-10-31 2015-05-12 Vmware, Inc. Systems and methods for accelerating remote data retrieval via peer nodes
US10235383B2 (en) 2012-12-19 2019-03-19 Box, Inc. Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment
US9495552B2 (en) * 2012-12-31 2016-11-15 Microsoft Technology Licensing, Llc Integrated data deduplication and encryption
US9396245B2 (en) 2013-01-02 2016-07-19 Box, Inc. Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
GB2509504A (en) * 2013-01-04 2014-07-09 Ibm Accessing de-duplicated data files stored across networked servers
US9953036B2 (en) 2013-01-09 2018-04-24 Box, Inc. File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
EP2755151A3 (en) 2013-01-11 2014-09-24 Box, Inc. Functionalities, features and user interface of a synchronization client to a cloud-based environment
US8904503B2 (en) * 2013-01-15 2014-12-02 Symantec Corporation Systems and methods for providing access to data accounts within user profiles via cloud-based storage services
US10599671B2 (en) 2013-01-17 2020-03-24 Box, Inc. Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
US10318492B2 (en) * 2013-02-25 2019-06-11 Amazon Technologies, Inc. Predictive storage service
US10484334B1 (en) 2013-02-26 2019-11-19 Zentera Systems, Inc. Distributed firewall security system that extends across different cloud computing networks
US10382401B1 (en) 2013-02-26 2019-08-13 Zentera Systems, Inc. Cloud over IP for enterprise hybrid cloud network and security
US9699034B2 (en) 2013-02-26 2017-07-04 Zentera Systems, Inc. Secure cloud fabric to connect subnets in different network domains
US10348767B1 (en) 2013-02-26 2019-07-09 Zentera Systems, Inc. Cloud over IP session layer network
US9195849B2 (en) * 2013-03-06 2015-11-24 Kings Information & Network Co., Ltd. Cloud application installed in client terminal connected to cloud server
US20140281519A1 (en) * 2013-03-12 2014-09-18 Commvault Systems, Inc. Encrypted file backup
US9325791B1 (en) * 2013-03-12 2016-04-26 Western Digital Technologies, Inc. Cloud storage brokering service
US9116849B2 (en) * 2013-03-13 2015-08-25 Intel Corporation Community-based de-duplication for encrypted data
CA2902304C (en) 2013-03-14 2020-04-28 Becton, Dickinson And Company Direct cgm connectivity to a cloud storage network
US9767299B2 (en) * 2013-03-15 2017-09-19 Mymail Technology, Llc Secure cloud data sharing
US9356782B2 (en) * 2013-03-15 2016-05-31 Unsene, Inc. Block encryption
KR102211212B1 (ko) * 2013-03-15 2021-02-03 비데리 인코포레이티드 디지털 아트 및 이미징을 디스플레이하고, 배포하고, 뷰잉하고 제어하기 위한 시스템 및 방법
FR3003968A1 (fr) * 2013-03-28 2014-10-03 France Telecom Procede de stockage de donnees dans un systeme informatique effectuant une deduplication de donnees.
US9317718B1 (en) 2013-03-29 2016-04-19 Secturion Systems, Inc. Security device with programmable systolic-matrix cryptographic module and programmable input/output interface
US9374344B1 (en) 2013-03-29 2016-06-21 Secturion Systems, Inc. Secure end-to-end communication system
US9355279B1 (en) 2013-03-29 2016-05-31 Secturion Systems, Inc. Multi-tenancy architecture
US9524399B1 (en) * 2013-04-01 2016-12-20 Secturion Systems, Inc. Multi-level independent security architecture
US9608983B2 (en) * 2013-04-30 2017-03-28 Sensormatic Electronics, LLC Authentication system and method for embedded applets
US10725968B2 (en) 2013-05-10 2020-07-28 Box, Inc. Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform
US10846074B2 (en) 2013-05-10 2020-11-24 Box, Inc. Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client
US20160170657A1 (en) * 2013-05-16 2016-06-16 Hewlett-Packard Development Company, L.P. Deduplicated data storage system having distributed manifest
US9858153B2 (en) * 2013-05-29 2018-01-02 Microsoft Technology Licensing, Llc Service-based backup data restoring to devices
US9319393B2 (en) 2013-05-30 2016-04-19 Applied Invention, Llc Security information caching on authentication token
US9344516B2 (en) * 2013-05-30 2016-05-17 Zentera Systems, Inc. Interlocking applications and files
GB2515192B (en) 2013-06-13 2016-12-14 Box Inc Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US9826054B2 (en) 2013-06-21 2017-11-21 Kofax International Switzerland Sarl System and methods of pre-fetching content in one or more repositories
US9805050B2 (en) 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US9600374B2 (en) 2013-06-21 2017-03-21 Lexmark International Technology Sarl System and methods of managing content in one or more repositories
CA2915557A1 (en) * 2013-06-22 2014-12-31 Forgetbox Sas Methods and systems for displaying virtual files side-by-side with non-virtual files and for instantaneous file transfer
US9158472B2 (en) * 2013-06-25 2015-10-13 Google Inc. Hierarchical chunking of objects in a distributed storage system
US10110656B2 (en) 2013-06-25 2018-10-23 Box, Inc. Systems and methods for providing shell communication in a cloud-based platform
US10229134B2 (en) 2013-06-25 2019-03-12 Box, Inc. Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform
US9922042B2 (en) 2013-07-15 2018-03-20 International Business Machines Corporation Producing alternative segmentations of data into blocks in a data deduplication system
US9268786B2 (en) 2013-07-15 2016-02-23 International Business Machines Corporation Applying a minimum size bound on content defined segmentation of data
US10133502B2 (en) 2013-07-15 2018-11-20 International Business Machines Corporation Compatibility and inclusion of similarity element resolutions
US10339109B2 (en) 2013-07-15 2019-07-02 International Business Machines Corporation Optimizing hash table structure for digest matching in a data deduplication system
US9594766B2 (en) 2013-07-15 2017-03-14 International Business Machines Corporation Reducing activation of similarity search in a data deduplication system
US9891857B2 (en) 2013-07-15 2018-02-13 International Business Machines Corporation Utilizing global digests caching in similarity based data deduplication
US9892048B2 (en) 2013-07-15 2018-02-13 International Business Machines Corporation Tuning global digests caching in a data deduplication system
US9244830B2 (en) 2013-07-15 2016-01-26 Globalfoundries Inc. Hierarchical content defined segmentation of data
US9836474B2 (en) 2013-07-15 2017-12-05 International Business Machines Corporation Data structures for digests matching in a data deduplication system
US9286314B2 (en) 2013-07-15 2016-03-15 International Business Machines Corporation Applying a maximum size bound on content defined segmentation of data
US10296598B2 (en) 2013-07-15 2019-05-21 International Business Machines Corporation Digest based data matching in similarity based deduplication
US10229131B2 (en) 2013-07-15 2019-03-12 International Business Machines Corporation Digest block segmentation based on reference segmentation in a data deduplication system
US10229132B2 (en) 2013-07-15 2019-03-12 International Business Machines Corporation Optimizing digest based data matching in similarity based deduplication
US10789213B2 (en) 2013-07-15 2020-09-29 International Business Machines Corporation Calculation of digest segmentations for input data using similar data in a data deduplication system
US9892127B2 (en) 2013-07-15 2018-02-13 International Business Machines Corporation Global digests caching in a data deduplication system
US10296597B2 (en) 2013-07-15 2019-05-21 International Business Machines Corporation Read ahead of digests in similarity based data deduplicaton
US10073853B2 (en) 2013-07-17 2018-09-11 International Business Machines Corporation Adaptive similarity search resolution in a data deduplication system
US9813499B2 (en) * 2013-07-23 2017-11-07 Virtual Strongbox, Inc. Virtual storage system and method of sharing access to the virtual storage system for adding electronic documents
US9996547B2 (en) 2013-07-25 2018-06-12 Dropbox, Inc. Prioritizing content item synchronization based on sharing
US9535924B2 (en) 2013-07-30 2017-01-03 Box, Inc. Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US10275470B2 (en) * 2013-08-15 2019-04-30 Amazon Technologies, Inc. Network-backed file system
US8892679B1 (en) 2013-09-13 2014-11-18 Box, Inc. Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform
US9535909B2 (en) 2013-09-13 2017-01-03 Box, Inc. Configurable event-based automation architecture for cloud-based collaboration platforms
US9704137B2 (en) 2013-09-13 2017-07-11 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
GB2518298A (en) 2013-09-13 2015-03-18 Box Inc High-availability architecture for a cloud-based concurrent-access collaboration platform
US9213684B2 (en) 2013-09-13 2015-12-15 Box, Inc. System and method for rendering document in web browser or mobile device regardless of third-party plug-in software
US10509527B2 (en) 2013-09-13 2019-12-17 Box, Inc. Systems and methods for configuring event-based automation in cloud-based collaboration platforms
TWI502372B (zh) * 2013-09-27 2015-10-01 Acer Inc 網路儲存系統及檔案快取方法
US9336260B2 (en) * 2013-10-16 2016-05-10 Netapp, Inc. Technique for global deduplication across datacenters with minimal coordination
CN106790290B (zh) * 2013-10-18 2020-09-11 北京奇虎科技有限公司 云服务信息的处理方法、浏览器及系统
US10866931B2 (en) 2013-10-22 2020-12-15 Box, Inc. Desktop application for accessing a cloud collaboration platform
US9626527B2 (en) * 2013-11-04 2017-04-18 Gemalto Sa Server and method for secure and economical sharing of data
US20150127770A1 (en) * 2013-11-06 2015-05-07 Pax8, Inc. Distributed Cloud Disk Service Provisioning and Management
CN104683422B (zh) * 2013-12-03 2019-01-29 腾讯科技(深圳)有限公司 数据传输方法及装置
US9367562B2 (en) 2013-12-05 2016-06-14 Google Inc. Distributing data on distributed storage systems
US9298942B1 (en) * 2013-12-31 2016-03-29 Google Inc. Encrypted augmentation storage
US9529552B2 (en) * 2014-01-14 2016-12-27 International Business Machines Corporation Storage resource pack management
US9792063B2 (en) * 2014-01-15 2017-10-17 Intel Corporation Deduplication-based data security
US9576039B2 (en) 2014-02-19 2017-02-21 Snowflake Computing Inc. Resource provisioning systems and methods
US10298546B2 (en) * 2014-03-07 2019-05-21 Toshiba Memory Corporation Asymmetrical encryption of storage system to protect copyright and personal information
RU2659455C2 (ru) * 2014-03-17 2018-07-02 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для управления скачиванием файла в облачном сервисе хранения
US10374807B2 (en) 2014-04-04 2019-08-06 Hewlett Packard Enterprise Development Lp Storing and retrieving ciphertext in data storage
US9672114B2 (en) 2014-04-16 2017-06-06 Microsoft Technology Licensing, Llc Conditional saving of input data
US10530854B2 (en) 2014-05-30 2020-01-07 Box, Inc. Synchronization of permissioned content in cloud-based environments
KR102221100B1 (ko) * 2014-06-02 2021-02-26 삼성전자주식회사 클라우드 서비스를 이용한 데이터 저장 방법 및 이를 위한 장치
WO2015188246A1 (en) * 2014-06-09 2015-12-17 Royal Canadian Mint/Monnaie Royale Canadienne Cloud-based secure information storage and transfer system
WO2015190893A1 (ko) * 2014-06-13 2015-12-17 삼성전자 주식회사 멀티미디어 데이터를 관리하는 방법 및 장치
US9602514B2 (en) 2014-06-16 2017-03-21 Box, Inc. Enterprise mobility management and verification of a managed application by a content provider
RU2589861C2 (ru) 2014-06-20 2016-07-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ шифрования данных пользователя
KR101831189B1 (ko) * 2014-07-11 2018-02-23 엔에이치엔엔터테인먼트 주식회사 향상된 보안을 제공하는 클라우드 기반 메일 시스템 및 메일 서비스 방법
KR101595065B1 (ko) * 2014-08-14 2016-02-29 고려대학교 산학협력단 데이터 중복 제거 서버 및 데이터 중복 제거 방법
EP3143486A1 (en) * 2014-08-22 2017-03-22 NEC Europe Ltd. A method for storing of data within a cloud storage and a cloud storage system
US9397833B2 (en) 2014-08-27 2016-07-19 International Business Machines Corporation Receipt, data reduction, and storage of encrypted data
US9397832B2 (en) * 2014-08-27 2016-07-19 International Business Machines Corporation Shared data encryption and confidentiality
WO2016029807A1 (zh) * 2014-08-28 2016-03-03 北京金山安全软件有限公司 终端资源的清理方法、装置及终端
US10038731B2 (en) 2014-08-29 2018-07-31 Box, Inc. Managing flow-based interactions with cloud-based shared content
US10574442B2 (en) 2014-08-29 2020-02-25 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US9894119B2 (en) 2014-08-29 2018-02-13 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
CN104158827B (zh) * 2014-09-04 2018-07-31 中电长城网际系统应用有限公司 密文数据共享方法、装置、查询服务器和上传数据客户端
US10708273B2 (en) * 2014-09-12 2020-07-07 Anthony Tan Pervasive intermediate network attached storage application with asynchronously rendered content
US9398036B2 (en) * 2014-09-17 2016-07-19 Microsoft Technology Licensing, Llc Chunk-based file acquisition and file reputation evaluation
US9405928B2 (en) 2014-09-17 2016-08-02 Commvault Systems, Inc. Deriving encryption rules based on file content
US10764265B2 (en) * 2014-09-24 2020-09-01 Ent. Services Development Corporation Lp Assigning a document to partial membership in communities
US9699146B1 (en) * 2014-11-04 2017-07-04 Amazon Technologies, Inc. Secure access to user data
KR102284295B1 (ko) * 2014-11-19 2021-08-04 주식회사 알티캐스트 클라우드 기반 유저 인터페이스 제공 시스템 및 그 방법
WO2016085456A1 (en) * 2014-11-24 2016-06-02 Nokia Technologies Oy Internet of things caching to the cloud
US9760681B2 (en) * 2014-11-24 2017-09-12 Practice Fusion, Inc. Offline electronic health record management
KR101713312B1 (ko) * 2014-12-02 2017-03-22 울산과학기술원 데이터 중계 장치 및 이를 이용한 데이터 중계 방법
EP3032453B1 (en) * 2014-12-08 2019-11-13 eperi GmbH Storing data in a server computer with deployable encryption/decryption infrastructure
CN104539659B (zh) * 2014-12-09 2018-06-08 华迪计算机集团有限公司 基于nas存储的多用户文件交换共享方法和装置
US9858195B2 (en) * 2014-12-10 2018-01-02 International Business Machines Corporation Near-cache distribution of manifest among peer applications in in-memory data grid (IMDG) non structured query language (NO-SQL) environments
US9652471B1 (en) 2014-12-15 2017-05-16 Amazon Technologies, Inc. Intelligent file system with transparent storage tiering
US10019591B1 (en) * 2014-12-23 2018-07-10 Amazon Technologies, Inc. Low-latency media sharing
WO2016101153A1 (en) 2014-12-23 2016-06-30 Nokia Technologies Oy Method and apparatus for duplicated data management in cloud computing
US20160191508A1 (en) * 2014-12-31 2016-06-30 Nexenta Systems, Inc. Methods and Systems for Block Sharding of Objects Stored in Distributed Storage System
CN107113314B (zh) * 2015-01-19 2020-06-19 诺基亚技术有限公司 用于云计算中的异构数据存储管理的方法和装置
CN104618482B (zh) * 2015-02-02 2019-07-16 浙江宇视科技有限公司 访问云数据的方法、服务器、传统存储设备、系统
US10027637B2 (en) * 2015-03-12 2018-07-17 Vormetric, Inc. Secure and control data migrating between enterprise and cloud services
US20160275294A1 (en) * 2015-03-16 2016-09-22 The MaidSafe Foundation Data system and method
KR102480414B1 (ko) * 2015-03-20 2022-12-23 삼성전자주식회사 복수개의 클라우드 스토리지를 이용한 파일 저장 방법 및 이를 위한 장치
US10586063B2 (en) * 2015-03-20 2020-03-10 Samsung Electronics Co., Ltd. Method and apparatus for storing file by using a plurality of cloud storages
US9967093B2 (en) * 2015-03-25 2018-05-08 Intel Corporation Techniques for securing and controlling access to data
US10127234B1 (en) 2015-03-27 2018-11-13 Amazon Technologies, Inc. Proactive optimizations at multi-tier file systems
US10191914B2 (en) 2015-03-31 2019-01-29 EMC IP Holding Company LLC De-duplicating distributed file system using cloud-based object store
US9916458B2 (en) * 2015-03-31 2018-03-13 EMC IP Holding Company LLC Secure cloud-based storage of data shared across file system objects and clients
US9984088B1 (en) * 2015-03-31 2018-05-29 Maginatics Llc User driven data pre-fetch
US9852147B2 (en) 2015-04-01 2017-12-26 Dropbox, Inc. Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US10114835B2 (en) 2015-04-29 2018-10-30 Box, Inc. Virtual file system for cloud-based shared content
US10771553B2 (en) * 2015-04-30 2020-09-08 Quest Software Inc. Access to disparate cloud services
US9813248B2 (en) * 2015-05-27 2017-11-07 Quest Software Inc. Content-based encryption keys
US10165040B2 (en) 2015-06-05 2018-12-25 Apple Inc. Small disk support for large cloud-based storage systems
WO2016199507A1 (ja) * 2015-06-09 2016-12-15 日本電信電話株式会社 鍵交換方法、鍵交換システム、鍵配送装置、通信装置、およびプログラム
CN105046164A (zh) * 2015-06-30 2015-11-11 合肥高维数据技术有限公司 一种具有隐写和加密功能的隐蔽云存储系统
US10033702B2 (en) * 2015-08-05 2018-07-24 Intralinks, Inc. Systems and methods of secure data exchange
WO2017026987A1 (en) * 2015-08-07 2017-02-16 Hewlett Packard Enterprise Development Lp Encrypted data chunks
KR102216173B1 (ko) 2015-09-03 2021-02-15 에스케이텔레콤 주식회사 컨텐츠 이용 방법 및 이를 위한 장치
US10887371B2 (en) * 2015-09-14 2021-01-05 Google Llc Systems and methods for content storage and retrieval
US11283774B2 (en) 2015-09-17 2022-03-22 Secturion Systems, Inc. Cloud storage using encryption gateway with certificate authority identification
US9794064B2 (en) * 2015-09-17 2017-10-17 Secturion Systems, Inc. Client(s) to cloud or remote server secure data or file object encryption gateway
CN106612247A (zh) * 2015-10-21 2017-05-03 中兴通讯股份有限公司 一种数据处理方法及存储网关
US10230792B2 (en) 2015-10-23 2019-03-12 International Business Machines Corporation Synchronizing proprietary data in an external cloud with data in a private storage system
US10708236B2 (en) 2015-10-26 2020-07-07 Secturion Systems, Inc. Multi-independent level secure (MILS) storage encryption
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US10218698B2 (en) * 2015-10-29 2019-02-26 Verizon Patent And Licensing Inc. Using a mobile device number (MDN) service in multifactor authentication
US9479567B1 (en) * 2015-10-29 2016-10-25 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US10306308B2 (en) * 2015-12-15 2019-05-28 Telefonaktiebolaget Lm Ericsson (Publ) System and method for media delivery using common mezzanine distribution format
CN105635144B (zh) * 2015-12-29 2018-08-17 普奥云信息科技(北京)有限公司 基于云平台服务器的数据处理方法及系统
US10015274B2 (en) 2015-12-31 2018-07-03 International Business Machines Corporation Enhanced storage clients
US10270465B2 (en) * 2015-12-31 2019-04-23 International Business Machines Corporation Data compression in storage clients
KR102450295B1 (ko) * 2016-01-04 2022-10-04 한국전자통신연구원 암호 데이터의 중복 제거 방법 및 장치
US20170208125A1 (en) * 2016-01-19 2017-07-20 Hope Bay Technologies, Inc Method and apparatus for data prefetch in cloud based storage system
US9537952B1 (en) 2016-01-29 2017-01-03 Dropbox, Inc. Apparent cloud access for hosted content items
US10193975B2 (en) * 2016-03-10 2019-01-29 Microsoft Technology Licensing, Llc Managing multiple cloud stores through a web service
US10498726B2 (en) 2016-03-22 2019-12-03 International Business Machines Corporation Container independent secure file system for security application containers
US10474745B1 (en) 2016-04-27 2019-11-12 Google Llc Systems and methods for a knowledge-based form creation platform
US11039181B1 (en) * 2016-05-09 2021-06-15 Google Llc Method and apparatus for secure video manifest/playlist generation and playback
US10595054B2 (en) 2016-05-10 2020-03-17 Google Llc Method and apparatus for a virtual online video channel
US10785508B2 (en) 2016-05-10 2020-09-22 Google Llc System for measuring video playback events using a server generated manifest/playlist
US10771824B1 (en) 2016-05-10 2020-09-08 Google Llc System for managing video playback using a server generated manifest/playlist
US10750248B1 (en) 2016-05-10 2020-08-18 Google Llc Method and apparatus for server-side content delivery network switching
US10750216B1 (en) 2016-05-10 2020-08-18 Google Llc Method and apparatus for providing peer-to-peer content delivery
US11069378B1 (en) 2016-05-10 2021-07-20 Google Llc Method and apparatus for frame accurate high resolution video editing in cloud using live video streams
US10362058B2 (en) * 2016-05-13 2019-07-23 Vmware, Inc Secure and scalable data transfer using a hybrid blockchain-based approach
US11032588B2 (en) 2016-05-16 2021-06-08 Google Llc Method and apparatus for spatial enhanced adaptive bitrate live streaming for 360 degree video playback
US10452859B2 (en) 2016-06-10 2019-10-22 Apple Inc. File system metadata protection
US10277663B1 (en) 2016-06-24 2019-04-30 Amazon Technologies, Inc. Management of asynchronous media file transmissions
US10154116B1 (en) * 2016-06-29 2018-12-11 Amazon Technologies, Inc. Efficient synchronization of locally-available content
US10728291B1 (en) 2016-06-29 2020-07-28 Amazon Technologies, Inc. Persistent duplex connections and communication protocol for content distribution
US10783151B1 (en) 2016-06-29 2020-09-22 Amazon Technologies, Inc. Popularity-based content feed management system
JP2018019207A (ja) * 2016-07-27 2018-02-01 富士ゼロックス株式会社 連携管理装置及び通信システム
WO2018024658A1 (en) * 2016-08-03 2018-02-08 Abb Schweiz Ag Method for storing data blocks from client devices to a cloud storage system
US10389693B2 (en) 2016-08-23 2019-08-20 Hewlett Packard Enterprise Development Lp Keys for encrypted disk partitions
US10334319B2 (en) * 2016-08-29 2019-06-25 Charter Communications Operating, Llc System and method of cloud-based manifest processing
US20180067858A1 (en) * 2016-09-06 2018-03-08 Prophetstor Data Services, Inc. Method for determining data in cache memory of cloud storage architecture and cloud storage system using the same
CN107819804B (zh) * 2016-09-14 2021-03-16 先智云端数据股份有限公司 云端储存设备系统及决定其架构的高速缓存中数据的方法
US10341436B2 (en) * 2016-09-14 2019-07-02 Dell Products L.P. Using cloud storage as temporary cache for backup
US10498741B2 (en) * 2016-09-19 2019-12-03 Box, Inc. Sharing dynamically changing units of cloud-based content
US10635643B2 (en) * 2016-09-29 2020-04-28 Hewlett Packard Enterprise Development Lp Tiering data blocks to cloud storage systems
US10476866B2 (en) * 2017-01-12 2019-11-12 Wipro Limited System and method for storing and delivering digital content
US11295017B2 (en) 2017-01-31 2022-04-05 Ford Global Technologies, Llc Over-the-air updates security
US10264054B2 (en) * 2017-02-10 2019-04-16 International Business Machines Corporation Predictive device to device file transfer system for local cloud storage files
US10298649B2 (en) * 2017-02-15 2019-05-21 Microsoft Technology Licensing, Llc Guaranteeing stream exclusivity in a multi-tenant environment
US10387383B2 (en) * 2017-02-15 2019-08-20 Google Llc Systems and methods for providing access to a data file stored at a data storage system
US11025596B1 (en) * 2017-03-02 2021-06-01 Apple Inc. Cloud messaging system
US11140173B2 (en) 2017-03-31 2021-10-05 Baimmt, Llc System and method for secure access control
US10915655B2 (en) * 2017-04-27 2021-02-09 Dell Products L.P. Browser drag and drop file upload encryption enforcement
US10917390B2 (en) * 2017-04-28 2021-02-09 Dell Products L.P. Browser drag and drop file upload encryption enforcement
US20180336336A1 (en) * 2017-05-17 2018-11-22 B. G. Negev Technologies And Applications Ltd., At Ben-Gurion University System for authentication - based file access control
US10749689B1 (en) * 2017-06-29 2020-08-18 Salesforce.Com, Inc. Language-agnostic secure application development
US11163910B2 (en) * 2017-06-29 2021-11-02 Salesforce.Com, Inc. Methods and systems for data migration
US10929210B2 (en) 2017-07-07 2021-02-23 Box, Inc. Collaboration system protocol processing
US11470131B2 (en) 2017-07-07 2022-10-11 Box, Inc. User device processing of information from a network-accessible collaboration system
JP6957292B2 (ja) * 2017-09-27 2021-11-02 東芝情報システム株式会社 ファイル管理システム及びファイル管理用プログラム
US11329817B2 (en) * 2017-10-19 2022-05-10 Devi Selva Kumar Vijayanarayanan Protecting data using controlled corruption in computer networks
WO2019094556A1 (en) * 2017-11-08 2019-05-16 Massachusetts Institute Of Technology System for de-duplicating network coded distributed storage and related techniques
US10652308B2 (en) * 2017-11-08 2020-05-12 International Business Machines Corporation Cognitive storage management for a mobile computing device
US11245607B2 (en) * 2017-12-07 2022-02-08 Vmware, Inc. Dynamic data movement between cloud and on-premise storages
US10630652B2 (en) * 2017-12-29 2020-04-21 Janine Darling Data-centric secure data technology, archiving, and storage system
US11176265B2 (en) * 2017-12-29 2021-11-16 Stash America Llc Data-centric interactive data security system
EP3509267A1 (de) * 2018-01-05 2019-07-10 Firnkorn, Thomas Primäre sicherungskettenanordnung für produkt- und systemsicherheit in datennetzen
US10754973B2 (en) * 2018-01-16 2020-08-25 Sap Se Secure cloud storage system
US11055427B2 (en) * 2018-02-09 2021-07-06 University Of South Florida System and method for a secured cloud file system
US10121021B1 (en) * 2018-04-11 2018-11-06 Capital One Services, Llc System and method for automatically securing sensitive data in public cloud using a serverless architecture
US11334596B2 (en) 2018-04-27 2022-05-17 Dropbox, Inc. Selectively identifying and recommending digital content items for synchronization
US10990369B2 (en) * 2018-04-30 2021-04-27 EMC IP Holding Company LLC Repurposing serverless application copies
US10915246B2 (en) 2018-05-14 2021-02-09 Netapp, Inc. Cloud storage format to enable space reclamation while minimizing data transfer
WO2019232259A1 (en) * 2018-05-31 2019-12-05 Mochi, Inc. Decentralized data storage and voting protocol
CN108989400A (zh) * 2018-06-28 2018-12-11 郑州云海信息技术有限公司 一种云存储网关读写文件的方法、装置及设备
US11768936B2 (en) * 2018-07-31 2023-09-26 EMC IP Holding Company LLC Anomaly-based ransomware detection for encrypted files
US11386112B2 (en) * 2018-08-08 2022-07-12 Microsoft Technology Licensing, Llc Visualization platform for reusable data chunks
CN109491591A (zh) * 2018-09-17 2019-03-19 广东工业大学 一种适于多云存储系统的信息扩散方法
US10901721B2 (en) * 2018-09-20 2021-01-26 Vmware, Inc. Methods and apparatus for version aliasing mechanisms and cumulative upgrades for software lifecycle management
CN109542862B (zh) * 2018-11-21 2020-04-24 北京百度网讯科技有限公司 用于控制文件系统的挂载的方法、装置和系统
US10855745B2 (en) * 2018-11-29 2020-12-01 Dell Products L.P. Systems and methods for downloading data chunks using a varying number of simultaneous connections
US10956187B2 (en) * 2019-01-22 2021-03-23 Vmware, Inc. Method and system for enhancing virtualized infrastructure at customer's premise with cloud analytics
EP3874380A4 (en) * 2019-03-18 2022-05-04 Samsung Electronics Co., Ltd. METHOD AND DEVICE FOR STORING A FILE IN A CLOUD-BASED STORAGE
JP2020160503A (ja) 2019-03-25 2020-10-01 富士ゼロックス株式会社 情報処理システム
US11095705B2 (en) 2019-04-05 2021-08-17 International Business Machines Corporation Content distributed over secure channels
US11222022B2 (en) 2019-04-17 2022-01-11 Verizon Patent And Licensing Inc. Method and system for searching a key-value storage
US11048423B2 (en) 2019-04-17 2021-06-29 Verizon Media Inc. Method and system for synchronizing requests related to key-value storage having different portions
US11138158B2 (en) 2019-05-20 2021-10-05 Callplex, Inc. Binding a local data storage device to remote data storage
CN113994626B (zh) * 2019-05-22 2023-01-17 妙泰公司 具有增强的安全性、弹性和控制的分布式数据存储方法及系统
US20210019285A1 (en) * 2019-07-16 2021-01-21 Citrix Systems, Inc. File download using deduplication techniques
US11838413B2 (en) * 2019-10-22 2023-12-05 Synamedia Limited Content recognition systems and methods for encrypted data structures
US11259082B2 (en) 2019-10-22 2022-02-22 Synamedia Limited Systems and methods for data processing, storage, and retrieval from a server
KR20220126733A (ko) * 2019-11-20 2022-09-16 (주)이더블유비엠 Fido 기반 암묵인증방법, 시스템 및 프로그램
US11520747B2 (en) * 2019-12-02 2022-12-06 Huawei Technologies Co., Ltd. Method and system for detecting and resolving a write conflict
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
US20210173945A1 (en) * 2019-12-06 2021-06-10 Pure Storage, Inc. Replicating data to a storage system that has an inferred trust relationship with a client
US11290253B2 (en) * 2020-02-14 2022-03-29 Gideon Samid Document management cryptography
US11533384B2 (en) * 2020-03-20 2022-12-20 International Business Machines Corporation Predictive provisioning of cloud-stored files
US11550949B2 (en) * 2020-07-21 2023-01-10 Constella Intelligence, Inc. Secure exchange of password presence data
US11645247B2 (en) 2020-08-21 2023-05-09 Sap Se Ingestion of master data from multiple applications
US11726846B2 (en) * 2020-08-21 2023-08-15 Sap Se Interface for processing sensor data with hyperscale services
US10942629B1 (en) 2020-10-16 2021-03-09 Laitek, Inc. Recall probability based data storage and retrieval
US11930109B2 (en) 2021-01-22 2024-03-12 International Business Machines Corporation Encrypted storage with secure access
US11593308B2 (en) * 2021-02-22 2023-02-28 Hitachi Vantara Llc Managing data hidden by userspace filesystem
CN113037851B (zh) * 2021-03-19 2023-03-31 深圳市臂云科技有限公司 一种基于存储实现的针对云手机系统超分的方法
US11853100B2 (en) * 2021-04-12 2023-12-26 EMC IP Holding Company LLC Automated delivery of cloud native application updates using one or more user-connection gateways
US20220327245A1 (en) * 2021-04-13 2022-10-13 Western Digital Technologies, Inc. Data storage device and method of access
US20220353341A1 (en) * 2021-04-28 2022-11-03 Attini Cloud Solutions International AB Efficient deployment of cloud resources
CN113489723B (zh) * 2021-07-05 2022-11-22 平安科技(深圳)有限公司 数据传输方法、系统、计算机设备及存储介质
US20230239148A1 (en) * 2022-01-25 2023-07-27 International Business Machines Corporation Chained manifest for key management and attestation
US11620393B1 (en) * 2022-05-14 2023-04-04 Aswath Premaradj System and method for facilitating distributed peer to peer storage of data

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6983365B1 (en) * 2000-05-05 2006-01-03 Microsoft Corporation Encryption systems and methods for identifying and coalescing identical objects encrypted with different keys
JP2004126639A (ja) * 2002-09-30 2004-04-22 Toshiba Corp データ管理システム、データ管理方法及びプログラム
JP4601969B2 (ja) * 2004-01-27 2010-12-22 株式会社日立製作所 ファイル入出力制御装置
US8041677B2 (en) * 2005-10-12 2011-10-18 Datacastle Corporation Method and system for data backup
US8285681B2 (en) 2009-06-30 2012-10-09 Commvault Systems, Inc. Data object store and server for a cloud storage environment, including data deduplication and data management across multiple cloud storage sites
US8799322B2 (en) 2009-07-24 2014-08-05 Cisco Technology, Inc. Policy driven cloud storage management and cloud storage policy router
US8930686B2 (en) * 2009-12-23 2015-01-06 International Business Machines Corporation Deduplication of encrypted data
JP5822452B2 (ja) * 2010-10-22 2015-11-24 株式会社インテック ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム

Also Published As

Publication number Publication date
JP6258532B2 (ja) 2018-01-10
US20130305039A1 (en) 2013-11-14
KR20140034222A (ko) 2014-03-19
US20160149699A1 (en) 2016-05-26
JP2014519099A (ja) 2014-08-07
EP2710510A4 (en) 2015-05-06
US9253166B2 (en) 2016-02-02
CN103931156A (zh) 2014-07-16
JP2017107580A (ja) 2017-06-15
CN103931156B (zh) 2019-01-01
WO2012158654A2 (en) 2012-11-22
JP2018060573A (ja) 2018-04-12
WO2012158654A3 (en) 2014-05-08
US10715314B2 (en) 2020-07-14
US20190044706A1 (en) 2019-02-07
EP2710510A2 (en) 2014-03-26
US9876637B2 (en) 2018-01-23
JP6082387B2 (ja) 2017-02-15

Similar Documents

Publication Publication Date Title
JP6530805B2 (ja) ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム
US10951702B2 (en) Synchronized content library
EP3408744B1 (en) Providing access to a hybrid application offline
US10277673B2 (en) Local server for synced online content management system
US10242215B2 (en) Content preview including sharable information
US20140304384A1 (en) Uploading large content items
US9432238B2 (en) Communicating large amounts of data over a network with improved efficiency
US9912651B2 (en) Authenticated server views

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180105

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181003

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190104

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190304

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190403

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: 20190417

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190517

R150 Certificate of patent or registration of utility model

Ref document number: 6530805

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250