throbber
(19) United States
`(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
`
`

`

`Patent Application Publication
`
`Mar. 25, 2004 Sheet 1 0f 6
`
`US 2004/0059938 A1
`
`{0382m9<.83
`
`{0362
`
`95:95
`
`35V7.5
`
`momtme
`
`.825
`
`02.5in
`
`2.9522
`
`wuwtwth
`
`xwaEm:
`
`83:35
`
`025
`
`wv
`
`E
`
`Bamu<
`
`82>
`
`@5885
`
`«ED
`
`mm
`
`mamEmma
`
`
`
`mmEmwm>m05.980
`
`om5332
`
`
`
`3:605.Emaoi
`
`Enact
`
`San.
`
`35qu0
`
`90:81
`
`EmogmxNv
`
`:o:mo=&<
`
`$322
`
`
`
`
`
`wives...ESmoi
`
`EEmoi
`
`Ema
`
`Emhmoi
`
`Ema
`
`
` 85.82mE92n.en
`2:35.Enact.
`
`3:833.9:980
`
`E2w>m
`
`APPLE EXHIBIT 1010
`
`Page 2 of 15
`
`APPLE EXHIBIT 1010
`Page 2 of 15
`
`
`
`
`
`
`
`
`
`
`
`
`

`

`Patent Application Publication Mar. 25, 2004 Sheet 2 0f 6
`
`N4002m
`
`%
`
`1
`
`AIsmat
`
`$to£a<
`
`
`
`cozo>=o<0.$80.30
`
`wmm
`
`szmmCO:O>=U<
`
`Eon.2
`
`9:50:
`
`:5co_6>=o<
`
`oom
`
`om2_:22:
`
`N:
`
`NN
`
`.a
`
`
`
`LmSQEoU.mEouao
`
`
`
`IIVIIV80605T-0:>>\I+D_n_
`
`mE
`
`wmcou:9_EMU—”MM“
`
`on
`
`8Eé
`
`NNN
`
`cozo>zo<
`
`w__Eo.E:E_:_o.628$
`$89200m9
`
`APPLE EXHIBIT 1010
`
`Page 3 0f15
`
`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 step 198), this suggests that that
`onl

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