`(12) Patent Application Publication (10) Pub. N0.: US 2004/0059938 A1
`Hughes et al.
`(43) Pub. Date:
`Mar. 25, 2004
`
`US 20040059938A1
`
`(54) HARDWARE ID TO PREVENT SOFTWARE
`PIRACY
`
`(75) Inventors: Aidan T. Hughes, Bellevue, WA (US);
`David Barnaby Pearce, West Palm
`Beach, FL (US)
`
`(52) US. Cl. ............................................ .. 713/200; 705/59
`
`(57)
`
`ABSTRACT
`
`gflgrlii€?tfggzeszAgigisliD
`R0‘ BOX 2903
`MINNEAPOLIS’ MN 55 402_0903 (Us)
`
`(22) Filed?
`
`SeP- 23! 2003
`Related US‘ Application Data
`
`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:
`(73) Assignee? Microsoft Corporation, Redmond, WA the CD-ROM device, the disk adapter, the disk device, the
`(Us)
`display adapter, the ?rst drive serial number, the MAC
`(21) APPL No.
`10/668,580
`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 @Xpanded 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 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 HIW ID must match the computer before the
`software product Will fully operate.
`
`(60) Division of application No. 09/859,915, ?led on May
`17, 2001, Which is a continuation-in-part of applica-
`tiOIl NO- 09/070,518, ?led on APL 29, 1998, HOW Pat-
`NO‘ 6>243>468'
`Publication Classi?cation
`
`(51) Int. Cl.7 ............................ .. G06F 12/14; H04L 9/00
`
`170
`
`Start Program
`
`T
`
`172
`
`Get PID
`
`T
`
`174
`
`Generate HIW ID
`
`I
`
`176
`
`Compute test
`ID from P10 and H/W ID
`
`l
`
`178
`
`Retrieve License file from
`memory
`
`l
`
`Compare test ID
`with License file
`
`No
`
`182
`
`Yes
`
`I
`
`186
`
`Lock Program
`
`Allow Program
`to Operate
`
`APPLE EXHIBIT 1010
`Page 1 of 15
`
`
`
`Jayndwoa
`
`a}OWaY
`
`aoBLE}y|
`
`weJbolg
`
`EEG
`
`YIOMJBNBay[2007jeondo
`
`yJOMISN
`
`
`
`
`ginpo;ejeqg*wesbolg
`
`
`uonedddywel6o1g
`arLe
`
`Joydepyyun
`oaplABulssao0ld
`weJ6oidg9¢uonesyddy
`
`sainpo=|ainpo-;weibog
`
`sainpo=wesbolg
`
`Patent Application Publication
`
`Mar. 25, 2004 Sheet 1 of 6
`
`US 2004/0059938 Al
`
`
`
`
`
`ASGWEISSgewashsBunessdo
`
`
`
`£79€uoneaddy
`
`AUGASIC
`
`SOeHSyU]
`
`BANGASIG
`
`BIBYS}u|
`
`aoepayuj
`
`AUG
`
`oneubey
`4SICPAEH
`
`wes6Osq
`
`eyeg
`
`Buneiedo
`
`luayskg
`
`APPLE EXHIBIT 1010
`Page 2 of 15
`
`APPLE EXHIBIT 1010
`Page 2 of 15
`
`
`
`
`
`
`
`
`
`Patent Application Publication Mar. 25, 2004 Sheet 2 of 6
`
`US 2004/0059938 Al
`
`WULOOLY
`
`UOHDAOW
`
`ec
`
`aly
`
`esueor]Z11WULobly
`
`
` BulysoH>;WoOIBOldg96¢+ClM/H+Cid
`
`aoexoIazz
`
`PEE
`
`
`
`JBAIBSUOHDAOY
`
`o0e
`
`oll{JOysul
`
`02
`
`TOC
`
`
`
`
`JUNUOIOAHOYJajNdwozJawWo}sND
`BulusoyZiliz
`
`
`
`
`
`auonGra[aia
`
`esoqnjogrlZO
`
`z‘bie
`
`gl
`
`Tewoysn>
`
`APPLE EXHIBIT 1010
`Page 3 of 15
`
`APPLE EXHIBIT 1010
`Page 3 of 15
`
`
`
`
`
`
`
`Patent Application Publication Mar. 25, 2004 Sheet 3 0f 6
`
`US 2004/0059938 A1
`
`Software Product on
`Customer Comguter
`
`Get PID
`
`l
`
`Generate
`Hdrdwcire ID
`(H/W ID)
`i
`
`I50
`
`I52
`
`154
`
`Send PID and WW ID
`To Activation
`Authority
`
`Activation Unit on
`Product Provider Server
`
`I56
`
`158
`
`i
`
`Compute License file
`
`1
`
`Store PID, H/W
`ID, and License file
`
`i
`
`Send License ?le to
`Customer
`Computer
`
`1,
`
`162
`
`Store license file
`
`Fig. 3
`
`APPLE EXHIBIT 1010
`Page 4 of 15
`
`
`
`Patent Application Publication Mar. 25, 2004 Sheet 4 0f 6
`
`US 2004/0059938 A1
`
`170
`
`Start Program
`
`+
`
`172
`
`Get PID
`
`#
`
`174
`
`Generate H/W ID
`
`i
`
`Compute test
`ID from PlD and WW ID
`
`i
`
`178
`
`Retrieve License file from
`memory
`
`i
`
`180
`
`Compare Test ID
`with License file
`
`No
`
`186
`
`Lock Program
`
`I82
`
`Yes
`
`Fig. 4
`
`184
`
`Allow Program
`to Operate
`
`APPLE EXHIBIT 1010
`Page 5 of 15
`
`
`
`Patent Application Publication Mar. 25, 2004 Sheet 5 0f 6
`
`US 2004/0059938 A1
`
`190
`
`192
`
`194
`
`Change digit in H/W ID
`To get modified H/W ID
`
`i
`
`Concatenate PID and
`Modified H/W ID
`
`i
`Compute test ID from
`PID and modified
`H/W ID
`
`i
`
`1%
`
`Compare test ID
`with license tile
`
`I98
`
`Yes
`
`Tried All
`permutations of
`WW ID?
`
`Lock Program
`
`200
`
`Allow Program
`to Operate
`
`Fig. 5
`
`APPLE EXHIBIT 1010
`Page 6 of 15
`
`
`
`Patent Application Publication Mar. 25, 2004 Sheet 6 0f 6
`
`US 2004/0059938 A1
`
`602
`
`Start Program
`
`604
`i
`Get Expanded
`H/W ID
`
`606
`
`;
`—> Get portion of H/W ID
`l
`Compare portion of
`H/W ID with all
`Appropriate components
`On computer
`
`608
`
`610
`
`No
`
`Yes
`
`612
`
`Add one to count
`
`More portions of
`H/W ID to examine?
`
`5 count greater than
`minimum?
`
`‘
`
`620
`
`Lock Program
`
`618
`
`Allow Program
`to Operate
`
`Fig. 6
`
`APPLE EXHIBIT 1010
`Page 7 of 15
`
`
`
`US 2004/0059938 A1
`
`Mar. 25, 2004
`
`HARDWARE ID TO PREVENT SOFTWARE
`PIRACY
`
`REFERENCE TO RELATED APPLICATIONS
`
`[0001] This is a continuation-in-part of US. patent appli
`cation Ser. No. 09/070,518, entitled “SOFTWARE ANTI
`PIRACY SYSTEM THAT ADAPTS TO HARDWARE
`UPGRADES”, ?led 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 Without triggering the anti-piracy
`protection.
`
`BACKGROUND
`
`[0003] 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.
`
`[0004] This characteristic of softWare can be a tremendous
`bene?t 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 bene?t 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 product. SoftWare companies attempt to monitor
`piracy activities, but detection is often dif?cult. Moreover,
`even When improper activity 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 dif?cult to prosecute.
`
`[0007] The computer softWare industry estimates billions
`of dollars are lost each year due to piracy and other illicit
`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 product is 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 number of 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 by the 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 ?oppy diskette. The disk is
`packaged to form a shrink-Wrap retail product. The manu
`facturer generates and assigns a serialiZed key that uniquely
`identi?es 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 af?Xed someWhere on the product,
`such as the CD-ROM case.
`
`[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.
`
`[0011] The product tracks the number of installations.
`Once the purchaser enters the same key more times than a
`de?ned limit, the product is disabled. The purchaser is then
`forced to call the manufacturer for assistance.
`
`[0012] While such mechanisms help reduce illicit 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 number of installations has already been
`reached, the product Will not install, forcing the user (Who is
`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.
`
`SUMMARY OF 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.
`
`[0015] In one aspect, the system includes a softWare
`product resident on a computer, the softWare product having
`an associated product ID. The softWare product generates a
`hardWare ID that identi?es the set of hardWare components
`on the computer. In one embodiment, a 64-bit hardWare ID
`that identi?es 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 1010
`Page 8 of 15
`
`
`
`US 2004/0059938 A1
`
`Mar. 25, 2004
`
`device, the disk adapter, the disk device, the display adapter,
`the ?rst 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 component originally 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.
`
`[0016] In another aspect of the invention, the softWare
`product is subsequently launched following installation and
`the softWare product retrieves the 64-bit hardWare ID. The
`hardWare ID is compared to the set of hardWare components
`on the computer on Which the softWare product is 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 When at least seven out of ten components identi?ed
`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 because it uses the hardWare ID
`to identify a speci?c computer.
`
`[0017] That the invention improves over the draWbacks of
`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
`
`[0018] FIG. 1 is a block diagram of an exemplary personal
`computer.
`[0019] FIG. 2 is a block diagram of an anti-piracy system
`that facilitates activation of a softWare product for installa
`tion and use on a particular computer.
`
`[0020] FIG. 3 is a How diagram shoWing steps in a method
`for activating the softWare product for use on the computer.
`
`[0021] FIG. 4 is a How diagram shoWing steps in a method
`for running the softWare product on the computer.
`
`[0022] FIG. 5 is a How diagram shoWing steps in a method
`for running the softWare product after the computer has been
`upgraded.
`[0023] FIG. 6 is a How diagram shoWing steps in a method
`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.
`Brie?y 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.
`
`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 ?rst drive
`serial number, the MAC address, 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 component originally 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 shoWs an 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 resides at 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.
`[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
`visions, home automation systems, multimedia vieWing
`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, ?ber optic, etc.) and Wire
`less netWorks (e.g., RF, satellite, microWave, etc.).
`[0027] FIG. 1 and the folloWing discussion are intended to
`provide a brief, general description of an exemplary cus
`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
`con?gurations, 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
`
`APPLE EXHIBIT 1010
`Page 9 of 15
`
`
`
`US 2004/0059938 A1
`
`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. Abasic 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. Avideo 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-ROM disk 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 above refers 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, ?ash memory cards, digital video disks, Bernoulli
`cartridges, and the like, may also be used in the exemplary
`operating environment.
`
`[0029] Anumber of program modules may be stored 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
`dish, scanner, or the like. These and other input devices are
`often connected to the processing unit 21 through a serial
`port interface 46 that is coupled to the system bus, but may
`be connected by other interfaces, such as a game port or a
`universal serial bus (USB). A monitor 47 or other type of
`display device is also connected to the system bus 23 via an
`interface, such as a video adapter 48. In addition to the
`monitor, personal computers typically include other periph
`eral output devices (not shoWn), such as speakers or printers.
`
`[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 may be a server, a router, a peer device
`or other common netWork 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
`52. Such netWorking environments are
`commonplace in of?ces, 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
`
`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 may be 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 shoWn are 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 product is in the form of
`a shrink-Wrap product 222 having a softWare program stored
`on a transportable computer-readable medium, such as a
`CD-ROM or ?oppy 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
`speci?c 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 speci?c computer.
`
`[0035] FIG. 3 shoWs steps in a method for activating the
`softWare product 36 for installation and use on the computer
`20. The method is described With continuing reference to
`FIG. 2. The steps are performed in softWare by the softWare
`product on the customer computer, and by an activation unit
`110 on the activation server. At step 150, the softWare
`product 36 obtains its product ID 102. As an example, the
`product ID consists of a 5-digit RPC (registered product
`code) value for the softWare product, a 3-digit site value
`indicating a place of manufacture, and a 7-digit serialiZed
`number that is incremented With each product.
`
`[0036] The softWare product 36 generates a hardWare ID
`(H/W ID) that identi?es 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 ?ve
`system components: BIOS 26, VBIOS 60, RAM 25, hard
`disk drive 27, and ?oppy 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 1010
`Page 10 of 15
`
`
`
`US 2004/0059938 A1
`
`Mar. 25, 2004
`
`TABLE 1
`
`Digit Place Hardware Component Method
`
`1
`
`2
`
`3
`
`4
`
`5
`
`BIOS
`
`Hard Disk Drive
`
`RAM
`
`Floppy disk drive
`
`Video Card
`
`Perform modulus 8 on ?rst 2
`K chunk of BIOS.
`Perform modulus 8 on 64-bit HDD
`serial number.
`Perform modulus 9 of total bytes
`of RAM.
`Perform modulus 9 on FDD
`con?guration return value.
`Perform modulus 9 on
`Video BIOS.
`
`[0037] It is noted that other hardware components may be
`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, ?ve 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.
`
`[0039] Alternatively, the software product supports an
`activation pilot with a graphical user interface (UI) dialog
`window asking the customer to call a service representative
`at the activation authority. The UI window lists the product
`ID and the hardware ID, and includes an entry box to enter
`the license ?le given by the service representative over the
`phone.
`
`[0040] The activation server 334 has an activation unit 110
`to assign a license ?le to the software product on the
`customer’s computer. The activation unit 110 computes the
`license ?le 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 license ?le (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 ?le
`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 ?le over the phone and the
`customer enters the license ?le via the UI window. The
`license ?le 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 product is
`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 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 activation unit 110 when computing the
`original license ?le 118. The software product 36 retrieves
`the original license ?le 118 from memory 22 (step 178 in
`FIG. 4) and compares the test ID to the license ?le 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 ?les will not match if the hardware ID is different
`now than it was when the customer ?rst registered the
`software product with the activation authority. That is, the
`only thing that has changed in the computation of the test
`and license ?les 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, recon?guring the ?oppy 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 might also result in a different
`hardware ID.
`
`[0046] If an unscrupulous customer attempts to install the
`product on another computer, the software product will
`determine that the test and license ?les 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 license ?le, and if appro
`priate, pay an additional licensing fee for an additional
`installation.
`
`[0047] Another advantage is 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 modi?ed 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 ?les, the software product is
`
`APPLE EXHIBIT 1010
`Page 11 of 15
`
`
`
`US 2004/0059938 A1
`
`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 changes at least one digit in the hardWare
`ID, While leaving the other digits unchanged, to produce a
`modi?ed 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 modi?ed 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 license ?le 118 from
`memory 22 and compares it to the test ID. If the tWo match
`(i.e., the “yes” branch from ste