1. Field of the Invention
The present invention relates generally to the field of Electronic Software Distribution (ESD) and more particularly to methods for digitally distributing software applications with security features provided by Digital Rights Management (DRM) techniques.
2. Description of the Prior Art
Electronic Software Distribution (ESD) is a product distribution method used for electronically distributing software products. ESD is rapidly becoming the preferred and dominant method for distributing digital contents. The central issue of ESD is Digital Rights Management (DRM), which in the broadest definition includes all digital management of any rights rather than merely management of digital rights. The challenges posed by DRM are different than those found in traditional rights management. Traditional rights management usually involves content embodied in some tangible medium that has a certain degree of physicality that is hard to change and thus provides some barrier to unauthorized exploitation of the content. In contrast, digital media provide little barrier to the unauthorized exploitation of content embodied therein. Thus, the same technology that allows digital content to be created also makes it extremely easy to copy that content. In addition, because a digital copy is typically identical to the original, successive generations do not suffer deterioration or degradation of quality, further enabling unauthorized copies of digital content to be readily made. As a result of unauthorized copying, software sold to a single customer may end up in the hands of, and used by, many unauthorized users. This may occur either through unauthorized production and distribution of counterfeit copies of the software or through file distribution at individual levels such as unscrupulous sharing among people.
In addition to the issue of authorization (e.g. unauthorized copying), digital content communicated through a network also faces the issue of authentication. Network-communicated digital content is subject to third-party tampering, for example, through eavesdropping, alteration, impersonation and spoofing. The issue of authentication is a particularly serious one over the Internet. The Internet uses the Transmission Control Protocol/Internet Protocol (TCP/IP) to allow information to be routed from an originating computer to a destination computer through a variety of intermediate computers and separate networks. The routing characteristics of the Internet make it possible for a third party to interfere with communications.
It will be appreciated, therefore, that means of retaining or enforcing the property control over digital content is necessary if there is to be viable commerce based upon the distribution of valuable digital content. Electronic Software Distribution has employed DRM methods to answer the above challenge using a variety of techniques including both software solutions and hardware solutions. The existing Digital Rights Management (DRM) methods focus on security and encryption as a means to prevent or frustrate unauthorized copying.
A variety of methods may be used to implement the above general concept, particularly the encryption and decryption. Encryption of the software application is commonly accomplished using a set of well-established techniques and standards known as public/private-key cryptography. The techniques are briefly explained below.
Two problems often occur with the Electronic Software Distribution methods using the above-described DRM techniques. First, digital rights such as digital certificates containing decryption information are themselves unprotected once issued. Anyone who has a copy of the digital certificate containing decryption information can use it to decrypt the encrypted digital content which is often freely distributed or at least subject to unauthorized distribution. Underground manufacturers sometimes make pirate copies of the digital content and provide decryption information to their customers. On a smaller scale, unscrupulous users may also pass the decryption information to others without authorization. Second, digital certificates often involve entering and verifying long alphanumeric keys or pass phrases, creating a somewhat frustrating user experience and prevents automation.
Given the crucial role Electronic Software Distribution (ESD) plays in the commerce involving digital contents, it is desirable to have an ESD method or system that provides robust content protection while at the same time affording better automation and a more pleasant user experience.
The present disclosure provides an electronic software distribution (ESD) method. The method starts by receiving a set of user data from which a hardware identification attribute can be determined. A digital hardware signature having the hardware identification attribute is then generated and appended to a software application to generate a software application package which is fully executable only on a hardware device having a matching hardware identification attribute. In one embodiment, the digital hardware signature is merged with the software application such that the software application cannot be separately executed even if the main code component is non-encrypted or decrypted. Once complete, the software application package is then distributed. The software application package can be distributed in various forms including a downloadable executable file, a copy on the CD-ROM, or copy on a removable ROM or RAM card.
In one embodiment, the hardware identification attribute is automatically determined for the purpose of generating the digital hardware signature. For example, the hardware identification attribute may be stored in the hardware device and automatically determined and communicated through electronic means. Alternatively, the hardware identification attribute is automatically determined by matching a user identification with a database that contains records for hardware identification attributes associated with respective user identifications. A user interface, such as a Web browser, is used for entering the user data. The user interface is desirably deployed at a point-of-sale where a retailer or a consumer purchasing a copy of the software package can enter the user data. The method is particularly suited for distributing software applications for handheld devices such as PDAs or handheld game consoles.
The present disclosure also provides an electronic software distribution (ESD) system that includes a user interface for receiving a set of user data from which a hardware identification attribute can be determined and a server system for generating a digital hardware signature based on the set of user data upon receiving a request from the user interface, and for the appending the digital hardware signature to a software application component to form a software application package. The system also includes a distributing channel for distributing the software application package.
In one embodiment, the server system includes an Electronic Software Distribution server that stores the software application component, and a digital signature server that stores private keys for generating the digital hardware signature. The digital signature server is configured to return the generated digital hardware signature to the Electronic Software Distribution server to form the software application package.
Also provided is an electronic software distribution (ESD) method used by a retailer or a vendor at a point-of-sale to sell software applications. The method starts by receiving a set of user data from which a hardware identification attribute can be determined. A request is then sent to a server system to generate a digital hardware signature having the hardware identification attribute. A software application package having a main code component and a digital hardware signature appended thereto is then generated and received from the server system. The software application package is fully executable only on a hardware device having a matching hardware identification attribute.
As disclosed herein, the Electronic Software Distribution method uses a DRM management technique that employs a digital cryptographic signature to carry out a unique “reverse validation” of a digital cryptographic signature. Because the hardware signature is appended to the main code component of the software application to form the software application package, no separate DRM certificate is necessary for a user to be authorized to use the software application. The simplicity of digital hardware signature validation makes possible an automated DRM method or system that enables a uniquely packaged software application to an authorized hardware device. Accordingly, the user is not required to remember or enter a license key or license code. Furthermore, according to the present invention, maintaining digital rights no longer requires encryption of the main code component of the software application, although encryption still can be used.
Other features and advantages of the disclosure will become more readily understandable from the following detailed description and figures.
The ESD method and system of the present disclosure will be described in detail along with the following figures, in which like parts are denoted with like reference numerals or letters.
The present invention provides ESD methods and systems using digital rights management based on hardware identification.
Representative embodiments of the DRM methods and systems are discussed below to illustrate the invention. The disclosed methods or systems should not be construed as limiting in any way. Although the examples use a software application in the format of an executable PalmOS resource file (.prc), the methods and the systems in accordance with the present disclosure are not limited to this file type.
In one embodiment, ESD server 402 stores a collection of unpackaged applications (not shown in
In an illustrative process, the ESD system in
Next, signature server 404 returns the generated digital hardware signature to ESD server 402. Upon receiving the digital hardware signature, ESD server 402 appends the digital hardware signature to the ordered software application to form a software application package. The software application thus packaged is executable on a hardware device only when the hardware device has a matching hardware identification attribute. An example of such packaged software application will be illustrated later with reference to
Finally, ESD server 402 dispenses or distributes the software application package to an intended party such as a buyer or user of the software. Depending on the setup, the software application package may either be sent to an intended buyer directly or to a retailer. Various types of distribution channels may be used. The most direct one is to use network 400 itself to electronically deliver the software application package. For example, because ESD server 402 needs to receive user data, it is preferably connected to a user interface, such as a Web browser, that can be accessed by a retailer or a customer (a user or purchaser of the software application) at a point-of-sale 406. When a Web browser is used as a user interface, the software application package can be downloaded through network 400. However, the software application package may also be stored in a digital medium such as CD-ROM or a ROM or RAM card (such as an SD or MMC flash card) for more conventional distribution.
It should be noted that the use of network 400 is preferred but optional for receiving the purchase information and the set of user data from which a hardware identification attribute can be determined. Such information and data may be received through other means as well, such as a telephone, a fax machine or regular mail.
In one embodiment, the hardware identification attribute of the hardware device is automatically determined for the purpose of generating the hardware signature. For example, a serial number stored in a ROM may be electronically and automatically detected when hardware device 408 is connected through network 400. Alternatively, the hardware identification attribute can be determined based on the user information provided to the servers (either ESD server 404 or signature server 402). To accomplish this, the servers 402, 404 maintain a database that contains records that associate hardware devices with user information. After the user information containing a user identification is provided to the servers 402, 404, the hardware identification attribute is determined by matching the user identification to the database.
Software application 500 includes main code component 502, which is a collection of application code and data resources. Like any PalmOS resource file, software application 500 may also include PRC header and PRC resource headers; such headers are omitted from
Software application 500 further includes multiple Signature Resources 504, 506, 508, 510 and 512 (Signature Resources 0, 1, 2, 3, and 4, respectively). In particular, among these Signature Resources is hardware signature 512 (Signature Resources 4) which is a security component including a hardware identification attribute. Hardware signature 512 (Signature Resources 4) is described below, while the other Signature Resources are discussed in a later section of this disclosure.
In one embodiment, hardware signature 512 is an encrypted digital signature created from a hash and a key. Hardware signature 512 includes a hardware identification attribute, such as a serial number or a model number, that can at least partially identify a specific hardware device (not shown in
Like other Signature Resources components, hardware signature 512 is appended to the main code component 502 to form a packaged software application 500. This is different from existing techniques which use some form of “equipment node” to tie an application to a user's hardware device and require that the user separately obtain from a key issuer a DRM certificate and a DRM private key. By contrast, hardware signature 512 becomes a part of the packaged software application 500 and forms the basis of a reverse signature validation mechanism as described herein to verify an authorized hardware device. It should be noted that there is no requirement to encrypt the software application 500, although it can be.
After the software application 500 has been installed on a hardware device such as a Palm device (not shown in
The exemplary hardware signature 512 can only be validated with a validating key that matches the key use for generating hardware signature 512. In some embodiments, hardware signature 512 is generated using a private key and validated by a public key stored on the hardware device. The hardware signature 512 includes a data set including a hardware identification attribute and can only be validated if the same hardware identification attribute is present on the hardware. As a result, software application 500 is enabled (i.e., fully executable) if the hardware identification attribute is also present in the hardware device, and is disabled (either wholly unexecutable or only partially executable) if the hardware identification attribute is not also present in the hardware device. It will be appreciated that because the hardware signature 512 is constrained to a hardware device having a specific hardware identification attribute, copies of software application 500 will only be unlocked when executed by the hardware device having the specific hardware identification attribute.
It will be appreciated that in the above embodiments, the validating key is not required to include a hardware identification attribute. The same validating key can be shared by many hardware devices. The hardware-specific security in these embodiments thus comes from a secure private key and the hardware-specificity of the data set of the hardware signature 512.
Standard cryptography techniques, such as RSA asymmetric key technique, can be used to associate a hardware identification attribute with the hardware signature 512. For example, a hardware device may be identified using a hardware identification that includes several hardware identification attributes. An alphanumeric string may be determined from the hardware identification attribute and is included as a part of the signature data set to be validated. During validation, codes embedded in an operating system of the hardware device generate another data set and compare the new data set with the original signature data set. If the same hardware identification attribute is present on the hardware device, the new data set would be identical to the original signature data set, thus successfully validating the hardware signature. If the same hardware identification attribute is not present on the hardware device, the new data set generated by the operating system on the hardware device would not match the original signature data set, and the validation of the hardware signature fails.
In other embodiments, the key pair used to generate hardware signature 512 is designed such that a matching key can only be found on a hardware device that has a specific hardware identification attribute. The signature keys can be determined such that both include the same hardware identification attribute, or attributes, from amongst the several hardware identification attributes of the hardware device. This method, however, is less preferred because it makes it difficult to apply standard cryptography techniques. For example, the standard RSA asymmetric key technology has its own rules for selection of keys, leaving little room for hardware specific keys.
It will be understood that the hardware identification attribute itself is not required to be an alphanumeric string, nor is the hardware identification attribute itself required to literally constitute a part of the security component, the hardware signature, or the key. The phrases “including a hardware identification attribute” or “having a hardware identification attribute” only mean that the security component, the hardware signature, or the key is determined using the hardware identification attribute as an input and is thus associated with the hardware identification attribute. For example, a hardware signature including a hardware identification attribute means that the hardware signature, which is generated from a data set, is either determined using a certain algorithm such that the hardware signature is a function of the hardware identification attribute, or a corresponding signature key for the hardware signature is encrypted and can only be decrypted by using another key that is determined as a function of the hardware identification attribute. The hardware identification attribute does not have to be an alphanumeric string but must contain proper information that is capable of uniquely determining an alphanumeric string.
In a simpler form, however, the hardware identification attribute may indeed be an alphanumeric string, or even a straight number, such as a serial number. In this case, the hardware identification attribute may be directly inserted into the signature data set to be validated. Or alternatively, one of the keys can simply be the same number as the serial number, or at least incorporate the serial number as a part of the key, while the other key in the pair is determined from the first key using standard cryptographic techniques.
In a more sophisticated form, the hardware identification attribute may be indirectly incorporated into the hardware signature or a key that validates the hardware signature. For example, in the case where a serial number of the hardware device is used as the hardware identification attribute, the key which validates the hardware signature may be an authorization key that is different than, or even has no direct relationship with, the serial number but nevertheless indirectly incorporates the serial number. For example, the authorization key for validating the hardware signature is encrypted such that the serial number of the hardware device functions as a decryption key (or at least constitutes a part of the decryption key) to decrypt the authorization key, which in turn is used to decrypt the hardware signature. Using this indirect method to incorporate the hardware identification attribute into the hardware signature can afford more flexibility.
For example, in some cases an authorized user needs to use a different hardware device either because the user has lost the previously authorized hardware device or has upgraded to a new hardware device. In such instances, the user only needs to obtain from the vendor a new encrypted authorization key which can be decrypted using the hardware identification attribute (the serial number in this example) of the new hardware device and does not have to obtain an entirely new software application package. In comparison, if the hardware identification attribute (e.g., a serial number) has been directly used as the validating key of the hardware signature, the user would have to obtain a new software application package including a new hardware signature in the above scenario.
In one embodiment, the signing key for generating the hardware signature is a private key while the validating key use for validating the hardware signature is a public key. Any suitable cryptographic technique can be used for the necessary encryption/decryption of the DRM methods of the present disclosure. A suitable example is industry-standard and industrial-strength Public-Key Cryptography Standards (PKCS) from RSA Security. As known in the art of cryptography, encryption is a process of transforming information from an original form to a form that is unintelligible to anyone but the intended recipient. Decryption is the process of transforming encrypted information back to the original intelligible form. Encryption and decryption are mathematical operations performed on digital content using cryptographic algorithms, which are mathematical functions. An encryption function and its matching decryption function are related mathematical operations. In key-based cryptography, encryption or decryption can be performed only with the combination of both a right cryptographic algorithm and a right cryptographic key. Cryptographic keys are long numbers. Because cryptographic algorithms themselves are usually widely known, the ability to keep encrypted information secret is not based on the secrecy of a particular cryptographic algorithm but on the secrecy of the cryptographic key that must be used with that algorithm to produce an encrypted result or to decrypt previously encrypted information.
Both symmetric-key encryption and asymmetric encryption may be used, but asymmetric encryption is preferred. The latter is also called public/private-key encryption because the method uses a pair of two different keys, one made public while the other kept secret (private). The pair of keys, namely the public key and the private key, are associated with an entity that needs to authenticate its identity electronically or to sign or encrypt data. Data encrypted with one key in the pair can be decrypted only with the matching key in the pair. Decryption with the correct key is simple. Decryption without the correct key is very difficult, and in some cases impossible for all practical purposes. As is well known in the art, in association with and in addition to content encryption, key-based cryptography is also used for digital signatures and digital certificates. For this purpose, the private key is conventionally used for the signing function while the public key is used for the validating function. More specifically, in a conventional application of digital signatures, the public uses the public key to verify the identification of the entity who has executed the signature using the corresponding private key. In a preferred embodiment of the present invention, a private key is used to sign a data stream including the hardware ID, creating the hardware signature, while a public key is used to reversely verify the same data stream on the device, thus proving the authorization for the hardware was issued by the vendor.
The hardware device, whose hardware identification attribute is used to generate the hardware signature, may be any electronic device, such as a PC, a handheld computer, a game console, or a portable game console, that is capable of running the software application given proper authorization. Alternatively, the hardware device, whose hardware identification attribute is used to generate the hardware signature, can be a storage device such as a removable ROM or RAM card that stores the software application. In some embodiments, the software application executes on a host hardware device when the removable storage device storing the software application is connected to the host hardware device.
In some embodiments, the hardware identification attribute is desirably capable of uniquely identifying every hardware device in a hardware group. The hardware group can comprise a group of devices sold together to a single client, a particular hardware device model, a certain class of hardware devices, or can broadly encompass all hardware devices that are suitable for running the software application. In these embodiments, where the software application is intended to be run on any member of a hardware group, a hardware identification attribute common to the hardware group or hardware domain may be used.
The hardware identification attribute is desirably present on, or determinable from, the hardware device itself. For example, the hardware identification attribute can be a piece of electronic data stored on the hardware device. The stored data is desirably persistent so that it is not easily changeable. For example, the persistent attribute may be a serial number stored in a ROM memory element of the hardware device. The hardware identification attribute is further desirably created during the manufacture of the hardware device and difficult to modify subsequently.
Referring again to
Special resource 506 can further include information for the version of the software application 500, the hardware, and the hardware signature 512. Special resource 506 can further include permission-type information. For example, a byte reserved for the permission-type information may be set to different values to indicate various permission types including the following or a combination thereof:
Special resource 506 may also include instructions regarding how the software application 500 should function if the hardware signature validation fails. For example, a byte reserved for this information may be set to different values to instruct the operating system to either terminate the software application 500, reset the hardware device that runs the software application 500, terminate the software application 500 and reset the hardware device, or run the software application 500 in a restricted fashion such as a degraded demo mode.
As known in cryptography, generating a digital signature requires a hash in addition to a key. A digital signature is essentially an encrypted hash along with other information, such as the hashing algorithm. Hash is usually generated using a mathematical function called hashing operated on a data set. A hash is a numeric representation of the data set and therefore often called a data digest or a message digest. A hash is a number of fixed length. The value of the hash is unique for the hashed data. Any change in the data, even deleting or altering a single character, results in a different hash value. The most commonly used hashing algorithms generate a “one-way hash” in that, while the hash is generated from the hashed data set, the content of the hashed data cannot, for all practical purposes, be deduced from the hash.
As is known in art, hashing may be either performed as a separate step or as an integral part of signing or validating step.
In one embodiment, hardware signature 512 is generated using a hash of a data set comprising an application signature, which is a digital signature signed over the main code component of the software application 500. The application signature is also appended to and becomes a part of the packaged software application 500. The generation of such an application signature and its relation to the hardware signature in accordance with the present disclosure is further discussed below.
Referring again to
In another embodiment, a hash is generated using a few application particulars (such as the application name, version, and creator ID), and the generated hash is used to select a key pair from a pool of keys. Using this method, the key pair used for application signature is at least partially determined by the application particulars, and a different key pair may be used for a different type of application. This adds some security because two applications are less likely to use the same key pair. If one key pair is compromised, not all applications are breached.
For higher security, application signature 508 is preferably generated using a private key and validated using a public key. The private key can be chosen from a pool of keys that are carefully selected and kept secret by a controlling entity, which can be a developer, a distributor, a publisher, a retailer, but more preferably an entity (such as a manufacturer) who has a centralized control over multiple developers, distributors, publishers or retailers. Because the primary function of the application signature 508 described herein is to verify authentication rather than authorization, the public key used for validation of the application signature 508 is preferably well published, easily accessible and without unnecessary restrictions on specific hardware devices.
Software application 500 also includes skip list 504, which is a special resource to instruct which parts of the software application may be used to generate the hash for the application signature 508 and which parts may be skipped. The parts that are used to generate the hash will be digitally signed, or “sealed” and may not be modified after hardware signature 508 has been created, while the parts that are skipped may still be modified. For example, skip list 504 identifies the application resources that are subject to modification during application execution and therefore must be excluded from the generation of the application signature 508. An example of such an application resource is a data resource used for saving a registration code provided by the user.
An application resource may be configured to be automatically included in the skip list 504 by planting a data signal in the application resource. For example, the software application 500 may be configured so that it treats an application resource as being automatically in the skip list if the most significant bit (MSB) of the application resource is set to “1.” On the other hand, certain application resources, such as Signature Resources, may be pre-excluded from the skip list and thus always included in the generation of the application signature 508.
Additional steps can also be taken to enhance the security of software application 500. For example, any of the Signature Resources components (504, 506, 508, 510 and 512), but especially application signature 508 and hardware signature 512, can be merged with the main code component 502 such that the main code component 502 cannot be separately executed even if the main code component 502 is non-encrypted or decrypted. Custom codes and additional signatures may be added to provide further assurance that software application 500 cannot be disassembled, stripped of DRM security components (such as hardware signature 512), and then reassembled as an unprotected application. For example, custom signatures may be created from one or more data resources or code resources within the software application 500, and included within the software application 500. When the software application 500 runs on a hardware device, custom code within the application uses APIs to validate these custom signatures. These validations may be performed at various places and times within the software application code to make tampering with the application code increasingly difficult.
Finally, software application 500 may be packaged in any desirable file format or medium, such as a copy on a CD-ROM, a copy on a ROM or RAM card, or a downloadable executable file. For a software application 500 used on a handheld device running the Palm OS, the packaged software application 500 is desirably a PalmOS resource file (.prc).
As disclosed herein, the exemplary ESD methods in accordance with the present disclosure use a DRM technique that uniquely employs digital cryptographic signature to carry out a function that is quite opposite to the commonly known conventional function of using a digital cryptographic signature. While the conventional function of using a digital cryptographic signature is for a receiving party to verify the identification of a signing entity, some DRM techniques in accordance with the present disclosure use a digital cryptographic signature so that the signing party can verify the identity of a receiving entity (specifically, a hardware device). If the public key of the receiving entity matches the private key held by the signing party that created the hardware signature, then verification is successful. Accordingly, some DRM techniques used in the exemplary ESD methods of the invention take advantage of the physicality of the public key of the receiving entity (the hardware device).
This unique “reverse validation” of a digital cryptographic signature contributes to the effectiveness and simplicity of DRM methods in accordance with the present disclosure. Because the hardware signature is appended to the main code component 502 of the software application 500 to form a software application package, no separate DRM certificate is necessary to authorize a user to use the software application 500. The simplicity of digital hardware signature validation makes possible automated DRM methods and systems that lock a uniquely packaged software application 500 to an authorized hardware device without requiring the user to remember or enter a license key or license code. Furthermore, the main code component 502 of the software application 500 does not need to be encrypted.
In the foregoing specification, the present disclosure is described with reference to specific embodiments thereof, but those skilled in the art will recognize that the present disclosure is not limited thereto. Various features and aspects of the above-described disclosure may be used individually or jointly. Further, the present disclosure can be utilized in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. The specification and drawings are, accordingly, to be regarded as illustrative rather than restrictive. It will be recognized that the terms “comprising,” “including,” and “having,” as used herein, are specifically intended to be read as open-ended terms of art.
The present disclosure is related to U.S. patent application Ser. No. ______ entitled “Digital Rights Management System Based on Hardware Identification” (Attorney Docket No. PA2804US) filed on even date herewith.