Method and system for data backup
Claim Score by NHIP
Abstract
Embodiments of the present invention are directed to Web-Services-based data backup and data-archiving applications that provide remote data backup and data archiving to private individuals, small businesses, and other organizations that need reliable, secure, geographically remote, and cost-effective data backup, data archiving, and backed-up and archived-data retrieval. In one embodiment of the present invention, a private or small-business client contracts with a service provider for data-backup and data-archiving services. The service provider, in turn, contracts with a remote data-storage facility to provide secure, reliable data backup and data archiving to the personal or small-business client. A client-side application is downloaded to the client computer and configured to allow the client to store locally encrypted data at the remote, data-storage facilities. Neither the service provider nor the data-storage facility can decrypt or otherwise access the information stored by the client. In addition, the encryption key or encryption keys used by the client to encrypt the data for remote storage are securely stored at the remote, data-storage facility for subsequent recovery by the client, should the client suffer damage or loss to a local computer system. However, the client encryption key is stored in a doubly encrypted fashion, preventing access to the client's encryption key by either the service provider or the data-storage facility. Certain embodiments of the present invention also provide local indexing for remotely stored, encrypted data and efficient storage of updates to already remotely stored data.

Term
0.8 yearsto projected expiry
Projected expiry 13 July 2027, counted from filing; an application has no term until it is granted.
- Priority
- Filed
- Published
- Today
- Projected expiry
10 claims: 1 independent, 9 dependent
- 1Broadest claimClaim Score 48, average(NHIP)A backup and restore system comprising:a server-side portion that receives backup and restore requests and processes the backup and restore requests by returning encrypted data blocks in response to a restore request, and storing encrypted data blocks and file signatures in response to a backup request;and a client-side portion that provides a user-interface that allows files to designated for continuous backup, includes a service process that detects changes to files designated for continuous backup, computes file signatures, computes, by file-signature comparison, blocks needed to be stored for backup and restore operations, and issues requests for backup and restore operations, and includes a transport service process for exchanging requests and data with the server-side portion.
94 paragraphs in 6 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATION
0001This application claims the benefit of U.S. Provisional Patent Application No. 60/725,812, filed Oct. 12, 2005.
TECHNICAL FIELD
0002The present invention is related to data backup and data archiving and, in particular, to Web-Services-based data backup and data archiving that allow private and commercial computer users to back up and archive data, including data files, on remote data-storage facilities via a Web-Services-based application.
BACKGROUND OF THE INVENTION
0003Only 30 years ago, the vast majority of private individuals, small businesses, and even medium-sized businesses carried out word processing tasks on electronic typewriters and stored personal and business-related data on hand-written and typed papers and forms that were manually filed in indexed folders within filing cabinets. During the late 1970's and 1980's, mini-computer-based word-processing systems, and, subsequently, personal computers became widely available, and electronic data storage relatively quickly replaced hand-written and typed pages stored in filing cabinets. However, in many cases, electronic data was stored on floppy disks that were, in turn, indexed and physically stored in filing-cabinet-like enclosures, since the small capacity and lack of robustness of early mass-storage devices and computer systems limited their usefulness for storing data backups and archived data. Data backups and archived data need to be reliably stored for relatively long periods of time. Often, backed-up and archived data may never again be needed, but, in those cases in which backed-up or archived data needs to be retrieved for subsequent use, an ability to retrieve the backed-up or archived data may result in serious and, in certain cases, even fatal consequences for business organizations.
0004With the continued improvement of personal computers and business computing systems, and increased price performance of computers, data backups and data archives are currently most commonly stored in mass-storage devices accessible by networked computer systems. <figref idref="DRAWINGS">FIG. 1</figref> illustrates options for data backup and data archiving in a small-business environment. In general, an employee or small-business owner carries out most data-related tasks on the employee's or business owner's personal computer <b>102</b>. Personal computers are commonly purchased with multiple disk drives that allow for redundant data backup, including full disk mirroring, and redundant data archiving within a single computer system. However, small businesses generally employ networked systems of personal computers and one or more servers <b>104</b> with higher-capacity and more highly available and fault-tolerant data-storage subsystems. In such environments, the employee or business owner primarily using PC <b>102</b> can access, via a network, other PCs <b>106</b> and <b>108</b> or the centralized server <b>104</b> for storing backup data and for archiving data, in addition to any local backup and archiving within the employees or business owner's own PC <b>102</b>. Similarly, home users may have multiple disk drives on their PCs, and often have networked, multiple-PC systems that allow for storing backup data and archiving data over two or more networked computers. Additionally, data can be backed up and archived, in the small system shown in <figref idref="DRAWINGS">FIG. 1</figref>, on writeable CDs or DVDs, magnetic tapes, or other types of physical storage media, and the CDs, DVDs, or tapes may be stored in remote locations. Again, however, such practices depend on regularly conducted backups and archiving, on managing remotely stored information, and other manual tasks that are often forgotten or put off.
0005Unfortunately, current trends and developments in personal and business computing are conspiring to make data backup and data archiving in small computer systems, such as the small computer system shown in <figref idref="DRAWINGS">FIG. 1</figref>, inefficient and dangerous. As applications and computer systems on which applications run continue to become larger and more capable, the amount of electronic data that is routinely generated and that that needs to be backed up and archived by personal and small-business users is increasing rapidly. Furthermore, as more activities and tasks become automated as a result of the increasing price performance in computer systems and the increasing availability of a wide variety of application programs, more types of electronic data are being generated by home and small-business computer users, much of which may need to be backed up and archived. New regulations and statutes require small business to maintain reliably backed-up data for relatively long periods of time. For example, certain new statues require electronic, reliable storage of medical records, and other new statutes require reliable, electronic storage of email and other securities-related information in companies dealing with securities transactions. These statutes and regulations contribute enormous added data-backup and data-archiving overhead. Data backup and data archiving require continuous diligence and technical understanding on the part of home users and small businesses. Home users and small businesses often lack the technical expertise, time, and vigilance required to effectively back up and archive data in ways that guarantee that backed-up and archived data is not lost or does not end up being unrecoverable for a variety of different reasons. Although progress has been made by computer vendors, operating-systems vendors, and other hardware, software, and service providers, efficient, user-friendly data backup and data archiving may require interfacing many different components with one another, and the many interfaces may be neither stable over time nor easy to set up and manage. Reliable data backup and data archiving require data to be stored in two or more geographically remote locations, to prevent catastrophic data loss at a single site. For example, even when data is backed up and archived in triply or quadruply redundant fashion within a small business, a fire, flood, or earthquake can easily result in all redundantly stored data being lost or unrecoverably damaged. Backing up and archiving data to geographically remote data-storage facilities is often beyond the technical and economic capabilities of home users and small businesses. Finally, even were a home user or small business able to create and manage a reliable and effective data backup and archiving system, it is exceedingly difficult for home users and small businesses to secure backed-up and archived data from inadvertent or malicious, unauthorized access. Such data is commonly accessed by hackers, business competitors, and fraudulent groups and organizations. For all of these reasons, home users, small businesses, and even medium-sized businesses and larger organizations have all recognized the need for user-friendly, reliable, and cost-efficient data backup and data storage services.
SUMMARY OF THE INVENTION
0006Embodiments of the present invention are directed to Web-Services-based data backup and data-archiving applications that provide remote data backup and data archiving to private individuals, small businesses, and other organizations that need reliable, secure, geographically remote, and cost-effective data backup, data archiving, and backed-up and archived-data retrieval. In one embodiment of the present invention, a private or small-business client contracts with a service provider for data-backup and data-archiving services. The service provider, in turn, contracts with a remote data-storage facility to provide secure, reliable data backup and data archiving to the personal or small-business client. A client-side application is downloaded to the client computer and configured to allow the client to store locally encrypted data at the remote, data-storage facilities. Neither the service provider nor the data-storage facility can decrypt or otherwise access the information stored by the client. In addition, the encryption key or encryption keys used by the client to encrypt the data for remote storage are securely stored at the remote, data-storage facility for subsequent recovery by the client, should the client suffer damage or loss to a local computer system. However, the client encryption key is stored in a doubly encrypted fashion, preventing access to the client's encryption key by either the service provider or the data-storage facility. Certain embodiments of the present invention also provide local indexing for remotely stored, encrypted data and efficient storage of updates to already remotely stored data.
BRIEF DESCRIPTION OF THE DRAWINGS
0007<figref idref="DRAWINGS">FIG. 1</figref> illustrates options for data backup and data archiving in a small business.
0008<figref idref="DRAWINGS">FIG. 2</figref> shows additional resources available to a PC user in either a home environment or a small-business environment.
0009<figref idref="DRAWINGS">FIG. 3</figref> illustrates, using the illustration conventions of <figref idref="DRAWINGS">FIG. 1</figref>, backup and archiving resources available to a home user, small-business user, or other user of a PC or other small computer system.
0010<figref idref="DRAWINGS">FIG. 4</figref> illustrates the two Web-Services interfaces provided by one embodiment of the data-vault Web-Services-based application that runs on a remote data-storage facility.
0011<figref idref="DRAWINGS">FIG. 5</figref> illustrates one possible, high-level hardware configuration that supports various embodiments of the present invention.
0012FIGS. <b>6</b>A-F illustrate one aspect of a Web-Services-based, data-backup-and-data-archiving service that represents one embodiment of the present invention.
0013FIGS. <b>7</b>A-B illustrate interaction between a client and a partner service provider to contract for Web-Services-based, data-backup-and-data-archiving services, as well as to initially configure a client.
0014<figref idref="DRAWINGS">FIG. 8</figref> is a simple flow-control program that illustrates client-side operations invoked to securely store data within the data vault, previously discussed with respect to FIGS. <b>6</b>A-F.
0015<figref idref="DRAWINGS">FIG. 9</figref> illustrates operations performed by the data-vault application related to storing a file on behalf of a client.
0016<figref idref="DRAWINGS">FIG. 10</figref> illustrates, at an overview level, the client-side and server-side portions of a backup, restore, and archiving system that represents one embodiment of the present invention.
0017<figref idref="DRAWINGS">FIG. 11</figref> illustrates, at an overview level, a single-server implementation of the server-side portion of a backup, restore, and archiving system that represents one embodiment of the present invention.
0018<figref idref="DRAWINGS">FIG. 12</figref> illustrates a complex, replicated backup, restore, and archiving system that represents an alternative embodiment of the present invention.
0019FIGS. <b>13</b>A-C illustrate basic functionalities within the backup, restore, and archiving system illustrated, at overview level, in <figref idref="DRAWINGS">FIG. 10</figref>.
0020FIGS. <b>14</b>A-D illustrate processing, by the main service process (<b>1314</b> in <figref idref="DRAWINGS">FIG. 13A</figref>) of files and file-like objects to generate corresponding file signatures and encrypted data blocks.
0021FIGS. <b>15</b>A-E illustrate file instancing according to embodiments of the present invention.
0022<figref idref="DRAWINGS">FIG. 16</figref> summarizes the information stored on the server-side portion and client-side portion of the backup, restore, and archiving system that represents one embodiment of the present invention for each file on the client device that is monitored and continuously backed up by the backup, restore, and archiving system.
0023FIGS. <b>17</b>A-B illustrate the logical operation for constructing a particular instance of a file from the file-signature history and data-block history stored for the file according to embodiments of the present invention.
0024FIGS. <b>18</b>A-B illustrate version-history truncation according to embodiments of the present invention.
0025FIGS. <b>19</b>A-B illustrate security-related entities and operations within the backup, restore, and archiving system that represents one embodiment of the present invention.
0026<figref idref="DRAWINGS">FIG. 19C</figref> illustrates retrieval of a file-encryption key by a client device in the event that the client inadvertently deletes or loses the file-encryption key.
0027<figref idref="DRAWINGS">FIG. 19D</figref> illustrates secure communications between the client device and server facilitated by client credentials.
0028FIGS. <b>20</b>A-C provide a type of control-flow diagram illustrating initialization of a client so that the client can conduct fully secure request and data exchanges with the server-side portion of a backup-restore-and-archiving system that represents an embodiment of the present invention.
0029<figref idref="DRAWINGS">FIG. 21</figref> illustrates, at an overview level, the block store implemented by the permanent-store portion of the server-side portion of the backup, restore, and archiving system that represents one embodiment of the present invention.
0030<figref idref="DRAWINGS">FIG. 22</figref> illustrates differential backup.
0031<figref idref="DRAWINGS">FIG. 23</figref> illustrates differential restore.
0032FIGS. <b>24</b>A-B provide a flow diagram for the backup process carried out by the main service process on the client side of the backup, restore, and archiving system that represents one embodiment of the present invention.
0033<figref idref="DRAWINGS">FIG. 25</figref> is a control-flow diagram illustrating the restore operation carried out by the main service process executing on a client device according to one embodiment of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
0034Embodiments of the present invention are directed to a Web-Services-based data-backup and data-archiving application. As discussed above, although electronic data backup and data archiving are now commonly employed by home users and small businesses, the need for reliable, secure, and geographically remote data backup and data archiving continues to grow with increases in data generation and requirements for reliable data backup and archiving.
0035As discussed above, with reference to <figref idref="DRAWINGS">FIG. 1</figref>, a PC user in a home environment or small-business environment may access hardware and software resource both on the local PC as well as on remote PCs within the home environment or small-business environment, and servers within business environments. Again, however, as discussed above with reference to <figref idref="DRAWINGS">FIG. 1</figref>, the networked home-computer systems and small-business systems are inadequate for data backup and archiving needs.
0036As shown in <figref idref="DRAWINGS">FIG. 2</figref>, a PC user may, in addition to accessing local hardware and software resources and the hardware and software resources available over a local area network, access an enormous amount of HTML-encoded information and Internet-based services <b>202</b> from all over the world via a web browser <b>204</b> executed on the local PC and Internet access provided by an Internet service provider. Unfortunately, while a PC user may access tens of millions of pages of information through the Internet, and may conduct retail transactions and business-to-business transactions on the Internet in order to purchase and receive various goods and services, there is currently no method known to Applicants that allows a user to continuously, securely, and transparently upload data files and other files to a remote data-storage facility, through the Internet, for backup and archiving purposes, without exposing potentially confidential information, including file names and other file attributes, to the remote data-storage facility, to hackers, and to those who might intercept information transmission through the Internet.
0037A new standard for application-to-application interaction through the Internet is currently under development. This collection of emerging standards is referred to as “Web Services.” Web Services can be thought of as a collection of HTTP-based or HTTPS-based, and XML-based, protocols that define particular types of operations or transactions associated with particular ports, currently including ports <b>80</b> and <b>443</b>. For example, a Web-Services protocol may be defined to allow a particular application program running on a client computer to interact with a server-based counterpart to the application program in order to carry out certain, defined tasks. A Web-Services-based application may include client-side and server-side, paired application programs for encoding and transferring medical information. Another Web-Services-based application may allow for concurrent audio and visual information to be transmitted between two peer PCs and rendered for broadcast and display to allow for video conferencing between users or groups of users interfacing with two PCs interconnected through the Internet. The current availability of web browsers and Internet access to both home users and small-business users of computer systems, and the emergence of Web-Services-based applications, together with the currently recognized need for reliable, secure, and cost-effective data backup and data archiving services to remote data-storage facilities motivates a variety of different embodiments of the present invention. These embodiments are directed to Web-Services-based data-backup and data-archiving services that allows a private individual, small-business employee, or other user of a PC or small-computer-system to easily and cost-effectively transmit data for backup or archiving to a remote data-storage facility over the Internet via a Web-Services-based application and to retrieve backed-up and archived data from the remote data-storage facility, as needed.
0038<figref idref="DRAWINGS">FIG. 4</figref> illustrates, using the illustration conventions of <figref idref="DRAWINGS">FIG. 1</figref>, backup and archiving resources available to a home user, small-business user, or other user of a PC or other small computer system. As discussed with reference to <figref idref="DRAWINGS">FIG. 1</figref>, the user of a PC <b>102</b> or other small computer system within a home environment, small-business environment, research environment, or other environment in which data is generated and in which generated data needs to be reliably backed up and archived, may employ local mass-storage devices, other hardware, and software to back up and archive data redundantly within the local PC <b>102</b>, may back up and archive data on remote, networked PCs <b>106</b> and <b>108</b>, may back up and archive data on a centralized server or other larger-scale computer resource <b>104</b>, and, in accordance with the present invention, may employ a data-backup and data-archiving, Web-Services-based service <b>402</b> to back up and archive data on a remote data-storage facility that supports the data-backup and data-archiving web service. The Web Service may be directly accessed from the local PC <b>102</b> via a data-backup and data-archiving client-side application program running on the local PC <b>102</b>, or may access the data-backup and data-archiving Web Service indirectly, via the centralized computing resource <b>104</b> or through remote PCs <b>106</b> and <b>108</b>.
0039The data-backup and data-archiving Web Service, like any Web Service, can be viewed as a collection of operations, remote procedure calls, or other such functional interfaces that together constitute a defined Web Service. In various embodiments of the present invention, the remote data-storage facility implements a data-vault that provides a first Web-Services interface to client computers running client-side data-vault applications and a second Web-Services interface to partner service providers through which clients contract data-backup and data-archiving services provided by the remote data-storage facility. <figref idref="DRAWINGS">FIG. 4</figref> illustrates the two Web-Services interfaces provided by one embodiment of the data-vault Web-Services-based application that runs on a remote data-storage facility. The data-vault application provides the first Web-Services interface to client computers comprising separate protocols that allow a client to retrieve a list of files stored by the client on the remote data-storage facility <b>402</b>, request preparation for retrieval of a file stored on the remote data-storage facility <b>404</b>, to actually retrieve a file requested for retrieval from the data-storage facility <b>406</b>, to request preparation for upload of a file for storage onto the remote data-storage facility <b>408</b>, and to actually upload a file to the remote data-storage facility for storage <b>410</b>. In one embodiment, the data-vault web-based application provides a partner interface to third-party, partner service providers that allows a partner service provider to obtain device-usage information from the data-vault application <b>412</b>, to list devices configured by the data-vault application for clients through the partner service provider <b>414</b>, to disable a device configured for a client computer via the partner service provider <b>416</b>, to enable a device configured for a client of the partner service provider <b>418</b>, to remove a device configured for a client through the partner service provider <b>420</b>, and to create a new device for a client of the partner service provider <b>422</b>. In alternative embodiments, additional functionalities may be provided by the first and second data-vault web-based interfaces, and in yet additional embodiments, different collections of protocols and associated operations, remote procedure calls, or other functional interfaces may be provided. In some embodiments, the Web-Services-based data-backup and data-archiving service may be provided directly to clients by the remote data-storage facility, without needing a partner services provider.
0040<figref idref="DRAWINGS">FIG. 5</figref> illustrates one possible, high-level hardware configuration that supports various embodiments of the present invention. In <figref idref="DRAWINGS">FIG. 5</figref>, a client computer <b>502</b> runs a client-side data-backup and data-archiving application <b>504</b> on top of an operating system <b>506</b> that includes support for Internet-based communications <b>508</b>. The operating system <b>506</b> supports the HTTPS <b>510</b> protocol on top of the TCP/IP protocol <b>512</b>, in turn layered above one or more device-driver-specific protocols <b>514</b> that transfer data over an internal bus to a device driver <b>516</b> that, in turn, transmits electronic messages to, and receives electronic messages from, remote computers supporting the HTTPS and TCP/IP protocols. A partner data-backup and data-archiving application <b>520</b> runs on a partner service provider's computer <b>522</b>. As discussed above, in certain embodiments of the present invention, a client contracts with a partner service provider for data-backup and data-archiving services. Once service is established, the client then directly communicates with a remote data-storage facility <b>524</b> to store and retrieve data. The remote data-storage facility <b>524</b> may, in certain embodiments, consist of two or more geographically separate computer systems <b>526</b> and <b>528</b>, each running a data-vault application <b>520</b> which provides the first Web-Services interface to client computers and the second Web-Services interface to partner service providers discussed above with reference to <figref idref="DRAWINGS">FIG. 4</figref>. The remote data-storage facility includes redundant file storage and database systems <b>532</b> and <b>534</b> that may be each geographically associated with the two or more, geographically dispersed, remote data-storage-facility computers <b>526</b> and <b>528</b>, or may be also geographically remote both to the remote-data-storage-facility computers <b>526</b> and <b>528</b> as well as to the partner service provider <b>522</b> and the clients <b>502</b>.
0041FIGS. <b>6</b>A-F illustrate one aspect of a Web-Services-based, data-backup-and-data-archiving service that represents one embodiment of the present invention. FIGS. <b>6</b>A-F employ symbolic representation of features of the Web-Services-based, data-backup-and-data-archiving service. <figref idref="DRAWINGS">FIG. 6A</figref> shows a client <b>602</b> and the data vault <b>604</b>. As discussed above, the client <b>602</b> is a client-side Web-Services-based, data-backup-and-data-archiving-service application running on a client computer, and the data vault <b>604</b> is a Web-Services-based data-vault application running on one or more remote data-storage-facility computers. A file-store operation, provided by the Web-Services application to clients, provides for transmission of data, generally in the form of a file, from the client to the data vault, for storage. Initially, the client has a plain-text file <b>606</b> that the client desires to be backed up or archived on the data vault. The client and also maintains an encryption key <b>608</b> to which only the client has access. The client has contracted for data-backup and data-archival services through a partner service provider, and has been configured for data-storage operations. As part of configuration, the client has been allocated a device by the data vault. In other words, from the data-vault's perspective, the client is a remote device with a device identifier. The data vault stores files encrypted by the remote device and transmitted to the data vault by the remote device <b>610</b>. These files are associated with file IDs, such as file ID <b>612</b>, to allow the data vault to later retrieve and return the stored, encrypted files, when requested to do so by the client.
0042The data vault thus provides a logical service analogous to an apparel-check-in service provided by a theatre, bus station, or other such service provider. A customer can check in one or more items, and receives identifying tags for the items. The service provider attaches tags with matching identification numbers to the stored items. Later, the customer can retrieve one or more items of apparel by presenting the tags, which the service provider then matches with the stored apparel. In FIGS. <b>6</b>A-F, the stored, encrypted files are symbolically represented as articles of apparel hung from a clothing rack, with attached identification tags, to emphasize the above-presented analogy, although, in fact, the files are electronically stored on a file server, or in some other file-storage facility.
0043The data vault also includes a secure database <b>614</b> that can be imagined to serve the purpose of a safe in a bank or retail establishment. One function of the database is to securely store inaccessible copies of the client's encryption key <b>616</b>. If, for some reason, a client loses the encryption key <b>608</b>, the client can obtain the encryption key from the data vault. However, the data vault cannot itself access the encryption key, and therefore cannot access any of the information stored in the encrypted file <b>610</b>. The client normally keeps local lists of all the files that the client has backed up or archived in the data vault. However, if the client were to, for some reason, lose its list of files, the client can retrieve an encrypted list of files from the data vault, which stores encrypted file attributes in the secure database <b>614</b>. However, the data vault cannot, itself, access the file-attribute information stored in the data vault. Thus, no information concerning the contents of files or the attributes of files backed up or archived in the data vault needs to ever leave the client computer. All data backed up or archived on the data vault is as secure as the encryption techniques employed by the client to encrypt the client's data, and accessible only to the client computer.
0044The client carries out two distinct operations in order to store the plain text file <b>606</b> within the data vault. First, as shown in <figref idref="DRAWINGS">FIG. 6B</figref>, the client sends the client's device number as well as encrypted file attributes to the data vault, requesting to subsequently store the associated file. Next, as shown in <figref idref="DRAWINGS">FIG. 6C</figref>, the data vault returns a file ID to the client that the data vault associates with the file that the client intends to store. Again, as noted above, the attributes are encrypted by the client before being transmitted to the data vault. Thus, the data vault stores encrypted attributes <b>616</b> within the secure database, and the data vault cannot itself access or read the encrypted attributes. As shown in <figref idref="DRAWINGS">FIG. 6D</figref>, having received the file ID for the file to be stored, the client encrypts the plain-text file to generate an encrypted version of the plain-text file <b>618</b>. The client then sends the encrypted file, along with the client's device number and the file ID previously returned to the client by the data vault, to the data vault, as shown in <figref idref="DRAWINGS">FIG. 6E</figref>, for storage. Finally, as shown in <figref idref="DRAWINGS">FIG. 6F</figref>, the data vault stores the encrypted file <b>618</b>, associated with the file ID <b>620</b>, in the file storage facility allocated to the device associated with the client's computer so that the client can subsequently retrieve the encrypted file by supplying the file ID to the data vault. The file ID is associated with the encrypted file attributes and the device identifier for the device within the secure database <b>614</b> so that, should the client lose locally stored information identifying the files that have been backed up or archived on the data vault, the client can request encrypted-file-attributes/file-ID pairs associated with the client's device from the data vault for use in subsequently retrieving files from the data vault.
0045FIGS. <b>7</b>A-B illustrate interaction between a client and a partner service provider to contract for Web-Services-based, data-backup-and-data-archiving services, as well as to initially configure a client. FIGS. <b>7</b>A-B illustrate transmission of data between clients, partner service providers, and the data vault according to Web-Services protocols. In FIGS. <b>7</b>A-B, three columns are shown representing a client, a partner service provider, and the data vault in left-to-right order. As shown in <figref idref="DRAWINGS">FIG. 7A</figref>, a client transmits a request for service <b>702</b> to the partner service provider which returns client-side, Web-Services-based, data-backup-and-data-archiving-service application software <b>704</b> to the client. Although this transaction is shown occurring via two messages in <figref idref="DRAWINGS">FIG. 7A</figref>, the transaction may involve a relatively lengthy protocol in which a client initially responds to a web page provided by the partner service provider, receives, fills out, and returns various forms and payment information, and carries out any additional transaction-related operations in order to successfully contract for the Web-Services-based, data-backup-and-data-archiving service and to receive the client-side software.
0046Once the client-side software is installed, a public/private encryption-key pair is generated on the client computer, and the public encryption key <b>706</b> of the public/private encryption-key pair is transmitted by the client to the partner service provider as part of a request for new configuration. The partner service provider, in turn, transmits the client's public encryption key along with a new-device request <b>708</b> to the data vault. The data vault generates a new device on behalf of both the partner service provider and the client, encrypts device-configuration information using the client's public key within a response message <b>710</b>, and returns the response message to the partner service provider. The partner service provider includes the encrypted device configuration information within a response message that, in addition, includes in the response message a passphrase generated by the partner service provider on behalf of the client <b>712</b>, and returns the response message to the client. Upon receiving the response message <b>712</b>, the client can extract the passphrase supplied by the partner service provider as well as the encrypted device-configuration information, and can decrypt the device-configuration information using the client's private encryption key. In certain embodiments of the present invention, the client can choose or suggest one or more passphrases, rather than rely on passphrase generation by the partner service provider. The device-configuration information is then used by the client-side software to fully configure the client-side application for subsequent data-backup and data-archive operations. Note that the partner service provider cannot intercept, access, or use the device-configuration information returned by the data vault to the client, since the partner service provider does not possess the client's private encryption key. Note also that the passphrase returned by the partner service provider to the client is not available to the data vault. However, in many embodiments of the present invention, the partner service provider agrees to store passphrases generated on behalf of clients, as well as the partner service provider's private encryption key, with an escrow service so that the passphrase or passphrases provided to clients can be recovered by the clients, and the partner service provider's private encryption key can be recovered by the data vault, in the case that the partner service provider discontinues operation or is otherwise unavailable to client computers that have contracted data-backup and data-archive services from the data vault through the partner service provider.
0047Next, as shown in <figref idref="DRAWINGS">FIG. 7B</figref>, the client generates a new encryption key known only to the client's computer and encrypts the new encryption key using the passphrase provided by the partner service provider to produce a passphrase-encrypted new encryption key <b>714</b>, and then encrypts the passphrase-encrypted new encryption key using the partner service provider's public encryption key to produce a doubly encrypted new encryption key <b>716</b> which is sent by the client to the data vault. The data vault stores the doubly encrypted new client encryption key in the secure database, in association with the device identifier for the device allocated for the client. The stored, doubly encrypted client encryption key is represented as secured encryption key <b>716</b> in <figref idref="DRAWINGS">FIG. 7A</figref>. The data vault then sends an acknowledge message <b>718</b> back to the client computer. In certain embodiments of the present invention, the acknowledgement may be sent by way of the partner service provider.
0048The client computer is now fully configured for subsequent data-backup and the data-archive operations. The client computer has a locally stored copy of the client computer's encryption key which the client computer subsequently uses to encrypt all data transmitted to the data vault for backup or archiving. Since only the client knows the client's encryption key, and since the client's encryption key is doubly encrypted within the data vault, neither the data vault nor the partner service provider can access the client's encryption key in order to decrypt information stored by the client within the data vault. An important consequence of this is that, not only is client data secure in the data vault, but also file attributes associated with stored files are secure, so that neither the partner service provider nor the data vault can read or otherwise access stored data attributes. A law firm, for example, may store many files with file names suggestive of the law firm's clients or suggestive of various legal matters or transactions conducted on behalf of the law firm's clients by the law firm. Even if the contents of these files are inaccessible to the data vault or partner service provider, were the file names accessible, much confidential information might be gleaned by the data vault, the partner services provider, or malicious third parties that gain access to the data vault or partner services provider. However, under the Web-Services protocols that represent embodiments of the present invention, file names, file owners, and other file attributes are fully secured by encryption prior to leaving the client computer.
0049<figref idref="DRAWINGS">FIG. 8</figref> is a simple flow-control program that illustrates client-side operations invoked to securely store data within the data vault, previously discussed with respect to FIGS. <b>6</b>A-F. In step <b>802</b>, the client encrypts file attributes associated with a file and sends a storage request directly to the data vault. The storage request includes the device ID for the device associated with the client computer received as part of the initial configuration of the client-side software. In step <b>804</b>, the client receives, in return, a file ID from the data vault. In step <b>806</b>, the client encrypts the file to be stored and sends the encrypted file, along with the file ID, to the data vault. In step <b>808</b>, the client receives acknowledgement from the data vault that the file has been successfully stored on one or more remote data-storage facilities.
0050<figref idref="DRAWINGS">FIG. 9</figref> illustrates operations performed by the data-vault application related to storing a file on behalf of a client. In step <b>902</b>, the data vault receives a storage request from the client. After performing authorization and validation steps, the data vault generates a new file ID on behalf of the client. In step <b>906</b>, the data vault extracts file attributes from the storage request received in step <b>902</b> and stores the encrypted file attributes, in association with a newly generated file ID, in the secure database. In step <b>908</b>, the data vault returns the file ID to the client. In step <b>910</b>, the data vault receives the encrypted file, along with a file ID, for storage in the data vault, and in step <b>912</b>, the data vault notes the receipt of the encrypted file in the database entry associated with the file ID, stores the encrypted file on a file server or other data-storage device, and sends an acknowledgement to the client.
0051File retrieval by clients is relatively simple, involving sending a request for a file to the data vault, accompanied with a file ID and device identifier, and, once the request is properly validated and authorized by the data vault, the data vault locates the specified file on the file server returns the specified file to the client. As discussed above, a client may also request and receive from the data vault encrypted-file-attribute/file-ID pairs, should the client somehow lose local copies of this information. In addition, the client can request and receive the doubly encrypted client encryption key from the data vault, should the client lose the client encryption key. This request may be made by a client through a partner service provider, in which case the partner service provider can decrypt the first level of double encryption on behalf of the client, before forwarding the passphrase encrypted encryption key to the client.
0052In alternative embodiments of the present invention, the Web-Services-based, data-backup-and-data-archiving services may provide additional services. For example, in one embodiment of the present invention, prior to encryption of a file, the client-side application generates index information for the file that is stored in a local index, to allow the client-side application to search remotely stored files for text strings or other search information. In other words, the locally-stored index includes a word index, or other data-object index, in which words are associated with file IDs. Then, when the file is encrypted, the index information generated for the file may also be encrypted and separately sent to the data vault for storage. If the local index information is somehow lost by the client, the index information can be retrieved, in encrypted form, from the data vault.
0053A further service provided by various embodiments of the present invention is efficient file update. In various embodiments, the client compares an updated file for storage on the data vault to a previous version of the updated file stored locally on the client, and computes the differences between the two files. Then, the client encrypts only the differences, along with metadata describing the differences, and these encrypted differences and metadata are transmitted to the data vault for storage, rather than transmitting the entire, updated file. The data vault can store a first version of the file, along with a series of updates, and can return both the first, complete version, and subsequent updates, or can return the most recent update and any previous, requested updates to the client when the stored, updated file is subsequently requested by the client. Encryption and transmission of updated differences, rather than entire updated files, is both more computationally efficient as well as more efficient for transmission and storage.
More Detailed Description of Various Embodiments of the Present Invention
0054In this subsection, a more detailed description of an implemented embodiment of the present invention is provided. <figref idref="DRAWINGS">FIG. 10</figref> illustrates, at an overview level, the client-side and server-side portions of a backup-restore-and-archiving system that represents one embodiment of the present invention. The client-side portion of the backup-restore-and-archiving system <b>1002</b> includes a number of user devices, generally personal computers (“PCs”). In the described embodiment, backup, restore, and archiving services are provided by the server-side portion of the backup-restore-and-archiving system at the granularity of client devices. In other words, backup, restore, and archiving services are provided to a physical, hardware device, such as a personal computer. In alternative embodiments, backup, restore, and archiving services may be provided at a finer level of granularity, such as to particular user partitions of a hardware device.
0055The client devices communicate with the server-side portion of the backup-restore-and-archiving system <b>1004</b> via secure connections, in certain embodiments using secure socket layer (“SSL”) connections implemented above the Internet protocol <b>1006</b>. The server-side portion <b>1004</b> of the backup-restore-and-archiving system includes one or more web servers <b>1008</b>, one or more shared-disk servers <b>1010</b>, one or more job servers <b>1012</b>, one or more database servers <b>1014</b>, one or more active-directory servers <b>1016</b>, one or more permanent-data-storage devices <b>1018</b>, and an operations monitor <b>1020</b>. The one or more web servers <b>1008</b> interact directly with client devices <b>1002</b>, and the web servers are thus isolated from the client devices and other devices within the server-side portion of the backup-restore-and-archiving system <b>1004</b> by firewalls <b>1022</b>-<b>1024</b>.
0056The overview of the backup-restore-and-archiving system shown in <figref idref="DRAWINGS">FIG. 10</figref> illustrates but one of a myriad possible configurations of a backup-restore-and-archiving system according to the present invention. At one extreme, the entire server-side portion of the backup-restore-and-archiving system may be implemented in a single server computer, and, at the other extreme, complex, multi-component server-side portions may be replicated locally and geographically to provide extremely high levels of fault and disaster tolerance and high availability. <figref idref="DRAWINGS">FIG. 11</figref> illustrates, at an overview level, a single-server implementation of the server-side portion of a backup-restore-and-archiving system that represents one embodiment of the present invention. The single-server implementation includes an Internet-Information Server application <b>1102</b>, an Active Directory <b>1104</b>, and an SQL Server <b>1106</b> that together provide the functionality of the server-side portion of the backup-restore-and-archiving system within a single-server computer <b>1108</b>. <figref idref="DRAWINGS">FIG. 12</figref> illustrates a complex, replicated backup-restore-and-archiving system that represents an alternative embodiment of the present invention. In the multi-component, replicated, backup-restore-and-archiving system shown in <figref idref="DRAWINGS">FIG. 12</figref>, a first data center <b>1202</b> containing a bank of web servers <b>1204</b>, database servers <b>1206</b>, active-directory servers <b>1208</b>, and a permanent data storage facility implemented with the distributed-file-system methodology <b>1210</b> may be accessed via the Internet from client computers via a global load balancer <b>1212</b> and local load balancer <b>1214</b>. SQL replication <b>1216</b>, active-directory replication <b>1217</b>, and distributed-file-service replication <b>1218</b> are used to replicate the first data center <b>1202</b> at a second data center <b>1220</b> that may be geographically dispersed from the first data center. Thus, in the embodiment shown in <figref idref="DRAWINGS">FIG. 12</figref>, two separate, multi-component server-side portions of the backup-restore-and-archiving system coexist to provide fault and disaster tolerance as well as high availability. In still alternative embodiments, the multi-component server-side portion may be replicated threefold, fourfold, or at even higher levels of redundancy. In addition, in the higher end implementations, the permanent data store in each server-side portion may itself be mirrored or redundantly stored by alternative types of redundancy-introducing techniques, including error-code-encoding-based redundancy found in RAID-5 and RAID-6 storage systems.
0057FIGS. <b>13</b>A-C illustrate basic functionalities within the backup-restore-and-archiving system illustrated, at overview level, in <figref idref="DRAWINGS">FIG. 10</figref>. <figref idref="DRAWINGS">FIG. 13A</figref> illustrates basic functionalities within a client device (<b>1002</b> in <figref idref="DRAWINGS">FIG. 10</figref>). The client-device portion of the backup-restore-and-archiving system includes three different processes. The first process is implemented as a user-interface routine <b>1302</b> that is invoked by a user via any of various routine-invocation methods, including interactive invocation through an icon <b>1304</b> displayed on the terminal <b>1306</b> of the client device. The user-interface routine provides basic user-management and user-configuration services that allow a user to modify <b>1308</b> a locally stored catalog <b>1310</b> that, among other things, includes a list <b>1312</b> of files and other file-like objects resident within the client device that are to be backed up continuously and automatically by the backup-restore-and-archiving system. The catalog <b>1310</b> additionally may include configuration information, such as file-alteration-detection periods for each file, indications of the number of revisions, or instances, of a given file or file-like object to maintain, indications of the level of protection desired by the user for the file or file-like object, and other such parameters.
0058The user may issue various types of commands through a graphical-user interface displayed on the client-device display monitor <b>1306</b> to the user-interface routine <b>1302</b>. Commands include adding or deleting files and file-like objects from the backup list, commands to restore one or more particular files to a particular, previously backed-up instance, commands to truncate revision histories stored within the backup-restore-and-archiving system, and a variety of additional commands in various alternative embodiments.
0059Two additional processes <b>1314</b> and <b>1316</b> run continuously within the client device as Windows services. The first Windows-services process <b>1314</b> is the main client-side service process responsible for executing backup and restores operations. The second continuously executing Windows-services process <b>1316</b> is a transport service that employs the background intelligent transfer service (“BITS”) and secure socket layer (“SSL”) for exchanging data with the server-side portion of the backup-restore-and-archiving system, as well as with a backup-restore-and-archiving-system partner. BITS uses spare network bandwidth and processing cycles, as a background process, for exchanging data with remote entities.
0060The main client-side process <b>1314</b> includes a monitoring function <b>1318</b> that periodically checks each file or file-like object, such as file <b>1320</b>, that is continuously backed up by the backup-restore-and-archiving system as specified by data stored in the catalog <b>1310</b>. The monitoring process <b>1318</b> determines, based on comparison current file timestamps with previously recorded timestamps, or other such information, whether the file has been altered since the last periodic monitoring cycle. If the file has been altered, then a backup routine <b>1322</b> computes a block difference between the altered file and the previous instance of the file using the file itself <b>1324</b> and either locally-stored information or information obtained from the server-side portion of the backup-restore-and-archiving system. The block difference is a set of Δ blocks determined to include those portions of the file that have been altered and that therefore need to be transmitted to the server-side portion of the backup-restore-and-archiving system for permanent storage. The Δ blocks, or a subset of the Δ blocks that are known to not be currently stored by the server-side portion of the backup-restore-and-archiving system, are added to an upload file <b>1326</b> as well as to a local cache <b>1328</b>. The upload file <b>1326</b> is queued to a queue of upload files <b>1328</b> that are transported, one-by-one, by the transport service process <b>1316</b>, to the server-side portion of the backup-restore-and-archiving system. When a user requests a restore operation through the user-interface routine <b>1302</b>, a restore process <b>1330</b> within the main client-side process <b>1314</b> is invoked to determine those blocks of the file that can be obtained locally, from the local cache <b>1328</b> and any existing portion of the file <b>1332</b>, retrieves all other needed blocks from the server-side portion of the backup-restore-and-archiving system via the transport service process <b>1316</b>, and uses the retrieved blocks and locally available blocks to assemble a restored version of the file <b>1332</b>.
0061The client-side portion of the backup-restore-and-archiving system illustrated in <figref idref="DRAWINGS">FIG. 13A</figref> is but one of many different possible implementations. The backup, restore, catalog, cache, transport, and user-interface functionalities may be combined together into fewer modules and processes, or may, alternatively, be broken up into an even greater number of different functional modules, processes, and services.
0062FIGS. <b>13</b>B-C illustrate functional operation of the server-side portion of the backup-restore-and-archiving system (<b>1004</b> in <figref idref="DRAWINGS">FIG. 10</figref>) that represents one embodiment of the present invention. As shown in <figref idref="DRAWINGS">FIG. 13B</figref>, the one or more web servers <b>1008</b> each include a routing-manager functionality <b>1340</b> that communicates via an SSL layer <b>1342</b> and a communications medium, such as the Internet, with the transport service process (<b>1316</b> in <figref idref="DRAWINGS">FIG. 13A</figref>) of each of the client devices to which the backup-restore-and-archiving system provides backup, restore, and archiving services. The routing manager <b>1340</b> accesses one of the one or more database servers <b>1014</b> to match credentials supplied by a client device after the client device opens an SSL connection to the web server <b>1008</b>, with credentials stored by the server-side-portion active-directory servers <b>104</b>. The one or more database servers <b>1014</b> execute a meta-data manager <b>1344</b> that manages, retrieves information from, and stores information into, various database tables or files that represent a global catalog <b>1346</b>, stored information concerning partners and partner encryption keys <b>1348</b>, stored information concerning the client devices, credentials associated with client devices, and escrowed file-encryption keys for client devices <b>1350</b>, and other information When the routing manager verifies a connecting client device, the routing manager can then accept upload files from client devices and queue the upload files in a shared non-volatile storage <b>1352</b> supplied by the one or more shared non-volatile-storage servers <b>1010</b>. In addition, the routing manager transmits information about received upload files to the meta-data manager <b>1344</b> executing on one of the one or more database servers <b>1014</b> so that the meta-data manager can enter a job request into a job queue <b>1354</b> stored within the database and managed by the meta-data managers of the one or more database servers. Similarly, download files, such as download file <b>1356</b>, may be stored in a download-file queue within the shared non-volatile storage <b>1352</b> for transport by the routing manager <b>1340</b> to client devices.
0063While the bulk of data transferred between client devices and the routing manager consists of upload files representing backup data and download files representing encrypted data blocks needed by a client device to restore a particular file or file-like object, the routing manager <b>1340</b> can also receive additional commands, such as commands involving updates to catalog data for the client device and other such configuration and management commands. In many cases, these commands are directly transferred by the routing manager to the meta-data manager <b>1344</b> executing on a database server, with the meta-data manager either immediately executing the commands and returning a response to the routing manager or queuing the commands in the job queue for later processing. The one or more active-directory servers <b>1016</b> are responsible for managing network objects within a distributed network domain. The various component systems of the server-side portion of the backup-restore-and-archiving system, including services and applications executed by the component systems, data resources, and other such objects, are addressable through a global name space created and managed by the one or more active-directory servers.
0064As shown in <figref idref="DRAWINGS">FIG. 13C</figref>, a workhorse routine <b>1360</b> running on each of the one or more job servers <b>1012</b> is responsible for carrying out backup and restore operations. The workhorse routine <b>1360</b> de-queues successive jobs from the job queue <b>1354</b> stored on, and managed by, the collection of database servers <b>1014</b>, and carries out tasks represented by the de-queued job-queue entries. For backup tasks, the workhorse routine <b>1360</b> retrieves the upload file <b>1362</b> corresponding to a particular job queue entry <b>1364</b> and, using meta data supplied by the meta-data manager <b>1344</b>, disassembles the upload file into a series of file signatures and encrypted data blocks, and stores the file signatures via the meta-data manager <b>1344</b> in the database <b>1014</b> and stores encrypted data blocks associated with the file signature in the permanent database provided by one or more permanent-data servers <b>1018</b>. Similarly, the workhorse routine <b>1360</b> retrieves needed encrypted data blocks, stored file signatures, and other information from the permanent data store <b>1018</b> and database <b>1014</b> upon de-queuing a restore job from the job queue <b>1354</b>, assembles the information into a download file <b>1366</b>, and queues the download file into a queue of download files within the shared non-volatile storage <b>1352</b> for eventual transfer by the routing manager <b>1340</b> to a client device.
0065Thus, returning to <figref idref="DRAWINGS">FIG. 10</figref>, the backup-restore-and-archiving system that represents one embodiment of the present invention includes a potentially very large number of client devices <b>1002</b> that are provided backup, restore, and archiving services by the server-side portion <b>1004</b> of the backup-restore-and-archiving system. The server-side portion of the backup-restore-and-archiving system may be implemented within a single server computer, in a single data center comprising multiple, specialized servers and computer systems, as shown in <figref idref="DRAWINGS">FIG. 10</figref>, or may be implemented as multiple, replicated, multi-component data centers. The server-side portion of the backup-restore-and-archiving system includes a web interface to client devices that is responsible for receiving requests from client devices and routing those requests to appropriate components of the server side of the backup-restore-and-archiving system for execution, and that routes responses and data from the server-side portion of the backup-restore-and-archiving system back to client devices. The server-side portion of the backup-restore-and-archiving system includes a shared, non-volatile storage space <b>1010</b> used for temporarily storing and communicating upload files to job servers <b>1012</b> and download files from job servers <b>1012</b> to the web interface <b>1008</b>. A database portion of the server side of the backup-restore-and-archiving system <b>1014</b> stores metadata needed to track the state of client devices, partners, and current tasks needed to be executed by the backup-restore-and-archiving system, while the permanent data store portion <b>1018</b> of the server side of the backup-restore-and-archiving system stores encrypted data blocks that may be needed by client devices to restore files and file-like objects.
0066FIGS. <b>14</b>A-D illustrate processing, by the main service process (<b>1314</b> in <figref idref="DRAWINGS">FIG. 13A</figref>) of files and file-like objects to generate corresponding file signatures and encrypted data blocks. As shown in <figref idref="DRAWINGS">FIG. 14A</figref>, a file or file-like object <b>1402</b> can be viewed as an ordered sequence of bytes, words, long words, or other primitive data units. In a first step carried out by the main service process on a client device, a file or file-like object resident within the client device <b>1402</b> is logically partitioned into natural blocks. Natural block boundaries are indicated in <figref idref="DRAWINGS">FIG. 14A</figref> by dashed, vertical lines, such as dashed vertical line <b>1404</b>. The natural blocks have varying lengths, and natural block boundaries correspond to boundaries within the file that separate portions of the file that may be relatively independent from one another with respect to incremental alterations of the file over time. In other words, as a file is altered, over time, by edit operations and other file operations, multiple intra-block changes should occur at greater frequency than multiple inter-block changes, so that sets of relatively contemporaneous changes are localized within natural blocks. The varying-length blocking method, however, represents a best estimate of natural blocks within a file or file-like object, and is not guaranteed to exactly partition the file into independent blocks with respect to file alterations.
0067In a next step, the generally relatively small natural blocks are sequentially collected together and formed into successive, approximately fixed-length blocks such as fixed-length block <b>1408</b>. Approximately fixed-length block <b>1408</b>, for example, contains the first four natural blocks <b>1406</b> and <b>1410</b>-<b>1412</b> identified in the first step. The next set of natural blocks <b>1414</b>-<b>1417</b> are coalesced into a next fixed-length block <b>1410</b>. Thus, as a result of the first two steps of the file-processing method, a file or file-like object is partitioned into a set of sequentially ordered, approximately fixed-length blocks that are estimated to be reasonably independent from one another with respect to incremental changes. The approximately fixed-length blocks may also slightly vary in length, due to disparities in the sum of the lengths of the natural blocks coalesced in each approximately fixed-length block. In one embodiment of the present invention, the approximately fixed-length blocks have lengths close to 64K bytes.
0068As shown in <figref idref="DRAWINGS">FIG. 14B</figref>, a block hash is computed for each approximately fixed-length block. In one embodiment of the present invention, the client-device file encryption key <b>1420</b>, a compression-algorithm identifier <b>1422</b>, and an encryption algorithm identifier <b>1424</b> are combined with the data within an approximately fixed-length block <b>1426</b> and processed by a cryptographic hash function, such as the MD5 hash function <b>1428</b>, to produce a block hash <b>1430</b>. Inclusion of the file encryption key, compression algorithm ID, and encryption algorithm ID ensures that, should the file encryption key, compression algorithm, or encryption algorithm be changed by a client, blocks encrypted and compressed by new encryption keys and/or compression algorithms can be easily distinguished from blocks encrypted and/or compressed by previously used encryption keys, encryption algorithms, and/or compression algorithms. Furthermore, inclusion of the file encryption key can blunt certain types of security attacks directed to the server-side portion of the backup-restore-and-archiving system. The block hash <b>1430</b> can be thought of as a numerical summary, or digest, of the original approximately fixed-length block <b>1426</b>. In general, the block hash has a fixed length of, for example, 256 bytes, 512 bytes, 1024 bytes, or another power of 2 bytes. Use of the cryptographic hash function ensures that the chance that two different approximately fixed-length blocks generated by any client device from any file or file-like object residing on the client device have the same block hash is infinitesimally small. In other words, the block hash is, to an extremely high probability, guaranteed to be a unique identifier of the approximately fixed-length block throughout the backup-restore-and-archiving system.
0069As shown in <figref idref="DRAWINGS">FIG. 14C</figref>, each approximately fixed-length block, following computation of the block hash corresponding to the block, is compressed by a compression algorithm <b>1432</b> and then encrypted by an encryption algorithm <b>1434</b> using the client's file-encryption key. These steps produce a generally smaller, encrypted data block <b>1436</b> corresponding to the original approximately fixed-length data block <b>1426</b> identified by the previously computed block hash <b>1430</b>.
0070<figref idref="DRAWINGS">FIG. 14D</figref> illustrates computation of a file signature by the main service process of a client device. As discussed above with reference to FIGS. <b>14</b>A-C, a file or file-like object is first partitioned into a sequence of approximately fixed-length blocks <b>1440</b>-<b>1446</b>. The steps shown in <figref idref="DRAWINGS">FIG. 14B</figref> are carried out for each approximately fixed-length block, represented by arrows, such as arrow <b>1448</b> in <figref idref="DRAWINGS">FIG. 14D</figref>, generate a block hash for each approximately fixed-length block. The block hash together with the length of the approximately fixed-length block comprise a block descriptor, such as the block descriptor <b>1450</b> corresponding to the first approximately fixed-length block <b>1440</b>. An ordered sequence of block descriptors is constructed for the corresponding approximately fixed-length blocks of the file or file object, and a header is appended to the ordered sequence of block descriptors to form a file signature <b>1452</b>. The header <b>1454</b> may include a signature version number, so that the contents and/or format of file signatures can be changed over time, with each file signature self-describing with respect to version as a result of the version identifier included in the header <b>1454</b>. In addition, the header may include the number of block descriptors within the signature, and additional information. A file signature can be represented by a sequence or stream of bytes encoding the header and block descriptors, or may be encoded in a more complex data structure.
0071Thus, from the standpoint of the backup-restore-and-archiving system, a particular instance of a file or file-like object stored within a client device that is continuously monitored and backed up by the backup-restore-and-archiving system is considered to be a file-signature/data-block-sequence pair. A file or file-like object can be fully reconstructed, and is fully specified by, the file-signature and the approximately fixed-length blocks containing the file data. Within the client, the ordered sequence of approximately fixed-length blocks is available if clear-text form, but any approximately fixed-length blocks transmitted from the client to the server-side portion of the backup-restore-and-archiving system are encrypted, so no external entity can access the data contained in them.
0072FIGS. <b>15</b>A-E illustrate file instancing according to embodiments of the present invention. <figref idref="DRAWINGS">FIG. 15A</figref> shows a first, base-level instance of a file. As discussed above, a file or file-like object is processed by the main service process on a client device to generate a signature <b>1502</b> and a sequence of approximately fixed-length blocks <b>1504</b> that are compressed and encrypted for transmission to, and storage within, the server-side portion of the backup-restore-and-archiving system. Thus, the file-signature/approximately-fixed-length-block-sequence pair fully specifies the contents of the file or file-like object from which the file signature and approximately fixed-length blocks are generated. Initially, a file is identified by a client-device user for continuous monitoring and back-up of changes to the file over time. Each time changes to the file are detected, and the file is backed up, a new instance, or version, of the file is generated from the standpoint of the backup-restore-and-archiving system. When a file is initially designated for continuous backup, a file-signature/encrypted-approximately-fixed-length-block-sequence pair is generated, as shown in <figref idref="DRAWINGS">FIG. 15A</figref>, and transmitted to the server-side portion of the backup-restore-and-archiving system to represent the base-level instance of the file.
0073<figref idref="DRAWINGS">FIG. 15B</figref> illustrates a first backup of the file described by the file-signature/encrypted-approximately-fixed-length-block-sequence pair shown in <figref idref="DRAWINGS">FIG. 15A</figref>. When the file is detected to have been altered or edited, a new file signature <b>1506</b> is generated from the current contents of the file. The new file signature is block aligned with the previous file signature <b>1502</b>, and corresponding blocks are compared, as illustrated by horizontal double-headed arrows, such as arrow <b>1508</b> in <figref idref="DRAWINGS">FIG. 15B</figref>. When the block hashes computed for the corresponding approximately fixed-length block differ, then the corresponding approximately fixed-length block has been altered with respect to the original file. In <figref idref="DRAWINGS">FIG. 15B</figref>, approximately fixed-length blocks represented by block descriptors <b>1510</b>-<b>1512</b> are determined, by comparison of the corresponding block descriptors in the first file signature <b>1502</b> and new file signature <b>1506</b>, to have been altered. The approximately fixed-length blocks associated with these file descriptors <b>1514</b>-<b>1516</b> together comprise the list of modified blocks, or Δ blocks. The file-signature comparison discussed with reference to <figref idref="DRAWINGS">FIG. 15B</figref> is an intelligent comparison which allows for new blocks to be inserted within the original block sequence, original blocks to be deleted, and other such large-scale modifications of files to occur without breaking the correspondence between blocks in the first instance of the file with corresponding blocks in the modified file. In other words, two file signatures can be placed in correspondence, and both insertions and deletions detected so that block descriptors following a deletion and/or addition in one file signature remain in correspondence with block descriptors in the other signature, much like DNA sequences corresponding to gene loci can be aligned with one another despite insertion and deletion of subsequences.
0074Thus, as shown in <figref idref="DRAWINGS">FIG. 1</figref><b>5</b>B, following detection of modification or alternation of the file, a new file signature and a set of Δ blocks can be generated so that the combination of the original file signature <b>1502</b> and ordered sequence of approximately fixed-length blocks <b>1504</b>, along with the newly generated file signature <b>1506</b> and Δ blocks <b>1514</b>-<b>1516</b> together fully specify both the original file and the subsequent, altered or modified version of the original file. As shown in <figref idref="DRAWINGS">FIG. 15C</figref>, the data content of both the original file and the modified version of the original file, considered to be instance <b>0</b> and instance <b>1</b> of the file, respectively, comprises the original ordered sequence of approximately fixed-length data blocks <b>1504</b> as well as the generally smaller set of Δ blocks <b>1518</b>. Provided that the original blocks and the Δ blocks are stored within the permanent store of the server-side portion of the backup-restore-and-archiving system, and provided that both the original file signature <b>1502</b> and the more recently generated, second file signature <b>1506</b> are stored in the database portion of the server-side portion of the backup-restore-and-archiving system, either the original file or the subsequently modified file can be fully restored from the stored data blocks, Δ blocks, and file signatures.
0075As shown in <figref idref="DRAWINGS">FIG. 15D</figref>, with each detected modification of the file, determination of Δ blocks, and storage of Δ blocks within the permanent data store, a new instance of the file is generated. In <figref idref="DRAWINGS">FIG. 15D</figref>, six instances of the file have been generated subsequent to backup of the original file. As discussed, the original file is represented by a column of approximately fixed-length blocks <b>1504</b>, and each subsequent instance is represented by a column of Δ blocks <b>1518</b> and <b>1523</b>. By storing the original file blocks and only the Δ blocks for each instance, a much smaller number of data blocks need to be stored to represent all of the instances of the file than by storing each instance in its entirety. Moreover, as discussed in greater detail below, because data blocks are stored in the permanent store of the server-side portion of the backup-restore-and-archiving system and indexed only by their respective block hashes, a data block that occurs in multiple files of a client device, or in multiple files distributed across multiple client devices, needs to be stored only once in the permanent store. In other words, only a single instance of any particular data block identified by a particular block-hash value needs be stored in the permanent store, regardless of how many times that particular data block occurs in the various files distributed across various client devices that are being continuously monitored and backed up by the backup-restore-and-archiving system. Along with the original file blocks and Δ blocks that are stored in the permanent store to represent all of the different instances of a file, as shown in <figref idref="DRAWINGS">FIG. 15D</figref>, the full set of file signatures generated for each successive instance of the file is maintained within the database portion of the server-side portion of the backup-restore-and-archiving system. In certain embodiments of the present invention, the file signatures may be stored using a differential-storage technique, just as data blocks are stored using differential storage. In other words, the first file signature may be stored in its entirety, and only differences between the file signatures computed for the next instance and the previously stored instance are stored.
0076<figref idref="DRAWINGS">FIG. 16</figref> summarizes the information stored on the server-side portion and client-side portion of the backup-restore-and-archiving system that represents one embodiment of the present invention for each file on the client device that is monitored and continuously backed up by the backup-restore-and-archiving system. As shown in <figref idref="DRAWINGS">FIG. 16</figref>, on the server-side portion of the backup-restore-and-archiving system, the file-signature history for the file <b>1602</b> is stored as logically depicted in <figref idref="DRAWINGS">FIG. 1S</figref>E, within the database portion of the server-side portion of the backup-restore-and-archiving system. In addition, compressed and encrypted versions of the data-block history of the file, as illustrated in <figref idref="DRAWINGS">FIG. 15D, 1604</figref> is stored within the permanent store portion of the server-side portion of the backup-restore-and-archiving system. On the client side, it is preferred that the most recently generated file signature for the file <b>1606</b> be stored for each file that is monitored and backed up. By keeping a local copy of the last, most recently generated file signature, the difference between a subsequent instance of the file and the most recently stored instance of the file can be computed entirely from the stored file signature <b>1606</b> and a new file signature generated for the new instance of the file, without needing to access information stored on the server-side portion of the backup-restore-and-archiving system. In addition, as client-side data-storage resources allow, a signature cache <b>1608</b> and data-block cache <b>1610</b> can be maintained on the client device to facilitate restore operations. In the best case, a file can be restored to a previous version, or instance, using only locally stored file signatures and data blocks, without the need to retrieve file signatures and data blocks from the server-side portion of the backup-restore-and-archiving system. However, should the signature cache <b>1608</b>, data block cache <b>1610</b>, and even the most recently generated file signature <b>1606</b> be deleted from the client device, any previously generated and backed up instance of the file can be restored on the client device by first accessing needed file signatures and data blocks from the server-side portion of the backup-restore-and-archiving system.
0077FIGS. <b>17</b>A-B illustrate the logical operation for constructing a particular instance of a file from the file-signature history and data-block history stored for the file according to embodiments of the present invention. <figref idref="DRAWINGS">FIG. 17A</figref> shows the file-signature history for a file as previously discussed with reference to <figref idref="DRAWINGS">FIG. 15E</figref>. In order to construct a full, most recent instance of the file, corresponding block descriptors for each block within the file-signature history need to be traversed until a difference between block hashes in adjoining file signatures is detected. For example, with respect to the first data block in the sixth instance of the file, represented by block descriptor <b>1702</b>, the block descriptors corresponding to that block within the file-signature history are traversed, from most recent to least recent, in order to detect two adjacent file signatures in which the block hash for the block differs. As shown in <figref idref="DRAWINGS">FIG. 17A</figref>, comparison of the block hashes stored in corresponding block descriptors <b>1704</b> and <b>1706</b> of the file signatures corresponding to the fifth instance <b>1708</b> and fourth instance <b>1710</b> of the file are detected to differ, indicating that the difference block computed for the fifth instance of the file is the version of the data block to be included within the sixth instance of the file. <figref idref="DRAWINGS">FIG. 17B</figref> shows the data-block history for the file, as discussed above with reference to <figref idref="DRAWINGS">FIG. 15D</figref>. As can be seen in <figref idref="DRAWINGS">FIG. 17B</figref>, the most recently stored data block corresponding to the first data block of the file <b>1712</b> is the difference block detected and stored during backup of the fifth instance of the file. As another example, all of the block hashes for the final block of the file and all of the file signatures are identical, indicating that the final block of the file has not changed since the original file was stored, and hence the original data block is the data block that should be included in instance <b>6</b>.
0078FIGS. <b>17</b>A-B are intended to illustrate the logical reconstruction of a given instance from the file-signature history and data-block history for a file. However, from a practical standpoint, a particular instance of a file can be completely restored using only the file signature corresponding to that instance and the data block store. This is because each block descriptor within the file signature includes a block hash that uniquely specifies the data block that occurs at the corresponding data-block position within the file.
0079FIGS. <b>18</b>A-B illustrate version-history truncation according to embodiments of the present invention. <figref idref="DRAWINGS">FIG. 18A</figref> shows the block history discussed above with reference to <figref idref="DRAWINGS">FIG. 15D</figref>. It may be the case that, to conserve storage space, the backup-restore-and-archiving system may elect to store only some number of most recent instances of a file. For example, as shown in <figref idref="DRAWINGS">FIG. 18A</figref>, the backup-restore-and-archiving system may choose to store only instances <b>6</b>, <b>5</b>, <b>4</b>, and <b>3</b> for the file, and delete file signatures and unneeded blocks for instances <b>2</b>, <b>1</b>, and <b>0</b>. Conceptually, truncating the instance history, or removing a number of least-recently generated instances, can be thought of selecting a new, least-recently generated instance, represented by the dashed line <b>1802</b> in <figref idref="DRAWINGS">FIG. 18A</figref>, and removing the stored file signatures for previous instances, as well as unneeded data blocks for the previous instances. In <figref idref="DRAWINGS">FIG. 18A</figref>, the unneeded data blocks are shown with an “X” symbol, such as “X” symbol <b>1804</b>. The data blocks representing the data of the third instance of the file are shown with open circles, such as open circle <b>1806</b>. Thus, to truncate the file history, the file signatures corresponding to instances <b>2</b>, <b>1</b>, and <b>0</b> are removed, and the data blocks shown in <figref idref="DRAWINGS">FIG. 18A</figref> with “X” symbols can be deleted from the permanent store. <figref idref="DRAWINGS">FIG. 18B</figref> shows the data-block history following the version truncation discussed with reference to <figref idref="DRAWINGS">FIG. 18A</figref>. As shown in <figref idref="DRAWINGS">FIG. 15B</figref>, the instance previously labeled as “instance <b>3</b>” is now labeled as “instance <b>0</b>” <b>1810</b>, and those data blocks from previous instances that were altered subsequently at or before instance <b>3</b> have been removed. Instance histories can therefore be truncated entirely on the server-side portion of the backup-restore-and-archiving system, without need for reconstructing the original file and generating successive instances up to and including the most recently generated instance to be removed.
0080FIGS. <b>19</b>A-B illustrate security-related entities and operations within the backup-restore-and-archiving system that represents one embodiment of the present invention. These entities and operations are discussed relative to the client-side, server-side, and partner-side portions of the backup-restore-and-archiving system. In describing these entities and operations, a single client device <b>1902</b>, server-side portion <b>1904</b>, and partner <b>1906</b> are considered. The client, partner, and server communicate with one another via secure connections <b>1908</b>-<b>1910</b>. In one embodiment of the present invention, partner/server communications is conducted through a doubly authenticated SSL connection. Client/partner communications are conducted through a single-sided SSL secure connection <b>1908</b>, with the partner supplying an SSL certificate authenticated by a third-party authentication service on behalf of the client. During initial client/server communications, a singly authenticated SSL connection <b>1910</b> is employed. Subsequently, the SSL connection is supplemented by credential transmission on each client's request to the server.
0081The partner <b>1906</b> is an entity independent from the server <b>1904</b> through which a client contracts for services. The partner is also a vital component of the overall security strategy, as discussed below. The partner generates a partner private-key/public-key encryption key pair, maintaining the partner private key <b>1912</b> securely on the partner system and providing the partner public key <b>1914</b> to the server-side portion of the backup-restore-and-archiving system, in turn provided by the server to the client. The partner also includes a stored device ID <b>1916</b> that identifies the client. The client also stores the device ID. The device ID is originally generated on, and stored within, the server <b>1904</b>. The server generates credentials <b>1918</b> on behalf of the client, and furnishes the credentials to the client for securing subsequent client/server communications. The client generates and uses a file-encryption key <b>1920</b> known only to the client. The file-encryption key is used to encrypt data blocks transmitted to, and stored by, the server <b>1904</b>. The client also generates and stores a client encryption key <b>1922</b> used together with the partner public key <b>1912</b> to doubly encrypt the client's file-encryption key <b>1920</b> for storage within the server in doubly encrypted form <b>1924</b>.
0082<figref idref="DRAWINGS">FIG. 19B</figref> illustrates use of the file-encryption key. The file-encryption key <b>1920</b> is used by the client to encrypt each data block <b>1930</b> that is transmitted to, and stored by the server <b>1904</b>. Similarly, the client employs the file-encryption key <b>1920</b> to decrypt data blocks returned by the server to the client used for restoring client file instances. Because the file-encryption key is generated by the client and accessible only to the client, no file data transmitted from the client device to remote entities as part of backup and restore operations can be accessed by remote devices. Although the file-encryption key is escrowed <b>1924</b> within the server <b>1904</b>, the server cannot access the file-encryption key, since the file-encryption key is itself encrypted both by the client-encryption key <b>1922</b> known only to the client and by the partner public encryption key <b>1912</b>. A client may recover a file-encryption key by requesting that the partner retrieve the doubly encrypted file-encryption key escrowed on the server and decrypt the first layer of encryption, returning to the client device the file-encryption key encrypted by the client-encryption key. This ensures that the server cannot access client data or the client's file-encryption key, and the partner cannot access either the file-encryption key or client data. Loss by the client of the file-encryption key is not fatal to the client, since the file-encryption key is escrowed within the server <b>1904</b>.
0083<figref idref="DRAWINGS">FIG. 19C</figref> illustrates retrieval of a file-encryption key by a client device in the event that the client inadvertently deletes or loses the file-encryption key. Without the file-encryption key, the client cannot decrypt encrypted data blocks returned to the client by the server. However, the client file-encryption key is escrowed in doubly encrypted form <b>1924</b> on the server <b>1904</b>. Therefore, in order to retrieve the file-encryption key, the client sends a request <b>1936</b> to the partner <b>1906</b> to retrieve the file-encryption key, and the partner, in turn, forwards the request to the server <b>1904</b>. The server returns the doubly encrypted file-encryption key <b>1924</b> to the partner, which decrypts the first level of encryption to produce a file-encryption key singly encrypted with the client's client-encryption key <b>1938</b>. The singly encrypted file-encryption key <b>1938</b> is returned to the client <b>1902</b>, which decrypts the file-encryption key using the client-encryption key to regenerate the file-encryption key in clear form <b>1940</b>.
0084<figref idref="DRAWINGS">FIG. 19D</figref> illustrates secure communications between the client device and server facilitated by client credentials. When the server requests a service from the server, such as processing of an upload file to back up currently altered client files, the client includes, within the request, the device ID <b>1916</b> that represents the client along with credentials <b>1918</b>, such as a user name and password generated by the server and supplied to the client computer during client initialization. Upon receiving the request, the server can verify that the request has been received from a valid client by matching the device ID and credentials included with the request with a stored device ID <b>1916</b> and credentials within the active-directory portion of the server-side portion of the backup-restore-and-archiving system. Thus, the device ID and credentials allows the server to identify requests as having been received from a particular client, verify the request, and route the request through the server-side portion of the backup-restore-and-archiving system so that a response generated from the request can be returned to the requested client.
0085FIGS. <b>20</b>A-C provide a type of control-flow diagram illustrating initialization of a client so that the client can conduct fully secure request and data exchanges with the server-side portion of a backup-restore-and-archiving system that represents an embodiment of the present invention. First, in step <b>2002</b>, the client prepares and sends a request for receiving backup and restore services to a partner. The client may prepare and send the request via interaction with a partner-supplied web page, via a partner-supplied initialization routine, or by another method. In step <b>2004</b>, the partner receives the backup and restore service request from a client and, in step <b>2006</b>, verifies that the request came from a legitimate client device, carries out any other additional verification, such as attempting to match the client device with a list of unfavored devices, establishes a stored data entry for the client by which the partner may eventually track the client and subsequently identify and interact with the client, and requests provision of the new device from the server by sending a device-provision request to the server. The receiver receives the device-provision request in step <b>2008</b>, and, in step <b>2010</b>, prepares a single-use device ticket that the server then returns to the partner. The single-use device ticket includes a URL by which the client can subsequently contact the server <b>2012</b>, a ticket ID that uniquely identifies the single-use ticket within the backup-restore-and-archiving system <b>2014</b>, and a device ID generated to represent the client <b>2016</b>. The partner receives the single-use device ticket in step <b>2018</b> and updates the client information stored by the partner to include the device ID contained in the ticket before forwarding the ticket, in step <b>2020</b> to the client device. The partner may, in addition, send optional information to the ticket prior to forwarding the ticket to the client device. For example, a group of client devices may elect to use a common client-encryption key and other such information generated on behalf of the clients by the partner. The optional information appended to the ticket may include this key. In step <b>2022</b>, the client device receives the single-use ticket. In step <b>2024</b>, the client installs a client-side application that implements the client-side user-interface routine and service processes discussed with reference to <figref idref="DRAWINGS">FIG. 13A</figref>. Once the client-side executables are installed and executing, the client, in step <b>2026</b>, establishes a secure connection with the server and sends the ticket ID <b>2014</b> contained in the single-use device ticket received by the client to the server. In step <b>2028</b>, the server receives the ticket ID and then, continuing with <figref idref="DRAWINGS">FIG. 20B</figref>, validates the ticket ID and accepts the previously generated device ID and partner information for the client in step <b>2030</b>. The server then configures the server-side portion of the backup-restore-and-archiving system to provide services to the client device identified by the device ID in step <b>2032</b> and generates, in step <b>2034</b>, credentials for the client device, such as a password and user name. The server then, in step <b>2036</b>, prepares a response for the client <b>2038</b> that includes the generated user name <b>2040</b>, password <b>2042</b>, and the partner's public key <b>2044</b>, and returns the response <b>2038</b> to the client. In step <b>2050</b>, the client receives the response and then, in step <b>2052</b>, using the information contained in the response, configures the client-side processes for subsequent request and data exchanges with the server. In step <b>2054</b>, the client generates the client's file-encryption key and generates the client's client-encryption key via a password-based method. By remembering the password, the client can re-generate the client-encryption key at a subsequent time. Then, in step <b>2056</b>, the client encrypts the file-encryption key with the client-encryption key, and then encrypts the encrypted file-encryption key with the partner's public key to produce a doubly encrypted file-encryption key. In step <b>2058</b>, the client sends the doubly encrypted file-encryption key to the server, which receives the doubly encrypted file-encryption key in step <b>2060</b> and stores, or escrows, the doubly encrypted file-encryption key. In step <b>2062</b>, the client returns an acknowledgement to the client, which, upon receiving the acknowledgement in step <b>2064</b>, is prepared to subsequently issue requests to the server and exchange data with the server. The secure connection between the client and server may operate only for short periods of time, and may be re-established by the client for subsequent requests and data exchanges. Once the client possesses the device ID and credentials, the client can re-establish a fully secure connection to the server at any point in time.
0086<figref idref="DRAWINGS">FIG. 21</figref> illustrates, at an overview level, the block store implemented by the permanent-store portion of the server-side portion of the backup-restore-and-archiving system that represents one embodiment of the present invention. In FIG. <b>21</b>, the block store <b>2102</b> is illustrated as containing a block-hash index <b>2104</b>, each entry of which references a particular encrypted data block, such as data block <b>2106</b>, stored within the block store. In addition to containing a reference for a particular data block, an entry in the block-hash index may also include a reference count to indicate the number of file signatures that currently reference the block. In this way, only a single instance of any particular data block need be stored in the data store, despite the fact that multiple files distributed across multiple clients may include the data block. Operations provided by the block store include (1) query; (2) retrieve; (3) store; and (4) delete. In the query operation <b>2108</b>, the block store receives a block hash <b>2110</b> and consults the block-hash index to determine whether an encrypted data block corresponding to the block hash is currently stored in the block store. An indication <b>2112</b> of whether or not a data block corresponding to the block hash is currently stored in the block store is returned. In the retrieve operation <b>2114</b>, the block store receives a block hash <b>2116</b> and returns the encrypted data block <b>2118</b> corresponding to the block hash from the block store in the event that a currently stored encrypted data block corresponds to the supplied block hash <b>2116</b>. In the store operation <b>2120</b>, the block store receives a block hash and an encrypted data block and, when the encrypted data block is not already stored within the block store, stores the data block and updates the block-hash index to the supplied block hash to reference the data block. If the encrypted data block is already stored within the block store, the reference count for the data block is incremented. In the delete operation <b>2126</b>, the block store receives a block hash and decrements the reference count for the block hash if the block hash currently resides within the block-hash index. If the reference count is decremented to 0, then the data block referenced by the block-hash index is also deleted, prior to removing the block-hash-index entry corresponding to the block hash.
0087The block hash methodology and block store described with reference to <figref idref="DRAWINGS">FIG. 21</figref> allows for both differential backup and restore. <figref idref="DRAWINGS">FIG. 22</figref> illustrates differential backup. As shown in <figref idref="DRAWINGS">FIG. 22</figref>, the final signature <b>2202</b> generated for a newly updated file is compared, on the client, with the most recently, previously generated file signature <b>2204</b> for the file to determine which blocks of the file have changed <b>2206</b>. The block hashes for these changed blocks can be packaged together into a message <b>2208</b> that can be sent to the server. The server then queries the block store to determine which of the block hashes are not currently stored in the block-hash index of the block store, as discussed above with reference to <figref idref="DRAWINGS">FIG. 21</figref>. Only the data blocks corresponding to those block hashes need be sent by the client to the server during the backup process. The server thus returns an indication <b>2212</b> of the block hashes of the Δ blocks <b>2206</b> that are not currently stored in the block store, and the client, in preparing an upload file, needs only to transmit the newly generated file signature <b>2202</b> and those data blocks corresponding to the block hashes <b>2212</b> returned by the server. Differential backup eliminates unnecessary data exchanges between the client and server. A two-phase commit protocol can be used to ensure that data blocks are not deleted from the data-block store in the interval between a query and data-block transmission.
0088<figref idref="DRAWINGS">FIG. 23</figref> illustrates differential restore. In differential restore, the file signature <b>2302</b> for the desired instance is compared with the file signature <b>2304</b> for the file as it currently exists on the client. The comparison generates a set of Δ blocks <b>2306</b> representing the data that needs to be recovered in order to restore the file to the desired version, or instance. However, certain of these Δ blocks may reside within the local block cache <b>2308</b> maintained by the client, so only those Δ blocks <b>2310</b> not locally stored need to be recovered from the server in order to restore the file to the desired instance. In the case that the local data-block hash is extensive, and the desired instance relatively recently backed up, it is possible that the restore operation may be fully executed locally, on the client device, without the need to obtain encrypted data blocks from the server.
0089FIGS. <b>24</b>A-B provide a flow diagram for the backup process carried out by the main service process on the client side of the backup-restore-and-archiving system that represents one embodiment of the present invention. In step <b>2402</b>, a new manifest and upload and a new upload file are created. Next, in the for-loop comprising steps <b>2404</b>-<b>2411</b>, each file of a set of files that are flagged for differential backup are processed. For each file, the current file signature is computed, in step <b>2405</b>. If the previously computed file signature is not locally stored, as determined in step <b>2406</b>, then the previously computed file signature is retrieved from the server, in step <b>2407</b>. Next, in step <b>2408</b>, the file signatures are compared to generate a list of Δ blocks that may need to be encrypted and transferred to the server as part of the backup process. In step <b>2409</b>, this list of blocks is packaged into the upload file, and the results of the differential comparison are recorded in the manifest in step <b>2410</b>. If more files need to be processed, as determined in step <b>2411</b>, then control flows back to step <b>2405</b>. Once all the files have been processed, the upload file is sent to the server, in step <b>2412</b>. In step <b>2414</b>, the backup routine receives from the server the list of data blocks that actually need to be transferred to the server. In other words, the server has queried the block store to determine which of the Δ blocks are already stored in the block store, as discussed above with reference to <figref idref="DRAWINGS">FIG. 22</figref>. Continuing to <figref idref="DRAWINGS">FIG. 24B</figref>, the backup routine opens a final upload file, in step <b>2416</b>, and, in the for-loop comprising steps <b>2418</b>-<b>2420</b>, the file signature and encrypted data-blocks that need to be transported to and stored on the server are added to the final upload file. In step <b>2422</b>, the final upload file is transmitted to the server, and the server stores the file signatures in the data base, data blocks in the data store, and returns a catalog-sync response to the client so that the client can synchronize the local catalog with the remote catalog, including updating the file-signature history of all files that have been successfully backed up. In step <b>2426</b>, the client receives the catalog-sync response and accordingly synchronizes the local catalog in step <b>2428</b>. In step <b>2430</b>, the backup routine compares the catalog synch with the manifest. If it turns out that problems have been encountered by the server, and certain backup operations have not been successfully executed, as determined in step <b>2432</b>, then those problems are handled, in step <b>2434</b>, in various ways. For example, backup requests may be re-issued, files may be flagged as temporarily defective, and restored through more comprehensive restoration techniques, or other methods may be employed to correct or ameliorate any encountered problems. Finally, in step <b>2436</b>, the manifest is closed and temporary files and data structures are removed to complete the backup operation.
0090<figref idref="DRAWINGS">FIG. 25</figref> is a control-flow diagram illustrating the restore operation carried out by the main service process executing on a client device according to one embodiment of the present invention. In step <b>2502</b>, the restore operation is invoked for restoration of a file to a particular version. If the file signature for the desired version is not locally available, as determined in step <b>2504</b>, then that file signature is requested from the server in step <b>2506</b>. Next, in step <b>2508</b>, the restore routine determines which blocks need to be recovered from the server in order to restore the instance, as discussed above with reference to <figref idref="DRAWINGS">FIG. 23</figref>. A blocks-needed list is packaged into an upload file, in step <b>2510</b> that is then transmitted to the server in step <b>2512</b>. In step <b>2514</b>, the restore routine receives the needed blocks and catalog-sync information from the server. In step <b>2516</b>, the local catalog is synchronized by updating the local catalog, if necessary, to reflect successful restoration of the file. In step <b>2518</b>, the data blocks for the file are assembled to form the desired instance of the file which is then used in step <b>2520</b>, to replace the existing file with the restored file. In other words, the restore operation illustrated in <figref idref="DRAWINGS">FIG. 25</figref> overwrites an existing file with a desired version. Alternatively, a restore operation may be directed to restore a particular version of a file as a new instance of the file, or as a different file with a different file name.
0091The backup-restore-and-archiving system of the present invention is flexible with regard to the particular encryption algorithms, compression algorithms, and specific file-encryption key used by a client device. As discussed above, identifiers for the compression algorithm, encryption algorithm, and file-encryption key are included in the block hash calculation, so that if the client decides to change file-encryption keys at some point in time after files have been backed up using the previous file-encryption key, the client can begin using a newly generated file-encryption key, and the server can begin receiving data blocks encrypted by the new file-encryption key while, over time, the server returns data blocks encrypted by the old encryption key to the client for re-encryption with a new file-encryption key and retransmission to the server. In other words, for a certain period of time, data blocks encrypted both with the old file-encryption key and the new file-encryption key can be maintained, without ambiguity, by the backup-restore-and-archiving system while migration to the new file-encryption key is carried out.
0092Although the present invention has been described in terms of a particular embodiment, it is not intended that the invention be limited to this embodiment. Modifications within the spirit of the invention will be apparent to those skilled in the art. For example, an almost limitless number of different Web-Services-based data-backup and data-archiving applications are possible, including implementations that differ in control structures, programming language, data structures, modularization, and a whole host of other such programming parameters. While the described embodiments implement a remote data-backup and data-archiving service using the Web-Services platform and Internet communications, other remote data-backup and data-archiving services that represent embodiments of the present invention that employ different protocol standards and specifications and different communications media are also possible. Although the described embodiments provide a relatively concise application interface to client-side and partner-services provider applications, alternative embodiments may provide far more complex and feature-rich interfaces. Any of a wide variety of different public/private encryption schemes, hash-based encryption, symmetric encryption, or other encryption techniques may be employed to encrypt data and messages used for client initialization and data transfer in the various embodiments of the present invention. While the described embodiments primarily involve backup and archiving of data files, any type of data object required to be backed up or archived by client computer may be packaged within a file for transmission and storage in the data vault. Each client computer may be associated with multiple data-backup and data-archiving devices configured by one or more data-vaults.
0093The foregoing description, for purposes of explanation, used specific nomenclature to provide a thorough understanding of the invention. However, it will be apparent to one skilled in the art that the specific details are not required in order to practice the invention. The foregoing descriptions of specific embodiments of the present invention are presented for purpose of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Obviously many modifications and variations are possible in view of the above teachings. The embodiments are shown and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated.
Contents6
47 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24 Sheet 25 Sheet 26 Sheet 27 Sheet 28 Sheet 29 Sheet 30 Sheet 31 Sheet 32 Sheet 33 Sheet 34 Sheet 35 Sheet 36 Sheet 37 Sheet 38 Sheet 39 Sheet 40 Sheet 41 Sheet 42 Sheet 43 Sheet 44 Sheet 45 Sheet 46 Sheet 47
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US10838827B2 | Cited by | United States of America | Search report |
| US8738577B1 | Cited by | United States of America | Applicant |
| US9002976B2 | Cited by | United States of America | Applicant |
| US2014181034A1 | Cited by | United States of America | Pre-grant |
| EP2105836A1 | Cited by | European Patent Office (EPO) | Search report |
| US9916460B2 | Cited by | United States of America | Applicant |
| US2009307236A1 | Cited by | United States of America | Pre-grant |
| US12254099B2 | Cited by | United States of America | Search report |
| US8600947B1 | Cited by | United States of America | Search report |
| US9401898B2 | Cited by | United States of America | Applicant |
| US10540237B2 | Cited by | United States of America | Applicant |
| US2007250671A1 | Cited by | United States of America | Pre-grant |
| US9137018B2 | Cited by | United States of America | Applicant |
| WO2010114777A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US11290531B2 | Cited by | United States of America | Applicant |
| US10169148B2 | Cited by | United States of America | Search report |
| US9043282B2 | Cited by | United States of America | Applicant |
| US11734463B2 | Cited by | United States of America | Applicant |
| US2014156714A1 | Cited by | United States of America | Pre-grant |
| WO2009038535A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US10616187B2 | Cited by | United States of America | Search report |
| US10740190B2 | Cited by | United States of America | Search report |
| US8949661B1 | Cited by | United States of America | Search report |
| US8769186B2 | Cited by | United States of America | Applicant |
| US11256665B2 | Cited by | United States of America | Applicant |
| US10025940B2 | Cited by | United States of America | Applicant |
| US2014115347A1 | Cited by | United States of America | Pre-grant |
| US2015332280A1 | Cited by | United States of America | Pre-grant |
| US11301592B2 | Cited by | United States of America | Applicant |
| US8412934B2 | Cited by | United States of America | Search report |
| US2011252232A1 | Cited by | United States of America | Pre-grant |
| US10685038B2 | Cited by | United States of America | Applicant |
| US8805925B2 | Cited by | United States of America | Search report |
| US9015122B2 | Cited by | United States of America | Search report |
| US9081888B2 | Cited by | United States of America | Applicant |
| US2011167107A1 | Cited by | United States of America | Pre-grant |
| CN110351363A | Cited by | China | Search report |
| US9483655B2 | Cited by | United States of America | Search report |
| US2022158984A1 | Cited by | United States of America | Search report |
| US2011185193A1 | Cited by | United States of America | Pre-grant |
| US2010070764A1 | Cited by | United States of America | Pre-grant |
| US2015309882A1 | Cited by | United States of America | Pre-grant |
| US2011167129A1 | Cited by | United States of America | Pre-grant |
| US2011167102A1 | Cited by | United States of America | Pre-grant |
| US2013275390A1 | Cited by | United States of America | Pre-grant |
| US11194758B1 | Cited by | United States of America | Search report |
| US2012260099A1 | Cited by | United States of America | Pre-grant |
| US8635670B2 | Cited by | United States of America | Search report |
| US8055614B1 | Cited by | United States of America | Search report |
| US9747333B2 | Cited by | United States of America | Applicant |
| US9231927B2 | Cited by | United States of America | Search report |
| TWI474164B | Cited by | Taiwan Province of China | Examiner |
| US2016321141A1 | Cited by | United States of America | Pre-grant |
| US7702947B2 | Cited by | United States of America | Search report |
| US8954398B1 | Cited by | United States of America | Applicant |
| US9128949B2 | Cited by | United States of America | Applicant |
| US2012084595A1 | Cited by | United States of America | Pre-grant |
| US9268797B2 | Cited by | United States of America | Search report |
| US9800579B2 | Cited by | United States of America | Search report |
| CN113641694A | Cited by | China | Search report |
| US9003200B1 | Cited by | United States of America | Applicant |
| US2011173438A1 | Cited by | United States of America | Pre-grant |
| US2011078120A1 | Cited by | United States of America | Pre-grant |
| US9929861B2 | Cited by | United States of America | Applicant |
| US7441092B2 | Cited by | United States of America | Search report |
| US2016088080A1 | Cited by | United States of America | Pre-grant |
| US10432394B2 | Cited by | United States of America | Search report |
| JP2012523044A | Cited by | Japan | Examiner |
| US2009288146A1 | Cited by | United States of America | Pre-grant |
| US2014006856A1 | Cited by | United States of America | Pre-grant |
| US8862547B2 | Cited by | United States of America | Search report |
| US10795775B2 | Cited by | United States of America | Search report |
| US2013073691A1 | Cited by | United States of America | Pre-grant |
| WO2010141509A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2013283049A1 | Cited by | United States of America | Pre-grant |
| US11443061B2 | Cited by | United States of America | Applicant |
| WO2010029559A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2017075775A1 | Cited by | United States of America | Search report |
| US10289607B2 | Cited by | United States of America | Applicant |
| US11184335B1 | Cited by | United States of America | Search report |
| US8504870B2 | Cited by | United States of America | Search report |
| US9715594B2 | Cited by | United States of America | Search report |
| US9934382B2 | Cited by | United States of America | Applicant |
| US2016292043A1 | Cited by | United States of America | Search report |
| US2013034229A1 | Cited by | United States of America | Pre-grant |
| US8943356B1 | Cited by | United States of America | Search report |
| US9336224B2 | Cited by | United States of America | Applicant |
| US11113152B1 | Cited by | United States of America | Search report |
| US2016371499A1 | Cited by | United States of America | Pre-grant |
| US9575978B2 | Cited by | United States of America | Applicant |
| US9338008B1 | Cited by | United States of America | Applicant |
| US11263020B2 | Cited by | United States of America | Search report |
| US2017140157A1 | Cited by | United States of America | Pre-grant |
| US2008016127A1 | Cited by | United States of America | Pre-grant |
| US2019108366A1 | Cited by | United States of America | Search report |
| US11366939B1 | Cited by | United States of America | Applicant |
| US10453068B2 | Cited by | United States of America | Search report |
| US11159496B2 | Cited by | United States of America | Search report |
| US2007168721A1 | Cited by | United States of America | Pre-grant |
| US2016239388A1 | Cited by | United States of America | Pre-grant |
18 members in 10 offices
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 72581205 | United States of America | P | |
| 72581205 | United States of America | P | |
| 58042506 | United States of America | A | |
| 60725812 | – | – | – |
| US20050725812P | – | – | – |
| US20060580425 | – | – | – |
Members18
| Document | Office | Kind | |
|---|---|---|---|
| AU2006299819A1 | Australia | A1 | |
| CA2625893A1 | Canada | A1 | |
| WO2007044964A2 | World Intellectual Property Organization (WIPO) | A2 | |
| US2007100913A1 | United States of America | A1 | |
| KR20080066790A | Republic of Korea | A | |
| EP1949270A2 | European Patent Office (EPO) | A2 | |
| JP2009512077A | Japan | A | |
| WO2007044964A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP1949270A4 | European Patent Office (EPO) | A4 | |
| CN101647006A | China | A | |
| AU2006299819B2 | Australia | B2 | |
| EP1949270B1 | European Patent Office (EPO) | B1 | |
| AT504878T | Austria | T | |
| ATE504878T1 | Austria | T1 | |
| DE602006021217D1 | Germany | D1 | |
| US8041677B2 | United States of America | B2 | |
| JP5563220B2 | Japan | B2 | |
| CA2625893C | Canada | C |
67 transactions on the USPTO file
Allowed after 3 non-final rejections, 1 final rejection and 1 appeal.
- Non-final rejections
- 3
- Final rejections
- 1
- RCEs
- 0
- Appeals
- 1
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Entity status set to undiscounted (initial default setting or status change)BIG. | BIG. | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Workflow - Drawings FinishedDRWF | DRWF | |
| Mail PUB other miscellaneous communication to applicantMM327-D | MM327-D | |
| PUB Other miscellaneous communication to applicantM327-D | M327-D | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Workflow - Drawings FinishedDRWF | DRWF | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail PUB other miscellaneous communication to applicantMM327-D | MM327-D | |
| PUB Other miscellaneous communication to applicantM327-D | M327-D | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Appeal Brief Review CompleteAPBR | APBR | |
| Appeal Brief FiledAP.B | AP.B | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Notice of Appeal FiledN/AP | N/AP | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| Applicant has submitted new drawings to correct Corrected Papers problemsCORRDRW | CORRDRW | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
6 recorded assignments at the USPTO, latest first
- Now
Now: Held by
OPEN TEXT INC - 2023-10-12
Certificate of conversion
- From
- CARBONITE, INC.
- To
- CARBONITE, LLC
Recorded 2023-10-12, Signed 2022-09-29
- 2023-10-12
Assignment and assumption agreement
- From
- CARBONITE, LLC
- To
- OPEN TEXT INC.
Recorded 2023-10-12, Signed 2022-10-01
- 2019-03-26
Termination of patent security agreement filed at r/f 045640/0335
Security interest- From
- SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
- To
- CARBONITE, INC.
Recorded 2019-03-26, Signed 2019-03-26
- 2018-03-19
Security interest.
Security interest- From
- CARBONITE, INC.
- To
- SILICON VALLEY BANK
Recorded 2018-03-19, Signed 2018-03-19
- 2017-10-24
Assignment of assignors interest.
- From
- DATACASTLE CORPDATACASTLE CORPORATION
- To
- CARBONITE GMBH
Recorded 2017-10-24, Signed 2017-08-14
- 2006-10-26
Assignment of assignors interest.
Ownership change- From
- SUMNER GARY STEVENAMMONS JAYBE MARKLIDDELL MIKE
- To
- DATACASTLE CORPDATACASTLE CORPORATION
Recorded 2006-10-26, Signed 2006-10-09
12 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| Fee payment procedureENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.)FEPP | FEPP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 20070100913
- Publication, DOCDB
- 2007100913
- Publication, EPODOC
- US2007100913
- Application
- 11580425
- Application, DOCDB
- 58042506
- Application, EPODOC
- US20060580425
Titles
- English
- Method and system for data backup
Patent term adjustment
- A delay
- +188 daysthe office missed an examination deadline
- B delay
- +547 dayspendency past three years
- Applicant delay
- −461 days
- Net adjustment
- 274 days
Classification
- CPC, 13
- H04L9/0894
- G06F15/16
- G06F11/1453
- G06F11/1464
- G06F21/6218
- G06F21/6227
- G06F21/6245
- G06F2201/83
- H04L2209/30
- G06F16/958
- G06F12/16
- G06F21/00
- G06F17/40
- IPC, 4
- G06F17 30
- G06F21 33
- G06F21 60
- G06F21 62
- USPC, 5
- 001001000
- 707999204
- 707E17010
- 707E17107
- 714E11125