Abstract:
Copyrighted software may be executed only on an authorized computer by using a protection mechanism to restrain software to a designated machine. The protection mechanism includes a CIN (Computer Identification Number) reader and a CIN verifier. The CIN reader comprises a function call which reads CINs from the computer where the copyrighted software is intended to execute, and a converter which converts CINs to encrypted CINs. The CIN verifier comprises the encrypted authorized CINs and logic. The CIN may comprise the serial number of a computer chip, the serial number of a hard disk, the serial number of a computer operating system or the like. Protection mechanisms may be integrated into the copyrighted software at stop points by compiling the software source code or revising the executable code of the software. When the resulting protected software is processed on a computer, the protection mechanisms are executed at the stop points. The CIN verifiers then compare the encrypted authorized CINs with the encrypted read-in CINs. If the comparisons of the encrypted CINs match, the copyrighted software continues running. However, if the encrypted CINs are different, the protected software stops running and sends out a warning message.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     The present application claims priority from Provisional U.S. Patent Application Ser. No. 60/130,521, filed Apr. 23, 1999 and incorporated herein by reference in its entirety. 
    
    
     FIELD OF THE INVENTION 
     The present invention pertains to the field of copyright protection of computer software and more particularly to an Internet-based automated system and a method for automatically embedding protection mechanisms with computer identification numbers (CINs) into software and distributing the protected software to consumers over the Internet. 
     BACKGROUND OF THE INVENTION 
     Developing an easy, inexpensive, efficient, and reliable software copyright protection scheme has been a problem which has forever plagued the software industry. The Business Software Alliance estimates software developers and vendors lose billions of U.S. dollars each year from the unauthorized use and/or copying of their products. 
     For the purposes of the present application, the term “software” includes, but is not limited to computer programs, data, multimedia presentations, media files including audio and video data files, including music programs, movies, television, programs, and the like. Similarly, the term “computer” includes a computer system, home computer, laptop computer, palm computer, CD player, DVD player, or other media type player, as well as other types of computer controlled devices running software including industrial and robotic applications. The term “computer identification number” as used herein may include a computer processor serial number, hard drive serial number, operating system identification number, CD, DVD, or other media player serial number, or the like. 
     From the standpoint of preventing the unauthorized use of software, prior art software copyright protection methods may be broadly classified in three groups: hardware related methods, encrypted software methods, and non-encrypted software methods. All these methods involve trade-offs in terms of the level of protection, performance, costs, and ease of use. 
     In hardware related methods, the protection mechanism may need additional apparatus or hardware attached to a computer in order to properly function. Usually, this method may obtain a higher level of protection and security, but at the expense of increased cost and complexity. Because the cost of computer itself has continually reduced in recent years, this method becomes more and more unattractive in the field of software copyright protection. 
     In encrypted software methods, software may be disabled using various encryption algorithms and may be available only to someone who can restore the software to its original form through decryption. This encryption method generally does not require extra hardware. However, such encryption techniques may require users to provide additional information such as secure keys, which are distributed separately, to reassemble the program or decrypt the entitlement information and thus operate it. 
     The use of such keys may create severe performance degradation because of the overhead of verification. In addition, the use of encryption keys increases difficulty of use and has relatively high costs for each individual distribution. More importantly, one substantial drawback of this approach is it may not protect the copyright of software because a user can share the key and software with many others with no accountability to the copyright holder. 
     In non-encrypted software methods, the software contains some built-in machine specific information, and no secure keys are required to activate the software. The non-encrypted method is simple, efficient, and cost-effective, and provides a relatively high level of protection. However, non-encrypted methods may require a relatively complex processing and distributing system. Each copy of the protected software may require unique compilation by collecting individual consumer information and then distribution of the correct copy to an individual consumer. To date, due to the limitation of technologies in the past, this method has remained in the theoretical stage, and no related techniques have been proposed. 
     Recently, there have been significant developments in connection with the global information network called the World Wide Web. They include Hypertext Markup Language, Hypertext Transmission Protocol, GUI-based Internet navigation tools, Java™ Language, Virtual Reality Modeling Language, and the like. Such developments have not only made it very easy for companies to communicate with consumers for the purpose of advertising, selling, and maintaining their products and services, but also built up a very large and efficient information processing and software distributing system. 
     For example, it may be much more efficient and cost-effective to distribute software, digitally encoded music files, and even video files over the internet rather than distribute such data through traditional channels using physical media (e.g., CD-ROM, DVD, or the like). As the bandwidth of the internet increases through use of cable modems, ADSL modems, Network T 1  or ISDN lines, distribution of both software (i.e., programs) and media (i.e, movies, music recordings, videos, and the like) will become more prevalent. However, software and media providers are reluctant to allow downloading of their products through the internet for fear of copyright piracy. 
     As a result, the demand for some type of non-encrypted software method has significantly increased. With the development of Internet Technologies, it is expected some type of non-encrypted software method will be universally accepted, as the efficiency of the processing and distributing system continuously increases while its maintenance costs decrease. 
     Thus, there exists a demand for a simple, low cost, efficient, and effective system and method for software copyright protection and sales with the state of the art technologies. 
     SUMMARY OF THE INVENTION 
     The present invention provides an Internet-based automated system and method for software copyright protection and sales. This automated system includes a Web server for receiving consumer requests; Web pages for providing a user interface; data processing programs for handling consumer purchase orders; daemons for automatically performing software protection process and automatically distributing protected software to consumers over the Internet; and a server database which stores consumer information, software information, distribution information, and purchase order information and the like. 
     The automated software protection process includes the steps of acquiring computer identification numbers; selecting purchased software; and embedding protection mechanisms into the purchased software at stop points by compiling the purchased software source code or revising the executable code of the purchased software. 
     The protection mechanism may comprise a CIN reader and a CIN verifier. The CIN reader may comprise a function call to automatically read the computer identification numbers from computers and a program to convert the computer identification numbers to the encrypted computer identification numbers by means of any of a number of protection methodologies. The CIN verifier comprises the encrypted authorized computer identification numbers and logic. 
     Another mechanism embodied herein includes identifying consumer computer operating systems and reading the computer identification numbers from consumer computers automatically. 
     Broadly speaking, in response to requests for purchasing software, the Internet-based automated system will take consumer information; read consumer computer identification numbers; store consumer information and the computer identification numbers into the database; select the purchased software; embed the protection mechanisms into the purchased software; and distribute the protected software program to consumers. The complete process may be automatically performed and controlled by the daemons and processing programs. 
     When the protected software is executed on a computer, the protection mechanisms are invoked at the stop points. Each CIN reader first reads at least one computer identification number from the computer and then converts them to the encrypted CINs. The CIN verifiers then compare the encrypted authorized computer identification numbers with the encrypted read-in computer identification numbers. If the encrypted authorized computer identification numbers match with the encrypted read-in computer identification numbers, the protected software continues running. Otherwise, the protected software terminates. 
     Further features and advantages of the present invention will be apparent hereinafter and in the Claims to Invention. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     For a more complete understanding of how to practice the Present Invention, the following Detailed Description of the Preferred Embodiments is considered in conjunction with the following drawings, in which: 
     FIG. 1 is a flowchart of one embodiment of the acquiring and handling consumer information process of an Internet-based automated system for software copyright protection and sales in accordance with one embodiment of the present invention. 
     FIG. 2 is a flowchart illustrating automatically acquiring the computer identification numbers from a consumer computer in accordance with one embodiment of the present invention. 
     FIG. 3 is a flowchart of one embodiment of the automatic software protection process of an Internet-based automated system for software copyright protection and sales in accordance with one embodiment of the present invention. 
     FIG. 4 is a flowchart of one embodiment of a process for embedding the protection mechanisms into the purchased software in accordance with one embodiment of the present invention. 
     FIG. 5 is a flowchart depicting a software integration method for embedding the protection mechanisms by revising the executable of the purchased software according to the present invention. 
     FIG. 6 is a flowchart depicting a software integration method for embedding the protection mechanisms by compiling the source code of the purchased software according to the present invention. 
     FIG. 7 is a flowchart of one embodiment of a process for distributing the protected software to consumers in accordance with one embodiment of the present invention. 
     FIG. 8 is a flowchart of one embodiment of the automatic software distribution process of an Internet-based automated system for software copyright protection and sales in accordance with one embodiment of the present invention. 
     FIG. 9 is a flowchart of an embodiment of an apparatus for selling the CD-ROM which contains the protected software with dummy numbers in accordance with one embodiment of the present invention. 
     FIG. 10 is a block diagram illustrating the concept of the software protection mechanism in accordance with one embodiment of the present invention. 
    
    
     While the invention may be susceptible to various modifications and alternative forms, specific embodiments thereof are illustrated by way of example in the drawings and will herein be described in detail. It should be understood, however, the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the invention is to cover all modifications, equivalents, and alternatives following within the spirit and scope of the present invention, as defined by the accompanying Claims to Invention. 
     DETAILED DESCRIPTION OF THE INVENTION 
     The Internet-based automated software copyright protection and sales system of the present invention generally comprises three subsystems and a server database. The subsystems are a data collection subsystem for acquiring and handling consumer information (FIG.  1  and FIG.  2 ); a software protection subsystem for automatically embedding the protection mechanisms into the purchased software (FIG. 3, FIG. 4, FIG. 5, and FIG.  6 ); and a software distribution subsystem for automatically transmitting the protected software to consumers over the Internet (FIG.  7  and FIG.  8 ). 
     Data Collection Subsystem 
     FIG. 1 is a flow diagram of depicting the data collection subsystem. The data collection subsystem includes HTTP server  100  running in background, receiving requests for consumer access. Home Page  110  of the Internet-based automated system of the present invention may pop up when a request comes through. Home Page  110  may provide consumers with at least four options: Search/Help Page  115 , Open an Account Page  135 , Login/Logout Page  180 , and Utility Page  190 . 
     Within Search/Help Page  115 , Software Selection Page  120  may be available for consumers to select software they may wish to purchase. Each software may have an identification code. Titles of software, corresponding identification codes, and other information may be listed in Software Selection Page  120 , which may be permanently stored in the server database. After selecting software, consumers may either try out the samples of the selected software in step  125  or view demonstrations in step  130 . Search/Help Page  115  may also provide consumers with instructions for using the Internet-based automated system of the present invention. 
     Open an Account Page  135  may provide a Consumer Information Page  140 , allowing consumers to input their names, mailing addresses, credit card numbers, telephone numbers, email addresses, the computer identification numbers, the computer operating systems they are using, and other such data. After verification of consumer information in step  145 , the Internet-based automated system of the present invention creates an account for each consumer in step  150  by granting an account number and a password. 
     The Internet-based automated system of the present invention may then perform the process of automatically acquiring computer identification numbers from the consumer&#39;s computer in step  155  (illustrated in FIG.  2 ). The Internet-based automated system of the present invention may then store consumer information and computer identification numbers into the server database in step  160 . Software Identification Code Input Page  165  may be used for consumers to input software identification codes which may be associated with purchased or selected software and obtained from Software Selection Page  120 . 
     The Internet-based automated system of the present invention may then create a purchase order in step  170 , including purchase order number, software identification code, customer account number, distribution identification number, order protection flag, order distribution flag, protection methodology code, purchase date and time, and distribution date and time. Next, the Internet-based automated system of the present invention may store the purchase order into the server database and then set a corresponding protection flag to false in step  175 . Finally, the process of opening a consumer account is finished with the Distribution Page  198  (illustrated in FIG.  7 ). 
     Login/Logout Page  180  may first verify the consumer&#39;s account number and password. Then, it may provide three services for consumers through three Pages: Account Review Page  182 , Repurchase Page  184 , and Download Page  186 . If any changes to consumer information are needed in step  188 , the process may invoke Consumer Information Page  140 . Otherwise, it may jump to Software Identification Code Input Page  165 . Download Page  186  may be linked to Distribution Page  198  directly. Account Review Page  182  may be designed to allow consumers to examine their account information and purchase histories. Login/Logout Page  180  may also be employed for logging out from the Internet-based automated system of the present invention. 
     Utility Page  190  provides a tool for authorized users to edit executable files. Utility Page  190  may first verify user information such as user name and password in step  192 . Authorized users may then be allowed to use the editing utility to edit executable files in step  194 , and log out when finishing in step  196 . 
     FIG. 2 is a flow diagram illustrating the process of automatically acquiring computer identification numbers from a consumer computer. First, the Internet-based automated system of the present invention may check, in step  205 , to determine whether consumers have already provided their computer identification numbers through Consumer Information Page  140 . Second, the Internet-based automated system of the present invention may identify which operating system the consumer computer is running (e.g., Windows™, MacIntosh™, UNIX, or the like) in step  210 , if it is not already provided by the user. The type and version of operating system may be determined by creating a function call which comprises different operating system testing commands. 
     Then, the Internet-based automated system of the present invention may execute a function call which comprises either operating system commands or system calls to obtain the consumer&#39;s computer identification numbers in step  215 . These function calls are similar or identical to Java™ Applet programs, which may be download from a Web page and run on a client machine. In consideration of the trade-off between the level of protection and efficiency, the computer identification numbers may be chosen from one or more of several candidates: the serial number of one or more computer chips (e.g., Pentium™ processor number), the serial number of one or more hard disks, the serial number of the computer operating system and the like. If the function call is successful, the consumer&#39;s computer identification numbers may be temperately put into a buffer in step  220 . 
     Automated Software Protection Subsystem 
     FIG. 3 is a flowchart illustrating the automatic software protection subsystem. The process of FIG. 3 begins with running a daemon in the background. Daemons are processes which operate for a long time, and are often started when the system is bootstrapped and terminate only when the system is shutdown. The daemon may be generated to check the order protection flag for each purchase order in the server database at regular intervals in step  300 . If the order protection flag is false in step  305 , the daemon process may create a child process in step  310 . 
     The child process may then execute the process of embedding the protection mechanisms into the purchased software in step  315  (as illustrated in FIG.  4 ). After the embedding process is completed, the child process may then turn the order protection flag from false to true in step  320  and, at the same time, set the order distribution flag of the particular purchase order to false in step  325 , indicating the purchase order has completed software protection and the protected software is ready for delivery. The child process may then be terminated in step  330 . The advantage of running a daemon in the background is it may process the purchase orders 24 hours a day without substantial human intervention. 
     FIG. 4 is a flowchart illustrating the process for embedding protection mechanism(s) into purchased or selected software. When the embedding process is executed in step  400 , it may first retrieve computer identification numbers associated with the purchase order from a server database in step  405 . In step  410 , it is determined whether a revising utility is available. The revising utility may modify an executable file instead of editing, compiling, and linking the corresponding source code. The embedding process uses the revising method to embed the protection mechanisms into purchased or selected software in step  415  (as illustrated in FIG. 5) if the utility is available. Otherwise, it may exploit the compiling method instead in step  420  (as illustrated in FIG.  6 ). 
     After the software is fully protected, it may reside in a an outgoing mailbox directory in step  425  and is ready to be transmitted to a consumer. At the same time, the path of the protected software in the outgoing mailbox may also be stored into the server database. 
     FIG. 5 is a flowchart illustrating the process of embedding protection mechanisms into purchased or selected software using the revising method. The revising process ensures an executable file of protected software containing dummy numbers exists in step  505 . If the executable file is not present, the revising process makes a copy of the purchased or selected software source code in step  510  according to the software identification code obtained from Software Selection Page  120 . 
     If the purchased software is classified as an operating system in step  515 , the revising process may employ corresponding lower level functions calls to read in computer identification numbers from a consumer computer directly in step  525 . Otherwise, it may use corresponding operating system function calls to read in computer identification numbers through a consumer computer operating system in step  520 . 
     The revising process may then edit protection mechanisms in step  530 , each of which may comprise two parts: a CIN reader and a CIN verifier. The CIN reader comprises a function call (either a lower level function call or an operating system function call) and a converter. The function call may automatically read a computer or player identification number (e.g., processor number, player serial number, or the like) from a consumer computer or player. 
     The converter is a program which converts computer identification numbers to the encrypted computer identification numbers by means of any of a number of different protection methodologies known in the art. 
     The CIN verifier may comprise dummy numbers and logic. The protection methodologies in the protection mechanisms may vary with the purchased software and depend on the level of protection. Existing protection methodologies (i.e., encryption techniques) could be adopted or new protection methodologies may also be applied. It should be noted the protection methodologies may be easily and frequently adjusted against attacks from pirates. Thus, software may be effectively protected against the unauthorized use. 
     Thus, the present invention is not dependent upon any particular type of encryption or protection methodology. One of the important features of the present invention is that it allows any one of a number of encryption or protection methodologies to be employed to encrypt CIN information or protect programs. If a particular encryption or protection technology is compromised, the system of the present invention can be quickly and easily updated to a more sophisticated methodology without having to scrap or rework the existing system. 
     After generating protection mechanisms, the revising process determines stop points in step  535 , where execution of the software may be terminated if a computer is not authorized to run the software. Stop points could be in multiple places and put in any part of the source code. The revising process may then add protection mechanisms to the stop points in step  540 . A compiler may then be chosen according to the purchased or selected software, and the modified source code may be compiled in step  545  using the compiler. At this point, an executable file of the protected software with dummy numbers is generated, which is later transformed to an executable file with the encrypted computer identification numbers. 
     Next, the revising process encrypts the computer identification numbers using the same converter as in the protection mechanisms of step  555 . The revising process then replaces, by means of the revising utility, the dummy numbers with the encrypted computer identification numbers in step  560 . In the beginning of the revising process, if an executable file of the protected software with dummy numbers already exists, the revising process makes a copy of the executable file in step  550  and then jumps to the procedure in step  555 . Again, the computer or player identification numbers could be serial numbers of computer chips, serial numbers of hard disks, serial numbers of computer operating systems, player serial numbers, or the like. 
     FIG. 6 is a flowchart illustrating the process of embedding the protection mechanism into purchased software using the compiling method. Likewise the revising method, the compiling process first makes a copy of the purchased software source code in step  605  according to the software identification code obtained from the Software Selection Page  120 . It then encrypts the computer identification numbers using the same converter as in the protection mechanism of step  610 . If the purchased or selected software is categorized as an operating system in step  615 , the compiling process may use corresponding lower level function calls to read in computer identification numbers from the consumer computer directly in step  625 . 
     Otherwise, it may employ corresponding operating system function calls to read in computer identification numbers through the computer operating system in step  620 . When an appropriate function call is selected, the compiling process edits the protection mechanisms in step  630 , each of which contains a CIN reader and a CIN verifier. The CIN reader may comprise the same function calls and the same converter as illustrated in FIG.  5 . The CIN verifier, however, comprises logic and the encrypted authorized computer identification numbers instead of the dummy numbers. 
     The compiling process may then determine stop points in step  635 . Protection mechanisms may then be added to the stop points in step  640 . A compiler may then be chosen according to the purchased software, and the modified source code is compiled using the compiler in step  645 . Consequently, the protected software executable file with the encrypted authorized computer identification numbers is generated. Comparing the revising process with the compiling process, one may find the revising process is more efficient because it compiles the modified source code for specified software only once. But a revising utility which is able to edit an executable file may also be indispensable for certain applications. 
     Automated Software Distribution Subsystem 
     FIG. 7 is a flowchart of depicting the distribution process of the Internet-based automated system of the present invention. The distributing process starts with a Dialog Page  705  to ask consumers if they want to download the protected software or want it to be electronically mailed. It also informs consumers the downloading process may take a while and makes sure the consumer wants to wait. 
     If a consumer chooses an electronic mail option, the distributing process pops up a Message Window  755  stating that the software will be electronically mailed to the consumer, and then terminates. A distributing daemon will handle the request later and electronically mail the protected software to the consumer (illustrated in FIG.  8 ). 
     Otherwise, the distributing process checks the status of the order protection flag in step  710 . If the flag is false, the distributing process executes the process of embedding the protection mechanisms into the purchased software in step  715  (illustrated in FIG.  4 ). When the embedding process is completed, the distributing process sets the order protection flag to true in step  720 , and at the same time, sets the order distribution flag to false in step  725 . If the status of the order protection flag is true in step  710 , the distributing process further checks the status of the order distribution flag in step  730 . If the order distribution flag is false, the distributing process invokes the downloading process in step  735  to transmit the protected software to consumers. Otherwise, it pops up a Message Window  750 , which tells consumers the purchased software has already been downloaded. 
     When the downloading process in step  735  is finished, the distributing process checks if the download is successful in step  740 . If it is successful, the distributing process sets the order distribution flag to true in step  745  and invokes the Message Page  750  and then terminates. However, if the download is unsuccessful, the distributing process goes back to checking the status of the order distribution flag in step  730 . 
     FIG. 8 is a flowchart illustrating an automatic process of electronic mailing the protected software to consumers. The electronic mailing process starts with running another daemon in the background to check both the order protection flag and the order distribution flag in the server database at regular intervals in step  800 . If the order protection flag is true and the order distribution flag is false in step  805 , the electronic mailing process creates a child process in step  810 . 
     The child process then mails electronically the protected software residing in the outgoing mailbox to the consumer, which may be identified through the purchase order number in the server database in step  815 . At the same time, a CD-ROM containing the protected software may be made and sent out by post later. If the electronic mail is unsuccessful in step  820 , the child process goes back and re-sends the protected software again. Otherwise, the child process sets the order distribution flag to true in step  825  and then terminates. 
     FIG. 9 is a flowchart illustrating the process for an apparatus to sell the protected software stored in a CD-ROM. This embodiment of the present invention allows consumers to obtain software without the need for downloading, which may be time consuming and error-prone. In addition, this embodiment of the present invention provides a mechanism whereby DVD videos, music CD, video games, computer software, and the like may be sold through retail outlets while providing a copy protection mechanism which is both effective and easy to use. 
     In order to sell the protected software to consumers in regular shopping stores, a CD-ROM may be made which contains the protected software which has the embedded protection mechanisms with dummy numbers. The protected software in the CD-ROM may be edited by using a special utility, which is available in the Internet-based automated system of the present invention (See FIG.  1 ). But only authorized users such as retail stores may access it. 
     The selling apparatus first reads in computer identification numbers, which may be provided by consumers, from user input in step  905 . Secondly it reads in the protected software with dummy numbers from the CD-ROM in step  910 . Then it encrypts the consumer computer identification numbers in step  915  using the same converter as in the protection mechanisms. By means of the special utility, the selling apparatus is and then able to replace the dummy numbers in the protected software with the encrypted computer identification numbers in step  920 . 
     After finishing the replacement, the selling apparatus writes the protected software with the encrypted authorized computer identification numbers back to the CD-ROM in step  925 . The selling apparatus of the present invention could be a regular computer or a much simpler computer-like device provided in a store as a kiosk or stand-alone display, or as a special device operated by store personnel. 
     FIG. 10 is a block diagram illustrating the concept of the software copyright protection method of the present invention. In the diagram, the following definitions are used: the copyrighted software means the software which is registered for copyright or protectable under copyright laws; the protected software means the software containing the protection mechanisms of the present invention. 
     As mentioned above, the protection mechanism comprises a CIN reader and a CIN verifier. The CIN reader contains a function call and a converter. The CIN verifier contains an encrypted authorized computer identification numbers and logical expressions. The protection mechanism may be placed in anywhere of the copyrighted software. Generally speaking, while the protected software is running, the protection mechanisms will be activated at the stop points in step  1000 . 
     When a protection mechanism is executed, it first calls the CIN reader to read in the running computer identification numbers in step  1005  and convert them to the encrypted computer identification numbers in step  1010 . The protection mechanism may then invoke the CIN verifier to compare the encrypted read-in computer identification numbers with the encrypted authorized computer identification numbers in step  1015 , which have been embedded in the copyrighted software. 
     If the comparison is satisfied in step  1020 , the protected software continues running in step  1025 . Otherwise, the protected software terminates in step  1030 . 
     Server Database 
     The server database may comprise the following tables: a consumer information table, a software information table, a distribution information table, a purchase order table, and similar tables. The consumer information table contains a customer account number and all the consumer information namely: name, mailing address, telephone number, email address, credit card number, the computer identification numbers, the encrypted computer identification numbers, the type of operating system and the like, as well as consumer demographic information. 
     The software information table may include a software identification code, the price of software, the type of software, the title of software, the version number of software, manufacturer, the location of software source code, the location of the executable file with dummy numbers and the like. The distribution information table may contain a distribution identification number, the location of the protected software, the type of distribution and the like. 
     The purchase order table may comprise a purchase order number, a customer account number, a software identification code, a distribution identification number, an order protection flag, an order distribution flag, a protection methodology code, the purchase date and time, the distributing date and time and the like. 
     The present invention provides several advantages over prior art protection schemes. For example, the type of encryption methodology used to protect the software may be changed from time to time (or from vendor to vendor, or the like) without necessitating any hardware changes for the consumer. The encrypted computer identification number (CIN) may be encrypted using any one (or more) of a number of encryption techniques, as the software provided to the consumer will decrypt this number and compare it to the consumer&#39;s CIN. Thus, if a particular encryption technique is compromised, encryption software may be upgraded for subsequent downloads or sales in a manner transparent to the end user. 
     While the preferred embodiment and various alternative embodiments of the invention have been disclosed and described in detail herein, it may be apparent to those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope thereof. 
     For example, while the preferred embodiment of the present invention is described in terms of downloading software from a website through the internet, the method and apparatus of the present invention may also be applied to other, more conventional streams of distributions. For example, a kiosk or booth may be provided in a retail store for selling software or media products to consumers. A consumer may enter his computer identification number(s) and the software or media product may be downloaded to a CD-ROM, DVD, or other physical media. 
     Note also that the computer identification number may comprise an identification number for a DVD player, CD player, or other media device. Once embedded into the software, the identification number may be pre-programmed into the consumer&#39;s appliances in order to run the software or pay the media. 
     Note again that for the purposes of this application, the term ‘software’ is used to include not only traditional computer software applications and operating systems, but also media files and data including movies, television programs, audio recordings, videos, and multi-media presentations. The present invention may be applied to all such types of data and programs and in no way is limited only to one form of data or program. Similarly, the term “computer” includes a computer system, home computer, laptop computer, palm computer, CD player, DVD player, or other media type player, as well as other types of computer controlled devices running software including industrial and robotic applications. The term “computer identification number” as used herein may include a computer processor serial number, hard drive serial number, operating system identification number, CD, DVD, or other media player serial number, or the like.