|
Claims  |
|
|
What is claimed is:
1. A computer-implemented method for verifying the authenticity of data, the method comprising:
a) receiving at least one data file and a signature file, wherein the data file and the signature file are separate, the data file including a first identifier, the signature file including a representation of the first identifier for the data
file and a digital signature, the signature file being arranged to include representations of identifiers for additional data files; and
b) processing the signature file using a computer system to determine the authenticity of the signature file;
c) comparing the first identifier in the data file with the representation of the first identifier in the signature file using the computer system to determine the authenticity of the data file, wherein processing the signature file further
includes processing the digital signature using the computer system to determine the authenticity of the signature file; and
d) marking the data file as signed when the first identifier in the data file and the representation of the first identifier in the signature file match.
2. The method as recited in claim 1 wherein when the first identifier in the data file and the representation of the first identifier in the signature file do not match, the method further includes at least one selected from the group of
ignoring the data file, aborting the loading of the data file, and alerting a user.
3. A computer-implemented method for verifying the authenticity of data as recited in claim 1 further including:
comparing a second identifier in a second data file with a representation of the second identifier in the signature file using the computer system.
4. A computer-implemented method for verifying the authenticity of data as recited in claim 1 wherein processing the digital signature further includes verifying the digital signature with a signature algorithm, the signature algorithm being a
keyed algorithm.
5. A computer-implemented method for verifying the authenticity of data as recited in claim 4 wherein the signature algorithm is selected from a group consisting of a DSA algorithm, and a combined Message Digest and RSA algorithm.
6. A computer-implemented method for verifying the authenticity of data as recited in claim 1 wherein comparing the first identifier in the data file with the representation of the first identifier in the signature file further includes
generating one or more of the identifiers with a one-way hash function algorithm.
7. A computer-implemented method for verifying the authenticity of data as recited in claim 1 wherein comparing the first identifier in the data file with the representation of the first identifier in the signature file further includes checking
one or more of the identifiers with a cyclic redundancy checksum algorithm.
8. A computer-implemented method for verifying the authenticity of data as recited in claim 1 wherein the signature file includes additional data selected from the group consisting of a text, a name, an author, a version, a time-stamp, and a
rating.
9. A computer-implemented method for verifying the authenticity of data as recited in claim 1 wherein the identifier is generated using one of a one-way hash function algorithm and a cyclic redundancy checksum algorithm.
10. A computer-implemented method for verifying the authenticity of data as recited in claim 1 wherein receiving the data file and the signature file further includes transferring the data file and the signature file among networked computers.
11. A computer-implemented method for verifying the authenticity of data as recited in claim 1 wherein the first identifier in the data file includes at least one of a certificate authority, a site certificate, a software publisher identifier,
and a site name, the method further including setting a security level for at least one of said certificate authority, said site certificate, said software publisher identifier, and said site name.
12. A computer-implemented method for verifying the authenticity of data as recited in claim 11 including downloading the data file to the computer system, and when the data file comprises an applet and when the digital signature is verified,
the method includes branding the applet as verified and running the applet.
13. A computer-implemented method for verifying the authenticity of data as recited in claim 12 wherein when the data file comprises an applet, and when the signature is not verified, the method includes determining whether an unsigned data file
is acceptable for execution on the computer, and terminating the applet if an unsigned data file is not acceptable for execution on said computer.
14. A computer-implemented method for verifying the authenticity of data as recited in claim 13 including branding the applet when the unsigned data file is determined acceptable for execution on said computer.
15. A computer-implemented method for verifying the authenticity of data as recited in claim 14 including the running the applet and determining whether the applet performs an action that triggers a security check.
16. A computer-implemented method for verifying the authenticity of data as recited in claim 15 wherein the security check includes comparing the brand with the security level and allowing the action when the security check is satisfied and
disallowing the action if the security check is not satisfied.
17. A computer-implemented method for verifying the authenticity of data as recited in claim 1, further including establishing a data communication connection with a remote site using the computer system, determining whether the site requires a
secure connection, and determining whether a site certificate for the site is valid in response to a determination that a secure connection is required.
18. A computer-implemented method for verifying the authenticity of data as recited in claim 17, further including determining whether the site certificate is trusted in response to a determination that the site certificate is valid.
19. An apparatus for verifying the authenticity of at least one data file and a signature file, the data file including an identifier, the signature file including a representation of the identifier for the data file and a digital signature, the
apparatus comprising:
a processor for processing the digital signature to determine the authenticity of the signature file; and
a comparator for comparing the identifier in the data file with the representation of the identifier in the signature file using the computer system to determine the authenticity of the data file, wherein the processor is further arranged to
process the digital signature using the computer system to determine the authenticity of the signature file, the comparator further including a marker for marking the data file as signed when the identifier in the data file and the representation of the
identifier in the signature file match.
20. An apparatus for verifying the authenticity of data as recited in claim 19 wherein the comparator for comparing the identifier in the data file with the representation of the identifier in the signature file using the computer system is
further arranged to alert a user when the identifier in the data file and the representation in the signature file do not match.
21. An apparatus for verifying the authenticity of data as recited in claim 19 wherein the comparator for comparing the identifier in the data file with the representation of the identifier in the signature file using the computer system is
further arranged to compare each identifier for each data file with the representation of the identifier in the signature file.
22. An apparatus for verifying the authenticity of data as recited in claim 19 wherein the processor for processing the digital signature is further arranged to verify the digital signature with a signature algorithm.
23. An apparatus for verifying the authenticity of data as recited in claim 22 wherein the signature algorithm is selected from a group consisting of a DSA algorithm, and a combined Message Digest and RSA algorithm.
24. An apparatus for verifying the authenticity of data as recited in claim 19 wherein the identifier in the data file includes at least one of a certificate authority, a site certificate, a software publisher identifier, and a site name, the
apparatus further including:
a mechanism for setting a security level for at least one of the certificate authority, the site certificate, the software publisher identifier, and the site name.
25. An apparatus for verifying the authenticity of data as recited in claim 19 further including a mechanism for establishing a data communication connection with a remote site using the computer system, wherein the mechanism for establishing
the data communication connection is arranged to determine whether the site requires a secure connection, and to determine whether a site certificate for the site is valid in response to a determination that a secure connection is required.
26. An apparatus for verifying the authenticity of data as recited in claim 25 wherein the mechanism for establishing the data communication system is further arranged to determine whether the site certificate is trusted in response to a
determination that the site certificate is valid.
27. A computer program product for verifying the authenticity of data, the computer program product comprising:
computer code that receives at least one data file and a signature file, the data file including an identifier, the signature file including a representation of the identifier for the data file and a digital signature;
computer code that process the signature file using a computer system to determine the authenticity of the signature file, wherein the computer code that processes the signature file further includes computer code that processes the digital
signature using the computer system to determine the authenticity of the signature file;
computer code that compares the identifier in the data file with the representation of the identifier in the signature file using the computer system to determine the authenticity of the data file, wherein the computer code that compares the
identifier in the data file with the representation of the identifier in the signature file using the computer system further includes computer code that marks the data file as signed when the identifier in the data file and the representation of the
identifier in the signature file match; and
a computer-readable medium that stores the computer codes.
28. A computer program product as recited in claim 27 wherein the identifier in the data file includes at least one of a certificate authority, a site certificate, a software publisher identifier, and a site name, the computer program product
further including computer code that sets a security level for at least one of said certificate authority, said site certificate, said software publisher identifier, and said site name.
29. A computer program product as recited in claim 28 further including computer code for downloading the data file to the computer system, the computer program product further including computer code that brands the applet as verified and
computer code that runs the applet when the data file includes an applet and when the digital signature is verified.
30. A computer program product as recited in claim 29 further including computer code for determining whether an unsigned data file is acceptable for execution on the computer, and terminating the applet if an unsigned data file is not
acceptable for execution on said computer when the data file comprises an applet, and when the signature is not verified.
31. A computer program product as recited in claim 27 further including computer code for establishing a data communication connection with a remote site using the computer system, computer code for determining whether the site requires a secure
connection, and computer code for determining whether a site certificate for the site is valid in response to a determination that a secure connection is required.
32. A computer program product as recited in claim 31 further including computer code for determining whether the site certificate is trusted in response to a determination that the site certificate is valid. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
FIELD OF THE INVENTION
The present invention relates generally to the sharing of data among computing resources. More specifically, the present invention relates to methods, apparatuses and products for securing and verifying the authenticity of data being processed
on a computer system.
BACKGROUND OF THE INVENTION
With the increasing popularity of networked computing environments, such as the Internet, there has been a corresponding increase in the demand to provide for the transferring of shared information among the networked computers in a secure
manner. For example, when a user of the Internet sends information in the form of data to another user it may be useful for the receiving user to verify that the data received has not been corrupted or otherwise altered in some manner. Furthermore, the
receiving user may also find it useful to verify that the data received was actually sent by the proper sending user rather than an impostor.
As a result, methods and algorithms that increase the security of data transmitted over computer networks and other data links have been developed and deployed with some success. The more secure methods tend to include encrypting all or part of
the data prior to sending it, and likewise decrypting the received data prior to using it. Such encryption and decryption techniques may, for example, include adding encryption data to the data file, and encoding or otherwise transforming the data in
the data file with a computer system by running a "signature algorithm".
There are currently several signature algorithms in use today. One popular signature algorithm is actually a combination of a Message Digest algorithm and an RSA encryption algorithm (e.g., MD5 with RSA, or MD2 with RSA, or the like). The
Message Digest with RSA signature algorithm is a patented algorithm (U.S. Pat. No. 4,405,829 issued Sep. 20, 1983) that is available from RSA Data Security, Inc. of Redwood City, Calif. Another popular signature algorithm is the DSA encryption
algorithm. The DSA encryption algorithm, which is available from the United States Government, may be used for limited purposes by private parties as a signature algorithm. These signature algorithms will be discussed in limited detail below. For a
more detailed description of these and other signature algorithms and related encryption operations, refer to Applied Cryptography, Second Edition, 1996, by Bruce Schneier which is available from John Wiley & Sons, Inc. New York City, N.Y., and which is
herein incorporated, in its entirety, by reference.
The Message Digest with RSA algorithm includes the capability to generate a "digital signature" that can be added to data files. Digital signatures are basically mechanisms through which users may authenticate the source of a received data file. A digital signature is typically a special sequence of data that can be generated and provided along with a related data file to other users. The basic concept behind most signature algorithms is that every user ( e.g., individuals, companies,
governments, etc.) will have a "key pair" that includes both a "private key" and a "public key". A key may, for example, be a numerical sequence. The private key is a unique key that is assigned to a single user and intended to be kept secret by that
user. The private key may be used by the assigned user to create a digital signature for a data file with a signature algorithm. The public key, on the other hand, is typically made available to all other users. The public key may be used by these
other users to verify that the digital signature on a received data file is authentic (i.e., that the digital signature was created with the private key). The verification process is accomplished with the same signature algorithm. In principle, such a
verification process may provide a relatively high level of confidence in the authenticity of the source of the received data.
In addition to digital signature generating algorithms, there are also algorithms that may be used to authenticate that the data file has not been corrupted in some manner. These algorithms are typically known as "one-way hash functions". One
example of such an algorithm is the Message Digest, introduced above. A one-way hash function usually does not require a key. One-way hash functions typically include additional data that is inserted into the data file. As such, when the data file is
received the hash function may be used to verify that none of the data within the data file has been altered since the generation of the hash function. However, hash functions are typically limited in that the user may not necessarily infer anything
about the associated file, such as who sent it. It is noted that many signature algorithms use one-way hash functions as internal building blocks.
For relatively open, unsecured networks such as the Internet, it may be useful for users to authenticate received data files prior to using them as intended. Such data files may include, but are not limited to, computer programs, graphics, text,
photographs, audio, video, or other information that is suitable for use within a computer system. No matter the type of data file, authentication may be accomplished with a signature algorithm or similar type of encryption algorithm as described above. By way of example, if the data file is a software program the user may wish to authenticate that it was sent by a trustworthy authority prior to exposing his or her computer system to the software program, lest the program include a "Trojan Horse" that
infects the user's computer with a virus. In such a case, the sending user may authenticate the data as described above.
Another example is where the receiving user wishes to authenticate a text and/or image data file prior to displaying it on his or her computer screen. This may be useful to control the display of text and images having undesirable content. For
example, parents may want to limit any access their children may have to pictures and text relating to adult subjects and materials. This can be accomplished by verifying that the data file (e.g., a text or image file), came from a trusted source.
Similarly, providers of text and image files may want to provide a "stamp" of approval or authenticity so as to control the use of tradenames and other intellectual property.
Unfortunately, the process of encrypting and decrypting, signing and verifying, and/or generating hash functions places an additional burden on the sending and receiving user's computational resources. The burden is compounded for users who send
and receive several data files. By way of example, the growth of that aspect of the Internet known as the World-Wide Web has lead to a tremendous increase in the transfer of multiple data files between users. These multiple data files often include the
components or objects that constitute an object-oriented software process, such as a Java.TM. applet. To illustrate the potential burden that can be placed on the receiving user's computer resources in such a multiple data file transfer, one need only
calculate the resulting processing time associated with verifying the digital signatures for each of the files. For example, if an Java.TM. applet included 200 digitally signed Java.TM. class files (including data files), assuming that the average
verification process took about 1 second on a conventional desktop personal computer, then the user would have to wait for about 200 seconds after receiving the data files to use the applet. Such delays may significantly reduce the effectiveness of such
a computer network environment. This is especially true for data files relating to a timed process, such as streaming audio or video data file in real (or near-real) time.
Therefore, what is desired are more efficient methods, apparatuses and products for securing and verifying the authenticity of data files, especially for data files intended to be transferred over computer networks.
SUMMARY OF THE INVENTION
The present invention provides more efficient methods, apparatuses and products for securing and verifying the authenticity of data files, such as data files intended to be transferred over computer networks. In accordance with one aspect of the
present invention, a method for verifying the authenticity of data involves providing at least one data file which includes an identifier and a signature file which includes the identifier for the data file as well as a digital signature. The digital
signature is then verified using a computer system, and the identifier in the data file is compared with the identifier in the signature file using the computer system.
In one embodiment, the identifier for the data file includes at least one certificate authority, site certificate, software publisher identifier, or a site name, and verifying the authenticity of data involves setting a security level for at
least one of the certificate authority, said site certificate, said software publisher identifier, and said site name. In such an embodiment, the data file is downloaded to the computer system, and if the data file is an applet and the digital signature
is verified, then verifying the authenticity of data also involves branding and running the applet accordingly.
In another embodiment, a data communication connection is established between the computer system and a remote site, and a determination is made regarding whether the site requires a secure connection, and when a secure connection is required, a
determination is made regarding whether a site certificate for the site is valid. In such an embodiment, a determination can be made as to whether the site certificate is trusted if it is determined that the site certificate is valid.
In another aspect of the present invention, an apparatus for verifying the authenticity of at least one data file, which includes an identifier, and a signature file which includes the identifier for the data file in addition to a digital
signature, includes a verifier for verifying the digital signature and a comparator for comparing the identifier in the data file with the identifier in the signature file. In one embodiment, the digital signature is verified with a signature algorithm. In another embodiment, the comparator includes a one-way hash function algorithm.
In still another aspect of the present invention, a computer program product including a computer-usable medium having computer-readable program code embodied thereon for use in verifying the authenticity of data provides at least one data file
and a signature file, where the data file includes an identifier and the signature file includes the identifier for the data file and a digital signature. Program code for verifying the digital signature using the computer system and comparing the
identifier in the data file with the identifier in the signature file is also included in the computer program product.
In one embodiment, the computer program product includes computer-readable program code for downloading the data file to the computer system and verifying the digital signature when the data file is an applet, and appropriately branding the
applet. In another embodiment, computer-readable program code includes code for running the applet and code for determining whether the applet performs an action that triggers a security check. In another embodiment, code is included for use in
establishing a secure connection with a remote site.
In yet another aspect of the present invention, a computer system arranged to verify the authenticity of a data file, which includes an identifier and is associated with a signature file that has the identifier for the data file and a digital
signature, includes a processor, a memory coupled to the processor, and a verifier arranged to verify the digital signature and compare the identifier in the data file with the identifier in the signature file. In one embodiment, the identifier for the
data file includes at least one of a certificate authority, a site certificate, a software publisher identifier, and a site name. In such an embodiment, the verifier is further arranged to set a security level for at least one of the certificate
authority, the site certificate, the software publisher identifier, and the site name. In another embodiment, the data file is an applet and the verifier is arranged both to brand the applet and to run the applet.
BRIEF DESCRIPTION OF THE
DRAWINGS
The invention, together with further advantages thereof, may best be understood by reference to the following description taken in conjunction with the accompanying drawings in which:
FIG. 1 illustrates a networked computing environment;
FIG. 2 illustrates a typical computer system for use with the networked computing environment in FIG. 1;
FIG. 3a illustrates an embodiment of an archival data structure, including a signature file, for use with an embodiment of the present invention;
FIG. 3b illustrates an embodiment of a signature file, for use with an embodiment of the present invention; and
FIG. 4 is a flow chart of an embodiment of the present invention for use with data structures having signature files.
FIG. 5 is a flow chart which illustrates the steps associated with setting security levels in a security manager in accordance with an embodiment of the present invention.
FIG. 5a is a diagrammatic representation of a browser interface which illustrates advanced settings in accordance with an embodiment of the present invention.
FIG. 6 is a flow chart which illustrates the steps associated executing an applet which uses verification settings in accordance with an embodiment of the present invention.
FIG. 7 is a flow chart which illustrates the steps associated with establishing a connection across a computer network in accordance with an embodiment of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
Several embodiments of the present invention provide novel methods, apparatuses and products that reduce the computational demands placed on both source user computer systems and receiving user computer systems by requiring the implementation and
the verification of only a single digital signature for an arbitrary number of data files. In accordance with an embodiment of the present invention the data files need not be individually signed. Instead, a separate signature file is created such that
when the separate signature file is digitally signed and later verified, the data files to which it corresponds can be authenticated without running the signature algorithm for each of these data files. In one embodiment, the signature file includes a
list of "identifiers", such as one-way hash functions, that are associated with each of the data files to be transferred. As such, the signature file is essentially the cryptographic equivalent of a digital signature for each of the data files.
Thus, with an embodiment of the present invention a user can create a signature file that includes unique identifiers for each data file. The signature file can be digitally signed by using a signature algorithm. The signed signature file and
data files can then be sent to a receiving user, who can then verify the digital signature using the appropriate signature algorithm. Once the digital signature has been verified, the identifiers within the signature file can be compared to the
identifiers within the data files. If the identifier within a given data file matches the corresponding identifier in the signature file, then the data file can be verified as being authentic. The receiving user can then proceed to process the verified
data files with confidence in their authenticity. As a result, computational delays can be reduced because there is no longer the need to digitally sign and later verify the digital signature for each of the data files.
FIG. 1 illustrates a networked computing environment 10, as represented by a block diagram of a source user computer system 12 coupled to exchange information in the form of data with a receiver user computer system 14 over a data link 16.
Source user computer system 12 can, for example, take the form of a server computer such as a web server associated with the Internet. Likewise, receiving user computer system 14 can, for example, take the form of a client system that is networked via
data link 16 to a web server. In such a case, data link 16 can therefore represent a portion of, or the entire, Internet and other connected networks. Data link 16 can also represent one or more local area networks (LANs), wide area networks (WANs),
"intranets" or "extranets", or other like telecommunication or data networks.
FIG. 2 illustrates a typical computer system 20 that can be used by either a sending user or a receiving user, in accordance with FIG. 1. Alternatively, computer system 20 can be a stand-alone computer capable of receiving data through computer
useable products. Computer system 20 includes one or more processors 22, a primary memory 24, a secondary memory 26, one or more input/output (I/O) devices 28, one or more network communication devices 30, and one or more buses 32.
Processors 22 provide the capability to execute computer instructions. Processors 22 can, for example, be microprocessors, central processing units (CPUs),or microcontrollers such as found in many of the desktop, laptop, workstation, and
mainframe computers available on the market. Processors 22 can also take the form of conventional or even customized or semi-customized processors such as those typically used in special purpose or larger frame computers, telecommunication switching
nodes, or other networked computing devices. Processors 22 are coupled to output data to buses 32 and to input data from buses 32.
Buses 32 are capable of transmitting or otherwise moving data between two or more nodes. Buses 32 can, for example, take the form of a shared general purpose bus or can be dedicated to transmitting specific types of data between specific nodes.
Buses 32 can include interface circuitry and software for use in establishing a path between nodes over which data can be transmitted. It is recognized that some devices, such as processors 22 can also include one or more buses 32 internally for
transmitting data between internal nodes therein. Data can include processed data, addresses, and control signals.
Primary memory 24 typically provides for the storage and retrieval of data. Primary memory 24 can, for example, be a random access memory (RAM) or like circuit. Primary memory 24 can be accessed by other devices or circuits, such as processors
22, via buses 32.
Secondary memory 26 typically provides for additional storage and retrieval of data. Secondary memory 26 can, for example, take the form of a magnetic disk drive, a magnetic tape drive, an optically readable dev | | |