SYSTEM AND METHOD FOR PREVENTING SOFTWARE PIRACY

Abstract: A system and method for preventing software piracy. In one embodiment, the system may comprise a device including a hardware component (10) and a software component (101, 300). The hardware component may have a first software component (101) stored within. The first software component may allow the hardware component to work, but with a reduced functionality. A second software component (300) may be obtained by a download, which may be accomplished through a dial-up connection or an Internet connection. A user may be required to register the hardware component and the second software component. With registration complete, the second software component may then be downloaded. The second software component, once downloaded, may then allow the hardware component to operate with its full, intended functionality.

Description: TITLE: SYSTEM AND METHOD FOR PREVENTING SOFTWARE PIRACY BACKGROUND OF THE INVENTION 1. Technical Field This invention relates to computer software, and more particularly, to mechanisms for preventing software pnacy. 2. Background Art Software piracy represents a significant source of intellectual property theft today. Computer software may in many cases be easily counterfeited, as a large number of identical copies may be easily and cheaply manufactured. These illegal copies of software may then be widely distributed, thereby denying the software publisher their rightful earnings. With the advent of the Internet, distribution of illegally copied software has become even easier and more widespread. Software piracy may have a profound economic impact. For example, the Software Publishers Association (SPA) estimates that the U.S. software industry lost over $2.9 billion in the U.S. and over $11 billion world wide as a result of software theft in 1998. This is a very significant impact, considering that, in the same year, the U.S. software industry is estimated to have contributed $55.6 billion in wages and $ 12.3 billion in federal and state income taxes to the economy. Many techniques exist for preventing software piracy. One such technique involves a password or other software-oriented key. This type of technique has proven largely ineffective, as passwords may often be stolen by diligent computer "hackers". Passwords may also be easily lost or forgotten, and are often times shared among users. Hardware techniques may also be used, but these can be expensive and cumbersome. Such hardware techniques may include simple hardware dongles and coprocessor dongles (a dongle is a device that couples to a computer to control access to a given application). A simple hardware dongle may implement a simple inquiry/response protocol, wherein a software routine may poll the hardware for specific responses. A coprocessor dongle utilizes complex function call interaction. The software may treat the dongle like a function and pass parameters to obtain answers that are algorithm dependent. This technique is much more difficult to defeat than a simple hardware dongle, but it is still vulnerable. Software piracy is a concern for many different types of software, such as word processors. Applications that a fundamental to a computer (word processors, operating systems, etc.) are easily pirated. Soft peripherals are another area where software piracy is a concern. Soft peripherals include such devices as soft modems and soft network interfaces. A soft peripheral may replace a majority of hardware functions with software. For example, a soft modem may replace most of the modem's hardware functions with software, leaving only a CODEC (coder/decoder) and other essential circuitry to be implemented with hardware. A code may be embedded into the CODEC, and the soft modem may be configured to function only when the software successfully reads this code. However, if the code is successfully read by a computer hacker, a large number of counterfeit CODECs may be manufactured, thereby allowing widespread illegal distribution of the soft modem. In some cases, a person intending to counterfeit the CODEC may use a logic analyzer or other piece of test equipment to determine the internal logic of the device, thereby enabling them to copy it. DISCLOSURE OF INVENTION The problems outlined above are in large part solved by a system and method for preventing software piracy. In one embodiment, the system may comprise a hardware component as well as first and second software components. The hardware component may have a first software component stored within. The first software component may allow the hardware component to work, but with a reduced functionality. For example, if the hardware and software components comprise a 56k modem, the first software component may allow the modem (the hardware component) to operate at a speed of no greater than 14.4 k. Since the first software component may cause the hardware component to operate with reduced functionality, a user of the device may have sufficient motivation to obtain a second software component which may afford full functionality to the hardware component. A second software component may be obtained by a download, which may be accomplished through a dial-up connection or an Internet connection. A user may be required to register the hardware component and the second software component. With registration complete, the second software component may then be downloaded. The second software component, once downloaded, may then allow the hardware component to operate with its full, intended functionality. In one embodiment, the hardware component may include a unique serial number. The software, once downloaded, may read the serial number and configure itself to function properly with this serial number exclusively. This may be an effective means of preventing the software to be illegally copied, as the software may be unable to fully function with hardware components having different serial numbers. The hardware component, in various embodiments, may comprise hardware for a peripheral device, such as a modem, network interface, CD-ROM (compact disk read-only memory), or other peripheral device. The software components of these embodiments may be drivers that allow the software to function correctly. A first software component may be stored or embedded in the hardware component, and may be a "crippled" driver, allowing the hardware only reduced functionality. The second software component may be a driver which allows the device full functionality, and may be obtained by downloading after being registered by a user of the computer system. In another embodiment, the hardware component may be a computer system motherboard. In such embodiments, the software components may comprise an operating system. The motherboard may include at least one processor, which may have a unique serial number. Other devices on the computer motherboard may also have unique serial numbers. The first software component may be a version of the operating system with a reduced number of features. Alternatively, the first software component may be configured to cause the computer system to operate at a reduced speed for a processor, system bus, or both. The second software component may be a full- featured version of the operating system, and may be configured to allow the computer system to operate at full speed. Thus, in various embodiments, the system and method for preventing software piracy may be an effective means of preventing unauthorized copying of software. By configuring the software to function exclusively with a hardware component having a unique serial number, it may become difficult to proliferate unauthorized copies. It may be necessary for potential counterfeiters to reproduce the serialized hardware component in order to be able to distribute working copies of counterfeit software. This may increase the costs of counterfeiting to a point that it is no longer cost effective. BRIEF DESCRIPTION OF DRAWINGS Other objects and advantages of the invention will become apparent upon reading the following detailed description and upon reference to the accompanying drawings in which: Figure 1 is a block diagram of one embodiment of a computer system in which the system and method for preventing software piracy may be implemented; Figure 2 is a block diagram illustrating a connection of one embodiment of a computer system to a software repository/database for downloading and registering a fully functioning software component; Figure 3 is a flow diagram of one embodiment of the method for preventing software piracy; Figure 4 is a block diagram illustrating one embodiment of a computer system with a serialized microprocessor in which the system for preventing software piracy may be implemented; and Figure 5 is a block diagram of one embodiment of a computer system with a peripheral device in which the system for preventing software piracy may be implemented. While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and 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 falling with the spirit and scope of the present invention as defined be the appended claims. MODE(S) FOR CARRYING OUT THE INVENTION Turning now to Figure 1, a block diagram of one embodiment of a computer system 200 including processor 10 coupled to a variety of system components through a bus bridge 202 is shown. Other embodiments are possible and contemplated. The embodiment shown may include hardware and software components configured for preventing software piracy as described herein. In the depicted system, a main memory 204 is coupled to bus bridge 202 through a memory bus 206, and a graphics controller 208 is coupled to bus bridge 202 through an AGP bus 210. Finally, a plurality of PCI devices 212A-212B are coupled to bus bridge 202 through a PCI bus 214. A secondary bus bridge 216 may further be provided to accommodate an electrical interface to one or more EISA or ISA devices 218 through an EISA/ISA bus 220. Processor 10 is coupled to bus bridge 202 through a CPU bus 224 and to an optional L2 cache 228. Bus bridge 202 provides an interface between processor 10, main memory 204, graphics controller 208, and devices attached to PCI bus 214. When an operation is received from one of the devices connected to bus bridge 202, bus bridge 202 identifies the target of the operation (e.g. a particular device or, in the case of PCI bus 214, that the target is on PCI bus 214). Bus bridge 202 routes the operation to the targeted device. Bus bridge 202 generally translates an operation from the protocol used by the source device or bus to the protocol used by the target device or bus. In addition to providing an interface to an ISA/EISA bus for PCI bus 214, secondary bus bridge 216 may further incorporate additional functionality, as desired. An input/output controller (not shown), either external from or integrated with secondary bus bridge 216, may also be included within computer system 200 to provide operational support for a keyboard and mouse 222 and for various serial and parallel ports, as desired. An external cache unit (not shown) may further be coupled to CPU bus 224 between processor 10 and bus bridge 202 in other embodiments. Alternatively, the external cache may be coupled to bus bridge 202 and cache control logic for the external cache may be integrated into bus bridge 202. L2 cache 228 is further shown in a backside configuration to processor 10. It is noted that L2 cache 228 may be separate from processor 10, integrated into a cartridge (e.g. slot 1 or slot A) with processor 10, or even integrated onto a semiconductor substrate with processor 10. Main memory 204 is a memory in which application programs are stored and from which processor 10 primarily executes. A suitable main memory 204 comprises DRAM (Dynamic Random Access Memory). For example, a plurality of banks of SDRAM (Synchronous DRAM) or Rambus DRAM (RDRAM) may be suitable. PCI devices 212A-212B are illustrative of a variety of peripheral devices such as, for example, network interface cards, video accelerators, audio cards, hard or floppy disk drives ' or drive controllers, SCSI (Small Computer Systems Interface) adapters and telephony cards. Similarly, ISA device 218 is illustrative of various types of peripheral devices, such as a modem, a sound card, and a variety of data acquisition cards such as GPIB or field bus interface cards. Graphics controller 208 is provided to control the rendering of text and images on a display 226. Graphics controller 208 may embody a typical graphics accelerator generally known in the art to render three-dimensional data structures which can be effectively shifted into and from main memory 204. Graphics controller 208 may therefore be a master of AGP bus 210 in that it can request and receive access to a target interface within bus bridge 202 to thereby obtain access to main memory 204. A dedicated graphics bus accommodates rapid retrieval of data from main memory 204. For certain operations, graphics controller 208 may further be configured to generate PCI protocol transactions on AGP bus 210. The AGP interface of bus bridge 202 may thus include functionality to support both AGP protocol transactions as well as PCI protocol target and initiator transactions. Display 226 is any electronic display upon which an image or text can be presented. A suitable display 226 includes a cathode ray tube ("CRT"), a liquid crystal display ("LCD"), etc. It is noted that, while the AGP, PCI, and ISA or EISA buses have been used as examples in the above description, any bus architectures may be substituted as desired. It is further noted that computer system 200 may be a multiprocessing computer system including additional processors (e.g. processor 10a shown as an optional component of computer system 200). Processor 10a may be similar to processor 10. More particularly, processor 10a may be an identical copy of processor 10. Processor 10a may be connected to bus bridge 202 via an independent bus (as shown in Fig. 5) or may share CPU bus 224 with processor 10. Furthermore, processor 10a may be coupled to an optional L2 cache 228a similar to L2 cache 228. Moving now to Figure 2, a block diagram illustrating a connection of one embodiment of a computer system to a software repository/database for downloading and registering a fully functioning software component is shown. In the embodiment shown, computer system 200 is connected to a database/repository 300 of a software publisher through an Internet service provider (ISP) 350. The connection between computer system 200 and ISP 350 may be through a network connection or a dial-up connection. Alternate embodiments are possible and contemplated wherein computer 200 may connect directly to database/repository 300 through a dial-up connection (with no ISP). Computer system 200 may be equivalent to the computer system 200 of Figure 1, or may be a computer system based on a different architecture. A user of computer system 200 may, after installation of a hardware component, transmit registration information through ISP 350 to database/repository 300. The hardware component may be a peripheral device, such as a modem, network interface card, compact disk read-only memory (CD-ROM) drive, or other device. The hardware component may also be a motherboard of computer system 200. A first software component may be stored in the hardware component of computer system 200, and may allow the hardware component to operate with limited functionality. For example, if the hardware component is a 56k modem, the first software component may be a driver which limits the baud rate of the modem to 14.4k. In another example, if the hardware component is a computer system motherboard, the first software component may an operating system with a reduced number of features, and may also be configured to cause the computer system to operate at a reduced clock speed. Database/repository 300 may be configured to receive registration information from computer system 200. The registration information may then be stored in a database, and may be used by a user of computer system 200 for future upgrades to the software being registered. Database/repository may also be configured to store fully functioning versions of the software associated with the hardware component within computer system 200. In response to receiving registration information, database/repository 300 may then allow a download a second software component, which may be a fully functioning version of the software associated with the hardware component of computer system 200. Once downloaded, the second software component may allow the hardware component to operate with its full, intended functionality. Figure 3 is a flow diagram of one embodiment of the method for preventing software piracy. Method 400 begins with Step 401, wherein a computer system is loaded with a hardware component, which includes a first software component. The hardware component may be an add-in card for a peripheral device in various embodiments, or may also be a motherboard for a computer system. In various embodiments, the hardware component may be part of a "soft device", such as a soft modem or soft network interface. Such soft devices may utilize a minimal amount of hardware, thereby performing many functions with software. In Step 402, a user of the computer system may provide registration information to a publisher of the software. The software publisher may utilize a database and software repository, such as database/repository 300 as illustrated in Figure 2. The database may be configured to store registration information. Registration information sent by the user to the database may include the user's name, date of purchase of the software and hardware components, and other pertinent pieces of information. The registration information may also include a unique serial number or other unique identifier for the hardware component. This serial number or unique identifier may be stored in the database along with other registration information sent by the user. The hardware component may include a coder/decoder (CODEC) which contains the unique serial number. Alternatively, the unique serial number may be contained within another device of the hardware component. In embodiments in which the hardware component is a computer system motherboard, the unique serial number may be contained within a system processor, a chipset device, or other device mounted upon the motherboard. Responsive to receipt of the registration information, the user may be authorized to download a second software component (Step 403), which may be a fully functioning version of the software associated with the hardware component (which may be an add-in component). Prior to conducting the download, the repository may cause the second software component to reconfigure itself to operate exclusively with the hardware component containing the unique serial number or identifier. Following this reconfiguring, the downloading of the second software component may then take place. In Step 404, the computer system may be rebooted, which may be required before initialization of the second software component can occur. In some embodiments, such as those which include the installation of plug- and-play devices, rebooting of the computer system may not be required. Having been downloaded into the computer system, the second software component may be ready for initialization (Step 405). Initialization may include the second software component reading the serial number embedded within the hardware component. Having verified the correct serial number, the second software component may now be ready to operate, thereby affording full functionality to its associated hardware component. With software initialization complete, the hardware component may now be operated with its full functionality (Step 406). Moving now to Figure 4, a block diagram of one embodiment of a computer system with a serialized microprocessor in which the system for preventing software piracy may be implemented is shown. Computer system 200 may be similar to computer system 200 of Figure 1, or may be an alternate embodiment. In the embodiment shown, computer system 200 includes processor 10 which is coupled to basic input-output system (BIOS) 105 and bus bridge 202. Bus bridge 202 is also coupled to keyboard/mouse 222, disk storage 240, system memory 245, modem 250, and graphics controller 208. Graphics controller 208 is coupled to display 226. Embedded within processor 10 is serial identifier 102 and a first software component, reduced functionality operating system (OS) 101. As used herein, an operating system is defined as the main control program of a computer system, performing such functions as task scheduling, memory and storage management, and communications with peripherals. Common examples of operating systems include Microsoft Windows, Unix, and DOS (Disk Operating System). Reduced functionality OS 101 may be an operating system that provides basic functionality to the computer, but does not allow for the use of all operating system features. Serial identifierl02 may be a serial number which is unique to the particular processor in which it is embedded. Reduced functionality OS 101 may be embedded in processor 10 using erasable-programmable read-only memory (EPROM) circuitry or static random access memory (SRAM) circuitry. Alternatively, reduced functionality OS 101 may be hard-wired into processor 10 by a lithographic mask at the time of manufacture of processor 10. BIOS 105 may be configured to cause reduced functionality OS 105 to be loaded into memory upon starting computer system 200. Modem 250 may be configured to connect computer system 200 to a software publisher's database/repository, such as that described in reference to Figure 2. Other embodiments wherein a connection to the database/repository is made through an Internet connection and a network interface card are possible and contemplated. Upon establishing a connection with modem 250, a user of computer system 200 may transmit registration information to the database/repository. Serial identifier 102 may be included in the registration information, and may be stored in the software publisher's database along with other information. Responsive to receiving the registration information, the software publisher's repository may configure a second software component for use in computer system 200. Such configuration may require the second software component to read serial identifier 102 in order to function properly within computer system 200. In such embodiments, the second software component may be configured to function exclusively with the unique serial identifier 102. Following the configuring described above, the software publisher's repository may allow computer system 200 to download the second software component. The second software component may be a fully functioning version of the operating system embedded within processor 10. Alternatively, the second software component may be a portion of the operating system that, when combined with reduced functionality OS 101, comprises a fully functioning OS. After downloading, computer system 200 may be configured for use with the fully functioning version of the OS. Such configuring may include the OS verifying serial identifier 102, ensuring it matches the serial identifier that was sent along with the registration information to the software publisher's database. Moving now to Figure 5, a block diagram of one embodiment of a computer system with a peripheral device in which the system for preventing software piracy may be implemented is shown. Computer system 200 includes processor 10, which is coupled to bus bridge 202. Bus bridges 202 is coupled to system memory 245, modem 250, keyboard/mouse 222, disk storage 240, and graphics controller 208. Graphics controller 208 is coupled to display 226. Also couple to bus bridge is a peripheral device, network interface 110. Embodiments including other peripheral devices, such as CD-ROM drives, modems, and so on are possible and contemplated. Embedded within network interface 110 is a serial identifier 102 and a reduced functionality driver. Reduced functionality driver, as well as a second software component which provides for a full functionality driver, are both device drivers. As used herein, a device driver is defined as a program that interfaces with an operating system in order to support a device, such as a disk drive, a network interface, or a modem. A device driver may further be defined as, for the purposes of this specification, as a program that may allow application software to use a device, such as when a word processing program uses a printer for creating a hardcopy of a document created within. Reduced functionality driver 103 serves as a first software component that enables the hardware component (in this case network interface 110) to operate, albeit with limited functionality. In the embodiment shown, reduced functionality driver may be configured to allow network interface 110 to send and receive information at a slower rate than it otherwise would with a full functionality driver. Serial identifier 102 is a serial number or other identifier which uniquely identifies network interface 110. Reduced functionality driver 103 may be embedded into a hardware device of network interface 110, such as a CODEC. The embedding of the reduced functionality driver 103 may be accomplished with EPROM circuitry, SRAM circuitry, or hardwired circuitry via lithographic mask at the time of manufacture of the hardware device. In addition to those mentioned, other types of circuitry may be used to embed the first software component into the hardware component. Also, it should be noted that serial identifier 102 may be embedded within the same hardware device as reduced functionality driver 103, or may be embedded in a different device of the first hardware component. Modem 250 may be configured to connect computer system 200 to a software publisher's database/repository, such as that described in reference to Figure 2. Other embodiments wherein a connection to the database/repository is made through an Internet connection and a network interface 110 are possible and contemplated. Upon establishing a connection with modem 250, a user of computer system 200 may transmit registration information to the database/repository. Serial identifier 102 may be included in the registration information, and may be stored in the software publisher's database along with other information. Responsive to receiving the registration information, the software publisher's repository may configure a second software component for use with network interface 110. Such configuring may require the second software component to read serial identifier 102 in order to function properly with network interface 110. In such embodiments, the second software component may be configured to function exclusively with the unique serial identifier 102. Following the configuring described above, the software publisher's repository may allow a download of the second software component, in this case a fully functional driver for use with network interface 110. Alternatively, the second software component may be a portion of a driver that, when combined with reduced functionality driver 103, may form a fully functioning driver for network interface 110. After downloading, computer system 200 may configure network interface 110 to operate with the fully functioning driver. Such configuring may include a verification of serial identifier 102, ensuring that it matches with the serial identifier that was sent along with the registration information to the software publisher's database. While the present invention has been described with reference to particular embodiments, it will be understood that the embodiments are illustrative and that the invention scope is not so limited. Any variations, modifications, additions, and improvements to the embodiments described are possible. These variations, modifications, additions, and improvements may fall within the scope of the inventions as detailed within the following claims. INDUSTRIAL APPLICABILITY This invention is applicable to computer software.

Claims: WHAT IS CLAIMED IS: 1. A computer system comprising: a hardware component (10); and a first operating system component (101) stored within said hardware component, wherein said first operating system component is configured to cause said hardware component to operate with reduced functionality, and wherein said hardware component is configured to operate with full functionality responsive to a download of a second operating system component (300). 2. The computer system as recited in claim 1 , wherein a user of said computer system is required to register said second operating system component prior to said download. 3. A method comprising: installing a hardware component (lθ)into a computer system, wherein said hardware component is configured to store a first software component (101), and wherein first software component is configured to cause said hardware component to operate with reduced functionality, and wherein said hardware component includes a unique identifier (102); registering a second software component (300), wherein said registering includes providing said unique identifier for said hardware component to a database, and wherein said second software component is configured to operate exclusively with said hardware component responsive to said providing said unique identifier to said database; downloading said second software component; and installing said second software component, wherein said hardware component is configured to operate with full functionality following the installation of said second software component. 4. The method as recited in claim 3 further comprising storing registration information, including said unique identifier, in said database. 5. The method as recited in claim 3 further comprising initializing said second software component following said downloading. 6. The method as recited in claim 5, wherein said initializing includes said second software component reading said unique identifier. 7. A peripheral device comprising: A hardware component (110) configured for installation in a computer system; and a first device driver component (202) stored within said hardware component, wherein said first device driver component is configured to cause said hardware component to operate with reduced functionality, and wherein said hardware component is configured to operate with full functionality responsive to a download of a second device driver component (300). 8. The peripheral device as recited in claim 7, wherein said hardware component comprises a coder/decoder (CODEC) (110). 9. The peripheral device as recited in claim 8, wherein said CODEC includes a unique identifier. 10. The peripheral device as recited in claim 9, wherein said second device driver component is configured to function only with said CODEC including said unique identifier. -

Inventors: BOSWELL CHARLES R, COLE TERRY LYNN, MALECK TIMOTHY C, BOSWELL, CHARLES, R., COLE, TERRY, LYNN, MALECK, TIMOTHY, C.
Applicants: ADVANCED MICRO DEVICES INC, ADVANCED MICRO DEVICES, INC.
Application year: 2001
Main classification: G06F1
IPC codes: G06F9, G06F11, G06F21