`a2) Patent Application Publication 0) Pub. No.: US 2004/0059938 Al
`
` Hughesetal. (43) Pub. Date: Mar. 25, 2004
`
`
`US 20040059938A1
`
`(54) HARDWARE ID TO PREVENT SOFTWARE
`PIRACY
`
`(52) US. C1.
`
`eeeeceecsseessseseecnesnseneeeneesses 713/200; 705/59
`
`(75)
`
`Inventors: Aidan T. Hughes, Bellevue, WA (US);
`David Barnaby Pearce, West Palm
`Beach, FL (US)
`Maedann&GOULD
`P.O. BOX 2903
`MINNEAPOLIS, MN 55402-0903 (US)
`
`(73) Assignee: Microsoft Corporation, Redmond, WA
`(US)
`
`(21) Appl. No.:
`
`10/668,580
`
`(22)
`
`Filed:
`
`Sep. 23, 2003
`Related U.S. Application Data
`
`(60) Division of application No. 09/859,915,filed on May
`17, 2001, which is a continuation-in-part of applica-
`tion No. 09/070,518,filed on Apr. 29, 1998, now Pat.
`No. 6,243,468.
`Publication Classification
`
`(S51)
`
`Int. C1? oe G06F 12/14; HO4L 9/00
`
`(57)
`
`ABSTRACT
`
`In one embodiment, the invention is a 64 bit hardware ID
`(H/W ID)
`for tying a software product
`to a particular
`computer to prevent software piracy. The 64 bit hardware ID
`represents ten different components of the user’s computer:
`the CD-ROM device, the disk adapter, the disk device, the
`display adapter,
`the first drive serial number,
`the MAC
`address, the processor serial number, the processor type, the
`RAM size in Mb, and the SCSI adapter. Each time the
`software product is opened, the expanded H/W ID is com-
`pared to the hardware on the computer to determine whether
`a predetermined minimum number of components match. In
`one embodiment, the expanded H/W ID allows for expan-
`sion of the user’s computer because so long as the compo-
`nent originally listed in the expanded H/W IDcan be found
`on the computer, then that component matches the expanded
`H/W ID. Typically, seven out of ten components in the
`expanded HIW ID must match the computer before the
`software product will fully operate.
`
`170
`
`172
`
`
`
`
`Start Program
`
`Get PID
`
`
`
`
`
`Generate H/W ID
`
`
`
`
`
`174
`
`176
`
`
`
`
`
`Compute test
`ID from PID and H/W ID
`
`Retrieve Licensefile fro
`memory
`
`
` 178
`
`
`
`
`Lock Program
`
`Allow Program
`to Operate
`
`184
`
`
`
`APPLE EXHIBIT 1108
`Page | of 15
`
`APPLE EXHIBIT 1108
`Page 1 of 15
`
`
`
`Patent Application Publication
`
`Mar. 25, 2004 Sheet 1 of 6
`
`US 2004/0059938 Al
`
`YJOMJBNBadly[2907]
`
`yJOMISN
`
`aoBLE}y|
`
`AUGASIC
`
`SOeHSyU]
`
`jeondo
`
`oneubeyy
`4SICPAEH
`
`
`
`sainpo=wesbolg
`
`8AASIC
`
`BIBYS}u|
`
`aoepayuj
`
`AUG
`
`wes6Osq
`
`eyeg
`
`arLe
`
`
`
`Joydepyyun
`
`oaplABulssao0ld
`
`
`
`Asowswaysks
`
`
`
`
`
`ginpo;eyjeg*wesbolgsainpo=|ainpo-;weibogwuayshS
`
`uonesddywei6o0igwesBosd9¢uonesyddyBuneiedo
`
`
`
`
`£79€uoneaddy
`
`sngwaishsgewashsBunessdo
`
`
`
`
`
`
`
`
`Jayndwoa
`
`a}OWaY
`
`
`
`OrpseogheyZPtr
`
`asnow
`
`weJbolg
`
`e}eG
`
`APPLE EXHIBIT 1108
`Page 2 of 15
`
`APPLE EXHIBIT 1108
`Page 2 of 15
`
`
`
`
`
`
`
`
`
`
`Patent Application Publication Mar. 25, 2004 Sheet 2 of 6
`
`US 2004/0059938 Al
`
`PEE
`
`
`
`JBAIBSUOHDAOY
`
`WULOO
`
`Bulusoy
`
`
`
`JUN)UOYDAYOY
`
`o0e
`
`UOHDAIOW
`
`asoqnjog
`
`aun]or[ala
`
`esusory
`
`z‘bie JOWOISND
`
`O4sulft
`
`WoOIBOldg
`
`TOC
`
`Jajndwo7JawOosny
`
`gdexoIazz
`
`wuywobly
`
`BulysoH
`
`APPLE EXHIBIT 1108
`Page 3 of 15
`
`APPLE EXHIBIT 1108
`Page 3 of 15
`
`
`
`
`
`Patent Application Publication Mar. 25,2004 Sheet 3 of 6
`
`US 2004/0059938 Al
`
`Software Product on
`Customer Computer
`
`Activation Unit on
`Product Provider Server
`
`150
`
`Get PID
`
`Generate
`Hardware ID
`
`Send PID and H/W ID
`To Activation
`Authority
`
`Store licensefile
`
`(H/W ID)
`
`
`
`156
`
`158
`
`160
`
`Compute Licensefile
`
`Store PID, H/W
`ID, and License file
`
`Send Licensefile to
`Customer
`Computer
`
`Fig. 3
`
`APPLE EXHIBIT 1108
`Page 4 of 15
`
`APPLE EXHIBIT 1108
`Page 4 of 15
`
`
`
`Patent Application Publication Mar. 25,2004 Sheet 4 of 6
`
`US 2004/0059938 Al
`
`170
`
` Start Program
`
`Get PID
`
`176
`
`
`
`Compute test
`
`
`etrieve Licensefile fro
`
`
`
`Generate H/W ID 174
`
`ID from PID and H/W ID 178
`memory 180
`
`with Licensefile
`
`Comparetest ID
`
`
`Allow Program
` Lock Program
`
`to Operate
`
`
`184
`
`Fig. 4
`
`APPLE EXHIBIT 1108
`Page 5 of 15
`
`APPLE EXHIBIT 1108
`Page 5 of 15
`
`
`
`Patent Application Publication Mar. 25,2004 Sheet 5 of 6
`
`US 2004/0059938 Al
`
`
`
`
`Changedigit in H/W ID
`To get modified H/W ID
`
`Concatenate PID and
`Modified H/W ID
`
`Computetest ID from
`PID and modified
`H/W ID
`
`
`
`
`
`
`
`190
`
`192
`
`194
`
`196
`
`Comparetest ID
`with license file
`
`
`
`Tried All
`
`permutationsof
`H/W ID?
`
`
`Allow Program
`to Operate
`
`Lock Program
`
`
`200
`
`Fig. 5
`
`APPLE EXHIBIT 1108
`Page 6 of 15
`
`APPLE EXHIBIT 1108
`Page 6 of 15
`
`
`
`Patent Application Publication Mar. 25,2004 Sheet 6 of 6
`
`US 2004/0059938 Al
`
`Start Program
`
`604
`
`602
`
`
`
`606
`
`608
`
`Getportion of H/W ID
`
`
`
`Compere portion of
`H/W ID with alll
`
`Appropriate components
`On computer
`
`
` More portions of
`H/W ID to examine?
`
`Is count greater than
`minimum?
`
`
`
`
`to Operate
` Lock Program
`
`Allow Program
`
`
`
`Fig. 6
`
`APPLE EXHIBIT 1108
`Page 7 of 15
`
`618
`
`APPLE EXHIBIT 1108
`Page 7 of 15
`
`
`
`US 2004/0059938 Al
`
`Mar. 25, 2004
`
`HARDWARE ID TO PREVENT SOFTWARE
`PIRACY
`
`REFERENCE TO RELATED APPLICATIONS
`
`[0001] This is a continuation-in-part of U.S. patent appli-
`cation Ser. No. 09/070,518, entitled “SOFTWARE ANTI-
`PIRACY SYSTEM THAT ADAPTS TO HARDWARE
`
`UPGRADES”,filed Apr. 29, 1998, which is incorporated by
`reference herein.
`
`TECHNICAL FIELD
`
`[0002] The invention generally relates to systems and
`methods for preventing piracy or illicit use of software by
`identifying hardware components of a computer. More par-
`ticularly, this invention relates to such systems and methods
`that 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
`protection.
`
`BACKGROUND
`
`[0003] Computer software is a unique consumer product
`in that the same product can be replicated many timesafter
`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.
`
`[0004] 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 manufacturer to distribute one physical copy of the
`software product and sell a multi-seat license that legally
`empowers the purchaser to install the software product on
`many different computers.
`
`[0005] 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 thenillicitly replicate and resell pirated copies
`of the product. Software companies attempt
`to monitor
`piracy activities, but detection is often difficult. Moreover,
`even when improperactivity is detected, enforcement and
`legal recourse is often unavailable from a practical stand-
`point, particularly since much of the abuse occurs in foreign
`lands.
`
`[0006] A less subtle abuse is the improper use of a
`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-wrap license to install and use the
`product on one computer, and perhaps additionally on a
`laptop. Unfortunately, the purchaser may intentionally or
`unintentionally 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.
`
`[0007] The computer software industry estimates 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 these licenses often proves too onerous for the
`
`manufacturer. Accordingly, software companies have a real
`incentive to reduce the amount of abuses through other
`means.
`
`[0008] One conventional technique for preventing unlim-
`ited copying of a software productis to design the code with
`a self-regulating mechanism that prevents repeated installa-
`tions. This mechanism counts the number of 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 com-
`puters, rather than just one computer allowed bythe license.
`
`[0009] As an example of this concept, suppose a manu-
`facturer creates a software product and places the code on a
`disk, such as a CD-ROM or floppy diskette. The disk is
`packaged to form a shrink-wrap retail product. The manu-
`facturer generates and assignsa serialized key that uniquely
`identifies that product. For instance, the key might consist of
`a manufacturer ID, a serialized incrementing number, a
`registered product code, and a checksum value. The key is
`printed on a label and affixed somewhere on the product,
`such as the CD-ROMcase.
`
`[0010] During installation, 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
`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.
`
`tracks the number of installations.
`(0011] The product
`Once the purchaser enters the same key more times than a
`defined limit, the product is disabled. The purchaseris then
`forced to call the manufacturer for assistance.
`
`[0012] While such mechanismshelp reduceillicit copy-
`ing, they often cause other problems in the form of consumer
`inconvenience. For instance, the premise that more instal-
`lations than a requisite number means illegal use may be
`wrong in some cases. A user who has upgraded his/her
`computer, for example, should be able to legitimately rein-
`stall the software product on the upgraded machine. How-
`ever, if the requisite numberofinstallations has already been
`reached,the product will not install, forcing the user (whois
`now disgruntled) to call the manufacturer for assistance.
`
`[0013] Accordingly, there remains a need for improved
`technology solutions to piracy and illicit use, while recog-
`nizing and accommodating the needs and practices of a
`legitimate purchaser.
`
`SUMMARYOF THE INVENTION
`
`[0014] The present invention meets the above-described
`needs by providing a system for enabling enforcement of
`written software licensing terms for a software product for
`use with a computer having a set of hardware components.
`
`the system includes a software
`In one aspect,
`[0015]
`productresident on a computer, the software product having
`an associated product ID. The software product generates a
`hardwareID that identifies the set of hardware components
`on the computer. In one embodiment, a 64-bit hardware ID
`that identifies a set of ten hardware components within the
`computer is derived. The 64 bit hardware ID represents ten
`different components of the user’s computer: the CD-ROM
`
`APPLE EXHIBIT 1108
`Page 8 of 15
`
`APPLE EXHIBIT 1108
`Page 8 of 15
`
`
`
`US 2004/0059938 Al
`
`Mar. 25, 2004
`
`The 64 bit hardware ID represents ten different components
`of the user’s computer:
`the CD-ROM device,
`the disk
`adapter, the disk device, the display adapter, the first drive
`serial number, the MACaddress, the processor serial num-
`ber, the processor type, the RAM size in Mb, and the SCSI
`adapter. Each time the software product
`is opened,
`the
`expanded H/W ID is compared to the hardware on the
`computer to determine whether a predetermined minimum
`number of components match.
`In one embodiment,
`the
`expanded H/W ID allows for expansion of the user’s com-
`puter because so long as the componentoriginally listed in
`the expanded H/W ID can be found on the computer, then
`that component matches the expanded H/W ID. Typically,
`seven out of ten components in the expanded H/W ID must
`match the computer before the software product will oper-
`ate.
`
`[0025] FIG. 2 showsan anti-piracy system 300 that facili-
`tates activation of a software product with an activation
`authority for installation and use on a particular computer.
`The system 300 includes a customer computer 20 and an
`activation server 334, which residesat the activation author-
`ity remote from the customer. The customer computer 20
`and activation server 334 are interconnected by a network
`336 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
`activation server by other means,such as electronic mail, fax
`machine, postal mail, or telephone.
`
`device, the disk adapter, the disk device, the display adapter,
`the first drive serial number, the MAC address, the processor
`serial number, the processor type, the RAM size in Mb, and
`the SCSI adapter. Each time the software product is opened,
`the expanded H/W ID is compared to the hardware on the
`computer to determine whether a predetermined minimum
`number of components match.
`In one embodiment,
`the
`expanded HI/W ID allows for expansion of the user’s
`computer because so long as the componentoriginally listed
`in the expanded H/W ID can be found on the computer, then
`that component matches the expanded H/W ID. Typically,
`seven out of ten components in the expanded H/W ID must
`match the computer before the software product will oper-
`ate.
`
`In another aspect of the invention, the software
`[0016]
`product is subsequently launched following installation and
`the software product retrieves the 64-bit hardware ID. The
`hardware ID is comparedto the set of hardware components
`on the computer on which the software productis installed.
`If a suitable match occurs, the software product is enabled
`to operate on the computer. Otherwise, if a suitable match
`does not occur, the software product is locked and prevented
`from operating on the computer. Typically, a suitable match
`is found whenat least seven out of ten componentsidentified
`by the hardware ID are found in the set of hardware
`components on the current computer. Thus, the invention
`prevents a user from installing the software product onto
`multiple different computers becauseit uses the hardware ID
`to identify a specific computer.
`
`[0017] That the invention improves over the drawbacksof
`prior art and accomplishes the advantages described above
`will become apparent from the following detailed descrip-
`tion of the exemplary embodiments and the appended draw-
`ings and claims.
`
`BRIEF DESCRIPTION OF THE FIGURES
`
`FIG.2 is a block diagram of an anti-piracy system
`[0019]
`that facilitates activation of a software product for installa-
`tion and use on a particular computer.
`
`[0026] For discussion purposes, the customer computer is
`described as a personal computer, such as a desktop or
`portable computer. However,as used herein, the term “com-
`puter” is intended to mean essentially 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 tele-
`[0018] FIG.1isa block diagram of an exemplary personal
`visions, home automation systems, multimedia viewing
`computer.
`systems,etc.). Within the described context, the network 336
`is representative of an Internet or intranet, or a local or wide
`area network. However,
`the network 336 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 is a flow diagram showing steps in a method
`[0020]
`for activating the software product for use on the computer.
`[0027] FIG.1and the following discussion are intended to
`[0021] FIG. 4 isaflow diagram showing steps in a method
`provide a brief, general description of an exemplary cus-
`for running the software product on the computer.
`tomer computer 20. While the invention will be described in
`the general context of an application program that runs on an
`operating system in conjunction with a personal computer,
`those skilled in the art will recognize that the invention also
`may be implemented in combination with other program
`modules. Generally, program modules include routines, pro-
`grams, components, data structures, etc. that perform par-
`ticular tasks or implement particular abstract data types.
`Moreover, those skilled in the art will appreciate that the
`invention may be practiced with other computer system
`configurations, including hand-held devices, multiprocessor
`systems, microprocessor-based or programmable consumer
`electronics, minicomputers, mainframe computers, and the
`like. The invention may also be practiced in distributed
`computing environments where tasks are performed by
`remote processing devices that are linked through a com-
`munications network. In a distributed computing environ-
`
`FIG.5 isa flow diagram showing steps in a method
`[0022]
`for running the software productafter the computer has been
`upgraded.
`
`FIG.6 is a flow diagram showing steps in a method
`[0023]
`for running the software product with an expanded hardware
`ID.
`
`DETAILED DESCRIPTION OF EMBODIMENTS
`OF THE INVENTION
`
`[0024] An embodiment of the present invention will be
`incorporated into the “OFFICE 10”suite of program mod-
`ules marketed by Microsoft Corporation of Redmond, Wash.
`Briefly described, in one embodiment, the invention is an
`expanded 64 bit hardware ID (H/W ID) for tyinga software
`product to a particular computer to prevent software piracy.
`
`APPLE EXHIBIT 1108
`Page 9 of 15
`
`APPLE EXHIBIT 1108
`Page 9 of 15
`
`
`
`US 2004/0059938 Al
`
`Mar. 25, 2004
`
`ment, program modules may be located in both local and
`remote memory storage devices.
`
`[0028] With reference to FIG. 1, an exemplary system for
`implementing the invention includes a conventional per-
`sonal computer 20, including a processing unit 21, a system
`memory 22, and a system bus 23 that couples the system
`memory to the processing unit 21. The system memory 22
`includes read only memory (ROM) 24 and random access
`memory (RAM) 25. A basic input/output system 26 (BIOS),
`containing the basic routines that help to transfer informa-
`tion between elements within the personal computer 20,
`such as during start-up, is stored in ROM 24. A video BIOS
`60 is also stored in ROM 24. The personal computer 20
`further includes a hard disk drive 27, a magnetic disk drive
`28, e.g., to read from or write to a removable disk 29, and
`an optical disk drive 30, e.g., for reading a CD-ROMdisk 31
`or to read from or write to other optical media. The hard disk
`drive 27, magnetic disk drive 28, and optical disk drive 30
`are connected to the system bus 23 by a hard disk drive
`interface 32, a magnetic disk drive interface 33, and an
`optical drive interface 34, respectively. The drives and their
`associated computer-readable media provide nonvolatile
`storage for the personal computer 20. Although the descrip-
`tion of computer-readable media aboverefers to a hard disk,
`a removable magnetic disk and a CD-ROM disk, it should
`be appreciated by those skilled in the art that other types of
`media which are readable by a computer, such as magnetic
`cassettes, flash memorycards, digital video disks, Bernoulli
`cartridges, and the like, may also be used in the exemplary
`operating environment.
`
`environment, the personal computer 20 typically includes a
`modem 54 or other means for establishing communications
`over the WAN 52, such as the Internet. The modem 54,
`which maybe internal or external, is connected to the system
`bus 23 via the serial port
`interface 46. In a networked
`environment, program modules depicted relative to the
`personal computer 20, or portions thereof, may be stored in
`the remote memory storage device. It will be appreciated
`that the network connections shownare exemplary and other
`means of establishing a communications link between the
`computers may be used.
`
`[0032] With reference again to FIG. 2, suppose a customer
`purchases a software product for running on the computer
`20. In this illustration, the software productis in the form of
`a shrink-wrap product 222 having a software program stored
`on a transportable computer-readable medium, such as a
`CD-ROMorfloppy diskette. In other implementations, the
`software product may be delivered electronically over a
`network. The customer loads the software product onto the
`computer 20 as a program 36 stored in system memory 22.
`
`[0033] 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 partially derived from
`the CD key 224 printed on the label of the shrink-wrap
`package. The customer enters the CD key 224, which is
`associated with the program 36. Additionally, another por-
`tion of the product ID is already included in the software
`program 36 and the software product combines the portion
`with the CD key into a product ID that is unique to the
`specific installation.
`
`[0034] As part of the installation process, the customer
`registers the software product with the activation authority.
`This authority might be, for example, the product manufac-
`turer or an authorized third party. The activation process
`allows the customer to activate the software product for
`installation and use on a specific computer.
`
`[0029] Anumberof program modules maybestored in the
`drives and RAM 25,
`including an operating system 35,
`application program modules 36,
`such as Microsoft’s
`“OFFICE 10” suite of program modules, and program data
`38. A user may enter commands and information into the
`personal computer 20 through a keyboard 40 and pointing
`device, such as a mouse 42. Other input devices (not shown)
`may include a microphone, joystick, game pad, satellite
`[0035] FIG. 3 shows steps in a method for activating the
`dish, scanner, or the like. These and other input devices are
`software product 36 for installation and use on the computer
`often connected to the processing unit 21 throughaserial
`20. The method is described with continuing reference to
`port interface 46 that is coupled to the system bus, but may
`FIG.2. The steps are performed in software by the software
`be connected by other interfaces, such as a game port or a
`product on the customer computer, and by an activation unit
`universal serial bus (USB). A monitor 47 or other type of
`110 on the activation server. At step 150,
`the software
`display device is also connected to the system bus 23 via an
`product 36 obtains its product ID 102. As an example, the
`interface, such as a video adapter 48. In addition to the
`product ID consists of a 5-digit RPC (registered product
`monitor, personal computers typically include other periph-
`code) value for the software product, a 3-digit site value
`eral output devices (not shown), such as speakersorprinters.
`indicating a place of manufacture, and a 7-digit serialized
`numberthat is incremented with each product.
`
`[0030] The personal computer 20 may operate in a net-
`worked environment using logical connections to one or
`more remote computers, such as a remote computer 49. The
`remote computer 49 maybea server, a router, a peer device
`or other commonnetwork node, and typically includes many
`or all of the elements described relative to the personal
`computer 20, although only a memory storage device 50 has
`been illustrated in FIG. 1. The logical connections depicted
`in FIG. 1 include a local area network (LAN) 51 and a wide
`area network (WAN) 52. Such networking environments are
`commonplace in offices, enterprise-wide computer net-
`works, Intranets and the Internet.
`
`[0031] When used in a LAN networking environment, the
`personal computer 20 is connected to the LAN 51 through
`a network interface 53. When used in a WAN networking
`
`[0036] The software product 36 generates a hardware ID
`(H/W ID)that identifies a set of hardware components that
`make up the customer’s computer 20 (step 152). The hard-
`ware ID may be a multi-digit value having at least one digit
`representing each of the corresponding system components.
`As an example,
`the software product generates a 5-digit
`hardware ID that includes a single digit for each of five
`system components: BIOS 26, VBIOS 60, RAM 25, hard
`disk drive 27, and floppy disk drive 28. A digit 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 serial number. Table 1 shows an
`example construction of a 5-digit hardware ID, and how the
`digits are derived from the corresponding component.
`
`APPLE EXHIBIT 1108
`Page 10 of 15
`
`APPLE EXHIBIT 1108
`Page 10 of 15
`
`
`
`US 2004/0059938 Al
`
`Mar. 25, 2004
`
`TABLE1
`
`2
`
`Hard Disk Drive
`
`Digit Place Hardware Component Method
`1
`BIOS
`Perform modulus 8 onfirst 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 value.
`Perform modulus 9 on
`Video BIOS.
`
`3
`
`4
`5
`
`RAM
`
`Floppy disk drive
`Video Card
`
`It is noted that other hardware components may be
`[0037]
`used. For instance, many computers are equipped with a
`network card with a unique 48-bit address. A digit 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.
`
`[0038] The software product in this example concatenates
`the 15-digit product ID with the 5-digit hardware ID, and
`sends the 20-digit value over the network 336 to the acti-
`vation server 334 (step 154 in FIG. 3). This phase is
`preferably automated in that the software product automati-
`cally initiates connection with the activation server 334 to
`register itself with the activation authority.
`
`the software product supports an
`[0039] Alternatively,
`activation pilot with a graphical user interface (UI) dialog
`window asking the customerto call a service representative
`at the activation authority. The UI windowlists the product
`ID and the hardware ID, and includes an entry box to enter
`the license file given by the service representative over the
`phone.
`
`Theactivation server 334 has an activation unit 110
`[0040]
`to assign a license file to the software product on the
`customer’s computer. The activation unit 110 computes the
`license file from the product ID and the hardware ID (step
`156 in FIG.3). In the illustrated implementation, the acti-
`vation unit 110 employs a hashing algorithm 112 to compute
`a hash value of the concatenated product ID and hardware
`ID. The activation server 334 also maintains a database 114
`to store the product ID, hardware ID, and licensefile (step
`158 in FIG.3). Preferably, these IDs are correlated in a table
`or other data record 116.
`
`[0041] The activation server 334 returns the license file
`over the network 336 to the customer computer 20 (step 160
`in FIG. 3). In the manual case, the service representative
`tells the customer the license file over the phone and the
`customer enters the license file via the UI window. The
`
`licensefile 118 is stored locally in the system memory 22 of
`the customer computer 20, where it is accessible by the
`software program 36 (step 162 in FIG. 3). The program 36
`is also equipped with the same hashing algorithm 112 as
`found in the activation unit 110 at the activation server 334.
`
`[0042] FIG. 4 shows steps in a method for running the
`software product 36 on the computer 20. 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 170, the software productis
`started. On each launch after 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).
`
`[0043] At step 176, the software product 36 computesits
`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 activation unit 110 when computing the
`original license file 118. The software product 36 retrieves
`the original license file 118 from memory 22 (step 178 in
`FIG.4) and compares the test ID to the license file 118 (step
`180 in FIG.4). If the two match (i.e., 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
`(i.e., the “no” branch from step 182), the software product is
`locked and prevented from operating on the computer (step
`186 in FIG. 4).
`
`[0044] The anti-piracy system is effective at stopping
`repeated installation of the same software product on mul-
`tiple different machines. In the typical case, the test and
`license files will not match if the hardware ID is different
`
`now than it was when the customer first registered the
`software product with the activation authority. That is, the
`only thing that has changed in the computation of the test
`and licensefiles is the hardware ID. The product ID and the
`hash algorithm are the same for both computations.
`
`[0045] A different hardware ID suggests that the underly-
`ing hardware components have been altered in some man-
`ner. For instance, reconfiguring the floppy disk drive or
`replacing the hard disk drive might change the hardware ID.
`Ofcourse, an entirely different computer with a different set
`of hardware components might also result in a different
`hardware ID.
`
`Ifan unscrupulous customerattemptsto install the
`[0046]
`product on another computer,
`the software product will
`determinethat the test and licensefiles do not match and will
`self-lock, thereby preventing its operation on the different
`computer. The customer is then forced to contact the acti-
`vation authority to obtain a new licensefile, and if appro-
`priate, pay an additional
`licensing fee for an additional
`installation.
`
`[0047] Another advantageis that the anti-piracy system is
`sensitive 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 many or 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.
`
`[0048] One way the software product makes this determi-
`nation is by trying different permutations of the hardware
`ID, changing at least one digit per try while leaving other
`digits unchanged. Each modified hardware ID is concat-
`enated with the product ID, and then hashed to produce the
`test ID. If this trial-and-error process yields a match between
`the test and original license files, the software product is
`
`APPLE EXHIBIT 1108
`Page 11 of 15
`
`APPLE EXHIBIT 1108
`Page 11 of 15
`
`
`
`US 2004/0059938 Al
`
`Mar. 25, 2004
`
`assured that only one or a few components have been
`altered, and the software product is permitted to run.
`
`[0049] FIG. 5 shows steps in a method for running the
`software product 36 on the computer 20 after upgrade. The
`method is described with continuing reference to FIG. 2.
`The steps are performed by software code within the soft-
`ware product on the customer computer. At step 190, the
`software product changesat least one digit in the hardware
`ID, while leaving the other digits unchanged, to produce a
`modified hardware ID. For example, the software ID might
`toggle one digit in the 5-digit hardware ID, while maintain-
`ing the other four digits the same.
`
`[0050] 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 productretrieves the licensefile 118 from
`memory 22 and comparesit to the test ID. If the two match
`(i.e., the “yes” branch from step 198), this suggests that that
`only one componenthas 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.5).
`
`Ifno match occurs(i.e., the “no” branch from step
`[0051]
`198), the software product remains locked. At step 202, the
`software product checks whether it has exhausted all pos-
`sible new combinations of digits. As an example, suppose
`the software manufactur