In general, the present invention relates to networked computers and computer software and, in particular, to a system and method for dynamically maintaining and updating computer software stored on networked computers.
Currently, computer software is regarded as discrete versions being updated only occasionally. Typically, software is updated by the use of discrete patches, which either replace old versions of the computer software with newer versions or incorporate the difference included in the discrete patch into the existing version. Discrete patches are specifically designed to update a specific version of a computer program to a current version.
Historically, discrete patches were obtained in physical form (e.g., on a 3.5″ diskette, or Compact Disk) as an update to an existing program. For example, a user who owned a copy of Windows® 2000, published by Microsoft®, a discrete version of software, may obtain a discrete update (or service pack) on a Compact Disk, that would be used to update the computer software. For example, the discrete update may improve the reliability and security of Windows® 2000.
More recently, with the increased usage of networked computers, increased bandwidth and speed of communication mediums, and increased use of the Internet, discrete patches are now available online and are much more accessible to end users. For example, a user may access a server containing discrete updates and download an appropriate update directly to the user's computer. However, as with the historical technique, the patches remain discrete—each patch is predesigned to update a specific known version of a program to a specific point or new version.
The published information is available via network 111 for download by client computers 103, 105, 107, 109. At block 203, a client computer downloads the current file name and hash value provided by the publishing computer 101 and determines, at decision block 205, whether its local file has the same hash value as the hash value published at block 201. If the client computer determines at block 205 that its local file has the same hash value as the published hash, the process 200 completes, as illustrated by block 207. Matching hash values indicates to the client computer that it has a current version of the computer software 113.
Returning to decision block 205, if the client computer determines that its local file does not have the same hash value as the published hash value, the client computer, via network 111, uploads its local hash value to the publishing computer 101, as illustrated by block 209. Publishing computer 101, upon receipt of an uploaded local hash value from a client computer, at block 211, determines what version of computer software 113 is currently residing on the client computer. This determination is accomplished by referring to the local hash value that has been uploaded by the client computer and comparing it to a list of hash values and corresponding versions maintained by the publishing computer 101. For example, if client computer 103 uploaded a hash value for file version 1.0 103A, it would be the same hash value for any client computer containing file version 1.0. However, if a client computer, such as client computer 105, uploaded a hash value for file version 1.1 105A, it would be a different hash value than the hash value for file version 1.0 103A. Thus, the publishing computer 101 can determine based on the uploaded local hash value what version of the computer software is currently resident on a client computer.
Once publishing computer 101, at block 211, has determined what version of computer software 113 is present on the client computer, publishing computer 101 identifies the appropriate discrete patch 115, 117, 119 needed to update the client computer, and publishes that discrete patch 115, 117, 119, as illustrated by block 213, for download. For example, if client computer 103 had uploaded a hash value identifying that it currently had file version 1.0 103A, the publishing computer 101 would properly identify discrete patch 115. Discrete patch 115 includes information necessary to update file version 1.0 103A to the current file version 3.0 113.
Continuing with the example of updating client computer 103, at block 215 client computer 103 downloads discrete patch 115. At block 217, client computer 103 applies the discrete patch 115 to local version 1.0 103A, thereby updating local version 1.0 103A to match current version 113. Upon applying discrete patch 115 and updating the version 103A contained on local computer 103, the process completes, as illustrated by block 207.
While the technique illustrated in
A publishing computer 301 maintains a main file 313 containing a list of computer virus signatures and a daily file 315, also containing a list of computer virus signatures. The daily file 315 is updated with new virus signatures as new computer viruses are discovered and defined, while the main file 313 remains the same. As a result, the daily file 315 continues to grow as updates occur. When the daily file 315 reaches a predetermined size, all the virus signatures in the daily file 315 are appended to the main file 313. The main file 313 becomes a new main file 313. The daily file 315, after the information contained in it has been appended to the main file 313, is cleared and the process repeats.
For explanation purposes of the above technique, a five day example is provided. On Day 1, the daily file 315 contains one virus signature, and the main file 313 contains four hundred virus signatures. On Day 2, the main file 313 remains the same at four hundred virus signatures, while ten new virus signatures are added to the daily file 315. On Day 3, the main file 313 remains the same at four hundred virus signatures, and twelve new virus signatures are added to the daily file 315. On Day 4, the main file 313 again remains the same at four hundred virus signatures, while five new virus signatures are added to the daily file 315. Thus, at the end of Day 4, the main file 313 remains unchanged from Day 1, still containing four hundred virus signatures, while the daily file 315 has grown from one virus signature to twenty-eight virus signatures. Assuming the predetermined size for the daily file 315 is reached at the end of Day 4, the twenty-eight virus signatures residing in the daily file 315 are appended to the main file 313 and the daily file 315 is cleared. At the beginning of Day 5, the main file 313 contains four hundred twenty-eight virus signatures and the daily file 315 contains zero virus signatures.
With continuing reference to
While the update process illustrated in
Based on the above-mentioned deficiencies associated with existing software update techniques, and in particular, virus signatures update techniques, there is a need for a system and method that updates computer software and other digital information, such as virus signatures, in an efficient manner that minimizes the burden on both the publishing computing device and the client computing device.
A system and method for dynamically updating digital information, such as a data file, between computing devices in a computer network are provided. A data file identifier, such as a file name, and a unit identifier, such as the size of the data file, are provided by a publishing computing device. The publishing computing device receives a request for a delta portion of the data file and, in response to the request, dynamically generates a patch including a copy of the requested delta portion of the data file. Once the patch is generated, the publishing computing device provides the patch to the requesting party.
In accordance with an aspect of the present invention, a method for updating a local data file is provided. In accordance with the method, a local computing device containing the local data file obtains a data file identifier identifying a master data file. The local computing device also obtains a unit identifier representative of a master data file. After obtaining the identifiers, the local computing device determines a delta between the master data file and the local data file and obtains a patch containing a copy of a delta portion of the master data file. Finally, after obtaining the patch, the local computing device updates the local data file with the patch.
In accordance with another aspect of the present invention, a method of providing data file updates to at least one computing device in communication, via a network, with another computing device is provided. In accordance with the method, a data file identifier and size is published on the network. A request is received from a source for a portion of the identified data file. Upon receipt of the request, a determination is made as to whether the source is authorized to receive the requested portion of the data file. After authentication, a data file update that is representative of the requested portion of the data file is generated and provided to the source.
In accordance with a further aspect of the present invention, a computer system having a computer-readable medium having a computer-executable program therein for performing the method of validating a local data file and updating the local data file is provided. In accordance with the method, the computer system receives a first transmission of information, the first transmission of information including a name for a master data file, a size of the master data file, and a digital signature. The computer system validates the local data file with the received digital signature and determines the difference in the size of the local data file and the size of the master data file. Once the difference is determined, the computer system requests a portion of the master data file representative of the difference in the size. In response to the request, the computer system receives a second transmission of information that includes the requested portion of the master data file and regenerates the local data file in response to the received second transmission.
The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
Generally described, embodiments of the present invention regard computer software and updates as a continuously evolving entity. More specifically, the present invention corresponds to a system and method for updating a “data file” located on a client computing device to match a master data file contained on a publishing computing device. A “data file” as used herein is any collection of digital information that may be modified or altered over time by the inclusion of additional digital information. For example, a data file may be, but is not limited to, a collection of virus signatures, a collection of spam rules, a collection of personal contacts, a collection of digital documents, a collection of advertisement blocking rules, etc. The data file is updated by allowing a client computing device to determine the differences between a master data file and its local data file, and having a publishing computing device dynamically generate an appropriate patch that is downloaded and applied by the client computing device.
Embodiments of the present invention allow a publishing computing device to maintain a limited number of master data files and limits the amount of load required by a publishing computing device for determining what portion of a master data file is to be provided to a client computing device requesting an update. Additionally, embodiments of the present invention reduce the client side burden by only requiring that a client computing device download a particular portion of a master data file or digital information a limited number of times. Minimizing client side burden improves customer satisfaction with computer updates, increases stability of the computing platform, and increases the overall ease of use of computing devices by an end user.
Although the present invention will be described with regard to a computing device network utilizing a server as a publishing computing device publishing dynamic updates, and client computing devices as the computing devices receiving the updates, those skilled in the relevant art will appreciate that the present invention may be implemented in any variety of computing devices. For example, the publishing computing device may include multiple servers, and the client computing device may be an administrator of multiple client computing devices, other servers, etc. As illustrated with reference to
For clarity and ease of description, the discussion provided for
In general, the publishing computing device 601 publishes on the network 609 a master data file identifier 615, such as master data file name, and a master data file “unit identifier” 617, as illustrated by
The client computing device 603 communicates with the publishing computing device 601 via the communications network 609 and requests from the publishing computing device 601 the particular “delta” 619 portion of the master data file 605 that the client computing device 603 requires in order to update the local data file 607 (
In response to the request for the delta 619, the publishing computing device 603 dynamically generates an appropriate patch and publishes the dynamic patch 621 on the network 609 as illustrated in
Referring to
If it is determined at decision block 705 that the local data file 607 is invalid, at block 707 the client computing device 603 downloads, via the network 609, a full copy of the master data file 605 and replaces the invalid local data file 607 on the client computing device 603. However, if it is determined at decision block 705 that the local data file 607 is valid, at decision block 709 a determination is made by the client computing device 603 as to whether the local data file 607 has the same unit identifier as the unit identifier 617 published at block 701. If the local data file 607 unit identifier is the same as the published unit identifier 617, the process completes, as illustrated by block 711. In an alternative embodiment, the publishing computing device 601 may publish a hash value for the master data file 605, in addition to publishing a unit identifier. The client computing device 603 may use the published hash value to determine whether the local data file 607 has the same hash value as the master data file 605. If the hash values match, the process completes, as illustrated by block 711. If the hash values do not match, the process continues as described below.
At block 713, if it is determined at block 709 that unit identifiers do not match (and/or the hash values do not match), the local computing device 603 computes a delta between the two files. Once the local computing device 603 has determined the delta, at block 715 local computing device 603 requests from the publishing computing device 601 the particular delta 619 of the master data file 605 that is desired. The publishing computing device 601 dynamically generates and publishes an appropriate patch 621 in response to the received delta 619, as illustrated by block 717. Finally, at block 719 the local computing device 603 downloads the dynamically generated patch 621 and recreates the local data file 607 to match the master data file 605.
In one embodiment, the portion of the master data file 605 contained in the dynamic patch 621 that is downloaded by the local computing device 603 is a “tail” portion of the master data file 605. A “tail,” as used herein, is digital information that has been added to the data file subsequent to the last update of the local data file 607. Referring back to
The “tail” of a data file can be different for each download and is not limited to one particular portion of the data file. For example, if another client computing device, such as client computing device 611, requested one hundred bytes of the master data file 605, those one hundred bytes would also be considered the “tail” of the master data file 605. Still further, if the unit identifier 617 is a number of items (e.g., number of virus signatures) of digital information contained in the data files, and the published unit identifier 617 is five hundred two and the number of items in the local data file 607 is three hundred two, the computed delta is two hundred. The two hundred items would be the tail portion of the master data file 605.
Upon receiving a request 619 from the client computing device 607, the publishing computing device 601 dynamically generates an appropriate patch 621 for download by the client computing device 603. The patch 621 is dynamic in that it is generated in response to the requested information 619. For example, local data file 607, located on client computing device 603, is one hundred bytes. The requested delta 619 is computed at fifty bytes and thus, the dynamically generated patch 621 includes a copy of the tail fifty bytes of the master data file 605. In contrast, local file 613, located on client computing device 611, is fifty bytes. The requested delta 619 is computed at one hundred bytes and in response to that request, the dynamically generated patch 621 includes a copy of the tail one hundred bytes of the master data file 605.
The client computing device 603 downloads the dynamically generated patch 621 and regenerates the local data file 607 so that it matches the master data file 605. For example, if the patch 621 contains a tail of the master data file 605, the client computing device 603 appends the tail to the local data file 607.
The publish computer software update routine 800 begins at block 801. At block 803, the publishing computing device 601 publishes a master data file identifier 615 and a unit identifier 617. In an embodiment, the published information 615, 617 may be provided in the form of digital packet containing a digital signature identifying from where the packet is being published. The digital signature may contain a private key which is authenticated by a client containing a public key, thereby validating the sending party. Additionally, the published information 615, 617 may also include a hash value for master data file 605. The information published at block 803 is available for download by the client computing device 603 via network 609.
At block 805, the publishing computing device 601 receives a request 619 from the client computing device 603 via network 609 for a particular portion of the master data file 605. This request may be a request for a tail of the master data file 605-for example, the last 50 bytes of the master data file 605. Alternatively, the client request 619 received at block 805 may include a request for particular portions of the master data file 605. Still further, the request may be a request for an entire copy of the master data file 605.
At decision block 807, the publishing computing device 601 determines if requesting client computing device 603 is authorized to receive the requested information. As will be appreciated by one skilled in the art, authorization of the requesting client computing device 603 may be accomplished using any authorization technique. For example, the client computing device 603 may be required to provide a user name and password that is known to the publishing computing device 601. Alternatively, the client computing device 603 may be required to provide a serial number or other identification for the local data file 607, to thereby authenticate that the client computing device 603 is a legal owner of the local data file 607.
If it is determined at decision block 807 that the requesting client computing device 603 is not authorized to receive the requested information, the requesting client computing device 603, as illustrated by block 809, is denied its request to receive information. If however, it is determined at decision block 807 that the requesting computing device 603 is authorized to receive the requested information, at block 811, the publishing computing device 601 dynamically generates an appropriate patch 621 and provides the dynamically generated patch 621 to the client computing device 603 via the network 609. The dynamically generated patch 621 includes information from the master data file 605 that is necessary for requesting the client computing device 603 to regenerate the local data file 607 to match the master data file 605. Additionally, the dynamically generated patch 621 may also include a digital signature identifying the publishing computing device 601.
Still further, the contents of the dynamically generated patch 621 may also be compressed to shorten the time necessary to download the information. In one example of a patch 621 containing virus signature updates, each virus signature may be individually compressed and added to other compressed virus signatures to create the dynamic patch 621. Such a patch 621, in addition to containing individually compressed virus signatures, may also contain a digital signature that is, or is not compressed.
Once the dynamically generated patch 621 has been published for download by the client computing device 603 the process completes, as illustrated by block 813.
The receive computer software update routine 900 begins at block 901 where the local computing device 603 initiates communication with the publishing computing device 601 via the network 609, to determine if the local data file 607 needs to be updated to match the master data file 605. At block 903, the local computing device 603 downloads the published master data file identifier 615, unit identifier 617, and any other information that was published by the publishing computing device 601.
At decision block 905, the client computing device 603 determines whether the local data file 607 is valid. Validation of the local data file 607 may be accomplished by comparing a digital signature present on the local data file 607 with a digital signature included with the information published at block 903. The downloaded digital signature may be a private key that is included with every item of information published by the publishing computing device 601 to verify and authenticate that the contents of the information being downloaded are indeed being published by the publishing computing device 601. The client computing device 603 contains a digital signature that is included within the local data file 607. In an embodiment, the digital signature contained in the local data file 607 may be a public key that is used to authenticate the private key downloaded at block 903. When the local data file 607 is initially obtained or created, a digital signature identifying the publishing computing device 601 may be included in the local data file 607. For example, a digital signature may be included in the last five bytes of local data file 607. Each time information is obtained from the publishing computing device 601, a digital signature identifying the publishing computing device 601 may be included. The client computing device 603 may use those two digital signatures to validate the local data file 607, the publishing computing device 601, and the published information. It will be appreciated by those skilled in the art that any other type of validation technique may be utilized for validating the integrity of a local data file. For example, the client computing device 603 may compare the name of the local data file 603 with the name published by the publishing computing device 601.
If it is determined at decision block 905 that the local data file 603 is not valid—for example, because the digital signatures do not match, as illustrated by block 907—the local computing device 603 requests and downloads an entire copy of the master data file 605 from the publishing computing device 601 and replaces the local data file 607 with the downloaded master data file.
If the local data file 603 is valid, at decision block 909 the local computing device 603 determines whether the local data file 607 has the same unit identifier as the master data file unit identifier 617 downloaded at block 903. If it is determined that the unit identifiers match, thereby confirming that the local computing device 603 has the most recent copy of the master data file 605, the process completes, as illustrated by block 917. If however, it is determined that unit identifiers differ, the local computing device 603, as illustrated at block 911, determines the delta between the master data file 605 and the local data file 607.
As illustrated by block 913, the local computing device 603 requests from the publishing computing device 601 a particular delta portion 619 of the master data file 605 that the local computing device 603 needs in order to regenerate a copy of the master data file 605. For example, if the delta 619 between the master data file 605 and the local data file 607 is fifty bytes, the local computing device 603 informs the publishing computing device 601 that it needs the tail fifty bytes of the master data file 605. The local computing device 603 downloads a dynamic patch 621 containing a copy of the appropriate requested portion of the master data file 605 from the publishing computing device 601 via the communication network 609, as illustrated by block 913.
Upon receipt of the dynamically generated patch 621, the local computing device 603, in one embodiment, again validates the integrity of the local data file 607 and the integrity of the downloaded information by comparing the digital signature contained on the local data file 607 and the digital signature included in the dynamically generated patch 621 downloaded from the publishing computing device 601. As illustrated at block 915, the local computing device 603 regenerates the local data file 607 utilizing the information in the downloaded patch to generate a local data file 607 that matches the master data file 605. For example, if the patch 621 is a tail of the master data file 605, the local computing device 603 appends the tail to the end of the local data file 607.
Additionally, after digital signature verification and during regeneration of the local data file 607, the local computing device 603 may copy over the digital signature contained in the local data file 607 and append the downloaded digital signature to the end of the new local data file 607. After the local data file 607 has been regenerated to match the master data file 605, the process completes at block 917.
While embodiments of the invention have been illustrated and described, it will be appreciated that various changes can be made therein without departing from the spirit and scope of the invention.