throbber
US006243468B1
`(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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket