|
Claims  |
|
|
I claim:
1. A computer-readable medium storing a data structure for secure
distribution of software from a distributor to a recipient, said data
structure comprising:
(a) a cryptographically secured representation of said software, said
cryptographically secured representation having been secured by a first
encryption key;
(b) a cryptographic certification, by a certifier, of a first decryption
key corresponding to said first encryption key; and
(c) an identifier of said distributor; said cryptographically secured
representation, cryptographic certification and identifier collectively
defining a software passport which enables said recipient thereof (i) to
cryptographically verify said first decryption key using a second,
preexisting decryption key unrelated to said distributor and obtained by
said recipient without specific knowledge of said certifier, and (ii) to
cryptographically verify said software using said verified first
decryption key.
2. The computer-readable medium of claim 1 wherein said software passport
includes said first decryption key.
3. The computer-readable medium of claim 2 wherein said software includes a
binary representation of a computer program.
4. The computer-readable medium of claim 3 wherein said software passport
includes a validity date of said computer program.
5. The computer-readable medium of claim 2 wherein said first decryption
key and said first encryption key are a public-private cryptographic key
pair.
6. The computer-readable medium of claim 5 wherein said cryptographically
secured representation includes a message digest of at least a portion of
said software, said message digest having been encrypted with said first
encryption key.
7. The computer-readable medium of claim 2 wherein said cryptographic
certification is secured by a second encryption key corresponding to said
second decryption key, and wherein said second keys are a private-public
cryptographic key pair.
8. The computer-readable medium of claim 2 wherein said cryptographic
certification includes a message digest of said first decryption key, said
message digest having been encrypted with said second encryption key.
9. The computer-readable medium of claim 2 wherein said software has been
encrypted.
10. The computer-readable medium of claim 9 wherein said software is
subject to intellectual property protection.
11. The computer-readable medium of claim 9 wherein said sofaware is
subject to an access fee.
12. The computer-readable medium of claim 2 wherein said cryptographic
certification includes said identifier.
13. The computer-readable medium of claim 2 wherein said identifier
includes information about said software.
14. The computer-readable medium of claim 2 wherein said cryptographic
certification includes a validity date thereof.
15. The computer-readable medium of claim 1 wherein said cryptographic
certification represents an assurance of a skill of said distributor by
said certifier.
16. The computer-readable medium of claim 15 wherein said first decryption
key and said first encryption key are a public-private cryptographic key
pair.
17. The computer-readable medium of claim 16 wherein said cryptographically
secured representation includes a message digest of at least a portion of
said software, said message digest having been encrypted with said first
encryption key.
18. The computer-readable medium of claim 15 wherein said cryptographic
certification is secured by a second encryption key corresponding to said
second decryption key, and wherein said second keys are a private-public
cryptographic key pair.
19. The computer-readable medium of claim 18 wherein said cryptographic
certification includes a message digest of said first decryption key, said
message digest having been encrypted with said second encryption key.
20. The computer-readable medium of claim 15 wherein said software has been
encrypted.
21. The computer-readable medium of claim 1 wherein said second decryption
key is stored at a computing platform of said recipient, and where said
certifier is a provider of least a portion of said computing platform.
22. The computer-readable medium of claim 21 wherein said second decryption
key is a public key of said platform provider and where said first
decryption key and said first encryption key are a public-private
cryptographic key pair.
23. A method for secure software distribution from a distributor to a
recipient comprising the steps of:
(a) receiving, at a recipient's location, a plurality of elements
including:
(i) software;
(ii) a cryptographically secured representation of said software, said
cryptographically secured representation having been secured by a first
encryption key;
(iii) an identifier of said distributor; and
(iv) a cryptographic certification, by a certifier, of a first decryption
key corresponding to said first encryption key;
said received elements defining a software passport including at least
elements (ii), (iii) and (iv); and
(b) cryptographically verifying said first decryption key using a second,
preexisting decryption key unrelated to said distributor and obtained by
said recipient without specific knowledge of said certifier; and
(c) cryptographically verifying said software using said verified first
decryption key.
24. The method of claim 23 where said software passport includes said first
decryption key.
25. The method of claim 24 where said software includes a binary
representation of a computer program.
26. The method of claim 25 where said software passport includes a validity
date of said computer program, and where said step of verifying said
software includes checking said validity date.
27. The method of claim 25 where said step of verifying said software
includes checking for the presence of said cryptographically secured
representation.
28. The method of claim 27 where said step of verifying said software
includes:
(a) decrypting said cryptographically secured representation using said
first decryption key to yield a first message digest of at least a portion
of said software;
(b) computing a second message digest on said at least a portion of said
received software; and
(c) comparing said first and second message digests.
29. The method of claim 25 where said step of verifying said software
includes checking for the presence of said cryptographic certification.
30. The method of claim 29 where said step of verifying said software
includes:
(a) decrypting said cryptographic certification using said second
decryption key to yield a first message digest of said first decryption
key;
(b) computing a second message digest on said received first decryption
key; and comparing said first and second message digests.
31. The method of claim 25 where said binary representation of said
computer program has been encrypted.
32. The method of claim 31 where said computer program is subject to
intellectual property protection.
33. The method of claim 32 where said computer program is subject to an
access fee.
34. The method of claim 24 where said identifier is included in said
cryptographic certification.
35. The method of claim 24 where said identifier includes information about
said software.
36. The method of claim 24 where said software passport is received over a
network.
37. The method of claim 24 where said cryptographic certification includes
a validity date thereof.
38. The method of claim 24 where said second decryption key is stored at a
computing platform of said recipient, and where said certifier is a
provider of at least a portion of said computing platform.
39. The method of claim 38 where said second decryption key is a public key
of said platform provider and where said first decryption key and said
first encryption key are a public-private cryptographic key pair.
40. The method of claim 23 where said cryptographic certification
represents an assurance of a skill of said distributor by said certifier.
41. The method of claim 40 where said step of verifying said software
includes checking for the presence of said cryptographically secured
representation.
42. The method of claim 41 where said step of verifying said software
includes:
(a) decrypting said cryptographically secured representation using said
first decryption key to yield a first message digest of at least a portion
of said software;
(b) computing a second message digest on said at least a portion of said
received software; and
(c) comparing said first and second message digests.
43. The method of claim 40 where said step of verifying said software
includes checking for the presence of said cryptographic certification.
44. The method of claim 43 where said step of verifying said software
includes:
(a) decrypting said cryptographic certification using said second
decryption key to yield a first message digest of said first decryption
key;
(b) computing a second message digest on said received first decryption
key; and
(c) comparing said first and second message digests.
45. The method of claim 40 where said binary representation of said
computer program has been encrypted.
46. A method for licensing of a software distributor by a certifier,
comprising the steps of:
(a) receiving, at a certifier's location, an identifier of said
distributor;
(b) verifying a qualification of said distributor against a predetermined
licensing criterion; and
(c) performing a first cryptographic operation on said identifier to
produce a cryptographic certification of said distributor;
(d) said cryptographic certification enabling cryptographic verification by
a recipient thereof using a preexisting decryption unrelated to said
distributor, and obtained by said recipient without specific knowledge of
said certifier.
47. The method of claim 46 where said identifier includes a public key
associated with said distributor.
48. The method of claim 47 where said step of performing said first
cryptographic operation includes:
(a) computing a message digest on said public key; and
(b) encrypting said message digest with an encryption key corresponding to
said preexisting decryption key.
49. The method of claim 47 where: (a) said preexisting decryption key is
pre-stored at a computing platform of a recipient of said certification
and (b) said certifier is a provider of at least a portion of said
platform.
50. A method for secure software distribution from a distributor to a
recipient, comprising the steps of:
(a) identifying software that is to be distributed to a recipient;
(b) using a first encryption key to perform a first cryptographic operation
on said software to form a cryptographically secured representation of
said software;
(c) obtaining, from a certifier, a cryptographic certification of a first
decryption key
corresponding to said first encryption key; and
(d) generating a software passport for said recipient, said software
passport including at least said cryptographically secured representation,
said cryptographic certification, and an identifier of said distributor;
where said software passport enables said recipient thereof (i) to
cryptographically verify said first decryption key using a second,
preexisting decryption key unrelated to said distributor and obtained
without specific knowledge of said certifier, and (ii) to
cryptographically verify said software using said verified first
decryption key.
51. The method of claim 50 where said software passport includes said first
decryption key.
52. The method of claim 51 where said software includes a binary
representation of a compute program.
53. The method of claim 52 where said software passport further includes a
validity date of said computer program.
54. The method of claim 51 where said first decryption key and said first
encryption key are a public-private cryptographic key pair.
55. The method of claim 54 where said step of using a first encryption key
to perform a first cryptographic operation includes:
(a) computing a message digest of at least a portion of said software; and
(b) encrypting said message digest with said first cryptographic key.
56. The method of claim 51 where said cryptographic certification is
secured by a second encryption key corresponding to said second decryption
key, and where said second keys are a private-public cryptographic key
pair.
57. The method of claim 56 where said cryptographic certification includes
a message digest of said first decryption key, said message digest having
been encrypted with a second encryption key.
58. The method of claim 51 where said software has been encrypted.
59. The method of claim 58 where said software is subject to intellectual
property protection.
60. The method of claim 58 where said software is subject to an access fee.
61. The method of claim 51 where said step of obtaining said cryptographic
certification includes receiving said identifier.
62. The method of claim 51 where said identifier includes information about
said software.
63. The method of claim 51 where said software passport is received over a
network.
64. The method of claim 51 where said cryptographic certification includes
a validity date thereof.
65. The method of claim 51 where said second decryption key is stored at a
computing platform of said recipient, and where said certifier is a
provider of at least a portion of said computing platform.
66. The method of claim 65 where said second decryption key is a public key
of said platform provider and where said first decryption key and said
first encryption key are a public-private cryptographic key pair.
67. The method of claim 50 where said cryptographic certification
represents an assurance of a skill of said distributor by said certifier.
68. The method of claim 67 where said first decryption key and said first
encryption key are a public-private cryptographic key pair.
69. The method of claim 68 where said step of using a first encryption key
to perform a first cryptographic operation includes:
(a) computing a message digest on at least a portion of said software; and
(b) encrypting said message digest with said first encryption key.
70. The method of claim 67 where said cryptographic certification is
secured by a second encryption key corresponding to said second decryption
key, and where said second keys are a public-private cryptographic pair.
71. The method of claim 70 where said cryptographic certification includes
a message digest of said first decryption key, said message digest having
been encrypted with said second encryption key.
72. The method of claim 67 where said software has been encrypted. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to the use of public key encryption, and more
particularly, the present invention relates to the use of public key
encryption to achieve enhanced security and product authentication in the
distribution of software.
2. Art Background
Public key encryption is based on encryption algorithms that have two keys.
One key used for encryption, and the other key is used for decryption.
There is a known algorithm that computes the second key given the first.
However, without full knowledge of all the parameters, one cannot compute
the first key given the second key. The first key is referred to as the
"private key", and the second key is referred to as the "public key". In
practice, either the private key or the public key may be used to encrypt
a message, with the opposite key used to decrypt it. In general, the
private key must be kept private, but the public key may be provided to
anyone. A variety of public key cryptographic schemes have been developed
for the protection of messages and data (See, Whitfield Diffie, "The First
Ten Years of Public Key Cryptography" (IEEE Proceedings, Vol. 76, No. 5,
1988) and Fahn, "Answers to Frequently Asked Questions about Today's
Cryptography (RSA Laboratories 1992).
Public key cryptography is used to send secure messages across public
communication links on which an intruder may eavesdrop, and solves the
problem of sending the encryption password to the other side securely.
Public key systems may also be used to encrypt messages, and also to
effectively sign messages, allowing the received party to authenticate the
sender of the message. One can also use public key cryptography to seal or
render tamper-proof a piece of data. In such event, the sender computes a
message digest from the data using specially designed cryptographically
strong digests designed for this purpose. The sender then uses the private
key to encrypt the message digest, wherein this encrypted message digest
is called a digital "signature". The sender then packages the data, the
message digest and the public key together. The receiver may check for
tampering by computing the message digest again, then decrypting the
received message digest with the public key. If the recomputed and
decrypted message digests are identical, there was no tampering of the
data.
"Viruses" and "worms" are computer code cleverly inserted into legitimate
programs which are subsequently executed on computers. Each time the
program is executed the virus or worm can cause damage to the system by
destroying valuable information, and/or further infect and spread to other
machines on the network. While there are subtle differences between a
virus and a worm, a critical component for both is that they typically
require help from an unsuspecting computer user to successfully infect a
computer or a corporate network.
Infection of computers by viruses and worms is a general problem in the
computer industry today. In addition, corporate networks are vulnerable to
frontal assaults, where an intruder breaks into the network and steals or
destroys information. Security breaches of any kind on large corporate
networks are a particularly worrisome problem, because of the potential
for large-scale damage and economic loss. Moreover, security breaches are
more easily accomplished when a corporate network is connected to a public
network, such as the Internet. Companies take a variety of measures to
guard against breaches of network security, either through frontal
assaults or infections, without cutting themselves off from the benefits
of being connected to a world-wide network.
The solution adopted by most companies that wish to reap the benefits of
connecting to the Internet, while maintaining security, is the
installation of a firewall. Firewalls generally restrict Internet file
transfers and telnet connections. Such transfers and connections can only
be initiated from within the corporate network, such that externally
initiated file transfers and telnet connections are refused by the
firewall. Firewalls allow electronic mail and network news to freely flow
inside the firewall's private network. The use of corporate firewalls
allows employees to readily exchange information within the corporate
environment, without having to adopt extreme security measures. A good
firewall implementation can defend against most of the typical frontal
assaults on system security.
One method of preventing viruses and worms from infecting a corporate
network is to never execute a program that may contain viruses. In
general, programs legitimately deployed throughout the corporate network
should be considered virus free. All binary executables, all unreviewed
shell scripts, and all source code fetched from outside the firewall are
software that may contain a worm or virus.
However, outside binary executables, shell scripts, and source code may
enter a corporate firewall through an E-mail attachment. For example, the
shell scripts that are used to make and send multiple files using E-mail
and the surveytools that start up by activating the E-mail attachment may
allow virus entry. Executables can also be directly fetched through the
iftp program, through a world-wide web browser such as Mosaic, or from an
outside contractor whose network has already been compromised.
In addition, the commercial software release and distribution process
presents security and authentication problems. For example, some of the
information associated with software, such as the originating company or
author, restricted rights legends, and the like are not attached to the
code itself. Instead, such information is provided as printed matter, and
is separated from the code once the package is opened and the code
installed. Even applications that attempt to identify themselves on
start-up are susceptible to having the identification forged or otherwise
counterfeited.
A user has no mechanism to authenticate that the software sold is actually
from the manufacturer shown on the label. Unauthorized copying and the
sale of software is a significant problem, and users who believe that they
are buying software with a manufacturer's warranty instead purchase
pirated software, with neither a warranty nor software support. The
problem of authenticating the original source of the software is
accentuated when software is intended to be distributed through networks,
and a user's source for the software may be far removed from the original
writer of the software. In addition, a user does not have that ability to
verify that the software purchased contains only the original
manufacturer's code. A user also does not have a method for detecting any
tampering, such as the existence of a virus, that may cause undesirable
effects.
All of the above problems are related to the transport of software both
from manufacturers to users and from user to user. Furthermore, the
transport problem is independent of the transport medium. The problem
applies to all transport media, including floppy disk, magnetic tape,
CD-ROM and networks.
As will be described, the present invention provides a method and apparatus
for authenticating that software distributed by a manufacturer is a
legitimate copy of an authorized software release, and that the software
contains only the original manufacturers code without tampering. The
present invention solves the above identified problems through the use of
a "software passport" which includes the digital signature of the
application writer and manufacturer. As will be described, the present
invention may also be used to protect intellectual property, in the form
of copyrighted computer code, by utilizing cryptographic techniques
referred to herein as public key encryption.
SUMMARY OF THE INVENTION
This invention provides a method and apparatus utilizing public key
encryption techniques for enhancing software security and for distributing
software. The present invention includes a first computer which is
provided with source code to be protected using the teachings of the
present invention. In addition, a software application writer's private
key, along with an application writer's license provided to the first
computer. An application writer generally means a software company such as
Microsoft Corporation, Adobe or Apple Computer, Inc. The application
writer's license includes identifying information such as the application
writer's name as well as the application writer's public key. A compiler
program executed by the first computer compiles the source code into
binary code, and computes a message digest for the binary code. The first
computer then encrypts the message digest using the application writer's
private key, such that the encrypted message digest is defined as a
digital "signature" of the application writer. A software passport is then
generated which includes the application writer's digital signature, the
application writer's license and the binary code. The software passport is
then distributed to a user using any number of software distribution
models known in the industry.
A user, upon receipt of the software passport, loads the passport into a
computer which determines whether the software passport includes the
application writer's license and digital signature. In the event that the
software passport does not include the application writer's license, or
the application writer's digital signature, then the user's computer
system discards the software passport and does not execute the binary
code. As an additional security step, the user's computer computes a
second message digest for the software passport and compares it to the
first message digest, such that if the first and second message digests
are not equal, the software passport is also rejected by the user's
computer and the code is not executed. If the first and second message
digests are equal, the user's computer extracts the application writer's
public key from the application writer's license for verification. The
application writer's digital signature is decrypted using the application
writer's public key. The user's computer then compares a message digest of
the binary code to be executed, with the decrypted application writer's
digital signature, such that if they are equal, the user's computer
executes the binary code. Accordingly, software products distributed with
the present invention's software passport permits the user's computer to
authenticate the software as created by an authorized application writer
who has been issued a valid application writer's license. Any unauthorized
changes to the binary code comprising the distributed software is evident
through the comparison of the calculated and encrypted message digests.
The present invention is also described with reference to an embodiment
used by computing platforms designed to execute only authorized software.
A platform builder provides an application writer with a platform
builder's digital signature which is included in the application writer's
license. The first computer compiles the software into binary code and
computes a first message digest for the binary code. The first computer
further encrypts the first message digest using the application writer's
private key, such that the encrypted first message digest is defined as
the application writer's digital signature. A software passport is
generated which includes the application writer's digital signature, the
application writer's license and the binary code. The software passport is
then distributed to a user through existing software distribution
channels. The user's computing platform, which may be a computer, a video
game box or a set top box, is provided with the platform builder's public
key. Upon receipt of the software passport, the computing platform
determines if the software passport includes an application writer's
license. If it does not, the hardware platform rejects the execution of
the code. If a software passport is present, the hardware platform
extracts the application writer's license from the passport and determines
whether or not the passport includes the platform builder's signature. The
platform builder's signature is then decrypted using the public key
provided in the platform. The computing platform recomputes the message
digest of the application writer's license, and compares the received
message digest with the recomputed message digest, such that if the
digests are not equal, the software passport is not considered genuine and
is rejected. If the message digests are equal, the hardware platform
extracts the application writer's public key from the application writer's
license, and extracts the application writer's digital signature. The
hardware platform then recomputes the message digest of the binary code
comprising the application software to be executed, and decrypts the
application writer's digital signature using the application writer's
public key. The hardware platform then compares the recomputed message
digest for the binary code with the application writer's decrypted
signature, such that if they are equal, the binary code is executed by the
hardware platform. If the recomputed message digest and the application
writer's decrypted signature are not equal, the software passport is
rejected and the code is not executed.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates a data processing system incorporating the teachings of
the present invention.
FIG. 2 conceptually illustrates use of the present invention's software
passport where the application code and the software passport are provided
in separate files.
FIG. 3 conceptually illustrates use of the present invention's use of the
software passport where the application code and the software passport are
distributed in the same file.
FIG. 4 diagrammatically illustrates the present invention's process for
generating a software passport.
FIG. 5 diagrammatically illustrates the use of the present invention for
platform producer licensing.
FIGS. 6a and 6b are flowcharts illustrating the steps executed by the
present invention for verifying that a valid software license exists, and
that the software writer's ("SW's") signature is valid, prior to
permitting the execution of a computer program.
NOTATION AND NOMENCLATURE
The detailed descriptions which follow are presented largely in terms of
symbolic representations of operations of data processing devices. These
process descriptions and representations are the means used by those
skilled in the data processing arts to most effectively convey the
substance of their work to others skilled in the art.
An algorithm is here, and generally, conceived to be a self-consistent
sequence of steps leading to a desired result. These steps are those
requiring physical manipulations of physical quantities. Usually, though
not necessarily, these quantities may take the form of electrical or
magnetic signals capable of being stored, transferred, combined, compared,
displayed and otherwise manipulated. It proves convenient at times,
principally for reasons of common usage, to refer to these signals as
bits, values, messages, names, elements, symbols, operations, messages,
terms, numbers, or the like. It should be borne in mind, however, that all
of these similar terms are to be associated with the appropriate physical
quantities and are merely convenient labels applied to these quantities.
In the present invention, the operations referred to are machine
operations. Useful machines for performing the operations of the present
invention include general purpose digital computers or other similar
devices. In all cases, the reader is advised to keep in mind the
distinction between the method operations of operating a computer and the
method of computation itself. The present invention relates to method
steps for operating a computer, coupled to a series of networks, and
processing electrical or other physical signals to generate other desired
physical signals.
The present invention also relates to apparatus for performing these
operations. This apparatus may be specially constructed for the required
purposes or it may comprise a general purpose computer selectively
activated or reconfigured by a computer program stored in the computer.
The method/process steps presented herein are not inherently related to
any particular computer or other apparatus. Various general purpose
machines may be used with programs in accordance with the teachings
herein, or it may prove more convenient to construct specialized apparatus
to perform the required method steps. The required structure for a variety
of these machines will be apparent from the description given below.
DETAILED DESCRIPTION OF THE INVENTION
In the following description, numerous specific details are set forth such
as system configurations, representative data, computer code organization,
encryption methods, and devices, etc., to provide a thorough understanding
of the present invention. However, it will be apparent to one skilled in
the art that the present invention may be practiced without these specific
details. In other instances, well known circuits and structures are not
described in detail in order to not obscure the present invention.
Moreover, certain terms such as "knows", "verifies", "compares",
"examines", "utilizes", "finds", "determines", "challenges",
"authenticates", etc., are used in this Specification and are considered
to be terms of art. The use of these terms, which to a casual reader may
be considered personifications of computer or electronic systems, refers
to the functions of the system as having human-like attributes, for
simplicity. For example, a reference herein to an electronic system as
"determining" something is simply a shorthand method of describing that
the electronic system has been programmed or otherwise modified in
accordance with the teachings herein. The reader is cautioned not to
confuse the functions described with everyday human attributes. These
functions are machine functions in every sense.
Exemplary Hardware
FIG. 1 illustrates a data processing system in accordance with the
teachings of the present invention. Shown is a computer 10, which
comprises three major components. The first of these is an input/output
(I/O) circuit 12 which is used to communicate information in appropriately
structured form to and from other portions of the computer 10. In
addition, computer 10 includes a central processing (CPU) 13 coupled to
the I/O circuit 12 and a memory 14. These elements are those typically
found in most general purpose computers and, in fact, computer 10 is
intended to be representative of a broad category of data processing
devices. Also, the computer 10 may be coupled to a network, in accordance
with the teachings herein. The computer 10 may further include encrypting
and decrypting circuitry incorporating the present invention, or as will
be appreciated, the present invention may be implemented in software
executed by computer 10. A raster display monitor 16 is shown coupled to
the I/O circuit 12 and issued to display images generated by CPU 13 in
accordance with the present invention. Any well known variety of cathode
ray tube (CRT) or other type of display may be utilized as display 16.
The present invention's software passport identifies a portion of software,
or some machine code (hereinafter "code"), in a manner similar to how a
physical passport identifies a person. The concept is similar to the
real-life passport system which forms the basis of a trust model among
different nations. Physical passports enable border entry officers to
identify each individual and make certain decisions based on his/her
passport. As will be described below, a software passport is a modern
release process for distributing software products. A software passport
gives a software product an identity and a brand name. The software
passport provides the basis of a trust model and allows computer users to
identify and determine the genuineness of a software product based on the
information contained in its passport.
Referring now to FIG. 2, the present invention is illustrated in conceptual
form for the case where the computer code (comprising a piece of software)
and the software passport are in separate files. FIG. 3 illustrates the
use of the present invention where the computer code comprising a piece of
software and the software passport are in the same file.
As illustrated in FIGS. 2 and 3, the information included in the present
invention's software passport may include:
product information, such as the software product's name and any other
relevant information to the specific product;
company information including the name of the company or the software
application writer who has produced the product;
a validity date which includes the issue date of the software passport and
the expiration date of the passport;
a restricted rights legend including copyright notices and other similar
legends;
the software code body including executable application code distributed to
the user;
an application writer's license; and,
a software application writer's digital signature.
It will be appreciated that the components of a software passport are
generally self-explanatory, with the application writer's license and
digital signature explained in more detail below.
SOFTWARE PRODUCER'S DIGITAL SIGNATURE
A digital "signature" is produced by using certain cryptographic techniques
of computing a message digest of a piece of software code (hereinafter
"code"), and encrypting the message digest using the signer's private key.
There are many known message digest algorithms, such as the MD2, MD4, and
MD5 algorithms published by RSA, Inc. The use of private cryptographic
techniques makes this signature very difficult to forge since the signer
keeps the private key secret. The reader is referred to the papers by
Whitfield Diffie, "The First Ten Years of Public Key Cryptography", Vol.
76, No. 5 (IEEE Proceedings, May 1988), which is attached hereto as
Appendix A; and Whitfield Diffie, et al., "Authentication and
Authenticated Key Exchanges" (1992 Kluwer Academic Publishers) attached
hereto as Appendix B, for a detailed description of the operation of
Diffie-Helman certificates and public key cryptography.
One may conceptualize the computing of the message digest for a piece of
code as a mechanism of taking a photo snapshot of the software. When the
code changes, its message digest reflects any differences. In the system
of the present invention, this "digital signature" is stamped on the
product prior to its release. The digital signature associates a product
with the entity that has produced it, and enables consumers to evaluate
the quality of a product based on the reputation of the producer. The
signature also permits a consumer to distinguish the genuineness of a
product.
SOFTWARE PRODUCER'S LICENSE
The present invention's software producer's license (at time referred to
herein as the "application writer's license") is an identification similar
to the home repair contractor's license issued by a state. A software
producer's license identifies and certifies that the producer is
authorized to perform certain software production activities. It is
contemplated that the software producer's license will be issued by some
commonly-trusted authority established by the computer software industry.
Before issuing an license to a software producer, this authority performs
a defined process to authenticate the person or company, and to verify
their job skill; as a state does before issuing a contractor's license.
For convenience, in this Specification, this commonly-trusted entity is
referred to as the Software Publishing Authority ("SPA").
A software producer's license contains the following information:
the producer's name;
the license's issue date;
the license's expiration date;
the producer's public key;
the name of the issuing authority, SPA; and
the SPA's digital signature.
A software producer's license associates an application writer with a name
and a public key. It enables a software producer to produce multiple
products, and to sign every product produced. The public key embedded in a
license belongs to the person who owns the license. This public key can
later be used by any third party to verify the producer's digital
signature. A user who has purchased a product can determine the
genuineness of a product by using the public key embedded in the
producer's identification to authenticate the digital signature.
The SPA's digital signature is generated by computing the message digest of
the producer's identification and encrypting the message digest using the
SPA's private key. Since the SPA's private key is kept private to the SPA,
third parties are not able to easily forge the SPA's signature to produce
a fake identification.
In accordance with the teachings of the present invention, a software
application writer ("SW") supplies three major pieces of information to a
compiler prior to compilation of the code:
the source code written by the application writer;
the application writer's private key; and
the application writer's license.
The code included in a passport may comprise source code in various
computer languages, assembly code, machine binary code, or data. The code
may be stored in various formats. For example, a piece of source code may
be stored in a clear text form in the passport. A portion of binary
executable machine code may also be stored in a compacted format in the
passport, using certain well known compaction algorithms such as Huffman
encoding. The format used in a particular implementation is indicated by a
flag in the passport.
Binary executable code may further be stored in a printable-character set
format to allow the passport to be printed. A user would then reverse the
printable-format to recover the software. Moreover, code protected by
intellectual property, such as copyright or patent, may be stored in an
encrypted format in the passport. In such case, it is contemplated that a
user may be required to pay a license fee prior to gaining access to the
software.
Referring now to FIG. 4, to generate the software passport of the present
invention, the original source code 20, the application writer's private
key 22, and the application writer's license 24 is provided to a compiler
26. As illustrated, the application writer's license 24 includes the
writer's name 30, the writer's public key 32 and a validity date 34.
The compiler 26 then compiles the source code 20 into binary code. The
compiler 26 further computes the message digest of the binary code, and
encrypts the message digest using the private key 22 supplied by the
application writer. This encrypted message digest constitutes the
application writer's signature.
A digital signature of the applicatio | | |