The desire of computer users to become more mobile has led to increased use of server-side data storage, including web-based data storage. According to typical server-side storage arrangements, a service provider (e.g., a company or other organization, a commercial provider, etc.) implements one or more network-accessible hosts. Each host usually comprises data storage hardware and one or more servers for administering the hardware. Users of the service are able to access the hosts over the network to upload and download data files. The network may be a local area network (LAN) or a wide area network (WAN), such as the Internet. Typically, the users can access the central data store from multiple computer devices, and often from any computer device having the appropriate client software and the ability to communicate on the network.
Although server-side data storage generates conveniences for computer users, it also presents new risks and concerns. Data security is one significant concern. Because the service provider, and not the users, are in control of the data, users must rely on the service provider to maintain data security. Some users have addressed this concern by encrypting files before uploading the files to a host. This, however, requires that the entire file be transferred from client to host and back again every time that it is modified. In addition, when files are encrypted to a host, the host cannot index the files for easy retrieval by the clients/users.
In one general aspect, the present invention is directed to methods of communicating data between a host and a client. The methods may comprise receiving a write request from a client. The write request may comprise first data and first metadata describing a logical position of the first data within a file. The first data may be encrypted to the host. The methods may also comprise writing the first data to a data storage. In addition, the methods may comprise writing the first metadata to the data storage. The first metadata may be written as a metadata sub-file of the file.
In another general aspect, the present invention is directed to methods of communicating data between a client and a host. The methods may comprise receiving a write request from an application. The write request may comprise first data and a first logical position of the first data within a file. The methods may also comprise encrypting the first data to the host and generating first metadata describing the first logical position. In addition, the methods may comprise the step of communicating the first data and the first metadata to the host.
Various embodiments of the present invention are described here by way of example in conjunction with the following figures, wherein:
Various embodiments of the present invention are directed to systems and methods for implementing server-side storage. According to these systems and methods, a host implements data storage, which is accessible to one or more clients over a network or other suitable link. The host may be administered by a server-side storage service provider. Clients may be implemented by users of the server-side storage. The users may be employees, customers, or other affiliates of the service provider. According to various embodiments, data stored at the host may include a series of data units organized, for example, into files. The files may include data sub-files or streams, which are encrypted to the host, and metadata sub-files, which are not encrypted to the host. The streams or sub-files may be organized within the files according to a log-based organization. For example, metadata sub-files may include logical-to-physical mapping information relating each data sub-file to a logical position.
The file 100, as shown, is organized according to a log-based scheme. For example, the sub-files include data sub-files 104, 108, 112 as well as metadata sub-files 102, 106, 110. Each of the sub-files has a physical position within the file 100, as shown. The data sub-files 104, 108, 112 may also have a logical position within the file 100, for example, shown in
The client 204 may be in communication with an application 206. The application 206 may be any application that uses data storage including, for example, a word processing application, a spreadsheet application, etc. The application 206 may be executed by the same computing machine that implements the client 204, and may be executed from that computing machine, or from a remote server. According to various embodiments, the application 206 may be executed from a local data storage (e.g., local data storage 220) or may be executed from a remote host (e.g., host 202 or another host). The application 206 may provide read and write requests to the client 204. In response to a write request, the client 204 may forward the data unit to be written to the host 202 as one or more sub-files, as described in more detail below. In response to a read request, the client 204 may request a sub-file containing the desired data unit or units from the host 202, as described in more detail below. According to various embodiments, the client 204 may be configured such that the server-side storage arrangement is transparent to the application 206.
The host 202 may administer a server-side data storage 210. In response to requests received from the client 204, the host 202 may store data to and/or read data from the data storage 210 according to the file and sub-file organization described above. Data may be written to data storage 210 in response to a write request received from the client 204. Each request to write to data storage 210 may include one or more data sub-files that are encrypted to the host 202 and one or more metadata sub-files, which are readable by the host 202. The metadata sub-files may include data units that indicate the logical position or positions of the data sub-files within a file, such as file 100 described above. To locate a data sub-file corresponding to a particular logical position within a file, the host 202 may refer to one or more of the various metadata sub-files stored within the file.
According to various embodiments, the client 204 may be constructed in a modular fashion. For example, the client 204 may include a client module (e.g., a commercially availably HTTP client, a Distributed Authoring and Versioning (“DAV”) client, etc.). The client 204 may also include a storage layer abstraction module 216 and encryption/compression module 218. The storage layer abstraction module 216 may convert read and write requests from the application 206 into the file and sub-file format described herein. The encryption/compression module 218 may encrypt and decrypt and/or compress and decompress data units included in the various sub-files.
According to various embodiments, the modules 216, 218 may be provided as plug-ins to the client module. When this configuration is used, an administrator of a server-side storage service need not provide the entire client 204 to each potential user of the service. Instead, the administrator may provide a storage layer abstraction module 216 and/or an encryption compression module 218 that users may then utilize in conjunction with a commercially available client module to implement the client 204. According to some implementations, users of the server-side storage service may provide their own encryption/compression module 218 and may tailor the module 218 to their particular security needs. For example, a user who requires a high degree of security may obtain an encryption/compression module 218 that implements a strong encryption and may require physical keys for decryption (e.g., USB keys such as the ALADDIN E-TOKEN). A user who does not require the same level of security may obtain an encryption/compression module 218 that implements a weaker encryption, and may only require a password to decrypt.
At step 306, the client 204 may encrypt the data sub-file to the host 202, for example, using the encryption/compression module 218. This may prevent the host 202, and any unauthorized third parties, from reading the data unit or units present in the data sub-file. The data sub-file or sub-files may be encrypted according to any suitable encryption algorithm including, for example, Advanced Encryption Standard (AES). According to various embodiments, the client 204 (e.g., via the encryption compression module 218) may also compress the data sub-file or sub-files. This may serve to reduce the amount of space required at data storage 210. At step 308, the client 204 may communicate the write request, now including the data sub-file or sub-files and the metadata sub-file, to the host 202 (e.g., via data link 208). In this exemplary embodiment, the write request forwarded to the host 202 does not include the entire file to be written, but instead includes only the affected sub-file or sub-files. Accordingly, it may not be necessary to transmit the entire file over the communications link 208 each time it is read or modified. This may reduce the bandwidth requirements of the system 200. At step 310, the host 202 may receive the write request, decrypt the metadata sub-file if it is encrypted, and then store the write request to data storage 210.
Prior to communicating the write request to the host, the client 204 may encrypt the metadata sub-files to third parties (e.g. according to a dual-key encryption or other similar method.) For example, the host 202 may be able to decrypt the metadata sub-files, but still may not be able to decrypt the data sub-files. In this way, all of the portions of the request may be unreadable to third parties. Also, according to various embodiments, rather than handling each write request individually, the client 204 may store write requests received from the application 206 to cache memory 220. The write requests may then be processed and communicated to the host 202, as described above, as a combined request.
A second write request 422 may be subsequently received and stored to the file 400 after the first write request 420, for example, as shown by
At various predetermined intervals, the host 202 may garbage collect the file 400 by shifting the locations of active data sub-files within various files, such as file 400, to overwrite any unused segments. In this way, the total amount of storage available at data storage 210 may be increased. For example, referring to
According to various embodiments, the system 200 may also allow a user of the client 204 to browse or search data stored at the host 202 (e.g., at data storage 210). As described above, metadata sub-files may include indexable data describing the files and/or sub-files of which they are a part. Accordingly, the client 204 may have the capability to identify files or sub-files stored at the host 202 based on the indexable information. For example, the client 204 may have the capability to initiate a search of indexable information at the host 202 and/or browse files or sub-files based on their related indexable information.
As used herein, the phrase, “encrypted to” is used with reference to encrypted data to designate parties who are not intended to have the capability to legitimately decrypt the data. For example, if it is said that certain data is “encrypted to Party A,” it means that the data is encrypted in such a way that Party A is not intended to have the capability to decrypt it. For example, Party A may not be provided with a key or other information and/or hardware necessary to decrypt.
As used herein, the term “data unit” refers to a group of related data. As used herein, the term “file” refers to an organizational unit of data. For example, a file may include one or more data units. In various non-limiting embodiments, a file may be an application data file, a database record or a file containing some or all of an executable image, such as an application program, code library, device driver, operating system image file, etc. As used herein, the terms “sub-file” and “stream” refer to an organizational unit of data organized within a file. For example, a sub-file may include one or more data units.
It is to be understood that the figures and descriptions of the present invention have been simplified to illustrate elements that are relevant for a clear understanding of the present invention, while eliminating other elements, for purposes of clarity. Those of ordinary skill in the art will recognize that these and other elements may be desirable. However, because such elements are well known in the art and because they do not facilitate a better understanding of the present invention, a discussion of such elements is not provided herein.
As used herein, a “computer,” “computer system,” and the like, may be, for example and without limitation, either alone or in combination, a personal computer (PC), server-based computer, main frame, server, microcomputer, minicomputer, laptop, personal data assistant (PDA), cellular phone, pager, processor, including wireless and/or wireline varieties thereof, a virtual computer system and/or any other computerized device or construct capable of configuration for processing data for standalone application and/or over a networked medium or media. Computers and computer systems disclosed herein may include operatively associated memory for storing certain software applications used in obtaining, processing, storing and/or communicating data. It can be appreciated that such memory can be internal, external, remote or local with respect to its operatively associated computer or computer system. Memory may also include any means for storing software or other instructions including, for example and without limitation, a hard disk, an optical disk, floppy disk, ROM (read only memory), RAM (random access memory), PROM (programmable ROM), EEPROM (extended erasable PROM), and/or other like computer-readable media.
The described systems may include various modules and/or components implemented as software code to be executed by a processor(s) of the systems or any other computer system using any type of suitable computer instruction type. The software code may be stored as a series of instructions or commands on a computer readable medium. The term “computer-readable medium” as used herein may include, for example, magnetic and optical memory devices such as diskettes, compact discs of both read-only and writeable varieties, optical disk drives, and hard disk drives. A computer-readable medium may also include memory storage that can be physical, virtual, permanent, temporary, semi-permanent and/or semi-temporary. A computer-readable medium may further include one or more data signals transmitted on one or more carrier waves.
While several embodiments of the invention have been described, it should be apparent that various modifications, alterations and adaptations to those embodiments may occur to persons skilled in the art with the attainment of some or all of the advantages of the present invention. It is therefore intended to cover all such modifications, alterations and adaptations without departing from the scope and spirit of the present invention.
Number | Name | Date | Kind |
---|---|---|---|
4135240 | Ritchie | Jan 1979 | A |
4959811 | Szczepanek | Sep 1990 | A |
4984153 | Kregness et al. | Jan 1991 | A |
5027395 | Anderson et al. | Jun 1991 | A |
5488701 | Brady et al. | Jan 1996 | A |
5506983 | Atkinson et al. | Apr 1996 | A |
5530850 | Ford et al. | Jun 1996 | A |
5537588 | Engelmann et al. | Jul 1996 | A |
5551003 | Mattson et al. | Aug 1996 | A |
5606983 | Monty et al. | Mar 1997 | A |
5652879 | Harris et al. | Jul 1997 | A |
5664178 | Sinofsky | Sep 1997 | A |
5706504 | Atkinson et al. | Jan 1998 | A |
5715441 | Atkinson et al. | Feb 1998 | A |
5734861 | Cohn et al. | Mar 1998 | A |
5752252 | Zbikowski et al. | May 1998 | A |
5757915 | Aucsmith et al. | May 1998 | A |
5764880 | Gerdt et al. | Jun 1998 | A |
5781797 | Crick et al. | Jul 1998 | A |
5799324 | McNutt et al. | Aug 1998 | A |
5802344 | Menon et al. | Sep 1998 | A |
5832515 | Ledain et al. | Nov 1998 | A |
5857207 | Lo et al. | Jan 1999 | A |
5873097 | Harris et al. | Feb 1999 | A |
5923878 | Marsland | Jul 1999 | A |
5991893 | Sinder | Nov 1999 | A |
5996054 | Ledain et al. | Nov 1999 | A |
6006227 | Freeman et al. | Dec 1999 | A |
6021408 | Ledain et al. | Feb 2000 | A |
6021509 | Gerdt et al. | Feb 2000 | A |
6038668 | Chipman et al. | Mar 2000 | A |
6065100 | Schafer et al. | May 2000 | A |
6079047 | Cotugno et al. | Jun 2000 | A |
6101186 | Craig | Aug 2000 | A |
6108420 | Larose et al. | Aug 2000 | A |
6128630 | Shackelford | Oct 2000 | A |
6148368 | DeKoning | Nov 2000 | A |
6240527 | Schneider | May 2001 | B1 |
6260036 | Almasi et al. | Jul 2001 | B1 |
6321239 | Shackelford | Nov 2001 | B1 |
6336164 | Gerdt et al. | Jan 2002 | B1 |
6347397 | Curtis | Feb 2002 | B1 |
6366987 | Tzelnic et al. | Apr 2002 | B1 |
6377958 | Orcutt | Apr 2002 | B1 |
6381682 | Noel et al. | Apr 2002 | B2 |
6418509 | Yanai et al. | Jul 2002 | B1 |
6430548 | Deis et al. | Aug 2002 | B1 |
6438594 | Bowman-Amuah | Aug 2002 | B1 |
6449688 | Peters et al. | Sep 2002 | B1 |
6490664 | Jones et al. | Dec 2002 | B1 |
6526570 | Click, Jr. et al. | Feb 2003 | B1 |
6529909 | Bowman-Amuah | Mar 2003 | B1 |
6535949 | Parker | Mar 2003 | B1 |
6577254 | Rasmussen | Jun 2003 | B2 |
6597812 | Fallon et al. | Jul 2003 | B1 |
6601104 | Fallon | Jul 2003 | B1 |
6604158 | Fallon | Aug 2003 | B1 |
6624761 | Fallon | Sep 2003 | B2 |
6625671 | Collette et al. | Sep 2003 | B1 |
6628411 | Miller et al. | Sep 2003 | B2 |
6633244 | Avery et al. | Oct 2003 | B2 |
6633883 | Koskas | Oct 2003 | B2 |
6643405 | Sako | Nov 2003 | B1 |
6643652 | Helgeson et al. | Nov 2003 | B2 |
6654851 | McKean | Nov 2003 | B1 |
6657565 | Kampf | Dec 2003 | B2 |
6664903 | Kugai | Dec 2003 | B2 |
6704839 | Butterworth et al. | Mar 2004 | B2 |
6711709 | York | Mar 2004 | B1 |
6732125 | Autrey et al. | May 2004 | B1 |
6738863 | Butterworth et al. | May 2004 | B2 |
6741747 | Burns et al. | May 2004 | B1 |
6775781 | Phillips et al. | Aug 2004 | B1 |
6782319 | McDonough | Aug 2004 | B1 |
6785768 | Peters et al. | Aug 2004 | B2 |
6795640 | Honda | Sep 2004 | B1 |
6795897 | Benveniste et al. | Sep 2004 | B2 |
6847681 | Saunders et al. | Jan 2005 | B2 |
6856993 | Verma et al. | Feb 2005 | B1 |
6901403 | Bata et al. | May 2005 | B1 |
6944619 | Gruenwald | Sep 2005 | B2 |
6983456 | Poznanovic et al. | Jan 2006 | B2 |
7051031 | Schein | May 2006 | B2 |
7085766 | Keith, Jr. | Aug 2006 | B2 |
7088823 | Fetkovich | Aug 2006 | B2 |
7107267 | Taylor | Sep 2006 | B2 |
7191189 | Bhatti | Mar 2007 | B2 |
7340581 | Gorobets et al. | Mar 2008 | B2 |
7370319 | Pensak et al. | May 2008 | B2 |
7392383 | Basibes et al. | Jun 2008 | B2 |
7444625 | Anwar et al. | Oct 2008 | B2 |
7523221 | Hillberg | Apr 2009 | B2 |
7530016 | Sahota et al. | May 2009 | B2 |
7536418 | Buchsbaum et al. | May 2009 | B2 |
7702995 | Sahota et al. | Apr 2010 | B2 |
20020052868 | Mohindra et al. | May 2002 | A1 |
20020073066 | Coutts et al. | Jun 2002 | A1 |
20020143735 | Ayi et al. | Oct 2002 | A1 |
20030110478 | Duesterwald et al. | Jun 2003 | A1 |
20030123446 | Muirhead et al. | Jul 2003 | A1 |
20040015958 | Veil et al. | Jan 2004 | A1 |
20040167916 | Basso et al. | Aug 2004 | A1 |
20040186920 | Birdwell et al. | Sep 2004 | A1 |
20050144189 | Edwards et al. | Jun 2005 | A1 |
20050240966 | Hindle et al. | Oct 2005 | A1 |
20060031246 | Grayson | Feb 2006 | A1 |
20060070076 | Ma | Mar 2006 | A1 |
20060101025 | Tichy et al. | May 2006 | A1 |
20060123250 | Maheshwari et al. | Jun 2006 | A1 |
20060195476 | Nori et al. | Aug 2006 | A1 |
20060277153 | Mason et al. | Dec 2006 | A1 |
20080134154 | Patel et al. | Jun 2008 | A1 |
20090249277 | Prakash | Oct 2009 | A1 |