`(io) Patent No.:
`a2) United States Patent
`US 6,243,468 B1
` Pearceet al. (45) Date of Patent: Jun. 5, 2001
`
`
`
`(75)
`
`(54) SOFTWARE ANTI-PIRACY SYSTEM THAT
`DATS TS BORDWARE DEGROPES
`Inventors: David B. Pearce, Woodinville, WA
`a 4idam Hughes; Housion; 12%
`(73) Assignee: Microsoft Corporation, Redmond, WA
`(US)
`
`FOREIGN PATENT DOCUMENTS
`O 844 549 AL * S/1998 (EP) caseseseecsenees GO6F/1/00
`* cited by examiner
`Primary Examiner—V. Millin
`Assistant Examiner—Cuong H. Nguyen
`(74) Attorney, Agent, or Firm—Lee & Hayes, PLLC
`(57)
`ABSTRACT
`
`(*) Notice:
`
`Subject to any disclaimer, the term ofthis
`patent is extended or adjusted under 35
`US.C. 154(b) by 0 days.
`
`(21) Appl. No.: 09/070,518
`22
`iled:
`22)
`Eitledl
`znph 25 1088
`CSV) Tite C07 ieeeeeeceecsecceeessnnneneeeceeeceeennnate H04K 1/00
`
`(52) US. Ch. eee 380/255; 380/258; 380/44;
`380/266
`
`(58) Field of Search ......ccccccce 705/26, 57; 713/187,
`713/190, 200, 201; 455/410; 380/250, 27,
`258; 707/9-10, 203; 709/229; 711/100
`
`(56)
`
`An anti-piracy system reduces the opportunity for piracy and
`illicit use of software products by requiring each software
`product to be registered for a single computer. If a user
`attempts to install the software product on another computer,
`the software product will recognize a different hardware
`composition and disable itself. During installation, the soft-
`ware product generates a hardware ID that identifies the set
`of hardware components and sendsit and a product ID to a
`registration authority. The registration authority computes a
`registration ID from the product LD and the hardware 1D and
`sends the registration ID back to the software product. Each
`time the software product is subsequently launched,
`the
`software product computes its own test ID from the product
`TD and hardware ID using the same algorithm employed by
`the registration authority. The software product then com-
`pares the test ID to the registration ID. If the two match, the
`software product is enabled; otherwise, if no match occurs,
`References Cited
`the software product is locked. The system flexibly accom-
`modates a situation in which the user upgrades one or a few
`U.S. RAENT DOLUMENTS
`components in the computer without creating a new
`5,199,066 *
`3/1993 Logan .
`machine. The software product determines whether a new
`5,357,573 * 10/1994 Walters 2.0.2...cece ceeeeees 705/56
`
`set of hardware components in the computeris substantially
`455/410
`5,379,343 *
`1/1995 Grubectal.
`different from the original set of hardware components.If
`...
`vee T10/7
`3,099,804 :
`2/1996 Heathet al.
`
`
`not substantially different, the upgraded computer is more
`Toss
`Soar ‘ 1006 wee eka:
`*
`os
`>
`oo...
`ns
`5
`5
`CNULL
`like the original compulet and the software product
`is
`” 705/51
`5,666,411 *
`9/1997 McCarty
`
`Permitted to operate; otherwise,
`the computer more
`soeccssesssssessenseeseeeestnsee 705/26
`5,754,864 S/1998 Hill
`resembles a new computer and the software product is
`5,757,907 *
`5/1998 Cooperet al.
`.
`
`5,761,649 * oesceeeeeesesseseeeeseeeseeeeseseeenes 705/27~~prevented from operating.6/1998 Hill
`
`5,835,911 * 11/1998 Nakagawa ou...eee 707/203
`6,041,411 *
`3/2000 Wyatt .
`
`39 Claims, 6 Drawing Sheets
`
`30
`
`x
`
`
`
`|
`
`22-.|
`~
`
`24
`
`[cD Key
`
`
`
`
`
`
`
`
`
`
`34
`_——
`Install
`|
`
`’ =
`32
`Registration Server
`
`Woegeaeeewe
`
`110 — Registration Unit
`Lo
`1 (Hashing
`CustomerComputer
`‘a3
`
`
`be ashing=*
`
`| Algorithm J!
`Processor
`40,
`l
`36 Co
`PID+ HW ID
`——
`
`System Memory
`,
`~
`Program
`
`!
`Hashing >
`Registration
`
`114 —
`P}- 100
`__ Algorithm —_.[
`Database
`
`
`
`
`SL 112 pip|Hevip|RegiD116 +]
`
`
`
`
`
`
`-
`102
`a:
`118
`
`
`
`Reg. ID
`
`
`
`CustomerAuthorityRegistration
`
`
`
`1
`
`GOOGLE 1012
`
`GOOGLE 1012
`
`1
`
`
`
`U.S. Patent
`
`Jun.5, 2001
`
`Sheet 1 of 6
`
`US 6,243,468 B1
`
`20
`
`4
`
`4
`
`Be
`
`OJ
`
`22
`
`Generate and
`Assign Serialized
`CD Key
`
`22
`
`24
`
`CD Key
`
`2
`
`
`
`U.S. Patent
`
`Jun. 5, 2001
`
`Sheet 2 of 6
`
`US 6,243,468 B1
`
`
`JONasuonejsiboy
`
`yunuoHeysibey
`——————___>al‘Bey
`+?$vCIWH+Ald
`OLLCLL
`OOLWyWoDdiv
`
`
`JayndwoysawojsnyJ
`
`e3su|
`
`Joss990ld
`
`
`
`Buiysey
`
`WYoByy
`
`9¢
`
`OV
`
`cr
`
`—OLFFce
`
`uonjejsibay
`
`aseqejeq
`
`
`
`adBurysey
`
`20L=
`
`cOL
`
`BLL
`
`v€
`
`keyao
`
`CC
`
`3
`
`
`
`
`
`
`c8
`
`—78
`
`Jaydepycapi,
`
`
`
`98SOISA
`
`
`
`vy
`
`
`
`sngweyshg
`
`
`
`
`
`OZswesBoig
`
`uonjeayddy
`
`89wayshg
`
`Bujesado
`
`MOMION
`Hod[Bue
`jeondo
`oneubey;
`4SIQPAeH
`
`punBuisseoo4
`
`
`wesboldgJEuUIO
`
`
`
`
` 99~\voeyeqg
`roeuojeoddysued susitoy
`
`U.S. Patent
`
`Jun. 5, 2001
`
`Sheet 3 of 6
`
`US 6,243,468 B1
`
`SoeLE}uU|
`SoRye}u]
`S0RLa}Ul
`eORLa}U|
`eoRpeyy|
`
`SAG
`AUCSIG
`
`SAL
`
`ZZseinpow
`
`eZ
`
`eyeqwelbolg
`
`
`
`
`
`
`
`weJ6oi4Jeulo
`
`
`
`4
`
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Jun.5, 2001
`
`Sheet 4 of 6
`
`US 6,243,468 B1
`
`Software Product on
`Customer Computer
`
`Registration Unit on
`Product Provider Server
`
`Get PID
`
`Generate
`Hardware ID
`
`(HW ID)
`Authority
`
`Send PID and H/W ID
`to Registration
`
`150
`
`oe
`
`154
`
`
`
`Compute
`Registration ID
`(Reg ID)
`
`Store PID, HAV
`ID, and Reg ID
`
`Send Reg ID to
`Customer
`
`Computer
`
`196
`
`158
`
`460
`
`Store Reg ID
`
`162
`
`5
`
`
`
`U.S. Patent
`
`Jun.5, 2001
`
`Sheet 5 of 6
`
`US 6,243,468 B1
`
`Start Program
`
`Get PID
`
`170
`
`172
`
`Generate H/W ID
`
`174
`
`Compute test ID from
`PID and H/W ID
`
`Retrieve Reg ID from
`Memory
`
`Comparetest ID with
`Reg ID
`
`176
`
`178
`
`180
`
`No
`
`182
`
`Yes,
`
`186
`
`184
`Allow Program to
`
`6
`
`
`
`U.S. Patent
`
`Jun.5, 2001
`
`Sheet 6 of 6
`
`US 6,243,468 B1
`
`ChangeBit in H/W ID to
`get Modified H/W ID
`
`Concatenate PID and
`Modified H/W ID
`
`192
`
`Compute test ID from
`PID and Modified
`H/W ID
`
`Comparetest ID with
`Reg ID
`
`194
`
`196
`
`190
`
`
`
`
` IW ID? Yes—204
`
`Try All
`Permutations of
`
`
`
`
`
`198
`
`Yes
`
`Lock Program
`
`Allow Program to
`Operate
`
`200
`
`7
`
`
`
`US 6,243,468 Bl
`
`1
`SOFTWARE ANTI-PIRACY SYSTEM THAT
`ADAPTS TO HARDWARE UPGRADES
`
`TECHNICAL FIELD
`
`This invention relates to systems and methods for pre-
`venting piracy orillicit use of software. More particularly,
`this inventionrelates to such systems and methodsthat allow
`hardware components of the underlying computer to be
`upgraded and the software to be legitimately installed on the
`upgraded machine withouttriggering the anti-piracy protec-
`tion.
`
`BACKGROUND
`
`Computer software is a unique consumer product in that
`the same product can be replicated many times after being
`sold. Once a software product is sold, typically as software
`code on a computer-readable disk, the purchaser can easily
`copy the code to other computer-readable media thereby
`replicating the same product many times over.
`This characteristic of software can be a tremendous
`
`benefit in terms of lowering manufacturing costs and facili-
`tating distribution. For instance, easy replication allows a
`software manufacturerto distribute one physical copyof the
`software product and sell a multi-seat license that legally
`empowers the purchaser to install the software product on
`manydifferent computers.
`Unfortunately, this benefit comes at a cost of open abuse.
`One well-known abuse is piracy. An unscrupulous party can
`obtain a copy of the object code (legally or illegally) and
`then illicitly replicate and resell pirated copies of the prod-
`uct. Software companies attempt
`to monitor piracy
`activities, but detection is often difficult. Moreover, even
`when improper activity is detected, enforcement and legal
`recourse is often unavailable from a practical standpoint,
`particularly since much of the abuse occurs in foreign lands.
`A less subtle abuse is the improper use of the software
`product beyond the scope of the license. One common
`scenario involves a shrink-wrap software product available
`at local retail stores. The product is typically accompanied
`by a shrink-wraplicenseto install and use the product on one
`computer, and perhaps additionally on a
`laptop.
`Unfortunately, the purchaser may intentionally or uninten-
`tionally install
`the product on more than the allowed
`computers, thereby violating the license. For the software
`manufacturer, this form of abuse is very difficult to monitor
`and even more difficult to prosecute.
`The computer software industry estimates that billions of
`dollars are lost each year due to piracy and otherillicit uses.
`While licenses provide a legal avenue for recourse against
`such practices, the practicality of detecting and enforcing
`often prove too onerous for the manufacturer. Accordingly,
`software companies have a real
`incentive to reduce the
`amount of abuses through other means.
`One conventional
`technique for preventing unlimited
`copying of a software product is to design the code with a
`self-regulating mechanism that prevents repeated installa-
`tions. This mechanism counts the numberof installations
`and disables the software code after the product has been
`installed a certain numberof times. The underlying premise
`is that multiple installations tend to indicate that the user is
`attempting to install
`the product on multiple different
`computers, rather than just one computer allowed bythe
`license.
`
`FIG. 1 illustrates this concept. A manufacturer creates a
`software product and places the code on a disk 20, such as
`
`10
`
`15
`
`25
`
`35
`
`40
`
`50
`
`55
`
`60
`
`65
`
`2
`a CD-ROMorfloppy diskette. The disk 20 is packaged to
`form a shrink-wrap retail product 22. The manufacturer
`generates and assigns a serialized key that uniquely identi-
`fies that product. For instance, the key might consist of a
`manufacturer ID, a serialized incrementing number, a reg-
`istered product code, and a checksum value. The key is
`printed ona label 24 and affixed somewhere onthe product,
`such as the CD-ROM case.
`
`Duringinstallation, the purchaser of the software product
`is prompted to enter the key. This step alone is designed to
`prevent another party from obtaining the disk 20 only,
`without knowledge of the key, and installing the product
`illegally. Without the key, the holder of the physical disk is
`prevented from installing the product.
`The product tracks the numberofinstallations. Once the
`purchaser enters the same key more times than a defined
`limit, the product is disabled. The purchaser is then forced
`to call the manufacturer for assistance.
`
`While such mechanismshelp reduce illicit copying, they
`often cause other problems in the form of consumerincon-
`venience. For instance, the premise that more installations
`than a requisite number meansillegal use may be wrong in
`some cases. A user who has upgraded his/her computer, for
`example, shouldbe able to legitimately reinstall the software
`product on the upgraded machine. However, if the requisite
`numberof installations has already been reached, the prad-
`uct will not install, forcing the user (who is now disgruntled)
`to call the manufacturer for assistance.
`
`Accordingly, there remains a need for improved technol-
`ogy solutions to piracy and illicit use, but which also
`recognizes and accommodates the needs and practices of a
`legitimate purchaser.
`
`SUMMARY
`
`This invention concernsan anti-piracy system and method
`that reduces the opportunity for piracy and illicit use of
`software products by requiring each software product to be
`registered for a single computer that consists of a specific
`hardware composition. If a user attempts to install
`the
`software product on another computer, the software product
`will recognize a different hardware composition and disable
`itself
`
`the system
`According to one aspect of the invention,
`includes a software product that is loaded onto a specific
`computer having a set of hardware components (e.g., RAM,
`hard disk drive, floppy disk drive, BIOS, network card,
`video card, etc.). The software product has an associated
`product ID consisting of, for example, a manufacturer ID, a
`registered product code, a serialized number, and a check-
`sum value.
`
`the software product generates a
`During installation,
`hardware ID that identifies the set of hardware components.
`As an example, the software product generates a five-digit
`hardware ID that includes a bit representing each of five
`system components: BIOS, a video BIOS in the video card,
`RAM,a hard disk drive, and a floppy disk drive. The bit for
`a given system componentcan be derived in different ways,
`such as performing a modulo operation onall or part of the
`BIOS, or on the hard disk drive’s serial number.
`The software product concatenates the product ID and
`hardware ID and sendsit to a registration authority, such as
`the product manufacturer or an authorized third party. The
`registration authority has a registration unit that computes a
`registration ID from the product ID and the hardware ID.
`Onepreferred approach is to hash the concatenation of the
`product ID and hardware ID to produce the registration ID.
`
`8
`
`
`
`US 6,243,468 Bl
`
`3
`The registration authority stores the registration ID, product
`ID, and hardware ID in a database. The registration authority
`sends the registration ID back to the software product, where
`the registration ID is stored locally on the computer.
`Eachtime the software product is subsequently launched,
`the software product again obtains the product ID and
`generates the hardware ID for the computer. The software
`product then computes its own test ID from the product ID
`and hardware ID using the same algorithm (e.g., hashing
`algorithm) employed by the registration unit at the registra-
`tion authority. The software product compares the test ID to
`the registration ID. If the two match, the software productis
`enabled to operate on the computer; otherwise, if no match
`occurs, the software product is locked and prevented from
`operating on the computer.
`In the typical case, the test and registration IDs will not
`matchif the hardware ID is changed. This indicates that the
`underlying hardware has been altered, either through
`upgrade or because the user is attempting to install
`the
`product on another computer. At the minimum,the self-
`locking mechanism prevents the user from installing the
`software product on multiple different computers. However,
`the system is also sensitive to the situation in which the user
`simply upgrades one or a few components in the computer
`without effectively creating a new machine.
`In this situation, the software product determines whether
`a new set of hardware components in the computer is
`substantially different from the original set of hardware
`components. If only one or a few componentsare different
`(e.g., not more than two out of five components),
`the
`upgraded computer is more like the original computer and
`the software product is permitted to operate. Conversely,if
`manyor all components are different (e.g., more than two
`out of five components),
`the “upgraded” computer more
`closely resembles a new computer and the software product
`is prevented from operating on this new computer without
`an additional license from the registration authority.
`One waythe software product makes this determination is
`by trying different permutations of the hardware ID, chang-
`ing at
`least one bit per try while leaving other bits
`unchanged. Each modified hardware ID is concatenated with
`the product ID, and then hashed to producethetest ID. If as
`a result of this trial-and-error process the test and registra-
`tion IDs match, the software product is assured that only a
`few of the components have beenaltered, and the productis
`permitted to run.
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 is a diagrammatic illustration of a prior art manu-
`facturing and packaging process to produce a shrink-wrap
`software product.
`FIG. 2 is a block diagram of an anti-piracy system that
`facilitates registration of a software productfor installation
`and use on a particular computer.
`FIG. 3 is a block diagram of an exemplary computer.
`FIG. 4 is a flow diagram showing steps in a method for
`registering, the software product for use on the computer.
`FIG. 5 is a flow diagram showing steps in a method for
`running the software product on the computer.
`FIG. 6 is a flow diagram showing steps in a method for
`running the software product after the computer has been
`upgraded.
`
`DETAILED DESCRIPTION
`
`FIG. 2 shows an anti-piracy system 30 that facilitates
`registration of a software product with a registration author-
`
`10
`
`15
`
`-
`
`25
`
`30
`
`35
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`ity for installation and use on a particular computer. The
`system 30 includes a customer computer 32 and a registra-
`tion server 34, which resides at the registration authority
`remote from the customer. The customer computer 32 and
`registration server 34 are interconnected by a network 36 to
`provide data communication. In the absence of a customer
`computer’s access to a network, the manufacturer or trusted
`third party may provide proxy access to the registration
`server by other means, such as electronic mail, fax machine,
`postal mail, or telephone.
`the customer computer is
`For discussion purposes,
`described as a personal computer, such as a desktop or
`portable computer. However,as used herein, the term “com-
`puter” is intended to meanessentially any type of computing
`device or machine that is capable of running a software
`product, including such devices as communication devices
`(e.g., pagers, telephones, electronic books, electronic maga-
`zines and newspapers, etc.) and personal and home con-
`sumer devices (e.g., handheld computers, Web-enabled
`televisions, home automation systems, multimedia viewing
`systems, etc.). Within the described context, the network 36
`is representative of an Internet or Intranet, or a local or wide
`area network. However,
`the network 36 may be imple-
`mented in many different forms, including both wire-based
`networks(e.g., cable, telephone, fiber optic, etc.) and wire-
`less networks (e.g., RF, satellite, microwave, etc.).
`FIG. 3 shows the customer computer 32 within an exem-
`plary implementation of a personal computer. The computer
`32 includes the processing unit 40, system memory42, and
`a system bus 44 that
`interconnects various system
`components, including the system memory 42 to the pro-
`cessing unit 40. The system bus 44 may be implemented as
`any one of several bus structures and using any of a variety
`of bus architectures, including a memory bus or memory
`controller, a peripheral bus, and a local bus. The system
`memory 42 includes read only memory (ROM) 46 and
`random access memory (RAM) 48. A basic input/output
`system 50 (BIOS)is stored in ROM 46.
`The customer computer 32 may have one or more of the
`following drives: a hard disk drive 52 for reading from and
`writing to a hard disk or hard disk array; a magnetic disk
`drive 54 for reading from or writing to a removable magnetic
`disk 56; and an optical disk drive 58 for reading from or
`writing to a removable optical disk 60 (e.g., CD ROM or
`other optical media). The hard disk drive 52, magnetic disk
`drive 54, and optical disk drive 58 are connected to the
`system bus 44 bya hard disk drive interface 62, a magnetic
`disk drive interface 64, and an optical drive interface 66,
`respectively. The drives and their associated computer-
`readable media provide nonvolatile storage of computer
`readable instructions, data structures, program modules and
`other data for the computer 32. It is noted that other types of
`computer readable media may also be used to store data.
`Other such media include magnetic cassettes, flash memory
`cards, digital video disks, Bernoulli cartridges,
`random
`access memories (RAMs), read only memories (ROM), and
`the like.
`
`A number of program modules may be stored on the hard
`disk, magnetic disk 56, optical disk 60, ROM 46, or RAM
`48. These programsinclude an operating system 68, one or
`more application programs 70, other program modules 72,
`and program data 74. The operating system 68is preferably
`a Windows brand operating system (e.g., Windows NT,
`Windows 98, Windows CE,ctc.), although other types of
`operating systems may be used. In this implementation, the
`software product can be implementedas one of the programs
`70.
`
`9
`
`
`
`US 6,243,468 Bl
`
`6
`serial number. Table I shows an example construction of a
`5-bit hardware I D, and how the bits are derived from the
`corresponding component.
`
`TABLE1
`
`5
`An operator may enter commands and information into
`the computer 32 via input devices such as a keyboard 76 and
`a mouse 78. Other input devices (not shown) may include a
`microphone, joystick, game pad, satellite dish, scanner, or
`the like. These and other input devices are connected to the
`processing unit 40 through a serial port interface 80 that is
`coupled to the system bus 44, but may alternatively be
`connected by other interfaces, such as a parallel port, game
`port, or a universal serial bus (USB). A monitor 82 or other
`type of display device is also connected to the system bus 44
`via an interface, such as a video adapter 84. The video
`adapter 84 has a video BIOS (VBIOS) 86. The computer 32
`has a networkinterface or adapter 88, a modem 99,or other
`means for establishing communications over the network
`36.
`
`It is once again noted that the computer shownin FIG. 3
`is just one possible type of computing device that can be
`used to implement aspects of this invention. Other types of
`computers may be used.
`With reference again to FIG. 2, the customer purchases a
`software product for running on the computer 32. In this
`illustration, the software product is in the form of a shrink-
`wrap product 22 having a software program stored on a
`transportable computcr-readable medium, such as a
`CD-ROMor floppy diskette. In other implementations, the
`software product may be delivered electronically over a
`network. The customer loads the software product onto the
`computer 32 as a program 100 stored in system memory 42.
`During installation, the customer is prompted to enter a
`portion of the product ID of the software product. The
`product ID (PID) in this case is the CD key printed on label
`24 of the shrink-wrap package. The customer enters the
`product ID 102, which is associated with the program 100.
`Additionally, another portion of the product ID is already
`included in the software program 100 and the software
`product combines the two portions, along with other
`information, into a product ID that is unique to the specific
`installation.
`
`As part of the installation process, the customer registers
`the software product with the registration authority. This
`authority might be, for example, the product manufacturer or
`an authorized third party. The registration process forces the
`customerto register the software product for installation and
`use on a specific computer.
`registering the
`FIG. 4 shows steps in a method for
`software product 100 for installation and use on the com-
`puter 32. The methodis described with continuing reference
`to FIG. 2. The steps are performed in software by the
`software product on the customer computer, and by a
`registration unit on the registration server. At step 150, the
`software product 100 obtains its product ID 102. As an
`example, the product ID consists of a 5-bit RPC (registered
`product code) value for the software product, a 3-bit site
`valuc indicating a place of manufacture, and a 7-bit serial-
`ized number that is incremented with each product.
`The software product 100 generates a hardware ID (H/W
`ID)that identifies a set of hardware components that make
`up the customer’s computer 32 (step 152). The hardware ID
`is a multi-bit value having at least one bit representing each
`of the corresponding system components. As an example,
`the software product generates a 5-bit hardware ID that
`includes a single bit for each of five system components:
`BIOS 50, VBIOS 86, RAM 48, hard disk drive 52, and
`floppy disk drive 54. A bit for a given system component can
`be derived in different ways, such as performing a modulo
`operation on a chunk of the BIOS,or on the hard disk drive’s
`
`10
`
`15
`
`20
`
`40
`
`45
`
`50
`
`55
`
`a0
`
`5a
`
`10
`
`2
`
`3
`
`Hard Disk Drive
`
`RAM
`
`Bit Place Hardware Component Method
`1
`BIOS
`Perform modulus 8 on first 2 K
`chunk of BIOS.
`Perform modulus 8 on 64-bit HDD
`serial number.
`Perform modulus 9 oftotal bytes of
`RAM.
`Perform modulus 9 on FDD
`configuration return valuc.
`Perform modulus 9 on Video BIOS.
`
`4
`$
`
`Floppy Disk Drive
`Video Card
`
`It is noted that other hardware components may be used.
`For instance, many computers are equipped with a network
`card with a unique 128-bit address. A bit for the hardware ID
`can be derived from this global network card address.
`Moreover, more than, or fewer than five system components
`may be used to derive the hardware ID.
`The software product in this example concatenates the
`15-bit product ID with the 5-bit hardware ID, and sends the
`20-bit value over the network 36 to the registration server 34
`(step 154 in FIG. 4). This phase is preferably automated in
`that the software product automatically initiates connection
`with the registration server 34 to register itself with the
`registration authority.
`Alternatively, the software product supports a registration
`pilot with a graphical user interface (UI) dialog window
`asking the customer to call a service representative at the
`registration authority. The UI window lists the product ID
`and the hardware ID, and includes a entry box to enter the
`registration ID given bythe service representative over the
`phone.
`The registration server 34 has a registration unit 110 to
`assign a registration ID (Reg ID)to the software product on
`the customer’s computer. The registration unit 110 computes
`the registration ID from the product ID and the hardware ID
`(step 156 in FIG. 4). In the illustrated implementation, the
`registration unit 110 employs a hashing algorithm 112 to
`compute a hash value of the concatenated product ID and
`hardware ID. The registration server 34 also maintains a
`database 114 to store the product ID, hardware ID, and
`registration ID (step 158 in FIG. 4). Preferably, these IDs are
`correlated in a table or other data record 116.
`
`
`
`The registration server 34 returns the registration ID over
`the network 36 to the customer computer 32 (step 160 in
`FIG. 4). In the manual case, the service representative tells
`the customer the registration ID over the phone and the
`customer enters the registration ID via the UI window. The
`registration ID 118 isstored locally in the system memory 42
`of the customer computer 32, where it is accessible by the
`software program 100 (step 162 in FIG. 4). The program 100
`is also equipped with the same hashing algorithm 112 as
`found in the registration unit 110 at the registration server
`34.
`
`FIG. 5 showssteps in a method for running the software
`product 100 on the computer 32. The method is described
`with continuing reference to FIG. 2. The steps are performed
`by software code within the software product on the cus-
`tomer computer. At step 170, the software productis started.
`On cach launch aftcr installation,
`the software product
`obtains the product ID 102 (step 172) and generates the
`hardware ID from the set of hardware components within
`the computer (step 174).
`
`10
`
`
`
`US 6,243,468 Bl
`
`7
`At step 176, the software product 100 computes its own
`test ID from the product ID and hardware ID using the
`hashing algorithm 112. This is the same hashing algorithm
`as employed by the registration unit 110 when computing
`the original registration ID 118. The software product 100
`retrieves the original registration ID 118 from memory 42
`(step 178 in FIG. 5) and compares the test ID to the
`registration ID 118 (step 180 in FIG. 5). If the two match
`(ie., the “yes” branch from step 182), the software product
`is enabled to operate on the computer (step 184). On the
`other hand, if no match occurs (ie., the “no” branch from
`step 182), the software product is locked and prevented from
`operating on the computer (step 186 in FIG. §).
`The anti-piracy system is effective at stopping repeated
`installation of the same software product on multiple dif-
`ferent machines. In the typical case, the test and registration
`IDs will not match if the hardware ID is different now than
`it was when the customer first registered the software
`product with the registration authority. Thatis, the only thing
`that has changed in the computation of the test and regis-
`tration IDs is the hardware ID. The product ID and the hash
`algorithm are the same for both computations.
`A different hardware ID suggests that
`the underlying
`hardware components have been altered in some manner.
`Forinstance, reconfiguring the floppy disk drive or replacing
`the hard disk drive might change the hardware ID. Of
`course, an entirely different computer with a different set of
`hardware components mightalso result in a different hard-
`ware ID.
`
`If an unscrupulous customer attempts to install the prod-
`uct on another computer, the software product will deter-
`mine that the test and registration IDs do not match and will
`sclf-lock, thereby preventing its operation on the different
`computer. The customeris then forced to contact the regis-
`tration authority to obtain a new registration ID, and if
`appropriate, pay an additional licensing fee for an additional
`installation.
`
`Another advantage is that the anti-piracy system is sen-
`sitive to the situation in which the customer has upgraded
`his/her computer, without effectively creating a new
`machine, and is now attempting to reinstall the software
`product on the upgraded computer. In this situation,
`the
`software product determines whether a new set of hardware
`components in the computer is substantially different from
`the original set of hardware components.If only one or a few
`components are different, the upgraded computer is more
`like the original computer and the software product
`is
`permitted to operate. Conversely, if manyor all components
`are different,
`the “upgraded” computer more closely
`resembles a new computer and the software product is
`prevented from operating on this new computer.
`One waythe software product makesthis determination is
`by trying different permutations of the hardware ID, chang-
`ing at
`Icast one bit per try while lIcaving other bits
`unchanged. Each modified hardware ID is concatenated with
`the product ID, and then hashedto producethetest ID. If this
`trial-and-error process yields a match between the test and
`original registration IDs, the software productis assured that
`only one or a few components have been altered, and the
`software product is permitted to run.
`FIG. 6 showssteps in a method for running the software
`product 100 on the computer 32 after upgrade. The method
`is described with continuing reference to FIG. 2. The steps
`are performed by software code within the software product
`on the customer computer. At step 190, the software product
`changesat least one bit in the hardware ID, while leaving the
`
`10
`
`15
`
`°
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`8
`other bits unchanged, to produce a modified hardware ID.
`For example, the software [ID might toggle one bit in the
`5-bit hardware ID, while maintaining the other four bits the
`same.
`
`The software product concatenates the product ID and
`modified hardware ID (step 192) and computes a new test ID
`using the hashing algorithm 112 (step 194). At step 196, the
`software product retrieves the registration ID 118 from
`memory 42 and comparesit to the test ID. If the two match
`(i.e., the “yes” branch from step 198), this suggests that only
`one component has been changed or upgraded, but rest of
`the computer remains substantially the same. Thus,
`the
`computer is deemed an upgrade, and not a new computer.
`The software product is enabled to operate on the computer
`(step 200 in FIG. 6).
`If no match occurs (i.e., the “no” branch from step 198),
`the software product remains locked. At step 202,
`the
`software product checks whether it has exhausted all pos-
`sible new combinations of bits. As an example, suppose the
`software manufacturer wants to drawa distinction between
`
`a computer with one or two new hardware components
`(which the manufacturer deems an “upgrade”), and a com-
`puter with three or more new hardware components (which
`the manufacturer dccms a new computer and not an
`“upgrade”). In this case, the software product is configured
`to change at most up to two bits within the five-bit hardware
`ID while keeping at least three bits the same. This process
`essentially determines whether at most two out of the five
`hardware componentsare different. If the software product
`has not exhaustedall available permutations of the hardware
`ID (ie.,
`the “no” branch from step 202),
`the software
`product repeats steps 190-198 for the next modified hard-
`ware ID.
`
`Whenthe software product exhausts all available permu-
`tations without success, this tends to indicate that the com-
`putcr is a new computer, not an upgrade. Accordingly, the
`software product remains locked (step 204) and forces the
`customer to contact the registration authority for assistance.
`The anti-piracy system is advantageous in that it allows
`the customer someflexibility to upgrade or modify his/her
`computer without
`locking out
`the program.
`It
`is noted,
`however,
`thal
`this method can be circumvented through
`incremental upgrades, where a customer changes out one
`componentat a time and reinstalls